@pactor-app/ui 1.1.0 → 1.3.0

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.
@@ -43,6 +43,7 @@ __export(components_exports, {
43
43
  Card: () => Card2,
44
44
  Carousel: () => Carousel2,
45
45
  Chart: () => Chart,
46
+ ChatInput: () => ChatInput,
46
47
  Checkbox: () => Checkbox2,
47
48
  Collapsible: () => Collapsible2,
48
49
  Combobox: () => Combobox2,
@@ -101,10 +102,10 @@ __export(components_exports, {
101
102
  ToggleGroup: () => ToggleGroup2,
102
103
  Tooltip: () => Tooltip3,
103
104
  Typography: () => Typography2,
104
- createShadcnComponentRegistry: () => createShadcnComponentRegistry,
105
+ builtinComponents: () => builtinComponents,
106
+ createComponentRegistry: () => createComponentRegistry,
105
107
  normalizeIconName: () => normalizeIconName,
106
- registerShadcnComponents: () => registerShadcnComponents,
107
- shadcnComponents: () => shadcnComponents,
108
+ registerBuiltinComponents: () => registerBuiltinComponents,
108
109
  useFormContext: () => useFormContext,
109
110
  useSidebarDrawer: () => useSidebarDrawer
110
111
  });
@@ -326,16 +327,20 @@ var buttonVariants = (0, import_class_variance_authority2.cva)(
326
327
  variant: {
327
328
  default: "bg-primary text-primary-foreground hover:bg-primary/90",
328
329
  destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/20",
329
- outline: "border border-border bg-background hover:bg-accent hover:text-accent-foreground",
330
+ outline: "border border-border bg-card hover:bg-accent hover:text-accent-foreground",
330
331
  secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
331
332
  ghost: "hover:bg-accent hover:text-accent-foreground",
332
333
  link: "text-primary underline-offset-4 hover:underline"
333
334
  },
334
335
  size: {
335
336
  default: "h-9 px-4 py-2",
337
+ xs: "h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",
336
338
  sm: "h-8 gap-1.5 rounded-md px-3 text-xs",
337
339
  lg: "h-10 rounded-md px-6",
338
- icon: "size-9"
340
+ icon: "size-9",
341
+ "icon-xs": "size-6 rounded-md [&_svg:not([class*='size-'])]:size-3",
342
+ "icon-sm": "size-8",
343
+ "icon-lg": "size-10"
339
344
  }
340
345
  },
341
346
  defaultVariants: {
@@ -400,7 +405,7 @@ function AlertDialogOverlay({
400
405
  {
401
406
  "data-slot": "alert-dialog-overlay",
402
407
  className: cn(
403
- "fixed inset-0 z-50 bg-black/50 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
408
+ "fixed inset-0 z-50 bg-(--overlay-background) data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
404
409
  className
405
410
  ),
406
411
  ...props
@@ -418,7 +423,7 @@ function AlertDialogContent({
418
423
  {
419
424
  "data-slot": "alert-dialog-content",
420
425
  className: cn(
421
- "fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border border-border bg-background p-6 shadow-lg duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 sm:max-w-lg",
426
+ "fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border border-border bg-popover p-6 shadow-lg shadow-(color:--shadow-color) duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 sm:max-w-lg",
422
427
  className
423
428
  ),
424
429
  ...props
@@ -861,7 +866,7 @@ function Calendar({
861
866
  import_react_day_picker.DayPicker,
862
867
  {
863
868
  showOutsideDays,
864
- className: cn("bg-background p-3", className),
869
+ className: cn("bg-card p-3", className),
865
870
  classNames: {
866
871
  root: cn("w-fit", defaultClassNames.root),
867
872
  months: cn("relative flex flex-col gap-4 md:flex-row", defaultClassNames.months),
@@ -894,15 +899,15 @@ function Calendar({
894
899
  week: cn("mt-2 flex w-full", defaultClassNames.week),
895
900
  day: cn("h-8 w-8 p-0 text-center text-sm", defaultClassNames.day),
896
901
  day_button: cn(
897
- "size-8 cursor-pointer rounded-md p-0 font-normal hover:bg-accent hover:text-accent-foreground aria-selected:opacity-100",
902
+ "size-8 cursor-pointer rounded-md p-0 font-normal hover:bg-(--calendar-day-hover-background) hover:text-(--calendar-day-hover-foreground) aria-selected:opacity-100",
898
903
  defaultClassNames.day_button
899
904
  ),
900
905
  selected: cn(
901
- "[&>button]:bg-primary [&>button]:text-primary-foreground [&>button]:hover:bg-primary",
906
+ "[&>button]:bg-(--calendar-selected-background) [&>button]:text-(--calendar-selected-foreground) [&>button]:hover:bg-(--calendar-selected-background)",
902
907
  defaultClassNames.selected
903
908
  ),
904
909
  today: cn(
905
- "[&>button]:bg-accent [&>button]:text-accent-foreground",
910
+ "[&>button]:bg-(--calendar-today-background) [&>button]:text-(--calendar-today-foreground)",
906
911
  defaultClassNames.today
907
912
  ),
908
913
  outside: cn(
@@ -1012,7 +1017,7 @@ function Card({ className, ...props }) {
1012
1017
  {
1013
1018
  "data-slot": "card",
1014
1019
  className: cn(
1015
- "flex flex-col gap-6 rounded-xl border border-border bg-card py-6 text-card-foreground shadow-sm",
1020
+ "flex flex-col gap-6 rounded-xl border border-border bg-card py-6 text-card-foreground shadow-(--card-shadow)",
1016
1021
  className
1017
1022
  ),
1018
1023
  ...props
@@ -1513,7 +1518,7 @@ function PopoverContent({
1513
1518
  {
1514
1519
  "data-slot": "popover-content",
1515
1520
  className: cn(
1516
- "z-50 w-72 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
1521
+ "z-50 w-72 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md shadow-(color:--shadow-color) outline-none duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
1517
1522
  className
1518
1523
  ),
1519
1524
  ...props
@@ -1668,7 +1673,7 @@ function CommandItem({
1668
1673
  {
1669
1674
  "data-slot": "command-item",
1670
1675
  className: cn(
1671
- "relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1676
+ "relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 data-[selected=true]:bg-(--menu-active-background) data-[selected=true]:text-(--menu-active-foreground) [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
1672
1677
  className
1673
1678
  ),
1674
1679
  ...props
@@ -1970,11 +1975,11 @@ var import_recharts2 = require("recharts");
1970
1975
  var import_recharts = require("recharts");
1971
1976
  var import_jsx_runtime36 = require("react/jsx-runtime");
1972
1977
  var CHART_TOKEN_COLORS = [
1973
- "hsl(var(--chart-1))",
1974
- "hsl(var(--chart-2))",
1975
- "hsl(var(--chart-3))",
1976
- "hsl(var(--chart-4))",
1977
- "hsl(var(--chart-5))"
1978
+ "var(--chart-1)",
1979
+ "var(--chart-2)",
1980
+ "var(--chart-3)",
1981
+ "var(--chart-4)",
1982
+ "var(--chart-5)"
1978
1983
  ];
1979
1984
  function chartColor(index, colors) {
1980
1985
  if (colors && colors.length > 0) {
@@ -2165,7 +2170,7 @@ function ChatInput({
2165
2170
  {
2166
2171
  "data-slot": "chat-input",
2167
2172
  className: cn(
2168
- "rounded-xl border border-border bg-background transition-shadow focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50",
2173
+ "rounded-xl border border-border bg-card transition-shadow focus-within:border-ring focus-within:ring-[3px] focus-within:ring-ring/50",
2169
2174
  className
2170
2175
  ),
2171
2176
  style,
@@ -2244,7 +2249,7 @@ function ContextMenuContent({
2244
2249
  {
2245
2250
  "data-slot": "context-menu-content",
2246
2251
  className: cn(
2247
- "z-50 max-h-(--available-height) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
2252
+ "z-50 max-h-(--available-height) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md shadow-(color:--shadow-color) duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
2248
2253
  className
2249
2254
  ),
2250
2255
  ...props
@@ -2262,7 +2267,7 @@ function ContextMenuItem({
2262
2267
  "data-slot": "context-menu-item",
2263
2268
  "data-variant": variant,
2264
2269
  className: cn(
2265
- "relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
2270
+ "relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-(--menu-hover-background) focus:text-(--menu-hover-foreground) data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
2266
2271
  className
2267
2272
  ),
2268
2273
  ...props
@@ -2577,7 +2582,7 @@ function DialogOverlay({
2577
2582
  {
2578
2583
  "data-slot": "dialog-overlay",
2579
2584
  className: cn(
2580
- "fixed inset-0 z-50 bg-black/50 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
2585
+ "fixed inset-0 z-50 bg-(--overlay-background) data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
2581
2586
  className
2582
2587
  ),
2583
2588
  ...props
@@ -2597,7 +2602,7 @@ function DialogContent({
2597
2602
  {
2598
2603
  "data-slot": "dialog-content",
2599
2604
  className: cn(
2600
- "fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border border-border bg-background p-6 shadow-lg duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 sm:max-w-lg",
2605
+ "fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border border-border bg-popover p-6 shadow-lg shadow-(color:--shadow-color) duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95 sm:max-w-lg",
2601
2606
  className
2602
2607
  ),
2603
2608
  ...props,
@@ -2732,7 +2737,7 @@ function DrawerOverlay({
2732
2737
  import_vaul.Drawer.Overlay,
2733
2738
  {
2734
2739
  "data-slot": "drawer-overlay",
2735
- className: cn("fixed inset-0 z-50 bg-black/50", className),
2740
+ className: cn("fixed inset-0 z-50 bg-(--overlay-background)", className),
2736
2741
  ...props
2737
2742
  }
2738
2743
  );
@@ -2749,7 +2754,7 @@ function DrawerContent({
2749
2754
  {
2750
2755
  "data-slot": "drawer-content",
2751
2756
  className: cn(
2752
- "group/drawer-content fixed z-50 flex h-auto flex-col border-border bg-background",
2757
+ "group/drawer-content fixed z-50 flex h-auto flex-col border-border bg-popover",
2753
2758
  "data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b",
2754
2759
  "data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t",
2755
2760
  "data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm",
@@ -2851,7 +2856,7 @@ function DropdownMenuContent({
2851
2856
  {
2852
2857
  "data-slot": "dropdown-menu-content",
2853
2858
  className: cn(
2854
- "z-50 max-h-(--available-height) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
2859
+ "z-50 max-h-(--available-height) min-w-32 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md shadow-(color:--shadow-color) duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
2855
2860
  className
2856
2861
  ),
2857
2862
  ...props
@@ -2871,7 +2876,7 @@ function DropdownMenuItem({
2871
2876
  "data-slot": "dropdown-menu-item",
2872
2877
  "data-variant": variant,
2873
2878
  className: cn(
2874
- "relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
2879
+ "relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-(--menu-hover-background) focus:text-(--menu-hover-foreground) data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
2875
2880
  className
2876
2881
  ),
2877
2882
  ...props
@@ -2893,7 +2898,7 @@ function DropdownMenuSubTrigger({
2893
2898
  {
2894
2899
  "data-slot": "dropdown-menu-sub-trigger",
2895
2900
  className: cn(
2896
- "flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
2901
+ "flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-(--menu-hover-background) focus:text-(--menu-hover-foreground) data-open:bg-(--menu-active-background) data-open:text-(--menu-active-foreground) [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
2897
2902
  className
2898
2903
  ),
2899
2904
  ...props,
@@ -2914,7 +2919,7 @@ function DropdownMenuSubContent({
2914
2919
  {
2915
2920
  "data-slot": "dropdown-menu-sub-content",
2916
2921
  className: cn(
2917
- "z-50 min-w-32 origin-(--transform-origin) overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
2922
+ "z-50 min-w-32 origin-(--transform-origin) overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md shadow-(color:--shadow-color) duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
2918
2923
  className
2919
2924
  ),
2920
2925
  ...props
@@ -3085,9 +3090,9 @@ function Field2({ label, description, error, children, className, style }) {
3085
3090
  // src/components/components/Flex/index.tsx
3086
3091
  var import_jsx_runtime56 = require("react/jsx-runtime");
3087
3092
  var gapClass = {
3088
- small: "gap-2",
3089
- middle: "gap-4",
3090
- large: "gap-6"
3093
+ small: "gap-(--flex-gap-sm)",
3094
+ middle: "gap-(--flex-gap-md)",
3095
+ large: "gap-(--flex-gap-lg)"
3091
3096
  };
3092
3097
  var justifyClass = {
3093
3098
  start: "justify-start",
@@ -3120,6 +3125,7 @@ function Flex({
3120
3125
  className: cn(
3121
3126
  "flex",
3122
3127
  direction === "vertical" && "flex-col",
3128
+ gap === void 0 && "gap-(--flex-gap)",
3123
3129
  typeof gap === "string" && gapClass[gap],
3124
3130
  justify && justifyClass[justify],
3125
3131
  align && alignClass[align],
@@ -3254,7 +3260,7 @@ function Grid({ columns = 1, gap, className, style, children }) {
3254
3260
  {
3255
3261
  "data-slot": "grid",
3256
3262
  "data-columns": cols,
3257
- className: cn("grid", className),
3263
+ className: cn("grid", gap === void 0 && "gap-(--grid-gap)", className),
3258
3264
  style: {
3259
3265
  gridTemplateColumns: `repeat(${cols}, minmax(0, 1fr))`,
3260
3266
  ...gap !== void 0 ? { gap } : {},
@@ -3295,7 +3301,7 @@ function Header({
3295
3301
  const hasLocales = locales !== void 0 && locales.length > 0;
3296
3302
  const hasUser = user !== void 0;
3297
3303
  const rootClass = cn(
3298
- "flex h-14 shrink-0 items-center gap-4 border-b bg-background px-4",
3304
+ "flex h-14 shrink-0 items-center gap-4 border-b bg-card px-4",
3299
3305
  className
3300
3306
  );
3301
3307
  if (!hasBrand && !dropdown && !hasMenu && !hasUser && !hasLocales) {
@@ -3340,7 +3346,7 @@ function HeaderDropdownArea({
3340
3346
  DropdownMenuTrigger,
3341
3347
  {
3342
3348
  "data-slot": "header-dropdown",
3343
- className: cn(menuItemClass, "outline-hidden"),
3349
+ className: cn(menuItemClass, "outline-hidden cursor-pointer"),
3344
3350
  children: [
3345
3351
  dropdown.label,
3346
3352
  /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react15.ChevronDownIcon, { className: "size-3.5", "aria-hidden": "true" })
@@ -3372,7 +3378,7 @@ function HeaderMenuArea({
3372
3378
  {
3373
3379
  "data-slot": "header-menu-item",
3374
3380
  "data-key": item.key,
3375
- className: cn(menuItemClass, "outline-hidden"),
3381
+ className: cn(menuItemClass, "outline-hidden cursor-pointer"),
3376
3382
  children: [
3377
3383
  item.icon ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
3378
3384
  item.label,
@@ -3404,7 +3410,7 @@ function HeaderMenuEntry({
3404
3410
  }) {
3405
3411
  if (item.children !== void 0 && item.children.length > 0) {
3406
3412
  return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(DropdownMenuSub, { children: [
3407
- /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(DropdownMenuSubTrigger, { "data-key": item.key, children: [
3413
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(DropdownMenuSubTrigger, { "data-key": item.key, className: "cursor-pointer", children: [
3408
3414
  item.icon ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
3409
3415
  item.label
3410
3416
  ] }),
@@ -3435,7 +3441,7 @@ function HeaderUserArea({
3435
3441
  DropdownMenuTrigger,
3436
3442
  {
3437
3443
  "data-slot": "header-user",
3438
- className: "flex items-center gap-2 rounded-md px-2 py-1.5 transition-colors outline-hidden hover:bg-accent/50",
3444
+ className: "flex items-center gap-2 rounded-md px-2 py-1.5 transition-colors outline-hidden hover:bg-accent/50 cursor-pointer",
3439
3445
  children: identity
3440
3446
  }
3441
3447
  ),
@@ -3456,7 +3462,7 @@ function HeaderLocalesArea({
3456
3462
  DropdownMenuTrigger,
3457
3463
  {
3458
3464
  "data-slot": "header-locales",
3459
- className: cn(menuItemClass, "outline-hidden"),
3465
+ className: cn(menuItemClass, "outline-hidden cursor-pointer"),
3460
3466
  children: [
3461
3467
  current?.label ?? locale,
3462
3468
  /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_lucide_react15.ChevronDownIcon, { className: "size-3.5", "aria-hidden": "true" })
@@ -3509,7 +3515,7 @@ function HoverCardContent({
3509
3515
  {
3510
3516
  "data-slot": "hover-card-content",
3511
3517
  className: cn(
3512
- "z-50 w-64 origin-(--transform-origin) rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md outline-hidden duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
3518
+ "z-50 w-64 origin-(--transform-origin) rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md shadow-(color:--shadow-color) outline-hidden duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
3513
3519
  className
3514
3520
  ),
3515
3521
  ...props
@@ -4029,15 +4035,17 @@ function RailTooltip({
4029
4035
 
4030
4036
  // src/components/components/Sidebar/index.tsx
4031
4037
  var import_runtime13 = require("@pactor-app/runtime");
4032
- var import_lucide_react17 = require("lucide-react");
4038
+ var import_react17 = require("react");
4039
+
4040
+ // src/ui/sidebar.tsx
4041
+ var React4 = __toESM(require("react"), 1);
4042
+ var import_class_variance_authority5 = require("class-variance-authority");
4043
+ var import_lucide_react18 = require("lucide-react");
4044
+
4045
+ // src/hooks/use-mobile.ts
4033
4046
  var import_react16 = require("react");
4034
- var import_jsx_runtime78 = require("react/jsx-runtime");
4035
- var SidebarDrawerContext = (0, import_react16.createContext)(null);
4036
- function useSidebarDrawer() {
4037
- return (0, import_react16.useContext)(SidebarDrawerContext);
4038
- }
4039
4047
  var MOBILE_MEDIA_QUERY = "(max-width: 767px)";
4040
- function useIsMobileViewport() {
4048
+ function useIsMobile() {
4041
4049
  const [isMobile, setIsMobile] = (0, import_react16.useState)(
4042
4050
  () => typeof window !== "undefined" && typeof window.matchMedia === "function" && window.matchMedia(MOBILE_MEDIA_QUERY).matches
4043
4051
  );
@@ -4055,6 +4063,512 @@ function useIsMobileViewport() {
4055
4063
  }, []);
4056
4064
  return isMobile;
4057
4065
  }
4066
+
4067
+ // src/ui/separator.tsx
4068
+ var import_separator = require("@base-ui/react/separator");
4069
+ var import_jsx_runtime78 = require("react/jsx-runtime");
4070
+ function Separator({
4071
+ className,
4072
+ orientation = "horizontal",
4073
+ decorative: _decorative,
4074
+ ...props
4075
+ }) {
4076
+ return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
4077
+ import_separator.Separator,
4078
+ {
4079
+ "data-slot": "separator",
4080
+ orientation,
4081
+ className: cn(
4082
+ "shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
4083
+ className
4084
+ ),
4085
+ ...props
4086
+ }
4087
+ );
4088
+ }
4089
+
4090
+ // src/ui/sheet.tsx
4091
+ var import_dialog3 = require("@base-ui/react/dialog");
4092
+ var import_lucide_react17 = require("lucide-react");
4093
+ var import_class_variance_authority4 = require("class-variance-authority");
4094
+ var import_jsx_runtime79 = require("react/jsx-runtime");
4095
+ function Sheet({
4096
+ ...props
4097
+ }) {
4098
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_dialog3.Dialog.Root, { "data-slot": "sheet", ...props });
4099
+ }
4100
+ function SheetPortal({
4101
+ ...props
4102
+ }) {
4103
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_dialog3.Dialog.Portal, { "data-slot": "sheet-portal", ...props });
4104
+ }
4105
+ function SheetOverlay({
4106
+ className,
4107
+ ...props
4108
+ }) {
4109
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
4110
+ import_dialog3.Dialog.Backdrop,
4111
+ {
4112
+ "data-slot": "sheet-overlay",
4113
+ className: cn(
4114
+ "fixed inset-0 z-50 bg-(--overlay-background) data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
4115
+ className
4116
+ ),
4117
+ ...props
4118
+ }
4119
+ );
4120
+ }
4121
+ var sheetVariants = (0, import_class_variance_authority4.cva)(
4122
+ "fixed z-50 flex flex-col gap-4 border-border bg-popover shadow-lg shadow-(color:--shadow-color) transition ease-in-out data-open:animate-in data-open:duration-300 data-closed:animate-out data-closed:duration-200",
4123
+ {
4124
+ variants: {
4125
+ side: {
4126
+ right: "inset-y-0 right-0 h-full w-3/4 border-l data-open:slide-in-from-right data-closed:slide-out-to-right sm:max-w-sm",
4127
+ left: "inset-y-0 left-0 h-full w-3/4 border-r data-open:slide-in-from-left data-closed:slide-out-to-left sm:max-w-sm",
4128
+ top: "inset-x-0 top-0 border-b data-open:slide-in-from-top data-closed:slide-out-to-top",
4129
+ bottom: "inset-x-0 bottom-0 border-t data-open:slide-in-from-bottom data-closed:slide-out-to-bottom"
4130
+ }
4131
+ },
4132
+ defaultVariants: {
4133
+ side: "right"
4134
+ }
4135
+ }
4136
+ );
4137
+ function SheetContent({
4138
+ className,
4139
+ children,
4140
+ side = "right",
4141
+ ...props
4142
+ }) {
4143
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(SheetPortal, { "data-slot": "sheet-portal", children: [
4144
+ /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(SheetOverlay, {}),
4145
+ /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(
4146
+ import_dialog3.Dialog.Popup,
4147
+ {
4148
+ "data-slot": "sheet-content",
4149
+ className: cn(sheetVariants({ side }), className),
4150
+ ...props,
4151
+ children: [
4152
+ children,
4153
+ /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(
4154
+ import_dialog3.Dialog.Close,
4155
+ {
4156
+ "data-slot": "sheet-close",
4157
+ render: /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
4158
+ "button",
4159
+ {
4160
+ type: "button",
4161
+ className: "absolute top-4 right-4 cursor-pointer rounded-xs opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"
4162
+ }
4163
+ ),
4164
+ children: [
4165
+ /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(import_lucide_react17.XIcon, {}),
4166
+ /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { className: "sr-only", children: "Close" })
4167
+ ]
4168
+ }
4169
+ )
4170
+ ]
4171
+ }
4172
+ )
4173
+ ] });
4174
+ }
4175
+ function SheetHeader({ className, ...props }) {
4176
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
4177
+ "div",
4178
+ {
4179
+ "data-slot": "sheet-header",
4180
+ className: cn("flex flex-col gap-1.5 p-4", className),
4181
+ ...props
4182
+ }
4183
+ );
4184
+ }
4185
+ function SheetTitle({
4186
+ className,
4187
+ ...props
4188
+ }) {
4189
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
4190
+ import_dialog3.Dialog.Title,
4191
+ {
4192
+ "data-slot": "sheet-title",
4193
+ className: cn("font-semibold text-foreground", className),
4194
+ ...props
4195
+ }
4196
+ );
4197
+ }
4198
+ function SheetDescription({
4199
+ className,
4200
+ ...props
4201
+ }) {
4202
+ return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
4203
+ import_dialog3.Dialog.Description,
4204
+ {
4205
+ "data-slot": "sheet-description",
4206
+ className: cn("text-sm text-muted-foreground", className),
4207
+ ...props
4208
+ }
4209
+ );
4210
+ }
4211
+
4212
+ // src/ui/skeleton.tsx
4213
+ var import_jsx_runtime80 = require("react/jsx-runtime");
4214
+ function Skeleton({ className, ...props }) {
4215
+ return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
4216
+ "div",
4217
+ {
4218
+ "data-slot": "skeleton",
4219
+ className: cn("animate-pulse rounded-md bg-muted", className),
4220
+ ...props
4221
+ }
4222
+ );
4223
+ }
4224
+
4225
+ // src/ui/sidebar.tsx
4226
+ var import_jsx_runtime81 = require("react/jsx-runtime");
4227
+ var SIDEBAR_COOKIE_NAME = "sidebar_state";
4228
+ var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
4229
+ var SIDEBAR_WIDTH = "16rem";
4230
+ var SIDEBAR_WIDTH_MOBILE = "18rem";
4231
+ var SIDEBAR_WIDTH_ICON = "3rem";
4232
+ var SIDEBAR_KEYBOARD_SHORTCUT = "b";
4233
+ var SidebarContext = React4.createContext(null);
4234
+ function useSidebar() {
4235
+ const context = React4.useContext(SidebarContext);
4236
+ if (!context) {
4237
+ throw new Error("useSidebar must be used within a SidebarProvider.");
4238
+ }
4239
+ return context;
4240
+ }
4241
+ function SidebarProvider({
4242
+ defaultOpen = true,
4243
+ open: openProp,
4244
+ onOpenChange: setOpenProp,
4245
+ className,
4246
+ style,
4247
+ children,
4248
+ ...props
4249
+ }) {
4250
+ const isMobile = useIsMobile();
4251
+ const [openMobile, setOpenMobile] = React4.useState(false);
4252
+ const [_open, _setOpen] = React4.useState(defaultOpen);
4253
+ const open = openProp ?? _open;
4254
+ const setOpen = React4.useCallback(
4255
+ (value) => {
4256
+ const openState = typeof value === "function" ? value(open) : value;
4257
+ if (setOpenProp) {
4258
+ setOpenProp(openState);
4259
+ } else {
4260
+ _setOpen(openState);
4261
+ }
4262
+ document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
4263
+ },
4264
+ [setOpenProp, open]
4265
+ );
4266
+ const toggleSidebar = React4.useCallback(() => {
4267
+ return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
4268
+ }, [isMobile, setOpen, setOpenMobile]);
4269
+ React4.useEffect(() => {
4270
+ const handleKeyDown = (event) => {
4271
+ if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
4272
+ event.preventDefault();
4273
+ toggleSidebar();
4274
+ }
4275
+ };
4276
+ window.addEventListener("keydown", handleKeyDown);
4277
+ return () => window.removeEventListener("keydown", handleKeyDown);
4278
+ }, [toggleSidebar]);
4279
+ const state = open ? "expanded" : "collapsed";
4280
+ const contextValue = React4.useMemo(
4281
+ () => ({
4282
+ state,
4283
+ open,
4284
+ setOpen,
4285
+ isMobile,
4286
+ openMobile,
4287
+ setOpenMobile,
4288
+ toggleSidebar
4289
+ }),
4290
+ [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
4291
+ );
4292
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(TooltipProvider, { delay: 0, children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4293
+ "div",
4294
+ {
4295
+ "data-slot": "sidebar-wrapper",
4296
+ style: {
4297
+ "--sidebar-width": SIDEBAR_WIDTH,
4298
+ "--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
4299
+ ...style
4300
+ },
4301
+ className: cn(
4302
+ "group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",
4303
+ className
4304
+ ),
4305
+ ...props,
4306
+ children
4307
+ }
4308
+ ) }) });
4309
+ }
4310
+ function SidebarRoot({
4311
+ side = "left",
4312
+ variant = "sidebar",
4313
+ collapsible = "offcanvas",
4314
+ className,
4315
+ children,
4316
+ ...props
4317
+ }) {
4318
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
4319
+ if (collapsible === "none") {
4320
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4321
+ "div",
4322
+ {
4323
+ "data-slot": "sidebar",
4324
+ className: cn(
4325
+ "flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",
4326
+ className
4327
+ ),
4328
+ ...props,
4329
+ children
4330
+ }
4331
+ );
4332
+ }
4333
+ if (isMobile) {
4334
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(
4335
+ SheetContent,
4336
+ {
4337
+ "data-sidebar": "sidebar",
4338
+ "data-slot": "sidebar",
4339
+ "data-mobile": "true",
4340
+ className: "w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",
4341
+ style: {
4342
+ "--sidebar-width": SIDEBAR_WIDTH_MOBILE
4343
+ },
4344
+ side,
4345
+ children: [
4346
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(SheetHeader, { className: "sr-only", children: [
4347
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(SheetTitle, { children: "Sidebar" }),
4348
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(SheetDescription, { children: "Displays the mobile sidebar." })
4349
+ ] }),
4350
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("div", { className: "flex h-full w-full flex-col", children })
4351
+ ]
4352
+ }
4353
+ ) });
4354
+ }
4355
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(
4356
+ "div",
4357
+ {
4358
+ className: "group peer hidden text-sidebar-foreground md:block",
4359
+ "data-state": state,
4360
+ "data-collapsible": state === "collapsed" ? collapsible : "",
4361
+ "data-variant": variant,
4362
+ "data-side": side,
4363
+ "data-slot": "sidebar",
4364
+ children: [
4365
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4366
+ "div",
4367
+ {
4368
+ "data-slot": "sidebar-gap",
4369
+ className: cn(
4370
+ "relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear",
4371
+ "group-data-[collapsible=offcanvas]:w-0",
4372
+ "group-data-[side=right]:rotate-180",
4373
+ variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"
4374
+ )
4375
+ }
4376
+ ),
4377
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4378
+ "div",
4379
+ {
4380
+ "data-slot": "sidebar-container",
4381
+ className: cn(
4382
+ "fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",
4383
+ side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
4384
+ variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
4385
+ className
4386
+ ),
4387
+ ...props,
4388
+ children: /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4389
+ "div",
4390
+ {
4391
+ "data-sidebar": "sidebar",
4392
+ "data-slot": "sidebar-inner",
4393
+ className: "flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm",
4394
+ children
4395
+ }
4396
+ )
4397
+ }
4398
+ )
4399
+ ]
4400
+ }
4401
+ );
4402
+ }
4403
+ function SidebarInset({ className, ...props }) {
4404
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4405
+ "main",
4406
+ {
4407
+ "data-slot": "sidebar-inset",
4408
+ className: cn(
4409
+ "relative flex w-full flex-1 flex-col bg-background",
4410
+ "md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2",
4411
+ className
4412
+ ),
4413
+ ...props
4414
+ }
4415
+ );
4416
+ }
4417
+ function SidebarHeader({ className, ...props }) {
4418
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4419
+ "div",
4420
+ {
4421
+ "data-slot": "sidebar-header",
4422
+ "data-sidebar": "header",
4423
+ className: cn("flex flex-col gap-2 p-2", className),
4424
+ ...props
4425
+ }
4426
+ );
4427
+ }
4428
+ function SidebarFooter({ className, ...props }) {
4429
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4430
+ "div",
4431
+ {
4432
+ "data-slot": "sidebar-footer",
4433
+ "data-sidebar": "footer",
4434
+ className: cn("flex flex-col gap-2 p-2", className),
4435
+ ...props
4436
+ }
4437
+ );
4438
+ }
4439
+ function SidebarContent({ className, ...props }) {
4440
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4441
+ "div",
4442
+ {
4443
+ "data-slot": "sidebar-content",
4444
+ "data-sidebar": "content",
4445
+ className: cn(
4446
+ "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
4447
+ className
4448
+ ),
4449
+ ...props
4450
+ }
4451
+ );
4452
+ }
4453
+ function renderAsChild(children, dataSlot, className, rest) {
4454
+ if (!React4.isValidElement(children)) {
4455
+ return null;
4456
+ }
4457
+ return React4.cloneElement(children, {
4458
+ "data-slot": dataSlot,
4459
+ className: cn(
4460
+ className,
4461
+ children.props.className
4462
+ ),
4463
+ ...rest
4464
+ });
4465
+ }
4466
+ function SidebarMenu({ className, ...props }) {
4467
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4468
+ "ul",
4469
+ {
4470
+ "data-slot": "sidebar-menu",
4471
+ "data-sidebar": "menu",
4472
+ className: cn("flex w-full min-w-0 flex-col gap-1", className),
4473
+ ...props
4474
+ }
4475
+ );
4476
+ }
4477
+ function SidebarMenuItem({ className, ...props }) {
4478
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4479
+ "li",
4480
+ {
4481
+ "data-slot": "sidebar-menu-item",
4482
+ "data-sidebar": "menu-item",
4483
+ className: cn("group/menu-item relative", className),
4484
+ ...props
4485
+ }
4486
+ );
4487
+ }
4488
+ var sidebarMenuButtonVariants = (0, import_class_variance_authority5.cva)(
4489
+ "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring 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-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
4490
+ {
4491
+ variants: {
4492
+ variant: {
4493
+ default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
4494
+ outline: "bg-sidebar shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"
4495
+ },
4496
+ size: {
4497
+ default: "h-8 text-sm",
4498
+ sm: "h-7 text-xs",
4499
+ lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!"
4500
+ }
4501
+ },
4502
+ defaultVariants: {
4503
+ variant: "default",
4504
+ size: "default"
4505
+ }
4506
+ }
4507
+ );
4508
+ function SidebarMenuButton({
4509
+ asChild = false,
4510
+ isActive = false,
4511
+ variant = "default",
4512
+ size = "default",
4513
+ tooltip,
4514
+ className,
4515
+ children,
4516
+ ...props
4517
+ }) {
4518
+ const { isMobile, state } = useSidebar();
4519
+ const cls = cn(sidebarMenuButtonVariants({ variant, size }), className);
4520
+ const button = asChild ? renderAsChild(children, "sidebar-menu-button", cls, {
4521
+ "data-sidebar": "menu-button",
4522
+ "data-size": size,
4523
+ "data-active": isActive,
4524
+ ...props
4525
+ }) : /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4526
+ "button",
4527
+ {
4528
+ "data-slot": "sidebar-menu-button",
4529
+ "data-sidebar": "menu-button",
4530
+ "data-size": size,
4531
+ "data-active": isActive,
4532
+ className: cls,
4533
+ ...props,
4534
+ children
4535
+ }
4536
+ );
4537
+ if (!tooltip) {
4538
+ return button;
4539
+ }
4540
+ if (typeof tooltip === "string") {
4541
+ tooltip = {
4542
+ children: tooltip
4543
+ };
4544
+ }
4545
+ return /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(Tooltip2, { children: [
4546
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(TooltipTrigger, { render: button }),
4547
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
4548
+ TooltipContent,
4549
+ {
4550
+ side: "right",
4551
+ align: "center",
4552
+ hidden: state !== "collapsed" || isMobile,
4553
+ ...tooltip
4554
+ }
4555
+ )
4556
+ ] });
4557
+ }
4558
+
4559
+ // src/components/components/Sidebar/index.tsx
4560
+ var import_jsx_runtime82 = require("react/jsx-runtime");
4561
+ function useSidebarDrawer() {
4562
+ try {
4563
+ const ctx = useSidebar();
4564
+ return {
4565
+ close: () => ctx.setOpenMobile(false),
4566
+ collapsed: ctx.state === "collapsed"
4567
+ };
4568
+ } catch {
4569
+ return null;
4570
+ }
4571
+ }
4058
4572
  function useOptionalRenderer() {
4059
4573
  try {
4060
4574
  return (0, import_runtime13.useRenderer)();
@@ -4062,16 +4576,61 @@ function useOptionalRenderer() {
4062
4576
  return null;
4063
4577
  }
4064
4578
  }
4065
- function SidebarContent({ content }) {
4579
+ function SidebarContentSlot({ content }) {
4066
4580
  const renderer = useOptionalRenderer();
4067
4581
  if (renderer !== null && typeof content === "object" && content !== null && !("$$typeof" in content) && "type" in content) {
4068
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_jsx_runtime78.Fragment, { children: renderer.renderChildren([content]) });
4582
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_jsx_runtime82.Fragment, { children: renderer.renderChildren([content]) });
4069
4583
  }
4070
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_jsx_runtime78.Fragment, { children: content });
4584
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_jsx_runtime82.Fragment, { children: content });
4071
4585
  }
4072
4586
  function isBrandObject(brand) {
4073
4587
  return typeof brand === "object" && brand !== null && !("$$typeof" in brand) && "title" in brand;
4074
4588
  }
4589
+ function BrandNode({ brand, collapsed }) {
4590
+ if (brand === void 0 || brand === null) {
4591
+ return null;
4592
+ }
4593
+ if (isBrandObject(brand)) {
4594
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(import_jsx_runtime82.Fragment, { children: [
4595
+ brand.logo ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4596
+ "img",
4597
+ {
4598
+ "data-slot": "sidebar-brand-logo",
4599
+ src: brand.logo,
4600
+ alt: brand.title,
4601
+ className: "size-6 shrink-0"
4602
+ }
4603
+ ) : null,
4604
+ collapsed ? null : /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "truncate text-sm font-semibold", children: brand.title })
4605
+ ] });
4606
+ }
4607
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_jsx_runtime82.Fragment, { children: brand });
4608
+ }
4609
+ function SidebarNavItems({ items }) {
4610
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SidebarMenu, { children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SidebarNavEntry, { item, depth: 0 }, item.href ?? item.label ?? index)) });
4611
+ }
4612
+ function SidebarNavEntry({ item, depth }) {
4613
+ const iconNode = item.icon ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Icon, { name: item.icon, size: "sm" }) : null;
4614
+ const labelNode = item.label;
4615
+ const button = item.href ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SidebarMenuButton, { asChild: true, tooltip: item.label, children: /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("a", { href: item.href, children: [
4616
+ iconNode,
4617
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { children: labelNode })
4618
+ ] }) }) : /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(SidebarMenuButton, { tooltip: item.label, children: [
4619
+ iconNode,
4620
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { children: labelNode })
4621
+ ] });
4622
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(SidebarMenuItem, { children: [
4623
+ button,
4624
+ item.children && item.children.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("div", { className: cn("ml-4"), children: item.children.map((child, index) => /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4625
+ SidebarNavEntry,
4626
+ {
4627
+ item: child,
4628
+ depth: depth + 1
4629
+ },
4630
+ child.href ?? child.label ?? index
4631
+ )) })
4632
+ ] });
4633
+ }
4075
4634
  function Sidebar({
4076
4635
  brand,
4077
4636
  items = [],
@@ -4084,215 +4643,125 @@ function Sidebar({
4084
4643
  className,
4085
4644
  style,
4086
4645
  children
4646
+ }) {
4647
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4648
+ SidebarProvider,
4649
+ {
4650
+ defaultOpen: true,
4651
+ className,
4652
+ style,
4653
+ children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4654
+ SidebarInner,
4655
+ {
4656
+ brand,
4657
+ items,
4658
+ content,
4659
+ sidebarFooter,
4660
+ collapsible,
4661
+ onCollapse,
4662
+ locationKey,
4663
+ drawer,
4664
+ children
4665
+ }
4666
+ )
4667
+ }
4668
+ );
4669
+ }
4670
+ function SidebarInner({
4671
+ brand,
4672
+ items = [],
4673
+ content,
4674
+ sidebarFooter,
4675
+ collapsible,
4676
+ onCollapse,
4677
+ locationKey,
4678
+ drawer = true,
4679
+ children
4087
4680
  }) {
4088
4681
  const { t } = (0, import_runtime13.useI18n)();
4089
- const isMobile = useIsMobileViewport();
4090
- const [drawerOpen, setDrawerOpen] = (0, import_react16.useState)(false);
4091
- const [collapsed, setCollapsed] = (0, import_react16.useState)(false);
4682
+ const isMobile = useIsMobile();
4683
+ const { state, setOpenMobile, toggleSidebar } = useSidebar();
4684
+ const collapsed = state === "collapsed";
4685
+ const prevCollapsed = (0, import_react17.useRef)(collapsed);
4686
+ (0, import_react17.useEffect)(() => {
4687
+ if (prevCollapsed.current !== collapsed) {
4688
+ prevCollapsed.current = collapsed;
4689
+ onCollapse?.(collapsed);
4690
+ }
4691
+ }, [collapsed, onCollapse]);
4692
+ (0, import_react17.useEffect)(() => {
4693
+ if (locationKey !== void 0) {
4694
+ setOpenMobile(false);
4695
+ }
4696
+ }, [locationKey, setOpenMobile]);
4092
4697
  const collapsedEffective = collapsible === true && collapsed && !isMobile;
4093
- const close = (0, import_react16.useCallback)(() => setDrawerOpen(false), []);
4094
- const toggleCollapsed = () => {
4095
- const next = !collapsed;
4096
- setCollapsed(next);
4097
- onCollapse?.(next);
4098
- };
4099
- const [trackedLocationKey, setTrackedLocationKey] = (0, import_react16.useState)(locationKey);
4100
- if (trackedLocationKey !== locationKey) {
4101
- setTrackedLocationKey(locationKey);
4102
- setDrawerOpen(false);
4103
- }
4104
- (0, import_react16.useEffect)(() => {
4105
- if (!drawerOpen) {
4106
- return;
4107
- }
4108
- const onKeyDown = (event) => {
4109
- if (event.key === "Escape") {
4110
- setDrawerOpen(false);
4111
- }
4112
- };
4113
- window.addEventListener("keydown", onKeyDown);
4114
- return () => window.removeEventListener("keydown", onKeyDown);
4115
- }, [drawerOpen]);
4116
- const brandNode = isBrandObject(brand) ? /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(import_jsx_runtime78.Fragment, { children: [
4117
- brand.logo ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
4118
- "img",
4698
+ const brandNode = /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(BrandNode, { brand, collapsed: collapsedEffective });
4699
+ const sidebarContent = content !== void 0 && content !== null ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SidebarContentSlot, { content }) : items.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SidebarNavItems, { items }) : null;
4700
+ return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(import_jsx_runtime82.Fragment, { children: [
4701
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
4702
+ SidebarRoot,
4119
4703
  {
4120
- "data-slot": "sidebar-brand-logo",
4121
- src: brand.logo,
4122
- alt: brand.title,
4123
- className: "size-6 shrink-0"
4704
+ collapsible: collapsible ? "icon" : "offcanvas",
4705
+ children: [
4706
+ (brand !== void 0 || collapsible) && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SidebarHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
4707
+ "div",
4708
+ {
4709
+ "data-slot": "sidebar-brand",
4710
+ className: cn(
4711
+ "flex h-14 shrink-0 items-center gap-2 px-2",
4712
+ collapsedEffective && "justify-center px-0"
4713
+ ),
4714
+ children: [
4715
+ collapsedEffective ? null : /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: brandNode }),
4716
+ collapsible && !isMobile && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4717
+ "button",
4718
+ {
4719
+ type: "button",
4720
+ "data-slot": "sidebar-collapse-trigger",
4721
+ "aria-label": collapsedEffective ? t("pactor.layout.expandSidebar") : t("pactor.layout.collapseSidebar"),
4722
+ "aria-expanded": !collapsedEffective,
4723
+ className: "flex size-8 shrink-0 cursor-pointer items-center justify-center rounded-md text-sidebar-foreground/60 transition-colors hover:bg-sidebar-accent hover:text-sidebar-foreground",
4724
+ onClick: toggleSidebar,
4725
+ children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Icon, { name: collapsedEffective ? "chevron-right" : "chevron-left", size: 16 })
4726
+ }
4727
+ )
4728
+ ]
4729
+ }
4730
+ ) }),
4731
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SidebarContent, { children: sidebarContent }),
4732
+ sidebarFooter !== void 0 && sidebarFooter !== null && !collapsedEffective && /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(SidebarFooter, { children: sidebarFooter })
4733
+ ]
4124
4734
  }
4125
- ) : null,
4126
- collapsedEffective ? null : /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "truncate text-sm font-semibold", children: brand.title })
4127
- ] }) : brand;
4128
- const collapseTrigger = collapsible && !isMobile ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
4129
- "button",
4130
- {
4131
- type: "button",
4132
- "data-slot": "sidebar-collapse-trigger",
4133
- "aria-label": collapsedEffective ? t("pactor.layout.expandSidebar") : t("pactor.layout.collapseSidebar"),
4134
- "aria-expanded": !collapsedEffective,
4135
- title: collapsedEffective ? t("pactor.layout.expandSidebar") : t("pactor.layout.collapseSidebar"),
4136
- className: cn(
4137
- "cursor-pointer flex size-8 shrink-0 items-center justify-center rounded-md text-sidebar-foreground/60 transition-colors hover:bg-sidebar-accent hover:text-sidebar-foreground"
4138
- ),
4139
- onClick: toggleCollapsed,
4140
- children: collapsedEffective ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_lucide_react17.ChevronRight, { "aria-hidden": true, className: "size-4" }) : /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_lucide_react17.ChevronLeft, { "aria-hidden": true, className: "size-4" })
4141
- }
4142
- ) : null;
4143
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
4144
- SidebarDrawerContext.Provider,
4145
- {
4146
- value: { close, collapsed: collapsedEffective },
4147
- children: /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(
4735
+ ),
4736
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(SidebarInset, { children: [
4737
+ drawer && /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
4148
4738
  "div",
4149
4739
  {
4150
- "data-slot": "sidebar-layout",
4151
- className: cn("flex min-h-screen w-full", className),
4152
- style,
4740
+ "data-slot": "sidebar-topbar",
4741
+ className: "flex h-14 items-center gap-2 border-b border-sidebar-border bg-sidebar px-3 md:hidden",
4153
4742
  children: [
4154
- drawer && drawerOpen ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
4155
- "div",
4743
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4744
+ "button",
4156
4745
  {
4157
- "data-slot": "sidebar-scrim",
4158
- "aria-hidden": true,
4159
- className: "fixed inset-0 z-40 bg-black/40 md:hidden",
4160
- onClick: close
4161
- }
4162
- ) : null,
4163
- /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(
4164
- "aside",
4165
- {
4166
- "data-slot": "sidebar",
4167
- "data-collapsed": collapsedEffective || void 0,
4168
- "data-open": drawerOpen ? "true" : "false",
4169
- inert: drawer && isMobile && !drawerOpen ? true : void 0,
4170
- className: cn(
4171
- "flex shrink-0 flex-col border-r border-sidebar-border bg-sidebar text-sidebar-foreground transition-[width,transform]",
4172
- collapsedEffective ? "w-16" : "w-60",
4173
- // 移动端覆盖抽屉:退出文档流,关闭时移出屏幕
4174
- drawer && "max-md:fixed max-md:inset-y-0 max-md:left-0 max-md:z-50 max-md:w-60 max-md:-translate-x-full max-md:data-[open=true]:translate-x-0"
4175
- ),
4176
- children: [
4177
- brand !== void 0 || collapseTrigger !== null ? /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(
4178
- "div",
4179
- {
4180
- "data-slot": "sidebar-brand",
4181
- className: cn(
4182
- "flex h-14 shrink-0 items-center gap-2 border-b border-sidebar-border px-4",
4183
- // 移动端品牌维持顶栏现状:抽屉内不重复渲染品牌行
4184
- "max-md:hidden",
4185
- collapsedEffective && "justify-center px-2"
4186
- ),
4187
- children: [
4188
- collapsedEffective ? null : /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: brandNode }),
4189
- collapseTrigger
4190
- ]
4191
- }
4192
- ) : null,
4193
- /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
4194
- "nav",
4195
- {
4196
- "data-slot": "sidebar-nav",
4197
- className: "min-h-0 flex-1 overflow-auto p-2",
4198
- children: content !== void 0 && content !== null ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(SidebarContent, { content }) : items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
4199
- SidebarEntry,
4200
- {
4201
- item,
4202
- depth: 0,
4203
- collapsed: collapsedEffective
4204
- },
4205
- item.href ?? item.label ?? index
4206
- ))
4207
- }
4208
- ),
4209
- sidebarFooter !== void 0 && sidebarFooter !== null && !collapsedEffective ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
4210
- "div",
4211
- {
4212
- "data-slot": "sidebar-footer",
4213
- className: "shrink-0 border-t border-sidebar-border p-2",
4214
- children: sidebarFooter
4215
- }
4216
- ) : null
4217
- ]
4746
+ type: "button",
4747
+ "data-slot": "sidebar-menu-trigger",
4748
+ "aria-label": t("pactor.layout.openNavigation"),
4749
+ className: "flex size-8 items-center justify-center rounded-md text-sidebar-foreground/60 transition-colors hover:bg-sidebar-accent hover:text-sidebar-foreground",
4750
+ onClick: toggleSidebar,
4751
+ children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(Icon, { name: "menu", size: 18 })
4218
4752
  }
4219
4753
  ),
4220
- /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("main", { "data-slot": "sidebar-content", className: "min-w-0 flex-1", children: [
4221
- drawer ? /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(
4222
- "div",
4223
- {
4224
- "data-slot": "sidebar-topbar",
4225
- className: "flex h-14 items-center gap-2 border-b border-sidebar-border bg-sidebar px-3 md:hidden",
4226
- children: [
4227
- /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
4228
- "button",
4229
- {
4230
- type: "button",
4231
- "data-slot": "sidebar-menu-trigger",
4232
- "aria-label": t("pactor.layout.openNavigation"),
4233
- "aria-expanded": drawerOpen,
4234
- className: "flex size-8 items-center justify-center rounded-md text-sidebar-foreground/60 transition-colors hover:bg-sidebar-accent hover:text-sidebar-foreground",
4235
- onClick: () => setDrawerOpen(true),
4236
- children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Icon, { name: "menu", size: 18 })
4237
- }
4238
- ),
4239
- brandNode
4240
- ]
4241
- }
4242
- ) : null,
4243
- children
4244
- ] })
4754
+ brandNode
4245
4755
  ]
4246
4756
  }
4247
- )
4248
- }
4249
- );
4250
- }
4251
- function SidebarEntry({
4252
- item,
4253
- depth,
4254
- collapsed
4255
- }) {
4256
- const entryClass = cn(
4257
- "flex w-full items-center gap-2 rounded-md px-3 py-2 text-left text-sm transition-colors",
4258
- "text-sidebar-foreground/70 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
4259
- collapsed && "justify-center px-0"
4260
- );
4261
- const indentStyle = !collapsed && depth > 0 ? { paddingLeft: 12 + depth * 16 } : void 0;
4262
- const labelNode = collapsed ? null : item.label;
4263
- const iconNode = item.icon ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(Icon, { name: item.icon, size: "sm" }) : null;
4264
- const entry = item.href ? /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)(
4265
- "a",
4266
- {
4267
- "data-slot": "sidebar-item",
4268
- href: item.href,
4269
- className: entryClass,
4270
- style: indentStyle,
4271
- children: [
4272
- iconNode,
4273
- labelNode
4274
- ]
4275
- }
4276
- ) : /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("span", { "data-slot": "sidebar-item", className: entryClass, style: indentStyle, children: [
4277
- iconNode,
4278
- labelNode
4279
- ] });
4280
- return /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("div", { "data-slot": "sidebar-entry", children: [
4281
- collapsed ? /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(RailTooltip, { label: item.label, children: entry }) : entry,
4282
- item.children?.map((child, index) => /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
4283
- SidebarEntry,
4284
- {
4285
- item: child,
4286
- depth: depth + 1,
4287
- collapsed
4288
- },
4289
- child.href ?? child.label ?? index
4290
- ))
4757
+ ),
4758
+ children
4759
+ ] })
4291
4760
  ] });
4292
4761
  }
4293
4762
 
4294
4763
  // src/components/components/Menu/index.tsx
4295
- var import_jsx_runtime79 = require("react/jsx-runtime");
4764
+ var import_jsx_runtime83 = require("react/jsx-runtime");
4296
4765
  function Menu2({
4297
4766
  items = [],
4298
4767
  mode = "inline",
@@ -4304,7 +4773,7 @@ function Menu2({
4304
4773
  const drawer = useSidebarDrawer();
4305
4774
  const collapsed = mode === "inline" && drawer?.collapsed === true;
4306
4775
  let previousGroup;
4307
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
4776
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
4308
4777
  "nav",
4309
4778
  {
4310
4779
  "data-slot": "menu",
@@ -4321,8 +4790,8 @@ function Menu2({
4321
4790
  groupLabel = item.group;
4322
4791
  }
4323
4792
  previousGroup = item.group;
4324
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { "data-slot": "menu-group-entry", children: [
4325
- groupLabel !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
4793
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { "data-slot": "menu-group-entry", children: [
4794
+ groupLabel !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
4326
4795
  "div",
4327
4796
  {
4328
4797
  "data-slot": "menu-group",
@@ -4330,7 +4799,7 @@ function Menu2({
4330
4799
  children: groupLabel
4331
4800
  }
4332
4801
  ),
4333
- /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
4802
+ /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
4334
4803
  MenuEntry,
4335
4804
  {
4336
4805
  item,
@@ -4355,7 +4824,7 @@ function MenuEntry({
4355
4824
  collapsed = false
4356
4825
  }) {
4357
4826
  const selected = item.key === selectedKey;
4358
- const button = /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)(
4827
+ const button = /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
4359
4828
  "button",
4360
4829
  {
4361
4830
  type: "button",
@@ -4366,7 +4835,7 @@ function MenuEntry({
4366
4835
  "flex w-full items-center gap-2 rounded-md text-sm transition-colors",
4367
4836
  mode === "horizontal" ? "px-3 py-2" : "px-3 py-2 text-left",
4368
4837
  collapsed && "justify-center px-0",
4369
- selected ? "bg-accent font-medium text-accent-foreground" : "text-muted-foreground hover:bg-accent/50 hover:text-foreground",
4838
+ selected ? "bg-(--menu-active-background) font-medium text-(--menu-active-foreground)" : "cursor-pointer text-muted-foreground hover:bg-(--menu-hover-background)/50 hover:text-foreground",
4370
4839
  item.disabled && "cursor-not-allowed opacity-50 hover:bg-transparent hover:text-muted-foreground"
4371
4840
  ),
4372
4841
  style: mode === "inline" && depth > 0 && !collapsed ? { paddingLeft: 12 + depth * 16 } : void 0,
@@ -4376,10 +4845,10 @@ function MenuEntry({
4376
4845
  }
4377
4846
  },
4378
4847
  children: [
4379
- item.icon ? /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
4380
- collapsed ? null : /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { className: "min-w-0 flex-1 truncate text-left", children: item.label }),
4381
- item.dot && !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime79.jsx)("span", { "data-slot": "menu-item-dot", className: "size-1.5 shrink-0 rounded-full bg-destructive" }) : null,
4382
- item.badge !== void 0 && !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
4848
+ item.icon ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
4849
+ collapsed ? null : /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "min-w-0 flex-1 truncate text-left", children: item.label }),
4850
+ item.dot && !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { "data-slot": "menu-item-dot", className: "size-1.5 shrink-0 rounded-full bg-destructive" }) : null,
4851
+ item.badge !== void 0 && !collapsed ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
4383
4852
  "span",
4384
4853
  {
4385
4854
  "data-slot": "menu-item-badge",
@@ -4390,9 +4859,9 @@ function MenuEntry({
4390
4859
  ]
4391
4860
  }
4392
4861
  );
4393
- return /* @__PURE__ */ (0, import_jsx_runtime79.jsxs)("div", { "data-slot": "menu-entry", "data-key": item.key, children: [
4394
- collapsed ? /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(RailTooltip, { label: item.label, children: button }) : button,
4395
- item.children?.map((child) => /* @__PURE__ */ (0, import_jsx_runtime79.jsx)(
4862
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { "data-slot": "menu-entry", "data-key": item.key, children: [
4863
+ collapsed ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(RailTooltip, { label: item.label, children: button }) : button,
4864
+ item.children?.map((child) => /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
4396
4865
  MenuEntry,
4397
4866
  {
4398
4867
  item: child,
@@ -4410,17 +4879,17 @@ function MenuEntry({
4410
4879
  // src/ui/menubar.tsx
4411
4880
  var import_menu2 = require("@base-ui/react/menu");
4412
4881
  var import_menubar = require("@base-ui/react/menubar");
4413
- var import_jsx_runtime80 = require("react/jsx-runtime");
4882
+ var import_jsx_runtime84 = require("react/jsx-runtime");
4414
4883
  function Menubar({
4415
4884
  className,
4416
4885
  ...props
4417
4886
  }) {
4418
- return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
4887
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
4419
4888
  import_menubar.Menubar,
4420
4889
  {
4421
4890
  "data-slot": "menubar",
4422
4891
  className: cn(
4423
- "flex h-9 items-center gap-1 rounded-md border border-border bg-background p-1 shadow-xs",
4892
+ "flex h-9 items-center gap-1 rounded-md border border-border bg-card p-1 shadow-xs",
4424
4893
  className
4425
4894
  ),
4426
4895
  ...props
@@ -4430,18 +4899,18 @@ function Menubar({
4430
4899
  function MenubarMenu({
4431
4900
  ...props
4432
4901
  }) {
4433
- return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_menu2.Menu.Root, { "data-slot": "menubar-menu", ...props });
4902
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(import_menu2.Menu.Root, { "data-slot": "menubar-menu", ...props });
4434
4903
  }
4435
4904
  function MenubarTrigger({
4436
4905
  className,
4437
4906
  ...props
4438
4907
  }) {
4439
- return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
4908
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
4440
4909
  import_menu2.Menu.Trigger,
4441
4910
  {
4442
4911
  "data-slot": "menubar-trigger",
4443
4912
  className: cn(
4444
- "flex cursor-pointer items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground",
4913
+ "flex cursor-pointer items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none hover:bg-(--menu-hover-background) hover:text-(--menu-hover-foreground) focus:bg-(--menu-hover-background) focus:text-(--menu-hover-foreground) data-open:bg-(--menu-active-background) data-open:text-(--menu-active-foreground)",
4445
4914
  className
4446
4915
  ),
4447
4916
  ...props
@@ -4455,19 +4924,19 @@ function MenubarContent({
4455
4924
  sideOffset = 8,
4456
4925
  ...props
4457
4926
  }) {
4458
- return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(import_menu2.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
4927
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(import_menu2.Menu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
4459
4928
  import_menu2.Menu.Positioner,
4460
4929
  {
4461
4930
  align,
4462
4931
  side,
4463
4932
  sideOffset,
4464
4933
  className: "isolate z-50",
4465
- children: /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
4934
+ children: /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
4466
4935
  import_menu2.Menu.Popup,
4467
4936
  {
4468
4937
  "data-slot": "menubar-content",
4469
4938
  className: cn(
4470
- "z-50 min-w-36 origin-(--transform-origin) overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
4939
+ "z-50 min-w-36 origin-(--transform-origin) overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md shadow-(color:--shadow-color) duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
4471
4940
  className
4472
4941
  ),
4473
4942
  ...props
@@ -4481,13 +4950,13 @@ function MenubarItem({
4481
4950
  variant = "default",
4482
4951
  ...props
4483
4952
  }) {
4484
- return /* @__PURE__ */ (0, import_jsx_runtime80.jsx)(
4953
+ return /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(
4485
4954
  import_menu2.Menu.Item,
4486
4955
  {
4487
4956
  "data-slot": "menubar-item",
4488
4957
  "data-variant": variant,
4489
4958
  className: cn(
4490
- "relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
4959
+ "relative flex cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none focus:bg-(--menu-hover-background) focus:text-(--menu-hover-foreground) data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
4491
4960
  className
4492
4961
  ),
4493
4962
  ...props
@@ -4496,17 +4965,17 @@ function MenubarItem({
4496
4965
  }
4497
4966
 
4498
4967
  // src/components/components/Menubar/index.tsx
4499
- var import_jsx_runtime81 = require("react/jsx-runtime");
4968
+ var import_jsx_runtime85 = require("react/jsx-runtime");
4500
4969
  function Menubar2({ menus = [], onSelect, className, style }) {
4501
- return /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(Menubar, { className, style, children: menus.map((menu) => /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(MenubarMenu, { children: [
4502
- /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(MenubarTrigger, { children: menu.label }),
4503
- /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(MenubarContent, { children: menu.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)(
4970
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(Menubar, { className, style, children: menus.map((menu) => /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(MenubarMenu, { children: [
4971
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(MenubarTrigger, { children: menu.label }),
4972
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(MenubarContent, { children: menu.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(
4504
4973
  MenubarItem,
4505
4974
  {
4506
4975
  disabled: item.disabled,
4507
4976
  onClick: () => onSelect?.(item.value),
4508
4977
  children: [
4509
- item.icon ? /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
4978
+ item.icon ? /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
4510
4979
  item.label
4511
4980
  ]
4512
4981
  },
@@ -4517,15 +4986,15 @@ function Menubar2({ menus = [], onSelect, className, style }) {
4517
4986
 
4518
4987
  // src/ui/navigation-menu.tsx
4519
4988
  var import_navigation_menu = require("@base-ui/react/navigation-menu");
4520
- var import_lucide_react18 = require("lucide-react");
4521
- var import_class_variance_authority4 = require("class-variance-authority");
4522
- var import_jsx_runtime82 = require("react/jsx-runtime");
4989
+ var import_lucide_react19 = require("lucide-react");
4990
+ var import_class_variance_authority6 = require("class-variance-authority");
4991
+ var import_jsx_runtime86 = require("react/jsx-runtime");
4523
4992
  function NavigationMenu({
4524
4993
  className,
4525
4994
  children,
4526
4995
  ...props
4527
4996
  }) {
4528
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
4997
+ return /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(
4529
4998
  import_navigation_menu.NavigationMenu.Root,
4530
4999
  {
4531
5000
  "data-slot": "navigation-menu",
@@ -4533,7 +5002,7 @@ function NavigationMenu({
4533
5002
  ...props,
4534
5003
  children: [
4535
5004
  children,
4536
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(NavigationMenuViewport, {})
5005
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(NavigationMenuViewport, {})
4537
5006
  ]
4538
5007
  }
4539
5008
  );
@@ -4542,7 +5011,7 @@ function NavigationMenuList({
4542
5011
  className,
4543
5012
  ...props
4544
5013
  }) {
4545
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
5014
+ return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
4546
5015
  import_navigation_menu.NavigationMenu.List,
4547
5016
  {
4548
5017
  "data-slot": "navigation-menu-list",
@@ -4555,7 +5024,7 @@ function NavigationMenuItem({
4555
5024
  className,
4556
5025
  ...props
4557
5026
  }) {
4558
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
5027
+ return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
4559
5028
  import_navigation_menu.NavigationMenu.Item,
4560
5029
  {
4561
5030
  "data-slot": "navigation-menu-item",
@@ -4564,15 +5033,15 @@ function NavigationMenuItem({
4564
5033
  }
4565
5034
  );
4566
5035
  }
4567
- var navigationMenuTriggerStyle = (0, import_class_variance_authority4.cva)(
4568
- "group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-open:bg-accent/50 data-open:text-accent-foreground"
5036
+ var navigationMenuTriggerStyle = (0, import_class_variance_authority6.cva)(
5037
+ "group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-md bg-transparent px-4 py-2 text-sm font-medium transition-colors hover:bg-(--menu-hover-background) hover:text-(--menu-hover-foreground) focus:bg-(--menu-hover-background) focus:text-(--menu-hover-foreground) focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-open:bg-(--menu-active-background)/50 data-open:text-(--menu-active-foreground)"
4569
5038
  );
4570
5039
  function NavigationMenuTrigger({
4571
5040
  className,
4572
5041
  children,
4573
5042
  ...props
4574
5043
  }) {
4575
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
5044
+ return /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(
4576
5045
  import_navigation_menu.NavigationMenu.Trigger,
4577
5046
  {
4578
5047
  "data-slot": "navigation-menu-trigger",
@@ -4580,8 +5049,8 @@ function NavigationMenuTrigger({
4580
5049
  ...props,
4581
5050
  children: [
4582
5051
  children,
4583
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
4584
- import_lucide_react18.ChevronDownIcon,
5052
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
5053
+ import_lucide_react19.ChevronDownIcon,
4585
5054
  {
4586
5055
  className: "relative top-px ml-1 size-3 transition-transform duration-200 group-data-open/navigation-menu-trigger:rotate-180",
4587
5056
  "aria-hidden": "true"
@@ -4595,7 +5064,7 @@ function NavigationMenuContent({
4595
5064
  className,
4596
5065
  ...props
4597
5066
  }) {
4598
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
5067
+ return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
4599
5068
  import_navigation_menu.NavigationMenu.Content,
4600
5069
  {
4601
5070
  "data-slot": "navigation-menu-content",
@@ -4608,21 +5077,21 @@ function NavigationMenuContent({
4608
5077
  );
4609
5078
  }
4610
5079
  function NavigationMenuViewport({ className }) {
4611
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_navigation_menu.NavigationMenu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
5080
+ return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_navigation_menu.NavigationMenu.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
4612
5081
  import_navigation_menu.NavigationMenu.Positioner,
4613
5082
  {
4614
5083
  side: "bottom",
4615
5084
  align: "start",
4616
5085
  className: "isolate z-50",
4617
- children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
5086
+ children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
4618
5087
  import_navigation_menu.NavigationMenu.Popup,
4619
5088
  {
4620
5089
  "data-slot": "navigation-menu-popup",
4621
5090
  className: cn(
4622
- "origin-(--transform-origin) overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
5091
+ "origin-(--transform-origin) overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md shadow-(color:--shadow-color) duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
4623
5092
  className
4624
5093
  ),
4625
- children: /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_navigation_menu.NavigationMenu.Viewport, { "data-slot": "navigation-menu-viewport" })
5094
+ children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(import_navigation_menu.NavigationMenu.Viewport, { "data-slot": "navigation-menu-viewport" })
4626
5095
  }
4627
5096
  )
4628
5097
  }
@@ -4632,12 +5101,12 @@ function NavigationMenuLink({
4632
5101
  className,
4633
5102
  ...props
4634
5103
  }) {
4635
- return /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
5104
+ return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
4636
5105
  import_navigation_menu.NavigationMenu.Link,
4637
5106
  {
4638
5107
  "data-slot": "navigation-menu-link",
4639
5108
  className: cn(
4640
- "flex flex-col gap-1 rounded-md p-2 text-sm transition-colors outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 data-active:bg-accent/50 data-active:text-accent-foreground [&_svg:not([class*='size-'])]:size-4",
5109
+ "flex flex-col gap-1 rounded-md p-2 text-sm transition-colors outline-none hover:bg-(--menu-hover-background) hover:text-(--menu-hover-foreground) focus:bg-(--menu-hover-background) focus:text-(--menu-hover-foreground) focus-visible:ring-[3px] focus-visible:ring-ring/50 data-active:bg-(--menu-active-background)/50 data-active:text-(--menu-active-foreground) [&_svg:not([class*='size-'])]:size-4",
4641
5110
  className
4642
5111
  ),
4643
5112
  ...props
@@ -4646,33 +5115,33 @@ function NavigationMenuLink({
4646
5115
  }
4647
5116
 
4648
5117
  // src/components/components/NavigationMenu/index.tsx
4649
- var import_jsx_runtime83 = require("react/jsx-runtime");
5118
+ var import_jsx_runtime87 = require("react/jsx-runtime");
4650
5119
  function NavigationMenu2({ items = [], className, style }) {
4651
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(NavigationMenu, { className, style, children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(NavigationMenuList, { children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(NavigationMenuItem, { value: `item-${index}`, children: item.children && item.children.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(import_jsx_runtime83.Fragment, { children: [
4652
- /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
5120
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(NavigationMenu, { className, style, children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(NavigationMenuList, { children: items.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(NavigationMenuItem, { value: `item-${index}`, children: item.children && item.children.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(import_jsx_runtime87.Fragment, { children: [
5121
+ /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
4653
5122
  NavigationMenuTrigger,
4654
5123
  {
4655
5124
  className: item.icon !== void 0 ? "gap-2" : void 0,
4656
5125
  children: [
4657
- item.icon ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
5126
+ item.icon ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
4658
5127
  item.label
4659
5128
  ]
4660
5129
  }
4661
5130
  ),
4662
- /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(NavigationMenuContent, { children: /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("ul", { className: "grid w-64 gap-1", children: item.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(NavigationMenuLink, { href: child.href, children: [
4663
- /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
5131
+ /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(NavigationMenuContent, { children: /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("ul", { className: "grid w-64 gap-1", children: item.children.map((child) => /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(NavigationMenuLink, { href: child.href, children: [
5132
+ /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
4664
5133
  "span",
4665
5134
  {
4666
5135
  className: child.icon !== void 0 ? "flex items-center gap-2 font-medium" : "font-medium",
4667
5136
  children: [
4668
- child.icon ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(Icon, { name: child.icon, size: "sm" }) : null,
5137
+ child.icon ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(Icon, { name: child.icon, size: "sm" }) : null,
4669
5138
  child.label
4670
5139
  ]
4671
5140
  }
4672
5141
  ),
4673
- child.description ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "text-muted-foreground", children: child.description }) : null
5142
+ child.description ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "text-muted-foreground", children: child.description }) : null
4674
5143
  ] }) }, child.href)) }) })
4675
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
5144
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(
4676
5145
  NavigationMenuLink,
4677
5146
  {
4678
5147
  href: item.href,
@@ -4681,7 +5150,7 @@ function NavigationMenu2({ items = [], className, style }) {
4681
5150
  item.icon !== void 0 && "gap-2"
4682
5151
  ),
4683
5152
  children: [
4684
- item.icon ? /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
5153
+ item.icon ? /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(Icon, { name: item.icon, size: "sm" }) : null,
4685
5154
  item.label
4686
5155
  ]
4687
5156
  }
@@ -4689,22 +5158,22 @@ function NavigationMenu2({ items = [], className, style }) {
4689
5158
  }
4690
5159
 
4691
5160
  // src/components/components/Page/index.tsx
4692
- var import_jsx_runtime84 = require("react/jsx-runtime");
5161
+ var import_jsx_runtime88 = require("react/jsx-runtime");
4693
5162
  function Page({ title, className, style, children }) {
4694
- return /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { "data-slot": "page", className: cn("p-6", className), style, children: [
4695
- title ? /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("h2", { "data-slot": "page-title", className: "mb-5 text-xl font-semibold", children: title }) : null,
4696
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { "data-slot": "page-content", className: "space-y-5", children })
5163
+ return /* @__PURE__ */ (0, import_jsx_runtime88.jsxs)("div", { "data-slot": "page", className: cn("p-6", className), style, children: [
5164
+ title ? /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("h2", { "data-slot": "page-title", className: "mb-5 text-xl font-semibold", children: title }) : null,
5165
+ /* @__PURE__ */ (0, import_jsx_runtime88.jsx)("div", { "data-slot": "page-content", className: "space-y-5", children })
4697
5166
  ] });
4698
5167
  }
4699
5168
 
4700
5169
  // src/components/components/Pagination/index.tsx
4701
- var import_react17 = require("react");
5170
+ var import_react18 = require("react");
4702
5171
 
4703
5172
  // src/ui/pagination.tsx
4704
- var import_lucide_react19 = require("lucide-react");
4705
- var import_jsx_runtime85 = require("react/jsx-runtime");
5173
+ var import_lucide_react20 = require("lucide-react");
5174
+ var import_jsx_runtime89 = require("react/jsx-runtime");
4706
5175
  function Pagination({ className, ...props }) {
4707
- return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
5176
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
4708
5177
  "nav",
4709
5178
  {
4710
5179
  role: "navigation",
@@ -4716,7 +5185,7 @@ function Pagination({ className, ...props }) {
4716
5185
  );
4717
5186
  }
4718
5187
  function PaginationContent({ className, ...props }) {
4719
- return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
5188
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
4720
5189
  "ul",
4721
5190
  {
4722
5191
  "data-slot": "pagination-content",
@@ -4726,7 +5195,7 @@ function PaginationContent({ className, ...props }) {
4726
5195
  );
4727
5196
  }
4728
5197
  function PaginationItem({ ...props }) {
4729
- return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("li", { "data-slot": "pagination-item", ...props });
5198
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("li", { "data-slot": "pagination-item", ...props });
4730
5199
  }
4731
5200
  function PaginationLink({
4732
5201
  className,
@@ -4734,7 +5203,7 @@ function PaginationLink({
4734
5203
  disabled,
4735
5204
  ...props
4736
5205
  }) {
4737
- return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(
5206
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
4738
5207
  "a",
4739
5208
  {
4740
5209
  "aria-current": isActive ? "page" : void 0,
@@ -4746,6 +5215,7 @@ function PaginationLink({
4746
5215
  buttonVariants({
4747
5216
  variant: isActive ? "outline" : "ghost"
4748
5217
  }),
5218
+ isActive && "border-(color:--pagination-active-border) bg-(--pagination-active-background) rounded-(--pagination-active-radius)",
4749
5219
  disabled && "pointer-events-none opacity-50",
4750
5220
  className
4751
5221
  ),
@@ -4757,15 +5227,15 @@ function PaginationPrevious({
4757
5227
  className,
4758
5228
  ...props
4759
5229
  }) {
4760
- return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(
5230
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(
4761
5231
  PaginationLink,
4762
5232
  {
4763
5233
  "aria-label": "Go to previous page",
4764
5234
  className: cn("gap-1 px-2.5 sm:pl-2.5", className),
4765
5235
  ...props,
4766
5236
  children: [
4767
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react19.ChevronLeftIcon, {}),
4768
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { className: "hidden sm:block", children: "Previous" })
5237
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_lucide_react20.ChevronLeftIcon, {}),
5238
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "hidden sm:block", children: "Previous" })
4769
5239
  ]
4770
5240
  }
4771
5241
  );
@@ -4774,21 +5244,21 @@ function PaginationNext({
4774
5244
  className,
4775
5245
  ...props
4776
5246
  }) {
4777
- return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(
5247
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(
4778
5248
  PaginationLink,
4779
5249
  {
4780
5250
  "aria-label": "Go to next page",
4781
5251
  className: cn("gap-1 px-2.5 sm:pr-2.5", className),
4782
5252
  ...props,
4783
5253
  children: [
4784
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { className: "hidden sm:block", children: "Next" }),
4785
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react19.ChevronRightIcon, {})
5254
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "hidden sm:block", children: "Next" }),
5255
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_lucide_react20.ChevronRightIcon, {})
4786
5256
  ]
4787
5257
  }
4788
5258
  );
4789
5259
  }
4790
5260
  function PaginationEllipsis({ className, ...props }) {
4791
- return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(
5261
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)(
4792
5262
  "span",
4793
5263
  {
4794
5264
  "aria-hidden": true,
@@ -4796,15 +5266,15 @@ function PaginationEllipsis({ className, ...props }) {
4796
5266
  className: cn("flex size-9 items-center justify-center", className),
4797
5267
  ...props,
4798
5268
  children: [
4799
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react19.MoreHorizontalIcon, { className: "size-4" }),
4800
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { className: "sr-only", children: "More pages" })
5269
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_lucide_react20.MoreHorizontalIcon, { className: "size-4" }),
5270
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "sr-only", children: "More pages" })
4801
5271
  ]
4802
5272
  }
4803
5273
  );
4804
5274
  }
4805
5275
 
4806
5276
  // src/components/components/Pagination/index.tsx
4807
- var import_jsx_runtime86 = require("react/jsx-runtime");
5277
+ var import_jsx_runtime90 = require("react/jsx-runtime");
4808
5278
  function pageItems(current, count) {
4809
5279
  if (count <= 7) {
4810
5280
  return Array.from({ length: count }, (_, i) => i + 1);
@@ -4825,7 +5295,7 @@ function Pagination2({
4825
5295
  className,
4826
5296
  style
4827
5297
  }) {
4828
- const [innerPage, setInnerPage] = (0, import_react17.useState)(1);
5298
+ const [innerPage, setInnerPage] = (0, import_react18.useState)(1);
4829
5299
  const pageCount = Math.max(1, Math.ceil(total / Math.max(1, pageSize)));
4830
5300
  const current = Math.min(Math.max(1, page ?? innerPage), pageCount);
4831
5301
  const goTo = (next) => {
@@ -4838,8 +5308,8 @@ function Pagination2({
4838
5308
  }
4839
5309
  onChange?.(target);
4840
5310
  };
4841
- return /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(Pagination, { className, style, children: /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)(PaginationContent, { children: [
4842
- /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(PaginationItem, { children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
5311
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(Pagination, { className, style, children: /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(PaginationContent, { children: [
5312
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(PaginationItem, { children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
4843
5313
  PaginationPrevious,
4844
5314
  {
4845
5315
  href: "#",
@@ -4850,7 +5320,7 @@ function Pagination2({
4850
5320
  }
4851
5321
  }
4852
5322
  ) }),
4853
- pageItems(current, pageCount).map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(PaginationItem, { children: item === "ellipsis" ? /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(PaginationEllipsis, {}) : /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
5323
+ pageItems(current, pageCount).map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(PaginationItem, { children: item === "ellipsis" ? /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(PaginationEllipsis, {}) : /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
4854
5324
  PaginationLink,
4855
5325
  {
4856
5326
  href: "#",
@@ -4862,7 +5332,7 @@ function Pagination2({
4862
5332
  children: item
4863
5333
  }
4864
5334
  ) }, item === "ellipsis" ? `ellipsis-${index}` : item)),
4865
- /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(PaginationItem, { children: /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
5335
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(PaginationItem, { children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
4866
5336
  PaginationNext,
4867
5337
  {
4868
5338
  href: "#",
@@ -4878,14 +5348,14 @@ function Pagination2({
4878
5348
 
4879
5349
  // src/components/components/Popover/index.tsx
4880
5350
  var import_runtime14 = require("@pactor-app/runtime");
4881
- var import_jsx_runtime87 = require("react/jsx-runtime");
5351
+ var import_jsx_runtime91 = require("react/jsx-runtime");
4882
5352
  function isDslNode3(value) {
4883
5353
  return typeof value === "object" && value !== null && typeof value.type === "string";
4884
5354
  }
4885
5355
  function Popover2({ content, children, className, style }) {
4886
5356
  const { renderChildren } = (0, import_runtime14.useRenderer)();
4887
- return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)(Popover, { children: [
4888
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
5357
+ return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(Popover, { children: [
5358
+ /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
4889
5359
  PopoverTrigger,
4890
5360
  {
4891
5361
  nativeButton: false,
@@ -4893,15 +5363,15 @@ function Popover2({ content, children, className, style }) {
4893
5363
  children
4894
5364
  }
4895
5365
  ),
4896
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(PopoverContent, { className, style, children: isDslNode3(content) ? renderChildren([content]) : content })
5366
+ /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(PopoverContent, { className, style, children: isDslNode3(content) ? renderChildren([content]) : content })
4897
5367
  ] });
4898
5368
  }
4899
5369
 
4900
5370
  // src/ui/progress.tsx
4901
5371
  var import_progress = require("@base-ui/react/progress");
4902
- var import_jsx_runtime88 = require("react/jsx-runtime");
5372
+ var import_jsx_runtime92 = require("react/jsx-runtime");
4903
5373
  function Progress({ className, ...props }) {
4904
- return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5374
+ return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
4905
5375
  import_progress.Progress.Root,
4906
5376
  {
4907
5377
  "data-slot": "progress",
@@ -4911,11 +5381,11 @@ function Progress({ className, ...props }) {
4911
5381
  );
4912
5382
  }
4913
5383
  function ProgressTrack({ className, ...props }) {
4914
- return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5384
+ return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
4915
5385
  import_progress.Progress.Track,
4916
5386
  {
4917
5387
  "data-slot": "progress-track",
4918
- className: cn("h-2 w-full overflow-hidden rounded-full bg-muted", className),
5388
+ className: cn("h-2 w-full overflow-hidden rounded-full bg-(--progress-track)", className),
4919
5389
  ...props
4920
5390
  }
4921
5391
  );
@@ -4924,12 +5394,12 @@ function ProgressIndicator({
4924
5394
  className,
4925
5395
  ...props
4926
5396
  }) {
4927
- return /* @__PURE__ */ (0, import_jsx_runtime88.jsx)(
5397
+ return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
4928
5398
  import_progress.Progress.Indicator,
4929
5399
  {
4930
5400
  "data-slot": "progress-indicator",
4931
5401
  className: cn(
4932
- "h-full bg-primary transition-[width] duration-300 ease-in-out",
5402
+ "h-full bg-(--progress-indicator) transition-[width] duration-300 ease-in-out",
4933
5403
  className
4934
5404
  ),
4935
5405
  ...props
@@ -4938,21 +5408,21 @@ function ProgressIndicator({
4938
5408
  }
4939
5409
 
4940
5410
  // src/components/components/Progress/index.tsx
4941
- var import_jsx_runtime89 = require("react/jsx-runtime");
5411
+ var import_jsx_runtime93 = require("react/jsx-runtime");
4942
5412
  function Progress2({ value, className, style }) {
4943
5413
  const resolved = typeof value === "number" && Number.isFinite(value) ? Math.min(100, Math.max(0, value)) : null;
4944
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(Progress, { value: resolved, className, style, children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(ProgressTrack, { children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(ProgressIndicator, {}) }) });
5414
+ return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(Progress, { value: resolved, className, style, children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(ProgressTrack, { children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(ProgressIndicator, {}) }) });
4945
5415
  }
4946
5416
 
4947
5417
  // src/components/components/RadioGroup/index.tsx
4948
- var import_react18 = require("react");
5418
+ var import_react19 = require("react");
4949
5419
 
4950
5420
  // src/ui/radio-group.tsx
4951
5421
  var import_radio = require("@base-ui/react/radio");
4952
5422
  var import_radio_group = require("@base-ui/react/radio-group");
4953
- var import_jsx_runtime90 = require("react/jsx-runtime");
5423
+ var import_jsx_runtime94 = require("react/jsx-runtime");
4954
5424
  function RadioGroup({ className, ...props }) {
4955
- return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
5425
+ return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
4956
5426
  import_radio_group.RadioGroup,
4957
5427
  {
4958
5428
  "data-slot": "radio-group",
@@ -4962,21 +5432,21 @@ function RadioGroup({ className, ...props }) {
4962
5432
  );
4963
5433
  }
4964
5434
  function RadioGroupItem({ className, ...props }) {
4965
- return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
5435
+ return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
4966
5436
  import_radio.Radio.Root,
4967
5437
  {
4968
5438
  "data-slot": "radio-group-item",
4969
5439
  className: cn(
4970
- "aspect-square size-4 shrink-0 cursor-pointer rounded-full border border-input shadow-xs transition-colors outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-checked:border-primary",
5440
+ "aspect-square size-4 shrink-0 cursor-pointer inline-flex items-center justify-center rounded-full border border-(color:--radio-border) shadow-xs transition-colors outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-checked:border-(color:--radio-checked)",
4971
5441
  className
4972
5442
  ),
4973
5443
  ...props,
4974
- children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
5444
+ children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
4975
5445
  import_radio.Radio.Indicator,
4976
5446
  {
4977
5447
  "data-slot": "radio-group-indicator",
4978
5448
  className: "flex items-center justify-center",
4979
- children: /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "size-2 rounded-full bg-primary" })
5449
+ children: /* @__PURE__ */ (0, import_jsx_runtime94.jsx)("span", { className: "size-2 rounded-full bg-(--radio-checked)" })
4980
5450
  }
4981
5451
  )
4982
5452
  }
@@ -4984,7 +5454,7 @@ function RadioGroupItem({ className, ...props }) {
4984
5454
  }
4985
5455
 
4986
5456
  // src/components/components/Form/form-item.tsx
4987
- var import_jsx_runtime91 = require("react/jsx-runtime");
5457
+ var import_jsx_runtime95 = require("react/jsx-runtime");
4988
5458
  function FieldShell({
4989
5459
  layout,
4990
5460
  label,
@@ -4994,14 +5464,14 @@ function FieldShell({
4994
5464
  style,
4995
5465
  children
4996
5466
  }) {
4997
- return /* @__PURE__ */ (0, import_jsx_runtime91.jsxs)(
5467
+ return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
4998
5468
  "div",
4999
5469
  {
5000
5470
  "data-slot": "form-item",
5001
5471
  className: cn(formItemClass(layout), className),
5002
5472
  style,
5003
5473
  children: [
5004
- label ? /* @__PURE__ */ (0, import_jsx_runtime91.jsx)(
5474
+ label ? /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
5005
5475
  "label",
5006
5476
  {
5007
5477
  htmlFor,
@@ -5010,14 +5480,14 @@ function FieldShell({
5010
5480
  }
5011
5481
  ) : null,
5012
5482
  children,
5013
- error ? /* @__PURE__ */ (0, import_jsx_runtime91.jsx)("div", { "data-slot": "form-error", className: "text-sm text-destructive", children: error }) : null
5483
+ error ? /* @__PURE__ */ (0, import_jsx_runtime95.jsx)("div", { "data-slot": "form-error", className: "text-sm text-destructive", children: error }) : null
5014
5484
  ]
5015
5485
  }
5016
5486
  );
5017
5487
  }
5018
5488
 
5019
5489
  // src/components/components/RadioGroup/index.tsx
5020
- var import_jsx_runtime92 = require("react/jsx-runtime");
5490
+ var import_jsx_runtime96 = require("react/jsx-runtime");
5021
5491
  function RadioGroup2({
5022
5492
  name,
5023
5493
  label,
@@ -5030,9 +5500,9 @@ function RadioGroup2({
5030
5500
  style
5031
5501
  }) {
5032
5502
  const form = useFormContext();
5033
- const controlId = (0, import_react18.useId)();
5503
+ const controlId = (0, import_react19.useId)();
5034
5504
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
5035
- (0, import_react18.useEffect)(() => {
5505
+ (0, import_react19.useEffect)(() => {
5036
5506
  if (inForm && form && name) {
5037
5507
  form.registerField(name, rules, value);
5038
5508
  return () => form.unregisterField(name);
@@ -5047,7 +5517,7 @@ function RadioGroup2({
5047
5517
  onChange?.(next);
5048
5518
  };
5049
5519
  const groupValue = current ?? "";
5050
- const group = /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
5520
+ const group = /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
5051
5521
  RadioGroup,
5052
5522
  {
5053
5523
  value: groupValue,
@@ -5058,8 +5528,8 @@ function RadioGroup2({
5058
5528
  style: inForm ? void 0 : style,
5059
5529
  children: options.map((option, index) => {
5060
5530
  const optionId = `${controlId}-${index}`;
5061
- return /* @__PURE__ */ (0, import_jsx_runtime92.jsxs)("span", { className: "inline-flex items-center gap-2", children: [
5062
- /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
5531
+ return /* @__PURE__ */ (0, import_jsx_runtime96.jsxs)("span", { className: "inline-flex items-center gap-2", children: [
5532
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
5063
5533
  RadioGroupItem,
5064
5534
  {
5065
5535
  id: optionId,
@@ -5067,13 +5537,13 @@ function RadioGroup2({
5067
5537
  disabled: option.disabled
5068
5538
  }
5069
5539
  ),
5070
- /* @__PURE__ */ (0, import_jsx_runtime92.jsx)("label", { htmlFor: optionId, className: "text-sm leading-none font-medium", children: option.label })
5540
+ /* @__PURE__ */ (0, import_jsx_runtime96.jsx)("label", { htmlFor: optionId, className: "text-sm leading-none font-medium", children: option.label })
5071
5541
  ] }, String(option.value));
5072
5542
  })
5073
5543
  }
5074
5544
  );
5075
5545
  if (inForm && form && name) {
5076
- return /* @__PURE__ */ (0, import_jsx_runtime92.jsx)(
5546
+ return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
5077
5547
  FieldShell,
5078
5548
  {
5079
5549
  layout: form.layout,
@@ -5090,17 +5560,17 @@ function RadioGroup2({
5090
5560
 
5091
5561
  // src/components/components/Resizable/index.tsx
5092
5562
  var import_runtime15 = require("@pactor-app/runtime");
5093
- var import_react19 = require("react");
5563
+ var import_react20 = require("react");
5094
5564
 
5095
5565
  // src/ui/resizable.tsx
5096
- var import_lucide_react20 = require("lucide-react");
5566
+ var import_lucide_react21 = require("lucide-react");
5097
5567
  var import_react_resizable_panels = require("react-resizable-panels");
5098
- var import_jsx_runtime93 = require("react/jsx-runtime");
5568
+ var import_jsx_runtime97 = require("react/jsx-runtime");
5099
5569
  function PanelGroup({
5100
5570
  className,
5101
5571
  ...props
5102
5572
  }) {
5103
- return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
5573
+ return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
5104
5574
  import_react_resizable_panels.Group,
5105
5575
  {
5106
5576
  "data-slot": "resizable-panel-group",
@@ -5113,14 +5583,14 @@ function PanelGroup({
5113
5583
  );
5114
5584
  }
5115
5585
  function Panel({ ...props }) {
5116
- return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_react_resizable_panels.Panel, { "data-slot": "resizable-panel", ...props });
5586
+ return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_react_resizable_panels.Panel, { "data-slot": "resizable-panel", ...props });
5117
5587
  }
5118
5588
  function ResizableHandle({
5119
5589
  withHandle,
5120
5590
  className,
5121
5591
  ...props
5122
5592
  }) {
5123
- return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
5593
+ return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
5124
5594
  import_react_resizable_panels.Separator,
5125
5595
  {
5126
5596
  "data-slot": "resizable-handle",
@@ -5129,13 +5599,13 @@ function ResizableHandle({
5129
5599
  className
5130
5600
  ),
5131
5601
  ...props,
5132
- children: withHandle ? /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-xs border border-border bg-border", children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_lucide_react20.GripVerticalIcon, { className: "size-2.5" }) }) : null
5602
+ children: withHandle ? /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-xs border border-border bg-border", children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react21.GripVerticalIcon, { className: "size-2.5" }) }) : null
5133
5603
  }
5134
5604
  );
5135
5605
  }
5136
5606
 
5137
5607
  // src/components/components/Resizable/index.tsx
5138
- var import_jsx_runtime94 = require("react/jsx-runtime");
5608
+ var import_jsx_runtime98 = require("react/jsx-runtime");
5139
5609
  function Resizable({
5140
5610
  panels = [],
5141
5611
  direction = "horizontal",
@@ -5143,12 +5613,14 @@ function Resizable({
5143
5613
  style
5144
5614
  }) {
5145
5615
  const { renderChildren } = (0, import_runtime15.useRenderer)();
5146
- return /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(PanelGroup, { orientation: direction, className, style, children: panels.map((panel, index) => /* @__PURE__ */ (0, import_jsx_runtime94.jsxs)(import_react19.Fragment, { children: [
5147
- index > 0 ? /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(ResizableHandle, { withHandle: true }) : null,
5148
- /* @__PURE__ */ (0, import_jsx_runtime94.jsx)(
5616
+ return /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(PanelGroup, { orientation: direction, className, style, children: panels.map((panel, index) => /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(import_react20.Fragment, { children: [
5617
+ index > 0 ? /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(ResizableHandle, { withHandle: true }) : null,
5618
+ /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
5149
5619
  Panel,
5150
5620
  {
5151
- defaultSize: typeof panel.defaultSize === "number" ? `${panel.defaultSize}%` : void 0,
5621
+ defaultSize: typeof panel.defaultSizePx === "number" ? `${panel.defaultSizePx}px` : typeof panel.defaultSize === "number" ? `${panel.defaultSize}%` : void 0,
5622
+ minSize: typeof panel.minSizePx === "number" ? `${panel.minSizePx}px` : void 0,
5623
+ maxSize: typeof panel.maxSizePx === "number" ? `${panel.maxSizePx}px` : void 0,
5152
5624
  children: renderChildren(panel.children)
5153
5625
  }
5154
5626
  )
@@ -5157,20 +5629,20 @@ function Resizable({
5157
5629
 
5158
5630
  // src/ui/scroll-area.tsx
5159
5631
  var import_scroll_area = require("@base-ui/react/scroll-area");
5160
- var import_jsx_runtime95 = require("react/jsx-runtime");
5632
+ var import_jsx_runtime99 = require("react/jsx-runtime");
5161
5633
  function ScrollArea({
5162
5634
  className,
5163
5635
  children,
5164
5636
  ...props
5165
5637
  }) {
5166
- return /* @__PURE__ */ (0, import_jsx_runtime95.jsxs)(
5638
+ return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(
5167
5639
  import_scroll_area.ScrollArea.Root,
5168
5640
  {
5169
5641
  "data-slot": "scroll-area",
5170
5642
  className: cn("relative overflow-hidden", className),
5171
5643
  ...props,
5172
5644
  children: [
5173
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
5645
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
5174
5646
  import_scroll_area.ScrollArea.Viewport,
5175
5647
  {
5176
5648
  "data-slot": "scroll-area-viewport",
@@ -5178,8 +5650,8 @@ function ScrollArea({
5178
5650
  children
5179
5651
  }
5180
5652
  ),
5181
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(ScrollBar, {}),
5182
- /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(import_scroll_area.ScrollArea.Corner, {})
5653
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(ScrollBar, {}),
5654
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(import_scroll_area.ScrollArea.Corner, {})
5183
5655
  ]
5184
5656
  }
5185
5657
  );
@@ -5189,7 +5661,7 @@ function ScrollBar({
5189
5661
  orientation = "vertical",
5190
5662
  ...props
5191
5663
  }) {
5192
- return /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
5664
+ return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
5193
5665
  import_scroll_area.ScrollArea.Scrollbar,
5194
5666
  {
5195
5667
  "data-slot": "scroll-area-scrollbar",
@@ -5201,7 +5673,7 @@ function ScrollBar({
5201
5673
  className
5202
5674
  ),
5203
5675
  ...props,
5204
- children: /* @__PURE__ */ (0, import_jsx_runtime95.jsx)(
5676
+ children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
5205
5677
  import_scroll_area.ScrollArea.Thumb,
5206
5678
  {
5207
5679
  "data-slot": "scroll-area-thumb",
@@ -5213,7 +5685,7 @@ function ScrollBar({
5213
5685
  }
5214
5686
 
5215
5687
  // src/components/components/ScrollArea/index.tsx
5216
- var import_jsx_runtime96 = require("react/jsx-runtime");
5688
+ var import_jsx_runtime100 = require("react/jsx-runtime");
5217
5689
  function ScrollArea2({
5218
5690
  maxHeight,
5219
5691
  maxWidth,
@@ -5221,7 +5693,7 @@ function ScrollArea2({
5221
5693
  style,
5222
5694
  children
5223
5695
  }) {
5224
- return /* @__PURE__ */ (0, import_jsx_runtime96.jsx)(
5696
+ return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
5225
5697
  ScrollArea,
5226
5698
  {
5227
5699
  className,
@@ -5233,17 +5705,17 @@ function ScrollArea2({
5233
5705
 
5234
5706
  // src/components/components/Select/index.tsx
5235
5707
  var import_runtime16 = require("@pactor-app/runtime");
5236
- var import_react20 = require("react");
5708
+ var import_react21 = require("react");
5237
5709
 
5238
5710
  // src/ui/select.tsx
5239
5711
  var import_select = require("@base-ui/react/select");
5240
- var import_lucide_react21 = require("lucide-react");
5241
- var import_jsx_runtime97 = require("react/jsx-runtime");
5712
+ var import_lucide_react22 = require("lucide-react");
5713
+ var import_jsx_runtime101 = require("react/jsx-runtime");
5242
5714
  var Select = import_select.Select.Root;
5243
5715
  function SelectValue({
5244
5716
  ...props
5245
5717
  }) {
5246
- return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_select.Select.Value, { "data-slot": "select-value", ...props });
5718
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_select.Select.Value, { "data-slot": "select-value", ...props });
5247
5719
  }
5248
5720
  function SelectTrigger({
5249
5721
  className,
@@ -5251,7 +5723,7 @@ function SelectTrigger({
5251
5723
  children,
5252
5724
  ...props
5253
5725
  }) {
5254
- return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
5726
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
5255
5727
  import_select.Select.Trigger,
5256
5728
  {
5257
5729
  "data-slot": "select-trigger",
@@ -5263,10 +5735,10 @@ function SelectTrigger({
5263
5735
  ...props,
5264
5736
  children: [
5265
5737
  children,
5266
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
5738
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
5267
5739
  import_select.Select.Icon,
5268
5740
  {
5269
- render: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react21.ChevronDownIcon, { className: "size-4 opacity-50" })
5741
+ render: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_lucide_react22.ChevronDownIcon, { className: "size-4 opacity-50" })
5270
5742
  }
5271
5743
  )
5272
5744
  ]
@@ -5282,7 +5754,7 @@ function SelectContent({
5282
5754
  alignItemWithTrigger = false,
5283
5755
  ...props
5284
5756
  }) {
5285
- return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_select.Select.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
5757
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_select.Select.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
5286
5758
  import_select.Select.Positioner,
5287
5759
  {
5288
5760
  side,
@@ -5290,19 +5762,19 @@ function SelectContent({
5290
5762
  align,
5291
5763
  alignItemWithTrigger,
5292
5764
  className: "isolate z-50",
5293
- children: /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
5765
+ children: /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
5294
5766
  import_select.Select.Popup,
5295
5767
  {
5296
5768
  "data-slot": "select-content",
5297
5769
  className: cn(
5298
- "relative z-50 max-h-96 min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border border-border bg-popover text-popover-foreground shadow-md duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
5770
+ "relative z-50 max-h-96 min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border border-border bg-popover text-popover-foreground shadow-md shadow-(color:--shadow-color) duration-200 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
5299
5771
  className
5300
5772
  ),
5301
5773
  ...props,
5302
5774
  children: [
5303
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(SelectScrollUpButton, {}),
5304
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_select.Select.List, { className: "p-1", children }),
5305
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(SelectScrollDownButton, {})
5775
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(SelectScrollUpButton, {}),
5776
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_select.Select.List, { className: "p-1", children }),
5777
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(SelectScrollDownButton, {})
5306
5778
  ]
5307
5779
  }
5308
5780
  )
@@ -5314,18 +5786,18 @@ function SelectItem({
5314
5786
  children,
5315
5787
  ...props
5316
5788
  }) {
5317
- return /* @__PURE__ */ (0, import_jsx_runtime97.jsxs)(
5789
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
5318
5790
  import_select.Select.Item,
5319
5791
  {
5320
5792
  "data-slot": "select-item",
5321
5793
  className: cn(
5322
- "relative flex w-full cursor-pointer items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-none select-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
5794
+ "relative flex w-full cursor-pointer items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-none select-none focus:bg-(--menu-hover-background) focus:text-(--menu-hover-foreground) data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
5323
5795
  className
5324
5796
  ),
5325
5797
  ...props,
5326
5798
  children: [
5327
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_select.Select.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react21.CheckIcon, { className: "size-4" }) }) }),
5328
- /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_select.Select.ItemText, { children })
5799
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_select.Select.ItemIndicator, { children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_lucide_react22.CheckIcon, { className: "size-4" }) }) }),
5800
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_select.Select.ItemText, { children })
5329
5801
  ]
5330
5802
  }
5331
5803
  );
@@ -5334,7 +5806,7 @@ function SelectScrollUpButton({
5334
5806
  className,
5335
5807
  ...props
5336
5808
  }) {
5337
- return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
5809
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
5338
5810
  import_select.Select.ScrollUpArrow,
5339
5811
  {
5340
5812
  "data-slot": "select-scroll-up-button",
@@ -5343,7 +5815,7 @@ function SelectScrollUpButton({
5343
5815
  className
5344
5816
  ),
5345
5817
  ...props,
5346
- children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react21.ChevronUpIcon, { className: "size-4" })
5818
+ children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_lucide_react22.ChevronUpIcon, { className: "size-4" })
5347
5819
  }
5348
5820
  );
5349
5821
  }
@@ -5351,7 +5823,7 @@ function SelectScrollDownButton({
5351
5823
  className,
5352
5824
  ...props
5353
5825
  }) {
5354
- return /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(
5826
+ return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
5355
5827
  import_select.Select.ScrollDownArrow,
5356
5828
  {
5357
5829
  "data-slot": "select-scroll-down-button",
@@ -5360,13 +5832,13 @@ function SelectScrollDownButton({
5360
5832
  className
5361
5833
  ),
5362
5834
  ...props,
5363
- children: /* @__PURE__ */ (0, import_jsx_runtime97.jsx)(import_lucide_react21.ChevronDownIcon, { className: "size-4" })
5835
+ children: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_lucide_react22.ChevronDownIcon, { className: "size-4" })
5364
5836
  }
5365
5837
  );
5366
5838
  }
5367
5839
 
5368
5840
  // src/components/components/Select/index.tsx
5369
- var import_jsx_runtime98 = require("react/jsx-runtime");
5841
+ var import_jsx_runtime102 = require("react/jsx-runtime");
5370
5842
  function Select2({
5371
5843
  name,
5372
5844
  label,
@@ -5382,9 +5854,9 @@ function Select2({
5382
5854
  }) {
5383
5855
  const form = useFormContext();
5384
5856
  const { t } = (0, import_runtime16.useI18n)();
5385
- const controlId = (0, import_react20.useId)();
5857
+ const controlId = (0, import_react21.useId)();
5386
5858
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
5387
- (0, import_react20.useEffect)(() => {
5859
+ (0, import_react21.useEffect)(() => {
5388
5860
  if (inForm && form && name) {
5389
5861
  form.registerField(name, rules, value);
5390
5862
  return () => form.unregisterField(name);
@@ -5400,13 +5872,13 @@ function Select2({
5400
5872
  onChange?.(next ?? void 0);
5401
5873
  };
5402
5874
  const inFormRoot = inForm === true;
5403
- const select = /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
5875
+ const select = /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
5404
5876
  "span",
5405
5877
  {
5406
5878
  className: cn("inline-flex items-center gap-1", !inFormRoot && className),
5407
5879
  style: inFormRoot ? void 0 : style,
5408
5880
  children: [
5409
- /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
5881
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
5410
5882
  Select,
5411
5883
  {
5412
5884
  items: options,
@@ -5415,8 +5887,8 @@ function Select2({
5415
5887
  disabled,
5416
5888
  name: inForm ? name : void 0,
5417
5889
  children: [
5418
- /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(SelectTrigger, { id: controlId, children: /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(SelectValue, { placeholder }) }),
5419
- /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(SelectContent, { children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
5890
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(SelectTrigger, { id: controlId, children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(SelectValue, { placeholder }) }),
5891
+ /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(SelectContent, { children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
5420
5892
  SelectItem,
5421
5893
  {
5422
5894
  value: option.value,
@@ -5428,7 +5900,7 @@ function Select2({
5428
5900
  ]
5429
5901
  }
5430
5902
  ),
5431
- allowClear && selectedValue !== null && !disabled ? /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
5903
+ allowClear && selectedValue !== null && !disabled ? /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
5432
5904
  "button",
5433
5905
  {
5434
5906
  type: "button",
@@ -5448,14 +5920,14 @@ function Select2({
5448
5920
  );
5449
5921
  if (inForm && form && name) {
5450
5922
  const error = form.errors[name];
5451
- return /* @__PURE__ */ (0, import_jsx_runtime98.jsxs)(
5923
+ return /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(
5452
5924
  "div",
5453
5925
  {
5454
5926
  "data-slot": "form-item",
5455
5927
  className: cn(formItemClass(form.layout), className),
5456
5928
  style,
5457
5929
  children: [
5458
- label ? /* @__PURE__ */ (0, import_jsx_runtime98.jsx)(
5930
+ label ? /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
5459
5931
  "label",
5460
5932
  {
5461
5933
  htmlFor: controlId,
@@ -5464,7 +5936,7 @@ function Select2({
5464
5936
  }
5465
5937
  ) : null,
5466
5938
  select,
5467
- error ? /* @__PURE__ */ (0, import_jsx_runtime98.jsx)("div", { "data-slot": "form-error", className: "text-sm text-destructive", children: error }) : null
5939
+ error ? /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { "data-slot": "form-error", className: "text-sm text-destructive", children: error }) : null
5468
5940
  ]
5469
5941
  }
5470
5942
  );
@@ -5472,146 +5944,14 @@ function Select2({
5472
5944
  return select;
5473
5945
  }
5474
5946
 
5475
- // src/ui/separator.tsx
5476
- var import_separator = require("@base-ui/react/separator");
5477
- var import_jsx_runtime99 = require("react/jsx-runtime");
5478
- function Separator({
5479
- className,
5480
- orientation = "horizontal",
5481
- decorative: _decorative,
5482
- ...props
5483
- }) {
5484
- return /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
5485
- import_separator.Separator,
5486
- {
5487
- "data-slot": "separator",
5488
- orientation,
5489
- className: cn(
5490
- "shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
5491
- className
5492
- ),
5493
- ...props
5494
- }
5495
- );
5496
- }
5497
-
5498
5947
  // src/components/components/Separator/index.tsx
5499
- var import_jsx_runtime100 = require("react/jsx-runtime");
5948
+ var import_jsx_runtime103 = require("react/jsx-runtime");
5500
5949
  function Separator2({ orientation = "horizontal", className, style }) {
5501
- return /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(Separator, { orientation, className, style });
5502
- }
5503
-
5504
- // src/ui/sheet.tsx
5505
- var import_dialog3 = require("@base-ui/react/dialog");
5506
- var import_lucide_react22 = require("lucide-react");
5507
- var import_class_variance_authority5 = require("class-variance-authority");
5508
- var import_jsx_runtime101 = require("react/jsx-runtime");
5509
- function Sheet({
5510
- ...props
5511
- }) {
5512
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_dialog3.Dialog.Root, { "data-slot": "sheet", ...props });
5513
- }
5514
- function SheetPortal({
5515
- ...props
5516
- }) {
5517
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_dialog3.Dialog.Portal, { "data-slot": "sheet-portal", ...props });
5518
- }
5519
- function SheetOverlay({
5520
- className,
5521
- ...props
5522
- }) {
5523
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
5524
- import_dialog3.Dialog.Backdrop,
5525
- {
5526
- "data-slot": "sheet-overlay",
5527
- className: cn(
5528
- "fixed inset-0 z-50 bg-black/50 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0",
5529
- className
5530
- ),
5531
- ...props
5532
- }
5533
- );
5534
- }
5535
- var sheetVariants = (0, import_class_variance_authority5.cva)(
5536
- "fixed z-50 flex flex-col gap-4 border-border bg-background shadow-lg transition ease-in-out data-open:animate-in data-open:duration-300 data-closed:animate-out data-closed:duration-200",
5537
- {
5538
- variants: {
5539
- side: {
5540
- right: "inset-y-0 right-0 h-full w-3/4 border-l data-open:slide-in-from-right data-closed:slide-out-to-right sm:max-w-sm",
5541
- left: "inset-y-0 left-0 h-full w-3/4 border-r data-open:slide-in-from-left data-closed:slide-out-to-left sm:max-w-sm",
5542
- top: "inset-x-0 top-0 border-b data-open:slide-in-from-top data-closed:slide-out-to-top",
5543
- bottom: "inset-x-0 bottom-0 border-t data-open:slide-in-from-bottom data-closed:slide-out-to-bottom"
5544
- }
5545
- },
5546
- defaultVariants: {
5547
- side: "right"
5548
- }
5549
- }
5550
- );
5551
- function SheetContent({
5552
- className,
5553
- children,
5554
- side = "right",
5555
- ...props
5556
- }) {
5557
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(SheetPortal, { "data-slot": "sheet-portal", children: [
5558
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(SheetOverlay, {}),
5559
- /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
5560
- import_dialog3.Dialog.Popup,
5561
- {
5562
- "data-slot": "sheet-content",
5563
- className: cn(sheetVariants({ side }), className),
5564
- ...props,
5565
- children: [
5566
- children,
5567
- /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)(
5568
- import_dialog3.Dialog.Close,
5569
- {
5570
- "data-slot": "sheet-close",
5571
- render: /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
5572
- "button",
5573
- {
5574
- type: "button",
5575
- className: "absolute top-4 right-4 cursor-pointer rounded-xs opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"
5576
- }
5577
- ),
5578
- children: [
5579
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(import_lucide_react22.XIcon, {}),
5580
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { className: "sr-only", children: "Close" })
5581
- ]
5582
- }
5583
- )
5584
- ]
5585
- }
5586
- )
5587
- ] });
5588
- }
5589
- function SheetHeader({ className, ...props }) {
5590
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
5591
- "div",
5592
- {
5593
- "data-slot": "sheet-header",
5594
- className: cn("flex flex-col gap-1.5 p-4", className),
5595
- ...props
5596
- }
5597
- );
5598
- }
5599
- function SheetTitle({
5600
- className,
5601
- ...props
5602
- }) {
5603
- return /* @__PURE__ */ (0, import_jsx_runtime101.jsx)(
5604
- import_dialog3.Dialog.Title,
5605
- {
5606
- "data-slot": "sheet-title",
5607
- className: cn("font-semibold text-foreground", className),
5608
- ...props
5609
- }
5610
- );
5950
+ return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(Separator, { orientation, className, style });
5611
5951
  }
5612
5952
 
5613
5953
  // src/components/components/Sheet/index.tsx
5614
- var import_jsx_runtime102 = require("react/jsx-runtime");
5954
+ var import_jsx_runtime104 = require("react/jsx-runtime");
5615
5955
  function Sheet2({
5616
5956
  title,
5617
5957
  open,
@@ -5621,7 +5961,7 @@ function Sheet2({
5621
5961
  className,
5622
5962
  style
5623
5963
  }) {
5624
- return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(
5964
+ return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
5625
5965
  Sheet,
5626
5966
  {
5627
5967
  open: open ?? false,
@@ -5630,9 +5970,9 @@ function Sheet2({
5630
5970
  onClose?.();
5631
5971
  }
5632
5972
  },
5633
- children: /* @__PURE__ */ (0, import_jsx_runtime102.jsxs)(SheetContent, { side, className, style, children: [
5634
- title ? /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(SheetHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(SheetTitle, { children: title }) }) : null,
5635
- /* @__PURE__ */ (0, import_jsx_runtime102.jsx)("div", { className: "flex-1 overflow-auto px-4", children })
5973
+ children: /* @__PURE__ */ (0, import_jsx_runtime104.jsxs)(SheetContent, { side, className, style, children: [
5974
+ title ? /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(SheetHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(SheetTitle, { children: title }) }) : null,
5975
+ /* @__PURE__ */ (0, import_jsx_runtime104.jsx)("div", { className: "flex-1 overflow-auto px-4", children })
5636
5976
  ] })
5637
5977
  }
5638
5978
  );
@@ -5640,7 +5980,7 @@ function Sheet2({
5640
5980
 
5641
5981
  // src/components/components/Sider/index.tsx
5642
5982
  var import_lucide_react23 = require("lucide-react");
5643
- var import_jsx_runtime103 = require("react/jsx-runtime");
5983
+ var import_jsx_runtime105 = require("react/jsx-runtime");
5644
5984
  function Sider({
5645
5985
  width = 200,
5646
5986
  collapsible,
@@ -5652,26 +5992,26 @@ function Sider({
5652
5992
  children
5653
5993
  }) {
5654
5994
  const current = collapsed ? collapsedWidth : width;
5655
- return /* @__PURE__ */ (0, import_jsx_runtime103.jsxs)(
5995
+ return /* @__PURE__ */ (0, import_jsx_runtime105.jsxs)(
5656
5996
  "aside",
5657
5997
  {
5658
5998
  "data-slot": "layout-sider",
5659
5999
  "data-collapsed": collapsed || void 0,
5660
6000
  className: cn(
5661
- "flex min-h-0 shrink-0 flex-col border-r bg-background transition-[width]",
6001
+ "flex min-h-0 shrink-0 flex-col border-r bg-sidebar transition-[width]",
5662
6002
  className
5663
6003
  ),
5664
6004
  style: { width: current, ...style },
5665
6005
  children: [
5666
- /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { className: "min-h-0 flex-1 overflow-auto", children }),
5667
- collapsible ? /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(
6006
+ /* @__PURE__ */ (0, import_jsx_runtime105.jsx)("div", { className: "min-h-0 flex-1 overflow-auto", children }),
6007
+ collapsible ? /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
5668
6008
  "button",
5669
6009
  {
5670
6010
  type: "button",
5671
6011
  "aria-label": collapsed ? "expand sider" : "collapse sider",
5672
6012
  className: "flex h-10 shrink-0 items-center justify-center border-t text-muted-foreground hover:text-foreground",
5673
6013
  onClick: () => onCollapse?.(!collapsed),
5674
- children: collapsed ? /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_lucide_react23.ChevronRight, { "aria-hidden": true, className: "size-4" }) : /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(import_lucide_react23.ChevronLeft, { "aria-hidden": true, className: "size-4" })
6014
+ children: collapsed ? /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_lucide_react23.ChevronRight, { "aria-hidden": true, className: "size-4" }) : /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(import_lucide_react23.ChevronLeft, { "aria-hidden": true, className: "size-4" })
5675
6015
  }
5676
6016
  ) : null
5677
6017
  ]
@@ -5679,21 +6019,8 @@ function Sider({
5679
6019
  );
5680
6020
  }
5681
6021
 
5682
- // src/ui/skeleton.tsx
5683
- var import_jsx_runtime104 = require("react/jsx-runtime");
5684
- function Skeleton({ className, ...props }) {
5685
- return /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
5686
- "div",
5687
- {
5688
- "data-slot": "skeleton",
5689
- className: cn("animate-pulse rounded-md bg-muted", className),
5690
- ...props
5691
- }
5692
- );
5693
- }
5694
-
5695
6022
  // src/components/components/Skeleton/index.tsx
5696
- var import_jsx_runtime105 = require("react/jsx-runtime");
6023
+ var import_jsx_runtime106 = require("react/jsx-runtime");
5697
6024
  var shapeDefaults = {
5698
6025
  line: { className: "h-4 w-full", style: {} },
5699
6026
  circle: { className: "rounded-full", style: { width: 40, height: 40 } },
@@ -5704,7 +6031,7 @@ function toSize(value) {
5704
6031
  }
5705
6032
  function Skeleton2({ shape = "line", width, height, className, style }) {
5706
6033
  const defaults = shapeDefaults[shape];
5707
- return /* @__PURE__ */ (0, import_jsx_runtime105.jsx)(
6034
+ return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
5708
6035
  Skeleton,
5709
6036
  {
5710
6037
  className: cn(defaults.className, className),
@@ -5719,13 +6046,13 @@ function Skeleton2({ shape = "line", width, height, className, style }) {
5719
6046
  }
5720
6047
 
5721
6048
  // src/components/components/Slider/index.tsx
5722
- var import_react21 = require("react");
6049
+ var import_react22 = require("react");
5723
6050
 
5724
6051
  // src/ui/slider.tsx
5725
6052
  var import_slider = require("@base-ui/react/slider");
5726
- var import_jsx_runtime106 = require("react/jsx-runtime");
6053
+ var import_jsx_runtime107 = require("react/jsx-runtime");
5727
6054
  function Slider({ className, ...props }) {
5728
- return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
6055
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
5729
6056
  import_slider.Slider.Root,
5730
6057
  {
5731
6058
  "data-slot": "slider",
@@ -5738,7 +6065,7 @@ function Slider({ className, ...props }) {
5738
6065
  );
5739
6066
  }
5740
6067
  function SliderControl({ className, ...props }) {
5741
- return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
6068
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
5742
6069
  import_slider.Slider.Control,
5743
6070
  {
5744
6071
  "data-slot": "slider-control",
@@ -5748,12 +6075,12 @@ function SliderControl({ className, ...props }) {
5748
6075
  );
5749
6076
  }
5750
6077
  function SliderTrack({ className, ...props }) {
5751
- return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
6078
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
5752
6079
  import_slider.Slider.Track,
5753
6080
  {
5754
6081
  "data-slot": "slider-track",
5755
6082
  className: cn(
5756
- "relative h-1.5 w-full grow overflow-hidden rounded-full bg-muted",
6083
+ "relative h-1.5 w-full grow overflow-hidden rounded-full bg-(--slider-track)",
5757
6084
  className
5758
6085
  ),
5759
6086
  ...props
@@ -5761,22 +6088,22 @@ function SliderTrack({ className, ...props }) {
5761
6088
  );
5762
6089
  }
5763
6090
  function SliderIndicator({ className, ...props }) {
5764
- return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
6091
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
5765
6092
  import_slider.Slider.Indicator,
5766
6093
  {
5767
6094
  "data-slot": "slider-indicator",
5768
- className: cn("absolute h-full bg-primary", className),
6095
+ className: cn("absolute h-full bg-(--slider-range)", className),
5769
6096
  ...props
5770
6097
  }
5771
6098
  );
5772
6099
  }
5773
6100
  function SliderThumb({ className, ...props }) {
5774
- return /* @__PURE__ */ (0, import_jsx_runtime106.jsx)(
6101
+ return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
5775
6102
  import_slider.Slider.Thumb,
5776
6103
  {
5777
6104
  "data-slot": "slider-thumb",
5778
6105
  className: cn(
5779
- "block size-4 shrink-0 cursor-grab rounded-full border border-primary bg-background shadow-sm transition-colors focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none active:cursor-grabbing disabled:pointer-events-none disabled:opacity-50",
6106
+ "block size-4 shrink-0 cursor-grab rounded-full border border-primary bg-(--slider-thumb) shadow-sm transition-colors focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none active:cursor-grabbing disabled:pointer-events-none disabled:opacity-50",
5780
6107
  className
5781
6108
  ),
5782
6109
  ...props
@@ -5785,7 +6112,7 @@ function SliderThumb({ className, ...props }) {
5785
6112
  }
5786
6113
 
5787
6114
  // src/components/components/Slider/index.tsx
5788
- var import_jsx_runtime107 = require("react/jsx-runtime");
6115
+ var import_jsx_runtime108 = require("react/jsx-runtime");
5789
6116
  function Slider2({
5790
6117
  name,
5791
6118
  label,
@@ -5801,7 +6128,7 @@ function Slider2({
5801
6128
  }) {
5802
6129
  const form = useFormContext();
5803
6130
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
5804
- (0, import_react21.useEffect)(() => {
6131
+ (0, import_react22.useEffect)(() => {
5805
6132
  if (inForm && form && name) {
5806
6133
  form.registerField(name, rules, value);
5807
6134
  return () => form.unregisterField(name);
@@ -5816,7 +6143,7 @@ function Slider2({
5816
6143
  }
5817
6144
  onChange?.(next);
5818
6145
  };
5819
- const slider = /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
6146
+ const slider = /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
5820
6147
  Slider,
5821
6148
  {
5822
6149
  value: numberValue,
@@ -5828,14 +6155,14 @@ function Slider2({
5828
6155
  onValueChange: handleChange,
5829
6156
  className: inForm ? void 0 : className,
5830
6157
  style: inForm ? void 0 : style,
5831
- children: /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(SliderControl, { children: /* @__PURE__ */ (0, import_jsx_runtime107.jsxs)(SliderTrack, { children: [
5832
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(SliderIndicator, {}),
5833
- /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(SliderThumb, {})
5834
- ] }) })
6158
+ children: /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(SliderControl, { children: [
6159
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(SliderTrack, { children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(SliderIndicator, {}) }),
6160
+ /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(SliderThumb, {})
6161
+ ] })
5835
6162
  }
5836
6163
  );
5837
6164
  if (inForm && form && name) {
5838
- return /* @__PURE__ */ (0, import_jsx_runtime107.jsx)(
6165
+ return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
5839
6166
  FieldShell,
5840
6167
  {
5841
6168
  layout: form.layout,
@@ -5852,12 +6179,12 @@ function Slider2({
5852
6179
 
5853
6180
  // src/components/components/Sonner/index.tsx
5854
6181
  var import_runtime17 = require("@pactor-app/runtime");
5855
- var import_react22 = require("react");
6182
+ var import_react23 = require("react");
5856
6183
 
5857
6184
  // src/ui/toast.tsx
5858
6185
  var import_toast = require("@base-ui/react/toast");
5859
6186
  var import_lucide_react24 = require("lucide-react");
5860
- var import_jsx_runtime108 = require("react/jsx-runtime");
6187
+ var import_jsx_runtime109 = require("react/jsx-runtime");
5861
6188
  var toastManager = import_toast.Toast.createToastManager();
5862
6189
  function toast(message, options = {}) {
5863
6190
  return toastManager.add({
@@ -5873,7 +6200,7 @@ var toastVariantClass = {
5873
6200
  };
5874
6201
  function ToasterViewport({ className }) {
5875
6202
  const { toasts } = import_toast.Toast.useToastManager();
5876
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(import_toast.Toast.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
6203
+ return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_toast.Toast.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
5877
6204
  import_toast.Toast.Viewport,
5878
6205
  {
5879
6206
  "data-slot": "toast-viewport",
@@ -5881,26 +6208,26 @@ function ToasterViewport({ className }) {
5881
6208
  "fixed top-4 right-4 z-[100] flex w-80 flex-col gap-2 outline-none",
5882
6209
  className
5883
6210
  ),
5884
- children: toasts.map((item) => /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
6211
+ children: toasts.map((item) => /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
5885
6212
  import_toast.Toast.Root,
5886
6213
  {
5887
6214
  toast: item,
5888
6215
  "data-slot": "toast",
5889
6216
  "data-type": item.type ?? "info",
5890
6217
  className: cn(
5891
- "rounded-md border border-border bg-popover px-4 py-3 text-sm text-popover-foreground shadow-md transition-[opacity,transform] duration-200 data-ending-style:animate-toast-out data-starting-style:animate-toast-in",
6218
+ "rounded-md border border-border bg-popover px-4 py-3 text-sm text-popover-foreground shadow-md shadow-(color:--shadow-color) transition-[opacity,transform] duration-200 data-ending-style:animate-toast-out data-starting-style:animate-toast-in",
5892
6219
  toastVariantClass[item.type ?? "info"] ?? toastVariantClass.info
5893
6220
  ),
5894
- children: /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)(import_toast.Toast.Content, { className: "flex items-start justify-between gap-2", children: [
5895
- /* @__PURE__ */ (0, import_jsx_runtime108.jsxs)("div", { className: "grid gap-0.5", children: [
5896
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
6221
+ children: /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)(import_toast.Toast.Content, { className: "flex items-start justify-between gap-2", children: [
6222
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsxs)("div", { className: "grid gap-0.5", children: [
6223
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
5897
6224
  import_toast.Toast.Title,
5898
6225
  {
5899
6226
  "data-slot": "toast-title",
5900
6227
  className: "font-medium"
5901
6228
  }
5902
6229
  ),
5903
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
6230
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
5904
6231
  import_toast.Toast.Description,
5905
6232
  {
5906
6233
  "data-slot": "toast-description",
@@ -5908,13 +6235,13 @@ function ToasterViewport({ className }) {
5908
6235
  }
5909
6236
  )
5910
6237
  ] }),
5911
- /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(
6238
+ /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(
5912
6239
  import_toast.Toast.Close,
5913
6240
  {
5914
6241
  "data-slot": "toast-close",
5915
6242
  "aria-label": "Close",
5916
6243
  className: "cursor-pointer rounded-xs opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none [&_svg]:size-3.5",
5917
- children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(import_lucide_react24.XIcon, {})
6244
+ children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_lucide_react24.XIcon, {})
5918
6245
  }
5919
6246
  )
5920
6247
  ] })
@@ -5925,14 +6252,14 @@ function ToasterViewport({ className }) {
5925
6252
  ) });
5926
6253
  }
5927
6254
  function Toaster({ className }) {
5928
- return /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(import_toast.Toast.Provider, { toastManager, children: /* @__PURE__ */ (0, import_jsx_runtime108.jsx)(ToasterViewport, { className }) });
6255
+ return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(import_toast.Toast.Provider, { toastManager, children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(ToasterViewport, { className }) });
5929
6256
  }
5930
6257
 
5931
6258
  // src/components/components/Sonner/index.tsx
5932
- var import_jsx_runtime109 = require("react/jsx-runtime");
6259
+ var import_jsx_runtime110 = require("react/jsx-runtime");
5933
6260
  function Sonner({ className, style }) {
5934
6261
  const { context } = (0, import_runtime17.useRenderer)();
5935
- (0, import_react22.useEffect)(() => {
6262
+ (0, import_react23.useEffect)(() => {
5936
6263
  const { actions } = context;
5937
6264
  if (actions.has("toast")) {
5938
6265
  return;
@@ -5946,14 +6273,14 @@ function Sonner({ className, style }) {
5946
6273
  return { ok: true };
5947
6274
  });
5948
6275
  }, [context]);
5949
- return /* @__PURE__ */ (0, import_jsx_runtime109.jsx)("div", { "data-slot": "sonner", className, style, children: /* @__PURE__ */ (0, import_jsx_runtime109.jsx)(Toaster, {}) });
6276
+ return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)("div", { "data-slot": "sonner", className, style, children: /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(Toaster, {}) });
5950
6277
  }
5951
6278
 
5952
6279
  // src/ui/spinner.tsx
5953
6280
  var import_lucide_react25 = require("lucide-react");
5954
- var import_jsx_runtime110 = require("react/jsx-runtime");
6281
+ var import_jsx_runtime111 = require("react/jsx-runtime");
5955
6282
  function Spinner({ className, ...props }) {
5956
- return /* @__PURE__ */ (0, import_jsx_runtime110.jsx)(
6283
+ return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(
5957
6284
  import_lucide_react25.Loader2Icon,
5958
6285
  {
5959
6286
  role: "status",
@@ -5966,50 +6293,50 @@ function Spinner({ className, ...props }) {
5966
6293
  }
5967
6294
 
5968
6295
  // src/components/components/Spinner/index.tsx
5969
- var import_jsx_runtime111 = require("react/jsx-runtime");
6296
+ var import_jsx_runtime112 = require("react/jsx-runtime");
5970
6297
  var sizeClass = {
5971
6298
  sm: "size-3",
5972
6299
  default: "size-4",
5973
6300
  lg: "size-6"
5974
6301
  };
5975
6302
  function Spinner2({ size = "default", className, style }) {
5976
- return /* @__PURE__ */ (0, import_jsx_runtime111.jsx)(Spinner, { className: cn(sizeClass[size], className), style });
6303
+ return /* @__PURE__ */ (0, import_jsx_runtime112.jsx)(Spinner, { className: cn(sizeClass[size], className), style });
5977
6304
  }
5978
6305
 
5979
6306
  // src/components/components/Statistic/index.tsx
5980
- var import_jsx_runtime112 = require("react/jsx-runtime");
6307
+ var import_jsx_runtime113 = require("react/jsx-runtime");
5981
6308
  function Statistic({ title, value, precision, suffix, className, style }) {
5982
6309
  const display = typeof value === "number" && precision !== void 0 ? value.toFixed(precision) : value;
5983
- return /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { "data-slot": "statistic", className: cn(className), style, children: [
5984
- title ? /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("div", { "data-slot": "statistic-title", className: "text-sm text-muted-foreground", children: title }) : null,
5985
- /* @__PURE__ */ (0, import_jsx_runtime112.jsxs)("div", { "data-slot": "statistic-value", className: "text-2xl font-bold tabular-nums", children: [
6310
+ return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("div", { "data-slot": "statistic", className: cn(className), style, children: [
6311
+ title ? /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("div", { "data-slot": "statistic-title", className: "text-sm text-muted-foreground", children: title }) : null,
6312
+ /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)("div", { "data-slot": "statistic-value", className: "text-2xl font-bold tabular-nums", children: [
5986
6313
  display,
5987
- suffix ? /* @__PURE__ */ (0, import_jsx_runtime112.jsx)("span", { className: "ml-1 text-sm font-normal text-muted-foreground", children: suffix }) : null
6314
+ suffix ? /* @__PURE__ */ (0, import_jsx_runtime113.jsx)("span", { className: "ml-1 text-sm font-normal text-muted-foreground", children: suffix }) : null
5988
6315
  ] })
5989
6316
  ] });
5990
6317
  }
5991
6318
 
5992
6319
  // src/components/components/Switch/index.tsx
5993
- var import_react23 = require("react");
6320
+ var import_react24 = require("react");
5994
6321
 
5995
6322
  // src/ui/switch.tsx
5996
6323
  var import_switch = require("@base-ui/react/switch");
5997
- var import_jsx_runtime113 = require("react/jsx-runtime");
6324
+ var import_jsx_runtime114 = require("react/jsx-runtime");
5998
6325
  function Switch({ className, ...props }) {
5999
- return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
6326
+ return /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
6000
6327
  import_switch.Switch.Root,
6001
6328
  {
6002
6329
  "data-slot": "switch",
6003
6330
  className: cn(
6004
- "inline-flex h-[1.15rem] w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-colors outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-checked:bg-primary data-unchecked:bg-input",
6331
+ "inline-flex h-[1.15rem] w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent shadow-xs transition-colors outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-checked:bg-(--switch-track-checked) data-unchecked:bg-(--switch-track)",
6005
6332
  className
6006
6333
  ),
6007
6334
  ...props,
6008
- children: /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
6335
+ children: /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
6009
6336
  import_switch.Switch.Thumb,
6010
6337
  {
6011
6338
  "data-slot": "switch-thumb",
6012
- className: "pointer-events-none block size-4 rounded-full bg-background transition-transform data-checked:translate-x-[calc(100%-2px)] data-unchecked:translate-x-0"
6339
+ className: "pointer-events-none block size-4 rounded-full bg-(--switch-thumb) transition-transform data-checked:translate-x-[calc(100%-2px)] data-unchecked:translate-x-0"
6013
6340
  }
6014
6341
  )
6015
6342
  }
@@ -6017,7 +6344,7 @@ function Switch({ className, ...props }) {
6017
6344
  }
6018
6345
 
6019
6346
  // src/components/components/Switch/index.tsx
6020
- var import_jsx_runtime114 = require("react/jsx-runtime");
6347
+ var import_jsx_runtime115 = require("react/jsx-runtime");
6021
6348
  function Switch2({
6022
6349
  name,
6023
6350
  label,
@@ -6029,9 +6356,9 @@ function Switch2({
6029
6356
  style
6030
6357
  }) {
6031
6358
  const form = useFormContext();
6032
- const controlId = (0, import_react23.useId)();
6359
+ const controlId = (0, import_react24.useId)();
6033
6360
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
6034
- (0, import_react23.useEffect)(() => {
6361
+ (0, import_react24.useEffect)(() => {
6035
6362
  if (inForm && form && name) {
6036
6363
  form.registerField(name, rules, value);
6037
6364
  return () => form.unregisterField(name);
@@ -6046,13 +6373,13 @@ function Switch2({
6046
6373
  }
6047
6374
  onChange?.(next);
6048
6375
  };
6049
- const control = /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(
6376
+ const control = /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
6050
6377
  "span",
6051
6378
  {
6052
6379
  className: cn("inline-flex items-center gap-2", !inForm && className),
6053
6380
  style: inForm ? void 0 : style,
6054
6381
  children: [
6055
- /* @__PURE__ */ (0, import_jsx_runtime114.jsx)(
6382
+ /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
6056
6383
  Switch,
6057
6384
  {
6058
6385
  id: controlId,
@@ -6062,12 +6389,12 @@ function Switch2({
6062
6389
  onCheckedChange: handleChange
6063
6390
  }
6064
6391
  ),
6065
- label ? /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("label", { htmlFor: controlId, className: "text-sm leading-none font-medium", children: label }) : null
6392
+ label ? /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("label", { htmlFor: controlId, className: "text-sm leading-none font-medium", children: label }) : null
6066
6393
  ]
6067
6394
  }
6068
6395
  );
6069
6396
  if (inForm && form && name) {
6070
- return /* @__PURE__ */ (0, import_jsx_runtime114.jsxs)(
6397
+ return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(
6071
6398
  "div",
6072
6399
  {
6073
6400
  "data-slot": "form-item",
@@ -6075,7 +6402,7 @@ function Switch2({
6075
6402
  style,
6076
6403
  children: [
6077
6404
  control,
6078
- form.errors[name] ? /* @__PURE__ */ (0, import_jsx_runtime114.jsx)("div", { "data-slot": "form-error", className: "mt-1.5 text-sm text-destructive", children: form.errors[name] }) : null
6405
+ form.errors[name] ? /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("div", { "data-slot": "form-error", className: "mt-1.5 text-sm text-destructive", children: form.errors[name] }) : null
6079
6406
  ]
6080
6407
  }
6081
6408
  );
@@ -6085,8 +6412,8 @@ function Switch2({
6085
6412
 
6086
6413
  // src/components/components/Table/index.tsx
6087
6414
  var import_runtime18 = require("@pactor-app/runtime");
6088
- var import_react24 = require("react");
6089
- var import_jsx_runtime115 = require("react/jsx-runtime");
6415
+ var import_react25 = require("react");
6416
+ var import_jsx_runtime116 = require("react/jsx-runtime");
6090
6417
  function renderCellValue2(value) {
6091
6418
  if (value === void 0 || value === null) {
6092
6419
  return "";
@@ -6108,7 +6435,7 @@ function Table3({
6108
6435
  }) {
6109
6436
  const { renderChildren } = (0, import_runtime18.useRenderer)();
6110
6437
  const { t } = (0, import_runtime18.useI18n)();
6111
- const [current, setCurrent] = (0, import_react24.useState)(1);
6438
+ const [current, setCurrent] = (0, import_react25.useState)(1);
6112
6439
  const pageSize = pagination === false ? void 0 : pagination?.pageSize;
6113
6440
  const total = dataSource.length;
6114
6441
  const pageCount = pageSize !== void 0 && pageSize > 0 ? Math.max(1, Math.ceil(total / pageSize)) : 1;
@@ -6117,17 +6444,17 @@ function Table3({
6117
6444
  setCurrent(page);
6118
6445
  onChange?.({ current: page, pageSize, total });
6119
6446
  };
6120
- return /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)("div", { "data-slot": "dsl-table", className: cn("relative", className), style, children: [
6121
- loading ? /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
6447
+ return /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)("div", { "data-slot": "dsl-table", className: cn("relative", className), style, children: [
6448
+ loading ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
6122
6449
  "div",
6123
6450
  {
6124
6451
  "data-slot": "table-loading",
6125
- className: "absolute inset-0 z-10 flex items-center justify-center bg-background/60 text-sm text-muted-foreground",
6452
+ className: "absolute inset-0 z-10 flex items-center justify-center bg-card/60 text-sm text-muted-foreground",
6126
6453
  children: t("pactor.table.loading")
6127
6454
  }
6128
6455
  ) : null,
6129
- /* @__PURE__ */ (0, import_jsx_runtime115.jsxs)(Table2, { children: [
6130
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(TableRow, { className: "hover:bg-transparent", children: columns.map((column, index) => /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
6456
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsxs)(Table2, { children: [
6457
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableRow, { className: "hover:bg-transparent", children: columns.map((column, index) => /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
6131
6458
  TableHead,
6132
6459
  {
6133
6460
  style: column.width !== void 0 ? { width: column.width } : void 0,
@@ -6135,7 +6462,7 @@ function Table3({
6135
6462
  },
6136
6463
  column.dataIndex ?? String(index)
6137
6464
  )) }) }),
6138
- /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(TableBody, { children: pageRows.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(TableRow, { className: "hover:bg-transparent", children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(TableCell, { colSpan: Math.max(1, columns.length), children: /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
6465
+ /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableBody, { children: pageRows.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableRow, { className: "hover:bg-transparent", children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableCell, { colSpan: Math.max(1, columns.length), children: /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
6139
6466
  "div",
6140
6467
  {
6141
6468
  "data-slot": "table-empty",
@@ -6144,10 +6471,10 @@ function Table3({
6144
6471
  }
6145
6472
  ) }) }) : pageRows.map((row, rowIndex) => {
6146
6473
  const key = row[rowKey];
6147
- return /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
6474
+ return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
6148
6475
  TableRow,
6149
6476
  {
6150
- children: columns.map((column, columnIndex) => /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(TableCell, { children: column.cell ? renderChildren([column.cell], { row, rowIndex }) : renderCellValue2(
6477
+ children: columns.map((column, columnIndex) => /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(TableCell, { children: column.cell ? renderChildren([column.cell], { row, rowIndex }) : renderCellValue2(
6151
6478
  column.dataIndex === void 0 ? void 0 : row[column.dataIndex]
6152
6479
  ) }, column.dataIndex ?? String(columnIndex)))
6153
6480
  },
@@ -6155,8 +6482,8 @@ function Table3({
6155
6482
  );
6156
6483
  }) })
6157
6484
  ] }),
6158
- pageSize !== void 0 && pageSize > 0 ? /* @__PURE__ */ (0, import_jsx_runtime115.jsx)("div", { "data-slot": "table-pagination", className: "mt-3 flex justify-end gap-1", children: Array.from({ length: pageCount }, (_, index) => index + 1).map(
6159
- (page) => /* @__PURE__ */ (0, import_jsx_runtime115.jsx)(
6485
+ pageSize !== void 0 && pageSize > 0 ? /* @__PURE__ */ (0, import_jsx_runtime116.jsx)("div", { "data-slot": "table-pagination", className: "mt-3 flex justify-end gap-1", children: Array.from({ length: pageCount }, (_, index) => index + 1).map(
6486
+ (page) => /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
6160
6487
  Button,
6161
6488
  {
6162
6489
  type: "button",
@@ -6177,12 +6504,12 @@ var import_runtime19 = require("@pactor-app/runtime");
6177
6504
 
6178
6505
  // src/ui/tabs.tsx
6179
6506
  var import_tabs = require("@base-ui/react/tabs");
6180
- var import_jsx_runtime116 = require("react/jsx-runtime");
6507
+ var import_jsx_runtime117 = require("react/jsx-runtime");
6181
6508
  function Tabs({
6182
6509
  className,
6183
6510
  ...props
6184
6511
  }) {
6185
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
6512
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
6186
6513
  import_tabs.Tabs.Root,
6187
6514
  {
6188
6515
  "data-slot": "tabs",
@@ -6195,7 +6522,7 @@ function TabsList({
6195
6522
  className,
6196
6523
  ...props
6197
6524
  }) {
6198
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
6525
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
6199
6526
  import_tabs.Tabs.List,
6200
6527
  {
6201
6528
  "data-slot": "tabs-list",
@@ -6211,12 +6538,12 @@ function TabsTrigger({
6211
6538
  className,
6212
6539
  ...props
6213
6540
  }) {
6214
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
6541
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
6215
6542
  import_tabs.Tabs.Tab,
6216
6543
  {
6217
6544
  "data-slot": "tabs-trigger",
6218
6545
  className: cn(
6219
- "inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground transition-colors focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-active:border-border data-active:bg-background data-active:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
6546
+ "inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap text-foreground transition-colors focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-active:border-border data-active:bg-card data-active:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
6220
6547
  className
6221
6548
  ),
6222
6549
  ...props
@@ -6227,7 +6554,7 @@ function TabsContent({
6227
6554
  className,
6228
6555
  ...props
6229
6556
  }) {
6230
- return /* @__PURE__ */ (0, import_jsx_runtime116.jsx)(
6557
+ return /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(
6231
6558
  import_tabs.Tabs.Panel,
6232
6559
  {
6233
6560
  "data-slot": "tabs-content",
@@ -6238,10 +6565,10 @@ function TabsContent({
6238
6565
  }
6239
6566
 
6240
6567
  // src/components/components/Tabs/index.tsx
6241
- var import_jsx_runtime117 = require("react/jsx-runtime");
6568
+ var import_jsx_runtime118 = require("react/jsx-runtime");
6242
6569
  function Tabs2({ items = [], activeKey, onChange, className, style }) {
6243
6570
  const { renderChildren } = (0, import_runtime19.useRenderer)();
6244
- return /* @__PURE__ */ (0, import_jsx_runtime117.jsxs)(
6571
+ return /* @__PURE__ */ (0, import_jsx_runtime118.jsxs)(
6245
6572
  Tabs,
6246
6573
  {
6247
6574
  value: activeKey,
@@ -6250,20 +6577,20 @@ function Tabs2({ items = [], activeKey, onChange, className, style }) {
6250
6577
  className,
6251
6578
  style,
6252
6579
  children: [
6253
- /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TabsList, { children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TabsTrigger, { value: item.key, children: item.label }, item.key)) }),
6254
- items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(TabsContent, { value: item.key, children: renderChildren(item.children) }, item.key))
6580
+ /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(TabsList, { children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(TabsTrigger, { value: item.key, children: item.label }, item.key)) }),
6581
+ items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(TabsContent, { value: item.key, children: renderChildren(item.children) }, item.key))
6255
6582
  ]
6256
6583
  }
6257
6584
  );
6258
6585
  }
6259
6586
 
6260
6587
  // src/components/components/Text/index.tsx
6261
- var import_jsx_runtime118 = require("react/jsx-runtime");
6588
+ var import_jsx_runtime119 = require("react/jsx-runtime");
6262
6589
  var typeClassMap = {
6263
6590
  default: "",
6264
6591
  secondary: "text-muted-foreground",
6265
- success: "text-green-600 dark:text-green-400",
6266
- warning: "text-amber-600 dark:text-amber-400",
6592
+ success: "text-success",
6593
+ warning: "text-warning",
6267
6594
  danger: "text-destructive"
6268
6595
  };
6269
6596
  function Text({
@@ -6277,7 +6604,7 @@ function Text({
6277
6604
  style,
6278
6605
  children
6279
6606
  }) {
6280
- return /* @__PURE__ */ (0, import_jsx_runtime118.jsx)(
6607
+ return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
6281
6608
  "span",
6282
6609
  {
6283
6610
  "data-slot": "text",
@@ -6297,8 +6624,8 @@ function Text({
6297
6624
  }
6298
6625
 
6299
6626
  // src/components/components/Textarea/index.tsx
6300
- var import_react25 = require("react");
6301
- var import_jsx_runtime119 = require("react/jsx-runtime");
6627
+ var import_react26 = require("react");
6628
+ var import_jsx_runtime120 = require("react/jsx-runtime");
6302
6629
  function Textarea2({
6303
6630
  name,
6304
6631
  label,
@@ -6312,9 +6639,9 @@ function Textarea2({
6312
6639
  style
6313
6640
  }) {
6314
6641
  const form = useFormContext();
6315
- const controlId = (0, import_react25.useId)();
6642
+ const controlId = (0, import_react26.useId)();
6316
6643
  const inForm = form?.inForm === true && typeof name === "string" && name !== "";
6317
- (0, import_react25.useEffect)(() => {
6644
+ (0, import_react26.useEffect)(() => {
6318
6645
  if (inForm && form && name) {
6319
6646
  form.registerField(name, rules, value);
6320
6647
  return () => form.unregisterField(name);
@@ -6323,7 +6650,7 @@ function Textarea2({
6323
6650
  });
6324
6651
  if (inForm && form && name) {
6325
6652
  const fieldValue = form.values[name];
6326
- return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
6653
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
6327
6654
  FieldShell,
6328
6655
  {
6329
6656
  layout: form.layout,
@@ -6332,7 +6659,7 @@ function Textarea2({
6332
6659
  error: form.errors[name],
6333
6660
  className,
6334
6661
  style,
6335
- children: /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
6662
+ children: /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
6336
6663
  Textarea,
6337
6664
  {
6338
6665
  id: controlId,
@@ -6349,7 +6676,7 @@ function Textarea2({
6349
6676
  }
6350
6677
  );
6351
6678
  }
6352
- return /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
6679
+ return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
6353
6680
  Textarea,
6354
6681
  {
6355
6682
  value: value ?? "",
@@ -6365,9 +6692,9 @@ function Textarea2({
6365
6692
 
6366
6693
  // src/ui/toggle.tsx
6367
6694
  var import_toggle = require("@base-ui/react/toggle");
6368
- var import_class_variance_authority6 = require("class-variance-authority");
6369
- var import_jsx_runtime120 = require("react/jsx-runtime");
6370
- var toggleVariants = (0, import_class_variance_authority6.cva)(
6695
+ var import_class_variance_authority7 = require("class-variance-authority");
6696
+ var import_jsx_runtime121 = require("react/jsx-runtime");
6697
+ var toggleVariants = (0, import_class_variance_authority7.cva)(
6371
6698
  "inline-flex cursor-pointer items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-colors outline-none hover:bg-muted hover:text-muted-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 data-pressed:bg-accent data-pressed:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
6372
6699
  {
6373
6700
  variants: {
@@ -6393,7 +6720,7 @@ function Toggle({
6393
6720
  size,
6394
6721
  ...props
6395
6722
  }) {
6396
- return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
6723
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
6397
6724
  import_toggle.Toggle,
6398
6725
  {
6399
6726
  "data-slot": "toggle",
@@ -6404,7 +6731,7 @@ function Toggle({
6404
6731
  }
6405
6732
 
6406
6733
  // src/components/components/Toggle/index.tsx
6407
- var import_jsx_runtime121 = require("react/jsx-runtime");
6734
+ var import_jsx_runtime122 = require("react/jsx-runtime");
6408
6735
  function Toggle2({
6409
6736
  text,
6410
6737
  pressed,
@@ -6415,7 +6742,7 @@ function Toggle2({
6415
6742
  className,
6416
6743
  style
6417
6744
  }) {
6418
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
6745
+ return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
6419
6746
  Toggle,
6420
6747
  {
6421
6748
  pressed,
@@ -6433,9 +6760,9 @@ function Toggle2({
6433
6760
  // src/ui/toggle-group.tsx
6434
6761
  var import_toggle3 = require("@base-ui/react/toggle");
6435
6762
  var import_toggle_group = require("@base-ui/react/toggle-group");
6436
- var React4 = __toESM(require("react"), 1);
6437
- var import_jsx_runtime122 = require("react/jsx-runtime");
6438
- var ToggleGroupContext = React4.createContext({
6763
+ var React5 = __toESM(require("react"), 1);
6764
+ var import_jsx_runtime123 = require("react/jsx-runtime");
6765
+ var ToggleGroupContext = React5.createContext({
6439
6766
  size: "default",
6440
6767
  variant: "default"
6441
6768
  });
@@ -6446,7 +6773,7 @@ function ToggleGroup({
6446
6773
  children,
6447
6774
  ...props
6448
6775
  }) {
6449
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
6776
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
6450
6777
  import_toggle_group.ToggleGroup,
6451
6778
  {
6452
6779
  "data-slot": "toggle-group",
@@ -6457,7 +6784,7 @@ function ToggleGroup({
6457
6784
  className
6458
6785
  ),
6459
6786
  ...props,
6460
- children: /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(ToggleGroupContext.Provider, { value: { variant, size }, children })
6787
+ children: /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(ToggleGroupContext.Provider, { value: { variant, size }, children })
6461
6788
  }
6462
6789
  );
6463
6790
  }
@@ -6468,8 +6795,8 @@ function ToggleGroupItem({
6468
6795
  size,
6469
6796
  ...props
6470
6797
  }) {
6471
- const context = React4.useContext(ToggleGroupContext);
6472
- return /* @__PURE__ */ (0, import_jsx_runtime122.jsx)(
6798
+ const context = React5.useContext(ToggleGroupContext);
6799
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
6473
6800
  import_toggle3.Toggle,
6474
6801
  {
6475
6802
  "data-slot": "toggle-group-item",
@@ -6490,7 +6817,7 @@ function ToggleGroupItem({
6490
6817
  }
6491
6818
 
6492
6819
  // src/components/components/ToggleGroup/index.tsx
6493
- var import_jsx_runtime123 = require("react/jsx-runtime");
6820
+ var import_jsx_runtime124 = require("react/jsx-runtime");
6494
6821
  function ToggleGroup2({
6495
6822
  options = [],
6496
6823
  value,
@@ -6510,7 +6837,7 @@ function ToggleGroup2({
6510
6837
  onChange?.(added ?? void 0);
6511
6838
  }
6512
6839
  };
6513
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
6840
+ return /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
6514
6841
  ToggleGroup,
6515
6842
  {
6516
6843
  value: groupValue,
@@ -6519,7 +6846,7 @@ function ToggleGroup2({
6519
6846
  onValueChange: (next) => handleChange(next),
6520
6847
  className,
6521
6848
  style,
6522
- children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
6849
+ children: options.map((option) => /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(
6523
6850
  ToggleGroupItem,
6524
6851
  {
6525
6852
  value: option.value,
@@ -6533,18 +6860,18 @@ function ToggleGroup2({
6533
6860
  }
6534
6861
 
6535
6862
  // src/components/components/Tooltip/index.tsx
6536
- var import_jsx_runtime124 = require("react/jsx-runtime");
6863
+ var import_jsx_runtime125 = require("react/jsx-runtime");
6537
6864
  function Tooltip3({ content, children, className, style }) {
6538
- return /* @__PURE__ */ (0, import_jsx_runtime124.jsxs)(Tooltip2, { children: [
6539
- /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(TooltipTrigger, { render: triggerWrapper("tooltip-trigger-wrap"), children }),
6540
- /* @__PURE__ */ (0, import_jsx_runtime124.jsx)(TooltipContent, { className, style, children: content })
6865
+ return /* @__PURE__ */ (0, import_jsx_runtime125.jsxs)(Tooltip2, { children: [
6866
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(TooltipTrigger, { render: triggerWrapper("tooltip-trigger-wrap"), children }),
6867
+ /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(TooltipContent, { className, style, children: content })
6541
6868
  ] });
6542
6869
  }
6543
6870
 
6544
6871
  // src/ui/typography.tsx
6545
- var import_class_variance_authority7 = require("class-variance-authority");
6546
- var import_jsx_runtime125 = require("react/jsx-runtime");
6547
- var typographyVariants = (0, import_class_variance_authority7.cva)("", {
6872
+ var import_class_variance_authority8 = require("class-variance-authority");
6873
+ var import_jsx_runtime126 = require("react/jsx-runtime");
6874
+ var typographyVariants = (0, import_class_variance_authority8.cva)("", {
6548
6875
  variants: {
6549
6876
  variant: {
6550
6877
  h1: "scroll-m-20 text-4xl font-extrabold tracking-tight text-balance",
@@ -6579,7 +6906,7 @@ var variantTagMap = {
6579
6906
  };
6580
6907
  function Typography({ className, variant = "p", ...props }) {
6581
6908
  const Tag2 = variantTagMap[variant ?? "p"];
6582
- return /* @__PURE__ */ (0, import_jsx_runtime125.jsx)(
6909
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
6583
6910
  Tag2,
6584
6911
  {
6585
6912
  "data-slot": "typography",
@@ -6591,18 +6918,18 @@ function Typography({ className, variant = "p", ...props }) {
6591
6918
  }
6592
6919
 
6593
6920
  // src/components/components/Typography/index.tsx
6594
- var import_jsx_runtime126 = require("react/jsx-runtime");
6921
+ var import_jsx_runtime127 = require("react/jsx-runtime");
6595
6922
  function Typography2({
6596
6923
  variant = "p",
6597
6924
  text,
6598
6925
  className,
6599
6926
  style
6600
6927
  }) {
6601
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(Typography, { variant, className, style, children: text });
6928
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Typography, { variant, className, style, children: text });
6602
6929
  }
6603
6930
 
6604
6931
  // src/components/register.ts
6605
- var shadcnComponents = {
6932
+ var builtinComponents = {
6606
6933
  Page,
6607
6934
  Grid,
6608
6935
  Flex,
@@ -6682,14 +7009,14 @@ var shadcnComponents = {
6682
7009
  // 图标(lucide 白名单)
6683
7010
  Icon
6684
7011
  };
6685
- function registerShadcnComponents(registry) {
6686
- for (const [type, component] of Object.entries(shadcnComponents)) {
7012
+ function registerBuiltinComponents(registry) {
7013
+ for (const [type, component] of Object.entries(builtinComponents)) {
6687
7014
  registry.register(type, component);
6688
7015
  }
6689
7016
  }
6690
- function createShadcnComponentRegistry() {
7017
+ function createComponentRegistry() {
6691
7018
  const registry = new import_core2.Registry("ComponentRegistry");
6692
- registerShadcnComponents(registry);
7019
+ registerBuiltinComponents(registry);
6693
7020
  return registry;
6694
7021
  }
6695
7022
  // Annotate the CommonJS export names for ESM import in node:
@@ -6707,6 +7034,7 @@ function createShadcnComponentRegistry() {
6707
7034
  Card,
6708
7035
  Carousel,
6709
7036
  Chart,
7037
+ ChatInput,
6710
7038
  Checkbox,
6711
7039
  Collapsible,
6712
7040
  Combobox,
@@ -6765,10 +7093,10 @@ function createShadcnComponentRegistry() {
6765
7093
  ToggleGroup,
6766
7094
  Tooltip,
6767
7095
  Typography,
6768
- createShadcnComponentRegistry,
7096
+ builtinComponents,
7097
+ createComponentRegistry,
6769
7098
  normalizeIconName,
6770
- registerShadcnComponents,
6771
- shadcnComponents,
7099
+ registerBuiltinComponents,
6772
7100
  useFormContext,
6773
7101
  useSidebarDrawer
6774
7102
  });