Système de composants sans interface · Nouvelle ressource

Système de design Ariakit.

Ariakit fournit des composants React sans style, avec un état partagé explicite et des éléments accessibles combinables. Son combobox distingue la saisie de texte de la sélection validée, ce qui le rend utile pour les sélecteurs pilotés par la recherche ; le chercheur de références ci-dessous illustre cette distinction à l’aide de résultats regroupés et indisponibles.

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

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

Filtrez les références regroupées, choisissez-en une avec les touches Bas/Entrée, consultez le résultat et ajoutez-le à une liste de lecture locale.

Recherche de références accessibleOuvrir l’exemple complet
@ariakit/react natif 0.4.40 et React 19. Tous les jetons visuels et le contenu des références d’exemple sont originaux. · Référence de mise en œuvre
02

Ariakit Référence de conception du système de design

Ariakit React 0.4.40 est une boîte à outils d’accessibilité sans style prédéfini. Elle ne définit pas la palette de la page, l’échelle typographique ni les espacements ci-dessous comme thème natif du système de design. Toutes les valeurs --app-* constituent une configuration originale explicite utilisée dans cet exemple exécutable ; les noms des composants et les attributs d’état sont des API Ariakit.

Configuration originale des couleurs sémantiques

Source
Nom / règleValeur / configurationUtilisation
--app-canvas#f5f3ee Arrière-plan de la page.
--app-surface#fffPopover de Combobox et carte de référence.
--app-text#292e29 Texte principal, facile à lire.
--app-muted#657064 Libellés et indications secondaires.
--app-border#d8ddd4 Contours du champ de saisie et de la carte.
--app-action#285f48 Action principale et anneau de focus.
--app-on-action#fffTexte de l’action principale.
--app-active#e3eee4 Surface de l’option active et de l’action sélectionnée.

Géométrie et espacements d’origine

Source
Nom / règleValeur / configurationUtilisation
--app-radius10pxRayon du champ de saisie, du popover et de la carte de référence.
--app-space-18pxÉchelle d’espacement d’origine déclarée.
--app-space-216pxÉchelle d’espacement d’origine déclarée.
--app-space-324pxÉchelle d’espacement d’origine déclarée.
--app-space-432pxÉchelle d’espacement d’origine déclarée.
Combobox padding13px 48px 13px 14pxLaisse de la place au contrôle d’ouverture.
Popover maximum height340pxDéfilement local pour les longues listes de résultats.
Popover gutter8pxValeur réelle de la propriété gutter qui sépare le champ de saisie des suggestions.

Typographie d’origine

Source
Nom / règleValeur / configurationUtilisation
Font familysystem-ui, sans-serifAucun téléchargement de police ni aucune police propre à Ariakit ne sont nécessaires.
Page heading36px / 1.1; 30px mobileHiérarchie originale de la page.
Input text15pxTaille du texte original de Combobox.
Option text14pxTaille originale des libellés de résultat.
Group label11px, uppercase, 700Style original des regroupements visibles.
Supporting hint12px / 1.7Rythme des instructions au clavier.

Composition native et états

Source
Nom / règleValeur / configurationUtilisation
ComboboxProvider.inputValueControlled query stringÉtat actuel du champ de saisie 0.4.40 API ; setInputValue met à jour le filtrage.
ComboboxProvider.selectedValueControlled reference nameLa sélection validée est indépendante de la requête.
ComboboxGroup / ComboboxGroupLabelFoundations / ComponentsGroupes d’options natifs avec libellés.
ComboboxPopover.sameWidthtrueS’adapte à la largeur de l’ancre.
ComboboxItem.disabledtrue for Experimental gridL’enregistrement indisponible ne peut pas être sélectionné.
[data-active-item]CSS state selectorApplique un style à l’option active au clavier, indépendamment de la sélection.
Combobox autoSelectNot enabled in this specimenLa touche Bas déplace le focus dans la liste avant que la touche Entrée ne sélectionne une option.
03

Ariakit Guide complet du système de design

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

DESIGN-ariakit.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

Système de design Ariakit : commencez par le modèle d’état de Combobox

Commencez par le modèle d’état de Combobox

ComboboxProvider de Ariakit relie le libellé, le champ de saisie modifiable, le contrôle d’ouverture, le popup et les options. Le fournisseur gère leur état d’interaction partagé, tandis que chaque composant apporte sa propre partie de la structure. Le champ de recherche et le panneau des détails de la sélection peuvent ainsi être disposés indépendamment, sans traiter chaque frappe comme une nouvelle sélection.

Extrait de ce guide OpenDesign

Le chercheur de référence présente six entrées réparties en deux groupes nommés. Le filtrage relève de la collection de l’application ; la navigation et le choix des options relèvent de la combobox native. Cette séparation est utile lorsqu’on remplace les entrées statiques par une autre source de données : les résultats filtrés et l’élément actuellement sélectionné ne sont pas nécessairement les mêmes.

Consultez la spécification associée

Ariakit : le texte de recherche et la sélection validée sont deux états distincts dans le système de design

Le texte de recherche et la sélection validée sont deux états distincts

L’exemple utilise inputValue et setInputValue pour le texte saisi, et selectedValue et setSelectedValue pour la référence choisie. Dans la version 0.4.40 API, vérifiée ici, inputValue est le nom actuel de l’état de saisie ; les anciens exemples peuvent utiliser les alias obsolètes value/setValue. Le code complet emploie les noms actuels.

La saisie de « color » réduit le nombre de suggestions, sans remplacer immédiatement la fiche détaillée affichée. Choisir Color roles valide cette référence et met à jour le panneau. Effacer la recherche conserve également la dernière référence sélectionnée. Si chaque requête partielle était considérée comme une valeur validée, la vue détaillée passerait à des entrées invalides ou inexistantes.

Consultez la spécification associée

Ariakit : relier le libellé, le champ de saisie, le bouton d’ouverture et le popover dans le système de design

Associez le libellé, le champ de saisie, le contrôle d’ouverture et le popover

ComboboxProvider fournit un état partagé à ComboboxLabel, Combobox, ComboboxDisclosure et ComboboxPopover. Le libellé visible identifie le champ de saisie. Le bouton d’ouverture est un bouton distinct doté d’un nom accessible explicite, tandis que le popover utilise sameWidth et une marge de huit pixels pour rester aligné sur son élément d’ancrage.

Chaque résultat est un ComboboxItem doté d’une valeur stable. Foundations et Components sont des sections ComboboxGroup natives, avec des titres ComboboxGroupLabel. Un titre en gras ajouté à une liste non structurée n’exprimerait pas la même relation de groupement ; l’anatomie native porte cette relation et intègre le modèle de navigation au clavier.

Consultez la spécification associée

Ariakit : filtrer les données avant d’afficher les éléments natifs dans le système de design

Filtrez les données avant d’afficher les éléments natifs

La collection d’exemple contient cinq références disponibles et une grille Experimental volontairement indisponible. Le filtrage s’effectue au niveau de l’application, à l’aide d’une recherche de sous-chaîne insensible à la casse dans le nom de chaque référence. Les deux groupes ne s’affichent que s’ils contiennent des entrées correspondantes, ce qui évite les titres sans contenu parmi les résultats.

Lorsqu’aucun résultat ne correspond, un message dédié suggère d’effacer la recherche ou d’essayer « color ». Ce message ne devient pas une option sélectionnable. L’entrée désactivée reste visible lorsqu’elle est pertinente et porte le libellé Unavailable ; la propriété native disabled l’empêche d’être validée comme sélection.

Consultez la spécification associée

Ariakit : vérifier le parcours réel avec les touches Bas et Entrée dans le système de design

Vérifiez le parcours réel avec les touches Bas et Entrée

Dans cet exemple, autoSelect reste désactivé. Après avoir saisi une requête, la touche Bas déplace le focus vers la liste de suggestions et la touche Entrée sélectionne l’élément actif. La touche Échap ferme le popover. Ce comportement correspond aux instructions visibles et a été vérifié à partir du titre du détail sélectionné, et pas seulement de l’apparition d’une liste déroulante.

La mise en surbrillance automatique peut convenir à un autre produit, mais elle modifie le point de départ de la navigation avec les flèches. Lorsqu’un seul résultat est déjà actif, une nouvelle pression sur Bas peut ramener le focus au champ de saisie. L’exemple évite ce décalage et applique le style de l’élément actif à l’aide de data-active-item, afin de distinguer sa position au clavier de son éventuelle présence dans la liste de lecture enregistrée.

  1. Saisissez « color » et attendez l’option correspondante.
  2. Appuyez sur Bas, puis sur Entrée, et examinez le panneau détaillé de Color roles.
  3. Recherchez une référence indisponible ou inexistante et vérifiez qu’aucune sélection non souhaitée n’est validée.

Consultez la spécification associée

Ariakit : distinguer les indices visuels de l’option active, de l’anneau de focus et de l’état enregistré dans le système de design

L’option active, l’anneau de focus et l’état enregistré ont des indicateurs distincts

Le champ de saisie et le bouton d’ouverture affichent un contour de focus visible. L’option active se distingue par un fond vert pâle et un contour interne d’un pixel, appliqués au moyen de l’attribut natif data-active-item. Les options désactivées sont moins mises en avant et conservent leur libellé explicite. Ces styles ne reposent pas uniquement sur le survol.

Le bouton Add se désactive et change de libellé lorsque la référence sélectionnée figure déjà dans la liste de lecture. Cet état enregistré relève de l’application et est distinct du résultat actuellement actif dans la combobox. Un fond vert pâle pour l’action déjà effectuée évite de présenter une action désactivée comme un autre bouton principal actif.

Consultez la spécification associée

Ariakit : la liste de lecture ne remplace pas la référence actuelle dans le système de design

Une liste de lecture ne remplace pas la référence actuelle

L’ajout d’une référence ajoute son nom à un tableau local, une seule fois ; la référence actuelle reste affichée pour permettre de consulter ses notes. Chaque ligne de la liste de lecture comprend un bouton Remove doté d’un nom explicite. La suppression d’une entrée réactive le bouton Add si cette référence est toujours sélectionnée. Le nombre d’éléments est calculé à partir de la longueur du tableau.

Le contenu détaillé de l’exemple comprend des conseils sur la typographie, l’espacement et les composants, afin de permettre d’explorer le chercheur. Ses valeurs sont clairement identifiées comme du contenu d’exemple original. Il ne faut pas prendre « Display 36px », dans l’entrée Type scale, pour un jeton de typographie de Ariakit : Ariakit ne fournit pas ce langage de design.

Consultez la spécification associée

Ariakit : prévoir l’espace nécessaire au popover sans redimensionner toute la page dans le système de design

Prévoir l’espace nécessaire au popover sans redimensionner toute la page

Le popover suit la largeur du champ de saisie et sa hauteur est limitée à 340px. Si la liste de résultats est plus longue, elle défile dans cet espace, tandis que la fiche détaillée de l’élément sélectionné reste dans le flux normal du document. Gardez le champ de saisie, le bouton d’ouverture et le menu d’options liés, même si la fiche détaillée passe dans une autre colonne : la validation d’un élément doit toujours mettre à jour la même référence sélectionnée.

Au point de rupture initial de 700px, le chercheur et la fiche détaillée s’empilent. Dans l’ordre du document, les commandes de recherche, l’indication des raccourcis clavier et la liste de lecture précèdent la fiche sélectionnée. L’illustration décorative de référence est masquée aux technologies d’assistance, car le titre et les notes portent le sens utile.

  • Limiter localement la hauteur d’une longue liste d’options tout en conservant un espacement lisible entre les éléments.
  • Garder le panneau détaillé correspondant à l’élément validé en dehors du popover temporaire.
  • Conserver des libellés de champ visibles et des indications sur les raccourcis clavier sur mobile.

Consultez la spécification associée

Ariakit : relier le Provider, la collection et la feuille de style dans le système de design

Relier le Provider, la collection et la feuille de style

Installez @ariakit/react 0.4.40 dans le projet React et conservez l’ensemble de la composition des fournisseurs et composants de App.jsx. L’exemple actuel utilise inputValue/setInputValue et selectedValue/setSelectedValue comme deux paires contrôlées distinctes. Conservez la référence sélectionnée disponible même si la requête saisie ne la fait plus apparaître dans la fenêtre contextuelle.

Importez le fichier style.css fourni avec le composant. Sa règle data-active-item suit la position clavier dans la combobox, tandis que les styles de la liste de lecture suivent l’état de l’application. Lorsque vous remplacez les résultats par des résultats chargés de façon asynchrone, préservez ces deux canaux d’état ainsi que les relations entre groupes et options ; ne remplacez pas le panneau de détail validé par une chaîne de requête intermédiaire.

Consultez la spécification associée

Exemples de composants du système de design Ariakit

Outil de recherche de références entièrement contrôlé

Fournisseur, libellé, champ de saisie, divulgation, éléments groupés dans une fenêtre contextuelle et actions locales de liste de lecture.

jsx
import React,{useState} from 'react';
import * as Ariakit from '@ariakit/react';
const resources=[{name:'Type scale',group:'Foundations',code:'Aa',description:'A compact editorial hierarchy for headings, supporting text and labels.',notes:['Display · 36px / 1.1','Section · 24px / 1.25','Body · 16px / 1.6'],color:'#f0dbc3'},{name:'Color roles',group:'Foundations',code:'◐',description:'Separate surface, text, boundary and action roles before naming brand colors.',notes:['Canvas and raised surface','Primary and muted text','Action and on-action pair'],color:'#d6e5d8'},{name:'Spacing rhythm',group:'Foundations',code:'▥',description:'Use a small set of intervals to show relationships between content groups.',notes:['8px within a compact group','16px between related controls','32px between sections'],color:'#d6dfee'},{name:'Form field',group:'Components',code:'⌑',description:'Keep the label, hint, input and error message in one understandable group.',notes:['Persistent visible label','Hint before an error exists','Error connected to the input'],color:'#e9d8de'},{name:'Navigation menu',group:'Components',code:'☷',description:'A small set of destinations with a visible current location and keyboard access.',notes:['Destination labels describe content','Current item has a text/state cue','Collapsed layout keeps names'],color:'#e7e0c5'},{name:'Experimental grid',group:'Components',code:'▦',description:'Unavailable in this sample collection.',notes:[],color:'#e3e3e3',disabled:true}];
export default function App(){const[query,setQuery]=useState(''),[chosen,setChosen]=useState('Type scale'),[saved,setSaved]=useState([]);const selected=resources.find(x=>x.name===chosen)||resources[0],matches=resources.filter(x=>x.name.toLowerCase().includes(query.toLowerCase()));return <main className="resource-finder"><header><p className="eyebrow">ARIAKIT · ACCESSIBLE PRIMITIVES</p><h1>A reference, within reach.</h1><p>Search a small collection with the keyboard, inspect the result and keep a local reading list.</p></header><div className="finder-grid"><section className="search-area"><Ariakit.ComboboxProvider inputValue={query} setInputValue={setQuery} selectedValue={chosen} setSelectedValue={setChosen}><Ariakit.ComboboxLabel className="label">Find a reference</Ariakit.ComboboxLabel><div className="input-row"><Ariakit.Combobox className="combobox" placeholder="Try type, color or form" /><Ariakit.ComboboxDisclosure className="disclosure" aria-label="Show reference suggestions">⌄</Ariakit.ComboboxDisclosure></div><Ariakit.ComboboxPopover gutter={8} sameWidth className="popover">{['Foundations','Components'].map(group=>{const items=matches.filter(x=>x.group===group);return items.length?<Ariakit.ComboboxGroup key={group}><Ariakit.ComboboxGroupLabel className="group-label">{group}</Ariakit.ComboboxGroupLabel>{items.map(x=><Ariakit.ComboboxItem key={x.name} value={x.name} disabled={x.disabled} className="combo-item"><span>{x.name}</span><small>{x.disabled?'Unavailable':x.group==='Foundations'?'Guide':'Pattern'}</small></Ariakit.ComboboxItem>)}</Ariakit.ComboboxGroup>:null})}{!matches.length&&<p className="empty" role="status">No matching reference. Try “color” or clear the search.</p>}</Ariakit.ComboboxPopover></Ariakit.ComboboxProvider><p className="hint">Type to filter. Use ↓ and ↑ to browse, Enter to choose, Escape to close.</p><div className="collection-note"><span>06</span><div><strong>Sample references</strong><p>Five available, one deliberately disabled to show an unavailable item.</p></div></div><section className="reading-list"><h2>Your reading list <small>{saved.length}</small></h2>{saved.length?<ul>{saved.map(name=><li key={name}><span>{name}</span><Ariakit.Button className="remove" onClick={()=>setSaved(saved.filter(x=>x!==name))} aria-label={`Remove ${name}`}>Remove</Ariakit.Button></li>)}</ul>:<p className="muted">Choose a reference, then add it here.</p>}<p className="local-note">This list stays in memory and clears on reload.</p></section></section><section className="reference-card" aria-label="Selected reference"><div className="reference-art" style={{background:selected.color}} aria-hidden="true"><span>{selected.code}</span><i></i></div><div className="reference-body"><p className="eyebrow">{selected.group} · SAMPLE CONTENT</p><h2>{selected.name}</h2><p>{selected.description}</p><ul className="note-list">{selected.notes.map(note=><li key={note}>{note}</li>)}</ul><Ariakit.Button className="primary" disabled={saved.includes(selected.name)} onClick={()=>setSaved([...saved,selected.name])}>{saved.includes(selected.name)?'Added to reading list':'Add to reading list'}</Ariakit.Button><p className="scope-note">These sample reference values are original content, not Ariakit design tokens.</p></div></section></div><p className="selection-status" role="status">Selected reference: {selected.name}</p></main>}

Référence du code

  • inputValue contient la chaîne de recherche ; selectedValue contient la référence validée.
  • Les éléments désactivés restent visibles lorsqu’ils correspondent à la requête.
  • Les valeurs d’origine de type et d’espacement de l’exemple ne sont pas des valeurs par défaut de Ariakit.

Configuration visuelle d’origine complète

Variables sémantiques de l’application, anneaux de focus, style de l’option active et mise en page adaptative.

css
:root{--app-canvas:#f5f3ee;--app-surface:#fff;--app-text:#292e29;--app-muted:#657064;--app-border:#d8ddd4;--app-action:#285f48;--app-on-action:#fff;--app-active:#e3eee4;--app-radius:10px;--app-space-1:8px;--app-space-2:16px;--app-space-3:24px;--app-space-4:32px;font-family:system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--app-canvas);color:var(--app-text)}button,input{font:inherit}.resource-finder{max-width:1080px;padding:32px;margin:auto}.eyebrow{font-size:11px;font-weight:700;letter-spacing:.13em;color:var(--app-muted)}h1{font-size:36px;line-height:1.1;margin:16px 0}header>p:last-child{font-size:15px;line-height:1.7;max-width:620px;color:var(--app-muted)}.finder-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:40px;margin-top:32px}.label{display:block;font-size:14px;font-weight:650;margin-bottom:10px}.input-row{position:relative;display:flex}.combobox{width:100%;padding:13px 48px 13px 14px;border:1px solid var(--app-border);border-radius:var(--app-radius);background:var(--app-surface);color:var(--app-text);font-size:15px}.disclosure{position:absolute;right:4px;top:4px;bottom:4px;width:36px;border:0;background:transparent;border-radius:6px;cursor:pointer}.combobox:focus,.disclosure:focus-visible,button:focus-visible{outline:3px solid var(--app-action);outline-offset:3px}.popover{z-index:50;max-height:340px;overflow:auto;background:var(--app-surface);border:1px solid var(--app-border);border-radius:var(--app-radius);box-shadow:0 8px 28px #243c2420;padding:8px}.group-label{font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--app-muted);padding:10px}.combo-item{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:12px 10px;border-radius:6px;cursor:default;font-size:14px;scroll-margin:8px}.combo-item small{font-size:11px;color:var(--app-muted)}.combo-item[data-active-item]{background:var(--app-active);outline:1px solid var(--app-action);outline-offset:-1px}.combo-item[aria-disabled=true]{opacity:.45}.empty{padding:12px;font-size:14px;line-height:1.6}.hint{font-size:12px;line-height:1.7;color:var(--app-muted);margin-top:12px}.collection-note{display:flex;gap:16px;align-items:flex-start;border-block:1px solid var(--app-border);padding:24px 0;margin:28px 0}.collection-note>span{font-size:40px;line-height:1;color:var(--app-action)}.collection-note strong{font-size:14px}.collection-note p{font-size:13px;line-height:1.6;color:var(--app-muted);margin:8px 0 0}.reading-list h2{font-size:17px;display:flex;justify-content:space-between}.reading-list h2 small{background:var(--app-active);border-radius:30px;padding:3px 8px}.reading-list ul{padding:0;list-style:none}.reading-list li{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--app-border);font-size:14px}.remove{background:none;border:0;text-decoration:underline;color:var(--app-action);font-size:12px;cursor:pointer}.muted,.local-note,.scope-note{color:var(--app-muted);font-size:12px;line-height:1.7}.reference-card{border:1px solid var(--app-border);border-radius:var(--app-radius);overflow:hidden;background:var(--app-surface)}.reference-art{height:160px;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}.reference-art span{font-size:96px;font-family:Georgia,serif;line-height:1;position:relative;z-index:1}.reference-art i{position:absolute;width:190px;height:190px;border:1px solid currentColor;opacity:.2;border-radius:50%;left:50%;top:35%}.reference-body{padding:24px}.reference-body h2{font-size:28px;margin:12px 0}.reference-body>p{line-height:1.65;font-size:14px}.note-list{list-style:none;padding:0;margin:24px 0}.note-list li{padding:10px 0;border-bottom:1px solid var(--app-border);font-size:13px}.primary{padding:12px 18px;border:1px solid var(--app-action);background:var(--app-action);color:var(--app-on-action);border-radius:6px;cursor:pointer;font-weight:600;font-size:14px}.primary:disabled{background:var(--app-active);color:var(--app-action);cursor:default}.scope-note{margin-top:16px}.selection-status{font-size:12px;color:var(--app-muted);margin-top:24px}@media(max-width:700px){.resource-finder{padding:24px 16px}h1{font-size:30px}.finder-grid{grid-template-columns:1fr;gap:28px}.reference-art{height:135px}}

Référence du code

  • Ariakit fournit le comportement et la sémantique, pas ce système de couleurs ou d’espacement.
  • Le résultat actif est stylé à l’aide de data-active-item.
  • La fenêtre contextuelle possède sa propre hauteur maximale et sa propre zone de défilement.
04

Configuration de l’agent du système de design Ariakit

Point de départ de l’implémentation

Vérifié avec @ariakit/react 0.4.40 et React 19. Utilise les noms actuels inputValue/setInputValue et un selectedValue contrôlé.

jsx
// Create the project first:
// npm create vite@latest ariakit-specimen -- --template react
// cd ariakit-specimen && npm install
// In a Vite React project:
// npm install @ariakit/[email protected] react@19 react-dom@19
// Save the complete component as App.jsx and the visual configuration as style.css.
import React from 'react';
import {createRoot} from 'react-dom/client';
import App from './App.jsx';
import './style.css';
createRoot(document.getElementById('root')).render(<App />);
// index.html contains <div id="root"></div>.
// No Ariakit theme stylesheet is required; style.css is this example's original theme.
// 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 l’outil de recherche de références Ariakit 0.4.40 fourni dans React. Gardez inputValue/setInputValue de ComboboxProvider indépendants de selectedValue/setSelectedValue, conservez les groupes natifs avec libellés et l’option de grille Experimental désactivée, et filtrez les données avant d’afficher les éléments. Préservez le parcours vérifié consistant à appuyer sur Bas puis sur Entrée, avec autoSelect désactivé, et distinguez le style de data-active-item de l’appartenance à la liste enregistrée. Ajoutez la référence validée à une liste de lecture locale sans doublons et permettez sa suppression sans effacer le détail affiché. Incluez la feuille de style d’origine complète.
05

Sources et périmètre du système de design Ariakit

Ariakit React 0.4.40. Tous les jetons visuels, les illustrations et les exemples de références relèvent de la configuration d’origine ; aucune palette ni échelle typographique officielle de Ariakit n’est revendiquée. L’état de la liste de lecture est local.