@trading-game/design-intelligence-layer 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -319,9 +319,12 @@ __export(index_exports, {
319
319
  SidebarSeparator: () => SidebarSeparator,
320
320
  SidebarTrigger: () => SidebarTrigger,
321
321
  Skeleton: () => Skeleton,
322
+ SlideToConfirm: () => SlideToConfirm,
322
323
  Slider: () => Slider,
323
324
  Spinner: () => Spinner,
325
+ Step: () => Step,
324
326
  Stepper: () => Stepper,
327
+ Steps: () => Steps,
325
328
  Switch: () => Switch,
326
329
  Table: () => Table,
327
330
  TableBody: () => TableBody,
@@ -632,7 +635,7 @@ var navigationButtonVariants = (0, import_class_variance_authority2.cva)(
632
635
  {
633
636
  variants: {
634
637
  variant: {
635
- default: "bg-transparent text-icon-prominent-default hover:bg-background-hover-default",
638
+ default: "bg-background-hover-default text-icon-prominent-default hover:bg-background-pressed-default",
636
639
  // Frosted circle for art/hero/brand surfaces — same recipe as
637
640
  // Button's frosted-on-brand: hover thickens the frost, press thins it.
638
641
  "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",
@@ -1676,7 +1679,7 @@ function BreadcrumbPage(_a) {
1676
1679
  role: "link",
1677
1680
  "aria-disabled": "true",
1678
1681
  "aria-current": "page",
1679
- className: cn("type-breadcrumb-page text-text-brand-default", className)
1682
+ className: cn("type-breadcrumb-page text-text-brand-selected", className)
1680
1683
  }, props)
1681
1684
  );
1682
1685
  }
@@ -2029,12 +2032,15 @@ function Calendar(_a) {
2029
2032
  props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-full" : "[&:first-child[data-selected=true]_button]:rounded-l-full",
2030
2033
  defaultClassNames.day
2031
2034
  ),
2035
+ /* The range band rides `brand-selected` — the theme-aware selection
2036
+ family — not the static `brand-container`, which is one value in
2037
+ both themes and reads as a pale strip on the dark canvas. */
2032
2038
  range_start: cn(
2033
- "rounded-l-full [background:var(--background-brand-container)]",
2039
+ "rounded-l-full bg-background-brand-selected",
2034
2040
  defaultClassNames.range_start
2035
2041
  ),
2036
2042
  range_middle: cn("rounded-none", defaultClassNames.range_middle),
2037
- range_end: cn("rounded-r-full [background:var(--background-brand-container)]", defaultClassNames.range_end),
2043
+ range_end: cn("rounded-r-full bg-background-brand-selected", defaultClassNames.range_end),
2038
2044
  today: cn(
2039
2045
  "rounded-full data-[selected=true]:rounded-none",
2040
2046
  defaultClassNames.today
@@ -2154,14 +2160,19 @@ function CalendarDayButton(_a) {
2154
2160
  // Base day cell — circular, calendar's own type, prominent ink,
2155
2161
  // hover = the standard hover glaze.
2156
2162
  "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",
2157
- // Today (when not selected) — brand number + a 4px brand dot below.
2158
- "[&[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",
2159
- // Selected single — the static icy brand chip, circular.
2160
- "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)]",
2161
- // Range — icy band: circular ends (semibold), square middle.
2162
- "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)]",
2163
- "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)]",
2164
- "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)]",
2163
+ // Today (when not selected) — brand number inside a brand hairline
2164
+ // ring. The ring, not a heavier weight, is what makes today legible:
2165
+ // components cap at semibold 600, and 600 vs 400 doesn't read at 14px.
2166
+ "[&[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",
2167
+ // Selected single — the same solid brand disc as a range endpoint:
2168
+ // both mean "the date you picked", so they must not diverge.
2169
+ "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",
2170
+ // Range — the two endpoints are solid brand discs (they're the values
2171
+ // the user actually picked); the days between keep the quiet
2172
+ // brand-selected band. Both ends and band are theme-aware.
2173
+ "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",
2174
+ "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",
2175
+ "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",
2165
2176
  "[&>span]:text-xs [&>span]:opacity-70",
2166
2177
  defaultClassNames.day,
2167
2178
  className
@@ -2189,7 +2200,7 @@ function Card(_a) {
2189
2200
  "data-variant": variant,
2190
2201
  className: cn(
2191
2202
  "flex flex-col gap-4 rounded-2xl py-4",
2192
- 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",
2203
+ 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",
2193
2204
  interactive && "transition-transform duration-base ease-standard sm:hover:-translate-y-0.75 motion-reduce:transition-none motion-reduce:sm:hover:translate-y-0",
2194
2205
  className
2195
2206
  )
@@ -2603,17 +2614,16 @@ function DialogContent(_a) {
2603
2614
  }, props), {
2604
2615
  children: [
2605
2616
  children,
2606
- showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
2607
- import_radix_ui12.Dialog.Close,
2617
+ showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_radix_ui12.Dialog.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2618
+ NavigationButton,
2608
2619
  {
2609
2620
  "data-slot": "dialog-close",
2610
- 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",
2611
- children: [
2612
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react10.XIcon, {}),
2613
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "sr-only", children: "Close" })
2614
- ]
2621
+ size: "sm",
2622
+ "aria-label": "Close",
2623
+ className: "absolute top-4 right-4",
2624
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react10.XIcon, { className: "size-4" })
2615
2625
  }
2616
- )
2626
+ ) })
2617
2627
  ]
2618
2628
  })
2619
2629
  )
@@ -3496,7 +3506,7 @@ function EmptyDescription(_a) {
3496
3506
  __spreadValues({
3497
3507
  "data-slot": "empty-description",
3498
3508
  className: cn(
3499
- "type-empty-description text-text-subtle-default [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-text-brand-default",
3509
+ "type-empty-description text-text-subtle-default [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-text-brand-selected",
3500
3510
  className
3501
3511
  )
3502
3512
  }, props)
@@ -3740,7 +3750,7 @@ function FieldDescription(_a) {
3740
3750
  className: cn(
3741
3751
  "type-field-description text-text-subtle-default group-has-[[data-orientation=horizontal]]/field:text-balance",
3742
3752
  "last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5",
3743
- "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-text-brand-default",
3753
+ "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-text-brand-selected",
3744
3754
  className
3745
3755
  )
3746
3756
  }, props)
@@ -4249,7 +4259,7 @@ function InputOTPSlot(_a) {
4249
4259
  "data-slot": "input-otp-slot",
4250
4260
  "data-active": isActive,
4251
4261
  className: cn(
4252
- "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",
4262
+ "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",
4253
4263
  className
4254
4264
  )
4255
4265
  }, props), {
@@ -4428,7 +4438,7 @@ function ItemDescription(_a) {
4428
4438
  "data-slot": "item-description",
4429
4439
  className: cn(
4430
4440
  "type-item-description line-clamp-2 text-balance text-text-subtle-default",
4431
- "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-text-brand-default",
4441
+ "[&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-text-brand-selected",
4432
4442
  className
4433
4443
  )
4434
4444
  }, props)
@@ -4493,7 +4503,7 @@ var linkVariants = (0, import_class_variance_authority11.cva)(
4493
4503
  // on-brand = static white for links on brand-coloured surfaces
4494
4504
  // (same family naming as Button/Input).
4495
4505
  tone: {
4496
- brand: "text-text-brand-default hover:text-text-brand-hover",
4506
+ brand: "text-text-brand-selected hover:text-text-brand-hover",
4497
4507
  "on-brand": "text-text-on-brand-static hover:text-(--primitive-white-alpha-80)"
4498
4508
  }
4499
4509
  },
@@ -5283,37 +5293,203 @@ function PopoverDescription(_a) {
5283
5293
  }
5284
5294
 
5285
5295
  // components/ui/progress.tsx
5296
+ var React10 = __toESM(require("react"), 1);
5286
5297
  var import_radix_ui23 = require("radix-ui");
5287
5298
  var import_jsx_runtime41 = require("react/jsx-runtime");
5299
+ var BAR_HEIGHTS = {
5300
+ sm: "h-1",
5301
+ md: "h-2",
5302
+ lg: "h-3"
5303
+ };
5304
+ var DOT_WIDTHS = {
5305
+ sm: "w-4",
5306
+ md: "w-6",
5307
+ lg: "w-8"
5308
+ };
5309
+ var RINGS = {
5310
+ sm: { box: 24, r: 11, stroke: 2 },
5311
+ md: { box: 32, r: 15, stroke: 2 },
5312
+ lg: { box: 48, r: 22, stroke: 3 },
5313
+ xl: { box: 112, r: 52, stroke: 7 }
5314
+ };
5288
5315
  function Progress(_a) {
5289
5316
  var _b = _a, {
5290
5317
  className,
5291
- value
5318
+ value,
5319
+ variant = "bar",
5320
+ size = "md",
5321
+ label,
5322
+ valueLabel,
5323
+ segments = 5,
5324
+ timer,
5325
+ direction = "down",
5326
+ onTimerEnd,
5327
+ children
5292
5328
  } = _b, props = __objRest(_b, [
5293
5329
  "className",
5294
- "value"
5330
+ "value",
5331
+ "variant",
5332
+ "size",
5333
+ "label",
5334
+ "valueLabel",
5335
+ "segments",
5336
+ "timer",
5337
+ "direction",
5338
+ "onTimerEnd",
5339
+ "children"
5295
5340
  ]);
5296
- return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
5341
+ const [timerPct, setTimerPct] = React10.useState(
5342
+ timer != null ? direction === "up" ? 0 : 100 : null
5343
+ );
5344
+ const endedRef = React10.useRef(false);
5345
+ React10.useEffect(() => {
5346
+ if (timer == null) {
5347
+ setTimerPct(null);
5348
+ return;
5349
+ }
5350
+ endedRef.current = false;
5351
+ const start = performance.now();
5352
+ let raf = 0;
5353
+ const frame = (now) => {
5354
+ const p = Math.min((now - start) / timer * 100, 100);
5355
+ setTimerPct(direction === "up" ? p : 100 - p);
5356
+ if (p < 100) {
5357
+ raf = requestAnimationFrame(frame);
5358
+ } else if (!endedRef.current) {
5359
+ endedRef.current = true;
5360
+ onTimerEnd == null ? void 0 : onTimerEnd();
5361
+ }
5362
+ };
5363
+ raf = requestAnimationFrame(frame);
5364
+ return () => cancelAnimationFrame(raf);
5365
+ }, [timer, direction]);
5366
+ const timed = timerPct != null;
5367
+ const pct = timed ? timerPct : Math.min(Math.max(value != null ? value : 0, 0), 100);
5368
+ const content = typeof children === "function" ? children(pct) : children;
5369
+ if (variant === "dots") {
5370
+ const filled = Math.round(pct / 100 * segments);
5371
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
5372
+ "div",
5373
+ __spreadProps(__spreadValues({
5374
+ "data-slot": "progress",
5375
+ "data-variant": "dots",
5376
+ role: "progressbar",
5377
+ "aria-valuemin": 0,
5378
+ "aria-valuemax": 100,
5379
+ "aria-valuenow": pct,
5380
+ className: cn("flex items-center gap-1", className)
5381
+ }, props), {
5382
+ children: Array.from({ length: segments }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
5383
+ "span",
5384
+ {
5385
+ "data-slot": "progress-dot",
5386
+ "data-filled": i < filled || void 0,
5387
+ className: cn(
5388
+ "h-1 rounded-full",
5389
+ DOT_WIDTHS[size in BAR_HEIGHTS ? size : "md"],
5390
+ i < filled ? "bg-background-brand-default" : "bg-background-secondary-surface"
5391
+ )
5392
+ },
5393
+ i
5394
+ ))
5395
+ })
5396
+ );
5397
+ }
5398
+ if (variant === "ring") {
5399
+ const { box, r, stroke } = RINGS[size in RINGS ? size : "md"];
5400
+ const circumference = 2 * Math.PI * r;
5401
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
5402
+ "div",
5403
+ __spreadProps(__spreadValues({
5404
+ "data-slot": "progress",
5405
+ "data-variant": "ring",
5406
+ role: "progressbar",
5407
+ "aria-valuemin": 0,
5408
+ "aria-valuemax": 100,
5409
+ "aria-valuenow": pct,
5410
+ className: cn("relative inline-grid place-items-center", className),
5411
+ style: { width: box, height: box }
5412
+ }, props), {
5413
+ children: [
5414
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(
5415
+ "svg",
5416
+ {
5417
+ viewBox: `0 0 ${box} ${box}`,
5418
+ className: "absolute inset-0 -rotate-90",
5419
+ "aria-hidden": true,
5420
+ children: [
5421
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
5422
+ "circle",
5423
+ {
5424
+ cx: box / 2,
5425
+ cy: box / 2,
5426
+ r,
5427
+ fill: "none",
5428
+ className: "stroke-border-default-default",
5429
+ strokeWidth: stroke
5430
+ }
5431
+ ),
5432
+ pct > 0 && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
5433
+ "circle",
5434
+ {
5435
+ "data-slot": "progress-ring-fill",
5436
+ cx: box / 2,
5437
+ cy: box / 2,
5438
+ r,
5439
+ fill: "none",
5440
+ className: cn(
5441
+ "stroke-background-brand-default",
5442
+ !timed && "transition-[stroke-dashoffset] duration-slow ease-linear"
5443
+ ),
5444
+ strokeWidth: stroke,
5445
+ strokeLinecap: "round",
5446
+ strokeDasharray: circumference,
5447
+ strokeDashoffset: circumference * (1 - pct / 100)
5448
+ }
5449
+ )
5450
+ ]
5451
+ }
5452
+ ),
5453
+ content != null && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "type-progress-value relative text-text-prominent-default", children: content })
5454
+ ]
5455
+ })
5456
+ );
5457
+ }
5458
+ const bar = /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
5297
5459
  import_radix_ui23.Progress.Root,
5298
5460
  __spreadProps(__spreadValues({
5299
5461
  "data-slot": "progress",
5462
+ "data-variant": "bar",
5463
+ value: pct,
5300
5464
  className: cn(
5301
- // One track spec, shared with Slider: h-2, full radius, secondary
5465
+ // One track spec, shared with Slider: rounded-full, secondary
5302
5466
  // surface, solid brand fill.
5303
- "relative h-2 w-full overflow-hidden rounded-full bg-background-secondary-surface",
5304
- className
5467
+ "relative w-full overflow-hidden rounded-full bg-background-secondary-surface",
5468
+ BAR_HEIGHTS[size in BAR_HEIGHTS ? size : "md"],
5469
+ label == null && valueLabel == null && className
5305
5470
  )
5306
5471
  }, props), {
5307
5472
  children: /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
5308
5473
  import_radix_ui23.Progress.Indicator,
5309
5474
  {
5310
5475
  "data-slot": "progress-indicator",
5311
- className: "h-full w-full flex-1 bg-background-brand-default transition-all",
5312
- style: { transform: `translateX(-${100 - (value || 0)}%)` }
5476
+ className: cn(
5477
+ "h-full w-full flex-1 rounded-full bg-background-brand-default",
5478
+ !timed && "transition-transform duration-slow ease-linear"
5479
+ ),
5480
+ style: { transform: `translateX(-${100 - pct}%)` }
5313
5481
  }
5314
5482
  )
5315
5483
  })
5316
5484
  );
5485
+ if (label == null && valueLabel == null) return bar;
5486
+ return /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { "data-slot": "progress-meter", className: cn("flex w-full flex-col gap-1.5", className), children: [
5487
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)("div", { className: "flex items-baseline justify-between gap-3", children: [
5488
+ label != null && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "type-progress-label text-text-prominent-default", children: label }),
5489
+ valueLabel != null && /* @__PURE__ */ (0, import_jsx_runtime41.jsx)("span", { className: "type-progress-label ml-auto text-text-subtle-default tabular-nums", children: valueLabel })
5490
+ ] }),
5491
+ bar
5492
+ ] });
5317
5493
  }
5318
5494
 
5319
5495
  // components/ui/profile-photo.tsx
@@ -5459,7 +5635,7 @@ function RadioGroupItem(_a) {
5459
5635
  __spreadProps(__spreadValues({
5460
5636
  "data-slot": "radio-group-item",
5461
5637
  className: cn(
5462
- "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",
5638
+ "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",
5463
5639
  className
5464
5640
  )
5465
5641
  }, props), {
@@ -5468,7 +5644,7 @@ function RadioGroupItem(_a) {
5468
5644
  {
5469
5645
  "data-slot": "radio-group-indicator",
5470
5646
  className: "relative flex items-center justify-center",
5471
- children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_lucide_react21.CircleIcon, { className: "absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-background-brand-default text-background-brand-default" })
5647
+ children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_lucide_react21.CircleIcon, { className: "absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2 fill-text-brand-selected text-background-brand-default" })
5472
5648
  }
5473
5649
  )
5474
5650
  })
@@ -5651,10 +5827,16 @@ function SheetContent(_a) {
5651
5827
  }, props), {
5652
5828
  children: [
5653
5829
  children,
5654
- showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(import_radix_ui26.Dialog.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: [
5655
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react23.XIcon, { className: "size-4" }),
5656
- /* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "sr-only", children: "Close" })
5657
- ] })
5830
+ showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_radix_ui26.Dialog.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
5831
+ NavigationButton,
5832
+ {
5833
+ "data-slot": "sheet-close",
5834
+ size: "sm",
5835
+ "aria-label": "Close",
5836
+ className: "absolute top-4 right-4",
5837
+ children: /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(import_lucide_react23.XIcon, { className: "size-4" })
5838
+ }
5839
+ ) })
5658
5840
  ]
5659
5841
  })
5660
5842
  )
@@ -5710,17 +5892,17 @@ function SheetDescription(_a) {
5710
5892
  }
5711
5893
 
5712
5894
  // components/ui/sidebar.tsx
5713
- var React12 = __toESM(require("react"), 1);
5895
+ var React13 = __toESM(require("react"), 1);
5714
5896
  var import_class_variance_authority13 = require("class-variance-authority");
5715
5897
  var import_lucide_react24 = require("lucide-react");
5716
5898
  var import_radix_ui28 = require("radix-ui");
5717
5899
 
5718
5900
  // hooks/use-mobile.ts
5719
- var React10 = __toESM(require("react"), 1);
5901
+ var React11 = __toESM(require("react"), 1);
5720
5902
  var MOBILE_BREAKPOINT = 768;
5721
5903
  function useIsMobile() {
5722
- const [isMobile, setIsMobile] = React10.useState(void 0);
5723
- React10.useEffect(() => {
5904
+ const [isMobile, setIsMobile] = React11.useState(void 0);
5905
+ React11.useEffect(() => {
5724
5906
  const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
5725
5907
  const onChange = () => {
5726
5908
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
@@ -5750,10 +5932,10 @@ function Skeleton(_a) {
5750
5932
  }
5751
5933
 
5752
5934
  // components/ui/tooltip.tsx
5753
- var React11 = __toESM(require("react"), 1);
5935
+ var React12 = __toESM(require("react"), 1);
5754
5936
  var import_radix_ui27 = require("radix-ui");
5755
5937
  var import_jsx_runtime48 = require("react/jsx-runtime");
5756
- var TooltipModeContext = React11.createContext("tooltip");
5938
+ var TooltipModeContext = React12.createContext("tooltip");
5757
5939
  function TooltipProvider(_a) {
5758
5940
  var _b = _a, {
5759
5941
  delayDuration = 0
@@ -5787,7 +5969,7 @@ function TooltipTrigger(_a) {
5787
5969
  } = _b, props = __objRest(_b, [
5788
5970
  "children"
5789
5971
  ]);
5790
- const mode = React11.useContext(TooltipModeContext);
5972
+ const mode = React12.useContext(TooltipModeContext);
5791
5973
  if (mode === "drawer") {
5792
5974
  return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(DrawerTrigger, __spreadProps(__spreadValues({ "data-slot": "tooltip-trigger" }, props), { children }));
5793
5975
  }
@@ -5809,7 +5991,7 @@ function TooltipContent(_a) {
5809
5991
  "closeLabel",
5810
5992
  "children"
5811
5993
  ]);
5812
- const mode = React11.useContext(TooltipModeContext);
5994
+ const mode = React12.useContext(TooltipModeContext);
5813
5995
  if (mode === "drawer") {
5814
5996
  return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(DrawerContent, { "data-slot": "tooltip-content", "data-variant": variant, children: [
5815
5997
  /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(DrawerHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(DrawerTitle, { children: title }) }),
@@ -5847,9 +6029,9 @@ var SIDEBAR_WIDTH = "16rem";
5847
6029
  var SIDEBAR_WIDTH_MOBILE = "18rem";
5848
6030
  var SIDEBAR_WIDTH_ICON = "3rem";
5849
6031
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
5850
- var SidebarContext = React12.createContext(null);
6032
+ var SidebarContext = React13.createContext(null);
5851
6033
  function useSidebar() {
5852
- const context = React12.useContext(SidebarContext);
6034
+ const context = React13.useContext(SidebarContext);
5853
6035
  if (!context) {
5854
6036
  throw new Error("useSidebar must be used within a SidebarProvider.");
5855
6037
  }
@@ -5872,10 +6054,10 @@ function SidebarProvider(_a) {
5872
6054
  "children"
5873
6055
  ]);
5874
6056
  const isMobile = useIsMobile();
5875
- const [openMobile, setOpenMobile] = React12.useState(false);
5876
- const [_open, _setOpen] = React12.useState(defaultOpen);
6057
+ const [openMobile, setOpenMobile] = React13.useState(false);
6058
+ const [_open, _setOpen] = React13.useState(defaultOpen);
5877
6059
  const open = openProp != null ? openProp : _open;
5878
- const setOpen = React12.useCallback(
6060
+ const setOpen = React13.useCallback(
5879
6061
  (value) => {
5880
6062
  const openState = typeof value === "function" ? value(open) : value;
5881
6063
  if (setOpenProp) {
@@ -5887,10 +6069,10 @@ function SidebarProvider(_a) {
5887
6069
  },
5888
6070
  [setOpenProp, open]
5889
6071
  );
5890
- const toggleSidebar = React12.useCallback(() => {
6072
+ const toggleSidebar = React13.useCallback(() => {
5891
6073
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
5892
6074
  }, [isMobile, setOpen, setOpenMobile]);
5893
- React12.useEffect(() => {
6075
+ React13.useEffect(() => {
5894
6076
  const handleKeyDown = (event) => {
5895
6077
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
5896
6078
  event.preventDefault();
@@ -5901,7 +6083,7 @@ function SidebarProvider(_a) {
5901
6083
  return () => window.removeEventListener("keydown", handleKeyDown);
5902
6084
  }, [toggleSidebar]);
5903
6085
  const state = open ? "expanded" : "collapsed";
5904
- const contextValue = React12.useMemo(
6086
+ const contextValue = React13.useMemo(
5905
6087
  () => ({
5906
6088
  state,
5907
6089
  open,
@@ -6488,7 +6670,7 @@ function SidebarMenuSubButton(_a) {
6488
6670
  }
6489
6671
 
6490
6672
  // components/ui/slider.tsx
6491
- var React13 = __toESM(require("react"), 1);
6673
+ var React14 = __toESM(require("react"), 1);
6492
6674
  var import_radix_ui29 = require("radix-ui");
6493
6675
  var import_jsx_runtime50 = require("react/jsx-runtime");
6494
6676
  function Slider(_a) {
@@ -6505,7 +6687,7 @@ function Slider(_a) {
6505
6687
  "min",
6506
6688
  "max"
6507
6689
  ]);
6508
- const _values = React13.useMemo(
6690
+ const _values = React14.useMemo(
6509
6691
  () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
6510
6692
  [value, defaultValue, min, max]
6511
6693
  );
@@ -6598,10 +6780,186 @@ var Toaster = (_a) => {
6598
6780
  );
6599
6781
  };
6600
6782
 
6601
- // components/ui/stepper.tsx
6602
- var React14 = __toESM(require("react"), 1);
6783
+ // components/ui/slide-to-confirm.tsx
6784
+ var React15 = __toESM(require("react"), 1);
6603
6785
  var import_lucide_react26 = require("lucide-react");
6604
6786
  var import_jsx_runtime52 = require("react/jsx-runtime");
6787
+ var CONFIRM_AT = 0.9;
6788
+ var HANDLE = 46;
6789
+ var INSET2 = 5;
6790
+ function SlideToConfirm(_a) {
6791
+ var _b = _a, {
6792
+ onConfirm,
6793
+ label = "Slide to confirm",
6794
+ confirmedLabel = "Confirmed",
6795
+ disabled = false,
6796
+ confirmed: controlledConfirmed,
6797
+ className
6798
+ } = _b, props = __objRest(_b, [
6799
+ "onConfirm",
6800
+ "label",
6801
+ "confirmedLabel",
6802
+ "disabled",
6803
+ "confirmed",
6804
+ "className"
6805
+ ]);
6806
+ const trackRef = React15.useRef(null);
6807
+ const [dragX, setDragX] = React15.useState(0);
6808
+ const [dragging, setDragging] = React15.useState(false);
6809
+ const [trackWidth, setTrackWidth] = React15.useState(0);
6810
+ const [internalConfirmed, setInternalConfirmed] = React15.useState(false);
6811
+ const confirmed = controlledConfirmed != null ? controlledConfirmed : internalConfirmed;
6812
+ const firedRef = React15.useRef(false);
6813
+ React15.useEffect(() => {
6814
+ if (controlledConfirmed === false) {
6815
+ setInternalConfirmed(false);
6816
+ setDragX(0);
6817
+ firedRef.current = false;
6818
+ }
6819
+ }, [controlledConfirmed]);
6820
+ React15.useEffect(() => {
6821
+ const track = trackRef.current;
6822
+ if (!track) return;
6823
+ const ro = new ResizeObserver(() => setTrackWidth(track.clientWidth));
6824
+ ro.observe(track);
6825
+ setTrackWidth(track.clientWidth);
6826
+ return () => ro.disconnect();
6827
+ }, []);
6828
+ const maxTravel = Math.max(trackWidth - HANDLE - INSET2 * 2, 0);
6829
+ function confirm() {
6830
+ if (firedRef.current) return;
6831
+ firedRef.current = true;
6832
+ setInternalConfirmed(true);
6833
+ onConfirm == null ? void 0 : onConfirm();
6834
+ }
6835
+ function handlePointerDown(e) {
6836
+ if (disabled || confirmed) return;
6837
+ e.target.setPointerCapture(e.pointerId);
6838
+ setDragging(true);
6839
+ }
6840
+ function handlePointerMove(e) {
6841
+ if (!dragging || disabled || confirmed) return;
6842
+ const track = trackRef.current;
6843
+ if (!track) return;
6844
+ const rect = track.getBoundingClientRect();
6845
+ const x = e.clientX - rect.left - INSET2 - HANDLE / 2;
6846
+ setDragX(Math.min(Math.max(x, 0), maxTravel));
6847
+ }
6848
+ function handlePointerUp() {
6849
+ if (!dragging) return;
6850
+ setDragging(false);
6851
+ if (dragX >= maxTravel * CONFIRM_AT) {
6852
+ setDragX(maxTravel);
6853
+ confirm();
6854
+ } else {
6855
+ setDragX(0);
6856
+ }
6857
+ }
6858
+ function handleKeyDown(e) {
6859
+ if (disabled || confirmed) return;
6860
+ if (e.key === "Enter" || e.key === " ") {
6861
+ e.preventDefault();
6862
+ setDragX(maxTravel);
6863
+ confirm();
6864
+ }
6865
+ }
6866
+ const fillWidth = dragX === 0 ? 0 : dragX + HANDLE;
6867
+ const revealWidth = INSET2 + dragX + HANDLE / 2;
6868
+ const spring = "duration-slow ease-(--primitive-ease-spring)";
6869
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
6870
+ "div",
6871
+ __spreadProps(__spreadValues({
6872
+ ref: trackRef,
6873
+ "data-slot": "slide-to-confirm",
6874
+ "data-confirmed": confirmed || void 0,
6875
+ role: "button",
6876
+ tabIndex: disabled ? -1 : 0,
6877
+ "aria-disabled": disabled || void 0,
6878
+ "aria-label": typeof label === "string" ? label : void 0,
6879
+ onKeyDown: handleKeyDown,
6880
+ className: cn(
6881
+ "relative h-14 w-full touch-none overflow-hidden rounded-full bg-background-secondary-surface select-none",
6882
+ disabled && "pointer-events-none opacity-24",
6883
+ "outline-none focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong",
6884
+ className
6885
+ )
6886
+ }, props), {
6887
+ children: [
6888
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "absolute inset-0 grid place-items-center", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "type-slide-to-confirm text-text-subtle-default", children: label }) }),
6889
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
6890
+ "span",
6891
+ {
6892
+ "aria-hidden": true,
6893
+ "data-slot": "slide-to-confirm-progress",
6894
+ className: cn(
6895
+ "absolute rounded-full bg-background-brand-default",
6896
+ // Confirmed floods the whole track; mid-drag it sits inside the
6897
+ // handle's inset so the two read as one continuous brand shape.
6898
+ confirmed ? "inset-0" : "top-(--inset) bottom-(--inset) left-(--inset)",
6899
+ !dragging && cn("transition-[width]", spring)
6900
+ ),
6901
+ style: {
6902
+ "--inset": `${INSET2}px`,
6903
+ width: confirmed ? "100%" : `${fillWidth}px`
6904
+ }
6905
+ }
6906
+ ),
6907
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
6908
+ "span",
6909
+ {
6910
+ "aria-hidden": true,
6911
+ "data-slot": "slide-to-confirm-reveal",
6912
+ className: cn(
6913
+ "absolute inset-0 grid place-items-center",
6914
+ !dragging && cn("transition-[clip-path]", spring)
6915
+ ),
6916
+ style: {
6917
+ clipPath: confirmed ? "inset(0 round 9999px)" : `inset(0 calc(100% - ${revealWidth}px) 0 0 round 9999px)`
6918
+ },
6919
+ children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("span", { className: "type-slide-to-confirm flex items-center gap-2 text-text-on-brand-static", children: confirmed ? confirmedLabel : label })
6920
+ }
6921
+ ),
6922
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
6923
+ "span",
6924
+ {
6925
+ "data-slot": "slide-to-confirm-handle",
6926
+ "data-confirmed": confirmed || void 0,
6927
+ onPointerDown: handlePointerDown,
6928
+ onPointerMove: handlePointerMove,
6929
+ onPointerUp: handlePointerUp,
6930
+ onPointerCancel: handlePointerUp,
6931
+ className: cn(
6932
+ "absolute top-1/2 z-20 grid size-11.5 place-items-center rounded-full",
6933
+ confirmed ? (
6934
+ // Landed: an inverted disc on the flooded track, glow dropped
6935
+ // — nothing left to drag, so no grab cursor.
6936
+ "bg-background-static-white text-text-brand-default"
6937
+ ) : "cursor-grab bg-background-brand-default text-text-on-brand-static [box-shadow:var(--shadow-brand-glow)] active:cursor-grabbing",
6938
+ !dragging && cn("transition-[translate]", spring),
6939
+ // Idle nudge, per the Refined spec: the handle drifts 10px and
6940
+ // back. Safe because the sweep is 0-width at rest, so there is
6941
+ // nothing behind the handle to expose. Rest only, and reduced
6942
+ // motion turns it off.
6943
+ !dragging && !disabled && !confirmed && dragX === 0 && "animate-slide-confirm-nudge motion-reduce:animate-none"
6944
+ ),
6945
+ style: {
6946
+ left: `${INSET2}px`,
6947
+ // Confirmed pins it to the far end even when the gesture came from
6948
+ // the keyboard, where dragX never moved.
6949
+ translate: `${confirmed ? maxTravel : dragX}px -50%`
6950
+ },
6951
+ children: confirmed ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react26.Check, { className: "size-4.5 [animation:slide-confirm-pop_var(--motion-pop)_var(--primitive-ease-overshoot)]" }) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react26.ArrowRight, { className: "size-4.5" })
6952
+ }
6953
+ )
6954
+ ]
6955
+ })
6956
+ );
6957
+ }
6958
+
6959
+ // components/ui/stepper.tsx
6960
+ var React16 = __toESM(require("react"), 1);
6961
+ var import_lucide_react27 = require("lucide-react");
6962
+ var import_jsx_runtime53 = require("react/jsx-runtime");
6605
6963
  function clamp(value, min, max) {
6606
6964
  return Math.min(Math.max(value, min), max);
6607
6965
  }
@@ -6613,19 +6971,14 @@ function getDecimalPlaces(n) {
6613
6971
  function formatValue(value, decimalPlaces) {
6614
6972
  return decimalPlaces > 0 ? value.toFixed(decimalPlaces) : String(value);
6615
6973
  }
6616
- var stepperSizeConfig = {
6617
- sm: { container: "h-8", buttonSize: "icon-xs", iconClass: "size-3" },
6618
- md: { container: "h-10", buttonSize: "icon-xs", iconClass: "size-3.5" },
6619
- lg: { container: "h-12", buttonSize: "icon-sm", iconClass: "size-4" }
6620
- };
6621
6974
  function Stepper({
6975
+ label,
6622
6976
  value: controlledValue,
6623
6977
  defaultValue = 0,
6624
6978
  onValueChange,
6625
6979
  min = -Infinity,
6626
6980
  max = Infinity,
6627
6981
  step = 1,
6628
- size = "md",
6629
6982
  disabled,
6630
6983
  placeholder,
6631
6984
  className,
@@ -6633,18 +6986,17 @@ function Stepper({
6633
6986
  name,
6634
6987
  "aria-label": ariaLabel
6635
6988
  }) {
6636
- const { container, buttonSize, iconClass } = stepperSizeConfig[size];
6637
6989
  const isControlled = controlledValue !== void 0;
6638
- const [internalValue, setInternalValue] = React14.useState(
6990
+ const [internalValue, setInternalValue] = React16.useState(
6639
6991
  clamp(defaultValue, min, max)
6640
6992
  );
6641
6993
  const currentValue = isControlled ? controlledValue : internalValue;
6642
6994
  const decimalPlaces = getDecimalPlaces(step);
6643
- const [displayString, setDisplayString] = React14.useState(
6995
+ const [displayString, setDisplayString] = React16.useState(
6644
6996
  formatValue(currentValue, decimalPlaces)
6645
6997
  );
6646
- const [isFocused, setIsFocused] = React14.useState(false);
6647
- React14.useEffect(() => {
6998
+ const [isFocused, setIsFocused] = React16.useState(false);
6999
+ React16.useEffect(() => {
6648
7000
  if (!isFocused) {
6649
7001
  setDisplayString(formatValue(currentValue, decimalPlaces));
6650
7002
  }
@@ -6694,68 +7046,293 @@ function Stepper({
6694
7046
  }
6695
7047
  }
6696
7048
  }
6697
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
6698
- InputGroup,
7049
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(
7050
+ "div",
6699
7051
  {
6700
7052
  "data-slot": "stepper",
6701
7053
  "data-disabled": disabled || void 0,
6702
- className: cn("w-32", container, className),
7054
+ className: cn(
7055
+ "flex w-full items-center justify-between gap-4",
7056
+ // No opacity here on purpose. The +/- are Buttons and already carry
7057
+ // their own disabled treatment; dimming the wrapper too multiplied
7058
+ // with theirs (24% × 24% ≈ 6%) and made them all but invisible.
7059
+ // Disabled text takes the disabled ink token instead of a wash.
7060
+ disabled && "pointer-events-none",
7061
+ className
7062
+ ),
6703
7063
  children: [
6704
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(InputGroupAddon, { align: "inline-start", children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
6705
- InputGroupButton,
7064
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7065
+ Button,
6706
7066
  {
6707
- size: buttonSize,
6708
- variant: "secondary",
7067
+ type: "button",
7068
+ variant: "frosted",
7069
+ size: "icon-lg",
6709
7070
  onClick: handleDecrement,
6710
7071
  disabled: disabled || currentValue <= min,
6711
7072
  "aria-label": "Decrease value",
6712
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react26.Minus, { className: iconClass })
6713
- }
6714
- ) }),
6715
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
6716
- InputGroupInput,
6717
- {
6718
- type: "text",
6719
- inputMode: "numeric",
6720
- role: "spinbutton",
6721
- "aria-valuemin": min === -Infinity ? void 0 : min,
6722
- "aria-valuemax": max === Infinity ? void 0 : max,
6723
- "aria-valuenow": currentValue,
6724
- "aria-label": ariaLabel,
6725
- value: displayString,
6726
- onChange: handleInputChange,
6727
- onBlur: handleBlur,
6728
- onFocus: handleFocus,
6729
- onKeyDown: handleKeyDown,
6730
- disabled,
6731
- placeholder,
6732
- id,
6733
- name,
6734
- className: "text-center [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none"
7073
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react27.Minus, {})
6735
7074
  }
6736
7075
  ),
6737
- /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(InputGroupAddon, { align: "inline-end", children: [
6738
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(InputGroupText, { children: "USDT" }),
6739
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
6740
- InputGroupButton,
7076
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)("div", { className: "flex min-w-0 flex-col items-center", children: [
7077
+ label != null && /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7078
+ "span",
7079
+ {
7080
+ className: cn(
7081
+ "type-stepper-stake-label",
7082
+ disabled ? "text-text-disabled-default" : "text-text-subtle-default"
7083
+ ),
7084
+ children: label
7085
+ }
7086
+ ),
7087
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7088
+ "input",
6741
7089
  {
6742
- size: buttonSize,
6743
- variant: "secondary",
6744
- onClick: handleIncrement,
6745
- disabled: disabled || currentValue >= max,
6746
- "aria-label": "Increase value",
6747
- children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_lucide_react26.Plus, { className: iconClass })
7090
+ type: "text",
7091
+ inputMode: "decimal",
7092
+ role: "spinbutton",
7093
+ "aria-valuemin": min === -Infinity ? void 0 : min,
7094
+ "aria-valuemax": max === Infinity ? void 0 : max,
7095
+ "aria-valuenow": currentValue,
7096
+ "aria-label": ariaLabel,
7097
+ value: displayString,
7098
+ onChange: handleInputChange,
7099
+ onBlur: handleBlur,
7100
+ onFocus: handleFocus,
7101
+ onKeyDown: handleKeyDown,
7102
+ disabled,
7103
+ placeholder,
7104
+ id,
7105
+ name,
7106
+ size: Math.max(displayString.length, 1),
7107
+ 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"
6748
7108
  }
6749
7109
  )
6750
- ] })
7110
+ ] }),
7111
+ /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7112
+ Button,
7113
+ {
7114
+ type: "button",
7115
+ variant: "frosted",
7116
+ size: "icon-lg",
7117
+ onClick: handleIncrement,
7118
+ disabled: disabled || currentValue >= max,
7119
+ "aria-label": "Increase value",
7120
+ children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_lucide_react27.Plus, {})
7121
+ }
7122
+ )
6751
7123
  ]
6752
7124
  }
6753
7125
  );
6754
7126
  }
6755
7127
 
7128
+ // components/ui/steps.tsx
7129
+ var React17 = __toESM(require("react"), 1);
7130
+ var import_lucide_react28 = require("lucide-react");
7131
+ var import_jsx_runtime54 = require("react/jsx-runtime");
7132
+ var StepsContext = React17.createContext({ shape: "circle", orientation: "horizontal", size: "md" });
7133
+ function Steps(_a) {
7134
+ var _b = _a, {
7135
+ shape = "circle",
7136
+ orientation = "horizontal",
7137
+ size = "md",
7138
+ className,
7139
+ children
7140
+ } = _b, props = __objRest(_b, [
7141
+ "shape",
7142
+ "orientation",
7143
+ "size",
7144
+ "className",
7145
+ "children"
7146
+ ]);
7147
+ const steps = React17.Children.toArray(children);
7148
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(StepsContext.Provider, { value: { shape, orientation, size }, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7149
+ "ol",
7150
+ __spreadProps(__spreadValues({
7151
+ "data-slot": "steps",
7152
+ "data-shape": shape,
7153
+ "data-orientation": orientation,
7154
+ "data-size": size,
7155
+ className: cn(
7156
+ "flex list-none",
7157
+ orientation === "horizontal" ? "flex-row items-start" : "flex-col",
7158
+ className
7159
+ )
7160
+ }, props), {
7161
+ children: steps.map(
7162
+ (child, index) => React17.isValidElement(child) ? React17.cloneElement(child, {
7163
+ index: index + 1,
7164
+ isFirst: index === 0,
7165
+ isLast: index === steps.length - 1
7166
+ }) : child
7167
+ )
7168
+ })
7169
+ ) });
7170
+ }
7171
+ function Step(_a) {
7172
+ var _b = _a, {
7173
+ state = "upcoming",
7174
+ icon,
7175
+ title,
7176
+ description,
7177
+ tag,
7178
+ index,
7179
+ isFirst = false,
7180
+ isLast = false,
7181
+ className
7182
+ } = _b, props = __objRest(_b, [
7183
+ "state",
7184
+ "icon",
7185
+ "title",
7186
+ "description",
7187
+ "tag",
7188
+ "index",
7189
+ "isFirst",
7190
+ "isLast",
7191
+ "className"
7192
+ ]);
7193
+ const { shape, orientation, size } = React17.useContext(StepsContext);
7194
+ const horizontal = orientation === "horizontal";
7195
+ const sm = size === "sm";
7196
+ const indicator = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7197
+ "span",
7198
+ {
7199
+ "data-slot": "step-indicator",
7200
+ className: cn(
7201
+ "type-steps-indicator z-10 grid shrink-0 place-items-center",
7202
+ sm ? "size-6" : "size-8",
7203
+ shape === "circle" ? "rounded-full" : "rounded-md",
7204
+ state === "done" && "bg-background-success-solid text-text-on-status-static",
7205
+ state === "active" && "bg-background-brand-default text-text-on-brand-static",
7206
+ state === "upcoming" && "bg-background-secondary-surface text-text-subtle-default",
7207
+ "[&_svg]:pointer-events-none [&_svg]:shrink-0",
7208
+ sm ? "[&_svg:not([class*='size-'])]:size-3.5" : "[&_svg:not([class*='size-'])]:size-4"
7209
+ ),
7210
+ children: state === "done" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_lucide_react28.Check, {}) : icon != null ? icon : index
7211
+ }
7212
+ );
7213
+ if (horizontal) {
7214
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
7215
+ "li",
7216
+ __spreadProps(__spreadValues({
7217
+ "data-slot": "step",
7218
+ "data-state": state,
7219
+ "aria-current": state === "active" ? "step" : void 0,
7220
+ className: cn("flex min-w-0 flex-1 flex-col items-center", className)
7221
+ }, props), {
7222
+ children: [
7223
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex w-full items-center", children: [
7224
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7225
+ "span",
7226
+ {
7227
+ "aria-hidden": true,
7228
+ "data-slot": "step-connector",
7229
+ className: cn("h-px flex-1", !isFirst && "bg-border-neutral-default")
7230
+ }
7231
+ ),
7232
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: cn(!isFirst && "w-1", "shrink-0") }),
7233
+ indicator,
7234
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: cn(!isLast && "w-1", "shrink-0") }),
7235
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7236
+ "span",
7237
+ {
7238
+ "aria-hidden": true,
7239
+ "data-slot": "step-connector",
7240
+ className: cn("h-px flex-1", !isLast && "bg-border-neutral-default")
7241
+ }
7242
+ )
7243
+ ] }),
7244
+ (title != null || description != null) && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
7245
+ "div",
7246
+ {
7247
+ "data-slot": "step-body",
7248
+ className: cn(
7249
+ "flex min-w-0 flex-col items-center px-1 text-center",
7250
+ sm ? "mt-1" : "mt-1.5"
7251
+ ),
7252
+ children: [
7253
+ title != null && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7254
+ "span",
7255
+ {
7256
+ className: cn(
7257
+ "type-steps-title",
7258
+ state === "upcoming" ? "text-text-subtle-default" : "text-text-prominent-default"
7259
+ ),
7260
+ children: title
7261
+ }
7262
+ ),
7263
+ tag != null && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "type-steps-tag whitespace-nowrap text-text-brand-selected", children: tag }),
7264
+ description != null && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "type-steps-description text-text-subtle-default", children: description })
7265
+ ]
7266
+ }
7267
+ )
7268
+ ]
7269
+ })
7270
+ );
7271
+ }
7272
+ const hasBody = title != null || description != null;
7273
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
7274
+ "li",
7275
+ __spreadProps(__spreadValues({
7276
+ "data-slot": "step",
7277
+ "data-state": state,
7278
+ "aria-current": state === "active" ? "step" : void 0,
7279
+ className: cn(
7280
+ "flex min-w-0",
7281
+ sm ? "gap-2.5" : "gap-3",
7282
+ // Minimum row rhythm so title-only steps still leave a visible
7283
+ // stretch of rail; description steps outgrow it naturally, and the
7284
+ // last step needs none (no connector below it).
7285
+ !isLast && (sm ? "min-h-11" : "min-h-14"),
7286
+ className
7287
+ )
7288
+ }, props), {
7289
+ children: [
7290
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("div", { className: "flex flex-col items-center self-stretch", children: [
7291
+ indicator,
7292
+ !isLast && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7293
+ "span",
7294
+ {
7295
+ "aria-hidden": true,
7296
+ "data-slot": "step-connector",
7297
+ className: "mt-1 mb-1 w-px flex-1 bg-border-neutral-default"
7298
+ }
7299
+ )
7300
+ ] }),
7301
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
7302
+ "div",
7303
+ {
7304
+ "data-slot": "step-body",
7305
+ className: cn("flex min-w-0 flex-col", !isLast && (sm ? "pb-4" : "pb-6")),
7306
+ children: [
7307
+ title != null && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
7308
+ "span",
7309
+ {
7310
+ className: cn(
7311
+ "type-steps-title",
7312
+ state === "upcoming" ? "text-text-subtle-default" : "text-text-prominent-default"
7313
+ ),
7314
+ children: [
7315
+ title,
7316
+ tag != null && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "type-steps-tag ml-2 whitespace-nowrap text-text-brand-selected", children: tag })
7317
+ ]
7318
+ }
7319
+ ),
7320
+ description != null && /* @__PURE__ */ (0, import_jsx_runtime54.jsx)("span", { className: "type-steps-description text-text-subtle-default", children: description }),
7321
+ !hasBody && /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)("span", { className: "sr-only", children: [
7322
+ "Step ",
7323
+ index
7324
+ ] })
7325
+ ]
7326
+ }
7327
+ )
7328
+ ]
7329
+ })
7330
+ );
7331
+ }
7332
+
6756
7333
  // components/ui/switch.tsx
6757
7334
  var import_radix_ui30 = require("radix-ui");
6758
- var import_jsx_runtime53 = require("react/jsx-runtime");
7335
+ var import_jsx_runtime55 = require("react/jsx-runtime");
6759
7336
  function Switch(_a) {
6760
7337
  var _b = _a, {
6761
7338
  className,
@@ -6764,7 +7341,7 @@ function Switch(_a) {
6764
7341
  "className",
6765
7342
  "size"
6766
7343
  ]);
6767
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7344
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
6768
7345
  import_radix_ui30.Switch.Root,
6769
7346
  __spreadProps(__spreadValues({
6770
7347
  "data-slot": "switch",
@@ -6774,7 +7351,7 @@ function Switch(_a) {
6774
7351
  className
6775
7352
  )
6776
7353
  }, props), {
6777
- children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
7354
+ children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
6778
7355
  import_radix_ui30.Switch.Thumb,
6779
7356
  {
6780
7357
  "data-slot": "switch-thumb",
@@ -6788,15 +7365,15 @@ function Switch(_a) {
6788
7365
  }
6789
7366
 
6790
7367
  // components/ui/table.tsx
6791
- var import_jsx_runtime54 = require("react/jsx-runtime");
7368
+ var import_jsx_runtime56 = require("react/jsx-runtime");
6792
7369
  function Table(_a) {
6793
7370
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
6794
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7371
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
6795
7372
  "div",
6796
7373
  {
6797
7374
  "data-slot": "table-container",
6798
7375
  className: "relative w-full overflow-x-auto",
6799
- children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7376
+ children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
6800
7377
  "table",
6801
7378
  __spreadValues({
6802
7379
  "data-slot": "table",
@@ -6808,7 +7385,7 @@ function Table(_a) {
6808
7385
  }
6809
7386
  function TableHeader(_a) {
6810
7387
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
6811
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7388
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
6812
7389
  "thead",
6813
7390
  __spreadValues({
6814
7391
  "data-slot": "table-header",
@@ -6818,7 +7395,7 @@ function TableHeader(_a) {
6818
7395
  }
6819
7396
  function TableBody(_a) {
6820
7397
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
6821
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7398
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
6822
7399
  "tbody",
6823
7400
  __spreadValues({
6824
7401
  "data-slot": "table-body",
@@ -6828,7 +7405,7 @@ function TableBody(_a) {
6828
7405
  }
6829
7406
  function TableFooter(_a) {
6830
7407
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
6831
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7408
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
6832
7409
  "tfoot",
6833
7410
  __spreadValues({
6834
7411
  "data-slot": "table-footer",
@@ -6841,7 +7418,7 @@ function TableFooter(_a) {
6841
7418
  }
6842
7419
  function TableRow(_a) {
6843
7420
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
6844
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7421
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
6845
7422
  "tr",
6846
7423
  __spreadValues({
6847
7424
  "data-slot": "table-row",
@@ -6854,7 +7431,7 @@ function TableRow(_a) {
6854
7431
  }
6855
7432
  function TableHead(_a) {
6856
7433
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
6857
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7434
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
6858
7435
  "th",
6859
7436
  __spreadValues({
6860
7437
  "data-slot": "table-head",
@@ -6867,7 +7444,7 @@ function TableHead(_a) {
6867
7444
  }
6868
7445
  function TableCell(_a) {
6869
7446
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
6870
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7447
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
6871
7448
  "td",
6872
7449
  __spreadValues({
6873
7450
  "data-slot": "table-cell",
@@ -6884,7 +7461,7 @@ function TableCaption(_a) {
6884
7461
  } = _b, props = __objRest(_b, [
6885
7462
  "className"
6886
7463
  ]);
6887
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7464
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
6888
7465
  "caption",
6889
7466
  __spreadValues({
6890
7467
  "data-slot": "table-caption",
@@ -6896,7 +7473,7 @@ function TableCaption(_a) {
6896
7473
  // components/ui/tabs.tsx
6897
7474
  var import_class_variance_authority14 = require("class-variance-authority");
6898
7475
  var import_radix_ui31 = require("radix-ui");
6899
- var import_jsx_runtime55 = require("react/jsx-runtime");
7476
+ var import_jsx_runtime57 = require("react/jsx-runtime");
6900
7477
  function Tabs(_a) {
6901
7478
  var _b = _a, {
6902
7479
  className,
@@ -6905,7 +7482,7 @@ function Tabs(_a) {
6905
7482
  "className",
6906
7483
  "orientation"
6907
7484
  ]);
6908
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
7485
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
6909
7486
  import_radix_ui31.Tabs.Root,
6910
7487
  __spreadValues({
6911
7488
  "data-slot": "tabs",
@@ -6948,7 +7525,7 @@ function TabsList(_a) {
6948
7525
  "variant",
6949
7526
  "size"
6950
7527
  ]);
6951
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
7528
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
6952
7529
  import_radix_ui31.Tabs.List,
6953
7530
  __spreadValues({
6954
7531
  "data-slot": "tabs-list",
@@ -6966,7 +7543,7 @@ function TabsTrigger(_a) {
6966
7543
  "className",
6967
7544
  "iconPosition"
6968
7545
  ]);
6969
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
7546
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
6970
7547
  import_radix_ui31.Tabs.Trigger,
6971
7548
  __spreadValues({
6972
7549
  "data-slot": "tabs-trigger",
@@ -6992,7 +7569,7 @@ function TabsContent(_a) {
6992
7569
  } = _b, props = __objRest(_b, [
6993
7570
  "className"
6994
7571
  ]);
6995
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
7572
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
6996
7573
  import_radix_ui31.Tabs.Content,
6997
7574
  __spreadValues({
6998
7575
  "data-slot": "tabs-content",
@@ -7004,15 +7581,11 @@ function TabsContent(_a) {
7004
7581
  // components/ui/toggle.tsx
7005
7582
  var import_class_variance_authority15 = require("class-variance-authority");
7006
7583
  var import_radix_ui32 = require("radix-ui");
7007
- var import_jsx_runtime56 = require("react/jsx-runtime");
7584
+ var import_jsx_runtime58 = require("react/jsx-runtime");
7008
7585
  var toggleVariants = (0, import_class_variance_authority15.cva)(
7009
- "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",
7586
+ "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",
7010
7587
  {
7011
7588
  variants: {
7012
- variant: {
7013
- default: "bg-transparent",
7014
- outline: "border border-border-prominent-default bg-transparent text-text-prominent-default hover:bg-background-hover-default"
7015
- },
7016
7589
  size: {
7017
7590
  default: "h-10 min-w-10 px-2.5",
7018
7591
  sm: "h-8 min-w-8 px-1.5",
@@ -7020,7 +7593,6 @@ var toggleVariants = (0, import_class_variance_authority15.cva)(
7020
7593
  }
7021
7594
  },
7022
7595
  defaultVariants: {
7023
- variant: "default",
7024
7596
  size: "default"
7025
7597
  }
7026
7598
  }
@@ -7028,50 +7600,44 @@ var toggleVariants = (0, import_class_variance_authority15.cva)(
7028
7600
  function Toggle(_a) {
7029
7601
  var _b = _a, {
7030
7602
  className,
7031
- variant,
7032
7603
  size
7033
7604
  } = _b, props = __objRest(_b, [
7034
7605
  "className",
7035
- "variant",
7036
7606
  "size"
7037
7607
  ]);
7038
- return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
7608
+ return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
7039
7609
  import_radix_ui32.Toggle.Root,
7040
7610
  __spreadValues({
7041
7611
  "data-slot": "toggle",
7042
- className: cn(toggleVariants({ variant, size, className }))
7612
+ className: cn(toggleVariants({ size, className }))
7043
7613
  }, props)
7044
7614
  );
7045
7615
  }
7046
7616
 
7047
7617
  // components/ui/toggle-group.tsx
7048
- var React15 = __toESM(require("react"), 1);
7618
+ var React18 = __toESM(require("react"), 1);
7049
7619
  var import_radix_ui33 = require("radix-ui");
7050
- var import_jsx_runtime57 = require("react/jsx-runtime");
7051
- var ToggleGroupContext = React15.createContext({
7620
+ var import_jsx_runtime59 = require("react/jsx-runtime");
7621
+ var ToggleGroupContext = React18.createContext({
7052
7622
  size: "default",
7053
- variant: "default",
7054
7623
  spacing: 0
7055
7624
  });
7056
7625
  function ToggleGroup(_a) {
7057
7626
  var _b = _a, {
7058
7627
  className,
7059
- variant,
7060
7628
  size,
7061
7629
  spacing = 0,
7062
7630
  children
7063
7631
  } = _b, props = __objRest(_b, [
7064
7632
  "className",
7065
- "variant",
7066
7633
  "size",
7067
7634
  "spacing",
7068
7635
  "children"
7069
7636
  ]);
7070
- return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
7637
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
7071
7638
  import_radix_ui33.ToggleGroup.Root,
7072
7639
  __spreadProps(__spreadValues({
7073
7640
  "data-slot": "toggle-group",
7074
- "data-variant": variant,
7075
7641
  "data-size": size,
7076
7642
  "data-spacing": spacing,
7077
7643
  style: { "--gap": spacing },
@@ -7080,7 +7646,7 @@ function ToggleGroup(_a) {
7080
7646
  className
7081
7647
  )
7082
7648
  }, props), {
7083
- children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(ToggleGroupContext.Provider, { value: { variant, size, spacing }, children })
7649
+ children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(ToggleGroupContext.Provider, { value: { size, spacing }, children })
7084
7650
  })
7085
7651
  );
7086
7652
  }
@@ -7088,29 +7654,27 @@ function ToggleGroupItem(_a) {
7088
7654
  var _b = _a, {
7089
7655
  className,
7090
7656
  children,
7091
- variant,
7092
7657
  size
7093
7658
  } = _b, props = __objRest(_b, [
7094
7659
  "className",
7095
7660
  "children",
7096
- "variant",
7097
7661
  "size"
7098
7662
  ]);
7099
- const context = React15.useContext(ToggleGroupContext);
7100
- return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
7663
+ const context = React18.useContext(ToggleGroupContext);
7664
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
7101
7665
  import_radix_ui33.ToggleGroup.Item,
7102
7666
  __spreadProps(__spreadValues({
7103
7667
  "data-slot": "toggle-group-item",
7104
- "data-variant": context.variant || variant,
7105
7668
  "data-size": context.size || size,
7106
7669
  "data-spacing": context.spacing,
7107
7670
  className: cn(
7108
7671
  toggleVariants({
7109
- variant: context.variant || variant,
7110
7672
  size: context.size || size
7111
7673
  }),
7112
7674
  "w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10",
7113
- "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",
7675
+ // Joined (spacing 0): shared hairlines — every item after the first
7676
+ // drops its left border; the on item paints solid over its cell.
7677
+ "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",
7114
7678
  className
7115
7679
  )
7116
7680
  }, props), {
@@ -7120,7 +7684,7 @@ function ToggleGroupItem(_a) {
7120
7684
  }
7121
7685
 
7122
7686
  // components/blocks/result-block.tsx
7123
- var import_jsx_runtime58 = require("react/jsx-runtime");
7687
+ var import_jsx_runtime60 = require("react/jsx-runtime");
7124
7688
  var THUMBS_UP_DATA_URL = "data:image/webp;base64,UklGRmYPAABXRUJQVlA4WAoAAAAQAAAAxwAAxwAAQUxQSCcFAAABsIftsylJUsQ5N8sYZHaPbdu2bdu2bfM/27Zte7Mya22rmRnnt8hblfcgcr0RMQH0/zrz37H+mLt2efCjV0+bjwyrrkSno/X3VyKjOEufOGklqC9JhpXG9LRgjILaMmR1ZlbEOAWfzsxGYUyTGuMABGdRpi97ENoo+JKstixB2gA0plCmLHqoifY2J1GmKjMXXJvQrJJRFNO3gra7c1hRdgMUKJjZqskQmgVAviQ18xWCYmdhJdk+FOTuJC2/Jyj4T0oyy6L4soqYftsobgMV2aPg4ZEaygjiwU0aohcFHt6mIDMPvLxVP0w/Ei9u14/dGn7epR5LED/OVQ/dJfBzK+3Y2eE8mVs5TFWBp6Rcuz58/Vw5hlzTlzeVw5cKfH1RN7YL/iBjxTC9J/B3G82YleCxe4P0auhPTY/wB80c7+DzdL1YA/EK3WqhlwV+D2nFLATftcL0y6Zv/UoxB8F3Rzq1BPFtilLoaYHvb+jELAz/N2WNMP1C/LMqsbvCe/c5adQSxDvsxBqhOwT+G43YiXD+vUsKZfpa4P9arBC7LkIkhRhyTf/cg6RQvkwQ4KKsj6wfAcgfSZ+GPhX47841qWEmMqWu7q6uUstusnnMppQZY69DkP293d2lUmbNWK01LbMsy0qlUtaC48BMlVM//KNgzD8YynLMZoBzAichTEdrJ2N1zomIOOfQsjl19OmdK8QmOLZ0xO8xfvkd5TcEKfzFMWQ4LMNLTXPSBvx6LEiiOOxJWUiGzkEDbf1TagDB15SFw3QjBO2dnh6gMYWyYOxOELS5mSI0J1EWiGU00W7hFEE+JhMGPSxouzNJAnYOBQWmSqYTh8ArFYFEAdsHQdf4MT0tboSCfFEhQHcQ1UJssuYJ4luVrN8xbNsxbN8x7BDEd1SyXRBVlawbG0f501IzT2ywTE4JqaUgRwrZKmc4NR/GZ/NUbc7R2SJV61GQNY0sEUa9kM1zZkjNsmHUvBhOzXI2iFGFyI8oyJpCgFm5UziMQhxVyb1B1L0YSs5TQdRU8ma0BpPzScfwdhAjKnk0iKpKDuMQRrwYSM4CFGLNi/7UTKcg64Vslii5O4yaQjC/iVZfWtzvKUw/etMiF5ow6vrAzIGMFLJpkqRKgVbVge24U6BQatpwz1Ko9UI2yelJCRbnzkD+RMHWCtk4pzch7ioOpq4MTDTB1ArZJKcnHe6HFG4xG6cH+3GcNklQFlBdFe5dCrhWyMbJwUocUL2QTVLjhEKuaUJuCaquCczFsdo0pzcR7hcU9KgmjjcdAnq4M3CfUdh1PWA97hQosJoa3CMU+IgasDgHVvOiLwXuDxS6Hi7mDgEzmtCqXvQnwH2Xgh8pZLOEYC8TXM2LvhQYDm5UB+4tCl8JWJU7A+coEQPxu5ci6Mdg9LAoR2DEi6HYya8phtVCNk+FO4Fj8B0NoMvE4FsNfExR9GMwdhtyp0AdgnuC4vh5+rAEx+Ht5LlJFMnnkydXciRuTR5mMpE4ppAtUiBfUSznKWTLFGB1jgVNkgK2SkDjFxQNc7DzoD9eDosbigb9vtG+LXP6InYDRTQbRKNtm+f0xMq5N8lEhLI50UyT4G7KKKoZfQxpzzY5RmIkbtqaZCmyGS1XbUcDxK3od80ITTqdDFN8Dc108qdTxoNFLLU2SyGy03583dLEhuLMRDQ46/zzzTffvPPMPffc88w7fymjfEOzTpwwYUIlt1yu/H15rJXy31fKlXKlnF8pj7tSrvx9uZeIien//v9XfQBWUDggGAoAANAwAJ0BKsgAyAA+kUScS6WjoqUjc5pgsBIJZ278Qi8Hwvc8Z/PndH0L8Y+3P/DeGNhV4uz8do8qx9p5gcZv+s8NH7D/z/YD/PX66ewT/4f6XzifTPsG/rz6Vnrs/cP2Hv11//JFOyneeAW0wbcou/igl1zxho0WRxDimPALaYM6+VrqjKr+SiMnElO878dA3yFCkM+t+whevqvMGhXCcaDwUXXFH4eQ6sCNOis0oDUln4e9M3beAvzbZyUe2sUvdvtjPDFhG8dPxVDA/XZGk1ETr69eacwYnPhuLS56ol4GHT+w+hq85I7EHxvN4n68ZUeC+sDOCSQMpz6m4Fzqzrg9ZyhyQnUfmHqhcGQ/yBDy4W+qjcsBfDq4xpVARzZ2uW47mzNOIigiKz5Tw+mTHb7K5m9lSfmeMPMPpWXhZQVTZawZgxiMdOg3ccW5pccD7hwGCZ0+pV2azLYrT+zGOqIcbr1PYUXPl9LQ8IhKTeyhGBmpdCXdUSSJMKko79zaD//rSyWRpF1MNueAW0v+AAD++5zAAALiasAmBAtMjd3teHxoV/JwSycQb8T24aWw5wWjnP87DL5yaEnvCifBRcW/QYZPObqU0f4fAjw2ZLaVKj7hZoTyQu4dPqH4gTQMcAfv8BCfJ7DObKNJoDat3XoqhZuiW8sQ6GBrRMq9Dkd0xl5ULWfjBCUXzvE+yRWByiMm9GvwsjN6pMTLTAfwDK8x8YHP7IFXmr9Ohbw3lVDYPJKpWXmHeO7wb8vGqU2ThOJXtJ9olH5g1qkVNO7MdAd5FvxU86R1i/SUqzBMrxSAPdTXXmLZu+gveBx/eYqSRNuu0tqHIV9T+mP1xEC5dX+HdTXYA1Pdhk+9yLuHAU2D8bazJuRhexCVychOyXyv+7dpTzpNfrj+lC5dIVyzoW5Fyra3W3dyl1mQ3MrAMiHwf1pV5axectvd4CM+Iu4n1yHfPKGPcrcm/G9+a5dAzXL9YOdbO+GmAYyFR+E0uZd7nFwfW9OvRmg/k1ekfsv4dZEZ45M6yITB/1GMCi872dJHGq4nCKuaCXURhXCNsLy+tpj6YCTt5oJDuG1WXTgI8++c5/4AM/eJFCx0dMaf8Loyp9W/PAHdOZgC2aG4/1/lA3Epa/4hAEPIiuAo3vZyTXO65nn9/A+eLuy/449dgY7gSsrQDrP2Hmh05OsdFBPj+BsefJZAyMS4T6jPsdCNtu6bH4KcFVBwIegQ22lQnlBIG2D4R24k/McwxQQC6sR8c/eJCL6o+anvM+BC4dVih1h5ae/4s1Q6GkFw9gE6+2/rhedXEzoV8TtJ3dLuPi+nRU8XxTZqq/E4ctlcWd0H0aawPjTIcXaxQk36BEC/njKgHlc7c/d4+WQiihb7eG2ng4KVyJHZ3bzK/4I0yU1/ile9IfW342gFB3dUS7yrQxNbRdeoE4f47jSRZD4uP4qpVOWmKtIE31xquU1ep2EeCbLB8UoludUvkjG8U8M3pe7XlyGBYQcgcsn3HFUuPXp/5yXaZR9H9scEjkX6MlhwKI3QGuk8UZborE1j0lt5pNTfq2K6d1/6SoiVNVLSRZ9ry7YQGRhQ48mewSXEEVownN9KTXH5SXUylJLr1jB9KOAhLAGdMfpkFNbgPlU70iYmRw9xYQz1yfvUH6Ul80AcAra/1tvp5kua7H5wgy30feuCKUXQIzcIoIpSuFQ/i7SxQkRCfWQIAsOc0XZmr3/IOBAZKbzIMOlBkoxYtjE95cV04d+6N792Le6VUmArBadYp7BOgqcNfxU4dfBtJ74uDkc6VQRuIpPg478BODjpfsWFA0vlLIKFTdRwVUdJOxBvFnhWwKP0D1apVqohwg0IPDfWP8UVdpVUhGrWYuUTDE2nubQrJ5v+usi24qv+3kysRqQMjDJOqpQkxnigjREutxNfsLY1xUvO2lTqrORSagjcR7pA8924ES/dA1lEZ3ZQ5z1F6nS8Bq2xnTiQ9BqcmJ7zSJd22si8KtuN/siapwQIzTHW63B7xXAKQtKMnUE639KX83BWcVOWGr50CTiUvkK8yDy38AHewCCa/fjhQeHabgNE/0tmbOaN5stn1H/m6qKp0WCbyVA7tKaSaRklqfipnbXoVHMguAGss38eJa3FLWweUAl7rNzHv79GalBMmNgUznun+3m3dWMn5WK/34+LilQXVLXAzuRipKqi3cNMeLO8B+ug7CpRCchBUESkH2ep5anNgdsYR5rfffGhVW3o3VIRyYpN35MK7tlEi/t7OeSTr10CeQQnpcc5pd9K4SdIQCZ5/G9WjwRMnVf0oXJ25OUzYGMakzcjz5vjSV7Fh+UNNjgLnlnM5zdtz8DyB6OlSAA/xFhwY8uyPpMaJBpmJVjNOdEChpZ9QUc+gAz/Awt2ER8coD6OZhX5NUjEKrJvHjOQTeuvCAyJ9CJAHY1HDkY1Saa2/vC8jm+Sc9DiMKg+LJriUFijlLwHEPOluQhWObjSqhybrp1vmS1Mt/KPMDPZyt6Kxox6jMvL/xgGNNE+JaFEcEZ/H/Ws6oWhQT9Qteg2TDkQISuXe+FCmot1BtA3iCJ29VxNMNaWuGXJdmhEfp/ST9UNlxSsfVfbEkqQdBoiUIhK5GZlUF1tOTbgEdr60Ty1S6ZSFLIovKBxheqO5TAGNtbCaJ7nvRkqRaIb+LRL7P/c3EGI4PFCpyNZnNajr3oh7e8M8mufcpqT+DXDSZ1KG56xJQ06T18FfS5s4r6tbLWSbMQO8uH19kYca2lgvljt0gfWU3h7FSWwRDGQGLhWojhmxHZrgtn/gyvw5GGLqjCqwx8KHX/maaRTUYSwWSmwXtS1RBmIDLx1GHCS2ED5ciDx7qn4HOqEzNpwfN/XMYuRmyvMDqb0u1FEQ/NHsDl2yA7MopUtbm7A3rB7jH3+o8Y5Aaq0egHuftsojcTr2yQ2tqnZusSb6vb2Qgf0ZV80OOwJYY35WQr8st1x3UCrKmS3X1TXIlvAUQgwS72DVKESwuab+Nlb2FLU9/UfmZzs1bGi2wfdsiqXt3Da1HGSb/1OAFDj4P5b03Saw9Pf7kplOscrGW93H9ZW1JmNiPNi/OW6hL0I2ZLtM8vQwYylPwdMGln9ZddXNn9HgsnNATObEWO1BfVE3Vx1OqLeOSo8aw5bNxSPfyUFvwV9LIgpeSE+a7JZV0sMm/K6xXubpoIPqa6tXoP/g8/tvZbgguLvKcaYVpiTe4orHUeYbU/VEaQdLW5kGBmCTUU8fSDGjZhUqVp86z4tNdZx3P2C654aOxJW5G3pVcdlqsipHwLgFBUCfcsGTJ0U+svqOD8TEXkbq6DsqXDRuYB94Pz74uM+Zh3xXaDJU48d8SBhfPPEtop5pxU6j3s0czCqev5OjlwuW/ESXLpZiO2Gx24Pwl33O8l/z9VzhVM+sZy7NWzUASRdBsuUPG+PAAAAAAAAAAA=";
7125
7689
  var THUMBS_DOWN_DATA_URL = "data:image/webp;base64,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";
7126
7690
  function ResultBlock({
@@ -7137,9 +7701,9 @@ function ResultBlock({
7137
7701
  const signedAmount = isWin ? `+${amount}` : `\u2212${amount}`;
7138
7702
  const amountColorClass = isWin ? "text-semantic-win" : "text-semantic-loss";
7139
7703
  const haloBgClass = isWin ? "bg-semantic-win" : "bg-semantic-loss";
7140
- return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Card, { className: "w-80 shrink-0 overflow-hidden rounded-md shadow-sm px-5 py-5 items-center gap-3", children: [
7141
- /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "relative flex items-center justify-center py-2", children: [
7142
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
7704
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(Card, { className: "w-80 shrink-0 overflow-hidden rounded-md shadow-sm px-5 py-5 items-center gap-3", children: [
7705
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "relative flex items-center justify-center py-2", children: [
7706
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
7143
7707
  "span",
7144
7708
  {
7145
7709
  "aria-hidden": true,
@@ -7147,7 +7711,7 @@ function ResultBlock({
7147
7711
  className: `absolute size-24 rounded-full blur-2xl opacity-20 ${haloBgClass}`
7148
7712
  }
7149
7713
  ),
7150
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
7714
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
7151
7715
  "img",
7152
7716
  {
7153
7717
  "data-results-motion": isWin ? "icon-win" : "icon-loss",
@@ -7157,28 +7721,28 @@ function ResultBlock({
7157
7721
  }
7158
7722
  )
7159
7723
  ] }),
7160
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "text-lg font-semibold text-on-prominent", children: titleText }),
7161
- /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("p", { className: `flex items-baseline gap-1.5 ${amountColorClass}`, children: [
7162
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "font-display text-4xl font-semibold tabular-nums tracking-tight", children: signedAmount }),
7163
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "text-lg font-semibold", children: currency })
7724
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-lg font-semibold text-on-prominent", children: titleText }),
7725
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("p", { className: `flex items-baseline gap-1.5 ${amountColorClass}`, children: [
7726
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "font-display text-4xl font-semibold tabular-nums tracking-tight", children: signedAmount }),
7727
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "text-lg font-semibold", children: currency })
7164
7728
  ] }),
7165
- /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex items-center gap-2", children: [
7166
- /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Badge, { variant: "tint-neutral", size: "sm", children: [
7729
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "flex items-center gap-2", children: [
7730
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(Badge, { variant: "tint-neutral", size: "sm", children: [
7167
7731
  contractLabel,
7168
- pickedDigit !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_jsx_runtime58.Fragment, { children: [
7169
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { "aria-hidden": true, className: "h-3 w-px bg-border-prominent/40 mx-1" }),
7170
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("span", { className: "tabular-nums", children: pickedDigit })
7732
+ pickedDigit !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_jsx_runtime60.Fragment, { children: [
7733
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { "aria-hidden": true, className: "h-3 w-px bg-border-prominent/40 mx-1" }),
7734
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "tabular-nums", children: pickedDigit })
7171
7735
  ] })
7172
7736
  ] }),
7173
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Badge, { variant: "tint-neutral", size: "sm", children: duration })
7737
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Badge, { variant: "tint-neutral", size: "sm", children: duration })
7174
7738
  ] }),
7175
- /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "w-full pt-2", children: [
7176
- ctaMode === "next-round" && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Button, { className: "w-full", children: "Next round" }),
7177
- ctaMode === "go-again" && /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Button, { className: "w-full", children: "Go again" }),
7178
- ctaMode === "conversion" && /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "w-full flex flex-col gap-3", children: [
7179
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "text-center text-base font-semibold text-on-prominent", children: "Ready to play for real?" }),
7180
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Button, { className: "w-full", children: "Deposit now" }),
7181
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Button, { variant: "secondary", className: "w-full", children: "Stay in demo" })
7739
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "w-full pt-2", children: [
7740
+ ctaMode === "next-round" && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { className: "w-full", children: "Next round" }),
7741
+ ctaMode === "go-again" && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { className: "w-full", children: "Go again" }),
7742
+ ctaMode === "conversion" && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "w-full flex flex-col gap-3", children: [
7743
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-center text-base font-semibold text-on-prominent", children: "Ready to play for real?" }),
7744
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { className: "w-full", children: "Deposit now" }),
7745
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { variant: "secondary", className: "w-full", children: "Stay in demo" })
7182
7746
  ] })
7183
7747
  ] })
7184
7748
  ] });
@@ -7189,21 +7753,21 @@ function ResultDialog({
7189
7753
  primaryLabel,
7190
7754
  secondaryLabel
7191
7755
  }) {
7192
- return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(Card, { className: "w-80 shrink-0 overflow-hidden rounded-md shadow-sm px-5 py-6 items-center gap-4", children: [
7193
- /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "flex flex-col items-center gap-2 text-center", children: [
7194
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "text-lg font-semibold text-on-prominent", children: title }),
7195
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)("p", { className: "text-sm text-on-subtle", children: body })
7756
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(Card, { className: "w-80 shrink-0 overflow-hidden rounded-md shadow-sm px-5 py-6 items-center gap-4", children: [
7757
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "flex flex-col items-center gap-2 text-center", children: [
7758
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-lg font-semibold text-on-prominent", children: title }),
7759
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-sm text-on-subtle", children: body })
7196
7760
  ] }),
7197
- /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)("div", { className: "w-full flex flex-col gap-2", children: [
7198
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Button, { className: "w-full", children: primaryLabel }),
7199
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(Button, { variant: "secondary", className: "w-full", children: secondaryLabel })
7761
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "w-full flex flex-col gap-2", children: [
7762
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { className: "w-full", children: primaryLabel }),
7763
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { variant: "secondary", className: "w-full", children: secondaryLabel })
7200
7764
  ] })
7201
7765
  ] });
7202
7766
  }
7203
7767
 
7204
7768
  // components/blocks/header-navigation-block.tsx
7205
- var import_lucide_react27 = require("lucide-react");
7206
- var import_jsx_runtime59 = require("react/jsx-runtime");
7769
+ var import_lucide_react29 = require("lucide-react");
7770
+ var import_jsx_runtime61 = require("react/jsx-runtime");
7207
7771
  function HeaderNavigationBlock({
7208
7772
  onBack,
7209
7773
  badge,
@@ -7212,15 +7776,15 @@ function HeaderNavigationBlock({
7212
7776
  actions
7213
7777
  }) {
7214
7778
  var _a;
7215
- return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "w-full min-w-80 max-w-layout-diagram-small rounded-md overflow-hidden bg-prominent", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("header", { className: "flex items-center gap-2 border-b border-border-subtle bg-prominent px-layout-margin-inline py-3", children: [
7216
- onBack && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(NavigationButton, { type: "button", size: "md", "aria-label": "Back", onClick: onBack, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react27.ArrowLeft, { className: "size-5" }) }),
7217
- /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "flex min-w-0 flex-1 items-center justify-center gap-2", children: [
7218
- badge && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Badge, { variant: (_a = badge.variant) != null ? _a : "tint-warning", size: "sm", children: badge.label }),
7219
- /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "font-display font-semibold tabular-nums text-on-prominent", children: balance.amount }),
7220
- /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("span", { className: "text-sm text-on-subtle", children: balance.currency })
7779
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "w-full min-w-80 max-w-layout-diagram-small rounded-md overflow-hidden bg-prominent", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("header", { className: "flex items-center gap-2 border-b border-border-subtle bg-prominent px-layout-margin-inline py-3", children: [
7780
+ onBack && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(NavigationButton, { type: "button", size: "md", "aria-label": "Back", onClick: onBack, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react29.ArrowLeft, { className: "size-5" }) }),
7781
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex min-w-0 flex-1 items-center justify-center gap-2", children: [
7782
+ badge && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Badge, { variant: (_a = badge.variant) != null ? _a : "tint-warning", size: "sm", children: badge.label }),
7783
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "font-display font-semibold tabular-nums text-on-prominent", children: balance.amount }),
7784
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "text-sm text-on-subtle", children: balance.currency })
7221
7785
  ] }),
7222
- /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "flex shrink-0 items-center gap-1", children: [
7223
- history && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(HistoryButton, __spreadValues({}, history)),
7786
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex shrink-0 items-center gap-1", children: [
7787
+ history && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(HistoryButton, __spreadValues({}, history)),
7224
7788
  actions
7225
7789
  ] })
7226
7790
  ] }) });
@@ -7233,9 +7797,9 @@ function HistoryButton({
7233
7797
  const show = typeof count === "number" && count > 0;
7234
7798
  const label = show ? count > 99 ? "99+" : String(count) : null;
7235
7799
  const ariaLabel = ariaLabelOverride != null ? ariaLabelOverride : show ? `Open history, ${count} new` : "Open history";
7236
- return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "relative inline-flex", children: [
7237
- /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(NavigationButton, { type: "button", size: "md", "aria-label": ariaLabel, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_lucide_react27.History, { className: "size-5" }) }),
7238
- show && /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
7800
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "relative inline-flex", children: [
7801
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(NavigationButton, { type: "button", size: "md", "aria-label": ariaLabel, onClick, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react29.History, { className: "size-5" }) }),
7802
+ show && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
7239
7803
  "span",
7240
7804
  {
7241
7805
  "aria-hidden": true,
@@ -7247,9 +7811,9 @@ function HistoryButton({
7247
7811
  }
7248
7812
 
7249
7813
  // components/blocks/faq-block.tsx
7250
- var import_lucide_react28 = require("lucide-react");
7814
+ var import_lucide_react30 = require("lucide-react");
7251
7815
  var import_radix_ui34 = require("radix-ui");
7252
- var import_jsx_runtime60 = require("react/jsx-runtime");
7816
+ var import_jsx_runtime62 = require("react/jsx-runtime");
7253
7817
  function FAQBlock({
7254
7818
  eyebrow = "FAQ",
7255
7819
  title = "Frequently asked questions",
@@ -7261,34 +7825,34 @@ function FAQBlock({
7261
7825
  }) {
7262
7826
  var _a, _b;
7263
7827
  if (layout === "two-column") {
7264
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { className: "@container w-full", children: /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "flex flex-col @[600px]:flex-row gap-8 @[600px]:gap-12", children: [
7265
- /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "flex flex-col gap-4 flex-1 @[600px]:max-w-xs", children: [
7266
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "text-xs font-body font-semibold tracking-widest uppercase text-on-subtle", children: eyebrow }),
7267
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("h2", { className: "text-4xl @[600px]:text-6xl font-semibold font-display text-on-prominent tracking-tight", children: title }),
7268
- intro && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-base font-body text-on-subtle", children: intro })
7828
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "@container w-full", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex flex-col @[600px]:flex-row gap-8 @[600px]:gap-12", children: [
7829
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex flex-col gap-4 flex-1 @[600px]:max-w-xs", children: [
7830
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "text-xs font-body font-semibold tracking-widest uppercase text-on-subtle", children: eyebrow }),
7831
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("h2", { className: "text-4xl @[600px]:text-6xl font-semibold font-display text-on-prominent tracking-tight", children: title }),
7832
+ intro && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-base font-body text-on-subtle", children: intro })
7269
7833
  ] }),
7270
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("div", { className: "flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
7834
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
7271
7835
  Accordion,
7272
7836
  {
7273
7837
  type: "single",
7274
7838
  collapsible: true,
7275
7839
  defaultValue: defaultValue != null ? defaultValue : (_a = items[0]) == null ? void 0 : _a.value,
7276
7840
  className: "w-full",
7277
- children: items.map(({ value, question, answer }, i) => /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(AccordionItem, { value, children: [
7278
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_radix_ui34.Accordion.Header, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
7841
+ children: items.map(({ value, question, answer }, i) => /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(AccordionItem, { value, children: [
7842
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_radix_ui34.Accordion.Header, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
7279
7843
  import_radix_ui34.Accordion.Trigger,
7280
7844
  {
7281
7845
  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",
7282
7846
  children: [
7283
- /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("span", { className: "flex items-baseline gap-4", children: [
7284
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "text-sm font-body text-on-subtle shrink-0 w-6", children: String(i + 1).padStart(2, "0") }),
7285
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "text-lg @[600px]:text-xl font-semibold font-display text-on-prominent", children: question })
7847
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("span", { className: "flex items-baseline gap-4", children: [
7848
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "text-sm font-body text-on-subtle shrink-0 w-6", children: String(i + 1).padStart(2, "0") }),
7849
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "text-lg @[600px]:text-xl font-semibold font-display text-on-prominent", children: question })
7286
7850
  ] }),
7287
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: cn(
7851
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: cn(
7288
7852
  "shrink-0 size-7 flex items-center justify-center rounded-sm border transition-all duration-200",
7289
7853
  "group-data-[state=open]:bg-primary group-data-[state=open]:border-primary",
7290
7854
  "group-data-[state=closed]:bg-transparent group-data-[state=closed]:border-border-subtle"
7291
- ), children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react28.Plus, { className: cn(
7855
+ ), children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_lucide_react30.Plus, { className: cn(
7292
7856
  "size-4 transition-all duration-200",
7293
7857
  "group-data-[state=open]:rotate-45 group-data-[state=open]:text-on-primary",
7294
7858
  "group-data-[state=closed]:text-on-prominent"
@@ -7296,7 +7860,7 @@ function FAQBlock({
7296
7860
  ]
7297
7861
  }
7298
7862
  ) }),
7299
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(AccordionContent, { children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-base font-body text-on-subtle pl-10 pb-4", children: answer }) })
7863
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(AccordionContent, { children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-base font-body text-on-subtle pl-10 pb-4", children: answer }) })
7300
7864
  ] }, value))
7301
7865
  }
7302
7866
  ) })
@@ -7307,38 +7871,38 @@ function FAQBlock({
7307
7871
  const helpCardPaddingClass = layout === "desktop" ? "p-8" : "p-6";
7308
7872
  const gapClass = layout === "desktop" ? "gap-12" : "gap-10";
7309
7873
  const headerGapClass = layout === "desktop" ? "gap-5" : "gap-4";
7310
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: `w-full flex flex-col ${gapClass}`, children: [
7311
- /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: `flex flex-col ${headerGapClass} items-center w-full`, children: [
7312
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("span", { className: "text-sm text-on-subtle font-body", children: eyebrow }),
7313
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("h2", { className: headingClass, children: title }),
7314
- intro && /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-lg text-on-subtle font-body text-center", children: intro })
7874
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: `w-full flex flex-col ${gapClass}`, children: [
7875
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: `flex flex-col ${headerGapClass} items-center w-full`, children: [
7876
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "text-sm text-on-subtle font-body", children: eyebrow }),
7877
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("h2", { className: headingClass, children: title }),
7878
+ intro && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-lg text-on-subtle font-body text-center", children: intro })
7315
7879
  ] }),
7316
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
7880
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
7317
7881
  Accordion,
7318
7882
  {
7319
7883
  type: "single",
7320
7884
  collapsible: true,
7321
7885
  defaultValue: defaultValue != null ? defaultValue : (_b = items[0]) == null ? void 0 : _b.value,
7322
7886
  className: "w-full",
7323
- children: items.map(({ value, question, answer }) => /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(AccordionItem, { value, children: [
7324
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(AccordionTrigger, { className: "text-base font-medium font-body text-on-prominent hover:no-underline", children: question }),
7325
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(AccordionContent, { children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-sm text-on-subtle font-body pb-4", children: answer }) })
7887
+ children: items.map(({ value, question, answer }) => /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(AccordionItem, { value, children: [
7888
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(AccordionTrigger, { className: "text-base font-medium font-body text-on-prominent hover:no-underline", children: question }),
7889
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(AccordionContent, { children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-sm text-on-subtle font-body pb-4", children: answer }) })
7326
7890
  ] }, value))
7327
7891
  }
7328
7892
  ),
7329
- helpCard && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: `flex flex-col gap-6 items-center w-full bg-subtle rounded-xl ${helpCardPaddingClass}`, children: [
7330
- /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)("div", { className: "flex flex-col gap-2 w-full", children: [
7331
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("h3", { className: helpTitleClass, children: helpCard.title }),
7332
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("p", { className: "text-base text-on-subtle font-body", children: helpCard.body })
7893
+ helpCard && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: `flex flex-col gap-6 items-center w-full bg-subtle rounded-xl ${helpCardPaddingClass}`, children: [
7894
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex flex-col gap-2 w-full", children: [
7895
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("h3", { className: helpTitleClass, children: helpCard.title }),
7896
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("p", { className: "text-base text-on-subtle font-body", children: helpCard.body })
7333
7897
  ] }),
7334
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Button, { size: "sm", onClick: helpCard.onCtaClick, children: helpCard.ctaLabel })
7898
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Button, { size: "sm", onClick: helpCard.onCtaClick, children: helpCard.ctaLabel })
7335
7899
  ] })
7336
7900
  ] });
7337
7901
  }
7338
7902
 
7339
7903
  // components/blocks/hero-block.tsx
7340
- var import_lucide_react29 = require("lucide-react");
7341
- var import_jsx_runtime61 = require("react/jsx-runtime");
7904
+ var import_lucide_react31 = require("lucide-react");
7905
+ var import_jsx_runtime63 = require("react/jsx-runtime");
7342
7906
  function HeroBlock({
7343
7907
  layout = "centered",
7344
7908
  tagline,
@@ -7349,31 +7913,31 @@ function HeroBlock({
7349
7913
  image
7350
7914
  }) {
7351
7915
  if (layout === "centered") {
7352
- return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("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: [
7353
- /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex flex-col items-center gap-6 w-full", children: [
7354
- tagline && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(TaglinePill, __spreadValues({}, tagline)),
7355
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("h1", { className: "text-5xl font-semibold font-display tracking-tight text-on-prominent text-center", children: heading }),
7356
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("p", { className: "text-lg font-body text-on-subtle text-center", children: body })
7916
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("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: [
7917
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex flex-col items-center gap-6 w-full", children: [
7918
+ tagline && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(TaglinePill, __spreadValues({}, tagline)),
7919
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("h1", { className: "text-5xl font-semibold font-display tracking-tight text-on-prominent text-center", children: heading }),
7920
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { className: "text-lg font-body text-on-subtle text-center", children: body })
7357
7921
  ] }),
7358
- /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(Button, { size: "sm", onClick: primaryCta.onClick, children: [
7922
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(Button, { size: "sm", onClick: primaryCta.onClick, children: [
7359
7923
  primaryCta.label,
7360
- primaryCta.trailingArrow !== false && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react29.ArrowRight, { className: "size-4" })
7924
+ primaryCta.trailingArrow !== false && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react31.ArrowRight, { className: "size-4" })
7361
7925
  ] })
7362
7926
  ] }) });
7363
7927
  }
7364
- return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: "w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent", children: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("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: [
7365
- /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("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: [
7366
- /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex flex-col gap-5 min-[600px]:gap-6 items-center min-[600px]:items-start w-full", children: [
7367
- tagline && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(TaglinePill, __spreadProps(__spreadValues({}, tagline), { responsive: true })),
7368
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("h1", { className: "text-4xl min-[600px]:text-5xl font-semibold font-display tracking-tight text-on-prominent", children: heading }),
7369
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("p", { className: "text-lg font-body text-on-subtle", children: body })
7928
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("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: [
7929
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("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: [
7930
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex flex-col gap-5 min-[600px]:gap-6 items-center min-[600px]:items-start w-full", children: [
7931
+ tagline && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(TaglinePill, __spreadProps(__spreadValues({}, tagline), { responsive: true })),
7932
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("h1", { className: "text-4xl min-[600px]:text-5xl font-semibold font-display tracking-tight text-on-prominent", children: heading }),
7933
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("p", { className: "text-lg font-body text-on-subtle", children: body })
7370
7934
  ] }),
7371
- /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("div", { className: "flex items-center justify-center min-[600px]:justify-start gap-2", children: [
7372
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Button, { size: "sm", onClick: primaryCta.onClick, children: primaryCta.label }),
7373
- secondaryCta && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Button, { variant: "secondary", size: "sm", onClick: secondaryCta.onClick, children: secondaryCta.label })
7935
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex items-center justify-center min-[600px]:justify-start gap-2", children: [
7936
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Button, { size: "sm", onClick: primaryCta.onClick, children: primaryCta.label }),
7937
+ secondaryCta && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Button, { variant: "secondary", size: "sm", onClick: secondaryCta.onClick, children: secondaryCta.label })
7374
7938
  ] })
7375
7939
  ] }),
7376
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("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 })
7940
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("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 })
7377
7941
  ] }) });
7378
7942
  }
7379
7943
  function TaglinePill({
@@ -7381,25 +7945,25 @@ function TaglinePill({
7381
7945
  suffix,
7382
7946
  responsive
7383
7947
  }) {
7384
- return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("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: [
7385
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "size-1.5 rounded-full bg-semantic-win shrink-0", "aria-hidden": "true" }),
7386
- responsive && suffix ? /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("span", { className: "text-sm font-body text-on-prominent whitespace-nowrap", children: [
7387
- /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("span", { className: "hidden min-[600px]:inline", children: [
7948
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("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: [
7949
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "size-1.5 rounded-full bg-semantic-win shrink-0", "aria-hidden": "true" }),
7950
+ responsive && suffix ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("span", { className: "text-sm font-body text-on-prominent whitespace-nowrap", children: [
7951
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("span", { className: "hidden min-[600px]:inline", children: [
7388
7952
  label,
7389
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "text-on-subtle", children: " \xB7 " })
7953
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "text-on-subtle", children: " \xB7 " })
7390
7954
  ] }),
7391
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "text-on-subtle min-[600px]:text-on-prominent", children: suffix })
7392
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)("span", { className: "text-sm font-body text-on-prominent whitespace-nowrap", children: [
7955
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "text-on-subtle min-[600px]:text-on-prominent", children: suffix })
7956
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("span", { className: "text-sm font-body text-on-prominent whitespace-nowrap", children: [
7393
7957
  label,
7394
- suffix && /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("span", { className: "text-on-subtle", children: ` \xB7 ${suffix}` })
7958
+ suffix && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("span", { className: "text-on-subtle", children: ` \xB7 ${suffix}` })
7395
7959
  ] }),
7396
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_lucide_react29.ArrowUpRight, { className: "size-4 text-on-subtle shrink-0", "aria-hidden": "true" })
7960
+ /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react31.ArrowUpRight, { className: "size-4 text-on-subtle shrink-0", "aria-hidden": "true" })
7397
7961
  ] });
7398
7962
  }
7399
7963
 
7400
7964
  // components/blocks/auth-block.tsx
7401
- var React16 = __toESM(require("react"), 1);
7402
- var import_jsx_runtime62 = require("react/jsx-runtime");
7965
+ var React19 = __toESM(require("react"), 1);
7966
+ var import_jsx_runtime64 = require("react/jsx-runtime");
7403
7967
  function AuthBlock({
7404
7968
  mode,
7405
7969
  logoSrc,
@@ -7414,20 +7978,20 @@ function AuthBlock({
7414
7978
  const ctaText = mode === "sign-in" ? "Sign in" : "Sign up";
7415
7979
  const footerPrompt = mode === "sign-in" ? "Don't have an account?" : "Already have an account?";
7416
7980
  const footerLinkLabel = mode === "sign-in" ? "Sign up" : "Log in";
7417
- const [email, setEmail] = React16.useState("");
7418
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex flex-col items-center gap-6 w-full", children: [
7419
- /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex items-center gap-2", children: [
7420
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("img", { src: logoSrc, alt: wordmark, className: "size-8 object-contain" }),
7421
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "font-display font-semibold text-base text-on-prominent tracking-tight", children: wordmark })
7981
+ const [email, setEmail] = React19.useState("");
7982
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex flex-col items-center gap-6 w-full", children: [
7983
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex items-center gap-2", children: [
7984
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("img", { src: logoSrc, alt: wordmark, className: "size-8 object-contain" }),
7985
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "font-display font-semibold text-base text-on-prominent tracking-tight", children: wordmark })
7422
7986
  ] }),
7423
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("h2", { className: "text-3xl font-semibold font-display text-on-prominent text-center", children: headingText }),
7424
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "flex flex-col gap-3 w-full", children: providers.map((p) => /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(ProviderButton, { provider: p }, p)) }),
7425
- /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "flex items-center gap-3 w-full", children: [
7426
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "flex-1 h-px bg-border-subtle" }),
7427
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "text-sm text-on-subtle font-body", children: "or" }),
7428
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "flex-1 h-px bg-border-subtle" })
7987
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("h2", { className: "text-3xl font-semibold font-display text-on-prominent text-center", children: headingText }),
7988
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "flex flex-col gap-3 w-full", children: providers.map((p) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ProviderButton, { provider: p }, p)) }),
7989
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex items-center gap-3 w-full", children: [
7990
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "flex-1 h-px bg-border-subtle" }),
7991
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-sm text-on-subtle font-body", children: "or" }),
7992
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "flex-1 h-px bg-border-subtle" })
7429
7993
  ] }),
7430
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "flex items-center gap-2 w-full", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
7994
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "flex items-center gap-2 w-full", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
7431
7995
  Input,
7432
7996
  {
7433
7997
  id: `${idPrefix}-email`,
@@ -7438,60 +8002,60 @@ function AuthBlock({
7438
8002
  onChange: (e) => setEmail(e.target.value)
7439
8003
  }
7440
8004
  ) }),
7441
- /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("p", { className: "text-sm text-on-subtle font-body text-left w-full", children: [
8005
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("p", { className: "text-sm text-on-subtle font-body text-left w-full", children: [
7442
8006
  termsText,
7443
8007
  ", you agree to our",
7444
8008
  " ",
7445
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Link, { size: "sm", href: "#", children: "Terms & Conditions" })
8009
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Link, { size: "sm", href: "#", children: "Terms & Conditions" })
7446
8010
  ] }),
7447
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Button, { size: "md", className: "w-full", onClick: () => onSubmit == null ? void 0 : onSubmit({ email }), children: ctaText }),
7448
- /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("p", { className: "text-sm text-on-subtle font-body text-center", children: [
8011
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Button, { size: "md", className: "w-full", onClick: () => onSubmit == null ? void 0 : onSubmit({ email }), children: ctaText }),
8012
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("p", { className: "text-sm text-on-subtle font-body text-center", children: [
7449
8013
  footerPrompt,
7450
8014
  " ",
7451
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Link, { size: "sm", href: crossLinkHref, children: footerLinkLabel })
8015
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Link, { size: "sm", href: crossLinkHref, children: footerLinkLabel })
7452
8016
  ] })
7453
8017
  ] });
7454
8018
  }
7455
8019
  function ProviderButton({ provider }) {
7456
8020
  switch (provider) {
7457
8021
  case "google":
7458
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
7459
- /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "none", className: "shrink-0", children: [
7460
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("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" }),
7461
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("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" }),
7462
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("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" }),
7463
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("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" })
8022
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
8023
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "none", className: "shrink-0", children: [
8024
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("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" }),
8025
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("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" }),
8026
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("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" }),
8027
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("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" })
7464
8028
  ] }),
7465
8029
  "Continue with Google"
7466
8030
  ] });
7467
8031
  case "telegram":
7468
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
7469
- /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "none", className: "shrink-0", children: [
7470
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("circle", { cx: "9", cy: "9", r: "9", fill: "#29B6F6" }),
7471
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("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" }),
7472
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("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" })
8032
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
8033
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "none", className: "shrink-0", children: [
8034
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("circle", { cx: "9", cy: "9", r: "9", fill: "#29B6F6" }),
8035
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("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" }),
8036
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("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" })
7473
8037
  ] }),
7474
8038
  "Continue with Telegram"
7475
8039
  ] });
7476
8040
  case "x":
7477
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
7478
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "currentColor", className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("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" }) }),
8041
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
8042
+ /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "currentColor", className: "shrink-0", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("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" }) }),
7479
8043
  "Continue with X (Twitter)"
7480
8044
  ] });
7481
8045
  }
7482
8046
  }
7483
8047
 
7484
8048
  // components/blocks/navbar-block.tsx
7485
- var React17 = __toESM(require("react"), 1);
7486
- var import_lucide_react30 = require("lucide-react");
7487
- var import_jsx_runtime63 = require("react/jsx-runtime");
8049
+ var React20 = __toESM(require("react"), 1);
8050
+ var import_lucide_react32 = require("lucide-react");
8051
+ var import_jsx_runtime65 = require("react/jsx-runtime");
7488
8052
  function NavBarBlock({ brand, links, signIn, signUp }) {
7489
8053
  var _a, _b, _c, _d;
7490
- const [mobileMenuOpen, setMobileMenuOpen] = React17.useState(false);
7491
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "w-full border border-border-subtle rounded-md overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("nav", { className: "bg-prominent", children: [
7492
- /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex items-center justify-between px-layout-margin-inline py-3", children: [
7493
- /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex items-center gap-6", children: [
7494
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
8054
+ const [mobileMenuOpen, setMobileMenuOpen] = React20.useState(false);
8055
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "w-full border border-border-subtle rounded-md overflow-hidden", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("nav", { className: "bg-prominent", children: [
8056
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center justify-between px-layout-margin-inline py-3", children: [
8057
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center gap-6", children: [
8058
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
7495
8059
  "img",
7496
8060
  {
7497
8061
  src: brand.fullLogoSrc,
@@ -7499,7 +8063,7 @@ function NavBarBlock({ brand, links, signIn, signUp }) {
7499
8063
  className: "hidden min-[600px]:block h-7 w-auto shrink-0 object-contain object-left"
7500
8064
  }
7501
8065
  ),
7502
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
8066
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
7503
8067
  "img",
7504
8068
  {
7505
8069
  src: brand.iconLogoSrc,
@@ -7507,13 +8071,13 @@ function NavBarBlock({ brand, links, signIn, signUp }) {
7507
8071
  className: "min-[600px]:hidden size-7 shrink-0 object-contain"
7508
8072
  }
7509
8073
  ),
7510
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "hidden min-[600px]:flex items-center gap-1", children: links.map((l) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Button, { variant: "tertiary", size: "sm", onClick: l.onClick, children: l.label }, l.label)) })
8074
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "hidden min-[600px]:flex items-center gap-1", children: links.map((l) => /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { variant: "tertiary", size: "sm", onClick: l.onClick, children: l.label }, l.label)) })
7511
8075
  ] }),
7512
- /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "hidden min-[600px]:flex items-center gap-2", children: [
7513
- signIn && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Button, { variant: "tertiary", size: "sm", onClick: signIn.onClick, children: (_a = signIn.label) != null ? _a : "Sign in" }),
7514
- signUp && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Button, { size: "sm", onClick: signUp.onClick, children: (_b = signUp.label) != null ? _b : "Sign up" })
8076
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "hidden min-[600px]:flex items-center gap-2", children: [
8077
+ signIn && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { variant: "tertiary", size: "sm", onClick: signIn.onClick, children: (_a = signIn.label) != null ? _a : "Sign in" }),
8078
+ signUp && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { size: "sm", onClick: signUp.onClick, children: (_b = signUp.label) != null ? _b : "Sign up" })
7515
8079
  ] }),
7516
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
8080
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
7517
8081
  Button,
7518
8082
  {
7519
8083
  variant: "tertiary",
@@ -7522,12 +8086,12 @@ function NavBarBlock({ brand, links, signIn, signUp }) {
7522
8086
  "aria-expanded": mobileMenuOpen,
7523
8087
  className: "min-[600px]:hidden",
7524
8088
  onClick: () => setMobileMenuOpen((prev) => !prev),
7525
- children: mobileMenuOpen ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react30.X, { className: "size-4" }) : /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_lucide_react30.Menu, { className: "size-4" })
8089
+ children: mobileMenuOpen ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react32.X, { className: "size-4" }) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_lucide_react32.Menu, { className: "size-4" })
7526
8090
  }
7527
8091
  )
7528
8092
  ] }),
7529
- mobileMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "min-[600px]:hidden flex flex-col border-t border-border-subtle px-layout-margin-inline py-3 gap-1", children: [
7530
- links.map((l) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
8093
+ mobileMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "min-[600px]:hidden flex flex-col border-t border-border-subtle px-layout-margin-inline py-3 gap-1", children: [
8094
+ links.map((l) => /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
7531
8095
  Button,
7532
8096
  {
7533
8097
  variant: "tertiary",
@@ -7538,17 +8102,17 @@ function NavBarBlock({ brand, links, signIn, signUp }) {
7538
8102
  },
7539
8103
  l.label
7540
8104
  )),
7541
- (signIn || signUp) && /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "flex flex-col gap-2 pt-3 mt-2 border-t border-border-subtle", children: [
7542
- signIn && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Button, { variant: "secondary", size: "sm", className: "w-full", onClick: signIn.onClick, children: (_c = signIn.label) != null ? _c : "Sign in" }),
7543
- signUp && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Button, { size: "sm", className: "w-full", onClick: signUp.onClick, children: (_d = signUp.label) != null ? _d : "Sign up" })
8105
+ (signIn || signUp) && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex flex-col gap-2 pt-3 mt-2 border-t border-border-subtle", children: [
8106
+ signIn && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { variant: "secondary", size: "sm", className: "w-full", onClick: signIn.onClick, children: (_c = signIn.label) != null ? _c : "Sign in" }),
8107
+ signUp && /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Button, { size: "sm", className: "w-full", onClick: signUp.onClick, children: (_d = signUp.label) != null ? _d : "Sign up" })
7544
8108
  ] })
7545
8109
  ] })
7546
8110
  ] }) });
7547
8111
  }
7548
8112
 
7549
8113
  // components/blocks/open-positions-block.tsx
7550
- var import_lucide_react31 = require("lucide-react");
7551
- var import_jsx_runtime64 = require("react/jsx-runtime");
8114
+ var import_lucide_react33 = require("lucide-react");
8115
+ var import_jsx_runtime66 = require("react/jsx-runtime");
7552
8116
  function OpenPositionsBlock({
7553
8117
  trigger,
7554
8118
  sheetTitle = "Positions",
@@ -7557,28 +8121,28 @@ function OpenPositionsBlock({
7557
8121
  emptyState
7558
8122
  }) {
7559
8123
  const isMobile = useIsMobile();
7560
- const body = positions.length === 0 ? emptyState != null ? emptyState : /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(DefaultEmptyState, { onViewHistory }) : /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(PositionsList, { positions, onViewHistory });
8124
+ const body = positions.length === 0 ? emptyState != null ? emptyState : /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(DefaultEmptyState, { onViewHistory }) : /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(PositionsList, { positions, onViewHistory });
7561
8125
  if (isMobile) {
7562
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Drawer, { children: [
7563
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(DrawerTrigger, { asChild: true, children: trigger }),
7564
- /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(DrawerContent, { className: "p-0 flex flex-col", children: [
7565
- /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(DrawerHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0 text-left", children: [
7566
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(DrawerTitle, { className: "text-base font-semibold font-display text-on-prominent", children: sheetTitle }),
7567
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(DrawerClose, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react31.X, {}) }) })
8126
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(Drawer, { children: [
8127
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(DrawerTrigger, { asChild: true, children: trigger }),
8128
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(DrawerContent, { className: "p-0 flex flex-col", children: [
8129
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(DrawerHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0 text-left", children: [
8130
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(DrawerTitle, { className: "text-base font-semibold font-display text-on-prominent", children: sheetTitle }),
8131
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(DrawerClose, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react33.X, {}) }) })
7568
8132
  ] }),
7569
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Separator, {}),
8133
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Separator, {}),
7570
8134
  body
7571
8135
  ] })
7572
8136
  ] });
7573
8137
  }
7574
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Sheet, { children: [
7575
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SheetTrigger, { asChild: true, children: trigger }),
7576
- /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(SheetContent, { side: "right", showCloseButton: false, className: "p-0 flex flex-col w-80 sm:max-w-xs", children: [
7577
- /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(SheetHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0", children: [
7578
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SheetTitle, { className: "text-base font-semibold font-display text-on-prominent", children: sheetTitle }),
7579
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SheetClose, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react31.X, {}) }) })
8138
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(Sheet, { children: [
8139
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(SheetTrigger, { asChild: true, children: trigger }),
8140
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(SheetContent, { side: "right", showCloseButton: false, className: "p-0 flex flex-col w-80 sm:max-w-xs", children: [
8141
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(SheetHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0", children: [
8142
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(SheetTitle, { className: "text-base font-semibold font-display text-on-prominent", children: sheetTitle }),
8143
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(SheetClose, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react33.X, {}) }) })
7580
8144
  ] }),
7581
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Separator, {}),
8145
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Separator, {}),
7582
8146
  body
7583
8147
  ] })
7584
8148
  ] });
@@ -7587,23 +8151,23 @@ function PositionsList({
7587
8151
  positions,
7588
8152
  onViewHistory
7589
8153
  }) {
7590
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex flex-col flex-1 min-h-0", children: [
7591
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ItemGroup, { className: "min-h-0 overflow-y-auto", children: positions.map((pos, i) => /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(PositionRow, { position: pos }, i)) }),
7592
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Separator, {}),
7593
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("div", { className: "shrink-0 flex justify-center py-4", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Button, { variant: "tertiary", size: "md", onClick: onViewHistory, children: "View trade history" }) })
8154
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "flex flex-col flex-1 min-h-0", children: [
8155
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(ItemGroup, { className: "min-h-0 overflow-y-auto", children: positions.map((pos, i) => /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(PositionRow, { position: pos }, i)) }),
8156
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Separator, {}),
8157
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "shrink-0 flex justify-center py-4", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Button, { variant: "tertiary", size: "md", onClick: onViewHistory, children: "View trade history" }) })
7594
8158
  ] });
7595
8159
  }
7596
8160
  function PositionRow({ position }) {
7597
8161
  const { label, suffix } = positionTitleParts(position);
7598
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(Item, { size: "sm", children: [
7599
- /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(ItemContent, { children: [
7600
- /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(ItemTitle, { children: [
7601
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-on-prominent", children: label }),
7602
- suffix && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "text-on-subtle", children: ` ${suffix}` })
8162
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(Item, { size: "sm", children: [
8163
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(ItemContent, { children: [
8164
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(ItemTitle, { children: [
8165
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "text-on-prominent", children: label }),
8166
+ suffix && /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "text-on-subtle", children: ` ${suffix}` })
7603
8167
  ] }),
7604
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(MetaNote, { market: position.market, duration: position.duration })
8168
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(MetaNote, { market: position.market, duration: position.duration })
7605
8169
  ] }),
7606
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ItemActions, { children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(PnlMeta, { pnl: position.pnl, win: position.win, stake: position.stake }) })
8170
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(ItemActions, { children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(PnlMeta, { pnl: position.pnl, win: position.win, stake: position.stake }) })
7607
8171
  ] });
7608
8172
  }
7609
8173
  var DIGITS_TYPE_LABEL = {
@@ -7629,29 +8193,29 @@ function positionTitleParts(p) {
7629
8193
  }
7630
8194
  }
7631
8195
  function MetaNote({ market, duration }) {
7632
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("span", { className: "text-xs text-on-subtle whitespace-nowrap", children: [
8196
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("span", { className: "text-xs text-on-subtle whitespace-nowrap", children: [
7633
8197
  market,
7634
8198
  " \xB7 ",
7635
8199
  duration
7636
8200
  ] });
7637
8201
  }
7638
8202
  function PnlMeta({ pnl, win, stake }) {
7639
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex flex-col items-end gap-0.5", children: [
7640
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: `font-display font-semibold tabular-nums text-base ${win ? "text-semantic-win" : "text-semantic-loss"}`, children: pnl }),
7641
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("span", { className: "tabular-nums text-xs text-on-subtle", children: stake })
8203
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "flex flex-col items-end gap-0.5", children: [
8204
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: `font-display font-semibold tabular-nums text-base ${win ? "text-semantic-win" : "text-semantic-loss"}`, children: pnl }),
8205
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("span", { className: "tabular-nums text-xs text-on-subtle", children: stake })
7642
8206
  ] });
7643
8207
  }
7644
8208
  function DefaultEmptyState({ onViewHistory }) {
7645
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Empty, { className: "flex min-h-0 flex-1 flex-col justify-center border-none rounded-none p-6 text-center", children: /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(EmptyHeader, { className: "gap-4", children: [
7646
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(EmptyMedia, { children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_lucide_react31.History, { className: "size-8 text-on-subtle" }) }),
7647
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(EmptyTitle, { className: "h6 text-on-subtle", children: "No trades yet." }),
7648
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Button, { variant: "tertiary", size: "md", onClick: onViewHistory, children: "View trade history" })
8209
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Empty, { className: "flex min-h-0 flex-1 flex-col justify-center border-none rounded-none p-6 text-center", children: /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(EmptyHeader, { className: "gap-4", children: [
8210
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(EmptyMedia, { children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_lucide_react33.History, { className: "size-8 text-on-subtle" }) }),
8211
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(EmptyTitle, { className: "h6 text-on-subtle", children: "No trades yet." }),
8212
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Button, { variant: "tertiary", size: "md", onClick: onViewHistory, children: "View trade history" })
7649
8213
  ] }) });
7650
8214
  }
7651
8215
 
7652
8216
  // components/blocks/game-loading-block.tsx
7653
- var React18 = __toESM(require("react"), 1);
7654
- var import_jsx_runtime65 = require("react/jsx-runtime");
8217
+ var React21 = __toESM(require("react"), 1);
8218
+ var import_jsx_runtime67 = require("react/jsx-runtime");
7655
8219
  function useSmoothProgress({
7656
8220
  checkpoints,
7657
8221
  reached,
@@ -7661,19 +8225,19 @@ function useSmoothProgress({
7661
8225
  readyLabel = "Ready"
7662
8226
  }) {
7663
8227
  var _a, _b;
7664
- const [progress, setProgress] = React18.useState(0);
7665
- const [delayed, setDelayed] = React18.useState(false);
7666
- const checkpointsRef = React18.useRef(checkpoints);
7667
- const reachedRef = React18.useRef(reached);
7668
- const doneRef = React18.useRef(done);
7669
- React18.useEffect(() => {
8228
+ const [progress, setProgress] = React21.useState(0);
8229
+ const [delayed, setDelayed] = React21.useState(false);
8230
+ const checkpointsRef = React21.useRef(checkpoints);
8231
+ const reachedRef = React21.useRef(reached);
8232
+ const doneRef = React21.useRef(done);
8233
+ React21.useEffect(() => {
7670
8234
  checkpointsRef.current = checkpoints;
7671
8235
  reachedRef.current = reached;
7672
8236
  doneRef.current = done;
7673
8237
  });
7674
- const progressRef = React18.useRef(0);
7675
- const lastAdvanceRef = React18.useRef(0);
7676
- React18.useEffect(() => {
8238
+ const progressRef = React21.useRef(0);
8239
+ const lastAdvanceRef = React21.useRef(0);
8240
+ React21.useEffect(() => {
7677
8241
  let raf = 0;
7678
8242
  let last = 0;
7679
8243
  const tick = (ts) => {
@@ -7727,14 +8291,14 @@ function GameLoadingBlock({
7727
8291
  backgroundImageUrl,
7728
8292
  className
7729
8293
  }) {
7730
- const [go, setGo] = React18.useState(false);
7731
- const [reduced, setReduced] = React18.useState(false);
7732
- React18.useEffect(() => {
8294
+ const [go, setGo] = React21.useState(false);
8295
+ const [reduced, setReduced] = React21.useState(false);
8296
+ React21.useEffect(() => {
7733
8297
  if (typeof window !== "undefined" && typeof window.matchMedia === "function") {
7734
8298
  setReduced(window.matchMedia("(prefers-reduced-motion: reduce)").matches);
7735
8299
  }
7736
8300
  }, []);
7737
- React18.useEffect(() => {
8301
+ React21.useEffect(() => {
7738
8302
  if (!exiting) return;
7739
8303
  const raf = requestAnimationFrame(() => setGo(true));
7740
8304
  const timer = setTimeout(() => onExitEnd == null ? void 0 : onExitEnd(), reduced ? 240 : 520);
@@ -7744,7 +8308,7 @@ function GameLoadingBlock({
7744
8308
  };
7745
8309
  }, [exiting, reduced, onExitEnd]);
7746
8310
  const isAbsolute = exiting || contained;
7747
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
8311
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(
7748
8312
  "div",
7749
8313
  {
7750
8314
  role: "status",
@@ -7763,7 +8327,7 @@ function GameLoadingBlock({
7763
8327
  ),
7764
8328
  style: backgroundImageUrl ? { backgroundImage: `url(${backgroundImageUrl})` } : void 0,
7765
8329
  children: [
7766
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
8330
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
7767
8331
  "svg",
7768
8332
  {
7769
8333
  width: "120",
@@ -7772,19 +8336,19 @@ function GameLoadingBlock({
7772
8336
  xmlns: "http://www.w3.org/2000/svg",
7773
8337
  "aria-hidden": "true",
7774
8338
  className: cn("game-loader-mark fill-on-primary", exiting && go && !reduced && "game-loader-mark-exit"),
7775
- children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("path", { d: MONOGRAM_D })
8339
+ children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("path", { d: MONOGRAM_D })
7776
8340
  }
7777
8341
  ),
7778
- !exiting && /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex w-[200px] flex-col items-start gap-3.5", children: [
7779
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("div", { className: "relative h-2 w-full overflow-hidden rounded-xs bg-on-primary/25", children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
8342
+ !exiting && /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)("div", { className: "flex w-[200px] flex-col items-start gap-3.5", children: [
8343
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("div", { className: "relative h-2 w-full overflow-hidden rounded-xs bg-on-primary/25", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
7780
8344
  "div",
7781
8345
  {
7782
8346
  className: "absolute inset-y-0 left-0 overflow-hidden rounded-xs bg-on-primary",
7783
8347
  style: { width: `${progress}%` },
7784
- children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { "aria-hidden": "true", className: "game-loader-shimmer absolute inset-y-0 left-[-60%] w-[60%]" })
8348
+ children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { "aria-hidden": "true", className: "game-loader-shimmer absolute inset-y-0 left-[-60%] w-[60%]" })
7785
8349
  }
7786
8350
  ) }),
7787
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("span", { className: "caption text-on-primary/90", children: delayed ? "Taking longer than usual\u2026" : label })
8351
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { className: "caption text-on-primary/90", children: delayed ? "Taking longer than usual\u2026" : label })
7788
8352
  ] })
7789
8353
  ]
7790
8354
  }
@@ -8051,9 +8615,12 @@ function GameLoadingBlock({
8051
8615
  SidebarSeparator,
8052
8616
  SidebarTrigger,
8053
8617
  Skeleton,
8618
+ SlideToConfirm,
8054
8619
  Slider,
8055
8620
  Spinner,
8621
+ Step,
8056
8622
  Stepper,
8623
+ Steps,
8057
8624
  Switch,
8058
8625
  Table,
8059
8626
  TableBody,