Components (registry)Layout
Events List
Layout template: events-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
{{section_id}}{{tagline}}{{heading}}{{description}}{{tab1}}{{tab2}}{{tab3}}{{tab4}}{{tab5}}{{event1_weekday}}{{event1_day}}{{event1_month}}{{event1_year}}{{event1_url}}{{event1_title}}{{event1_status}}{{event1_location}}{{event1_description}}{{event1_cta}}{{event2_weekday}}{{event2_day}}{{event2_month}}{{event2_year}}{{event2_url}}{{event2_title}}{{event2_status}}{{event2_location}}{{event2_description}}{{event2_cta}}{{event3_weekday}}{{event3_day}}{{event3_month}}{{event3_year}}{{event3_url}}{{event3_title}}{{event3_status}}{{event3_location}}{{event3_description}}{{event3_cta}}- Componentes requeridos
buttontypography
Anatomía CSS
<div class="layoutEventsList"> </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 | #0a0a0a | foreground |
| all | bg | #f5f5f5 | muted |
| all | border | #e5e5e5 | border |
CSS mínimo funcional
Autocontenido: sin imports ni tokens. Para previews y prototipos — en producción se consume el CSS del DS.
/* Layout: events-list — structure only, pure DS tokens */
.l-events-list {
padding: 80px 32px;
}
.l-events-list__header {
max-width: 640px;
margin-bottom: 48px;
}
@media (min-width: 768px) {
.l-events-list__header {
margin-bottom: var(--spacing-18);
}
}
@media (min-width: 1024px) {
.l-events-list__header {
margin-bottom: 80px;
}
}
.l-events-list__tagline {
font-size: 12.8px;
font-weight: 600;
color: #525252;
margin-bottom: 12px;
}
.l-events-list__heading {
font-size: 48.83px;
line-height: 1.15;
font-weight: 700;
letter-spacing: -0.02em;
color: #0a0a0a;
margin-bottom: 20px;
}
@media (min-width: 768px) {
.l-events-list__heading {
font-size: 61.04px;
line-height: 1.1;
margin-bottom: 24px;
}
}
@media (min-width: 1024px) {
.l-events-list__heading {
font-size: 76.29px;
line-height: 1.05;
}
}
.l-events-list__description {
font-size: 16px;
line-height: 1.5;
color: #525252;
}
@media (min-width: 768px) {
.l-events-list__description {
font-size: 20px;
line-height: 1.45;
}
}
.l-events-list__tabs {
display: flex;
margin-bottom: 48px;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
gap: 0;
}
@media (min-width: 768px) {
.l-events-list__tabs {
overflow-x: visible;
}
}
.l-events-list__tab {
display: inline-flex;
align-items: center;
justify-content: center;
white-space: nowrap;
border: 1px solid #e5e5e5;
background-color: #fafafa;
color: #0a0a0a;
padding: 0.5rem 1rem;
font-size: 16px;
cursor: pointer;
}
.l-events-list__tab--active {
border-color: #e5e5e5;
background-color: transparent;
color: #0a0a0a;
}
.l-events-list__content {
/* events listed vertically with borders */
}
.l-events-list__event {
display: grid;
grid-template-columns: 1fr;
gap: 16px;
border-top: 1px solid #e5e5e5;
padding-block: 24px;
align-items: center;
}
.l-events-list__event:last-child {
border-bottom: 1px solid #e5e5e5;
}
@media (min-width: 768px) {
.l-events-list__event {
grid-template-columns: max-content 1fr max-content;
gap: 32px;
padding-block: 32px;
}
}
.l-events-list__date {
display: flex;
flex-direction: column;
align-items: center;
border: 1px solid #e5e5e5;
background-color: #fafafa;
padding: 0.25rem 0.25rem 0.75rem;
min-width: 7rem;
text-align: center;
font-size: 16px;
}
.l-events-list__day {
font-size: 31.25px;
font-weight: 700;
line-height: 1;
}
@media (min-width: 768px) {
.l-events-list__day {
font-size: 39.06px;
}
}
@media (min-width: 1024px) {
.l-events-list__day {
font-size: 48.83px;
}
}
.l-events-list__info {
display: flex;
flex-direction: column;
align-items: flex-start;
}
.l-events-list__title-row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px;
margin-bottom: 8px;
}
@media (min-width: 640px) {
.l-events-list__title-row {
margin-bottom: 0;
gap: 16px;
}
}
.l-events-list__title {
font-size: 25px;
font-weight: 700;
color: #0a0a0a;
text-decoration: none;
}
@media (min-width: 768px) {
.l-events-list__title {
font-size: 31.25px;
}
}
.l-events-list__status {
display: inline-block;
background-color: #f5f5f5;
color: #0a0a0a;
padding: 0.25rem 0.5rem;
font-size: 12.8px;
font-weight: 600;
}
.l-events-list__location {
font-size: 12.8px;
color: #525252;
margin-bottom: 12px;
}
@media (min-width: 768px) {
.l-events-list__location {
margin-bottom: 16px;
}
}
.l-events-list__description {
font-size: 16px;
color: #0a0a0a;
}
.l-events-list__action {
display: flex;
margin-top: 16px;
}
@media (min-width: 768px) {
.l-events-list__action {
margin-top: 0;
}
}
Codigo fuente
layouts/events-list.css
/* Layout: events-list — structure only, pure DS tokens */ .l-events-list { padding: var(--spacing-20) var(--spacing-8); } .l-events-list__header { max-width: 640px; margin-bottom: var(--spacing-12); } @media (min-width: 768px) { .l-events-list__header { margin-bottom: var(--spacing-18); } } @media (min-width: 1024px) { .l-events-list__header { margin-bottom: var(--spacing-20); } } .l-events-list__tagline { font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); color: var(--muted-foreground); margin-bottom: var(--spacing-3); } .l-events-list__heading { font-size: var(--font-size-4xl); line-height: var(--line-height-4xl); font-weight: var(--font-weight-bold); letter-spacing: var(--letter-spacing-tight); color: var(--foreground); margin-bottom: var(--spacing-5); } @media (min-width: 768px) { .l-events-list__heading { font-size: var(--font-size-5xl); line-height: var(--line-height-5xl); margin-bottom: var(--spacing-6); } } @media (min-width: 1024px) { .l-events-list__heading { font-size: var(--font-size-6xl); line-height: var(--line-height-6xl); } } .l-events-list__description { font-size: var(--font-size-base); line-height: var(--line-height-base); color: var(--muted-foreground); } @media (min-width: 768px) { .l-events-list__description { font-size: var(--font-size-lg); line-height: var(--line-height-lg); } } .l-events-list__tabs { display: flex; margin-bottom: var(--spacing-12); overflow-x: auto; -webkit-overflow-scrolling: touch; gap: 0; } @media (min-width: 768px) { .l-events-list__tabs { overflow-x: visible; } } .l-events-list__tab { display: inline-flex; align-items: center; justify-content: center; white-space: nowrap; border: 1px solid var(--border); background-color: var(--background); color: var(--foreground); padding: 0.5rem 1rem; font-size: var(--font-size-base); cursor: pointer; } .l-events-list__tab--active { border-color: var(--border); background-color: transparent; color: var(--foreground); } .l-events-list__content { /* events listed vertically with borders */ } .l-events-list__event { display: grid; grid-template-columns: 1fr; gap: var(--spacing-4); border-top: 1px solid var(--border); padding-block: var(--spacing-6); align-items: center; } .l-events-list__event:last-child { border-bottom: 1px solid var(--border); } @media (min-width: 768px) { .l-events-list__event { grid-template-columns: max-content 1fr max-content; gap: var(--spacing-8); padding-block: var(--spacing-8); } } .l-events-list__date { display: flex; flex-direction: column; align-items: center; border: 1px solid var(--border); background-color: var(--background); padding: 0.25rem 0.25rem 0.75rem; min-width: 7rem; text-align: center; font-size: var(--font-size-base); } .l-events-list__day { font-size: var(--font-size-2xl); font-weight: var(--font-weight-bold); line-height: 1; } @media (min-width: 768px) { .l-events-list__day { font-size: var(--font-size-3xl); } } @media (min-width: 1024px) { .l-events-list__day { font-size: var(--font-size-4xl); } } .l-events-list__info { display: flex; flex-direction: column; align-items: flex-start; } .l-events-list__title-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--spacing-2); margin-bottom: var(--spacing-2); } @media (min-width: 640px) { .l-events-list__title-row { margin-bottom: 0; gap: var(--spacing-4); } } .l-events-list__title { font-size: var(--font-size-xl); font-weight: var(--font-weight-bold); color: var(--foreground); text-decoration: none; } @media (min-width: 768px) { .l-events-list__title { font-size: var(--font-size-2xl); } } .l-events-list__status { display: inline-block; background-color: var(--muted); color: var(--foreground); padding: 0.25rem 0.5rem; font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); } .l-events-list__location { font-size: var(--font-size-sm); color: var(--muted-foreground); margin-bottom: var(--spacing-3); } @media (min-width: 768px) { .l-events-list__location { margin-bottom: var(--spacing-4); } } .l-events-list__description { font-size: var(--font-size-base); color: var(--foreground); } .l-events-list__action { display: flex; margin-top: var(--spacing-4); } @media (min-width: 768px) { .l-events-list__action { margin-top: 0; } }