Sistema di componenti Tailwind · Nuova risorsa

Sistema di progettazione Flowbite.

Una composizione nativa con accordion e drawer di Flowbite 4, con alias verificati per i temi semantici, una checklist di preparazione persistente e un flusso accessibile, eseguibile in locale, per annotare i materiali.

Guida OpenDesign9 capitoli33 voci di riferimentoGuida applicativa originale
01

Anteprima dell’interfaccia del sistema di progettazione sistema di design Flowbite

Espandi tre categorie di oggetti da mettere in valigia, seleziona i materiali e prepara una nota locale nel pannello a scomparsa nativo.

Guida pratica per preparare i bagagli per un workshopApri l’esempio completo
Classi Accordion e Drawer di Flowbite 4.0.2, tema predefinito e Tailwind CSS 4.3.3. · Riferimento per l’implementazione
02

Riferimento di progettazione del sistema di progettazione sistema di design Flowbite

Tema predefinito di Flowbite 4.0.2 con Tailwind CSS 4.3.3. Gli alias con nome riportati di seguito sono variabili effettive del tema Flowbite; le scale a cui fanno riferimento provengono da Tailwind. L’illustrazione per preparare i bagagli e le scelte di spaziatura dell’applicazione sono originali.

Ruoli semantici predefiniti per testo e stati

Fonte
Nome / regolaValore / configurazioneUtilizzo
--color-bodyvar(--color-gray-600)Testo esplicativo normale.
--color-body-subtlevar(--color-gray-500)Descrizioni di supporto.
--color-headingvar(--color-gray-900)Titoli ed etichette con forte risalto.
--color-fg-brandvar(--color-blue-700)Primo piano nel colore del brand.
--color-fg-successvar(--color-emerald-700)Primo piano per lo stato di successo.
--color-fg-dangervar(--color-rose-700)Primo piano per lo stato di errore.
--color-fg-warningvar(--color-orange-900)Primo piano per lo stato di avviso.
--color-fg-disabledvar(--color-gray-400)Primo piano per lo stato disabilitato.

Superfici e bordi predefiniti

Fonte
Nome / regolaValore / configurazioneUtilizzo
--color-neutral-primaryvar(--color-white)Superficie di schede e pannello a scomparsa.
--color-neutral-secondaryvar(--color-gray-50)Sfondo della pagina.
--color-neutral-tertiaryvar(--color-gray-100)Traccia di avanzamento.
--color-brandvar(--color-blue-700)Azione principale e avanzamento degli oggetti preparati.
--color-brand-softvar(--color-blue-100)Anello di focus o superficie delicata del brand.
--color-brand-softervar(--color-blue-50)Superficie della fisarmonica aperta e dell’illustrazione.
--color-brand-strongvar(--color-blue-800)Passaggio del puntatore sull’azione.
--color-defaultvar(--color-gray-200)Bordo standard del componente.
--color-success-softvar(--color-emerald-50)Superficie del risultato locale.

Variabili predefinite di geometria e font

Fonte
Nome / regolaValore / configurazioneUtilizzo
--font-sans'Inter', 'ui-sans-serif', 'system-ui', '-apple-system', 'system-ui', 'Segoe UI', 'Roboto', 'Helvetica Neue', 'Arial', 'Noto Sans', 'sans-serif', 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'Stack UI con Inter come prima scelta; l’anteprima usa il fallback di sistema disponibile, senza font remoto.
--font-mono'ui-monospace', 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New', 'monospace'Stack per il codice.
--radius-xxs2pxRaggio di due pixel.
--radius-xs4pxRaggio di quattro pixel.
--radius-sm6pxRaggio di sei pixel.
--radius8pxRaggio di otto pixel.
--radius-base12pxRaggio di dodici pixel del pannello, utilizzato da rounded-base.
--radius-lg16pxRaggio di sedici pixel.
--default-border-width1pxBordi di un pixel.
--leading-520pxInterlinea di venti pixel.
--leading-624pxInterlinea di ventiquattro pixel.

Valori di layout Tailwind utilizzati nell’esempio

Fonte
Nome / regolaValore / configurazioneUtilizzo
p-6 / md:p-101.5rem / 2.5remSpaziatura interna della pagina basata sull’unità predefinita di Tailwind pari a un quarto di rem.
gap-82remSpazio tra le categorie di oggetti da preparare e il riepilogo dell’avanzamento.
md breakpoint48remPassaggio a due colonne.
text-sm / text-xl / text-3xl0.875rem / 1.25rem / 1.875remUtilità per il corpo del testo, il titolo di sezione e il titolo della pagina.
w-96 / max-w-full24rem / 100%La larghezza del pannello a scomparsa resta entro i limiti della viewport mobile.
03

Guida completa al sistema di progettazione sistema di design Flowbite

Una guida pratica per scegliere, applicare e valutare questo sistema in un’interfaccia reale.

DESIGN-flowbite.md

Indicazioni complete, un punto di partenza per l’implementazione e link alle fonti.

Scarica la guida

Sistema di design Flowbite Four aggiunge un tema predefinito con nome al sistema di progettazione

Flowbite Four aggiunge un tema predefinito con nome

Questo esempio usa Flowbite 4.0.2, non una raccolta senza versione di vecchi frammenti blu e grigi. Il tema predefinito definisce alias semantici come color-body, color-heading, color-brand e color-neutral-primary. La pagina importa il tema prima di applicare il plugin Tailwind di Flowbite, quindi usa classi corrispondenti come text-heading e bg-brand.

Da questa guida su OpenDesign

Gli alias rimandano alle scale cromatiche di Tailwind. Per esempio, l’azione del brand standard fa riferimento a blue-700, mentre il ruolo di hover più marcato fa riferimento a blue-800. La specifica mantiene questi riferimenti, così chi legge può distinguere il ruolo semantico da un valore cromatico primitivo. L’illustrazione per preparare i bagagli riutilizza gli stessi ruoli del brand senza diventare un’illustrazione ufficiale di Flowbite.

Leggi la specifica di supporto

Geometria del tema e layout Tailwind lavorano insieme nel sistema di progettazione sistema di design Flowbite

Geometria del tema e layout Tailwind lavorano insieme

Il tema predefinito imposta radius-base a dodici pixel, valore utilizzato da rounded-base nei contenitori principali, nei controlli del pannello a scomparsa e nell’avviso del risultato. Definisce anche raggi distinti di due, quattro, sei, otto e sedici pixel. Importare il tema è quindi importante quando un componente copiato utilizza i più recenti nomi di classi semantiche.

Inter è il primo font nello stack fornito, ma questa anteprima autonoma non scarica font remoti. Usa il fallback di sistema disponibile. La spaziatura della pagina segue le utilità Tailwind: p-6 equivale a un rem e mezzo, gap-8 a due rem e p-10 per desktop a due rem e mezzo. Queste utilità di layout non vengono presentate come una scala di spaziatura separata e inventata di Flowbite.

Leggi la specifica di supporto

Una singola istanza di fisarmonica gestisce tre categorie nel sistema di progettazione sistema di design Flowbite

Una singola istanza di fisarmonica gestisce tre categorie

JavaScript crea una Accordion con un array di elementi. Ogni elemento ha un ID stabile, un elemento trigger e un pannello di destinazione; la categoria Carta è attiva all’avvio. alwaysOpen è false, quindi aprendo Attrezzi si chiude Carta. activeClasses e inactiveClasses personalizzate usano i nomi semantici di primo piano e superficie del tema predefinito.

La classe controlla la visibilità del pannello e aggiorna aria-expanded sul trigger. Il markup fornisce aria-controls e ID corrispondenti per i pannelli. Gli input della lista di controllo restano nel documento quando un pannello viene chiuso, quindi il loro stato selezionato viene mantenuto passando da una categoria all’altra. Chiudere una sezione ne modifica la visibilità, ma non azzera il lavoro svolto dall’utente per preparare i bagagli.

Leggi la specifica di supporto

L’avanzamento deriva dalle caselle di controllo effettive nel sistema di progettazione sistema di design Flowbite

L’avanzamento deriva dalle caselle di controllo effettive

Sei caselle di controllo effettive rappresentano materiali specifici per il workshop. L’applicazione ricava il numero di oggetti preparati, il prossimo elemento e il testo sugli elementi rimanenti in base allo stato corrente delle caselle. La larghezza della barra di avanzamento e aria-valuenow si aggiornano in base allo stesso conteggio; non esiste un contatore separato che possa divergere dalla lista.

I fogli da disegno e la carta da ricalco sono opzioni separate perché richiedono preparazioni diverse. Il tappetino da taglio è indicato come postazione condivisa e il nastro a bassa adesività include un’avvertenza per le superfici murali. Questi dettagli concreti rendono utile la categoria espansa: la fisarmonica non si limita a nascondere paragrafi generici ripetitivi.

  1. Apri Carta e seleziona Fogli da disegno come preparati.
  2. Apri Attrezzi, seleziona Matite e pennarelli come preparati, quindi torna a Carta.
  3. Verifica che entrambe le opzioni restino selezionate e che il riepilogo indichi due elementi su sei.

Leggi la specifica di supporto

Un’istanza di pannello a scomparsa gestisce visibilità e sfondo nel sistema di progettazione sistema di design Flowbite

Un’istanza di pannello a scomparsa gestisce visibilità e sfondo

Il pannello dei materiali viene inizializzato con new Drawer e le opzioni placement right, backdrop true e bodyScrolling false. L’apertura del pannello chiama show; Chiudi chiama hide. L’implementazione nativa di Flowbite applica le classi di posizionamento e transizione, lo sfondo e gli attributi di visibilità. Questa pagina usa deliberatamente JavaScript API, senza combinarlo con un secondo inizializzatore basato su attributi data per lo stesso pannello.

La larghezza del pannello a scomparsa è di ventiquattro rem e max-w-full ne consente l’uso anche in una viewport stretta. Il contenuto può scorrere verticalmente all’interno del pannello. L’altezza della pagina è determinata dal contenuto; h-screen del pannello a scomparsa crea intenzionalmente un overlay fisso e non genera un ciclo di altezza minima per la pagina incorporata.

Leggi la specifica di supporto

Gestisci il focus durante il ciclo di vita del pannello a scomparsa nel sistema di progettazione sistema di design Flowbite

Gestisci il focus durante il ciclo di vita del pannello a scomparsa

La callback onShow rende inerte l’elemento main sullo sfondo e porta il focus sull’input Preparato da. onHide rimuove inert e riporta il focus su Prepara la nota sui materiali. Un piccolo gestore keydown fa circolare Tab e Shift+Tab tra il primo e l’ultimo controllo del pannello. Queste aggiunte sono visibili nel sorgente completo: non si presume che siano fornite da una classe di stile.

Flowbite gestisce Escape per il pannello a scomparsa. Le callback dell’esempio assicurano che, qualunque sia il percorso di chiusura, lo sfondo torni interattivo. Il pannello è etichettato con aria-labelledby; il controllo di chiusura ha un nome accessibile esplicito. In un’applicazione reale, questo comportamento va verificato insieme ai propri portali e al routing: il nome di una libreria non garantisce da solo l’accessibilità.

Leggi la specifica di supporto

Convalida il proprietario e salva solo testo locale nel sistema di progettazione sistema di design Flowbite

Convalida il proprietario e salva solo testo locale

Il campo Preparato da è obbligatorio e ha limiti di lunghezza minima e massima. Il gestore dell’invio rimuove inoltre gli spazi iniziali e finali dal nome e rifiuta gli input composti solo da spazi. La nota della sessione è facoltativa e limitata a 240 caratteri. Il riepilogo degli elementi rimanenti viene aggiornato all’apertura del pannello a scomparsa, così descrive la lista di controllo corrente e non uno stato precedente della preparazione.

Il salvataggio chiude il pannello a scomparsa e annuncia una nota locale che include il responsabile, il numero di oggetti preparati e il testo facoltativo. Non viene inviata alcuna e-mail né creato un documento condiviso. Le stringhe inserite dall’utente vengono assegnate con textContent. Quando si modifica la lista di controllo, il vecchio avviso del risultato viene cancellato, perché il conteggio precedente sarebbe altrimenti fuorviante.

Leggi la specifica di supporto

Includi le classi generate dalla libreria JavaScript nel sistema di progettazione sistema di design Flowbite

Includi le classi generate dalla libreria JavaScript

L’input di Tailwind importa il tema predefinito di Flowbite e registra flowbite/plugin. Le direttive source esplicite includono HTML, il modulo dell’applicazione e la libreria ESM di Flowbite. Quest’ultima sorgente è importante: le classi aggiunte a runtime dalla libreria devono essere presenti nel foglio di stile generato anche quando non sono state scritte direttamente nell’HTML iniziale.

Il bundle importa Accordion e Drawer da flowbite. L'esempio fornito inizializza ciascuna istanza una sola volta, dopo che il relativo markup è presente. Le applicazioni basate su framework che montano e smontano le viste dovrebbero affiancare alla configurazione del ciclo di vita la pulizia delle istanze, per evitare listener duplicati. La pagina locale prevede un solo montaggio e nessuna transizione lato client tra le route.

Leggi la specifica di supporto

Sistema di design Flowbite: sistema di progettazione, un kit per prepararsi con limiti di implementazione ben definiti

Uno strumento per preparare i bagagli, con limiti di implementazione ben definiti

La guida pratica mostra un accordion ricco di contenuti, uno stato persistente per le caselle di controllo e un flusso di lavoro con overlay. Non include dati di magazzino inventati né risultati di approvvigionamento remoti. Tutti e sei i materiali sono attività di preparazione esemplificative per un laboratorio; la nota salvata resta in memoria per tutta la durata della pagina.

Il tema semantico predefinito, le classi dei componenti e il comportamento di JavaScript provengono da Flowbite; i contenuti del laboratorio, l'illustrazione originale e il miglioramento della gestione dello stato attivo sono codice dell'applicazione. Questa separazione consente di riutilizzare una composizione utile, chiarendo quali responsabilità sono effettivamente coperte dalla libreria.

  • Usa l'istanza con stato di Flowbite per controllare la visibilità del pannello.
  • Gestisci i dati della checklist e i progressi calcolati nella logica dell'applicazione.
  • Gestisci gli acquisti reali o la persistenza condivisa solo tramite un'integrazione backend esplicita.

Leggi la specifica di supporto

Esempi di componenti del sistema di progettazione sistema di design Flowbite

Markup della guida per preparare il kit e del drawer

Classi del tema semantico, controlli checkbox nativi e pannelli accordion collegati.

html
<main id="page" class="mx-auto max-w-5xl p-6 md:p-10 text-body"><header class="mb-8 flex flex-wrap items-start justify-between gap-4"><div><p class="text-xs font-semibold tracking-widest text-fg-brand">FLOWBITE · FIELD GUIDE</p><h1 class="mt-3 text-3xl font-semibold tracking-tight text-heading">Pack for a day of making.</h1><p class="mt-3 max-w-xl text-sm leading-6">A workshop packing guide with grouped instructions and a local materials note.</p></div><button id="open-note" class="rounded-base bg-brand px-5 py-3 text-sm font-medium text-white hover:bg-brand-strong focus:ring-4 focus:ring-brand-soft">Prepare materials note</button></header><div class="grid gap-8 md:grid-cols-[1.4fr_1fr]"><section aria-label="Packing categories"><div id="packing-accordion" class="overflow-hidden rounded-base border border-default"><h2><button id="paper-trigger" type="button" class="category-trigger" aria-expanded="true" aria-controls="paper-panel"><span><b>01</b> Paper & surfaces</span><span aria-hidden="true">⌄</span></button></h2><div id="paper-panel" aria-labelledby="paper-trigger"><div class="category-body"><p>Choose stocks before the session. Keep one sheet untouched as a reference.</p><label><input type="checkbox" data-item="Drawing sheets" class="check"> <span><strong>Drawing sheets</strong><small>12 × A3 sheets, 120–160 gsm</small></span></label><label><input type="checkbox" data-item="Tracing paper" class="check"> <span><strong>Tracing paper</strong><small>6 sheets for overlays and revisions</small></span></label></div></div><h2><button id="tools-trigger" type="button" class="category-trigger" aria-expanded="false" aria-controls="tools-panel"><span><b>02</b> Tools & marks</span><span aria-hidden="true">⌄</span></button></h2><div id="tools-panel" class="hidden" aria-labelledby="tools-trigger"><div class="category-body"><p>Test every marker. Put cutting tools in a separate protective sleeve.</p><label><input type="checkbox" data-item="Pencils and markers" class="check"> <span><strong>Pencils and markers</strong><small>2B pencils, one broad and one fine marker</small></span></label><label><input type="checkbox" data-item="Ruler and cutting mat" class="check"> <span><strong>Ruler and cutting mat</strong><small>One shared station per four people</small></span></label></div></div><h2><button id="space-trigger" type="button" class="category-trigger" aria-expanded="false" aria-controls="space-panel"><span><b>03</b> Shared space</span><span aria-hidden="true">⌄</span></button></h2><div id="space-panel" class="hidden" aria-labelledby="space-trigger"><div class="category-body"><p>Make wall space usable and document ideas before taking them down.</p><label><input type="checkbox" data-item="Low-tack tape" class="check"> <span><strong>Low-tack tape</strong><small>Test on a hidden part of the wall first</small></span></label><label><input type="checkbox" data-item="Documentation cards" class="check"> <span><strong>Documentation cards</strong><small>One title and author card per final piece</small></span></label></div></div></div></section><aside class="rounded-base border border-default bg-neutral-primary p-6"><div class="kit-art" aria-hidden="true"><i></i><i></i><i></i><em class="bg-brand-medium"></em></div><p class="mt-5 text-xs tracking-widest text-fg-brand font-semibold">WORKSHOP KIT</p><h2 class="mt-2 text-xl font-semibold text-heading">Six things, one shared table.</h2><p class="mt-3 text-sm leading-6">Check items as you pack. Opening another category keeps your choices.</p><div class="mt-6 flex items-center justify-between text-sm"><span>Packed</span><output id="count" class="font-semibold text-heading">0 of 6</output></div><div class="mt-2 h-2 rounded-full bg-neutral-tertiary" role="progressbar" aria-label="Packing progress" aria-valuemin="0" aria-valuemax="6" aria-valuenow="0"><div id="bar" class="h-2 rounded-full bg-brand" style="width:0%"></div></div><p id="next-item" class="mt-4 text-sm text-body-subtle">Next: Drawing sheets</p><button id="clear" class="mt-5 text-sm font-medium text-fg-brand underline underline-offset-4">Clear packed items</button></aside></div><p id="result" class="mt-6 rounded-base bg-success-soft p-4 text-sm text-fg-success" role="status" hidden></p></main><aside id="materials-drawer" tabindex="-1" aria-labelledby="drawer-title" class="fixed right-0 top-0 z-40 h-screen w-96 max-w-full translate-x-full overflow-y-auto border-l border-default bg-neutral-primary p-6"><div class="flex items-center justify-between gap-4"><h2 id="drawer-title" class="text-xl font-semibold text-heading">Materials note</h2><button id="close-note" class="rounded-base border border-default px-3 py-2 text-sm" aria-label="Close materials note">Close</button></div><p class="mt-4 text-sm leading-6 text-body">Record who is preparing the kit and which items still need attention.</p><form id="note-form" class="mt-6"><label for="owner" class="mb-2 block text-sm font-medium text-heading">Prepared by</label><input id="owner" class="mb-5 block w-full rounded-base border border-default bg-neutral-secondary p-3 text-sm text-heading focus:border-brand focus:ring-brand" required minlength="2" maxlength="60" placeholder="Your name"><label for="note" class="mb-2 block text-sm font-medium text-heading">Session note</label><textarea id="note" rows="4" maxlength="240" class="block w-full rounded-base border border-default bg-neutral-secondary p-3 text-sm text-heading focus:border-brand focus:ring-brand" placeholder="For example: bring the shared cutting mat."></textarea><p id="remaining" class="mt-5 text-sm leading-6 text-body"></p><button type="submit" class="mt-6 w-full rounded-base bg-brand px-5 py-3 text-sm font-medium text-white hover:bg-brand-strong">Save local note</button><p class="mt-3 text-xs leading-5 text-body-subtle">No email, purchase or shared document is created.</p></form></aside>

Riferimento del codice

  • I pulsanti sono collegati agli ID dei pannelli tramite aria-controls.
  • Il drawer è etichettato tramite la relativa intestazione.
  • La progressbar espone lo stesso conteggio mostrato agli utenti vedenti.

Istanze native di Flowbite e stato locale

Inizializzazione di Accordion/Drawer, checklist specifica dell'applicazione e gestione dello stato attivo.

javascript
import {Accordion,Drawer} from 'flowbite';
const q=s=>document.querySelector(s),drawerEl=q('#materials-drawer'),page=q('#page');
const accordion=new Accordion(q('#packing-accordion'),['paper','tools','space'].map((id,i)=>({id,triggerEl:q(`#${id}-trigger`),targetEl:q(`#${id}-panel`),active:i===0})),{alwaysOpen:false,activeClasses:'bg-brand-softer text-fg-brand',inactiveClasses:'bg-neutral-primary text-heading'});
const drawer=new Drawer(drawerEl,{placement:'right',backdrop:true,bodyScrolling:false,onShow(){page.inert=true;q('#owner').focus();},onHide(){page.inert=false;q('#open-note').focus();}});
const boxes=[...document.querySelectorAll('[data-item]')];
function refresh(){let packed=boxes.filter(x=>x.checked),left=boxes.filter(x=>!x.checked);q('#count').value=`${packed.length} of 6`;q('#bar').style.width=`${packed.length/6*100}%`;q('[role="progressbar"]').setAttribute('aria-valuenow',packed.length);q('#next-item').textContent=left.length?`Next: ${left[0].dataset.item}`:'Everything on the list is packed.';q('#remaining').textContent=left.length?`Still needed: ${left.map(x=>x.dataset.item).join(', ')}.`:'All six materials are packed.';q('#result').hidden=true;}
boxes.forEach(x=>x.addEventListener('change',refresh));q('#clear').onclick=()=>{boxes.forEach(x=>x.checked=false);refresh();};q('#open-note').onclick=()=>{refresh();drawer.show();};q('#close-note').onclick=()=>drawer.hide();drawerEl.addEventListener('keydown',e=>{if(e.key==='Tab'){let els=[...drawerEl.querySelectorAll('button,input,textarea')],first=els[0],last=els.at(-1);if(e.shiftKey&&document.activeElement===first){e.preventDefault();last.focus();}else if(!e.shiftKey&&document.activeElement===last){e.preventDefault();first.focus();}}});q('#note-form').onsubmit=e=>{e.preventDefault();const owner=q('#owner');if(owner.value.trim().length<2){owner.setCustomValidity('Enter at least two non-space characters.');owner.reportValidity();return;}drawer.hide();q('#result').hidden=false;q('#result').textContent=`Local note prepared by ${owner.value.trim()}: ${boxes.filter(x=>x.checked).length} of 6 items packed. ${q('#note').value.trim()||'No extra note.'}`;};q('#owner').oninput=()=>q('#owner').setCustomValidity('');refresh();

Riferimento del codice

  • Un'unica istanza di Accordion controlla tutte e tre le categorie.
  • I callback del ciclo di vita del drawer rendono inerte lo sfondo e ripristinano lo stato attivo.
  • Il ciclo di gestione dello stato attivo è un'aggiunta esplicita dell'applicazione.

Illustrazione originale per preparare il kit e CSS di supporto

Dettagli del layout dell'applicazione che affiancano le utility native.

css
body{margin:0;background:var(--color-neutral-secondary);font-family:var(--font-sans)}.category-trigger{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px;width:100%;text-align:left;font-size:15px;font-weight:600;border-bottom:1px solid var(--color-default)}.category-trigger b{font-size:11px;opacity:.6;margin-right:12px}.category-trigger:focus-visible{outline:3px solid var(--color-brand);outline-offset:-3px}.category-body{padding:20px;background:var(--color-neutral-primary);font-size:14px;line-height:1.7;border-bottom:1px solid var(--color-default)}.category-body p{margin-bottom:20px}.category-body label{display:flex;align-items:flex-start;gap:12px;margin:16px 0;cursor:pointer}.category-body small{display:block;font-size:12px;color:var(--color-body-subtle);margin-top:4px}.check{width:18px;height:18px;border:1px solid var(--color-default);border-radius:4px;margin-top:3px;color:var(--color-brand)}.kit-art{height:160px;background:var(--color-brand-softer);border-radius:var(--radius-base);position:relative;overflow:hidden}.kit-art i{position:absolute;width:110px;height:95px;background:#fff;border:1px solid var(--color-brand-medium);top:35px;left:20%;transform:rotate(-12deg)}.kit-art i:nth-child(2){left:35%;transform:rotate(10deg);background:var(--color-brand-soft)}.kit-art i:nth-child(3){width:8px;height:120px;left:70%;top:20px;transform:rotate(25deg);background:var(--color-brand)}.kit-art em{position:absolute;width:95px;height:22px;background:var(--color-brand-medium);bottom:20px;left:20%;transform:rotate(-20deg)}[hidden]{display:none!important}button{cursor:pointer}button:focus-visible{outline:3px solid var(--color-brand);outline-offset:3px}@media(max-width:600px){.category-trigger,.category-body{padding:16px}}

Riferimento del codice

  • La geometria di carta, matita e righello è un elemento decorativo originale CSS.

Documento index.html completo

Da usare con la build del foglio di stile e il codice completo per le interazioni forniti sopra.

html
<!doctype html>
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Flowbite specimen</title><link rel="stylesheet" href="output.css"><link rel="stylesheet" href="style.css"></head><body>
<main id="page" class="mx-auto max-w-5xl p-6 md:p-10 text-body"><header class="mb-8 flex flex-wrap items-start justify-between gap-4"><div><p class="text-xs font-semibold tracking-widest text-fg-brand">FLOWBITE · FIELD GUIDE</p><h1 class="mt-3 text-3xl font-semibold tracking-tight text-heading">Pack for a day of making.</h1><p class="mt-3 max-w-xl text-sm leading-6">A workshop packing guide with grouped instructions and a local materials note.</p></div><button id="open-note" class="rounded-base bg-brand px-5 py-3 text-sm font-medium text-white hover:bg-brand-strong focus:ring-4 focus:ring-brand-soft">Prepare materials note</button></header><div class="grid gap-8 md:grid-cols-[1.4fr_1fr]"><section aria-label="Packing categories"><div id="packing-accordion" class="overflow-hidden rounded-base border border-default"><h2><button id="paper-trigger" type="button" class="category-trigger" aria-expanded="true" aria-controls="paper-panel"><span><b>01</b> Paper & surfaces</span><span aria-hidden="true">⌄</span></button></h2><div id="paper-panel" aria-labelledby="paper-trigger"><div class="category-body"><p>Choose stocks before the session. Keep one sheet untouched as a reference.</p><label><input type="checkbox" data-item="Drawing sheets" class="check"> <span><strong>Drawing sheets</strong><small>12 × A3 sheets, 120–160 gsm</small></span></label><label><input type="checkbox" data-item="Tracing paper" class="check"> <span><strong>Tracing paper</strong><small>6 sheets for overlays and revisions</small></span></label></div></div><h2><button id="tools-trigger" type="button" class="category-trigger" aria-expanded="false" aria-controls="tools-panel"><span><b>02</b> Tools & marks</span><span aria-hidden="true">⌄</span></button></h2><div id="tools-panel" class="hidden" aria-labelledby="tools-trigger"><div class="category-body"><p>Test every marker. Put cutting tools in a separate protective sleeve.</p><label><input type="checkbox" data-item="Pencils and markers" class="check"> <span><strong>Pencils and markers</strong><small>2B pencils, one broad and one fine marker</small></span></label><label><input type="checkbox" data-item="Ruler and cutting mat" class="check"> <span><strong>Ruler and cutting mat</strong><small>One shared station per four people</small></span></label></div></div><h2><button id="space-trigger" type="button" class="category-trigger" aria-expanded="false" aria-controls="space-panel"><span><b>03</b> Shared space</span><span aria-hidden="true">⌄</span></button></h2><div id="space-panel" class="hidden" aria-labelledby="space-trigger"><div class="category-body"><p>Make wall space usable and document ideas before taking them down.</p><label><input type="checkbox" data-item="Low-tack tape" class="check"> <span><strong>Low-tack tape</strong><small>Test on a hidden part of the wall first</small></span></label><label><input type="checkbox" data-item="Documentation cards" class="check"> <span><strong>Documentation cards</strong><small>One title and author card per final piece</small></span></label></div></div></div></section><aside class="rounded-base border border-default bg-neutral-primary p-6"><div class="kit-art" aria-hidden="true"><i></i><i></i><i></i><em class="bg-brand-medium"></em></div><p class="mt-5 text-xs tracking-widest text-fg-brand font-semibold">WORKSHOP KIT</p><h2 class="mt-2 text-xl font-semibold text-heading">Six things, one shared table.</h2><p class="mt-3 text-sm leading-6">Check items as you pack. Opening another category keeps your choices.</p><div class="mt-6 flex items-center justify-between text-sm"><span>Packed</span><output id="count" class="font-semibold text-heading">0 of 6</output></div><div class="mt-2 h-2 rounded-full bg-neutral-tertiary" role="progressbar" aria-label="Packing progress" aria-valuemin="0" aria-valuemax="6" aria-valuenow="0"><div id="bar" class="h-2 rounded-full bg-brand" style="width:0%"></div></div><p id="next-item" class="mt-4 text-sm text-body-subtle">Next: Drawing sheets</p><button id="clear" class="mt-5 text-sm font-medium text-fg-brand underline underline-offset-4">Clear packed items</button></aside></div><p id="result" class="mt-6 rounded-base bg-success-soft p-4 text-sm text-fg-success" role="status" hidden></p></main><aside id="materials-drawer" tabindex="-1" aria-labelledby="drawer-title" class="fixed right-0 top-0 z-40 h-screen w-96 max-w-full translate-x-full overflow-y-auto border-l border-default bg-neutral-primary p-6"><div class="flex items-center justify-between gap-4"><h2 id="drawer-title" class="text-xl font-semibold text-heading">Materials note</h2><button id="close-note" class="rounded-base border border-default px-3 py-2 text-sm" aria-label="Close materials note">Close</button></div><p class="mt-4 text-sm leading-6 text-body">Record who is preparing the kit and which items still need attention.</p><form id="note-form" class="mt-6"><label for="owner" class="mb-2 block text-sm font-medium text-heading">Prepared by</label><input id="owner" class="mb-5 block w-full rounded-base border border-default bg-neutral-secondary p-3 text-sm text-heading focus:border-brand focus:ring-brand" required minlength="2" maxlength="60" placeholder="Your name"><label for="note" class="mb-2 block text-sm font-medium text-heading">Session note</label><textarea id="note" rows="4" maxlength="240" class="block w-full rounded-base border border-default bg-neutral-secondary p-3 text-sm text-heading focus:border-brand focus:ring-brand" placeholder="For example: bring the shared cutting mat."></textarea><p id="remaining" class="mt-5 text-sm leading-6 text-body"></p><button type="submit" class="mt-6 w-full rounded-base bg-brand px-5 py-3 text-sm font-medium text-white hover:bg-brand-strong">Save local note</button><p class="mt-3 text-xs leading-5 text-body-subtle">No email, purchase or shared document is created.</p></form></aside>

<script src="bundle.js" defer></script></body></html>

Riferimento del codice

  • Salva l'interazione fornita come main.js e compilala in bundle.js, come mostrato nella configurazione.
  • Sono inclusi il viewport e il caricamento nativo delle risorse.
04

Configurazione dell'agente AI per il sistema di progettazione sistema di design Flowbite

Punto di partenza per l’implementazione

Verificato con Flowbite 4.0.2 e Tailwind CSS 4.3.3. Adatta il percorso sorgente node_modules alla posizione effettiva di input.css. Non sono necessari font remoti.

css
/* npm install [email protected] */
/* npm install -D [email protected] @tailwindcss/[email protected] esbuild */
/* input.css, next to body.html and main.js: */
@import "tailwindcss" source(none);
@import "flowbite/src/themes/default";
@plugin "flowbite/plugin";
@source "./body.html";
@source "./main.js";
@source "./node_modules/flowbite/lib/esm";
/* npx @tailwindcss/cli -i input.css -o output.css --minify */
/* npx esbuild main.js --bundle --format=iife --outfile=bundle.js */
/* index.html: link output.css then style.css; include the supplied markup. */
/* Load bundle.js with defer, or after the markup. */

Un prompt per il tuo progetto

Prompt per l’agente
Usa la guida completa per preparare il kit del laboratorio, realizzata con Flowbite 4.0.2, inclusi il rilevamento delle sorgenti Tailwind e l'inizializzazione nativa di Accordion e Drawer. Collega i materiali raggruppati e lo stato della checklist alla guida e verifica i dati del responsabile prima di registrare una nota locale per il kit. Mantieni la gestione dello stato attivo da tastiera del drawer, l'inattivazione dello sfondo e il comportamento di chiusura. Tieni l'illustrazione originale CSS separata dal tema semantico della libreria. Non aggiungere ticket di assistenza né invii esterni a questo flusso di lavoro locale per preparare il kit.
05

Fonti e ambito del sistema di progettazione sistema di design Flowbite

Flowbite 4.0.2 con il tema predefinito. I contenuti per preparare il kit, le illustrazioni decorative e il miglioramento della gestione dello stato attivo sono originali. Le note sui materiali restano locali.