@trading-game/design-intelligence-layer 1.0.0 → 1.0.2
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 +8 -5
- package/README.md +13 -9
- package/dist/index.cjs +938 -371
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +84 -14
- package/dist/index.d.ts +84 -14
- package/dist/index.js +952 -388
- package/dist/index.js.map +1 -1
- package/docs/components/badge.md +2 -2
- package/docs/components/bottom-navigation.md +1 -1
- package/docs/components/breadcrumb.md +1 -1
- package/docs/components/calendar.md +7 -7
- package/docs/components/card.md +2 -2
- package/docs/components/dialog.md +3 -3
- package/docs/components/empty.md +1 -1
- package/docs/components/input-otp.md +3 -3
- package/docs/components/item.md +1 -1
- package/docs/components/link.md +1 -1
- package/docs/components/navigation-button.md +2 -2
- package/docs/components/progress.md +42 -25
- package/docs/components/radio-group.md +1 -1
- package/docs/components/select.md +1 -1
- package/docs/components/sheet.md +2 -2
- package/docs/components/slide-to-confirm.md +68 -0
- package/docs/components/stepper.md +29 -37
- package/docs/components/steps.md +77 -0
- package/docs/components/switch.md +1 -1
- package/docs/components/tabs.md +1 -1
- package/docs/components/toggle.md +46 -13
- package/docs/foundations/colors.md +2 -1
- package/docs/foundations/shape-layout.md +1 -1
- package/docs/patterns/forms.md +1 -1
- package/package.json +3 -2
- package/src/styles.css +172 -10
- package/docs/components/toggle-group.md +0 -77
package/dist/index.js
CHANGED
|
@@ -305,7 +305,7 @@ var navigationButtonVariants = cva2(
|
|
|
305
305
|
{
|
|
306
306
|
variants: {
|
|
307
307
|
variant: {
|
|
308
|
-
default: "bg-
|
|
308
|
+
default: "bg-background-hover-default text-icon-prominent-default hover:bg-background-pressed-default",
|
|
309
309
|
// Frosted circle for art/hero/brand surfaces — same recipe as
|
|
310
310
|
// Button's frosted-on-brand: hover thickens the frost, press thins it.
|
|
311
311
|
"frosted-on-brand": "bg-(--primitive-white-alpha-24) backdrop-blur-md border border-(--primitive-white-alpha-24) text-text-on-brand-static hover:bg-(--primitive-white-alpha-32) active:bg-(--primitive-white-alpha-16) active:opacity-100",
|
|
@@ -930,10 +930,10 @@ var badgeVariants = cva4(
|
|
|
930
930
|
// so it paints via `background`, not a bg-* utility).
|
|
931
931
|
tint: "[background:var(--background-brand-container)] border-transparent text-text-brand-container-static",
|
|
932
932
|
"tint-demo": "bg-background-demo-default border-transparent text-text-demo-default",
|
|
933
|
-
"tint-neutral": "bg-background-secondary-surface border-
|
|
934
|
-
"tint-success": "bg-background-success-default border-
|
|
935
|
-
"tint-fail": "bg-background-error-default border-
|
|
936
|
-
"tint-warning": "bg-background-warning-default border-
|
|
933
|
+
"tint-neutral": "bg-background-secondary-surface border-transparent text-text-prominent-default",
|
|
934
|
+
"tint-success": "bg-background-success-default border-transparent text-text-success-default",
|
|
935
|
+
"tint-fail": "bg-background-error-default border-transparent text-text-error-default",
|
|
936
|
+
"tint-warning": "bg-background-warning-default border-transparent text-text-warning-default"
|
|
937
937
|
},
|
|
938
938
|
size: {
|
|
939
939
|
xs: "type-badge-xs h-5 px-2 py-0.5",
|
|
@@ -1349,7 +1349,7 @@ function BreadcrumbPage(_a) {
|
|
|
1349
1349
|
role: "link",
|
|
1350
1350
|
"aria-disabled": "true",
|
|
1351
1351
|
"aria-current": "page",
|
|
1352
|
-
className: cn("type-breadcrumb-page text-text-brand-
|
|
1352
|
+
className: cn("type-breadcrumb-page text-text-brand-selected", className)
|
|
1353
1353
|
}, props)
|
|
1354
1354
|
);
|
|
1355
1355
|
}
|
|
@@ -1709,12 +1709,15 @@ function Calendar(_a) {
|
|
|
1709
1709
|
props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-full" : "[&:first-child[data-selected=true]_button]:rounded-l-full",
|
|
1710
1710
|
defaultClassNames.day
|
|
1711
1711
|
),
|
|
1712
|
+
/* The range band rides `brand-selected` — the theme-aware selection
|
|
1713
|
+
family — not the static `brand-container`, which is one value in
|
|
1714
|
+
both themes and reads as a pale strip on the dark canvas. */
|
|
1712
1715
|
range_start: cn(
|
|
1713
|
-
"rounded-l-full
|
|
1716
|
+
"rounded-l-full bg-background-brand-selected",
|
|
1714
1717
|
defaultClassNames.range_start
|
|
1715
1718
|
),
|
|
1716
1719
|
range_middle: cn("rounded-none", defaultClassNames.range_middle),
|
|
1717
|
-
range_end: cn("rounded-r-full
|
|
1720
|
+
range_end: cn("rounded-r-full bg-background-brand-selected", defaultClassNames.range_end),
|
|
1718
1721
|
today: cn(
|
|
1719
1722
|
"rounded-full data-[selected=true]:rounded-none",
|
|
1720
1723
|
defaultClassNames.today
|
|
@@ -1834,14 +1837,19 @@ function CalendarDayButton(_a) {
|
|
|
1834
1837
|
// Base day cell — circular, calendar's own type, prominent ink,
|
|
1835
1838
|
// hover = the standard hover glaze.
|
|
1836
1839
|
"type-calendar-day flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 rounded-full leading-none font-body bg-transparent border-transparent shadow-none text-text-prominent-default hover:!bg-background-hover-default hover:text-text-prominent-default hover:no-underline hover:shadow-none group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong",
|
|
1837
|
-
// Today (when not selected) — brand number
|
|
1838
|
-
|
|
1839
|
-
//
|
|
1840
|
-
"data-[selected-single=true]:[
|
|
1841
|
-
//
|
|
1842
|
-
|
|
1843
|
-
"data-[
|
|
1844
|
-
|
|
1840
|
+
// Today (when not selected) — brand number inside a brand hairline
|
|
1841
|
+
// ring. The ring, not a heavier weight, is what makes today legible:
|
|
1842
|
+
// components cap at semibold 600, and 600 vs 400 doesn't read at 14px.
|
|
1843
|
+
"[&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:font-semibold [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:text-text-brand-selected [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:border-[1.5px] [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:border-border-brand-selected",
|
|
1844
|
+
// Selected single — the same solid brand disc as a range endpoint:
|
|
1845
|
+
// both mean "the date you picked", so they must not diverge.
|
|
1846
|
+
"data-[selected-single=true]:bg-background-brand-default data-[selected-single=true]:border-transparent data-[selected-single=true]:text-text-on-brand-static data-[selected-single=true]:font-semibold data-[selected-single=true]:hover:!bg-background-brand-default",
|
|
1847
|
+
// Range — the two endpoints are solid brand discs (they're the values
|
|
1848
|
+
// the user actually picked); the days between keep the quiet
|
|
1849
|
+
// brand-selected band. Both ends and band are theme-aware.
|
|
1850
|
+
"data-[range-start=true]:rounded-full data-[range-start=true]:bg-background-brand-default data-[range-start=true]:border-transparent data-[range-start=true]:text-text-on-brand-static data-[range-start=true]:font-semibold data-[range-start=true]:hover:!bg-background-brand-default",
|
|
1851
|
+
"data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-background-brand-selected data-[range-middle=true]:text-text-brand-selected data-[range-middle=true]:hover:!bg-background-brand-selected",
|
|
1852
|
+
"data-[range-end=true]:rounded-full data-[range-end=true]:bg-background-brand-default data-[range-end=true]:border-transparent data-[range-end=true]:text-text-on-brand-static data-[range-end=true]:font-semibold data-[range-end=true]:hover:!bg-background-brand-default",
|
|
1845
1853
|
"[&>span]:text-xs [&>span]:opacity-70",
|
|
1846
1854
|
defaultClassNames.day,
|
|
1847
1855
|
className
|
|
@@ -1869,7 +1877,7 @@ function Card(_a) {
|
|
|
1869
1877
|
"data-variant": variant,
|
|
1870
1878
|
className: cn(
|
|
1871
1879
|
"flex flex-col gap-4 rounded-2xl py-4",
|
|
1872
|
-
variant === "frosted-on-brand" || variant === "glass" ? "border border-(--primitive-white-alpha-64) bg-(--primitive-white-alpha-80) backdrop-blur-xl text-text-static-black" : "border border-border-default-default bg-background-primary-surface text-text-prominent-default",
|
|
1880
|
+
variant === "frosted-on-brand" || variant === "glass" ? "border border-(--primitive-white-alpha-64) bg-(--primitive-white-alpha-80) backdrop-blur-xl text-text-static-black" : variant === "frosted" ? "bg-background-brand-selected text-text-brand-selected" : "border border-border-default-default bg-background-primary-surface text-text-prominent-default",
|
|
1873
1881
|
interactive && "transition-transform duration-base ease-standard sm:hover:-translate-y-0.75 motion-reduce:transition-none motion-reduce:sm:hover:translate-y-0",
|
|
1874
1882
|
className
|
|
1875
1883
|
)
|
|
@@ -2283,17 +2291,16 @@ function DialogContent(_a) {
|
|
|
2283
2291
|
}, props), {
|
|
2284
2292
|
children: [
|
|
2285
2293
|
children,
|
|
2286
|
-
showCloseButton && /* @__PURE__ */
|
|
2287
|
-
|
|
2294
|
+
showCloseButton && /* @__PURE__ */ jsx19(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx19(
|
|
2295
|
+
NavigationButton,
|
|
2288
2296
|
{
|
|
2289
2297
|
"data-slot": "dialog-close",
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
]
|
|
2298
|
+
size: "sm",
|
|
2299
|
+
"aria-label": "Close",
|
|
2300
|
+
className: "absolute top-4 right-4",
|
|
2301
|
+
children: /* @__PURE__ */ jsx19(XIcon, { className: "size-4" })
|
|
2295
2302
|
}
|
|
2296
|
-
)
|
|
2303
|
+
) })
|
|
2297
2304
|
]
|
|
2298
2305
|
})
|
|
2299
2306
|
)
|
|
@@ -3176,7 +3183,7 @@ function EmptyDescription(_a) {
|
|
|
3176
3183
|
__spreadValues({
|
|
3177
3184
|
"data-slot": "empty-description",
|
|
3178
3185
|
className: cn(
|
|
3179
|
-
"type-empty-description text-text-subtle-default [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-text-brand-
|
|
3186
|
+
"type-empty-description text-text-subtle-default [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-text-brand-selected",
|
|
3180
3187
|
className
|
|
3181
3188
|
)
|
|
3182
3189
|
}, props)
|
|
@@ -3420,7 +3427,7 @@ function FieldDescription(_a) {
|
|
|
3420
3427
|
className: cn(
|
|
3421
3428
|
"type-field-description text-text-subtle-default group-has-[[data-orientation=horizontal]]/field:text-balance",
|
|
3422
3429
|
"last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5",
|
|
3423
|
-
"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-text-brand-
|
|
3430
|
+
"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-text-brand-selected",
|
|
3424
3431
|
className
|
|
3425
3432
|
)
|
|
3426
3433
|
}, props)
|
|
@@ -3929,7 +3936,7 @@ function InputOTPSlot(_a) {
|
|
|
3929
3936
|
"data-slot": "input-otp-slot",
|
|
3930
3937
|
"data-active": isActive,
|
|
3931
3938
|
className: cn(
|
|
3932
|
-
"type-input-otp relative flex size-
|
|
3939
|
+
"type-input-otp relative flex size-12 items-center justify-center border border-border-default-default bg-background-primary-surface font-body text-text-prominent-default transition-[color,box-shadow] outline-none first:rounded-l-xs last:rounded-r-xs aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft data-[active=true]:z-10 data-[active=true]:border-ring-focus-default data-[active=true]:ring-[3px] data-[active=true]:ring-ring-focus-soft data-[active=true]:aria-invalid:border-border-error-default data-[active=true]:aria-invalid:ring-ring-error-soft",
|
|
3933
3940
|
className
|
|
3934
3941
|
)
|
|
3935
3942
|
}, props), {
|
|
@@ -4108,7 +4115,7 @@ function ItemDescription(_a) {
|
|
|
4108
4115
|
"data-slot": "item-description",
|
|
4109
4116
|
className: cn(
|
|
4110
4117
|
"type-item-description line-clamp-2 text-balance text-text-subtle-default",
|
|
4111
|
-
"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-text-brand-
|
|
4118
|
+
"[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-text-brand-selected",
|
|
4112
4119
|
className
|
|
4113
4120
|
)
|
|
4114
4121
|
}, props)
|
|
@@ -4173,7 +4180,7 @@ var linkVariants = cva11(
|
|
|
4173
4180
|
// on-brand = static white for links on brand-coloured surfaces
|
|
4174
4181
|
// (same family naming as Button/Input).
|
|
4175
4182
|
tone: {
|
|
4176
|
-
brand: "text-text-brand-
|
|
4183
|
+
brand: "text-text-brand-selected hover:text-text-brand-hover",
|
|
4177
4184
|
"on-brand": "text-text-on-brand-static hover:text-(--primitive-white-alpha-80)"
|
|
4178
4185
|
}
|
|
4179
4186
|
},
|
|
@@ -4967,42 +4974,208 @@ function PopoverDescription(_a) {
|
|
|
4967
4974
|
}
|
|
4968
4975
|
|
|
4969
4976
|
// components/ui/progress.tsx
|
|
4977
|
+
import * as React10 from "react";
|
|
4970
4978
|
import { Progress as ProgressPrimitive } from "radix-ui";
|
|
4971
|
-
import { jsx as jsx41 } from "react/jsx-runtime";
|
|
4979
|
+
import { jsx as jsx41, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
4980
|
+
var BAR_HEIGHTS = {
|
|
4981
|
+
sm: "h-1",
|
|
4982
|
+
md: "h-2",
|
|
4983
|
+
lg: "h-3"
|
|
4984
|
+
};
|
|
4985
|
+
var DOT_WIDTHS = {
|
|
4986
|
+
sm: "w-4",
|
|
4987
|
+
md: "w-6",
|
|
4988
|
+
lg: "w-8"
|
|
4989
|
+
};
|
|
4990
|
+
var RINGS = {
|
|
4991
|
+
sm: { box: 24, r: 11, stroke: 2 },
|
|
4992
|
+
md: { box: 32, r: 15, stroke: 2 },
|
|
4993
|
+
lg: { box: 48, r: 22, stroke: 3 },
|
|
4994
|
+
xl: { box: 112, r: 52, stroke: 7 }
|
|
4995
|
+
};
|
|
4972
4996
|
function Progress(_a) {
|
|
4973
4997
|
var _b = _a, {
|
|
4974
4998
|
className,
|
|
4975
|
-
value
|
|
4999
|
+
value,
|
|
5000
|
+
variant = "bar",
|
|
5001
|
+
size = "md",
|
|
5002
|
+
label,
|
|
5003
|
+
valueLabel,
|
|
5004
|
+
segments = 5,
|
|
5005
|
+
timer,
|
|
5006
|
+
direction = "down",
|
|
5007
|
+
onTimerEnd,
|
|
5008
|
+
children
|
|
4976
5009
|
} = _b, props = __objRest(_b, [
|
|
4977
5010
|
"className",
|
|
4978
|
-
"value"
|
|
5011
|
+
"value",
|
|
5012
|
+
"variant",
|
|
5013
|
+
"size",
|
|
5014
|
+
"label",
|
|
5015
|
+
"valueLabel",
|
|
5016
|
+
"segments",
|
|
5017
|
+
"timer",
|
|
5018
|
+
"direction",
|
|
5019
|
+
"onTimerEnd",
|
|
5020
|
+
"children"
|
|
4979
5021
|
]);
|
|
4980
|
-
|
|
5022
|
+
const [timerPct, setTimerPct] = React10.useState(
|
|
5023
|
+
timer != null ? direction === "up" ? 0 : 100 : null
|
|
5024
|
+
);
|
|
5025
|
+
const endedRef = React10.useRef(false);
|
|
5026
|
+
React10.useEffect(() => {
|
|
5027
|
+
if (timer == null) {
|
|
5028
|
+
setTimerPct(null);
|
|
5029
|
+
return;
|
|
5030
|
+
}
|
|
5031
|
+
endedRef.current = false;
|
|
5032
|
+
const start = performance.now();
|
|
5033
|
+
let raf = 0;
|
|
5034
|
+
const frame = (now) => {
|
|
5035
|
+
const p = Math.min((now - start) / timer * 100, 100);
|
|
5036
|
+
setTimerPct(direction === "up" ? p : 100 - p);
|
|
5037
|
+
if (p < 100) {
|
|
5038
|
+
raf = requestAnimationFrame(frame);
|
|
5039
|
+
} else if (!endedRef.current) {
|
|
5040
|
+
endedRef.current = true;
|
|
5041
|
+
onTimerEnd == null ? void 0 : onTimerEnd();
|
|
5042
|
+
}
|
|
5043
|
+
};
|
|
5044
|
+
raf = requestAnimationFrame(frame);
|
|
5045
|
+
return () => cancelAnimationFrame(raf);
|
|
5046
|
+
}, [timer, direction]);
|
|
5047
|
+
const timed = timerPct != null;
|
|
5048
|
+
const pct = timed ? timerPct : Math.min(Math.max(value != null ? value : 0, 0), 100);
|
|
5049
|
+
const content = typeof children === "function" ? children(pct) : children;
|
|
5050
|
+
if (variant === "dots") {
|
|
5051
|
+
const filled = Math.round(pct / 100 * segments);
|
|
5052
|
+
return /* @__PURE__ */ jsx41(
|
|
5053
|
+
"div",
|
|
5054
|
+
__spreadProps(__spreadValues({
|
|
5055
|
+
"data-slot": "progress",
|
|
5056
|
+
"data-variant": "dots",
|
|
5057
|
+
role: "progressbar",
|
|
5058
|
+
"aria-valuemin": 0,
|
|
5059
|
+
"aria-valuemax": 100,
|
|
5060
|
+
"aria-valuenow": pct,
|
|
5061
|
+
className: cn("flex items-center gap-1", className)
|
|
5062
|
+
}, props), {
|
|
5063
|
+
children: Array.from({ length: segments }, (_, i) => /* @__PURE__ */ jsx41(
|
|
5064
|
+
"span",
|
|
5065
|
+
{
|
|
5066
|
+
"data-slot": "progress-dot",
|
|
5067
|
+
"data-filled": i < filled || void 0,
|
|
5068
|
+
className: cn(
|
|
5069
|
+
"h-1 rounded-full",
|
|
5070
|
+
DOT_WIDTHS[size in BAR_HEIGHTS ? size : "md"],
|
|
5071
|
+
i < filled ? "bg-background-brand-default" : "bg-background-secondary-surface"
|
|
5072
|
+
)
|
|
5073
|
+
},
|
|
5074
|
+
i
|
|
5075
|
+
))
|
|
5076
|
+
})
|
|
5077
|
+
);
|
|
5078
|
+
}
|
|
5079
|
+
if (variant === "ring") {
|
|
5080
|
+
const { box, r, stroke } = RINGS[size in RINGS ? size : "md"];
|
|
5081
|
+
const circumference = 2 * Math.PI * r;
|
|
5082
|
+
return /* @__PURE__ */ jsxs22(
|
|
5083
|
+
"div",
|
|
5084
|
+
__spreadProps(__spreadValues({
|
|
5085
|
+
"data-slot": "progress",
|
|
5086
|
+
"data-variant": "ring",
|
|
5087
|
+
role: "progressbar",
|
|
5088
|
+
"aria-valuemin": 0,
|
|
5089
|
+
"aria-valuemax": 100,
|
|
5090
|
+
"aria-valuenow": pct,
|
|
5091
|
+
className: cn("relative inline-grid place-items-center", className),
|
|
5092
|
+
style: { width: box, height: box }
|
|
5093
|
+
}, props), {
|
|
5094
|
+
children: [
|
|
5095
|
+
/* @__PURE__ */ jsxs22(
|
|
5096
|
+
"svg",
|
|
5097
|
+
{
|
|
5098
|
+
viewBox: `0 0 ${box} ${box}`,
|
|
5099
|
+
className: "absolute inset-0 -rotate-90",
|
|
5100
|
+
"aria-hidden": true,
|
|
5101
|
+
children: [
|
|
5102
|
+
/* @__PURE__ */ jsx41(
|
|
5103
|
+
"circle",
|
|
5104
|
+
{
|
|
5105
|
+
cx: box / 2,
|
|
5106
|
+
cy: box / 2,
|
|
5107
|
+
r,
|
|
5108
|
+
fill: "none",
|
|
5109
|
+
className: "stroke-border-default-default",
|
|
5110
|
+
strokeWidth: stroke
|
|
5111
|
+
}
|
|
5112
|
+
),
|
|
5113
|
+
pct > 0 && /* @__PURE__ */ jsx41(
|
|
5114
|
+
"circle",
|
|
5115
|
+
{
|
|
5116
|
+
"data-slot": "progress-ring-fill",
|
|
5117
|
+
cx: box / 2,
|
|
5118
|
+
cy: box / 2,
|
|
5119
|
+
r,
|
|
5120
|
+
fill: "none",
|
|
5121
|
+
className: cn(
|
|
5122
|
+
"stroke-background-brand-default",
|
|
5123
|
+
!timed && "transition-[stroke-dashoffset] duration-slow ease-linear"
|
|
5124
|
+
),
|
|
5125
|
+
strokeWidth: stroke,
|
|
5126
|
+
strokeLinecap: "round",
|
|
5127
|
+
strokeDasharray: circumference,
|
|
5128
|
+
strokeDashoffset: circumference * (1 - pct / 100)
|
|
5129
|
+
}
|
|
5130
|
+
)
|
|
5131
|
+
]
|
|
5132
|
+
}
|
|
5133
|
+
),
|
|
5134
|
+
content != null && /* @__PURE__ */ jsx41("span", { className: "type-progress-value relative text-text-prominent-default", children: content })
|
|
5135
|
+
]
|
|
5136
|
+
})
|
|
5137
|
+
);
|
|
5138
|
+
}
|
|
5139
|
+
const bar = /* @__PURE__ */ jsx41(
|
|
4981
5140
|
ProgressPrimitive.Root,
|
|
4982
5141
|
__spreadProps(__spreadValues({
|
|
4983
5142
|
"data-slot": "progress",
|
|
5143
|
+
"data-variant": "bar",
|
|
5144
|
+
value: pct,
|
|
4984
5145
|
className: cn(
|
|
4985
|
-
// One track spec, shared with Slider:
|
|
5146
|
+
// One track spec, shared with Slider: rounded-full, secondary
|
|
4986
5147
|
// surface, solid brand fill.
|
|
4987
|
-
"relative
|
|
4988
|
-
|
|
5148
|
+
"relative w-full overflow-hidden rounded-full bg-background-secondary-surface",
|
|
5149
|
+
BAR_HEIGHTS[size in BAR_HEIGHTS ? size : "md"],
|
|
5150
|
+
label == null && valueLabel == null && className
|
|
4989
5151
|
)
|
|
4990
5152
|
}, props), {
|
|
4991
5153
|
children: /* @__PURE__ */ jsx41(
|
|
4992
5154
|
ProgressPrimitive.Indicator,
|
|
4993
5155
|
{
|
|
4994
5156
|
"data-slot": "progress-indicator",
|
|
4995
|
-
className:
|
|
4996
|
-
|
|
5157
|
+
className: cn(
|
|
5158
|
+
"h-full w-full flex-1 rounded-full bg-background-brand-default",
|
|
5159
|
+
!timed && "transition-transform duration-slow ease-linear"
|
|
5160
|
+
),
|
|
5161
|
+
style: { transform: `translateX(-${100 - pct}%)` }
|
|
4997
5162
|
}
|
|
4998
5163
|
)
|
|
4999
5164
|
})
|
|
5000
5165
|
);
|
|
5166
|
+
if (label == null && valueLabel == null) return bar;
|
|
5167
|
+
return /* @__PURE__ */ jsxs22("div", { "data-slot": "progress-meter", className: cn("flex w-full flex-col gap-1.5", className), children: [
|
|
5168
|
+
/* @__PURE__ */ jsxs22("div", { className: "flex items-baseline justify-between gap-3", children: [
|
|
5169
|
+
label != null && /* @__PURE__ */ jsx41("span", { className: "type-progress-label text-text-prominent-default", children: label }),
|
|
5170
|
+
valueLabel != null && /* @__PURE__ */ jsx41("span", { className: "type-progress-label ml-auto text-text-subtle-default tabular-nums", children: valueLabel })
|
|
5171
|
+
] }),
|
|
5172
|
+
bar
|
|
5173
|
+
] });
|
|
5001
5174
|
}
|
|
5002
5175
|
|
|
5003
5176
|
// components/ui/profile-photo.tsx
|
|
5004
5177
|
import { Camera, User } from "lucide-react";
|
|
5005
|
-
import { jsx as jsx42, jsxs as
|
|
5178
|
+
import { jsx as jsx42, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
5006
5179
|
var BOX = 112;
|
|
5007
5180
|
var PHOTO = 96;
|
|
5008
5181
|
var STROKE = 5;
|
|
@@ -5029,7 +5202,7 @@ function ProfilePhoto(_a) {
|
|
|
5029
5202
|
]);
|
|
5030
5203
|
const pct = Math.min(100, Math.max(0, progress));
|
|
5031
5204
|
const complete = pct >= 100;
|
|
5032
|
-
return /* @__PURE__ */
|
|
5205
|
+
return /* @__PURE__ */ jsxs23(
|
|
5033
5206
|
"div",
|
|
5034
5207
|
__spreadProps(__spreadValues({
|
|
5035
5208
|
"data-slot": "profile-photo",
|
|
@@ -5039,7 +5212,7 @@ function ProfilePhoto(_a) {
|
|
|
5039
5212
|
style: { width: BOX, height: BOX }
|
|
5040
5213
|
}, props), {
|
|
5041
5214
|
children: [
|
|
5042
|
-
/* @__PURE__ */
|
|
5215
|
+
/* @__PURE__ */ jsxs23(
|
|
5043
5216
|
"svg",
|
|
5044
5217
|
{
|
|
5045
5218
|
viewBox: `0 0 ${BOX} ${BOX}`,
|
|
@@ -5143,7 +5316,7 @@ function RadioGroupItem(_a) {
|
|
|
5143
5316
|
__spreadProps(__spreadValues({
|
|
5144
5317
|
"data-slot": "radio-group-item",
|
|
5145
5318
|
className: cn(
|
|
5146
|
-
"aspect-square size-4 shrink-0 rounded-full border border-border-default-default bg-background-primary-surface
|
|
5319
|
+
"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-24 aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft",
|
|
5147
5320
|
className
|
|
5148
5321
|
)
|
|
5149
5322
|
}, props), {
|
|
@@ -5152,7 +5325,7 @@ function RadioGroupItem(_a) {
|
|
|
5152
5325
|
{
|
|
5153
5326
|
"data-slot": "radio-group-indicator",
|
|
5154
5327
|
className: "relative flex items-center justify-center",
|
|
5155
|
-
children: /* @__PURE__ */ jsx43(CircleIcon4, { className: "absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-
|
|
5328
|
+
children: /* @__PURE__ */ jsx43(CircleIcon4, { 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" })
|
|
5156
5329
|
}
|
|
5157
5330
|
)
|
|
5158
5331
|
})
|
|
@@ -5208,7 +5381,7 @@ function ResizableHandle(_a) {
|
|
|
5208
5381
|
|
|
5209
5382
|
// components/ui/scroll-area.tsx
|
|
5210
5383
|
import { ScrollArea as ScrollAreaPrimitive } from "radix-ui";
|
|
5211
|
-
import { jsx as jsx45, jsxs as
|
|
5384
|
+
import { jsx as jsx45, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
5212
5385
|
function ScrollArea(_a) {
|
|
5213
5386
|
var _b = _a, {
|
|
5214
5387
|
className,
|
|
@@ -5217,7 +5390,7 @@ function ScrollArea(_a) {
|
|
|
5217
5390
|
"className",
|
|
5218
5391
|
"children"
|
|
5219
5392
|
]);
|
|
5220
|
-
return /* @__PURE__ */
|
|
5393
|
+
return /* @__PURE__ */ jsxs24(
|
|
5221
5394
|
ScrollAreaPrimitive.Root,
|
|
5222
5395
|
__spreadProps(__spreadValues({
|
|
5223
5396
|
"data-slot": "scroll-area",
|
|
@@ -5272,7 +5445,7 @@ function ScrollBar(_a) {
|
|
|
5272
5445
|
// components/ui/sheet.tsx
|
|
5273
5446
|
import { XIcon as XIcon2 } from "lucide-react";
|
|
5274
5447
|
import { Dialog as SheetPrimitive } from "radix-ui";
|
|
5275
|
-
import { jsx as jsx46, jsxs as
|
|
5448
|
+
import { jsx as jsx46, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
5276
5449
|
function Sheet(_a) {
|
|
5277
5450
|
var props = __objRest(_a, []);
|
|
5278
5451
|
return /* @__PURE__ */ jsx46(SheetPrimitive.Root, __spreadValues({ "data-slot": "sheet" }, props));
|
|
@@ -5318,9 +5491,9 @@ function SheetContent(_a) {
|
|
|
5318
5491
|
"side",
|
|
5319
5492
|
"showCloseButton"
|
|
5320
5493
|
]);
|
|
5321
|
-
return /* @__PURE__ */
|
|
5494
|
+
return /* @__PURE__ */ jsxs25(SheetPortal, { children: [
|
|
5322
5495
|
/* @__PURE__ */ jsx46(SheetOverlay, {}),
|
|
5323
|
-
/* @__PURE__ */
|
|
5496
|
+
/* @__PURE__ */ jsxs25(
|
|
5324
5497
|
SheetPrimitive.Content,
|
|
5325
5498
|
__spreadProps(__spreadValues({
|
|
5326
5499
|
"data-slot": "sheet-content",
|
|
@@ -5335,10 +5508,16 @@ function SheetContent(_a) {
|
|
|
5335
5508
|
}, props), {
|
|
5336
5509
|
children: [
|
|
5337
5510
|
children,
|
|
5338
|
-
showCloseButton && /* @__PURE__ */
|
|
5339
|
-
|
|
5340
|
-
|
|
5341
|
-
|
|
5511
|
+
showCloseButton && /* @__PURE__ */ jsx46(SheetPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx46(
|
|
5512
|
+
NavigationButton,
|
|
5513
|
+
{
|
|
5514
|
+
"data-slot": "sheet-close",
|
|
5515
|
+
size: "sm",
|
|
5516
|
+
"aria-label": "Close",
|
|
5517
|
+
className: "absolute top-4 right-4",
|
|
5518
|
+
children: /* @__PURE__ */ jsx46(XIcon2, { className: "size-4" })
|
|
5519
|
+
}
|
|
5520
|
+
) })
|
|
5342
5521
|
]
|
|
5343
5522
|
})
|
|
5344
5523
|
)
|
|
@@ -5394,17 +5573,17 @@ function SheetDescription(_a) {
|
|
|
5394
5573
|
}
|
|
5395
5574
|
|
|
5396
5575
|
// components/ui/sidebar.tsx
|
|
5397
|
-
import * as
|
|
5576
|
+
import * as React13 from "react";
|
|
5398
5577
|
import { cva as cva13 } from "class-variance-authority";
|
|
5399
5578
|
import { PanelLeftIcon } from "lucide-react";
|
|
5400
5579
|
import { Slot as Slot8 } from "radix-ui";
|
|
5401
5580
|
|
|
5402
5581
|
// hooks/use-mobile.ts
|
|
5403
|
-
import * as
|
|
5582
|
+
import * as React11 from "react";
|
|
5404
5583
|
var MOBILE_BREAKPOINT = 768;
|
|
5405
5584
|
function useIsMobile() {
|
|
5406
|
-
const [isMobile, setIsMobile] =
|
|
5407
|
-
|
|
5585
|
+
const [isMobile, setIsMobile] = React11.useState(void 0);
|
|
5586
|
+
React11.useEffect(() => {
|
|
5408
5587
|
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
5409
5588
|
const onChange = () => {
|
|
5410
5589
|
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
@@ -5434,10 +5613,10 @@ function Skeleton(_a) {
|
|
|
5434
5613
|
}
|
|
5435
5614
|
|
|
5436
5615
|
// components/ui/tooltip.tsx
|
|
5437
|
-
import * as
|
|
5616
|
+
import * as React12 from "react";
|
|
5438
5617
|
import { Tooltip as TooltipPrimitive } from "radix-ui";
|
|
5439
|
-
import { jsx as jsx48, jsxs as
|
|
5440
|
-
var TooltipModeContext =
|
|
5618
|
+
import { jsx as jsx48, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
5619
|
+
var TooltipModeContext = React12.createContext("tooltip");
|
|
5441
5620
|
function TooltipProvider(_a) {
|
|
5442
5621
|
var _b = _a, {
|
|
5443
5622
|
delayDuration = 0
|
|
@@ -5471,7 +5650,7 @@ function TooltipTrigger(_a) {
|
|
|
5471
5650
|
} = _b, props = __objRest(_b, [
|
|
5472
5651
|
"children"
|
|
5473
5652
|
]);
|
|
5474
|
-
const mode =
|
|
5653
|
+
const mode = React12.useContext(TooltipModeContext);
|
|
5475
5654
|
if (mode === "drawer") {
|
|
5476
5655
|
return /* @__PURE__ */ jsx48(DrawerTrigger, __spreadProps(__spreadValues({ "data-slot": "tooltip-trigger" }, props), { children }));
|
|
5477
5656
|
}
|
|
@@ -5493,9 +5672,9 @@ function TooltipContent(_a) {
|
|
|
5493
5672
|
"closeLabel",
|
|
5494
5673
|
"children"
|
|
5495
5674
|
]);
|
|
5496
|
-
const mode =
|
|
5675
|
+
const mode = React12.useContext(TooltipModeContext);
|
|
5497
5676
|
if (mode === "drawer") {
|
|
5498
|
-
return /* @__PURE__ */
|
|
5677
|
+
return /* @__PURE__ */ jsxs26(DrawerContent, { "data-slot": "tooltip-content", "data-variant": variant, children: [
|
|
5499
5678
|
/* @__PURE__ */ jsx48(DrawerHeader, { children: /* @__PURE__ */ jsx48(DrawerTitle, { children: title }) }),
|
|
5500
5679
|
/* @__PURE__ */ jsx48("div", { className: cn("type-drawer-description p-4 text-text-subtle-default", className), children }),
|
|
5501
5680
|
/* @__PURE__ */ jsx48(DrawerFooter, { children: /* @__PURE__ */ jsx48(DrawerClose, { asChild: true, children: /* @__PURE__ */ jsx48(Button, { variant: "primary", size: "md", children: closeLabel }) }) })
|
|
@@ -5503,7 +5682,7 @@ function TooltipContent(_a) {
|
|
|
5503
5682
|
}
|
|
5504
5683
|
const surfaceClasses = variant === "inverse" ? "border border-border-default-default bg-background-primary-surface text-text-prominent-default" : "bg-background-inverse-surface text-text-prominent-inverse";
|
|
5505
5684
|
const arrowClasses = variant === "inverse" ? "fill-background-primary-surface" : "fill-background-inverse-surface";
|
|
5506
|
-
return /* @__PURE__ */ jsx48(TooltipPrimitive.Portal, { children: /* @__PURE__ */
|
|
5685
|
+
return /* @__PURE__ */ jsx48(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs26(
|
|
5507
5686
|
TooltipPrimitive.Content,
|
|
5508
5687
|
__spreadProps(__spreadValues({
|
|
5509
5688
|
"data-slot": "tooltip-content",
|
|
@@ -5524,16 +5703,16 @@ function TooltipContent(_a) {
|
|
|
5524
5703
|
}
|
|
5525
5704
|
|
|
5526
5705
|
// components/ui/sidebar.tsx
|
|
5527
|
-
import { jsx as jsx49, jsxs as
|
|
5706
|
+
import { jsx as jsx49, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
5528
5707
|
var SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
5529
5708
|
var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
5530
5709
|
var SIDEBAR_WIDTH = "16rem";
|
|
5531
5710
|
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
5532
5711
|
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
5533
5712
|
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
5534
|
-
var SidebarContext =
|
|
5713
|
+
var SidebarContext = React13.createContext(null);
|
|
5535
5714
|
function useSidebar() {
|
|
5536
|
-
const context =
|
|
5715
|
+
const context = React13.useContext(SidebarContext);
|
|
5537
5716
|
if (!context) {
|
|
5538
5717
|
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
5539
5718
|
}
|
|
@@ -5556,10 +5735,10 @@ function SidebarProvider(_a) {
|
|
|
5556
5735
|
"children"
|
|
5557
5736
|
]);
|
|
5558
5737
|
const isMobile = useIsMobile();
|
|
5559
|
-
const [openMobile, setOpenMobile] =
|
|
5560
|
-
const [_open, _setOpen] =
|
|
5738
|
+
const [openMobile, setOpenMobile] = React13.useState(false);
|
|
5739
|
+
const [_open, _setOpen] = React13.useState(defaultOpen);
|
|
5561
5740
|
const open = openProp != null ? openProp : _open;
|
|
5562
|
-
const setOpen =
|
|
5741
|
+
const setOpen = React13.useCallback(
|
|
5563
5742
|
(value) => {
|
|
5564
5743
|
const openState = typeof value === "function" ? value(open) : value;
|
|
5565
5744
|
if (setOpenProp) {
|
|
@@ -5571,10 +5750,10 @@ function SidebarProvider(_a) {
|
|
|
5571
5750
|
},
|
|
5572
5751
|
[setOpenProp, open]
|
|
5573
5752
|
);
|
|
5574
|
-
const toggleSidebar =
|
|
5753
|
+
const toggleSidebar = React13.useCallback(() => {
|
|
5575
5754
|
return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
|
|
5576
5755
|
}, [isMobile, setOpen, setOpenMobile]);
|
|
5577
|
-
|
|
5756
|
+
React13.useEffect(() => {
|
|
5578
5757
|
const handleKeyDown = (event) => {
|
|
5579
5758
|
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
5580
5759
|
event.preventDefault();
|
|
@@ -5585,7 +5764,7 @@ function SidebarProvider(_a) {
|
|
|
5585
5764
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
5586
5765
|
}, [toggleSidebar]);
|
|
5587
5766
|
const state = open ? "expanded" : "collapsed";
|
|
5588
|
-
const contextValue =
|
|
5767
|
+
const contextValue = React13.useMemo(
|
|
5589
5768
|
() => ({
|
|
5590
5769
|
state,
|
|
5591
5770
|
open,
|
|
@@ -5644,7 +5823,7 @@ function Sidebar(_a) {
|
|
|
5644
5823
|
);
|
|
5645
5824
|
}
|
|
5646
5825
|
if (isMobile) {
|
|
5647
|
-
return /* @__PURE__ */ jsx49(Sheet, __spreadProps(__spreadValues({ open: openMobile, onOpenChange: setOpenMobile }, props), { children: /* @__PURE__ */
|
|
5826
|
+
return /* @__PURE__ */ jsx49(Sheet, __spreadProps(__spreadValues({ open: openMobile, onOpenChange: setOpenMobile }, props), { children: /* @__PURE__ */ jsxs27(
|
|
5648
5827
|
SheetContent,
|
|
5649
5828
|
{
|
|
5650
5829
|
"data-sidebar": "sidebar",
|
|
@@ -5656,7 +5835,7 @@ function Sidebar(_a) {
|
|
|
5656
5835
|
},
|
|
5657
5836
|
side,
|
|
5658
5837
|
children: [
|
|
5659
|
-
/* @__PURE__ */
|
|
5838
|
+
/* @__PURE__ */ jsxs27(SheetHeader, { className: "sr-only", children: [
|
|
5660
5839
|
/* @__PURE__ */ jsx49(SheetTitle, { children: "Sidebar" }),
|
|
5661
5840
|
/* @__PURE__ */ jsx49(SheetDescription, { children: "Displays the mobile sidebar." })
|
|
5662
5841
|
] }),
|
|
@@ -5665,7 +5844,7 @@ function Sidebar(_a) {
|
|
|
5665
5844
|
}
|
|
5666
5845
|
) }));
|
|
5667
5846
|
}
|
|
5668
|
-
return /* @__PURE__ */
|
|
5847
|
+
return /* @__PURE__ */ jsxs27(
|
|
5669
5848
|
"div",
|
|
5670
5849
|
{
|
|
5671
5850
|
className: "group peer hidden text-text-prominent-default md:block",
|
|
@@ -5723,7 +5902,7 @@ function SidebarTrigger(_a) {
|
|
|
5723
5902
|
"onClick"
|
|
5724
5903
|
]);
|
|
5725
5904
|
const { toggleSidebar } = useSidebar();
|
|
5726
|
-
return /* @__PURE__ */
|
|
5905
|
+
return /* @__PURE__ */ jsxs27(
|
|
5727
5906
|
Button,
|
|
5728
5907
|
__spreadProps(__spreadValues({
|
|
5729
5908
|
"data-sidebar": "trigger",
|
|
@@ -6006,7 +6185,7 @@ function SidebarMenuButton(_a) {
|
|
|
6006
6185
|
children: tooltip
|
|
6007
6186
|
};
|
|
6008
6187
|
}
|
|
6009
|
-
return /* @__PURE__ */
|
|
6188
|
+
return /* @__PURE__ */ jsxs27(Tooltip, { children: [
|
|
6010
6189
|
/* @__PURE__ */ jsx49(TooltipTrigger, { asChild: true, children: button }),
|
|
6011
6190
|
/* @__PURE__ */ jsx49(
|
|
6012
6191
|
TooltipContent,
|
|
@@ -6080,7 +6259,7 @@ function SidebarMenuSkeleton(_a) {
|
|
|
6080
6259
|
"showIcon"
|
|
6081
6260
|
]);
|
|
6082
6261
|
const width = "70%";
|
|
6083
|
-
return /* @__PURE__ */
|
|
6262
|
+
return /* @__PURE__ */ jsxs27(
|
|
6084
6263
|
"div",
|
|
6085
6264
|
__spreadProps(__spreadValues({
|
|
6086
6265
|
"data-slot": "sidebar-menu-skeleton",
|
|
@@ -6172,9 +6351,9 @@ function SidebarMenuSubButton(_a) {
|
|
|
6172
6351
|
}
|
|
6173
6352
|
|
|
6174
6353
|
// components/ui/slider.tsx
|
|
6175
|
-
import * as
|
|
6354
|
+
import * as React14 from "react";
|
|
6176
6355
|
import { Slider as SliderPrimitive } from "radix-ui";
|
|
6177
|
-
import { jsx as jsx50, jsxs as
|
|
6356
|
+
import { jsx as jsx50, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
6178
6357
|
function Slider(_a) {
|
|
6179
6358
|
var _b = _a, {
|
|
6180
6359
|
className,
|
|
@@ -6189,11 +6368,11 @@ function Slider(_a) {
|
|
|
6189
6368
|
"min",
|
|
6190
6369
|
"max"
|
|
6191
6370
|
]);
|
|
6192
|
-
const _values =
|
|
6371
|
+
const _values = React14.useMemo(
|
|
6193
6372
|
() => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
|
|
6194
6373
|
[value, defaultValue, min, max]
|
|
6195
6374
|
);
|
|
6196
|
-
return /* @__PURE__ */
|
|
6375
|
+
return /* @__PURE__ */ jsxs28(
|
|
6197
6376
|
SliderPrimitive.Root,
|
|
6198
6377
|
__spreadProps(__spreadValues({
|
|
6199
6378
|
"data-slot": "slider",
|
|
@@ -6288,10 +6467,186 @@ var Toaster = (_a) => {
|
|
|
6288
6467
|
);
|
|
6289
6468
|
};
|
|
6290
6469
|
|
|
6470
|
+
// components/ui/slide-to-confirm.tsx
|
|
6471
|
+
import * as React15 from "react";
|
|
6472
|
+
import { ArrowRight as ArrowRight2, Check } from "lucide-react";
|
|
6473
|
+
import { jsx as jsx52, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
6474
|
+
var CONFIRM_AT = 0.9;
|
|
6475
|
+
var HANDLE = 46;
|
|
6476
|
+
var INSET2 = 5;
|
|
6477
|
+
function SlideToConfirm(_a) {
|
|
6478
|
+
var _b = _a, {
|
|
6479
|
+
onConfirm,
|
|
6480
|
+
label = "Slide to confirm",
|
|
6481
|
+
confirmedLabel = "Confirmed",
|
|
6482
|
+
disabled = false,
|
|
6483
|
+
confirmed: controlledConfirmed,
|
|
6484
|
+
className
|
|
6485
|
+
} = _b, props = __objRest(_b, [
|
|
6486
|
+
"onConfirm",
|
|
6487
|
+
"label",
|
|
6488
|
+
"confirmedLabel",
|
|
6489
|
+
"disabled",
|
|
6490
|
+
"confirmed",
|
|
6491
|
+
"className"
|
|
6492
|
+
]);
|
|
6493
|
+
const trackRef = React15.useRef(null);
|
|
6494
|
+
const [dragX, setDragX] = React15.useState(0);
|
|
6495
|
+
const [dragging, setDragging] = React15.useState(false);
|
|
6496
|
+
const [trackWidth, setTrackWidth] = React15.useState(0);
|
|
6497
|
+
const [internalConfirmed, setInternalConfirmed] = React15.useState(false);
|
|
6498
|
+
const confirmed = controlledConfirmed != null ? controlledConfirmed : internalConfirmed;
|
|
6499
|
+
const firedRef = React15.useRef(false);
|
|
6500
|
+
React15.useEffect(() => {
|
|
6501
|
+
if (controlledConfirmed === false) {
|
|
6502
|
+
setInternalConfirmed(false);
|
|
6503
|
+
setDragX(0);
|
|
6504
|
+
firedRef.current = false;
|
|
6505
|
+
}
|
|
6506
|
+
}, [controlledConfirmed]);
|
|
6507
|
+
React15.useEffect(() => {
|
|
6508
|
+
const track = trackRef.current;
|
|
6509
|
+
if (!track) return;
|
|
6510
|
+
const ro = new ResizeObserver(() => setTrackWidth(track.clientWidth));
|
|
6511
|
+
ro.observe(track);
|
|
6512
|
+
setTrackWidth(track.clientWidth);
|
|
6513
|
+
return () => ro.disconnect();
|
|
6514
|
+
}, []);
|
|
6515
|
+
const maxTravel = Math.max(trackWidth - HANDLE - INSET2 * 2, 0);
|
|
6516
|
+
function confirm() {
|
|
6517
|
+
if (firedRef.current) return;
|
|
6518
|
+
firedRef.current = true;
|
|
6519
|
+
setInternalConfirmed(true);
|
|
6520
|
+
onConfirm == null ? void 0 : onConfirm();
|
|
6521
|
+
}
|
|
6522
|
+
function handlePointerDown(e) {
|
|
6523
|
+
if (disabled || confirmed) return;
|
|
6524
|
+
e.target.setPointerCapture(e.pointerId);
|
|
6525
|
+
setDragging(true);
|
|
6526
|
+
}
|
|
6527
|
+
function handlePointerMove(e) {
|
|
6528
|
+
if (!dragging || disabled || confirmed) return;
|
|
6529
|
+
const track = trackRef.current;
|
|
6530
|
+
if (!track) return;
|
|
6531
|
+
const rect = track.getBoundingClientRect();
|
|
6532
|
+
const x = e.clientX - rect.left - INSET2 - HANDLE / 2;
|
|
6533
|
+
setDragX(Math.min(Math.max(x, 0), maxTravel));
|
|
6534
|
+
}
|
|
6535
|
+
function handlePointerUp() {
|
|
6536
|
+
if (!dragging) return;
|
|
6537
|
+
setDragging(false);
|
|
6538
|
+
if (dragX >= maxTravel * CONFIRM_AT) {
|
|
6539
|
+
setDragX(maxTravel);
|
|
6540
|
+
confirm();
|
|
6541
|
+
} else {
|
|
6542
|
+
setDragX(0);
|
|
6543
|
+
}
|
|
6544
|
+
}
|
|
6545
|
+
function handleKeyDown(e) {
|
|
6546
|
+
if (disabled || confirmed) return;
|
|
6547
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
6548
|
+
e.preventDefault();
|
|
6549
|
+
setDragX(maxTravel);
|
|
6550
|
+
confirm();
|
|
6551
|
+
}
|
|
6552
|
+
}
|
|
6553
|
+
const fillWidth = dragX === 0 ? 0 : dragX + HANDLE;
|
|
6554
|
+
const revealWidth = INSET2 + dragX + HANDLE / 2;
|
|
6555
|
+
const spring = "duration-slow ease-(--primitive-ease-spring)";
|
|
6556
|
+
return /* @__PURE__ */ jsxs29(
|
|
6557
|
+
"div",
|
|
6558
|
+
__spreadProps(__spreadValues({
|
|
6559
|
+
ref: trackRef,
|
|
6560
|
+
"data-slot": "slide-to-confirm",
|
|
6561
|
+
"data-confirmed": confirmed || void 0,
|
|
6562
|
+
role: "button",
|
|
6563
|
+
tabIndex: disabled ? -1 : 0,
|
|
6564
|
+
"aria-disabled": disabled || void 0,
|
|
6565
|
+
"aria-label": typeof label === "string" ? label : void 0,
|
|
6566
|
+
onKeyDown: handleKeyDown,
|
|
6567
|
+
className: cn(
|
|
6568
|
+
"relative h-14 w-full touch-none overflow-hidden rounded-full bg-background-secondary-surface select-none",
|
|
6569
|
+
disabled && "pointer-events-none opacity-24",
|
|
6570
|
+
"outline-none focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong",
|
|
6571
|
+
className
|
|
6572
|
+
)
|
|
6573
|
+
}, props), {
|
|
6574
|
+
children: [
|
|
6575
|
+
/* @__PURE__ */ jsx52("span", { className: "absolute inset-0 grid place-items-center", children: /* @__PURE__ */ jsx52("span", { className: "type-slide-to-confirm text-text-subtle-default", children: label }) }),
|
|
6576
|
+
/* @__PURE__ */ jsx52(
|
|
6577
|
+
"span",
|
|
6578
|
+
{
|
|
6579
|
+
"aria-hidden": true,
|
|
6580
|
+
"data-slot": "slide-to-confirm-progress",
|
|
6581
|
+
className: cn(
|
|
6582
|
+
"absolute rounded-full bg-background-brand-default",
|
|
6583
|
+
// Confirmed floods the whole track; mid-drag it sits inside the
|
|
6584
|
+
// handle's inset so the two read as one continuous brand shape.
|
|
6585
|
+
confirmed ? "inset-0" : "top-(--inset) bottom-(--inset) left-(--inset)",
|
|
6586
|
+
!dragging && cn("transition-[width]", spring)
|
|
6587
|
+
),
|
|
6588
|
+
style: {
|
|
6589
|
+
"--inset": `${INSET2}px`,
|
|
6590
|
+
width: confirmed ? "100%" : `${fillWidth}px`
|
|
6591
|
+
}
|
|
6592
|
+
}
|
|
6593
|
+
),
|
|
6594
|
+
/* @__PURE__ */ jsx52(
|
|
6595
|
+
"span",
|
|
6596
|
+
{
|
|
6597
|
+
"aria-hidden": true,
|
|
6598
|
+
"data-slot": "slide-to-confirm-reveal",
|
|
6599
|
+
className: cn(
|
|
6600
|
+
"absolute inset-0 grid place-items-center",
|
|
6601
|
+
!dragging && cn("transition-[clip-path]", spring)
|
|
6602
|
+
),
|
|
6603
|
+
style: {
|
|
6604
|
+
clipPath: confirmed ? "inset(0 round 9999px)" : `inset(0 calc(100% - ${revealWidth}px) 0 0 round 9999px)`
|
|
6605
|
+
},
|
|
6606
|
+
children: /* @__PURE__ */ jsx52("span", { className: "type-slide-to-confirm flex items-center gap-2 text-text-on-brand-static", children: confirmed ? confirmedLabel : label })
|
|
6607
|
+
}
|
|
6608
|
+
),
|
|
6609
|
+
/* @__PURE__ */ jsx52(
|
|
6610
|
+
"span",
|
|
6611
|
+
{
|
|
6612
|
+
"data-slot": "slide-to-confirm-handle",
|
|
6613
|
+
"data-confirmed": confirmed || void 0,
|
|
6614
|
+
onPointerDown: handlePointerDown,
|
|
6615
|
+
onPointerMove: handlePointerMove,
|
|
6616
|
+
onPointerUp: handlePointerUp,
|
|
6617
|
+
onPointerCancel: handlePointerUp,
|
|
6618
|
+
className: cn(
|
|
6619
|
+
"absolute top-1/2 z-20 grid size-11.5 place-items-center rounded-full",
|
|
6620
|
+
confirmed ? (
|
|
6621
|
+
// Landed: an inverted disc on the flooded track, glow dropped
|
|
6622
|
+
// — nothing left to drag, so no grab cursor.
|
|
6623
|
+
"bg-background-static-white text-text-brand-default"
|
|
6624
|
+
) : "cursor-grab bg-background-brand-default text-text-on-brand-static [box-shadow:var(--shadow-brand-glow)] active:cursor-grabbing",
|
|
6625
|
+
!dragging && cn("transition-[translate]", spring),
|
|
6626
|
+
// Idle nudge, per the Refined spec: the handle drifts 10px and
|
|
6627
|
+
// back. Safe because the sweep is 0-width at rest, so there is
|
|
6628
|
+
// nothing behind the handle to expose. Rest only, and reduced
|
|
6629
|
+
// motion turns it off.
|
|
6630
|
+
!dragging && !disabled && !confirmed && dragX === 0 && "animate-slide-confirm-nudge motion-reduce:animate-none"
|
|
6631
|
+
),
|
|
6632
|
+
style: {
|
|
6633
|
+
left: `${INSET2}px`,
|
|
6634
|
+
// Confirmed pins it to the far end even when the gesture came from
|
|
6635
|
+
// the keyboard, where dragX never moved.
|
|
6636
|
+
translate: `${confirmed ? maxTravel : dragX}px -50%`
|
|
6637
|
+
},
|
|
6638
|
+
children: confirmed ? /* @__PURE__ */ jsx52(Check, { className: "size-4.5 [animation:slide-confirm-pop_var(--motion-pop)_var(--primitive-ease-overshoot)]" }) : /* @__PURE__ */ jsx52(ArrowRight2, { className: "size-4.5" })
|
|
6639
|
+
}
|
|
6640
|
+
)
|
|
6641
|
+
]
|
|
6642
|
+
})
|
|
6643
|
+
);
|
|
6644
|
+
}
|
|
6645
|
+
|
|
6291
6646
|
// components/ui/stepper.tsx
|
|
6292
|
-
import * as
|
|
6647
|
+
import * as React16 from "react";
|
|
6293
6648
|
import { Minus, Plus } from "lucide-react";
|
|
6294
|
-
import { jsx as
|
|
6649
|
+
import { jsx as jsx53, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
6295
6650
|
function clamp(value, min, max) {
|
|
6296
6651
|
return Math.min(Math.max(value, min), max);
|
|
6297
6652
|
}
|
|
@@ -6303,19 +6658,14 @@ function getDecimalPlaces(n) {
|
|
|
6303
6658
|
function formatValue(value, decimalPlaces) {
|
|
6304
6659
|
return decimalPlaces > 0 ? value.toFixed(decimalPlaces) : String(value);
|
|
6305
6660
|
}
|
|
6306
|
-
var stepperSizeConfig = {
|
|
6307
|
-
sm: { container: "h-8", buttonSize: "icon-xs", iconClass: "size-3" },
|
|
6308
|
-
md: { container: "h-10", buttonSize: "icon-xs", iconClass: "size-3.5" },
|
|
6309
|
-
lg: { container: "h-12", buttonSize: "icon-sm", iconClass: "size-4" }
|
|
6310
|
-
};
|
|
6311
6661
|
function Stepper({
|
|
6662
|
+
label,
|
|
6312
6663
|
value: controlledValue,
|
|
6313
6664
|
defaultValue = 0,
|
|
6314
6665
|
onValueChange,
|
|
6315
6666
|
min = -Infinity,
|
|
6316
6667
|
max = Infinity,
|
|
6317
6668
|
step = 1,
|
|
6318
|
-
size = "md",
|
|
6319
6669
|
disabled,
|
|
6320
6670
|
placeholder,
|
|
6321
6671
|
className,
|
|
@@ -6323,18 +6673,17 @@ function Stepper({
|
|
|
6323
6673
|
name,
|
|
6324
6674
|
"aria-label": ariaLabel
|
|
6325
6675
|
}) {
|
|
6326
|
-
const { container, buttonSize, iconClass } = stepperSizeConfig[size];
|
|
6327
6676
|
const isControlled = controlledValue !== void 0;
|
|
6328
|
-
const [internalValue, setInternalValue] =
|
|
6677
|
+
const [internalValue, setInternalValue] = React16.useState(
|
|
6329
6678
|
clamp(defaultValue, min, max)
|
|
6330
6679
|
);
|
|
6331
6680
|
const currentValue = isControlled ? controlledValue : internalValue;
|
|
6332
6681
|
const decimalPlaces = getDecimalPlaces(step);
|
|
6333
|
-
const [displayString, setDisplayString] =
|
|
6682
|
+
const [displayString, setDisplayString] = React16.useState(
|
|
6334
6683
|
formatValue(currentValue, decimalPlaces)
|
|
6335
6684
|
);
|
|
6336
|
-
const [isFocused, setIsFocused] =
|
|
6337
|
-
|
|
6685
|
+
const [isFocused, setIsFocused] = React16.useState(false);
|
|
6686
|
+
React16.useEffect(() => {
|
|
6338
6687
|
if (!isFocused) {
|
|
6339
6688
|
setDisplayString(formatValue(currentValue, decimalPlaces));
|
|
6340
6689
|
}
|
|
@@ -6384,68 +6733,293 @@ function Stepper({
|
|
|
6384
6733
|
}
|
|
6385
6734
|
}
|
|
6386
6735
|
}
|
|
6387
|
-
return /* @__PURE__ */
|
|
6388
|
-
|
|
6736
|
+
return /* @__PURE__ */ jsxs30(
|
|
6737
|
+
"div",
|
|
6389
6738
|
{
|
|
6390
6739
|
"data-slot": "stepper",
|
|
6391
6740
|
"data-disabled": disabled || void 0,
|
|
6392
|
-
className: cn(
|
|
6741
|
+
className: cn(
|
|
6742
|
+
"flex w-full items-center justify-between gap-4",
|
|
6743
|
+
// No opacity here on purpose. The +/- are Buttons and already carry
|
|
6744
|
+
// their own disabled treatment; dimming the wrapper too multiplied
|
|
6745
|
+
// with theirs (24% × 24% ≈ 6%) and made them all but invisible.
|
|
6746
|
+
// Disabled text takes the disabled ink token instead of a wash.
|
|
6747
|
+
disabled && "pointer-events-none",
|
|
6748
|
+
className
|
|
6749
|
+
),
|
|
6393
6750
|
children: [
|
|
6394
|
-
/* @__PURE__ */
|
|
6395
|
-
|
|
6751
|
+
/* @__PURE__ */ jsx53(
|
|
6752
|
+
Button,
|
|
6396
6753
|
{
|
|
6397
|
-
|
|
6398
|
-
variant: "
|
|
6754
|
+
type: "button",
|
|
6755
|
+
variant: "frosted",
|
|
6756
|
+
size: "icon-lg",
|
|
6399
6757
|
onClick: handleDecrement,
|
|
6400
6758
|
disabled: disabled || currentValue <= min,
|
|
6401
6759
|
"aria-label": "Decrease value",
|
|
6402
|
-
children: /* @__PURE__ */
|
|
6403
|
-
}
|
|
6404
|
-
) }),
|
|
6405
|
-
/* @__PURE__ */ jsx52(
|
|
6406
|
-
InputGroupInput,
|
|
6407
|
-
{
|
|
6408
|
-
type: "text",
|
|
6409
|
-
inputMode: "numeric",
|
|
6410
|
-
role: "spinbutton",
|
|
6411
|
-
"aria-valuemin": min === -Infinity ? void 0 : min,
|
|
6412
|
-
"aria-valuemax": max === Infinity ? void 0 : max,
|
|
6413
|
-
"aria-valuenow": currentValue,
|
|
6414
|
-
"aria-label": ariaLabel,
|
|
6415
|
-
value: displayString,
|
|
6416
|
-
onChange: handleInputChange,
|
|
6417
|
-
onBlur: handleBlur,
|
|
6418
|
-
onFocus: handleFocus,
|
|
6419
|
-
onKeyDown: handleKeyDown,
|
|
6420
|
-
disabled,
|
|
6421
|
-
placeholder,
|
|
6422
|
-
id,
|
|
6423
|
-
name,
|
|
6424
|
-
className: "text-center [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none"
|
|
6760
|
+
children: /* @__PURE__ */ jsx53(Minus, {})
|
|
6425
6761
|
}
|
|
6426
6762
|
),
|
|
6427
|
-
/* @__PURE__ */
|
|
6428
|
-
/* @__PURE__ */
|
|
6429
|
-
|
|
6430
|
-
|
|
6763
|
+
/* @__PURE__ */ jsxs30("div", { className: "flex min-w-0 flex-col items-center", children: [
|
|
6764
|
+
label != null && /* @__PURE__ */ jsx53(
|
|
6765
|
+
"span",
|
|
6766
|
+
{
|
|
6767
|
+
className: cn(
|
|
6768
|
+
"type-stepper-stake-label",
|
|
6769
|
+
disabled ? "text-text-disabled-default" : "text-text-subtle-default"
|
|
6770
|
+
),
|
|
6771
|
+
children: label
|
|
6772
|
+
}
|
|
6773
|
+
),
|
|
6774
|
+
/* @__PURE__ */ jsx53(
|
|
6775
|
+
"input",
|
|
6431
6776
|
{
|
|
6432
|
-
|
|
6433
|
-
|
|
6434
|
-
|
|
6435
|
-
|
|
6436
|
-
"aria-
|
|
6437
|
-
|
|
6777
|
+
type: "text",
|
|
6778
|
+
inputMode: "decimal",
|
|
6779
|
+
role: "spinbutton",
|
|
6780
|
+
"aria-valuemin": min === -Infinity ? void 0 : min,
|
|
6781
|
+
"aria-valuemax": max === Infinity ? void 0 : max,
|
|
6782
|
+
"aria-valuenow": currentValue,
|
|
6783
|
+
"aria-label": ariaLabel,
|
|
6784
|
+
value: displayString,
|
|
6785
|
+
onChange: handleInputChange,
|
|
6786
|
+
onBlur: handleBlur,
|
|
6787
|
+
onFocus: handleFocus,
|
|
6788
|
+
onKeyDown: handleKeyDown,
|
|
6789
|
+
disabled,
|
|
6790
|
+
placeholder,
|
|
6791
|
+
id,
|
|
6792
|
+
name,
|
|
6793
|
+
size: Math.max(displayString.length, 1),
|
|
6794
|
+
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"
|
|
6438
6795
|
}
|
|
6439
6796
|
)
|
|
6440
|
-
] })
|
|
6797
|
+
] }),
|
|
6798
|
+
/* @__PURE__ */ jsx53(
|
|
6799
|
+
Button,
|
|
6800
|
+
{
|
|
6801
|
+
type: "button",
|
|
6802
|
+
variant: "frosted",
|
|
6803
|
+
size: "icon-lg",
|
|
6804
|
+
onClick: handleIncrement,
|
|
6805
|
+
disabled: disabled || currentValue >= max,
|
|
6806
|
+
"aria-label": "Increase value",
|
|
6807
|
+
children: /* @__PURE__ */ jsx53(Plus, {})
|
|
6808
|
+
}
|
|
6809
|
+
)
|
|
6441
6810
|
]
|
|
6442
6811
|
}
|
|
6443
6812
|
);
|
|
6444
6813
|
}
|
|
6445
6814
|
|
|
6815
|
+
// components/ui/steps.tsx
|
|
6816
|
+
import * as React17 from "react";
|
|
6817
|
+
import { Check as Check2 } from "lucide-react";
|
|
6818
|
+
import { jsx as jsx54, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
6819
|
+
var StepsContext = React17.createContext({ shape: "circle", orientation: "horizontal", size: "md" });
|
|
6820
|
+
function Steps(_a) {
|
|
6821
|
+
var _b = _a, {
|
|
6822
|
+
shape = "circle",
|
|
6823
|
+
orientation = "horizontal",
|
|
6824
|
+
size = "md",
|
|
6825
|
+
className,
|
|
6826
|
+
children
|
|
6827
|
+
} = _b, props = __objRest(_b, [
|
|
6828
|
+
"shape",
|
|
6829
|
+
"orientation",
|
|
6830
|
+
"size",
|
|
6831
|
+
"className",
|
|
6832
|
+
"children"
|
|
6833
|
+
]);
|
|
6834
|
+
const steps = React17.Children.toArray(children);
|
|
6835
|
+
return /* @__PURE__ */ jsx54(StepsContext.Provider, { value: { shape, orientation, size }, children: /* @__PURE__ */ jsx54(
|
|
6836
|
+
"ol",
|
|
6837
|
+
__spreadProps(__spreadValues({
|
|
6838
|
+
"data-slot": "steps",
|
|
6839
|
+
"data-shape": shape,
|
|
6840
|
+
"data-orientation": orientation,
|
|
6841
|
+
"data-size": size,
|
|
6842
|
+
className: cn(
|
|
6843
|
+
"flex list-none",
|
|
6844
|
+
orientation === "horizontal" ? "flex-row items-start" : "flex-col",
|
|
6845
|
+
className
|
|
6846
|
+
)
|
|
6847
|
+
}, props), {
|
|
6848
|
+
children: steps.map(
|
|
6849
|
+
(child, index) => React17.isValidElement(child) ? React17.cloneElement(child, {
|
|
6850
|
+
index: index + 1,
|
|
6851
|
+
isFirst: index === 0,
|
|
6852
|
+
isLast: index === steps.length - 1
|
|
6853
|
+
}) : child
|
|
6854
|
+
)
|
|
6855
|
+
})
|
|
6856
|
+
) });
|
|
6857
|
+
}
|
|
6858
|
+
function Step(_a) {
|
|
6859
|
+
var _b = _a, {
|
|
6860
|
+
state = "upcoming",
|
|
6861
|
+
icon,
|
|
6862
|
+
title,
|
|
6863
|
+
description,
|
|
6864
|
+
tag,
|
|
6865
|
+
index,
|
|
6866
|
+
isFirst = false,
|
|
6867
|
+
isLast = false,
|
|
6868
|
+
className
|
|
6869
|
+
} = _b, props = __objRest(_b, [
|
|
6870
|
+
"state",
|
|
6871
|
+
"icon",
|
|
6872
|
+
"title",
|
|
6873
|
+
"description",
|
|
6874
|
+
"tag",
|
|
6875
|
+
"index",
|
|
6876
|
+
"isFirst",
|
|
6877
|
+
"isLast",
|
|
6878
|
+
"className"
|
|
6879
|
+
]);
|
|
6880
|
+
const { shape, orientation, size } = React17.useContext(StepsContext);
|
|
6881
|
+
const horizontal = orientation === "horizontal";
|
|
6882
|
+
const sm = size === "sm";
|
|
6883
|
+
const indicator = /* @__PURE__ */ jsx54(
|
|
6884
|
+
"span",
|
|
6885
|
+
{
|
|
6886
|
+
"data-slot": "step-indicator",
|
|
6887
|
+
className: cn(
|
|
6888
|
+
"type-steps-indicator z-10 grid shrink-0 place-items-center",
|
|
6889
|
+
sm ? "size-6" : "size-8",
|
|
6890
|
+
shape === "circle" ? "rounded-full" : "rounded-md",
|
|
6891
|
+
state === "done" && "bg-background-success-solid text-text-on-status-static",
|
|
6892
|
+
state === "active" && "bg-background-brand-default text-text-on-brand-static",
|
|
6893
|
+
state === "upcoming" && "bg-background-secondary-surface text-text-subtle-default",
|
|
6894
|
+
"[&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
6895
|
+
sm ? "[&_svg:not([class*='size-'])]:size-3.5" : "[&_svg:not([class*='size-'])]:size-4"
|
|
6896
|
+
),
|
|
6897
|
+
children: state === "done" ? /* @__PURE__ */ jsx54(Check2, {}) : icon != null ? icon : index
|
|
6898
|
+
}
|
|
6899
|
+
);
|
|
6900
|
+
if (horizontal) {
|
|
6901
|
+
return /* @__PURE__ */ jsxs31(
|
|
6902
|
+
"li",
|
|
6903
|
+
__spreadProps(__spreadValues({
|
|
6904
|
+
"data-slot": "step",
|
|
6905
|
+
"data-state": state,
|
|
6906
|
+
"aria-current": state === "active" ? "step" : void 0,
|
|
6907
|
+
className: cn("flex min-w-0 flex-1 flex-col items-center", className)
|
|
6908
|
+
}, props), {
|
|
6909
|
+
children: [
|
|
6910
|
+
/* @__PURE__ */ jsxs31("div", { className: "flex w-full items-center", children: [
|
|
6911
|
+
/* @__PURE__ */ jsx54(
|
|
6912
|
+
"span",
|
|
6913
|
+
{
|
|
6914
|
+
"aria-hidden": true,
|
|
6915
|
+
"data-slot": "step-connector",
|
|
6916
|
+
className: cn("h-px flex-1", !isFirst && "bg-border-neutral-default")
|
|
6917
|
+
}
|
|
6918
|
+
),
|
|
6919
|
+
/* @__PURE__ */ jsx54("span", { className: cn(!isFirst && "w-1", "shrink-0") }),
|
|
6920
|
+
indicator,
|
|
6921
|
+
/* @__PURE__ */ jsx54("span", { className: cn(!isLast && "w-1", "shrink-0") }),
|
|
6922
|
+
/* @__PURE__ */ jsx54(
|
|
6923
|
+
"span",
|
|
6924
|
+
{
|
|
6925
|
+
"aria-hidden": true,
|
|
6926
|
+
"data-slot": "step-connector",
|
|
6927
|
+
className: cn("h-px flex-1", !isLast && "bg-border-neutral-default")
|
|
6928
|
+
}
|
|
6929
|
+
)
|
|
6930
|
+
] }),
|
|
6931
|
+
(title != null || description != null) && /* @__PURE__ */ jsxs31(
|
|
6932
|
+
"div",
|
|
6933
|
+
{
|
|
6934
|
+
"data-slot": "step-body",
|
|
6935
|
+
className: cn(
|
|
6936
|
+
"flex min-w-0 flex-col items-center px-1 text-center",
|
|
6937
|
+
sm ? "mt-1" : "mt-1.5"
|
|
6938
|
+
),
|
|
6939
|
+
children: [
|
|
6940
|
+
title != null && /* @__PURE__ */ jsx54(
|
|
6941
|
+
"span",
|
|
6942
|
+
{
|
|
6943
|
+
className: cn(
|
|
6944
|
+
"type-steps-title",
|
|
6945
|
+
state === "upcoming" ? "text-text-subtle-default" : "text-text-prominent-default"
|
|
6946
|
+
),
|
|
6947
|
+
children: title
|
|
6948
|
+
}
|
|
6949
|
+
),
|
|
6950
|
+
tag != null && /* @__PURE__ */ jsx54("span", { className: "type-steps-tag whitespace-nowrap text-text-brand-selected", children: tag }),
|
|
6951
|
+
description != null && /* @__PURE__ */ jsx54("span", { className: "type-steps-description text-text-subtle-default", children: description })
|
|
6952
|
+
]
|
|
6953
|
+
}
|
|
6954
|
+
)
|
|
6955
|
+
]
|
|
6956
|
+
})
|
|
6957
|
+
);
|
|
6958
|
+
}
|
|
6959
|
+
const hasBody = title != null || description != null;
|
|
6960
|
+
return /* @__PURE__ */ jsxs31(
|
|
6961
|
+
"li",
|
|
6962
|
+
__spreadProps(__spreadValues({
|
|
6963
|
+
"data-slot": "step",
|
|
6964
|
+
"data-state": state,
|
|
6965
|
+
"aria-current": state === "active" ? "step" : void 0,
|
|
6966
|
+
className: cn(
|
|
6967
|
+
"flex min-w-0",
|
|
6968
|
+
sm ? "gap-2.5" : "gap-3",
|
|
6969
|
+
// Minimum row rhythm so title-only steps still leave a visible
|
|
6970
|
+
// stretch of rail; description steps outgrow it naturally, and the
|
|
6971
|
+
// last step needs none (no connector below it).
|
|
6972
|
+
!isLast && (sm ? "min-h-11" : "min-h-14"),
|
|
6973
|
+
className
|
|
6974
|
+
)
|
|
6975
|
+
}, props), {
|
|
6976
|
+
children: [
|
|
6977
|
+
/* @__PURE__ */ jsxs31("div", { className: "flex flex-col items-center self-stretch", children: [
|
|
6978
|
+
indicator,
|
|
6979
|
+
!isLast && /* @__PURE__ */ jsx54(
|
|
6980
|
+
"span",
|
|
6981
|
+
{
|
|
6982
|
+
"aria-hidden": true,
|
|
6983
|
+
"data-slot": "step-connector",
|
|
6984
|
+
className: "mt-1 mb-1 w-px flex-1 bg-border-neutral-default"
|
|
6985
|
+
}
|
|
6986
|
+
)
|
|
6987
|
+
] }),
|
|
6988
|
+
/* @__PURE__ */ jsxs31(
|
|
6989
|
+
"div",
|
|
6990
|
+
{
|
|
6991
|
+
"data-slot": "step-body",
|
|
6992
|
+
className: cn("flex min-w-0 flex-col", !isLast && (sm ? "pb-4" : "pb-6")),
|
|
6993
|
+
children: [
|
|
6994
|
+
title != null && /* @__PURE__ */ jsxs31(
|
|
6995
|
+
"span",
|
|
6996
|
+
{
|
|
6997
|
+
className: cn(
|
|
6998
|
+
"type-steps-title",
|
|
6999
|
+
state === "upcoming" ? "text-text-subtle-default" : "text-text-prominent-default"
|
|
7000
|
+
),
|
|
7001
|
+
children: [
|
|
7002
|
+
title,
|
|
7003
|
+
tag != null && /* @__PURE__ */ jsx54("span", { className: "type-steps-tag ml-2 whitespace-nowrap text-text-brand-selected", children: tag })
|
|
7004
|
+
]
|
|
7005
|
+
}
|
|
7006
|
+
),
|
|
7007
|
+
description != null && /* @__PURE__ */ jsx54("span", { className: "type-steps-description text-text-subtle-default", children: description }),
|
|
7008
|
+
!hasBody && /* @__PURE__ */ jsxs31("span", { className: "sr-only", children: [
|
|
7009
|
+
"Step ",
|
|
7010
|
+
index
|
|
7011
|
+
] })
|
|
7012
|
+
]
|
|
7013
|
+
}
|
|
7014
|
+
)
|
|
7015
|
+
]
|
|
7016
|
+
})
|
|
7017
|
+
);
|
|
7018
|
+
}
|
|
7019
|
+
|
|
6446
7020
|
// components/ui/switch.tsx
|
|
6447
7021
|
import { Switch as SwitchPrimitive } from "radix-ui";
|
|
6448
|
-
import { jsx as
|
|
7022
|
+
import { jsx as jsx55 } from "react/jsx-runtime";
|
|
6449
7023
|
function Switch(_a) {
|
|
6450
7024
|
var _b = _a, {
|
|
6451
7025
|
className,
|
|
@@ -6454,7 +7028,7 @@ function Switch(_a) {
|
|
|
6454
7028
|
"className",
|
|
6455
7029
|
"size"
|
|
6456
7030
|
]);
|
|
6457
|
-
return /* @__PURE__ */
|
|
7031
|
+
return /* @__PURE__ */ jsx55(
|
|
6458
7032
|
SwitchPrimitive.Root,
|
|
6459
7033
|
__spreadProps(__spreadValues({
|
|
6460
7034
|
"data-slot": "switch",
|
|
@@ -6464,7 +7038,7 @@ function Switch(_a) {
|
|
|
6464
7038
|
className
|
|
6465
7039
|
)
|
|
6466
7040
|
}, props), {
|
|
6467
|
-
children: /* @__PURE__ */
|
|
7041
|
+
children: /* @__PURE__ */ jsx55(
|
|
6468
7042
|
SwitchPrimitive.Thumb,
|
|
6469
7043
|
{
|
|
6470
7044
|
"data-slot": "switch-thumb",
|
|
@@ -6478,15 +7052,15 @@ function Switch(_a) {
|
|
|
6478
7052
|
}
|
|
6479
7053
|
|
|
6480
7054
|
// components/ui/table.tsx
|
|
6481
|
-
import { jsx as
|
|
7055
|
+
import { jsx as jsx56 } from "react/jsx-runtime";
|
|
6482
7056
|
function Table(_a) {
|
|
6483
7057
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
6484
|
-
return /* @__PURE__ */
|
|
7058
|
+
return /* @__PURE__ */ jsx56(
|
|
6485
7059
|
"div",
|
|
6486
7060
|
{
|
|
6487
7061
|
"data-slot": "table-container",
|
|
6488
7062
|
className: "relative w-full overflow-x-auto",
|
|
6489
|
-
children: /* @__PURE__ */
|
|
7063
|
+
children: /* @__PURE__ */ jsx56(
|
|
6490
7064
|
"table",
|
|
6491
7065
|
__spreadValues({
|
|
6492
7066
|
"data-slot": "table",
|
|
@@ -6498,7 +7072,7 @@ function Table(_a) {
|
|
|
6498
7072
|
}
|
|
6499
7073
|
function TableHeader(_a) {
|
|
6500
7074
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
6501
|
-
return /* @__PURE__ */
|
|
7075
|
+
return /* @__PURE__ */ jsx56(
|
|
6502
7076
|
"thead",
|
|
6503
7077
|
__spreadValues({
|
|
6504
7078
|
"data-slot": "table-header",
|
|
@@ -6508,7 +7082,7 @@ function TableHeader(_a) {
|
|
|
6508
7082
|
}
|
|
6509
7083
|
function TableBody(_a) {
|
|
6510
7084
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
6511
|
-
return /* @__PURE__ */
|
|
7085
|
+
return /* @__PURE__ */ jsx56(
|
|
6512
7086
|
"tbody",
|
|
6513
7087
|
__spreadValues({
|
|
6514
7088
|
"data-slot": "table-body",
|
|
@@ -6518,7 +7092,7 @@ function TableBody(_a) {
|
|
|
6518
7092
|
}
|
|
6519
7093
|
function TableFooter(_a) {
|
|
6520
7094
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
6521
|
-
return /* @__PURE__ */
|
|
7095
|
+
return /* @__PURE__ */ jsx56(
|
|
6522
7096
|
"tfoot",
|
|
6523
7097
|
__spreadValues({
|
|
6524
7098
|
"data-slot": "table-footer",
|
|
@@ -6531,7 +7105,7 @@ function TableFooter(_a) {
|
|
|
6531
7105
|
}
|
|
6532
7106
|
function TableRow(_a) {
|
|
6533
7107
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
6534
|
-
return /* @__PURE__ */
|
|
7108
|
+
return /* @__PURE__ */ jsx56(
|
|
6535
7109
|
"tr",
|
|
6536
7110
|
__spreadValues({
|
|
6537
7111
|
"data-slot": "table-row",
|
|
@@ -6544,7 +7118,7 @@ function TableRow(_a) {
|
|
|
6544
7118
|
}
|
|
6545
7119
|
function TableHead(_a) {
|
|
6546
7120
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
6547
|
-
return /* @__PURE__ */
|
|
7121
|
+
return /* @__PURE__ */ jsx56(
|
|
6548
7122
|
"th",
|
|
6549
7123
|
__spreadValues({
|
|
6550
7124
|
"data-slot": "table-head",
|
|
@@ -6557,7 +7131,7 @@ function TableHead(_a) {
|
|
|
6557
7131
|
}
|
|
6558
7132
|
function TableCell(_a) {
|
|
6559
7133
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
6560
|
-
return /* @__PURE__ */
|
|
7134
|
+
return /* @__PURE__ */ jsx56(
|
|
6561
7135
|
"td",
|
|
6562
7136
|
__spreadValues({
|
|
6563
7137
|
"data-slot": "table-cell",
|
|
@@ -6574,7 +7148,7 @@ function TableCaption(_a) {
|
|
|
6574
7148
|
} = _b, props = __objRest(_b, [
|
|
6575
7149
|
"className"
|
|
6576
7150
|
]);
|
|
6577
|
-
return /* @__PURE__ */
|
|
7151
|
+
return /* @__PURE__ */ jsx56(
|
|
6578
7152
|
"caption",
|
|
6579
7153
|
__spreadValues({
|
|
6580
7154
|
"data-slot": "table-caption",
|
|
@@ -6586,7 +7160,7 @@ function TableCaption(_a) {
|
|
|
6586
7160
|
// components/ui/tabs.tsx
|
|
6587
7161
|
import { cva as cva14 } from "class-variance-authority";
|
|
6588
7162
|
import { Tabs as TabsPrimitive } from "radix-ui";
|
|
6589
|
-
import { jsx as
|
|
7163
|
+
import { jsx as jsx57 } from "react/jsx-runtime";
|
|
6590
7164
|
function Tabs(_a) {
|
|
6591
7165
|
var _b = _a, {
|
|
6592
7166
|
className,
|
|
@@ -6595,7 +7169,7 @@ function Tabs(_a) {
|
|
|
6595
7169
|
"className",
|
|
6596
7170
|
"orientation"
|
|
6597
7171
|
]);
|
|
6598
|
-
return /* @__PURE__ */
|
|
7172
|
+
return /* @__PURE__ */ jsx57(
|
|
6599
7173
|
TabsPrimitive.Root,
|
|
6600
7174
|
__spreadValues({
|
|
6601
7175
|
"data-slot": "tabs",
|
|
@@ -6638,7 +7212,7 @@ function TabsList(_a) {
|
|
|
6638
7212
|
"variant",
|
|
6639
7213
|
"size"
|
|
6640
7214
|
]);
|
|
6641
|
-
return /* @__PURE__ */
|
|
7215
|
+
return /* @__PURE__ */ jsx57(
|
|
6642
7216
|
TabsPrimitive.List,
|
|
6643
7217
|
__spreadValues({
|
|
6644
7218
|
"data-slot": "tabs-list",
|
|
@@ -6656,7 +7230,7 @@ function TabsTrigger(_a) {
|
|
|
6656
7230
|
"className",
|
|
6657
7231
|
"iconPosition"
|
|
6658
7232
|
]);
|
|
6659
|
-
return /* @__PURE__ */
|
|
7233
|
+
return /* @__PURE__ */ jsx57(
|
|
6660
7234
|
TabsPrimitive.Trigger,
|
|
6661
7235
|
__spreadValues({
|
|
6662
7236
|
"data-slot": "tabs-trigger",
|
|
@@ -6682,7 +7256,7 @@ function TabsContent(_a) {
|
|
|
6682
7256
|
} = _b, props = __objRest(_b, [
|
|
6683
7257
|
"className"
|
|
6684
7258
|
]);
|
|
6685
|
-
return /* @__PURE__ */
|
|
7259
|
+
return /* @__PURE__ */ jsx57(
|
|
6686
7260
|
TabsPrimitive.Content,
|
|
6687
7261
|
__spreadValues({
|
|
6688
7262
|
"data-slot": "tabs-content",
|
|
@@ -6694,15 +7268,11 @@ function TabsContent(_a) {
|
|
|
6694
7268
|
// components/ui/toggle.tsx
|
|
6695
7269
|
import { cva as cva15 } from "class-variance-authority";
|
|
6696
7270
|
import { Toggle as TogglePrimitive } from "radix-ui";
|
|
6697
|
-
import { jsx as
|
|
7271
|
+
import { jsx as jsx58 } from "react/jsx-runtime";
|
|
6698
7272
|
var toggleVariants = cva15(
|
|
6699
|
-
"type-toggle inline-flex items-center justify-center gap-2 rounded-md whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-background-
|
|
7273
|
+
"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-24 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",
|
|
6700
7274
|
{
|
|
6701
7275
|
variants: {
|
|
6702
|
-
variant: {
|
|
6703
|
-
default: "bg-transparent",
|
|
6704
|
-
outline: "border border-border-prominent-default bg-transparent text-text-prominent-default hover:bg-background-hover-default"
|
|
6705
|
-
},
|
|
6706
7276
|
size: {
|
|
6707
7277
|
default: "h-10 min-w-10 px-2.5",
|
|
6708
7278
|
sm: "h-8 min-w-8 px-1.5",
|
|
@@ -6710,7 +7280,6 @@ var toggleVariants = cva15(
|
|
|
6710
7280
|
}
|
|
6711
7281
|
},
|
|
6712
7282
|
defaultVariants: {
|
|
6713
|
-
variant: "default",
|
|
6714
7283
|
size: "default"
|
|
6715
7284
|
}
|
|
6716
7285
|
}
|
|
@@ -6718,50 +7287,44 @@ var toggleVariants = cva15(
|
|
|
6718
7287
|
function Toggle(_a) {
|
|
6719
7288
|
var _b = _a, {
|
|
6720
7289
|
className,
|
|
6721
|
-
variant,
|
|
6722
7290
|
size
|
|
6723
7291
|
} = _b, props = __objRest(_b, [
|
|
6724
7292
|
"className",
|
|
6725
|
-
"variant",
|
|
6726
7293
|
"size"
|
|
6727
7294
|
]);
|
|
6728
|
-
return /* @__PURE__ */
|
|
7295
|
+
return /* @__PURE__ */ jsx58(
|
|
6729
7296
|
TogglePrimitive.Root,
|
|
6730
7297
|
__spreadValues({
|
|
6731
7298
|
"data-slot": "toggle",
|
|
6732
|
-
className: cn(toggleVariants({
|
|
7299
|
+
className: cn(toggleVariants({ size, className }))
|
|
6733
7300
|
}, props)
|
|
6734
7301
|
);
|
|
6735
7302
|
}
|
|
6736
7303
|
|
|
6737
7304
|
// components/ui/toggle-group.tsx
|
|
6738
|
-
import * as
|
|
7305
|
+
import * as React18 from "react";
|
|
6739
7306
|
import { ToggleGroup as ToggleGroupPrimitive } from "radix-ui";
|
|
6740
|
-
import { jsx as
|
|
6741
|
-
var ToggleGroupContext =
|
|
7307
|
+
import { jsx as jsx59 } from "react/jsx-runtime";
|
|
7308
|
+
var ToggleGroupContext = React18.createContext({
|
|
6742
7309
|
size: "default",
|
|
6743
|
-
variant: "default",
|
|
6744
7310
|
spacing: 0
|
|
6745
7311
|
});
|
|
6746
7312
|
function ToggleGroup(_a) {
|
|
6747
7313
|
var _b = _a, {
|
|
6748
7314
|
className,
|
|
6749
|
-
variant,
|
|
6750
7315
|
size,
|
|
6751
7316
|
spacing = 0,
|
|
6752
7317
|
children
|
|
6753
7318
|
} = _b, props = __objRest(_b, [
|
|
6754
7319
|
"className",
|
|
6755
|
-
"variant",
|
|
6756
7320
|
"size",
|
|
6757
7321
|
"spacing",
|
|
6758
7322
|
"children"
|
|
6759
7323
|
]);
|
|
6760
|
-
return /* @__PURE__ */
|
|
7324
|
+
return /* @__PURE__ */ jsx59(
|
|
6761
7325
|
ToggleGroupPrimitive.Root,
|
|
6762
7326
|
__spreadProps(__spreadValues({
|
|
6763
7327
|
"data-slot": "toggle-group",
|
|
6764
|
-
"data-variant": variant,
|
|
6765
7328
|
"data-size": size,
|
|
6766
7329
|
"data-spacing": spacing,
|
|
6767
7330
|
style: { "--gap": spacing },
|
|
@@ -6770,7 +7333,7 @@ function ToggleGroup(_a) {
|
|
|
6770
7333
|
className
|
|
6771
7334
|
)
|
|
6772
7335
|
}, props), {
|
|
6773
|
-
children: /* @__PURE__ */
|
|
7336
|
+
children: /* @__PURE__ */ jsx59(ToggleGroupContext.Provider, { value: { size, spacing }, children })
|
|
6774
7337
|
})
|
|
6775
7338
|
);
|
|
6776
7339
|
}
|
|
@@ -6778,29 +7341,27 @@ function ToggleGroupItem(_a) {
|
|
|
6778
7341
|
var _b = _a, {
|
|
6779
7342
|
className,
|
|
6780
7343
|
children,
|
|
6781
|
-
variant,
|
|
6782
7344
|
size
|
|
6783
7345
|
} = _b, props = __objRest(_b, [
|
|
6784
7346
|
"className",
|
|
6785
7347
|
"children",
|
|
6786
|
-
"variant",
|
|
6787
7348
|
"size"
|
|
6788
7349
|
]);
|
|
6789
|
-
const context =
|
|
6790
|
-
return /* @__PURE__ */
|
|
7350
|
+
const context = React18.useContext(ToggleGroupContext);
|
|
7351
|
+
return /* @__PURE__ */ jsx59(
|
|
6791
7352
|
ToggleGroupPrimitive.Item,
|
|
6792
7353
|
__spreadProps(__spreadValues({
|
|
6793
7354
|
"data-slot": "toggle-group-item",
|
|
6794
|
-
"data-variant": context.variant || variant,
|
|
6795
7355
|
"data-size": context.size || size,
|
|
6796
7356
|
"data-spacing": context.spacing,
|
|
6797
7357
|
className: cn(
|
|
6798
7358
|
toggleVariants({
|
|
6799
|
-
variant: context.variant || variant,
|
|
6800
7359
|
size: context.size || size
|
|
6801
7360
|
}),
|
|
6802
7361
|
"w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10",
|
|
6803
|
-
|
|
7362
|
+
// Joined (spacing 0): shared hairlines — every item after the first
|
|
7363
|
+
// drops its left border; the on item paints solid over its cell.
|
|
7364
|
+
"data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:first:rounded-l-md data-[spacing=0]:last:rounded-r-md data-[spacing=0]:border-l-0 data-[spacing=0]:first:border-l",
|
|
6804
7365
|
className
|
|
6805
7366
|
)
|
|
6806
7367
|
}, props), {
|
|
@@ -6810,7 +7371,7 @@ function ToggleGroupItem(_a) {
|
|
|
6810
7371
|
}
|
|
6811
7372
|
|
|
6812
7373
|
// components/blocks/result-block.tsx
|
|
6813
|
-
import { Fragment as Fragment3, jsx as
|
|
7374
|
+
import { Fragment as Fragment3, jsx as jsx60, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
6814
7375
|
var THUMBS_UP_DATA_URL = "data:image/webp;base64,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";
|
|
6815
7376
|
var THUMBS_DOWN_DATA_URL = "data:image/webp;base64,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";
|
|
6816
7377
|
function ResultBlock({
|
|
@@ -6827,9 +7388,9 @@ function ResultBlock({
|
|
|
6827
7388
|
const signedAmount = isWin ? `+${amount}` : `\u2212${amount}`;
|
|
6828
7389
|
const amountColorClass = isWin ? "text-semantic-win" : "text-semantic-loss";
|
|
6829
7390
|
const haloBgClass = isWin ? "bg-semantic-win" : "bg-semantic-loss";
|
|
6830
|
-
return /* @__PURE__ */
|
|
6831
|
-
/* @__PURE__ */
|
|
6832
|
-
/* @__PURE__ */
|
|
7391
|
+
return /* @__PURE__ */ jsxs32(Card, { className: "w-80 shrink-0 overflow-hidden rounded-md shadow-sm px-5 py-5 items-center gap-3", children: [
|
|
7392
|
+
/* @__PURE__ */ jsxs32("div", { className: "relative flex items-center justify-center py-2", children: [
|
|
7393
|
+
/* @__PURE__ */ jsx60(
|
|
6833
7394
|
"span",
|
|
6834
7395
|
{
|
|
6835
7396
|
"aria-hidden": true,
|
|
@@ -6837,7 +7398,7 @@ function ResultBlock({
|
|
|
6837
7398
|
className: `absolute size-24 rounded-full blur-2xl opacity-20 ${haloBgClass}`
|
|
6838
7399
|
}
|
|
6839
7400
|
),
|
|
6840
|
-
/* @__PURE__ */
|
|
7401
|
+
/* @__PURE__ */ jsx60(
|
|
6841
7402
|
"img",
|
|
6842
7403
|
{
|
|
6843
7404
|
"data-results-motion": isWin ? "icon-win" : "icon-loss",
|
|
@@ -6847,28 +7408,28 @@ function ResultBlock({
|
|
|
6847
7408
|
}
|
|
6848
7409
|
)
|
|
6849
7410
|
] }),
|
|
6850
|
-
/* @__PURE__ */
|
|
6851
|
-
/* @__PURE__ */
|
|
6852
|
-
/* @__PURE__ */
|
|
6853
|
-
/* @__PURE__ */
|
|
7411
|
+
/* @__PURE__ */ jsx60("p", { className: "text-lg font-semibold text-on-prominent", children: titleText }),
|
|
7412
|
+
/* @__PURE__ */ jsxs32("p", { className: `flex items-baseline gap-1.5 ${amountColorClass}`, children: [
|
|
7413
|
+
/* @__PURE__ */ jsx60("span", { className: "font-display text-4xl font-semibold tabular-nums tracking-tight", children: signedAmount }),
|
|
7414
|
+
/* @__PURE__ */ jsx60("span", { className: "text-lg font-semibold", children: currency })
|
|
6854
7415
|
] }),
|
|
6855
|
-
/* @__PURE__ */
|
|
6856
|
-
/* @__PURE__ */
|
|
7416
|
+
/* @__PURE__ */ jsxs32("div", { className: "flex items-center gap-2", children: [
|
|
7417
|
+
/* @__PURE__ */ jsxs32(Badge, { variant: "tint-neutral", size: "sm", children: [
|
|
6857
7418
|
contractLabel,
|
|
6858
|
-
pickedDigit !== void 0 && /* @__PURE__ */
|
|
6859
|
-
/* @__PURE__ */
|
|
6860
|
-
/* @__PURE__ */
|
|
7419
|
+
pickedDigit !== void 0 && /* @__PURE__ */ jsxs32(Fragment3, { children: [
|
|
7420
|
+
/* @__PURE__ */ jsx60("span", { "aria-hidden": true, className: "h-3 w-px bg-border-prominent/40 mx-1" }),
|
|
7421
|
+
/* @__PURE__ */ jsx60("span", { className: "tabular-nums", children: pickedDigit })
|
|
6861
7422
|
] })
|
|
6862
7423
|
] }),
|
|
6863
|
-
/* @__PURE__ */
|
|
7424
|
+
/* @__PURE__ */ jsx60(Badge, { variant: "tint-neutral", size: "sm", children: duration })
|
|
6864
7425
|
] }),
|
|
6865
|
-
/* @__PURE__ */
|
|
6866
|
-
ctaMode === "next-round" && /* @__PURE__ */
|
|
6867
|
-
ctaMode === "go-again" && /* @__PURE__ */
|
|
6868
|
-
ctaMode === "conversion" && /* @__PURE__ */
|
|
6869
|
-
/* @__PURE__ */
|
|
6870
|
-
/* @__PURE__ */
|
|
6871
|
-
/* @__PURE__ */
|
|
7426
|
+
/* @__PURE__ */ jsxs32("div", { className: "w-full pt-2", children: [
|
|
7427
|
+
ctaMode === "next-round" && /* @__PURE__ */ jsx60(Button, { className: "w-full", children: "Next round" }),
|
|
7428
|
+
ctaMode === "go-again" && /* @__PURE__ */ jsx60(Button, { className: "w-full", children: "Go again" }),
|
|
7429
|
+
ctaMode === "conversion" && /* @__PURE__ */ jsxs32("div", { className: "w-full flex flex-col gap-3", children: [
|
|
7430
|
+
/* @__PURE__ */ jsx60("p", { className: "text-center text-base font-semibold text-on-prominent", children: "Ready to play for real?" }),
|
|
7431
|
+
/* @__PURE__ */ jsx60(Button, { className: "w-full", children: "Deposit now" }),
|
|
7432
|
+
/* @__PURE__ */ jsx60(Button, { variant: "secondary", className: "w-full", children: "Stay in demo" })
|
|
6872
7433
|
] })
|
|
6873
7434
|
] })
|
|
6874
7435
|
] });
|
|
@@ -6879,21 +7440,21 @@ function ResultDialog({
|
|
|
6879
7440
|
primaryLabel,
|
|
6880
7441
|
secondaryLabel
|
|
6881
7442
|
}) {
|
|
6882
|
-
return /* @__PURE__ */
|
|
6883
|
-
/* @__PURE__ */
|
|
6884
|
-
/* @__PURE__ */
|
|
6885
|
-
/* @__PURE__ */
|
|
7443
|
+
return /* @__PURE__ */ jsxs32(Card, { className: "w-80 shrink-0 overflow-hidden rounded-md shadow-sm px-5 py-6 items-center gap-4", children: [
|
|
7444
|
+
/* @__PURE__ */ jsxs32("div", { className: "flex flex-col items-center gap-2 text-center", children: [
|
|
7445
|
+
/* @__PURE__ */ jsx60("p", { className: "text-lg font-semibold text-on-prominent", children: title }),
|
|
7446
|
+
/* @__PURE__ */ jsx60("p", { className: "text-sm text-on-subtle", children: body })
|
|
6886
7447
|
] }),
|
|
6887
|
-
/* @__PURE__ */
|
|
6888
|
-
/* @__PURE__ */
|
|
6889
|
-
/* @__PURE__ */
|
|
7448
|
+
/* @__PURE__ */ jsxs32("div", { className: "w-full flex flex-col gap-2", children: [
|
|
7449
|
+
/* @__PURE__ */ jsx60(Button, { className: "w-full", children: primaryLabel }),
|
|
7450
|
+
/* @__PURE__ */ jsx60(Button, { variant: "secondary", className: "w-full", children: secondaryLabel })
|
|
6890
7451
|
] })
|
|
6891
7452
|
] });
|
|
6892
7453
|
}
|
|
6893
7454
|
|
|
6894
7455
|
// components/blocks/header-navigation-block.tsx
|
|
6895
7456
|
import { ArrowLeft as ArrowLeft2, History } from "lucide-react";
|
|
6896
|
-
import { jsx as
|
|
7457
|
+
import { jsx as jsx61, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
6897
7458
|
function HeaderNavigationBlock({
|
|
6898
7459
|
onBack,
|
|
6899
7460
|
badge,
|
|
@@ -6902,15 +7463,15 @@ function HeaderNavigationBlock({
|
|
|
6902
7463
|
actions
|
|
6903
7464
|
}) {
|
|
6904
7465
|
var _a;
|
|
6905
|
-
return /* @__PURE__ */
|
|
6906
|
-
onBack && /* @__PURE__ */
|
|
6907
|
-
/* @__PURE__ */
|
|
6908
|
-
badge && /* @__PURE__ */
|
|
6909
|
-
/* @__PURE__ */
|
|
6910
|
-
/* @__PURE__ */
|
|
7466
|
+
return /* @__PURE__ */ jsx61("div", { className: "w-full min-w-80 max-w-layout-diagram-small rounded-md overflow-hidden bg-prominent", children: /* @__PURE__ */ jsxs33("header", { className: "flex items-center gap-2 border-b border-border-subtle bg-prominent px-layout-margin-inline py-3", children: [
|
|
7467
|
+
onBack && /* @__PURE__ */ jsx61(NavigationButton, { type: "button", size: "md", "aria-label": "Back", onClick: onBack, children: /* @__PURE__ */ jsx61(ArrowLeft2, { className: "size-5" }) }),
|
|
7468
|
+
/* @__PURE__ */ jsxs33("div", { className: "flex min-w-0 flex-1 items-center justify-center gap-2", children: [
|
|
7469
|
+
badge && /* @__PURE__ */ jsx61(Badge, { variant: (_a = badge.variant) != null ? _a : "tint-warning", size: "sm", children: badge.label }),
|
|
7470
|
+
/* @__PURE__ */ jsx61("span", { className: "font-display font-semibold tabular-nums text-on-prominent", children: balance.amount }),
|
|
7471
|
+
/* @__PURE__ */ jsx61("span", { className: "text-sm text-on-subtle", children: balance.currency })
|
|
6911
7472
|
] }),
|
|
6912
|
-
/* @__PURE__ */
|
|
6913
|
-
history && /* @__PURE__ */
|
|
7473
|
+
/* @__PURE__ */ jsxs33("div", { className: "flex shrink-0 items-center gap-1", children: [
|
|
7474
|
+
history && /* @__PURE__ */ jsx61(HistoryButton, __spreadValues({}, history)),
|
|
6914
7475
|
actions
|
|
6915
7476
|
] })
|
|
6916
7477
|
] }) });
|
|
@@ -6923,9 +7484,9 @@ function HistoryButton({
|
|
|
6923
7484
|
const show = typeof count === "number" && count > 0;
|
|
6924
7485
|
const label = show ? count > 99 ? "99+" : String(count) : null;
|
|
6925
7486
|
const ariaLabel = ariaLabelOverride != null ? ariaLabelOverride : show ? `Open history, ${count} new` : "Open history";
|
|
6926
|
-
return /* @__PURE__ */
|
|
6927
|
-
/* @__PURE__ */
|
|
6928
|
-
show && /* @__PURE__ */
|
|
7487
|
+
return /* @__PURE__ */ jsxs33("div", { className: "relative inline-flex", children: [
|
|
7488
|
+
/* @__PURE__ */ jsx61(NavigationButton, { type: "button", size: "md", "aria-label": ariaLabel, onClick, children: /* @__PURE__ */ jsx61(History, { className: "size-5" }) }),
|
|
7489
|
+
show && /* @__PURE__ */ jsx61(
|
|
6929
7490
|
"span",
|
|
6930
7491
|
{
|
|
6931
7492
|
"aria-hidden": true,
|
|
@@ -6939,7 +7500,7 @@ function HistoryButton({
|
|
|
6939
7500
|
// components/blocks/faq-block.tsx
|
|
6940
7501
|
import { Plus as Plus2 } from "lucide-react";
|
|
6941
7502
|
import { Accordion as AccordionPrimitive2 } from "radix-ui";
|
|
6942
|
-
import { jsx as
|
|
7503
|
+
import { jsx as jsx62, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
6943
7504
|
function FAQBlock({
|
|
6944
7505
|
eyebrow = "FAQ",
|
|
6945
7506
|
title = "Frequently asked questions",
|
|
@@ -6951,34 +7512,34 @@ function FAQBlock({
|
|
|
6951
7512
|
}) {
|
|
6952
7513
|
var _a, _b;
|
|
6953
7514
|
if (layout === "two-column") {
|
|
6954
|
-
return /* @__PURE__ */
|
|
6955
|
-
/* @__PURE__ */
|
|
6956
|
-
/* @__PURE__ */
|
|
6957
|
-
/* @__PURE__ */
|
|
6958
|
-
intro && /* @__PURE__ */
|
|
7515
|
+
return /* @__PURE__ */ jsx62("div", { className: "@container w-full", children: /* @__PURE__ */ jsxs34("div", { className: "flex flex-col @[600px]:flex-row gap-8 @[600px]:gap-12", children: [
|
|
7516
|
+
/* @__PURE__ */ jsxs34("div", { className: "flex flex-col gap-4 flex-1 @[600px]:max-w-xs", children: [
|
|
7517
|
+
/* @__PURE__ */ jsx62("span", { className: "text-xs font-body font-semibold tracking-widest uppercase text-on-subtle", children: eyebrow }),
|
|
7518
|
+
/* @__PURE__ */ jsx62("h2", { className: "text-4xl @[600px]:text-6xl font-semibold font-display text-on-prominent tracking-tight", children: title }),
|
|
7519
|
+
intro && /* @__PURE__ */ jsx62("p", { className: "text-base font-body text-on-subtle", children: intro })
|
|
6959
7520
|
] }),
|
|
6960
|
-
/* @__PURE__ */
|
|
7521
|
+
/* @__PURE__ */ jsx62("div", { className: "flex-1", children: /* @__PURE__ */ jsx62(
|
|
6961
7522
|
Accordion,
|
|
6962
7523
|
{
|
|
6963
7524
|
type: "single",
|
|
6964
7525
|
collapsible: true,
|
|
6965
7526
|
defaultValue: defaultValue != null ? defaultValue : (_a = items[0]) == null ? void 0 : _a.value,
|
|
6966
7527
|
className: "w-full",
|
|
6967
|
-
children: items.map(({ value, question, answer }, i) => /* @__PURE__ */
|
|
6968
|
-
/* @__PURE__ */
|
|
7528
|
+
children: items.map(({ value, question, answer }, i) => /* @__PURE__ */ jsxs34(AccordionItem, { value, children: [
|
|
7529
|
+
/* @__PURE__ */ jsx62(AccordionPrimitive2.Header, { className: "flex", children: /* @__PURE__ */ jsxs34(
|
|
6969
7530
|
AccordionPrimitive2.Trigger,
|
|
6970
7531
|
{
|
|
6971
7532
|
className: "group flex flex-1 items-center justify-between gap-4 py-5 text-left outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50",
|
|
6972
7533
|
children: [
|
|
6973
|
-
/* @__PURE__ */
|
|
6974
|
-
/* @__PURE__ */
|
|
6975
|
-
/* @__PURE__ */
|
|
7534
|
+
/* @__PURE__ */ jsxs34("span", { className: "flex items-baseline gap-4", children: [
|
|
7535
|
+
/* @__PURE__ */ jsx62("span", { className: "text-sm font-body text-on-subtle shrink-0 w-6", children: String(i + 1).padStart(2, "0") }),
|
|
7536
|
+
/* @__PURE__ */ jsx62("span", { className: "text-lg @[600px]:text-xl font-semibold font-display text-on-prominent", children: question })
|
|
6976
7537
|
] }),
|
|
6977
|
-
/* @__PURE__ */
|
|
7538
|
+
/* @__PURE__ */ jsx62("span", { className: cn(
|
|
6978
7539
|
"shrink-0 size-7 flex items-center justify-center rounded-sm border transition-all duration-200",
|
|
6979
7540
|
"group-data-[state=open]:bg-primary group-data-[state=open]:border-primary",
|
|
6980
7541
|
"group-data-[state=closed]:bg-transparent group-data-[state=closed]:border-border-subtle"
|
|
6981
|
-
), children: /* @__PURE__ */
|
|
7542
|
+
), children: /* @__PURE__ */ jsx62(Plus2, { className: cn(
|
|
6982
7543
|
"size-4 transition-all duration-200",
|
|
6983
7544
|
"group-data-[state=open]:rotate-45 group-data-[state=open]:text-on-primary",
|
|
6984
7545
|
"group-data-[state=closed]:text-on-prominent"
|
|
@@ -6986,7 +7547,7 @@ function FAQBlock({
|
|
|
6986
7547
|
]
|
|
6987
7548
|
}
|
|
6988
7549
|
) }),
|
|
6989
|
-
/* @__PURE__ */
|
|
7550
|
+
/* @__PURE__ */ jsx62(AccordionContent, { children: /* @__PURE__ */ jsx62("p", { className: "text-base font-body text-on-subtle pl-10 pb-4", children: answer }) })
|
|
6990
7551
|
] }, value))
|
|
6991
7552
|
}
|
|
6992
7553
|
) })
|
|
@@ -6997,38 +7558,38 @@ function FAQBlock({
|
|
|
6997
7558
|
const helpCardPaddingClass = layout === "desktop" ? "p-8" : "p-6";
|
|
6998
7559
|
const gapClass = layout === "desktop" ? "gap-12" : "gap-10";
|
|
6999
7560
|
const headerGapClass = layout === "desktop" ? "gap-5" : "gap-4";
|
|
7000
|
-
return /* @__PURE__ */
|
|
7001
|
-
/* @__PURE__ */
|
|
7002
|
-
/* @__PURE__ */
|
|
7003
|
-
/* @__PURE__ */
|
|
7004
|
-
intro && /* @__PURE__ */
|
|
7561
|
+
return /* @__PURE__ */ jsxs34("div", { className: `w-full flex flex-col ${gapClass}`, children: [
|
|
7562
|
+
/* @__PURE__ */ jsxs34("div", { className: `flex flex-col ${headerGapClass} items-center w-full`, children: [
|
|
7563
|
+
/* @__PURE__ */ jsx62("span", { className: "text-sm text-on-subtle font-body", children: eyebrow }),
|
|
7564
|
+
/* @__PURE__ */ jsx62("h2", { className: headingClass, children: title }),
|
|
7565
|
+
intro && /* @__PURE__ */ jsx62("p", { className: "text-lg text-on-subtle font-body text-center", children: intro })
|
|
7005
7566
|
] }),
|
|
7006
|
-
/* @__PURE__ */
|
|
7567
|
+
/* @__PURE__ */ jsx62(
|
|
7007
7568
|
Accordion,
|
|
7008
7569
|
{
|
|
7009
7570
|
type: "single",
|
|
7010
7571
|
collapsible: true,
|
|
7011
7572
|
defaultValue: defaultValue != null ? defaultValue : (_b = items[0]) == null ? void 0 : _b.value,
|
|
7012
7573
|
className: "w-full",
|
|
7013
|
-
children: items.map(({ value, question, answer }) => /* @__PURE__ */
|
|
7014
|
-
/* @__PURE__ */
|
|
7015
|
-
/* @__PURE__ */
|
|
7574
|
+
children: items.map(({ value, question, answer }) => /* @__PURE__ */ jsxs34(AccordionItem, { value, children: [
|
|
7575
|
+
/* @__PURE__ */ jsx62(AccordionTrigger, { className: "text-base font-medium font-body text-on-prominent hover:no-underline", children: question }),
|
|
7576
|
+
/* @__PURE__ */ jsx62(AccordionContent, { children: /* @__PURE__ */ jsx62("p", { className: "text-sm text-on-subtle font-body pb-4", children: answer }) })
|
|
7016
7577
|
] }, value))
|
|
7017
7578
|
}
|
|
7018
7579
|
),
|
|
7019
|
-
helpCard && /* @__PURE__ */
|
|
7020
|
-
/* @__PURE__ */
|
|
7021
|
-
/* @__PURE__ */
|
|
7022
|
-
/* @__PURE__ */
|
|
7580
|
+
helpCard && /* @__PURE__ */ jsxs34("div", { className: `flex flex-col gap-6 items-center w-full bg-subtle rounded-xl ${helpCardPaddingClass}`, children: [
|
|
7581
|
+
/* @__PURE__ */ jsxs34("div", { className: "flex flex-col gap-2 w-full", children: [
|
|
7582
|
+
/* @__PURE__ */ jsx62("h3", { className: helpTitleClass, children: helpCard.title }),
|
|
7583
|
+
/* @__PURE__ */ jsx62("p", { className: "text-base text-on-subtle font-body", children: helpCard.body })
|
|
7023
7584
|
] }),
|
|
7024
|
-
/* @__PURE__ */
|
|
7585
|
+
/* @__PURE__ */ jsx62(Button, { size: "sm", onClick: helpCard.onCtaClick, children: helpCard.ctaLabel })
|
|
7025
7586
|
] })
|
|
7026
7587
|
] });
|
|
7027
7588
|
}
|
|
7028
7589
|
|
|
7029
7590
|
// components/blocks/hero-block.tsx
|
|
7030
|
-
import { ArrowRight as
|
|
7031
|
-
import { jsx as
|
|
7591
|
+
import { ArrowRight as ArrowRight3, ArrowUpRight } from "lucide-react";
|
|
7592
|
+
import { jsx as jsx63, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
7032
7593
|
function HeroBlock({
|
|
7033
7594
|
layout = "centered",
|
|
7034
7595
|
tagline,
|
|
@@ -7039,31 +7600,31 @@ function HeroBlock({
|
|
|
7039
7600
|
image
|
|
7040
7601
|
}) {
|
|
7041
7602
|
if (layout === "centered") {
|
|
7042
|
-
return /* @__PURE__ */
|
|
7043
|
-
/* @__PURE__ */
|
|
7044
|
-
tagline && /* @__PURE__ */
|
|
7045
|
-
/* @__PURE__ */
|
|
7046
|
-
/* @__PURE__ */
|
|
7603
|
+
return /* @__PURE__ */ jsx63("div", { className: "w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent", children: /* @__PURE__ */ jsxs35("div", { className: "flex flex-col items-center justify-center gap-8 px-layout-margin-inline py-24 max-w-2xl mx-auto text-center", children: [
|
|
7604
|
+
/* @__PURE__ */ jsxs35("div", { className: "flex flex-col items-center gap-6 w-full", children: [
|
|
7605
|
+
tagline && /* @__PURE__ */ jsx63(TaglinePill, __spreadValues({}, tagline)),
|
|
7606
|
+
/* @__PURE__ */ jsx63("h1", { className: "text-5xl font-semibold font-display tracking-tight text-on-prominent text-center", children: heading }),
|
|
7607
|
+
/* @__PURE__ */ jsx63("p", { className: "text-lg font-body text-on-subtle text-center", children: body })
|
|
7047
7608
|
] }),
|
|
7048
|
-
/* @__PURE__ */
|
|
7609
|
+
/* @__PURE__ */ jsxs35(Button, { size: "sm", onClick: primaryCta.onClick, children: [
|
|
7049
7610
|
primaryCta.label,
|
|
7050
|
-
primaryCta.trailingArrow !== false && /* @__PURE__ */
|
|
7611
|
+
primaryCta.trailingArrow !== false && /* @__PURE__ */ jsx63(ArrowRight3, { className: "size-4" })
|
|
7051
7612
|
] })
|
|
7052
7613
|
] }) });
|
|
7053
7614
|
}
|
|
7054
|
-
return /* @__PURE__ */
|
|
7055
|
-
/* @__PURE__ */
|
|
7056
|
-
/* @__PURE__ */
|
|
7057
|
-
tagline && /* @__PURE__ */
|
|
7058
|
-
/* @__PURE__ */
|
|
7059
|
-
/* @__PURE__ */
|
|
7615
|
+
return /* @__PURE__ */ jsx63("div", { className: "w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent", children: /* @__PURE__ */ jsxs35("div", { className: "flex flex-col min-[600px]:flex-row items-center gap-layout-gutter px-layout-margin-inline py-16 min-[600px]:py-24 max-w-5xl mx-auto", children: [
|
|
7616
|
+
/* @__PURE__ */ jsxs35("div", { className: "flex flex-col gap-6 min-[600px]:gap-8 flex-1 min-w-0 items-center min-[600px]:items-start text-center min-[600px]:text-left w-full", children: [
|
|
7617
|
+
/* @__PURE__ */ jsxs35("div", { className: "flex flex-col gap-5 min-[600px]:gap-6 items-center min-[600px]:items-start w-full", children: [
|
|
7618
|
+
tagline && /* @__PURE__ */ jsx63(TaglinePill, __spreadProps(__spreadValues({}, tagline), { responsive: true })),
|
|
7619
|
+
/* @__PURE__ */ jsx63("h1", { className: "text-4xl min-[600px]:text-5xl font-semibold font-display tracking-tight text-on-prominent", children: heading }),
|
|
7620
|
+
/* @__PURE__ */ jsx63("p", { className: "text-lg font-body text-on-subtle", children: body })
|
|
7060
7621
|
] }),
|
|
7061
|
-
/* @__PURE__ */
|
|
7062
|
-
/* @__PURE__ */
|
|
7063
|
-
secondaryCta && /* @__PURE__ */
|
|
7622
|
+
/* @__PURE__ */ jsxs35("div", { className: "flex items-center justify-center min-[600px]:justify-start gap-2", children: [
|
|
7623
|
+
/* @__PURE__ */ jsx63(Button, { size: "sm", onClick: primaryCta.onClick, children: primaryCta.label }),
|
|
7624
|
+
secondaryCta && /* @__PURE__ */ jsx63(Button, { variant: "secondary", size: "sm", onClick: secondaryCta.onClick, children: secondaryCta.label })
|
|
7064
7625
|
] })
|
|
7065
7626
|
] }),
|
|
7066
|
-
/* @__PURE__ */
|
|
7627
|
+
/* @__PURE__ */ jsx63("div", { className: "w-full min-[600px]:flex-1 min-[600px]:min-w-0 aspect-square rounded-xl bg-subtle shrink-0", "aria-hidden": "true", children: image })
|
|
7067
7628
|
] }) });
|
|
7068
7629
|
}
|
|
7069
7630
|
function TaglinePill({
|
|
@@ -7071,25 +7632,25 @@ function TaglinePill({
|
|
|
7071
7632
|
suffix,
|
|
7072
7633
|
responsive
|
|
7073
7634
|
}) {
|
|
7074
|
-
return /* @__PURE__ */
|
|
7075
|
-
/* @__PURE__ */
|
|
7076
|
-
responsive && suffix ? /* @__PURE__ */
|
|
7077
|
-
/* @__PURE__ */
|
|
7635
|
+
return /* @__PURE__ */ jsxs35("div", { className: "inline-flex items-center gap-1.5 h-7 px-3 rounded-full border border-border-subtle bg-prominent shadow-sm shrink-0", children: [
|
|
7636
|
+
/* @__PURE__ */ jsx63("span", { className: "size-1.5 rounded-full bg-semantic-win shrink-0", "aria-hidden": "true" }),
|
|
7637
|
+
responsive && suffix ? /* @__PURE__ */ jsxs35("span", { className: "text-sm font-body text-on-prominent whitespace-nowrap", children: [
|
|
7638
|
+
/* @__PURE__ */ jsxs35("span", { className: "hidden min-[600px]:inline", children: [
|
|
7078
7639
|
label,
|
|
7079
|
-
/* @__PURE__ */
|
|
7640
|
+
/* @__PURE__ */ jsx63("span", { className: "text-on-subtle", children: " \xB7 " })
|
|
7080
7641
|
] }),
|
|
7081
|
-
/* @__PURE__ */
|
|
7082
|
-
] }) : /* @__PURE__ */
|
|
7642
|
+
/* @__PURE__ */ jsx63("span", { className: "text-on-subtle min-[600px]:text-on-prominent", children: suffix })
|
|
7643
|
+
] }) : /* @__PURE__ */ jsxs35("span", { className: "text-sm font-body text-on-prominent whitespace-nowrap", children: [
|
|
7083
7644
|
label,
|
|
7084
|
-
suffix && /* @__PURE__ */
|
|
7645
|
+
suffix && /* @__PURE__ */ jsx63("span", { className: "text-on-subtle", children: ` \xB7 ${suffix}` })
|
|
7085
7646
|
] }),
|
|
7086
|
-
/* @__PURE__ */
|
|
7647
|
+
/* @__PURE__ */ jsx63(ArrowUpRight, { className: "size-4 text-on-subtle shrink-0", "aria-hidden": "true" })
|
|
7087
7648
|
] });
|
|
7088
7649
|
}
|
|
7089
7650
|
|
|
7090
7651
|
// components/blocks/auth-block.tsx
|
|
7091
|
-
import * as
|
|
7092
|
-
import { jsx as
|
|
7652
|
+
import * as React19 from "react";
|
|
7653
|
+
import { jsx as jsx64, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
7093
7654
|
function AuthBlock({
|
|
7094
7655
|
mode,
|
|
7095
7656
|
logoSrc,
|
|
@@ -7104,20 +7665,20 @@ function AuthBlock({
|
|
|
7104
7665
|
const ctaText = mode === "sign-in" ? "Sign in" : "Sign up";
|
|
7105
7666
|
const footerPrompt = mode === "sign-in" ? "Don't have an account?" : "Already have an account?";
|
|
7106
7667
|
const footerLinkLabel = mode === "sign-in" ? "Sign up" : "Log in";
|
|
7107
|
-
const [email, setEmail] =
|
|
7108
|
-
return /* @__PURE__ */
|
|
7109
|
-
/* @__PURE__ */
|
|
7110
|
-
/* @__PURE__ */
|
|
7111
|
-
/* @__PURE__ */
|
|
7668
|
+
const [email, setEmail] = React19.useState("");
|
|
7669
|
+
return /* @__PURE__ */ jsxs36("div", { className: "flex flex-col items-center gap-6 w-full", children: [
|
|
7670
|
+
/* @__PURE__ */ jsxs36("div", { className: "flex items-center gap-2", children: [
|
|
7671
|
+
/* @__PURE__ */ jsx64("img", { src: logoSrc, alt: wordmark, className: "size-8 object-contain" }),
|
|
7672
|
+
/* @__PURE__ */ jsx64("span", { className: "font-display font-semibold text-base text-on-prominent tracking-tight", children: wordmark })
|
|
7112
7673
|
] }),
|
|
7113
|
-
/* @__PURE__ */
|
|
7114
|
-
/* @__PURE__ */
|
|
7115
|
-
/* @__PURE__ */
|
|
7116
|
-
/* @__PURE__ */
|
|
7117
|
-
/* @__PURE__ */
|
|
7118
|
-
/* @__PURE__ */
|
|
7674
|
+
/* @__PURE__ */ jsx64("h2", { className: "text-3xl font-semibold font-display text-on-prominent text-center", children: headingText }),
|
|
7675
|
+
/* @__PURE__ */ jsx64("div", { className: "flex flex-col gap-3 w-full", children: providers.map((p) => /* @__PURE__ */ jsx64(ProviderButton, { provider: p }, p)) }),
|
|
7676
|
+
/* @__PURE__ */ jsxs36("div", { className: "flex items-center gap-3 w-full", children: [
|
|
7677
|
+
/* @__PURE__ */ jsx64("div", { className: "flex-1 h-px bg-border-subtle" }),
|
|
7678
|
+
/* @__PURE__ */ jsx64("span", { className: "text-sm text-on-subtle font-body", children: "or" }),
|
|
7679
|
+
/* @__PURE__ */ jsx64("div", { className: "flex-1 h-px bg-border-subtle" })
|
|
7119
7680
|
] }),
|
|
7120
|
-
/* @__PURE__ */
|
|
7681
|
+
/* @__PURE__ */ jsx64("div", { className: "flex items-center gap-2 w-full", children: /* @__PURE__ */ jsx64(
|
|
7121
7682
|
Input,
|
|
7122
7683
|
{
|
|
7123
7684
|
id: `${idPrefix}-email`,
|
|
@@ -7128,60 +7689,60 @@ function AuthBlock({
|
|
|
7128
7689
|
onChange: (e) => setEmail(e.target.value)
|
|
7129
7690
|
}
|
|
7130
7691
|
) }),
|
|
7131
|
-
/* @__PURE__ */
|
|
7692
|
+
/* @__PURE__ */ jsxs36("p", { className: "text-sm text-on-subtle font-body text-left w-full", children: [
|
|
7132
7693
|
termsText,
|
|
7133
7694
|
", you agree to our",
|
|
7134
7695
|
" ",
|
|
7135
|
-
/* @__PURE__ */
|
|
7696
|
+
/* @__PURE__ */ jsx64(Link, { size: "sm", href: "#", children: "Terms & Conditions" })
|
|
7136
7697
|
] }),
|
|
7137
|
-
/* @__PURE__ */
|
|
7138
|
-
/* @__PURE__ */
|
|
7698
|
+
/* @__PURE__ */ jsx64(Button, { size: "md", className: "w-full", onClick: () => onSubmit == null ? void 0 : onSubmit({ email }), children: ctaText }),
|
|
7699
|
+
/* @__PURE__ */ jsxs36("p", { className: "text-sm text-on-subtle font-body text-center", children: [
|
|
7139
7700
|
footerPrompt,
|
|
7140
7701
|
" ",
|
|
7141
|
-
/* @__PURE__ */
|
|
7702
|
+
/* @__PURE__ */ jsx64(Link, { size: "sm", href: crossLinkHref, children: footerLinkLabel })
|
|
7142
7703
|
] })
|
|
7143
7704
|
] });
|
|
7144
7705
|
}
|
|
7145
7706
|
function ProviderButton({ provider }) {
|
|
7146
7707
|
switch (provider) {
|
|
7147
7708
|
case "google":
|
|
7148
|
-
return /* @__PURE__ */
|
|
7149
|
-
/* @__PURE__ */
|
|
7150
|
-
/* @__PURE__ */
|
|
7151
|
-
/* @__PURE__ */
|
|
7152
|
-
/* @__PURE__ */
|
|
7153
|
-
/* @__PURE__ */
|
|
7709
|
+
return /* @__PURE__ */ jsxs36(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
|
|
7710
|
+
/* @__PURE__ */ jsxs36("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "none", className: "shrink-0", children: [
|
|
7711
|
+
/* @__PURE__ */ jsx64("path", { d: "M17.64 9.205c0-.639-.057-1.252-.164-1.841H9v3.481h4.844a4.14 4.14 0 0 1-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615Z", fill: "#4285F4" }),
|
|
7712
|
+
/* @__PURE__ */ jsx64("path", { d: "M9 18c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.957v2.332A8.997 8.997 0 0 0 9 18Z", fill: "#34A853" }),
|
|
7713
|
+
/* @__PURE__ */ jsx64("path", { d: "M3.964 10.71A5.41 5.41 0 0 1 3.682 9c0-.593.102-1.17.282-1.71V4.958H.957A8.996 8.996 0 0 0 0 9c0 1.452.348 2.827.957 4.042l3.007-2.332Z", fill: "#FBBC05" }),
|
|
7714
|
+
/* @__PURE__ */ jsx64("path", { d: "M9 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.463.891 11.426 0 9 0A8.997 8.997 0 0 0 .957 4.958L3.964 7.29C4.672 5.163 6.656 3.58 9 3.58Z", fill: "#EA4335" })
|
|
7154
7715
|
] }),
|
|
7155
7716
|
"Continue with Google"
|
|
7156
7717
|
] });
|
|
7157
7718
|
case "telegram":
|
|
7158
|
-
return /* @__PURE__ */
|
|
7159
|
-
/* @__PURE__ */
|
|
7160
|
-
/* @__PURE__ */
|
|
7161
|
-
/* @__PURE__ */
|
|
7162
|
-
/* @__PURE__ */
|
|
7719
|
+
return /* @__PURE__ */ jsxs36(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
|
|
7720
|
+
/* @__PURE__ */ jsxs36("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "none", className: "shrink-0", children: [
|
|
7721
|
+
/* @__PURE__ */ jsx64("circle", { cx: "9", cy: "9", r: "9", fill: "#29B6F6" }),
|
|
7722
|
+
/* @__PURE__ */ jsx64("path", { d: "M13.5 5.25 11.25 13.5l-2.25-3-3 1.5 1.5-5.25 6-1.5Z", fill: "white", opacity: "0.3" }),
|
|
7723
|
+
/* @__PURE__ */ jsx64("path", { d: "m4.5 8.625 7.5-3-1.125 7.125-2.625-2.25-1.5 1.5.375-3.375Z", fill: "white" })
|
|
7163
7724
|
] }),
|
|
7164
7725
|
"Continue with Telegram"
|
|
7165
7726
|
] });
|
|
7166
7727
|
case "x":
|
|
7167
|
-
return /* @__PURE__ */
|
|
7168
|
-
/* @__PURE__ */
|
|
7728
|
+
return /* @__PURE__ */ jsxs36(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
|
|
7729
|
+
/* @__PURE__ */ jsx64("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "currentColor", className: "shrink-0", children: /* @__PURE__ */ jsx64("path", { d: "M13.955 2.25h2.423L10.977 8.28 17.25 15.75h-4.812l-3.913-5.116-4.477 5.116H1.645l5.703-6.52L1.125 2.25h4.934l3.538 4.678 4.358-4.678Zm-.85 12.105h1.343L5.025 3.627H3.579l9.526 10.728Z" }) }),
|
|
7169
7730
|
"Continue with X (Twitter)"
|
|
7170
7731
|
] });
|
|
7171
7732
|
}
|
|
7172
7733
|
}
|
|
7173
7734
|
|
|
7174
7735
|
// components/blocks/navbar-block.tsx
|
|
7175
|
-
import * as
|
|
7736
|
+
import * as React20 from "react";
|
|
7176
7737
|
import { Menu, X as X3 } from "lucide-react";
|
|
7177
|
-
import { jsx as
|
|
7738
|
+
import { jsx as jsx65, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
7178
7739
|
function NavBarBlock({ brand, links, signIn, signUp }) {
|
|
7179
7740
|
var _a, _b, _c, _d;
|
|
7180
|
-
const [mobileMenuOpen, setMobileMenuOpen] =
|
|
7181
|
-
return /* @__PURE__ */
|
|
7182
|
-
/* @__PURE__ */
|
|
7183
|
-
/* @__PURE__ */
|
|
7184
|
-
/* @__PURE__ */
|
|
7741
|
+
const [mobileMenuOpen, setMobileMenuOpen] = React20.useState(false);
|
|
7742
|
+
return /* @__PURE__ */ jsx65("div", { className: "w-full border border-border-subtle rounded-md overflow-hidden", children: /* @__PURE__ */ jsxs37("nav", { className: "bg-prominent", children: [
|
|
7743
|
+
/* @__PURE__ */ jsxs37("div", { className: "flex items-center justify-between px-layout-margin-inline py-3", children: [
|
|
7744
|
+
/* @__PURE__ */ jsxs37("div", { className: "flex items-center gap-6", children: [
|
|
7745
|
+
/* @__PURE__ */ jsx65(
|
|
7185
7746
|
"img",
|
|
7186
7747
|
{
|
|
7187
7748
|
src: brand.fullLogoSrc,
|
|
@@ -7189,7 +7750,7 @@ function NavBarBlock({ brand, links, signIn, signUp }) {
|
|
|
7189
7750
|
className: "hidden min-[600px]:block h-7 w-auto shrink-0 object-contain object-left"
|
|
7190
7751
|
}
|
|
7191
7752
|
),
|
|
7192
|
-
/* @__PURE__ */
|
|
7753
|
+
/* @__PURE__ */ jsx65(
|
|
7193
7754
|
"img",
|
|
7194
7755
|
{
|
|
7195
7756
|
src: brand.iconLogoSrc,
|
|
@@ -7197,13 +7758,13 @@ function NavBarBlock({ brand, links, signIn, signUp }) {
|
|
|
7197
7758
|
className: "min-[600px]:hidden size-7 shrink-0 object-contain"
|
|
7198
7759
|
}
|
|
7199
7760
|
),
|
|
7200
|
-
/* @__PURE__ */
|
|
7761
|
+
/* @__PURE__ */ jsx65("div", { className: "hidden min-[600px]:flex items-center gap-1", children: links.map((l) => /* @__PURE__ */ jsx65(Button, { variant: "tertiary", size: "sm", onClick: l.onClick, children: l.label }, l.label)) })
|
|
7201
7762
|
] }),
|
|
7202
|
-
/* @__PURE__ */
|
|
7203
|
-
signIn && /* @__PURE__ */
|
|
7204
|
-
signUp && /* @__PURE__ */
|
|
7763
|
+
/* @__PURE__ */ jsxs37("div", { className: "hidden min-[600px]:flex items-center gap-2", children: [
|
|
7764
|
+
signIn && /* @__PURE__ */ jsx65(Button, { variant: "tertiary", size: "sm", onClick: signIn.onClick, children: (_a = signIn.label) != null ? _a : "Sign in" }),
|
|
7765
|
+
signUp && /* @__PURE__ */ jsx65(Button, { size: "sm", onClick: signUp.onClick, children: (_b = signUp.label) != null ? _b : "Sign up" })
|
|
7205
7766
|
] }),
|
|
7206
|
-
/* @__PURE__ */
|
|
7767
|
+
/* @__PURE__ */ jsx65(
|
|
7207
7768
|
Button,
|
|
7208
7769
|
{
|
|
7209
7770
|
variant: "tertiary",
|
|
@@ -7212,12 +7773,12 @@ function NavBarBlock({ brand, links, signIn, signUp }) {
|
|
|
7212
7773
|
"aria-expanded": mobileMenuOpen,
|
|
7213
7774
|
className: "min-[600px]:hidden",
|
|
7214
7775
|
onClick: () => setMobileMenuOpen((prev) => !prev),
|
|
7215
|
-
children: mobileMenuOpen ? /* @__PURE__ */
|
|
7776
|
+
children: mobileMenuOpen ? /* @__PURE__ */ jsx65(X3, { className: "size-4" }) : /* @__PURE__ */ jsx65(Menu, { className: "size-4" })
|
|
7216
7777
|
}
|
|
7217
7778
|
)
|
|
7218
7779
|
] }),
|
|
7219
|
-
mobileMenuOpen && /* @__PURE__ */
|
|
7220
|
-
links.map((l) => /* @__PURE__ */
|
|
7780
|
+
mobileMenuOpen && /* @__PURE__ */ jsxs37("div", { className: "min-[600px]:hidden flex flex-col border-t border-border-subtle px-layout-margin-inline py-3 gap-1", children: [
|
|
7781
|
+
links.map((l) => /* @__PURE__ */ jsx65(
|
|
7221
7782
|
Button,
|
|
7222
7783
|
{
|
|
7223
7784
|
variant: "tertiary",
|
|
@@ -7228,9 +7789,9 @@ function NavBarBlock({ brand, links, signIn, signUp }) {
|
|
|
7228
7789
|
},
|
|
7229
7790
|
l.label
|
|
7230
7791
|
)),
|
|
7231
|
-
(signIn || signUp) && /* @__PURE__ */
|
|
7232
|
-
signIn && /* @__PURE__ */
|
|
7233
|
-
signUp && /* @__PURE__ */
|
|
7792
|
+
(signIn || signUp) && /* @__PURE__ */ jsxs37("div", { className: "flex flex-col gap-2 pt-3 mt-2 border-t border-border-subtle", children: [
|
|
7793
|
+
signIn && /* @__PURE__ */ jsx65(Button, { variant: "secondary", size: "sm", className: "w-full", onClick: signIn.onClick, children: (_c = signIn.label) != null ? _c : "Sign in" }),
|
|
7794
|
+
signUp && /* @__PURE__ */ jsx65(Button, { size: "sm", className: "w-full", onClick: signUp.onClick, children: (_d = signUp.label) != null ? _d : "Sign up" })
|
|
7234
7795
|
] })
|
|
7235
7796
|
] })
|
|
7236
7797
|
] }) });
|
|
@@ -7238,7 +7799,7 @@ function NavBarBlock({ brand, links, signIn, signUp }) {
|
|
|
7238
7799
|
|
|
7239
7800
|
// components/blocks/open-positions-block.tsx
|
|
7240
7801
|
import { History as History2, X as X4 } from "lucide-react";
|
|
7241
|
-
import { jsx as
|
|
7802
|
+
import { jsx as jsx66, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
7242
7803
|
function OpenPositionsBlock({
|
|
7243
7804
|
trigger,
|
|
7244
7805
|
sheetTitle = "Positions",
|
|
@@ -7247,28 +7808,28 @@ function OpenPositionsBlock({
|
|
|
7247
7808
|
emptyState
|
|
7248
7809
|
}) {
|
|
7249
7810
|
const isMobile = useIsMobile();
|
|
7250
|
-
const body = positions.length === 0 ? emptyState != null ? emptyState : /* @__PURE__ */
|
|
7811
|
+
const body = positions.length === 0 ? emptyState != null ? emptyState : /* @__PURE__ */ jsx66(DefaultEmptyState, { onViewHistory }) : /* @__PURE__ */ jsx66(PositionsList, { positions, onViewHistory });
|
|
7251
7812
|
if (isMobile) {
|
|
7252
|
-
return /* @__PURE__ */
|
|
7253
|
-
/* @__PURE__ */
|
|
7254
|
-
/* @__PURE__ */
|
|
7255
|
-
/* @__PURE__ */
|
|
7256
|
-
/* @__PURE__ */
|
|
7257
|
-
/* @__PURE__ */
|
|
7813
|
+
return /* @__PURE__ */ jsxs38(Drawer, { children: [
|
|
7814
|
+
/* @__PURE__ */ jsx66(DrawerTrigger, { asChild: true, children: trigger }),
|
|
7815
|
+
/* @__PURE__ */ jsxs38(DrawerContent, { className: "p-0 flex flex-col", children: [
|
|
7816
|
+
/* @__PURE__ */ jsxs38(DrawerHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0 text-left", children: [
|
|
7817
|
+
/* @__PURE__ */ jsx66(DrawerTitle, { className: "text-base font-semibold font-display text-on-prominent", children: sheetTitle }),
|
|
7818
|
+
/* @__PURE__ */ jsx66(DrawerClose, { asChild: true, children: /* @__PURE__ */ jsx66(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ jsx66(X4, {}) }) })
|
|
7258
7819
|
] }),
|
|
7259
|
-
/* @__PURE__ */
|
|
7820
|
+
/* @__PURE__ */ jsx66(Separator, {}),
|
|
7260
7821
|
body
|
|
7261
7822
|
] })
|
|
7262
7823
|
] });
|
|
7263
7824
|
}
|
|
7264
|
-
return /* @__PURE__ */
|
|
7265
|
-
/* @__PURE__ */
|
|
7266
|
-
/* @__PURE__ */
|
|
7267
|
-
/* @__PURE__ */
|
|
7268
|
-
/* @__PURE__ */
|
|
7269
|
-
/* @__PURE__ */
|
|
7825
|
+
return /* @__PURE__ */ jsxs38(Sheet, { children: [
|
|
7826
|
+
/* @__PURE__ */ jsx66(SheetTrigger, { asChild: true, children: trigger }),
|
|
7827
|
+
/* @__PURE__ */ jsxs38(SheetContent, { side: "right", showCloseButton: false, className: "p-0 flex flex-col w-80 sm:max-w-xs", children: [
|
|
7828
|
+
/* @__PURE__ */ jsxs38(SheetHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0", children: [
|
|
7829
|
+
/* @__PURE__ */ jsx66(SheetTitle, { className: "text-base font-semibold font-display text-on-prominent", children: sheetTitle }),
|
|
7830
|
+
/* @__PURE__ */ jsx66(SheetClose, { asChild: true, children: /* @__PURE__ */ jsx66(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ jsx66(X4, {}) }) })
|
|
7270
7831
|
] }),
|
|
7271
|
-
/* @__PURE__ */
|
|
7832
|
+
/* @__PURE__ */ jsx66(Separator, {}),
|
|
7272
7833
|
body
|
|
7273
7834
|
] })
|
|
7274
7835
|
] });
|
|
@@ -7277,23 +7838,23 @@ function PositionsList({
|
|
|
7277
7838
|
positions,
|
|
7278
7839
|
onViewHistory
|
|
7279
7840
|
}) {
|
|
7280
|
-
return /* @__PURE__ */
|
|
7281
|
-
/* @__PURE__ */
|
|
7282
|
-
/* @__PURE__ */
|
|
7283
|
-
/* @__PURE__ */
|
|
7841
|
+
return /* @__PURE__ */ jsxs38("div", { className: "flex flex-col flex-1 min-h-0", children: [
|
|
7842
|
+
/* @__PURE__ */ jsx66(ItemGroup, { className: "min-h-0 overflow-y-auto", children: positions.map((pos, i) => /* @__PURE__ */ jsx66(PositionRow, { position: pos }, i)) }),
|
|
7843
|
+
/* @__PURE__ */ jsx66(Separator, {}),
|
|
7844
|
+
/* @__PURE__ */ jsx66("div", { className: "shrink-0 flex justify-center py-4", children: /* @__PURE__ */ jsx66(Button, { variant: "tertiary", size: "md", onClick: onViewHistory, children: "View trade history" }) })
|
|
7284
7845
|
] });
|
|
7285
7846
|
}
|
|
7286
7847
|
function PositionRow({ position }) {
|
|
7287
7848
|
const { label, suffix } = positionTitleParts(position);
|
|
7288
|
-
return /* @__PURE__ */
|
|
7289
|
-
/* @__PURE__ */
|
|
7290
|
-
/* @__PURE__ */
|
|
7291
|
-
/* @__PURE__ */
|
|
7292
|
-
suffix && /* @__PURE__ */
|
|
7849
|
+
return /* @__PURE__ */ jsxs38(Item, { size: "sm", children: [
|
|
7850
|
+
/* @__PURE__ */ jsxs38(ItemContent, { children: [
|
|
7851
|
+
/* @__PURE__ */ jsxs38(ItemTitle, { children: [
|
|
7852
|
+
/* @__PURE__ */ jsx66("span", { className: "text-on-prominent", children: label }),
|
|
7853
|
+
suffix && /* @__PURE__ */ jsx66("span", { className: "text-on-subtle", children: ` ${suffix}` })
|
|
7293
7854
|
] }),
|
|
7294
|
-
/* @__PURE__ */
|
|
7855
|
+
/* @__PURE__ */ jsx66(MetaNote, { market: position.market, duration: position.duration })
|
|
7295
7856
|
] }),
|
|
7296
|
-
/* @__PURE__ */
|
|
7857
|
+
/* @__PURE__ */ jsx66(ItemActions, { children: /* @__PURE__ */ jsx66(PnlMeta, { pnl: position.pnl, win: position.win, stake: position.stake }) })
|
|
7297
7858
|
] });
|
|
7298
7859
|
}
|
|
7299
7860
|
var DIGITS_TYPE_LABEL = {
|
|
@@ -7319,29 +7880,29 @@ function positionTitleParts(p) {
|
|
|
7319
7880
|
}
|
|
7320
7881
|
}
|
|
7321
7882
|
function MetaNote({ market, duration }) {
|
|
7322
|
-
return /* @__PURE__ */
|
|
7883
|
+
return /* @__PURE__ */ jsxs38("span", { className: "text-xs text-on-subtle whitespace-nowrap", children: [
|
|
7323
7884
|
market,
|
|
7324
7885
|
" \xB7 ",
|
|
7325
7886
|
duration
|
|
7326
7887
|
] });
|
|
7327
7888
|
}
|
|
7328
7889
|
function PnlMeta({ pnl, win, stake }) {
|
|
7329
|
-
return /* @__PURE__ */
|
|
7330
|
-
/* @__PURE__ */
|
|
7331
|
-
/* @__PURE__ */
|
|
7890
|
+
return /* @__PURE__ */ jsxs38("div", { className: "flex flex-col items-end gap-0.5", children: [
|
|
7891
|
+
/* @__PURE__ */ jsx66("span", { className: `font-display font-semibold tabular-nums text-base ${win ? "text-semantic-win" : "text-semantic-loss"}`, children: pnl }),
|
|
7892
|
+
/* @__PURE__ */ jsx66("span", { className: "tabular-nums text-xs text-on-subtle", children: stake })
|
|
7332
7893
|
] });
|
|
7333
7894
|
}
|
|
7334
7895
|
function DefaultEmptyState({ onViewHistory }) {
|
|
7335
|
-
return /* @__PURE__ */
|
|
7336
|
-
/* @__PURE__ */
|
|
7337
|
-
/* @__PURE__ */
|
|
7338
|
-
/* @__PURE__ */
|
|
7896
|
+
return /* @__PURE__ */ jsx66(Empty, { className: "flex min-h-0 flex-1 flex-col justify-center border-none rounded-none p-6 text-center", children: /* @__PURE__ */ jsxs38(EmptyHeader, { className: "gap-4", children: [
|
|
7897
|
+
/* @__PURE__ */ jsx66(EmptyMedia, { children: /* @__PURE__ */ jsx66(History2, { className: "size-8 text-on-subtle" }) }),
|
|
7898
|
+
/* @__PURE__ */ jsx66(EmptyTitle, { className: "h6 text-on-subtle", children: "No trades yet." }),
|
|
7899
|
+
/* @__PURE__ */ jsx66(Button, { variant: "tertiary", size: "md", onClick: onViewHistory, children: "View trade history" })
|
|
7339
7900
|
] }) });
|
|
7340
7901
|
}
|
|
7341
7902
|
|
|
7342
7903
|
// components/blocks/game-loading-block.tsx
|
|
7343
|
-
import * as
|
|
7344
|
-
import { jsx as
|
|
7904
|
+
import * as React21 from "react";
|
|
7905
|
+
import { jsx as jsx67, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
7345
7906
|
function useSmoothProgress({
|
|
7346
7907
|
checkpoints,
|
|
7347
7908
|
reached,
|
|
@@ -7351,19 +7912,19 @@ function useSmoothProgress({
|
|
|
7351
7912
|
readyLabel = "Ready"
|
|
7352
7913
|
}) {
|
|
7353
7914
|
var _a, _b;
|
|
7354
|
-
const [progress, setProgress] =
|
|
7355
|
-
const [delayed, setDelayed] =
|
|
7356
|
-
const checkpointsRef =
|
|
7357
|
-
const reachedRef =
|
|
7358
|
-
const doneRef =
|
|
7359
|
-
|
|
7915
|
+
const [progress, setProgress] = React21.useState(0);
|
|
7916
|
+
const [delayed, setDelayed] = React21.useState(false);
|
|
7917
|
+
const checkpointsRef = React21.useRef(checkpoints);
|
|
7918
|
+
const reachedRef = React21.useRef(reached);
|
|
7919
|
+
const doneRef = React21.useRef(done);
|
|
7920
|
+
React21.useEffect(() => {
|
|
7360
7921
|
checkpointsRef.current = checkpoints;
|
|
7361
7922
|
reachedRef.current = reached;
|
|
7362
7923
|
doneRef.current = done;
|
|
7363
7924
|
});
|
|
7364
|
-
const progressRef =
|
|
7365
|
-
const lastAdvanceRef =
|
|
7366
|
-
|
|
7925
|
+
const progressRef = React21.useRef(0);
|
|
7926
|
+
const lastAdvanceRef = React21.useRef(0);
|
|
7927
|
+
React21.useEffect(() => {
|
|
7367
7928
|
let raf = 0;
|
|
7368
7929
|
let last = 0;
|
|
7369
7930
|
const tick = (ts) => {
|
|
@@ -7417,14 +7978,14 @@ function GameLoadingBlock({
|
|
|
7417
7978
|
backgroundImageUrl,
|
|
7418
7979
|
className
|
|
7419
7980
|
}) {
|
|
7420
|
-
const [go, setGo] =
|
|
7421
|
-
const [reduced, setReduced] =
|
|
7422
|
-
|
|
7981
|
+
const [go, setGo] = React21.useState(false);
|
|
7982
|
+
const [reduced, setReduced] = React21.useState(false);
|
|
7983
|
+
React21.useEffect(() => {
|
|
7423
7984
|
if (typeof window !== "undefined" && typeof window.matchMedia === "function") {
|
|
7424
7985
|
setReduced(window.matchMedia("(prefers-reduced-motion: reduce)").matches);
|
|
7425
7986
|
}
|
|
7426
7987
|
}, []);
|
|
7427
|
-
|
|
7988
|
+
React21.useEffect(() => {
|
|
7428
7989
|
if (!exiting) return;
|
|
7429
7990
|
const raf = requestAnimationFrame(() => setGo(true));
|
|
7430
7991
|
const timer = setTimeout(() => onExitEnd == null ? void 0 : onExitEnd(), reduced ? 240 : 520);
|
|
@@ -7434,7 +7995,7 @@ function GameLoadingBlock({
|
|
|
7434
7995
|
};
|
|
7435
7996
|
}, [exiting, reduced, onExitEnd]);
|
|
7436
7997
|
const isAbsolute = exiting || contained;
|
|
7437
|
-
return /* @__PURE__ */
|
|
7998
|
+
return /* @__PURE__ */ jsxs39(
|
|
7438
7999
|
"div",
|
|
7439
8000
|
{
|
|
7440
8001
|
role: "status",
|
|
@@ -7453,7 +8014,7 @@ function GameLoadingBlock({
|
|
|
7453
8014
|
),
|
|
7454
8015
|
style: backgroundImageUrl ? { backgroundImage: `url(${backgroundImageUrl})` } : void 0,
|
|
7455
8016
|
children: [
|
|
7456
|
-
/* @__PURE__ */
|
|
8017
|
+
/* @__PURE__ */ jsx67(
|
|
7457
8018
|
"svg",
|
|
7458
8019
|
{
|
|
7459
8020
|
width: "120",
|
|
@@ -7462,19 +8023,19 @@ function GameLoadingBlock({
|
|
|
7462
8023
|
xmlns: "http://www.w3.org/2000/svg",
|
|
7463
8024
|
"aria-hidden": "true",
|
|
7464
8025
|
className: cn("game-loader-mark fill-on-primary", exiting && go && !reduced && "game-loader-mark-exit"),
|
|
7465
|
-
children: /* @__PURE__ */
|
|
8026
|
+
children: /* @__PURE__ */ jsx67("path", { d: MONOGRAM_D })
|
|
7466
8027
|
}
|
|
7467
8028
|
),
|
|
7468
|
-
!exiting && /* @__PURE__ */
|
|
7469
|
-
/* @__PURE__ */
|
|
8029
|
+
!exiting && /* @__PURE__ */ jsxs39("div", { className: "flex w-[200px] flex-col items-start gap-3.5", children: [
|
|
8030
|
+
/* @__PURE__ */ jsx67("div", { className: "relative h-2 w-full overflow-hidden rounded-xs bg-on-primary/25", children: /* @__PURE__ */ jsx67(
|
|
7470
8031
|
"div",
|
|
7471
8032
|
{
|
|
7472
8033
|
className: "absolute inset-y-0 left-0 overflow-hidden rounded-xs bg-on-primary",
|
|
7473
8034
|
style: { width: `${progress}%` },
|
|
7474
|
-
children: /* @__PURE__ */
|
|
8035
|
+
children: /* @__PURE__ */ jsx67("span", { "aria-hidden": "true", className: "game-loader-shimmer absolute inset-y-0 left-[-60%] w-[60%]" })
|
|
7475
8036
|
}
|
|
7476
8037
|
) }),
|
|
7477
|
-
/* @__PURE__ */
|
|
8038
|
+
/* @__PURE__ */ jsx67("span", { className: "caption text-on-primary/90", children: delayed ? "Taking longer than usual\u2026" : label })
|
|
7478
8039
|
] })
|
|
7479
8040
|
]
|
|
7480
8041
|
}
|
|
@@ -7740,9 +8301,12 @@ export {
|
|
|
7740
8301
|
SidebarSeparator,
|
|
7741
8302
|
SidebarTrigger,
|
|
7742
8303
|
Skeleton,
|
|
8304
|
+
SlideToConfirm,
|
|
7743
8305
|
Slider,
|
|
7744
8306
|
Spinner,
|
|
8307
|
+
Step,
|
|
7745
8308
|
Stepper,
|
|
8309
|
+
Steps,
|
|
7746
8310
|
Switch,
|
|
7747
8311
|
Table,
|
|
7748
8312
|
TableBody,
|