Sistema di componenti aziendale · Nuova risorsa

Sistema di progettazione Naive UI.

Un ambiente di lavoro nativo con tabella dati Naive UI, valori degli oggetti tema verificati, selezione ed espansione delle righe, ordinamento, paginazione e un’azione locale per la revisione in blocco.

Guida OpenDesign9 capitoli34 voci di riferimentoGuida applicativa originale
01

Anteprima dell’interfaccia del sistema di progettazione sistema di design Naive UI

Cerca record, espandi il contesto della revisione, seleziona righe su più pagine e contrassegna come revisionato un gruppo di elementi locale.

Coda di revisione di riferimentoApri l’esempio completo
Naive UI 2.45.3 nativo con Vue 3 e override del tema NConfigProvider. · Riferimento per l’implementazione
02

Riferimento di progettazione per il sistema di progettazione sistema di design Naive UI

Oggetto common del tema chiaro predefinito di Naive UI 2.45.3, esaminato dal pacchetto installato. Queste proprietà camelCase sono override del tema, non uno schema pubblico di denominazione delle variabili --token CSS. Gli override common personalizzati dell’anteprima sono elencati separatamente.

Colori common predefiniti

Fonte
Nome / regolaValore / configurazioneUtilizzo
primaryColor#18a058 Colore primario predefinito.
primaryColorHover#36ad6a Variante al passaggio del puntatore.
primaryColorPressed#0c7a43 Variante alla pressione.
primaryColorSuppl#36ad6a Colore primario supplementare.
infoColor#2080f0 Ruolo informativo.
successColor#18a058 Ruolo di successo.
warningColor#f0a020 Ruolo di avviso.
errorColor#d03050 Ruolo di errore.
textColor1rgb(31, 34, 37)Testo marcato.
textColor2rgb(51, 54, 57)Testo normale.
textColor3rgb(118, 124, 130)Testo secondario.
borderColorrgb(224, 224, 230)Bordo predefinito.
dividerColorrgb(239, 239, 245)Separatori discreti.
tableHeaderColorrgb(250, 250, 252)Sfondo dell’intestazione della tabella.

Tipografia e geometria dei controlli

Fonte
Nome / regolaValore / configurazioneUtilizzo
fontFamilyv-sans, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"Stack di font preferito per l’interfaccia utente; v-sans non viene scaricato automaticamente.
fontSize14pxDimensione predefinita del testo: 14px.
fontSizeMini12pxDimensione del testo mini.
fontSizeSmall14pxTesto dei controlli piccoli.
fontSizeMedium14pxTesto dei controlli medi.
fontSizeLarge15pxTesto dei controlli grandi.
fontSizeHuge16pxTesto dei controlli molto grandi.
lineHeight1.6Interlinea predefinita del testo.
heightTiny22pxAltezza dei controlli minuscoli.
heightSmall28pxAltezza ridotta dei controlli.
heightMedium34pxAltezza dei controlli medi.
heightLarge40pxAltezza grande dei controlli.
heightHuge46pxAltezza dei controlli molto grandi.
borderRadius3pxRaggio predefinito di 3px.
borderRadiusSmall2pxRaggio predefinito di 2px per gli elementi piccoli.

Override effettivi del tema dell’anteprima

Fonte
Nome / regolaValore / configurazioneUtilizzo
common.primaryColor#176b57 Colore originale più scuro per l’azione primaria.
common.primaryColorHover#238a71 Valore originale coordinato al passaggio del puntatore.
common.primaryColorPressed#115340 Valore originale coordinato alla pressione.
common.borderRadius6pxOverride originale del raggio; il valore predefinito è 3px.
Layout spacing32px outer / 24px section gaps / 16px toolbar gapSpaziatura originale della pagina, non una scala di spaziatura globale attribuita a Naive.
03

Guida completa al sistema di progettazione sistema di design Naive UI

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

DESIGN-naive-ui.md

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

Scarica la guida

Sistema di design Naive UI: un oggetto tema JavaScript, non una pipeline Sass

Un oggetto tema JavaScript, non una pipeline Sass

Naive UI è una libreria di componenti per Vue 3 che consente di personalizzare il tema tramite un oggetto JavaScript. La coda di revisione passa themeOverrides a NConfigProvider. La sezione common sovrascrive primaryColor, primaryColorHover, primaryColorPressed e borderRadius, mentre gli altri valori predefiniti dei componenti restano disponibili tramite il provider.

Da questa guida su OpenDesign

La tabella di riferimento riporta i valori effettivi del tema common chiaro di default della versione 2.45.3. Non inventa nomi di variabili CSS a partire da queste chiavi camelCase. Il colore primario predefinito è #18a058 e il raggio del bordo predefinito è di tre pixel; il verde più scuro e il raggio di sei pixel in questo esempio sono override originali dichiarati esplicitamente.

Leggi la specifica di supporto

Sistema di progettazione sistema di design Naive UI: tipografia e altezze dei controlli per interfacce dense

Tipografia e altezze dei controlli per interfacce dense

Il tema common usa testo da quattordici pixel con interlinea 1.6. Le dimensioni del testo small e medium sono entrambe di quattordici pixel, ma le rispettive altezze dei controlli differiscono. heightSmall è di ventotto pixel e heightMedium di trentaquattro; i nomi delle dimensioni descrivono quindi la geometria dei componenti, non soltanto una progressione delle dimensioni del carattere.

Lo stack di font preferito inizia con v-sans, ma la libreria non richiede di scaricare quel font per visualizzare questo esempio. La pagina circostante usa system-ui, un titolo da 34px e titoli di sezione di supporto da 18px. Questi stili della pagina sono originali. Chi adotta la libreria dovrebbe distinguere la scala dei controlli del tema dalla gerarchia editoriale più ampia di una pagina di presentazione.

Leggi la specifica di supporto

Sistema di progettazione sistema di design Naive UI: le definizioni delle colonne includono il comportamento

Le definizioni delle colonne includono il comportamento

NDataTable riceve un array columns e un array records. L’esempio inizia con una colonna di selezione, seguita da una colonna di espansione e poi dalle colonne di dati con nome. La colonna Reference mostra un nome in evidenza e un ID stabile più piccolo. Entries usa un comparatore numerico, mentre la colonna del nome usa il criterio di ordinamento predefinito. Review mostra una NTag nativa in base allo stato del record.

Questa configurazione definisce un comportamento effettivo, non una schermata con intestazioni decorative. L’ordinamento della colonna Entries confronta valori numerici, non stringhe formattate. Il contenuto espanso mostra la specifica domanda di revisione di ciascun record. La tabella controlla la visualizzazione delle righe, mentre l’applicazione gestisce il significato dei record.

Leggi la specifica di supporto

Sistema di progettazione sistema di design Naive UI: la selezione deve mantenersi dopo il riordinamento

La selezione deve mantenersi dopo il riordinamento

La funzione row-key restituisce l’ID stabile di ciascun record. checked-row-keys e update:checked-row-keys mantengono la selezione controllata nello stato di Vue. L’ordinamento o la paginazione possono cambiare la posizione di un record senza modificare l’identità usata dall’azione in blocco. Usare invece gli indici dell’array renderebbe fragile questa corrispondenza al variare dell’ordine delle righe.

La colonna di selezione disabilita i record Archived. Questi restano visibili come riferimento storico, ma non possono essere aggiunti al gruppo di revisione. Quando applica l’azione, l’applicazione controlla anche lo stato, mantenendo coerente la modifica dei dati con la limitazione visibile. In un sistema reale, il server dovrebbe comunque applicare i controlli di autorizzazione: una casella disabilitata non costituisce un confine di autorizzazione.

  1. Seleziona un record revisionabile nella prima pagina.
  2. Vai alla pagina successiva e controlla che il conteggio della selezione sia mantenuto.
  3. Applica l’azione in blocco e verifica che lo stato del record selezionato cambi senza modificare alcun record archiviato.

Leggi la specifica di supporto

Sistema di progettazione sistema di design Naive UI: espandi le righe prima di decidere in blocco

Espandi le righe prima di decidere in blocco

Ogni riga espandibile include un’attività concreta, ad esempio verificare la navigazione da tastiera nel menu o confrontare i diversi significati degli stati vuoti. In questo modo, il contenuto espanso fornisce elementi utili per decidere come procedere con la revisione, invece di ripetere un’altra descrizione generica. La colonna di espansione usa renderExpand per mostrare contenuti standard sotto il record corrispondente.

La tabella mantiene la struttura delle colonne sugli schermi stretti e riceve scroll-x=640. In questo modo, l’area della tabella nativa può scorrere orizzontalmente, mentre la pagina resta all’interno dell’area visibile. Su mobile la barra degli strumenti si dispone in verticale, ma i dati non vengono rimossi di nascosto per rendere più pulita la schermata.

Leggi la specifica di supporto

Sistema di progettazione sistema di design Naive UI: la revisione in blocco è una trasformazione dei dati locale

La revisione in blocco è una trasformazione dei dati locale

Il pulsante Mark selected reviewed è disabilitato quando l’array di chiavi controllato è vuoto. Quando viene attivato, esamina i record e modifica solo quelli selezionati e non archiviati, impostandone lo stato su Reviewed. In seguito la selezione viene cancellata e un avviso di successo nativo descrive esattamente l’operazione locale. Il conteggio dei record revisionati nell’intestazione della scheda deriva dai record, anziché essere incrementato separatamente.

Non viene modificato alcun repository, servizio di revisione o documento esterno. Una vera implementazione asincrona richiederebbe la gestione del caricamento, dei rifiuti e degli errori parziali. La selezione non andrebbe cancellata prima di sapere quali aggiornamenti sono riusciti. Questo esempio mantiene l’operazione sincrona ed esplicitamente locale, affinché il messaggio di successo corrisponda al codice.

  • Il pulsante dell’azione in blocco indica se sono selezionate delle chiavi.
  • Il conteggio dei record revisionati deriva dagli stessi record mostrati nella tabella.
  • La notifica del risultato specifica che nessun repository è stato modificato.

Leggi la specifica di supporto

Sistema di progettazione sistema di design Naive UI: un componente Vue senza importazione obbligatoria di CSS

Un componente Vue senza importazione obbligatoria di CSS

Installa [email protected] in un progetto Vue 3 e importa i componenti usati da App.vue. Naive UI fornisce gli stili dei componenti in fase di esecuzione; a differenza di molte librerie basate su CSS, non richiede l’importazione di un foglio di stile globale del pacchetto per questi componenti. Il file style.css fornito contiene soltanto il layout originale dell’area di lavoro.

NConfigProvider riceve le impostazioni locali inglesi per i componenti e le date, oltre alla personalizzazione comune del tema. L’intero SFC può essere compilato con il plugin Vue standard di Vite. L’esempio autonomo include il componente compilato, mantenendo disponibili i componenti nativi e il comportamento dell’applicazione senza richieste di rete.

Leggi la specifica di supporto

Tema e limiti dei dati del sistema di progettazione sistema di design Naive UI restano verificabili

I confini tra tema e dati restano verificabili

Il workbench è una piccola libreria di riferimento, non una dashboard amministrativa generica con metriche inventate. Ogni riga contiene dati di esempio, ogni stato ha un significato esplicito e il testo di espansione fornisce un motivo concreto per esaminarla. La tabella del tema e l’intero SFC rendono riproducibili sia lo stile sia il comportamento.

Quando si adotta Naive UI in un sistema più ampio, coordinare le personalizzazioni globali comuni con quelle a livello di componente. Il colore predefinito principale e i colori al passaggio del mouse e alla pressione vanno esaminati insieme. Se il provider offre una superficie del tema supportata, evitare di personalizzare per prima cosa gli elementi interni generati.

Leggi la specifica di supporto

Esempi di componenti del sistema di progettazione sistema di design Naive UI

Coda di revisione completa Vue

Configurazione delle colonne DataTable, chiavi di riga stabili, selezione, espansione e paginazione controllata.

vue
<script setup>
import {ref,computed,h} from 'vue';
import {NConfigProvider,NDataTable,NButton,NInput,NTag,NAlert,NCard,NSpace,enUS,dateEnUS} from 'naive-ui';
const themeOverrides={common:{primaryColor:'#176b57',primaryColorHover:'#238a71',primaryColorPressed:'#115340',borderRadius:'6px'}};
const rows=ref([{id:'DS-101',name:'Navigation patterns',owner:'Maya',items:18,status:'Needs review',note:'Check keyboard movement between primary and overflow navigation.'},{id:'DS-102',name:'Empty-state copy',owner:'Alex',items:9,status:'Needs review',note:'Compare first-use guidance with filtered-empty and permission-empty states.'},{id:'DS-103',name:'Color role mapping',owner:'Jules',items:24,status:'Reviewed',note:'Semantic aliases were compared in light and dark appearances.'},{id:'DS-104',name:'Form error summary',owner:'Sam',items:12,status:'Needs review',note:'Verify error links focus the corresponding input.'},{id:'DS-105',name:'Legacy icon export',owner:'Maya',items:36,status:'Archived',note:'Historical export retained for reference; batch review is disabled.'},{id:'DS-106',name:'Density variants',owner:'Alex',items:15,status:'Needs review',note:'Check compact controls with long translated labels.'}]);
const query=ref(''),checked=ref([]),page=ref(1),notice=ref('');const filtered=computed(()=>rows.value.filter(r=>(r.name+' '+r.owner).toLowerCase().includes(query.value.toLowerCase())));
const columns=[{type:'selection',disabled:r=>r.status==='Archived'},{type:'expand',renderExpand:r=>h('div',{class:'row-note'},r.note)},{title:'Reference',key:'name',sorter:'default',width:240,render:r=>h('div',[h('strong',r.name),h('div',{class:'row-id'},r.id)])},{title:'Owner',key:'owner',width:100},{title:'Entries',key:'items',sorter:(a,b)=>a.items-b.items,width:95},{title:'Review',key:'status',width:140,render:r=>h(NTag,{type:r.status==='Reviewed'?'success':r.status==='Archived'?'default':'warning',bordered:false},{default:()=>r.status})}];
const pagination=computed(()=>({page:page.value,pageSize:4,onChange:p=>page.value=p}));function apply(){rows.value=rows.value.map(r=>checked.value.includes(r.id)&&r.status!=='Archived'?{...r,status:'Reviewed'}:r);notice.value=`Marked ${checked.value.length} selected references reviewed in this preview. No repository was changed.`;checked.value=[];}
</script>
<template><NConfigProvider :locale="enUS" :date-locale="dateEnUS" :theme-overrides="themeOverrides"><main class="review-desk"><header><p class="eyebrow">NAIVE UI / REFERENCE REVIEW</p><h1>A review queue with context.</h1><p>Search, expand a row, compare entry counts, and apply a local batch action.</p></header><NCard title="Reference library"><template #header-extra><NTag :bordered="false" type="success">{{rows.filter(r=>r.status==='Reviewed').length}} reviewed</NTag></template><div class="toolbar"><NInput v-model:value="query" placeholder="Search reference or owner" clearable aria-label="Search reference or owner" @update:value="page=1"/><NButton type="primary" :disabled="!checked.length" @click="apply">Mark selected reviewed</NButton></div><p class="selection-note">{{checked.length}} selected · Selection uses stable IDs and can span pages.</p><NDataTable :columns="columns" :data="filtered" :row-key="r=>r.id" :checked-row-keys="checked" @update:checked-row-keys="keys=>checked=keys" :pagination="pagination" :scroll-x="640" :single-line="false"/><NAlert v-if="notice" type="success" class="notice">{{notice}}</NAlert></NCard><div class="notes"><section><h2>Expand before judging</h2><p>The expand control reveals a concrete review question for each reference. A title alone is not enough context for a meaningful batch decision.</p></section><section><h2>Archived is a separate state</h2><p>Archived records stay visible but cannot join the batch selection. Search and pagination never change the underlying review data.</p></section></div><footer>Native Naive UI 2.45.3 DataTable, Input, Button, Tag, Card and Alert. All records and mutations are local examples.</footer></main></NConfigProvider></template>

Riferimento del codice

  • La selezione si basa su ID di riferimento stabili.
  • Le righe archiviate sono disabilitate tramite il predicato della colonna di selezione.
  • La personalizzazione comune del tema viene fornita tramite NConfigProvider.

Layout originale del workbench

Tipografia della pagina e spaziatura adattiva attorno alla tabella dati nativa.

css
*{box-sizing:border-box}body{margin:0;background:#f5f7f6;color:#1f2225;font-family:system-ui,sans-serif;font-size:14px;line-height:1.6}.review-desk{max-width:1120px;margin:auto;padding:32px}header{max-width:720px;margin-bottom:28px}h1{font-size:34px;line-height:1.2;letter-spacing:-.03em;margin:10px 0 16px}.eyebrow{font-size:11px;letter-spacing:.12em;font-weight:700;color:#426258}.toolbar{display:flex;align-items:center;gap:16px}.toolbar .n-input{max-width:360px}.selection-note,.row-id{font-size:12px;color:#767c82}.row-id{margin-top:4px}.row-note{padding:12px 16px;max-width:65ch;color:#335547}.notice{margin-top:20px}.notes{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:24px}.notes section{border-top:2px solid #c8d7cf;padding:18px 0}.notes h2{font-size:18px;margin:0 0 10px}.notes p{margin:0}footer{font-size:12px;color:#767c82;margin-top:20px}@media(max-width:700px){.review-desk{padding:20px 16px}h1{font-size:28px}.toolbar{align-items:stretch;flex-direction:column}.toolbar .n-input{max-width:none}.notes{grid-template-columns:1fr}.n-card>.n-card__content{padding:16px!important}}

Riferimento del codice

  • Naive UI inserisce gli stili dei componenti; questo foglio di stile contiene solo il layout dell’applicazione.
04

Configurazione dell’agente AI per il sistema di progettazione sistema di design Naive UI

Punto di partenza per l’implementazione

Verificato con Vue 3 e Naive UI 2.45.3. Utilizza la compilazione SFC standard. Tutti i record di riferimento sono locali.

javascript
// Create the project first:
// npm create vite@latest naive-ui-specimen -- --template vue
// cd naive-ui-specimen && npm install
// In a Vite Vue 3 project:
// npm install [email protected]
// Save the complete component above as App.vue and layout as style.css.
import {createApp} from 'vue';
import App from './App.vue';
import './style.css';
createApp(App).mount('#app');
// index.html contains <div id="app"></div>.
// NConfigProvider, locales, themeOverrides and component imports are in App.vue.
// No Naive UI global CSS import is required for these components.
// Keep the template index.html and replace its entry with the code above.
// npm run dev

Un prompt per il tuo progetto

Prompt per l’agente
Usa la coda di revisione di riferimento Naive UI 2.45.3 con NConfigProvider e le colonne native di NDataTable, l’espansione, l’ordinamento, la paginazione e la selezione. Mantieni stabili le chiavi di riferimento durante il filtraggio o il cambio di pagina e fai in modo che l’azione in blocco operi sui record selezionati, non soltanto sulle righe visibili. Collega gli stati vuoti e le azioni disabilitate alla raccolta effettiva. Mantieni themeOverrides come personalizzazioni dell’applicazione, distinte dai valori predefiniti del pacchetto, e conserva il layout originale completo. La coda serve alla revisione locale dei riferimenti, non all’importazione di set di dati.
05

Fonti e ambito del sistema di progettazione sistema di design Naive UI

Naive UI 2.45.3. I valori predefiniti del tema e le personalizzazioni originali sono identificati separatamente. I record di revisione e le modifiche in blocco restano locali.