@gradeui/ui 0.8.0 → 0.9.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/dist/index.d.mts CHANGED
@@ -2,6 +2,7 @@ import * as React$1 from 'react';
2
2
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
3
3
  import * as class_variance_authority_types from 'class-variance-authority/types';
4
4
  import { VariantProps } from 'class-variance-authority';
5
+ import * as AvatarPrimitive from '@radix-ui/react-avatar';
5
6
  import { DayPicker, DayButton, DateRange } from 'react-day-picker';
6
7
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
7
8
  import * as DialogPrimitive from '@radix-ui/react-dialog';
@@ -10,13 +11,18 @@ import * as LabelPrimitive from '@radix-ui/react-label';
10
11
  import * as PopoverPrimitive from '@radix-ui/react-popover';
11
12
  import * as ProgressPrimitive from '@radix-ui/react-progress';
12
13
  import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
14
+ import * as ResizablePrimitive from 'react-resizable-panels';
13
15
  import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
14
16
  import * as SelectPrimitive from '@radix-ui/react-select';
15
17
  import * as SeparatorPrimitive from '@radix-ui/react-separator';
16
18
  import * as SliderPrimitive from '@radix-ui/react-slider';
17
19
  import * as SwitchPrimitives from '@radix-ui/react-switch';
18
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';
19
23
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
24
+ import { M as MapProps, a as MapHandle, b as MapMarkerProps } from './types-BxywIwvG.mjs';
25
+ export { C as Coords, c as MapAppearance, d as MapError, e as MapErrorCode } from './types-BxywIwvG.mjs';
20
26
  import * as THREE from 'three';
21
27
  import { ClassValue } from 'clsx';
22
28
 
@@ -26,72 +32,123 @@ declare const AccordionTrigger: React$1.ForwardRefExoticComponent<Omit<Accordion
26
32
  declare const AccordionContent: React$1.ForwardRefExoticComponent<Omit<AccordionPrimitive.AccordionContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
27
33
 
28
34
  declare const Alert: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
29
- variant?: "default" | "destructive" | "success" | "warning" | "info" | "highlight" | null | undefined;
35
+ variant?: "destructive" | "success" | "warning" | "info" | "highlight" | "default" | null | undefined;
30
36
  } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLDivElement>>;
31
37
  declare const AlertTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLParagraphElement>>;
32
38
  declare const AlertDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
33
39
 
34
40
  /**
35
- * AppShell — top-level page scaffold for an app-like layout.
41
+ * AppShell — top-level page scaffold for an app-like or marketing layout.
36
42
  *
37
- * The Studio was missing a named "app layout" primitive — without one,
38
- * agent-generated pages either freestyle grids or reinvent the nav-plus-
39
- * content structure every time. AppShell gives them one component with a
40
- * small, bounded set of layout variants so vibe-coded prototypes land in a
41
- * recognisable shape: a nav region (top, side, or none) plus a main region
42
- * 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.
43
62
  *
44
63
  * It is deliberately *just* structure: no collapse state, no context, no
45
- * runtime JS. Nav content is whatever the caller drops in — a SideMenu,
46
- * a TopMenu, or a hand-rolled `<nav>`. Keeping it dumb means it renders
47
- * fine on the server and can be styled by consumers without fighting a
48
- * 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.
49
67
  *
50
68
  * Variants:
51
- * - `nav` — "none" | "top" | "side". Chooses the grid structure.
52
- * - `maxWidth` — "full" | "container". Caps the main region width for
53
- * marketing-style pages without the caller having to wrap
54
- * their content in a max-w-* div.
55
- * - `sticky` — boolean. Sticks top nav to the viewport top / side nav
56
- * to the viewport when the page scrolls. Sensible default
57
- * 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.
58
73
  */
59
74
  declare const shellVariants: (props?: ({
60
- 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;
61
79
  } & class_variance_authority_types.ClassProp) | undefined) => string;
62
80
  declare const navVariants: (props?: ({
63
81
  placement?: "none" | "top" | "side" | null | undefined;
64
82
  sticky?: boolean | null | undefined;
65
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;
66
87
  declare const mainVariants: (props?: ({
67
- maxWidth?: "full" | "container" | null | undefined;
88
+ maxWidth?: "container" | "full" | null | undefined;
68
89
  } & class_variance_authority_types.ClassProp) | undefined) => string;
90
+ declare const footerVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
69
91
  interface AppShellProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof shellVariants> {
70
92
  /** Render as the single child element via Radix Slot — lets you stamp the
71
93
  * shell layout onto an existing root tag without an extra wrapper. */
72
94
  asChild?: boolean;
73
95
  }
74
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>>;
75
101
  interface AppShellNavProps extends React$1.HTMLAttributes<HTMLElement>, VariantProps<typeof navVariants> {
76
102
  asChild?: boolean;
77
103
  }
78
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>>;
79
109
  interface AppShellMainProps extends React$1.HTMLAttributes<HTMLElement>, VariantProps<typeof mainVariants> {
80
110
  asChild?: boolean;
81
111
  }
82
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>>;
117
+
118
+ declare const Avatar: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
119
+ declare const AvatarImage: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarImageProps & React$1.RefAttributes<HTMLImageElement>, "ref"> & React$1.RefAttributes<HTMLImageElement>>;
120
+ declare const AvatarFallback: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarFallbackProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
83
121
 
84
122
  declare const badgeVariants: (props?: ({
85
- variant?: "default" | "destructive" | "success" | "warning" | "info" | "highlight" | "secondary" | "outline" | "success-soft" | "warning-soft" | "destructive-soft" | "info-soft" | "highlight-soft" | "success-outline" | "warning-outline" | "destructive-outline" | "info-outline" | null | undefined;
123
+ variant?: "secondary" | "destructive" | "success" | "warning" | "info" | "highlight" | "default" | "outline" | "success-soft" | "warning-soft" | "destructive-soft" | "info-soft" | "highlight-soft" | "success-outline" | "warning-outline" | "destructive-outline" | "info-outline" | null | undefined;
86
124
  rounded?: "default" | "full" | null | undefined;
87
125
  } & class_variance_authority_types.ClassProp) | undefined) => string;
88
126
  interface BadgeProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
89
127
  }
90
128
  declare function Badge({ className, variant, rounded, ...props }: BadgeProps): React$1.JSX.Element;
91
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
+ */
92
149
  declare const buttonVariants: (props?: ({
93
- variant?: "link" | "default" | "destructive" | "secondary" | "outline" | "ghost" | null | undefined;
94
- size?: "default" | "sm" | "lg" | "icon" | null | undefined;
150
+ variant?: "link" | "secondary" | "destructive" | "default" | "outline" | "ghost" | null | undefined;
151
+ size?: "lg" | "md" | "sm" | "default" | "icon" | null | undefined;
95
152
  } & class_variance_authority_types.ClassProp) | undefined) => string;
96
153
  interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
97
154
  asChild?: boolean;
@@ -233,6 +290,68 @@ declare const Progress: React$1.ForwardRefExoticComponent<Omit<ProgressPrimitive
233
290
  declare const RadioGroup: React$1.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
234
291
  declare const RadioGroupItem: React$1.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupItemProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
235
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 | HTMLDataElement | HTMLInputElement | HTMLLinkElement | HTMLMapElement | HTMLAnchorElement | HTMLButtonElement | HTMLFormElement | HTMLHeadingElement | HTMLImageElement | HTMLLabelElement | HTMLLIElement | HTMLOListElement | HTMLParagraphElement | HTMLSelectElement | HTMLSpanElement | HTMLUListElement | HTMLAreaElement | HTMLAudioElement | HTMLBaseElement | HTMLQuoteElement | HTMLBodyElement | HTMLBRElement | HTMLCanvasElement | HTMLTableColElement | HTMLDataListElement | HTMLModElement | HTMLDetailsElement | HTMLDialogElement | HTMLDListElement | HTMLEmbedElement | HTMLFieldSetElement | HTMLHeadElement | HTMLHRElement | HTMLHtmlElement | HTMLIFrameElement | HTMLLegendElement | 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
+
236
355
  /**
237
356
  * Row — horizontal layout primitive.
238
357
  *
@@ -248,7 +367,7 @@ declare const RadioGroupItem: React$1.ForwardRefExoticComponent<Omit<RadioGroupP
248
367
  * etc.) and is a separate primitive.
249
368
  */
250
369
  declare const rowVariants: (props?: ({
251
- gap?: "none" | "sm" | "lg" | "xs" | "md" | "xl" | "2xl" | null | undefined;
370
+ gap?: "lg" | "md" | "sm" | "none" | "xs" | "xl" | "2xl" | null | undefined;
252
371
  align?: "center" | "end" | "start" | "stretch" | "baseline" | null | undefined;
253
372
  justify?: "center" | "end" | "start" | "between" | "around" | "evenly" | null | undefined;
254
373
  wrap?: boolean | null | undefined;
@@ -284,7 +403,7 @@ declare const Row: React$1.ForwardRefExoticComponent<RowProps & React$1.RefAttri
284
403
  */
285
404
  declare const gridVariants: (props?: ({
286
405
  cols?: "1" | "2" | "3" | "4" | "5" | "6" | "12" | null | undefined;
287
- gap?: "none" | "sm" | "lg" | "xs" | "md" | "xl" | "2xl" | null | undefined;
406
+ gap?: "lg" | "md" | "sm" | "none" | "xs" | "xl" | "2xl" | null | undefined;
288
407
  align?: "center" | "end" | "start" | "stretch" | null | undefined;
289
408
  } & class_variance_authority_types.ClassProp) | undefined) => string;
290
409
  interface GridProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof gridVariants> {
@@ -318,7 +437,7 @@ declare const Grid: React$1.ForwardRefExoticComponent<GridProps & React$1.RefAtt
318
437
  */
319
438
  declare const flexVariants: (props?: ({
320
439
  direction?: "col" | "row" | "row-reverse" | "col-reverse" | null | undefined;
321
- gap?: "none" | "sm" | "lg" | "xs" | "md" | "xl" | "2xl" | null | undefined;
440
+ gap?: "lg" | "md" | "sm" | "none" | "xs" | "xl" | "2xl" | null | undefined;
322
441
  align?: "center" | "end" | "start" | "stretch" | "baseline" | null | undefined;
323
442
  justify?: "center" | "end" | "start" | "between" | "around" | "evenly" | null | undefined;
324
443
  wrap?: "wrap" | "nowrap" | "wrap-reverse" | null | undefined;
@@ -388,7 +507,7 @@ declare const Slider: React$1.ForwardRefExoticComponent<Omit<SliderPrimitive.Sli
388
507
  * for a centred narrow column (auth cards, marketing copy).
389
508
  */
390
509
  declare const stackVariants: (props?: ({
391
- gap?: "none" | "sm" | "lg" | "xs" | "md" | "xl" | "2xl" | null | undefined;
510
+ gap?: "lg" | "md" | "sm" | "none" | "xs" | "xl" | "2xl" | null | undefined;
392
511
  align?: "center" | "end" | "start" | "stretch" | null | undefined;
393
512
  } & class_variance_authority_types.ClassProp) | undefined) => string;
394
513
  interface StackProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof stackVariants> {
@@ -410,13 +529,103 @@ declare const TableHead: React$1.ForwardRefExoticComponent<React$1.ThHTMLAttribu
410
529
  declare const TableCell: React$1.ForwardRefExoticComponent<React$1.TdHTMLAttributes<HTMLTableCellElement> & React$1.RefAttributes<HTMLTableCellElement>>;
411
530
  declare const TableCaption: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableCaptionElement> & React$1.RefAttributes<HTMLTableCaptionElement>>;
412
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
+
413
583
  declare const Tabs: React$1.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React$1.RefAttributes<HTMLDivElement>>;
414
- declare const TabsList: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsListProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
415
- 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?: "lg" | "md" | "sm" | null | undefined;
586
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
587
+ declare const tabsTriggerVariants: (props?: ({
588
+ size?: "lg" | "md" | "sm" | 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>>;
416
607
  declare const TabsContent: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
417
608
 
418
609
  declare const Textarea: React$1.ForwardRefExoticComponent<Omit<React$1.DetailedHTMLProps<React$1.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, "ref"> & React$1.RefAttributes<HTMLTextAreaElement>>;
419
610
 
611
+ declare const toggleVariants: (props?: ({
612
+ variant?: "default" | "outline" | null | undefined;
613
+ size?: "lg" | "sm" | "default" | 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?: "lg" | "sm" | "default" | null | undefined;
618
+ } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLButtonElement>>;
619
+
620
+ declare const toggleGroupVariants: (props?: ({
621
+ size?: "lg" | "md" | "sm" | 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?: "lg" | "md" | "sm" | null | undefined;
627
+ } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLButtonElement>>;
628
+
420
629
  interface SideMenuItem {
421
630
  id: string;
422
631
  label: string;
@@ -465,68 +674,6 @@ interface SideMenuProps {
465
674
  }
466
675
  declare const SideMenu: React$1.ForwardRefExoticComponent<SideMenuProps & React$1.RefAttributes<HTMLElement>>;
467
676
 
468
- interface BreadcrumbItem {
469
- label: string;
470
- href?: string;
471
- }
472
- interface TopMenuProps {
473
- /** Breadcrumb navigation items */
474
- breadcrumbs?: BreadcrumbItem[];
475
- /** Show mobile menu button */
476
- showMobileMenu?: boolean;
477
- /** Mobile menu button click handler */
478
- onMobileMenuClick?: () => void;
479
- /** Left side content (appears after breadcrumbs) */
480
- leftContent?: React$1.ReactNode;
481
- /** Right side content (actions, user menu, etc.) */
482
- rightContent?: React$1.ReactNode;
483
- /** Custom className */
484
- className?: string;
485
- /** Custom link component (e.g., Next.js Link) */
486
- linkComponent?: React$1.ComponentType<{
487
- href: string;
488
- className?: string;
489
- children: React$1.ReactNode;
490
- }>;
491
- }
492
- declare const TopMenu: React$1.ForwardRefExoticComponent<TopMenuProps & React$1.RefAttributes<HTMLElement>>;
493
- interface TopMenuUserProps {
494
- /** User name */
495
- name?: string;
496
- /** User email */
497
- email?: string;
498
- /** User avatar URL */
499
- avatarUrl?: string;
500
- /** Custom avatar content (icon, initials, etc.) */
501
- avatarContent?: React$1.ReactNode;
502
- /** Avatar background color class */
503
- avatarClassName?: string;
504
- /** Menu items */
505
- children?: React$1.ReactNode;
506
- /** Custom className */
507
- className?: string;
508
- }
509
- declare const TopMenuUser: React$1.ForwardRefExoticComponent<TopMenuUserProps & React$1.RefAttributes<HTMLDivElement>>;
510
- interface TopMenuUserItemProps {
511
- /** Item icon */
512
- icon?: React$1.ReactNode;
513
- /** Item label */
514
- children: React$1.ReactNode;
515
- /** Click handler */
516
- onClick?: () => void;
517
- /** Href for link items */
518
- href?: string;
519
- /** Variant */
520
- variant?: "default" | "danger" | "success";
521
- /** Custom className */
522
- className?: string;
523
- }
524
- declare const TopMenuUserItem: React$1.ForwardRefExoticComponent<TopMenuUserItemProps & React$1.RefAttributes<HTMLButtonElement>>;
525
- declare const TopMenuUserSection: React$1.ForwardRefExoticComponent<{
526
- children: React$1.ReactNode;
527
- className?: string;
528
- } & React$1.RefAttributes<HTMLDivElement>>;
529
-
530
677
  interface SimpleTab {
531
678
  id: string;
532
679
  label: string;
@@ -601,6 +748,10 @@ declare const Tooltip: React$1.FC<TooltipPrimitive.TooltipProps>;
601
748
  declare const TooltipTrigger: React$1.ForwardRefExoticComponent<TooltipPrimitive.TooltipTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
602
749
  declare const TooltipContent: React$1.ForwardRefExoticComponent<Omit<TooltipPrimitive.TooltipContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
603
750
 
751
+ declare const Map: React$1.ForwardRefExoticComponent<MapProps & React$1.RefAttributes<MapHandle>>;
752
+
753
+ declare const MapMarker: React$1.NamedExoticComponent<MapMarkerProps>;
754
+
604
755
  /**
605
756
  * MediaSurface — the shared shell used by VideoPlayer, RivePlayer,
606
757
  * and ThreeScene. Not exported publicly.
@@ -612,7 +763,13 @@ declare const TooltipContent: React$1.ForwardRefExoticComponent<Omit<TooltipPrim
612
763
  * - reduced-motion query
613
764
  *
614
765
  * Design-system note: all visual dimensions are backed by CSS vars so
615
- * 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.
616
773
  * (These will rename to `--gds-*` when the broader codebase rename lands.)
617
774
  */
618
775
 
@@ -627,6 +784,16 @@ interface MediaSurfaceProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>,
627
784
  onVisibilityChange?: (visible: boolean) => void;
628
785
  /** Fallback shown before `onReady` is signalled by the child. */
629
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;
630
797
  children?: React$1.ReactNode;
631
798
  }
632
799
  declare const MediaSurface: React$1.ForwardRefExoticComponent<MediaSurfaceProps & React$1.RefAttributes<HTMLDivElement>>;
@@ -1443,4 +1610,4 @@ declare function GradeModeSwitcher({ className, variant }: GradeModeSwitcherProp
1443
1610
  */
1444
1611
  declare function ThemeToggle(): React$1.JSX.Element;
1445
1612
 
1446
- export { ALL_MODES, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertTitle, AppShell, AppShellMain, type AppShellMainProps, AppShellNav, type AppShellNavProps, type AppShellProps, 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 };