@page-speed/forms 0.7.2 → 0.7.4

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.
@@ -1,12 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunkWQ4HD5UD_cjs = require('./chunk-WQ4HD5UD.cjs');
3
+ var chunkPDMFWP5I_cjs = require('./chunk-PDMFWP5I.cjs');
4
4
  var React19 = require('react');
5
5
  var radixUi = require('radix-ui');
6
6
  var cmdk = require('cmdk');
7
7
  var reactDirection = require('@radix-ui/react-direction');
8
8
  var reactSlot = require('@radix-ui/react-slot');
9
9
  var reactDayPicker = require('react-day-picker');
10
+ var icon = require('@page-speed/icon');
10
11
 
11
12
  function _interopNamespace(e) {
12
13
  if (e && e.__esModule) return e;
@@ -33,9 +34,9 @@ function Textarea({ className, ...props }) {
33
34
  "textarea",
34
35
  {
35
36
  "data-slot": "textarea",
36
- className: chunkWQ4HD5UD_cjs.cn(
37
+ className: chunkPDMFWP5I_cjs.cn(
37
38
  // Core structure - uses CSS variables only
38
- "flex field-sizing-content min-h-16 w-full rounded-md border border-input",
39
+ "flex field-sizing-content min-h-32 w-full rounded-md border border-input",
39
40
  "bg-transparent px-3 py-2 text-base shadow-xs",
40
41
  "transition-[color,box-shadow] outline-none md:text-sm",
41
42
  // Focus state - uses ring-ring CSS variable
@@ -86,7 +87,7 @@ function TextArea({
86
87
  placeholder,
87
88
  disabled,
88
89
  required,
89
- className: chunkWQ4HD5UD_cjs.cn(
90
+ className: chunkPDMFWP5I_cjs.cn(
90
91
  // Valid value indicator - ring-2 when has value and no error
91
92
  !error && hasValue && "ring-2 ring-ring",
92
93
  // Error state - handled by Textarea component via aria-invalid
@@ -113,7 +114,7 @@ function Checkbox({
113
114
  radixUi.Checkbox.Root,
114
115
  {
115
116
  "data-slot": "checkbox",
116
- className: chunkWQ4HD5UD_cjs.cn(
117
+ className: chunkPDMFWP5I_cjs.cn(
117
118
  // Core structure - uses CSS variables
118
119
  "peer size-4 shrink-0 rounded-[4px] border border-input bg-transparent shadow-xs",
119
120
  "transition-shadow outline-none",
@@ -126,6 +127,7 @@ function Checkbox({
126
127
  "aria-invalid:border-destructive aria-invalid:ring-destructive/20",
127
128
  // Disabled state
128
129
  "disabled:cursor-not-allowed disabled:opacity-50",
130
+ " mt-1",
129
131
  className
130
132
  ),
131
133
  ...props
@@ -218,10 +220,10 @@ function Checkbox2({
218
220
  return /* @__PURE__ */ React19__namespace.createElement("div", { className }, checkbox);
219
221
  }
220
222
  return /* @__PURE__ */ React19__namespace.createElement("div", { className: "space-y-0", "data-invalid": error || void 0 }, /* @__PURE__ */ React19__namespace.createElement(
221
- chunkWQ4HD5UD_cjs.FieldLabel,
223
+ chunkPDMFWP5I_cjs.FieldLabel,
222
224
  {
223
225
  htmlFor: checkboxId,
224
- className: chunkWQ4HD5UD_cjs.cn(
226
+ className: chunkPDMFWP5I_cjs.cn(
225
227
  "flex gap-3 p-3 duration-200 select-auto font-normal leading-normal",
226
228
  showChoiceCard && "border rounded-lg hover:ring-2 hover:ring-ring/50",
227
229
  showChoiceCard && value && "ring-2 ring-ring",
@@ -233,14 +235,14 @@ function Checkbox2({
233
235
  /* @__PURE__ */ React19__namespace.createElement(
234
236
  "div",
235
237
  {
236
- className: chunkWQ4HD5UD_cjs.cn(
238
+ className: chunkPDMFWP5I_cjs.cn(
237
239
  "flex w-full gap-3",
238
240
  showChoiceCard ? "items-start" : "items-center"
239
241
  )
240
242
  },
241
243
  checkbox,
242
244
  /* @__PURE__ */ React19__namespace.createElement("div", { className: "flex-1 space-y-1" }, /* @__PURE__ */ React19__namespace.createElement("span", { className: "text-sm font-medium leading-none" }, label), description && /* @__PURE__ */ React19__namespace.createElement(
243
- chunkWQ4HD5UD_cjs.FieldDescription,
245
+ chunkPDMFWP5I_cjs.FieldDescription,
244
246
  {
245
247
  id: `${checkboxId}-description`,
246
248
  className: "leading-snug"
@@ -309,7 +311,7 @@ function CheckboxGroup({
309
311
  };
310
312
  const maxReached = Boolean(maxSelections && countableValue >= maxSelections);
311
313
  const containerClass = React19__namespace.useMemo(() => {
312
- return chunkWQ4HD5UD_cjs.cn(
314
+ return chunkPDMFWP5I_cjs.cn(
313
315
  "w-full grid grid-cols-1 border-0 m-0 p-0 min-w-0",
314
316
  (layout === "grid" || layout === "inline") && "md:grid-cols-2",
315
317
  layout === "grid" && "gap-3",
@@ -330,7 +332,7 @@ function CheckboxGroup({
330
332
  "aria-label": typeof label === "string" ? label : props["aria-label"]
331
333
  },
332
334
  /* @__PURE__ */ React19__namespace.createElement(
333
- chunkWQ4HD5UD_cjs.LabelGroup,
335
+ chunkPDMFWP5I_cjs.LabelGroup,
334
336
  {
335
337
  labelHtmlFor: name,
336
338
  required,
@@ -377,9 +379,9 @@ function CheckboxGroup({
377
379
  );
378
380
  }),
379
381
  (minSelections || maxSelections) && /* @__PURE__ */ React19__namespace.createElement(
380
- chunkWQ4HD5UD_cjs.FieldDescription,
382
+ chunkPDMFWP5I_cjs.FieldDescription,
381
383
  {
382
- className: chunkWQ4HD5UD_cjs.cn(
384
+ className: chunkPDMFWP5I_cjs.cn(
383
385
  "p-2 rounded-lg border font-semibold mt-2 leading-snug",
384
386
  minSelections && countableValue < minSelections ? "border-destructive bg-destructive/80 text-destructive-foreground" : "border-border bg-card text-card-foreground"
385
387
  ),
@@ -399,7 +401,7 @@ function RadioGroup({
399
401
  radixUi.RadioGroup.Root,
400
402
  {
401
403
  "data-slot": "radio-group",
402
- className: chunkWQ4HD5UD_cjs.cn("grid gap-3", className),
404
+ className: chunkPDMFWP5I_cjs.cn("grid gap-3", className),
403
405
  ...props
404
406
  }
405
407
  );
@@ -412,7 +414,7 @@ function RadioGroupItem({
412
414
  radixUi.RadioGroup.Item,
413
415
  {
414
416
  "data-slot": "radio-group-item",
415
- className: chunkWQ4HD5UD_cjs.cn(
417
+ className: chunkPDMFWP5I_cjs.cn(
416
418
  // Core structure - uses CSS variables
417
419
  "aspect-square size-4 shrink-0 rounded-full border border-input bg-transparent shadow-xs",
418
420
  "text-primary transition-[color,box-shadow] outline-none",
@@ -470,7 +472,17 @@ function Radio({
470
472
  return options.some((option) => option.description);
471
473
  }, [options]);
472
474
  const groupDescriptionId = description ? `${name}-description` : void 0;
473
- return /* @__PURE__ */ React19__namespace.createElement("div", { className: chunkWQ4HD5UD_cjs.cn("w-full", className), "data-invalid": error || void 0 }, (label || description) && /* @__PURE__ */ React19__namespace.createElement("div", { className: "mb-3 space-y-1" }, label && /* @__PURE__ */ React19__namespace.createElement("div", { className: "text-base font-medium leading-none" }, label), description && /* @__PURE__ */ React19__namespace.createElement(chunkWQ4HD5UD_cjs.FieldDescription, { id: groupDescriptionId, className: "leading-snug" }, description)), /* @__PURE__ */ React19__namespace.createElement(
475
+ return /* @__PURE__ */ React19__namespace.createElement("div", { className: chunkPDMFWP5I_cjs.cn("w-full", className), "data-invalid": error || void 0 }, /* @__PURE__ */ React19__namespace.createElement(
476
+ chunkPDMFWP5I_cjs.LabelGroup,
477
+ {
478
+ labelHtmlFor: name,
479
+ required,
480
+ variant: "legend",
481
+ secondaryId: groupDescriptionId,
482
+ secondary: description,
483
+ primary: label
484
+ }
485
+ ), /* @__PURE__ */ React19__namespace.createElement(
474
486
  RadioGroup,
475
487
  {
476
488
  name,
@@ -479,9 +491,10 @@ function Radio({
479
491
  onBlur: handleBlur,
480
492
  disabled,
481
493
  required,
482
- className: chunkWQ4HD5UD_cjs.cn(
483
- layout === "grid" && "grid grid-cols-1 md:grid-cols-2 gap-3",
484
- layout === "inline" && "flex flex-wrap gap-0"
494
+ className: chunkPDMFWP5I_cjs.cn(
495
+ layout === "grid" && "grid grid-cols-1 md:grid-cols-2",
496
+ layout === "inline" && "flex flex-wrap",
497
+ useChoiceCard ? "gap-3" : "gap-0"
485
498
  ),
486
499
  "aria-invalid": error || props["aria-invalid"],
487
500
  "aria-describedby": groupDescriptionId || props["aria-describedby"],
@@ -493,13 +506,16 @@ function Radio({
493
506
  const radioId = `${name}-${option.value}`;
494
507
  const hasDescription = !!option.description;
495
508
  return /* @__PURE__ */ React19__namespace.createElement(
496
- chunkWQ4HD5UD_cjs.FieldLabel,
509
+ chunkPDMFWP5I_cjs.FieldLabel,
497
510
  {
498
511
  key: option.value,
499
512
  htmlFor: radioId,
500
- className: chunkWQ4HD5UD_cjs.cn(
501
- "flex gap-3 p-3 duration-200 select-auto font-normal leading-normal",
502
- useChoiceCard && "border rounded-lg hover:ring-2 hover:ring-ring/50",
513
+ className: chunkPDMFWP5I_cjs.cn(
514
+ "flex gap-3 duration-200",
515
+ "select-auto font-normal leading-normal",
516
+ useChoiceCard && "hover:ring-2 hover:ring-ring",
517
+ useChoiceCard && "border rounded-lg p-3",
518
+ !useChoiceCard && "p-1",
503
519
  useChoiceCard && isSelected && "ring-2 ring-ring",
504
520
  useChoiceCard && error && "border-destructive",
505
521
  isDisabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"
@@ -508,7 +524,7 @@ function Radio({
508
524
  /* @__PURE__ */ React19__namespace.createElement(
509
525
  "div",
510
526
  {
511
- className: chunkWQ4HD5UD_cjs.cn(
527
+ className: chunkPDMFWP5I_cjs.cn(
512
528
  "flex w-full gap-3",
513
529
  useChoiceCard ? "items-start" : "items-center"
514
530
  )
@@ -524,7 +540,7 @@ function Radio({
524
540
  }
525
541
  ),
526
542
  /* @__PURE__ */ React19__namespace.createElement("div", { className: "flex-1 space-y-1" }, /* @__PURE__ */ React19__namespace.createElement("span", { className: "text-sm font-medium leading-none" }, option.label), option.description && /* @__PURE__ */ React19__namespace.createElement(
527
- chunkWQ4HD5UD_cjs.FieldDescription,
543
+ chunkPDMFWP5I_cjs.FieldDescription,
528
544
  {
529
545
  id: `${radioId}-description`,
530
546
  className: "leading-snug"
@@ -547,7 +563,7 @@ function Switch({
547
563
  {
548
564
  "data-slot": "switch",
549
565
  "data-size": size,
550
- className: chunkWQ4HD5UD_cjs.cn(
566
+ className: chunkPDMFWP5I_cjs.cn(
551
567
  // Core structure - uses CSS variables
552
568
  "peer group/switch inline-flex shrink-0 items-center rounded-full",
553
569
  "border border-transparent shadow-xs transition-all outline-none",
@@ -568,7 +584,7 @@ function Switch({
568
584
  radixUi.Switch.Thumb,
569
585
  {
570
586
  "data-slot": "switch-thumb",
571
- className: chunkWQ4HD5UD_cjs.cn(
587
+ className: chunkPDMFWP5I_cjs.cn(
572
588
  // Thumb appearance - inherits from parent theme
573
589
  "bg-background pointer-events-none block rounded-full ring-0 transition-transform",
574
590
  // Size variants
@@ -619,21 +635,21 @@ function Switch2({
619
635
  }
620
636
  );
621
637
  if (!label) {
622
- return /* @__PURE__ */ React19__namespace.createElement(chunkWQ4HD5UD_cjs.Field, { className }, switchElement);
638
+ return /* @__PURE__ */ React19__namespace.createElement(chunkPDMFWP5I_cjs.Field, { className }, switchElement);
623
639
  }
624
- return /* @__PURE__ */ React19__namespace.createElement(chunkWQ4HD5UD_cjs.Field, { className: "gap-0", invalid: Boolean(error) }, /* @__PURE__ */ React19__namespace.createElement(
625
- chunkWQ4HD5UD_cjs.FieldLabel,
640
+ return /* @__PURE__ */ React19__namespace.createElement(chunkPDMFWP5I_cjs.Field, { className: "gap-0", invalid: Boolean(error) }, /* @__PURE__ */ React19__namespace.createElement(
641
+ chunkPDMFWP5I_cjs.FieldLabel,
626
642
  {
627
643
  htmlFor: switchId,
628
- className: chunkWQ4HD5UD_cjs.cn(
644
+ className: chunkPDMFWP5I_cjs.cn(
629
645
  "flex items-center gap-3 cursor-pointer select-auto font-normal leading-normal",
630
646
  disabled && "opacity-50 cursor-not-allowed",
631
647
  className
632
648
  )
633
649
  },
634
650
  switchElement,
635
- /* @__PURE__ */ React19__namespace.createElement(chunkWQ4HD5UD_cjs.Field, { className: "gap-1" }, /* @__PURE__ */ React19__namespace.createElement("span", { className: "text-sm font-medium leading-none" }, label), description && /* @__PURE__ */ React19__namespace.createElement(
636
- chunkWQ4HD5UD_cjs.FieldDescription,
651
+ /* @__PURE__ */ React19__namespace.createElement(chunkPDMFWP5I_cjs.Field, { className: "gap-1" }, /* @__PURE__ */ React19__namespace.createElement("span", { className: "text-sm font-medium leading-none" }, label), description && /* @__PURE__ */ React19__namespace.createElement(
652
+ chunkPDMFWP5I_cjs.FieldDescription,
637
653
  {
638
654
  id: `${switchId}-description`,
639
655
  className: "leading-snug"
@@ -669,7 +685,7 @@ function SelectTrigger({
669
685
  {
670
686
  "data-slot": "select-trigger",
671
687
  "data-size": size,
672
- className: chunkWQ4HD5UD_cjs.cn(
688
+ className: chunkPDMFWP5I_cjs.cn(
673
689
  // Core structure - uses CSS variables
674
690
  "flex w-full items-center justify-between gap-2 rounded-md border border-input",
675
691
  "bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs",
@@ -720,7 +736,7 @@ function SelectContent({
720
736
  radixUi.Select.Content,
721
737
  {
722
738
  "data-slot": "select-content",
723
- className: chunkWQ4HD5UD_cjs.cn(
739
+ className: chunkPDMFWP5I_cjs.cn(
724
740
  "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",
725
741
  position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
726
742
  className
@@ -733,7 +749,7 @@ function SelectContent({
733
749
  /* @__PURE__ */ React19__namespace.createElement(
734
750
  radixUi.Select.Viewport,
735
751
  {
736
- className: chunkWQ4HD5UD_cjs.cn(
752
+ className: chunkPDMFWP5I_cjs.cn(
737
753
  "p-1",
738
754
  position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
739
755
  )
@@ -751,7 +767,7 @@ function SelectLabel({
751
767
  radixUi.Select.Label,
752
768
  {
753
769
  "data-slot": "select-label",
754
- className: chunkWQ4HD5UD_cjs.cn("px-2 py-1.5 text-xs opacity-70", className),
770
+ className: chunkPDMFWP5I_cjs.cn("px-2 py-1.5 text-xs opacity-70", className),
755
771
  ...props
756
772
  }
757
773
  );
@@ -765,7 +781,7 @@ function SelectItem({
765
781
  radixUi.Select.Item,
766
782
  {
767
783
  "data-slot": "select-item",
768
- className: chunkWQ4HD5UD_cjs.cn(
784
+ className: chunkPDMFWP5I_cjs.cn(
769
785
  // Core structure - inherits text color
770
786
  "relative flex w-full cursor-default items-center gap-2 rounded-sm",
771
787
  "py-1.5 pr-8 pl-2 text-sm outline-hidden select-none",
@@ -812,7 +828,7 @@ function SelectScrollUpButton({
812
828
  radixUi.Select.ScrollUpButton,
813
829
  {
814
830
  "data-slot": "select-scroll-up-button",
815
- className: chunkWQ4HD5UD_cjs.cn(
831
+ className: chunkPDMFWP5I_cjs.cn(
816
832
  "flex cursor-default items-center justify-center py-1",
817
833
  className
818
834
  ),
@@ -841,7 +857,7 @@ function SelectScrollDownButton({
841
857
  radixUi.Select.ScrollDownButton,
842
858
  {
843
859
  "data-slot": "select-scroll-down-button",
844
- className: chunkWQ4HD5UD_cjs.cn(
860
+ className: chunkPDMFWP5I_cjs.cn(
845
861
  "flex cursor-default items-center justify-center py-1",
846
862
  className
847
863
  ),
@@ -935,7 +951,7 @@ function Select2({
935
951
  /* @__PURE__ */ React19__namespace.createElement(
936
952
  SelectTrigger,
937
953
  {
938
- className: chunkWQ4HD5UD_cjs.cn(
954
+ className: chunkPDMFWP5I_cjs.cn(
939
955
  // Valid value indicator - ring-2 when has value and no error
940
956
  !error && hasValue && "ring-2 ring-ring",
941
957
  // Error state - handled by SelectTrigger via aria-invalid
@@ -994,7 +1010,7 @@ var DialogOverlay = React19__namespace.forwardRef(({ className, ...props }, ref)
994
1010
  {
995
1011
  ref,
996
1012
  "data-slot": "dialog-overlay",
997
- className: chunkWQ4HD5UD_cjs.cn(
1013
+ className: chunkPDMFWP5I_cjs.cn(
998
1014
  "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
999
1015
  className
1000
1016
  ),
@@ -1009,7 +1025,7 @@ var DialogContent = React19__namespace.forwardRef(({ className, children, showCl
1009
1025
  {
1010
1026
  ref,
1011
1027
  "data-slot": "dialog-content",
1012
- className: chunkWQ4HD5UD_cjs.cn(
1028
+ className: chunkPDMFWP5I_cjs.cn(
1013
1029
  "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 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 p-6 shadow-lg duration-200 outline-none sm:max-w-lg",
1014
1030
  className
1015
1031
  ),
@@ -1046,7 +1062,7 @@ function DialogHeader({ className, ...props }) {
1046
1062
  "div",
1047
1063
  {
1048
1064
  "data-slot": "dialog-header",
1049
- className: chunkWQ4HD5UD_cjs.cn("flex flex-col gap-2 text-center sm:text-left", className),
1065
+ className: chunkPDMFWP5I_cjs.cn("flex flex-col gap-2 text-center sm:text-left", className),
1050
1066
  ...props
1051
1067
  }
1052
1068
  );
@@ -1059,7 +1075,7 @@ function DialogTitle({
1059
1075
  radixUi.Dialog.Title,
1060
1076
  {
1061
1077
  "data-slot": "dialog-title",
1062
- className: chunkWQ4HD5UD_cjs.cn("text-lg leading-none font-semibold", className),
1078
+ className: chunkPDMFWP5I_cjs.cn("text-lg leading-none font-semibold", className),
1063
1079
  ...props
1064
1080
  }
1065
1081
  );
@@ -1074,7 +1090,7 @@ function Command({
1074
1090
  cmdk.Command,
1075
1091
  {
1076
1092
  "data-slot": "command",
1077
- className: chunkWQ4HD5UD_cjs.cn(
1093
+ className: chunkPDMFWP5I_cjs.cn(
1078
1094
  "bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",
1079
1095
  className
1080
1096
  ),
@@ -1110,7 +1126,7 @@ function CommandInput({
1110
1126
  cmdk.Command.Input,
1111
1127
  {
1112
1128
  "data-slot": "command-input",
1113
- className: chunkWQ4HD5UD_cjs.cn(
1129
+ className: chunkPDMFWP5I_cjs.cn(
1114
1130
  "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",
1115
1131
  className
1116
1132
  ),
@@ -1127,7 +1143,7 @@ function CommandList({
1127
1143
  cmdk.Command.List,
1128
1144
  {
1129
1145
  "data-slot": "command-list",
1130
- className: chunkWQ4HD5UD_cjs.cn(
1146
+ className: chunkPDMFWP5I_cjs.cn(
1131
1147
  "max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",
1132
1148
  className
1133
1149
  ),
@@ -1155,7 +1171,7 @@ function CommandGroup({
1155
1171
  cmdk.Command.Group,
1156
1172
  {
1157
1173
  "data-slot": "command-group",
1158
- className: chunkWQ4HD5UD_cjs.cn(
1174
+ className: chunkPDMFWP5I_cjs.cn(
1159
1175
  "overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:opacity-70",
1160
1176
  className
1161
1177
  ),
@@ -1185,7 +1201,7 @@ function PopoverContent({
1185
1201
  "data-slot": "popover-content",
1186
1202
  align,
1187
1203
  sideOffset,
1188
- className: chunkWQ4HD5UD_cjs.cn(
1204
+ className: chunkPDMFWP5I_cjs.cn(
1189
1205
  "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",
1190
1206
  className
1191
1207
  ),
@@ -1445,7 +1461,7 @@ function MultiSelect({
1445
1461
  value
1446
1462
  ]
1447
1463
  );
1448
- const combinedClassName = chunkWQ4HD5UD_cjs.cn("relative w-full", className);
1464
+ const combinedClassName = chunkPDMFWP5I_cjs.cn("relative w-full", className);
1449
1465
  return /* @__PURE__ */ React19__namespace.createElement("div", { className: combinedClassName }, /* @__PURE__ */ React19__namespace.createElement(
1450
1466
  "select",
1451
1467
  {
@@ -1466,7 +1482,7 @@ function MultiSelect({
1466
1482
  "div",
1467
1483
  {
1468
1484
  ref: triggerRef,
1469
- className: chunkWQ4HD5UD_cjs.cn(
1485
+ className: chunkPDMFWP5I_cjs.cn(
1470
1486
  "flex min-h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm",
1471
1487
  "cursor-pointer transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
1472
1488
  !error && hasValue && "ring-2 ring-ring",
@@ -1535,7 +1551,7 @@ function MultiSelect({
1535
1551
  CommandInput,
1536
1552
  {
1537
1553
  id: searchInputId,
1538
- className: chunkWQ4HD5UD_cjs.cn(chunkWQ4HD5UD_cjs.INPUT_AUTOFILL_RESET_CLASSES),
1554
+ className: chunkPDMFWP5I_cjs.cn(chunkPDMFWP5I_cjs.INPUT_AUTOFILL_RESET_CLASSES),
1539
1555
  placeholder: "Search...",
1540
1556
  value: searchQuery,
1541
1557
  onValueChange: (nextValue) => {
@@ -1596,7 +1612,7 @@ function MultiSelect({
1596
1612
  handleToggleOption(option.value);
1597
1613
  }
1598
1614
  },
1599
- className: chunkWQ4HD5UD_cjs.cn(
1615
+ className: chunkPDMFWP5I_cjs.cn(
1600
1616
  "relative flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent",
1601
1617
  isFocused && "bg-accent",
1602
1618
  isSelected && "bg-accent font-medium",
@@ -1627,7 +1643,7 @@ function MultiSelect({
1627
1643
  handleToggleOption(option.value);
1628
1644
  }
1629
1645
  },
1630
- className: chunkWQ4HD5UD_cjs.cn(
1646
+ className: chunkPDMFWP5I_cjs.cn(
1631
1647
  "relative flex w-full cursor-pointer items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent",
1632
1648
  isFocused && "bg-accent",
1633
1649
  isSelected && "bg-accent font-medium",
@@ -1681,7 +1697,7 @@ function BaseFileIcon({
1681
1697
  strokeWidth: "2",
1682
1698
  strokeLinecap: "round",
1683
1699
  strokeLinejoin: "round",
1684
- className: chunkWQ4HD5UD_cjs.cn("size-5", className),
1700
+ className: chunkPDMFWP5I_cjs.cn("size-5", className),
1685
1701
  "aria-hidden": "true"
1686
1702
  },
1687
1703
  children
@@ -2165,7 +2181,7 @@ function FileUpload(props) {
2165
2181
  "data-slot": "file-upload",
2166
2182
  dir,
2167
2183
  ...rootProps,
2168
- className: chunkWQ4HD5UD_cjs.cn("relative flex flex-col gap-2", className)
2184
+ className: chunkPDMFWP5I_cjs.cn("relative flex flex-col gap-2", className)
2169
2185
  },
2170
2186
  children,
2171
2187
  /* @__PURE__ */ React19__namespace.createElement(
@@ -2337,7 +2353,7 @@ function FileUploadDropzone(props) {
2337
2353
  dir: context.dir,
2338
2354
  tabIndex: context.disabled ? -1 : 0,
2339
2355
  ...dropzoneProps,
2340
- className: chunkWQ4HD5UD_cjs.cn(
2356
+ className: chunkPDMFWP5I_cjs.cn(
2341
2357
  "relative flex select-none flex-col items-center justify-center gap-2 rounded-lg border border-dashed p-6 outline-none transition-colors hover:bg-accent/50 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/20 data-disabled:pointer-events-none data-disabled:opacity-50 data-dragging:border-ring data-dragging:bg-accent/50 data-invalid:border-destructive data-invalid:ring-destructive/20",
2342
2358
  className
2343
2359
  ),
@@ -2375,7 +2391,7 @@ function FileUploadList(props) {
2375
2391
  "data-state": shouldRender ? "active" : "inactive",
2376
2392
  dir: context.dir,
2377
2393
  ...listProps,
2378
- className: chunkWQ4HD5UD_cjs.cn(
2394
+ className: chunkPDMFWP5I_cjs.cn(
2379
2395
  "data-[state=inactive]:fade-out-0 data-[state=active]:fade-in-0 data-[state=inactive]:slide-out-to-top-2 data-[state=active]:slide-in-from-top-2 flex flex-col gap-2 data-[state=active]:animate-in data-[state=inactive]:animate-out",
2380
2396
  orientation === "horizontal" && "flex-row overflow-x-auto p-1.5",
2381
2397
  className
@@ -2431,7 +2447,7 @@ function FileUploadItem(props) {
2431
2447
  "data-slot": "file-upload-item",
2432
2448
  dir: context.dir,
2433
2449
  ...itemProps,
2434
- className: chunkWQ4HD5UD_cjs.cn(
2450
+ className: chunkPDMFWP5I_cjs.cn(
2435
2451
  "relative flex items-center gap-2.5 rounded-md border p-3",
2436
2452
  className
2437
2453
  )
@@ -2478,7 +2494,7 @@ function FileUploadItemPreview(props) {
2478
2494
  "aria-labelledby": itemContext.nameId,
2479
2495
  "data-slot": "file-upload-preview",
2480
2496
  ...previewProps,
2481
- className: chunkWQ4HD5UD_cjs.cn(
2497
+ className: chunkPDMFWP5I_cjs.cn(
2482
2498
  "relative flex size-10 shrink-0 items-center justify-center overflow-hidden rounded border bg-accent/50 [&>svg]:size-10",
2483
2499
  className
2484
2500
  )
@@ -2505,13 +2521,13 @@ function FileUploadItemMetadata(props) {
2505
2521
  "data-slot": "file-upload-metadata",
2506
2522
  dir: context.dir,
2507
2523
  ...metadataProps,
2508
- className: chunkWQ4HD5UD_cjs.cn("flex min-w-0 flex-1 flex-col", className)
2524
+ className: chunkPDMFWP5I_cjs.cn("flex min-w-0 flex-1 flex-col", className)
2509
2525
  },
2510
2526
  children ?? /* @__PURE__ */ React19__namespace.createElement(React19__namespace.Fragment, null, /* @__PURE__ */ React19__namespace.createElement(
2511
2527
  "span",
2512
2528
  {
2513
2529
  id: itemContext.nameId,
2514
- className: chunkWQ4HD5UD_cjs.cn(
2530
+ className: chunkPDMFWP5I_cjs.cn(
2515
2531
  "truncate font-medium text-sm",
2516
2532
  size === "sm" && "font-normal text-[13px] leading-snug"
2517
2533
  )
@@ -2521,7 +2537,7 @@ function FileUploadItemMetadata(props) {
2521
2537
  "span",
2522
2538
  {
2523
2539
  id: itemContext.sizeId,
2524
- className: chunkWQ4HD5UD_cjs.cn(
2540
+ className: chunkPDMFWP5I_cjs.cn(
2525
2541
  "truncate text-xs opacity-70",
2526
2542
  size === "sm" && "text-[11px] leading-snug"
2527
2543
  )
@@ -2573,7 +2589,7 @@ function FileInput({
2573
2589
  value = [],
2574
2590
  onChange,
2575
2591
  onBlur,
2576
- placeholder = "Choose file...",
2592
+ placeholder,
2577
2593
  disabled = false,
2578
2594
  required = false,
2579
2595
  error = false,
@@ -2851,7 +2867,26 @@ function FileInput({
2851
2867
  }
2852
2868
  };
2853
2869
  }, [imageToCrop]);
2854
- const fileCountLabel = normalizedValue.length > 0 ? `${normalizedValue.length} file(s) selected` : placeholder;
2870
+ const dynamicPlaceholder = React19__namespace.useMemo(() => {
2871
+ if (placeholder) {
2872
+ return placeholder;
2873
+ }
2874
+ return `Drag & drop file${multiple ? "s" : ""} here`;
2875
+ }, [multiple, placeholder]);
2876
+ const metadataElement = React19__namespace.useMemo(() => {
2877
+ const metaList = [];
2878
+ if (accept) {
2879
+ metaList.push(`Accepted: ${accept}`);
2880
+ }
2881
+ if (maxSize) {
2882
+ metaList.push(`Max size: ${formatFileSize(maxSize)}`);
2883
+ }
2884
+ if (metaList.length > 0) {
2885
+ return /* @__PURE__ */ React19__namespace.createElement("div", { className: "flex text-center items-center justify-center gap-4" }, metaList.map((str) => /* @__PURE__ */ React19__namespace.createElement("span", { key: str, className: "font-sm opacity-75" }, str)));
2886
+ } else {
2887
+ return null;
2888
+ }
2889
+ }, [accept, maxSize]);
2855
2890
  return /* @__PURE__ */ React19__namespace.createElement(React19__namespace.Fragment, null, /* @__PURE__ */ React19__namespace.createElement(
2856
2891
  FileUpload,
2857
2892
  {
@@ -2868,7 +2903,7 @@ function FileInput({
2868
2903
  required: required && normalizedValue.length === 0,
2869
2904
  invalid: Boolean(error || props["aria-invalid"]),
2870
2905
  label: "File upload",
2871
- className: chunkWQ4HD5UD_cjs.cn(className),
2906
+ className: chunkPDMFWP5I_cjs.cn(className),
2872
2907
  inputProps: {
2873
2908
  ...props,
2874
2909
  onBlur: handleBlur,
@@ -2882,33 +2917,33 @@ function FileInput({
2882
2917
  FileUploadDropzone,
2883
2918
  {
2884
2919
  role: "button",
2885
- "aria-label": placeholder,
2886
- className: chunkWQ4HD5UD_cjs.cn(
2887
- "flex min-h-32 w-full cursor-pointer items-center justify-center border-input bg-transparent p-6 transition-colors",
2888
- "hover:bg-accent/50",
2889
- "data-[dragging]:bg-accent/50",
2920
+ "aria-label": dynamicPlaceholder,
2921
+ className: chunkPDMFWP5I_cjs.cn(
2922
+ "flex min-h-32 w-full cursor-pointer",
2923
+ "items-center justify-center border-input",
2924
+ "bg-transparent p-6 transition-colors",
2925
+ "data-[dragging]:ring-2 hover:ring-2",
2890
2926
  disabled && "cursor-not-allowed opacity-50",
2891
2927
  error && "border-destructive"
2892
2928
  )
2893
2929
  },
2894
- /* @__PURE__ */ React19__namespace.createElement("div", { className: "flex flex-col items-center gap-1 text-center" }, /* @__PURE__ */ React19__namespace.createElement("div", { className: "flex items-center justify-center rounded-full border p-2.5" }, /* @__PURE__ */ React19__namespace.createElement(
2930
+ /* @__PURE__ */ React19__namespace.createElement("div", { className: "flex flex-col items-center gap-3 text-center" }, /* @__PURE__ */ React19__namespace.createElement("div", { className: "flex items-center justify-center rounded-full border p-2.5" }, /* @__PURE__ */ React19__namespace.createElement(
2895
2931
  "svg",
2896
2932
  {
2897
- width: "24",
2898
- height: "24",
2933
+ width: "18",
2934
+ height: "18",
2899
2935
  viewBox: "0 0 24 24",
2900
2936
  fill: "none",
2901
2937
  stroke: "currentColor",
2902
2938
  strokeWidth: "2",
2903
2939
  strokeLinecap: "round",
2904
2940
  strokeLinejoin: "round",
2905
- className: "text-muted-foreground",
2906
2941
  "aria-hidden": "true"
2907
2942
  },
2908
2943
  /* @__PURE__ */ React19__namespace.createElement("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
2909
2944
  /* @__PURE__ */ React19__namespace.createElement("polyline", { points: "17 8 12 3 7 8" }),
2910
2945
  /* @__PURE__ */ React19__namespace.createElement("line", { x1: "12", y1: "3", x2: "12", y2: "15" })
2911
- )), /* @__PURE__ */ React19__namespace.createElement("p", { className: "text-sm font-medium" }, fileCountLabel), accept && /* @__PURE__ */ React19__namespace.createElement("p", { className: "text-muted-foreground text-xs" }, "Accepted: ", accept), /* @__PURE__ */ React19__namespace.createElement("p", { className: "text-muted-foreground text-xs" }, "Max size: ", formatFileSize(maxSize)))
2946
+ )), /* @__PURE__ */ React19__namespace.createElement("div", { className: "flex flex-col items-center justify-center gap-1 text-center" }, /* @__PURE__ */ React19__namespace.createElement("p", { className: "text-sm font-medium" }, dynamicPlaceholder), metadataElement))
2912
2947
  ),
2913
2948
  /* @__PURE__ */ React19__namespace.createElement(FileUploadList, { className: "mt-4" }, normalizedValue.map((file, index) => {
2914
2949
  const progressValue = uploadProgress[file.name];
@@ -2918,9 +2953,12 @@ function FileInput({
2918
2953
  {
2919
2954
  key: `${file.name}-${index}`,
2920
2955
  value: file,
2921
- className: "flex items-center gap-3 border-border bg-card text-card-foreground hover:bg-accent/50 transition-colors"
2956
+ className: chunkPDMFWP5I_cjs.cn(
2957
+ "flex items-center gap-3",
2958
+ "border-border bg-card text-card-foreground"
2959
+ )
2922
2960
  },
2923
- showPreview ? /* @__PURE__ */ React19__namespace.createElement(FileUploadItemPreview, { className: "h-12 w-12 rounded [&>img]:h-full [&>img]:w-full [&>img]:object-cover [&>svg]:size-6" }) : null,
2961
+ showPreview ? /* @__PURE__ */ React19__namespace.createElement(FileUploadItemPreview, { className: "size-12 rounded [&>img]:h-full [&>img]:w-full [&>img]:object-cover [&>svg]:size-6" }) : null,
2924
2962
  /* @__PURE__ */ React19__namespace.createElement("div", { className: "flex min-w-0 flex-1 flex-col" }, /* @__PURE__ */ React19__namespace.createElement(FileUploadItemMetadata, { className: "min-w-0" }), hasProgress && progressValue < 100 ? /* @__PURE__ */ React19__namespace.createElement("div", { className: "mt-1 flex items-center gap-2" }, /* @__PURE__ */ React19__namespace.createElement(
2925
2963
  "div",
2926
2964
  {
@@ -2938,9 +2976,9 @@ function FileInput({
2938
2976
  style: { width: `${progressValue}%` }
2939
2977
  }
2940
2978
  )
2941
- ), /* @__PURE__ */ React19__namespace.createElement("span", { className: "text-xs" }, progressValue, "%")) : null),
2979
+ ), /* @__PURE__ */ React19__namespace.createElement("span", { className: "text-xs" }, progressValue, "%")) : /* @__PURE__ */ React19__namespace.createElement("span", { className: "text-xs" }, formatFileSize(file.size))),
2942
2980
  enableCropping && file.type.startsWith("image/") ? /* @__PURE__ */ React19__namespace.createElement(
2943
- chunkWQ4HD5UD_cjs.Button,
2981
+ chunkPDMFWP5I_cjs.Button,
2944
2982
  {
2945
2983
  type: "button",
2946
2984
  variant: "ghost",
@@ -2950,7 +2988,7 @@ function FileInput({
2950
2988
  handleCrop(file);
2951
2989
  },
2952
2990
  disabled,
2953
- className: "h-8 w-8 p-0",
2991
+ className: "size-8 p-0",
2954
2992
  "aria-label": `Crop ${file.name}`
2955
2993
  },
2956
2994
  /* @__PURE__ */ React19__namespace.createElement(
@@ -2971,13 +3009,13 @@ function FileInput({
2971
3009
  )
2972
3010
  ) : null,
2973
3011
  /* @__PURE__ */ React19__namespace.createElement(FileUploadItemDelete, { asChild: true }, /* @__PURE__ */ React19__namespace.createElement(
2974
- chunkWQ4HD5UD_cjs.Button,
3012
+ chunkPDMFWP5I_cjs.Button,
2975
3013
  {
2976
3014
  type: "button",
2977
- variant: "ghost",
2978
- size: "icon",
3015
+ variant: "outline",
3016
+ size: "icon-sm",
2979
3017
  disabled,
2980
- className: "h-8 w-8 p-0",
3018
+ className: "size-8 p-0",
2981
3019
  "aria-label": `Remove ${file.name}`
2982
3020
  },
2983
3021
  /* @__PURE__ */ React19__namespace.createElement(
@@ -3017,7 +3055,7 @@ function FileInput({
3017
3055
  "aria-describedby": void 0
3018
3056
  },
3019
3057
  /* @__PURE__ */ React19__namespace.createElement(DialogHeader, { className: "flex-row items-center justify-between border-b border-border px-4 py-3" }, /* @__PURE__ */ React19__namespace.createElement(DialogTitle, null, "Crop Image"), /* @__PURE__ */ React19__namespace.createElement(DialogClose, { asChild: true }, /* @__PURE__ */ React19__namespace.createElement(
3020
- chunkWQ4HD5UD_cjs.Button,
3058
+ chunkPDMFWP5I_cjs.Button,
3021
3059
  {
3022
3060
  type: "button",
3023
3061
  variant: "ghost",
@@ -3045,7 +3083,7 @@ function FileInput({
3045
3083
  /* @__PURE__ */ React19__namespace.createElement("div", { className: "p-4" }, /* @__PURE__ */ React19__namespace.createElement(
3046
3084
  "div",
3047
3085
  {
3048
- className: "relative h-96 w-full overflow-hidden rounded-md bg-accent/40",
3086
+ className: "relative h-96 w-full overflow-hidden rounded-md",
3049
3087
  onMouseDown: (event) => {
3050
3088
  event.preventDefault();
3051
3089
  const startX = event.clientX - crop.x;
@@ -3129,19 +3167,19 @@ function FileInput({
3129
3167
  step: "0.1",
3130
3168
  value: zoom,
3131
3169
  onChange: (event) => onZoomChange(parseFloat(event.target.value)),
3132
- className: "h-2 flex-1 cursor-pointer appearance-none rounded-lg bg-accent/60",
3170
+ className: "h-2 flex-1 cursor-pointer appearance-none rounded-lg bg-primary",
3133
3171
  "aria-label": "Zoom level"
3134
3172
  }
3135
3173
  ))),
3136
3174
  /* @__PURE__ */ React19__namespace.createElement("div", { className: "flex items-center justify-end gap-2 border-t border-border p-4" }, /* @__PURE__ */ React19__namespace.createElement(
3137
- chunkWQ4HD5UD_cjs.Button,
3175
+ chunkPDMFWP5I_cjs.Button,
3138
3176
  {
3139
3177
  type: "button",
3140
3178
  variant: "outline",
3141
3179
  onClick: handleCropCancel
3142
3180
  },
3143
3181
  "Cancel"
3144
- ), /* @__PURE__ */ React19__namespace.createElement(chunkWQ4HD5UD_cjs.Button, { type: "button", onClick: handleCropSave }, "Save"))
3182
+ ), /* @__PURE__ */ React19__namespace.createElement(chunkPDMFWP5I_cjs.Button, { type: "button", onClick: handleCropSave }, "Save"))
3145
3183
  ) : null
3146
3184
  ));
3147
3185
  }
@@ -3161,7 +3199,7 @@ function Calendar({
3161
3199
  reactDayPicker.DayPicker,
3162
3200
  {
3163
3201
  showOutsideDays,
3164
- className: chunkWQ4HD5UD_cjs.cn(
3202
+ className: chunkPDMFWP5I_cjs.cn(
3165
3203
  "bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
3166
3204
  String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
3167
3205
  String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
@@ -3173,86 +3211,86 @@ function Calendar({
3173
3211
  ...formatters
3174
3212
  },
3175
3213
  classNames: {
3176
- root: chunkWQ4HD5UD_cjs.cn("w-fit", defaultClassNames.root),
3177
- months: chunkWQ4HD5UD_cjs.cn(
3214
+ root: chunkPDMFWP5I_cjs.cn("w-fit", defaultClassNames.root),
3215
+ months: chunkPDMFWP5I_cjs.cn(
3178
3216
  "flex gap-4 flex-col md:flex-row relative",
3179
3217
  defaultClassNames.months
3180
3218
  ),
3181
- month: chunkWQ4HD5UD_cjs.cn("flex flex-col w-full gap-4", defaultClassNames.month),
3182
- nav: chunkWQ4HD5UD_cjs.cn(
3219
+ month: chunkPDMFWP5I_cjs.cn("flex flex-col w-full gap-4", defaultClassNames.month),
3220
+ nav: chunkPDMFWP5I_cjs.cn(
3183
3221
  "flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between",
3184
3222
  defaultClassNames.nav
3185
3223
  ),
3186
- button_previous: chunkWQ4HD5UD_cjs.cn(
3187
- chunkWQ4HD5UD_cjs.buttonVariants({ variant: buttonVariant }),
3224
+ button_previous: chunkPDMFWP5I_cjs.cn(
3225
+ chunkPDMFWP5I_cjs.buttonVariants({ variant: buttonVariant }),
3188
3226
  "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",
3189
3227
  defaultClassNames.button_previous
3190
3228
  ),
3191
- button_next: chunkWQ4HD5UD_cjs.cn(
3192
- chunkWQ4HD5UD_cjs.buttonVariants({ variant: buttonVariant }),
3229
+ button_next: chunkPDMFWP5I_cjs.cn(
3230
+ chunkPDMFWP5I_cjs.buttonVariants({ variant: buttonVariant }),
3193
3231
  "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",
3194
3232
  defaultClassNames.button_next
3195
3233
  ),
3196
- month_caption: chunkWQ4HD5UD_cjs.cn(
3234
+ month_caption: chunkPDMFWP5I_cjs.cn(
3197
3235
  "flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)",
3198
3236
  defaultClassNames.month_caption
3199
3237
  ),
3200
- dropdowns: chunkWQ4HD5UD_cjs.cn(
3238
+ dropdowns: chunkPDMFWP5I_cjs.cn(
3201
3239
  "w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5",
3202
3240
  defaultClassNames.dropdowns
3203
3241
  ),
3204
- dropdown_root: chunkWQ4HD5UD_cjs.cn(
3242
+ dropdown_root: chunkPDMFWP5I_cjs.cn(
3205
3243
  "relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md",
3206
3244
  defaultClassNames.dropdown_root
3207
3245
  ),
3208
- dropdown: chunkWQ4HD5UD_cjs.cn(
3246
+ dropdown: chunkPDMFWP5I_cjs.cn(
3209
3247
  "absolute bg-popover inset-0 opacity-0",
3210
3248
  defaultClassNames.dropdown
3211
3249
  ),
3212
- caption_label: chunkWQ4HD5UD_cjs.cn(
3250
+ caption_label: chunkPDMFWP5I_cjs.cn(
3213
3251
  "select-none font-medium",
3214
3252
  captionLayout === "label" ? "text-sm" : "rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:opacity-70 [&>svg]:size-3.5",
3215
3253
  defaultClassNames.caption_label
3216
3254
  ),
3217
3255
  table: "w-full border-collapse",
3218
- weekdays: chunkWQ4HD5UD_cjs.cn("flex", defaultClassNames.weekdays),
3219
- weekday: chunkWQ4HD5UD_cjs.cn(
3256
+ weekdays: chunkPDMFWP5I_cjs.cn("flex", defaultClassNames.weekdays),
3257
+ weekday: chunkPDMFWP5I_cjs.cn(
3220
3258
  "opacity-70 rounded-md flex-1 font-normal text-[0.8rem] select-none",
3221
3259
  defaultClassNames.weekday
3222
3260
  ),
3223
- week: chunkWQ4HD5UD_cjs.cn("flex w-full mt-2", defaultClassNames.week),
3224
- week_number_header: chunkWQ4HD5UD_cjs.cn(
3261
+ week: chunkPDMFWP5I_cjs.cn("flex w-full mt-2", defaultClassNames.week),
3262
+ week_number_header: chunkPDMFWP5I_cjs.cn(
3225
3263
  "select-none w-(--cell-size)",
3226
3264
  defaultClassNames.week_number_header
3227
3265
  ),
3228
- week_number: chunkWQ4HD5UD_cjs.cn(
3266
+ week_number: chunkPDMFWP5I_cjs.cn(
3229
3267
  "text-[0.8rem] select-none opacity-70",
3230
3268
  defaultClassNames.week_number
3231
3269
  ),
3232
- day: chunkWQ4HD5UD_cjs.cn(
3270
+ day: chunkPDMFWP5I_cjs.cn(
3233
3271
  "relative w-full h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none",
3234
3272
  props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-md" : "[&:first-child[data-selected=true]_button]:rounded-l-md",
3235
3273
  defaultClassNames.day
3236
3274
  ),
3237
- range_start: chunkWQ4HD5UD_cjs.cn(
3275
+ range_start: chunkPDMFWP5I_cjs.cn(
3238
3276
  "rounded-l-md bg-accent",
3239
3277
  defaultClassNames.range_start
3240
3278
  ),
3241
- range_middle: chunkWQ4HD5UD_cjs.cn("rounded-none", defaultClassNames.range_middle),
3242
- range_end: chunkWQ4HD5UD_cjs.cn("rounded-r-md bg-accent", defaultClassNames.range_end),
3243
- today: chunkWQ4HD5UD_cjs.cn(
3279
+ range_middle: chunkPDMFWP5I_cjs.cn("rounded-none", defaultClassNames.range_middle),
3280
+ range_end: chunkPDMFWP5I_cjs.cn("rounded-r-md bg-accent", defaultClassNames.range_end),
3281
+ today: chunkPDMFWP5I_cjs.cn(
3244
3282
  "bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",
3245
3283
  defaultClassNames.today
3246
3284
  ),
3247
- outside: chunkWQ4HD5UD_cjs.cn(
3285
+ outside: chunkPDMFWP5I_cjs.cn(
3248
3286
  "opacity-50",
3249
3287
  defaultClassNames.outside
3250
3288
  ),
3251
- disabled: chunkWQ4HD5UD_cjs.cn(
3289
+ disabled: chunkPDMFWP5I_cjs.cn(
3252
3290
  "opacity-50",
3253
3291
  defaultClassNames.disabled
3254
3292
  ),
3255
- hidden: chunkWQ4HD5UD_cjs.cn("invisible", defaultClassNames.hidden),
3293
+ hidden: chunkPDMFWP5I_cjs.cn("invisible", defaultClassNames.hidden),
3256
3294
  ...classNames
3257
3295
  },
3258
3296
  components: {
@@ -3262,7 +3300,7 @@ function Calendar({
3262
3300
  {
3263
3301
  "data-slot": "calendar",
3264
3302
  ref: rootRef,
3265
- className: chunkWQ4HD5UD_cjs.cn(className2),
3303
+ className: chunkPDMFWP5I_cjs.cn(className2),
3266
3304
  ...props2
3267
3305
  }
3268
3306
  );
@@ -3272,7 +3310,7 @@ function Calendar({
3272
3310
  return /* @__PURE__ */ React19__namespace.createElement(
3273
3311
  "svg",
3274
3312
  {
3275
- className: chunkWQ4HD5UD_cjs.cn("size-4", className2),
3313
+ className: chunkPDMFWP5I_cjs.cn("size-4", className2),
3276
3314
  viewBox: "0 0 24 24",
3277
3315
  fill: "none",
3278
3316
  stroke: "currentColor",
@@ -3288,7 +3326,7 @@ function Calendar({
3288
3326
  return /* @__PURE__ */ React19__namespace.createElement(
3289
3327
  "svg",
3290
3328
  {
3291
- className: chunkWQ4HD5UD_cjs.cn("size-4", className2),
3329
+ className: chunkPDMFWP5I_cjs.cn("size-4", className2),
3292
3330
  viewBox: "0 0 24 24",
3293
3331
  fill: "none",
3294
3332
  stroke: "currentColor",
@@ -3303,7 +3341,7 @@ function Calendar({
3303
3341
  return /* @__PURE__ */ React19__namespace.createElement(
3304
3342
  "svg",
3305
3343
  {
3306
- className: chunkWQ4HD5UD_cjs.cn("size-4", className2),
3344
+ className: chunkPDMFWP5I_cjs.cn("size-4", className2),
3307
3345
  viewBox: "0 0 24 24",
3308
3346
  fill: "none",
3309
3347
  stroke: "currentColor",
@@ -3337,7 +3375,7 @@ function CalendarDayButton({
3337
3375
  if (modifiers.focused) ref.current?.focus();
3338
3376
  }, [modifiers.focused]);
3339
3377
  return /* @__PURE__ */ React19__namespace.createElement(
3340
- chunkWQ4HD5UD_cjs.Button,
3378
+ chunkPDMFWP5I_cjs.Button,
3341
3379
  {
3342
3380
  ref,
3343
3381
  variant: "ghost",
@@ -3347,7 +3385,7 @@ function CalendarDayButton({
3347
3385
  "data-range-start": modifiers.range_start,
3348
3386
  "data-range-end": modifiers.range_end,
3349
3387
  "data-range-middle": modifiers.range_middle,
3350
- className: chunkWQ4HD5UD_cjs.cn(
3388
+ className: chunkPDMFWP5I_cjs.cn(
3351
3389
  // Core structure
3352
3390
  "flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal",
3353
3391
  // Selected states - uses CSS variables
@@ -3371,8 +3409,6 @@ function CalendarDayButton({
3371
3409
  }
3372
3410
  );
3373
3411
  }
3374
-
3375
- // src/inputs/DatePicker.tsx
3376
3412
  function formatDate(date, format) {
3377
3413
  if (!date) return "";
3378
3414
  const d = new Date(date);
@@ -3392,7 +3428,7 @@ function DatePickerDayButton({
3392
3428
  "button",
3393
3429
  {
3394
3430
  type: "button",
3395
- className: chunkWQ4HD5UD_cjs.cn(
3431
+ className: chunkPDMFWP5I_cjs.cn(
3396
3432
  "flex items-center justify-center h-8 w-8 rounded-md border-none bg-transparent cursor-pointer text-sm transition-colors",
3397
3433
  "hover:bg-accent",
3398
3434
  modifiers.selected && "bg-primary text-primary-foreground font-semibold",
@@ -3502,7 +3538,7 @@ function DatePicker({
3502
3538
  }, [hasInteracted]);
3503
3539
  const hasValue = Boolean(value);
3504
3540
  const displayValue = formatDate(value, format);
3505
- const combinedClassName = chunkWQ4HD5UD_cjs.cn("relative", className);
3541
+ const combinedClassName = chunkPDMFWP5I_cjs.cn("relative", className);
3506
3542
  return /* @__PURE__ */ React19__namespace.createElement("div", { className: combinedClassName }, /* @__PURE__ */ React19__namespace.createElement(
3507
3543
  "input",
3508
3544
  {
@@ -3517,19 +3553,12 @@ function DatePicker({
3517
3553
  "aria-hidden": "true"
3518
3554
  },
3519
3555
  /* @__PURE__ */ React19__namespace.createElement(
3520
- "svg",
3556
+ icon.Icon,
3521
3557
  {
3522
- xmlns: "http://www.w3.org/2000/svg",
3523
- width: "18",
3524
- height: "18",
3525
- viewBox: "0 0 24 24",
3526
- fill: "none",
3527
- stroke: "currentColor",
3528
- strokeLinecap: "round",
3529
- strokeLinejoin: "round",
3530
- strokeWidth: "2"
3531
- },
3532
- /* @__PURE__ */ React19__namespace.createElement("path", { d: "M8 2v4m8-4v4m5 8V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8M3 10h18m-5 10l2 2l4-4" })
3558
+ name: "material-symbols/edit-calendar-outline",
3559
+ apiKey: icon.DEFAULT_ICON_API_BASE_URL,
3560
+ size: 18
3561
+ }
3533
3562
  )
3534
3563
  ), /* @__PURE__ */ React19__namespace.createElement(PopoverTrigger, { asChild: true }, /* @__PURE__ */ React19__namespace.createElement(
3535
3564
  "input",
@@ -3537,11 +3566,15 @@ function DatePicker({
3537
3566
  ref: inputRef,
3538
3567
  id: props.id,
3539
3568
  type: "text",
3540
- className: chunkWQ4HD5UD_cjs.cn(
3541
- "flex h-9 w-full rounded-md border border-input bg-transparent py-1 text-base shadow-sm transition-colors",
3542
- "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
3543
- "disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
3544
- chunkWQ4HD5UD_cjs.INPUT_AUTOFILL_RESET_CLASSES,
3569
+ className: chunkPDMFWP5I_cjs.cn(
3570
+ "flex h-9 w-full rounded-md border",
3571
+ "border-input bg-transparent py-1 text-base",
3572
+ "shadow-sm transition-colors",
3573
+ "focus-visible:outline-none focus-visible:ring-1",
3574
+ "focus-visible:ring-ring",
3575
+ "disabled:cursor-not-allowed",
3576
+ "disabled:opacity-50 md:text-sm",
3577
+ chunkPDMFWP5I_cjs.INPUT_AUTOFILL_RESET_CLASSES,
3545
3578
  showIcon ? "pl-10" : "pl-3",
3546
3579
  clearable && value ? "pr-10" : "pr-3",
3547
3580
  !error && hasValue && "ring-2 ring-ring",
@@ -3682,7 +3715,7 @@ function TimePicker({
3682
3715
  };
3683
3716
  const hasValue = Boolean(value);
3684
3717
  const stepInSeconds = Math.max(1, minuteStep * 60);
3685
- return /* @__PURE__ */ React19__namespace.createElement("div", { className: chunkWQ4HD5UD_cjs.cn("relative", className) }, /* @__PURE__ */ React19__namespace.createElement("input", { type: "hidden", name, value }), /* @__PURE__ */ React19__namespace.createElement("div", { className: "relative" }, showIcon && /* @__PURE__ */ React19__namespace.createElement(
3718
+ return /* @__PURE__ */ React19__namespace.createElement("div", { className: chunkPDMFWP5I_cjs.cn("relative", className) }, /* @__PURE__ */ React19__namespace.createElement("input", { type: "hidden", name, value }), /* @__PURE__ */ React19__namespace.createElement("div", { className: "relative" }, showIcon && /* @__PURE__ */ React19__namespace.createElement(
3686
3719
  "span",
3687
3720
  {
3688
3721
  className: "absolute left-3 top-1/2 -translate-y-1/2 pointer-events-none",
@@ -3705,13 +3738,13 @@ function TimePicker({
3705
3738
  /* @__PURE__ */ React19__namespace.createElement("path", { d: "M12 6v6l4 2" })
3706
3739
  )
3707
3740
  ), /* @__PURE__ */ React19__namespace.createElement(
3708
- chunkWQ4HD5UD_cjs.Input,
3741
+ chunkPDMFWP5I_cjs.Input,
3709
3742
  {
3710
3743
  ref: inputRef,
3711
3744
  type: "time",
3712
- className: chunkWQ4HD5UD_cjs.cn(
3745
+ className: chunkPDMFWP5I_cjs.cn(
3713
3746
  "appearance-none [&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none",
3714
- chunkWQ4HD5UD_cjs.INPUT_AUTOFILL_RESET_CLASSES,
3747
+ chunkPDMFWP5I_cjs.INPUT_AUTOFILL_RESET_CLASSES,
3715
3748
  showIcon ? "pl-10" : "pl-3",
3716
3749
  clearable && value ? "pr-10" : "pr-3",
3717
3750
  !error && hasValue && "ring-2 ring-ring",
@@ -3730,7 +3763,7 @@ function TimePicker({
3730
3763
  ...props
3731
3764
  }
3732
3765
  ), clearable && value && !disabled && /* @__PURE__ */ React19__namespace.createElement(
3733
- chunkWQ4HD5UD_cjs.Button,
3766
+ chunkPDMFWP5I_cjs.Button,
3734
3767
  {
3735
3768
  type: "button",
3736
3769
  variant: "ghost",
@@ -3930,7 +3963,7 @@ function DateRangePicker({
3930
3963
  {
3931
3964
  type: "button",
3932
3965
  ...rest,
3933
- className: chunkWQ4HD5UD_cjs.cn(
3966
+ className: chunkPDMFWP5I_cjs.cn(
3934
3967
  "flex items-center justify-center h-8 w-8 rounded-md border-none bg-transparent cursor-pointer text-sm transition-colors",
3935
3968
  "hover:bg-accent",
3936
3969
  isRangeEndpoint && "bg-primary text-primary-foreground font-semibold",
@@ -3968,7 +4001,7 @@ function DateRangePicker({
3968
4001
  to: rangeEnd ?? void 0
3969
4002
  } : void 0;
3970
4003
  const displayValue = rangeStart && rangeEnd ? `${formatDate2(rangeStart, format)}${separator}${formatDate2(rangeEnd, format)}` : rangeStart ? formatDate2(rangeStart, format) : "";
3971
- const combinedClassName = chunkWQ4HD5UD_cjs.cn("relative", className);
4004
+ const combinedClassName = chunkPDMFWP5I_cjs.cn("relative", className);
3972
4005
  return /* @__PURE__ */ React19__namespace.createElement("div", { className: combinedClassName }, /* @__PURE__ */ React19__namespace.createElement(
3973
4006
  "input",
3974
4007
  {
@@ -4010,11 +4043,11 @@ function DateRangePicker({
4010
4043
  ref: inputRef,
4011
4044
  id: props.id,
4012
4045
  type: "text",
4013
- className: chunkWQ4HD5UD_cjs.cn(
4046
+ className: chunkPDMFWP5I_cjs.cn(
4014
4047
  "flex h-9 w-full rounded-md border border-input bg-transparent py-1 text-base shadow-sm transition-colors",
4015
4048
  "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
4016
4049
  "disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
4017
- chunkWQ4HD5UD_cjs.INPUT_AUTOFILL_RESET_CLASSES,
4050
+ chunkPDMFWP5I_cjs.INPUT_AUTOFILL_RESET_CLASSES,
4018
4051
  showIcon ? "pl-10" : "pl-3",
4019
4052
  clearable && (rangeStart || rangeEnd) ? "pr-10" : "pr-3",
4020
4053
  !error && hasValue && "ring-2 ring-ring",
@@ -4090,5 +4123,5 @@ exports.Select = Select2;
4090
4123
  exports.Switch = Switch2;
4091
4124
  exports.TextArea = TextArea;
4092
4125
  exports.TimePicker = TimePicker;
4093
- //# sourceMappingURL=chunk-4K6J2DOK.cjs.map
4094
- //# sourceMappingURL=chunk-4K6J2DOK.cjs.map
4126
+ //# sourceMappingURL=chunk-3VSPIJNK.cjs.map
4127
+ //# sourceMappingURL=chunk-3VSPIJNK.cjs.map