@trading-game/design-intelligence-layer 1.0.5 → 1.0.7

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);
@@ -7339,11 +7350,18 @@ function Stepper({
7339
7350
  }
7340
7351
  }, [currentValue, decimalPlaces, isFocused]);
7341
7352
  function commit(next) {
7342
- const clamped = clamp(next, min, max);
7343
- const rounded = decimalPlaces > 0 ? parseFloat(clamped.toFixed(decimalPlaces)) : Math.round(clamped);
7344
- if (!isControlled) setInternalValue(rounded);
7345
- setDisplayString(formatValue(rounded, decimalPlaces));
7346
- onValueChange == null ? void 0 : onValueChange(rounded);
7353
+ let committed;
7354
+ if (next <= min) {
7355
+ committed = min;
7356
+ } else if (next >= max) {
7357
+ committed = max;
7358
+ } else {
7359
+ const rounded = decimalPlaces > 0 ? parseFloat(next.toFixed(decimalPlaces)) : Math.round(next);
7360
+ committed = clamp(rounded, min, max);
7361
+ }
7362
+ if (!isControlled) setInternalValue(committed);
7363
+ setDisplayString(formatValue(committed, decimalPlaces));
7364
+ onValueChange == null ? void 0 : onValueChange(committed);
7347
7365
  }
7348
7366
  function handleDecrement() {
7349
7367
  commit(currentValue - step);
@@ -7389,7 +7407,11 @@ function Stepper({
7389
7407
  "data-slot": "stepper",
7390
7408
  "data-disabled": disabled || void 0,
7391
7409
  className: cn(
7392
- "flex w-full items-center justify-between gap-4",
7410
+ // Two rows: the label spans the control, then the -/value/+ row sits
7411
+ // under it with a 4px gap. The label is deliberately NOT inside the
7412
+ // value column — nesting it there makes the buttons centre against the
7413
+ // label+value stack, which drops them below the number.
7414
+ "flex w-full flex-col gap-1",
7393
7415
  // No opacity here on purpose. The +/- are Buttons and already carry
7394
7416
  // their own disabled treatment; dimming the wrapper too multiplied
7395
7417
  // with theirs (24% × 24% ≈ 6%) and made them all but invisible.
@@ -7398,63 +7420,72 @@ function Stepper({
7398
7420
  className
7399
7421
  ),
7400
7422
  children: [
7401
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7402
- Button,
7423
+ label != null && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7424
+ "span",
7403
7425
  {
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, {})
7426
+ "data-slot": "stepper-label",
7427
+ className: cn(
7428
+ "type-stepper-stake-label text-center",
7429
+ disabled ? "text-text-disabled-default" : "text-text-subtle-default"
7430
+ ),
7431
+ children: label
7411
7432
  }
7412
7433
  ),
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,
7434
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
7435
+ "div",
7450
7436
  {
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, {})
7437
+ "data-slot": "stepper-row",
7438
+ className: "flex w-full items-center justify-between gap-4",
7439
+ children: [
7440
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7441
+ Button,
7442
+ {
7443
+ type: "button",
7444
+ variant: "frosted",
7445
+ size: "icon-lg",
7446
+ onClick: handleDecrement,
7447
+ disabled: disabled || currentValue <= min,
7448
+ "aria-label": "Decrease value",
7449
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react28.Minus, {})
7450
+ }
7451
+ ),
7452
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7453
+ "input",
7454
+ {
7455
+ type: "text",
7456
+ inputMode: "decimal",
7457
+ role: "spinbutton",
7458
+ "aria-valuemin": min === -Infinity ? void 0 : min,
7459
+ "aria-valuemax": max === Infinity ? void 0 : max,
7460
+ "aria-valuenow": currentValue,
7461
+ "aria-label": ariaLabel,
7462
+ value: displayString,
7463
+ onChange: handleInputChange,
7464
+ onBlur: handleBlur,
7465
+ onFocus: handleFocus,
7466
+ onKeyDown: handleKeyDown,
7467
+ disabled,
7468
+ placeholder,
7469
+ id,
7470
+ name,
7471
+ size: Math.max(displayString.length, 1),
7472
+ "data-slot": "stepper-value",
7473
+ 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"
7474
+ }
7475
+ ),
7476
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7477
+ Button,
7478
+ {
7479
+ type: "button",
7480
+ variant: "frosted",
7481
+ size: "icon-lg",
7482
+ onClick: handleIncrement,
7483
+ disabled: disabled || currentValue >= max,
7484
+ "aria-label": "Increase value",
7485
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react28.Plus, {})
7486
+ }
7487
+ )
7488
+ ]
7458
7489
  }
7459
7490
  )
7460
7491
  ]
@@ -7464,7 +7495,7 @@ function Stepper({
7464
7495
 
7465
7496
  // components/ui/steps.tsx
7466
7497
  var React19 = __toESM(require("react"), 1);
7467
- var import_lucide_react28 = require("lucide-react");
7498
+ var import_lucide_react29 = require("lucide-react");
7468
7499
  var import_jsx_runtime54 = require("react/jsx-runtime");
7469
7500
  var StepsContext = React19.createContext({ shape: "circle", orientation: "horizontal", size: "md" });
7470
7501
  function Steps(_a) {
@@ -7544,7 +7575,7 @@ function Step(_a) {
7544
7575
  "[&_svg]:pointer-events-none [&_svg]:shrink-0",
7545
7576
  sm ? "[&_svg:not([class*='size-'])]:size-3.5" : "[&_svg:not([class*='size-'])]:size-4"
7546
7577
  ),
7547
- children: state === "done" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react28.Check, {}) : icon != null ? icon : index
7578
+ children: state === "done" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react29.Check, {}) : icon != null ? icon : index
7548
7579
  }
7549
7580
  );
7550
7581
  if (horizontal) {
@@ -7684,7 +7715,7 @@ function Switch(_a) {
7684
7715
  "data-slot": "switch",
7685
7716
  "data-size": size,
7686
7717
  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",
7718
+ "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
7719
  className
7689
7720
  )
7690
7721
  }, props), {
@@ -7920,7 +7951,7 @@ var import_class_variance_authority15 = require("class-variance-authority");
7920
7951
  var import_radix_ui32 = require("radix-ui");
7921
7952
  var import_jsx_runtime58 = require("react/jsx-runtime");
7922
7953
  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",
7954
+ "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
7955
  {
7925
7956
  variants: {
7926
7957
  size: {
@@ -8103,7 +8134,7 @@ function ResultDialog({
8103
8134
  }
8104
8135
 
8105
8136
  // components/blocks/header-navigation-block.tsx
8106
- var import_lucide_react29 = require("lucide-react");
8137
+ var import_lucide_react30 = require("lucide-react");
8107
8138
  var import_jsx_runtime61 = require("react/jsx-runtime");
8108
8139
  function HeaderNavigationBlock({
8109
8140
  onBack,
@@ -8114,7 +8145,7 @@ function HeaderNavigationBlock({
8114
8145
  }) {
8115
8146
  var _a;
8116
8147
  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" }) }),
8148
+ 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
8149
  /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex min-w-0 flex-1 items-center justify-center gap-2", children: [
8119
8150
  badge && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Badge, { variant: (_a = badge.variant) != null ? _a : "tint-warning", size: "sm", children: badge.label }),
8120
8151
  /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "font-display font-semibold tabular-nums text-on-prominent", children: balance.amount }),
@@ -8135,7 +8166,7 @@ function HistoryButton({
8135
8166
  const label = show ? count > 99 ? "99+" : String(count) : null;
8136
8167
  const ariaLabel = ariaLabelOverride != null ? ariaLabelOverride : show ? `Open history, ${count} new` : "Open history";
8137
8168
  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" }) }),
8169
+ /* @__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
8170
  show && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
8140
8171
  "span",
8141
8172
  {
@@ -8148,7 +8179,7 @@ function HistoryButton({
8148
8179
  }
8149
8180
 
8150
8181
  // components/blocks/faq-block.tsx
8151
- var import_lucide_react30 = require("lucide-react");
8182
+ var import_lucide_react31 = require("lucide-react");
8152
8183
  var import_radix_ui34 = require("radix-ui");
8153
8184
  var import_jsx_runtime62 = require("react/jsx-runtime");
8154
8185
  function FAQBlock({
@@ -8189,7 +8220,7 @@ function FAQBlock({
8189
8220
  "shrink-0 size-7 flex items-center justify-center rounded-sm border transition-all duration-200",
8190
8221
  "group-data-[state=open]:bg-primary group-data-[state=open]:border-primary",
8191
8222
  "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(
8223
+ ), children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react31.Plus, { className: cn(
8193
8224
  "size-4 transition-all duration-200",
8194
8225
  "group-data-[state=open]:rotate-45 group-data-[state=open]:text-on-primary",
8195
8226
  "group-data-[state=closed]:text-on-prominent"
@@ -8238,7 +8269,7 @@ function FAQBlock({
8238
8269
  }
8239
8270
 
8240
8271
  // components/blocks/hero-block.tsx
8241
- var import_lucide_react31 = require("lucide-react");
8272
+ var import_lucide_react32 = require("lucide-react");
8242
8273
  var import_jsx_runtime63 = require("react/jsx-runtime");
8243
8274
  function HeroBlock({
8244
8275
  layout = "centered",
@@ -8258,7 +8289,7 @@ function HeroBlock({
8258
8289
  ] }),
8259
8290
  /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(Button, { size: "sm", onClick: primaryCta.onClick, children: [
8260
8291
  primaryCta.label,
8261
- primaryCta.trailingArrow !== false && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react31.ArrowRight, { className: "size-4" })
8292
+ primaryCta.trailingArrow !== false && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react32.ArrowRight, { className: "size-4" })
8262
8293
  ] })
8263
8294
  ] }) });
8264
8295
  }
@@ -8294,7 +8325,7 @@ function TaglinePill({
8294
8325
  label,
8295
8326
  suffix && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "text-on-subtle", children: ` \xB7 ${suffix}` })
8296
8327
  ] }),
8297
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react31.ArrowUpRight, { className: "size-4 text-on-subtle shrink-0", "aria-hidden": "true" })
8328
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react32.ArrowUpRight, { className: "size-4 text-on-subtle shrink-0", "aria-hidden": "true" })
8298
8329
  ] });
8299
8330
  }
8300
8331
 
@@ -8384,7 +8415,7 @@ function ProviderButton({ provider }) {
8384
8415
 
8385
8416
  // components/blocks/navbar-block.tsx
8386
8417
  var React22 = __toESM(require("react"), 1);
8387
- var import_lucide_react32 = require("lucide-react");
8418
+ var import_lucide_react33 = require("lucide-react");
8388
8419
  var import_jsx_runtime65 = require("react/jsx-runtime");
8389
8420
  function NavBarBlock({ brand, links, signIn, signUp }) {
8390
8421
  var _a, _b, _c, _d;
@@ -8423,7 +8454,7 @@ function NavBarBlock({ brand, links, signIn, signUp }) {
8423
8454
  "aria-expanded": mobileMenuOpen,
8424
8455
  className: "min-[600px]:hidden",
8425
8456
  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" })
8457
+ 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
8458
  }
8428
8459
  )
8429
8460
  ] }),
@@ -8448,7 +8479,7 @@ function NavBarBlock({ brand, links, signIn, signUp }) {
8448
8479
  }
8449
8480
 
8450
8481
  // components/blocks/open-positions-block.tsx
8451
- var import_lucide_react33 = require("lucide-react");
8482
+ var import_lucide_react34 = require("lucide-react");
8452
8483
  var import_jsx_runtime66 = require("react/jsx-runtime");
8453
8484
  function OpenPositionsBlock({
8454
8485
  trigger,
@@ -8465,7 +8496,7 @@ function OpenPositionsBlock({
8465
8496
  /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(DrawerContent, { className: "p-0 flex flex-col", children: [
8466
8497
  /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(DrawerHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0 text-left", children: [
8467
8498
  /* @__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, {}) }) })
8499
+ /* @__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
8500
  ] }),
8470
8501
  /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Separator, {}),
8471
8502
  body
@@ -8477,7 +8508,7 @@ function OpenPositionsBlock({
8477
8508
  /* @__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
8509
  /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(SheetHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0", children: [
8479
8510
  /* @__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, {}) }) })
8511
+ /* @__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
8512
  ] }),
8482
8513
  /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Separator, {}),
8483
8514
  body
@@ -8544,7 +8575,7 @@ function PnlMeta({ pnl, win, stake }) {
8544
8575
  }
8545
8576
  function DefaultEmptyState({ onViewHistory }) {
8546
8577
  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" }) }),
8578
+ /* @__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
8579
  /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(EmptyTitle, { className: "h6 text-on-subtle", children: "No trades yet." }),
8549
8580
  /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Button, { variant: "tertiary", size: "md", onClick: onViewHistory, children: "View trade history" })
8550
8581
  ] }) });
@@ -8617,7 +8648,6 @@ function useSmoothProgress({
8617
8648
  const label = done && progress >= 99.5 ? readyLabel : (_b = (_a = checkpoints[idx]) == null ? void 0 : _a.label) != null ? _b : readyLabel;
8618
8649
  return { progress, label, delayed, complete: done && progress >= 100 };
8619
8650
  }
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
8651
  function GameLoadingBlock({
8622
8652
  progress = 0,
8623
8653
  label = "",
@@ -8625,6 +8655,7 @@ function GameLoadingBlock({
8625
8655
  exiting = false,
8626
8656
  onExitEnd,
8627
8657
  contained = false,
8658
+ logoSrc,
8628
8659
  backgroundImageUrl,
8629
8660
  className
8630
8661
  }) {
@@ -8638,13 +8669,15 @@ function GameLoadingBlock({
8638
8669
  React23.useEffect(() => {
8639
8670
  if (!exiting) return;
8640
8671
  const raf = requestAnimationFrame(() => setGo(true));
8641
- const timer = setTimeout(() => onExitEnd == null ? void 0 : onExitEnd(), reduced ? 240 : 520);
8672
+ const timer = setTimeout(() => onExitEnd == null ? void 0 : onExitEnd(), reduced ? 240 : 700);
8642
8673
  return () => {
8643
8674
  cancelAnimationFrame(raf);
8644
8675
  clearTimeout(timer);
8645
8676
  };
8646
8677
  }, [exiting, reduced, onExitEnd]);
8647
8678
  const isAbsolute = exiting || contained;
8679
+ const punched = Boolean(logoSrc);
8680
+ const animate = exiting && go && !reduced;
8648
8681
  return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(
8649
8682
  "div",
8650
8683
  {
@@ -8653,39 +8686,51 @@ function GameLoadingBlock({
8653
8686
  "aria-label": "Loading game",
8654
8687
  "data-slot": "game-loading-block",
8655
8688
  className: cn(
8656
- "z-50 inset-0 flex flex-col items-center justify-center gap-8 overflow-hidden",
8689
+ "z-50 inset-0 overflow-hidden",
8657
8690
  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",
8691
+ // Reduced motion, and the no-mark fallback, fade the whole layer.
8692
+ exiting && (reduced || !punched) && "transition-opacity duration-200",
8693
+ exiting && go && (reduced || !punched) ? "opacity-0" : "opacity-100",
8663
8694
  className
8664
8695
  ),
8665
- style: backgroundImageUrl ? { backgroundImage: `url(${backgroundImageUrl})` } : void 0,
8666
8696
  children: [
8667
8697
  /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
8668
- "svg",
8698
+ "div",
8699
+ {
8700
+ "aria-hidden": "true",
8701
+ "data-slot": "game-loading-backdrop",
8702
+ className: cn(
8703
+ "game-loader-field",
8704
+ punched && "game-loader-punch",
8705
+ animate && punched && "game-loader-field-exit"
8706
+ ),
8707
+ style: __spreadValues(__spreadValues({}, logoSrc ? { "--game-loader-mark": `url(${logoSrc})` } : null), backgroundImageUrl ? {
8708
+ backgroundImage: `url(${backgroundImageUrl})`,
8709
+ backgroundSize: "cover",
8710
+ backgroundPosition: "center",
8711
+ backgroundRepeat: "no-repeat"
8712
+ } : null)
8713
+ }
8714
+ ),
8715
+ logoSrc && /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
8716
+ "img",
8669
8717
  {
8670
- width: "120",
8671
- height: "120",
8672
- viewBox: "0 0 697.31 697.31",
8673
- xmlns: "http://www.w3.org/2000/svg",
8718
+ src: logoSrc,
8719
+ alt: "",
8674
8720
  "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 })
8721
+ className: cn("game-loader-mark", animate && "game-loader-mark-exit")
8677
8722
  }
8678
8723
  ),
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)(
8724
+ !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: [
8725
+ /* @__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
8726
  "div",
8682
8727
  {
8683
- className: "absolute inset-y-0 left-0 overflow-hidden rounded-xs bg-on-primary",
8728
+ className: "absolute inset-y-0 left-0 overflow-hidden rounded-xs bg-background-brand-default",
8684
8729
  style: { width: `${progress}%` },
8685
8730
  children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { "aria-hidden": "true", className: "game-loader-shimmer absolute inset-y-0 left-[-60%] w-[60%]" })
8686
8731
  }
8687
8732
  ) }),
8688
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "caption text-on-primary/90", children: delayed ? "Taking longer than usual\u2026" : label })
8733
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "caption text-text-subtle-default", children: delayed ? "Taking longer than usual\u2026" : label })
8689
8734
  ] })
8690
8735
  ]
8691
8736
  }