Components (registry)Layout
Pricing Plans
Dos planes espejo del pricing de Atom: Profesional destacado (oscuro) + Enterprise. Card con eyebrow, título display, precio, iconos de canal, CTA, beneficios y logos de integraciones.
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
{{eyebrow}}{{headline}}{{subtitle}}{{plan1_eyebrow}}{{plan1_name}}{{plan1_price}}{{plan1_priceUnit}}{{plan1_priceNote}}{{plan1_channelsLabel}}{{plan1_ctaHref}}{{plan1_ctaId}}{{plan1_ctaLabel}}{{plan1_benefitsLabel}}{{plan1_crmLabel}}{{plan2_eyebrow}}{{plan2_name}}{{plan2_price}}{{plan2_priceUnit}}{{plan2_priceNote}}{{plan2_channelsLabel}}{{plan2_ctaHref}}{{plan2_ctaId}}{{plan2_ctaLabel}}{{plan2_benefitsLabel}}{{plan2_crmLabel}}{{footnote}}- Filas repetibles
plan1_feature— feature_label, feature_valueplan2_feature— feature_label, feature_value- Componentes requeridos
section-headerpricing-cardfeaturedividertagbuttonicon
Anatomía CSS
<div class="layoutPricingPlans"> </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 | 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: pricing-plans — solo la rejilla de la seccion.
El lateral lo gobierna .container con --container-padding; la card, su padding. */
.l-pricing-plans {
padding-inline: 0;
}
.l-pricing-plans__grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(24rem, 1fr));
gap: 16px;
align-items: stretch;
}
.l-pricing-plans__footnote {
max-width: 48rem;
margin-block-start: 40px;
margin-inline: auto;
color: #525252;
text-align: center;
}
@media (max-width: 767px) {
.l-pricing-plans__grid {
grid-template-columns: 1fr;
}
}
Codigo fuente
layouts/pricing-plans.css
/* Layout: pricing-plans — solo la rejilla de la seccion. El lateral lo gobierna .container con --container-padding; la card, su padding. */ .l-pricing-plans { padding-inline: 0; } .l-pricing-plans__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(24rem, 1fr)); gap: var(--spacing-4); align-items: stretch; } .l-pricing-plans__footnote { max-width: 48rem; margin-block-start: var(--spacing-10); margin-inline: auto; color: var(--muted-foreground); text-align: center; } @media (max-width: 767px) { .l-pricing-plans__grid { grid-template-columns: 1fr; } }