componente · @solu30/ui-kit/display
SectionHeader
Encabezado de sección con ícono, título, badge y descripción a la izquierda, y una acción a la derecha.
Seguir leyendo — 2 párrafos más
Header component for sections with flexible layout. Displays icon + title + badge on the left, action on the right. Optional description below title in muted text.
Uses CSS variables:
--ui-content-secondaryfor description text
17 sitios de import en 7 de 15 verticales — un archivo que la importa cuenta una vez, monte una instancia o veinte.
- TheCharterPanel
- carlosmartinpavon
- cmp-packages
- dietaly
- gestorsalon
- luigi
- raquetea
La pieza, con lugar de pantalla
Cargando el espécimen…
export function SectionHeaderMatrix() {
return (
<Stage label="SectionHeader · las cinco zonas llenas, en sus dos tamaños, + SectionEyebrow" tall wide>
<div className="flex w-full max-w-[560px] flex-col gap-6">
<div className="flex flex-col gap-2">
<span className="font-mono text-[11px] text-content/50">size="default"</span>
<SectionHeader
icon={IconClipboard}
title="Reservas del mes"
badge={
<Badge color="success" variant="soft" size="sm">
12 confirmadas
</Badge>
}
description="Se actualiza sola cuando entra una seña o se cancela una fecha."
action={
<Button variant="secondary" size="sm">
Exportar
</Button>
}
/>
</div>
<div className="flex flex-col gap-2">
<span className="font-mono text-[11px] text-content/50">
size="hero" + as="h1", con SectionEyebrow encima y children abajo
</span>
<div className="flex flex-col gap-2">
<SectionEyebrow>Panel del salón</SectionEyebrow>
<SectionHeader
size="hero"
as="h1"
icon={IconChart}
title="Agosto cerró en verde"
description="Tres fechas más que julio y ninguna cancelación sobre la fecha."
action={
<Button variant="primary" size="sm">
Ver el detalle
</Button>
}
>
<div className="mt-2 flex flex-wrap gap-2">
<Badge color="info" variant="tinted" size="sm">
16 eventos
</Badge>
<Badge color="warning" variant="tinted" size="sm">
2 señas por acreditar
</Badge>
</div>
</SectionHeader>
</div>
</div>
<div className="flex flex-col gap-2">
<span className="font-mono text-[11px] text-content/50">SectionEyebrow · sus dos variantes</span>
<div className="flex flex-wrap items-center gap-4">
<SectionEyebrow>badge (default)</SectionEyebrow>
<SectionEyebrow variant="text">text</SectionEyebrow>
</div>
</div>
</div>
</Stage>
)
}De specimens/display.tsx · SectionHeaderMatrix: el espécimen del Muestrario, no un ejemplo oficial del paquete. Muestra cómo se usa la pieza de verdad, montada contra los tipos instalados —eso es lo que vale— pero no es documentación del kit.
Cómo se usa
import { SectionHeader } from '@solu30/ui-kit/display'Props
| Prop | Requerida | Tipo | Qué hace |
|---|---|---|---|
| icon | opcional | React.ComponentType<{ className?: string; }> | — |
| title | sí | string | — |
| badge | opcional | React.ReactNode | — |
| description | opcional | string | — |
| action | opcional | React.ReactNode | — |
| className | opcional | string | — |
| size | opcional | "default" | "hero" | `'default'` (current, unchanged) | `'hero'` (top-of-page, larger). Default `'default'`. |
| as | opcional | "h1" | "h2" | "h3" | Heading level for the title element. Default `'h2'` (matches prior render). |
| children | opcional | ReactNode | Free-form content below `description` — the fork's use case (summary blocks, secondary actions) that doesn't fit `action`. Only rendered when provided; does not affect `default` size layout. |
Ejemplo del paquete
<SectionHeader icon={CalendarDays} title="Reservas" as="h1" size="hero"
description="Las de los próximos 30 días." action={<Button>Nueva</Button>} />Del @example del JSDoc de @solu30/ui-kit, sin editar: son 65 de los 541 símbolos. La sangría y los renglones en blanco son los del paquete.