componente · @solu30/ui-kit/display
Card
Contenedor de superficie con padding, borde y elevación configurables; la base de casi todos los bloques.
811 sitios de import en 10 de 15 verticales — un archivo que la importa cuenta una vez, monte una instancia o veinte.
- TheCharterPanel
- carlosmartinpavon
- cmp-packages
- dietaly
- elliot
- gestorsalon
- luigi
- prepchat
- raquetea
- zentrya
El componente, montado
Cargando el espécimen…
Éste es el conjunto completo. Abajo, los mismos casos por separado, cada uno con su código.
Cómo se usa
import {
Card,
CardAction,
CardContent,
CardDescription,
CardFooter,
CardHeader,
CardTitle,
} from '@solu30/ui-kit/display'<Card variant="elevated" padding="md">
<CardHeader>
<CardTitle>Salón Los Álamos</CardTitle>
<CardDescription>Sábado 21:00 · 180 invitados</CardDescription>
</CardHeader>
<CardContent>Salón principal + terraza, catering incluido.</CardContent>
</Card>Anatomía
Las partes que componen Card se importan del mismo subpath. Sueltas no significan nada: se montan siempre dentro de su padre.
Card
├── CardAction
├── CardContent
├── CardDescription
├── CardFooter
├── CardHeader
└── CardTitleProps
| Prop | Requerida | Tipo | Qué hace |
|---|---|---|---|
| padding | opcional | "none" | "sm" | "md" | "lg" | — |
| variant | opcional | "default" | "elevated" | "outline" | "bordered" | "solid" | — |
| hover | opcional | boolean | — |
| onClick | opcional | () => void | — |
Variantes
Elegí el nivel según cuánto tiene que separarse la tarjeta del fondo: «elevated» cuando compite por atención en un dashboard, «outline»/«bordered» cuando conviven muchas tarjetas juntas y «solid» para un bloque de foco absoluto.
Cargando el espécimen…
export function CardVariantes() {
return (
<Row>
{CARD_VARIANTS.map((v) => (
<Card key={v} variant={v} padding="sm" className="w-32 text-center">
<p className="text-xs font-medium text-content">{v}</p>
</Card>
))}
</Row>
)
}De specimens/display.tsx · CardVariantes: 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.
Densidad
El padding se ajusta a cuánto contenido entra: «none»/«sm» para tarjetas dentro de una grilla apretada, «lg» cuando la tarjeta es el único contenido de su columna.
Cargando el espécimen…
export function CardPaddings() {
return (
<Row>
{CARD_PADDINGS.map((p) => (
<Card key={p} variant="outline" padding={p} className="w-28 text-center">
<p className="text-xs text-content/70">padding {p}</p>
</Card>
))}
</Row>
)
}De specimens/display.tsx · CardPaddings: 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.
Composición
Usá el árbol completo —header con acción, contenido y footer— cuando la tarjeta necesita más de un bloque de información y una acción propia, no sólo texto suelto.
Cargando el espécimen…
export function CardComposicion() {
return (
<Card variant="elevated" padding="md" className="w-full max-w-sm">
<CardHeader action={<Badge color="success" size="sm">Confirmado</Badge>}>
<CardTitle>Salón Los Álamos</CardTitle>
<CardDescription>Sábado 21:00 · 180 invitados</CardDescription>
</CardHeader>
<CardContent>
<p className="text-sm text-content/70">
Salón principal + terraza. Catering incluido, DJ a cargo del cliente.
</p>
</CardContent>
<CardFooter>
<CardAction>
<Button variant="ghost" size="sm">
Ver ficha
</Button>
</CardAction>
</CardFooter>
</Card>
)
}De specimens/display.tsx · CardComposicion: 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.
Ejemplo del paquete
<Card variant="elevated" padding="md">
<CardHeader title="Salón Norte" subtitle="Capacidad 180" action={<Badge>Activo</Badge>} />
<CardContent>…</CardContent>
</Card>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.