@trading-game/design-intelligence-layer 1.0.4 → 1.0.6

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.cjs CHANGED
@@ -496,7 +496,7 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
496
496
  variants: {
497
497
  variant: {
498
498
  // Primary brand blue (#2323FF)
499
- primary: "bg-background-brand-default text-text-on-brand-static hover:bg-background-brand-hover active:bg-background-brand-pressed active:opacity-100 disabled:[background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))] disabled:text-text-disabled-default",
499
+ primary: "bg-background-brand-default text-text-on-brand-static hover:bg-background-brand-hover active:bg-background-brand-pressed active:opacity-100 disabled:opacity-(--opacity-disabled)",
500
500
  // Primary Inverse — white bg + blue text; for use on dark/coloured surfaces
501
501
  // On-brand family — for buttons standing on a brand-coloured surface
502
502
  // (NOT theme inverses): white pill with primary ink, white outline,
@@ -515,7 +515,7 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
515
515
  // (white-alpha-32 = 1.84:1 on brand, against 1.71:1 here) so both
516
516
  // read as the same quiet edge. Its contrast is higher only because it
517
517
  // has no fill behind it — there, the border IS the button.
518
- secondary: "bg-background-primary-surface border-[1.5px] border-border-control-default text-text-prominent-default hover:bg-background-secondary-surface disabled:[background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))] disabled:border-border-disabled-default disabled:text-text-disabled-default",
518
+ secondary: "button-disabled-secondary bg-background-primary-surface border-[1.5px] border-border-control-default text-text-prominent-default hover:bg-background-secondary-surface",
519
519
  // Secondary Inverse — white border + white text; for use on dark/coloured surfaces
520
520
  "secondary-on-brand": "bg-transparent border-[1.5px] border-(--primitive-white-alpha-32) text-text-on-brand-static hover:bg-(--primitive-white-alpha-8) disabled:border-(--primitive-white-alpha-16) disabled:text-text-on-brand-disabled-default",
521
521
  tertiary: "bg-transparent text-text-prominent-default hover:bg-background-hover-default disabled:text-text-disabled-default",
@@ -526,7 +526,7 @@ var buttonVariants = (0, import_class_variance_authority.cva)(
526
526
  // hover/pressed via the state-layer glazes stacked over the solid
527
527
  // fill); `frosted-on-brand` is the white frost for coloured/art
528
528
  // surfaces (hover thickens the frost, press thins it).
529
- frosted: "bg-background-brand-selected text-text-brand-selected active:opacity-100 hover:[background-image:linear-gradient(var(--background-hover-default),var(--background-hover-default))] active:[background-image:linear-gradient(var(--background-pressed-default),var(--background-pressed-default))] disabled:[background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))] disabled:text-text-disabled-default",
529
+ frosted: "bg-background-brand-selected text-text-brand-selected active:opacity-100 hover:[background-image:linear-gradient(var(--background-hover-default),var(--background-hover-default))] active:[background-image:linear-gradient(var(--background-pressed-default),var(--background-pressed-default))] disabled:opacity-(--opacity-disabled-frosted)",
530
530
  "frosted-on-brand": "bg-(--primitive-white-alpha-24) backdrop-blur-md text-text-on-brand-static hover:bg-(--primitive-white-alpha-32) active:bg-(--primitive-white-alpha-16) active:opacity-100 disabled:bg-(--primitive-white-alpha-8) disabled:text-text-on-brand-disabled-default",
531
531
  /* @deprecated aliases — shimmer became the `shimmer` boolean prop;
532
532
  the inverse names became the on-brand family; `glass` became
@@ -2788,7 +2788,7 @@ function Checkbox(_a) {
2788
2788
  __spreadProps(__spreadValues({
2789
2789
  "data-slot": "checkbox",
2790
2790
  className: cn(
2791
- "peer size-4 shrink-0 rounded-2xs border border-border-default-default bg-background-primary-surface transition-colors outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:cursor-not-allowed disabled:border-border-default-default disabled:text-text-disabled-default data-[state=checked]:border-transparent data-[state=checked]:bg-background-brand-default data-[state=checked]:text-text-on-brand-static",
2791
+ "peer size-4 shrink-0 rounded-2xs border border-border-default-default bg-background-primary-surface transition-colors outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:cursor-not-allowed disabled:opacity-(--opacity-disabled) data-[state=checked]:border-transparent data-[state=checked]:bg-background-brand-default data-[state=checked]:text-text-on-brand-static",
2792
2792
  className
2793
2793
  )
2794
2794
  }, props), {
@@ -3337,6 +3337,7 @@ function ContextMenuShortcut(_a) {
3337
3337
  }
3338
3338
 
3339
3339
  // components/ui/drawer.tsx
3340
+ var import_lucide_react14 = require("lucide-react");
3340
3341
  var import_vaul = require("vaul");
3341
3342
  var import_jsx_runtime23 = require("react/jsx-runtime");
3342
3343
  function Drawer(_a) {
@@ -3375,10 +3376,12 @@ function DrawerOverlay(_a) {
3375
3376
  function DrawerContent(_a) {
3376
3377
  var _b = _a, {
3377
3378
  className,
3378
- children
3379
+ children,
3380
+ dismiss = "handle"
3379
3381
  } = _b, props = __objRest(_b, [
3380
3382
  "className",
3381
- "children"
3383
+ "children",
3384
+ "dismiss"
3382
3385
  ]);
3383
3386
  return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(DrawerPortal, { "data-slot": "drawer-portal", children: [
3384
3387
  /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(DrawerOverlay, {}),
@@ -3396,7 +3399,15 @@ function DrawerContent(_a) {
3396
3399
  )
3397
3400
  }, props), {
3398
3401
  children: [
3399
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full bg-border-default-default group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
3402
+ dismiss === "handle" ? /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full bg-border-default-default group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }) : /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "flex shrink-0 justify-end p-4 pb-0", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_vaul.Drawer.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3403
+ NavigationButton,
3404
+ {
3405
+ "data-slot": "drawer-close",
3406
+ size: "sm",
3407
+ "aria-label": "Close",
3408
+ children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react14.XIcon, { className: "size-4" })
3409
+ }
3410
+ ) }) }),
3400
3411
  children
3401
3412
  ]
3402
3413
  })
@@ -3456,7 +3467,7 @@ function DrawerDescription(_a) {
3456
3467
  }
3457
3468
 
3458
3469
  // components/ui/dropdown-menu.tsx
3459
- var import_lucide_react14 = require("lucide-react");
3470
+ var import_lucide_react15 = require("lucide-react");
3460
3471
  var import_radix_ui14 = require("radix-ui");
3461
3472
  var import_jsx_runtime24 = require("react/jsx-runtime");
3462
3473
  function DropdownMenu(_a) {
@@ -3544,7 +3555,7 @@ function DropdownMenuCheckboxItem(_a) {
3544
3555
  checked
3545
3556
  }, props), {
3546
3557
  children: [
3547
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_radix_ui14.DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react14.CheckIcon, { className: "size-4" }) }) }),
3558
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_radix_ui14.DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react15.CheckIcon, { className: "size-4" }) }) }),
3548
3559
  children
3549
3560
  ]
3550
3561
  })
@@ -3577,7 +3588,7 @@ function DropdownMenuRadioItem(_a) {
3577
3588
  )
3578
3589
  }, props), {
3579
3590
  children: [
3580
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_radix_ui14.DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react14.CircleIcon, { className: "size-2 fill-current" }) }) }),
3591
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_radix_ui14.DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react15.CircleIcon, { className: "size-2 fill-current" }) }) }),
3581
3592
  children
3582
3593
  ]
3583
3594
  })
@@ -3660,7 +3671,7 @@ function DropdownMenuSubTrigger(_a) {
3660
3671
  }, props), {
3661
3672
  children: [
3662
3673
  children,
3663
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react14.ChevronRightIcon, { className: "ml-auto size-4" })
3674
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react15.ChevronRightIcon, { className: "ml-auto size-4" })
3664
3675
  ]
3665
3676
  })
3666
3677
  );
@@ -4473,7 +4484,7 @@ function InputGroupTextarea(_a) {
4473
4484
  // components/ui/input-otp.tsx
4474
4485
  var React9 = __toESM(require("react"), 1);
4475
4486
  var import_input_otp = require("input-otp");
4476
- var import_lucide_react15 = require("lucide-react");
4487
+ var import_lucide_react16 = require("lucide-react");
4477
4488
  var import_jsx_runtime33 = require("react/jsx-runtime");
4478
4489
  function InputOTP(_a) {
4479
4490
  var _b = _a, {
@@ -4535,7 +4546,7 @@ function InputOTPSlot(_a) {
4535
4546
  }
4536
4547
  function InputOTPSeparator(_a) {
4537
4548
  var props = __objRest(_a, []);
4538
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", __spreadProps(__spreadValues({ "data-slot": "input-otp-separator", role: "separator" }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react15.MinusIcon, {}) }));
4549
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", __spreadProps(__spreadValues({ "data-slot": "input-otp-separator", role: "separator" }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react16.MinusIcon, {}) }));
4539
4550
  }
4540
4551
 
4541
4552
  // components/ui/item.tsx
@@ -4801,7 +4812,7 @@ function Link(_a) {
4801
4812
  }
4802
4813
 
4803
4814
  // components/ui/menubar.tsx
4804
- var import_lucide_react16 = require("lucide-react");
4815
+ var import_lucide_react17 = require("lucide-react");
4805
4816
  var import_radix_ui20 = require("radix-ui");
4806
4817
  var import_jsx_runtime36 = require("react/jsx-runtime");
4807
4818
  function Menubar(_a) {
@@ -4924,7 +4935,7 @@ function MenubarCheckboxItem(_a) {
4924
4935
  checked
4925
4936
  }, props), {
4926
4937
  children: [
4927
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_radix_ui20.Menubar.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react16.CheckIcon, { className: "size-4" }) }) }),
4938
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_radix_ui20.Menubar.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react17.CheckIcon, { className: "size-4" }) }) }),
4928
4939
  children
4929
4940
  ]
4930
4941
  })
@@ -4948,7 +4959,7 @@ function MenubarRadioItem(_a) {
4948
4959
  )
4949
4960
  }, props), {
4950
4961
  children: [
4951
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_radix_ui20.Menubar.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react16.CircleIcon, { className: "size-2 fill-current" }) }) }),
4962
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_radix_ui20.Menubar.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react17.CircleIcon, { className: "size-2 fill-current" }) }) }),
4952
4963
  children
4953
4964
  ]
4954
4965
  })
@@ -5031,7 +5042,7 @@ function MenubarSubTrigger(_a) {
5031
5042
  }, props), {
5032
5043
  children: [
5033
5044
  children,
5034
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react16.ChevronRightIcon, { className: "ml-auto" })
5045
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react17.ChevronRightIcon, { className: "ml-auto" })
5035
5046
  ]
5036
5047
  })
5037
5048
  );
@@ -5055,7 +5066,7 @@ function MenubarSubContent(_a) {
5055
5066
  }
5056
5067
 
5057
5068
  // components/ui/native-select.tsx
5058
- var import_lucide_react17 = require("lucide-react");
5069
+ var import_lucide_react18 = require("lucide-react");
5059
5070
  var import_jsx_runtime37 = require("react/jsx-runtime");
5060
5071
  var sizeClasses = {
5061
5072
  sm: "type-native-select-sm h-8 py-1",
@@ -5084,7 +5095,7 @@ function NativeSelect(_a) {
5084
5095
  "data-slot": "native-select",
5085
5096
  "data-size": resolvedSize,
5086
5097
  className: cn(
5087
- "w-full min-w-0 appearance-none rounded-xs border border-border-default-default bg-background-primary-surface px-3 pr-9 text-text-prominent-default transition-[color,box-shadow] outline-none selection:bg-background-brand-default selection:text-text-on-brand-static disabled:pointer-events-none disabled:cursor-not-allowed disabled:[background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))]",
5098
+ "w-full min-w-0 appearance-none rounded-xs border border-border-default-default bg-background-primary-surface px-3 pr-9 text-text-prominent-default transition-[color,box-shadow] outline-none disabled:text-text-disabled-default selection:bg-background-brand-default selection:text-text-on-brand-static disabled:pointer-events-none disabled:cursor-not-allowed disabled:[background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))]",
5088
5099
  "focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-soft",
5089
5100
  sizeClasses[resolvedSize],
5090
5101
  className
@@ -5092,9 +5103,9 @@ function NativeSelect(_a) {
5092
5103
  }, props)
5093
5104
  ),
5094
5105
  /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
5095
- import_lucide_react17.ChevronDownIcon,
5106
+ import_lucide_react18.ChevronDownIcon,
5096
5107
  {
5097
- className: "pointer-events-none absolute top-1/2 right-3.5 size-4 -translate-y-1/2 text-icon-subtle-default select-none",
5108
+ className: "pointer-events-none absolute top-1/2 right-3.5 size-4 -translate-y-1/2 text-icon-subtle-default select-none group-has-[select:disabled]/native-select:text-icon-disabled-default",
5098
5109
  "aria-hidden": "true",
5099
5110
  "data-slot": "native-select-icon"
5100
5111
  }
@@ -5124,7 +5135,7 @@ function NativeSelectOptGroup(_a) {
5124
5135
 
5125
5136
  // components/ui/navigation-menu.tsx
5126
5137
  var import_class_variance_authority12 = require("class-variance-authority");
5127
- var import_lucide_react18 = require("lucide-react");
5138
+ var import_lucide_react19 = require("lucide-react");
5128
5139
  var import_radix_ui21 = require("radix-ui");
5129
5140
  var import_jsx_runtime38 = require("react/jsx-runtime");
5130
5141
  function NavigationMenu(_a) {
@@ -5206,7 +5217,7 @@ function NavigationMenuTrigger(_a) {
5206
5217
  children,
5207
5218
  " ",
5208
5219
  /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5209
- import_lucide_react18.ChevronDownIcon,
5220
+ import_lucide_react19.ChevronDownIcon,
5210
5221
  {
5211
5222
  className: "relative top-[1px] ml-1 size-3 transition duration-slow group-data-[state=open]:rotate-180",
5212
5223
  "aria-hidden": "true"
@@ -5298,7 +5309,7 @@ function NavigationMenuIndicator(_a) {
5298
5309
 
5299
5310
  // components/ui/numpad.tsx
5300
5311
  var React10 = __toESM(require("react"), 1);
5301
- var import_lucide_react19 = require("lucide-react");
5312
+ var import_lucide_react20 = require("lucide-react");
5302
5313
  var import_jsx_runtime39 = require("react/jsx-runtime");
5303
5314
  var LONG_PRESS_MS = 600;
5304
5315
  function Numpad(_a) {
@@ -5381,7 +5392,7 @@ function Numpad(_a) {
5381
5392
  }
5382
5393
  onKeyPress == null ? void 0 : onKeyPress(key);
5383
5394
  },
5384
- children: key === "backspace" ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react19.Delete, { className: "size-5.5" }) : key
5395
+ children: key === "backspace" ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react20.Delete, { className: "size-5.5" }) : key
5385
5396
  },
5386
5397
  key
5387
5398
  )
@@ -5664,7 +5675,7 @@ function Progress(_a) {
5664
5675
  }
5665
5676
 
5666
5677
  // components/ui/profile-photo.tsx
5667
- var import_lucide_react20 = require("lucide-react");
5678
+ var import_lucide_react21 = require("lucide-react");
5668
5679
  var import_jsx_runtime42 = require("react/jsx-runtime");
5669
5680
  var BOX = 112;
5670
5681
  var PHOTO = 96;
@@ -5745,7 +5756,7 @@ function ProfilePhoto(_a) {
5745
5756
  "data-slot": "profile-photo-image",
5746
5757
  className: "absolute flex items-center justify-center overflow-hidden rounded-full bg-background-secondary-surface",
5747
5758
  style: { inset: INSET },
5748
- children: src ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("img", { src, alt, className: "size-full object-cover" }) : /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react20.User, { className: "size-10 text-icon-subtle-default", strokeWidth: 1.5, "aria-hidden": "true" })
5759
+ children: src ? /* @__PURE__ */ (0, import_jsx_runtime42.jsx)("img", { src, alt, className: "size-full object-cover" }) : /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react21.User, { className: "size-10 text-icon-subtle-default", strokeWidth: 1.5, "aria-hidden": "true" })
5749
5760
  }
5750
5761
  ),
5751
5762
  onPhotoChange ? (
@@ -5760,7 +5771,7 @@ function ProfilePhoto(_a) {
5760
5771
  onClick: onPhotoChange,
5761
5772
  "data-slot": "profile-photo-camera",
5762
5773
  className: "absolute right-0.5 bottom-5 rounded-full border-2 border-prominent after:absolute after:-inset-2.5 after:content-['']",
5763
- children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react20.Camera, {})
5774
+ children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(import_lucide_react21.Camera, {})
5764
5775
  }
5765
5776
  )
5766
5777
  ) : null,
@@ -5778,7 +5789,7 @@ function ProfilePhoto(_a) {
5778
5789
  }
5779
5790
 
5780
5791
  // components/ui/radio-group.tsx
5781
- var import_lucide_react21 = require("lucide-react");
5792
+ var import_lucide_react22 = require("lucide-react");
5782
5793
  var import_radix_ui24 = require("radix-ui");
5783
5794
  var import_jsx_runtime43 = require("react/jsx-runtime");
5784
5795
  function RadioGroup(_a) {
@@ -5806,7 +5817,7 @@ function RadioGroupItem(_a) {
5806
5817
  __spreadProps(__spreadValues({
5807
5818
  "data-slot": "radio-group-item",
5808
5819
  className: cn(
5809
- "aspect-square size-4 shrink-0 rounded-full border border-border-default-default bg-background-primary-surface transition-[color,box-shadow] outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong data-[state=checked]:border-border-brand-selected disabled:cursor-not-allowed disabled:border-border-default-default disabled:text-text-disabled-default aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft",
5820
+ "aspect-square size-4 shrink-0 rounded-full border border-border-default-default bg-background-primary-surface transition-[color,box-shadow] outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong data-[state=checked]:border-border-brand-selected disabled:cursor-not-allowed disabled:opacity-(--opacity-disabled) aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft",
5810
5821
  className
5811
5822
  )
5812
5823
  }, props), {
@@ -5815,7 +5826,7 @@ function RadioGroupItem(_a) {
5815
5826
  {
5816
5827
  "data-slot": "radio-group-indicator",
5817
5828
  className: "relative flex items-center justify-center",
5818
- children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_lucide_react21.CircleIcon, { className: "absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-text-brand-selected text-background-brand-default" })
5829
+ children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_lucide_react22.CircleIcon, { className: "absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-text-brand-selected text-background-brand-default" })
5819
5830
  }
5820
5831
  )
5821
5832
  })
@@ -5823,7 +5834,7 @@ function RadioGroupItem(_a) {
5823
5834
  }
5824
5835
 
5825
5836
  // components/ui/resizable.tsx
5826
- var import_lucide_react22 = require("lucide-react");
5837
+ var import_lucide_react23 = require("lucide-react");
5827
5838
  var ResizablePrimitive = __toESM(require("react-resizable-panels"), 1);
5828
5839
  var import_jsx_runtime44 = require("react/jsx-runtime");
5829
5840
  function ResizablePanelGroup(_a) {
@@ -5864,7 +5875,7 @@ function ResizableHandle(_a) {
5864
5875
  className
5865
5876
  )
5866
5877
  }, props), {
5867
- children: withHandle && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-xs border border-border-default-default bg-border-default-default text-icon-subtle-default", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react22.GripVerticalIcon, { className: "size-2.5" }) })
5878
+ children: withHandle && /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-xs border border-border-default-default bg-border-default-default text-icon-subtle-default", children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react23.GripVerticalIcon, { className: "size-2.5" }) })
5868
5879
  })
5869
5880
  );
5870
5881
  }
@@ -5933,7 +5944,7 @@ function ScrollBar(_a) {
5933
5944
  }
5934
5945
 
5935
5946
  // components/ui/sheet.tsx
5936
- var import_lucide_react23 = require("lucide-react");
5947
+ var import_lucide_react24 = require("lucide-react");
5937
5948
  var import_radix_ui26 = require("radix-ui");
5938
5949
  var import_jsx_runtime46 = require("react/jsx-runtime");
5939
5950
  function Sheet(_a) {
@@ -6005,7 +6016,7 @@ function SheetContent(_a) {
6005
6016
  size: "sm",
6006
6017
  "aria-label": "Close",
6007
6018
  className: "absolute top-4 right-4",
6008
- children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react23.XIcon, { className: "size-4" })
6019
+ children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react24.XIcon, { className: "size-4" })
6009
6020
  }
6010
6021
  ) })
6011
6022
  ]
@@ -6065,7 +6076,7 @@ function SheetDescription(_a) {
6065
6076
  // components/ui/sidebar.tsx
6066
6077
  var React14 = __toESM(require("react"), 1);
6067
6078
  var import_class_variance_authority13 = require("class-variance-authority");
6068
- var import_lucide_react24 = require("lucide-react");
6079
+ var import_lucide_react25 = require("lucide-react");
6069
6080
  var import_radix_ui28 = require("radix-ui");
6070
6081
 
6071
6082
  // hooks/use-mobile.ts
@@ -6406,7 +6417,7 @@ function SidebarTrigger(_a) {
6406
6417
  }
6407
6418
  }, props), {
6408
6419
  children: [
6409
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react24.PanelLeftIcon, {}),
6420
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react25.PanelLeftIcon, {}),
6410
6421
  /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "sr-only", children: "Toggle Sidebar" })
6411
6422
  ]
6412
6423
  })
@@ -6911,7 +6922,7 @@ function Slider(_a) {
6911
6922
 
6912
6923
  // components/ui/toast.tsx
6913
6924
  var React16 = __toESM(require("react"), 1);
6914
- var import_lucide_react25 = require("lucide-react");
6925
+ var import_lucide_react26 = require("lucide-react");
6915
6926
  var import_next_themes = require("next-themes");
6916
6927
  var import_sonner = require("sonner");
6917
6928
  var import_jsx_runtime51 = require("react/jsx-runtime");
@@ -6928,11 +6939,11 @@ var Toaster = (_a) => {
6928
6939
  visibleToasts: isMobile ? 1 : 3,
6929
6940
  duration: 4e3,
6930
6941
  icons: {
6931
- success: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react25.CircleCheckIcon, { className: "size-4" }),
6932
- info: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react25.InfoIcon, { className: "size-4" }),
6933
- warning: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react25.TriangleAlertIcon, { className: "size-4" }),
6934
- error: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react25.OctagonXIcon, { className: "size-4" }),
6935
- loading: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react25.Loader2Icon, { className: "size-4 animate-spin" })
6942
+ success: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react26.CircleCheckIcon, { className: "size-4" }),
6943
+ info: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react26.InfoIcon, { className: "size-4" }),
6944
+ warning: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react26.TriangleAlertIcon, { className: "size-4" }),
6945
+ error: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react26.OctagonXIcon, { className: "size-4" }),
6946
+ loading: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_lucide_react26.Loader2Icon, { className: "size-4 animate-spin" })
6936
6947
  },
6937
6948
  toastOptions: {
6938
6949
  classNames: {
@@ -7119,7 +7130,7 @@ function usePrefersReducedMotion() {
7119
7130
 
7120
7131
  // components/ui/slide-to-confirm.tsx
7121
7132
  var React17 = __toESM(require("react"), 1);
7122
- var import_lucide_react26 = require("lucide-react");
7133
+ var import_lucide_react27 = require("lucide-react");
7123
7134
  var import_jsx_runtime52 = require("react/jsx-runtime");
7124
7135
  var CONFIRM_AT = 0.9;
7125
7136
  var HANDLE = 46;
@@ -7285,7 +7296,7 @@ function SlideToConfirm(_a) {
7285
7296
  // the keyboard, where dragX never moved.
7286
7297
  translate: `${confirmed ? maxTravel : dragX}px -50%`
7287
7298
  },
7288
- children: confirmed ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react26.Check, { className: "size-4.5 [animation:slide-confirm-pop_var(--motion-pop)_var(--primitive-ease-overshoot)]" }) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react26.ArrowRight, { className: "size-4.5" })
7299
+ children: confirmed ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react27.Check, { className: "size-4.5 [animation:slide-confirm-pop_var(--motion-pop)_var(--primitive-ease-overshoot)]" }) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react27.ArrowRight, { className: "size-4.5" })
7289
7300
  }
7290
7301
  )
7291
7302
  ]
@@ -7295,7 +7306,7 @@ function SlideToConfirm(_a) {
7295
7306
 
7296
7307
  // components/ui/stepper.tsx
7297
7308
  var React18 = __toESM(require("react"), 1);
7298
- var import_lucide_react27 = require("lucide-react");
7309
+ var import_lucide_react28 = require("lucide-react");
7299
7310
  var import_jsx_runtime53 = require("react/jsx-runtime");
7300
7311
  function clamp(value, min, max) {
7301
7312
  return Math.min(Math.max(value, min), max);
@@ -7389,7 +7400,11 @@ function Stepper({
7389
7400
  "data-slot": "stepper",
7390
7401
  "data-disabled": disabled || void 0,
7391
7402
  className: cn(
7392
- "flex w-full items-center justify-between gap-4",
7403
+ // Two rows: the label spans the control, then the -/value/+ row sits
7404
+ // under it with a 4px gap. The label is deliberately NOT inside the
7405
+ // value column — nesting it there makes the buttons centre against the
7406
+ // label+value stack, which drops them below the number.
7407
+ "flex w-full flex-col gap-1",
7393
7408
  // No opacity here on purpose. The +/- are Buttons and already carry
7394
7409
  // their own disabled treatment; dimming the wrapper too multiplied
7395
7410
  // with theirs (24% × 24% ≈ 6%) and made them all but invisible.
@@ -7398,63 +7413,72 @@ function Stepper({
7398
7413
  className
7399
7414
  ),
7400
7415
  children: [
7401
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7402
- Button,
7416
+ label != null && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7417
+ "span",
7403
7418
  {
7404
- type: "button",
7405
- variant: "frosted",
7406
- size: "icon-lg",
7407
- onClick: handleDecrement,
7408
- disabled: disabled || currentValue <= min,
7409
- "aria-label": "Decrease value",
7410
- children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react27.Minus, {})
7419
+ "data-slot": "stepper-label",
7420
+ className: cn(
7421
+ "type-stepper-stake-label text-center",
7422
+ disabled ? "text-text-disabled-default" : "text-text-subtle-default"
7423
+ ),
7424
+ children: label
7411
7425
  }
7412
7426
  ),
7413
- /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex min-w-0 flex-col items-center", children: [
7414
- label != null && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7415
- "span",
7416
- {
7417
- className: cn(
7418
- "type-stepper-stake-label",
7419
- disabled ? "text-text-disabled-default" : "text-text-subtle-default"
7420
- ),
7421
- children: label
7422
- }
7423
- ),
7424
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7425
- "input",
7426
- {
7427
- type: "text",
7428
- inputMode: "decimal",
7429
- role: "spinbutton",
7430
- "aria-valuemin": min === -Infinity ? void 0 : min,
7431
- "aria-valuemax": max === Infinity ? void 0 : max,
7432
- "aria-valuenow": currentValue,
7433
- "aria-label": ariaLabel,
7434
- value: displayString,
7435
- onChange: handleInputChange,
7436
- onBlur: handleBlur,
7437
- onFocus: handleFocus,
7438
- onKeyDown: handleKeyDown,
7439
- disabled,
7440
- placeholder,
7441
- id,
7442
- name,
7443
- size: Math.max(displayString.length, 1),
7444
- className: "type-stepper-stake-amount w-full min-w-0 border-0 bg-transparent text-center text-text-prominent-default outline-none disabled:text-text-disabled-default [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none"
7445
- }
7446
- )
7447
- ] }),
7448
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7449
- Button,
7427
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
7428
+ "div",
7450
7429
  {
7451
- type: "button",
7452
- variant: "frosted",
7453
- size: "icon-lg",
7454
- onClick: handleIncrement,
7455
- disabled: disabled || currentValue >= max,
7456
- "aria-label": "Increase value",
7457
- children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react27.Plus, {})
7430
+ "data-slot": "stepper-row",
7431
+ className: "flex w-full items-center justify-between gap-4",
7432
+ children: [
7433
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7434
+ Button,
7435
+ {
7436
+ type: "button",
7437
+ variant: "frosted",
7438
+ size: "icon-lg",
7439
+ onClick: handleDecrement,
7440
+ disabled: disabled || currentValue <= min,
7441
+ "aria-label": "Decrease value",
7442
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react28.Minus, {})
7443
+ }
7444
+ ),
7445
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7446
+ "input",
7447
+ {
7448
+ type: "text",
7449
+ inputMode: "decimal",
7450
+ role: "spinbutton",
7451
+ "aria-valuemin": min === -Infinity ? void 0 : min,
7452
+ "aria-valuemax": max === Infinity ? void 0 : max,
7453
+ "aria-valuenow": currentValue,
7454
+ "aria-label": ariaLabel,
7455
+ value: displayString,
7456
+ onChange: handleInputChange,
7457
+ onBlur: handleBlur,
7458
+ onFocus: handleFocus,
7459
+ onKeyDown: handleKeyDown,
7460
+ disabled,
7461
+ placeholder,
7462
+ id,
7463
+ name,
7464
+ size: Math.max(displayString.length, 1),
7465
+ "data-slot": "stepper-value",
7466
+ className: "type-stepper-stake-amount min-w-0 flex-1 border-0 bg-transparent text-center text-text-prominent-default outline-none disabled:text-text-disabled-default [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none"
7467
+ }
7468
+ ),
7469
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7470
+ Button,
7471
+ {
7472
+ type: "button",
7473
+ variant: "frosted",
7474
+ size: "icon-lg",
7475
+ onClick: handleIncrement,
7476
+ disabled: disabled || currentValue >= max,
7477
+ "aria-label": "Increase value",
7478
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react28.Plus, {})
7479
+ }
7480
+ )
7481
+ ]
7458
7482
  }
7459
7483
  )
7460
7484
  ]
@@ -7464,7 +7488,7 @@ function Stepper({
7464
7488
 
7465
7489
  // components/ui/steps.tsx
7466
7490
  var React19 = __toESM(require("react"), 1);
7467
- var import_lucide_react28 = require("lucide-react");
7491
+ var import_lucide_react29 = require("lucide-react");
7468
7492
  var import_jsx_runtime54 = require("react/jsx-runtime");
7469
7493
  var StepsContext = React19.createContext({ shape: "circle", orientation: "horizontal", size: "md" });
7470
7494
  function Steps(_a) {
@@ -7544,7 +7568,7 @@ function Step(_a) {
7544
7568
  "[&_svg]:pointer-events-none [&_svg]:shrink-0",
7545
7569
  sm ? "[&_svg:not([class*='size-'])]:size-3.5" : "[&_svg:not([class*='size-'])]:size-4"
7546
7570
  ),
7547
- children: state === "done" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react28.Check, {}) : icon != null ? icon : index
7571
+ children: state === "done" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Check, {}) : icon != null ? icon : index
7548
7572
  }
7549
7573
  );
7550
7574
  if (horizontal) {
@@ -7684,7 +7708,7 @@ function Switch(_a) {
7684
7708
  "data-slot": "switch",
7685
7709
  "data-size": size,
7686
7710
  className: cn(
7687
- "peer group/switch inline-flex shrink-0 items-center rounded-full border border-transparent p-[3px] transition-all outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:cursor-not-allowed disabled:border-border-default-default disabled:text-text-disabled-default data-[size=default]:h-6 data-[size=default]:w-11 data-[size=sm]:h-5 data-[size=sm]:w-9 data-[state=checked]:bg-background-brand-default data-[state=unchecked]:bg-border-default-default",
7711
+ "peer group/switch inline-flex shrink-0 items-center rounded-full border border-transparent p-[3px] transition-all outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:cursor-not-allowed disabled:opacity-(--opacity-disabled) data-[size=default]:h-6 data-[size=default]:w-11 data-[size=sm]:h-5 data-[size=sm]:w-9 data-[state=checked]:bg-background-brand-default data-[state=unchecked]:bg-border-default-default",
7688
7712
  className
7689
7713
  )
7690
7714
  }, props), {
@@ -7920,7 +7944,7 @@ var import_class_variance_authority15 = require("class-variance-authority");
7920
7944
  var import_radix_ui32 = require("radix-ui");
7921
7945
  var import_jsx_runtime58 = require("react/jsx-runtime");
7922
7946
  var toggleVariants = (0, import_class_variance_authority15.cva)(
7923
- "type-toggle inline-flex items-center justify-center gap-2 rounded-md border border-border-default-default bg-background-primary-surface text-text-prominent-default whitespace-nowrap transition-[color,background-color,border-color,box-shadow] outline-none hover:bg-background-secondary-surface active:bg-background-secondary-wash focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:pointer-events-none disabled:border-border-default-default disabled:text-text-disabled-default aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft data-[state=on]:border-transparent data-[state=on]:bg-background-brand-default data-[state=on]:text-text-on-brand-static [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
7947
+ "type-toggle inline-flex items-center justify-center gap-2 rounded-md border border-border-default-default bg-background-primary-surface text-text-prominent-default whitespace-nowrap transition-[color,background-color,border-color,box-shadow] outline-none hover:bg-background-secondary-surface active:bg-background-secondary-wash focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:pointer-events-none disabled:opacity-(--opacity-disabled) aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft data-[state=on]:border-transparent data-[state=on]:bg-background-brand-default data-[state=on]:text-text-on-brand-static [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
7924
7948
  {
7925
7949
  variants: {
7926
7950
  size: {
@@ -8103,7 +8127,7 @@ function ResultDialog({
8103
8127
  }
8104
8128
 
8105
8129
  // components/blocks/header-navigation-block.tsx
8106
- var import_lucide_react29 = require("lucide-react");
8130
+ var import_lucide_react30 = require("lucide-react");
8107
8131
  var import_jsx_runtime61 = require("react/jsx-runtime");
8108
8132
  function HeaderNavigationBlock({
8109
8133
  onBack,
@@ -8114,7 +8138,7 @@ function HeaderNavigationBlock({
8114
8138
  }) {
8115
8139
  var _a;
8116
8140
  return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "w-full min-w-80 max-w-layout-diagram-small rounded-md overflow-hidden bg-prominent", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("header", { className: "flex items-center gap-2 border-b border-border-subtle bg-prominent px-layout-margin-inline py-3", children: [
8117
- onBack && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(NavigationButton, { type: "button", size: "md", "aria-label": "Back", onClick: onBack, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react29.ArrowLeft, { className: "size-5" }) }),
8141
+ onBack && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(NavigationButton, { type: "button", size: "md", "aria-label": "Back", onClick: onBack, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react30.ArrowLeft, { className: "size-5" }) }),
8118
8142
  /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex min-w-0 flex-1 items-center justify-center gap-2", children: [
8119
8143
  badge && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Badge, { variant: (_a = badge.variant) != null ? _a : "tint-warning", size: "sm", children: badge.label }),
8120
8144
  /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "font-display font-semibold tabular-nums text-on-prominent", children: balance.amount }),
@@ -8135,7 +8159,7 @@ function HistoryButton({
8135
8159
  const label = show ? count > 99 ? "99+" : String(count) : null;
8136
8160
  const ariaLabel = ariaLabelOverride != null ? ariaLabelOverride : show ? `Open history, ${count} new` : "Open history";
8137
8161
  return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "relative inline-flex", children: [
8138
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(NavigationButton, { type: "button", size: "md", "aria-label": ariaLabel, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react29.History, { className: "size-5" }) }),
8162
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(NavigationButton, { type: "button", size: "md", "aria-label": ariaLabel, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react30.History, { className: "size-5" }) }),
8139
8163
  show && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
8140
8164
  "span",
8141
8165
  {
@@ -8148,7 +8172,7 @@ function HistoryButton({
8148
8172
  }
8149
8173
 
8150
8174
  // components/blocks/faq-block.tsx
8151
- var import_lucide_react30 = require("lucide-react");
8175
+ var import_lucide_react31 = require("lucide-react");
8152
8176
  var import_radix_ui34 = require("radix-ui");
8153
8177
  var import_jsx_runtime62 = require("react/jsx-runtime");
8154
8178
  function FAQBlock({
@@ -8189,7 +8213,7 @@ function FAQBlock({
8189
8213
  "shrink-0 size-7 flex items-center justify-center rounded-sm border transition-all duration-200",
8190
8214
  "group-data-[state=open]:bg-primary group-data-[state=open]:border-primary",
8191
8215
  "group-data-[state=closed]:bg-transparent group-data-[state=closed]:border-border-subtle"
8192
- ), children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react30.Plus, { className: cn(
8216
+ ), children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react31.Plus, { className: cn(
8193
8217
  "size-4 transition-all duration-200",
8194
8218
  "group-data-[state=open]:rotate-45 group-data-[state=open]:text-on-primary",
8195
8219
  "group-data-[state=closed]:text-on-prominent"
@@ -8238,7 +8262,7 @@ function FAQBlock({
8238
8262
  }
8239
8263
 
8240
8264
  // components/blocks/hero-block.tsx
8241
- var import_lucide_react31 = require("lucide-react");
8265
+ var import_lucide_react32 = require("lucide-react");
8242
8266
  var import_jsx_runtime63 = require("react/jsx-runtime");
8243
8267
  function HeroBlock({
8244
8268
  layout = "centered",
@@ -8258,7 +8282,7 @@ function HeroBlock({
8258
8282
  ] }),
8259
8283
  /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(Button, { size: "sm", onClick: primaryCta.onClick, children: [
8260
8284
  primaryCta.label,
8261
- primaryCta.trailingArrow !== false && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react31.ArrowRight, { className: "size-4" })
8285
+ primaryCta.trailingArrow !== false && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react32.ArrowRight, { className: "size-4" })
8262
8286
  ] })
8263
8287
  ] }) });
8264
8288
  }
@@ -8294,7 +8318,7 @@ function TaglinePill({
8294
8318
  label,
8295
8319
  suffix && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "text-on-subtle", children: ` \xB7 ${suffix}` })
8296
8320
  ] }),
8297
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react31.ArrowUpRight, { className: "size-4 text-on-subtle shrink-0", "aria-hidden": "true" })
8321
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react32.ArrowUpRight, { className: "size-4 text-on-subtle shrink-0", "aria-hidden": "true" })
8298
8322
  ] });
8299
8323
  }
8300
8324
 
@@ -8384,7 +8408,7 @@ function ProviderButton({ provider }) {
8384
8408
 
8385
8409
  // components/blocks/navbar-block.tsx
8386
8410
  var React22 = __toESM(require("react"), 1);
8387
- var import_lucide_react32 = require("lucide-react");
8411
+ var import_lucide_react33 = require("lucide-react");
8388
8412
  var import_jsx_runtime65 = require("react/jsx-runtime");
8389
8413
  function NavBarBlock({ brand, links, signIn, signUp }) {
8390
8414
  var _a, _b, _c, _d;
@@ -8423,7 +8447,7 @@ function NavBarBlock({ brand, links, signIn, signUp }) {
8423
8447
  "aria-expanded": mobileMenuOpen,
8424
8448
  className: "min-[600px]:hidden",
8425
8449
  onClick: () => setMobileMenuOpen((prev) => !prev),
8426
- children: mobileMenuOpen ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react32.X, { className: "size-4" }) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react32.Menu, { className: "size-4" })
8450
+ children: mobileMenuOpen ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react33.X, { className: "size-4" }) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react33.Menu, { className: "size-4" })
8427
8451
  }
8428
8452
  )
8429
8453
  ] }),
@@ -8448,7 +8472,7 @@ function NavBarBlock({ brand, links, signIn, signUp }) {
8448
8472
  }
8449
8473
 
8450
8474
  // components/blocks/open-positions-block.tsx
8451
- var import_lucide_react33 = require("lucide-react");
8475
+ var import_lucide_react34 = require("lucide-react");
8452
8476
  var import_jsx_runtime66 = require("react/jsx-runtime");
8453
8477
  function OpenPositionsBlock({
8454
8478
  trigger,
@@ -8465,7 +8489,7 @@ function OpenPositionsBlock({
8465
8489
  /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(DrawerContent, { className: "p-0 flex flex-col", children: [
8466
8490
  /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(DrawerHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0 text-left", children: [
8467
8491
  /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(DrawerTitle, { className: "text-base font-semibold font-display text-on-prominent", children: sheetTitle }),
8468
- /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(DrawerClose, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react33.X, {}) }) })
8492
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(DrawerClose, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react34.X, {}) }) })
8469
8493
  ] }),
8470
8494
  /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Separator, {}),
8471
8495
  body
@@ -8477,7 +8501,7 @@ function OpenPositionsBlock({
8477
8501
  /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(SheetContent, { side: "right", showCloseButton: false, className: "p-0 flex flex-col w-80 sm:max-w-xs", children: [
8478
8502
  /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(SheetHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0", children: [
8479
8503
  /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(SheetTitle, { className: "text-base font-semibold font-display text-on-prominent", children: sheetTitle }),
8480
- /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(SheetClose, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react33.X, {}) }) })
8504
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(SheetClose, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react34.X, {}) }) })
8481
8505
  ] }),
8482
8506
  /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Separator, {}),
8483
8507
  body
@@ -8544,7 +8568,7 @@ function PnlMeta({ pnl, win, stake }) {
8544
8568
  }
8545
8569
  function DefaultEmptyState({ onViewHistory }) {
8546
8570
  return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Empty, { className: "flex min-h-0 flex-1 flex-col justify-center border-none rounded-none p-6 text-center", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(EmptyHeader, { className: "gap-4", children: [
8547
- /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(EmptyMedia, { children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react33.History, { className: "size-8 text-on-subtle" }) }),
8571
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(EmptyMedia, { children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react34.History, { className: "size-8 text-on-subtle" }) }),
8548
8572
  /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(EmptyTitle, { className: "h6 text-on-subtle", children: "No trades yet." }),
8549
8573
  /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Button, { variant: "tertiary", size: "md", onClick: onViewHistory, children: "View trade history" })
8550
8574
  ] }) });
@@ -8617,7 +8641,6 @@ function useSmoothProgress({
8617
8641
  const label = done && progress >= 99.5 ? readyLabel : (_b = (_a = checkpoints[idx]) == null ? void 0 : _a.label) != null ? _b : readyLabel;
8618
8642
  return { progress, label, delayed, complete: done && progress >= 100 };
8619
8643
  }
8620
- var MONOGRAM_D = "M513.51,265.27l12.26-58.98H183.8l-12.26,58.98h105.29l-46.92,225.76,29.68-.85c1.65-.05,40.84-1.34,87-18.36,64.47-23.76,111.8-66.23,136.88-122.83l15.77-35.6h-139.02l-12.26,58.98h58.44l-6.31,6.26c-3.16,3.14-6.56,6.2-10.11,9.12-14.15,11.63-31.27,21.29-50.86,28.7-10.01,3.79-20.64,6.97-31.57,9.45l-5.55,1.26,33.65-161.89h177.86Z";
8621
8644
  function GameLoadingBlock({
8622
8645
  progress = 0,
8623
8646
  label = "",
@@ -8625,6 +8648,7 @@ function GameLoadingBlock({
8625
8648
  exiting = false,
8626
8649
  onExitEnd,
8627
8650
  contained = false,
8651
+ logoSrc,
8628
8652
  backgroundImageUrl,
8629
8653
  className
8630
8654
  }) {
@@ -8638,13 +8662,15 @@ function GameLoadingBlock({
8638
8662
  React23.useEffect(() => {
8639
8663
  if (!exiting) return;
8640
8664
  const raf = requestAnimationFrame(() => setGo(true));
8641
- const timer = setTimeout(() => onExitEnd == null ? void 0 : onExitEnd(), reduced ? 240 : 520);
8665
+ const timer = setTimeout(() => onExitEnd == null ? void 0 : onExitEnd(), reduced ? 240 : 700);
8642
8666
  return () => {
8643
8667
  cancelAnimationFrame(raf);
8644
8668
  clearTimeout(timer);
8645
8669
  };
8646
8670
  }, [exiting, reduced, onExitEnd]);
8647
8671
  const isAbsolute = exiting || contained;
8672
+ const punched = Boolean(logoSrc);
8673
+ const animate = exiting && go && !reduced;
8648
8674
  return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(
8649
8675
  "div",
8650
8676
  {
@@ -8653,39 +8679,51 @@ function GameLoadingBlock({
8653
8679
  "aria-label": "Loading game",
8654
8680
  "data-slot": "game-loading-block",
8655
8681
  className: cn(
8656
- "z-50 inset-0 flex flex-col items-center justify-center gap-8 overflow-hidden",
8682
+ "z-50 inset-0 overflow-hidden",
8657
8683
  isAbsolute ? "absolute" : "fixed",
8658
- // Token-derived dotted brand backdrop; skipped when a real image is passed.
8659
- !backgroundImageUrl && "game-loader-backdrop",
8660
- backgroundImageUrl && "bg-primary bg-cover bg-center bg-no-repeat",
8661
- exiting && (reduced ? "transition-opacity duration-200" : "transition-opacity duration-[180ms] delay-[260ms]"),
8662
- exiting && go ? "opacity-0" : "opacity-100",
8684
+ // Reduced motion, and the no-mark fallback, fade the whole layer.
8685
+ exiting && (reduced || !punched) && "transition-opacity duration-200",
8686
+ exiting && go && (reduced || !punched) ? "opacity-0" : "opacity-100",
8663
8687
  className
8664
8688
  ),
8665
- style: backgroundImageUrl ? { backgroundImage: `url(${backgroundImageUrl})` } : void 0,
8666
8689
  children: [
8667
8690
  /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
8668
- "svg",
8691
+ "div",
8692
+ {
8693
+ "aria-hidden": "true",
8694
+ "data-slot": "game-loading-backdrop",
8695
+ className: cn(
8696
+ "game-loader-field",
8697
+ punched && "game-loader-punch",
8698
+ animate && punched && "game-loader-field-exit"
8699
+ ),
8700
+ style: __spreadValues(__spreadValues({}, logoSrc ? { "--game-loader-mark": `url(${logoSrc})` } : null), backgroundImageUrl ? {
8701
+ backgroundImage: `url(${backgroundImageUrl})`,
8702
+ backgroundSize: "cover",
8703
+ backgroundPosition: "center",
8704
+ backgroundRepeat: "no-repeat"
8705
+ } : null)
8706
+ }
8707
+ ),
8708
+ logoSrc && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
8709
+ "img",
8669
8710
  {
8670
- width: "120",
8671
- height: "120",
8672
- viewBox: "0 0 697.31 697.31",
8673
- xmlns: "http://www.w3.org/2000/svg",
8711
+ src: logoSrc,
8712
+ alt: "",
8674
8713
  "aria-hidden": "true",
8675
- className: cn("game-loader-mark fill-on-primary", exiting && go && !reduced && "game-loader-mark-exit"),
8676
- children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("path", { d: MONOGRAM_D })
8714
+ className: cn("game-loader-mark", animate && "game-loader-mark-exit")
8677
8715
  }
8678
8716
  ),
8679
- !exiting && /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "flex w-[200px] flex-col items-start gap-3.5", children: [
8680
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "relative h-2 w-full overflow-hidden rounded-xs bg-on-primary/25", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
8717
+ !exiting && /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "absolute bottom-10 left-1/2 flex w-[200px] -translate-x-1/2 flex-col items-start gap-3.5", children: [
8718
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "relative h-2 w-full overflow-hidden rounded-xs bg-background-secondary-surface", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
8681
8719
  "div",
8682
8720
  {
8683
- className: "absolute inset-y-0 left-0 overflow-hidden rounded-xs bg-on-primary",
8721
+ className: "absolute inset-y-0 left-0 overflow-hidden rounded-xs bg-background-brand-default",
8684
8722
  style: { width: `${progress}%` },
8685
8723
  children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { "aria-hidden": "true", className: "game-loader-shimmer absolute inset-y-0 left-[-60%] w-[60%]" })
8686
8724
  }
8687
8725
  ) }),
8688
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "caption text-on-primary/90", children: delayed ? "Taking longer than usual\u2026" : label })
8726
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "caption text-text-subtle-default", children: delayed ? "Taking longer than usual\u2026" : label })
8689
8727
  ] })
8690
8728
  ]
8691
8729
  }