@gradeui/ui 0.8.2 → 0.10.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.
Files changed (79) hide show
  1. package/components/ui/accordion.md +30 -0
  2. package/components/ui/ai-chat.md +35 -0
  3. package/components/ui/alert.md +21 -0
  4. package/components/ui/app-shell.md +61 -0
  5. package/components/ui/avatar.md +18 -0
  6. package/components/ui/badge.md +18 -0
  7. package/components/ui/breadcrumb.md +54 -0
  8. package/components/ui/button.md +31 -0
  9. package/components/ui/calendar.md +39 -0
  10. package/components/ui/card.md +25 -0
  11. package/components/ui/chart.md +48 -0
  12. package/components/ui/checkbox.md +19 -0
  13. package/components/ui/collapsible.md +28 -0
  14. package/components/ui/command.md +38 -0
  15. package/components/ui/date-picker.md +52 -0
  16. package/components/ui/dialog.md +29 -0
  17. package/components/ui/dropdown-menu.md +39 -0
  18. package/components/ui/flex.md +41 -0
  19. package/components/ui/grid.md +44 -0
  20. package/components/ui/hover-card.md +35 -0
  21. package/components/ui/input.md +17 -0
  22. package/components/ui/label.md +14 -0
  23. package/components/ui/map.md +80 -0
  24. package/components/ui/media-surface.md +18 -0
  25. package/components/ui/popover.md +36 -0
  26. package/components/ui/progress.md +14 -0
  27. package/components/ui/radio-group.md +37 -0
  28. package/components/ui/resizable.md +30 -0
  29. package/components/ui/rive-player.md +38 -0
  30. package/components/ui/row.md +32 -0
  31. package/components/ui/scroll-area.md +27 -0
  32. package/components/ui/select.md +24 -0
  33. package/components/ui/separator.md +16 -0
  34. package/components/ui/shader-preset-picker.md +26 -0
  35. package/components/ui/shader-preset-preview.md +24 -0
  36. package/components/ui/sheet.md +46 -0
  37. package/components/ui/side-menu.md +40 -0
  38. package/components/ui/simple-tabs.md +27 -0
  39. package/components/ui/skeleton.md +17 -0
  40. package/components/ui/slider.md +48 -0
  41. package/components/ui/stack.md +32 -0
  42. package/components/ui/switch.md +20 -0
  43. package/components/ui/table.md +27 -0
  44. package/components/ui/tabs.md +39 -0
  45. package/components/ui/textarea.md +14 -0
  46. package/components/ui/three-scene.md +226 -0
  47. package/components/ui/toast.md +38 -0
  48. package/components/ui/toggle-group.md +36 -0
  49. package/components/ui/toggle.md +36 -0
  50. package/components/ui/tooltip.md +28 -0
  51. package/components/ui/video-player.md +27 -0
  52. package/dist/index.d.mts +252 -90
  53. package/dist/index.d.ts +252 -90
  54. package/dist/index.js +240 -240
  55. package/dist/index.js.map +1 -1
  56. package/dist/index.mjs +240 -240
  57. package/dist/index.mjs.map +1 -1
  58. package/dist/map/google.d.mts +6 -0
  59. package/dist/map/google.d.ts +6 -0
  60. package/dist/map/google.js +2 -0
  61. package/dist/map/google.js.map +1 -0
  62. package/dist/map/google.mjs +2 -0
  63. package/dist/map/google.mjs.map +1 -0
  64. package/dist/map/mapbox.d.mts +6 -0
  65. package/dist/map/mapbox.d.ts +6 -0
  66. package/dist/map/mapbox.js +3 -0
  67. package/dist/map/mapbox.js.map +1 -0
  68. package/dist/map/mapbox.mjs +3 -0
  69. package/dist/map/mapbox.mjs.map +1 -0
  70. package/dist/map/maplibre.d.mts +6 -0
  71. package/dist/map/maplibre.d.ts +6 -0
  72. package/dist/map/maplibre.js +3 -0
  73. package/dist/map/maplibre.js.map +1 -0
  74. package/dist/map/maplibre.mjs +3 -0
  75. package/dist/map/maplibre.mjs.map +1 -0
  76. package/dist/styles.css +1 -1
  77. package/dist/types-BxywIwvG.d.mts +160 -0
  78. package/dist/types-BxywIwvG.d.ts +160 -0
  79. package/package.json +42 -5
package/dist/index.d.ts CHANGED
@@ -11,13 +11,18 @@ import * as LabelPrimitive from '@radix-ui/react-label';
11
11
  import * as PopoverPrimitive from '@radix-ui/react-popover';
12
12
  import * as ProgressPrimitive from '@radix-ui/react-progress';
13
13
  import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
14
+ import * as ResizablePrimitive from 'react-resizable-panels';
14
15
  import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
15
16
  import * as SelectPrimitive from '@radix-ui/react-select';
16
17
  import * as SeparatorPrimitive from '@radix-ui/react-separator';
17
18
  import * as SliderPrimitive from '@radix-ui/react-slider';
18
19
  import * as SwitchPrimitives from '@radix-ui/react-switch';
19
20
  import * as TabsPrimitive from '@radix-ui/react-tabs';
21
+ import * as TogglePrimitive from '@radix-ui/react-toggle';
22
+ import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
20
23
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
24
+ import { M as MapProps, a as MapHandle, b as MapMarkerProps } from './types-BxywIwvG.js';
25
+ export { C as Coords, c as MapAppearance, d as MapError, e as MapErrorCode } from './types-BxywIwvG.js';
21
26
  import * as THREE from 'three';
22
27
  import { ClassValue } from 'clsx';
23
28
 
@@ -33,54 +38,82 @@ declare const AlertTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttribut
33
38
  declare const AlertDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
34
39
 
35
40
  /**
36
- * AppShell — top-level page scaffold for an app-like layout.
41
+ * AppShell — top-level page scaffold for an app-like or marketing layout.
37
42
  *
38
- * The Studio was missing a named "app layout" primitive — without one,
39
- * agent-generated pages either freestyle grids or reinvent the nav-plus-
40
- * content structure every time. AppShell gives them one component with a
41
- * small, bounded set of layout variants so vibe-coded prototypes land in a
42
- * recognisable shape: a nav region (top, side, or none) plus a main region
43
- * that optionally constrains its content width.
43
+ * Provides five slots arranged via CSS-grid template areas:
44
+ *
45
+ * ┌─────────── Header (full bleed) ───────────┐
46
+ * Nav │ Aside │ Main │
47
+ * └─────────── Footer (full bleed) ───────────┘
48
+ *
49
+ * Header and Footer always span the full width and sit at the very top /
50
+ * very bottom of the shell — useful for marketing pages, brand bars, site
51
+ * chrome. `nav` chooses how the body row is split:
52
+ *
53
+ * - `none` — Main only (a marketing page or a single-column app)
54
+ * - `top` — Main below an in-app top-nav row (TopMenu)
55
+ * - `side` — Nav rail + Main (classic app layout)
56
+ * - `three-pane` — Nav rail + fixed Aside + flex Main (Slack/Mail/Notion
57
+ * shape; aside width via --rds-app-shell-aside, default 320px)
58
+ *
59
+ * Each slot is assigned a fixed `grid-area` (header/nav/aside/main/footer),
60
+ * so the **JSX child order doesn't matter** — drop slots in any order and
61
+ * the grid sorts them.
44
62
  *
45
63
  * It is deliberately *just* structure: no collapse state, no context, no
46
- * runtime JS. Nav content is whatever the caller drops in — a SideMenu,
47
- * a TopMenu, or a hand-rolled `<nav>`. Keeping it dumb means it renders
48
- * fine on the server and can be styled by consumers without fighting a
49
- * behaviour model.
64
+ * runtime JS. Nav content is whatever the caller drops in — a SideMenu, a
65
+ * TopMenu, a hand-rolled `<nav>`. For drag-to-resize columns inside the
66
+ * body, compose this with `Resizable` instead of using a static grid.
50
67
  *
51
68
  * Variants:
52
- * - `nav` — "none" | "top" | "side". Chooses the grid structure.
53
- * - `maxWidth` — "full" | "container". Caps the main region width for
54
- * marketing-style pages without the caller having to wrap
55
- * their content in a max-w-* div.
56
- * - `sticky` — boolean. Sticks top nav to the viewport top / side nav
57
- * to the viewport when the page scrolls. Sensible default
58
- * for app chrome.
69
+ * - `nav` — "none" | "top" | "side" | "three-pane"
70
+ * - `maxWidth` — Main slot only: "full" | "container" caps reading width
71
+ * for marketing-style content.
72
+ * - `sticky` — Nav slot, Header slot. Pin to the viewport on scroll.
59
73
  */
60
74
  declare const shellVariants: (props?: ({
61
- nav?: "none" | "top" | "side" | null | undefined;
75
+ nav?: "none" | "top" | "side" | "three-pane" | null | undefined;
76
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
77
+ declare const headerVariants: (props?: ({
78
+ sticky?: boolean | null | undefined;
62
79
  } & class_variance_authority_types.ClassProp) | undefined) => string;
63
80
  declare const navVariants: (props?: ({
64
81
  placement?: "none" | "top" | "side" | null | undefined;
65
82
  sticky?: boolean | null | undefined;
66
83
  } & class_variance_authority_types.ClassProp) | undefined) => string;
84
+ declare const asideVariants: (props?: ({
85
+ sticky?: boolean | null | undefined;
86
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
67
87
  declare const mainVariants: (props?: ({
68
88
  maxWidth?: "full" | "container" | null | undefined;
69
89
  } & class_variance_authority_types.ClassProp) | undefined) => string;
90
+ declare const footerVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
70
91
  interface AppShellProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof shellVariants> {
71
92
  /** Render as the single child element via Radix Slot — lets you stamp the
72
93
  * shell layout onto an existing root tag without an extra wrapper. */
73
94
  asChild?: boolean;
74
95
  }
75
96
  declare const AppShell: React$1.ForwardRefExoticComponent<AppShellProps & React$1.RefAttributes<HTMLDivElement>>;
97
+ interface AppShellHeaderProps extends React$1.HTMLAttributes<HTMLElement>, VariantProps<typeof headerVariants> {
98
+ asChild?: boolean;
99
+ }
100
+ declare const AppShellHeader: React$1.ForwardRefExoticComponent<AppShellHeaderProps & React$1.RefAttributes<HTMLElement>>;
76
101
  interface AppShellNavProps extends React$1.HTMLAttributes<HTMLElement>, VariantProps<typeof navVariants> {
77
102
  asChild?: boolean;
78
103
  }
79
104
  declare const AppShellNav: React$1.ForwardRefExoticComponent<AppShellNavProps & React$1.RefAttributes<HTMLElement>>;
105
+ interface AppShellAsideProps extends React$1.HTMLAttributes<HTMLElement>, VariantProps<typeof asideVariants> {
106
+ asChild?: boolean;
107
+ }
108
+ declare const AppShellAside: React$1.ForwardRefExoticComponent<AppShellAsideProps & React$1.RefAttributes<HTMLElement>>;
80
109
  interface AppShellMainProps extends React$1.HTMLAttributes<HTMLElement>, VariantProps<typeof mainVariants> {
81
110
  asChild?: boolean;
82
111
  }
83
112
  declare const AppShellMain: React$1.ForwardRefExoticComponent<AppShellMainProps & React$1.RefAttributes<HTMLElement>>;
113
+ interface AppShellFooterProps extends React$1.HTMLAttributes<HTMLElement>, VariantProps<typeof footerVariants> {
114
+ asChild?: boolean;
115
+ }
116
+ declare const AppShellFooter: React$1.ForwardRefExoticComponent<AppShellFooterProps & React$1.RefAttributes<HTMLElement>>;
84
117
 
85
118
  declare const Avatar: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
86
119
  declare const AvatarImage: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarImageProps & React$1.RefAttributes<HTMLImageElement>, "ref"> & React$1.RefAttributes<HTMLImageElement>>;
@@ -94,9 +127,28 @@ interface BadgeProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProp
94
127
  }
95
128
  declare function Badge({ className, variant, rounded, ...props }: BadgeProps): React$1.JSX.Element;
96
129
 
130
+ /**
131
+ * Button — primary action primitive.
132
+ *
133
+ * Sizes (t-shirt scale) align EXACTLY to Tabs / ToggleGroup outer
134
+ * heights so a button placed next to a tab strip lines up without
135
+ * any per-call className overrides:
136
+ *
137
+ * sm: h-7 (28px) — matches `<TabsList size="sm">` height
138
+ * md: h-8 (32px) — matches `<TabsList size="md">` height (default)
139
+ * lg: h-10 (40px) — matches `<TabsList size="lg">` height
140
+ * icon: h-8 w-8 — square variant, md height
141
+ *
142
+ * `default` is preserved as an alias for `md` so existing call sites
143
+ * keep working through the rename.
144
+ *
145
+ * Type and icon sizes also follow the Tabs scale (text-xs + size-3.5
146
+ * at sm/md, text-sm + size-4 at lg) so the visual rhythm reads
147
+ * consistent across primitives.
148
+ */
97
149
  declare const buttonVariants: (props?: ({
98
150
  variant?: "link" | "default" | "destructive" | "secondary" | "outline" | "ghost" | null | undefined;
99
- size?: "default" | "sm" | "lg" | "icon" | null | undefined;
151
+ size?: "default" | "sm" | "md" | "lg" | "icon" | null | undefined;
100
152
  } & class_variance_authority_types.ClassProp) | undefined) => string;
101
153
  interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
102
154
  asChild?: boolean;
@@ -238,6 +290,68 @@ declare const Progress: React$1.ForwardRefExoticComponent<Omit<ProgressPrimitive
238
290
  declare const RadioGroup: React$1.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
239
291
  declare const RadioGroupItem: React$1.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupItemProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
240
292
 
293
+ /**
294
+ * Resizable — drag-to-adjust panel groups.
295
+ *
296
+ * Thin wrapper over `react-resizable-panels` so consumers can compose
297
+ * persistently-sized splits (e.g. nav + main, list + detail, three-pane
298
+ * with adjustable middle column) without owning the layout primitives.
299
+ *
300
+ * Use this when you want USER-adjustable column widths. For static layouts
301
+ * with a fixed-width middle column, prefer `<AppShell nav="three-pane">`
302
+ * — that's a plain CSS grid with no JS.
303
+ *
304
+ * Layout-shape parity:
305
+ * - `direction="horizontal"` → ResizableHandle is vertical (the divider
306
+ * between two columns)
307
+ * - `direction="vertical"` → ResizableHandle is horizontal (the divider
308
+ * between two rows)
309
+ *
310
+ * Persisting layout: pass `id` to ResizablePanelGroup and `id` to each
311
+ * ResizablePanel; react-resizable-panels writes layout to localStorage
312
+ * under that id so the user's preferred sizes survive reloads.
313
+ *
314
+ * Example:
315
+ *
316
+ * <ResizablePanelGroup direction="horizontal" id="inbox-shell">
317
+ * <ResizablePanel defaultSize={20} minSize={15} id="nav">
318
+ * <SideMenu />
319
+ * </ResizablePanel>
320
+ * <ResizableHandle withHandle />
321
+ * <ResizablePanel defaultSize={30} minSize={20} id="list">
322
+ * <ThreadList />
323
+ * </ResizablePanel>
324
+ * <ResizableHandle />
325
+ * <ResizablePanel defaultSize={50} id="detail">
326
+ * <ThreadDetail />
327
+ * </ResizablePanel>
328
+ * </ResizablePanelGroup>
329
+ */
330
+ declare const ResizablePanelGroup: ({ className, ...props }: React$1.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => React$1.JSX.Element;
331
+ declare const ResizablePanel: React$1.ForwardRefExoticComponent<Omit<React$1.HTMLAttributes<HTMLDivElement | HTMLElement | HTMLObjectElement | HTMLMapElement | HTMLAnchorElement | HTMLButtonElement | HTMLFormElement | HTMLHeadingElement | HTMLImageElement | HTMLInputElement | HTMLLabelElement | HTMLLIElement | HTMLOListElement | HTMLParagraphElement | HTMLSelectElement | HTMLSpanElement | HTMLUListElement | HTMLAreaElement | HTMLAudioElement | HTMLBaseElement | HTMLQuoteElement | HTMLBodyElement | HTMLBRElement | HTMLCanvasElement | HTMLTableColElement | HTMLDataElement | HTMLDataListElement | HTMLModElement | HTMLDetailsElement | HTMLDialogElement | HTMLDListElement | HTMLEmbedElement | HTMLFieldSetElement | HTMLHeadElement | HTMLHRElement | HTMLHtmlElement | HTMLIFrameElement | HTMLLegendElement | HTMLLinkElement | HTMLMetaElement | HTMLMeterElement | HTMLOptGroupElement | HTMLOptionElement | HTMLOutputElement | HTMLPreElement | HTMLProgressElement | HTMLSlotElement | HTMLScriptElement | HTMLSourceElement | HTMLStyleElement | HTMLTableElement | HTMLTemplateElement | HTMLTableSectionElement | HTMLTableCellElement | HTMLTextAreaElement | HTMLTimeElement | HTMLTitleElement | HTMLTableRowElement | HTMLTrackElement | HTMLVideoElement | HTMLTableCaptionElement | HTMLMenuElement | HTMLPictureElement>, "id" | "onResize"> & {
332
+ className?: string | undefined;
333
+ collapsedSize?: number | undefined;
334
+ collapsible?: boolean | undefined;
335
+ defaultSize?: number | undefined;
336
+ id?: string | undefined;
337
+ maxSize?: number | undefined;
338
+ minSize?: number | undefined;
339
+ onCollapse?: ResizablePrimitive.PanelOnCollapse | undefined;
340
+ onExpand?: ResizablePrimitive.PanelOnExpand | undefined;
341
+ onResize?: ResizablePrimitive.PanelOnResize | undefined;
342
+ order?: number | undefined;
343
+ style?: object | undefined;
344
+ tagName?: keyof HTMLElementTagNameMap | undefined;
345
+ } & {
346
+ children?: React$1.ReactNode;
347
+ } & React$1.RefAttributes<ResizablePrimitive.ImperativePanelHandle>>;
348
+ declare const ResizableHandle: ({ withHandle, className, ...props }: React$1.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
349
+ /** When true, render a visible grip handle in the middle of the divider
350
+ * for affordance. Without this, the handle is just a 1px hit area —
351
+ * fine for power-user tools, harder to discover for everyone else. */
352
+ withHandle?: boolean;
353
+ }) => React$1.JSX.Element;
354
+
241
355
  /**
242
356
  * Row — horizontal layout primitive.
243
357
  *
@@ -253,7 +367,7 @@ declare const RadioGroupItem: React$1.ForwardRefExoticComponent<Omit<RadioGroupP
253
367
  * etc.) and is a separate primitive.
254
368
  */
255
369
  declare const rowVariants: (props?: ({
256
- gap?: "none" | "sm" | "lg" | "xs" | "md" | "xl" | "2xl" | null | undefined;
370
+ gap?: "none" | "sm" | "md" | "lg" | "xs" | "xl" | "2xl" | null | undefined;
257
371
  align?: "center" | "end" | "start" | "stretch" | "baseline" | null | undefined;
258
372
  justify?: "center" | "end" | "start" | "between" | "around" | "evenly" | null | undefined;
259
373
  wrap?: boolean | null | undefined;
@@ -289,7 +403,7 @@ declare const Row: React$1.ForwardRefExoticComponent<RowProps & React$1.RefAttri
289
403
  */
290
404
  declare const gridVariants: (props?: ({
291
405
  cols?: "1" | "2" | "3" | "4" | "5" | "6" | "12" | null | undefined;
292
- gap?: "none" | "sm" | "lg" | "xs" | "md" | "xl" | "2xl" | null | undefined;
406
+ gap?: "none" | "sm" | "md" | "lg" | "xs" | "xl" | "2xl" | null | undefined;
293
407
  align?: "center" | "end" | "start" | "stretch" | null | undefined;
294
408
  } & class_variance_authority_types.ClassProp) | undefined) => string;
295
409
  interface GridProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof gridVariants> {
@@ -323,7 +437,7 @@ declare const Grid: React$1.ForwardRefExoticComponent<GridProps & React$1.RefAtt
323
437
  */
324
438
  declare const flexVariants: (props?: ({
325
439
  direction?: "col" | "row" | "row-reverse" | "col-reverse" | null | undefined;
326
- gap?: "none" | "sm" | "lg" | "xs" | "md" | "xl" | "2xl" | null | undefined;
440
+ gap?: "none" | "sm" | "md" | "lg" | "xs" | "xl" | "2xl" | null | undefined;
327
441
  align?: "center" | "end" | "start" | "stretch" | "baseline" | null | undefined;
328
442
  justify?: "center" | "end" | "start" | "between" | "around" | "evenly" | null | undefined;
329
443
  wrap?: "wrap" | "nowrap" | "wrap-reverse" | null | undefined;
@@ -393,7 +507,7 @@ declare const Slider: React$1.ForwardRefExoticComponent<Omit<SliderPrimitive.Sli
393
507
  * for a centred narrow column (auth cards, marketing copy).
394
508
  */
395
509
  declare const stackVariants: (props?: ({
396
- gap?: "none" | "sm" | "lg" | "xs" | "md" | "xl" | "2xl" | null | undefined;
510
+ gap?: "none" | "sm" | "md" | "lg" | "xs" | "xl" | "2xl" | null | undefined;
397
511
  align?: "center" | "end" | "start" | "stretch" | null | undefined;
398
512
  } & class_variance_authority_types.ClassProp) | undefined) => string;
399
513
  interface StackProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof stackVariants> {
@@ -415,13 +529,103 @@ declare const TableHead: React$1.ForwardRefExoticComponent<React$1.ThHTMLAttribu
415
529
  declare const TableCell: React$1.ForwardRefExoticComponent<React$1.TdHTMLAttributes<HTMLTableCellElement> & React$1.RefAttributes<HTMLTableCellElement>>;
416
530
  declare const TableCaption: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableCaptionElement> & React$1.RefAttributes<HTMLTableCaptionElement>>;
417
531
 
532
+ /**
533
+ * Breadcrumb — composable navigation primitive.
534
+ *
535
+ * Pure surface-less component (no background, no border, no sticky
536
+ * positioning). Density matches `TabsTrigger` so a breadcrumb row
537
+ * placed above a tab strip — or alongside one — reads at the same
538
+ * scale.
539
+ *
540
+ * Composition is shadcn-flavoured:
541
+ *
542
+ * <Breadcrumb>
543
+ * <BreadcrumbList>
544
+ * <BreadcrumbItem>
545
+ * <BreadcrumbLink onClick={onBack}>All screens</BreadcrumbLink>
546
+ * </BreadcrumbItem>
547
+ * <BreadcrumbSeparator />
548
+ * <BreadcrumbItem>
549
+ * <BreadcrumbPage>Pricing</BreadcrumbPage>
550
+ * </BreadcrumbItem>
551
+ * </BreadcrumbList>
552
+ * </Breadcrumb>
553
+ *
554
+ * Note: the `TopMenu` component in this package wraps the same
555
+ * breadcrumb idea in an app-bar surface (sticky, bordered, padded).
556
+ * Use TopMenu when you want the full app-shell chrome; use
557
+ * Breadcrumb on its own when you want navigation embedded inside an
558
+ * existing surface (e.g. inside the Studio canvas).
559
+ */
560
+ declare const Breadcrumb: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & {
561
+ separator?: React$1.ReactNode;
562
+ } & React$1.RefAttributes<HTMLElement>>;
563
+ declare const BreadcrumbList: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.OlHTMLAttributes<HTMLOListElement>, HTMLOListElement>, "ref"> & React$1.RefAttributes<HTMLOListElement>>;
564
+ declare const BreadcrumbItem: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & React$1.RefAttributes<HTMLLIElement>>;
565
+ interface BreadcrumbLinkProps extends React$1.HTMLAttributes<HTMLElement> {
566
+ /** Anchor href. When set, renders an <a>; otherwise renders a <button>. */
567
+ href?: string;
568
+ /** Use a <span> instead of <a>/<button> — useful when wrapping in a
569
+ * framework-specific Link component yourself. */
570
+ asChild?: boolean;
571
+ }
572
+ declare const BreadcrumbLink: React$1.ForwardRefExoticComponent<BreadcrumbLinkProps & React$1.RefAttributes<HTMLElement>>;
573
+ declare const BreadcrumbPage: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
574
+ declare const BreadcrumbSeparator: {
575
+ ({ children, className, ...props }: React$1.ComponentProps<"li">): React$1.JSX.Element;
576
+ displayName: string;
577
+ };
578
+ declare const BreadcrumbEllipsis: {
579
+ ({ className, ...props }: React$1.ComponentProps<"span">): React$1.JSX.Element;
580
+ displayName: string;
581
+ };
582
+
418
583
  declare const Tabs: React$1.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React$1.RefAttributes<HTMLDivElement>>;
419
- declare const TabsList: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsListProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
420
- declare const TabsTrigger: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
584
+ declare const tabsListVariants: (props?: ({
585
+ size?: "sm" | "md" | "lg" | null | undefined;
586
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
587
+ declare const tabsTriggerVariants: (props?: ({
588
+ size?: "sm" | "md" | "lg" | null | undefined;
589
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
590
+ interface TabsListProps extends React$1.ComponentPropsWithoutRef<typeof TabsPrimitive.List>, VariantProps<typeof tabsListVariants> {
591
+ }
592
+ declare const TabsList: React$1.ForwardRefExoticComponent<TabsListProps & React$1.RefAttributes<HTMLDivElement>>;
593
+ interface TabsTriggerProps extends React$1.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>, VariantProps<typeof tabsTriggerVariants> {
594
+ /**
595
+ * Tooltip text shown on hover / focus. Designed for icon-only
596
+ * triggers: pass `<TabsTrigger value="preview" tooltip="Preview">`
597
+ * with an icon child, and the component handles the rest. If
598
+ * `aria-label` is not set explicitly, the tooltip string is also
599
+ * applied as `aria-label` so screen readers can name the choice.
600
+ *
601
+ * Requires a `<TooltipProvider>` somewhere above the tabs. The
602
+ * design system's root layout mounts one app-wide.
603
+ */
604
+ tooltip?: React$1.ReactNode;
605
+ }
606
+ declare const TabsTrigger: React$1.ForwardRefExoticComponent<TabsTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
421
607
  declare const TabsContent: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
422
608
 
423
609
  declare const Textarea: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, "ref"> & React$1.RefAttributes<HTMLTextAreaElement>>;
424
610
 
611
+ declare const toggleVariants: (props?: ({
612
+ variant?: "default" | "outline" | null | undefined;
613
+ size?: "default" | "sm" | "lg" | null | undefined;
614
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
615
+ declare const Toggle: React$1.ForwardRefExoticComponent<Omit<TogglePrimitive.ToggleProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & VariantProps<(props?: ({
616
+ variant?: "default" | "outline" | null | undefined;
617
+ size?: "default" | "sm" | "lg" | null | undefined;
618
+ } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLButtonElement>>;
619
+
620
+ declare const toggleGroupVariants: (props?: ({
621
+ size?: "sm" | "md" | "lg" | null | undefined;
622
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
623
+ type ToggleGroupProps = React$1.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> & VariantProps<typeof toggleGroupVariants>;
624
+ declare const ToggleGroup: React$1.ForwardRefExoticComponent<ToggleGroupProps & React$1.RefAttributes<HTMLDivElement>>;
625
+ declare const ToggleGroupItem: React$1.ForwardRefExoticComponent<Omit<ToggleGroupPrimitive.ToggleGroupItemProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & VariantProps<(props?: ({
626
+ size?: "sm" | "md" | "lg" | null | undefined;
627
+ } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLButtonElement>>;
628
+
425
629
  interface SideMenuItem {
426
630
  id: string;
427
631
  label: string;
@@ -470,68 +674,6 @@ interface SideMenuProps {
470
674
  }
471
675
  declare const SideMenu: React$1.ForwardRefExoticComponent<SideMenuProps & React$1.RefAttributes<HTMLElement>>;
472
676
 
473
- interface BreadcrumbItem {
474
- label: string;
475
- href?: string;
476
- }
477
- interface TopMenuProps {
478
- /** Breadcrumb navigation items */
479
- breadcrumbs?: BreadcrumbItem[];
480
- /** Show mobile menu button */
481
- showMobileMenu?: boolean;
482
- /** Mobile menu button click handler */
483
- onMobileMenuClick?: () => void;
484
- /** Left side content (appears after breadcrumbs) */
485
- leftContent?: React$1.ReactNode;
486
- /** Right side content (actions, user menu, etc.) */
487
- rightContent?: React$1.ReactNode;
488
- /** Custom className */
489
- className?: string;
490
- /** Custom link component (e.g., Next.js Link) */
491
- linkComponent?: React$1.ComponentType<{
492
- href: string;
493
- className?: string;
494
- children: React$1.ReactNode;
495
- }>;
496
- }
497
- declare const TopMenu: React$1.ForwardRefExoticComponent<TopMenuProps & React$1.RefAttributes<HTMLElement>>;
498
- interface TopMenuUserProps {
499
- /** User name */
500
- name?: string;
501
- /** User email */
502
- email?: string;
503
- /** User avatar URL */
504
- avatarUrl?: string;
505
- /** Custom avatar content (icon, initials, etc.) */
506
- avatarContent?: React$1.ReactNode;
507
- /** Avatar background color class */
508
- avatarClassName?: string;
509
- /** Menu items */
510
- children?: React$1.ReactNode;
511
- /** Custom className */
512
- className?: string;
513
- }
514
- declare const TopMenuUser: React$1.ForwardRefExoticComponent<TopMenuUserProps & React$1.RefAttributes<HTMLDivElement>>;
515
- interface TopMenuUserItemProps {
516
- /** Item icon */
517
- icon?: React$1.ReactNode;
518
- /** Item label */
519
- children: React$1.ReactNode;
520
- /** Click handler */
521
- onClick?: () => void;
522
- /** Href for link items */
523
- href?: string;
524
- /** Variant */
525
- variant?: "default" | "danger" | "success";
526
- /** Custom className */
527
- className?: string;
528
- }
529
- declare const TopMenuUserItem: React$1.ForwardRefExoticComponent<TopMenuUserItemProps & React$1.RefAttributes<HTMLButtonElement>>;
530
- declare const TopMenuUserSection: React$1.ForwardRefExoticComponent<{
531
- children: React$1.ReactNode;
532
- className?: string;
533
- } & React$1.RefAttributes<HTMLDivElement>>;
534
-
535
677
  interface SimpleTab {
536
678
  id: string;
537
679
  label: string;
@@ -606,6 +748,10 @@ declare const Tooltip: React$1.FC<TooltipPrimitive.TooltipProps>;
606
748
  declare const TooltipTrigger: React$1.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
607
749
  declare const TooltipContent: React$1.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
608
750
 
751
+ declare const Map: React$1.ForwardRefExoticComponent<MapProps & React$1.RefAttributes<MapHandle>>;
752
+
753
+ declare const MapMarker: React$1.NamedExoticComponent<MapMarkerProps>;
754
+
609
755
  /**
610
756
  * MediaSurface — the shared shell used by VideoPlayer, RivePlayer,
611
757
  * and ThreeScene. Not exported publicly.
@@ -617,7 +763,13 @@ declare const TooltipContent: React$1.ForwardRefExoticComponent<Omit<TooltipPrim
617
763
  * - reduced-motion query
618
764
  *
619
765
  * Design-system note: all visual dimensions are backed by CSS vars so
620
- * consumers can retheme via `--rds-media-radius`, `--rds-media-border`, etc.
766
+ * consumers can retheme via `--rds-media-radius`, `--rds-media-border`,
767
+ * `--rds-media-placeholder-bg`, `--rds-media-placeholder-fg`. The
768
+ * placeholder pair drives the empty-state treatment — it's the
769
+ * canonical "image not yet loaded" surface across Grade until the
770
+ * image-generation pipeline replaces empty slots with real pictures.
771
+ * Custom placeholder UI elsewhere in the product should consume the
772
+ * same vars so we stay visually coherent.
621
773
  * (These will rename to `--gds-*` when the broader codebase rename lands.)
622
774
  */
623
775
 
@@ -632,6 +784,16 @@ interface MediaSurfaceProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
632
784
  onVisibilityChange?: (visible: boolean) => void;
633
785
  /** Fallback shown before `onReady` is signalled by the child. */
634
786
  fallback?: React$1.ReactNode;
787
+ /**
788
+ * Controls the empty-state placeholder shown when no `children` and no
789
+ * `loading` state are provided. Default `"icon"` renders a subtle
790
+ * image-icon centered on the muted surface so the slot reads as
791
+ * "media goes here" rather than blank. Use `"none"` for cases where
792
+ * the consumer wants a truly empty surface (e.g. a custom decorative
793
+ * overlay that needs the surface clean), or pass a node to fully
794
+ * override.
795
+ */
796
+ emptyState?: "icon" | "none" | React$1.ReactNode;
635
797
  children?: React$1.ReactNode;
636
798
  }
637
799
  declare const MediaSurface: React$1.ForwardRefExoticComponent<MediaSurfaceProps & React$1.RefAttributes<HTMLDivElement>>;
@@ -1448,4 +1610,4 @@ declare function GradeModeSwitcher({ className, variant }: GradeModeSwitcherProp
1448
1610
  */
1449
1611
  declare function ThemeToggle(): React$1.JSX.Element;
1450
1612
 
1451
- export { ALL_MODES, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertTitle, AppShell, AppShellMain, type AppShellMainProps, AppShellNav, type AppShellNavProps, type AppShellProps, Avatar, AvatarFallback, AvatarImage, BUILT_IN_INPUTS, Badge, type BaseMediaProps, type BreadcrumbItem, Button, type ButtonShape, Calendar, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardStyle, CardTitle, type ChartPalette, Checkbox, type ColorIntensity, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FRAGMENT_HEADER, Flex, type FlexProps, type FontKey, GRADE_PRE_HYDRATION_SCRIPT, type GeneratedTheme, GradeModeSwitcher, GradeThemeProvider, type GradeThemeProviderProps, GradeThemeSwitcher, Grid, type GridProps, Input, type InputStyle, Label, LenisProvider, type MediaAspect, type MediaRadius, MediaSurface, type MediaSurfaceProps, type ModeName, type OKLCHTriplet, type Palette, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, type PostPreset, Progress, RadioGroup, RadioGroupItem, type RadiusStyle, type Ramp, RivePlayer, type RivePlayerProps, Row, type RowProps, type SceneContext, type SceneFactory, type SceneHandle, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, ShaderCompileError, type ShaderPreset, ShaderPresetPicker, type ShaderPresetPickerProps, ShaderPresetPreview, type ShaderPresetPreviewProps, type ShadowIntensity, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, SideMenu, type SideMenuItem, type SideMenuProps, type SideMenuSection, type SimpleTab, SimpleTabs, SimpleTabsContent, SimpleTabsList, type SimpleTabsListProps, SimpleTabsPanel, type SimpleTabsPanelProps, type SimpleTabsProps, SimpleTabsRoot, type SimpleTabsRootProps, SimpleTabsTrigger, type SimpleTabsTriggerProps, Skeleton, Slider, type SpacingDensity, Stack, type StackProps, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type ThemeInput, ThemeToggle, ThreeScene, type ThreeSceneProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TopMenu, type TopMenuProps, TopMenuUser, TopMenuUserItem, type TopMenuUserItemProps, type TopMenuUserProps, TopMenuUserSection, type TypeScalePreset, VideoPlayer, type VideoPlayerProps, mainVariants as appShellMainVariants, navVariants as appShellNavVariants, applyThemeToRoot, badgeVariants, buildFragmentShaderScene, builtInThemes, buttonVariants, calmInput, cn, defaultPostPreset, defaultThemeId, deleteUserTheme, duplicateTheme, energyInput, flexVariants, generateTheme, getTheme, gridVariants, listThemes, listUserThemes, loadUserThemeInput, postPresets, rowVariants, saveUserTheme, sceneRegistry, shaderPresetById, shaderPresets, shellVariants, stackVariants, themeToCSSVars, useGradeTheme, useMaybeGradeTheme, usePrefersReducedMotion };
1613
+ export { ALL_MODES, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertTitle, AppShell, AppShellAside, type AppShellAsideProps, AppShellFooter, type AppShellFooterProps, AppShellHeader, type AppShellHeaderProps, AppShellMain, type AppShellMainProps, AppShellNav, type AppShellNavProps, type AppShellProps, Avatar, AvatarFallback, AvatarImage, BUILT_IN_INPUTS, Badge, type BaseMediaProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonShape, Calendar, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardStyle, CardTitle, type ChartPalette, Checkbox, type ColorIntensity, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, FRAGMENT_HEADER, Flex, type FlexProps, type FontKey, GRADE_PRE_HYDRATION_SCRIPT, type GeneratedTheme, GradeModeSwitcher, GradeThemeProvider, type GradeThemeProviderProps, GradeThemeSwitcher, Grid, type GridProps, Input, type InputStyle, Label, LenisProvider, Map, MapHandle, MapMarker, MapMarkerProps, MapProps, type MediaAspect, type MediaRadius, MediaSurface, type MediaSurfaceProps, type ModeName, type OKLCHTriplet, type Palette, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, type PostPreset, Progress, RadioGroup, RadioGroupItem, type RadiusStyle, type Ramp, ResizableHandle, ResizablePanel, ResizablePanelGroup, RivePlayer, type RivePlayerProps, Row, type RowProps, type SceneContext, type SceneFactory, type SceneHandle, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, ShaderCompileError, type ShaderPreset, ShaderPresetPicker, type ShaderPresetPickerProps, ShaderPresetPreview, type ShaderPresetPreviewProps, type ShadowIntensity, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, SideMenu, type SideMenuItem, type SideMenuProps, type SideMenuSection, type SimpleTab, SimpleTabs, SimpleTabsContent, SimpleTabsList, type SimpleTabsListProps, SimpleTabsPanel, type SimpleTabsPanelProps, type SimpleTabsProps, SimpleTabsRoot, type SimpleTabsRootProps, SimpleTabsTrigger, type SimpleTabsTriggerProps, Skeleton, Slider, type SpacingDensity, Stack, type StackProps, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type ThemeInput, ThemeToggle, ThreeScene, type ThreeSceneProps, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type TypeScalePreset, VideoPlayer, type VideoPlayerProps, asideVariants as appShellAsideVariants, footerVariants as appShellFooterVariants, headerVariants as appShellHeaderVariants, mainVariants as appShellMainVariants, navVariants as appShellNavVariants, applyThemeToRoot, badgeVariants, buildFragmentShaderScene, builtInThemes, buttonVariants, calmInput, cn, defaultPostPreset, defaultThemeId, deleteUserTheme, duplicateTheme, energyInput, flexVariants, generateTheme, getTheme, gridVariants, listThemes, listUserThemes, loadUserThemeInput, postPresets, rowVariants, saveUserTheme, sceneRegistry, shaderPresetById, shaderPresets, shellVariants, stackVariants, themeToCSSVars, toggleVariants, useGradeTheme, useMaybeGradeTheme, usePrefersReducedMotion };