Pattern Library โ Componenti
Bottoni
.c-btn
Bottone principale. Colori e ombra si adattano al tema attivo.
Stati
- Default โ sfondo:
--color-secondary, testo:--color-text-offset, bordo:--color-primary - Hover / Focus โ sfondo:
--color-bg, testo:--color-text, bordo:--color-text - Active โ sfondo:
--color-bg-offset, testo:--color-text-offset, offset ridotto (il bottone "affonda")
Box-shadow a 3 livelli
L'ombra del bottone ha tre strati sovrapposti che cambiano colore su hover/active:
0 30px 40px rgba(0,0,0,.1)โ ombra diffusa fissa- Primo offset solido (
4px 4px) โ cambia tra--color-bge--color-bg-offset - Secondo offset solido (
8px 8px) โ cambia tra--color-bg-offsete--color-secondary
.c-btn--small
Variante ridotta: padding e font-size inferiori.
Confronto diretto:
Bottone su sfondo alternativo (.c-block__textBlock--highlight): i colori del tema si invertono, il bottone resta leggibile.
Layout objects
Classi strutturali con prefisso o-. Non definiscono colori o decorazioni, solo dimensioni e posizionamento.
.o-wrapper
Contenitore centrato al 90% della viewport. Usato su quasi tutti i blocchi di contenuto.
.o-wrapperโwidth: 90%; margin: 0 auto;.o-wrapper__narrowโ aggiungemax-width: 60%da tablet-hor in su
.o-wrapper โ larghezza 90%
.o-wrapper.o-wrapper__narrow โ max 60% da tablet-hor
.o-grid
Griglia a 12 colonne con display: grid. Gap: 10px (mobile), 16px (mobile-hor+).
Varianti contenuto
.o-grid__contentโ full width (1 / -1).o-grid__content--txtโ progressivo: full โ col 4/11 (tablet) โ 6/13 (desktop) โ 7/13 (wide).o-grid__figureโ full โ 2/12 (tablet-hor) โ 4/13 (desktop).o-grid__fullโ sempre full width (1 / -1)
.o-cols / .o-col
Layout flex a colonne. Mobile: colonna singola. Da tablet: riga con flex-wrap.
.o-colโ flex: 1 (colonne uguali).o-col--doubleโ flex: 2 (doppia larghezza).o-col--halfโ width: 50%.o-col--wideโ width: 100%
Alignment modifiers (su .o-cols)
.row-reverseโ inverte l'ordine.justify-between/.justify-left/.justify-right.align-topโ allinea in alto
Colonne uguali:
Double + single:
Half:
.o-module
Spaziatore verticale. Aggiunge padding top/bottom (32px) per separare sezioni.
.o-moduleโ padding verticale.o-module--halfโ margin verticale (alternativa piรน leggera)
.o-module โ il padding verticale crea lo spazio (area interna tratteggiata)
.o-cards
Griglia responsive per card. Colonne progressive:
- Mobile: 1 colonna
- Mobile-hor: 2 colonne
- Tablet-hor: 3 colonne
- Desktop: 4 colonne
.o-video-wrapper
Contenitore per embed video 16:9 (padding-bottom: 56.25%). Figlio (iframe, video, object, embed) diventa position: absolute e riempie il contenitore.
Grid variants
Varianti specializzate della griglia a 12 colonne, ottimizzate per contesti specifici.
.o-grid-intro
Griglia per la sezione intro/hero. Da tablet-hor in su definisce grid-template-rows: auto 1fr per disporre titolo e contenuto su righe separate. Quattro zone:
| Classe | Mobile | Tablet-hor | Desktop |
|---|---|---|---|
__title |
1 / 12 | 1 / 7, row 1 | 1 / 8 |
__intro |
1 / -1 | 7 / -1, row 1/-1 | 8 / -1 |
__meta |
1 / 12 | 1 / 7, row 2/-1 | 1 / 8 |
__img |
1 / -1 | 1 / span 7 | 1 / 10 |
Variante .o-grid-intro--entry: titolo centrato (col 2/-2), immagine spostata a destra (col 3/-1 da desktop).
1/7, row 1
7/-1, row 1/-1
1/7, row 2
.o-grid--entry
Variante minimale per le entry. Un solo figlio definito:
.o-grid--entry__imgโ full width (grid-column: 1 / -1)
.o-grid__list-item
Posizionamento dei post nella lista del blog. Layout sfalsato con :nth-of-type per creare un effetto asimmetrico:
| Item | Mobile | Mobile-hor | Tablet | Desktop |
|---|---|---|---|---|
| Dispari | 1 / -1 | 1 / -4 | 1 / 8 | 3 / 8 |
| Pari | 1 / -1 | 4 / -1 | 5 / -1 | 6 / -3 |
| 4ยฐ | 1 / -1 | โ | 4 / -3 | 5 / 10 |
[class^='icon-']
Sistema icone SVG. Default: 48x48px, fill: none; stroke: currentColor (stile Feather Icons).
.icon--filledโ variante "piena" (fill: currentColor; stroke: none)
Scala dimensioni:
| Classe | Dimensione |
|---|---|
.icon-xs | 10px |
.icon-s | 12px |
.icon-m | 16px |
.icon-l | 20px |
.icon-xl | 24px |
.icon-xxl | 30px |
Content blocks
Componenti con prefisso c-block. Usati nei template dei post per testo, immagini, tabelle e gallerie.
.c-block__textBlock
Box di testo con bordo spesso (8px), ombra e padding. Colori dal tema attivo.
- Bordo:
solid 8px var(--color-border) - Sfondo:
var(--color-bg) - Ombra:
$color-ombra(variabile SCSS globale)
Questo stesso box che stai leggendo usa .c-block__textBlock. Il primo e l'ultimo paragrafo hanno margin azzerato per un padding uniforme.
.c-block__textBlock--highlight
Variante "Hey!" per aggiornamenti e note importanti. Caratteristiche:
- Sfondo invertito:
var(--color-bg-offset), testo:var(--color-text-offset) - Pseudo-elemento
::beforecon testo decorativo in heading font - Pseudo-elemento
::aftercon ombra gradient (--color-bg-offsetโ--color-secondaryโ--color-bg-offset)
Esempio di blocco highlight. Il titolo "Hey!" viene generato dal CSS. L'ombra dietro il box usa un gradient lineare con i colori del tema.
.c-block__figure
Contenitore immagine con box-shadow a offset. L'ombra usa var(--color-bg-offset).
- Mobile: offset
16px 33px - Tablet-hor+: offset
33px 33px - Caption con sfondo
--color-bg-offsete testo--color-text-offset
Didascalia di esempio โ il colore di sfondo segue --color-bg-offset.
.c-block__figure--vertical
Variante portrait. L'immagine occupa max 50% della larghezza, centrata. Dietro, un ::before mostra la stessa immagine sfocata (filter: blur(10px)) come sfondo decorativo tramite var(--bg-image).
.c-block__table
Tabella con overflow: auto per scroll orizzontale su mobile (la tabella interna ha min-width: 200vw sotto tablet). Bordi e zebra striping con colori del tema.
| Colonna A | Colonna B | Colonna C | Colonna D |
|---|---|---|---|
| Dato 1 | Dato 2 | Dato 3 | Dato 4 |
| Dato 5 | Dato 6 | Dato 7 | Dato 8 |
| Dato 9 | Dato 10 | Dato 11 | Dato 12 |
.c-block__gallery
Contenitore per carousel Swiper. Quando ci sono 2+ immagini in un blocco bigImg, il template sceglie il carousel invece dell'immagine singola.
- Pseudo-elemento
::beforecon emoji decorativa ๐๏ธ (150px, opacity 0.2) - JavaScript: Swiper gestisce lo slide, nessun CSS custom necessario oltre la libreria
Gallery ๐๏ธ๐๏ธ๐๏ธ
Componenti UI strutturali
I componenti c- che formano la struttura delle pagine: header, intro, paginazione, meta, tags, newsletter CTA, list feed, search e footer.
.c-header
Navigazione principale del sito. Flex row con link bold e stato attivo evidenziato.
.c-header__skipโ link "Vai al contenuto" nascosto (accessibilitร ,position: absolute; top: -100px).c-header__navโ contenitore<nav>.c-header__listโdisplay: flex; flex-flow: row wrap.c-header__linkโ padding.8rem .6rem, bold, margin-right crescente per breakpoint.is-active > .c-header__linkโ bordo 4px in--color-primary-offset
Margine verticale progressivo: 8px (mobile) โ 16px (mobile-hor) โ 32px (tablet). Ridotto nei blog entry.
Esempio live โ l'header di questa pagina, in alto, รจ il componente .c-header.
.c-intro
Hero section con titolo grande, testo introduttivo opzionale e immagine. Usato in tutte le pagine.
.c-intro__titleโ font Ringside, uppercase, dimensioni responsive:- Default: 65px โ 95px โ 145px
- Homepage: 85px โ 135px โ 185px
--longish(titoli > 30 char): 50px โ 75px โ 105px
.c-intro__title::beforeโ pseudo-elemento sfondo--color-bg(z-index: -1).c-intro__introโ box di testo con bordo, ombra e sfondo, come unc-block__textBlock.c-intro__imgโ immagine hero, con offset negativo su homepage da tablet
L'intro di questa pagina ("Pattern Library โ Componenti") usa questo componente.
.c-pagination
Barra di navigazione prev/next per le liste paginate. Bordo top/bottom 4px.
.c-pagination__navโdisplay: flex, centrato.c-pagination__linkโflex: 1, colore--color-primary, bold- Hover: sfondo
--color-bg-offset, testo--color-text-offset
.c-meta
Blocco metadati dei post (data, categoria, tags, autore). Flex column con sfondo --color-bg-offset, opacity 0.7 che diventa 1 su hover.
.c-meta__dateโ data di pubblicazione.c-meta__categoryโ link a categorie/tags con padding e sfondo offset
.c-tags
Riga di tags con bordo e animazione highlight su :target (flash giallo). Usato nell'indice tags.
.c-tags__sectionโ lettera/sezione in font heading, opacity 0.7.c-tags__bodyโ contenitore tags.c-tags__tagโ singolo tag: bordo 1px, border-radius 3px, inline-block
.c-newsletter-cta
Banner call-to-action per la newsletter. Bordo top/bottom 8px, con emoji ๐ decorativa in ::before (posizionata assolutamente da tablet-hor, dimensione crescente fino a 90px).
Usa la griglia standard .o-grid + .o-grid__content--txt per il testo e un .c-btn per il link.
.c-list-feed
Lista di post correlati/recenti. Usato nel footer di tutte le pagine (sezione "Ultimi articoli").
.c-list-feed__titleโ titolo sezione in font Ringside, dimensioni 70px โ 95px โ 145px.c-list-feed__itemโ singolo post con sfondo--color-bg, margine tra items.c-list-feed__linkโ link full-width con padding.c-list-feed__bgโ immagine di sfondo del post (opacity 0.2, si anima su hover).c-list-feed__post-titleโ titolo post, uppercase.c-list-feed__categoriesโ lista categorie sotto il titolo
.c-search
Form di ricerca con caricamento htmx. Padding responsive via vw.
.c-search__formโ margine e padding crescenti per breakpoint.c-search__wrapโdisplay: flex.c-search__inputโ input full-width, min 230px, no border-radius.c-search__categoriesโ box con bordo 16px in--color-text, sfondo--color-bg.c-search__categoryโ grid responsiva: 48% โ 32% โ 24% โ 19%.c-search-loadingโ overlay di caricamento (fixed, centrato, opacity 0 โ visibile su.htmx-request)
.c-footer
Footer del sito. Sfondo nero fisso ($color-black), bordo top 32px (64px da tablet).
.c-footer__navbar/.c-footer__noteโ testo bianco.c-footer__noteโ blocco di testo con padding.c-footer__relatedโ sezione contenuti correlati, padding molto generoso (128px โ 256px).c-footer__nastynastaseโ immagine decorativa (Nastase!).c-footer__disclaimerโ credits in viola (#4e2683), link con doppia sottolineatura
Il footer di questa pagina (in basso) รจ il componente .c-footer live.
.post-card
Modificatori per le card nella griglia .o-cards:
.post-card--aliveโ su hover si sposta di -15px in X e Y (effetto "sollevamento").post-card--nomoreโcursor: default(card disabilitata)