@nomosui/react 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +65 -0
- package/SKILL.md +166 -0
- package/dist/index.js +4591 -0
- package/dist/mcp/bin.js +46371 -0
- package/dist/types/catalogue/contract.d.ts +78 -0
- package/dist/types/catalogue/registry.d.ts +33 -0
- package/dist/types/components/alert/alert.d.ts +30 -0
- package/dist/types/components/alert/manifest.d.ts +3 -0
- package/dist/types/components/badge/badge.d.ts +25 -0
- package/dist/types/components/badge/manifest.d.ts +7 -0
- package/dist/types/components/button/button.d.ts +38 -0
- package/dist/types/components/button/manifest.d.ts +7 -0
- package/dist/types/components/card/card.d.ts +12 -0
- package/dist/types/components/card/manifest.d.ts +3 -0
- package/dist/types/components/checkbox/checkbox.d.ts +4 -0
- package/dist/types/components/checkbox/manifest.d.ts +3 -0
- package/dist/types/components/chip/chip.d.ts +36 -0
- package/dist/types/components/chip/manifest.d.ts +3 -0
- package/dist/types/components/counter/counter.d.ts +14 -0
- package/dist/types/components/counter/manifest.d.ts +3 -0
- package/dist/types/components/data-table-pagination/data-table-pagination.d.ts +20 -0
- package/dist/types/components/data-table-pagination/manifest.d.ts +3 -0
- package/dist/types/components/data-table-toolbar/data-table-toolbar.d.ts +34 -0
- package/dist/types/components/data-table-toolbar/manifest.d.ts +3 -0
- package/dist/types/components/empty-state/empty-state.d.ts +23 -0
- package/dist/types/components/empty-state/manifest.d.ts +3 -0
- package/dist/types/components/facet-filter/facet-filter.d.ts +23 -0
- package/dist/types/components/facet-filter/manifest.d.ts +6 -0
- package/dist/types/components/field/field.d.ts +15 -0
- package/dist/types/components/field/manifest.d.ts +3 -0
- package/dist/types/components/fieldset/fieldset.d.ts +3 -0
- package/dist/types/components/fieldset/manifest.d.ts +3 -0
- package/dist/types/components/form/form.d.ts +14 -0
- package/dist/types/components/form/manifest.d.ts +3 -0
- package/dist/types/components/freshness/freshness.d.ts +18 -0
- package/dist/types/components/freshness/manifest.d.ts +7 -0
- package/dist/types/components/input/input.d.ts +6 -0
- package/dist/types/components/input/manifest.d.ts +6 -0
- package/dist/types/components/label/label.d.ts +3 -0
- package/dist/types/components/label/manifest.d.ts +3 -0
- package/dist/types/components/meter/manifest.d.ts +6 -0
- package/dist/types/components/meter/meter.d.ts +23 -0
- package/dist/types/components/number-field/manifest.d.ts +3 -0
- package/dist/types/components/number-field/number-field.d.ts +7 -0
- package/dist/types/components/progress-bar/manifest.d.ts +3 -0
- package/dist/types/components/progress-bar/progress-bar.d.ts +12 -0
- package/dist/types/components/radio/manifest.d.ts +3 -0
- package/dist/types/components/radio/radio.d.ts +5 -0
- package/dist/types/components/rating/manifest.d.ts +3 -0
- package/dist/types/components/rating/rating.d.ts +19 -0
- package/dist/types/components/search-field/manifest.d.ts +3 -0
- package/dist/types/components/search-field/search-field.d.ts +14 -0
- package/dist/types/components/separator/manifest.d.ts +3 -0
- package/dist/types/components/separator/separator.d.ts +7 -0
- package/dist/types/components/skeleton/manifest.d.ts +3 -0
- package/dist/types/components/skeleton/skeleton.d.ts +3 -0
- package/dist/types/components/switch/manifest.d.ts +3 -0
- package/dist/types/components/switch/switch.d.ts +4 -0
- package/dist/types/components/table/manifest.d.ts +7 -0
- package/dist/types/components/table/table.d.ts +14 -0
- package/dist/types/components/textarea/manifest.d.ts +3 -0
- package/dist/types/components/textarea/textarea.d.ts +3 -0
- package/dist/types/components/timeline/manifest.d.ts +3 -0
- package/dist/types/components/timeline/timeline.d.ts +19 -0
- package/dist/types/components/toast/manifest.d.ts +3 -0
- package/dist/types/components/toast/toast.d.ts +35 -0
- package/dist/types/components/toggle/manifest.d.ts +3 -0
- package/dist/types/components/toggle/toggle.d.ts +31 -0
- package/dist/types/components/toggle-group/manifest.d.ts +6 -0
- package/dist/types/components/toggle-group/toggle-group.d.ts +8 -0
- package/dist/types/components/tree/manifest.d.ts +7 -0
- package/dist/types/components/tree/tree.d.ts +42 -0
- package/dist/types/features/data-table-features.d.ts +29 -0
- package/dist/types/features/faceted-data-table.d.ts +99 -0
- package/dist/types/features/toast.d.ts +33 -0
- package/dist/types/index.d.ts +112 -0
- package/dist/types/internal/dropdown-menu.d.ts +27 -0
- package/dist/types/internal/select.d.ts +13 -0
- package/dist/types/internal/sheet.d.ts +25 -0
- package/dist/types/internal/tooltip.d.ts +7 -0
- package/dist/types/lib/cn.d.ts +6 -0
- package/dist/types/lib/tone.d.ts +12 -0
- package/dist/types/tokens/build.d.mts +68 -0
- package/dist/types/tokens/resource.d.ts +8 -0
- package/dist/types/tokens/skin.d.ts +9 -0
- package/package.json +107 -0
- package/scripts/install-skill.mjs +28 -0
- package/tokens/theme.css +63 -0
- package/tokens/tokens.generated.css +271 -0
- package/tokens/tokens.json +225 -0
- package/tokens/tokens.resource.json +138 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ComponentProps } from 'react';
|
|
2
|
+
import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
|
|
3
|
+
/** Un groupe de boutons radio ; l'app possède la valeur et le rappel. */
|
|
4
|
+
export declare function RadioGroup({ className, ...props }: ComponentProps<typeof RadioGroupPrimitive.Root>): import("react").JSX.Element;
|
|
5
|
+
export declare function RadioGroupItem({ className, ...props }: ComponentProps<typeof RadioGroupPrimitive.Item>): import("react").JSX.Element;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* La note (ADR 0015) : `value` sur `max` étoiles, **contrôlée**. Interactive seulement si
|
|
3
|
+
* l'app fournit `onValueChange` (sinon un affichage, `role="img"`). A11y : `radiogroup` de
|
|
4
|
+
* `radio`, flèches et Home/End. Aucun libellé n'est inventé : le nom accessible vient de
|
|
5
|
+
* l'appelant.
|
|
6
|
+
*/
|
|
7
|
+
export type RatingProps = {
|
|
8
|
+
value: number;
|
|
9
|
+
/** Le nombre d'étoiles : 5 par défaut. */
|
|
10
|
+
max?: number;
|
|
11
|
+
/** Rend la note interactive quand fourni ; l'app porte la valeur. */
|
|
12
|
+
onValueChange?: (value: number) => void;
|
|
13
|
+
/** Affichage seul, même si `onValueChange` est fourni. */
|
|
14
|
+
readOnly?: boolean;
|
|
15
|
+
/** Le nom accessible du groupe ; le cœur n'a pas d'i18n. */
|
|
16
|
+
ariaLabel?: string;
|
|
17
|
+
className?: string;
|
|
18
|
+
};
|
|
19
|
+
export declare function Rating({ value, max, onValueChange, readOnly, ariaLabel, className, }: RatingProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Le champ de recherche du cœur : une icône, un `<input type="search">` et un bouton
|
|
3
|
+
* d'effacement qui n'apparaît que si le champ est rempli. Contrôlé par props ; aucun
|
|
4
|
+
* état, aucun i18n — le libellé « effacer » est injecté (ADR 0015).
|
|
5
|
+
*/
|
|
6
|
+
export type SearchFieldProps = {
|
|
7
|
+
value: string;
|
|
8
|
+
onChange: (value: string) => void;
|
|
9
|
+
/** Le libellé du bouton d'effacement (le cœur n'a pas d'i18n). */
|
|
10
|
+
clearLabel: string;
|
|
11
|
+
placeholder?: string;
|
|
12
|
+
className?: string;
|
|
13
|
+
};
|
|
14
|
+
export declare function SearchField({ value, onChange, clearLabel, placeholder, className, }: SearchFieldProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ComponentProps } from 'react';
|
|
2
|
+
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
3
|
+
/**
|
|
4
|
+
* Un séparateur : un trait de bordure qui sépare deux contenus, horizontal ou vertical.
|
|
5
|
+
* Décoratif par défaut (Radix), donc invisible aux lecteurs d'écran sauf demande.
|
|
6
|
+
*/
|
|
7
|
+
export declare function Separator({ className, orientation, decorative, ...props }: ComponentProps<typeof SeparatorPrimitive.Root>): import("react").JSX.Element;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ComponentProps } from 'react';
|
|
2
|
+
import * as SwitchPrimitive from '@radix-ui/react-switch';
|
|
3
|
+
/** Un interrupteur contrôlé : le cœur fournit l'apparence et l'a11y (Radix), pas l'état. */
|
|
4
|
+
export declare function Switch({ className, ...props }: ComponentProps<typeof SwitchPrimitive.Root>): import("react").JSX.Element;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ComponentManifest } from '../../catalogue/contract';
|
|
2
|
+
/**
|
|
3
|
+
* Le manifeste de la table (ADR 0005). La table est un atome composé : le catalogue
|
|
4
|
+
* enregistre la coquille `Table`, et le manifeste documente le jeu de parts — c'est
|
|
5
|
+
* l'ensemble qui se pose, pas la coquille seule.
|
|
6
|
+
*/
|
|
7
|
+
export declare const tableManifest: ComponentManifest;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ComponentProps } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* La table dense : une grille de lignes, en parts importables séparément. Aucune part
|
|
4
|
+
* ne nomme un produit ni ne lit l'i18n de l'app — les libellés viennent de l'appelant,
|
|
5
|
+
* les cellules de ce qu'il rend (ADR 0010).
|
|
6
|
+
*
|
|
7
|
+
* Les classes de l'appelant se fusionnent après celles du cœur, jamais avant.
|
|
8
|
+
*/
|
|
9
|
+
export declare function Table({ className, ...props }: ComponentProps<'table'>): import("react").JSX.Element;
|
|
10
|
+
export declare function TableHeader({ className, ...props }: ComponentProps<'thead'>): import("react").JSX.Element;
|
|
11
|
+
export declare function TableBody({ className, ...props }: ComponentProps<'tbody'>): import("react").JSX.Element;
|
|
12
|
+
export declare function TableRow({ className, ...props }: ComponentProps<'tr'>): import("react").JSX.Element;
|
|
13
|
+
export declare function TableHead({ className, ...props }: ComponentProps<'th'>): import("react").JSX.Element;
|
|
14
|
+
export declare function TableCell({ className, ...props }: ComponentProps<'td'>): import("react").JSX.Element;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* La frise (ADR 0015) : une suite d'événements datés, du plus récent au plus ancien.
|
|
4
|
+
* Présentation seule — l'ordre, le format de `at` et le texte viennent de l'appelant.
|
|
5
|
+
* Aucune donnée d'app, aucun état.
|
|
6
|
+
*/
|
|
7
|
+
export type TimelineItem = {
|
|
8
|
+
id: string;
|
|
9
|
+
/** La date/l'heure déjà formatée, fournie par l'appelant. */
|
|
10
|
+
at: string;
|
|
11
|
+
label: string;
|
|
12
|
+
detail?: string;
|
|
13
|
+
};
|
|
14
|
+
export type TimelineProps = HTMLAttributes<HTMLOListElement> & {
|
|
15
|
+
items: TimelineItem[];
|
|
16
|
+
/** Le nom accessible de la frise ; le cœur n'a pas d'i18n. */
|
|
17
|
+
ariaLabel?: string;
|
|
18
|
+
};
|
|
19
|
+
export declare function Timeline({ items, ariaLabel, className, ...props }: TimelineProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type Tone } from '../../lib/tone';
|
|
3
|
+
type ToastBase = {
|
|
4
|
+
/** Le ton : une intention, pas une couleur (cf. `toneClasses`). Défaut `info`. */
|
|
5
|
+
tone?: Tone;
|
|
6
|
+
/** Le message principal : une ligne, jamais une phrase. */
|
|
7
|
+
message: ReactNode;
|
|
8
|
+
/** Un détail sous le message, plus discret (sortie de script, cause). */
|
|
9
|
+
description?: ReactNode;
|
|
10
|
+
/** Une action : un bouton, un lien. */
|
|
11
|
+
action?: ReactNode;
|
|
12
|
+
/** Remplace l'icône par défaut du ton. */
|
|
13
|
+
icon?: ReactNode;
|
|
14
|
+
/** Les classes de l'appelant, fusionnées après celles du cœur. */
|
|
15
|
+
className?: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Le bouton de fermeture exige son libellé accessible : `onClose` et `closeLabel` vont
|
|
19
|
+
* ensemble, ou pas du tout (le cœur n'a pas d'i18n).
|
|
20
|
+
*/
|
|
21
|
+
type ToastClose = {
|
|
22
|
+
onClose?: undefined;
|
|
23
|
+
closeLabel?: undefined;
|
|
24
|
+
} | {
|
|
25
|
+
onClose: () => void;
|
|
26
|
+
closeLabel: string;
|
|
27
|
+
};
|
|
28
|
+
export type ToastProps = ToastBase & ToastClose;
|
|
29
|
+
/**
|
|
30
|
+
* La notification : une carte flottante qui dit ce qu'une action a produit. Présentation
|
|
31
|
+
* seule — la **file** et les minuteurs vivent dans `ToastProvider` (ADR 0020). L'app
|
|
32
|
+
* fournit le message, l'action et le libellé de fermeture.
|
|
33
|
+
*/
|
|
34
|
+
export declare function Toast({ tone, message, description, action, icon, onClose, closeLabel, className, }: ToastProps): import("react").JSX.Element;
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ComponentProps } from 'react';
|
|
2
|
+
import * as TogglePrimitive from '@radix-ui/react-toggle';
|
|
3
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
4
|
+
/**
|
|
5
|
+
* Le bouton à deux états : pressé ou non. Un `Switch` dit un réglage qui persiste ; un
|
|
6
|
+
* `Toggle` est une bascule ponctuelle (mode d'affichage, filtre). Contrôlé par props —
|
|
7
|
+
* `pressed` + `onPressedChange` — ou laissé libre via `defaultPressed` (ADR 0015).
|
|
8
|
+
*/
|
|
9
|
+
export declare const toggleVariantsConfig: {
|
|
10
|
+
readonly variants: {
|
|
11
|
+
readonly variant: {
|
|
12
|
+
readonly default: "bg-transparent";
|
|
13
|
+
readonly outline: "border border-input bg-transparent hover:bg-accent hover:text-accent-foreground";
|
|
14
|
+
};
|
|
15
|
+
readonly size: {
|
|
16
|
+
readonly default: "h-10 px-3 min-w-10";
|
|
17
|
+
readonly sm: "h-9 px-2.5 min-w-9";
|
|
18
|
+
readonly lg: "h-11 px-5 min-w-11";
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
readonly defaultVariants: {
|
|
22
|
+
readonly variant: "default";
|
|
23
|
+
readonly size: "default";
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export declare const toggleVariants: (props?: ({
|
|
27
|
+
readonly variant?: "default" | "outline" | null | undefined;
|
|
28
|
+
readonly size?: "default" | "sm" | "lg" | null | undefined;
|
|
29
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
30
|
+
export type ToggleProps = ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>;
|
|
31
|
+
export declare function Toggle({ className, variant, size, ...props }: ToggleProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ComponentManifest } from '../../catalogue/contract';
|
|
2
|
+
/**
|
|
3
|
+
* Le manifeste du groupe de bascules (ADR 0005, ADR 0015). Le catalogue enregistre le
|
|
4
|
+
* groupe ; les items sont des parts importables.
|
|
5
|
+
*/
|
|
6
|
+
export declare const toggleGroupManifest: ComponentManifest;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ComponentProps } from 'react';
|
|
2
|
+
import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
|
|
3
|
+
import type { VariantProps } from 'class-variance-authority';
|
|
4
|
+
import { toggleVariants } from '../toggle/toggle';
|
|
5
|
+
type ToggleGroupVariants = VariantProps<typeof toggleVariants>;
|
|
6
|
+
export declare function ToggleGroup({ className, variant, size, children, ...props }: ComponentProps<typeof ToggleGroupPrimitive.Root> & ToggleGroupVariants): import("react").JSX.Element;
|
|
7
|
+
export declare function ToggleGroupItem({ className, variant, size, ...props }: ComponentProps<typeof ToggleGroupPrimitive.Item> & ToggleGroupVariants): import("react").JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ComponentManifest } from '../../catalogue/contract';
|
|
2
|
+
/**
|
|
3
|
+
* Le manifeste de l'Arbre (ADR 0005, ADR 0015). Il documente les deux exports du même
|
|
4
|
+
* atome : `Tree` (navigation, sélection simple) et `SelectionTree` (sélection multiple),
|
|
5
|
+
* comme le Meter documente ses deux tailles.
|
|
6
|
+
*/
|
|
7
|
+
export declare const treeManifest: ComponentManifest;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* L'arbre (ADR 0015) : une hiérarchie de nœuds, **contrôlée par props**. Le cœur ne
|
|
3
|
+
* possède ni l'expansion ni la sélection — l'app les porte (`expandedIds`, `selectedId`
|
|
4
|
+
* ou `selectedIds`) et reçoit les gestes par rappel, comme la `DataTable` reçoit son état
|
|
5
|
+
* (ADR 0010). Seul le **focus** (navigation clavier) est interne : c'est de la mécanique,
|
|
6
|
+
* pas une donnée d'app.
|
|
7
|
+
*
|
|
8
|
+
* `Tree` navigue et ouvre (sélection simple) ; `SelectionTree` coche plusieurs nœuds.
|
|
9
|
+
* A11y : rôle `tree` / `treeitem`, `aria-expanded`, `aria-selected`, et les flèches.
|
|
10
|
+
*/
|
|
11
|
+
export type TreeNode = {
|
|
12
|
+
id: string;
|
|
13
|
+
label: string;
|
|
14
|
+
/** Les enfants : un nœud sans enfants est une feuille. */
|
|
15
|
+
children?: TreeNode[];
|
|
16
|
+
};
|
|
17
|
+
type TreeBaseProps = {
|
|
18
|
+
nodes: TreeNode[];
|
|
19
|
+
/** Les ids des nœuds ouverts (contrôlé). */
|
|
20
|
+
expandedIds?: string[];
|
|
21
|
+
/** Appelé pour ouvrir/fermer un nœud — l'app décide du nouvel état. */
|
|
22
|
+
onToggle?: (id: string) => void;
|
|
23
|
+
/** Les ids des nœuds sélectionnés (contrôlé). */
|
|
24
|
+
selectedIds?: string[];
|
|
25
|
+
/** Appelé au clic ou à Entrée/Espace — l'app décide de la suite. */
|
|
26
|
+
onSelect?: (id: string) => void;
|
|
27
|
+
multi?: boolean;
|
|
28
|
+
/** Le nom accessible de l'arbre ; le cœur n'invente aucun libellé. */
|
|
29
|
+
ariaLabel?: string;
|
|
30
|
+
className?: string;
|
|
31
|
+
};
|
|
32
|
+
export type TreeProps = Omit<TreeBaseProps, 'selectedIds' | 'multi'> & {
|
|
33
|
+
/** Le nœud sélectionné (contrôlé, optionnel) : la navigation. */
|
|
34
|
+
selectedId?: string | null;
|
|
35
|
+
};
|
|
36
|
+
export declare function Tree({ selectedId, ...props }: TreeProps): import("react").JSX.Element;
|
|
37
|
+
export type SelectionTreeProps = Omit<TreeBaseProps, 'multi'> & {
|
|
38
|
+
/** Les nœuds cochés (contrôlé) : la sélection multiple. */
|
|
39
|
+
selectedIds?: string[];
|
|
40
|
+
};
|
|
41
|
+
export declare function SelectionTree(props: SelectionTreeProps): import("react").JSX.Element;
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ce qu'une colonne peut porter au-delà de sa définition TanStack. Le tri par défaut
|
|
3
|
+
* vit ici, porté par la colonne : le cœur ne connaît aucun mot produit (ADR 0010).
|
|
4
|
+
*/
|
|
5
|
+
export type DataTableColumnMeta = {
|
|
6
|
+
defaultSort?: 'asc' | 'desc';
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Le seul jeu de fonctionnalités que partagent les tables d'objets routés : filtrage
|
|
10
|
+
* par facettes des colonnes, recherche globale, tri et pagination.
|
|
11
|
+
*/
|
|
12
|
+
export declare const dataTableFeatures: {
|
|
13
|
+
columnFilteringFeature: import("@tanstack/table-core").TableFeature;
|
|
14
|
+
columnVisibilityFeature: import("@tanstack/table-core").TableFeature;
|
|
15
|
+
globalFilteringFeature: import("@tanstack/table-core").TableFeature;
|
|
16
|
+
rowSortingFeature: import("@tanstack/table-core").TableFeature;
|
|
17
|
+
rowPaginationFeature: import("@tanstack/table-core").TableFeature;
|
|
18
|
+
filteredRowModel: (table: import("@tanstack/table-core").Table<any, any>) => () => import("@tanstack/table-core").RowModel<any, any>;
|
|
19
|
+
sortedRowModel: (table: import("@tanstack/table-core").Table<any, any>) => () => import("@tanstack/table-core").RowModel<any, any>;
|
|
20
|
+
paginatedRowModel: (table: import("@tanstack/table-core").Table<any, any>) => () => import("@tanstack/table-core").RowModel<any, any>;
|
|
21
|
+
columnMeta: DataTableColumnMeta;
|
|
22
|
+
sortFns: {
|
|
23
|
+
alphanumeric: import("@tanstack/table-core").CreatedSortFn<any, any>;
|
|
24
|
+
basic: import("@tanstack/table-core").CreatedSortFn<any, any>;
|
|
25
|
+
datetime: import("@tanstack/table-core").CreatedSortFn<any, any>;
|
|
26
|
+
text: import("@tanstack/table-core").CreatedSortFn<any, any>;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
export type DataTableFeatures = typeof dataTableFeatures;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type ColumnDef, type ColumnFiltersState, type ColumnVisibilityState, type FilterFn, type RowData, type SortingState } from '@tanstack/react-table';
|
|
3
|
+
import type { FacetOption } from '../components/facet-filter/facet-filter';
|
|
4
|
+
import { type DataTableFeatures } from './data-table-features';
|
|
5
|
+
/**
|
|
6
|
+
* La coquille de table à facettes : barre d'outils, corps trié/paginé, sélection
|
|
7
|
+
* optionnelle, détail de ligne optionnel. C'est une **feature** (ADR 0010), pas un
|
|
8
|
+
* atome : elle porte le comportement — dont le fait qu'une ligne ouvre un détail, et son
|
|
9
|
+
* placement (surcouche ou en ligne) — quand l'app fournit les colonnes, les facettes et
|
|
10
|
+
* le **contenu** (du détail comme des actions de masse).
|
|
11
|
+
*
|
|
12
|
+
* **Contrôlable** (ADR 0014) : sans `state`, elle garde son état interne ; avec `state` +
|
|
13
|
+
* `onStateChange`, l'app est la source de vérité — c'est par là que la synchro URL passe,
|
|
14
|
+
* sans que le cœur connaisse react-router.
|
|
15
|
+
*/
|
|
16
|
+
export type FacetDef = {
|
|
17
|
+
id: string;
|
|
18
|
+
label: string;
|
|
19
|
+
options: FacetOption[];
|
|
20
|
+
};
|
|
21
|
+
export type DataTableLabels = {
|
|
22
|
+
search: string;
|
|
23
|
+
reset: string;
|
|
24
|
+
clear: string;
|
|
25
|
+
empty: string;
|
|
26
|
+
unit: string;
|
|
27
|
+
shown: (shown: number, total: number, unit: string) => string;
|
|
28
|
+
rows: string;
|
|
29
|
+
pageOf: (page: number, total: number) => string;
|
|
30
|
+
previous: string;
|
|
31
|
+
next: string;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* L'état d'une table, tel qu'on peut le contrôler de l'extérieur. `openedKey` est la clé
|
|
35
|
+
* (fournie par `rowKey`) de la ligne dont le détail est ouvert, ou `null` ; `selection`
|
|
36
|
+
* est la liste des clés sélectionnées.
|
|
37
|
+
*/
|
|
38
|
+
export type TableState = {
|
|
39
|
+
sorting: SortingState;
|
|
40
|
+
globalFilter: string;
|
|
41
|
+
columnFilters: ColumnFiltersState;
|
|
42
|
+
pagination: {
|
|
43
|
+
pageIndex: number;
|
|
44
|
+
pageSize: number;
|
|
45
|
+
};
|
|
46
|
+
openedKey: string | null;
|
|
47
|
+
selection: string[];
|
|
48
|
+
columnVisibility: ColumnVisibilityState;
|
|
49
|
+
columnOrder: string[];
|
|
50
|
+
};
|
|
51
|
+
/** La clé stable d'une ligne (pour l'URL, le détail partageable, la sélection). */
|
|
52
|
+
export type RowKey<T> = (row: T) => string;
|
|
53
|
+
/**
|
|
54
|
+
* Le détail d'une ligne : la coquille possède le placement, l'app le contenu. `overlay`
|
|
55
|
+
* ouvre une surcouche (défaut), `inline` déplie la ligne.
|
|
56
|
+
*/
|
|
57
|
+
export type RowDetail<T> = {
|
|
58
|
+
placement?: 'overlay' | 'inline';
|
|
59
|
+
render: (row: T) => ReactNode;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* La sélection de lignes : la coquille possède les cases et la barre, l'app fournit le
|
|
63
|
+
* **contenu** de la barre d'actions de masse et ses libellés.
|
|
64
|
+
*/
|
|
65
|
+
export type RowSelection<T> = {
|
|
66
|
+
bulkActions?: (selected: T[]) => ReactNode;
|
|
67
|
+
selectAllLabel: string;
|
|
68
|
+
selectRowLabel: (row: T) => string;
|
|
69
|
+
selectedLabel: (count: number) => string;
|
|
70
|
+
clearLabel: string;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* La gestion des colonnes : la coquille possède le menu et l'état de visibilité, l'app
|
|
74
|
+
* fournit la liste des colonnes masquables et leurs libellés.
|
|
75
|
+
*/
|
|
76
|
+
export type ColumnManager = {
|
|
77
|
+
label: string;
|
|
78
|
+
clearLabel: string;
|
|
79
|
+
columns: {
|
|
80
|
+
id: string;
|
|
81
|
+
label: string;
|
|
82
|
+
}[];
|
|
83
|
+
moveUpLabel: (label: string) => string;
|
|
84
|
+
moveDownLabel: (label: string) => string;
|
|
85
|
+
};
|
|
86
|
+
export declare function FacetedDataTable<T extends RowData>({ data, renderColumns, facets, globalFilterFn, labels, detail, selection, columnManager, rowKey, state, onStateChange, actions, }: {
|
|
87
|
+
data: T[];
|
|
88
|
+
renderColumns: (openDetail: (row: T) => void) => ColumnDef<DataTableFeatures, T>[];
|
|
89
|
+
facets: FacetDef[];
|
|
90
|
+
globalFilterFn: FilterFn<DataTableFeatures, T>;
|
|
91
|
+
labels: DataTableLabels;
|
|
92
|
+
detail?: RowDetail<T>;
|
|
93
|
+
selection?: RowSelection<T>;
|
|
94
|
+
columnManager?: ColumnManager;
|
|
95
|
+
rowKey?: RowKey<T>;
|
|
96
|
+
state?: TableState;
|
|
97
|
+
onStateChange?: (next: TableState) => void;
|
|
98
|
+
actions?: ReactNode;
|
|
99
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { Tone } from '../lib/tone';
|
|
3
|
+
/**
|
|
4
|
+
* La file de notifications (ADR 0020) : `ToastProvider` possède l'état (la file, les
|
|
5
|
+
* minuteurs d'auto-fermeture) et `useToast` l'expose. La **présentation** est le `Toast`
|
|
6
|
+
* du catalogue ; le cœur fournit la file, l'app le contenu. Aucune dépendance externe.
|
|
7
|
+
*/
|
|
8
|
+
export type ToastOptions = {
|
|
9
|
+
tone?: Tone;
|
|
10
|
+
message: ReactNode;
|
|
11
|
+
description?: ReactNode;
|
|
12
|
+
action?: ReactNode;
|
|
13
|
+
/** Ne pas fermer automatiquement. */
|
|
14
|
+
persistent?: boolean;
|
|
15
|
+
/** La durée avant auto-fermeture (ms), sinon celle du provider. */
|
|
16
|
+
duration?: number;
|
|
17
|
+
};
|
|
18
|
+
export type ToastApi = {
|
|
19
|
+
/** Affiche une notification et rend son identifiant. */
|
|
20
|
+
show: (options: ToastOptions) => string;
|
|
21
|
+
/** Met à jour une notification existante (même identifiant). */
|
|
22
|
+
update: (id: string, options: Partial<ToastOptions>) => void;
|
|
23
|
+
/** Ferme une notification. */
|
|
24
|
+
dismiss: (id: string) => void;
|
|
25
|
+
};
|
|
26
|
+
export declare function useToast(): ToastApi;
|
|
27
|
+
export declare function ToastProvider({ children, closeLabel, duration, }: {
|
|
28
|
+
children: ReactNode;
|
|
29
|
+
/** Le libellé accessible du bouton de fermeture ; absent, pas de bouton (auto-fermeture). */
|
|
30
|
+
closeLabel?: string;
|
|
31
|
+
/** La durée d'auto-fermeture par défaut (ms). */
|
|
32
|
+
duration?: number;
|
|
33
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* La surface publique du design system.
|
|
3
|
+
*
|
|
4
|
+
* Rien n'entre ici qui nomme un produit : le cœur est app-agnostique et partageable
|
|
5
|
+
* (ADR 0002). Un composant qui a besoin d'un mot produit pour s'expliquer appartient
|
|
6
|
+
* à l'app, pas à ce paquet.
|
|
7
|
+
*/
|
|
8
|
+
export { Alert } from './components/alert/alert';
|
|
9
|
+
export type { AlertProps } from './components/alert/alert';
|
|
10
|
+
export { alertManifest } from './components/alert/manifest';
|
|
11
|
+
export { Badge, badgeVariants, badgeVariantsConfig } from './components/badge/badge';
|
|
12
|
+
export type { BadgeProps } from './components/badge/badge';
|
|
13
|
+
export { badgeManifest } from './components/badge/manifest';
|
|
14
|
+
export { Button, buttonVariants, buttonVariantsConfig } from './components/button/button';
|
|
15
|
+
export type { ButtonProps } from './components/button/button';
|
|
16
|
+
export { buttonManifest } from './components/button/manifest';
|
|
17
|
+
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from './components/card/card';
|
|
18
|
+
export { cardManifest } from './components/card/manifest';
|
|
19
|
+
export { EmptyState } from './components/empty-state/empty-state';
|
|
20
|
+
export type { EmptyStateProps } from './components/empty-state/empty-state';
|
|
21
|
+
export { emptyStateManifest } from './components/empty-state/manifest';
|
|
22
|
+
export { Chip } from './components/chip/chip';
|
|
23
|
+
export type { ChipProps } from './components/chip/chip';
|
|
24
|
+
export { chipManifest } from './components/chip/manifest';
|
|
25
|
+
export { Freshness } from './components/freshness/freshness';
|
|
26
|
+
export type { FreshnessProps } from './components/freshness/freshness';
|
|
27
|
+
export { freshnessManifest } from './components/freshness/manifest';
|
|
28
|
+
export { Input } from './components/input/input';
|
|
29
|
+
export { inputManifest } from './components/input/manifest';
|
|
30
|
+
export { NumberField } from './components/number-field/number-field';
|
|
31
|
+
export { numberFieldManifest } from './components/number-field/manifest';
|
|
32
|
+
export { SearchField } from './components/search-field/search-field';
|
|
33
|
+
export type { SearchFieldProps } from './components/search-field/search-field';
|
|
34
|
+
export { searchFieldManifest } from './components/search-field/manifest';
|
|
35
|
+
export { Label } from './components/label/label';
|
|
36
|
+
export { labelManifest } from './components/label/manifest';
|
|
37
|
+
export { Fieldset } from './components/fieldset/fieldset';
|
|
38
|
+
export { fieldsetManifest } from './components/fieldset/manifest';
|
|
39
|
+
export { Field } from './components/field/field';
|
|
40
|
+
export type { FieldProps } from './components/field/field';
|
|
41
|
+
export { fieldManifest } from './components/field/manifest';
|
|
42
|
+
export { Form } from './components/form/form';
|
|
43
|
+
export type { FormProps } from './components/form/form';
|
|
44
|
+
export { formManifest } from './components/form/manifest';
|
|
45
|
+
export { FacetFilter } from './components/facet-filter/facet-filter';
|
|
46
|
+
export type { Facet, FacetFilterProps, FacetOption } from './components/facet-filter/facet-filter';
|
|
47
|
+
export { facetFilterManifest } from './components/facet-filter/manifest';
|
|
48
|
+
export { DataTableToolbar } from './components/data-table-toolbar/data-table-toolbar';
|
|
49
|
+
export type { DataTableToolbarProps } from './components/data-table-toolbar/data-table-toolbar';
|
|
50
|
+
export { dataTableToolbarManifest } from './components/data-table-toolbar/manifest';
|
|
51
|
+
export { DataTablePagination } from './components/data-table-pagination/data-table-pagination';
|
|
52
|
+
export type { DataTablePaginationProps } from './components/data-table-pagination/data-table-pagination';
|
|
53
|
+
export { dataTablePaginationManifest } from './components/data-table-pagination/manifest';
|
|
54
|
+
export { FacetedDataTable } from './features/faceted-data-table';
|
|
55
|
+
export type { ColumnManager, DataTableLabels, FacetDef, RowDetail, RowKey, RowSelection, TableState, } from './features/faceted-data-table';
|
|
56
|
+
export { dataTableFeatures, type DataTableColumnMeta, type DataTableFeatures, } from './features/data-table-features';
|
|
57
|
+
export { SheetDescription, SheetHeader, SheetTitle } from './internal/sheet';
|
|
58
|
+
export { TooltipProvider } from './internal/tooltip';
|
|
59
|
+
export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, } from './internal/select';
|
|
60
|
+
export { CompactMeter, Meter } from './components/meter/meter';
|
|
61
|
+
export type { CompactMeterProps, MeterProps } from './components/meter/meter';
|
|
62
|
+
export { meterManifest } from './components/meter/manifest';
|
|
63
|
+
export { Separator } from './components/separator/separator';
|
|
64
|
+
export { separatorManifest } from './components/separator/manifest';
|
|
65
|
+
export { Skeleton } from './components/skeleton/skeleton';
|
|
66
|
+
export { skeletonManifest } from './components/skeleton/manifest';
|
|
67
|
+
export { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from './components/table/table';
|
|
68
|
+
export { tableManifest } from './components/table/manifest';
|
|
69
|
+
export { Textarea } from './components/textarea/textarea';
|
|
70
|
+
export { textareaManifest } from './components/textarea/manifest';
|
|
71
|
+
export { Checkbox } from './components/checkbox/checkbox';
|
|
72
|
+
export { checkboxManifest } from './components/checkbox/manifest';
|
|
73
|
+
export { Switch } from './components/switch/switch';
|
|
74
|
+
export { switchManifest } from './components/switch/manifest';
|
|
75
|
+
export { RadioGroup, RadioGroupItem } from './components/radio/radio';
|
|
76
|
+
export { radioManifest } from './components/radio/manifest';
|
|
77
|
+
export { Toggle, toggleVariants, toggleVariantsConfig } from './components/toggle/toggle';
|
|
78
|
+
export type { ToggleProps } from './components/toggle/toggle';
|
|
79
|
+
export { toggleManifest } from './components/toggle/manifest';
|
|
80
|
+
export { ToggleGroup, ToggleGroupItem } from './components/toggle-group/toggle-group';
|
|
81
|
+
export { toggleGroupManifest } from './components/toggle-group/manifest';
|
|
82
|
+
export { Toast } from './components/toast/toast';
|
|
83
|
+
export type { ToastProps } from './components/toast/toast';
|
|
84
|
+
export { toastManifest } from './components/toast/manifest';
|
|
85
|
+
export { ToastProvider, useToast } from './features/toast';
|
|
86
|
+
export type { ToastApi, ToastOptions } from './features/toast';
|
|
87
|
+
export { SelectionTree, Tree } from './components/tree/tree';
|
|
88
|
+
export type { SelectionTreeProps, TreeProps, TreeNode } from './components/tree/tree';
|
|
89
|
+
export { treeManifest } from './components/tree/manifest';
|
|
90
|
+
export { Counter } from './components/counter/counter';
|
|
91
|
+
export type { CounterProps } from './components/counter/counter';
|
|
92
|
+
export { counterManifest } from './components/counter/manifest';
|
|
93
|
+
export { ProgressBar } from './components/progress-bar/progress-bar';
|
|
94
|
+
export type { ProgressBarProps } from './components/progress-bar/progress-bar';
|
|
95
|
+
export { progressBarManifest } from './components/progress-bar/manifest';
|
|
96
|
+
export { Rating } from './components/rating/rating';
|
|
97
|
+
export type { RatingProps } from './components/rating/rating';
|
|
98
|
+
export { ratingManifest } from './components/rating/manifest';
|
|
99
|
+
export { Timeline } from './components/timeline/timeline';
|
|
100
|
+
export type { TimelineItem, TimelineProps } from './components/timeline/timeline';
|
|
101
|
+
export { timelineManifest } from './components/timeline/manifest';
|
|
102
|
+
export { catalogue, componentNames, findComponent, validateCatalogue } from './catalogue/registry';
|
|
103
|
+
export type { CatalogueEntry } from './catalogue/registry';
|
|
104
|
+
export { componentManifestSchema } from './catalogue/contract';
|
|
105
|
+
export type { ComponentManifest, ComponentProp, ComponentUsage, ComponentVariant, } from './catalogue/contract';
|
|
106
|
+
export { cn } from './lib/cn';
|
|
107
|
+
export { TONES, toneClasses } from './lib/tone';
|
|
108
|
+
export type { Tone } from './lib/tone';
|
|
109
|
+
export { resolveSkin } from './tokens/skin';
|
|
110
|
+
export { renderCss } from './tokens/build.mjs';
|
|
111
|
+
export type { TokensDocument } from './tokens/build.mjs';
|
|
112
|
+
export { tokensResource } from './tokens/resource';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
3
|
+
declare const DropdownMenu: React.FC<DropdownMenuPrimitive.DropdownMenuProps>;
|
|
4
|
+
declare const DropdownMenuTrigger: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
5
|
+
declare const DropdownMenuGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
+
declare const DropdownMenuPortal: React.FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
|
|
7
|
+
declare const DropdownMenuSub: React.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
|
|
8
|
+
declare const DropdownMenuRadioGroup: React.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuRadioGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
9
|
+
declare const DropdownMenuSubTrigger: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubTriggerProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
10
|
+
inset?: boolean;
|
|
11
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
12
|
+
declare const DropdownMenuSubContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
13
|
+
declare const DropdownMenuContent: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
14
|
+
declare const DropdownMenuItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
15
|
+
inset?: boolean;
|
|
16
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
17
|
+
declare const DropdownMenuCheckboxItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuCheckboxItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
declare const DropdownMenuRadioItem: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuRadioItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
19
|
+
declare const DropdownMenuLabel: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
20
|
+
inset?: boolean;
|
|
21
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
22
|
+
declare const DropdownMenuSeparator: React.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
23
|
+
declare const DropdownMenuShortcut: {
|
|
24
|
+
({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>): React.JSX.Element;
|
|
25
|
+
displayName: string;
|
|
26
|
+
};
|
|
27
|
+
export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuRadioGroup, };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
3
|
+
declare const Select: React.FC<SelectPrimitive.SelectProps>;
|
|
4
|
+
declare const SelectGroup: React.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
5
|
+
declare const SelectValue: React.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React.RefAttributes<HTMLSpanElement>>;
|
|
6
|
+
declare const SelectTrigger: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
7
|
+
declare const SelectScrollUpButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollUpButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
+
declare const SelectScrollDownButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollDownButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
9
|
+
declare const SelectContent: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
10
|
+
declare const SelectLabel: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
declare const SelectItem: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
12
|
+
declare const SelectSeparator: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
13
|
+
export { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, };
|