Components (registry)Layout
Pricing Tiers (deprecado)
DEPRECADO — usa layout/pricing-plans. Definia su propia anatomia de card (l-pricing-tiers__card) en vez de consumir el componente pricing-card, y referencia tokens que ya no existen.
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}}{{subtitle}}{{tier1_name}}{{tier1_price}}{{tier1_period}}{{tier1_description}}{{tier1_feature1}}{{tier1_feature2}}{{tier1_feature3}}{{tier1_feature4}}{{tier1_ctaLabel}}{{tier2_name}}{{tier2_price}}{{tier2_period}}{{tier2_description}}{{tier2_feature1}}{{tier2_feature2}}{{tier2_feature3}}{{tier2_feature4}}{{tier2_ctaLabel}}{{tier3_name}}{{tier3_price}}{{tier3_period}}{{tier3_description}}{{tier3_feature1}}{{tier3_feature2}}{{tier3_feature3}}{{tier3_feature4}}{{tier3_ctaLabel}}- Componentes requeridos
buttonbadgedividertypographyitem
Anatomía CSS
<div class="layoutPricingTiers"> </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 | #fafafa | background |
| all | border | #f5f5f5 | accent |
CSS mínimo funcional
Autocontenido: sin imports ni tokens. Para previews y prototipos — en producción se consume el CSS del DS.
/* Layout: pricing-tiers — structure only */
.l-pricing-tiers {
display: flex;
flex-direction: column;
gap: 32px;
padding: 48px 32px;
}
.l-pricing-tiers__header {
text-align: center;
max-width: 640px;
margin: 0 auto;
}
.l-pricing-tiers__grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
align-items: start;
}
@media (max-width: 900px) {
.l-pricing-tiers__grid {
grid-template-columns: 1fr;
}
}
.l-pricing-tiers__card {
display: flex;
flex-direction: column;
border: 1px solid #e5e5e5;
border-radius: 12px;
padding: 24px;
background: #fafafa;
}
.l-pricing-tiers__card--featured {
border-color: #f5f5f5;
box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1);
transform: scale(1.02);
}
.l-pricing-tiers__card-header {
text-align: center;
margin-bottom: 16px;
}
.l-pricing-tiers__tier-name {
font-size: var(--text-xl);
font-weight: 600;
}
.l-pricing-tiers__price {
margin: 8px 0;
}
.l-pricing-tiers__price-value {
font-size: var(--text-3xl);
font-weight: 700;
}
.l-pricing-tiers__features {
display: flex;
flex-direction: column;
gap: 8px;
margin: 16px 0;
flex: 1;
}
.l-pricing-tiers__cta {
margin-top: auto;
text-align: center;
}
Codigo fuente
layouts/pricing-tiers.css
/* Layout: pricing-tiers — structure only */ .l-pricing-tiers { display: flex; flex-direction: column; gap: var(--spacing-8); padding: var(--spacing-12) var(--spacing-8); } .l-pricing-tiers__header { text-align: center; max-width: 640px; margin: 0 auto; } .l-pricing-tiers__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--spacing-6); align-items: start; } @media (max-width: 900px) { .l-pricing-tiers__grid { grid-template-columns: 1fr; } } .l-pricing-tiers__card { display: flex; flex-direction: column; border: 1px solid var(--border); border-radius: var(--radius-lg); padding: var(--spacing-6); background: var(--background); } .l-pricing-tiers__card--featured { border-color: var(--accent); box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1); transform: scale(1.02); } .l-pricing-tiers__card-header { text-align: center; margin-bottom: var(--spacing-4); } .l-pricing-tiers__tier-name { font-size: var(--text-xl); font-weight: 600; } .l-pricing-tiers__price { margin: var(--spacing-2) 0; } .l-pricing-tiers__price-value { font-size: var(--text-3xl); font-weight: 700; } .l-pricing-tiers__features { display: flex; flex-direction: column; gap: var(--spacing-2); margin: var(--spacing-4) 0; flex: 1; } .l-pricing-tiers__cta { margin-top: auto; text-align: center; }