@trading-game/design-intelligence-layer 1.0.1 → 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/dist/index.js CHANGED
@@ -305,7 +305,7 @@ var navigationButtonVariants = cva2(
305
305
  {
306
306
  variants: {
307
307
  variant: {
308
- default: "bg-transparent text-icon-prominent-default hover:bg-background-hover-default",
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",
@@ -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-default", className)
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 [background:var(--background-brand-container)]",
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 [background:var(--background-brand-container)]", defaultClassNames.range_end),
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 + a 4px brand dot below.
1838
- "[&[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-default [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:relative [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:absolute [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:bottom-0.5 [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:left-1/2 [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:-translate-x-1/2 [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:size-1 [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:rounded-full [&[data-today='true']:not([data-selected-single='true']):not([data-range-start='true']):not([data-range-end='true'])]:after:bg-background-brand-default",
1839
- // Selected single — the static icy brand chip, circular.
1840
- "data-[selected-single=true]:[background:var(--background-brand-container)] data-[selected-single=true]:border-transparent data-[selected-single=true]:text-text-brand-container-static data-[selected-single=true]:font-semibold data-[selected-single=true]:hover:![background:var(--background-brand-container)]",
1841
- // Range — icy band: circular ends (semibold), square middle.
1842
- "data-[range-start=true]:rounded-full data-[range-start=true]:rounded-l-full data-[range-start=true]:[background:var(--background-brand-container)] data-[range-start=true]:border-transparent data-[range-start=true]:text-text-brand-container-static data-[range-start=true]:font-semibold data-[range-start=true]:hover:![background:var(--background-brand-container)]",
1843
- "data-[range-middle=true]:rounded-none data-[range-middle=true]:[background:var(--background-brand-container)] data-[range-middle=true]:text-text-brand-container-static data-[range-middle=true]:hover:![background:var(--background-brand-container)]",
1844
- "data-[range-end=true]:rounded-full data-[range-end=true]:rounded-r-full data-[range-end=true]:[background:var(--background-brand-container)] data-[range-end=true]:border-transparent data-[range-end=true]:text-text-brand-container-static data-[range-end=true]:font-semibold data-[range-end=true]:hover:![background:var(--background-brand-container)]",
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__ */ jsxs11(
2287
- DialogPrimitive.Close,
2294
+ showCloseButton && /* @__PURE__ */ jsx19(DialogPrimitive.Close, { asChild: true, children: /* @__PURE__ */ jsx19(
2295
+ NavigationButton,
2288
2296
  {
2289
2297
  "data-slot": "dialog-close",
2290
- className: "absolute top-4 right-4 inline-flex size-8 items-center justify-center rounded-full text-icon-subtle-default opacity-70 transition-opacity hover:opacity-100 hover:bg-background-hover-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong focus-visible:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
2291
- children: [
2292
- /* @__PURE__ */ jsx19(XIcon, {}),
2293
- /* @__PURE__ */ jsx19("span", { className: "sr-only", children: "Close" })
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-default",
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-default",
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-10 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",
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-default",
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-default hover:text-text-brand-hover",
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
- return /* @__PURE__ */ jsx41(
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: h-2, full radius, secondary
5146
+ // One track spec, shared with Slider: rounded-full, secondary
4986
5147
  // surface, solid brand fill.
4987
- "relative h-2 w-full overflow-hidden rounded-full bg-background-secondary-surface",
4988
- className
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: "h-full w-full flex-1 bg-background-brand-default transition-all",
4996
- style: { transform: `translateX(-${100 - (value || 0)}%)` }
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 jsxs22 } from "react/jsx-runtime";
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__ */ jsxs22(
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__ */ jsxs22(
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 text-text-brand-default 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-background-brand-default disabled:cursor-not-allowed disabled:opacity-24 aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft",
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-background-brand-default text-background-brand-default" })
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 jsxs23 } from "react/jsx-runtime";
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__ */ jsxs23(
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 jsxs24 } from "react/jsx-runtime";
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__ */ jsxs24(SheetPortal, { children: [
5494
+ return /* @__PURE__ */ jsxs25(SheetPortal, { children: [
5322
5495
  /* @__PURE__ */ jsx46(SheetOverlay, {}),
5323
- /* @__PURE__ */ jsxs24(
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__ */ jsxs24(SheetPrimitive.Close, { className: "absolute top-4 right-4 inline-flex size-8 items-center justify-center rounded-full text-icon-subtle-default opacity-70 transition-opacity hover:opacity-100 hover:bg-background-hover-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong focus-visible:outline-hidden disabled:pointer-events-none", children: [
5339
- /* @__PURE__ */ jsx46(XIcon2, { className: "size-4" }),
5340
- /* @__PURE__ */ jsx46("span", { className: "sr-only", children: "Close" })
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 React12 from "react";
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 React10 from "react";
5582
+ import * as React11 from "react";
5404
5583
  var MOBILE_BREAKPOINT = 768;
5405
5584
  function useIsMobile() {
5406
- const [isMobile, setIsMobile] = React10.useState(void 0);
5407
- React10.useEffect(() => {
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 React11 from "react";
5616
+ import * as React12 from "react";
5438
5617
  import { Tooltip as TooltipPrimitive } from "radix-ui";
5439
- import { jsx as jsx48, jsxs as jsxs25 } from "react/jsx-runtime";
5440
- var TooltipModeContext = React11.createContext("tooltip");
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 = React11.useContext(TooltipModeContext);
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 = React11.useContext(TooltipModeContext);
5675
+ const mode = React12.useContext(TooltipModeContext);
5497
5676
  if (mode === "drawer") {
5498
- return /* @__PURE__ */ jsxs25(DrawerContent, { "data-slot": "tooltip-content", "data-variant": variant, children: [
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__ */ jsxs25(
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 jsxs26 } from "react/jsx-runtime";
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 = React12.createContext(null);
5713
+ var SidebarContext = React13.createContext(null);
5535
5714
  function useSidebar() {
5536
- const context = React12.useContext(SidebarContext);
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] = React12.useState(false);
5560
- const [_open, _setOpen] = React12.useState(defaultOpen);
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 = React12.useCallback(
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 = React12.useCallback(() => {
5753
+ const toggleSidebar = React13.useCallback(() => {
5575
5754
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
5576
5755
  }, [isMobile, setOpen, setOpenMobile]);
5577
- React12.useEffect(() => {
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 = React12.useMemo(
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__ */ jsxs26(
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__ */ jsxs26(SheetHeader, { className: "sr-only", children: [
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__ */ jsxs26(
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__ */ jsxs26(
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__ */ jsxs26(Tooltip, { children: [
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__ */ jsxs26(
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 React13 from "react";
6354
+ import * as React14 from "react";
6176
6355
  import { Slider as SliderPrimitive } from "radix-ui";
6177
- import { jsx as jsx50, jsxs as jsxs27 } from "react/jsx-runtime";
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 = React13.useMemo(
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__ */ jsxs27(
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 React14 from "react";
6647
+ import * as React16 from "react";
6293
6648
  import { Minus, Plus } from "lucide-react";
6294
- import { jsx as jsx52, jsxs as jsxs28 } from "react/jsx-runtime";
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] = React14.useState(
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] = React14.useState(
6682
+ const [displayString, setDisplayString] = React16.useState(
6334
6683
  formatValue(currentValue, decimalPlaces)
6335
6684
  );
6336
- const [isFocused, setIsFocused] = React14.useState(false);
6337
- React14.useEffect(() => {
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__ */ jsxs28(
6388
- InputGroup,
6736
+ return /* @__PURE__ */ jsxs30(
6737
+ "div",
6389
6738
  {
6390
6739
  "data-slot": "stepper",
6391
6740
  "data-disabled": disabled || void 0,
6392
- className: cn("w-32", container, className),
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__ */ jsx52(InputGroupAddon, { align: "inline-start", children: /* @__PURE__ */ jsx52(
6395
- InputGroupButton,
6751
+ /* @__PURE__ */ jsx53(
6752
+ Button,
6396
6753
  {
6397
- size: buttonSize,
6398
- variant: "secondary",
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__ */ jsx52(Minus, { className: iconClass })
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__ */ jsxs28(InputGroupAddon, { align: "inline-end", children: [
6428
- /* @__PURE__ */ jsx52(InputGroupText, { children: "USDT" }),
6429
- /* @__PURE__ */ jsx52(
6430
- InputGroupButton,
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
- size: buttonSize,
6433
- variant: "secondary",
6434
- onClick: handleIncrement,
6435
- disabled: disabled || currentValue >= max,
6436
- "aria-label": "Increase value",
6437
- children: /* @__PURE__ */ jsx52(Plus, { className: iconClass })
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 jsx53 } from "react/jsx-runtime";
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__ */ jsx53(
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__ */ jsx53(
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 jsx54 } from "react/jsx-runtime";
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__ */ jsx54(
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__ */ jsx54(
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__ */ jsx54(
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__ */ jsx54(
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__ */ jsx54(
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__ */ jsx54(
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__ */ jsx54(
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__ */ jsx54(
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__ */ jsx54(
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 jsx55 } from "react/jsx-runtime";
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__ */ jsx55(
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__ */ jsx55(
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__ */ jsx55(
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__ */ jsx55(
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 jsx56 } from "react/jsx-runtime";
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-hover-default hover:text-text-prominent-default 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]:bg-background-hover-default data-[state=on]:border-transparent data-[state=on]:text-text-brand-selected [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
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__ */ jsx56(
7295
+ return /* @__PURE__ */ jsx58(
6729
7296
  TogglePrimitive.Root,
6730
7297
  __spreadValues({
6731
7298
  "data-slot": "toggle",
6732
- className: cn(toggleVariants({ variant, size, className }))
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 React15 from "react";
7305
+ import * as React18 from "react";
6739
7306
  import { ToggleGroup as ToggleGroupPrimitive } from "radix-ui";
6740
- import { jsx as jsx57 } from "react/jsx-runtime";
6741
- var ToggleGroupContext = React15.createContext({
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__ */ jsx57(
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__ */ jsx57(ToggleGroupContext.Provider, { value: { variant, size, spacing }, children })
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 = React15.useContext(ToggleGroupContext);
6790
- return /* @__PURE__ */ jsx57(
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
- "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]:data-[variant=outline]:border-l-0 data-[spacing=0]:data-[variant=outline]:first:border-l data-[spacing=0]:data-[variant=outline]:data-[state=on]:border-l data-[spacing=0]:data-[variant=outline]:data-[state=on]:border-border-brand-selected",
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 jsx58, jsxs as jsxs29 } from "react/jsx-runtime";
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__ */ jsxs29(Card, { className: "w-80 shrink-0 overflow-hidden rounded-md shadow-sm px-5 py-5 items-center gap-3", children: [
6831
- /* @__PURE__ */ jsxs29("div", { className: "relative flex items-center justify-center py-2", children: [
6832
- /* @__PURE__ */ jsx58(
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__ */ jsx58(
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__ */ jsx58("p", { className: "text-lg font-semibold text-on-prominent", children: titleText }),
6851
- /* @__PURE__ */ jsxs29("p", { className: `flex items-baseline gap-1.5 ${amountColorClass}`, children: [
6852
- /* @__PURE__ */ jsx58("span", { className: "font-display text-4xl font-semibold tabular-nums tracking-tight", children: signedAmount }),
6853
- /* @__PURE__ */ jsx58("span", { className: "text-lg font-semibold", children: currency })
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__ */ jsxs29("div", { className: "flex items-center gap-2", children: [
6856
- /* @__PURE__ */ jsxs29(Badge, { variant: "tint-neutral", size: "sm", children: [
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__ */ jsxs29(Fragment3, { children: [
6859
- /* @__PURE__ */ jsx58("span", { "aria-hidden": true, className: "h-3 w-px bg-border-prominent/40 mx-1" }),
6860
- /* @__PURE__ */ jsx58("span", { className: "tabular-nums", children: pickedDigit })
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__ */ jsx58(Badge, { variant: "tint-neutral", size: "sm", children: duration })
7424
+ /* @__PURE__ */ jsx60(Badge, { variant: "tint-neutral", size: "sm", children: duration })
6864
7425
  ] }),
6865
- /* @__PURE__ */ jsxs29("div", { className: "w-full pt-2", children: [
6866
- ctaMode === "next-round" && /* @__PURE__ */ jsx58(Button, { className: "w-full", children: "Next round" }),
6867
- ctaMode === "go-again" && /* @__PURE__ */ jsx58(Button, { className: "w-full", children: "Go again" }),
6868
- ctaMode === "conversion" && /* @__PURE__ */ jsxs29("div", { className: "w-full flex flex-col gap-3", children: [
6869
- /* @__PURE__ */ jsx58("p", { className: "text-center text-base font-semibold text-on-prominent", children: "Ready to play for real?" }),
6870
- /* @__PURE__ */ jsx58(Button, { className: "w-full", children: "Deposit now" }),
6871
- /* @__PURE__ */ jsx58(Button, { variant: "secondary", className: "w-full", children: "Stay in demo" })
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__ */ jsxs29(Card, { className: "w-80 shrink-0 overflow-hidden rounded-md shadow-sm px-5 py-6 items-center gap-4", children: [
6883
- /* @__PURE__ */ jsxs29("div", { className: "flex flex-col items-center gap-2 text-center", children: [
6884
- /* @__PURE__ */ jsx58("p", { className: "text-lg font-semibold text-on-prominent", children: title }),
6885
- /* @__PURE__ */ jsx58("p", { className: "text-sm text-on-subtle", children: body })
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__ */ jsxs29("div", { className: "w-full flex flex-col gap-2", children: [
6888
- /* @__PURE__ */ jsx58(Button, { className: "w-full", children: primaryLabel }),
6889
- /* @__PURE__ */ jsx58(Button, { variant: "secondary", className: "w-full", children: secondaryLabel })
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 jsx59, jsxs as jsxs30 } from "react/jsx-runtime";
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__ */ jsx59("div", { className: "w-full min-w-80 max-w-layout-diagram-small rounded-md overflow-hidden bg-prominent", children: /* @__PURE__ */ jsxs30("header", { className: "flex items-center gap-2 border-b border-border-subtle bg-prominent px-layout-margin-inline py-3", children: [
6906
- onBack && /* @__PURE__ */ jsx59(NavigationButton, { type: "button", size: "md", "aria-label": "Back", onClick: onBack, children: /* @__PURE__ */ jsx59(ArrowLeft2, { className: "size-5" }) }),
6907
- /* @__PURE__ */ jsxs30("div", { className: "flex min-w-0 flex-1 items-center justify-center gap-2", children: [
6908
- badge && /* @__PURE__ */ jsx59(Badge, { variant: (_a = badge.variant) != null ? _a : "tint-warning", size: "sm", children: badge.label }),
6909
- /* @__PURE__ */ jsx59("span", { className: "font-display font-semibold tabular-nums text-on-prominent", children: balance.amount }),
6910
- /* @__PURE__ */ jsx59("span", { className: "text-sm text-on-subtle", children: balance.currency })
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__ */ jsxs30("div", { className: "flex shrink-0 items-center gap-1", children: [
6913
- history && /* @__PURE__ */ jsx59(HistoryButton, __spreadValues({}, history)),
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__ */ jsxs30("div", { className: "relative inline-flex", children: [
6927
- /* @__PURE__ */ jsx59(NavigationButton, { type: "button", size: "md", "aria-label": ariaLabel, onClick, children: /* @__PURE__ */ jsx59(History, { className: "size-5" }) }),
6928
- show && /* @__PURE__ */ jsx59(
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 jsx60, jsxs as jsxs31 } from "react/jsx-runtime";
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__ */ jsx60("div", { className: "@container w-full", children: /* @__PURE__ */ jsxs31("div", { className: "flex flex-col @[600px]:flex-row gap-8 @[600px]:gap-12", children: [
6955
- /* @__PURE__ */ jsxs31("div", { className: "flex flex-col gap-4 flex-1 @[600px]:max-w-xs", children: [
6956
- /* @__PURE__ */ jsx60("span", { className: "text-xs font-body font-semibold tracking-widest uppercase text-on-subtle", children: eyebrow }),
6957
- /* @__PURE__ */ jsx60("h2", { className: "text-4xl @[600px]:text-6xl font-semibold font-display text-on-prominent tracking-tight", children: title }),
6958
- intro && /* @__PURE__ */ jsx60("p", { className: "text-base font-body text-on-subtle", children: intro })
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__ */ jsx60("div", { className: "flex-1", children: /* @__PURE__ */ jsx60(
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__ */ jsxs31(AccordionItem, { value, children: [
6968
- /* @__PURE__ */ jsx60(AccordionPrimitive2.Header, { className: "flex", children: /* @__PURE__ */ jsxs31(
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__ */ jsxs31("span", { className: "flex items-baseline gap-4", children: [
6974
- /* @__PURE__ */ jsx60("span", { className: "text-sm font-body text-on-subtle shrink-0 w-6", children: String(i + 1).padStart(2, "0") }),
6975
- /* @__PURE__ */ jsx60("span", { className: "text-lg @[600px]:text-xl font-semibold font-display text-on-prominent", children: question })
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__ */ jsx60("span", { className: cn(
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__ */ jsx60(Plus2, { className: cn(
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__ */ jsx60(AccordionContent, { children: /* @__PURE__ */ jsx60("p", { className: "text-base font-body text-on-subtle pl-10 pb-4", children: answer }) })
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__ */ jsxs31("div", { className: `w-full flex flex-col ${gapClass}`, children: [
7001
- /* @__PURE__ */ jsxs31("div", { className: `flex flex-col ${headerGapClass} items-center w-full`, children: [
7002
- /* @__PURE__ */ jsx60("span", { className: "text-sm text-on-subtle font-body", children: eyebrow }),
7003
- /* @__PURE__ */ jsx60("h2", { className: headingClass, children: title }),
7004
- intro && /* @__PURE__ */ jsx60("p", { className: "text-lg text-on-subtle font-body text-center", children: intro })
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__ */ jsx60(
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__ */ jsxs31(AccordionItem, { value, children: [
7014
- /* @__PURE__ */ jsx60(AccordionTrigger, { className: "text-base font-medium font-body text-on-prominent hover:no-underline", children: question }),
7015
- /* @__PURE__ */ jsx60(AccordionContent, { children: /* @__PURE__ */ jsx60("p", { className: "text-sm text-on-subtle font-body pb-4", children: answer }) })
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__ */ jsxs31("div", { className: `flex flex-col gap-6 items-center w-full bg-subtle rounded-xl ${helpCardPaddingClass}`, children: [
7020
- /* @__PURE__ */ jsxs31("div", { className: "flex flex-col gap-2 w-full", children: [
7021
- /* @__PURE__ */ jsx60("h3", { className: helpTitleClass, children: helpCard.title }),
7022
- /* @__PURE__ */ jsx60("p", { className: "text-base text-on-subtle font-body", children: helpCard.body })
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__ */ jsx60(Button, { size: "sm", onClick: helpCard.onCtaClick, children: helpCard.ctaLabel })
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 ArrowRight2, ArrowUpRight } from "lucide-react";
7031
- import { jsx as jsx61, jsxs as jsxs32 } from "react/jsx-runtime";
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__ */ jsx61("div", { className: "w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent", children: /* @__PURE__ */ jsxs32("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: [
7043
- /* @__PURE__ */ jsxs32("div", { className: "flex flex-col items-center gap-6 w-full", children: [
7044
- tagline && /* @__PURE__ */ jsx61(TaglinePill, __spreadValues({}, tagline)),
7045
- /* @__PURE__ */ jsx61("h1", { className: "text-5xl font-semibold font-display tracking-tight text-on-prominent text-center", children: heading }),
7046
- /* @__PURE__ */ jsx61("p", { className: "text-lg font-body text-on-subtle text-center", children: body })
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__ */ jsxs32(Button, { size: "sm", onClick: primaryCta.onClick, children: [
7609
+ /* @__PURE__ */ jsxs35(Button, { size: "sm", onClick: primaryCta.onClick, children: [
7049
7610
  primaryCta.label,
7050
- primaryCta.trailingArrow !== false && /* @__PURE__ */ jsx61(ArrowRight2, { className: "size-4" })
7611
+ primaryCta.trailingArrow !== false && /* @__PURE__ */ jsx63(ArrowRight3, { className: "size-4" })
7051
7612
  ] })
7052
7613
  ] }) });
7053
7614
  }
7054
- return /* @__PURE__ */ jsx61("div", { className: "w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent", children: /* @__PURE__ */ jsxs32("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: [
7055
- /* @__PURE__ */ jsxs32("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: [
7056
- /* @__PURE__ */ jsxs32("div", { className: "flex flex-col gap-5 min-[600px]:gap-6 items-center min-[600px]:items-start w-full", children: [
7057
- tagline && /* @__PURE__ */ jsx61(TaglinePill, __spreadProps(__spreadValues({}, tagline), { responsive: true })),
7058
- /* @__PURE__ */ jsx61("h1", { className: "text-4xl min-[600px]:text-5xl font-semibold font-display tracking-tight text-on-prominent", children: heading }),
7059
- /* @__PURE__ */ jsx61("p", { className: "text-lg font-body text-on-subtle", children: body })
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__ */ jsxs32("div", { className: "flex items-center justify-center min-[600px]:justify-start gap-2", children: [
7062
- /* @__PURE__ */ jsx61(Button, { size: "sm", onClick: primaryCta.onClick, children: primaryCta.label }),
7063
- secondaryCta && /* @__PURE__ */ jsx61(Button, { variant: "secondary", size: "sm", onClick: secondaryCta.onClick, children: secondaryCta.label })
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__ */ jsx61("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 })
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__ */ jsxs32("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: [
7075
- /* @__PURE__ */ jsx61("span", { className: "size-1.5 rounded-full bg-semantic-win shrink-0", "aria-hidden": "true" }),
7076
- responsive && suffix ? /* @__PURE__ */ jsxs32("span", { className: "text-sm font-body text-on-prominent whitespace-nowrap", children: [
7077
- /* @__PURE__ */ jsxs32("span", { className: "hidden min-[600px]:inline", children: [
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__ */ jsx61("span", { className: "text-on-subtle", children: " \xB7 " })
7640
+ /* @__PURE__ */ jsx63("span", { className: "text-on-subtle", children: " \xB7 " })
7080
7641
  ] }),
7081
- /* @__PURE__ */ jsx61("span", { className: "text-on-subtle min-[600px]:text-on-prominent", children: suffix })
7082
- ] }) : /* @__PURE__ */ jsxs32("span", { className: "text-sm font-body text-on-prominent whitespace-nowrap", children: [
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__ */ jsx61("span", { className: "text-on-subtle", children: ` \xB7 ${suffix}` })
7645
+ suffix && /* @__PURE__ */ jsx63("span", { className: "text-on-subtle", children: ` \xB7 ${suffix}` })
7085
7646
  ] }),
7086
- /* @__PURE__ */ jsx61(ArrowUpRight, { className: "size-4 text-on-subtle shrink-0", "aria-hidden": "true" })
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 React16 from "react";
7092
- import { jsx as jsx62, jsxs as jsxs33 } from "react/jsx-runtime";
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] = React16.useState("");
7108
- return /* @__PURE__ */ jsxs33("div", { className: "flex flex-col items-center gap-6 w-full", children: [
7109
- /* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-2", children: [
7110
- /* @__PURE__ */ jsx62("img", { src: logoSrc, alt: wordmark, className: "size-8 object-contain" }),
7111
- /* @__PURE__ */ jsx62("span", { className: "font-display font-semibold text-base text-on-prominent tracking-tight", children: wordmark })
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__ */ jsx62("h2", { className: "text-3xl font-semibold font-display text-on-prominent text-center", children: headingText }),
7114
- /* @__PURE__ */ jsx62("div", { className: "flex flex-col gap-3 w-full", children: providers.map((p) => /* @__PURE__ */ jsx62(ProviderButton, { provider: p }, p)) }),
7115
- /* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-3 w-full", children: [
7116
- /* @__PURE__ */ jsx62("div", { className: "flex-1 h-px bg-border-subtle" }),
7117
- /* @__PURE__ */ jsx62("span", { className: "text-sm text-on-subtle font-body", children: "or" }),
7118
- /* @__PURE__ */ jsx62("div", { className: "flex-1 h-px bg-border-subtle" })
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__ */ jsx62("div", { className: "flex items-center gap-2 w-full", children: /* @__PURE__ */ jsx62(
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__ */ jsxs33("p", { className: "text-sm text-on-subtle font-body text-left w-full", children: [
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__ */ jsx62(Link, { size: "sm", href: "#", children: "Terms & Conditions" })
7696
+ /* @__PURE__ */ jsx64(Link, { size: "sm", href: "#", children: "Terms & Conditions" })
7136
7697
  ] }),
7137
- /* @__PURE__ */ jsx62(Button, { size: "md", className: "w-full", onClick: () => onSubmit == null ? void 0 : onSubmit({ email }), children: ctaText }),
7138
- /* @__PURE__ */ jsxs33("p", { className: "text-sm text-on-subtle font-body text-center", children: [
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__ */ jsx62(Link, { size: "sm", href: crossLinkHref, children: footerLinkLabel })
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__ */ jsxs33(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
7149
- /* @__PURE__ */ jsxs33("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "none", className: "shrink-0", children: [
7150
- /* @__PURE__ */ jsx62("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" }),
7151
- /* @__PURE__ */ jsx62("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" }),
7152
- /* @__PURE__ */ jsx62("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" }),
7153
- /* @__PURE__ */ jsx62("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" })
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__ */ jsxs33(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
7159
- /* @__PURE__ */ jsxs33("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "none", className: "shrink-0", children: [
7160
- /* @__PURE__ */ jsx62("circle", { cx: "9", cy: "9", r: "9", fill: "#29B6F6" }),
7161
- /* @__PURE__ */ jsx62("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" }),
7162
- /* @__PURE__ */ jsx62("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" })
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__ */ jsxs33(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
7168
- /* @__PURE__ */ jsx62("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "currentColor", className: "shrink-0", children: /* @__PURE__ */ jsx62("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" }) }),
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 React17 from "react";
7736
+ import * as React20 from "react";
7176
7737
  import { Menu, X as X3 } from "lucide-react";
7177
- import { jsx as jsx63, jsxs as jsxs34 } from "react/jsx-runtime";
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] = React17.useState(false);
7181
- return /* @__PURE__ */ jsx63("div", { className: "w-full border border-border-subtle rounded-md overflow-hidden", children: /* @__PURE__ */ jsxs34("nav", { className: "bg-prominent", children: [
7182
- /* @__PURE__ */ jsxs34("div", { className: "flex items-center justify-between px-layout-margin-inline py-3", children: [
7183
- /* @__PURE__ */ jsxs34("div", { className: "flex items-center gap-6", children: [
7184
- /* @__PURE__ */ jsx63(
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__ */ jsx63(
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__ */ jsx63("div", { className: "hidden min-[600px]:flex items-center gap-1", children: links.map((l) => /* @__PURE__ */ jsx63(Button, { variant: "tertiary", size: "sm", onClick: l.onClick, children: l.label }, l.label)) })
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__ */ jsxs34("div", { className: "hidden min-[600px]:flex items-center gap-2", children: [
7203
- signIn && /* @__PURE__ */ jsx63(Button, { variant: "tertiary", size: "sm", onClick: signIn.onClick, children: (_a = signIn.label) != null ? _a : "Sign in" }),
7204
- signUp && /* @__PURE__ */ jsx63(Button, { size: "sm", onClick: signUp.onClick, children: (_b = signUp.label) != null ? _b : "Sign up" })
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__ */ jsx63(
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__ */ jsx63(X3, { className: "size-4" }) : /* @__PURE__ */ jsx63(Menu, { className: "size-4" })
7776
+ children: mobileMenuOpen ? /* @__PURE__ */ jsx65(X3, { className: "size-4" }) : /* @__PURE__ */ jsx65(Menu, { className: "size-4" })
7216
7777
  }
7217
7778
  )
7218
7779
  ] }),
7219
- mobileMenuOpen && /* @__PURE__ */ jsxs34("div", { className: "min-[600px]:hidden flex flex-col border-t border-border-subtle px-layout-margin-inline py-3 gap-1", children: [
7220
- links.map((l) => /* @__PURE__ */ jsx63(
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__ */ jsxs34("div", { className: "flex flex-col gap-2 pt-3 mt-2 border-t border-border-subtle", children: [
7232
- signIn && /* @__PURE__ */ jsx63(Button, { variant: "secondary", size: "sm", className: "w-full", onClick: signIn.onClick, children: (_c = signIn.label) != null ? _c : "Sign in" }),
7233
- signUp && /* @__PURE__ */ jsx63(Button, { size: "sm", className: "w-full", onClick: signUp.onClick, children: (_d = signUp.label) != null ? _d : "Sign up" })
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 jsx64, jsxs as jsxs35 } from "react/jsx-runtime";
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__ */ jsx64(DefaultEmptyState, { onViewHistory }) : /* @__PURE__ */ jsx64(PositionsList, { positions, onViewHistory });
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__ */ jsxs35(Drawer, { children: [
7253
- /* @__PURE__ */ jsx64(DrawerTrigger, { asChild: true, children: trigger }),
7254
- /* @__PURE__ */ jsxs35(DrawerContent, { className: "p-0 flex flex-col", children: [
7255
- /* @__PURE__ */ jsxs35(DrawerHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0 text-left", children: [
7256
- /* @__PURE__ */ jsx64(DrawerTitle, { className: "text-base font-semibold font-display text-on-prominent", children: sheetTitle }),
7257
- /* @__PURE__ */ jsx64(DrawerClose, { asChild: true, children: /* @__PURE__ */ jsx64(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ jsx64(X4, {}) }) })
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__ */ jsx64(Separator, {}),
7820
+ /* @__PURE__ */ jsx66(Separator, {}),
7260
7821
  body
7261
7822
  ] })
7262
7823
  ] });
7263
7824
  }
7264
- return /* @__PURE__ */ jsxs35(Sheet, { children: [
7265
- /* @__PURE__ */ jsx64(SheetTrigger, { asChild: true, children: trigger }),
7266
- /* @__PURE__ */ jsxs35(SheetContent, { side: "right", showCloseButton: false, className: "p-0 flex flex-col w-80 sm:max-w-xs", children: [
7267
- /* @__PURE__ */ jsxs35(SheetHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0", children: [
7268
- /* @__PURE__ */ jsx64(SheetTitle, { className: "text-base font-semibold font-display text-on-prominent", children: sheetTitle }),
7269
- /* @__PURE__ */ jsx64(SheetClose, { asChild: true, children: /* @__PURE__ */ jsx64(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ jsx64(X4, {}) }) })
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__ */ jsx64(Separator, {}),
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__ */ jsxs35("div", { className: "flex flex-col flex-1 min-h-0", children: [
7281
- /* @__PURE__ */ jsx64(ItemGroup, { className: "min-h-0 overflow-y-auto", children: positions.map((pos, i) => /* @__PURE__ */ jsx64(PositionRow, { position: pos }, i)) }),
7282
- /* @__PURE__ */ jsx64(Separator, {}),
7283
- /* @__PURE__ */ jsx64("div", { className: "shrink-0 flex justify-center py-4", children: /* @__PURE__ */ jsx64(Button, { variant: "tertiary", size: "md", onClick: onViewHistory, children: "View trade history" }) })
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__ */ jsxs35(Item, { size: "sm", children: [
7289
- /* @__PURE__ */ jsxs35(ItemContent, { children: [
7290
- /* @__PURE__ */ jsxs35(ItemTitle, { children: [
7291
- /* @__PURE__ */ jsx64("span", { className: "text-on-prominent", children: label }),
7292
- suffix && /* @__PURE__ */ jsx64("span", { className: "text-on-subtle", children: ` ${suffix}` })
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__ */ jsx64(MetaNote, { market: position.market, duration: position.duration })
7855
+ /* @__PURE__ */ jsx66(MetaNote, { market: position.market, duration: position.duration })
7295
7856
  ] }),
7296
- /* @__PURE__ */ jsx64(ItemActions, { children: /* @__PURE__ */ jsx64(PnlMeta, { pnl: position.pnl, win: position.win, stake: position.stake }) })
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__ */ jsxs35("span", { className: "text-xs text-on-subtle whitespace-nowrap", children: [
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__ */ jsxs35("div", { className: "flex flex-col items-end gap-0.5", children: [
7330
- /* @__PURE__ */ jsx64("span", { className: `font-display font-semibold tabular-nums text-base ${win ? "text-semantic-win" : "text-semantic-loss"}`, children: pnl }),
7331
- /* @__PURE__ */ jsx64("span", { className: "tabular-nums text-xs text-on-subtle", children: stake })
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__ */ jsx64(Empty, { className: "flex min-h-0 flex-1 flex-col justify-center border-none rounded-none p-6 text-center", children: /* @__PURE__ */ jsxs35(EmptyHeader, { className: "gap-4", children: [
7336
- /* @__PURE__ */ jsx64(EmptyMedia, { children: /* @__PURE__ */ jsx64(History2, { className: "size-8 text-on-subtle" }) }),
7337
- /* @__PURE__ */ jsx64(EmptyTitle, { className: "h6 text-on-subtle", children: "No trades yet." }),
7338
- /* @__PURE__ */ jsx64(Button, { variant: "tertiary", size: "md", onClick: onViewHistory, children: "View trade history" })
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 React18 from "react";
7344
- import { jsx as jsx65, jsxs as jsxs36 } from "react/jsx-runtime";
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] = React18.useState(0);
7355
- const [delayed, setDelayed] = React18.useState(false);
7356
- const checkpointsRef = React18.useRef(checkpoints);
7357
- const reachedRef = React18.useRef(reached);
7358
- const doneRef = React18.useRef(done);
7359
- React18.useEffect(() => {
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 = React18.useRef(0);
7365
- const lastAdvanceRef = React18.useRef(0);
7366
- React18.useEffect(() => {
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] = React18.useState(false);
7421
- const [reduced, setReduced] = React18.useState(false);
7422
- React18.useEffect(() => {
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
- React18.useEffect(() => {
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__ */ jsxs36(
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__ */ jsx65(
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__ */ jsx65("path", { d: MONOGRAM_D })
8026
+ children: /* @__PURE__ */ jsx67("path", { d: MONOGRAM_D })
7466
8027
  }
7467
8028
  ),
7468
- !exiting && /* @__PURE__ */ jsxs36("div", { className: "flex w-[200px] flex-col items-start gap-3.5", children: [
7469
- /* @__PURE__ */ jsx65("div", { className: "relative h-2 w-full overflow-hidden rounded-xs bg-on-primary/25", children: /* @__PURE__ */ jsx65(
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__ */ jsx65("span", { "aria-hidden": "true", className: "game-loader-shimmer absolute inset-y-0 left-[-60%] w-[60%]" })
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__ */ jsx65("span", { className: "caption text-on-primary/90", children: delayed ? "Taking longer than usual\u2026" : label })
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,