Components (registry)Layout
Feature Icon List
Layout template: feature-icon-list
Contrato del layout
Un layout transporta anatomia, no pintura: se rellena por slots y depende del CSS de los componentes que lista. Instalarlo sin ellos lo deja sin estilos.
- Slots
{{headline}}{{item1_title}}{{item1_body}}{{item2_title}}{{item2_body}}{{item3_title}}{{item3_body}}{{item4_title}}{{item4_body}}- Componentes requeridos
itemtypography
Anatomía CSS
<div class="layoutFeatureIconList"> </div>
Tokens resueltos
Valores finales tras seguir la cadena de tokens. Derivados del source: si un token cambia, esta tabla cambia sola.
| Variante | Prop | Valor | Token |
|---|---|---|---|
| all | bg | #f5f5f5 | muted |
| all | fg | #525252 | muted.foreground |
CSS mínimo funcional
Autocontenido: sin imports ni tokens. Para previews y prototipos — en producción se consume el CSS del DS.
/* Layout: feature-icon-list — structure only */
.l-feature-icon-list {
padding: 48px 32px;
}
.l-feature-icon-list__header {
text-align: center;
margin-bottom: 32px;
}
.l-feature-icon-list__grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 24px;
}
@media (max-width: 600px) {
.l-feature-icon-list__grid {
grid-template-columns: 1fr;
}
}
.l-feature-icon-list__item {
display: flex;
gap: 12px;
}
.l-feature-icon-list__icon {
width: 24px;
height: 24px;
flex-shrink: 0;
background: #f5f5f5;
border-radius: 50%;
}
.l-feature-icon-list__title {
font-size: var(--text-base);
font-weight: 600;
margin: 0;
}
.l-feature-icon-list__body {
font-size: var(--text-sm);
color: #525252;
margin: 0;
}
Codigo fuente
layouts/feature-icon-list.css
/* Layout: feature-icon-list — structure only */ .l-feature-icon-list { padding: var(--spacing-12) var(--spacing-8); } .l-feature-icon-list__header { text-align: center; margin-bottom: var(--spacing-8); } .l-feature-icon-list__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--spacing-6); } @media (max-width: 600px) { .l-feature-icon-list__grid { grid-template-columns: 1fr; } } .l-feature-icon-list__item { display: flex; gap: var(--spacing-3); } .l-feature-icon-list__icon { width: 24px; height: 24px; flex-shrink: 0; background: var(--muted); border-radius: 50%; } .l-feature-icon-list__title { font-size: var(--text-base); font-weight: 600; margin: 0; } .l-feature-icon-list__body { font-size: var(--text-sm); color: var(--muted-foreground); margin: 0; }