@gradeui/ui 1.3.0 → 2.1.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
@@ -25,6 +25,11 @@ import * as SeparatorPrimitive from '@radix-ui/react-separator';
25
25
  import * as SliderPrimitive from '@radix-ui/react-slider';
26
26
  import { UniqueIdentifier } from '@dnd-kit/core';
27
27
  import * as TabsPrimitive from '@radix-ui/react-tabs';
28
+ import * as recharts_types_util_payload_getUniqPayload from 'recharts/types/util/payload/getUniqPayload';
29
+ import * as recharts_types_component_Tooltip from 'recharts/types/component/Tooltip';
30
+ import * as recharts_types_util_types from 'recharts/types/util/types';
31
+ import * as recharts_types_component_DefaultTooltipContent from 'recharts/types/component/DefaultTooltipContent';
32
+ import * as RechartsPrimitive from 'recharts';
28
33
  import * as TogglePrimitive from '@radix-ui/react-toggle';
29
34
  import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
30
35
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
@@ -177,14 +182,14 @@ declare const MediaSurfaceContract: _gradeui_contracts.ComponentContract<{
177
182
  description: z.ZodOptional<z.ZodString>;
178
183
  }, "strip", z.ZodTypeAny, {
179
184
  kind: "book";
180
- title?: string | undefined;
181
185
  description?: string | undefined;
186
+ title?: string | undefined;
182
187
  author?: string | undefined;
183
188
  isbn?: string | undefined;
184
189
  }, {
185
190
  kind: "book";
186
- title?: string | undefined;
187
191
  description?: string | undefined;
192
+ title?: string | undefined;
188
193
  author?: string | undefined;
189
194
  isbn?: string | undefined;
190
195
  }>, z.ZodObject<{
@@ -384,10 +389,10 @@ declare const AccordionContent: React$1.ForwardRefExoticComponent<Omit<Accordion
384
389
  * `variant="warning"` or `variant="info"` depending on temperature.
385
390
  */
386
391
  declare const calloutVariants: (props?: ({
387
- variant?: "default" | "info" | "success" | "warning" | "destructive" | null | undefined;
392
+ variant?: "default" | "destructive" | "success" | "warning" | "info" | null | undefined;
388
393
  } & class_variance_authority_types.ClassProp) | undefined) => string;
389
394
  declare const Callout: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
390
- variant?: "default" | "info" | "success" | "warning" | "destructive" | null | undefined;
395
+ variant?: "default" | "destructive" | "success" | "warning" | "info" | null | undefined;
391
396
  } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLDivElement>>;
392
397
  declare const CalloutTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLParagraphElement>>;
393
398
  declare const CalloutDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
@@ -489,7 +494,7 @@ declare const AppShellFooter: React$1.ForwardRefExoticComponent<AppShellFooterPr
489
494
  * directly still works and overrides the variant defaults.
490
495
  */
491
496
  declare const avatarSizes: (props?: ({
492
- size?: "sm" | "md" | "lg" | "xl" | "xs" | null | undefined;
497
+ size?: "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
493
498
  } & class_variance_authority_types.ClassProp) | undefined) => string;
494
499
  interface AvatarProps extends React$1.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>, VariantProps<typeof avatarSizes> {
495
500
  }
@@ -504,7 +509,7 @@ interface AvatarFallbackProps extends React$1.ComponentPropsWithoutRef<typeof Av
504
509
  declare const AvatarFallback: React$1.ForwardRefExoticComponent<AvatarFallbackProps & React$1.RefAttributes<HTMLSpanElement>>;
505
510
 
506
511
  declare const badgeVariants: (props?: ({
507
- variant?: "default" | "info" | "success" | "warning" | "destructive" | "outline" | "secondary" | "highlight" | "success-soft" | "warning-soft" | "destructive-soft" | "info-soft" | "highlight-soft" | "success-outline" | "warning-outline" | "destructive-outline" | "info-outline" | null | undefined;
512
+ variant?: "default" | "secondary" | "destructive" | "outline" | "highlight" | "success" | "warning" | "info" | "success-soft" | "warning-soft" | "destructive-soft" | "info-soft" | "highlight-soft" | "success-outline" | "warning-outline" | "destructive-outline" | "info-outline" | null | undefined;
508
513
  rounded?: "default" | "full" | null | undefined;
509
514
  } & class_variance_authority_types.ClassProp) | undefined) => string;
510
515
  interface BadgeProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
@@ -570,8 +575,8 @@ type Surface = "solid" | "translucent" | "glass" | "glass-strong";
570
575
  * cannot get the token names wrong.
571
576
  */
572
577
  declare const bannerVariants: (props?: ({
573
- variant?: "default" | "info" | "success" | "warning" | "destructive" | "announcement" | null | undefined;
574
- align?: "center" | "start" | "between" | null | undefined;
578
+ variant?: "default" | "destructive" | "success" | "warning" | "info" | "announcement" | null | undefined;
579
+ align?: "between" | "start" | "center" | null | undefined;
575
580
  sticky?: boolean | null | undefined;
576
581
  } & class_variance_authority_types.ClassProp) | undefined) => string;
577
582
  interface BannerProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "title">, VariantProps<typeof bannerVariants> {
@@ -627,8 +632,8 @@ declare const Banner: React$1.ForwardRefExoticComponent<BannerProps & React$1.Re
627
632
  * consistent across primitives.
628
633
  */
629
634
  declare const buttonVariants: (props?: ({
630
- variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | "raised" | null | undefined;
631
- size?: "default" | "sm" | "md" | "lg" | "icon" | "xs" | null | undefined;
635
+ variant?: "default" | "secondary" | "destructive" | "outline" | "ghost" | "link" | "raised" | null | undefined;
636
+ size?: "2xs" | "xs" | "sm" | "md" | "lg" | "default" | "icon" | null | undefined;
632
637
  } & class_variance_authority_types.ClassProp) | undefined) => string;
633
638
  interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
634
639
  asChild?: boolean;
@@ -1326,6 +1331,10 @@ interface UseScriptedDemoOptions<TStep> {
1326
1331
  play?: boolean;
1327
1332
  /** Loop the sequence forever after completion. Pause length controlled by `loopDelay`. */
1328
1333
  loop?: boolean;
1334
+ /** Cap the number of loop cycles, then settle and stop. A demo is a movie —
1335
+ * it shouldn't spin forever. Default Infinity. Grid/embed surfaces set a
1336
+ * small number so the loop ends instead of running unattended. */
1337
+ maxLoops?: number;
1329
1338
  /**
1330
1339
  * Milliseconds to pause between loop cycles. Only applies when
1331
1340
  * `loop` is true. Defaults to 2000. Marketing surfaces that want
@@ -1903,7 +1912,7 @@ declare const DropdownMenuShortcut: {
1903
1912
  * rationale.
1904
1913
  */
1905
1914
  declare const inputVariants: (props?: ({
1906
- size?: "default" | "sm" | "xs" | null | undefined;
1915
+ size?: "2xs" | "xs" | "sm" | "default" | null | undefined;
1907
1916
  } & class_variance_authority_types.ClassProp) | undefined) => string;
1908
1917
  type InputSize = NonNullable<VariantProps<typeof inputVariants>["size"]>;
1909
1918
  type InputProps = Omit<React$1.ComponentProps<"input">, "size"> & {
@@ -1921,7 +1930,7 @@ type InputProps = Omit<React$1.ComponentProps<"input">, "size"> & {
1921
1930
  declare const Input: React$1.ForwardRefExoticComponent<Omit<InputProps, "ref"> & React$1.RefAttributes<HTMLInputElement>>;
1922
1931
 
1923
1932
  declare const Label: React$1.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React$1.RefAttributes<HTMLLabelElement>, "ref"> & VariantProps<(props?: ({
1924
- size?: "default" | "sm" | "xs" | null | undefined;
1933
+ size?: "2xs" | "xs" | "sm" | "default" | null | undefined;
1925
1934
  } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLLabelElement>>;
1926
1935
 
1927
1936
  declare const Popover: React$1.FC<PopoverPrimitive.PopoverProps>;
@@ -2065,7 +2074,7 @@ declare const RadioGroupItem: React$1.ForwardRefExoticComponent<Omit<RadioGroupP
2065
2074
  * </ResizablePanelGroup>
2066
2075
  */
2067
2076
  declare const ResizablePanelGroup: ({ className, ...props }: React$1.ComponentProps<typeof ResizablePrimitive.PanelGroup>) => React$1.JSX.Element;
2068
- declare const ResizablePanel: React$1.ForwardRefExoticComponent<Omit<React$1.HTMLAttributes<HTMLHeadElement | HTMLElement | HTMLLinkElement | HTMLDivElement | HTMLObjectElement | HTMLAnchorElement | HTMLAreaElement | HTMLAudioElement | HTMLBaseElement | HTMLQuoteElement | HTMLBodyElement | HTMLBRElement | HTMLButtonElement | HTMLCanvasElement | HTMLTableColElement | HTMLDataElement | HTMLDataListElement | HTMLModElement | HTMLDetailsElement | HTMLDialogElement | HTMLDListElement | HTMLEmbedElement | HTMLFieldSetElement | HTMLFormElement | HTMLHeadingElement | HTMLHRElement | HTMLHtmlElement | HTMLIFrameElement | HTMLImageElement | HTMLInputElement | HTMLLabelElement | HTMLLegendElement | HTMLLIElement | HTMLMapElement | HTMLMetaElement | HTMLMeterElement | HTMLOListElement | HTMLOptGroupElement | HTMLOptionElement | HTMLOutputElement | HTMLParagraphElement | HTMLPreElement | HTMLProgressElement | HTMLScriptElement | HTMLSelectElement | HTMLSlotElement | HTMLSourceElement | HTMLSpanElement | HTMLStyleElement | HTMLTableElement | HTMLTableSectionElement | HTMLTableCellElement | HTMLTemplateElement | HTMLTextAreaElement | HTMLTimeElement | HTMLTitleElement | HTMLTableRowElement | HTMLTrackElement | HTMLUListElement | HTMLVideoElement | HTMLTableCaptionElement | HTMLMenuElement | HTMLPictureElement>, "id" | "onResize"> & {
2077
+ declare const ResizablePanel: React$1.ForwardRefExoticComponent<Omit<React$1.HTMLAttributes<HTMLDivElement | HTMLElement | HTMLObjectElement | HTMLSelectElement | HTMLTextAreaElement | HTMLMapElement | HTMLTitleElement | HTMLVideoElement | HTMLButtonElement | HTMLLinkElement | HTMLLabelElement | HTMLStyleElement | HTMLSourceElement | HTMLHtmlElement | HTMLOptionElement | HTMLTableColElement | HTMLAudioElement | HTMLEmbedElement | HTMLProgressElement | HTMLHRElement | HTMLTableElement | HTMLAnchorElement | HTMLFormElement | HTMLHeadingElement | HTMLImageElement | HTMLInputElement | HTMLLIElement | HTMLOListElement | HTMLParagraphElement | HTMLSpanElement | HTMLUListElement | HTMLAreaElement | HTMLBaseElement | HTMLQuoteElement | HTMLBodyElement | HTMLBRElement | HTMLCanvasElement | HTMLDataElement | HTMLDataListElement | HTMLModElement | HTMLDetailsElement | HTMLDialogElement | HTMLDListElement | HTMLFieldSetElement | HTMLHeadElement | HTMLIFrameElement | HTMLLegendElement | HTMLMetaElement | HTMLMeterElement | HTMLOptGroupElement | HTMLOutputElement | HTMLPreElement | HTMLSlotElement | HTMLScriptElement | HTMLTemplateElement | HTMLTableSectionElement | HTMLTableCellElement | HTMLTimeElement | HTMLTableRowElement | HTMLTrackElement | HTMLTableCaptionElement | HTMLMenuElement | HTMLPictureElement>, "id" | "onResize"> & {
2069
2078
  className?: string | undefined;
2070
2079
  collapsedSize?: number | undefined;
2071
2080
  collapsible?: boolean | undefined;
@@ -2104,9 +2113,9 @@ declare const ResizableHandle: ({ withHandle, className, ...props }: React$1.Com
2104
2113
  * etc.) and is a separate primitive.
2105
2114
  */
2106
2115
  declare const rowVariants: (props?: ({
2107
- gap?: "none" | "sm" | "md" | "lg" | "xl" | "xs" | "2xl" | null | undefined;
2108
- align?: "center" | "start" | "end" | "stretch" | "baseline" | null | undefined;
2109
- justify?: "center" | "start" | "between" | "end" | "around" | "evenly" | null | undefined;
2116
+ gap?: "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | null | undefined;
2117
+ align?: "start" | "center" | "end" | "stretch" | "baseline" | null | undefined;
2118
+ justify?: "between" | "start" | "center" | "end" | "around" | "evenly" | null | undefined;
2110
2119
  wrap?: boolean | null | undefined;
2111
2120
  } & class_variance_authority_types.ClassProp) | undefined) => string;
2112
2121
  interface RowProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof rowVariants> {
@@ -2140,8 +2149,8 @@ declare const Row: React$1.ForwardRefExoticComponent<RowProps & React$1.RefAttri
2140
2149
  */
2141
2150
  declare const gridVariants: (props?: ({
2142
2151
  cols?: "1" | "2" | "3" | "4" | "5" | "6" | "12" | null | undefined;
2143
- gap?: "none" | "sm" | "md" | "lg" | "xl" | "xs" | "2xl" | null | undefined;
2144
- align?: "center" | "start" | "end" | "stretch" | null | undefined;
2152
+ gap?: "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | null | undefined;
2153
+ align?: "start" | "center" | "end" | "stretch" | null | undefined;
2145
2154
  } & class_variance_authority_types.ClassProp) | undefined) => string;
2146
2155
  interface GridProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof gridVariants> {
2147
2156
  /** When true, render as the single child element via Radix Slot — lets
@@ -2173,10 +2182,10 @@ declare const Grid: React$1.ForwardRefExoticComponent<GridProps & React$1.RefAtt
2173
2182
  * case. Flex is the escape hatch, not the default.
2174
2183
  */
2175
2184
  declare const flexVariants: (props?: ({
2176
- direction?: "col" | "row" | "row-reverse" | "col-reverse" | null | undefined;
2177
- gap?: "none" | "sm" | "md" | "lg" | "xl" | "xs" | "2xl" | null | undefined;
2178
- align?: "center" | "start" | "end" | "stretch" | "baseline" | null | undefined;
2179
- justify?: "center" | "start" | "between" | "end" | "around" | "evenly" | null | undefined;
2185
+ direction?: "row" | "col" | "row-reverse" | "col-reverse" | null | undefined;
2186
+ gap?: "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | null | undefined;
2187
+ align?: "start" | "center" | "end" | "stretch" | "baseline" | null | undefined;
2188
+ justify?: "between" | "start" | "center" | "end" | "around" | "evenly" | null | undefined;
2180
2189
  wrap?: "wrap" | "nowrap" | "wrap-reverse" | null | undefined;
2181
2190
  } & class_variance_authority_types.ClassProp) | undefined) => string;
2182
2191
  interface FlexProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof flexVariants> {
@@ -2201,7 +2210,7 @@ declare const SelectValue: React$1.ForwardRefExoticComponent<SelectPrimitive.Sel
2201
2210
  * flows through the Radix portal (it follows the React tree, not the
2202
2211
  * DOM), so items styled this way work even though the menu is portaled.
2203
2212
  */
2204
- type SelectMenuSize = "default" | "sm" | "xs";
2213
+ type SelectMenuSize = "default" | "sm" | "xs" | "2xs";
2205
2214
  /**
2206
2215
  * Select trigger variants — `size` lets dense surfaces (the
2207
2216
  * Studio inspector, settings sheets) reach for a compact `sm`
@@ -2210,11 +2219,20 @@ type SelectMenuSize = "default" | "sm" | "xs";
2210
2219
  * existing call site.
2211
2220
  */
2212
2221
  declare const selectTriggerVariants: (props?: ({
2213
- size?: "default" | "sm" | "xs" | null | undefined;
2222
+ size?: "2xs" | "xs" | "sm" | "default" | null | undefined;
2214
2223
  } & class_variance_authority_types.ClassProp) | undefined) => string;
2215
2224
  type SelectTriggerSize = NonNullable<VariantProps<typeof selectTriggerVariants>["size"]>;
2216
2225
  declare const SelectTrigger: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & {
2217
2226
  size?: SelectTriggerSize;
2227
+ /** Adornment rendered inside the trigger on the leading edge — a
2228
+ * property glyph, a unit. Mirrors Input's startSlot. Grouped with
2229
+ * the value in a div (NOT a bare span: the trigger's
2230
+ * `[&>span]:line-clamp-1` would stack a span's children
2231
+ * vertically). */
2232
+ startSlot?: React$1.ReactNode;
2233
+ /** Hide the dropdown chevron — Figma-style token fields keep the
2234
+ * right edge for their own affordances (detach/attach). */
2235
+ chevron?: boolean;
2218
2236
  } & React$1.RefAttributes<HTMLButtonElement>>;
2219
2237
  declare const SelectScrollUpButton: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollUpButtonProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
2220
2238
  declare const SelectScrollDownButton: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollDownButtonProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
@@ -2222,7 +2240,12 @@ declare const SelectContent: React$1.ForwardRefExoticComponent<Omit<SelectPrimit
2222
2240
  size?: SelectMenuSize;
2223
2241
  } & React$1.RefAttributes<HTMLDivElement>>;
2224
2242
  declare const SelectLabel: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
2225
- declare const SelectItem: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
2243
+ declare const SelectItem: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
2244
+ /** Optional right-aligned secondary text (e.g. a token's resolved
2245
+ * value). Rendered in the menu row only — NOT inside ItemText, so
2246
+ * it never mirrors into the trigger via SelectValue. */
2247
+ hint?: React$1.ReactNode;
2248
+ } & React$1.RefAttributes<HTMLDivElement>>;
2226
2249
  declare const SelectSeparator: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
2227
2250
 
2228
2251
  declare const Separator: React$1.ForwardRefExoticComponent<Omit<SeparatorPrimitive.SeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
@@ -2233,7 +2256,7 @@ declare const SheetClose: React$1.ForwardRefExoticComponent<DialogPrimitive.Dial
2233
2256
  declare const SheetPortal: React$1.FC<DialogPrimitive.DialogPortalProps>;
2234
2257
  declare const SheetOverlay: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
2235
2258
  declare const sheetVariants: (props?: ({
2236
- side?: "bottom" | "top" | "right" | "left" | null | undefined;
2259
+ side?: "top" | "right" | "bottom" | "left" | null | undefined;
2237
2260
  } & class_variance_authority_types.ClassProp) | undefined) => string;
2238
2261
  interface SheetContentProps extends React$1.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, VariantProps<typeof sheetVariants> {
2239
2262
  /**
@@ -2371,9 +2394,9 @@ declare const Sortable: SortableRootComponent;
2371
2394
  * for a centred narrow column (auth cards, marketing copy).
2372
2395
  */
2373
2396
  declare const stackVariants: (props?: ({
2374
- gap?: "none" | "sm" | "md" | "lg" | "xl" | "xs" | "2xl" | null | undefined;
2375
- align?: "center" | "start" | "end" | "stretch" | null | undefined;
2376
- justify?: "center" | "start" | "between" | "end" | "around" | "evenly" | null | undefined;
2397
+ gap?: "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | null | undefined;
2398
+ align?: "start" | "center" | "end" | "stretch" | null | undefined;
2399
+ justify?: "between" | "start" | "center" | "end" | "around" | "evenly" | null | undefined;
2377
2400
  } & class_variance_authority_types.ClassProp) | undefined) => string;
2378
2401
  interface StackProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProps<typeof stackVariants> {
2379
2402
  /** When true, render as the single child element via Radix Slot — lets
@@ -2383,7 +2406,20 @@ interface StackProps extends React$1.HTMLAttributes<HTMLDivElement>, VariantProp
2383
2406
  }
2384
2407
  declare const Stack: React$1.ForwardRefExoticComponent<StackProps & React$1.RefAttributes<HTMLDivElement>>;
2385
2408
 
2386
- declare const Switch: React$1.ForwardRefExoticComponent<Omit<SwitchPrimitives.SwitchProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
2409
+ /**
2410
+ * Switch — track + thumb scale together via the shared control size
2411
+ * scale. Dimensions stay on Tailwind's spacing scale (no arbitrary
2412
+ * values): thumb travel = trackWidth − thumbWidth − 2×border, which
2413
+ * lands on a clean `translate-x-*` step at each size. `xs`/`sm` are the
2414
+ * dense tool-panel sizes (the Studio inspector).
2415
+ */
2416
+ declare const switchTrackVariants: (props?: ({
2417
+ size?: "2xs" | "xs" | "sm" | "default" | null | undefined;
2418
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
2419
+ type SwitchSize = NonNullable<VariantProps<typeof switchTrackVariants>["size"]>;
2420
+ declare const Switch: React$1.ForwardRefExoticComponent<Omit<Omit<SwitchPrimitives.SwitchProps & React$1.RefAttributes<HTMLButtonElement>, "ref">, "size"> & {
2421
+ size?: SwitchSize;
2422
+ } & React$1.RefAttributes<HTMLButtonElement>>;
2387
2423
 
2388
2424
  declare const Table: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableElement> & React$1.RefAttributes<HTMLTableElement>>;
2389
2425
  declare const TableHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLTableSectionElement> & React$1.RefAttributes<HTMLTableSectionElement>>;
@@ -2500,13 +2536,73 @@ interface TabsTriggerProps extends React$1.ComponentPropsWithoutRef<typeof TabsP
2500
2536
  declare const TabsTrigger: React$1.ForwardRefExoticComponent<TabsTriggerProps & React$1.RefAttributes<HTMLButtonElement>>;
2501
2537
  declare const TabsContent: React$1.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
2502
2538
 
2539
+ declare const THEMES: {
2540
+ readonly light: "";
2541
+ readonly dark: ".dark";
2542
+ };
2543
+ type ChartConfig = {
2544
+ [k in string]: {
2545
+ label?: React$1.ReactNode;
2546
+ icon?: React$1.ComponentType;
2547
+ } & ({
2548
+ color?: string;
2549
+ theme?: never;
2550
+ } | {
2551
+ color?: never;
2552
+ theme: Record<keyof typeof THEMES, string>;
2553
+ });
2554
+ };
2555
+ declare const ChartContainer: React$1.ForwardRefExoticComponent<Omit<React$1.ClassAttributes<HTMLDivElement> & React$1.HTMLAttributes<HTMLDivElement> & {
2556
+ config: ChartConfig;
2557
+ children: React$1.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
2558
+ }, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
2559
+ declare const ChartStyle: ({ id, config }: {
2560
+ id: string;
2561
+ config: ChartConfig;
2562
+ }) => React$1.JSX.Element | null;
2563
+ declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
2564
+ declare const ChartTooltipContent: React$1.ForwardRefExoticComponent<Omit<RechartsPrimitive.DefaultTooltipContentProps<recharts_types_component_DefaultTooltipContent.ValueType, recharts_types_component_DefaultTooltipContent.NameType> & {
2565
+ accessibilityLayer?: boolean;
2566
+ active?: boolean | undefined;
2567
+ includeHidden?: boolean | undefined;
2568
+ allowEscapeViewBox?: recharts_types_util_types.AllowInDimension;
2569
+ animationDuration?: recharts_types_util_types.AnimationDuration;
2570
+ animationEasing?: recharts_types_util_types.AnimationTiming;
2571
+ content?: recharts_types_component_Tooltip.ContentType<recharts_types_component_DefaultTooltipContent.ValueType, recharts_types_component_DefaultTooltipContent.NameType> | undefined;
2572
+ coordinate?: Partial<recharts_types_util_types.Coordinate>;
2573
+ cursor?: boolean | React$1.ReactElement | React$1.SVGProps<SVGElement>;
2574
+ filterNull?: boolean;
2575
+ defaultIndex?: number;
2576
+ isAnimationActive?: boolean;
2577
+ offset?: number;
2578
+ payloadUniqBy?: recharts_types_util_payload_getUniqPayload.UniqueOption<recharts_types_component_DefaultTooltipContent.Payload<recharts_types_component_DefaultTooltipContent.ValueType, recharts_types_component_DefaultTooltipContent.NameType>> | undefined;
2579
+ position?: Partial<recharts_types_util_types.Coordinate>;
2580
+ reverseDirection?: recharts_types_util_types.AllowInDimension;
2581
+ shared?: boolean;
2582
+ trigger?: "hover" | "click";
2583
+ useTranslate3d?: boolean;
2584
+ viewBox?: recharts_types_util_types.CartesianViewBox;
2585
+ wrapperStyle?: React$1.CSSProperties;
2586
+ } & React$1.ClassAttributes<HTMLDivElement> & React$1.HTMLAttributes<HTMLDivElement> & {
2587
+ hideLabel?: boolean;
2588
+ hideIndicator?: boolean;
2589
+ indicator?: "line" | "dot" | "dashed";
2590
+ nameKey?: string;
2591
+ labelKey?: string;
2592
+ }, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
2593
+ declare const ChartLegend: typeof RechartsPrimitive.Legend;
2594
+ declare const ChartLegendContent: React$1.ForwardRefExoticComponent<Omit<React$1.ClassAttributes<HTMLDivElement> & React$1.HTMLAttributes<HTMLDivElement> & Pick<RechartsPrimitive.LegendProps, "verticalAlign" | "payload"> & {
2595
+ hideIcon?: boolean;
2596
+ nameKey?: string;
2597
+ }, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
2598
+
2503
2599
  /**
2504
2600
  * Textarea variants — `size` mirrors Input so the whole form-control
2505
2601
  * family scales together. Default keeps the existing min-h-[80px] /
2506
2602
  * px-3 / text-sm; `sm` and `xs` are for dense tool panels.
2507
2603
  */
2508
2604
  declare const textareaVariants: (props?: ({
2509
- size?: "default" | "sm" | "xs" | null | undefined;
2605
+ size?: "2xs" | "xs" | "sm" | "default" | null | undefined;
2510
2606
  } & class_variance_authority_types.ClassProp) | undefined) => string;
2511
2607
  type TextareaSize = NonNullable<VariantProps<typeof textareaVariants>["size"]>;
2512
2608
  type TextareaProps = Omit<React$1.ComponentProps<"textarea">, "size"> & {
@@ -2516,11 +2612,11 @@ declare const Textarea: React$1.ForwardRefExoticComponent<Omit<TextareaProps, "r
2516
2612
 
2517
2613
  declare const toggleVariants: (props?: ({
2518
2614
  variant?: "default" | "outline" | null | undefined;
2519
- size?: "default" | "sm" | "lg" | "xs" | null | undefined;
2615
+ size?: "2xs" | "xs" | "sm" | "lg" | "default" | null | undefined;
2520
2616
  } & class_variance_authority_types.ClassProp) | undefined) => string;
2521
2617
  declare const Toggle: React$1.ForwardRefExoticComponent<Omit<TogglePrimitive.ToggleProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & VariantProps<(props?: ({
2522
2618
  variant?: "default" | "outline" | null | undefined;
2523
- size?: "default" | "sm" | "lg" | "xs" | null | undefined;
2619
+ size?: "2xs" | "xs" | "sm" | "lg" | "default" | null | undefined;
2524
2620
  } & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLButtonElement>>;
2525
2621
 
2526
2622
  declare const TooltipProvider: React$1.FC<TooltipPrimitive.TooltipProviderProps>;
@@ -2605,7 +2701,7 @@ declare const ToggleGroupItem: React$1.ForwardRefExoticComponent<Omit<ToggleGrou
2605
2701
  * persistent footer toolbars on mobile-style layouts.
2606
2702
  */
2607
2703
  declare const toolbarVariants: (props?: ({
2608
- position?: "bottom" | "top" | "inline" | null | undefined;
2704
+ position?: "top" | "bottom" | "inline" | null | undefined;
2609
2705
  variant?: "default" | "transparent" | "subtle" | null | undefined;
2610
2706
  size?: "sm" | "md" | "lg" | null | undefined;
2611
2707
  sticky?: boolean | null | undefined;
@@ -2891,6 +2987,24 @@ declare function useReducedMotion(): boolean;
2891
2987
  * global `data-motion="off"` toggle, not just the OS query.
2892
2988
  */
2893
2989
  declare const usePrefersReducedMotion: typeof useReducedMotion;
2990
+ /**
2991
+ * Returns `true` when the page is actually being watched — the tab is visible
2992
+ * AND (for a top-level document) the window is focused. Inside an iframe the
2993
+ * focus check is skipped, because an iframe rarely "has focus" even when its
2994
+ * tab is frontmost; it falls back to visibility, which correctly tracks the
2995
+ * top tab. Use it to PAUSE autoplay loops when nobody's looking: a movie stops
2996
+ * when you tab away.
2997
+ *
2998
+ * SSR-safe — defaults to `true` and rehydrates in an effect.
2999
+ *
3000
+ * Scope, deliberately: this knows about tab visibility + window focus, NOT
3001
+ * whether the element is scrolled into view (pair it with an
3002
+ * IntersectionObserver — e.g. motion's `useInView` — for that), and NOT
3003
+ * whether a cross-document iframe has scrolled off its PARENT's viewport. An
3004
+ * iframe can't see the parent's scroll; the parent must observe the host and
3005
+ * pause it. See the grid poster/promote policy in STUDIO-CAPTURE.md.
3006
+ */
3007
+ declare function usePageActive(): boolean;
2894
3008
  /**
2895
3009
  * Imperatively set the global motion toggle on `<html>`.
2896
3010
  *
@@ -3084,6 +3198,11 @@ declare global {
3084
3198
  interface Window {
3085
3199
  __gradeMediaUrls?: MediaUrlMap;
3086
3200
  __gradeMediaOverrides?: MediaOverrideMap;
3201
+ /** Source-keys with a Fill request currently in flight. Stamped by
3202
+ * the sandbox agent on `grade:set-media-pending`; drives the
3203
+ * placeholder's Presence shimmer (gds-aura-shimmer) so slots read
3204
+ * as "being generated" rather than inert while the resolver works. */
3205
+ __gradeMediaPending?: Record<string, true>;
3087
3206
  }
3088
3207
  }
3089
3208
  interface MediaSurfaceProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
@@ -3279,8 +3398,11 @@ interface LogoSources {
3279
3398
  icon?: LogoVariant;
3280
3399
  }
3281
3400
  interface LogoProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "children"> {
3282
- /** The brand artwork. Supply only the slots you have. */
3283
- sources: LogoSources;
3401
+ /** The brand artwork. Supply only the slots you have. Optional — with
3402
+ * no artwork at all the neutral placeholder renders, which keeps
3403
+ * layout intact (and keeps a model-emitted bare `<Logo />` from
3404
+ * crashing a Studio preview). */
3405
+ sources?: LogoSources;
3284
3406
  /** Which lockup to show. Falls back to another lockup if this one is
3285
3407
  * empty. Default `"horizontal"`. */
3286
3408
  lockup?: LogoLockup;
@@ -3305,6 +3427,263 @@ interface LogoProps extends Omit<React$1.HTMLAttributes<HTMLElement>, "children"
3305
3427
  }
3306
3428
  declare const Logo: React$1.ForwardRefExoticComponent<LogoProps & React$1.RefAttributes<HTMLElement>>;
3307
3429
 
3430
+ type GradeLoaderSize = "sm" | "md" | "lg" | "xl";
3431
+ interface GradeLoaderProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
3432
+ /** Mark size — token or exact pixels. Default `"md"` (24px). */
3433
+ size?: GradeLoaderSize | number;
3434
+ /** Accessible status text (and the optional visible caption).
3435
+ * Default "Loading…"; pass "" to silence. */
3436
+ label?: string;
3437
+ /** Show the label visually under the mark (it's always announced). */
3438
+ showLabel?: boolean;
3439
+ }
3440
+ declare const GradeLoader: React$1.ForwardRefExoticComponent<GradeLoaderProps & React$1.RefAttributes<HTMLDivElement>>;
3441
+
3442
+ /**
3443
+ * ScreenAnimator — wrap any content in a directed camera.
3444
+ *
3445
+ * Give it a list of `shots` (a zoom + focal point + dwell) and it tours them:
3446
+ * flies in from offscreen, eases between shots, settles back to the start,
3447
+ * exits, and loops, with a focus spotlight, a synthetic cursor, captions, and
3448
+ * a play/pause/restart transport. The content stays live and interactive
3449
+ * underneath; the camera just directs the eye. It works around ANY children,
3450
+ * a dashboard, an app shell, a single card.
3451
+ *
3452
+ * It's the reusable form of the camera in the embed (`useCameraTimeline` /
3453
+ * `ZoomPan`) and the `camera-tour` scaffold — see STUDIO-DIRECTOR.md. Honours
3454
+ * reduced motion (settles on the starter frame, no movement).
3455
+ */
3456
+ interface ScreenAnimatorShot {
3457
+ /** Magnification (1 = fit). >1 pushes in. */
3458
+ zoom?: number;
3459
+ /** Focal point as fractions of the content (0..1). Defaults to centre. */
3460
+ cx?: number;
3461
+ cy?: number;
3462
+ /** Milliseconds to dwell on this shot. */
3463
+ hold?: number;
3464
+ /** Milliseconds to glide INTO this shot from the previous one. */
3465
+ trans?: number;
3466
+ /** Caption shown while on this shot. */
3467
+ label?: string;
3468
+ }
3469
+ interface ScreenAnimatorProps {
3470
+ /** The shot list. Omit (or one shot) for a static framed view. */
3471
+ shots?: ScreenAnimatorShot[];
3472
+ /** Start playing on mount. Default true. */
3473
+ autoplay?: boolean;
3474
+ /** Loop the tour (fly in → shots → back to start → exit → repeat). Default true. */
3475
+ loop?: boolean;
3476
+ /** Cap the number of loop cycles, then settle and stop — a demo is a movie,
3477
+ * it shouldn't spin forever. Default Infinity (loops while watched). Set a
3478
+ * small number for grid/embed contexts so it ends. */
3479
+ maxLoops?: number;
3480
+ /** Show the play / pause / restart transport. Default true. */
3481
+ controls?: boolean;
3482
+ /** Controlled pause override — a sequencer (e.g. `<Motion>`) holds the
3483
+ * transport. Leave undefined for self-managed playback. */
3484
+ paused?: boolean;
3485
+ /** Fires once when the tour runs to its end and stops (loop cap reached,
3486
+ * or `loop=false`). The hook a sequencer advances on. */
3487
+ onEnded?: () => void;
3488
+ /** Dim the edges when pushed in (focus vignette). Default false — opt in. */
3489
+ spotlight?: boolean;
3490
+ /** Render the synthetic cursor pulse on detail shots. Default true. */
3491
+ cursor?: boolean;
3492
+ /** Fly in from offscreen on start (and exit on loop). Default true. */
3493
+ enter?: boolean;
3494
+ /** Where the caption sits over the frame. Default "bottom". */
3495
+ captionPosition?: "top" | "bottom";
3496
+ /** Background of the stage the content sits on while it's small (fly in/out).
3497
+ * A CSS background string. Default a dark cinematic stage. */
3498
+ stage?: string;
3499
+ /** A live backdrop rendered BEHIND the content, filling the stage — an
3500
+ * image, a gradient, or a `<ThreeScene>` shader. Shows around the screen
3501
+ * while it's small (fly in/out) and behind any padding. */
3502
+ backdrop?: React$1.ReactNode;
3503
+ className?: string;
3504
+ style?: React$1.CSSProperties;
3505
+ children: React$1.ReactNode;
3506
+ }
3507
+ declare function ScreenAnimator({ shots, autoplay, loop, maxLoops, controls, paused, onEnded, spotlight, cursor, enter, captionPosition, stage, backdrop, className, style, children, }: ScreenAnimatorProps): React$1.JSX.Element;
3508
+
3509
+ /**
3510
+ * Motion — a directed sequence of scenes on one persistent stage.
3511
+ *
3512
+ * The grammar of a modern product demo: text → demo → video → text, any
3513
+ * order, any mix. A `<Motion>` owns the stage (one continuous backdrop) and
3514
+ * plays its `<MotionScene>`s in order. A scene is a *stage moment* holding
3515
+ * arbitrary content:
3516
+ *
3517
+ * - `<MotionScreen>` — a framed screen with its OWN camera (`shots`,
3518
+ * ScreenAnimator applied per-screen). Several can share a scene
3519
+ * (mobile + desktop side by side).
3520
+ * - `<MotionText>` — templated text animations (Motion Templates:
3521
+ * title / lower-third / section-break).
3522
+ * - anything else — a <video>, an image, plain JSX. Untimed content
3523
+ * rides the scene's `durationMs`.
3524
+ *
3525
+ * THE COMPLETION CONTRACT: a scene advances when all its *timed* children
3526
+ * have finished (a camera tour ending, a text template completing), or
3527
+ * after `durationMs` when nothing in it keeps time. Timed children register
3528
+ * with the scene; static content doesn't. New content types plug in by
3529
+ * registering — nothing else changes.
3530
+ *
3531
+ * Two views of the same children: `view="play"` (the film) and
3532
+ * `view="strip"` (the arrangement — scenes left-to-right as labelled
3533
+ * cards, the Studio edit view). Under `prefers-reduced-motion` the play
3534
+ * view falls back to the strip: see everything, move nothing.
3535
+ *
3536
+ * See STUDIO-DIRECTOR.md ("Grade Motion") for the design doc.
3537
+ */
3538
+ interface MotionSceneRegistration {
3539
+ /** Signal this timed child has finished its run. Idempotent. */
3540
+ done: () => void;
3541
+ /** Unregister (unmount) without deadlocking the scene. */
3542
+ cancel: () => void;
3543
+ }
3544
+ interface SceneCtxValue {
3545
+ mode: "play" | "strip";
3546
+ active: boolean;
3547
+ paused: boolean;
3548
+ /** Register as a timed child. Call in a mount effect; cancel on cleanup. */
3549
+ register: () => MotionSceneRegistration;
3550
+ }
3551
+ /** Read the enclosing scene (or a permissive standalone default). */
3552
+ declare function useMotionScene(): SceneCtxValue;
3553
+ interface MotionScreenProps {
3554
+ /** Frame preset. Desktop is a 16:10 browser-ish frame; mobile a tall
3555
+ * device frame. Default "desktop". */
3556
+ device?: "desktop" | "mobile";
3557
+ /** Camera shots for THIS screen (ScreenAnimator, per-screen). Omit for
3558
+ * fly-in + a single dwell. */
3559
+ shots?: ScreenAnimatorShot[];
3560
+ /** Virtual CSS width the content is laid out at before scaling into the
3561
+ * frame. Defaults: desktop 1100, mobile 390. */
3562
+ virtualWidth?: number;
3563
+ /** Dim edges when the camera pushes in. Default false. */
3564
+ spotlight?: boolean;
3565
+ /** Synthetic cursor on detail shots. Default true. */
3566
+ cursor?: boolean;
3567
+ /** Fly the CONTENT in from offscreen when the scene starts. Default
3568
+ * FALSE for framed screens — the full-screen fly-in choreography
3569
+ * reads badly inside a small clipped frame (content sliding around
3570
+ * in a box). Scene `transition` and frame `animate` are the
3571
+ * entrances here; opt back in for full-bleed hero screens. */
3572
+ enter?: boolean;
3573
+ /** Animate the FRAME in place within the scene — independent of (and
3574
+ * composable with) the camera inside it. "rise" / "tilt-settle" are
3575
+ * entrances; "float" / "drift" are ambient loops. Default "none".
3576
+ * Pair with enter={false} when using an entrance here. */
3577
+ animate?: MotionScreenAnimate;
3578
+ /** Provenance — the Studio screen this was copied from. Ignored at
3579
+ * render; read by tooling (the dock, future live-reference scenes). */
3580
+ screenId?: string;
3581
+ className?: string;
3582
+ style?: React$1.CSSProperties;
3583
+ children: React$1.ReactNode;
3584
+ }
3585
+ declare function MotionScreen({ device, shots, virtualWidth, spotlight, cursor, enter, animate, screenId: _screenId, className, style, children, }: MotionScreenProps): React$1.JSX.Element;
3586
+ type MotionTextTemplate = "title" | "lower-third" | "section-break" | "broadcast" | "ticker" | "stat" | "quote";
3587
+ interface MotionTextProps {
3588
+ /** Which Motion Template. Default "title". */
3589
+ template?: MotionTextTemplate;
3590
+ heading: string;
3591
+ /** Supporting line (title / lower-third). */
3592
+ text?: string;
3593
+ /** Override the template's run length (ms). */
3594
+ durationMs?: number;
3595
+ /** Text colour against the stage. Default "light" (for the dark stage). */
3596
+ tone?: "light" | "dark";
3597
+ /**
3598
+ * Lift the type off a busy or low-contrast backdrop (pale shader washes,
3599
+ * photos, video). `"shadow"` adds a soft contrast shadow to the glyphs;
3600
+ * `"scrim"` additionally drops a quiet radial darkening behind the text
3601
+ * block. Default "none" — flat fills don't need it.
3602
+ */
3603
+ lift?: "none" | "shadow" | "scrim";
3604
+ className?: string;
3605
+ style?: React$1.CSSProperties;
3606
+ }
3607
+ declare function MotionText({ template, heading, text, durationMs, tone, lift, className, style, }: MotionTextProps): React$1.JSX.Element;
3608
+ type MotionOverlayZone = "top-left" | "top" | "top-right" | "center" | "bottom-left" | "bottom" | "bottom-right" | "lower-third";
3609
+ interface MotionOverlayProps {
3610
+ /** Anchor zone. Default "top-right" (the classic network-bug corner). */
3611
+ zone?: MotionOverlayZone;
3612
+ /** Visible from this scene index (inclusive). Default 0 — overlays are
3613
+ * a second TIMELINE: always-on is just the full-range case. */
3614
+ fromScene?: number;
3615
+ /** Visible through this scene index (inclusive). Default: the end. */
3616
+ toScene?: number;
3617
+ /** Re-enable pointer events for interactive overlays. Default false. */
3618
+ interactive?: boolean;
3619
+ className?: string;
3620
+ style?: React$1.CSSProperties;
3621
+ children: React$1.ReactNode;
3622
+ }
3623
+ declare function MotionOverlay({ zone, fromScene: _fromScene, toScene: _toScene, interactive, className, style, children, }: MotionOverlayProps): React$1.JSX.Element;
3624
+ /** How a scene ARRIVES on the stage. Entrance-only by design — the
3625
+ * outgoing scene cuts; the incoming one performs. (True cross-fades
3626
+ * need both scenes mounted; that rides the seekable-clock work.) */
3627
+ type MotionSceneTransition = "fade" | "slide-up" | "slide-down" | "slide-left" | "slide-right" | "pop" | "zoom" | "wipe-circle" | "none";
3628
+ /** In-place frame animation for MotionScreen — the screen performs
3629
+ * WITHIN the scene (independent of the camera inside it, composable
3630
+ * with it). "rise" and "tilt-settle" are entrances; "float" and
3631
+ * "drift" are ambient loops. */
3632
+ type MotionScreenAnimate = "rise" | "float" | "tilt-settle" | "drift" | "none";
3633
+ interface MotionSceneProps {
3634
+ /** Shown in the strip view + read by the timeline dock. */
3635
+ label?: string;
3636
+ /** Minimum runtime (ms); the whole clock when nothing inside keeps
3637
+ * time. Default 4000 for untimed scenes. */
3638
+ durationMs?: number;
3639
+ /** Scene background painted over the shared stage for this moment only
3640
+ * (a CSS background — the white title card, a brand fill). */
3641
+ fill?: string;
3642
+ /** How the scene arrives: fade · slide-up/down/left/right · pop ·
3643
+ * zoom · wipe-circle (a mask wipe) · none. Default "fade". The
3644
+ * OUTGOING scene stays visible underneath for the transition window,
3645
+ * so slides/wipes reveal it rather than the stage. */
3646
+ transition?: MotionSceneTransition;
3647
+ /** Transition timing override (ms). Defaults per transition — see
3648
+ * SCENE_TRANSITION_DEFAULT_MS. */
3649
+ transitionMs?: number;
3650
+ className?: string;
3651
+ style?: React$1.CSSProperties;
3652
+ children: React$1.ReactNode;
3653
+ }
3654
+ /**
3655
+ * One stage moment in a `<Motion>`. Holds arbitrary content; advances by
3656
+ * the completion contract (see the file header). Renders standalone too
3657
+ * (active, looping nothing) so a scene can be previewed in isolation —
3658
+ * each scene is independently editable.
3659
+ */
3660
+ declare function MotionScene(props: MotionSceneProps): React$1.JSX.Element;
3661
+ interface MotionProps {
3662
+ /** "play" runs the film; "strip" lays the scenes out left-to-right as
3663
+ * labelled cards (the arrangement / edit view). Default "play". */
3664
+ view?: "play" | "strip";
3665
+ /** Fixed artboard aspect for the film, letterboxed into the container —
3666
+ * "16/9" (landscape demo), "9/16" (TikTok / Reels / Shorts), "1/1".
3667
+ * Default "auto": the stage fills the container responsively. Strip
3668
+ * cards adopt the same ratio. */
3669
+ aspect?: "auto" | "16/9" | "9/16" | "1/1" | (string & {});
3670
+ /** The persistent stage behind every scene (CSS background). */
3671
+ stage?: string;
3672
+ /** A live layer behind all scenes (image, gradient, <ThreeScene>). */
3673
+ backdrop?: React$1.ReactNode;
3674
+ /** Start playing on mount. Default true. */
3675
+ autoplay?: boolean;
3676
+ /** Return to scene 1 and keep going at the end. Default false — a
3677
+ * motion is a movie; it ends. */
3678
+ loop?: boolean;
3679
+ /** Show the transport (play/pause, restart, scene dots). Default true. */
3680
+ controls?: boolean;
3681
+ className?: string;
3682
+ style?: React$1.CSSProperties;
3683
+ children: React$1.ReactNode;
3684
+ }
3685
+ declare function Motion({ view, aspect, stage, backdrop, autoplay, loop, controls, className, style, children, }: MotionProps): React$1.JSX.Element;
3686
+
3308
3687
  /**
3309
3688
  * Control schema — the canonical, UI-agnostic descriptor for a shader's
3310
3689
  * (or effect layer's) tweakable parameters. Shared by base demos AND the
@@ -3533,6 +3912,17 @@ declare function buildFragmentShaderScene(userFragment: string): SceneFactory;
3533
3912
  * play/pause overlay. Scene pauses when offscreen (pauseOffscreen default `true`).
3534
3913
  */
3535
3914
 
3915
+ /**
3916
+ * Tone — pin the shader's canvas independently of the page theme.
3917
+ *
3918
+ * `"auto"` (default) follows `--background`, so a shader on a page
3919
+ * re-tints with light/dark mode. But a film frame or a hero with white
3920
+ * type wants a STABLE ground: in light mode `--background` is near-white
3921
+ * and every wash goes pastel under it. `tone="dark"` / `tone="light"`
3922
+ * pins just the background uniform (brand pops still flow through), and
3923
+ * an explicit `palette.background` always wins over both.
3924
+ */
3925
+ type SceneTone = "auto" | "dark" | "light";
3536
3926
  interface ThreeSceneProps extends Omit<BaseMediaProps, "src" | "poster">, Omit<React$1.HTMLAttributes<HTMLDivElement>, keyof BaseMediaProps> {
3537
3927
  /** Preset id from the shader preset registry. */
3538
3928
  preset?: string;
@@ -3557,6 +3947,9 @@ interface ThreeSceneProps extends Omit<BaseMediaProps, "src" | "poster">, Omit<R
3557
3947
  postPreset?: string | PostPreset;
3558
3948
  /** Palette overrides. Unset slots fall back to `DEFAULT_PALETTE`. */
3559
3949
  palette?: Partial<Palette>;
3950
+ /** Pin the canvas tone regardless of page theme (see `SceneTone`).
3951
+ * An explicit `palette.background` wins over this. */
3952
+ tone?: SceneTone;
3560
3953
  /**
3561
3954
  * Custom scene factory. Takes precedence over `preset` and `fragmentShader`.
3562
3955
  * Use for bespoke three.js scenes that don't fit a preset or fullscreen quad.
@@ -3639,12 +4032,19 @@ interface BackgroundFillProps {
3639
4032
  type: BackgroundFillType;
3640
4033
  /** Token name (`primary`, `card`, …) or any CSS colour. */
3641
4034
  color?: string;
3642
- /** Gradient stops — token names or CSS colours. */
4035
+ /** Gradient stops — token names or CSS colours. `shape: "radial"`
4036
+ * swaps the linear paint for a radial wash (the classic "soft glow
4037
+ * behind the hero"); `at` positions its centre, `size` fixes the
4038
+ * ellipse (e.g. "45rem 50rem" — defaults to farthest-corner).
4039
+ * `angle` is linear-only; `at`/`size` are radial-only. */
3643
4040
  gradient?: {
3644
4041
  from?: string;
3645
4042
  via?: string;
3646
4043
  to?: string;
3647
4044
  angle?: number;
4045
+ shape?: "linear" | "radial";
4046
+ at?: string;
4047
+ size?: string;
3648
4048
  };
3649
4049
  /** Image or video URL. */
3650
4050
  src?: string;
@@ -3662,6 +4062,11 @@ interface BackgroundFillProps {
3662
4062
  fragmentShader?: string;
3663
4063
  /** Palette overrides for the shader. */
3664
4064
  palette?: Partial<Palette>;
4065
+ /** Pin the shader's canvas tone — "dark" | "light" | "auto" (default).
4066
+ * Film frames and heroes with fixed-colour type should pin their tone
4067
+ * rather than inherit the page's light/dark mode (in light mode the
4068
+ * theme background washes every shader pastel). See ThreeScene. */
4069
+ tone?: SceneTone;
3665
4070
  /** Post-FX preset id or live PostPreset object. */
3666
4071
  postPreset?: string | PostPreset;
3667
4072
  /** Layer opacity (0–1). */
@@ -3870,6 +4275,7 @@ declare const FONTS: {
3870
4275
  readonly outfit: "var(--font-outfit), system-ui, sans-serif";
3871
4276
  readonly plusJakarta: "var(--font-plus-jakarta), system-ui, sans-serif";
3872
4277
  readonly spaceGrotesk: "var(--font-space-grotesk), system-ui, sans-serif";
4278
+ readonly poppins: "var(--font-poppins), system-ui, sans-serif";
3873
4279
  readonly fraunces: "var(--font-fraunces), Georgia, serif";
3874
4280
  readonly instrumentSerif: "var(--font-instrument-serif), Georgia, serif";
3875
4281
  readonly sourceSerif: "var(--font-source-serif), Georgia, serif";
@@ -3883,6 +4289,13 @@ declare const FONTS: {
3883
4289
  type FontKey = keyof typeof FONTS;
3884
4290
  /** Type scale preset — controls how generous the size ladder is. */
3885
4291
  type TypeScalePreset = "compact" | "default" | "spacious";
4292
+ /** Modular (musical-interval) scale ids — mirror GDS_MODULAR_SCALES in
4293
+ * @gradeui/core. Selecting one generates the type ladder middle-out from
4294
+ * the body size (Utopia model): up by the ratio, down by the reciprocal,
4295
+ * floored. */
4296
+ type ModularScaleId = "minor-second" | "major-second" | "minor-third" | "major-third" | "perfect-fourth" | "augmented-fourth" | "perfect-fifth" | "golden-ratio";
4297
+ /** What `typography.scale` accepts: a legacy flat preset or a modular ratio. */
4298
+ type TypeScale = TypeScalePreset | ModularScaleId;
3886
4299
  /** Density preset — controls spacing tightness. */
3887
4300
  type SpacingDensity = "tight" | "default" | "roomy";
3888
4301
  /** Radius preset — controls how rounded corners are across the system. */
@@ -3946,7 +4359,7 @@ interface ThemeInput {
3946
4359
  display: FontKey;
3947
4360
  body: FontKey;
3948
4361
  mono: FontKey;
3949
- scale: TypeScalePreset;
4362
+ scale: TypeScale;
3950
4363
  /** Override heading weight. Defaults to 600 for sans, 500 for serif. */
3951
4364
  headingWeight?: number;
3952
4365
  /** Override body weight. Defaults to 400. */
@@ -4292,4 +4705,4 @@ declare function GradeModeSwitcher({ className, variant }: GradeModeSwitcherProp
4292
4705
  */
4293
4706
  declare function ThemeToggle(): React$1.JSX.Element;
4294
4707
 
4295
- export { ALL_MODES, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AppShell, AppShellAside, type AppShellAsideProps, AppShellFooter, type AppShellFooterProps, AppShellHeader, type AppShellHeaderProps, AppShellMain, type AppShellMainProps, AppShellNav, type AppShellNavProps, type AppShellProps, Avatar, AvatarFallback, AvatarImage, type AvatarTone, BUILT_IN_INPUTS, BackgroundFill, type BackgroundFillFit, type BackgroundFillProps, type BackgroundFillType, Badge, Banner, type BannerProps, type BaseMediaProps, BlinkingCursor, type BlinkingCursorProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, type BreadcrumbMenuItem, BreadcrumbMenuTrigger, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonShape, COMPONENT_CONTRACTS, Calendar, CalendarDayButton, Callout, CalloutDescription, CalloutTitle, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardStyle, CardTitle, Carousel, CarouselArrows, type CarouselArrowsProps, type AutoplayConfig as CarouselAutoplayConfig, CarouselDots, type CarouselDotsProps, type CarouselNavButtonProps, CarouselNext, CarouselPrev, type CarouselProps, CarouselSlide, type CarouselSlideProps, CarouselVideoSlide, type CarouselVideoSlideProps, type ChartPalette, Checkbox, CheckboxCard, type CheckboxCardProps, Code, type CodeDiff, type CodeLanguage, type CodeProps, type CodeReveal, type CodeTrigger, type ColorIntensity, Composer, type ComposerAttachment, type ComposerAttachmentConfig, type ComposerContent, type ComposerFormat, type ComposerHandle, type ComposerMentionItem, type ComposerProps, ComposerReply, type ComposerStep, type ComposerTriggerConfig, DEMO_SPEED_PRESETS, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, type DemoSpeed, DemoStage, type DemoStageProps, type DemoTrigger, 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, FILL_TOKENS, FRAGMENT_HEADER, Field, FieldDescription, FieldLabel, type FieldProps, FieldTrailing, FillPicker, type FillPickerProps, type FillValue, Flex, type FlexProps, type FontKey, GRADE_PRE_HYDRATION_SCRIPT, type GeneratedTheme, GradeModeSwitcher, GradeThemeProvider, type GradeThemeProviderProps, GradeThemeSwitcher, Grid, type GridProps, Input, type InputStyle, Label, LenisProvider, Logo, type LogoLockup, type LogoMode, type LogoProps, type LogoSize, type LogoSources, type LogoVariant, MOTION_ATTR, Map, MapHandle, MapMarker, MapMarkerProps, MapProps, type MediaAspect, type MediaRadius, MediaSurface, MediaSurfaceContract, type MediaSurfaceProps, Message, type MessageProps, type ModeName, MultiSelect, type MultiSelectOption, type MultiSelectProps, type OKLCHTriplet, type Palette, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, type PostPreset, Progress, RadioCard, type RadioCardProps, RadioGroup, RadioGroupItem, type RadiusStyle, type Ramp, ResizableHandle, ResizablePanel, ResizablePanelGroup, Reveal, type RevealAnimation, type RevealProps, type RevealStep, RivePlayer, type RivePlayerProps, Row, type RowProps, type SceneContext, type SceneFactory, type SceneHandle, type ScriptedDemoContext, type ScriptedDemoState, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, ShaderCompileError, ShaderControls, type ShaderControlsProps, type ShaderPreset, ShaderPresetPicker, type ShaderPresetPickerProps, ShaderPresetPreview, type ShaderPresetPreviewProps, type ShadowIntensity, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, type SidebarContentProps, SidebarFooter, type SidebarFooterProps, SidebarHeader, type SidebarHeaderProps, SidebarItem, type SidebarItemProps, type SidebarProps, SidebarSection, type SidebarSectionProps, SidebarTreeItem, type SidebarTreeItemProps, Skeleton, Slider, Sortable, SortableGroup, type SortableGroupProps, SortableHandle, type SortableHandleProps, SortableItem, type SortableItemProps, type SortableProps, type SpacingDensity, Stack, type StackProps, Switch, SwitchCard, type SwitchCardProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type ThemeInput, ThemeToggle, ThreeScene, type ThreeSceneProps, Toggle, ToggleGroup, ToggleGroupItem, Toolbar, type ToolbarProps, ToolbarSlot, type ToolbarSlotProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type TypeScalePreset, type UseScriptedDemoOptions, VideoPlayer, type VideoPlayerProps, asideVariants as appShellAsideVariants, footerVariants as appShellFooterVariants, headerVariants as appShellHeaderVariants, mainVariants as appShellMainVariants, navVariants as appShellNavVariants, applyThemeToRoot, badgeVariants, bannerVariants, buildFragmentShaderScene, builtInThemes, buttonVariants, calloutVariants, calmInput, cn, defaultPostPreset, defaultThemeId, deleteUserTheme, sleep as demoSleep, typeText as demoTypeText, duplicateTheme, energyInput, flexVariants, generateTheme, getComponentContract, getTheme, gridVariants, listContractedComponents, listThemes, listUserThemes, loadUserThemeInput, postPresets, rowVariants, saveUserTheme, sceneRegistry, setMotion, shaderPresetById, shaderPresets, shellVariants, stackVariants, themeToCSSVars, toggleVariants, useCarouselApi, useGradeTheme, useMaybeGradeTheme, usePrefersReducedMotion, useReducedMotion, useScriptedDemo };
4708
+ export { ALL_MODES, Accordion, AccordionContent, AccordionItem, AccordionTrigger, AppShell, AppShellAside, type AppShellAsideProps, AppShellFooter, type AppShellFooterProps, AppShellHeader, type AppShellHeaderProps, AppShellMain, type AppShellMainProps, AppShellNav, type AppShellNavProps, type AppShellProps, Avatar, AvatarFallback, AvatarImage, type AvatarTone, BUILT_IN_INPUTS, BackgroundFill, type BackgroundFillFit, type BackgroundFillProps, type BackgroundFillType, Badge, Banner, type BannerProps, type BaseMediaProps, BlinkingCursor, type BlinkingCursorProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, type BreadcrumbMenuItem, BreadcrumbMenuTrigger, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonShape, COMPONENT_CONTRACTS, Calendar, CalendarDayButton, Callout, CalloutDescription, CalloutTitle, Card, CardContent, CardDescription, CardFooter, CardHeader, type CardStyle, CardTitle, Carousel, CarouselArrows, type CarouselArrowsProps, type AutoplayConfig as CarouselAutoplayConfig, CarouselDots, type CarouselDotsProps, type CarouselNavButtonProps, CarouselNext, CarouselPrev, type CarouselProps, CarouselSlide, type CarouselSlideProps, CarouselVideoSlide, type CarouselVideoSlideProps, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, type ChartPalette, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, CheckboxCard, type CheckboxCardProps, Code, type CodeDiff, type CodeLanguage, type CodeProps, type CodeReveal, type CodeTrigger, type ColorIntensity, Composer, type ComposerAttachment, type ComposerAttachmentConfig, type ComposerContent, type ComposerFormat, type ComposerHandle, type ComposerMentionItem, type ComposerProps, ComposerReply, type ComposerStep, type ComposerTriggerConfig, DEMO_SPEED_PRESETS, DatePicker, type DatePickerProps, DateRangePicker, type DateRangePickerProps, type DemoSpeed, DemoStage, type DemoStageProps, type DemoTrigger, 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, FILL_TOKENS, FRAGMENT_HEADER, Field, FieldDescription, FieldLabel, type FieldProps, FieldTrailing, FillPicker, type FillPickerProps, type FillValue, Flex, type FlexProps, type FontKey, GRADE_PRE_HYDRATION_SCRIPT, type GeneratedTheme, GradeLoader, type GradeLoaderProps, type GradeLoaderSize, GradeModeSwitcher, GradeThemeProvider, type GradeThemeProviderProps, GradeThemeSwitcher, Grid, type GridProps, Input, type InputStyle, Label, LenisProvider, Logo, type LogoLockup, type LogoMode, type LogoProps, type LogoSize, type LogoSources, type LogoVariant, MOTION_ATTR, Map, MapHandle, MapMarker, MapMarkerProps, MapProps, type MediaAspect, type MediaRadius, MediaSurface, MediaSurfaceContract, type MediaSurfaceProps, Message, type MessageProps, type ModeName, Motion, MotionOverlay, type MotionOverlayProps, type MotionOverlayZone, type MotionProps, MotionScene, type MotionSceneProps, type MotionSceneRegistration, type MotionSceneTransition, MotionScreen, type MotionScreenAnimate, type MotionScreenProps, MotionText, type MotionTextProps, type MotionTextTemplate, MultiSelect, type MultiSelectOption, type MultiSelectProps, type OKLCHTriplet, type Palette, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, type PostPreset, Progress, RadioCard, type RadioCardProps, RadioGroup, RadioGroupItem, type RadiusStyle, type Ramp, ResizableHandle, ResizablePanel, ResizablePanelGroup, Reveal, type RevealAnimation, type RevealProps, type RevealStep, RivePlayer, type RivePlayerProps, Row, type RowProps, type SceneContext, type SceneFactory, type SceneHandle, ScreenAnimator, type ScreenAnimatorProps, type ScreenAnimatorShot, type ScriptedDemoContext, type ScriptedDemoState, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, ShaderCompileError, ShaderControls, type ShaderControlsProps, type ShaderPreset, ShaderPresetPicker, type ShaderPresetPickerProps, ShaderPresetPreview, type ShaderPresetPreviewProps, type ShadowIntensity, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, type SidebarContentProps, SidebarFooter, type SidebarFooterProps, SidebarHeader, type SidebarHeaderProps, SidebarItem, type SidebarItemProps, type SidebarProps, SidebarSection, type SidebarSectionProps, SidebarTreeItem, type SidebarTreeItemProps, Skeleton, Slider, Sortable, SortableGroup, type SortableGroupProps, SortableHandle, type SortableHandleProps, SortableItem, type SortableItemProps, type SortableProps, type SpacingDensity, Stack, type StackProps, Switch, SwitchCard, type SwitchCardProps, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type ThemeInput, ThemeToggle, ThreeScene, type ThreeSceneProps, Toggle, ToggleGroup, ToggleGroupItem, Toolbar, type ToolbarProps, ToolbarSlot, type ToolbarSlotProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type TypeScalePreset, type UseScriptedDemoOptions, VideoPlayer, type VideoPlayerProps, asideVariants as appShellAsideVariants, footerVariants as appShellFooterVariants, headerVariants as appShellHeaderVariants, mainVariants as appShellMainVariants, navVariants as appShellNavVariants, applyThemeToRoot, badgeVariants, bannerVariants, buildFragmentShaderScene, builtInThemes, buttonVariants, calloutVariants, calmInput, cn, defaultPostPreset, defaultThemeId, deleteUserTheme, sleep as demoSleep, typeText as demoTypeText, duplicateTheme, energyInput, flexVariants, generateTheme, getComponentContract, getTheme, gridVariants, listContractedComponents, listThemes, listUserThemes, loadUserThemeInput, postPresets, rowVariants, saveUserTheme, sceneRegistry, setMotion, shaderPresetById, shaderPresets, shellVariants, stackVariants, themeToCSSVars, toggleVariants, useCarouselApi, useGradeTheme, useMaybeGradeTheme, useMotionScene, usePageActive, usePrefersReducedMotion, useReducedMotion, useScriptedDemo };