Sistema di componenti con tema · Nuova risorsa

Sistema di progettazione Nuxt UI.

Crea un compositore di brief completo con Nuxt UI 4.11.3, usando componenti Vue reali, riferimenti semantici ai temi, convalida degli input e un comportamento esplicito per le bozze locali.

Guida OpenDesign8 capitoli37 voci di riferimentoGuida applicativa originale
01

Sistema di design Nuxt UI Anteprima dell’interfaccia del sistema di progettazione

Modifica gli input di esempio completi, scegli una checklist e controlla la convalida e il ripristino.

Componi una scheda di progetto locale e leggibileApri l’esempio completo
Nuxt UI componenti Vue 4.11.3 nativi e plugin ufficiali Vite/Vue; stato locale originale. · Riferimento per l’implementazione
02

Sistema di design Nuxt UI Riferimento di progettazione del sistema

Nuxt UI valori predefiniti della versione 4.11.3, CSS semantici effettivamente compilati e contratti dei componenti Vue nativi. Le scelte originali di layout e convalida sono indicate separatamente.

Alias semantici dei colori predefiniti

Fonte
Nome / regolaValore / configurazioneUtilizzo
primarygreenAlias predefinito effettivo di Nuxt UI 4.11.3. Le proprietà dei componenti fanno riferimento a nomi semantici, mentre la palette configurata ne definisce i valori.
secondaryblueAlias predefinito effettivo di Nuxt UI 4.11.3. Le proprietà dei componenti fanno riferimento a nomi semantici, mentre la palette configurata ne definisce i valori.
successgreenAlias predefinito effettivo di Nuxt UI 4.11.3. Le proprietà dei componenti fanno riferimento a nomi semantici, mentre la palette configurata ne definisce i valori.
infoblueAlias predefinito effettivo di Nuxt UI 4.11.3. Le proprietà dei componenti fanno riferimento a nomi semantici, mentre la palette configurata ne definisce i valori.
warningyellowAlias predefinito effettivo di Nuxt UI 4.11.3. Le proprietà dei componenti fanno riferimento a nomi semantici, mentre la palette configurata ne definisce i valori.
errorredAlias predefinito effettivo di Nuxt UI 4.11.3. Le proprietà dei componenti fanno riferimento a nomi semantici, mentre la palette configurata ne definisce i valori.
neutralslateAlias predefinito effettivo di Nuxt UI 4.11.3. Le proprietà dei componenti fanno riferimento a nomi semantici, mentre la palette configurata ne definisce i valori.

Ruoli del testo chiaro

Fonte
Nome / regolaValore / configurazioneUtilizzo
--ui-text-dimmedvar(--ui-color-neutral-400)Testo supplementare con il livello di enfasi più basso. Non usare questo ruolo per le etichette dei campi obbligatori o i messaggi di convalida.
--ui-text-mutedvar(--ui-color-neutral-500)Descrizioni di supporto, come i suggerimenti dei campi e il paragrafo introduttivo dell’anteprima originale.
--ui-text-tonedvar(--ui-color-neutral-600)Gerarchia di lettura secondaria; confrontala con il ruolo di testo normale prima di ridurre ulteriormente il contrasto.
--ui-textvar(--ui-color-neutral-700)Ruolo di testo predefinito per il flusso di lettura principale e i contenuti inseriti dall’utente.
--ui-text-highlightedvar(--ui-color-neutral-900)Titoli e dettagli in primo piano ad alta enfasi, incluso il titolo principale dell’anteprima.
--ui-text-inverted#fffColore di primo piano per una superficie scura invertita; non è una regola generale per forzare il testo bianco su ogni colore d’accento.

Superfici chiare e bordi

Fonte
Nome / regolaValore / configurazioneUtilizzo
--ui-bg#fffSfondo di base e superficie chiara della scheda usata nel composer completo.
--ui-bg-mutedvar(--ui-color-neutral-50)Superficie di supporto discreta per una sezione secondaria nell’aspetto chiaro.
--ui-bg-elevatedvar(--ui-color-neutral-100)Maggiore contrasto rispetto allo sfondo bianco per superfici secondarie rialzate o in evidenza.
--ui-bg-accentedvar(--ui-color-neutral-200)Sfondo neutro più marcato; assicurati che i valori dei campi restino leggibili su di esso.
--ui-bg-invertedvar(--ui-color-neutral-900)Superficie neutra scura da abbinare al ruolo di primo piano invertito.
--ui-bordervar(--ui-color-neutral-200)Linea divisoria neutra predefinita per i campi e i contorni delle schede.
--ui-border-mutedvar(--ui-color-neutral-200)Separatori poco evidenti tra blocchi correlati, anziché netti confini di sezione.
--ui-border-accentedvar(--ui-color-neutral-300)Contorno neutro più marcato quando il bordo predefinito non crea sufficiente separazione.
--ui-border-invertedvar(--ui-color-neutral-900)Ruolo del bordo per le superfici invertite; abbinalo allo sfondo previsto.

Geometria condivisa e tipografia Tailwind

Fonte
Nome / regolaValore / configurazioneUtilizzo
--ui-radius.25remValori predefiniti pubblicati di Nuxt UI o Tailwind nell’output effettivamente compilato. Il layout originale usa una larghezza massima di 1100px e una spaziatura di 24px.
--ui-container80remValori predefiniti pubblicati di Nuxt UI o Tailwind nell’output effettivamente compilato. Il layout originale usa una larghezza massima di 1100px e una spaziatura di 24px.
--spacing.25remValori predefiniti pubblicati di Nuxt UI o Tailwind nell’output effettivamente compilato. Il layout originale usa una larghezza massima di 1100px e una spaziatura di 24px.
--text-sm.875remValori predefiniti pubblicati di Nuxt UI o Tailwind nell’output effettivamente compilato. Il layout originale usa una larghezza massima di 1100px e una spaziatura di 24px.
--text-xl1.25remValori predefiniti pubblicati di Nuxt UI o Tailwind nell’output effettivamente compilato. Il layout originale usa una larghezza massima di 1100px e una spaziatura di 24px.
--text-4xl2.25remValori predefiniti pubblicati di Nuxt UI o Tailwind nell’output effettivamente compilato. Il layout originale usa una larghezza massima di 1100px e una spaziatura di 24px.

Contratti dei componenti Vue

Fonte
Nome / regolaValore / configurazioneUtilizzo
Vite pluginui({ colorMode: false })Genera gli import dei componenti e del tema e l’integrazione necessaria per il browser.
Vue plugincreateApp(App).use(ui)Importa ui da @nuxt/ui/vue-plugin; un import diretto del componente, da solo, non completa la configurazione standalone.
UAppApplication wrapperFornisce il contesto app nativo per l’albero dei componenti.
UFormFieldlabel, description, nameCollega il contesto del campo e il testo di supporto leggibile al controllo.
UInput / UTextareav-modelEntrambi gli input sono gestiti da ref di Vue; la textarea usa anche autoresize e rows.
USwitchv-model + labelLa scelta facoltativa della checklist è un vero stato booleano.
UButton@click / color / variantLa composizione principale e l’azione di ripristino con contorno neutro usano le varianti native.
UCardheader slot + default bodyMantiene il contenuto dei campi e il risultato leggibile su superfici native coerenti.
UBadgecolor + variant="subtle"Testo e aspetto distinguono lo stato di attesa da un risultato composto localmente.
03

Sistema di design Nuxt UI Guida completa al sistema di progettazione

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

DESIGN-nuxt-ui.md

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

Scarica la guida

Sistema di design Nuxt UI Runtime Vue standalone per il sistema di progettazione

Usa il percorso ufficiale di integrazione Vue

Questo esempio esegue @nuxt/ui 4.11.3 con Vue 3 e Vite. Non è un’applicazione Nuxt renderizzata lato server. Il plugin Vite risolve i template UI generati, l’import automatico dei componenti e gli alias del framework; il plugin Vue registra l’integrazione runtime necessaria. L’esempio completo include entrambi, evitando una configurazione fuorviante che installa un pacchetto ma lascia irrisolti #build o #imports.

Da questa guida su OpenDesign
  • @nuxt/ui/vite fornisce l’integrazione in fase di build.
  • @nuxt/ui/vue-plugin fornisce la registrazione runtime.
  • UApp avvolge l’albero dei componenti nativi.

Mantieni il wrapper dell’applicazione e il foglio di stile

UApp avvolge la composizione. Il foglio di stile importa Tailwind CSS e @nuxt/ui, mentre l’entry point principale importa il foglio di stile prima di montare l’applicazione. La build genera veri componenti CSS e comportamenti, non approssimazioni statiche di schede e interruttori. Questa è una configurazione concreta per il browser, utile a esaminare la libreria; un’applicazione Nuxt dovrebbe usare la propria configurazione documentata del modulo.

Sistema di design Nuxt UI Colori semantici e varianti dei componenti del sistema di progettazione

Usa colori semantici, non un verde copiato

La configurazione predefinita associa primary e success al verde, secondary e info al blu, warning al giallo, error al rosso e neutral all’ardesia. I componenti nativi usano questi alias tramite le proprietà color. Il pulsante principale di composizione e quello di ripristino con contorno neutro rappresentano quindi ruoli d’azione distinti, senza introdurre una palette personalizzata spacciata per valore predefinito di Nuxt UI.

Specifica chiaramente l’ambito dell’aspetto

Per questo esempio con solo tema chiaro, il plugin Vite è configurato con colorMode:false. La tabella di riferimento elenca le corrispondenti dichiarazioni per testo, superfici e bordi chiari. Non afferma che gli stessi valori letterali siano usati anche nel tema scuro. Se un prodotto aggiunge la modalità colore, dovrebbe abilitare l’integrazione scelta e verificare insieme i controlli, le superfici e le preferenze salvate.

Sistema di design Nuxt UI Ruoli del testo, superfici e geometria del sistema di progettazione

Comprendi le relazioni semantiche di CSS

Il testo di supporto usa --ui-text-muted, che rimanda a neutral-500; il titolo principale usa --ui-text-highlighted, che rimanda a neutral-900. Anche le variabili per superfici e bordi fanno riferimento alla scala neutral configurata. La guida mantiene queste relazioni invece di appiattirle in pochi valori esadecimali scollegati, così una modifica alla palette neutra produce comunque un tema coerente per i componenti.

Distingui i valori predefiniti condivisi dalle scelte di pagina

In questa versione, --ui-radius condiviso vale .25rem e --ui-container vale 80rem. Il layout originale della scheda sceglie invece una larghezza esterna massima di 1100px, due colonne con una spaziatura di 24px e una sola colonna sotto i 700px. I ruoli tipografici effettivi di Tailwind determinano le dimensioni del titolo e del testo di supporto. Queste scelte di pagina sono incluse nel CSS fornito e non sono requisiti inventati per l’intera libreria.

Sistema di design Nuxt UI Composizione dei campi e convalida locale del sistema di progettazione

Fornisci a ogni input un contesto di campo effettivo

UFormField associa un’etichetta visibile e un nome a UInput o UTextarea. Il campo del contesto mostra anche il conteggio delle parole, calcolato sul contenuto senza spazi iniziali o finali. Entrambi i controlli usano v-model, così i valori visualizzati e la funzione di composizione leggono gli stessi ref. La textarea ha un numero iniziale di righe adeguato e usa autoresize: il testo più lungo può così estendersi, invece di finire tagliato in un riquadro a altezza fissa.

Convalida prima di comporre

Sistema di design Nuxt UI Bozza derivata e prevenzione degli stati obsoleti del sistema di progettazione

Componi il testo presente, senza aggiunte

L’output combina il titolo e il contesto forniti con una checklist statica facoltativa per la condivisione. Il risultato è indicato come bozza locale, non come risposta di un’AI. Non ci sono chiamate a modelli, tempi di caricamento o contenuti generati inventati. La checklist facoltativa è controllata tramite un booleano del componente nativo USwitch e il testo composto riflette direttamente la scelta.

Rimuovi i risultati obsoleti quando cambiano gli input

Un watch di Vue sui campi titolo, contesto e checklist rimuove il risultato composto precedente a ogni modifica. L’etichetta di stato torna quindi a In attesa del testo. In questo modo, una bozza obsoleta non sembra attuale mentre l’utente modifica nuovi input. Il conteggio delle parole resta un valore calcolato, perciò è sempre aggiornato rispetto al contesto corrente.

Sistema di design Nuxt UI Stati vuoti e di ripristino completi del sistema di progettazione

Rendi utile il pannello di attesa

Prima della composizione, la scheda a destra spiega nel dettaglio cosa verrà mostrato e come funzionano le modifiche, la privacy e il ripristino. Non è una sezione di contenuto vuota. Dopo la composizione, mostra la bozza completa e leggibile, mantenendo interruzioni di riga e ritorni a capo. L’etichetta ripete lo stato in forma testuale, così il colore non è l’unico indicatore.

Ripristina tutti gli input di esempio

Ripristina esempio ripristina il titolo originale, l’intero contesto e la checklist attivata, eliminando il risultato e gli eventuali errori. Non lascia una dimostrazione vuota, costringendo chi legge a indovinare quali contenuti inserire. Il controllo nel browser compone una scheda modificata e poi verifica che il ripristino restituisca il titolo completo di esempio.

Sistema di design Nuxt UI Schede responsive e flusso del testo del sistema di progettazione

Mantieni leggibile il risultato anche a larghezze ridotte

Sotto i 700px, le due schede si dispongono in un’unica colonna e tutti gli input occupano la larghezza disponibile. La bozza usa pre-wrap anziché un testo preformattato senza ritorno a capo, così i titoli e le frasi lunghi si adattano in modo naturale. I pulsanti vanno a capo all’interno del gruppo di azioni. Dopo una modifica e una composizione effettive, la pagina viene verificata a 280px e alle larghezze di telefono, tablet e desktop.

Esamina lo stato dopo le transizioni native

Lo stile dello switch include la transizione di stato nativa. Prima di acquisire il risultato, il controllo visivo attende che la transizione termini, per non scambiare il colore intermedio del cursore o della traccia per quello definitivo. I controlli funzionali verificano l’effetto booleano accertando che uno switch disattivato rimuova davvero la checklist dal testo composto.

Nuxt UI Progetto completo Vue e Vite del sistema di design

Usa tutti e cinque i file forniti

L’esempio fornisce App.vue, main.js, style.css, vite.config.mjs e index.html. La configurazione include @vitejs/plugin-vue e @nuxt/ui/vite; il punto di ingresso principale installa @nuxt/ui/vue-plugin. Installare solo @nuxt/ui e incollare App.vue non basta per ottenere un progetto completo ed eseguibile. La configurazione con versioni bloccate riproduce l’anteprima locale con i componenti nativi effettivi e gli stili semantici.

  1. Salva insieme tutti e cinque i file forniti.
  2. Installa le dipendenze con versioni bloccate.
  3. Avvia Vite in quella directory.
  4. Verifica input mancanti, output modificato, rimozione dalla checklist e ripristino.

Tieni questo studio nel browser separato dalla distribuzione

Nuxt UI Esempi di componenti del sistema di design

App.vue

Composizione completa di componenti nativi e stato reattivo.

vue
<script setup>
import{ref,computed,watch}from'vue';
const title=ref('A calmer project handoff'),context=ref('Help a small team understand what is ready, what needs a decision, and who owns the next step.'),checklist=ref(true),error=ref(''),brief=ref('');const words=computed(()=>context.value.trim()?context.value.trim().split(/\s+/).length:0);watch([title,context,checklist],()=>{brief.value='';error.value=''});function compose(){if(!title.value.trim()||!context.value.trim()){error.value='Add both a title and context before composing.';return}brief.value=title.value.trim()+'\n\nPurpose\n'+context.value.trim()+(checklist.value?'\n\nBefore sharing\n• Name the next decision.\n• Identify an owner.\n• Include the source materials.':'')+'\n\nThis is a local draft, not a generated AI response.';}function reset(){title.value='A calmer project handoff';context.value='Help a small team understand what is ready, what needs a decision, and who owns the next step.';checklist.value=true;brief.value='';error.value=''}
</script>
<template><UApp><main><p class="text-primary font-semibold text-sm">NUXT UI / ORIGINAL BRIEF COMPOSER</p><h1 class="text-4xl font-bold tracking-tight mt-4 text-highlighted">Put the next step into words.</h1><p class="text-muted mt-5 max-w-2xl leading-7">A local composition tool using Nuxt UI 4.11.3 in a standalone Vue application. The preview assembles your text; it does not call an AI model.</p><div class="layout"><UCard><template #header><h2 class="font-semibold text-xl">Write the essentials</h2></template><div class="stack"><UFormField label="Brief title" name="title"><UInput v-model="title" class="w-full" placeholder="Name the work" aria-label="Brief title"/></UFormField><UFormField label="Context" name="context" :description="words+' words in your context'"><UTextarea v-model="context" class="w-full" autoresize :rows="5" placeholder="What should the next person understand?" aria-label="Context"/></UFormField><USwitch v-model="checklist" label="Include the sharing checklist"/><p v-if="error" role="alert" class="text-error text-sm">{{error}}</p><div class="flex flex-wrap gap-3"><UButton @click="compose">Compose local brief</UButton><UButton color="neutral" variant="outline" @click="reset">Reset sample</UButton></div></div></UCard><UCard><template #header><div class="flex justify-between gap-3 flex-wrap"><h2 class="font-semibold text-xl">Readable draft</h2><UBadge :color="brief?'success':'neutral'" variant="subtle">{{brief?'Composed locally':'Waiting for your text'}}</UBadge></div></template><div v-if="brief" class="brief" role="status">{{brief}}</div><div v-else class="space-y-4 text-muted leading-7"><p>Your draft will keep the title and context you provide, with an optional sharing checklist.</p><ul class="list-disc pl-5 space-y-2"><li>Editing any input clears an older composed result.</li><li>No content leaves the browser.</li><li>Reset returns to the complete sample inputs.</li></ul></div></UCard></div><p class="notes text-muted">Actual UCard, UFormField, UInput, UTextarea, USwitch, UButton and UBadge components with Nuxt UI’s default semantic theme. Original application content and state; this example uses Vue/Vite, not a Nuxt server.</p></main></UApp></template>

Riferimento del codice

  • Tieni insieme tutti e cinque i file sorgente.

main.js

Montaggio di Vue e plugin runtime Nuxt UI.

javascript
import{createApp}from'vue';import ui from'@nuxt/ui/vue-plugin';import App from'./App.vue';import './style.css';createApp(App).use(ui).mount('#app');

Riferimento del codice

  • Tieni insieme tutti e cinque i file sorgente.

style.css

Importazioni del tema nativo e layout responsivo originale.

css
@import 'tailwindcss';
@import '@nuxt/ui';
body{margin:0}*{box-sizing:border-box}main{max-width:1100px;margin:auto;padding:32px}.layout{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:32px}.stack{display:grid;gap:24px}.brief{white-space:pre-wrap;line-height:1.7;overflow-wrap:anywhere}.notes{font-size:13px;line-height:1.6;margin-top:24px}@media(max-width:700px){main{padding:16px}.layout{grid-template-columns:1fr}}textarea{min-height:150px}button{max-width:100%}

Riferimento del codice

  • Tieni insieme tutti e cinque i file sorgente.

vite.config.mjs

Compilatore Vue e plugin di build Nuxt UI.

javascript
import{defineConfig}from'vite';import vue from'@vitejs/plugin-vue';import ui from'@nuxt/ui/vite';export default defineConfig({plugins:[vue(),ui({colorMode:false})],base:'./',build:{cssCodeSplit:false}});

Riferimento del codice

  • Tieni insieme tutti e cinque i file sorgente.

index.html

Documento radice completo per il browser.

html
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Project brief composer</title></head><body><div id="app"></div><script type="module" src="./main.js"></script></body></html>

Riferimento del codice

  • Tieni insieme tutti e cinque i file sorgente.
04

Nuxt UI Configurazione dell’agent del sistema di design

Punto di partenza per l’implementazione

Salva prima tutti e cinque i file forniti. Usa una versione di Node supportata dalle release bloccate di Vite e Nuxt UI (la build locale è stata eseguita con Node 22.17).

sh
npm init -y
npm install [email protected] [email protected] @nuxt/[email protected] [email protected] [email protected] @vitejs/[email protected]
npx vite --host 127.0.0.1

Un prompt per il tuo progetto

Prompt per l’agente
Implementa il compositore di brief autonomo completo Nuxt UI 4.11.3 con i plugin ufficiali Vite e Vue. Mantieni i colori semantici, i contesti UFormField, i riferimenti controllati a input e switch, la convalida con trim, il conteggio parole calcolato, la cancellazione dei risultati non aggiornati, tutti i contenuti di attesa e il ripristino. Non suggerire una chiamata AI né un salvataggio nel backend.
05

Nuxt UI Fonti e ambito del sistema di design

Componenti Nuxt UI effettivi in un’app browser Vue/Vite autonoma. Il compositore di brief è codice originale OpenDesign e non chiama un modello AI, un server Nuxt né un servizio di persistenza.