@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/AGENTS.md +3 -3
- package/README.md +1 -1
- package/dist/index.cjs +188 -143
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +41 -11
- package/dist/index.d.ts +41 -11
- package/dist/index.js +138 -93
- package/dist/index.js.map +1 -1
- package/docs/components/button.md +4 -2
- package/docs/components/checkbox.md +1 -1
- package/docs/components/drawer.md +13 -3
- package/docs/components/native-select.md +1 -1
- package/docs/components/radio-group.md +1 -1
- package/docs/components/stepper.md +10 -6
- package/docs/components/switch.md +1 -1
- package/docs/components/toggle.md +1 -1
- package/docs/foundations/colors.md +2 -2
- package/docs/foundations/typography.md +12 -0
- package/package.json +1 -1
- package/src/styles.css +167 -35
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:
|
|
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
|
|
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:
|
|
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:
|
|
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
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
|
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)(
|
|
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
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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)(
|
|
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
|
|
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)(
|
|
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)(
|
|
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
|
|
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:
|
|
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)(
|
|
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
|
|
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)(
|
|
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
|
|
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)(
|
|
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
|
|
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)(
|
|
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
|
|
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)(
|
|
6932
|
-
info: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
6933
|
-
warning: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
6934
|
-
error: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
6935
|
-
loading: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
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
|
|
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)(
|
|
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
|
|
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
|
-
|
|
7343
|
-
|
|
7344
|
-
|
|
7345
|
-
|
|
7346
|
-
|
|
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
|
-
|
|
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
|
-
|
|
7423
|
+
label != null && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
|
|
7424
|
+
"span",
|
|
7403
7425
|
{
|
|
7404
|
-
|
|
7405
|
-
|
|
7406
|
-
|
|
7407
|
-
|
|
7408
|
-
|
|
7409
|
-
|
|
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)(
|
|
7414
|
-
|
|
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
|
-
|
|
7452
|
-
|
|
7453
|
-
|
|
7454
|
-
|
|
7455
|
-
|
|
7456
|
-
|
|
7457
|
-
|
|
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
|
|
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)(
|
|
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:
|
|
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:
|
|
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
|
|
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)(
|
|
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)(
|
|
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
|
|
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)(
|
|
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
|
|
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)(
|
|
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)(
|
|
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
|
|
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)(
|
|
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
|
|
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)(
|
|
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)(
|
|
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)(
|
|
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 :
|
|
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
|
|
8689
|
+
"z-50 inset-0 overflow-hidden",
|
|
8657
8690
|
isAbsolute ? "absolute" : "fixed",
|
|
8658
|
-
//
|
|
8659
|
-
!
|
|
8660
|
-
|
|
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
|
-
"
|
|
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
|
-
|
|
8671
|
-
|
|
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
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
}
|