@hex-core/components 1.5.0 → 1.7.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.
@@ -51,6 +51,7 @@ import { toast } from 'sonner';
51
51
  import { Toaster as Toaster_2 } from 'sonner';
52
52
  import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
53
53
  import * as TogglePrimitive from '@radix-ui/react-toggle';
54
+ import * as ToolbarPrimitive from '@radix-ui/react-toolbar';
54
55
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
55
56
  import { VariantProps } from 'class-variance-authority';
56
57
 
@@ -179,6 +180,76 @@ declare const aspectRatioSchema: ComponentSchemaDefinition;
179
180
  export { aspectRatioSchema }
180
181
  export { aspectRatioSchema as aspectRatioSchema_alias_1 }
181
182
 
183
+ /**
184
+ * A file / image attachment thumbnail with an optional remove affordance
185
+ * and optional upload-progress overlay. Composes with the existing
186
+ * `Composer` AI primitive (drop into Composer's children slot to render
187
+ * as part of the message draft).
188
+ *
189
+ * Auto-detects the visual variant: image MIME + `preview` URL → image
190
+ * thumbnail; everything else → typed file icon with name + size.
191
+ *
192
+ * Distinct from {@link Dropzone} (the upload-input affordance) and
193
+ * static {@link Card} previews (no remove/progress UI).
194
+ *
195
+ * @example
196
+ * ```tsx
197
+ * <Attachment
198
+ * file={{ name: "screenshot.png", size: 124000, type: "image/png", preview: objectUrl }}
199
+ * onRemove={() => removeFromDraft("screenshot.png")}
200
+ * />
201
+ * ```
202
+ */
203
+ declare function Attachment({ className, variant, file, onRemove, progress, ref, ...props }: AttachmentProps): JSX.Element;
204
+ export { Attachment }
205
+ export { Attachment as Attachment_alias_1 }
206
+
207
+ /** A file-shaped attachment metadata object accepted by `<Attachment>`. */
208
+ declare interface AttachmentFile {
209
+ /** Display name. */
210
+ name: string;
211
+ /** Bytes. Used to render a human-readable size. */
212
+ size: number;
213
+ /** MIME type. Drives the auto-detected `variant`. */
214
+ type: string;
215
+ /**
216
+ * Optional preview URL for images. When `type` starts with `image/`
217
+ * AND `preview` is set, the attachment renders a thumbnail; otherwise
218
+ * it falls back to a typed file icon + name + size.
219
+ */
220
+ preview?: string;
221
+ }
222
+ export { AttachmentFile }
223
+ export { AttachmentFile as AttachmentFile_alias_1 }
224
+
225
+ declare interface AttachmentProps extends Omit<React_2.HTMLAttributes<HTMLDivElement>, "onProgress">, VariantProps<typeof attachmentVariants> {
226
+ /** Forwarded ref onto the root element. */
227
+ ref?: React_2.Ref<HTMLDivElement>;
228
+ /** Native `File` OR a metadata object. */
229
+ file: File | AttachmentFile;
230
+ /** Click handler for the remove button. When provided, a × button overlays the attachment. */
231
+ onRemove?: () => void;
232
+ /**
233
+ * Upload progress in `[0, 1)`. Values `>= 1` (or `undefined`) hide the
234
+ * progressbar — pass `undefined` once the upload completes. Internally
235
+ * scaled to `aria-valuenow` on a 0–100 progressbar so AT engines
236
+ * announce "42 percent" rather than "0.42 of 1."
237
+ */
238
+ progress?: number;
239
+ }
240
+ export { AttachmentProps }
241
+ export { AttachmentProps as AttachmentProps_alias_1 }
242
+
243
+ declare const attachmentSchema: ComponentSchemaDefinition;
244
+ export { attachmentSchema }
245
+ export { attachmentSchema as attachmentSchema_alias_1 }
246
+
247
+ declare const attachmentVariants: (props?: ({
248
+ variant?: "file" | "image" | null | undefined;
249
+ } & ClassProp) | undefined) => string;
250
+ export { attachmentVariants }
251
+ export { attachmentVariants as attachmentVariants_alias_1 }
252
+
182
253
  /** Root container for an avatar (image + fallback). */
183
254
  declare const Avatar: React_2.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React_2.RefAttributes<HTMLSpanElement>, "ref"> & React_2.RefAttributes<HTMLSpanElement>>;
184
255
  export { Avatar }
@@ -1340,6 +1411,120 @@ declare const dropzoneSchema: ComponentSchemaDefinition;
1340
1411
  export { dropzoneSchema }
1341
1412
  export { dropzoneSchema as dropzoneSchema_alias_1 }
1342
1413
 
1414
+ /**
1415
+ * A "zero-state" surface for lists, dashboards, and search results that have
1416
+ * no content to show. Use to explain *why* the slot is empty and *what to do*
1417
+ * next; pair the `action` slot with a button that creates the missing record.
1418
+ *
1419
+ * Distinct from {@link Loading} (transient, has a measurable wait) and
1420
+ * {@link ErrorState} (something failed and may need a retry). If you're
1421
+ * thinking "show a message because the request just hasn't returned yet,"
1422
+ * reach for `Loading` — Empty is for "the request returned, and there's
1423
+ * nothing to show."
1424
+ *
1425
+ * @example
1426
+ * ```tsx
1427
+ * <Empty
1428
+ * icon={<InboxIcon />}
1429
+ * title="No messages yet"
1430
+ * description="When someone sends you a message, it'll show up here."
1431
+ * action={<Button>Compose</Button>}
1432
+ * />
1433
+ * ```
1434
+ *
1435
+ * @returns A region landmark labeled by the title.
1436
+ */
1437
+ declare function Empty({ className, size, icon, title, description, action, titleAs, ref, ...props }: EmptyProps): JSX.Element;
1438
+ export { Empty }
1439
+ export { Empty as Empty_alias_1 }
1440
+
1441
+ declare interface EmptyProps extends Omit<React_2.HTMLAttributes<HTMLDivElement>, "title">, VariantProps<typeof emptyVariants> {
1442
+ /** Forwarded ref onto the root region element. */
1443
+ ref?: React_2.Ref<HTMLDivElement>;
1444
+ /** Optional icon (typically an `<svg>`) rendered in a circular muted container. */
1445
+ icon?: React_2.ReactNode;
1446
+ /** Required heading copy. Becomes the region's accessible name via `aria-labelledby`. */
1447
+ title: React_2.ReactNode;
1448
+ /** Optional supporting copy that explains why the slot is empty + what to do next. */
1449
+ description?: React_2.ReactNode;
1450
+ /** Optional call-to-action — typically a `<Button>` that creates the missing record. */
1451
+ action?: React_2.ReactNode;
1452
+ /** Heading level for the title — pick to match surrounding hierarchy (default `h3`). */
1453
+ titleAs?: EmptyTitleAs;
1454
+ }
1455
+ export { EmptyProps }
1456
+ export { EmptyProps as EmptyProps_alias_1 }
1457
+
1458
+ declare const emptySchema: ComponentSchemaDefinition;
1459
+ export { emptySchema }
1460
+ export { emptySchema as emptySchema_alias_1 }
1461
+
1462
+ /** Heading element used to render the Empty title. Defaults to `h3`. */
1463
+ declare type EmptyTitleAs = "h2" | "h3" | "h4" | "h5" | "h6" | "p";
1464
+
1465
+ declare const emptyVariants: (props?: ({
1466
+ size?: "default" | "sm" | "lg" | null | undefined;
1467
+ } & ClassProp) | undefined) => string;
1468
+ export { emptyVariants }
1469
+ export { emptyVariants as emptyVariants_alias_1 }
1470
+
1471
+ /**
1472
+ * A surface for rendering a failed-fetch / failed-action state. Visually
1473
+ * similar to {@link Empty} but ships with a destructive-tone bias and
1474
+ * mounts with `role="alert"` so screen readers announce the failure on
1475
+ * first render.
1476
+ *
1477
+ * Distinct from {@link Empty} (request returned, no items) and
1478
+ * {@link Loading} (request still in flight). For inline form-field
1479
+ * errors, use Form's `<FormMessage>` instead. For blocking destructive
1480
+ * confirmations, use AlertDialog.
1481
+ *
1482
+ * @example
1483
+ * ```tsx
1484
+ * <ErrorState
1485
+ * icon={<AlertCircleIcon />}
1486
+ * title="Couldn't load messages"
1487
+ * message="The server didn't respond. Check your connection and try again."
1488
+ * action={<Button onClick={refetch}>Retry</Button>}
1489
+ * />
1490
+ * ```
1491
+ *
1492
+ * @returns A `role="alert"` region with an optional action slot.
1493
+ */
1494
+ declare function ErrorState({ className, variant, icon, title, message, action, ref, ...props }: ErrorStateProps): JSX.Element;
1495
+ export { ErrorState }
1496
+ export { ErrorState as ErrorState_alias_1 }
1497
+
1498
+ declare interface ErrorStateProps extends Omit<React_2.HTMLAttributes<HTMLDivElement>, "title">, VariantProps<typeof errorStateVariants> {
1499
+ /** Forwarded ref onto the alert region. */
1500
+ ref?: React_2.Ref<HTMLDivElement>;
1501
+ /** Optional icon (typically an alert / x-circle SVG). */
1502
+ icon?: React_2.ReactNode;
1503
+ /** Optional heading copy. Falls back to a generic "Something went wrong" if omitted. */
1504
+ title?: React_2.ReactNode;
1505
+ /** Required body copy explaining what failed. */
1506
+ message: React_2.ReactNode;
1507
+ /**
1508
+ * Optional call-to-action — typically a `<Button>` with `onClick={refetch}`.
1509
+ * Slot pattern (matching `Empty.action`) so consumers control the button's
1510
+ * variant / loading state / asChild composition without ErrorState
1511
+ * re-implementing those concerns.
1512
+ */
1513
+ action?: React_2.ReactNode;
1514
+ }
1515
+ export { ErrorStateProps }
1516
+ export { ErrorStateProps as ErrorStateProps_alias_1 }
1517
+
1518
+ declare const errorStateSchema: ComponentSchemaDefinition;
1519
+ export { errorStateSchema }
1520
+ export { errorStateSchema as errorStateSchema_alias_1 }
1521
+
1522
+ declare const errorStateVariants: (props?: ({
1523
+ variant?: "default" | "destructive" | null | undefined;
1524
+ } & ClassProp) | undefined) => string;
1525
+ export { errorStateVariants }
1526
+ export { errorStateVariants as errorStateVariants_alias_1 }
1527
+
1343
1528
  /**
1344
1529
  * Hierarchical tree view for files, folders, settings sections, or any nested
1345
1530
  * navigation. Built on the WAI-ARIA tree pattern: `role="tree"` root,
@@ -1665,6 +1850,30 @@ export { labelSchema as labelSchema_alias_1 }
1665
1850
 
1666
1851
  declare const labelVariants: (props?: ClassProp | undefined) => string;
1667
1852
 
1853
+ /**
1854
+ * A composed loading-placeholder pattern for lists, cards, and stacks.
1855
+ * Renders N {@link Skeleton} rows pre-arranged for the chosen layout —
1856
+ * Skeleton is the atom (one shaped pulse), Loading is the molecule
1857
+ * (the canonical pattern most surfaces want).
1858
+ *
1859
+ * Distinct from {@link Empty} (request returned, no items) and
1860
+ * {@link ErrorState} (request failed). If you need a single shaped
1861
+ * pulse for a specific element (an avatar circle, a heading line),
1862
+ * reach for `Skeleton` directly. If the wait has a measurable
1863
+ * percent-done, reach for `Progress` instead.
1864
+ *
1865
+ * @example
1866
+ * ```tsx
1867
+ * <Loading rows={5} variant="list" />
1868
+ * ```
1869
+ *
1870
+ * @returns A `role="status"` region with `aria-live="polite"` and the
1871
+ * announced label (default "Loading…") rendered sr-only.
1872
+ */
1873
+ declare function Loading({ className, variant, rows, label, ref, ...props }: LoadingProps): JSX.Element;
1874
+ export { Loading }
1875
+ export { Loading as Loading_alias_1 }
1876
+
1668
1877
  /**
1669
1878
  * Renders an animated loading indicator with optional label.
1670
1879
  * @param props - variant + label
@@ -1701,6 +1910,32 @@ declare const loadingIndicatorVariants: (props?: ({
1701
1910
  export { loadingIndicatorVariants }
1702
1911
  export { loadingIndicatorVariants as loadingIndicatorVariants_alias_1 }
1703
1912
 
1913
+ declare interface LoadingProps extends Omit<React_2.HTMLAttributes<HTMLDivElement>, "role">, VariantProps<typeof loadingVariants> {
1914
+ /** Forwarded ref onto the status region. */
1915
+ ref?: React_2.Ref<HTMLDivElement>;
1916
+ /**
1917
+ * Number of placeholder rows to render. Each row may contain multiple
1918
+ * Skeleton elements depending on `variant` — `list` emits 1 Skeleton
1919
+ * per row; `card` emits 3 (heading + 2 body lines); `stack` emits 3
1920
+ * (avatar + 2 text lines). Default 3.
1921
+ */
1922
+ rows?: number;
1923
+ /** Optional sr-only label that screen readers announce. Default "Loading…". */
1924
+ label?: string;
1925
+ }
1926
+ export { LoadingProps }
1927
+ export { LoadingProps as LoadingProps_alias_1 }
1928
+
1929
+ declare const loadingSchema: ComponentSchemaDefinition;
1930
+ export { loadingSchema }
1931
+ export { loadingSchema as loadingSchema_alias_1 }
1932
+
1933
+ declare const loadingVariants: (props?: ({
1934
+ variant?: "list" | "card" | "stack" | null | undefined;
1935
+ } & ClassProp) | undefined) => string;
1936
+ export { loadingVariants }
1937
+ export { loadingVariants as loadingVariants_alias_1 }
1938
+
1704
1939
  /**
1705
1940
  * Renders streaming-safe markdown.
1706
1941
  * @param props - children string + optional Streamdown overrides
@@ -2595,6 +2830,42 @@ declare const spacerVariants: (props?: ({
2595
2830
  export { spacerVariants }
2596
2831
  export { spacerVariants as spacerVariants_alias_1 }
2597
2832
 
2833
+ /**
2834
+ * Renders a mic toggle button wired to the Web Speech API.
2835
+ * @param props - controlled listening state + transcript callback
2836
+ * @returns A button element that toggles speech recognition
2837
+ */
2838
+ declare function SpeechRecognition({ isListening, onListeningChange, onTranscript, onError, lang, continuous, interimResults, startLabel, stopLabel, notSupportedLabel, disabled, className, ...rest }: SpeechRecognitionProps): JSX.Element;
2839
+ export { SpeechRecognition }
2840
+ export { SpeechRecognition as SpeechRecognition_alias_1 }
2841
+
2842
+ declare interface SpeechRecognitionProps extends Omit<React_2.ButtonHTMLAttributes<HTMLButtonElement>, "onError"> {
2843
+ /** Controlled listening state. */
2844
+ isListening: boolean;
2845
+ /** Called when listening starts/stops (user toggle or browser auto-end). */
2846
+ onListeningChange: (listening: boolean) => void;
2847
+ /** Called per transcript chunk. `isFinal` indicates a finalized phrase. */
2848
+ onTranscript: (text: string, isFinal: boolean) => void;
2849
+ /** Called on browser error (e.g. "not-allowed", "no-speech", "network"). */
2850
+ onError?: (error: string, message?: string) => void;
2851
+ /** BCP-47 language tag. Default `"en-US"`. */
2852
+ lang?: string;
2853
+ /** Keep listening across pauses. Default `true`. */
2854
+ continuous?: boolean;
2855
+ /** Emit interim (in-progress) results. Default `true`. */
2856
+ interimResults?: boolean;
2857
+ /** Accessible name when idle. Default `"Start dictation"`. */
2858
+ startLabel?: string;
2859
+ /** Accessible name when listening. Default `"Stop dictation"`. */
2860
+ stopLabel?: string;
2861
+ /** Accessible name + tooltip when the browser lacks the API. */
2862
+ notSupportedLabel?: string;
2863
+ }
2864
+ export { SpeechRecognitionProps }
2865
+ export { SpeechRecognitionProps as SpeechRecognitionProps_alias_1 }
2866
+
2867
+ export declare const speechRecognitionSchema: ComponentSchemaDefinition;
2868
+
2598
2869
  /**
2599
2870
  * Vertical flex flow with token-bound gap. Children stack top-to-bottom.
2600
2871
  * @param props - Stack props including `gap`, `align`, and `justify` variant keys.
@@ -2832,6 +3103,58 @@ declare const TabsTrigger: React_2.ForwardRefExoticComponent<Omit<TabsPrimitive.
2832
3103
  export { TabsTrigger }
2833
3104
  export { TabsTrigger as TabsTrigger_alias_1 }
2834
3105
 
3106
+ /**
3107
+ * An interactive tag / chip primitive — Badge with an optional dismiss
3108
+ * affordance. Mirrors {@link Badge}'s CVA variants so the visual sibling
3109
+ * is obvious; adds a built-in close button when `onRemove` is provided.
3110
+ *
3111
+ * For non-interactive labels (status indicators, counts) use {@link Badge}
3112
+ * directly. For "click to filter" state-bearing chips, use Toggle or
3113
+ * ToggleGroup — Tag is for "this token represents a value the user can
3114
+ * dismiss" (filters, multi-select selections, draft attachments).
3115
+ *
3116
+ * @example
3117
+ * ```tsx
3118
+ * <Tag variant="secondary" onRemove={() => removeFilter("urgent")}>
3119
+ * Urgent
3120
+ * </Tag>
3121
+ * ```
3122
+ *
3123
+ * @returns A span containing the label + optional icon + optional close button.
3124
+ */
3125
+ declare function Tag({ className, variant, icon, onRemove, removeLabel, children, ref, ...props }: TagProps): JSX.Element;
3126
+ export { Tag }
3127
+ export { Tag as Tag_alias_1 }
3128
+
3129
+ declare interface TagProps extends Omit<React_2.HTMLAttributes<HTMLSpanElement>, "onRemove">, VariantProps<typeof tagVariants> {
3130
+ /** Forwarded ref onto the root span element. */
3131
+ ref?: React_2.Ref<HTMLSpanElement>;
3132
+ /** Optional leading icon (`<svg>` or component). Sized 12×12. */
3133
+ icon?: React_2.ReactNode;
3134
+ /**
3135
+ * Click handler for the close button. When provided, an inline ✕ button
3136
+ * is rendered after the children with an `aria-label` derived from the
3137
+ * children's string content (or a generic "Remove" if no string can be
3138
+ * extracted). Pass undefined for a non-interactive Tag — at that point,
3139
+ * prefer Badge directly.
3140
+ */
3141
+ onRemove?: () => void;
3142
+ /** Override the auto-derived `aria-label` on the close button. */
3143
+ removeLabel?: string;
3144
+ }
3145
+ export { TagProps }
3146
+ export { TagProps as TagProps_alias_1 }
3147
+
3148
+ declare const tagSchema: ComponentSchemaDefinition;
3149
+ export { tagSchema }
3150
+ export { tagSchema as tagSchema_alias_1 }
3151
+
3152
+ declare const tagVariants: (props?: ({
3153
+ variant?: "default" | "destructive" | "outline" | "secondary" | null | undefined;
3154
+ } & ClassProp) | undefined) => string;
3155
+ export { tagVariants }
3156
+ export { tagVariants as tagVariants_alias_1 }
3157
+
2835
3158
  declare const Textarea: React_2.ForwardRefExoticComponent<TextareaProps & React_2.RefAttributes<HTMLTextAreaElement>>;
2836
3159
  export { Textarea }
2837
3160
  export { Textarea as Textarea_alias_1 }
@@ -2999,6 +3322,91 @@ declare const toggleVariants: (props?: ({
2999
3322
  export { toggleVariants }
3000
3323
  export { toggleVariants as toggleVariants_alias_1 }
3001
3324
 
3325
+ /**
3326
+ * Root toolbar element. Wraps Radix `Toolbar.Root` with the canonical
3327
+ * Hex Core token + visual styling. Pass children consisting of
3328
+ * `ToolbarButton`, `ToolbarToggleGroup`, `ToolbarSeparator`, and
3329
+ * `ToolbarLink` — Radix handles arrow-key roving focus across them
3330
+ * automatically.
3331
+ *
3332
+ * @example
3333
+ * ```tsx
3334
+ * <Toolbar aria-label="Editor controls">
3335
+ * <ToolbarButton onClick={onUndo}>Undo</ToolbarButton>
3336
+ * <ToolbarButton onClick={onRedo}>Redo</ToolbarButton>
3337
+ * <ToolbarSeparator />
3338
+ * <ToolbarToggleGroup type="single" defaultValue="left">
3339
+ * <ToolbarToggleItem value="left">Left</ToolbarToggleItem>
3340
+ * <ToolbarToggleItem value="center">Center</ToolbarToggleItem>
3341
+ * <ToolbarToggleItem value="right">Right</ToolbarToggleItem>
3342
+ * </ToolbarToggleGroup>
3343
+ * </Toolbar>
3344
+ * ```
3345
+ */
3346
+ declare function Toolbar({ className, orientation, ref, ...props }: ToolbarProps): JSX.Element;
3347
+ export { Toolbar }
3348
+ export { Toolbar as Toolbar_alias_1 }
3349
+
3350
+ /** A push button inside the toolbar. */
3351
+ declare function ToolbarButton({ className, ref, ...props }: React_2.ComponentPropsWithoutRef<typeof ToolbarPrimitive.Button> & {
3352
+ ref?: React_2.Ref<React_2.ElementRef<typeof ToolbarPrimitive.Button>>;
3353
+ }): JSX.Element;
3354
+ export { ToolbarButton }
3355
+ export { ToolbarButton as ToolbarButton_alias_1 }
3356
+
3357
+ /** A link inside the toolbar — renders an `<a>` with toolbar focus semantics. */
3358
+ declare function ToolbarLink({ className, ref, ...props }: React_2.ComponentPropsWithoutRef<typeof ToolbarPrimitive.Link> & {
3359
+ ref?: React_2.Ref<React_2.ElementRef<typeof ToolbarPrimitive.Link>>;
3360
+ }): JSX.Element;
3361
+ export { ToolbarLink }
3362
+ export { ToolbarLink as ToolbarLink_alias_1 }
3363
+
3364
+ /**
3365
+ * Toolbar root props. `aria-label` is required — Radix Toolbar.Root
3366
+ * mounts as a `role="toolbar"` landmark, and AT users will hear an
3367
+ * unlabelled "toolbar" landmark when no visible heading sits adjacent.
3368
+ * If a visible heading IS present, pair it via `aria-labelledby` instead.
3369
+ */
3370
+ declare interface ToolbarProps extends Omit<React_2.ComponentPropsWithoutRef<typeof ToolbarPrimitive.Root>, "aria-label"> {
3371
+ /** Forwarded ref onto the Radix `Toolbar.Root`. */
3372
+ ref?: React_2.Ref<React_2.ElementRef<typeof ToolbarPrimitive.Root>>;
3373
+ /** Required accessible name for the toolbar landmark. */
3374
+ "aria-label": string;
3375
+ }
3376
+ export { ToolbarProps }
3377
+ export { ToolbarProps as ToolbarProps_alias_1 }
3378
+
3379
+ declare const toolbarSchema: ComponentSchemaDefinition;
3380
+ export { toolbarSchema }
3381
+ export { toolbarSchema as toolbarSchema_alias_1 }
3382
+
3383
+ /** A vertical (or horizontal, in vertical toolbars) divider. */
3384
+ declare function ToolbarSeparator({ className, ref, ...props }: React_2.ComponentPropsWithoutRef<typeof ToolbarPrimitive.Separator> & {
3385
+ ref?: React_2.Ref<React_2.ElementRef<typeof ToolbarPrimitive.Separator>>;
3386
+ }): JSX.Element;
3387
+ export { ToolbarSeparator }
3388
+ export { ToolbarSeparator as ToolbarSeparator_alias_1 }
3389
+
3390
+ /** A group of mutually-exclusive (`type='single'`) or independent (`type='multiple'`) toggle items. */
3391
+ declare function ToolbarToggleGroup({ className, ref, ...props }: React_2.ComponentPropsWithoutRef<typeof ToolbarPrimitive.ToggleGroup> & {
3392
+ ref?: React_2.Ref<React_2.ElementRef<typeof ToolbarPrimitive.ToggleGroup>>;
3393
+ }): JSX.Element;
3394
+ export { ToolbarToggleGroup }
3395
+ export { ToolbarToggleGroup as ToolbarToggleGroup_alias_1 }
3396
+
3397
+ /** Individual toggle item — exposes `data-state="on"` for the on style. */
3398
+ declare function ToolbarToggleItem({ className, ref, ...props }: React_2.ComponentPropsWithoutRef<typeof ToolbarPrimitive.ToggleItem> & {
3399
+ ref?: React_2.Ref<React_2.ElementRef<typeof ToolbarPrimitive.ToggleItem>>;
3400
+ }): JSX.Element;
3401
+ export { ToolbarToggleItem }
3402
+ export { ToolbarToggleItem as ToolbarToggleItem_alias_1 }
3403
+
3404
+ declare const toolbarVariants: (props?: ({
3405
+ orientation?: "horizontal" | "vertical" | null | undefined;
3406
+ } & ClassProp) | undefined) => string;
3407
+ export { toolbarVariants }
3408
+ export { toolbarVariants as toolbarVariants_alias_1 }
3409
+
3002
3410
  /**
3003
3411
  * Renders a tool-invocation card with collapsible details.
3004
3412
  * @param props - tool name, state, optional args/result
@@ -3074,6 +3482,85 @@ declare const TooltipTrigger: React_2.ForwardRefExoticComponent<TooltipPrimitive
3074
3482
  export { TooltipTrigger }
3075
3483
  export { TooltipTrigger as TooltipTrigger_alias_1 }
3076
3484
 
3485
+ /**
3486
+ * Generic hierarchical list with roving-tabindex keyboard navigation —
3487
+ * arrow keys move focus, → expands, ← collapses, Home / End jump to
3488
+ * first / last visible row, Enter / Space activates the focused node.
3489
+ *
3490
+ * Distinct from {@link FileTree} (which adds folder/file icon-by-extension
3491
+ * logic baked in) and {@link Accordion} (two-level groupings without
3492
+ * item-selection semantics).
3493
+ *
3494
+ * @example
3495
+ * ```tsx
3496
+ * <Tree
3497
+ * aria-label="Org chart"
3498
+ * data={[
3499
+ * { id: "ceo", label: "CEO", children: [
3500
+ * { id: "cto", label: "CTO", children: [
3501
+ * { id: "eng-lead", label: "Eng Lead" },
3502
+ * ]},
3503
+ * { id: "cmo", label: "CMO" },
3504
+ * ]},
3505
+ * ]}
3506
+ * defaultExpanded={["ceo"]}
3507
+ * onSelect={(id) => console.log(id)}
3508
+ * />
3509
+ * ```
3510
+ */
3511
+ declare function Tree({ data, defaultExpanded, expanded: expandedProp, onExpandedChange, selected: selectedProp, onSelect, "aria-label": ariaLabel, className, ref, }: TreeProps): JSX.Element;
3512
+ export { Tree }
3513
+ export { Tree as Tree_alias_1 }
3514
+
3515
+ /**
3516
+ * One node in a Tree. Generic — the shape is content-agnostic so consumers
3517
+ * can render org charts, taxonomy pickers, navigation trees, etc.
3518
+ *
3519
+ * For filesystem-shaped data (with file-extension icon logic baked in),
3520
+ * prefer {@link FileTree} instead.
3521
+ */
3522
+ declare interface TreeNode {
3523
+ /** Stable unique id used as React key + ARIA target. */
3524
+ id: string;
3525
+ /** Display name. */
3526
+ label: React_2.ReactNode;
3527
+ /** Nested children. Presence (even empty array) marks the node as a parent. */
3528
+ children?: TreeNode[];
3529
+ /** Optional icon (default: a chevron + dot). */
3530
+ icon?: React_2.ReactNode;
3531
+ /** Disable selection + expand toggle. */
3532
+ disabled?: boolean;
3533
+ }
3534
+ export { TreeNode }
3535
+ export { TreeNode as TreeNode_alias_1 }
3536
+
3537
+ declare interface TreeProps {
3538
+ /** Forwarded ref onto the root `<ul role="tree">`. */
3539
+ ref?: React_2.Ref<HTMLUListElement>;
3540
+ /** Root nodes. */
3541
+ data: TreeNode[];
3542
+ /** Uncontrolled initial expanded ids. */
3543
+ defaultExpanded?: string[];
3544
+ /** Controlled expanded ids. */
3545
+ expanded?: string[];
3546
+ /** Fired when expanded set changes (array of ids). */
3547
+ onExpandedChange?: (ids: string[]) => void;
3548
+ /** Controlled selected node id. */
3549
+ selected?: string;
3550
+ /** Fired when the user activates a node (click, Enter, or Space). */
3551
+ onSelect?: (id: string) => void;
3552
+ /** Required accessible name. */
3553
+ "aria-label": string;
3554
+ /** Optional additional class names. */
3555
+ className?: string;
3556
+ }
3557
+ export { TreeProps }
3558
+ export { TreeProps as TreeProps_alias_1 }
3559
+
3560
+ declare const treeSchema: ComponentSchemaDefinition;
3561
+ export { treeSchema }
3562
+ export { treeSchema as treeSchema_alias_1 }
3563
+
3077
3564
  /**
3078
3565
  * Hook that returns the current field's id, name, error, and derived aria ids.
3079
3566
  * Must be called inside a FormField + FormItem subtree.
@@ -0,0 +1,4 @@
1
+ export { AttachmentFile_alias_1 as AttachmentFile } from './_tsup-dts-rollup.js';
2
+ export { AttachmentProps_alias_1 as AttachmentProps } from './_tsup-dts-rollup.js';
3
+ export { Attachment_alias_1 as Attachment } from './_tsup-dts-rollup.js';
4
+ export { attachmentVariants_alias_1 as attachmentVariants } from './_tsup-dts-rollup.js';