@trading-game/design-intelligence-layer 0.17.4 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/AGENTS.md +104 -231
  2. package/README.md +46 -746
  3. package/dist/index.cjs +2753 -2986
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.d.cts +247 -261
  6. package/dist/index.d.ts +247 -261
  7. package/dist/index.js +2648 -2856
  8. package/dist/index.js.map +1 -1
  9. package/docs/components/accordion.md +85 -0
  10. package/docs/components/alert-dialog.md +98 -0
  11. package/docs/components/aspect-ratio.md +55 -0
  12. package/docs/components/avatar.md +88 -0
  13. package/docs/components/badge.md +75 -0
  14. package/docs/components/banner.md +84 -0
  15. package/docs/components/bottom-navigation.md +90 -0
  16. package/docs/components/breadcrumb.md +85 -0
  17. package/docs/components/button.md +94 -0
  18. package/docs/components/calendar.md +74 -0
  19. package/docs/components/card.md +79 -0
  20. package/docs/components/carousel.md +82 -0
  21. package/docs/components/checkbox.md +66 -0
  22. package/docs/components/chip.md +72 -0
  23. package/docs/components/command.md +86 -0
  24. package/docs/components/context-menu.md +90 -0
  25. package/docs/components/dialog.md +95 -0
  26. package/docs/components/drawer.md +97 -0
  27. package/docs/components/dropdown-menu.md +92 -0
  28. package/docs/components/empty.md +87 -0
  29. package/docs/components/field.md +117 -0
  30. package/docs/components/hover-card.md +77 -0
  31. package/docs/components/input-group.md +105 -0
  32. package/docs/components/input-otp.md +87 -0
  33. package/docs/components/input.md +71 -0
  34. package/docs/components/item.md +105 -0
  35. package/docs/components/label.md +56 -0
  36. package/docs/components/link.md +66 -0
  37. package/docs/components/menubar.md +102 -0
  38. package/docs/components/native-select.md +71 -0
  39. package/docs/components/navigation-button.md +68 -0
  40. package/docs/components/navigation-menu.md +99 -0
  41. package/docs/components/numpad.md +78 -0
  42. package/docs/components/pagination.md +84 -0
  43. package/docs/components/popover.md +89 -0
  44. package/docs/components/profile-photo.md +81 -0
  45. package/docs/components/progress.md +60 -0
  46. package/docs/components/radio-group.md +82 -0
  47. package/docs/components/resizable.md +79 -0
  48. package/docs/components/scroll-area.md +66 -0
  49. package/docs/components/section-message.md +99 -0
  50. package/docs/components/select.md +105 -0
  51. package/docs/components/separator.md +55 -0
  52. package/docs/components/sheet.md +91 -0
  53. package/docs/components/sidebar.md +125 -0
  54. package/docs/components/skeleton.md +51 -0
  55. package/docs/components/slider.md +61 -0
  56. package/docs/components/spinner.md +52 -0
  57. package/docs/components/stepper.md +68 -0
  58. package/docs/components/switch.md +57 -0
  59. package/docs/components/table.md +86 -0
  60. package/docs/components/tabs.md +95 -0
  61. package/docs/components/textarea.md +58 -0
  62. package/docs/components/toast.md +66 -0
  63. package/docs/components/toggle-group.md +77 -0
  64. package/docs/components/toggle.md +60 -0
  65. package/docs/components/tooltip.md +83 -0
  66. package/docs/foundations/colors.md +109 -0
  67. package/docs/foundations/motion.md +63 -0
  68. package/docs/foundations/shape-layout.md +56 -0
  69. package/docs/foundations/typography.md +83 -0
  70. package/docs/patterns/forms.md +70 -0
  71. package/docs/patterns/menus.md +50 -0
  72. package/docs/patterns/on-brand.md +43 -0
  73. package/guides/audits/design-system-audit-2026-07.md +135 -0
  74. package/guides/rules/design-system-consuming-project.mdc +56 -0
  75. package/package.json +5 -6
  76. package/src/styles.css +1616 -251
  77. package/guides/design-system-guide/trading-game-ds-guide.md +0 -933
package/dist/index.d.ts CHANGED
@@ -1,16 +1,12 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React$1 from 'react';
3
- import { Accordion as Accordion$1, AlertDialog as AlertDialog$1, AspectRatio as AspectRatio$1, Avatar as Avatar$1, Checkbox as Checkbox$1, Collapsible as Collapsible$1, Dialog as Dialog$1, ContextMenu as ContextMenu$1, Direction, DropdownMenu as DropdownMenu$1, Label as Label$1, Slot, HoverCard as HoverCard$1, Separator as Separator$1, Menubar as Menubar$1, NavigationMenu as NavigationMenu$1, Popover as Popover$1, Progress as Progress$1, RadioGroup as RadioGroup$1, ScrollArea as ScrollArea$1, Select as Select$1, Tooltip as Tooltip$1, Slider as Slider$1, Switch as Switch$1, Tabs as Tabs$1, Toggle as Toggle$1, ToggleGroup as ToggleGroup$1 } from 'radix-ui';
3
+ import { Accordion as Accordion$1, AlertDialog as AlertDialog$1, AspectRatio as AspectRatio$1, Avatar as Avatar$1, Checkbox as Checkbox$1, Dialog as Dialog$1, ContextMenu as ContextMenu$1, DropdownMenu as DropdownMenu$1, Label as Label$1, HoverCard as HoverCard$1, Separator as Separator$1, Menubar as Menubar$1, NavigationMenu as NavigationMenu$1, Popover as Popover$1, Progress as Progress$1, RadioGroup as RadioGroup$1, ScrollArea as ScrollArea$1, Select as Select$1, Tooltip as Tooltip$1, Slider as Slider$1, Switch as Switch$1, Tabs as Tabs$1, Toggle as Toggle$1, ToggleGroup as ToggleGroup$1 } from 'radix-ui';
4
4
  import * as class_variance_authority_types from 'class-variance-authority/types';
5
5
  import { VariantProps } from 'class-variance-authority';
6
6
  import { DayPicker, DayButton } from 'react-day-picker';
7
7
  import useEmblaCarousel, { UseEmblaCarouselType } from 'embla-carousel-react';
8
- import * as RechartsPrimitive from 'recharts';
9
- import { Combobox as Combobox$1 } from '@base-ui/react';
10
8
  import { Command as Command$1 } from 'cmdk';
11
9
  import { Drawer as Drawer$1 } from 'vaul';
12
- import * as react_hook_form from 'react-hook-form';
13
- import { FieldValues, FieldPath, ControllerProps } from 'react-hook-form';
14
10
  import { OTPInput } from 'input-otp';
15
11
  import * as ResizablePrimitive from 'react-resizable-panels';
16
12
  import { ToasterProps } from 'sonner';
@@ -22,22 +18,35 @@ declare function AccordionItem({ className, ...props }: React$1.ComponentProps<t
22
18
  declare function AccordionTrigger({ className, children, ...props }: React$1.ComponentProps<typeof Accordion$1.Trigger>): react_jsx_runtime.JSX.Element;
23
19
  declare function AccordionContent({ className, children, ...props }: React$1.ComponentProps<typeof Accordion$1.Content>): react_jsx_runtime.JSX.Element;
24
20
 
25
- type AlertVariant = "info" | "warning" | "danger" | "success";
26
- type AlertLayout = "inline" | "card";
21
+ type SectionMessageVariant = "info" | "warning" | "danger" | "success";
27
22
  /**
28
- * Per-variant surface, title, and accent classes. Description and close X are
29
- * applied via dedicated slot classes below — they're not part of the cva root
30
- * because they target descendant elements.
23
+ * `row` keeps everything on one band with the action beside the text;
24
+ * `stack` drops the actions below the body. The old `inline` / `card`
25
+ * values are accepted as deprecated aliases until the v1.0 sweep.
31
26
  */
32
- declare const alertVariants: (props?: ({
27
+ type SectionMessageLayout = "row" | "stack" | "inline" | "card";
28
+ type SectionMessageSize = "sm" | "md";
29
+ /**
30
+ * Per-variant surface + border classes. Title, description, icon, and close X
31
+ * are applied via dedicated slot classes below — they're not part of the cva
32
+ * root because they target descendant elements.
33
+ *
34
+ * Sizes are a strict one-step ladder: every metric in `sm` sits exactly one
35
+ * scale step below `md` (padding 16→12, gaps 12→8, icon 16→14, radius xl→lg,
36
+ * type 14/20→12/16), so both densities read as the same component.
37
+ */
38
+ declare const sectionMessageVariants: (props?: ({
33
39
  variant?: "info" | "warning" | "danger" | "success" | null | undefined;
34
- layout?: "inline" | "card" | null | undefined;
40
+ layout?: "row" | "stack" | null | undefined;
41
+ size?: "md" | "sm" | null | undefined;
35
42
  } & class_variance_authority_types.ClassProp) | undefined) => string;
36
- interface AlertProps extends Omit<React$1.ComponentProps<"div">, "title">, VariantProps<typeof alertVariants> {
43
+ interface SectionMessageProps extends Omit<React$1.ComponentProps<"div">, "title"> {
37
44
  /** Surface + accent variant. */
38
- variant?: AlertVariant;
39
- /** Layout shape. */
40
- layout?: AlertLayout;
45
+ variant?: SectionMessageVariant;
46
+ /** Layout shape — `row` (action beside text) or `stack` (actions below). */
47
+ layout?: SectionMessageLayout;
48
+ /** Density — `md` (default) or `sm`, one full scale step down. */
49
+ size?: SectionMessageSize;
41
50
  /** Title text. At least one of `title` or `description` is required. */
42
51
  title?: React$1.ReactNode;
43
52
  /** Description / supporting text. At least one of `title` or `description` is required. */
@@ -47,27 +56,43 @@ interface AlertProps extends Omit<React$1.ComponentProps<"div">, "title">, Varia
47
56
  * Pass `null` to omit the icon entirely. Pass any `ReactNode` to override.
48
57
  */
49
58
  icon?: React$1.ReactNode | null;
50
- /** Single action button — honoured only when `layout="inline"`. */
59
+ /** Single action button — honoured only when `layout="row"`. */
51
60
  action?: React$1.ReactNode;
52
- /** Up to 2 action buttons — honoured only when `layout="card"`. */
61
+ /** Up to 2 action buttons — honoured only when `layout="stack"`. */
53
62
  actions?: React$1.ReactNode[];
54
63
  /**
55
64
  * When provided, the close X renders and calls this on click. Absence
56
- * means the alert is not user-dismissible.
65
+ * means the message is not user-dismissible.
57
66
  */
58
67
  onDismiss?: () => void;
59
68
  /** aria-label for the close button. Defaults to "Dismiss". */
60
69
  dismissLabel?: string;
61
70
  }
62
- declare function Alert({ variant, layout, title, description, icon, action, actions, onDismiss, dismissLabel, className, ...props }: AlertProps): react_jsx_runtime.JSX.Element | null;
71
+ declare function SectionMessage({ variant, layout, size, title, description, icon, action, actions, onDismiss, dismissLabel, className, ...props }: SectionMessageProps): react_jsx_runtime.JSX.Element | null;
72
+
73
+ declare const Alert: typeof SectionMessage;
74
+ declare const alertVariants: (props?: ({
75
+ variant?: "info" | "warning" | "danger" | "success" | null | undefined;
76
+ layout?: "row" | "stack" | null | undefined;
77
+ size?: "md" | "sm" | null | undefined;
78
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
79
+ type AlertProps = SectionMessageProps;
80
+ type AlertVariant = SectionMessageVariant;
81
+ type AlertLayout = SectionMessageLayout;
63
82
 
64
83
  declare const buttonVariants: (props?: ({
65
- variant?: "primary" | "primary-inverse" | "primary-shimmer" | "primary-inverse-shimmer" | "secondary" | "secondary-inverse" | "tertiary" | "tertiary-inverse" | null | undefined;
66
- size?: "lg" | "md" | "sm" | "xs" | "icon" | "icon-lg" | "icon-md" | "icon-sm" | "icon-xs" | null | undefined;
84
+ variant?: "primary" | "primary-on-brand" | "secondary" | "secondary-on-brand" | "tertiary" | "tertiary-on-brand" | "frosted" | "frosted-on-brand" | "glass" | "primary-shimmer" | "primary-on-brand-shimmer" | "primary-inverse" | "primary-inverse-shimmer" | "secondary-inverse" | "tertiary-inverse" | null | undefined;
85
+ size?: "lg" | "md" | "sm" | "icon" | "icon-lg" | "icon-md" | "icon-sm" | "icon-xs" | null | undefined;
67
86
  } & class_variance_authority_types.ClassProp) | undefined) => string;
68
- declare function Button({ className, variant, size, asChild, loading, children, ...props }: React$1.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
87
+ declare function Button({ className, variant, size, asChild, loading, shimmer, children, ...props }: React$1.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
69
88
  asChild?: boolean;
70
89
  loading?: boolean;
90
+ /**
91
+ * Attention sweep for headline CTAs — a modifier, not a variant.
92
+ * Only meaningful on the primary family (`primary`, `primary-on-brand`);
93
+ * ignored elsewhere with a dev warning.
94
+ */
95
+ shimmer?: boolean;
71
96
  }): react_jsx_runtime.JSX.Element;
72
97
 
73
98
  declare function AlertDialog({ ...props }: React$1.ComponentProps<typeof AlertDialog$1.Root>): react_jsx_runtime.JSX.Element;
@@ -97,65 +122,63 @@ declare function AvatarGroup({ className, ...props }: React$1.ComponentProps<"di
97
122
  declare function AvatarGroupCount({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
98
123
 
99
124
  declare const badgeVariants: (props?: ({
100
- variant?: "fill" | "default" | "standard" | "default-success" | "default-fail" | "default-warning" | "fill-success" | "fill-fail" | "fill-warning" | "fill-credit" | "fill-demo" | "ghost" | "ghost-success" | "ghost-fail" | "ghost-warning" | null | undefined;
101
- size?: "lg" | "md" | "sm" | null | undefined;
125
+ variant?: "solid" | "solid-demo" | "solid-neutral" | "solid-success" | "solid-fail" | "solid-warning" | "tint" | "tint-demo" | "tint-neutral" | "tint-success" | "tint-fail" | "tint-warning" | null | undefined;
126
+ size?: "lg" | "md" | "sm" | "xs" | null | undefined;
102
127
  } & class_variance_authority_types.ClassProp) | undefined) => string;
103
128
  declare function Badge({ className, variant, size, asChild, ...props }: React$1.ComponentProps<"span"> & VariantProps<typeof badgeVariants> & {
104
129
  asChild?: boolean;
105
130
  }): react_jsx_runtime.JSX.Element;
106
131
 
107
- type BannerLayout = "inline" | "card";
108
132
  interface BannerProps extends Omit<React$1.ComponentProps<"div">, "title" | "onClick"> {
109
- /** Layout shape. */
110
- layout?: BannerLayout;
111
- /** Title text. At least one of `title` or `description` is required. */
112
- title?: React$1.ReactNode;
113
- /** Description / supporting text. At least one of `title` or `description` is required. */
114
- description?: React$1.ReactNode;
115
133
  /**
116
- * The glyph that sits **inside** the default brand-blue badge. Defaults to
117
- * `<Gift className="size-5" />`. Pass any lucide icon (or other ~20-24px
118
- * element) to swap the glyph while keeping the badge styling consistent.
119
- * Ignored when `icon` is also set (which overrides the whole badge).
134
+ * Panel colour — any CSS colour (a game-accent primitive, a hex, a var()).
135
+ * The gradient derives from it automatically. Defaults to the brand blue.
120
136
  */
121
- glyph?: React$1.ReactNode;
137
+ color?: string;
138
+ /** Title text. Required in spirit — the panel is meaningless without it. */
139
+ title?: React$1.ReactNode;
140
+ /** Supporting copy under the title. */
141
+ description?: React$1.ReactNode;
122
142
  /**
123
- * Full leading-icon override. When set, the consumer's JSX replaces the
124
- * **entire** default badge — no brand-blue wrapper is rendered. Pass
125
- * `null` to omit the icon column entirely. Leave undefined to use the
126
- * default brand badge (with `glyph` inside).
143
+ * Art slot — game artwork, an illustration, or an icon. Rendered in a
144
+ * frosted square. Defaults to a Gift glyph. Pass `null` to omit.
127
145
  */
128
- icon?: React$1.ReactNode | null;
146
+ art?: React$1.ReactNode | null;
129
147
  /**
130
- * Single action button — honoured only when `layout="inline"`.
131
- * Strings get wrapped in a primary Button. Pass a `<Button>` element
132
- * to control variant/size yourself.
148
+ * CTA — a string gets wrapped in the Banner's white pill; pass an element
149
+ * to take over the slot entirely.
133
150
  */
134
151
  action?: React$1.ReactNode;
135
- /**
136
- * Up to 2 action buttons — honoured only when `layout="card"`.
137
- * Strings get wrapped — first one becomes Secondary, second becomes
138
- * Primary (the visually dominant CTA). Pass `<Button>` elements to
139
- * control variants explicitly.
140
- */
141
- actions?: React$1.ReactNode[];
142
- /**
143
- * When provided, the close X renders and calls this on click. Absence
144
- * means the banner is not user-dismissible. Clicking the close X stops
145
- * propagation so it never fires the banner-level `onClick`.
146
- */
152
+ /** Click handler for a string `action` — required for the pill to do anything. */
153
+ onAction?: () => void;
154
+ /** When provided, the close X renders and calls this on click. */
147
155
  onDismiss?: () => void;
148
156
  /** aria-label for the close button. Defaults to "Dismiss". */
149
157
  dismissLabel?: string;
150
158
  /**
151
- * Makes the entire banner surface a single click target — the whole
152
- * banner becomes the CTA. Mutually exclusive with `action` / `actions`:
153
- * if you set this AND pass buttons, the buttons are ignored and a dev
154
- * warning is logged.
159
+ * Makes the entire panel a single click target. Mutually exclusive with
160
+ * `action` — if both are set, the button is ignored and a dev warning logs.
155
161
  */
156
162
  onClick?: () => void;
157
163
  }
158
- declare function Banner({ layout, title, description, glyph, icon, action, actions, onDismiss, dismissLabel, onClick, className, ...props }: BannerProps): react_jsx_runtime.JSX.Element | null;
164
+ declare function Banner({ color, title, description, art, action, onAction, onDismiss, dismissLabel, onClick, className, style, ...props }: BannerProps): react_jsx_runtime.JSX.Element | null;
165
+
166
+ declare function BottomNavigation({ className, children, ...props }: React$1.ComponentProps<"nav">): react_jsx_runtime.JSX.Element;
167
+ declare function BottomNavigationItem({ className, active, asChild, children, ...props }: React$1.ComponentProps<"button"> & {
168
+ /** Marks the current destination — the liquid bubble travels to it. */
169
+ active?: boolean;
170
+ /** Render as the child element (e.g. a router link). */
171
+ asChild?: boolean;
172
+ }): react_jsx_runtime.JSX.Element;
173
+ /**
174
+ * The optional AI circle from the Refined Mobile chrome: identical material
175
+ * and ambient lift, circular, sits beside the bar (typically in a
176
+ * `flex items-center gap-2.5` row). Render it or don't — that's the toggle.
177
+ */
178
+ declare function BottomNavigationAI({ className, asChild, children, ...props }: React$1.ComponentProps<"button"> & {
179
+ /** Render as the child element (e.g. a router link). */
180
+ asChild?: boolean;
181
+ }): react_jsx_runtime.JSX.Element;
159
182
 
160
183
  declare function Breadcrumb({ ...props }: React$1.ComponentProps<"nav">): react_jsx_runtime.JSX.Element;
161
184
  declare function BreadcrumbList({ className, ...props }: React$1.ComponentProps<"ol">): react_jsx_runtime.JSX.Element;
@@ -172,7 +195,19 @@ declare function Calendar({ className, classNames, showOutsideDays, captionLayou
172
195
  }): react_jsx_runtime.JSX.Element;
173
196
  declare function CalendarDayButton({ className, day, modifiers, ...props }: React$1.ComponentProps<typeof DayButton>): react_jsx_runtime.JSX.Element;
174
197
 
175
- declare function Card({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
198
+ /**
199
+ * Card shell — the design file's shared surface language: card surface,
200
+ * hairline border, 18px (2xl) radius, flat (no shadow, per system rule).
201
+ *
202
+ * `variant="frosted-on-brand"` is the frosted shell for sitting over
203
+ * hero/game art: white 72% + blur + soft white hairline, identical in both
204
+ * themes. (`glass` is its @deprecated alias — deleted at v1.0.)
205
+ * `interactive` opts into the design file's desktop-only hover lift.
206
+ */
207
+ declare function Card({ className, variant, interactive, ...props }: React$1.ComponentProps<"div"> & {
208
+ variant?: "default" | "frosted-on-brand" | "glass";
209
+ interactive?: boolean;
210
+ }): react_jsx_runtime.JSX.Element;
176
211
  declare function CardHeader({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
177
212
  declare function CardTitle({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
178
213
  declare function CardDescription({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
@@ -196,79 +231,24 @@ declare function CarouselItem({ className, ...props }: React$1.ComponentProps<"d
196
231
  declare function CarouselPrevious({ className, variant, size, ...props }: React$1.ComponentProps<typeof Button>): react_jsx_runtime.JSX.Element;
197
232
  declare function CarouselNext({ className, variant, size, ...props }: React$1.ComponentProps<typeof Button>): react_jsx_runtime.JSX.Element;
198
233
 
234
+ /**
235
+ * Chip — the design file's "one shape, four jobs" pill. Quick amounts and
236
+ * categories are the default look; `selected` turns solid brand (white ink);
237
+ * `variant="outline"` is the error-recovery chip (brand border + brand text,
238
+ * e.g. "Max 1,240.50"). Live-status pills belong to Badge, not Chip.
239
+ */
199
240
  declare const chipVariants: (props?: ({
200
241
  size?: "md" | "sm" | null | undefined;
201
242
  } & class_variance_authority_types.ClassProp) | undefined) => string;
202
243
  interface ChipProps extends React$1.ComponentProps<"button">, VariantProps<typeof chipVariants> {
203
244
  selected?: boolean;
245
+ /** `outline` = the brand-outlined recovery chip. */
246
+ variant?: "default" | "outline";
204
247
  }
205
- declare function Chip({ children, selected, size, className, disabled, ...props }: ChipProps): react_jsx_runtime.JSX.Element;
206
-
207
- declare const THEMES: {
208
- readonly light: "";
209
- };
210
- type ChartConfig = {
211
- [k in string]: {
212
- label?: React$1.ReactNode;
213
- icon?: React$1.ComponentType;
214
- } & ({
215
- color?: string;
216
- theme?: never;
217
- } | {
218
- color?: never;
219
- theme: Record<keyof typeof THEMES, string>;
220
- });
221
- };
222
- declare function ChartContainer({ id, className, children, config, ...props }: React$1.ComponentProps<"div"> & {
223
- config: ChartConfig;
224
- children: React$1.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
225
- }): react_jsx_runtime.JSX.Element;
226
- declare const ChartStyle: ({ id, config }: {
227
- id: string;
228
- config: ChartConfig;
229
- }) => react_jsx_runtime.JSX.Element | null;
230
- declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
231
- declare function ChartTooltipContent({ active, payload, className, indicator, hideLabel, hideIndicator, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey, }: React$1.ComponentProps<typeof RechartsPrimitive.Tooltip> & React$1.ComponentProps<"div"> & {
232
- hideLabel?: boolean;
233
- hideIndicator?: boolean;
234
- indicator?: "line" | "dot" | "dashed";
235
- nameKey?: string;
236
- labelKey?: string;
237
- }): react_jsx_runtime.JSX.Element | null;
238
- declare const ChartLegend: typeof RechartsPrimitive.Legend;
239
- declare function ChartLegendContent({ className, hideIcon, payload, verticalAlign, nameKey, }: React$1.ComponentProps<"div"> & Pick<RechartsPrimitive.LegendProps, "payload" | "verticalAlign"> & {
240
- hideIcon?: boolean;
241
- nameKey?: string;
242
- }): react_jsx_runtime.JSX.Element | null;
248
+ declare function Chip({ children, selected, variant, size, className, disabled, ...props }: ChipProps): react_jsx_runtime.JSX.Element;
243
249
 
244
250
  declare function Checkbox({ className, ...props }: React$1.ComponentProps<typeof Checkbox$1.Root>): react_jsx_runtime.JSX.Element;
245
251
 
246
- declare function Collapsible({ ...props }: React.ComponentProps<typeof Collapsible$1.Root>): react_jsx_runtime.JSX.Element;
247
- declare function CollapsibleTrigger({ ...props }: React.ComponentProps<typeof Collapsible$1.CollapsibleTrigger>): react_jsx_runtime.JSX.Element;
248
- declare function CollapsibleContent({ ...props }: React.ComponentProps<typeof Collapsible$1.CollapsibleContent>): react_jsx_runtime.JSX.Element;
249
-
250
- declare const Combobox: typeof Combobox$1.Root;
251
- declare function ComboboxValue({ ...props }: Combobox$1.Value.Props): react_jsx_runtime.JSX.Element;
252
- declare function ComboboxTrigger({ className, children, ...props }: Combobox$1.Trigger.Props): react_jsx_runtime.JSX.Element;
253
- declare function ComboboxInput({ className, children, disabled, showTrigger, showClear, ...props }: Combobox$1.Input.Props & {
254
- showTrigger?: boolean;
255
- showClear?: boolean;
256
- }): react_jsx_runtime.JSX.Element;
257
- declare function ComboboxContent({ className, side, sideOffset, align, alignOffset, anchor, ...props }: Combobox$1.Popup.Props & Pick<Combobox$1.Positioner.Props, "side" | "align" | "sideOffset" | "alignOffset" | "anchor">): react_jsx_runtime.JSX.Element;
258
- declare function ComboboxList({ className, ...props }: Combobox$1.List.Props): react_jsx_runtime.JSX.Element;
259
- declare function ComboboxItem({ className, children, ...props }: Combobox$1.Item.Props): react_jsx_runtime.JSX.Element;
260
- declare function ComboboxGroup({ className, ...props }: Combobox$1.Group.Props): react_jsx_runtime.JSX.Element;
261
- declare function ComboboxLabel({ className, ...props }: Combobox$1.GroupLabel.Props): react_jsx_runtime.JSX.Element;
262
- declare function ComboboxCollection({ ...props }: Combobox$1.Collection.Props): react_jsx_runtime.JSX.Element;
263
- declare function ComboboxEmpty({ className, ...props }: Combobox$1.Empty.Props): react_jsx_runtime.JSX.Element;
264
- declare function ComboboxSeparator({ className, ...props }: Combobox$1.Separator.Props): react_jsx_runtime.JSX.Element;
265
- declare function ComboboxChips({ className, ...props }: React$1.ComponentPropsWithRef<typeof Combobox$1.Chips> & Combobox$1.Chips.Props): react_jsx_runtime.JSX.Element;
266
- declare function ComboboxChip({ className, children, showRemove, ...props }: Combobox$1.Chip.Props & {
267
- showRemove?: boolean;
268
- }): react_jsx_runtime.JSX.Element;
269
- declare function ComboboxChipsInput({ className, children, ...props }: Combobox$1.Input.Props): react_jsx_runtime.JSX.Element;
270
- declare function useComboboxAnchor(): React$1.RefObject<HTMLDivElement | null>;
271
-
272
252
  declare function Dialog({ ...props }: React$1.ComponentProps<typeof Dialog$1.Root>): react_jsx_runtime.JSX.Element;
273
253
  declare function DialogTrigger({ ...props }: React$1.ComponentProps<typeof Dialog$1.Trigger>): react_jsx_runtime.JSX.Element;
274
254
  declare function DialogPortal({ ...props }: React$1.ComponentProps<typeof Dialog$1.Portal>): react_jsx_runtime.JSX.Element;
@@ -322,11 +302,6 @@ declare function ContextMenuLabel({ className, inset, ...props }: React$1.Compon
322
302
  declare function ContextMenuSeparator({ className, ...props }: React$1.ComponentProps<typeof ContextMenu$1.Separator>): react_jsx_runtime.JSX.Element;
323
303
  declare function ContextMenuShortcut({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
324
304
 
325
- declare function DirectionProvider({ dir, direction, children, }: React$1.ComponentProps<typeof Direction.DirectionProvider> & {
326
- direction?: React$1.ComponentProps<typeof Direction.DirectionProvider>["dir"];
327
- }): react_jsx_runtime.JSX.Element;
328
- declare const useDirection: typeof Direction.useDirection;
329
-
330
305
  declare function Drawer({ ...props }: React$1.ComponentProps<typeof Drawer$1.Root>): react_jsx_runtime.JSX.Element;
331
306
  declare function DrawerTrigger({ ...props }: React$1.ComponentProps<typeof Drawer$1.Trigger>): react_jsx_runtime.JSX.Element;
332
307
  declare function DrawerPortal({ ...props }: React$1.ComponentProps<typeof Drawer$1.Portal>): react_jsx_runtime.JSX.Element;
@@ -373,71 +348,54 @@ declare function EmptyContent({ className, ...props }: React.ComponentProps<"div
373
348
 
374
349
  declare function Label({ className, ...props }: React$1.ComponentProps<typeof Label$1.Root>): react_jsx_runtime.JSX.Element;
375
350
 
376
- declare function FieldSet({ className, ...props }: React.ComponentProps<"fieldset">): react_jsx_runtime.JSX.Element;
377
- declare function FieldLegend({ className, variant, ...props }: React.ComponentProps<"legend"> & {
351
+ type FieldSize = "sm" | "md" | "lg";
352
+ declare function useFieldSize(): FieldSize;
353
+ declare function FieldSet({ className, ...props }: React$1.ComponentProps<"fieldset">): react_jsx_runtime.JSX.Element;
354
+ declare function FieldLegend({ className, variant, ...props }: React$1.ComponentProps<"legend"> & {
378
355
  variant?: "legend" | "label";
379
356
  }): react_jsx_runtime.JSX.Element;
380
- declare function FieldGroup({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
357
+ declare function FieldGroup({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
381
358
  declare const fieldVariants: (props?: ({
359
+ size?: "lg" | "md" | "sm" | null | undefined;
382
360
  orientation?: "horizontal" | "vertical" | "responsive" | null | undefined;
383
361
  } & class_variance_authority_types.ClassProp) | undefined) => string;
384
- declare function Field({ className, orientation, ...props }: React.ComponentProps<"div"> & VariantProps<typeof fieldVariants>): react_jsx_runtime.JSX.Element;
385
- declare function FieldContent({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
386
- declare function FieldLabel({ className, ...props }: React.ComponentProps<typeof Label>): react_jsx_runtime.JSX.Element;
387
- declare function FieldTitle({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
388
- declare function FieldDescription({ className, ...props }: React.ComponentProps<"p">): react_jsx_runtime.JSX.Element;
389
- declare function FieldSeparator({ children, className, ...props }: React.ComponentProps<"div"> & {
390
- children?: React.ReactNode;
391
- }): react_jsx_runtime.JSX.Element;
392
- declare function FieldError({ className, children, errors, ...props }: React.ComponentProps<"div"> & {
362
+ declare function Field({ className, orientation, size, ...props }: React$1.ComponentProps<"div"> & VariantProps<typeof fieldVariants>): react_jsx_runtime.JSX.Element;
363
+ declare function FieldContent({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
364
+ declare function FieldLabel({ className, ...props }: React$1.ComponentProps<typeof Label>): react_jsx_runtime.JSX.Element;
365
+ declare function FieldTitle({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
366
+ declare function FieldDescription({ className, ...props }: React$1.ComponentProps<"p">): react_jsx_runtime.JSX.Element;
367
+ declare function FieldSeparator({ children, className, ...props }: React$1.ComponentProps<"div"> & {
368
+ children?: React$1.ReactNode;
369
+ }): react_jsx_runtime.JSX.Element;
370
+ declare function FieldError({ className, children, errors, ...props }: React$1.ComponentProps<"div"> & {
393
371
  errors?: Array<{
394
372
  message?: string;
395
373
  } | undefined>;
396
374
  }): react_jsx_runtime.JSX.Element | null;
397
375
 
398
- declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: react_hook_form.FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React$1.JSX.Element;
399
- declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>) => react_jsx_runtime.JSX.Element;
400
- declare const useFormField: () => {
401
- invalid: boolean;
402
- isDirty: boolean;
403
- isTouched: boolean;
404
- isValidating: boolean;
405
- error?: react_hook_form.FieldError;
406
- id: string;
407
- name: string;
408
- formItemId: string;
409
- formDescriptionId: string;
410
- formMessageId: string;
411
- };
412
- declare function FormItem({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
413
- declare function FormLabel({ className, ...props }: React$1.ComponentProps<typeof Label$1.Root>): react_jsx_runtime.JSX.Element;
414
- declare function FormControl({ ...props }: React$1.ComponentProps<typeof Slot.Root>): react_jsx_runtime.JSX.Element;
415
- declare function FormDescription({ className, ...props }: React$1.ComponentProps<"p">): react_jsx_runtime.JSX.Element;
416
- declare function FormMessage({ className, ...props }: React$1.ComponentProps<"p">): react_jsx_runtime.JSX.Element | null;
417
-
418
376
  declare function HoverCard({ ...props }: React$1.ComponentProps<typeof HoverCard$1.Root>): react_jsx_runtime.JSX.Element;
419
377
  declare function HoverCardTrigger({ ...props }: React$1.ComponentProps<typeof HoverCard$1.Trigger>): react_jsx_runtime.JSX.Element;
420
378
  declare function HoverCardContent({ className, align, sideOffset, ...props }: React$1.ComponentProps<typeof HoverCard$1.Content>): react_jsx_runtime.JSX.Element;
421
379
 
422
380
  declare const inputVariants: (props?: ({
423
- variant?: "default" | "inverse" | null | undefined;
381
+ variant?: "default" | "on-brand" | "inverse" | null | undefined;
424
382
  size?: "lg" | "md" | "sm" | null | undefined;
425
383
  } & class_variance_authority_types.ClassProp) | undefined) => string;
426
384
  declare function Input({ className, type, variant, size, ...props }: Omit<React$1.ComponentProps<"input">, "size"> & VariantProps<typeof inputVariants>): react_jsx_runtime.JSX.Element;
427
385
 
428
386
  type InputGroupSize = "sm" | "md" | "lg";
429
- type InputGroupVariant = "default" | "inverse";
387
+ type InputGroupVariant = "default" | "on-brand" | "inverse";
430
388
  declare const inputGroupVariants: (props?: ({
431
- variant?: "default" | "inverse" | null | undefined;
389
+ variant?: "default" | "on-brand" | "inverse" | null | undefined;
432
390
  size?: "lg" | "md" | "sm" | null | undefined;
433
391
  } & class_variance_authority_types.ClassProp) | undefined) => string;
434
392
  declare function InputGroup({ className, variant, size, ...props }: React$1.ComponentProps<"div"> & VariantProps<typeof inputGroupVariants>): react_jsx_runtime.JSX.Element;
435
393
  declare const inputGroupAddonVariants: (props?: ({
436
- align?: "inline-start" | "inline-end" | "block-start" | "block-end" | null | undefined;
394
+ align?: "inline-end" | "inline-start" | "block-end" | "block-start" | null | undefined;
437
395
  } & class_variance_authority_types.ClassProp) | undefined) => string;
438
396
  declare function InputGroupAddon({ className, align, ...props }: React$1.ComponentProps<"div"> & VariantProps<typeof inputGroupAddonVariants>): react_jsx_runtime.JSX.Element;
439
397
  declare const inputGroupButtonVariants: (props?: ({
440
- size?: "sm" | "xs" | "icon-sm" | "icon-xs" | null | undefined;
398
+ size?: "sm" | "icon-sm" | "icon-xs" | "xs" | null | undefined;
441
399
  } & class_variance_authority_types.ClassProp) | undefined) => string;
442
400
  declare function InputGroupButton({ className, type, variant, size, ...props }: Omit<React$1.ComponentProps<typeof Button>, "size"> & VariantProps<typeof inputGroupButtonVariants>): react_jsx_runtime.JSX.Element;
443
401
  declare function InputGroupText({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
@@ -461,7 +419,7 @@ declare function Separator({ className, orientation, decorative, ...props }: Rea
461
419
  declare function ItemGroup({ className, divider, ...props }: React$1.ComponentProps<"div"> & {
462
420
  /**
463
421
  * Auto-divide consecutive default-variant `Item`s with a bottom border
464
- * (`border-border-subtle`). The last item's bottom border is suppressed,
422
+ * (`border-default-default`). The last item's bottom border is suppressed,
465
423
  * and non-default variants (`outline`, `muted`) are left untouched so
466
424
  * they don't double up with their own borders. Defaults to `true`; pass
467
425
  * `false` to opt out when the design wants flush items or uses
@@ -488,13 +446,11 @@ declare function ItemActions({ className, ...props }: React$1.ComponentProps<"di
488
446
  declare function ItemHeader({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
489
447
  declare function ItemFooter({ className, ...props }: React$1.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
490
448
 
491
- declare function Kbd({ className, ...props }: React.ComponentProps<"kbd">): react_jsx_runtime.JSX.Element;
492
- declare function KbdGroup({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
493
-
494
449
  declare const linkVariants: (props?: ({
495
450
  size?: "lg" | "md" | "sm" | null | undefined;
451
+ tone?: "on-brand" | "brand" | null | undefined;
496
452
  } & class_variance_authority_types.ClassProp) | undefined) => string;
497
- declare function Link({ className, size, asChild, ...props }: React$1.ComponentProps<"a"> & VariantProps<typeof linkVariants> & {
453
+ declare function Link({ className, size, tone, asChild, ...props }: React$1.ComponentProps<"a"> & VariantProps<typeof linkVariants> & {
498
454
  asChild?: boolean;
499
455
  }): react_jsx_runtime.JSX.Element;
500
456
 
@@ -522,16 +478,19 @@ declare function MenubarSubTrigger({ className, inset, children, ...props }: Rea
522
478
  }): react_jsx_runtime.JSX.Element;
523
479
  declare function MenubarSubContent({ className, ...props }: React$1.ComponentProps<typeof Menubar$1.SubContent>): react_jsx_runtime.JSX.Element;
524
480
 
481
+ type NativeSelectSize = "sm" | "md" | "lg";
525
482
  declare function NativeSelect({ className, size, ...props }: Omit<React$1.ComponentProps<"select">, "size"> & {
526
- size?: "sm" | "default";
483
+ /** `"default"` is a deprecated alias for `"md"` — deleted at v1.0. */
484
+ size?: NativeSelectSize | "default";
527
485
  }): react_jsx_runtime.JSX.Element;
528
486
  declare function NativeSelectOption({ ...props }: React$1.ComponentProps<"option">): react_jsx_runtime.JSX.Element;
529
487
  declare function NativeSelectOptGroup({ className, ...props }: React$1.ComponentProps<"optgroup">): react_jsx_runtime.JSX.Element;
530
488
 
531
489
  declare const navigationButtonVariants: (props?: ({
490
+ variant?: "frosted-on-brand" | "glass" | "default" | null | undefined;
532
491
  size?: "lg" | "md" | "sm" | "xs" | null | undefined;
533
492
  } & class_variance_authority_types.ClassProp) | undefined) => string;
534
- declare function NavigationButton({ className, size, asChild, children, ...props }: React$1.ComponentProps<"button"> & VariantProps<typeof navigationButtonVariants> & {
493
+ declare function NavigationButton({ className, variant, size, asChild, children, ...props }: React$1.ComponentProps<"button"> & VariantProps<typeof navigationButtonVariants> & {
535
494
  asChild?: boolean;
536
495
  }): react_jsx_runtime.JSX.Element;
537
496
 
@@ -547,13 +506,25 @@ declare function NavigationMenuViewport({ className, ...props }: React$1.Compone
547
506
  declare function NavigationMenuLink({ className, ...props }: React$1.ComponentProps<typeof NavigationMenu$1.Link>): react_jsx_runtime.JSX.Element;
548
507
  declare function NavigationMenuIndicator({ className, ...props }: React$1.ComponentProps<typeof NavigationMenu$1.Indicator>): react_jsx_runtime.JSX.Element;
549
508
 
509
+ type NumpadKey = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "." | "backspace";
510
+ interface NumpadProps extends Omit<React$1.ComponentProps<"div">, "onKeyDown" | "onKeyPress"> {
511
+ /** Fired for every tap: a digit, ".", or "backspace". */
512
+ onKeyPress?: (key: NumpadKey) => void;
513
+ /** Fired when backspace is long-pressed (~600ms) — clear the amount. */
514
+ onClear?: () => void;
515
+ /** Hide the "." key for integer-only entry. */
516
+ decimal?: boolean;
517
+ disabled?: boolean;
518
+ }
519
+ declare function Numpad({ className, onKeyPress, onClear, decimal, disabled, ...props }: NumpadProps): react_jsx_runtime.JSX.Element;
520
+
550
521
  declare function Pagination({ className, ...props }: React$1.ComponentProps<"nav">): react_jsx_runtime.JSX.Element;
551
522
  declare function PaginationContent({ className, ...props }: React$1.ComponentProps<"ul">): react_jsx_runtime.JSX.Element;
552
523
  declare function PaginationItem({ ...props }: React$1.ComponentProps<"li">): react_jsx_runtime.JSX.Element;
553
524
  type PaginationLinkProps = {
554
525
  isActive?: boolean;
555
- } & Pick<React$1.ComponentProps<typeof Button>, "size"> & React$1.ComponentProps<"a">;
556
- declare function PaginationLink({ className, isActive, size, ...props }: PaginationLinkProps): react_jsx_runtime.JSX.Element;
526
+ } & React$1.ComponentProps<"a">;
527
+ declare function PaginationLink({ className, isActive, ...props }: PaginationLinkProps): react_jsx_runtime.JSX.Element;
557
528
  declare function PaginationPrevious({ className, ...props }: React$1.ComponentProps<"a">): react_jsx_runtime.JSX.Element;
558
529
  declare function PaginationNext({ className, ...props }: React$1.ComponentProps<"a">): react_jsx_runtime.JSX.Element;
559
530
  declare function PaginationEllipsis({ className, ...props }: React$1.ComponentProps<"span">): react_jsx_runtime.JSX.Element;
@@ -568,6 +539,37 @@ declare function PopoverDescription({ className, ...props }: React$1.ComponentPr
568
539
 
569
540
  declare function Progress({ className, value, ...props }: React$1.ComponentProps<typeof Progress$1.Root>): react_jsx_runtime.JSX.Element;
570
541
 
542
+ interface ProfilePhotoProps extends Omit<React$1.ComponentProps<"div">, "children"> {
543
+ /** Photo URL. Omit to show the placeholder glyph. */
544
+ src?: string;
545
+ /** Alt text for the photo. Ignored when no `src` is given. */
546
+ alt?: string;
547
+ /** Verification progress, 0–100. Drives the ring. */
548
+ progress?: number;
549
+ /**
550
+ * Fires when the camera button is pressed. Omit to hide the button entirely —
551
+ * use that for read-only contexts where the viewer can't change the photo.
552
+ */
553
+ onPhotoChange?: () => void;
554
+ /** aria-label for the camera button. */
555
+ photoChangeLabel?: string;
556
+ /**
557
+ * Status slot, rendered overlapping the bottom edge. Pass a `Badge` — the
558
+ * component positions it but does not style its content.
559
+ */
560
+ status?: React$1.ReactNode;
561
+ }
562
+ /**
563
+ * Profile photo with a verification progress ring.
564
+ *
565
+ * Distinct from `Avatar`: that is a 24–48px identity chip for lists and nav,
566
+ * whereas this is a page-level element carrying progress, a photo-change
567
+ * affordance, and a status badge. The ring animates between values as the
568
+ * player completes verification steps, and starts and ends at 6 o'clock so its
569
+ * seam sits behind the status badge.
570
+ */
571
+ declare function ProfilePhoto({ src, alt, progress, onPhotoChange, photoChangeLabel, status, className, ...props }: ProfilePhotoProps): react_jsx_runtime.JSX.Element;
572
+
571
573
  declare function RadioGroup({ className, ...props }: React$1.ComponentProps<typeof RadioGroup$1.Root>): react_jsx_runtime.JSX.Element;
572
574
  declare function RadioGroupItem({ className, ...props }: React$1.ComponentProps<typeof RadioGroup$1.Item>): react_jsx_runtime.JSX.Element;
573
575
 
@@ -749,88 +751,6 @@ declare function TabsContent({ className, ...props }: React$1.ComponentProps<typ
749
751
 
750
752
  declare function Textarea({ className, ...props }: React$1.ComponentProps<"textarea">): react_jsx_runtime.JSX.Element;
751
753
 
752
- type TicketCardProps = {
753
- className?: string;
754
- /** Optional icon rendered inside the left ring circle. */
755
- icon?: React$1.ReactNode;
756
- /** Small label shown above the value (e.g. "Total Balance"). */
757
- label: string;
758
- /** Main value text (e.g. "10,000.00"). */
759
- value: string;
760
- /** Optional muted currency/unit suffix next to value (e.g. "USDT"). */
761
- currency?: string;
762
- /** Label on the right stub button. */
763
- stubLabel: string;
764
- /** Called when the stub button is clicked. */
765
- onStubClick?: () => void;
766
- /** Disables the stub button. */
767
- stubDisabled?: boolean;
768
- /** Compact (mobile) layout — reduces horizontal padding from 16px to 8px. */
769
- compact?: boolean;
770
- };
771
- declare function TicketCard({ className, icon, label, value, currency, stubLabel, onStubClick, stubDisabled, compact, }: TicketCardProps): react_jsx_runtime.JSX.Element;
772
- type CreditTicketCardProps = {
773
- className?: string;
774
- /** Optional icon rendered inside the left ring circle. */
775
- icon?: React$1.ReactNode;
776
- /** Small label shown above the value (e.g. "Total Balance"). */
777
- label: string;
778
- /** Main value text (e.g. "0 USD"). */
779
- value: string;
780
- /** Optional muted currency/unit suffix next to value (e.g. "USDT"). */
781
- currency?: string;
782
- /** Label on the right stub button. */
783
- stubLabel: string;
784
- /** Called when the stub button is clicked. */
785
- onStubClick?: () => void;
786
- /** Disables the stub button. */
787
- stubDisabled?: boolean;
788
- /** Optional leading icon shown inside the credit badge. */
789
- badgeIcon?: React$1.ReactNode;
790
- /** Prefix label shown inside the badge (e.g. "Credit", "Bonus"). */
791
- badgeLabel?: string;
792
- /** Value shown in the badge (e.g. "0.00"). */
793
- badgeValue?: string;
794
- /** Currency shown in the badge (e.g. "USDT"). */
795
- badgeCurrency?: string;
796
- /**
797
- * Optional content for the badge info tooltip. When provided, the trailing
798
- * info icon on the badge becomes a focusable button that opens a
799
- * tooltip with this content on hover/focus. When omitted, the info icon is
800
- * not rendered.
801
- */
802
- badgeInfo?: React$1.ReactNode;
803
- /**
804
- * Side the badge info tooltip opens on (desktop only — mobile always renders
805
- * the info as a bottom-sheet drawer). Defaults to `"top"` to preserve the
806
- * current behaviour.
807
- */
808
- badgeInfoSide?: "top" | "bottom" | "left" | "right";
809
- /**
810
- * Alignment of the badge info tooltip relative to its trigger (desktop only).
811
- * Defaults to `"center"`.
812
- */
813
- badgeInfoAlign?: "start" | "center" | "end";
814
- /**
815
- * Heading shown at the top of the mobile drawer (forwarded to
816
- * `TooltipContent.title`). Desktop tooltip ignores this. When omitted, the
817
- * underlying `TooltipContent` falls back to its own `"Title"` placeholder.
818
- */
819
- badgeInfoTitle?: string;
820
- /**
821
- * Label on the dismiss button at the bottom of the mobile drawer (forwarded
822
- * to `TooltipContent.closeLabel`). Desktop tooltip ignores this. When
823
- * omitted, the underlying `TooltipContent` falls back to its own `"Label"`
824
- * placeholder.
825
- */
826
- badgeInfoCloseLabel?: string;
827
- /** Compact (mobile) layout — reduces horizontal padding from 16px to 8px. */
828
- compact?: boolean;
829
- };
830
- declare function CreditTicketCard({ className, icon, label, value, currency, stubLabel, onStubClick, stubDisabled, badgeIcon, badgeLabel, badgeValue, badgeCurrency, badgeInfo, badgeInfoSide, badgeInfoAlign, badgeInfoTitle, badgeInfoCloseLabel, compact, }: CreditTicketCardProps): react_jsx_runtime.JSX.Element;
831
- /** Alias for the Figma-named variant. */
832
- declare const TicketCardDesktop: typeof TicketCard;
833
-
834
754
  declare const toggleVariants: (props?: ({
835
755
  variant?: "default" | "outline" | null | undefined;
836
756
  size?: "lg" | "sm" | "default" | null | undefined;
@@ -1027,8 +947,74 @@ type OpenPositionsBlockProps = {
1027
947
  };
1028
948
  declare function OpenPositionsBlock({ trigger, sheetTitle, positions, onViewHistory, emptyState, }: OpenPositionsBlockProps): react_jsx_runtime.JSX.Element;
1029
949
 
950
+ type LoaderCheckpoint = {
951
+ /** Percentage the bar may climb to once this stage is reached (0–100). */
952
+ target: number;
953
+ /** Text shown while this stage is in flight. */
954
+ label: string;
955
+ };
956
+ interface SmoothProgressInput {
957
+ /** Ordered stages the loader steps through. */
958
+ checkpoints: LoaderCheckpoint[];
959
+ /** Index of the highest checkpoint reached so far. */
960
+ reached: number;
961
+ /** When true, the bar is released to 100%. */
962
+ done: boolean;
963
+ /** Max climb speed in % per second. Caps sudden jumps. */
964
+ maxVelocity?: number;
965
+ /** How long a stage may stall before `delayed` flips true. */
966
+ delayMs?: number;
967
+ /** Label shown once complete. */
968
+ readyLabel?: string;
969
+ }
970
+ interface SmoothProgressState {
971
+ progress: number;
972
+ label: string;
973
+ delayed: boolean;
974
+ complete: boolean;
975
+ }
976
+ /**
977
+ * Velocity-capped progress smoothing. The bar climbs continuously toward the
978
+ * current checkpoint's ceiling rather than snapping to it, and reports
979
+ * `delayed` when a stage genuinely stalls — so a held bar still reads as
980
+ * working instead of broken.
981
+ */
982
+ declare function useSmoothProgress({ checkpoints, reached, done, maxVelocity, delayMs, readyLabel, }: SmoothProgressInput): SmoothProgressState;
983
+ interface GameLoadingBlockProps {
984
+ /** Bar fill, 0–100. Pair with `useSmoothProgress` for capped climbing. */
985
+ progress?: number;
986
+ /** Current stage label. */
987
+ label?: string;
988
+ /** When true, swaps the label for a "taking longer" message. */
989
+ delayed?: boolean;
990
+ /** Plays the zoom-out reveal and hides the bar. */
991
+ exiting?: boolean;
992
+ /** Fires once the exit animation finishes. */
993
+ onExitEnd?: () => void;
994
+ /**
995
+ * Constrain to the nearest positioned ancestor instead of the viewport.
996
+ * Use for embedding in a bounded area (docs previews, a game shell column).
997
+ * `exiting` implies this, since the reveal needs the app behind it.
998
+ */
999
+ contained?: boolean;
1000
+ /**
1001
+ * Optional backdrop image (e.g. the app's `dot-pattern.webp`) for a
1002
+ * pixel-perfect match with the game shell. Omit to use the token-derived
1003
+ * dotted backdrop.
1004
+ */
1005
+ backgroundImageUrl?: string;
1006
+ className?: string;
1007
+ }
1008
+ /**
1009
+ * Determinate loading splash for game entry: dotted brand backdrop, monogram,
1010
+ * and a progress bar with a shimmer that keeps signalling life while a stage
1011
+ * is held. Exits with a zoom-out reveal, or a plain fade under
1012
+ * `prefers-reduced-motion`.
1013
+ */
1014
+ declare function GameLoadingBlock({ progress, label, delayed, exiting, onExitEnd, contained, backgroundImageUrl, className, }: GameLoadingBlockProps): react_jsx_runtime.JSX.Element;
1015
+
1030
1016
  declare function cn(...inputs: ClassValue[]): string;
1031
1017
 
1032
1018
  declare function useIsMobile(): boolean;
1033
1019
 
1034
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertLayout, type AlertProps, type AlertVariant, AspectRatio, AuthBlock, type AuthBlockMode, type AuthBlockProps, type AuthBlockProvider, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, Banner, type BannerLayout, type BannerProps, type BoxOPosition, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Chip, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CreditTicketCard, type CreditTicketCardProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, type DigitsPosition, DirectionProvider, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, FAQBlock, type FAQBlockProps, type FAQItem, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, HeaderNavigationBlock, type HeaderNavigationBlockProps, HeroBlock, type HeroBlockCta, type HeroBlockProps, type HeroBlockTagline, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Kbd, KbdGroup, Label, Link, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavBarBlock, type NavBarBlockLink, type NavBarBlockProps, NavigationButton, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, OpenPositionsBlock, type OpenPositionsBlockProps, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, type Position, Progress, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ResultBlock, type ResultBlockCta, type ResultBlockProps, type ResultBlockStatus, ResultDialog, type ResultDialogProps, type RiseFallPosition, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Spinner, Stepper, type StepperProps, type StepperSize, type SwipePosition, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, TicketCard, TicketCardDesktop, type TicketCardProps, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type TooltipVariant, alertVariants, badgeVariants, buttonVariants, chipVariants, cn, inputVariants, linkVariants, navigationButtonVariants, navigationMenuTriggerStyle, tabsListVariants, toggleVariants, useComboboxAnchor, useDirection, useFormField, useIsMobile, useSidebar };
1020
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, type AlertLayout, type AlertProps, type AlertVariant, AspectRatio, AuthBlock, type AuthBlockMode, type AuthBlockProps, type AuthBlockProvider, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge, Banner, type BannerProps, BottomNavigation, BottomNavigationAI, BottomNavigationItem, type BoxOPosition, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, Chip, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, type DigitsPosition, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, FAQBlock, type FAQBlockProps, type FAQItem, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, GameLoadingBlock, type GameLoadingBlockProps, HeaderNavigationBlock, type HeaderNavigationBlockProps, HeroBlock, type HeroBlockCta, type HeroBlockProps, type HeroBlockTagline, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, Label, Link, type LoaderCheckpoint, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, NativeSelect, NativeSelectOptGroup, NativeSelectOption, NavBarBlock, type NavBarBlockLink, type NavBarBlockProps, NavigationButton, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Numpad, type NumpadKey, type NumpadProps, OpenPositionsBlock, type OpenPositionsBlockProps, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, type Position, ProfilePhoto, type ProfilePhotoProps, Progress, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ResultBlock, type ResultBlockCta, type ResultBlockProps, type ResultBlockStatus, ResultDialog, type ResultDialogProps, type RiseFallPosition, ScrollArea, ScrollBar, SectionMessage, type SectionMessageLayout, type SectionMessageProps, type SectionMessageSize, type SectionMessageVariant, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, type SmoothProgressInput, type SmoothProgressState, Spinner, Stepper, type StepperProps, type StepperSize, type SwipePosition, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type TooltipVariant, alertVariants, badgeVariants, buttonVariants, chipVariants, cn, inputVariants, linkVariants, navigationButtonVariants, navigationMenuTriggerStyle, sectionMessageVariants, tabsListVariants, toggleVariants, useFieldSize, useIsMobile, useSidebar, useSmoothProgress };