Documentazione · src/studio
Lo Studio
Dieci file per l’editor della forma. Non è una collection di Payload: scrive direttamente i sei store, che sono file — e per questo si vedono in un diff.
Perché non è una collection
Il catalogo delle ricette è uscito da una collection di Payload, dove stava riferendo per nome stili che vivono nei file: metà artefatto da una parte e metà dall’altra. Una modifica in admin non compariva in nessun diff, e allineare due ambienti significava esportare a mano.
Ora è tutto dalla stessa parte. Lo Studio scrive i file, i file stanno in versione, un cambio di forma si rivede come si rivede il codice. E Tailwind li legge, cosa che con una collection non avrebbe potuto fare.
studio/ViewModeStudio.tsx— l’editor: viewMode, slot, stili, temi, ricettestudio/server.ts— la parte server: legge gli store e i nomi dei componenti, senza importare React
I percorsi li dichiara il consumer
Dove stanno i sei store lo dice il progetto, passandolo. Il pacchetto leggeva le variabili d’ambiente da solo, e questo faceva sì che un nome scelto da noi diventasse parte della configurazione di chi installa: rinominarlo sarebbe stato un breaking change che nessun controllo avrebbe visto.
Stessa logica per il salto dell’autenticazione: è un’affordance di sviluppo locale, e il valore lo decide il consumer. Il pacchetto non legge `process.env`.
studio/paths.ts— dove vivono gli store — dichiarati, non letti dall’ambientestudio/next.tsx— l’aggancio a Next, incluso il salto del gate di auth in localestudio/seedDbJson.ts— scrive gli store, generandoli dalle baseline quando mancanostudio/normalizeViewMode.ts— porta un viewMode nella forma canonica prima di scriverlo
I tre momenti di una ricetta
Un’animazione è una ricetta con tre momenti: `initial` prima del trigger, quello di transizione, `ending` dopo. Restano tre campi distinti perché sono tre cose distinte, e comprimerli in uno solo avrebbe costretto a inventare una sintassi.
Le classi dei tre momenti vengono dagli stili dello Studio, quindi Tailwind le genera dallo stesso file. È dogfooding: le animazioni usano la style guide come la usa qualunque viewMode.
L’aggancio all’admin
Lo Studio è servito come vista personalizzata dell’admin di Payload, con due voci di navigazione — una verso lo Studio, una verso il sito pubblico. Il progetto le monta nella propria configurazione; sono cinque sottopercorsi pubblici distinti proprio perché si montino uno per uno.
studio/adminView.tsx— la vista personalizzatastudio/StudioNavLink.tsx + PublicSiteNavLink.tsx— le voci di navigazionestudio/index.ts— la porta dell’area