import { type VNode } from "vue"; import type { StatusDotTone } from "./StatusDot.js"; import type { ColorSwatchShape } from "./ColorSwatch.js"; /** Profondeur dans l'arbre de nav → échelle typographique DÉCROISSANTE. * L0 = racine (base/600), chaque palier descend en taille ET en graisse pour * que la hiérarchie se LISE sans indentation seule. */ export type NavItemDepth = 0 | 1 | 2 | 3; /** Ton sémantique de la rangée. `error` est un VRAI état (un « HTTP 403 » * devient rouge sémantique), pas une teinte décorative. */ export type NavItemStatus = "neutral" | "info" | "success" | "warning" | "error"; export type NavItemSwatch = { /** Couleur arbitraire (hex/rgb/var) → rendue par ColorSwatch. */ color?: string; /** Ton sémantique → rendu par StatusDot (un point). Ignoré si `color`. */ tone?: StatusDotTone; /** Forme de la pastille couleur (ColorSwatch). Défaut « square ». */ shape?: ColorSwatchShape; }; export type NavItemProps = { /** Clé de sélection, passée telle quelle à SelectableRow (data-value). */ value?: string; /** Libellé principal (1ʳᵉ ligne). */ title: string; /** 2ᵉ ligne MUETTE, ellipsée indépendamment du titre. */ caption?: string; /** Profondeur (défaut 0) → échelle typo + indentation de la tête. */ depth?: NavItemDepth; /** Pastille de tête : couleur arbitraire (ColorSwatch) ou ton (StatusDot). */ swatch?: NavItemSwatch; /** Bulle de compte en queue (Badge circle/sm, tabular-nums). */ count?: number; /** Ton sémantique de la rangée. */ status?: NavItemStatus; /** Sélection (honorée en standalone ; la liste prime si encadrée). */ selected?: boolean; /** Non-interactif. */ disabled?: boolean; /** Rend la rangée comme un lien (ancre) — anatomie identique. */ href?: string; /** Séparateur token-only rendu APRÈS la rangée. */ divider?: boolean; /** Notifié à chaque bascule de sélection (rangée standalone). */ onSelect?: (selected: boolean) => void; class?: string; }; /** * NavItem — l'ANATOMIE DE RANGÉE CANONIQUE du système de navigation (vague 2). * La brique que tout rail/drawer instancie : tête (pastille/icône) + titre + * caption muette + queue (bulle de compte) + sélection + profondeur * typographique + séparateur optionnel. * * Zéro-entropie : NavItem NE RÉIMPLÉMENTE RIEN. Il COMPOSE SelectableRow (qui * possède déjà leading/trailing/caption, la sélection, le rôle ARIA dérivé du * conteneur et la propagation du roving-tabindex) et réutilise les primitives * vague 1 : * • ColorSwatch → tête quand `swatch.color` (couleur arbitraire inline) * • StatusDot → tête quand `swatch.tone` (point sémantique) * • Badge → queue (shape="circle" size="sm", tabular-nums) pour `count` * Style PROPRE token-only scopé ; AUCUN hex en dur. * * Slots : `leading` (prime sur `swatch`), `trailing` (prime sur `count`). */ export declare const NavItem: import("vue").DefineComponent NavItemDepth; default: number; }; swatch: { type: () => NavItemSwatch; default: undefined; }; count: { type: NumberConstructor; default: undefined; }; status: { type: () => NavItemStatus; default: string; }; selected: { type: BooleanConstructor; default: boolean; }; disabled: { type: BooleanConstructor; default: boolean; }; href: { type: StringConstructor; default: undefined; }; divider: { type: BooleanConstructor; default: boolean; }; onSelect: { type: () => (selected: boolean) => void; default: undefined; }; class: { type: StringConstructor; default: undefined; }; }>, () => VNode, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { select: (_selected: boolean) => true; }, string, import("vue").PublicProps, Readonly NavItemDepth; default: number; }; swatch: { type: () => NavItemSwatch; default: undefined; }; count: { type: NumberConstructor; default: undefined; }; status: { type: () => NavItemStatus; default: string; }; selected: { type: BooleanConstructor; default: boolean; }; disabled: { type: BooleanConstructor; default: boolean; }; href: { type: StringConstructor; default: undefined; }; divider: { type: BooleanConstructor; default: boolean; }; onSelect: { type: () => (selected: boolean) => void; default: undefined; }; class: { type: StringConstructor; default: undefined; }; }>> & Readonly<{ onSelect?: ((_selected: boolean) => any) | undefined; }>, { class: string; caption: string; onSelect: (selected: boolean) => void; disabled: boolean; href: string; status: NavItemStatus; value: string; count: number; divider: boolean; selected: boolean; depth: NavItemDepth; swatch: NavItemSwatch; }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>; //# sourceMappingURL=NavItem.d.ts.map