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

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
@@ -109,6 +109,7 @@ __export(index_exports, {
109
109
  CardTitle: () => CardTitle,
110
110
  Carousel: () => Carousel,
111
111
  CarouselContent: () => CarouselContent,
112
+ CarouselDots: () => CarouselDots,
112
113
  CarouselItem: () => CarouselItem,
113
114
  CarouselNext: () => CarouselNext,
114
115
  CarouselPrevious: () => CarouselPrevious,
@@ -251,7 +252,9 @@ __export(index_exports, {
251
252
  Numpad: () => Numpad,
252
253
  OpenPositionsBlock: () => OpenPositionsBlock,
253
254
  Pagination: () => Pagination,
255
+ PaginationBar: () => PaginationBar,
254
256
  PaginationContent: () => PaginationContent,
257
+ PaginationDots: () => PaginationDots,
255
258
  PaginationEllipsis: () => PaginationEllipsis,
256
259
  PaginationItem: () => PaginationItem,
257
260
  PaginationLink: () => PaginationLink,
@@ -273,6 +276,7 @@ __export(index_exports, {
273
276
  ResizablePanelGroup: () => ResizablePanelGroup,
274
277
  ResultBlock: () => ResultBlock,
275
278
  ResultDialog: () => ResultDialog,
279
+ ResultSnackbar: () => ResultSnackbar,
276
280
  ScrollArea: () => ScrollArea,
277
281
  ScrollBar: () => ScrollBar,
278
282
  SectionMessage: () => SectionMessage,
@@ -411,7 +415,7 @@ function AccordionTrigger(_a) {
411
415
  __spreadProps(__spreadValues({
412
416
  "data-slot": "accordion-trigger",
413
417
  className: cn(
414
- "flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left type-accordion-trigger transition-all outline-none hover:underline focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:pointer-events-none disabled:opacity-24 [&[data-state=open]>svg]:rotate-180",
418
+ "flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left type-accordion-trigger transition-all outline-none hover:underline focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:pointer-events-none disabled:text-text-disabled-default [&[data-state=open]>svg]:rotate-180",
415
419
  className
416
420
  )
417
421
  }, props), {
@@ -487,44 +491,53 @@ function Spinner(_a) {
487
491
  // components/ui/button.tsx
488
492
  var import_jsx_runtime3 = require("react/jsx-runtime");
489
493
  var buttonVariants = (0, import_class_variance_authority.cva)(
490
- "inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-[color,border-color,opacity,box-shadow,transform] outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong active:opacity-60 disabled:pointer-events-none disabled:opacity-24 aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft [&_svg]:pointer-events-none [&_svg]:shrink-0 font-display",
494
+ "inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-[color,border-color,opacity,box-shadow,transform] outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong active:opacity-60 disabled:pointer-events-none aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft [&_svg]:pointer-events-none [&_svg]:shrink-0 font-display",
491
495
  {
492
496
  variants: {
493
497
  variant: {
494
498
  // Primary brand blue (#2323FF)
495
- primary: "bg-background-brand-default text-text-on-brand-static hover:bg-background-brand-hover active:bg-background-brand-pressed active:opacity-100",
499
+ primary: "bg-background-brand-default text-text-on-brand-static hover:bg-background-brand-hover active:bg-background-brand-pressed active:opacity-100 disabled:[background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))] disabled:text-text-disabled-default",
496
500
  // Primary Inverse — white bg + blue text; for use on dark/coloured surfaces
497
501
  // On-brand family — for buttons standing on a brand-coloured surface
498
502
  // (NOT theme inverses): white pill with primary ink, white outline,
499
503
  // white text. All static, because the brand panel is the same in
500
504
  // both themes.
501
- "primary-on-brand": "bg-background-static-white text-text-brand-default hover:bg-background-static-white-wash",
505
+ "primary-on-brand": "bg-background-static-white text-text-brand-default hover:bg-background-static-white-wash disabled:bg-(--primitive-white-alpha-24) disabled:text-text-on-brand-disabled-default",
502
506
  // Secondary — the design file's white-surface pill: card surface,
503
- // hairline border, prominent ink. Hover swaps to the secondary
504
- // surface (one lift up), press dims via the shared active state.
505
- secondary: "bg-background-primary-surface border border-border-default-default text-text-prominent-default hover:bg-background-secondary-surface",
507
+ // prominent ink, hover swaps to the secondary surface (one lift up),
508
+ // press dims via the shared active state.
509
+ //
510
+ // The edge is 1.5px on `border-control-default`, not the shared 1px
511
+ // hairline. The white fill separates from the canvas by only 1.06:1,
512
+ // so the border — not the fill — is what contains the 16px semibold
513
+ // label; at 1px on the shared hairline it read as detached from both.
514
+ // `secondary-on-brand` matches the width and the *subtlety*
515
+ // (white-alpha-32 = 1.84:1 on brand, against 1.71:1 here) so both
516
+ // read as the same quiet edge. Its contrast is higher only because it
517
+ // has no fill behind it — there, the border IS the button.
518
+ secondary: "bg-background-primary-surface border-[1.5px] border-border-control-default text-text-prominent-default hover:bg-background-secondary-surface disabled:[background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))] disabled:border-border-disabled-default disabled:text-text-disabled-default",
506
519
  // Secondary Inverse — white border + white text; for use on dark/coloured surfaces
507
- "secondary-on-brand": "bg-transparent border border-background-static-white text-text-on-brand-static hover:bg-(--primitive-white-alpha-8)",
508
- tertiary: "bg-transparent text-text-prominent-default hover:bg-background-hover-default",
520
+ "secondary-on-brand": "bg-transparent border-[1.5px] border-(--primitive-white-alpha-32) text-text-on-brand-static hover:bg-(--primitive-white-alpha-8) disabled:border-(--primitive-white-alpha-16) disabled:text-text-on-brand-disabled-default",
521
+ tertiary: "bg-transparent text-text-prominent-default hover:bg-background-hover-default disabled:text-text-disabled-default",
509
522
  // Tertiary Inverse — transparent + white text/icon; for use on dark/coloured surfaces
510
- "tertiary-on-brand": "bg-transparent text-text-on-brand-static hover:bg-(--primitive-white-alpha-8)",
523
+ "tertiary-on-brand": "bg-transparent text-text-on-brand-static hover:bg-(--primitive-white-alpha-8) disabled:text-text-on-brand-disabled-default",
511
524
  // Frosted — the tinted-glass family, one look per surface:
512
525
  // `frosted` sits on page surfaces (brand-selected tint + brand ink,
513
526
  // hover/pressed via the state-layer glazes stacked over the solid
514
527
  // fill); `frosted-on-brand` is the white frost for coloured/art
515
528
  // surfaces (hover thickens the frost, press thins it).
516
- frosted: "bg-background-brand-selected text-text-brand-selected active:opacity-100 hover:[background-image:linear-gradient(var(--background-hover-default),var(--background-hover-default))] active:[background-image:linear-gradient(var(--background-pressed-default),var(--background-pressed-default))]",
517
- "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",
529
+ frosted: "bg-background-brand-selected text-text-brand-selected active:opacity-100 hover:[background-image:linear-gradient(var(--background-hover-default),var(--background-hover-default))] active:[background-image:linear-gradient(var(--background-pressed-default),var(--background-pressed-default))] disabled:[background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))] disabled:text-text-disabled-default",
530
+ "frosted-on-brand": "bg-(--primitive-white-alpha-24) backdrop-blur-md text-text-on-brand-static hover:bg-(--primitive-white-alpha-32) active:bg-(--primitive-white-alpha-16) active:opacity-100 disabled:bg-(--primitive-white-alpha-8) disabled:text-text-on-brand-disabled-default",
518
531
  /* @deprecated aliases — shimmer became the `shimmer` boolean prop;
519
532
  the inverse names became the on-brand family; `glass` became
520
533
  `frosted-on-brand`. Deleted at v1.0. */
521
- glass: "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",
534
+ glass: "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 disabled:bg-(--primitive-white-alpha-8) disabled:text-text-on-brand-disabled-default",
522
535
  "primary-shimmer": "relative overflow-hidden bg-background-brand-default text-text-on-brand-static hover:bg-background-brand-hover active:bg-background-brand-pressed active:opacity-100",
523
536
  "primary-on-brand-shimmer": "relative overflow-hidden bg-background-static-white text-text-brand-default hover:bg-background-static-white-wash",
524
537
  "primary-inverse": "bg-background-static-white text-text-brand-container-static hover:bg-background-static-white-wash",
525
538
  "primary-inverse-shimmer": "relative overflow-hidden bg-background-static-white text-text-brand-container-static hover:bg-background-static-white-wash",
526
539
  "secondary-inverse": "bg-transparent border border-background-static-white text-text-on-brand-static hover:bg-(--primitive-white-alpha-8)",
527
- "tertiary-inverse": "bg-transparent text-text-on-brand-static hover:bg-(--primitive-white-alpha-8)"
540
+ "tertiary-inverse": "bg-transparent text-text-on-brand-static hover:bg-(--primitive-white-alpha-8) disabled:text-text-on-brand-disabled-default"
528
541
  },
529
542
  size: {
530
543
  // One primitive type step per size (16/14/12) and padding-x = half
@@ -631,16 +644,16 @@ var import_radix_ui3 = require("radix-ui");
631
644
  var import_jsx_runtime4 = require("react/jsx-runtime");
632
645
  var navigationButtonVariants = (0, import_class_variance_authority2.cva)(
633
646
  // Icon-only nav control — circular like every icon button in the system.
634
- "inline-flex shrink-0 items-center justify-center rounded-full transition-all duration-fast ease-standard outline-none focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong active:opacity-60 disabled:pointer-events-none disabled:opacity-24 [&_svg]:pointer-events-none [&_svg]:shrink-0",
647
+ "inline-flex shrink-0 items-center justify-center rounded-full transition-all duration-fast ease-standard outline-none focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong active:opacity-60 disabled:pointer-events-none disabled:[background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))] disabled:text-text-disabled-default [&_svg]:pointer-events-none [&_svg]:shrink-0",
635
648
  {
636
649
  variants: {
637
650
  variant: {
638
651
  default: "bg-background-hover-default text-icon-prominent-default hover:bg-background-pressed-default",
639
652
  // Frosted circle for art/hero/brand surfaces — same recipe as
640
653
  // Button's frosted-on-brand: hover thickens the frost, press thins it.
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",
654
+ "frosted-on-brand": "bg-(--primitive-white-alpha-24) backdrop-blur-md text-text-on-brand-static hover:bg-(--primitive-white-alpha-32) active:bg-(--primitive-white-alpha-16) active:opacity-100",
642
655
  /* @deprecated — renamed to frosted-on-brand. Deleted at v1.0. */
643
- glass: "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"
656
+ glass: "bg-(--primitive-white-alpha-24) backdrop-blur-md text-text-on-brand-static hover:bg-(--primitive-white-alpha-32) active:bg-(--primitive-white-alpha-16) active:opacity-100"
644
657
  },
645
658
  size: {
646
659
  lg: "size-12 [&_svg:not([class*='size-'])]:size-6",
@@ -1771,7 +1784,7 @@ function SelectTrigger(_a) {
1771
1784
  "data-readonly": readOnly ? "" : void 0,
1772
1785
  className: cn(
1773
1786
  selectTriggerType[size],
1774
- "flex w-fit items-center justify-between gap-2 rounded-xs border border-border-default-default bg-background-primary-surface text-text-prominent-default appearance-none whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-soft disabled:cursor-not-allowed disabled:opacity-24 aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft data-[placeholder]:text-text-subtle-default data-[size=sm]:h-8 data-[size=sm]:px-3 data-[size=sm]:py-1 data-[size=md]:h-10 data-[size=md]:px-3 data-[size=md]:py-1 data-[size=lg]:h-12 data-[size=lg]:px-4 data-[size=lg]:py-2 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default data-[readonly]:cursor-default data-[readonly]:opacity-100",
1787
+ "flex w-fit items-center justify-between gap-2 rounded-xs border border-border-default-default bg-background-primary-surface text-text-prominent-default appearance-none whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-soft disabled:cursor-not-allowed disabled:text-text-disabled-default disabled:[background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))] aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft data-[placeholder]:text-text-subtle-default data-[size=sm]:h-8 data-[size=sm]:px-3 data-[size=sm]:py-1 data-[size=md]:h-10 data-[size=md]:px-3 data-[size=md]:py-1 data-[size=lg]:h-12 data-[size=lg]:px-4 data-[size=lg]:py-2 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default data-[readonly]:cursor-default data-[readonly]:opacity-100",
1775
1788
  className
1776
1789
  )
1777
1790
  }, props), {
@@ -1870,7 +1883,7 @@ function SelectItem(_a) {
1870
1883
  __spreadProps(__spreadValues({
1871
1884
  "data-slot": "select-item",
1872
1885
  className: cn(
1873
- "relative flex w-full cursor-default items-center gap-2 type-menu-item rounded-md py-1.5 pr-8 pl-2 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[state=checked]:text-text-brand-selected data-[disabled]:pointer-events-none data-[disabled]:opacity-24 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
1886
+ "relative flex w-full cursor-default items-center gap-2 type-menu-item rounded-md py-1.5 pr-8 pl-2 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[state=checked]:text-text-brand-selected data-[disabled]:pointer-events-none data-[disabled]:text-text-disabled-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
1874
1887
  className
1875
1888
  )
1876
1889
  }, props), {
@@ -1991,12 +2004,12 @@ function Calendar(_a) {
1991
2004
  ),
1992
2005
  button_previous: cn(
1993
2006
  buttonVariants({ variant: buttonVariant }),
1994
- "pointer-events-auto size-(--cell-size) p-0 select-none aria-disabled:opacity-24",
2007
+ "pointer-events-auto size-(--cell-size) p-0 select-none aria-disabled:[background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))] disabled:text-text-disabled-default",
1995
2008
  defaultClassNames.button_previous
1996
2009
  ),
1997
2010
  button_next: cn(
1998
2011
  buttonVariants({ variant: buttonVariant }),
1999
- "pointer-events-auto size-(--cell-size) p-0 select-none aria-disabled:opacity-24",
2012
+ "pointer-events-auto size-(--cell-size) p-0 select-none aria-disabled:[background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))] disabled:text-text-disabled-default",
2000
2013
  defaultClassNames.button_next
2001
2014
  ),
2002
2015
  month_caption: cn(
@@ -2275,13 +2288,226 @@ function CardFooter(_a) {
2275
2288
  }
2276
2289
 
2277
2290
  // components/ui/carousel.tsx
2278
- var React5 = __toESM(require("react"), 1);
2291
+ var React6 = __toESM(require("react"), 1);
2279
2292
  var import_embla_carousel_react = __toESM(require("embla-carousel-react"), 1);
2293
+ var import_lucide_react9 = require("lucide-react");
2294
+
2295
+ // components/ui/pagination.tsx
2296
+ var React5 = __toESM(require("react"), 1);
2280
2297
  var import_lucide_react8 = require("lucide-react");
2281
2298
  var import_jsx_runtime16 = require("react/jsx-runtime");
2282
- var CarouselContext = React5.createContext(null);
2299
+ function Pagination(_a) {
2300
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2301
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2302
+ "nav",
2303
+ __spreadValues({
2304
+ role: "navigation",
2305
+ "aria-label": "pagination",
2306
+ "data-slot": "pagination",
2307
+ className: cn("mx-auto flex w-full justify-center", className)
2308
+ }, props)
2309
+ );
2310
+ }
2311
+ function PaginationContent(_a) {
2312
+ var _b = _a, {
2313
+ className
2314
+ } = _b, props = __objRest(_b, [
2315
+ "className"
2316
+ ]);
2317
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2318
+ "ul",
2319
+ __spreadValues({
2320
+ "data-slot": "pagination-content",
2321
+ className: cn("flex flex-row items-center gap-1", className)
2322
+ }, props)
2323
+ );
2324
+ }
2325
+ function PaginationItem(_a) {
2326
+ var props = __objRest(_a, []);
2327
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("li", __spreadValues({ "data-slot": "pagination-item" }, props));
2328
+ }
2329
+ function PaginationLink(_a) {
2330
+ var _b = _a, {
2331
+ className,
2332
+ isActive
2333
+ } = _b, props = __objRest(_b, [
2334
+ "className",
2335
+ "isActive"
2336
+ ]);
2337
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2338
+ "a",
2339
+ __spreadValues({
2340
+ "aria-current": isActive ? "page" : void 0,
2341
+ "data-slot": "pagination-link",
2342
+ "data-active": isActive,
2343
+ className: cn(
2344
+ "type-pagination inline-flex shrink-0 items-center justify-center size-10 rounded-full font-display whitespace-nowrap transition-[color,background-color,border-color] outline-none border focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong",
2345
+ isActive ? "bg-background-brand-selected border-border-brand-selected text-text-brand-selected" : "bg-transparent border-transparent text-text-prominent-default hover:bg-background-hover-default",
2346
+ className
2347
+ )
2348
+ }, props)
2349
+ );
2350
+ }
2351
+ function PaginationPrevious(_a) {
2352
+ var _b = _a, {
2353
+ className
2354
+ } = _b, props = __objRest(_b, [
2355
+ "className"
2356
+ ]);
2357
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Button, { asChild: true, variant: "tertiary", size: "icon-md", className: cn(className), children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("a", __spreadProps(__spreadValues({ "aria-label": "Go to previous page", "data-slot": "pagination-link" }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react8.ChevronLeftIcon, { className: "size-5" }) })) });
2358
+ }
2359
+ function PaginationNext(_a) {
2360
+ var _b = _a, {
2361
+ className
2362
+ } = _b, props = __objRest(_b, [
2363
+ "className"
2364
+ ]);
2365
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Button, { asChild: true, variant: "tertiary", size: "icon-md", className: cn(className), children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("a", __spreadProps(__spreadValues({ "aria-label": "Go to next page", "data-slot": "pagination-link" }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react8.ChevronRightIcon, { className: "size-5" }) })) });
2366
+ }
2367
+ function PaginationEllipsis(_a) {
2368
+ var _b = _a, {
2369
+ className
2370
+ } = _b, props = __objRest(_b, [
2371
+ "className"
2372
+ ]);
2373
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
2374
+ "span",
2375
+ __spreadProps(__spreadValues({
2376
+ "aria-hidden": true,
2377
+ "data-slot": "pagination-ellipsis",
2378
+ className: cn("flex size-10 items-center justify-center", className)
2379
+ }, props), {
2380
+ children: [
2381
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react8.MoreHorizontalIcon, { className: "size-4" }),
2382
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "sr-only", children: "More pages" })
2383
+ ]
2384
+ })
2385
+ );
2386
+ }
2387
+ var INDICATOR_WIDTHS = {
2388
+ sm: "w-4",
2389
+ md: "w-6",
2390
+ lg: "w-8"
2391
+ };
2392
+ var ACTIVE_DOT_WIDTHS = {
2393
+ sm: "w-4",
2394
+ md: "w-5",
2395
+ lg: "w-6"
2396
+ };
2397
+ var DOT_SIZES = {
2398
+ sm: "size-1.5",
2399
+ md: "size-2",
2400
+ lg: "size-2.5"
2401
+ };
2402
+ function useIndicatorPages(total) {
2403
+ return React5.useMemo(
2404
+ () => Array.from({ length: Math.max(0, total) }, (_, i) => i),
2405
+ [total]
2406
+ );
2407
+ }
2408
+ function PaginationDots(_a) {
2409
+ var _b = _a, {
2410
+ className,
2411
+ page,
2412
+ total,
2413
+ onPageChange,
2414
+ size = "md",
2415
+ label = "Pagination"
2416
+ } = _b, props = __objRest(_b, [
2417
+ "className",
2418
+ "page",
2419
+ "total",
2420
+ "onPageChange",
2421
+ "size",
2422
+ "label"
2423
+ ]);
2424
+ const pages = useIndicatorPages(total);
2425
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2426
+ "nav",
2427
+ __spreadProps(__spreadValues({
2428
+ role: "navigation",
2429
+ "aria-label": label,
2430
+ "data-slot": "pagination-dots",
2431
+ className: cn("flex items-center justify-center gap-1", className)
2432
+ }, props), {
2433
+ children: pages.map((i) => {
2434
+ const active = i === page;
2435
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2436
+ "button",
2437
+ {
2438
+ type: "button",
2439
+ "data-slot": "pagination-dot",
2440
+ "data-active": active || void 0,
2441
+ "aria-current": active ? "page" : void 0,
2442
+ "aria-label": `Go to page ${i + 1}`,
2443
+ onClick: () => onPageChange == null ? void 0 : onPageChange(i),
2444
+ className: cn(
2445
+ "rounded-full outline-none transition-[width,background-color] duration-base ease-standard",
2446
+ "focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong",
2447
+ active ? cn("h-1.5 bg-background-brand-default", ACTIVE_DOT_WIDTHS[size]) : cn(DOT_SIZES[size], "bg-background-secondary-surface hover:bg-background-brand-selected")
2448
+ )
2449
+ },
2450
+ i
2451
+ );
2452
+ })
2453
+ })
2454
+ );
2455
+ }
2456
+ function PaginationBar(_a) {
2457
+ var _b = _a, {
2458
+ className,
2459
+ page,
2460
+ total,
2461
+ onPageChange,
2462
+ size = "md",
2463
+ label = "Pagination"
2464
+ } = _b, props = __objRest(_b, [
2465
+ "className",
2466
+ "page",
2467
+ "total",
2468
+ "onPageChange",
2469
+ "size",
2470
+ "label"
2471
+ ]);
2472
+ const pages = useIndicatorPages(total);
2473
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2474
+ "nav",
2475
+ __spreadProps(__spreadValues({
2476
+ role: "navigation",
2477
+ "aria-label": label,
2478
+ "data-slot": "pagination-bar",
2479
+ className: cn("flex items-center justify-center gap-1", className)
2480
+ }, props), {
2481
+ children: pages.map((i) => {
2482
+ const active = i === page;
2483
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2484
+ "button",
2485
+ {
2486
+ type: "button",
2487
+ "data-slot": "pagination-segment",
2488
+ "data-active": active || void 0,
2489
+ "aria-current": active ? "page" : void 0,
2490
+ "aria-label": `Go to page ${i + 1}`,
2491
+ onClick: () => onPageChange == null ? void 0 : onPageChange(i),
2492
+ className: cn(
2493
+ "h-1 rounded-full outline-none transition-colors duration-base ease-standard",
2494
+ INDICATOR_WIDTHS[size],
2495
+ "focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong",
2496
+ active ? "bg-background-brand-default" : "bg-background-secondary-surface hover:bg-background-brand-selected"
2497
+ )
2498
+ },
2499
+ i
2500
+ );
2501
+ })
2502
+ })
2503
+ );
2504
+ }
2505
+
2506
+ // components/ui/carousel.tsx
2507
+ var import_jsx_runtime17 = require("react/jsx-runtime");
2508
+ var CarouselContext = React6.createContext(null);
2283
2509
  function useCarousel() {
2284
- const context = React5.useContext(CarouselContext);
2510
+ const context = React6.useContext(CarouselContext);
2285
2511
  if (!context) {
2286
2512
  throw new Error("useCarousel must be used within a <Carousel />");
2287
2513
  }
@@ -2309,20 +2535,27 @@ function Carousel(_a) {
2309
2535
  }),
2310
2536
  plugins
2311
2537
  );
2312
- const [canScrollPrev, setCanScrollPrev] = React5.useState(false);
2313
- const [canScrollNext, setCanScrollNext] = React5.useState(false);
2314
- const onSelect = React5.useCallback((api2) => {
2538
+ const [canScrollPrev, setCanScrollPrev] = React6.useState(false);
2539
+ const [canScrollNext, setCanScrollNext] = React6.useState(false);
2540
+ const [selectedIndex, setSelectedIndex] = React6.useState(0);
2541
+ const [slideCount, setSlideCount] = React6.useState(0);
2542
+ const onSelect = React6.useCallback((api2) => {
2315
2543
  if (!api2) return;
2316
2544
  setCanScrollPrev(api2.canScrollPrev());
2317
2545
  setCanScrollNext(api2.canScrollNext());
2546
+ setSelectedIndex(api2.selectedScrollSnap());
2547
+ setSlideCount(api2.scrollSnapList().length);
2318
2548
  }, []);
2319
- const scrollPrev = React5.useCallback(() => {
2549
+ const scrollPrev = React6.useCallback(() => {
2320
2550
  api == null ? void 0 : api.scrollPrev();
2321
2551
  }, [api]);
2322
- const scrollNext = React5.useCallback(() => {
2552
+ const scrollNext = React6.useCallback(() => {
2323
2553
  api == null ? void 0 : api.scrollNext();
2324
2554
  }, [api]);
2325
- const handleKeyDown = React5.useCallback(
2555
+ const scrollTo = React6.useCallback((index) => {
2556
+ api == null ? void 0 : api.scrollTo(index);
2557
+ }, [api]);
2558
+ const handleKeyDown = React6.useCallback(
2326
2559
  (event) => {
2327
2560
  if (event.key === "ArrowLeft") {
2328
2561
  event.preventDefault();
@@ -2334,11 +2567,11 @@ function Carousel(_a) {
2334
2567
  },
2335
2568
  [scrollPrev, scrollNext]
2336
2569
  );
2337
- React5.useEffect(() => {
2570
+ React6.useEffect(() => {
2338
2571
  if (!api || !setApi) return;
2339
2572
  setApi(api);
2340
2573
  }, [api, setApi]);
2341
- React5.useEffect(() => {
2574
+ React6.useEffect(() => {
2342
2575
  if (!api) return;
2343
2576
  onSelect(api);
2344
2577
  api.on("reInit", onSelect);
@@ -2347,7 +2580,7 @@ function Carousel(_a) {
2347
2580
  api == null ? void 0 : api.off("select", onSelect);
2348
2581
  };
2349
2582
  }, [api, onSelect]);
2350
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2583
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2351
2584
  CarouselContext.Provider,
2352
2585
  {
2353
2586
  value: {
@@ -2358,9 +2591,12 @@ function Carousel(_a) {
2358
2591
  scrollPrev,
2359
2592
  scrollNext,
2360
2593
  canScrollPrev,
2361
- canScrollNext
2594
+ canScrollNext,
2595
+ selectedIndex,
2596
+ slideCount,
2597
+ scrollTo
2362
2598
  },
2363
- children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2599
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2364
2600
  "div",
2365
2601
  __spreadProps(__spreadValues({
2366
2602
  onKeyDownCapture: handleKeyDown,
@@ -2378,13 +2614,13 @@ function Carousel(_a) {
2378
2614
  function CarouselContent(_a) {
2379
2615
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2380
2616
  const { carouselRef, orientation } = useCarousel();
2381
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2617
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2382
2618
  "div",
2383
2619
  {
2384
2620
  ref: carouselRef,
2385
2621
  className: "overflow-hidden",
2386
2622
  "data-slot": "carousel-content",
2387
- children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2623
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2388
2624
  "div",
2389
2625
  __spreadValues({
2390
2626
  className: cn(
@@ -2400,7 +2636,7 @@ function CarouselContent(_a) {
2400
2636
  function CarouselItem(_a) {
2401
2637
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2402
2638
  const { orientation } = useCarousel();
2403
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
2639
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2404
2640
  "div",
2405
2641
  __spreadValues({
2406
2642
  role: "group",
@@ -2425,7 +2661,7 @@ function CarouselPrevious(_a) {
2425
2661
  "size"
2426
2662
  ]);
2427
2663
  const { orientation, scrollPrev, canScrollPrev } = useCarousel();
2428
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
2664
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
2429
2665
  Button,
2430
2666
  __spreadProps(__spreadValues({
2431
2667
  "data-slot": "carousel-previous",
@@ -2440,8 +2676,8 @@ function CarouselPrevious(_a) {
2440
2676
  onClick: scrollPrev
2441
2677
  }, props), {
2442
2678
  children: [
2443
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react8.ArrowLeft, {}),
2444
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "sr-only", children: "Previous slide" })
2679
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react9.ArrowLeft, {}),
2680
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "sr-only", children: "Previous slide" })
2445
2681
  ]
2446
2682
  })
2447
2683
  );
@@ -2457,7 +2693,7 @@ function CarouselNext(_a) {
2457
2693
  "size"
2458
2694
  ]);
2459
2695
  const { orientation, scrollNext, canScrollNext } = useCarousel();
2460
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
2696
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
2461
2697
  Button,
2462
2698
  __spreadProps(__spreadValues({
2463
2699
  "data-slot": "carousel-next",
@@ -2472,16 +2708,34 @@ function CarouselNext(_a) {
2472
2708
  onClick: scrollNext
2473
2709
  }, props), {
2474
2710
  children: [
2475
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_lucide_react8.ArrowRight, {}),
2476
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "sr-only", children: "Next slide" })
2711
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_lucide_react9.ArrowRight, {}),
2712
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "sr-only", children: "Next slide" })
2477
2713
  ]
2478
2714
  })
2479
2715
  );
2480
2716
  }
2717
+ function CarouselDots(_a) {
2718
+ var _b = _a, {
2719
+ variant = "dots"
2720
+ } = _b, props = __objRest(_b, [
2721
+ "variant"
2722
+ ]);
2723
+ const { selectedIndex, slideCount, scrollTo } = useCarousel();
2724
+ const Indicator = variant === "bar" ? PaginationBar : PaginationDots;
2725
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2726
+ Indicator,
2727
+ __spreadValues({
2728
+ page: selectedIndex,
2729
+ total: slideCount,
2730
+ onPageChange: scrollTo,
2731
+ label: "Carousel position"
2732
+ }, props)
2733
+ );
2734
+ }
2481
2735
 
2482
2736
  // components/ui/chip.tsx
2483
2737
  var import_class_variance_authority5 = require("class-variance-authority");
2484
- var import_jsx_runtime17 = require("react/jsx-runtime");
2738
+ var import_jsx_runtime18 = require("react/jsx-runtime");
2485
2739
  var chipVariants = (0, import_class_variance_authority5.cva)(
2486
2740
  "inline-flex w-fit items-center justify-center rounded-full font-body whitespace-nowrap transition-colors outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:pointer-events-none disabled:border disabled:border-border-default-default disabled:bg-transparent disabled:text-text-disabled-default",
2487
2741
  {
@@ -2498,7 +2752,7 @@ var chipVariants = (0, import_class_variance_authority5.cva)(
2498
2752
  );
2499
2753
  function Chip(_a) {
2500
2754
  var _b = _a, { children, selected = false, variant = "default", size, className, disabled } = _b, props = __objRest(_b, ["children", "selected", "variant", "size", "className", "disabled"]);
2501
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
2755
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2502
2756
  "button",
2503
2757
  __spreadProps(__spreadValues({
2504
2758
  type: "button",
@@ -2520,30 +2774,30 @@ function Chip(_a) {
2520
2774
  }
2521
2775
 
2522
2776
  // components/ui/checkbox.tsx
2523
- var import_lucide_react9 = require("lucide-react");
2777
+ var import_lucide_react10 = require("lucide-react");
2524
2778
  var import_radix_ui11 = require("radix-ui");
2525
- var import_jsx_runtime18 = require("react/jsx-runtime");
2779
+ var import_jsx_runtime19 = require("react/jsx-runtime");
2526
2780
  function Checkbox(_a) {
2527
2781
  var _b = _a, {
2528
2782
  className
2529
2783
  } = _b, props = __objRest(_b, [
2530
2784
  "className"
2531
2785
  ]);
2532
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2786
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2533
2787
  import_radix_ui11.Checkbox.Root,
2534
2788
  __spreadProps(__spreadValues({
2535
2789
  "data-slot": "checkbox",
2536
2790
  className: cn(
2537
- "peer size-4 shrink-0 rounded-2xs border border-border-default-default bg-background-primary-surface transition-colors outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:cursor-not-allowed disabled:opacity-24 data-[state=checked]:border-transparent data-[state=checked]:bg-background-brand-default data-[state=checked]:text-text-on-brand-static",
2791
+ "peer size-4 shrink-0 rounded-2xs border border-border-default-default bg-background-primary-surface transition-colors outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:cursor-not-allowed disabled:border-border-default-default disabled:text-text-disabled-default data-[state=checked]:border-transparent data-[state=checked]:bg-background-brand-default data-[state=checked]:text-text-on-brand-static",
2538
2792
  className
2539
2793
  )
2540
2794
  }, props), {
2541
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
2795
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2542
2796
  import_radix_ui11.Checkbox.Indicator,
2543
2797
  {
2544
2798
  "data-slot": "checkbox-indicator",
2545
2799
  className: "grid place-content-center text-current transition-none",
2546
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_lucide_react9.CheckIcon, { className: "size-3.5" })
2800
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react10.CheckIcon, { className: "size-3.5" })
2547
2801
  }
2548
2802
  )
2549
2803
  })
@@ -2552,27 +2806,27 @@ function Checkbox(_a) {
2552
2806
 
2553
2807
  // components/ui/command.tsx
2554
2808
  var import_cmdk = require("cmdk");
2555
- var import_lucide_react11 = require("lucide-react");
2809
+ var import_lucide_react12 = require("lucide-react");
2556
2810
 
2557
2811
  // components/ui/dialog.tsx
2558
- var import_lucide_react10 = require("lucide-react");
2812
+ var import_lucide_react11 = require("lucide-react");
2559
2813
  var import_radix_ui12 = require("radix-ui");
2560
- var import_jsx_runtime19 = require("react/jsx-runtime");
2814
+ var import_jsx_runtime20 = require("react/jsx-runtime");
2561
2815
  function Dialog(_a) {
2562
2816
  var props = __objRest(_a, []);
2563
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_radix_ui12.Dialog.Root, __spreadValues({ "data-slot": "dialog" }, props));
2817
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_radix_ui12.Dialog.Root, __spreadValues({ "data-slot": "dialog" }, props));
2564
2818
  }
2565
2819
  function DialogTrigger(_a) {
2566
2820
  var props = __objRest(_a, []);
2567
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_radix_ui12.Dialog.Trigger, __spreadValues({ "data-slot": "dialog-trigger" }, props));
2821
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_radix_ui12.Dialog.Trigger, __spreadValues({ "data-slot": "dialog-trigger" }, props));
2568
2822
  }
2569
2823
  function DialogPortal(_a) {
2570
2824
  var props = __objRest(_a, []);
2571
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_radix_ui12.Dialog.Portal, __spreadValues({ "data-slot": "dialog-portal" }, props));
2825
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_radix_ui12.Dialog.Portal, __spreadValues({ "data-slot": "dialog-portal" }, props));
2572
2826
  }
2573
2827
  function DialogClose(_a) {
2574
2828
  var props = __objRest(_a, []);
2575
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_radix_ui12.Dialog.Close, __spreadValues({ "data-slot": "dialog-close" }, props));
2829
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_radix_ui12.Dialog.Close, __spreadValues({ "data-slot": "dialog-close" }, props));
2576
2830
  }
2577
2831
  function DialogOverlay(_a) {
2578
2832
  var _b = _a, {
@@ -2580,7 +2834,7 @@ function DialogOverlay(_a) {
2580
2834
  } = _b, props = __objRest(_b, [
2581
2835
  "className"
2582
2836
  ]);
2583
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2837
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2584
2838
  import_radix_ui12.Dialog.Overlay,
2585
2839
  __spreadValues({
2586
2840
  "data-slot": "dialog-overlay",
@@ -2601,9 +2855,9 @@ function DialogContent(_a) {
2601
2855
  "children",
2602
2856
  "showCloseButton"
2603
2857
  ]);
2604
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(DialogPortal, { "data-slot": "dialog-portal", children: [
2605
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(DialogOverlay, {}),
2606
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
2858
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(DialogPortal, { "data-slot": "dialog-portal", children: [
2859
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogOverlay, {}),
2860
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
2607
2861
  import_radix_ui12.Dialog.Content,
2608
2862
  __spreadProps(__spreadValues({
2609
2863
  "data-slot": "dialog-content",
@@ -2614,14 +2868,14 @@ function DialogContent(_a) {
2614
2868
  }, props), {
2615
2869
  children: [
2616
2870
  children,
2617
- showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_radix_ui12.Dialog.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2871
+ showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_radix_ui12.Dialog.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2618
2872
  NavigationButton,
2619
2873
  {
2620
2874
  "data-slot": "dialog-close",
2621
2875
  size: "sm",
2622
2876
  "aria-label": "Close",
2623
2877
  className: "absolute top-4 right-4",
2624
- children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_lucide_react10.XIcon, { className: "size-4" })
2878
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react11.XIcon, { className: "size-4" })
2625
2879
  }
2626
2880
  ) })
2627
2881
  ]
@@ -2631,7 +2885,7 @@ function DialogContent(_a) {
2631
2885
  }
2632
2886
  function DialogHeader(_a) {
2633
2887
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2634
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2888
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2635
2889
  "div",
2636
2890
  __spreadValues({
2637
2891
  "data-slot": "dialog-header",
@@ -2649,7 +2903,7 @@ function DialogFooter(_a) {
2649
2903
  "showCloseButton",
2650
2904
  "children"
2651
2905
  ]);
2652
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
2906
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
2653
2907
  "div",
2654
2908
  __spreadProps(__spreadValues({
2655
2909
  "data-slot": "dialog-footer",
@@ -2660,7 +2914,7 @@ function DialogFooter(_a) {
2660
2914
  }, props), {
2661
2915
  children: [
2662
2916
  children,
2663
- showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_radix_ui12.Dialog.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Button, { variant: "secondary", size: "md", children: "Close" }) })
2917
+ showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_radix_ui12.Dialog.Close, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Button, { variant: "secondary", size: "md", children: "Close" }) })
2664
2918
  ]
2665
2919
  })
2666
2920
  );
@@ -2671,7 +2925,7 @@ function DialogTitle(_a) {
2671
2925
  } = _b, props = __objRest(_b, [
2672
2926
  "className"
2673
2927
  ]);
2674
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2928
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2675
2929
  import_radix_ui12.Dialog.Title,
2676
2930
  __spreadValues({
2677
2931
  "data-slot": "dialog-title",
@@ -2685,7 +2939,7 @@ function DialogDescription(_a) {
2685
2939
  } = _b, props = __objRest(_b, [
2686
2940
  "className"
2687
2941
  ]);
2688
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2942
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2689
2943
  import_radix_ui12.Dialog.Description,
2690
2944
  __spreadValues({
2691
2945
  "data-slot": "dialog-description",
@@ -2695,14 +2949,14 @@ function DialogDescription(_a) {
2695
2949
  }
2696
2950
 
2697
2951
  // components/ui/command.tsx
2698
- var import_jsx_runtime20 = require("react/jsx-runtime");
2952
+ var import_jsx_runtime21 = require("react/jsx-runtime");
2699
2953
  function Command(_a) {
2700
2954
  var _b = _a, {
2701
2955
  className
2702
2956
  } = _b, props = __objRest(_b, [
2703
2957
  "className"
2704
2958
  ]);
2705
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2959
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2706
2960
  import_cmdk.Command,
2707
2961
  __spreadValues({
2708
2962
  "data-slot": "command",
@@ -2727,17 +2981,17 @@ function CommandDialog(_a) {
2727
2981
  "className",
2728
2982
  "showCloseButton"
2729
2983
  ]);
2730
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(Dialog, __spreadProps(__spreadValues({}, props), { children: [
2731
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(DialogHeader, { className: "sr-only", children: [
2732
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogTitle, { children: title }),
2733
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DialogDescription, { children: description })
2984
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(Dialog, __spreadProps(__spreadValues({}, props), { children: [
2985
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(DialogHeader, { className: "sr-only", children: [
2986
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DialogTitle, { children: title }),
2987
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(DialogDescription, { children: description })
2734
2988
  ] }),
2735
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
2989
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2736
2990
  DialogContent,
2737
2991
  {
2738
2992
  className: cn("overflow-hidden p-0", className),
2739
2993
  showCloseButton,
2740
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(Command, { className: "**:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-text-subtle-default [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children })
2994
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Command, { className: "**:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-text-subtle-default [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children })
2741
2995
  }
2742
2996
  )
2743
2997
  ] }));
@@ -2748,19 +3002,19 @@ function CommandInput(_a) {
2748
3002
  } = _b, props = __objRest(_b, [
2749
3003
  "className"
2750
3004
  ]);
2751
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
3005
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
2752
3006
  "div",
2753
3007
  {
2754
3008
  "data-slot": "command-input-wrapper",
2755
3009
  className: "flex h-9 items-center gap-2 border-b border-border-default-default px-3",
2756
3010
  children: [
2757
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_lucide_react11.SearchIcon, { className: "size-4 shrink-0 text-icon-subtle-default" }),
2758
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3011
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react12.SearchIcon, { className: "size-4 shrink-0 text-icon-subtle-default" }),
3012
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2759
3013
  import_cmdk.Command.Input,
2760
3014
  __spreadValues({
2761
3015
  "data-slot": "command-input",
2762
3016
  className: cn(
2763
- "type-menu-item flex h-10 w-full rounded-md bg-transparent py-3 outline-hidden placeholder:text-text-subtle-default disabled:cursor-not-allowed disabled:opacity-24",
3017
+ "type-menu-item flex h-10 w-full rounded-md bg-transparent py-3 outline-hidden placeholder:text-text-subtle-default disabled:cursor-not-allowed disabled:text-text-disabled-default",
2764
3018
  className
2765
3019
  )
2766
3020
  }, props)
@@ -2775,7 +3029,7 @@ function CommandList(_a) {
2775
3029
  } = _b, props = __objRest(_b, [
2776
3030
  "className"
2777
3031
  ]);
2778
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3032
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2779
3033
  import_cmdk.Command.List,
2780
3034
  __spreadValues({
2781
3035
  "data-slot": "command-list",
@@ -2788,7 +3042,7 @@ function CommandList(_a) {
2788
3042
  }
2789
3043
  function CommandEmpty(_a) {
2790
3044
  var props = __objRest(_a, []);
2791
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3045
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2792
3046
  import_cmdk.Command.Empty,
2793
3047
  __spreadValues({
2794
3048
  "data-slot": "command-empty",
@@ -2802,7 +3056,7 @@ function CommandGroup(_a) {
2802
3056
  } = _b, props = __objRest(_b, [
2803
3057
  "className"
2804
3058
  ]);
2805
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3059
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2806
3060
  import_cmdk.Command.Group,
2807
3061
  __spreadValues({
2808
3062
  "data-slot": "command-group",
@@ -2819,7 +3073,7 @@ function CommandSeparator(_a) {
2819
3073
  } = _b, props = __objRest(_b, [
2820
3074
  "className"
2821
3075
  ]);
2822
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3076
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2823
3077
  import_cmdk.Command.Separator,
2824
3078
  __spreadValues({
2825
3079
  "data-slot": "command-separator",
@@ -2833,12 +3087,12 @@ function CommandItem(_a) {
2833
3087
  } = _b, props = __objRest(_b, [
2834
3088
  "className"
2835
3089
  ]);
2836
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3090
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2837
3091
  import_cmdk.Command.Item,
2838
3092
  __spreadValues({
2839
3093
  "data-slot": "command-item",
2840
3094
  className: cn(
2841
- "type-menu-item relative flex cursor-default items-center gap-2 rounded-md px-2 py-1.5 outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-24 data-[selected=true]:bg-background-hover-default data-[selected=true]:text-text-prominent-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default",
3095
+ "type-menu-item relative flex cursor-default items-center gap-2 rounded-md px-2 py-1.5 outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:text-text-disabled-default data-[selected=true]:bg-background-hover-default data-[selected=true]:text-text-prominent-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default",
2842
3096
  className
2843
3097
  )
2844
3098
  }, props)
@@ -2850,7 +3104,7 @@ function CommandShortcut(_a) {
2850
3104
  } = _b, props = __objRest(_b, [
2851
3105
  "className"
2852
3106
  ]);
2853
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3107
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
2854
3108
  "span",
2855
3109
  __spreadValues({
2856
3110
  "data-slot": "command-shortcut",
@@ -2863,32 +3117,32 @@ function CommandShortcut(_a) {
2863
3117
  }
2864
3118
 
2865
3119
  // components/ui/context-menu.tsx
2866
- var import_lucide_react12 = require("lucide-react");
3120
+ var import_lucide_react13 = require("lucide-react");
2867
3121
  var import_radix_ui13 = require("radix-ui");
2868
- var import_jsx_runtime21 = require("react/jsx-runtime");
3122
+ var import_jsx_runtime22 = require("react/jsx-runtime");
2869
3123
  function ContextMenu(_a) {
2870
3124
  var props = __objRest(_a, []);
2871
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_radix_ui13.ContextMenu.Root, __spreadValues({ "data-slot": "context-menu" }, props));
3125
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_radix_ui13.ContextMenu.Root, __spreadValues({ "data-slot": "context-menu" }, props));
2872
3126
  }
2873
3127
  function ContextMenuTrigger(_a) {
2874
3128
  var props = __objRest(_a, []);
2875
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_radix_ui13.ContextMenu.Trigger, __spreadValues({ "data-slot": "context-menu-trigger" }, props));
3129
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_radix_ui13.ContextMenu.Trigger, __spreadValues({ "data-slot": "context-menu-trigger" }, props));
2876
3130
  }
2877
3131
  function ContextMenuGroup(_a) {
2878
3132
  var props = __objRest(_a, []);
2879
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_radix_ui13.ContextMenu.Group, __spreadValues({ "data-slot": "context-menu-group" }, props));
3133
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_radix_ui13.ContextMenu.Group, __spreadValues({ "data-slot": "context-menu-group" }, props));
2880
3134
  }
2881
3135
  function ContextMenuPortal(_a) {
2882
3136
  var props = __objRest(_a, []);
2883
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_radix_ui13.ContextMenu.Portal, __spreadValues({ "data-slot": "context-menu-portal" }, props));
3137
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_radix_ui13.ContextMenu.Portal, __spreadValues({ "data-slot": "context-menu-portal" }, props));
2884
3138
  }
2885
3139
  function ContextMenuSub(_a) {
2886
3140
  var props = __objRest(_a, []);
2887
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_radix_ui13.ContextMenu.Sub, __spreadValues({ "data-slot": "context-menu-sub" }, props));
3141
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_radix_ui13.ContextMenu.Sub, __spreadValues({ "data-slot": "context-menu-sub" }, props));
2888
3142
  }
2889
3143
  function ContextMenuRadioGroup(_a) {
2890
3144
  var props = __objRest(_a, []);
2891
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3145
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2892
3146
  import_radix_ui13.ContextMenu.RadioGroup,
2893
3147
  __spreadValues({
2894
3148
  "data-slot": "context-menu-radio-group"
@@ -2905,7 +3159,7 @@ function ContextMenuSubTrigger(_a) {
2905
3159
  "inset",
2906
3160
  "children"
2907
3161
  ]);
2908
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
3162
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
2909
3163
  import_radix_ui13.ContextMenu.SubTrigger,
2910
3164
  __spreadProps(__spreadValues({
2911
3165
  "data-slot": "context-menu-sub-trigger",
@@ -2917,7 +3171,7 @@ function ContextMenuSubTrigger(_a) {
2917
3171
  }, props), {
2918
3172
  children: [
2919
3173
  children,
2920
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react12.ChevronRightIcon, { className: "ml-auto" })
3174
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react13.ChevronRightIcon, { className: "ml-auto" })
2921
3175
  ]
2922
3176
  })
2923
3177
  );
@@ -2928,7 +3182,7 @@ function ContextMenuSubContent(_a) {
2928
3182
  } = _b, props = __objRest(_b, [
2929
3183
  "className"
2930
3184
  ]);
2931
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3185
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2932
3186
  import_radix_ui13.ContextMenu.SubContent,
2933
3187
  __spreadValues({
2934
3188
  "data-slot": "context-menu-sub-content",
@@ -2945,7 +3199,7 @@ function ContextMenuContent(_a) {
2945
3199
  } = _b, props = __objRest(_b, [
2946
3200
  "className"
2947
3201
  ]);
2948
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_radix_ui13.ContextMenu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3202
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_radix_ui13.ContextMenu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2949
3203
  import_radix_ui13.ContextMenu.Content,
2950
3204
  __spreadValues({
2951
3205
  "data-slot": "context-menu-content",
@@ -2966,14 +3220,14 @@ function ContextMenuItem(_a) {
2966
3220
  "inset",
2967
3221
  "variant"
2968
3222
  ]);
2969
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3223
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
2970
3224
  import_radix_ui13.ContextMenu.Item,
2971
3225
  __spreadValues({
2972
3226
  "data-slot": "context-menu-item",
2973
3227
  "data-inset": inset,
2974
3228
  "data-variant": variant,
2975
3229
  className: cn(
2976
- "relative flex cursor-default items-center gap-2 type-menu-item rounded-md px-2 py-1.5 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 data-[inset]:pl-8 data-[variant=destructive]:text-text-error-default data-[variant=destructive]:focus:bg-background-error-default data-[variant=destructive]:focus:text-text-error-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default data-[variant=destructive]:*:[svg]:text-text-error-default!",
3230
+ "relative flex cursor-default items-center gap-2 type-menu-item rounded-md px-2 py-1.5 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:text-text-disabled-default data-[inset]:pl-8 data-[variant=destructive]:text-text-error-default data-[variant=destructive]:focus:bg-background-error-default data-[variant=destructive]:focus:text-text-error-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default data-[variant=destructive]:*:[svg]:text-text-error-default!",
2977
3231
  className
2978
3232
  )
2979
3233
  }, props)
@@ -2989,18 +3243,18 @@ function ContextMenuCheckboxItem(_a) {
2989
3243
  "children",
2990
3244
  "checked"
2991
3245
  ]);
2992
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
3246
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
2993
3247
  import_radix_ui13.ContextMenu.CheckboxItem,
2994
3248
  __spreadProps(__spreadValues({
2995
3249
  "data-slot": "context-menu-checkbox-item",
2996
3250
  className: cn(
2997
- "relative flex cursor-default items-center gap-2 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3251
+ "relative flex cursor-default items-center gap-2 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:text-text-disabled-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
2998
3252
  className
2999
3253
  ),
3000
3254
  checked
3001
3255
  }, props), {
3002
3256
  children: [
3003
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_radix_ui13.ContextMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react12.CheckIcon, { className: "size-4" }) }) }),
3257
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_radix_ui13.ContextMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react13.CheckIcon, { className: "size-4" }) }) }),
3004
3258
  children
3005
3259
  ]
3006
3260
  })
@@ -3014,17 +3268,17 @@ function ContextMenuRadioItem(_a) {
3014
3268
  "className",
3015
3269
  "children"
3016
3270
  ]);
3017
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
3271
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
3018
3272
  import_radix_ui13.ContextMenu.RadioItem,
3019
3273
  __spreadProps(__spreadValues({
3020
3274
  "data-slot": "context-menu-radio-item",
3021
3275
  className: cn(
3022
- "relative flex cursor-default items-center gap-2 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3276
+ "relative flex cursor-default items-center gap-2 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:text-text-disabled-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3023
3277
  className
3024
3278
  )
3025
3279
  }, props), {
3026
3280
  children: [
3027
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_radix_ui13.ContextMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_lucide_react12.CircleIcon, { className: "size-2 fill-current" }) }) }),
3281
+ /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_radix_ui13.ContextMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_lucide_react13.CircleIcon, { className: "size-2 fill-current" }) }) }),
3028
3282
  children
3029
3283
  ]
3030
3284
  })
@@ -3038,7 +3292,7 @@ function ContextMenuLabel(_a) {
3038
3292
  "className",
3039
3293
  "inset"
3040
3294
  ]);
3041
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3295
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3042
3296
  import_radix_ui13.ContextMenu.Label,
3043
3297
  __spreadValues({
3044
3298
  "data-slot": "context-menu-label",
@@ -3056,7 +3310,7 @@ function ContextMenuSeparator(_a) {
3056
3310
  } = _b, props = __objRest(_b, [
3057
3311
  "className"
3058
3312
  ]);
3059
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3313
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3060
3314
  import_radix_ui13.ContextMenu.Separator,
3061
3315
  __spreadValues({
3062
3316
  "data-slot": "context-menu-separator",
@@ -3070,7 +3324,7 @@ function ContextMenuShortcut(_a) {
3070
3324
  } = _b, props = __objRest(_b, [
3071
3325
  "className"
3072
3326
  ]);
3073
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3327
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3074
3328
  "span",
3075
3329
  __spreadValues({
3076
3330
  "data-slot": "context-menu-shortcut",
@@ -3084,22 +3338,22 @@ function ContextMenuShortcut(_a) {
3084
3338
 
3085
3339
  // components/ui/drawer.tsx
3086
3340
  var import_vaul = require("vaul");
3087
- var import_jsx_runtime22 = require("react/jsx-runtime");
3341
+ var import_jsx_runtime23 = require("react/jsx-runtime");
3088
3342
  function Drawer(_a) {
3089
3343
  var props = __objRest(_a, []);
3090
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_vaul.Drawer.Root, __spreadValues({ "data-slot": "drawer" }, props));
3344
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_vaul.Drawer.Root, __spreadValues({ "data-slot": "drawer" }, props));
3091
3345
  }
3092
3346
  function DrawerTrigger(_a) {
3093
3347
  var props = __objRest(_a, []);
3094
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_vaul.Drawer.Trigger, __spreadValues({ "data-slot": "drawer-trigger" }, props));
3348
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_vaul.Drawer.Trigger, __spreadValues({ "data-slot": "drawer-trigger" }, props));
3095
3349
  }
3096
3350
  function DrawerPortal(_a) {
3097
3351
  var props = __objRest(_a, []);
3098
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_vaul.Drawer.Portal, __spreadValues({ "data-slot": "drawer-portal" }, props));
3352
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_vaul.Drawer.Portal, __spreadValues({ "data-slot": "drawer-portal" }, props));
3099
3353
  }
3100
3354
  function DrawerClose(_a) {
3101
3355
  var props = __objRest(_a, []);
3102
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_vaul.Drawer.Close, __spreadValues({ "data-slot": "drawer-close" }, props));
3356
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_vaul.Drawer.Close, __spreadValues({ "data-slot": "drawer-close" }, props));
3103
3357
  }
3104
3358
  function DrawerOverlay(_a) {
3105
3359
  var _b = _a, {
@@ -3107,7 +3361,7 @@ function DrawerOverlay(_a) {
3107
3361
  } = _b, props = __objRest(_b, [
3108
3362
  "className"
3109
3363
  ]);
3110
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3364
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3111
3365
  import_vaul.Drawer.Overlay,
3112
3366
  __spreadValues({
3113
3367
  "data-slot": "drawer-overlay",
@@ -3126,9 +3380,9 @@ function DrawerContent(_a) {
3126
3380
  "className",
3127
3381
  "children"
3128
3382
  ]);
3129
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(DrawerPortal, { "data-slot": "drawer-portal", children: [
3130
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(DrawerOverlay, {}),
3131
- /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(
3383
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(DrawerPortal, { "data-slot": "drawer-portal", children: [
3384
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(DrawerOverlay, {}),
3385
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
3132
3386
  import_vaul.Drawer.Content,
3133
3387
  __spreadProps(__spreadValues({
3134
3388
  "data-slot": "drawer-content",
@@ -3142,7 +3396,7 @@ function DrawerContent(_a) {
3142
3396
  )
3143
3397
  }, props), {
3144
3398
  children: [
3145
- /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("div", { className: "mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full bg-border-default-default group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
3399
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("div", { className: "mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full bg-border-default-default group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }),
3146
3400
  children
3147
3401
  ]
3148
3402
  })
@@ -3151,7 +3405,7 @@ function DrawerContent(_a) {
3151
3405
  }
3152
3406
  function DrawerHeader(_a) {
3153
3407
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3154
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3408
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3155
3409
  "div",
3156
3410
  __spreadValues({
3157
3411
  "data-slot": "drawer-header",
@@ -3164,7 +3418,7 @@ function DrawerHeader(_a) {
3164
3418
  }
3165
3419
  function DrawerFooter(_a) {
3166
3420
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3167
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3421
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3168
3422
  "div",
3169
3423
  __spreadValues({
3170
3424
  "data-slot": "drawer-footer",
@@ -3178,7 +3432,7 @@ function DrawerTitle(_a) {
3178
3432
  } = _b, props = __objRest(_b, [
3179
3433
  "className"
3180
3434
  ]);
3181
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3435
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3182
3436
  import_vaul.Drawer.Title,
3183
3437
  __spreadValues({
3184
3438
  "data-slot": "drawer-title",
@@ -3192,7 +3446,7 @@ function DrawerDescription(_a) {
3192
3446
  } = _b, props = __objRest(_b, [
3193
3447
  "className"
3194
3448
  ]);
3195
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3449
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3196
3450
  import_vaul.Drawer.Description,
3197
3451
  __spreadValues({
3198
3452
  "data-slot": "drawer-description",
@@ -3202,20 +3456,20 @@ function DrawerDescription(_a) {
3202
3456
  }
3203
3457
 
3204
3458
  // components/ui/dropdown-menu.tsx
3205
- var import_lucide_react13 = require("lucide-react");
3459
+ var import_lucide_react14 = require("lucide-react");
3206
3460
  var import_radix_ui14 = require("radix-ui");
3207
- var import_jsx_runtime23 = require("react/jsx-runtime");
3461
+ var import_jsx_runtime24 = require("react/jsx-runtime");
3208
3462
  function DropdownMenu(_a) {
3209
3463
  var props = __objRest(_a, []);
3210
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_radix_ui14.DropdownMenu.Root, __spreadValues({ "data-slot": "dropdown-menu" }, props));
3464
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_radix_ui14.DropdownMenu.Root, __spreadValues({ "data-slot": "dropdown-menu" }, props));
3211
3465
  }
3212
3466
  function DropdownMenuPortal(_a) {
3213
3467
  var props = __objRest(_a, []);
3214
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_radix_ui14.DropdownMenu.Portal, __spreadValues({ "data-slot": "dropdown-menu-portal" }, props));
3468
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_radix_ui14.DropdownMenu.Portal, __spreadValues({ "data-slot": "dropdown-menu-portal" }, props));
3215
3469
  }
3216
3470
  function DropdownMenuTrigger(_a) {
3217
3471
  var props = __objRest(_a, []);
3218
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3472
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3219
3473
  import_radix_ui14.DropdownMenu.Trigger,
3220
3474
  __spreadValues({
3221
3475
  "data-slot": "dropdown-menu-trigger"
@@ -3230,7 +3484,7 @@ function DropdownMenuContent(_a) {
3230
3484
  "className",
3231
3485
  "sideOffset"
3232
3486
  ]);
3233
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_radix_ui14.DropdownMenu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3487
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_radix_ui14.DropdownMenu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3234
3488
  import_radix_ui14.DropdownMenu.Content,
3235
3489
  __spreadValues({
3236
3490
  "data-slot": "dropdown-menu-content",
@@ -3244,7 +3498,7 @@ function DropdownMenuContent(_a) {
3244
3498
  }
3245
3499
  function DropdownMenuGroup(_a) {
3246
3500
  var props = __objRest(_a, []);
3247
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_radix_ui14.DropdownMenu.Group, __spreadValues({ "data-slot": "dropdown-menu-group" }, props));
3501
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_radix_ui14.DropdownMenu.Group, __spreadValues({ "data-slot": "dropdown-menu-group" }, props));
3248
3502
  }
3249
3503
  function DropdownMenuItem(_a) {
3250
3504
  var _b = _a, {
@@ -3256,14 +3510,14 @@ function DropdownMenuItem(_a) {
3256
3510
  "inset",
3257
3511
  "variant"
3258
3512
  ]);
3259
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3513
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3260
3514
  import_radix_ui14.DropdownMenu.Item,
3261
3515
  __spreadValues({
3262
3516
  "data-slot": "dropdown-menu-item",
3263
3517
  "data-inset": inset,
3264
3518
  "data-variant": variant,
3265
3519
  className: cn(
3266
- "relative flex cursor-default items-center gap-2 type-menu-item rounded-md px-2 py-1.5 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 data-[inset]:pl-8 data-[variant=destructive]:text-text-error-default data-[variant=destructive]:focus:bg-background-error-default data-[variant=destructive]:focus:text-text-error-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default data-[variant=destructive]:*:[svg]:text-text-error-default!",
3520
+ "relative flex cursor-default items-center gap-2 type-menu-item rounded-md px-2 py-1.5 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:text-text-disabled-default data-[inset]:pl-8 data-[variant=destructive]:text-text-error-default data-[variant=destructive]:focus:bg-background-error-default data-[variant=destructive]:focus:text-text-error-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default data-[variant=destructive]:*:[svg]:text-text-error-default!",
3267
3521
  className
3268
3522
  )
3269
3523
  }, props)
@@ -3279,18 +3533,18 @@ function DropdownMenuCheckboxItem(_a) {
3279
3533
  "children",
3280
3534
  "checked"
3281
3535
  ]);
3282
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
3536
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
3283
3537
  import_radix_ui14.DropdownMenu.CheckboxItem,
3284
3538
  __spreadProps(__spreadValues({
3285
3539
  "data-slot": "dropdown-menu-checkbox-item",
3286
3540
  className: cn(
3287
- "relative flex cursor-default items-center gap-2 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3541
+ "relative flex cursor-default items-center gap-2 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:text-text-disabled-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3288
3542
  className
3289
3543
  ),
3290
3544
  checked
3291
3545
  }, props), {
3292
3546
  children: [
3293
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_radix_ui14.DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react13.CheckIcon, { className: "size-4" }) }) }),
3547
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_radix_ui14.DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react14.CheckIcon, { className: "size-4" }) }) }),
3294
3548
  children
3295
3549
  ]
3296
3550
  })
@@ -3298,7 +3552,7 @@ function DropdownMenuCheckboxItem(_a) {
3298
3552
  }
3299
3553
  function DropdownMenuRadioGroup(_a) {
3300
3554
  var props = __objRest(_a, []);
3301
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3555
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3302
3556
  import_radix_ui14.DropdownMenu.RadioGroup,
3303
3557
  __spreadValues({
3304
3558
  "data-slot": "dropdown-menu-radio-group"
@@ -3313,17 +3567,17 @@ function DropdownMenuRadioItem(_a) {
3313
3567
  "className",
3314
3568
  "children"
3315
3569
  ]);
3316
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
3570
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
3317
3571
  import_radix_ui14.DropdownMenu.RadioItem,
3318
3572
  __spreadProps(__spreadValues({
3319
3573
  "data-slot": "dropdown-menu-radio-item",
3320
3574
  className: cn(
3321
- "relative flex cursor-default items-center gap-2 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3575
+ "relative flex cursor-default items-center gap-2 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:text-text-disabled-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
3322
3576
  className
3323
3577
  )
3324
3578
  }, props), {
3325
3579
  children: [
3326
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_radix_ui14.DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react13.CircleIcon, { className: "size-2 fill-current" }) }) }),
3580
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_radix_ui14.DropdownMenu.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react14.CircleIcon, { className: "size-2 fill-current" }) }) }),
3327
3581
  children
3328
3582
  ]
3329
3583
  })
@@ -3337,7 +3591,7 @@ function DropdownMenuLabel(_a) {
3337
3591
  "className",
3338
3592
  "inset"
3339
3593
  ]);
3340
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3594
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3341
3595
  import_radix_ui14.DropdownMenu.Label,
3342
3596
  __spreadValues({
3343
3597
  "data-slot": "dropdown-menu-label",
@@ -3355,7 +3609,7 @@ function DropdownMenuSeparator(_a) {
3355
3609
  } = _b, props = __objRest(_b, [
3356
3610
  "className"
3357
3611
  ]);
3358
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3612
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3359
3613
  import_radix_ui14.DropdownMenu.Separator,
3360
3614
  __spreadValues({
3361
3615
  "data-slot": "dropdown-menu-separator",
@@ -3369,7 +3623,7 @@ function DropdownMenuShortcut(_a) {
3369
3623
  } = _b, props = __objRest(_b, [
3370
3624
  "className"
3371
3625
  ]);
3372
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3626
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3373
3627
  "span",
3374
3628
  __spreadValues({
3375
3629
  "data-slot": "dropdown-menu-shortcut",
@@ -3382,7 +3636,7 @@ function DropdownMenuShortcut(_a) {
3382
3636
  }
3383
3637
  function DropdownMenuSub(_a) {
3384
3638
  var props = __objRest(_a, []);
3385
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_radix_ui14.DropdownMenu.Sub, __spreadValues({ "data-slot": "dropdown-menu-sub" }, props));
3639
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_radix_ui14.DropdownMenu.Sub, __spreadValues({ "data-slot": "dropdown-menu-sub" }, props));
3386
3640
  }
3387
3641
  function DropdownMenuSubTrigger(_a) {
3388
3642
  var _b = _a, {
@@ -3394,7 +3648,7 @@ function DropdownMenuSubTrigger(_a) {
3394
3648
  "inset",
3395
3649
  "children"
3396
3650
  ]);
3397
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(
3651
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
3398
3652
  import_radix_ui14.DropdownMenu.SubTrigger,
3399
3653
  __spreadProps(__spreadValues({
3400
3654
  "data-slot": "dropdown-menu-sub-trigger",
@@ -3406,7 +3660,7 @@ function DropdownMenuSubTrigger(_a) {
3406
3660
  }, props), {
3407
3661
  children: [
3408
3662
  children,
3409
- /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_lucide_react13.ChevronRightIcon, { className: "ml-auto size-4" })
3663
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_lucide_react14.ChevronRightIcon, { className: "ml-auto size-4" })
3410
3664
  ]
3411
3665
  })
3412
3666
  );
@@ -3417,7 +3671,7 @@ function DropdownMenuSubContent(_a) {
3417
3671
  } = _b, props = __objRest(_b, [
3418
3672
  "className"
3419
3673
  ]);
3420
- return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(
3674
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3421
3675
  import_radix_ui14.DropdownMenu.SubContent,
3422
3676
  __spreadValues({
3423
3677
  "data-slot": "dropdown-menu-sub-content",
@@ -3431,10 +3685,10 @@ function DropdownMenuSubContent(_a) {
3431
3685
 
3432
3686
  // components/ui/empty.tsx
3433
3687
  var import_class_variance_authority6 = require("class-variance-authority");
3434
- var import_jsx_runtime24 = require("react/jsx-runtime");
3688
+ var import_jsx_runtime25 = require("react/jsx-runtime");
3435
3689
  function Empty(_a) {
3436
3690
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3437
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3691
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3438
3692
  "div",
3439
3693
  __spreadValues({
3440
3694
  "data-slot": "empty",
@@ -3447,7 +3701,7 @@ function Empty(_a) {
3447
3701
  }
3448
3702
  function EmptyHeader(_a) {
3449
3703
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3450
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3704
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3451
3705
  "div",
3452
3706
  __spreadValues({
3453
3707
  "data-slot": "empty-header",
@@ -3480,7 +3734,7 @@ function EmptyMedia(_a) {
3480
3734
  "className",
3481
3735
  "variant"
3482
3736
  ]);
3483
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3737
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3484
3738
  "div",
3485
3739
  __spreadValues({
3486
3740
  "data-slot": "empty-icon",
@@ -3491,7 +3745,7 @@ function EmptyMedia(_a) {
3491
3745
  }
3492
3746
  function EmptyTitle(_a) {
3493
3747
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3494
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3748
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3495
3749
  "div",
3496
3750
  __spreadValues({
3497
3751
  "data-slot": "empty-title",
@@ -3501,7 +3755,7 @@ function EmptyTitle(_a) {
3501
3755
  }
3502
3756
  function EmptyDescription(_a) {
3503
3757
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3504
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3758
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3505
3759
  "div",
3506
3760
  __spreadValues({
3507
3761
  "data-slot": "empty-description",
@@ -3514,7 +3768,7 @@ function EmptyDescription(_a) {
3514
3768
  }
3515
3769
  function EmptyContent(_a) {
3516
3770
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3517
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3771
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3518
3772
  "div",
3519
3773
  __spreadValues({
3520
3774
  "data-slot": "empty-content",
@@ -3527,27 +3781,27 @@ function EmptyContent(_a) {
3527
3781
  }
3528
3782
 
3529
3783
  // components/ui/field.tsx
3530
- var React6 = __toESM(require("react"), 1);
3784
+ var React7 = __toESM(require("react"), 1);
3531
3785
  var import_react = require("react");
3532
3786
  var import_class_variance_authority7 = require("class-variance-authority");
3533
3787
 
3534
3788
  // components/ui/label.tsx
3535
3789
  var import_radix_ui15 = require("radix-ui");
3536
- var import_jsx_runtime25 = require("react/jsx-runtime");
3790
+ var import_jsx_runtime26 = require("react/jsx-runtime");
3537
3791
  function Label(_a) {
3538
3792
  var _b = _a, {
3539
3793
  className
3540
3794
  } = _b, props = __objRest(_b, [
3541
3795
  "className"
3542
3796
  ]);
3543
- return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3797
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
3544
3798
  import_radix_ui15.Label.Root,
3545
3799
  __spreadValues({
3546
3800
  "data-slot": "label",
3547
3801
  className: cn(
3548
3802
  // Colour is inherited on purpose: a Field marked data-invalid paints its
3549
3803
  // subtree error-red, and the label follows.
3550
- "type-label flex items-center gap-2 select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-24 peer-disabled:cursor-not-allowed peer-disabled:opacity-24",
3804
+ "type-label flex items-center gap-2 select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:text-text-disabled-default peer-disabled:cursor-not-allowed peer-disabled:text-text-disabled-default",
3551
3805
  className
3552
3806
  )
3553
3807
  }, props)
@@ -3556,7 +3810,7 @@ function Label(_a) {
3556
3810
 
3557
3811
  // components/ui/separator.tsx
3558
3812
  var import_radix_ui16 = require("radix-ui");
3559
- var import_jsx_runtime26 = require("react/jsx-runtime");
3813
+ var import_jsx_runtime27 = require("react/jsx-runtime");
3560
3814
  function Separator(_a) {
3561
3815
  var _b = _a, {
3562
3816
  className,
@@ -3567,7 +3821,7 @@ function Separator(_a) {
3567
3821
  "orientation",
3568
3822
  "decorative"
3569
3823
  ]);
3570
- return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
3824
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3571
3825
  import_radix_ui16.Separator.Root,
3572
3826
  __spreadValues({
3573
3827
  "data-slot": "separator",
@@ -3582,10 +3836,10 @@ function Separator(_a) {
3582
3836
  }
3583
3837
 
3584
3838
  // components/ui/field.tsx
3585
- var import_jsx_runtime27 = require("react/jsx-runtime");
3586
- var FieldSizeContext = React6.createContext("md");
3839
+ var import_jsx_runtime28 = require("react/jsx-runtime");
3840
+ var FieldSizeContext = React7.createContext("md");
3587
3841
  function useFieldSize() {
3588
- return React6.useContext(FieldSizeContext);
3842
+ return React7.useContext(FieldSizeContext);
3589
3843
  }
3590
3844
  var fieldLabelType = {
3591
3845
  sm: "type-field-label-sm",
@@ -3594,7 +3848,7 @@ var fieldLabelType = {
3594
3848
  };
3595
3849
  function FieldSet(_a) {
3596
3850
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3597
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3851
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
3598
3852
  "fieldset",
3599
3853
  __spreadValues({
3600
3854
  "data-slot": "field-set",
@@ -3614,7 +3868,7 @@ function FieldLegend(_a) {
3614
3868
  "className",
3615
3869
  "variant"
3616
3870
  ]);
3617
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3871
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
3618
3872
  "legend",
3619
3873
  __spreadValues({
3620
3874
  "data-slot": "field-legend",
@@ -3631,7 +3885,7 @@ function FieldLegend(_a) {
3631
3885
  }
3632
3886
  function FieldGroup(_a) {
3633
3887
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3634
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3888
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
3635
3889
  "div",
3636
3890
  __spreadValues({
3637
3891
  "data-slot": "field-group",
@@ -3681,7 +3935,7 @@ function Field(_a) {
3681
3935
  "orientation",
3682
3936
  "size"
3683
3937
  ]);
3684
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(FieldSizeContext.Provider, { value: size != null ? size : "md", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3938
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(FieldSizeContext.Provider, { value: size != null ? size : "md", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
3685
3939
  "div",
3686
3940
  __spreadValues({
3687
3941
  role: "group",
@@ -3694,7 +3948,7 @@ function Field(_a) {
3694
3948
  }
3695
3949
  function FieldContent(_a) {
3696
3950
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3697
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3951
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
3698
3952
  "div",
3699
3953
  __spreadValues({
3700
3954
  "data-slot": "field-content",
@@ -3712,13 +3966,13 @@ function FieldLabel(_a) {
3712
3966
  "className"
3713
3967
  ]);
3714
3968
  const size = useFieldSize();
3715
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3969
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
3716
3970
  Label,
3717
3971
  __spreadValues({
3718
3972
  "data-slot": "field-label",
3719
3973
  className: cn(
3720
3974
  fieldLabelType[size],
3721
- "group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-24",
3975
+ "group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:text-text-disabled-default",
3722
3976
  "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border has-[>[data-slot=field]]:border-border-default-default [&>*]:data-[slot=field]:p-4",
3723
3977
  "has-data-[state=checked]:border-border-brand-selected has-data-[state=checked]:bg-background-brand-selected",
3724
3978
  className
@@ -3729,13 +3983,13 @@ function FieldLabel(_a) {
3729
3983
  function FieldTitle(_a) {
3730
3984
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3731
3985
  const size = useFieldSize();
3732
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3986
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
3733
3987
  "div",
3734
3988
  __spreadValues({
3735
3989
  "data-slot": "field-label",
3736
3990
  className: cn(
3737
3991
  fieldLabelType[size],
3738
- "flex w-fit items-center gap-2 group-data-[disabled=true]/field:opacity-24",
3992
+ "flex w-fit items-center gap-2 group-data-[disabled=true]/field:text-text-disabled-default",
3739
3993
  className
3740
3994
  )
3741
3995
  }, props)
@@ -3743,7 +3997,7 @@ function FieldTitle(_a) {
3743
3997
  }
3744
3998
  function FieldDescription(_a) {
3745
3999
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3746
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4000
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
3747
4001
  "p",
3748
4002
  __spreadValues({
3749
4003
  "data-slot": "field-description",
@@ -3764,7 +4018,7 @@ function FieldSeparator(_a) {
3764
4018
  "children",
3765
4019
  "className"
3766
4020
  ]);
3767
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
4021
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
3768
4022
  "div",
3769
4023
  __spreadProps(__spreadValues({
3770
4024
  "data-slot": "field-separator",
@@ -3775,8 +4029,8 @@ function FieldSeparator(_a) {
3775
4029
  )
3776
4030
  }, props), {
3777
4031
  children: [
3778
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Separator, { className: "absolute inset-0 top-1/2" }),
3779
- children && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4032
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Separator, { className: "absolute inset-0 top-1/2" }),
4033
+ children && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
3780
4034
  "span",
3781
4035
  {
3782
4036
  className: "relative mx-auto block w-fit bg-background-primary-surface px-2 text-text-subtle-default",
@@ -3812,14 +4066,14 @@ function FieldError(_a) {
3812
4066
  if ((uniqueErrors == null ? void 0 : uniqueErrors.length) == 1) {
3813
4067
  return (_a2 = uniqueErrors[0]) == null ? void 0 : _a2.message;
3814
4068
  }
3815
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
3816
- (error, index) => (error == null ? void 0 : error.message) && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("li", { children: error.message }, index)
4069
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("ul", { className: "ml-4 flex list-disc flex-col gap-1", children: uniqueErrors.map(
4070
+ (error, index) => (error == null ? void 0 : error.message) && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("li", { children: error.message }, index)
3817
4071
  ) });
3818
4072
  }, [children, errors]);
3819
4073
  if (!content) {
3820
4074
  return null;
3821
4075
  }
3822
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4076
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
3823
4077
  "div",
3824
4078
  __spreadProps(__spreadValues({
3825
4079
  role: "alert",
@@ -3833,14 +4087,14 @@ function FieldError(_a) {
3833
4087
 
3834
4088
  // components/ui/hover-card.tsx
3835
4089
  var import_radix_ui17 = require("radix-ui");
3836
- var import_jsx_runtime28 = require("react/jsx-runtime");
4090
+ var import_jsx_runtime29 = require("react/jsx-runtime");
3837
4091
  function HoverCard(_a) {
3838
4092
  var props = __objRest(_a, []);
3839
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_radix_ui17.HoverCard.Root, __spreadValues({ "data-slot": "hover-card" }, props));
4093
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_radix_ui17.HoverCard.Root, __spreadValues({ "data-slot": "hover-card" }, props));
3840
4094
  }
3841
4095
  function HoverCardTrigger(_a) {
3842
4096
  var props = __objRest(_a, []);
3843
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_radix_ui17.HoverCard.Trigger, __spreadValues({ "data-slot": "hover-card-trigger" }, props));
4097
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_radix_ui17.HoverCard.Trigger, __spreadValues({ "data-slot": "hover-card-trigger" }, props));
3844
4098
  }
3845
4099
  function HoverCardContent(_a) {
3846
4100
  var _b = _a, {
@@ -3852,7 +4106,7 @@ function HoverCardContent(_a) {
3852
4106
  "align",
3853
4107
  "sideOffset"
3854
4108
  ]);
3855
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_radix_ui17.HoverCard.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
4109
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_radix_ui17.HoverCard.Portal, { "data-slot": "hover-card-portal", children: /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
3856
4110
  import_radix_ui17.HoverCard.Content,
3857
4111
  __spreadValues({
3858
4112
  "data-slot": "hover-card-content",
@@ -3868,15 +4122,18 @@ function HoverCardContent(_a) {
3868
4122
 
3869
4123
  // components/ui/input.tsx
3870
4124
  var import_class_variance_authority8 = require("class-variance-authority");
3871
- var import_jsx_runtime29 = require("react/jsx-runtime");
4125
+ var import_jsx_runtime30 = require("react/jsx-runtime");
3872
4126
  var inputVariants = (0, import_class_variance_authority8.cva)(
3873
4127
  [
3874
4128
  "w-full min-w-0 rounded-xs border font-body transition-[color,box-shadow] outline-none",
3875
4129
  "file:inline-flex file:border-0 file:bg-transparent file:font-medium",
3876
- "disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-24",
4130
+ "disabled:pointer-events-none disabled:cursor-not-allowed disabled:text-text-disabled-default disabled:[background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))]",
3877
4131
  // Read-only stays focusable and selectable (users copy codes/amounts);
3878
- // only the surface flattens.
3879
- "read-only:border-transparent read-only:bg-background-secondary-surface",
4132
+ // only the surface flattens. Matched on the [readonly] attribute, not the
4133
+ // `:read-only` pseudo-class — that also matches disabled inputs, which
4134
+ // would hand disabled the read-only surface and erase the two states'
4135
+ // difference.
4136
+ "[&[readonly]]:border-transparent [&[readonly]]:bg-background-secondary-surface",
3880
4137
  "focus-visible:ring-[3px]",
3881
4138
  "aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft"
3882
4139
  ].join(" "),
@@ -3897,7 +4154,7 @@ var inputVariants = (0, import_class_variance_authority8.cva)(
3897
4154
  "on-brand": [
3898
4155
  "border-(--primitive-white-alpha-24) bg-(--primitive-black-alpha-32) text-text-on-brand-static",
3899
4156
  "file:text-text-on-brand-static",
3900
- "placeholder:text-(--primitive-white-alpha-50)",
4157
+ "placeholder:text-text-on-brand-subtle-static",
3901
4158
  "selection:bg-background-static-white selection:text-text-brand-container-static",
3902
4159
  "focus-visible:border-background-static-white focus-visible:ring-(--primitive-white-alpha-40)"
3903
4160
  ].join(" "),
@@ -3905,7 +4162,7 @@ var inputVariants = (0, import_class_variance_authority8.cva)(
3905
4162
  inverse: [
3906
4163
  "border-(--primitive-white-alpha-24) bg-(--primitive-black-alpha-32) text-text-on-brand-static",
3907
4164
  "file:text-text-on-brand-static",
3908
- "placeholder:text-(--primitive-white-alpha-50)",
4165
+ "placeholder:text-text-on-brand-subtle-static",
3909
4166
  "selection:bg-background-static-white selection:text-text-brand-container-static",
3910
4167
  "focus-visible:border-background-static-white focus-visible:ring-(--primitive-white-alpha-40)"
3911
4168
  ].join(" ")
@@ -3936,7 +4193,7 @@ function Input(_a) {
3936
4193
  ]);
3937
4194
  const fieldSize = useFieldSize();
3938
4195
  const resolvedSize = size != null ? size : fieldSize;
3939
- return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
4196
+ return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
3940
4197
  "input",
3941
4198
  __spreadValues({
3942
4199
  type,
@@ -3949,19 +4206,19 @@ function Input(_a) {
3949
4206
  }
3950
4207
 
3951
4208
  // components/ui/input-group.tsx
3952
- var React7 = __toESM(require("react"), 1);
4209
+ var React8 = __toESM(require("react"), 1);
3953
4210
  var import_class_variance_authority9 = require("class-variance-authority");
3954
4211
 
3955
4212
  // components/ui/textarea.tsx
3956
- var import_jsx_runtime30 = require("react/jsx-runtime");
4213
+ var import_jsx_runtime31 = require("react/jsx-runtime");
3957
4214
  function Textarea(_a) {
3958
4215
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3959
- return /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
4216
+ return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
3960
4217
  "textarea",
3961
4218
  __spreadValues({
3962
4219
  "data-slot": "textarea",
3963
4220
  className: cn(
3964
- "type-textarea flex field-sizing-content min-h-16 w-full rounded-xs border border-border-default-default bg-background-primary-surface px-3 py-2 text-text-prominent-default font-body transition-[color,box-shadow] outline-none placeholder:text-text-subtle-default selection:bg-background-brand-default selection:text-text-on-brand-static focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-soft disabled:cursor-not-allowed disabled:opacity-24 aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft",
4221
+ "type-textarea flex field-sizing-content min-h-16 w-full rounded-xs border border-border-default-default bg-background-primary-surface px-3 py-2 text-text-prominent-default font-body transition-[color,box-shadow] outline-none placeholder:text-text-subtle-default selection:bg-background-brand-default selection:text-text-on-brand-static focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-soft disabled:cursor-not-allowed disabled:text-text-disabled-default disabled:[background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))] aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft",
3965
4222
  className
3966
4223
  )
3967
4224
  }, props)
@@ -3969,9 +4226,9 @@ function Textarea(_a) {
3969
4226
  }
3970
4227
 
3971
4228
  // components/ui/input-group.tsx
3972
- var import_jsx_runtime31 = require("react/jsx-runtime");
3973
- var InputGroupSizeContext = React7.createContext("md");
3974
- var InputGroupVariantContext = React7.createContext("default");
4229
+ var import_jsx_runtime32 = require("react/jsx-runtime");
4230
+ var InputGroupSizeContext = React8.createContext("md");
4231
+ var InputGroupVariantContext = React8.createContext("default");
3975
4232
  var inputGroupVariants = (0, import_class_variance_authority9.cva)(
3976
4233
  [
3977
4234
  "group/input-group relative flex w-full items-center rounded-xs border",
@@ -4030,11 +4287,11 @@ function InputGroup(_a) {
4030
4287
  ]);
4031
4288
  const fieldSize = useFieldSize();
4032
4289
  const resolvedSize = size != null ? size : fieldSize;
4033
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4290
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4034
4291
  InputGroupVariantContext.Provider,
4035
4292
  {
4036
4293
  value: variant,
4037
- children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(InputGroupSizeContext.Provider, { value: resolvedSize, children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4294
+ children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(InputGroupSizeContext.Provider, { value: resolvedSize, children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4038
4295
  "div",
4039
4296
  __spreadValues({
4040
4297
  "data-slot": "input-group",
@@ -4050,10 +4307,15 @@ function InputGroup(_a) {
4050
4307
  var inputGroupAddonVariants = (0, import_class_variance_authority9.cva)(
4051
4308
  [
4052
4309
  "flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-text-subtle-default select-none",
4053
- // Swap addon text/icon colour when inside an on-brand group.
4054
- "group-data-[variant=on-brand]/input-group:text-(--primitive-white-alpha-64)",
4055
- "group-data-[variant=inverse]/input-group:text-(--primitive-white-alpha-64)",
4056
- "group-data-[disabled=true]/input-group:opacity-24",
4310
+ // Swap addon text/icon colour when inside an on-brand group. On brand the
4311
+ // ink ladder inverts — white down through the alpha rungs — so this is the
4312
+ // semantic subtle rung, not a hand-rolled primitive.
4313
+ "group-data-[variant=on-brand]/input-group:text-text-on-brand-subtle-static",
4314
+ "group-data-[variant=inverse]/input-group:text-text-on-brand-subtle-static",
4315
+ "group-data-[disabled=true]/input-group:has-disabled:text-text-disabled-default",
4316
+ // …but on brand the neutral disabled ink has no contrast, so the on-brand
4317
+ // rung wins there.
4318
+ "group-data-[variant=on-brand]/input-group:group-data-[disabled=true]/input-group:has-disabled:text-text-on-brand-disabled-default",
4057
4319
  "[&>kbd]:rounded-[calc(var(--radius)-5px)]",
4058
4320
  // Text size inherits the group's --input-* ladder (set on the group in CSS).
4059
4321
  "group-data-[size=sm]/input-group:py-1",
@@ -4084,7 +4346,7 @@ function InputGroupAddon(_a) {
4084
4346
  "className",
4085
4347
  "align"
4086
4348
  ]);
4087
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4349
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4088
4350
  "div",
4089
4351
  __spreadValues({
4090
4352
  role: "group",
@@ -4131,7 +4393,7 @@ function InputGroupButton(_a) {
4131
4393
  "variant",
4132
4394
  "size"
4133
4395
  ]);
4134
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4396
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4135
4397
  Button,
4136
4398
  __spreadValues({
4137
4399
  type,
@@ -4144,14 +4406,15 @@ function InputGroupButton(_a) {
4144
4406
  }
4145
4407
  function InputGroupText(_a) {
4146
4408
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4147
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4409
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4148
4410
  "span",
4149
4411
  __spreadValues({
4150
4412
  className: cn(
4151
4413
  "flex items-center gap-2 text-text-subtle-default",
4152
- // Swap text/icon colour when inside an on-brand group.
4153
- "group-data-[variant=on-brand]/input-group:text-(--primitive-white-alpha-64)",
4154
- "group-data-[variant=inverse]/input-group:text-(--primitive-white-alpha-64)",
4414
+ // Swap text/icon colour when inside an on-brand group — the on-brand
4415
+ // subtle rung, not a hand-rolled primitive.
4416
+ "group-data-[variant=on-brand]/input-group:text-text-on-brand-subtle-static",
4417
+ "group-data-[variant=inverse]/input-group:text-text-on-brand-subtle-static",
4155
4418
  // Text size inherits the group's --input-* ladder; icons track it.
4156
4419
  "group-data-[size=sm]/input-group:[&_svg:not([class*='size-'])]:size-3.5",
4157
4420
  "group-data-[size=md]/input-group:[&_svg:not([class*='size-'])]:size-4",
@@ -4172,11 +4435,11 @@ function InputGroupInput(_a) {
4172
4435
  "size",
4173
4436
  "variant"
4174
4437
  ]);
4175
- const groupSize = React7.useContext(InputGroupSizeContext);
4176
- const groupVariant = React7.useContext(InputGroupVariantContext);
4438
+ const groupSize = React8.useContext(InputGroupSizeContext);
4439
+ const groupVariant = React8.useContext(InputGroupVariantContext);
4177
4440
  const size = sizeProp != null ? sizeProp : groupSize;
4178
4441
  const variant = variantProp != null ? variantProp : groupVariant;
4179
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4442
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4180
4443
  Input,
4181
4444
  __spreadValues({
4182
4445
  "data-slot": "input-group-control",
@@ -4195,7 +4458,7 @@ function InputGroupTextarea(_a) {
4195
4458
  } = _b, props = __objRest(_b, [
4196
4459
  "className"
4197
4460
  ]);
4198
- return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
4461
+ return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4199
4462
  Textarea,
4200
4463
  __spreadValues({
4201
4464
  "data-slot": "input-group-control",
@@ -4208,10 +4471,10 @@ function InputGroupTextarea(_a) {
4208
4471
  }
4209
4472
 
4210
4473
  // components/ui/input-otp.tsx
4211
- var React8 = __toESM(require("react"), 1);
4474
+ var React9 = __toESM(require("react"), 1);
4212
4475
  var import_input_otp = require("input-otp");
4213
- var import_lucide_react14 = require("lucide-react");
4214
- var import_jsx_runtime32 = require("react/jsx-runtime");
4476
+ var import_lucide_react15 = require("lucide-react");
4477
+ var import_jsx_runtime33 = require("react/jsx-runtime");
4215
4478
  function InputOTP(_a) {
4216
4479
  var _b = _a, {
4217
4480
  className,
@@ -4220,12 +4483,12 @@ function InputOTP(_a) {
4220
4483
  "className",
4221
4484
  "containerClassName"
4222
4485
  ]);
4223
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4486
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4224
4487
  import_input_otp.OTPInput,
4225
4488
  __spreadValues({
4226
4489
  "data-slot": "input-otp",
4227
4490
  containerClassName: cn(
4228
- "flex items-center gap-2 has-disabled:opacity-24",
4491
+ "flex items-center gap-2 has-disabled:text-text-disabled-default",
4229
4492
  containerClassName
4230
4493
  ),
4231
4494
  className: cn("disabled:cursor-not-allowed", className)
@@ -4234,7 +4497,7 @@ function InputOTP(_a) {
4234
4497
  }
4235
4498
  function InputOTPGroup(_a) {
4236
4499
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4237
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(
4500
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4238
4501
  "div",
4239
4502
  __spreadValues({
4240
4503
  "data-slot": "input-otp-group",
@@ -4251,9 +4514,9 @@ function InputOTPSlot(_a) {
4251
4514
  "className"
4252
4515
  ]);
4253
4516
  var _a2;
4254
- const inputOTPContext = React8.useContext(import_input_otp.OTPInputContext);
4517
+ const inputOTPContext = React9.useContext(import_input_otp.OTPInputContext);
4255
4518
  const { char, hasFakeCaret, isActive } = (_a2 = inputOTPContext == null ? void 0 : inputOTPContext.slots[index]) != null ? _a2 : {};
4256
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)(
4519
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
4257
4520
  "div",
4258
4521
  __spreadProps(__spreadValues({
4259
4522
  "data-slot": "input-otp-slot",
@@ -4265,20 +4528,20 @@ function InputOTPSlot(_a) {
4265
4528
  }, props), {
4266
4529
  children: [
4267
4530
  char,
4268
- hasFakeCaret && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "h-4 w-px animate-caret-blink bg-text-prominent-default duration-1000" }) })
4531
+ hasFakeCaret && /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "h-4 w-px animate-caret-blink bg-text-prominent-default duration-1000" }) })
4269
4532
  ]
4270
4533
  })
4271
4534
  );
4272
4535
  }
4273
4536
  function InputOTPSeparator(_a) {
4274
4537
  var props = __objRest(_a, []);
4275
- return /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", __spreadProps(__spreadValues({ "data-slot": "input-otp-separator", role: "separator" }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)(import_lucide_react14.MinusIcon, {}) }));
4538
+ return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", __spreadProps(__spreadValues({ "data-slot": "input-otp-separator", role: "separator" }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(import_lucide_react15.MinusIcon, {}) }));
4276
4539
  }
4277
4540
 
4278
4541
  // components/ui/item.tsx
4279
4542
  var import_class_variance_authority10 = require("class-variance-authority");
4280
4543
  var import_radix_ui18 = require("radix-ui");
4281
- var import_jsx_runtime33 = require("react/jsx-runtime");
4544
+ var import_jsx_runtime34 = require("react/jsx-runtime");
4282
4545
  function ItemGroup(_a) {
4283
4546
  var _b = _a, {
4284
4547
  className,
@@ -4287,7 +4550,7 @@ function ItemGroup(_a) {
4287
4550
  "className",
4288
4551
  "divider"
4289
4552
  ]);
4290
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4553
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4291
4554
  "div",
4292
4555
  __spreadValues({
4293
4556
  role: "list",
@@ -4320,7 +4583,7 @@ function ItemSeparator(_a) {
4320
4583
  } = _b, props = __objRest(_b, [
4321
4584
  "className"
4322
4585
  ]);
4323
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4586
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4324
4587
  Separator,
4325
4588
  __spreadValues({
4326
4589
  "data-slot": "item-separator",
@@ -4362,7 +4625,7 @@ function Item(_a) {
4362
4625
  "asChild"
4363
4626
  ]);
4364
4627
  const Comp = asChild ? import_radix_ui18.Slot.Root : "div";
4365
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4628
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4366
4629
  Comp,
4367
4630
  __spreadValues({
4368
4631
  "data-slot": "item",
@@ -4395,7 +4658,7 @@ function ItemMedia(_a) {
4395
4658
  "className",
4396
4659
  "variant"
4397
4660
  ]);
4398
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4661
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4399
4662
  "div",
4400
4663
  __spreadValues({
4401
4664
  "data-slot": "item-media",
@@ -4406,7 +4669,7 @@ function ItemMedia(_a) {
4406
4669
  }
4407
4670
  function ItemContent(_a) {
4408
4671
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4409
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4672
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4410
4673
  "div",
4411
4674
  __spreadValues({
4412
4675
  "data-slot": "item-content",
@@ -4419,7 +4682,7 @@ function ItemContent(_a) {
4419
4682
  }
4420
4683
  function ItemTitle(_a) {
4421
4684
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4422
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4685
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4423
4686
  "div",
4424
4687
  __spreadValues({
4425
4688
  "data-slot": "item-title",
@@ -4432,7 +4695,7 @@ function ItemTitle(_a) {
4432
4695
  }
4433
4696
  function ItemDescription(_a) {
4434
4697
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4435
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4698
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4436
4699
  "p",
4437
4700
  __spreadValues({
4438
4701
  "data-slot": "item-description",
@@ -4446,7 +4709,7 @@ function ItemDescription(_a) {
4446
4709
  }
4447
4710
  function ItemActions(_a) {
4448
4711
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4449
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4712
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4450
4713
  "div",
4451
4714
  __spreadValues({
4452
4715
  "data-slot": "item-actions",
@@ -4456,7 +4719,7 @@ function ItemActions(_a) {
4456
4719
  }
4457
4720
  function ItemHeader(_a) {
4458
4721
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4459
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4722
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4460
4723
  "div",
4461
4724
  __spreadValues({
4462
4725
  "data-slot": "item-header",
@@ -4469,7 +4732,7 @@ function ItemHeader(_a) {
4469
4732
  }
4470
4733
  function ItemFooter(_a) {
4471
4734
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4472
- return /* @__PURE__ */ (0, import_jsx_runtime33.jsx)(
4735
+ return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4473
4736
  "div",
4474
4737
  __spreadValues({
4475
4738
  "data-slot": "item-footer",
@@ -4484,7 +4747,7 @@ function ItemFooter(_a) {
4484
4747
  // components/ui/link.tsx
4485
4748
  var import_class_variance_authority11 = require("class-variance-authority");
4486
4749
  var import_radix_ui19 = require("radix-ui");
4487
- var import_jsx_runtime34 = require("react/jsx-runtime");
4750
+ var import_jsx_runtime35 = require("react/jsx-runtime");
4488
4751
  var linkVariants = (0, import_class_variance_authority11.cva)(
4489
4752
  [
4490
4753
  "inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap transition-colors outline-none focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong active:opacity-60 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:inline font-display normal-case",
@@ -4526,7 +4789,7 @@ function Link(_a) {
4526
4789
  "asChild"
4527
4790
  ]);
4528
4791
  const Comp = asChild ? import_radix_ui19.Slot.Root : "a";
4529
- return /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(
4792
+ return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4530
4793
  Comp,
4531
4794
  __spreadValues({
4532
4795
  "data-slot": "link",
@@ -4538,16 +4801,16 @@ function Link(_a) {
4538
4801
  }
4539
4802
 
4540
4803
  // components/ui/menubar.tsx
4541
- var import_lucide_react15 = require("lucide-react");
4804
+ var import_lucide_react16 = require("lucide-react");
4542
4805
  var import_radix_ui20 = require("radix-ui");
4543
- var import_jsx_runtime35 = require("react/jsx-runtime");
4806
+ var import_jsx_runtime36 = require("react/jsx-runtime");
4544
4807
  function Menubar(_a) {
4545
4808
  var _b = _a, {
4546
4809
  className
4547
4810
  } = _b, props = __objRest(_b, [
4548
4811
  "className"
4549
4812
  ]);
4550
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4813
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4551
4814
  import_radix_ui20.Menubar.Root,
4552
4815
  __spreadValues({
4553
4816
  "data-slot": "menubar",
@@ -4560,19 +4823,19 @@ function Menubar(_a) {
4560
4823
  }
4561
4824
  function MenubarMenu(_a) {
4562
4825
  var props = __objRest(_a, []);
4563
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_radix_ui20.Menubar.Menu, __spreadValues({ "data-slot": "menubar-menu" }, props));
4826
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_radix_ui20.Menubar.Menu, __spreadValues({ "data-slot": "menubar-menu" }, props));
4564
4827
  }
4565
4828
  function MenubarGroup(_a) {
4566
4829
  var props = __objRest(_a, []);
4567
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_radix_ui20.Menubar.Group, __spreadValues({ "data-slot": "menubar-group" }, props));
4830
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_radix_ui20.Menubar.Group, __spreadValues({ "data-slot": "menubar-group" }, props));
4568
4831
  }
4569
4832
  function MenubarPortal(_a) {
4570
4833
  var props = __objRest(_a, []);
4571
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_radix_ui20.Menubar.Portal, __spreadValues({ "data-slot": "menubar-portal" }, props));
4834
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_radix_ui20.Menubar.Portal, __spreadValues({ "data-slot": "menubar-portal" }, props));
4572
4835
  }
4573
4836
  function MenubarRadioGroup(_a) {
4574
4837
  var props = __objRest(_a, []);
4575
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_radix_ui20.Menubar.RadioGroup, __spreadValues({ "data-slot": "menubar-radio-group" }, props));
4838
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_radix_ui20.Menubar.RadioGroup, __spreadValues({ "data-slot": "menubar-radio-group" }, props));
4576
4839
  }
4577
4840
  function MenubarTrigger(_a) {
4578
4841
  var _b = _a, {
@@ -4580,7 +4843,7 @@ function MenubarTrigger(_a) {
4580
4843
  } = _b, props = __objRest(_b, [
4581
4844
  "className"
4582
4845
  ]);
4583
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4846
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4584
4847
  import_radix_ui20.Menubar.Trigger,
4585
4848
  __spreadValues({
4586
4849
  "data-slot": "menubar-trigger",
@@ -4603,7 +4866,7 @@ function MenubarContent(_a) {
4603
4866
  "alignOffset",
4604
4867
  "sideOffset"
4605
4868
  ]);
4606
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(MenubarPortal, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4869
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(MenubarPortal, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4607
4870
  import_radix_ui20.Menubar.Content,
4608
4871
  __spreadValues({
4609
4872
  "data-slot": "menubar-content",
@@ -4627,14 +4890,14 @@ function MenubarItem(_a) {
4627
4890
  "inset",
4628
4891
  "variant"
4629
4892
  ]);
4630
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4893
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4631
4894
  import_radix_ui20.Menubar.Item,
4632
4895
  __spreadValues({
4633
4896
  "data-slot": "menubar-item",
4634
4897
  "data-inset": inset,
4635
4898
  "data-variant": variant,
4636
4899
  className: cn(
4637
- "relative flex cursor-default items-center gap-2 type-menu-item rounded-md px-2 py-1.5 outline-hidden select-none hover:bg-background-hover-default hover:text-text-prominent-default focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 data-[inset]:pl-8 data-[variant=destructive]:text-text-error-default data-[variant=destructive]:focus:bg-background-error-default data-[variant=destructive]:focus:text-text-error-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default data-[variant=destructive]:*:[svg]:text-text-error-default!",
4900
+ "relative flex cursor-default items-center gap-2 type-menu-item rounded-md px-2 py-1.5 outline-hidden select-none hover:bg-background-hover-default hover:text-text-prominent-default focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:text-text-disabled-default data-[inset]:pl-8 data-[variant=destructive]:text-text-error-default data-[variant=destructive]:focus:bg-background-error-default data-[variant=destructive]:focus:text-text-error-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-icon-subtle-default data-[variant=destructive]:*:[svg]:text-text-error-default!",
4638
4901
  className
4639
4902
  )
4640
4903
  }, props)
@@ -4650,18 +4913,18 @@ function MenubarCheckboxItem(_a) {
4650
4913
  "children",
4651
4914
  "checked"
4652
4915
  ]);
4653
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
4916
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
4654
4917
  import_radix_ui20.Menubar.CheckboxItem,
4655
4918
  __spreadProps(__spreadValues({
4656
4919
  "data-slot": "menubar-checkbox-item",
4657
4920
  className: cn(
4658
- "relative flex cursor-default items-center gap-2 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none hover:bg-background-hover-default hover:text-text-prominent-default focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
4921
+ "relative flex cursor-default items-center gap-2 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none hover:bg-background-hover-default hover:text-text-prominent-default focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:text-text-disabled-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
4659
4922
  className
4660
4923
  ),
4661
4924
  checked
4662
4925
  }, props), {
4663
4926
  children: [
4664
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_radix_ui20.Menubar.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react15.CheckIcon, { className: "size-4" }) }) }),
4927
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_radix_ui20.Menubar.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react16.CheckIcon, { className: "size-4" }) }) }),
4665
4928
  children
4666
4929
  ]
4667
4930
  })
@@ -4675,17 +4938,17 @@ function MenubarRadioItem(_a) {
4675
4938
  "className",
4676
4939
  "children"
4677
4940
  ]);
4678
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
4941
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
4679
4942
  import_radix_ui20.Menubar.RadioItem,
4680
4943
  __spreadProps(__spreadValues({
4681
4944
  "data-slot": "menubar-radio-item",
4682
4945
  className: cn(
4683
- "relative flex cursor-default items-center gap-2 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none hover:bg-background-hover-default hover:text-text-prominent-default focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:opacity-24 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
4946
+ "relative flex cursor-default items-center gap-2 type-menu-item rounded-md py-1.5 pr-2 pl-8 outline-hidden select-none hover:bg-background-hover-default hover:text-text-prominent-default focus:bg-background-hover-default focus:text-text-prominent-default data-[disabled]:pointer-events-none data-[disabled]:text-text-disabled-default [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
4684
4947
  className
4685
4948
  )
4686
4949
  }, props), {
4687
4950
  children: [
4688
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_radix_ui20.Menubar.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react15.CircleIcon, { className: "size-2 fill-current" }) }) }),
4951
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_radix_ui20.Menubar.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react16.CircleIcon, { className: "size-2 fill-current" }) }) }),
4689
4952
  children
4690
4953
  ]
4691
4954
  })
@@ -4699,7 +4962,7 @@ function MenubarLabel(_a) {
4699
4962
  "className",
4700
4963
  "inset"
4701
4964
  ]);
4702
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4965
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4703
4966
  import_radix_ui20.Menubar.Label,
4704
4967
  __spreadValues({
4705
4968
  "data-slot": "menubar-label",
@@ -4717,7 +4980,7 @@ function MenubarSeparator(_a) {
4717
4980
  } = _b, props = __objRest(_b, [
4718
4981
  "className"
4719
4982
  ]);
4720
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4983
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4721
4984
  import_radix_ui20.Menubar.Separator,
4722
4985
  __spreadValues({
4723
4986
  "data-slot": "menubar-separator",
@@ -4731,7 +4994,7 @@ function MenubarShortcut(_a) {
4731
4994
  } = _b, props = __objRest(_b, [
4732
4995
  "className"
4733
4996
  ]);
4734
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
4997
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4735
4998
  "span",
4736
4999
  __spreadValues({
4737
5000
  "data-slot": "menubar-shortcut",
@@ -4744,7 +5007,7 @@ function MenubarShortcut(_a) {
4744
5007
  }
4745
5008
  function MenubarSub(_a) {
4746
5009
  var props = __objRest(_a, []);
4747
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_radix_ui20.Menubar.Sub, __spreadValues({ "data-slot": "menubar-sub" }, props));
5010
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_radix_ui20.Menubar.Sub, __spreadValues({ "data-slot": "menubar-sub" }, props));
4748
5011
  }
4749
5012
  function MenubarSubTrigger(_a) {
4750
5013
  var _b = _a, {
@@ -4756,7 +5019,7 @@ function MenubarSubTrigger(_a) {
4756
5019
  "inset",
4757
5020
  "children"
4758
5021
  ]);
4759
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)(
5022
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
4760
5023
  import_radix_ui20.Menubar.SubTrigger,
4761
5024
  __spreadProps(__spreadValues({
4762
5025
  "data-slot": "menubar-sub-trigger",
@@ -4768,7 +5031,7 @@ function MenubarSubTrigger(_a) {
4768
5031
  }, props), {
4769
5032
  children: [
4770
5033
  children,
4771
- /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(import_lucide_react15.ChevronRightIcon, { className: "ml-auto" })
5034
+ /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(import_lucide_react16.ChevronRightIcon, { className: "ml-auto" })
4772
5035
  ]
4773
5036
  })
4774
5037
  );
@@ -4779,7 +5042,7 @@ function MenubarSubContent(_a) {
4779
5042
  } = _b, props = __objRest(_b, [
4780
5043
  "className"
4781
5044
  ]);
4782
- return /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(
5045
+ return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4783
5046
  import_radix_ui20.Menubar.SubContent,
4784
5047
  __spreadValues({
4785
5048
  "data-slot": "menubar-sub-content",
@@ -4792,8 +5055,8 @@ function MenubarSubContent(_a) {
4792
5055
  }
4793
5056
 
4794
5057
  // components/ui/native-select.tsx
4795
- var import_lucide_react16 = require("lucide-react");
4796
- var import_jsx_runtime36 = require("react/jsx-runtime");
5058
+ var import_lucide_react17 = require("lucide-react");
5059
+ var import_jsx_runtime37 = require("react/jsx-runtime");
4797
5060
  var sizeClasses = {
4798
5061
  sm: "type-native-select-sm h-8 py-1",
4799
5062
  md: "type-native-select-md h-10 py-2",
@@ -4809,27 +5072,27 @@ function NativeSelect(_a) {
4809
5072
  ]);
4810
5073
  const fieldSize = useFieldSize();
4811
5074
  const resolvedSize = size === "default" || size == null ? size == null ? fieldSize : "md" : size;
4812
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsxs)(
5075
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
4813
5076
  "div",
4814
5077
  {
4815
- className: "group/native-select relative w-fit has-[select:disabled]:opacity-24",
5078
+ className: "group/native-select relative w-fit has-[select:disabled]:text-text-disabled-default",
4816
5079
  "data-slot": "native-select-wrapper",
4817
5080
  children: [
4818
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
5081
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
4819
5082
  "select",
4820
5083
  __spreadValues({
4821
5084
  "data-slot": "native-select",
4822
5085
  "data-size": resolvedSize,
4823
5086
  className: cn(
4824
- "w-full min-w-0 appearance-none rounded-xs border border-border-default-default bg-background-primary-surface px-3 pr-9 text-text-prominent-default transition-[color,box-shadow] outline-none selection:bg-background-brand-default selection:text-text-on-brand-static disabled:pointer-events-none disabled:cursor-not-allowed",
5087
+ "w-full min-w-0 appearance-none rounded-xs border border-border-default-default bg-background-primary-surface px-3 pr-9 text-text-prominent-default transition-[color,box-shadow] outline-none selection:bg-background-brand-default selection:text-text-on-brand-static disabled:pointer-events-none disabled:cursor-not-allowed disabled:[background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))]",
4825
5088
  "focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-soft",
4826
5089
  sizeClasses[resolvedSize],
4827
5090
  className
4828
5091
  )
4829
5092
  }, props)
4830
5093
  ),
4831
- /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
4832
- import_lucide_react16.ChevronDownIcon,
5094
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
5095
+ import_lucide_react17.ChevronDownIcon,
4833
5096
  {
4834
5097
  className: "pointer-events-none absolute top-1/2 right-3.5 size-4 -translate-y-1/2 text-icon-subtle-default select-none",
4835
5098
  "aria-hidden": "true",
@@ -4842,7 +5105,7 @@ function NativeSelect(_a) {
4842
5105
  }
4843
5106
  function NativeSelectOption(_a) {
4844
5107
  var props = __objRest(_a, []);
4845
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)("option", __spreadValues({ "data-slot": "native-select-option" }, props));
5108
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("option", __spreadValues({ "data-slot": "native-select-option" }, props));
4846
5109
  }
4847
5110
  function NativeSelectOptGroup(_a) {
4848
5111
  var _b = _a, {
@@ -4850,7 +5113,7 @@ function NativeSelectOptGroup(_a) {
4850
5113
  } = _b, props = __objRest(_b, [
4851
5114
  "className"
4852
5115
  ]);
4853
- return /* @__PURE__ */ (0, import_jsx_runtime36.jsx)(
5116
+ return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
4854
5117
  "optgroup",
4855
5118
  __spreadValues({
4856
5119
  "data-slot": "native-select-optgroup",
@@ -4861,9 +5124,9 @@ function NativeSelectOptGroup(_a) {
4861
5124
 
4862
5125
  // components/ui/navigation-menu.tsx
4863
5126
  var import_class_variance_authority12 = require("class-variance-authority");
4864
- var import_lucide_react17 = require("lucide-react");
5127
+ var import_lucide_react18 = require("lucide-react");
4865
5128
  var import_radix_ui21 = require("radix-ui");
4866
- var import_jsx_runtime37 = require("react/jsx-runtime");
5129
+ var import_jsx_runtime38 = require("react/jsx-runtime");
4867
5130
  function NavigationMenu(_a) {
4868
5131
  var _b = _a, {
4869
5132
  className,
@@ -4874,7 +5137,7 @@ function NavigationMenu(_a) {
4874
5137
  "children",
4875
5138
  "viewport"
4876
5139
  ]);
4877
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
5140
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
4878
5141
  import_radix_ui21.NavigationMenu.Root,
4879
5142
  __spreadProps(__spreadValues({
4880
5143
  "data-slot": "navigation-menu",
@@ -4886,7 +5149,7 @@ function NavigationMenu(_a) {
4886
5149
  }, props), {
4887
5150
  children: [
4888
5151
  children,
4889
- viewport && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(NavigationMenuViewport, {})
5152
+ viewport && /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(NavigationMenuViewport, {})
4890
5153
  ]
4891
5154
  })
4892
5155
  );
@@ -4897,7 +5160,7 @@ function NavigationMenuList(_a) {
4897
5160
  } = _b, props = __objRest(_b, [
4898
5161
  "className"
4899
5162
  ]);
4900
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
5163
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4901
5164
  import_radix_ui21.NavigationMenu.List,
4902
5165
  __spreadValues({
4903
5166
  "data-slot": "navigation-menu-list",
@@ -4914,7 +5177,7 @@ function NavigationMenuItem(_a) {
4914
5177
  } = _b, props = __objRest(_b, [
4915
5178
  "className"
4916
5179
  ]);
4917
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
5180
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4918
5181
  import_radix_ui21.NavigationMenu.Item,
4919
5182
  __spreadValues({
4920
5183
  "data-slot": "navigation-menu-item",
@@ -4923,7 +5186,7 @@ function NavigationMenuItem(_a) {
4923
5186
  );
4924
5187
  }
4925
5188
  var navigationMenuTriggerStyle = (0, import_class_variance_authority12.cva)(
4926
- "group type-menu-trigger inline-flex h-10 w-max items-center justify-center rounded-md bg-background-primary-surface px-4 py-2 transition-[color,box-shadow] outline-none hover:bg-background-hover-default hover:text-text-prominent-default focus:bg-background-hover-default focus:text-text-prominent-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-24 data-[state=open]:bg-background-hover-default data-[state=open]:text-text-prominent-default data-[state=open]:hover:bg-background-hover-default data-[state=open]:focus:bg-background-hover-default"
5189
+ "group type-menu-trigger inline-flex h-10 w-max items-center justify-center rounded-md bg-background-primary-surface px-4 py-2 transition-[color,box-shadow] outline-none hover:bg-background-hover-default hover:text-text-prominent-default focus:bg-background-hover-default focus:text-text-prominent-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong focus-visible:outline-1 disabled:pointer-events-none disabled:text-text-disabled-default data-[state=open]:bg-background-hover-default data-[state=open]:text-text-prominent-default data-[state=open]:hover:bg-background-hover-default data-[state=open]:focus:bg-background-hover-default"
4927
5190
  );
4928
5191
  function NavigationMenuTrigger(_a) {
4929
5192
  var _b = _a, {
@@ -4933,7 +5196,7 @@ function NavigationMenuTrigger(_a) {
4933
5196
  "className",
4934
5197
  "children"
4935
5198
  ]);
4936
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
5199
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsxs)(
4937
5200
  import_radix_ui21.NavigationMenu.Trigger,
4938
5201
  __spreadProps(__spreadValues({
4939
5202
  "data-slot": "navigation-menu-trigger",
@@ -4942,8 +5205,8 @@ function NavigationMenuTrigger(_a) {
4942
5205
  children: [
4943
5206
  children,
4944
5207
  " ",
4945
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
4946
- import_lucide_react17.ChevronDownIcon,
5208
+ /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5209
+ import_lucide_react18.ChevronDownIcon,
4947
5210
  {
4948
5211
  className: "relative top-[1px] ml-1 size-3 transition duration-slow group-data-[state=open]:rotate-180",
4949
5212
  "aria-hidden": "true"
@@ -4959,7 +5222,7 @@ function NavigationMenuContent(_a) {
4959
5222
  } = _b, props = __objRest(_b, [
4960
5223
  "className"
4961
5224
  ]);
4962
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
5225
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4963
5226
  import_radix_ui21.NavigationMenu.Content,
4964
5227
  __spreadValues({
4965
5228
  "data-slot": "navigation-menu-content",
@@ -4977,13 +5240,13 @@ function NavigationMenuViewport(_a) {
4977
5240
  } = _b, props = __objRest(_b, [
4978
5241
  "className"
4979
5242
  ]);
4980
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
5243
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4981
5244
  "div",
4982
5245
  {
4983
5246
  className: cn(
4984
5247
  "absolute top-full left-0 isolate z-50 flex justify-center"
4985
5248
  ),
4986
- children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
5249
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
4987
5250
  import_radix_ui21.NavigationMenu.Viewport,
4988
5251
  __spreadValues({
4989
5252
  "data-slot": "navigation-menu-viewport",
@@ -5002,7 +5265,7 @@ function NavigationMenuLink(_a) {
5002
5265
  } = _b, props = __objRest(_b, [
5003
5266
  "className"
5004
5267
  ]);
5005
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
5268
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5006
5269
  import_radix_ui21.NavigationMenu.Link,
5007
5270
  __spreadValues({
5008
5271
  "data-slot": "navigation-menu-link",
@@ -5019,7 +5282,7 @@ function NavigationMenuIndicator(_a) {
5019
5282
  } = _b, props = __objRest(_b, [
5020
5283
  "className"
5021
5284
  ]);
5022
- return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
5285
+ return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5023
5286
  import_radix_ui21.NavigationMenu.Indicator,
5024
5287
  __spreadProps(__spreadValues({
5025
5288
  "data-slot": "navigation-menu-indicator",
@@ -5028,15 +5291,15 @@ function NavigationMenuIndicator(_a) {
5028
5291
  className
5029
5292
  )
5030
5293
  }, props), {
5031
- children: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border-default-default" })
5294
+ children: /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border-default-default" })
5032
5295
  })
5033
5296
  );
5034
5297
  }
5035
5298
 
5036
5299
  // components/ui/numpad.tsx
5037
- var React9 = __toESM(require("react"), 1);
5038
- var import_lucide_react18 = require("lucide-react");
5039
- var import_jsx_runtime38 = require("react/jsx-runtime");
5300
+ var React10 = __toESM(require("react"), 1);
5301
+ var import_lucide_react19 = require("lucide-react");
5302
+ var import_jsx_runtime39 = require("react/jsx-runtime");
5040
5303
  var LONG_PRESS_MS = 600;
5041
5304
  function Numpad(_a) {
5042
5305
  var _b = _a, {
@@ -5052,8 +5315,8 @@ function Numpad(_a) {
5052
5315
  "decimal",
5053
5316
  "disabled"
5054
5317
  ]);
5055
- const holdTimer = React9.useRef(null);
5056
- const longPressFired = React9.useRef(false);
5318
+ const holdTimer = React10.useRef(null);
5319
+ const longPressFired = React10.useRef(false);
5057
5320
  const startHold = () => {
5058
5321
  longPressFired.current = false;
5059
5322
  holdTimer.current = setTimeout(() => {
@@ -5065,7 +5328,7 @@ function Numpad(_a) {
5065
5328
  if (holdTimer.current) clearTimeout(holdTimer.current);
5066
5329
  holdTimer.current = null;
5067
5330
  };
5068
- React9.useEffect(() => cancelHold, []);
5331
+ React10.useEffect(() => cancelHold, []);
5069
5332
  const keys = [
5070
5333
  "1",
5071
5334
  "2",
@@ -5080,7 +5343,7 @@ function Numpad(_a) {
5080
5343
  "0",
5081
5344
  "backspace"
5082
5345
  ];
5083
- return /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5346
+ return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5084
5347
  "div",
5085
5348
  __spreadProps(__spreadValues({
5086
5349
  "data-slot": "numpad",
@@ -5088,12 +5351,12 @@ function Numpad(_a) {
5088
5351
  "aria-label": "Number pad",
5089
5352
  className: cn(
5090
5353
  "grid w-full grid-cols-3 gap-1",
5091
- disabled && "pointer-events-none opacity-24",
5354
+ disabled && "pointer-events-none [background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))] text-text-disabled-default",
5092
5355
  className
5093
5356
  )
5094
5357
  }, props), {
5095
5358
  children: keys.map(
5096
- (key, i) => key === null ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)("span", { "aria-hidden": true }, `empty-${i}`) : /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(
5359
+ (key, i) => key === null ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { "aria-hidden": true }, `empty-${i}`) : /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5097
5360
  "button",
5098
5361
  {
5099
5362
  type: "button",
@@ -5118,7 +5381,7 @@ function Numpad(_a) {
5118
5381
  }
5119
5382
  onKeyPress == null ? void 0 : onKeyPress(key);
5120
5383
  },
5121
- children: key === "backspace" ? /* @__PURE__ */ (0, import_jsx_runtime38.jsx)(import_lucide_react18.Delete, { className: "size-5.5" }) : key
5384
+ children: key === "backspace" ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react19.Delete, { className: "size-5.5" }) : key
5122
5385
  },
5123
5386
  key
5124
5387
  )
@@ -5127,98 +5390,6 @@ function Numpad(_a) {
5127
5390
  );
5128
5391
  }
5129
5392
 
5130
- // components/ui/pagination.tsx
5131
- var import_lucide_react19 = require("lucide-react");
5132
- var import_jsx_runtime39 = require("react/jsx-runtime");
5133
- function Pagination(_a) {
5134
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
5135
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5136
- "nav",
5137
- __spreadValues({
5138
- role: "navigation",
5139
- "aria-label": "pagination",
5140
- "data-slot": "pagination",
5141
- className: cn("mx-auto flex w-full justify-center", className)
5142
- }, props)
5143
- );
5144
- }
5145
- function PaginationContent(_a) {
5146
- var _b = _a, {
5147
- className
5148
- } = _b, props = __objRest(_b, [
5149
- "className"
5150
- ]);
5151
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5152
- "ul",
5153
- __spreadValues({
5154
- "data-slot": "pagination-content",
5155
- className: cn("flex flex-row items-center gap-1", className)
5156
- }, props)
5157
- );
5158
- }
5159
- function PaginationItem(_a) {
5160
- var props = __objRest(_a, []);
5161
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("li", __spreadValues({ "data-slot": "pagination-item" }, props));
5162
- }
5163
- function PaginationLink(_a) {
5164
- var _b = _a, {
5165
- className,
5166
- isActive
5167
- } = _b, props = __objRest(_b, [
5168
- "className",
5169
- "isActive"
5170
- ]);
5171
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
5172
- "a",
5173
- __spreadValues({
5174
- "aria-current": isActive ? "page" : void 0,
5175
- "data-slot": "pagination-link",
5176
- "data-active": isActive,
5177
- className: cn(
5178
- "type-pagination inline-flex shrink-0 items-center justify-center size-10 rounded-full font-display whitespace-nowrap transition-[color,background-color,border-color] outline-none border focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong",
5179
- isActive ? "bg-background-brand-selected border-border-brand-selected text-text-brand-selected" : "bg-transparent border-transparent text-text-prominent-default hover:bg-background-hover-default",
5180
- className
5181
- )
5182
- }, props)
5183
- );
5184
- }
5185
- function PaginationPrevious(_a) {
5186
- var _b = _a, {
5187
- className
5188
- } = _b, props = __objRest(_b, [
5189
- "className"
5190
- ]);
5191
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Button, { asChild: true, variant: "tertiary", size: "icon-md", className: cn(className), children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("a", __spreadProps(__spreadValues({ "aria-label": "Go to previous page", "data-slot": "pagination-link" }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react19.ChevronLeftIcon, { className: "size-5" }) })) });
5192
- }
5193
- function PaginationNext(_a) {
5194
- var _b = _a, {
5195
- className
5196
- } = _b, props = __objRest(_b, [
5197
- "className"
5198
- ]);
5199
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(Button, { asChild: true, variant: "tertiary", size: "icon-md", className: cn(className), children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("a", __spreadProps(__spreadValues({ "aria-label": "Go to next page", "data-slot": "pagination-link" }, props), { children: /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react19.ChevronRightIcon, { className: "size-5" }) })) });
5200
- }
5201
- function PaginationEllipsis(_a) {
5202
- var _b = _a, {
5203
- className
5204
- } = _b, props = __objRest(_b, [
5205
- "className"
5206
- ]);
5207
- return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
5208
- "span",
5209
- __spreadProps(__spreadValues({
5210
- "aria-hidden": true,
5211
- "data-slot": "pagination-ellipsis",
5212
- className: cn("flex size-10 items-center justify-center", className)
5213
- }, props), {
5214
- children: [
5215
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_lucide_react19.MoreHorizontalIcon, { className: "size-4" }),
5216
- /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "sr-only", children: "More pages" })
5217
- ]
5218
- })
5219
- );
5220
- }
5221
-
5222
5393
  // components/ui/popover.tsx
5223
5394
  var import_radix_ui22 = require("radix-ui");
5224
5395
  var import_jsx_runtime40 = require("react/jsx-runtime");
@@ -5293,7 +5464,7 @@ function PopoverDescription(_a) {
5293
5464
  }
5294
5465
 
5295
5466
  // components/ui/progress.tsx
5296
- var React10 = __toESM(require("react"), 1);
5467
+ var React11 = __toESM(require("react"), 1);
5297
5468
  var import_radix_ui23 = require("radix-ui");
5298
5469
  var import_jsx_runtime41 = require("react/jsx-runtime");
5299
5470
  var BAR_HEIGHTS = {
@@ -5338,11 +5509,11 @@ function Progress(_a) {
5338
5509
  "onTimerEnd",
5339
5510
  "children"
5340
5511
  ]);
5341
- const [timerPct, setTimerPct] = React10.useState(
5512
+ const [timerPct, setTimerPct] = React11.useState(
5342
5513
  timer != null ? direction === "up" ? 0 : 100 : null
5343
5514
  );
5344
- const endedRef = React10.useRef(false);
5345
- React10.useEffect(() => {
5515
+ const endedRef = React11.useRef(false);
5516
+ React11.useEffect(() => {
5346
5517
  if (timer == null) {
5347
5518
  setTimerPct(null);
5348
5519
  return;
@@ -5635,7 +5806,7 @@ function RadioGroupItem(_a) {
5635
5806
  __spreadProps(__spreadValues({
5636
5807
  "data-slot": "radio-group-item",
5637
5808
  className: cn(
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",
5809
+ "aspect-square size-4 shrink-0 rounded-full border border-border-default-default bg-background-primary-surface transition-[color,box-shadow] outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong data-[state=checked]:border-border-brand-selected disabled:cursor-not-allowed disabled:border-border-default-default disabled:text-text-disabled-default aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft",
5639
5810
  className
5640
5811
  )
5641
5812
  }, props), {
@@ -5892,17 +6063,17 @@ function SheetDescription(_a) {
5892
6063
  }
5893
6064
 
5894
6065
  // components/ui/sidebar.tsx
5895
- var React13 = __toESM(require("react"), 1);
6066
+ var React14 = __toESM(require("react"), 1);
5896
6067
  var import_class_variance_authority13 = require("class-variance-authority");
5897
6068
  var import_lucide_react24 = require("lucide-react");
5898
6069
  var import_radix_ui28 = require("radix-ui");
5899
6070
 
5900
6071
  // hooks/use-mobile.ts
5901
- var React11 = __toESM(require("react"), 1);
6072
+ var React12 = __toESM(require("react"), 1);
5902
6073
  var MOBILE_BREAKPOINT = 768;
5903
6074
  function useIsMobile() {
5904
- const [isMobile, setIsMobile] = React11.useState(void 0);
5905
- React11.useEffect(() => {
6075
+ const [isMobile, setIsMobile] = React12.useState(void 0);
6076
+ React12.useEffect(() => {
5906
6077
  const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
5907
6078
  const onChange = () => {
5908
6079
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
@@ -5932,10 +6103,10 @@ function Skeleton(_a) {
5932
6103
  }
5933
6104
 
5934
6105
  // components/ui/tooltip.tsx
5935
- var React12 = __toESM(require("react"), 1);
6106
+ var React13 = __toESM(require("react"), 1);
5936
6107
  var import_radix_ui27 = require("radix-ui");
5937
6108
  var import_jsx_runtime48 = require("react/jsx-runtime");
5938
- var TooltipModeContext = React12.createContext("tooltip");
6109
+ var TooltipModeContext = React13.createContext("tooltip");
5939
6110
  function TooltipProvider(_a) {
5940
6111
  var _b = _a, {
5941
6112
  delayDuration = 0
@@ -5969,7 +6140,7 @@ function TooltipTrigger(_a) {
5969
6140
  } = _b, props = __objRest(_b, [
5970
6141
  "children"
5971
6142
  ]);
5972
- const mode = React12.useContext(TooltipModeContext);
6143
+ const mode = React13.useContext(TooltipModeContext);
5973
6144
  if (mode === "drawer") {
5974
6145
  return /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(DrawerTrigger, __spreadProps(__spreadValues({ "data-slot": "tooltip-trigger" }, props), { children }));
5975
6146
  }
@@ -5991,7 +6162,7 @@ function TooltipContent(_a) {
5991
6162
  "closeLabel",
5992
6163
  "children"
5993
6164
  ]);
5994
- const mode = React12.useContext(TooltipModeContext);
6165
+ const mode = React13.useContext(TooltipModeContext);
5995
6166
  if (mode === "drawer") {
5996
6167
  return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(DrawerContent, { "data-slot": "tooltip-content", "data-variant": variant, children: [
5997
6168
  /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(DrawerHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(DrawerTitle, { children: title }) }),
@@ -6029,9 +6200,9 @@ var SIDEBAR_WIDTH = "16rem";
6029
6200
  var SIDEBAR_WIDTH_MOBILE = "18rem";
6030
6201
  var SIDEBAR_WIDTH_ICON = "3rem";
6031
6202
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
6032
- var SidebarContext = React13.createContext(null);
6203
+ var SidebarContext = React14.createContext(null);
6033
6204
  function useSidebar() {
6034
- const context = React13.useContext(SidebarContext);
6205
+ const context = React14.useContext(SidebarContext);
6035
6206
  if (!context) {
6036
6207
  throw new Error("useSidebar must be used within a SidebarProvider.");
6037
6208
  }
@@ -6054,10 +6225,10 @@ function SidebarProvider(_a) {
6054
6225
  "children"
6055
6226
  ]);
6056
6227
  const isMobile = useIsMobile();
6057
- const [openMobile, setOpenMobile] = React13.useState(false);
6058
- const [_open, _setOpen] = React13.useState(defaultOpen);
6228
+ const [openMobile, setOpenMobile] = React14.useState(false);
6229
+ const [_open, _setOpen] = React14.useState(defaultOpen);
6059
6230
  const open = openProp != null ? openProp : _open;
6060
- const setOpen = React13.useCallback(
6231
+ const setOpen = React14.useCallback(
6061
6232
  (value) => {
6062
6233
  const openState = typeof value === "function" ? value(open) : value;
6063
6234
  if (setOpenProp) {
@@ -6069,10 +6240,10 @@ function SidebarProvider(_a) {
6069
6240
  },
6070
6241
  [setOpenProp, open]
6071
6242
  );
6072
- const toggleSidebar = React13.useCallback(() => {
6243
+ const toggleSidebar = React14.useCallback(() => {
6073
6244
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
6074
6245
  }, [isMobile, setOpen, setOpenMobile]);
6075
- React13.useEffect(() => {
6246
+ React14.useEffect(() => {
6076
6247
  const handleKeyDown = (event) => {
6077
6248
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
6078
6249
  event.preventDefault();
@@ -6083,7 +6254,7 @@ function SidebarProvider(_a) {
6083
6254
  return () => window.removeEventListener("keydown", handleKeyDown);
6084
6255
  }, [toggleSidebar]);
6085
6256
  const state = open ? "expanded" : "collapsed";
6086
- const contextValue = React13.useMemo(
6257
+ const contextValue = React14.useMemo(
6087
6258
  () => ({
6088
6259
  state,
6089
6260
  open,
@@ -6449,7 +6620,7 @@ function SidebarMenuItem(_a) {
6449
6620
  );
6450
6621
  }
6451
6622
  var sidebarMenuButtonVariants = (0, import_class_variance_authority13.cva)(
6452
- "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-sm p-2 text-left text-text-prominent-default ring-ring-focus-default outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-background-hover-default hover:text-text-brand-hover focus-visible:ring-2 active:bg-background-hover-default active:text-text-brand-hover disabled:pointer-events-none disabled:opacity-24 aria-disabled:pointer-events-none aria-disabled:opacity-24 data-[active=true]:bg-background-brand-selected data-[active=true]:text-text-brand-selected data-[active=true]:hover:bg-background-brand-selected data-[active=true]:hover:text-text-brand-selected data-[state=open]:hover:bg-background-hover-default data-[state=open]:hover:text-text-brand-hover [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 data-[active=true]:[&>svg]:text-text-brand-selected",
6623
+ "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-sm p-2 text-left text-text-prominent-default ring-ring-focus-default outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-background-hover-default hover:text-text-brand-hover focus-visible:ring-2 active:bg-background-hover-default active:text-text-brand-hover disabled:pointer-events-none disabled:text-text-disabled-default aria-disabled:pointer-events-none aria-disabled:text-text-disabled-default data-[active=true]:bg-background-brand-selected data-[active=true]:text-text-brand-selected data-[active=true]:hover:bg-background-brand-selected data-[active=true]:hover:text-text-brand-selected data-[state=open]:hover:bg-background-hover-default data-[state=open]:hover:text-text-brand-hover [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 data-[active=true]:[&>svg]:text-text-brand-selected",
6453
6624
  {
6454
6625
  variants: {
6455
6626
  variant: {
@@ -6658,7 +6829,7 @@ function SidebarMenuSubButton(_a) {
6658
6829
  "data-size": size,
6659
6830
  "data-active": isActive,
6660
6831
  className: cn(
6661
- "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-sm px-2 text-text-prominent-default ring-ring-focus-default outline-hidden hover:bg-background-hover-default hover:text-text-brand-hover focus-visible:ring-2 active:bg-background-hover-default active:text-text-brand-hover disabled:pointer-events-none disabled:opacity-24 aria-disabled:pointer-events-none aria-disabled:opacity-24 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 data-[active=true]:[&>svg]:text-text-brand-selected",
6832
+ "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-sm px-2 text-text-prominent-default ring-ring-focus-default outline-hidden hover:bg-background-hover-default hover:text-text-brand-hover focus-visible:ring-2 active:bg-background-hover-default active:text-text-brand-hover disabled:pointer-events-none disabled:text-text-disabled-default aria-disabled:pointer-events-none aria-disabled:text-text-disabled-default [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 data-[active=true]:[&>svg]:text-text-brand-selected",
6662
6833
  "data-[active=true]:bg-background-brand-selected data-[active=true]:text-text-brand-selected",
6663
6834
  size === "sm" && "type-sidebar-menu-sm",
6664
6835
  size === "md" && "type-sidebar-menu",
@@ -6670,7 +6841,7 @@ function SidebarMenuSubButton(_a) {
6670
6841
  }
6671
6842
 
6672
6843
  // components/ui/slider.tsx
6673
- var React14 = __toESM(require("react"), 1);
6844
+ var React15 = __toESM(require("react"), 1);
6674
6845
  var import_radix_ui29 = require("radix-ui");
6675
6846
  var import_jsx_runtime50 = require("react/jsx-runtime");
6676
6847
  function Slider(_a) {
@@ -6687,7 +6858,7 @@ function Slider(_a) {
6687
6858
  "min",
6688
6859
  "max"
6689
6860
  ]);
6690
- const _values = React14.useMemo(
6861
+ const _values = React15.useMemo(
6691
6862
  () => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
6692
6863
  [value, defaultValue, min, max]
6693
6864
  );
@@ -6700,7 +6871,7 @@ function Slider(_a) {
6700
6871
  min,
6701
6872
  max,
6702
6873
  className: cn(
6703
- "relative flex w-full touch-none items-center select-none data-[disabled]:opacity-24 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",
6874
+ "relative flex w-full touch-none items-center select-none data-[disabled]:[background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))] data-[disabled]:text-text-disabled-default data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col",
6704
6875
  className
6705
6876
  )
6706
6877
  }, props), {
@@ -6739,6 +6910,7 @@ function Slider(_a) {
6739
6910
  }
6740
6911
 
6741
6912
  // components/ui/toast.tsx
6913
+ var React16 = __toESM(require("react"), 1);
6742
6914
  var import_lucide_react25 = require("lucide-react");
6743
6915
  var import_next_themes = require("next-themes");
6744
6916
  var import_sonner = require("sonner");
@@ -6779,9 +6951,174 @@ var Toaster = (_a) => {
6779
6951
  }, props)
6780
6952
  );
6781
6953
  };
6954
+ var RESULT_SNACKBAR_EXIT_MS = 350;
6955
+ var RESULT_SNACKBAR_ICON_DELAY_MS = 150;
6956
+ function ResultSnackbar(_a) {
6957
+ var _b = _a, {
6958
+ outcome,
6959
+ amount,
6960
+ currency,
6961
+ contractLabel,
6962
+ duration,
6963
+ icon,
6964
+ amountValue,
6965
+ placement = "top",
6966
+ durationMs = 2500,
6967
+ onDismiss,
6968
+ announcement,
6969
+ className
6970
+ } = _b, props = __objRest(_b, [
6971
+ "outcome",
6972
+ "amount",
6973
+ "currency",
6974
+ "contractLabel",
6975
+ "duration",
6976
+ "icon",
6977
+ "amountValue",
6978
+ "placement",
6979
+ "durationMs",
6980
+ "onDismiss",
6981
+ "announcement",
6982
+ "className"
6983
+ ]);
6984
+ const isWin = outcome === "win";
6985
+ const [leaving, setLeaving] = React16.useState(false);
6986
+ const reduced = usePrefersReducedMotion();
6987
+ const onDismissRef = React16.useRef(onDismiss);
6988
+ React16.useEffect(() => {
6989
+ onDismissRef.current = onDismiss;
6990
+ }, [onDismiss]);
6991
+ const firedRef = React16.useRef(false);
6992
+ const finish = React16.useCallback(() => {
6993
+ var _a2;
6994
+ if (firedRef.current) return;
6995
+ firedRef.current = true;
6996
+ (_a2 = onDismissRef.current) == null ? void 0 : _a2.call(onDismissRef);
6997
+ }, []);
6998
+ React16.useEffect(() => {
6999
+ const leave = window.setTimeout(() => setLeaving(true), durationMs);
7000
+ return () => window.clearTimeout(leave);
7001
+ }, [durationMs]);
7002
+ React16.useEffect(() => {
7003
+ if (!leaving) return;
7004
+ const done = window.setTimeout(finish, reduced ? 0 : RESULT_SNACKBAR_EXIT_MS);
7005
+ return () => window.clearTimeout(done);
7006
+ }, [leaving, finish, reduced]);
7007
+ const [display, setDisplay] = React16.useState(null);
7008
+ React16.useEffect(() => {
7009
+ if (amountValue === void 0 || reduced || !Number.isFinite(amountValue)) {
7010
+ setDisplay(null);
7011
+ return;
7012
+ }
7013
+ const total = isWin ? 500 : 250;
7014
+ const sign = isWin ? "+" : "\u2212";
7015
+ const startedAt = performance.now();
7016
+ let frame = 0;
7017
+ const step = (now) => {
7018
+ const t = Math.min(1, (now - startedAt) / total);
7019
+ const eased = 1 - Math.pow(1 - t, 3);
7020
+ if (t < 1) {
7021
+ setDisplay(`${sign}${(amountValue * eased).toFixed(2)}`);
7022
+ frame = requestAnimationFrame(step);
7023
+ } else {
7024
+ setDisplay(null);
7025
+ }
7026
+ };
7027
+ frame = requestAnimationFrame(step);
7028
+ return () => cancelAnimationFrame(frame);
7029
+ }, [amountValue, isWin, reduced]);
7030
+ const spoken = announcement != null ? announcement : `${isWin ? "Won" : "Lost"} ${amount} ${currency}. ${contractLabel}, ${duration}.`;
7031
+ const enterOut = leaving ? "out" : "in";
7032
+ const motionName = `result-snackbar-${enterOut}-${placement}`;
7033
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
7034
+ "div",
7035
+ __spreadProps(__spreadValues({
7036
+ role: "status",
7037
+ "aria-live": "polite",
7038
+ "data-slot": "result-snackbar",
7039
+ "data-outcome": outcome,
7040
+ "data-leaving": leaving || void 0,
7041
+ className: cn(
7042
+ // Floating chrome, the same surface family as Bottom Navigation —
7043
+ // it floats over live chart content, so it frosts what is behind it
7044
+ // and carries the sanctioned chrome lift.
7045
+ "pointer-events-none absolute z-40 flex w-max items-center gap-3 overflow-hidden",
7046
+ "rounded-2xl border border-(--border-chrome-default) bg-(--background-chrome-default)",
7047
+ "[backdrop-filter:blur(20px)_saturate(1.4)]",
7048
+ "[box-shadow:var(--shadow-chrome-default),inset_0_1px_0_var(--chrome-highlight-default)]",
7049
+ "py-2 pr-4 pl-2 whitespace-nowrap",
7050
+ className
7051
+ ),
7052
+ style: {
7053
+ animation: reduced ? `result-snackbar-fade var(--motion-overlay-close) var(--ease-standard) ${leaving ? "reverse forwards" : "forwards"}` : `${motionName} ${RESULT_SNACKBAR_EXIT_MS}ms var(--primitive-ease-overshoot) forwards`
7054
+ }
7055
+ }, props), {
7056
+ children: [
7057
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "sr-only", children: spoken }),
7058
+ icon ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
7059
+ "span",
7060
+ {
7061
+ "data-slot": "result-snackbar-icon",
7062
+ className: "flex size-10 flex-none items-center justify-center",
7063
+ style: reduced ? void 0 : {
7064
+ animation: `result-snackbar-icon-${outcome} var(--motion-pop) var(--primitive-ease-overshoot) ${RESULT_SNACKBAR_ICON_DELAY_MS}ms both`
7065
+ },
7066
+ children: icon
7067
+ }
7068
+ ) : null,
7069
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { "aria-hidden": true, className: "flex min-w-max flex-col gap-0.5", children: [
7070
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
7071
+ "span",
7072
+ {
7073
+ className: cn(
7074
+ "type-result-snackbar-amount min-w-max",
7075
+ isWin ? "text-text-success-default" : "text-text-error-default"
7076
+ ),
7077
+ children: [
7078
+ display != null ? display : amount,
7079
+ " ",
7080
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("span", { className: "type-result-snackbar-currency", children: currency })
7081
+ ]
7082
+ }
7083
+ ),
7084
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("span", { className: "type-result-snackbar-terms min-w-max text-text-subtle-default", children: [
7085
+ contractLabel,
7086
+ " \xB7 ",
7087
+ duration
7088
+ ] })
7089
+ ] }),
7090
+ /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
7091
+ "span",
7092
+ {
7093
+ "aria-hidden": true,
7094
+ "data-slot": "result-snackbar-drain",
7095
+ className: cn(
7096
+ "absolute bottom-0 left-0 h-1 w-full origin-left",
7097
+ isWin ? "bg-background-success-solid" : "bg-background-error-solid"
7098
+ ),
7099
+ style: reduced ? { transform: "scaleX(0)" } : {
7100
+ animation: `result-snackbar-drain ${durationMs}ms var(--ease-linear) forwards`
7101
+ }
7102
+ }
7103
+ )
7104
+ ]
7105
+ })
7106
+ );
7107
+ }
7108
+ function usePrefersReducedMotion() {
7109
+ const [reduced, setReduced] = React16.useState(false);
7110
+ React16.useEffect(() => {
7111
+ const query = window.matchMedia("(prefers-reduced-motion: reduce)");
7112
+ setReduced(query.matches);
7113
+ const onChange = (event) => setReduced(event.matches);
7114
+ query.addEventListener("change", onChange);
7115
+ return () => query.removeEventListener("change", onChange);
7116
+ }, []);
7117
+ return reduced;
7118
+ }
6782
7119
 
6783
7120
  // components/ui/slide-to-confirm.tsx
6784
- var React15 = __toESM(require("react"), 1);
7121
+ var React17 = __toESM(require("react"), 1);
6785
7122
  var import_lucide_react26 = require("lucide-react");
6786
7123
  var import_jsx_runtime52 = require("react/jsx-runtime");
6787
7124
  var CONFIRM_AT = 0.9;
@@ -6803,21 +7140,21 @@ function SlideToConfirm(_a) {
6803
7140
  "confirmed",
6804
7141
  "className"
6805
7142
  ]);
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);
7143
+ const trackRef = React17.useRef(null);
7144
+ const [dragX, setDragX] = React17.useState(0);
7145
+ const [dragging, setDragging] = React17.useState(false);
7146
+ const [trackWidth, setTrackWidth] = React17.useState(0);
7147
+ const [internalConfirmed, setInternalConfirmed] = React17.useState(false);
6811
7148
  const confirmed = controlledConfirmed != null ? controlledConfirmed : internalConfirmed;
6812
- const firedRef = React15.useRef(false);
6813
- React15.useEffect(() => {
7149
+ const firedRef = React17.useRef(false);
7150
+ React17.useEffect(() => {
6814
7151
  if (controlledConfirmed === false) {
6815
7152
  setInternalConfirmed(false);
6816
7153
  setDragX(0);
6817
7154
  firedRef.current = false;
6818
7155
  }
6819
7156
  }, [controlledConfirmed]);
6820
- React15.useEffect(() => {
7157
+ React17.useEffect(() => {
6821
7158
  const track = trackRef.current;
6822
7159
  if (!track) return;
6823
7160
  const ro = new ResizeObserver(() => setTrackWidth(track.clientWidth));
@@ -6879,7 +7216,7 @@ function SlideToConfirm(_a) {
6879
7216
  onKeyDown: handleKeyDown,
6880
7217
  className: cn(
6881
7218
  "relative h-14 w-full touch-none overflow-hidden rounded-full bg-background-secondary-surface select-none",
6882
- disabled && "pointer-events-none opacity-24",
7219
+ disabled && "pointer-events-none [background-image:linear-gradient(var(--background-disabled-default),var(--background-disabled-default))] text-text-disabled-default",
6883
7220
  "outline-none focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong",
6884
7221
  className
6885
7222
  )
@@ -6957,7 +7294,7 @@ function SlideToConfirm(_a) {
6957
7294
  }
6958
7295
 
6959
7296
  // components/ui/stepper.tsx
6960
- var React16 = __toESM(require("react"), 1);
7297
+ var React18 = __toESM(require("react"), 1);
6961
7298
  var import_lucide_react27 = require("lucide-react");
6962
7299
  var import_jsx_runtime53 = require("react/jsx-runtime");
6963
7300
  function clamp(value, min, max) {
@@ -6987,16 +7324,16 @@ function Stepper({
6987
7324
  "aria-label": ariaLabel
6988
7325
  }) {
6989
7326
  const isControlled = controlledValue !== void 0;
6990
- const [internalValue, setInternalValue] = React16.useState(
7327
+ const [internalValue, setInternalValue] = React18.useState(
6991
7328
  clamp(defaultValue, min, max)
6992
7329
  );
6993
7330
  const currentValue = isControlled ? controlledValue : internalValue;
6994
7331
  const decimalPlaces = getDecimalPlaces(step);
6995
- const [displayString, setDisplayString] = React16.useState(
7332
+ const [displayString, setDisplayString] = React18.useState(
6996
7333
  formatValue(currentValue, decimalPlaces)
6997
7334
  );
6998
- const [isFocused, setIsFocused] = React16.useState(false);
6999
- React16.useEffect(() => {
7335
+ const [isFocused, setIsFocused] = React18.useState(false);
7336
+ React18.useEffect(() => {
7000
7337
  if (!isFocused) {
7001
7338
  setDisplayString(formatValue(currentValue, decimalPlaces));
7002
7339
  }
@@ -7126,10 +7463,10 @@ function Stepper({
7126
7463
  }
7127
7464
 
7128
7465
  // components/ui/steps.tsx
7129
- var React17 = __toESM(require("react"), 1);
7466
+ var React19 = __toESM(require("react"), 1);
7130
7467
  var import_lucide_react28 = require("lucide-react");
7131
7468
  var import_jsx_runtime54 = require("react/jsx-runtime");
7132
- var StepsContext = React17.createContext({ shape: "circle", orientation: "horizontal", size: "md" });
7469
+ var StepsContext = React19.createContext({ shape: "circle", orientation: "horizontal", size: "md" });
7133
7470
  function Steps(_a) {
7134
7471
  var _b = _a, {
7135
7472
  shape = "circle",
@@ -7144,7 +7481,7 @@ function Steps(_a) {
7144
7481
  "className",
7145
7482
  "children"
7146
7483
  ]);
7147
- const steps = React17.Children.toArray(children);
7484
+ const steps = React19.Children.toArray(children);
7148
7485
  return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(StepsContext.Provider, { value: { shape, orientation, size }, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7149
7486
  "ol",
7150
7487
  __spreadProps(__spreadValues({
@@ -7159,7 +7496,7 @@ function Steps(_a) {
7159
7496
  )
7160
7497
  }, props), {
7161
7498
  children: steps.map(
7162
- (child, index) => React17.isValidElement(child) ? React17.cloneElement(child, {
7499
+ (child, index) => React19.isValidElement(child) ? React19.cloneElement(child, {
7163
7500
  index: index + 1,
7164
7501
  isFirst: index === 0,
7165
7502
  isLast: index === steps.length - 1
@@ -7190,7 +7527,7 @@ function Step(_a) {
7190
7527
  "isLast",
7191
7528
  "className"
7192
7529
  ]);
7193
- const { shape, orientation, size } = React17.useContext(StepsContext);
7530
+ const { shape, orientation, size } = React19.useContext(StepsContext);
7194
7531
  const horizontal = orientation === "horizontal";
7195
7532
  const sm = size === "sm";
7196
7533
  const indicator = /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
@@ -7347,7 +7684,7 @@ function Switch(_a) {
7347
7684
  "data-slot": "switch",
7348
7685
  "data-size": size,
7349
7686
  className: cn(
7350
- "peer group/switch inline-flex shrink-0 items-center rounded-full border border-transparent p-[3px] transition-all outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:cursor-not-allowed disabled:opacity-24 data-[size=default]:h-6 data-[size=default]:w-11 data-[size=sm]:h-5 data-[size=sm]:w-9 data-[state=checked]:bg-background-brand-default data-[state=unchecked]:bg-border-default-default",
7687
+ "peer group/switch inline-flex shrink-0 items-center rounded-full border border-transparent p-[3px] transition-all outline-none focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:cursor-not-allowed disabled:border-border-default-default disabled:text-text-disabled-default data-[size=default]:h-6 data-[size=default]:w-11 data-[size=sm]:h-5 data-[size=sm]:w-9 data-[state=checked]:bg-background-brand-default data-[state=unchecked]:bg-border-default-default",
7351
7688
  className
7352
7689
  )
7353
7690
  }, props), {
@@ -7549,7 +7886,7 @@ function TabsTrigger(_a) {
7549
7886
  "data-slot": "tabs-trigger",
7550
7887
  "data-icon-position": iconPosition,
7551
7888
  className: cn(
7552
- "relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-3 py-1 whitespace-nowrap text-text-subtle-default transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start 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 focus-visible:outline-1 focus-visible:outline-ring-focus-default disabled:pointer-events-none disabled:opacity-24 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-none group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
7889
+ "relative inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-3 py-1 whitespace-nowrap text-text-subtle-default transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start 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 focus-visible:outline-1 focus-visible:outline-ring-focus-default disabled:pointer-events-none disabled:text-text-disabled-default group-data-[variant=default]/tabs-list:data-[state=active]:shadow-none group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
7553
7890
  "group-data-[size=sm]/tabs-list:gap-1 group-data-[size=sm]/tabs-list:rounded-sm group-data-[size=sm]/tabs-list:px-2",
7554
7891
  "group-data-[size=lg]/tabs-list:gap-2 group-data-[size=lg]/tabs-list:rounded-lg group-data-[size=lg]/tabs-list:px-4",
7555
7892
  "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:hover:bg-transparent group-data-[variant=line]/tabs-list:hover:text-text-brand-hover group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent",
@@ -7583,7 +7920,7 @@ var import_class_variance_authority15 = require("class-variance-authority");
7583
7920
  var import_radix_ui32 = require("radix-ui");
7584
7921
  var import_jsx_runtime58 = require("react/jsx-runtime");
7585
7922
  var toggleVariants = (0, import_class_variance_authority15.cva)(
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",
7923
+ "type-toggle inline-flex items-center justify-center gap-2 rounded-md border border-border-default-default bg-background-primary-surface text-text-prominent-default whitespace-nowrap transition-[color,background-color,border-color,box-shadow] outline-none hover:bg-background-secondary-surface active:bg-background-secondary-wash focus-visible:border-ring-focus-default focus-visible:ring-[3px] focus-visible:ring-ring-focus-strong disabled:pointer-events-none disabled:border-border-default-default disabled:text-text-disabled-default aria-invalid:border-border-error-default aria-invalid:ring-ring-error-soft data-[state=on]:border-transparent data-[state=on]:bg-background-brand-default data-[state=on]:text-text-on-brand-static [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
7587
7924
  {
7588
7925
  variants: {
7589
7926
  size: {
@@ -7615,10 +7952,10 @@ function Toggle(_a) {
7615
7952
  }
7616
7953
 
7617
7954
  // components/ui/toggle-group.tsx
7618
- var React18 = __toESM(require("react"), 1);
7955
+ var React20 = __toESM(require("react"), 1);
7619
7956
  var import_radix_ui33 = require("radix-ui");
7620
7957
  var import_jsx_runtime59 = require("react/jsx-runtime");
7621
- var ToggleGroupContext = React18.createContext({
7958
+ var ToggleGroupContext = React20.createContext({
7622
7959
  size: "default",
7623
7960
  spacing: 0
7624
7961
  });
@@ -7660,7 +7997,7 @@ function ToggleGroupItem(_a) {
7660
7997
  "children",
7661
7998
  "size"
7662
7999
  ]);
7663
- const context = React18.useContext(ToggleGroupContext);
8000
+ const context = React20.useContext(ToggleGroupContext);
7664
8001
  return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
7665
8002
  import_radix_ui33.ToggleGroup.Item,
7666
8003
  __spreadProps(__spreadValues({
@@ -7962,7 +8299,7 @@ function TaglinePill({
7962
8299
  }
7963
8300
 
7964
8301
  // components/blocks/auth-block.tsx
7965
- var React19 = __toESM(require("react"), 1);
8302
+ var React21 = __toESM(require("react"), 1);
7966
8303
  var import_jsx_runtime64 = require("react/jsx-runtime");
7967
8304
  function AuthBlock({
7968
8305
  mode,
@@ -7978,7 +8315,7 @@ function AuthBlock({
7978
8315
  const ctaText = mode === "sign-in" ? "Sign in" : "Sign up";
7979
8316
  const footerPrompt = mode === "sign-in" ? "Don't have an account?" : "Already have an account?";
7980
8317
  const footerLinkLabel = mode === "sign-in" ? "Sign up" : "Log in";
7981
- const [email, setEmail] = React19.useState("");
8318
+ const [email, setEmail] = React21.useState("");
7982
8319
  return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex flex-col items-center gap-6 w-full", children: [
7983
8320
  /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)("div", { className: "flex items-center gap-2", children: [
7984
8321
  /* @__PURE__ */ (0, import_jsx_runtime64.jsx)("img", { src: logoSrc, alt: wordmark, className: "size-8 object-contain" }),
@@ -8046,12 +8383,12 @@ function ProviderButton({ provider }) {
8046
8383
  }
8047
8384
 
8048
8385
  // components/blocks/navbar-block.tsx
8049
- var React20 = __toESM(require("react"), 1);
8386
+ var React22 = __toESM(require("react"), 1);
8050
8387
  var import_lucide_react32 = require("lucide-react");
8051
8388
  var import_jsx_runtime65 = require("react/jsx-runtime");
8052
8389
  function NavBarBlock({ brand, links, signIn, signUp }) {
8053
8390
  var _a, _b, _c, _d;
8054
- const [mobileMenuOpen, setMobileMenuOpen] = React20.useState(false);
8391
+ const [mobileMenuOpen, setMobileMenuOpen] = React22.useState(false);
8055
8392
  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
8393
  /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center justify-between px-layout-margin-inline py-3", children: [
8057
8394
  /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("div", { className: "flex items-center gap-6", children: [
@@ -8214,7 +8551,7 @@ function DefaultEmptyState({ onViewHistory }) {
8214
8551
  }
8215
8552
 
8216
8553
  // components/blocks/game-loading-block.tsx
8217
- var React21 = __toESM(require("react"), 1);
8554
+ var React23 = __toESM(require("react"), 1);
8218
8555
  var import_jsx_runtime67 = require("react/jsx-runtime");
8219
8556
  function useSmoothProgress({
8220
8557
  checkpoints,
@@ -8225,19 +8562,19 @@ function useSmoothProgress({
8225
8562
  readyLabel = "Ready"
8226
8563
  }) {
8227
8564
  var _a, _b;
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(() => {
8565
+ const [progress, setProgress] = React23.useState(0);
8566
+ const [delayed, setDelayed] = React23.useState(false);
8567
+ const checkpointsRef = React23.useRef(checkpoints);
8568
+ const reachedRef = React23.useRef(reached);
8569
+ const doneRef = React23.useRef(done);
8570
+ React23.useEffect(() => {
8234
8571
  checkpointsRef.current = checkpoints;
8235
8572
  reachedRef.current = reached;
8236
8573
  doneRef.current = done;
8237
8574
  });
8238
- const progressRef = React21.useRef(0);
8239
- const lastAdvanceRef = React21.useRef(0);
8240
- React21.useEffect(() => {
8575
+ const progressRef = React23.useRef(0);
8576
+ const lastAdvanceRef = React23.useRef(0);
8577
+ React23.useEffect(() => {
8241
8578
  let raf = 0;
8242
8579
  let last = 0;
8243
8580
  const tick = (ts) => {
@@ -8291,14 +8628,14 @@ function GameLoadingBlock({
8291
8628
  backgroundImageUrl,
8292
8629
  className
8293
8630
  }) {
8294
- const [go, setGo] = React21.useState(false);
8295
- const [reduced, setReduced] = React21.useState(false);
8296
- React21.useEffect(() => {
8631
+ const [go, setGo] = React23.useState(false);
8632
+ const [reduced, setReduced] = React23.useState(false);
8633
+ React23.useEffect(() => {
8297
8634
  if (typeof window !== "undefined" && typeof window.matchMedia === "function") {
8298
8635
  setReduced(window.matchMedia("(prefers-reduced-motion: reduce)").matches);
8299
8636
  }
8300
8637
  }, []);
8301
- React21.useEffect(() => {
8638
+ React23.useEffect(() => {
8302
8639
  if (!exiting) return;
8303
8640
  const raf = requestAnimationFrame(() => setGo(true));
8304
8641
  const timer = setTimeout(() => onExitEnd == null ? void 0 : onExitEnd(), reduced ? 240 : 520);
@@ -8405,6 +8742,7 @@ function GameLoadingBlock({
8405
8742
  CardTitle,
8406
8743
  Carousel,
8407
8744
  CarouselContent,
8745
+ CarouselDots,
8408
8746
  CarouselItem,
8409
8747
  CarouselNext,
8410
8748
  CarouselPrevious,
@@ -8547,7 +8885,9 @@ function GameLoadingBlock({
8547
8885
  Numpad,
8548
8886
  OpenPositionsBlock,
8549
8887
  Pagination,
8888
+ PaginationBar,
8550
8889
  PaginationContent,
8890
+ PaginationDots,
8551
8891
  PaginationEllipsis,
8552
8892
  PaginationItem,
8553
8893
  PaginationLink,
@@ -8569,6 +8909,7 @@ function GameLoadingBlock({
8569
8909
  ResizablePanelGroup,
8570
8910
  ResultBlock,
8571
8911
  ResultDialog,
8912
+ ResultSnackbar,
8572
8913
  ScrollArea,
8573
8914
  ScrollBar,
8574
8915
  SectionMessage,