Système de composants d’entreprise · Nouvelle ressource

Système de design Naive UI.

Un espace de travail natif Naive UI pour les tableaux de données, avec des valeurs d’objet de thème vérifiées, la sélection et le développement des lignes, le tri, la pagination et une action locale de vérification par lot.

Guide OpenDesign9 chapitres34 entrées de référenceGuide de l’application d’origine
01

Aperçu de l’interface du système de design Naive UI

Recherchez des dossiers, développez le contexte d’examen, sélectionnez des lignes sur plusieurs pages et marquez un lot local comme examiné.

File d’examen de référenceOuvrir l’exemple complet
Naive UI 2.45.3 natif avec Vue 3 et substitutions de thème NConfigProvider. · Référence de mise en œuvre
02

Référence de conception du système de design Naive UI

Objet de thème clair commun Naive UI 2.45.3, inspecté dans le package installé. Ces propriétés en camelCase sont des substitutions de thème, et non une convention publique de nommage des variables --token CSS. Les substitutions communes personnalisées de l’aperçu sont présentées séparément.

Couleurs communes par défaut

Source
Nom / règleValeur / configurationUtilisation
primaryColor#18a058 Vert principal par défaut.
primaryColorHover#36ad6a Variante au survol.
primaryColorPressed#0c7a43 Variante à l’appui.
primaryColorSuppl#36ad6a Couleur principale complémentaire.
infoColor#2080f0 Rôle d’information.
successColor#18a058 Rôle de réussite.
warningColor#f0a020 Rôle d’avertissement.
errorColor#d03050 Rôle d’erreur.
textColor1rgb(31, 34, 37)Texte accentué.
textColor2rgb(51, 54, 57)Texte normal.
textColor3rgb(118, 124, 130)Texte secondaire.
borderColorrgb(224, 224, 230)Bordure par défaut.
dividerColorrgb(239, 239, 245)Séparateurs discrets.
tableHeaderColorrgb(250, 250, 252)Arrière-plan de l’en-tête du tableau.

Typographie et géométrie des commandes

Source
Nom / règleValeur / configurationUtilisation
fontFamilyv-sans, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"Pile de polices d’interface privilégiée ; v-sans n’est pas téléchargée automatiquement.
fontSize14pxTaille de texte par défaut de 14px.
fontSizeMini12pxTaille du texte miniature.
fontSizeSmall14pxTexte des petites commandes.
fontSizeMedium14pxTexte des commandes moyennes.
fontSizeLarge15pxTexte des grandes commandes.
fontSizeHuge16pxTexte des commandes très grandes.
lineHeight1.6Rythme du texte par défaut.
heightTiny22pxHauteur des commandes minuscules.
heightSmall28pxPetite hauteur de contrôle.
heightMedium34pxHauteur des commandes moyennes.
heightLarge40pxGrande hauteur de contrôle.
heightHuge46pxHauteur des commandes très grandes.
borderRadius3pxRayon par défaut de 3px.
borderRadiusSmall2pxPetit rayon par défaut de 2px.

Remplacements réels du thème de prévisualisation

Source
Nom / règleValeur / configurationUtilisation
common.primaryColor#176b57 Couleur principale vert foncé d’origine pour l’action.
common.primaryColorHover#238a71 Valeur de survol coordonnée d’origine.
common.primaryColorPressed#115340 Valeur d’activation coordonnée d’origine.
common.borderRadius6pxRemplacement de rayon d’origine ; la valeur par défaut est 3px.
Layout spacing32px outer / 24px section gaps / 16px toolbar gapEspacement de page d’origine, qui ne prétend pas définir une échelle d’espacement globale de Naive.
03

Naive UI Guide complet du système de design

Un guide pratique pour choisir, appliquer et évaluer ce système dans une interface réelle.

DESIGN-naive-ui.md

Des conseils complets, un point de départ pour la mise en œuvre et des liens vers les sources.

Télécharger le guide

Naive UI : système de design — un objet de thème JavaScript, pas une chaîne de traitement Sass

Un objet de thème JavaScript, pas une chaîne de compilation Sass

Naive UI est une bibliothèque de composants Vue 3 dont la personnalisation du thème s’exprime au moyen d’un objet JavaScript. La file d’attente de révision transmet themeOverrides à NConfigProvider. Sa section common remplace primaryColor, primaryColorHover, primaryColorPressed et borderRadius, tandis que les autres valeurs par défaut des composants restent accessibles via le fournisseur.

Extrait de ce guide OpenDesign

Le tableau de référence indique les valeurs réelles du thème clair common installé en version 2.45.3. Il ne fabrique pas de noms de variables CSS à partir de ces clés camelCase. La couleur principale par défaut est #18a058 et le rayon de bordure par défaut est de trois pixels ; le vert plus foncé et le rayon de six pixels de cet exemple sont explicitement des remplacements d’origine.

Consultez la spécification associée

Système de design Naive UI : typographie dense et hauteurs des contrôles

Typographie dense et hauteurs des contrôles

Le thème courant utilise un texte de quatorze pixels avec une hauteur de ligne de 1,6. Les tailles de texte petite et moyenne sont toutes deux de quatorze pixels, mais la hauteur de leurs contrôles diffère. heightSmall mesure vingt-huit pixels et heightMedium trente-quatre pixels ; les noms de taille décrivent donc la géométrie des composants, et pas seulement une progression de la taille de police.

La pile de polices recommandée commence par v-sans, mais la bibliothèque n’impose pas de télécharger cette police pour afficher cet exemple. La page qui l’entoure utilise system-ui, un titre de 34px et des titres de section secondaires de 18px. Ces styles de page sont d’origine. Lorsqu’il adopte la bibliothèque, un concepteur doit distinguer l’échelle des contrôles du thème de la hiérarchie éditoriale plus ample d’une page d’accueil.

Consultez la spécification associée

Système de design Naive UI : les définitions de colonnes déterminent le comportement

Les définitions de colonnes portent leur comportement

NDataTable reçoit un tableau columns et un tableau records. L’exemple commence par une colonne de sélection, suivie d’une colonne d’expansion, puis de colonnes de données nommées. La colonne Reference affiche un nom en gras et un identifiant stable de taille inférieure. Entries utilise un comparateur numérique, tandis que la colonne du nom utilise le tri par défaut. Review affiche un NTag natif en fonction du statut de l’enregistrement.

Cette configuration décrit un comportement réel, et non une capture d’écran avec des en-têtes de tableau décoratifs. Le tri de la colonne Entries compare des nombres, pas des chaînes mises en forme. Le contenu développé présente la question de révision propre à chaque enregistrement. Le tableau contrôle l’affichage des lignes ; l’application, elle, définit la signification de ces enregistrements.

Consultez la spécification associée

Système de design Naive UI : préserver la sélection lors du réordonnancement

La sélection doit être conservée lors du réordonnancement

La fonction row-key renvoie l’identifiant stable de chaque enregistrement. checked-row-keys et update:checked-row-keys maintiennent la sélection sous le contrôle de l’état Vue. Le tri ou la pagination peuvent modifier l’emplacement d’un enregistrement sans changer l’identité utilisée par l’action groupée. Utiliser des index de tableau à la place fragiliserait cette relation lorsque l’ordre des lignes change.

La colonne de sélection désactive les enregistrements archivés. Ils restent visibles pour conserver le contexte historique, mais ne peuvent pas être ajoutés au lot de révision. Lors de l’exécution de l’action, l’application vérifie aussi le statut, afin que la modification des données respecte la restriction affichée. Dans un système réel, le serveur devrait tout de même appliquer les autorisations ; une case à cocher désactivée ne constitue pas une frontière de sécurité.

  1. Sélectionnez un enregistrement révisable sur la première page.
  2. Passez à la page suivante et vérifiez que le nombre d’éléments sélectionnés est conservé.
  3. Appliquez l’action groupée et vérifiez que le statut de l’enregistrement sélectionné change sans toucher à un enregistrement archivé.

Consultez la spécification associée

Système de design Naive UI : développez les lignes avant de prendre une décision groupée

Développez les lignes avant de prendre une décision groupée

Chaque ligne développée inclut une tâche concrète, par exemple vérifier le déplacement au clavier dans la navigation ou comparer différentes significations pour les états vides. Le contenu développé fournit ainsi des éléments utiles à la décision de révision, plutôt qu’une nouvelle description générique répétée. La colonne d’expansion utilise renderExpand pour afficher un contenu ordinaire sous l’enregistrement correspondant.

Le tableau conserve la structure de ses colonnes sur les écrans étroits et reçoit scroll-x=640. La zone native du tableau peut ainsi défiler horizontalement, tandis que la page reste dans les limites de la fenêtre. La barre d’outils s’empile sur mobile, mais aucune donnée n’est supprimée en douce pour embellir la capture d’écran.

Consultez la spécification associée

Système de design Naive UI : la révision groupée transforme les données locales

L’examen groupé est une transformation locale des données

Le bouton « Marquer comme révisés » est désactivé lorsque le tableau de clés contrôlé est vide. Lorsqu’on l’active, la fonction parcourt les enregistrements et ne modifie que ceux qui sont sélectionnés et non archivés, en leur attribuant le statut Reviewed. La sélection est ensuite effacée et une alerte de réussite native décrit précisément l’opération locale. Le compteur d’enregistrements révisés dans l’en-tête de la carte est calculé à partir des enregistrements, au lieu d’être incrémenté séparément.

Aucun dépôt, service de révision ni document externe n’est modifié. Une implémentation asynchrone réelle devrait gérer le chargement, les rejets et les échecs partiels. Elle ne devrait pas effacer la sélection avant de connaître les mises à jour réussies. Cet exemple garde l’opération synchrone et explicitement locale, afin que le message de réussite corresponde au code.

  • Le bouton d’action groupée reflète la présence d’éléments sélectionnés.
  • Le nombre d’éléments révisés est calculé à partir des mêmes enregistrements que ceux affichés dans le tableau.
  • Le message de résultat précise qu’aucun dépôt n’a été modifié.

Consultez la spécification associée

Système de design Naive UI : un composant Vue sans import obligatoire de CSS

Un composant Vue sans import CSS obligatoire

Installez [email protected] dans un projet Vue 3 et importez les composants utilisés par App.vue. Naive UI fournit le style de ses composants à l’exécution ; contrairement à de nombreuses bibliothèques axées sur CSS, il ne nécessite pas d’importation globale de feuille de style du package pour ces composants. Le fichier style.css fourni contient uniquement la mise en page d’origine de l’espace de travail.

NConfigProvider reçoit les paramètres régionaux anglais des composants et des dates, ainsi que la surcharge de thème commune. Le SFC complet peut être compilé avec le plug-in Vue standard de Vite. L’exemple autonome intègre le composant compilé, ce qui permet de conserver les composants natifs et le comportement de l’application sans requêtes réseau.

Consultez la spécification associée

Le thème du système de design Naive UI et les limites des données restent vérifiables

Les limites du thème et des données restent vérifiables

L’espace de travail est une petite bibliothèque de référence, et non un tableau de bord d’administration généraliste aux indicateurs inventés. Chaque ligne est un exemple de contenu, chaque statut a une signification explicite et le texte de développement fournit une raison concrète de l’examiner. Le tableau du thème et le SFC complet permettent de reproduire le style et le comportement.

Lorsque vous intégrez Naive UI à un système plus vaste, coordonnez les surcharges globales communes avec celles des composants. Examinez ensemble les couleurs par défaut, de survol et d’activation de l’élément principal. Si le fournisseur propose une interface de thème prise en charge, évitez de faire du style des éléments internes générés votre première méthode de personnalisation.

Consultez la spécification associée

Exemples de composants du système de design Naive UI

File complète de vérification Vue

Configuration des colonnes de DataTable, clés de ligne stables, sélection, développement et pagination contrôlée.

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>

Référence du code

  • La sélection repose sur des identifiants de référence stables.
  • Les lignes archivées sont désactivées par le prédicat de la colonne de sélection.
  • La surcharge de thème commune est fournie par NConfigProvider.

Mise en page d’origine de l’espace de travail

Typographie de la page et espacement adaptatif autour du tableau de données natif.

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}}

Référence du code

  • Naive UI injecte les styles des composants ; cette feuille de style ne contient que la mise en page de l’application.
04

Configuration de l’agent IA pour le système de design Naive UI

Point de départ de l’implémentation

Vérifié avec Vue 3 et Naive UI 2.45.3. Utilise la compilation SFC standard. Tous les enregistrements de référence sont locaux.

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 pour votre projet

Prompt pour l’agent IA
Utilisez la file de vérification des références Naive UI 2.45.3 avec NConfigProvider et les colonnes natives de NDataTable, le développement, le tri, la pagination et la sélection. Conservez les clés de référence stables lors du filtrage ou du changement de page, et veillez à ce que l’action groupée s’applique aux enregistrements sélectionnés, et non aux seules lignes visibles. Faites dépendre les états vides et les actions désactivées de la collection réelle. Conservez themeOverrides, la surcharge fournie, comme surcharge de l’application distincte des valeurs par défaut du package, ainsi que la mise en page d’origine complète. Cette file sert à la vérification locale des références, et non à l’importation de jeux de données.
05

Sources et portée du système de design Naive UI

Naive UI 2.45.3. Les valeurs par défaut du thème et les surcharges d’origine sont identifiées séparément. Les enregistrements de vérification et les modifications groupées restent locaux.