Un sistema per farsi
trovare. Bene.
Token, componenti e pattern condivisi da area partner, server MCP e app per ChatGPT. Atomici, accessibili, con micro-animazioni che spiegano cosa sta succedendo invece di decorarlo.
01 — Fondamenta
Prima dei componenti, le decisioni.
Colore, tipografia, forma e movimento sono definiti una volta sola come variabili CSS. I componenti non scelgono mai un valore: lo leggono. Cambiare il tema significa cambiare qui, non in quaranta file.
Token semanticiI componenti usano sempre questi nomi, mai le scale grezze.
canvasFondo paginasurfaceSuperficiesurface-raisedSuperficie sollevatasurface-sunkenSuperficie incassatabrandMarchioprimaryAzione primariaaccentAccentosuccessEsito positivowarningAttenzionedangerErroreinfoInformazioneOgni token ha un valore per il tema chiaro e uno per lo scuro. Il componente non sa in quale tema si trova, e non deve saperlo (APP-04).
Scala CremaLe superfici. Il fondo non è bianco: è carta calda, come nel riferimento.
50100200300400500Scala ForestaIl marchio. Azioni sicure, conferme, blocchi editoriali scuri.
100300500600700900Scala LavandaL'azione primaria e, nel prodotto, i vantaggi della prenotazione diretta.
100200300400500700Scala CoralloL'accento. Usato con parsimonia: evidenzia, non decora.
100300500600700TipografiaInstrument Serif per i titoli, Plus Jakarta Sans per l'interfaccia.
Dormi bene.
font-display · 48px · corsivo per l’ultima parola
Titolo di sezione
Il corpo del testo usa il sans: alta leggibilità a 14 e 16 px, numeri tabulari per prezzi e statistiche, interlinea generosa.
Testo di supporto, 12 px — note, condizioni, freschezza dei dati.
Occhiello · 11 px
Forma e profonditàRaggi ampi e ombre calde: nessun grigio freddo nel sistema.
smlg2xlfullxssmmdlgL’ombra indica quanto un elemento è vicino all’utente:sm per le schede,lg per menu e popover,xl solo per i dialoghi modali.
MovimentoTre curve condivise, esposte come token e usate da tutti i componenti.
softoverlay, pannelli
0.16, 1, 0.3, 1swifthover, colore
0.22, 0.61, 0.36, 1springindicatori, spunte
molla 420/32Tre curve, non una per componente. Tutto ciò che entra usasoft, tutto ciò che reagisce al puntatore usa swift, tutto ciò che “atterra” usa la molla. Conprefers-reduced-motion ogni durata scende a zero.
SpaziaturaScala di 4 px. Le distanze grandi separano i concetti, non riempiono.
14px28px312px416px624px832px1248pxAccessibilitàRegole verificate su ogni componente prima di considerarlo pronto.
- ✓Un solo stile di focus in tutto il sistema, sempre visibile da tastiera
- ✓Il colore non è mai l'unico veicolo di significato: stati e esiti hanno anche parola o forma
- ✓Contrasto minimo 4.5:1 sui testi, 3:1 su bordi e icone informative
- ✓Ogni immagine ha un testo alternativo; le decorative sono marcate aria-hidden
- ✓prefers-reduced-motion azzera le animazioni senza togliere informazione
02 — Componenti
Le parti che si ripetono ovunque.
Primitive atomiche, senza logica di prodotto al loro interno. Ogni componente accetta className, inoltra la ref e non decide mai al posto di chi lo usa: qui si vedono tutti gli stati, non solo quello felice.
Button8 varianti × 5 dimensioni, stato di caricamento, slot per le icone.
Tre micro-animazioni, tutte sotto i 300 ms: sollevamento di 1 px all’hover, affondo al clic, riflesso che attraversa il pulsante. Lo spinner entra allargando lo spazio invece di sostituire il testo, così il pulsante non cambia larghezza sotto il dito.
Field · Input · Textarea · SelectEtichetta, descrizione ed errore collegati automaticamente.
Come appare sulle insegne e sul sito ufficiale.
Inserisci un indirizzo email completo.
Compare nei risultati di ricerca degli assistenti AI.
Filtro rigido nella ricerca.
Field collega da solo etichetta, descrizione ed errore al controllo: qualsiasi input al suo interno ricevearia-describedby earia-invalid senza che lo sviluppatore se ne occupi. Il messaggio d’errore entra in altezza, non appare di scatto.
Checkbox · Switch · RadioCard · SliderControlli di selezione, dalla casella singola alla scelta a schede.
Segmented · Tabs · VerticalNav · Breadcrumb · PaginationNavigazione fra viste e fra pagine.
Dialog · Sheet · DropdownMenu · Popover · Tooltip · ToastTutto ciò che si sovrappone alla pagina, con la stessa entrata.
Alert · Skeleton · Spinner · Progress · EmptyStateGli stati che il prodotto attraversa davvero: attesa, avviso, vuoto.
Struttura sospesa dalla rete
Nuove camere rilevate dal fornitore
Verifica della titolarità completata
Nessuna struttura in questa zona
La rete non copre ancora Cefalù. Le zone più vicine con strutture convenzionate sono Palermo e Madonie.
Card · Badge · Avatar · AccordionContenitori e marcatori.
Scheda interattiva
Si solleva al passaggio e reagisce anche al focus da tastiera.
Blocco editoriale
La variante scura per le sezioni di respiro.
StepperFlussi a tappe: dalla registrazione alla pubblicazione.
Account
Struttura
Verifica
Fornitore
Pubblica
Credenziali inserite
Codice di accesso e identificativo struttura.
Importazione iniziale
Camere, piani tariffari e 365 giorni di prezzi.
Abbinamento
Camere del fornitore e camere già inserite a mano.
StatTile · Table · SortableHeadPresentazione dei dati dell'area partner.
Ricerche
Posizione media
Aperture dettaglio
Clic su prenota
| Struttura | Zona | Stato | ||
|---|---|---|---|---|
| Villa Belvedere | Taormina | Pubblicata | 1284 | 96 |
| Etna Rooms | Etna | Sospesa | 412 | 18 |
| Casa Ortigia | Siracusa | In pausa | 233 | 11 |
| Baia dei Ciclopi | Aci Trezza | In revisione | 0 | 0 |
EmptyStateLo stato vuoto è un componente, non un paragrafo lasciato lì.
Nessuna struttura ancora
Crea la prima struttura per iniziare: bastano anagrafica, foto e un collegamento al tuo channel manager.
Zona non coperta
Non ci sono strutture convenzionate a Cefalù. Nelle vicinanze: Palermo (12) e Madonie (4).
Principi
Quattro regole che tengono insieme il resto.
Atomico
Ogni componente fa una cosa sola, accetta className, inoltra la ref e non contiene logica di prodotto. Le regole del dominio stanno nei componenti di dominio, non dentro un Button.
Semantico
I componenti non nominano mai un colore. Usano token di ruolo — superficie, contenuto, marchio, pericolo — così tema chiaro e scuro sono la stessa base con valori diversi.
Sobrio nel movimento
L'animazione serve a rendere comprensibile un cambiamento: da dove arriva un pannello, quale segmento è attivo, cosa sta caricando. Se non spiega nulla, non c'è.
Onesto
Un prezzo indicativo lo dichiara, un dato vecchio mostra quando è stato aggiornato, un errore dice cosa fare. Il sistema rende difficile mentire al viaggiatore.
03 — Dominio
I componenti che sanno di cosa parliamo.
Qui il sistema smette di essere generico. Stati della rete, completezza del profilo, freschezza dei dati, vantaggi del diretto: concetti dell'MVP che meritano un componente proprio, così che la regola sia scritta una volta sola e valga in area partner, server MCP e app ChatGPT.
PropertyStatusBadgeI sette stati della struttura nella rete, con il motivo al passaggio.
Lo stato è la cosa che il partner guarda per prima ogni mattina: parola sempre presente, colore ridondante, causa a un passaggio di mouse. La stessa mappa di stati alimenta elenchi, tabelle e schede.
CompletenessMeterSepara ciò che blocca la pubblicazione da ciò che la migliora.
Completezza del profilo
3 da completareMancano 3 campi obbligatori per richiedere la pubblicazione.
SyncStatusCardStato del collegamento al channel manager, in linguaggio comprensibile.
WuBook
- Ultima sincronizzazione
- Orizzonte coperto
- 365 giorni
WuBook
- Ultima sincronizzazione
- Orizzonte coperto
- 365 giorni
Cosa è successo
BenefitChip · BenefitList · BenefitRowI vantaggi della prenotazione diretta: l'argomento di vendita della rete.
12% in meno rispetto alle OTA
Su tutti i piani tariffari, tutto l'anno.
Late check-out
Fino alle 15:00, secondo disponibilità.
Lavanda: nel sistema questo colore significa “conviene prenotare diretto”. Non si usa per i servizi, che sono un’altra cosa e hanno un altro componente.
PriceDisplay · RatingStars · FreshnessIndicatorCome si scrive un prezzo nella rete: totale, media, tassa separata.
Con date
12 → 15 luglio · 2 adulti
AggiornatoSenza date
Prezzo indicativo, sempre marcato come tale
AggiornatoTre regole imposte dal componente, non dallo sviluppatore che lo usa: il totale del soggiorno è il numero grande, la tassa di soggiorno è sempre fuori dal totale e dichiarata come stima, un prezzo senza date porta sempre “a partire da”.
AmenityListTre stati per servizio: incluso, a pagamento, non disponibile.
“A pagamento” non è “assente”: appiattire i tre stati su due è il modo più rapido per far arrivare un ospite arrabbiato alla reception. La nota del partner compare al passaggio.
SearchResultCardLa scheda nella lista risultati dell'app ChatGPT, verticale e orizzontale.
Villa Belvedere
Hotel · Taormina · Riviera dei Ciclopi
- Piscina a sfioro sul mare
- Colazione inclusa prenotando diretto
- A 300 m dalla spiaggia di Mazzarò
Baia dei Ciclopi
Resort · Aci Trezza
- Spa inclusa per soggiorni di 3 notti
- Ristorante di pesce con stella
Villa Belvedere
Hotel · Taormina · Riviera dei Ciclopi
- Piscina a sfioro sul mare
- Colazione inclusa prenotando diretto
- A 300 m dalla spiaggia di Mazzarò
Contiene solo ciò che serve a decidere se approfondire: nome, luogo, prezzo, due o tre motivazioni verificabili e i vantaggi del diretto. I pulsanti sono sempre gli stessi due — “Dettagli” resta nella conversazione, “Prenota sul sito” porta al sito ufficiale della struttura e lo dichiara.
PropertyCardLa struttura vista dal partner: stato, completezza, problema aperto.
Villa Belvedere
Taormina · Hotel 4 stelle
Etna Rooms
Nicolosi · B&B
Casa Ortigia
Siracusa · Casa vacanze
PhotoUploaderCaricamento foto con minimo richiesto sempre visibile.
Trascina le foto o scegli dal computer
JPG o PNG, lato lungo almeno 1600 px, massimo 8 MB per file
- PrincipaleEsterni
- Camera
- Piscina / Spa
ItineraryPicker · RangeCalendar · GuestSelectorDate e composizione ospiti, senza dipendenze esterne per le date.
Il calendario ragiona in notti, non in giorni: è la differenza che rende inutilizzabili quasi tutti i date picker generici in un prodotto di ospitalità. Selezionando una data precedente all’arrivo, l’intervallo riparte invece di invertirsi.
Composizione — anteprima in ChatGPTGli stessi componenti montati come li vedrebbe il viaggiatore (PUB-07).
Ho trovato 2 strutture convenzionate a Taormina per 3 notti dal 12 luglio, 2 adulti. Entrambe hanno vantaggi se prenoti dal sito ufficiale.
Villa Belvedere
Hotel · Taormina · Riviera dei Ciclopi
- Piscina a sfioro sul mare
- Colazione inclusa prenotando diretto
- A 300 m dalla spiaggia di Mazzarò
Baia dei Ciclopi
Resort · Aci Trezza
- Spa inclusa per soggiorni di 3 notti
- Ristorante di pesce con stella
I risultati provengono da una rete di strutture convenzionate e non rappresentano tutta l’offerta della zona.