@postxl/ui-components 1.6.0 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@ import { clsx } from "clsx";
2
2
  import { twMerge } from "tailwind-merge";
3
3
  import * as AccordionPrimitive from "@radix-ui/react-accordion";
4
4
  import { ArrowLeftIcon, ArrowRightIcon, CalendarIcon, CaretSortIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CircleIcon, Cross1Icon, Cross2Icon, DotFilledIcon, DotsHorizontalIcon, DoubleArrowLeftIcon, DoubleArrowRightIcon, DragHandleDots2Icon, EnterFullScreenIcon, MagnifyingGlassIcon } from "@radix-ui/react-icons";
5
+ import * as React$60 from "react";
5
6
  import * as React$59 from "react";
6
7
  import * as React$58 from "react";
7
8
  import * as React$57 from "react";
@@ -70,7 +71,7 @@ import * as AvatarPrimitive from "@radix-ui/react-avatar";
70
71
  import { DayPicker, getDefaultClassNames } from "react-day-picker";
71
72
  import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
72
73
  import useEmblaCarousel from "embla-carousel-react";
73
- import { BaselineIcon, BookmarkIcon, CalendarIcon as CalendarIcon$1, Check, CheckIcon as CheckIcon$1, CheckSquareIcon, ChevronDownIcon as ChevronDownIcon$1, ChevronRightIcon as ChevronRightIcon$1, ChevronUpIcon as ChevronUpIcon$1, CircleCheckIcon, CopyIcon, DownloadIcon, EraserIcon, EyeIcon, EyeOffIcon, FilterX, GlobeIcon, GripHorizontalIcon, HashIcon, ListChecksIcon, ListIcon, ListTreeIcon, MessageSquareIcon, MinusIcon, PanelLeftIcon, PanelRightIcon, PencilIcon, PinIcon, PinOffIcon, PlusIcon, SaveIcon, Settings2Icon, SquareIcon, TagIcon, TextInitialIcon, Trash2Icon, TrashIcon, XIcon } from "lucide-react";
74
+ import { BaselineIcon, BookmarkIcon, CalendarIcon as CalendarIcon$1, Check, CheckIcon as CheckIcon$1, CheckSquareIcon, ChevronDownIcon as ChevronDownIcon$1, ChevronRightIcon as ChevronRightIcon$1, ChevronUpIcon as ChevronUpIcon$1, CircleCheckIcon, ClipboardCopy, CopyIcon, DownloadIcon, EraserIcon, EyeIcon, EyeOffIcon, FilterX, GlobeIcon, GripHorizontalIcon, GripVerticalIcon, HashIcon, ListChecksIcon, ListIcon, ListTreeIcon, MessageSquareIcon, MinusIcon, PanelLeftIcon, PanelRightIcon, PencilIcon, PinIcon, PinOffIcon, PlusIcon, SaveIcon, Settings2Icon, SquareIcon, TagIcon, TextInitialIcon, Trash2Icon, TrashIcon, XIcon } from "lucide-react";
74
75
  import * as CollapsePrimitive from "@radix-ui/react-collapsible";
75
76
  import { Command as Command$1 } from "cmdk";
76
77
  import * as DialogPrimitive from "@radix-ui/react-dialog";
@@ -128,13 +129,13 @@ function testId(baseId, suffix) {
128
129
  //#endregion
129
130
  //#region src/accordion/accordion.tsx
130
131
  const Accordion = AccordionPrimitive.Root;
131
- const AccordionItem = React$59.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Item, {
132
+ const AccordionItem = React$60.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Item, {
132
133
  ref,
133
134
  className: cn("border-b", className),
134
135
  ...props
135
136
  }));
136
137
  AccordionItem.displayName = "AccordionItem";
137
- const AccordionTrigger = React$59.forwardRef(({ className, children,...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, {
138
+ const AccordionTrigger = React$60.forwardRef(({ className, children,...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, {
138
139
  className: "flex",
139
140
  children: /* @__PURE__ */ jsxs(AccordionPrimitive.Trigger, {
140
141
  ref,
@@ -144,7 +145,7 @@ const AccordionTrigger = React$59.forwardRef(({ className, children,...props },
144
145
  })
145
146
  }));
146
147
  AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
147
- const AccordionContent = React$59.forwardRef(({ className, children,...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Content, {
148
+ const AccordionContent = React$60.forwardRef(({ className, children,...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Content, {
148
149
  ref,
149
150
  className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
150
151
  ...props,
@@ -164,21 +165,21 @@ const alertVariants = cva("relative w-full rounded-lg border px-4 py-3 text-sm [
164
165
  } },
165
166
  defaultVariants: { variant: "default" }
166
167
  });
167
- const Alert = React$58.forwardRef(({ className, variant,...props }, ref) => /* @__PURE__ */ jsx("div", {
168
+ const Alert = React$59.forwardRef(({ className, variant,...props }, ref) => /* @__PURE__ */ jsx("div", {
168
169
  ref,
169
170
  role: "alert",
170
171
  className: cn(alertVariants({ variant }), className),
171
172
  ...props
172
173
  }));
173
174
  Alert.displayName = "Alert";
174
- const AlertTitle = React$58.forwardRef(({ className, children,...props }, ref) => /* @__PURE__ */ jsx("h5", {
175
+ const AlertTitle = React$59.forwardRef(({ className, children,...props }, ref) => /* @__PURE__ */ jsx("h5", {
175
176
  ref,
176
177
  className: cn("mb-1 font-medium leading-none tracking-tight", className),
177
178
  ...props,
178
179
  children
179
180
  }));
180
181
  AlertTitle.displayName = "AlertTitle";
181
- const AlertDescription = React$58.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
182
+ const AlertDescription = React$59.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
182
183
  ref,
183
184
  className: cn("text-sm [&_p]:leading-relaxed", className),
184
185
  ...props
@@ -238,13 +239,13 @@ function Button({ className, variant, size, asChild = false, __e2e_test_id__,...
238
239
  const AlertDialog = AlertDialogPrimitive.Root;
239
240
  const AlertDialogTrigger = AlertDialogPrimitive.Trigger;
240
241
  const AlertDialogPortal = AlertDialogPrimitive.Portal;
241
- const AlertDialogOverlay = React$57.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Overlay, {
242
+ const AlertDialogOverlay = React$58.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Overlay, {
242
243
  className: cn("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", className),
243
244
  ...props,
244
245
  ref
245
246
  }));
246
247
  AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
247
- const AlertDialogContent = React$57.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [/* @__PURE__ */ jsx(AlertDialogOverlay, {}), /* @__PURE__ */ jsx(AlertDialogPrimitive.Content, {
248
+ const AlertDialogContent = React$58.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsxs(AlertDialogPortal, { children: [/* @__PURE__ */ jsx(AlertDialogOverlay, {}), /* @__PURE__ */ jsx(AlertDialogPrimitive.Content, {
248
249
  ref,
249
250
  className: cn("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg", className),
250
251
  ...props
@@ -260,25 +261,25 @@ const AlertDialogFooter = ({ className,...props }) => /* @__PURE__ */ jsx("div",
260
261
  ...props
261
262
  });
262
263
  AlertDialogFooter.displayName = "AlertDialogFooter";
263
- const AlertDialogTitle = React$57.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Title, {
264
+ const AlertDialogTitle = React$58.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Title, {
264
265
  ref,
265
266
  className: cn("text-lg font-semibold", className),
266
267
  ...props
267
268
  }));
268
269
  AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
269
- const AlertDialogDescription = React$57.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Description, {
270
+ const AlertDialogDescription = React$58.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Description, {
270
271
  ref,
271
272
  className: cn("text-sm text-muted-foreground", className),
272
273
  ...props
273
274
  }));
274
275
  AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
275
- const AlertDialogAction = React$57.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Action, {
276
+ const AlertDialogAction = React$58.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Action, {
276
277
  ref,
277
278
  className: cn(buttonVariants(), className),
278
279
  ...props
279
280
  }));
280
281
  AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
281
- const AlertDialogCancel = React$57.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Cancel, {
282
+ const AlertDialogCancel = React$58.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AlertDialogPrimitive.Cancel, {
282
283
  ref,
283
284
  className: cn(buttonVariants({ variant: "outline" }), "mt-2 sm:mt-0", className),
284
285
  ...props
@@ -287,19 +288,19 @@ AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
287
288
 
288
289
  //#endregion
289
290
  //#region src/avatar/avatar.tsx
290
- const Avatar = React$56.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AvatarPrimitive.Root, {
291
+ const Avatar = React$57.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AvatarPrimitive.Root, {
291
292
  ref,
292
293
  className: cn("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full", className),
293
294
  ...props
294
295
  }));
295
296
  Avatar.displayName = AvatarPrimitive.Root.displayName;
296
- const AvatarImage = React$56.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AvatarPrimitive.Image, {
297
+ const AvatarImage = React$57.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AvatarPrimitive.Image, {
297
298
  ref,
298
299
  className: cn("aspect-square h-full w-full", className),
299
300
  ...props
300
301
  }));
301
302
  AvatarImage.displayName = AvatarPrimitive.Image.displayName;
302
- const AvatarFallback = React$56.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AvatarPrimitive.Fallback, {
303
+ const AvatarFallback = React$57.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(AvatarPrimitive.Fallback, {
303
304
  ref,
304
305
  className: cn("flex h-full w-full items-center justify-center rounded-full bg-muted", className),
305
306
  ...props
@@ -345,25 +346,25 @@ function Badge({ className, variant, size, asChild = false,...props }) {
345
346
 
346
347
  //#endregion
347
348
  //#region src/breadcrumb/breadcrumb.tsx
348
- const Breadcrumb = React$55.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx("nav", {
349
+ const Breadcrumb = React$56.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx("nav", {
349
350
  ref,
350
351
  "aria-label": "breadcrumb",
351
352
  ...props
352
353
  }));
353
354
  Breadcrumb.displayName = "Breadcrumb";
354
- const BreadcrumbList = React$55.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("ol", {
355
+ const BreadcrumbList = React$56.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("ol", {
355
356
  ref,
356
357
  className: cn("flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5", className),
357
358
  ...props
358
359
  }));
359
360
  BreadcrumbList.displayName = "BreadcrumbList";
360
- const BreadcrumbItem = React$55.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("li", {
361
+ const BreadcrumbItem = React$56.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("li", {
361
362
  ref,
362
363
  className: cn("inline-flex items-center gap-1.5", className),
363
364
  ...props
364
365
  }));
365
366
  BreadcrumbItem.displayName = "BreadcrumbItem";
366
- const BreadcrumbLink = React$55.forwardRef(({ asChild, className,...props }, ref) => {
367
+ const BreadcrumbLink = React$56.forwardRef(({ asChild, className,...props }, ref) => {
367
368
  const Comp = asChild ? Slot : "a";
368
369
  return /* @__PURE__ */ jsx(Comp, {
369
370
  ref,
@@ -372,7 +373,7 @@ const BreadcrumbLink = React$55.forwardRef(({ asChild, className,...props }, ref
372
373
  });
373
374
  });
374
375
  BreadcrumbLink.displayName = "BreadcrumbLink";
375
- const BreadcrumbPage = React$55.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("span", {
376
+ const BreadcrumbPage = React$56.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("span", {
376
377
  ref,
377
378
  "aria-disabled": "true",
378
379
  "aria-current": "page",
@@ -402,8 +403,8 @@ BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
402
403
  //#region src/calendar/calendar.tsx
403
404
  function Calendar({ className, classNames, showOutsideDays = true, captionLayout = "label", buttonVariant = "ghost", showYearNavigation = false, formatters, components, __e2e_test_id__,...props }) {
404
405
  const defaultClassNames = getDefaultClassNames();
405
- const [rangeSelectionStep, setRangeSelectionStep] = React$54.useState("from");
406
- const handleDayClick = React$54.useCallback((day, modifiers, e) => {
406
+ const [rangeSelectionStep, setRangeSelectionStep] = React$55.useState("from");
407
+ const handleDayClick = React$55.useCallback((day, modifiers, e) => {
407
408
  if (props.mode === "range") {
408
409
  const range = props.selected;
409
410
  if (rangeSelectionStep === "from") {
@@ -433,8 +434,8 @@ function Calendar({ className, classNames, showOutsideDays = true, captionLayout
433
434
  fromMonth = props.startMonth ?? new Date(nowYear - 100, 0);
434
435
  toMonth = props.endMonth ?? new Date(nowYear + 100, 11);
435
436
  }
436
- const [currentMonth, setCurrentMonth] = React$54.useState(props.defaultMonth ?? props.month ?? new Date());
437
- React$54.useEffect(() => {
437
+ const [currentMonth, setCurrentMonth] = React$55.useState(props.defaultMonth ?? props.month ?? new Date());
438
+ React$55.useEffect(() => {
438
439
  if (props.month) setCurrentMonth(props.month);
439
440
  }, [props.month]);
440
441
  const addMonths = (date, months) => {
@@ -578,8 +579,8 @@ function Calendar({ className, classNames, showOutsideDays = true, captionLayout
578
579
  }
579
580
  function CalendarDayButton({ className, day, modifiers,...props }) {
580
581
  const defaultClassNames = getDefaultClassNames();
581
- const ref = React$54.useRef(null);
582
- React$54.useEffect(() => {
582
+ const ref = React$55.useRef(null);
583
+ React$55.useEffect(() => {
583
584
  if (modifiers.focused) ref.current?.focus();
584
585
  }, [modifiers.focused]);
585
586
  return /* @__PURE__ */ jsx(Button, {
@@ -598,38 +599,38 @@ function CalendarDayButton({ className, day, modifiers,...props }) {
598
599
 
599
600
  //#endregion
600
601
  //#region src/card/card.tsx
601
- const Card = React$53.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
602
+ const Card = React$54.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
602
603
  ref,
603
604
  className: cn("rounded-xl border bg-card text-card-foreground shadow", className),
604
605
  ...props
605
606
  }));
606
607
  Card.displayName = "Card";
607
- const CardHeader = React$53.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
608
+ const CardHeader = React$54.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
608
609
  ref,
609
610
  className: cn("flex flex-col space-y-1.5 p-6", className),
610
611
  ...props
611
612
  }));
612
613
  CardHeader.displayName = "CardHeader";
613
- const CardTitle = React$53.forwardRef(({ className, children,...props }, ref) => /* @__PURE__ */ jsx("h3", {
614
+ const CardTitle = React$54.forwardRef(({ className, children,...props }, ref) => /* @__PURE__ */ jsx("h3", {
614
615
  ref,
615
616
  className: cn("font-semibold leading-none tracking-tight", className),
616
617
  ...props,
617
618
  children
618
619
  }));
619
620
  CardTitle.displayName = "CardTitle";
620
- const CardDescription = React$53.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("p", {
621
+ const CardDescription = React$54.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("p", {
621
622
  ref,
622
623
  className: cn("text-sm text-muted-foreground", className),
623
624
  ...props
624
625
  }));
625
626
  CardDescription.displayName = "CardDescription";
626
- const CardContent = React$53.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
627
+ const CardContent = React$54.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
627
628
  ref,
628
629
  className: cn("p-6 pt-0", className),
629
630
  ...props
630
631
  }));
631
632
  CardContent.displayName = "CardContent";
632
- const CardFooter = React$53.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
633
+ const CardFooter = React$54.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
633
634
  ref,
634
635
  className: cn("flex items-center p-6 pt-0", className),
635
636
  ...props
@@ -640,7 +641,7 @@ CardFooter.displayName = "CardFooter";
640
641
  //#region src/card-hover/card-hover.tsx
641
642
  const HoverCard = HoverCardPrimitive.Root;
642
643
  const HoverCardTrigger = HoverCardPrimitive.Trigger;
643
- const HoverCardContent = React$52.forwardRef(({ className, align = "center", sideOffset = 4,...props }, ref) => /* @__PURE__ */ jsx(HoverCardPrimitive.Content, {
644
+ const HoverCardContent = React$53.forwardRef(({ className, align = "center", sideOffset = 4,...props }, ref) => /* @__PURE__ */ jsx(HoverCardPrimitive.Content, {
644
645
  ref,
645
646
  align,
646
647
  sideOffset,
@@ -651,31 +652,31 @@ HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
651
652
 
652
653
  //#endregion
653
654
  //#region src/carousel/carousel.tsx
654
- const CarouselContext = React$51.createContext(null);
655
+ const CarouselContext = React$52.createContext(null);
655
656
  function useCarousel() {
656
- const context = React$51.useContext(CarouselContext);
657
+ const context = React$52.useContext(CarouselContext);
657
658
  if (!context) throw new Error("useCarousel must be used within a <Carousel />");
658
659
  return context;
659
660
  }
660
- const Carousel = React$51.forwardRef(({ orientation = "horizontal", opts, setApi, plugins, className, children,...props }, ref) => {
661
+ const Carousel = React$52.forwardRef(({ orientation = "horizontal", opts, setApi, plugins, className, children,...props }, ref) => {
661
662
  const [carouselRef, api] = useEmblaCarousel({
662
663
  ...opts,
663
664
  axis: orientation === "horizontal" ? "x" : "y"
664
665
  }, plugins);
665
- const [canScrollPrev, setCanScrollPrev] = React$51.useState(false);
666
- const [canScrollNext, setCanScrollNext] = React$51.useState(false);
667
- const onSelect = React$51.useCallback(() => {
666
+ const [canScrollPrev, setCanScrollPrev] = React$52.useState(false);
667
+ const [canScrollNext, setCanScrollNext] = React$52.useState(false);
668
+ const onSelect = React$52.useCallback(() => {
668
669
  if (!api) return;
669
670
  setCanScrollPrev(api.canScrollPrev());
670
671
  setCanScrollNext(api.canScrollNext());
671
672
  }, [api]);
672
- const scrollPrev = React$51.useCallback(() => {
673
+ const scrollPrev = React$52.useCallback(() => {
673
674
  api?.scrollPrev();
674
675
  }, [api]);
675
- const scrollNext = React$51.useCallback(() => {
676
+ const scrollNext = React$52.useCallback(() => {
676
677
  api?.scrollNext();
677
678
  }, [api]);
678
- const handleKeyDown = React$51.useCallback((event) => {
679
+ const handleKeyDown = React$52.useCallback((event) => {
679
680
  if (event.key === "ArrowLeft") {
680
681
  event.preventDefault();
681
682
  scrollPrev();
@@ -684,11 +685,11 @@ const Carousel = React$51.forwardRef(({ orientation = "horizontal", opts, setApi
684
685
  scrollNext();
685
686
  }
686
687
  }, [scrollPrev, scrollNext]);
687
- React$51.useEffect(() => {
688
+ React$52.useEffect(() => {
688
689
  if (!api || !setApi) return;
689
690
  setApi(api);
690
691
  }, [api, setApi]);
691
- React$51.useEffect(() => {
692
+ React$52.useEffect(() => {
692
693
  if (!api) return;
693
694
  onSelect();
694
695
  api.on("reInit", onSelect);
@@ -729,7 +730,7 @@ const Carousel = React$51.forwardRef(({ orientation = "horizontal", opts, setApi
729
730
  });
730
731
  });
731
732
  Carousel.displayName = "Carousel";
732
- const CarouselContent = React$51.forwardRef(({ className,...props }, ref) => {
733
+ const CarouselContent = React$52.forwardRef(({ className,...props }, ref) => {
733
734
  const { carouselRef, orientation } = useCarousel();
734
735
  return /* @__PURE__ */ jsx("div", {
735
736
  ref: carouselRef,
@@ -742,7 +743,7 @@ const CarouselContent = React$51.forwardRef(({ className,...props }, ref) => {
742
743
  });
743
744
  });
744
745
  CarouselContent.displayName = "CarouselContent";
745
- const CarouselItem = React$51.forwardRef(({ className,...props }, ref) => {
746
+ const CarouselItem = React$52.forwardRef(({ className,...props }, ref) => {
746
747
  const { orientation } = useCarousel();
747
748
  return /* @__PURE__ */ jsx("div", {
748
749
  ref,
@@ -752,7 +753,7 @@ const CarouselItem = React$51.forwardRef(({ className,...props }, ref) => {
752
753
  });
753
754
  });
754
755
  CarouselItem.displayName = "CarouselItem";
755
- const CarouselPrevious = React$51.forwardRef(({ className, variant = "outline", size = "icon",...props }, ref) => {
756
+ const CarouselPrevious = React$52.forwardRef(({ className, variant = "outline", size = "icon",...props }, ref) => {
756
757
  const { orientation, scrollPrev, canScrollPrev } = useCarousel();
757
758
  return /* @__PURE__ */ jsxs(Button, {
758
759
  ref,
@@ -769,7 +770,7 @@ const CarouselPrevious = React$51.forwardRef(({ className, variant = "outline",
769
770
  });
770
771
  });
771
772
  CarouselPrevious.displayName = "CarouselPrevious";
772
- const CarouselNext = React$51.forwardRef(({ className, variant = "outline", size = "icon",...props }, ref) => {
773
+ const CarouselNext = React$52.forwardRef(({ className, variant = "outline", size = "icon",...props }, ref) => {
773
774
  const { orientation, scrollNext, canScrollNext } = useCarousel();
774
775
  return /* @__PURE__ */ jsxs(Button, {
775
776
  ref,
@@ -1219,7 +1220,7 @@ function DialogDescription({ className,...props }) {
1219
1220
 
1220
1221
  //#endregion
1221
1222
  //#region src/command-palette/command-palette.tsx
1222
- const CommandPalette = React$50.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(Command$1, {
1223
+ const CommandPalette = React$51.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(Command$1, {
1223
1224
  ref,
1224
1225
  className: cn("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground", className),
1225
1226
  ...props
@@ -1237,7 +1238,7 @@ const CommandPaletteDialog = ({ children,...props }) => {
1237
1238
  })
1238
1239
  });
1239
1240
  };
1240
- const CommandPaletteInput = React$50.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsxs("div", {
1241
+ const CommandPaletteInput = React$51.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsxs("div", {
1241
1242
  className: "flex items-center border-b px-3",
1242
1243
  "data-cmdk-input-wrapper": "",
1243
1244
  children: [/* @__PURE__ */ jsx(MagnifyingGlassIcon, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }), /* @__PURE__ */ jsx(Command$1.Input, {
@@ -1247,31 +1248,31 @@ const CommandPaletteInput = React$50.forwardRef(({ className,...props }, ref) =>
1247
1248
  })]
1248
1249
  }));
1249
1250
  CommandPaletteInput.displayName = Command$1.Input.displayName;
1250
- const CommandPaletteList = React$50.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(Command$1.List, {
1251
+ const CommandPaletteList = React$51.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(Command$1.List, {
1251
1252
  ref,
1252
1253
  className: cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className),
1253
1254
  ...props
1254
1255
  }));
1255
1256
  CommandPaletteList.displayName = Command$1.List.displayName;
1256
- const CommandPaletteEmpty = React$50.forwardRef((props, ref) => /* @__PURE__ */ jsx(Command$1.Empty, {
1257
+ const CommandPaletteEmpty = React$51.forwardRef((props, ref) => /* @__PURE__ */ jsx(Command$1.Empty, {
1257
1258
  ref,
1258
1259
  className: "py-6 text-center text-sm",
1259
1260
  ...props
1260
1261
  }));
1261
1262
  CommandPaletteEmpty.displayName = Command$1.Empty.displayName;
1262
- const CommandPaletteGroup = React$50.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(Command$1.Group, {
1263
+ const CommandPaletteGroup = React$51.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(Command$1.Group, {
1263
1264
  ref,
1264
1265
  className: cn("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground", className),
1265
1266
  ...props
1266
1267
  }));
1267
1268
  CommandPaletteGroup.displayName = Command$1.Group.displayName;
1268
- const CommandPaletteSeparator = React$50.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(Command$1.Separator, {
1269
+ const CommandPaletteSeparator = React$51.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(Command$1.Separator, {
1269
1270
  ref,
1270
1271
  className: cn("-mx-1 h-px bg-border", className),
1271
1272
  ...props
1272
1273
  }));
1273
1274
  CommandPaletteSeparator.displayName = Command$1.Separator.displayName;
1274
- const CommandPaletteItem = React$50.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(Command$1.Item, {
1275
+ const CommandPaletteItem = React$51.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(Command$1.Item, {
1275
1276
  ref,
1276
1277
  className: cn("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50", className),
1277
1278
  ...props
@@ -1347,8 +1348,8 @@ const frameworks = [
1347
1348
  }
1348
1349
  ];
1349
1350
  function ComboboxDemo() {
1350
- const [open, setOpen] = React$49.useState(false);
1351
- const [value, setValue] = React$49.useState("");
1351
+ const [open, setOpen] = React$50.useState(false);
1352
+ const [value, setValue] = React$50.useState("");
1352
1353
  return /* @__PURE__ */ jsxs(Popover, {
1353
1354
  open,
1354
1355
  onOpenChange: setOpen,
@@ -1588,32 +1589,32 @@ const ContextMenuGroup = ContextMenuPrimitive.Group;
1588
1589
  const ContextMenuPortal = ContextMenuPrimitive.Portal;
1589
1590
  const ContextMenuSub = ContextMenuPrimitive.Sub;
1590
1591
  const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
1591
- const ContextMenuSubTrigger = React$48.forwardRef(({ className, inset, children,...props }, ref) => /* @__PURE__ */ jsxs(ContextMenuPrimitive.SubTrigger, {
1592
+ const ContextMenuSubTrigger = React$49.forwardRef(({ className, inset, children,...props }, ref) => /* @__PURE__ */ jsxs(ContextMenuPrimitive.SubTrigger, {
1592
1593
  ref,
1593
1594
  className: cn("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground", inset && "pl-8", className),
1594
1595
  ...props,
1595
1596
  children: [children, /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto h-4 w-4" })]
1596
1597
  }));
1597
1598
  ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
1598
- const ContextMenuSubContent = React$48.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.SubContent, {
1599
+ const ContextMenuSubContent = React$49.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.SubContent, {
1599
1600
  ref,
1600
1601
  className: cn("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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", className),
1601
1602
  ...props
1602
1603
  }));
1603
1604
  ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
1604
- const ContextMenuContent = React$48.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(ContextMenuPrimitive.Content, {
1605
+ const ContextMenuContent = React$49.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(ContextMenuPrimitive.Content, {
1605
1606
  ref,
1606
1607
  className: cn("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md 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", className),
1607
1608
  ...props
1608
1609
  }) }));
1609
1610
  ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
1610
- const ContextMenuItem = React$48.forwardRef(({ className, inset,...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Item, {
1611
+ const ContextMenuItem = React$49.forwardRef(({ className, inset,...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Item, {
1611
1612
  ref,
1612
1613
  className: cn("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", inset && "pl-8", className),
1613
1614
  ...props
1614
1615
  }));
1615
1616
  ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
1616
- const ContextMenuCheckboxItem = React$48.forwardRef(({ className, children, checked,...props }, ref) => /* @__PURE__ */ jsxs(ContextMenuPrimitive.CheckboxItem, {
1617
+ const ContextMenuCheckboxItem = React$49.forwardRef(({ className, children, checked,...props }, ref) => /* @__PURE__ */ jsxs(ContextMenuPrimitive.CheckboxItem, {
1617
1618
  ref,
1618
1619
  className: cn("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className),
1619
1620
  checked,
@@ -1624,7 +1625,7 @@ const ContextMenuCheckboxItem = React$48.forwardRef(({ className, children, chec
1624
1625
  }), children]
1625
1626
  }));
1626
1627
  ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
1627
- const ContextMenuRadioItem = React$48.forwardRef(({ className, children,...props }, ref) => /* @__PURE__ */ jsxs(ContextMenuPrimitive.RadioItem, {
1628
+ const ContextMenuRadioItem = React$49.forwardRef(({ className, children,...props }, ref) => /* @__PURE__ */ jsxs(ContextMenuPrimitive.RadioItem, {
1628
1629
  ref,
1629
1630
  className: cn("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className),
1630
1631
  ...props,
@@ -1634,13 +1635,13 @@ const ContextMenuRadioItem = React$48.forwardRef(({ className, children,...props
1634
1635
  }), children]
1635
1636
  }));
1636
1637
  ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
1637
- const ContextMenuLabel = React$48.forwardRef(({ className, inset,...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Label, {
1638
+ const ContextMenuLabel = React$49.forwardRef(({ className, inset,...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Label, {
1638
1639
  ref,
1639
1640
  className: cn("px-2 py-1.5 text-sm font-semibold text-foreground", inset && "pl-8", className),
1640
1641
  ...props
1641
1642
  }));
1642
1643
  ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
1643
- const ContextMenuSeparator = React$48.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Separator, {
1644
+ const ContextMenuSeparator = React$49.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(ContextMenuPrimitive.Separator, {
1644
1645
  ref,
1645
1646
  className: cn("-mx-1 my-1 h-px bg-border", className),
1646
1647
  ...props
@@ -1785,7 +1786,7 @@ function DropdownMenuSubContent({ className,...props }) {
1785
1786
  const TooltipProvider = TooltipPrimitive.Provider;
1786
1787
  const Tooltip = TooltipPrimitive.Root;
1787
1788
  const TooltipTrigger = TooltipPrimitive.Trigger;
1788
- const TooltipContent = React$47.forwardRef(({ className, sideOffset = 4,...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(TooltipPrimitive.Content, {
1789
+ const TooltipContent = React$48.forwardRef(({ className, sideOffset = 4,...props }, ref) => /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsx(TooltipPrimitive.Content, {
1789
1790
  ref,
1790
1791
  sideOffset,
1791
1792
  className: cn("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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", className),
@@ -2270,7 +2271,7 @@ const inputVariants = cva("file:text-foreground placeholder:text-muted-foregroun
2270
2271
  } },
2271
2272
  defaultVariants: { variant: "default" }
2272
2273
  });
2273
- const Input = React$46.forwardRef(({ className, type, variant, __e2e_test_id__, onEnter, wrapperClassName,...props }, ref) => {
2274
+ const Input = React$47.forwardRef(({ className, type, variant, __e2e_test_id__, onEnter, wrapperClassName,...props }, ref) => {
2274
2275
  const input = /* @__PURE__ */ jsx("input", {
2275
2276
  type,
2276
2277
  "data-slot": "input",
@@ -2352,10 +2353,10 @@ const numberInputWrapperVariants = cva("border-input bg-background grid grid-col
2352
2353
  } },
2353
2354
  defaultVariants: { variant: "default" }
2354
2355
  });
2355
- const NumberInput = React$45.forwardRef(({ className, wrapperClassName, prefix, suffix, variant, showSpinButtons = false, __e2e_test_id__, onEnter, onChange, format: format$1, value: controlledValue,...props }, ref) => {
2356
- const [isFocused, setIsFocused] = React$45.useState(false);
2357
- const [inputString, setInputString] = React$45.useState("");
2358
- const intlFormatter = React$45.useMemo(() => {
2356
+ const NumberInput = React$46.forwardRef(({ className, wrapperClassName, prefix, suffix, variant, showSpinButtons = false, __e2e_test_id__, onEnter, onChange, format: format$1, value: controlledValue,...props }, ref) => {
2357
+ const [isFocused, setIsFocused] = React$46.useState(false);
2358
+ const [inputString, setInputString] = React$46.useState("");
2359
+ const intlFormatter = React$46.useMemo(() => {
2359
2360
  if (!format$1 || typeof format$1 === "function") return void 0;
2360
2361
  return new Intl.NumberFormat(format$1.locale, format$1.options);
2361
2362
  }, [format$1]);
@@ -2402,7 +2403,7 @@ const NumberInput = React$45.forwardRef(({ className, wrapperClassName, prefix,
2402
2403
  setInputString("");
2403
2404
  props.onBlur?.(e);
2404
2405
  };
2405
- const displayValue = React$45.useMemo(() => {
2406
+ const displayValue = React$46.useMemo(() => {
2406
2407
  if (isFocused && format$1) {
2407
2408
  if (inputString !== "") return inputString;
2408
2409
  if (controlledValue !== void 0) {
@@ -2479,26 +2480,26 @@ function DataGridCellWrapper({ cell, table, rowIndex, columnId, isEditing, isFoc
2479
2480
  const rowOriginal = cell?.row?.original ?? {};
2480
2481
  const colCellMeta = cell?.column?.columnDef?.meta;
2481
2482
  const align = colCellMeta?.align ?? "left";
2482
- const editableResolver = React$44.useMemo(() => {
2483
+ const editableResolver = React$45.useMemo(() => {
2483
2484
  const v = colCellMeta?.editable;
2484
2485
  if (v === void 0) return () => true;
2485
2486
  return typeof v === "function" ? v : () => Boolean(v);
2486
2487
  }, [colCellMeta?.editable]);
2487
2488
  const isEditable = editableResolver(rowOriginal);
2488
- const classNameResolver = React$44.useMemo(() => {
2489
+ const classNameResolver = React$45.useMemo(() => {
2489
2490
  const v = colCellMeta?.className;
2490
2491
  return typeof v === "function" ? v : () => v;
2491
2492
  }, [colCellMeta?.className]);
2492
2493
  const colCellClassName = classNameResolver(rowOriginal);
2493
2494
  const rowClassNameMeta = meta?.rowClassName;
2494
- const rowCellClassName = React$44.useMemo(() => {
2495
+ const rowCellClassName = React$45.useMemo(() => {
2495
2496
  if (!rowClassNameMeta) return void 0;
2496
2497
  if (typeof rowClassNameMeta === "function") return rowClassNameMeta(cell.row);
2497
2498
  return rowClassNameMeta;
2498
2499
  }, [rowClassNameMeta, cell.row]);
2499
2500
  const isSearchMatch = meta?.getIsSearchMatch?.(rowIndex, columnId) ?? false;
2500
2501
  const isActiveSearchMatch = meta?.getIsActiveSearchMatch?.(rowIndex, columnId) ?? false;
2501
- const onClick = React$44.useCallback((event) => {
2502
+ const onClick = React$45.useCallback((event) => {
2502
2503
  if (!isEditing) {
2503
2504
  event.preventDefault();
2504
2505
  onClickProp?.(event);
@@ -2511,7 +2512,7 @@ function DataGridCellWrapper({ cell, table, rowIndex, columnId, isEditing, isFoc
2511
2512
  isEditing,
2512
2513
  onClickProp
2513
2514
  ]);
2514
- const onContextMenu = React$44.useCallback((event) => {
2515
+ const onContextMenu = React$45.useCallback((event) => {
2515
2516
  if (!isEditing) meta?.onCellContextMenu?.(rowIndex, columnId, event);
2516
2517
  }, [
2517
2518
  meta,
@@ -2519,7 +2520,7 @@ function DataGridCellWrapper({ cell, table, rowIndex, columnId, isEditing, isFoc
2519
2520
  columnId,
2520
2521
  isEditing
2521
2522
  ]);
2522
- const onMouseDown = React$44.useCallback((event) => {
2523
+ const onMouseDown = React$45.useCallback((event) => {
2523
2524
  if (!isEditing) meta?.onCellMouseDown?.(rowIndex, columnId, event);
2524
2525
  }, [
2525
2526
  meta,
@@ -2527,7 +2528,7 @@ function DataGridCellWrapper({ cell, table, rowIndex, columnId, isEditing, isFoc
2527
2528
  columnId,
2528
2529
  isEditing
2529
2530
  ]);
2530
- const onMouseEnter = React$44.useCallback((event) => {
2531
+ const onMouseEnter = React$45.useCallback((event) => {
2531
2532
  if (!isEditing) meta?.onCellMouseEnter?.(rowIndex, columnId, event);
2532
2533
  }, [
2533
2534
  meta,
@@ -2535,10 +2536,10 @@ function DataGridCellWrapper({ cell, table, rowIndex, columnId, isEditing, isFoc
2535
2536
  columnId,
2536
2537
  isEditing
2537
2538
  ]);
2538
- const onMouseUp = React$44.useCallback(() => {
2539
+ const onMouseUp = React$45.useCallback(() => {
2539
2540
  if (!isEditing) meta?.onCellMouseUp?.();
2540
2541
  }, [meta, isEditing]);
2541
- const onDoubleClick = React$44.useCallback((event) => {
2542
+ const onDoubleClick = React$45.useCallback((event) => {
2542
2543
  if (!isEditing) {
2543
2544
  event.preventDefault();
2544
2545
  if (isEditable) meta?.onCellDoubleClick?.(rowIndex, columnId);
@@ -2550,7 +2551,7 @@ function DataGridCellWrapper({ cell, table, rowIndex, columnId, isEditing, isFoc
2550
2551
  isEditing,
2551
2552
  isEditable
2552
2553
  ]);
2553
- const onKeyDown = React$44.useCallback((event) => {
2554
+ const onKeyDown = React$45.useCallback((event) => {
2554
2555
  onKeyDownProp?.(event);
2555
2556
  if (event.defaultPrevented) return;
2556
2557
  if (event.key === "ArrowUp" || event.key === "ArrowDown" || event.key === "ArrowLeft" || event.key === "ArrowRight" || event.key === "Home" || event.key === "End" || event.key === "PageUp" || event.key === "PageDown" || event.key === "Enter" || event.key === "Tab") return;
@@ -2764,22 +2765,22 @@ function HierarchyItem({ option, selectedValue, expandedIds, onToggleExpand, onS
2764
2765
  }
2765
2766
  function HierarchyCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isSelected }) {
2766
2767
  const initialValue = cell.getValue();
2767
- const [value, setValue] = React$43.useState(initialValue);
2768
- const [open, setOpen] = React$43.useState(false);
2769
- const [searchValue, setSearchValue] = React$43.useState("");
2770
- const containerRef = React$43.useRef(null);
2771
- const inputRef = React$43.useRef(null);
2768
+ const [value, setValue] = React$44.useState(initialValue);
2769
+ const [open, setOpen] = React$44.useState(false);
2770
+ const [searchValue, setSearchValue] = React$44.useState("");
2771
+ const containerRef = React$44.useRef(null);
2772
+ const inputRef = React$44.useRef(null);
2772
2773
  const meta = table.options.meta;
2773
2774
  const cellOpts = cell.column.columnDef.meta?.cell;
2774
2775
  const sideOffset = -(containerRef.current?.clientHeight ?? 0);
2775
2776
  const options = cellOpts?.variant === "hierarchy" ? cellOpts.options : [];
2776
- const [expandedIds, setExpandedIds] = React$43.useState(() => getInitialExpandedIds(options, initialValue));
2777
- const labelMap = React$43.useMemo(() => buildLabelMap(options), [options]);
2778
- const displayLabel = React$43.useMemo(() => {
2777
+ const [expandedIds, setExpandedIds] = React$44.useState(() => getInitialExpandedIds(options, initialValue));
2778
+ const labelMap = React$44.useMemo(() => buildLabelMap(options), [options]);
2779
+ const displayLabel = React$44.useMemo(() => {
2779
2780
  if (!value) return "";
2780
2781
  return labelMap.get(value) ?? value;
2781
2782
  }, [value, labelMap]);
2782
- const toggleExpand = React$43.useCallback((id) => {
2783
+ const toggleExpand = React$44.useCallback((id) => {
2783
2784
  setExpandedIds((prev) => {
2784
2785
  const next = new Set(prev);
2785
2786
  if (next.has(id)) next.delete(id);
@@ -2787,7 +2788,7 @@ function HierarchyCell({ cell, table, rowIndex, columnId, isFocused, isEditing,
2787
2788
  return next;
2788
2789
  });
2789
2790
  }, []);
2790
- const onOptionSelect = React$43.useCallback((option) => {
2791
+ const onOptionSelect = React$44.useCallback((option) => {
2791
2792
  const newValue = option.id;
2792
2793
  setValue(newValue);
2793
2794
  meta?.onDataUpdate?.({
@@ -2802,18 +2803,18 @@ function HierarchyCell({ cell, table, rowIndex, columnId, isFocused, isEditing,
2802
2803
  rowIndex,
2803
2804
  columnId
2804
2805
  ]);
2805
- const onOpenChange = React$43.useCallback((isOpen) => {
2806
+ const onOpenChange = React$44.useCallback((isOpen) => {
2806
2807
  setOpen(isOpen);
2807
2808
  if (!isOpen) {
2808
2809
  setSearchValue("");
2809
2810
  meta?.onCellEditingStop?.();
2810
2811
  }
2811
2812
  }, [meta]);
2812
- const onOpenAutoFocus = React$43.useCallback((event) => {
2813
+ const onOpenAutoFocus = React$44.useCallback((event) => {
2813
2814
  event.preventDefault();
2814
2815
  inputRef.current?.focus();
2815
2816
  }, []);
2816
- const onWrapperKeyDown = React$43.useCallback((event) => {
2817
+ const onWrapperKeyDown = React$44.useCallback((event) => {
2817
2818
  if (isEditing) {
2818
2819
  if (event.key === "Escape") {
2819
2820
  event.preventDefault();
@@ -2833,10 +2834,10 @@ function HierarchyCell({ cell, table, rowIndex, columnId, isFocused, isEditing,
2833
2834
  initialValue,
2834
2835
  meta
2835
2836
  ]);
2836
- React$43.useEffect(() => {
2837
+ React$44.useEffect(() => {
2837
2838
  setValue(initialValue);
2838
2839
  }, [initialValue]);
2839
- React$43.useEffect(() => {
2840
+ React$44.useEffect(() => {
2840
2841
  if (value) {
2841
2842
  const ancestors = getAncestorIds(options, value);
2842
2843
  if (ancestors && ancestors.length > 0) setExpandedIds((prev) => {
@@ -2846,7 +2847,7 @@ function HierarchyCell({ cell, table, rowIndex, columnId, isFocused, isEditing,
2846
2847
  });
2847
2848
  }
2848
2849
  }, [value, options]);
2849
- React$43.useEffect(() => {
2850
+ React$44.useEffect(() => {
2850
2851
  if (isEditing && !open) setOpen(true);
2851
2852
  if (isFocused && !isEditing && !meta?.searchOpen && !meta?.isScrolling && containerRef.current) containerRef.current.focus();
2852
2853
  }, [
@@ -2944,9 +2945,9 @@ function EditorFooter({ count, onApply, onCancel }) {
2944
2945
  });
2945
2946
  }
2946
2947
  function BulkEditShortText({ columnId, selectedRowIndices, onApply, onCancel }) {
2947
- const [value, setValue] = React$42.useState("");
2948
- const inputRef = React$42.useRef(null);
2949
- const handleApply = React$42.useCallback(() => {
2948
+ const [value, setValue] = React$43.useState("");
2949
+ const inputRef = React$43.useRef(null);
2950
+ const handleApply = React$43.useCallback(() => {
2950
2951
  onApply(selectedRowIndices.map((rowIndex) => ({
2951
2952
  rowIndex,
2952
2953
  columnId,
@@ -2958,14 +2959,14 @@ function BulkEditShortText({ columnId, selectedRowIndices, onApply, onCancel })
2958
2959
  value,
2959
2960
  onApply
2960
2961
  ]);
2961
- const onKeyDown = React$42.useCallback((e) => {
2962
+ const onKeyDown = React$43.useCallback((e) => {
2962
2963
  stopGridKeys(e);
2963
2964
  if (e.key === "Enter") {
2964
2965
  e.preventDefault();
2965
2966
  handleApply();
2966
2967
  }
2967
2968
  }, [handleApply]);
2968
- React$42.useEffect(() => {
2969
+ React$43.useEffect(() => {
2969
2970
  inputRef.current?.focus();
2970
2971
  }, []);
2971
2972
  return /* @__PURE__ */ jsxs("div", {
@@ -2987,9 +2988,9 @@ function BulkEditShortText({ columnId, selectedRowIndices, onApply, onCancel })
2987
2988
  });
2988
2989
  }
2989
2990
  function BulkEditLongText({ columnId, selectedRowIndices, onApply, onCancel }) {
2990
- const [value, setValue] = React$42.useState("");
2991
- const textareaRef = React$42.useRef(null);
2992
- const handleApply = React$42.useCallback(() => {
2991
+ const [value, setValue] = React$43.useState("");
2992
+ const textareaRef = React$43.useRef(null);
2993
+ const handleApply = React$43.useCallback(() => {
2993
2994
  onApply(selectedRowIndices.map((rowIndex) => ({
2994
2995
  rowIndex,
2995
2996
  columnId,
@@ -3001,14 +3002,14 @@ function BulkEditLongText({ columnId, selectedRowIndices, onApply, onCancel }) {
3001
3002
  value,
3002
3003
  onApply
3003
3004
  ]);
3004
- const onKeyDown = React$42.useCallback((e) => {
3005
+ const onKeyDown = React$43.useCallback((e) => {
3005
3006
  stopGridKeys(e);
3006
3007
  if ((e.ctrlKey || e.metaKey) && e.key === "Enter") {
3007
3008
  e.preventDefault();
3008
3009
  handleApply();
3009
3010
  }
3010
3011
  }, [handleApply]);
3011
- React$42.useEffect(() => {
3012
+ React$43.useEffect(() => {
3012
3013
  textareaRef.current?.focus();
3013
3014
  }, []);
3014
3015
  return /* @__PURE__ */ jsxs("div", {
@@ -3031,12 +3032,12 @@ function BulkEditLongText({ columnId, selectedRowIndices, onApply, onCancel }) {
3031
3032
  });
3032
3033
  }
3033
3034
  function BulkEditNumber({ cell, columnId, selectedRowIndices, onApply, onCancel }) {
3034
- const [value, setValue] = React$42.useState(void 0);
3035
- const inputRef = React$42.useRef(null);
3035
+ const [value, setValue] = React$43.useState(void 0);
3036
+ const inputRef = React$43.useRef(null);
3036
3037
  const { min, max, step, prefix, suffix } = cell.variant === "number" ? cell : {};
3037
3038
  const stringPrefix = typeof prefix === "string" ? prefix : void 0;
3038
3039
  const stringSuffix = typeof suffix === "string" ? suffix : void 0;
3039
- const handleApply = React$42.useCallback(() => {
3040
+ const handleApply = React$43.useCallback(() => {
3040
3041
  const numValue = value ?? null;
3041
3042
  onApply(selectedRowIndices.map((rowIndex) => ({
3042
3043
  rowIndex,
@@ -3049,14 +3050,14 @@ function BulkEditNumber({ cell, columnId, selectedRowIndices, onApply, onCancel
3049
3050
  value,
3050
3051
  onApply
3051
3052
  ]);
3052
- const onKeyDown = React$42.useCallback((e) => {
3053
+ const onKeyDown = React$43.useCallback((e) => {
3053
3054
  stopGridKeys(e);
3054
3055
  if (e.key === "Enter") {
3055
3056
  e.preventDefault();
3056
3057
  handleApply();
3057
3058
  }
3058
3059
  }, [handleApply]);
3059
- React$42.useEffect(() => {
3060
+ React$43.useEffect(() => {
3060
3061
  inputRef.current?.focus();
3061
3062
  }, []);
3062
3063
  return /* @__PURE__ */ jsxs("div", {
@@ -3085,8 +3086,8 @@ function BulkEditNumber({ cell, columnId, selectedRowIndices, onApply, onCancel
3085
3086
  }
3086
3087
  function BulkEditSelect({ cell, columnId, selectedRowIndices, onApply, onCancel }) {
3087
3088
  const { options: arrayOptions, optionsMap, optionsRenderer } = cell.variant === "select" ? cell : {};
3088
- const inputRef = React$42.useRef(null);
3089
- const options = React$42.useMemo(() => {
3089
+ const inputRef = React$43.useRef(null);
3090
+ const options = React$43.useMemo(() => {
3090
3091
  if (arrayOptions) return arrayOptions.map((opt) => ({
3091
3092
  value: opt.value,
3092
3093
  data: opt.label
@@ -3097,7 +3098,7 @@ function BulkEditSelect({ cell, columnId, selectedRowIndices, onApply, onCancel
3097
3098
  }));
3098
3099
  return [];
3099
3100
  }, [arrayOptions, optionsMap]);
3100
- const handleSelect = React$42.useCallback((newValue) => {
3101
+ const handleSelect = React$43.useCallback((newValue) => {
3101
3102
  onApply(selectedRowIndices.map((rowIndex) => ({
3102
3103
  rowIndex,
3103
3104
  columnId,
@@ -3108,7 +3109,7 @@ function BulkEditSelect({ cell, columnId, selectedRowIndices, onApply, onCancel
3108
3109
  columnId,
3109
3110
  onApply
3110
3111
  ]);
3111
- React$42.useEffect(() => {
3112
+ React$43.useEffect(() => {
3112
3113
  inputRef.current?.focus();
3113
3114
  }, []);
3114
3115
  return /* @__PURE__ */ jsxs("div", {
@@ -3132,10 +3133,10 @@ function BulkEditSelect({ cell, columnId, selectedRowIndices, onApply, onCancel
3132
3133
  }
3133
3134
  function BulkEditMultiSelect({ cell, columnId, selectedRowIndices, onApply, onCancel }) {
3134
3135
  const { options: arrayOptions, optionsMap } = cell.variant === "multi-select" ? cell : {};
3135
- const [selectedValues, setSelectedValues] = React$42.useState([]);
3136
- const [searchValue, setSearchValue] = React$42.useState("");
3137
- const inputRef = React$42.useRef(null);
3138
- const options = React$42.useMemo(() => {
3136
+ const [selectedValues, setSelectedValues] = React$43.useState([]);
3137
+ const [searchValue, setSearchValue] = React$43.useState("");
3138
+ const inputRef = React$43.useRef(null);
3139
+ const options = React$43.useMemo(() => {
3139
3140
  if (arrayOptions) return arrayOptions;
3140
3141
  if (optionsMap) return Array.from(optionsMap.entries()).map(([id, label]) => ({
3141
3142
  value: id,
@@ -3143,12 +3144,12 @@ function BulkEditMultiSelect({ cell, columnId, selectedRowIndices, onApply, onCa
3143
3144
  }));
3144
3145
  return [];
3145
3146
  }, [arrayOptions, optionsMap]);
3146
- const toggleValue = React$42.useCallback((value) => {
3147
+ const toggleValue = React$43.useCallback((value) => {
3147
3148
  setSelectedValues((prev) => prev.includes(value) ? prev.filter((v) => v !== value) : [...prev, value]);
3148
3149
  setSearchValue("");
3149
3150
  queueMicrotask(() => inputRef.current?.focus());
3150
3151
  }, []);
3151
- const handleApply = React$42.useCallback(() => {
3152
+ const handleApply = React$43.useCallback(() => {
3152
3153
  onApply(selectedRowIndices.map((rowIndex) => ({
3153
3154
  rowIndex,
3154
3155
  columnId,
@@ -3160,7 +3161,7 @@ function BulkEditMultiSelect({ cell, columnId, selectedRowIndices, onApply, onCa
3160
3161
  selectedValues,
3161
3162
  onApply
3162
3163
  ]);
3163
- React$42.useEffect(() => {
3164
+ React$43.useEffect(() => {
3164
3165
  inputRef.current?.focus();
3165
3166
  }, []);
3166
3167
  return /* @__PURE__ */ jsxs("div", {
@@ -3226,7 +3227,7 @@ function BulkEditMultiSelect({ cell, columnId, selectedRowIndices, onApply, onCa
3226
3227
  });
3227
3228
  }
3228
3229
  function BulkEditCheckbox({ columnId, selectedRowIndices, onApply, onCancel }) {
3229
- const setAll = React$42.useCallback((val) => {
3230
+ const setAll = React$43.useCallback((val) => {
3230
3231
  onApply(selectedRowIndices.map((rowIndex) => ({
3231
3232
  rowIndex,
3232
3233
  columnId,
@@ -3263,10 +3264,10 @@ function BulkEditCheckbox({ columnId, selectedRowIndices, onApply, onCancel }) {
3263
3264
  }
3264
3265
  function BulkEditHierarchy({ cell, columnId, selectedRowIndices, onApply, onCancel }) {
3265
3266
  const options = cell.variant === "hierarchy" ? cell.options : [];
3266
- const inputRef = React$42.useRef(null);
3267
- const [searchValue, setSearchValue] = React$42.useState("");
3268
- const [expandedIds, setExpandedIds] = React$42.useState(() => getInitialExpandedIds(options, null));
3269
- const toggleExpand = React$42.useCallback((id) => {
3267
+ const inputRef = React$43.useRef(null);
3268
+ const [searchValue, setSearchValue] = React$43.useState("");
3269
+ const [expandedIds, setExpandedIds] = React$43.useState(() => getInitialExpandedIds(options, null));
3270
+ const toggleExpand = React$43.useCallback((id) => {
3270
3271
  setExpandedIds((prev) => {
3271
3272
  const next = new Set(prev);
3272
3273
  if (next.has(id)) next.delete(id);
@@ -3274,7 +3275,7 @@ function BulkEditHierarchy({ cell, columnId, selectedRowIndices, onApply, onCanc
3274
3275
  return next;
3275
3276
  });
3276
3277
  }, []);
3277
- const handleSelect = React$42.useCallback((option) => {
3278
+ const handleSelect = React$43.useCallback((option) => {
3278
3279
  onApply(selectedRowIndices.map((rowIndex) => ({
3279
3280
  rowIndex,
3280
3281
  columnId,
@@ -3285,7 +3286,7 @@ function BulkEditHierarchy({ cell, columnId, selectedRowIndices, onApply, onCanc
3285
3286
  columnId,
3286
3287
  onApply
3287
3288
  ]);
3288
- React$42.useEffect(() => {
3289
+ React$43.useEffect(() => {
3289
3290
  inputRef.current?.focus();
3290
3291
  }, []);
3291
3292
  return /* @__PURE__ */ jsxs("div", {
@@ -3316,7 +3317,7 @@ function BulkEditHierarchy({ cell, columnId, selectedRowIndices, onApply, onCanc
3316
3317
  });
3317
3318
  }
3318
3319
  function BulkEditDate({ columnId, selectedRowIndices, onApply, onCancel }) {
3319
- const onDateSelect = React$42.useCallback((date) => {
3320
+ const onDateSelect = React$43.useCallback((date) => {
3320
3321
  if (!date) return;
3321
3322
  const year = date.getFullYear();
3322
3323
  const month = String(date.getMonth() + 1).padStart(2, "0");
@@ -3348,28 +3349,28 @@ function BulkEditDate({ columnId, selectedRowIndices, onApply, onCancel }) {
3348
3349
  });
3349
3350
  }
3350
3351
  function BulkEditPopover({ table, cell, columnId, open, onOpenChange, children }) {
3351
- const selectedRowIndices = React$42.useMemo(() => {
3352
+ const selectedRowIndices = React$43.useMemo(() => {
3352
3353
  if (!open) return [];
3353
3354
  const allRows = table.getRowModel().rows;
3354
3355
  const indices = [];
3355
3356
  for (let i = 0; i < allRows.length; i++) if (allRows[i].getIsSelected()) indices.push(i);
3356
3357
  return indices;
3357
3358
  }, [open, table]);
3358
- React$42.useEffect(() => {
3359
+ React$43.useEffect(() => {
3359
3360
  if (open && selectedRowIndices.length === 0) onOpenChange(false);
3360
3361
  }, [
3361
3362
  open,
3362
3363
  selectedRowIndices.length,
3363
3364
  onOpenChange
3364
3365
  ]);
3365
- const onApply = React$42.useCallback((updates) => {
3366
+ const onApply = React$43.useCallback((updates) => {
3366
3367
  table.options.meta?.onDataUpdate?.(updates);
3367
3368
  onOpenChange(false);
3368
3369
  }, [table, onOpenChange]);
3369
- const onCancel = React$42.useCallback(() => {
3370
+ const onCancel = React$43.useCallback(() => {
3370
3371
  onOpenChange(false);
3371
3372
  }, [onOpenChange]);
3372
- const onOpenAutoFocus = React$42.useCallback((e) => {
3373
+ const onOpenAutoFocus = React$43.useCallback((e) => {
3373
3374
  e.preventDefault();
3374
3375
  }, []);
3375
3376
  const editorProps = {
@@ -3379,7 +3380,7 @@ function BulkEditPopover({ table, cell, columnId, open, onOpenChange, children }
3379
3380
  onApply,
3380
3381
  onCancel
3381
3382
  };
3382
- const editor = React$42.useMemo(() => {
3383
+ const editor = React$43.useMemo(() => {
3383
3384
  switch (cell.variant) {
3384
3385
  case "short-text": return /* @__PURE__ */ jsx(BulkEditShortText, { ...editorProps });
3385
3386
  case "long-text": return /* @__PURE__ */ jsx(BulkEditLongText, { ...editorProps });
@@ -3461,8 +3462,8 @@ function getColumnVariant(variant) {
3461
3462
  }
3462
3463
  }
3463
3464
  function DataGridColumnHeader({ header, table, className, onPointerDown,...props }) {
3464
- const [open, setOpen] = React$41.useState(false);
3465
- const [bulkEditOpen, setBulkEditOpen] = React$41.useState(false);
3465
+ const [open, setOpen] = React$42.useState(false);
3466
+ const [bulkEditOpen, setBulkEditOpen] = React$42.useState(false);
3466
3467
  const column = header.column;
3467
3468
  const label = column.columnDef.meta?.label ? column.columnDef.meta.label : typeof column.columnDef.header === "string" ? column.columnDef.header : column.id;
3468
3469
  const isAnyColumnResizing = table.getState().columnSizingInfo.isResizingColumn;
@@ -3471,13 +3472,13 @@ function DataGridColumnHeader({ header, table, className, onPointerDown,...props
3471
3472
  const enableBulkEdit = column.columnDef.meta?.enableBulkEdit ?? false;
3472
3473
  const selectedRowCount = Object.keys(table.getState().rowSelection).length;
3473
3474
  const showBulkEdit = enableBulkEdit && selectedRowCount > 1 && cellVariant != null && EditableCellVariantsSet.has(cellVariant?.variant);
3474
- React$41.useEffect(() => {
3475
+ React$42.useEffect(() => {
3475
3476
  if (!showBulkEdit) setBulkEditOpen(false);
3476
3477
  }, [showBulkEdit]);
3477
3478
  const pinnedPosition = column.getIsPinned();
3478
3479
  const isPinnedLeft = pinnedPosition === "left";
3479
3480
  const isPinnedRight = pinnedPosition === "right";
3480
- const onSortingChange = React$41.useCallback((direction) => {
3481
+ const onSortingChange = React$42.useCallback((direction) => {
3481
3482
  table.setSorting((prev) => {
3482
3483
  const existingSortIndex = prev.findIndex((sort) => sort.id === column.id);
3483
3484
  const newSort = {
@@ -3491,19 +3492,19 @@ function DataGridColumnHeader({ header, table, className, onPointerDown,...props
3491
3492
  } else return [...prev, newSort];
3492
3493
  });
3493
3494
  }, [column.id, table]);
3494
- const onSortRemove = React$41.useCallback(() => {
3495
+ const onSortRemove = React$42.useCallback(() => {
3495
3496
  table.setSorting((prev) => prev.filter((sort) => sort.id !== column.id));
3496
3497
  }, [column.id, table]);
3497
- const onLeftPin = React$41.useCallback(() => {
3498
+ const onLeftPin = React$42.useCallback(() => {
3498
3499
  column.pin("left");
3499
3500
  }, [column]);
3500
- const onRightPin = React$41.useCallback(() => {
3501
+ const onRightPin = React$42.useCallback(() => {
3501
3502
  column.pin("right");
3502
3503
  }, [column]);
3503
- const onUnpin = React$41.useCallback(() => {
3504
+ const onUnpin = React$42.useCallback(() => {
3504
3505
  column.pin(false);
3505
3506
  }, [column]);
3506
- const onTriggerPointerDown = React$41.useCallback((event) => {
3507
+ const onTriggerPointerDown = React$42.useCallback((event) => {
3507
3508
  onPointerDown?.(event);
3508
3509
  if (event.defaultPrevented) return;
3509
3510
  if (event.button !== 0) return;
@@ -3630,7 +3631,7 @@ function DataGridColumnHeader({ header, table, className, onPointerDown,...props
3630
3631
  })
3631
3632
  ] });
3632
3633
  }
3633
- const DataGridColumnResizer = React$41.memo(DataGridColumnResizerImpl, (prev, next) => {
3634
+ const DataGridColumnResizer = React$42.memo(DataGridColumnResizerImpl, (prev, next) => {
3634
3635
  const prevColumn = prev.header.column;
3635
3636
  const nextColumn = next.header.column;
3636
3637
  if (prevColumn.getIsResizing() !== nextColumn.getIsResizing() || prevColumn.getSize() !== nextColumn.getSize()) return false;
@@ -3639,7 +3640,7 @@ const DataGridColumnResizer = React$41.memo(DataGridColumnResizerImpl, (prev, ne
3639
3640
  });
3640
3641
  function DataGridColumnResizerImpl({ header, table, label }) {
3641
3642
  const defaultColumnDef = table._getDefaultColumnDef();
3642
- const onDoubleClick = React$41.useCallback(() => {
3643
+ const onDoubleClick = React$42.useCallback(() => {
3643
3644
  header.column.resetSize();
3644
3645
  }, [header.column]);
3645
3646
  return /* @__PURE__ */ jsx("div", {
@@ -3748,7 +3749,7 @@ function DataGridContextMenu({ table }) {
3748
3749
  onRowsDelete
3749
3750
  });
3750
3751
  }
3751
- const ContextMenu$1 = React$40.memo(ContextMenuImpl, (prev, next) => {
3752
+ const ContextMenu$1 = React$41.memo(ContextMenuImpl, (prev, next) => {
3752
3753
  if (prev.contextMenu.open !== next.contextMenu.open) return false;
3753
3754
  if (!next.contextMenu.open) return true;
3754
3755
  if (prev.contextMenu.x !== next.contextMenu.x) return false;
@@ -3759,7 +3760,7 @@ const ContextMenu$1 = React$40.memo(ContextMenuImpl, (prev, next) => {
3759
3760
  return true;
3760
3761
  });
3761
3762
  function ContextMenuImpl({ table, dataGridRef, contextMenu, onContextMenuOpenChange, selectionState, onDataUpdate, onRowsDelete }) {
3762
- const triggerStyle = React$40.useMemo(() => ({
3763
+ const triggerStyle = React$41.useMemo(() => ({
3763
3764
  position: "fixed",
3764
3765
  left: `${contextMenu.x}px`,
3765
3766
  top: `${contextMenu.y}px`,
@@ -3772,11 +3773,11 @@ function ContextMenuImpl({ table, dataGridRef, contextMenu, onContextMenuOpenCha
3772
3773
  pointerEvents: "none",
3773
3774
  opacity: 0
3774
3775
  }), [contextMenu.x, contextMenu.y]);
3775
- const onCloseAutoFocus = React$40.useCallback((event) => {
3776
+ const onCloseAutoFocus = React$41.useCallback((event) => {
3776
3777
  event.preventDefault();
3777
3778
  dataGridRef?.current?.focus();
3778
3779
  }, [dataGridRef]);
3779
- const onCopy = React$40.useCallback(async () => {
3780
+ const onCopy = React$41.useCallback(async () => {
3780
3781
  if (!selectionState?.selectedCells || selectionState.selectedCells.size === 0) return;
3781
3782
  const rows = table.getRowModel().rows;
3782
3783
  const columnIds = [];
@@ -3815,7 +3816,7 @@ function ContextMenuImpl({ table, dataGridRef, contextMenu, onContextMenuOpenCha
3815
3816
  await navigator.clipboard.writeText(tsvData);
3816
3817
  toast$1.success(`${selectionState.selectedCells.size} cell${selectionState.selectedCells.size !== 1 ? "s" : ""} copied`);
3817
3818
  }, [table, selectionState]);
3818
- const canClear = React$40.useMemo(() => {
3819
+ const canClear = React$41.useMemo(() => {
3819
3820
  if (!selectionState?.selectedCells || selectionState.selectedCells.size === 0) return false;
3820
3821
  const visibleCols = table.getVisibleLeafColumns();
3821
3822
  const rows = table.getRowModel().rows;
@@ -3832,7 +3833,7 @@ function ContextMenuImpl({ table, dataGridRef, contextMenu, onContextMenuOpenCha
3832
3833
  }
3833
3834
  return true;
3834
3835
  }, [selectionState, table]);
3835
- const onClear = React$40.useCallback(() => {
3836
+ const onClear = React$41.useCallback(() => {
3836
3837
  if (!selectionState?.selectedCells || selectionState.selectedCells.size === 0) return;
3837
3838
  if (!canClear) return;
3838
3839
  const updates = [];
@@ -3851,7 +3852,7 @@ function ContextMenuImpl({ table, dataGridRef, contextMenu, onContextMenuOpenCha
3851
3852
  selectionState,
3852
3853
  canClear
3853
3854
  ]);
3854
- const onDelete = React$40.useCallback(async () => {
3855
+ const onDelete = React$41.useCallback(async () => {
3855
3856
  if (!selectionState?.selectedCells || selectionState.selectedCells.size === 0) return;
3856
3857
  const rowIndices = new Set();
3857
3858
  for (const cellKey of selectionState.selectedCells) {
@@ -3928,12 +3929,12 @@ function composeRefs(...refs) {
3928
3929
  * Accepts callback refs and RefObject(s)
3929
3930
  */
3930
3931
  function useComposedRefs(...refs) {
3931
- return React$39.useCallback(composeRefs(...refs), refs);
3932
+ return React$40.useCallback(composeRefs(...refs), refs);
3932
3933
  }
3933
3934
 
3934
3935
  //#endregion
3935
3936
  //#region src/data-grid/data-grid-row.tsx
3936
- const DataGridRow = React$38.memo(DataGridRowImpl, (prev, next) => {
3937
+ const DataGridRow = React$39.memo(DataGridRowImpl, (prev, next) => {
3937
3938
  if (prev.row.id !== next.row.id) return false;
3938
3939
  if (prev.row.original !== next.row.original) return false;
3939
3940
  const prevRowIndex = prev.virtualRowIndex;
@@ -3965,7 +3966,7 @@ function DataGridRowImpl({ row, virtualRowIndex, virtualStart, rowVirtualizer, r
3965
3966
  }
3966
3967
  });
3967
3968
  const isRowSelected = row.getIsSelected();
3968
- const handleRowClick = React$38.useCallback((event) => {
3969
+ const handleRowClick = React$39.useCallback((event) => {
3969
3970
  const target = event.target;
3970
3971
  if (target.closest("input, button, [role=\"checkbox\"]")) return;
3971
3972
  if (event.detail === 1) onRowClick?.(virtualRowIndex);
@@ -4015,20 +4016,20 @@ function DataGridRowImpl({ row, virtualRowIndex, virtualStart, rowVirtualizer, r
4015
4016
  * prop or avoid re-executing effects when passed as a dependency
4016
4017
  */
4017
4018
  function useCallbackRef(callback) {
4018
- const callbackRef = React$37.useRef(callback);
4019
- React$37.useEffect(() => {
4019
+ const callbackRef = React$38.useRef(callback);
4020
+ React$38.useEffect(() => {
4020
4021
  callbackRef.current = callback;
4021
4022
  });
4022
- return React$37.useMemo(() => (...args) => callbackRef.current?.(...args), []);
4023
+ return React$38.useMemo(() => (...args) => callbackRef.current?.(...args), []);
4023
4024
  }
4024
4025
 
4025
4026
  //#endregion
4026
4027
  //#region src/hooks/use-debounced-callback.ts
4027
4028
  function useDebouncedCallback(callback, delay) {
4028
4029
  const handleCallback = useCallbackRef(callback);
4029
- const debounceTimerRef = React$36.useRef(0);
4030
- React$36.useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);
4031
- const setValue = React$36.useCallback((...args) => {
4030
+ const debounceTimerRef = React$37.useRef(0);
4031
+ React$37.useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);
4032
+ const setValue = React$37.useCallback((...args) => {
4032
4033
  window.clearTimeout(debounceTimerRef.current);
4033
4034
  debounceTimerRef.current = window.setTimeout(() => handleCallback(...args), delay);
4034
4035
  }, [handleCallback, delay]);
@@ -4037,7 +4038,7 @@ function useDebouncedCallback(callback, delay) {
4037
4038
 
4038
4039
  //#endregion
4039
4040
  //#region src/data-grid/data-grid-search.tsx
4040
- const DataGridSearch = React$35.memo(DataGridSearchImpl, (prev, next) => {
4041
+ const DataGridSearch = React$36.memo(DataGridSearchImpl, (prev, next) => {
4041
4042
  if (prev.searchOpen !== next.searchOpen) return false;
4042
4043
  if (!next.searchOpen) return true;
4043
4044
  if (prev.searchQuery !== next.searchQuery || prev.matchIndex !== next.matchIndex) return false;
@@ -4051,13 +4052,13 @@ const DataGridSearch = React$35.memo(DataGridSearchImpl, (prev, next) => {
4051
4052
  return true;
4052
4053
  });
4053
4054
  function DataGridSearchImpl({ searchMatches, matchIndex, searchOpen, onSearchOpenChange, searchQuery, onSearchQueryChange, onSearch, onNavigateToNextMatch, onNavigateToPrevMatch }) {
4054
- const inputRef = React$35.useRef(null);
4055
- React$35.useEffect(() => {
4055
+ const inputRef = React$36.useRef(null);
4056
+ React$36.useEffect(() => {
4056
4057
  if (searchOpen) requestAnimationFrame(() => {
4057
4058
  inputRef.current?.focus();
4058
4059
  });
4059
4060
  }, [searchOpen]);
4060
- React$35.useEffect(() => {
4061
+ React$36.useEffect(() => {
4061
4062
  if (!searchOpen) return;
4062
4063
  function onEscape(event) {
4063
4064
  if (event.key === "Escape") {
@@ -4068,7 +4069,7 @@ function DataGridSearchImpl({ searchMatches, matchIndex, searchOpen, onSearchOpe
4068
4069
  document.addEventListener("keydown", onEscape);
4069
4070
  return () => document.removeEventListener("keydown", onEscape);
4070
4071
  }, [searchOpen, onSearchOpenChange]);
4071
- const onKeyDown = React$35.useCallback((event) => {
4072
+ const onKeyDown = React$36.useCallback((event) => {
4072
4073
  event.stopPropagation();
4073
4074
  if (event.key === "Enter") {
4074
4075
  event.preventDefault();
@@ -4079,20 +4080,20 @@ function DataGridSearchImpl({ searchMatches, matchIndex, searchOpen, onSearchOpe
4079
4080
  const debouncedSearch = useDebouncedCallback((query) => {
4080
4081
  onSearch(query);
4081
4082
  }, 150);
4082
- const onChange = React$35.useCallback((event) => {
4083
+ const onChange = React$36.useCallback((event) => {
4083
4084
  const value = event.target.value;
4084
4085
  onSearchQueryChange(value);
4085
4086
  debouncedSearch(value);
4086
4087
  }, [onSearchQueryChange, debouncedSearch]);
4087
- const onTriggerPointerDown = React$35.useCallback((event) => {
4088
+ const onTriggerPointerDown = React$36.useCallback((event) => {
4088
4089
  const target = event.target;
4089
4090
  if (!(target instanceof HTMLElement)) return;
4090
4091
  if (target.hasPointerCapture(event.pointerId)) target.releasePointerCapture(event.pointerId);
4091
4092
  if (event.button === 0 && event.ctrlKey === false && event.pointerType === "mouse" && !(event.target instanceof HTMLInputElement)) event.preventDefault();
4092
4093
  }, []);
4093
- const onPrevMatchPointerDown = React$35.useCallback((event) => onTriggerPointerDown(event), [onTriggerPointerDown]);
4094
- const onNextMatchPointerDown = React$35.useCallback((event) => onTriggerPointerDown(event), [onTriggerPointerDown]);
4095
- const onClose = React$35.useCallback(() => {
4094
+ const onPrevMatchPointerDown = React$36.useCallback((event) => onTriggerPointerDown(event), [onTriggerPointerDown]);
4095
+ const onNextMatchPointerDown = React$36.useCallback((event) => onTriggerPointerDown(event), [onTriggerPointerDown]);
4096
+ const onClose = React$36.useCallback(() => {
4096
4097
  onSearchOpenChange(false);
4097
4098
  }, [onSearchOpenChange]);
4098
4099
  if (!searchOpen) return null;
@@ -4173,15 +4174,15 @@ function DataGrid({ dataGridRef, headerRef, rowMapRef, footerRef, table, rowVirt
4173
4174
  const visibleColumnIds = table.getVisibleLeafColumns().map((c) => c.id).join(",");
4174
4175
  const pinningState = table.getState().columnPinning;
4175
4176
  const columnPinningKey = `${(pinningState.left ?? []).join(",")}|${(pinningState.right ?? []).join(",")}`;
4176
- const prevVisibleColumnIdsRef = React$34.useRef(visibleColumnIds);
4177
+ const prevVisibleColumnIdsRef = React$35.useRef(visibleColumnIds);
4177
4178
  if (prevVisibleColumnIdsRef.current !== visibleColumnIds) {
4178
4179
  rowMapRef.current.clear();
4179
4180
  prevVisibleColumnIdsRef.current = visibleColumnIds;
4180
4181
  }
4181
- const onGridContextMenu = React$34.useCallback((event) => {
4182
+ const onGridContextMenu = React$35.useCallback((event) => {
4182
4183
  event.preventDefault();
4183
4184
  }, []);
4184
- const onAddRowKeyDown = React$34.useCallback(async (event) => {
4185
+ const onAddRowKeyDown = React$35.useCallback(async (event) => {
4185
4186
  if (!onRowAdd) return;
4186
4187
  if (event.key === "Enter" || event.key === "") {
4187
4188
  event.preventDefault();
@@ -4333,17 +4334,17 @@ function DataGrid({ dataGridRef, headerRef, rowMapRef, footerRef, table, rowVirt
4333
4334
  function CheckboxCell({ cell, table, rowIndex, columnId, isFocused, isSelected }) {
4334
4335
  const cellValue = cell.getValue();
4335
4336
  const cellValueAsBoolean = Boolean(cellValue);
4336
- const [value, setValue] = React$33.useState(cellValueAsBoolean);
4337
- const containerRef = React$33.useRef(null);
4337
+ const [value, setValue] = React$34.useState(cellValueAsBoolean);
4338
+ const containerRef = React$34.useRef(null);
4338
4339
  const meta = table.options.meta;
4339
4340
  const colMeta = cell.column.columnDef.meta;
4340
- const editableResolver = React$33.useMemo(() => {
4341
+ const editableResolver = React$34.useMemo(() => {
4341
4342
  const v = colMeta?.editable;
4342
4343
  if (v === void 0) return () => true;
4343
4344
  return typeof v === "function" ? v : () => Boolean(v);
4344
4345
  }, [colMeta?.editable]);
4345
4346
  const isEditable = editableResolver(cell.row.original);
4346
- const onCheckedChange = React$33.useCallback((checked) => {
4347
+ const onCheckedChange = React$34.useCallback((checked) => {
4347
4348
  setValue(checked);
4348
4349
  meta?.onDataUpdate?.({
4349
4350
  rowIndex,
@@ -4355,7 +4356,7 @@ function CheckboxCell({ cell, table, rowIndex, columnId, isFocused, isSelected }
4355
4356
  rowIndex,
4356
4357
  columnId
4357
4358
  ]);
4358
- const onWrapperKeyDown = React$33.useCallback((event) => {
4359
+ const onWrapperKeyDown = React$34.useCallback((event) => {
4359
4360
  if (!isEditable) return;
4360
4361
  if (isFocused && (event.key === "" || event.key === "Enter")) {
4361
4362
  event.preventDefault();
@@ -4368,17 +4369,17 @@ function CheckboxCell({ cell, table, rowIndex, columnId, isFocused, isSelected }
4368
4369
  onCheckedChange,
4369
4370
  isEditable
4370
4371
  ]);
4371
- React$33.useEffect(() => {
4372
+ React$34.useEffect(() => {
4372
4373
  setValue(cellValueAsBoolean);
4373
4374
  }, [cellValueAsBoolean]);
4374
- React$33.useEffect(() => {
4375
+ React$34.useEffect(() => {
4375
4376
  if (isFocused && !meta?.searchOpen && !meta?.isScrolling && containerRef.current) containerRef.current.focus();
4376
4377
  }, [
4377
4378
  isFocused,
4378
4379
  meta?.searchOpen,
4379
4380
  meta?.isScrolling
4380
4381
  ]);
4381
- const onWrapperClick = React$33.useCallback((event) => {
4382
+ const onWrapperClick = React$34.useCallback((event) => {
4382
4383
  if (!isEditable) return;
4383
4384
  if (isFocused) {
4384
4385
  event.preventDefault();
@@ -4391,13 +4392,13 @@ function CheckboxCell({ cell, table, rowIndex, columnId, isFocused, isSelected }
4391
4392
  onCheckedChange,
4392
4393
  isEditable
4393
4394
  ]);
4394
- const onCheckboxClick = React$33.useCallback((event) => {
4395
+ const onCheckboxClick = React$34.useCallback((event) => {
4395
4396
  event.stopPropagation();
4396
4397
  }, []);
4397
- const onCheckboxMouseDown = React$33.useCallback((event) => {
4398
+ const onCheckboxMouseDown = React$34.useCallback((event) => {
4398
4399
  event.stopPropagation();
4399
4400
  }, []);
4400
- const onCheckboxDoubleClick = React$33.useCallback((event) => {
4401
+ const onCheckboxDoubleClick = React$34.useCallback((event) => {
4401
4402
  event.stopPropagation();
4402
4403
  }, []);
4403
4404
  return /* @__PURE__ */ jsx(DataGridCellWrapper, {
@@ -4452,20 +4453,20 @@ function formatDateToISOString(date) {
4452
4453
  }
4453
4454
  function DateCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isSelected }) {
4454
4455
  const initialValue = cell.getValue();
4455
- const [value, setValue] = React$32.useState(parseToLocalDate(initialValue));
4456
- const [open, setOpen] = React$32.useState(false);
4457
- const containerRef = React$32.useRef(null);
4458
- const hasStoppedRef = React$32.useRef(false);
4456
+ const [value, setValue] = React$33.useState(parseToLocalDate(initialValue));
4457
+ const [open, setOpen] = React$33.useState(false);
4458
+ const containerRef = React$33.useRef(null);
4459
+ const hasStoppedRef = React$33.useRef(false);
4459
4460
  const meta = table.options.meta;
4460
- const prevInitialValueRef = React$32.useRef(initialValue);
4461
+ const prevInitialValueRef = React$33.useRef(initialValue);
4461
4462
  if (initialValue !== prevInitialValueRef.current) {
4462
4463
  prevInitialValueRef.current = initialValue;
4463
4464
  setValue(parseToLocalDate(initialValue));
4464
4465
  }
4465
- React$32.useEffect(() => {
4466
+ React$33.useEffect(() => {
4466
4467
  if (isEditing) hasStoppedRef.current = false;
4467
4468
  }, [isEditing]);
4468
- const onDateSelect = React$32.useCallback((date) => {
4469
+ const onDateSelect = React$33.useCallback((date) => {
4469
4470
  if (!date) return;
4470
4471
  setValue(date);
4471
4472
  meta?.onDataUpdate?.({
@@ -4481,14 +4482,14 @@ function DateCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isSel
4481
4482
  rowIndex,
4482
4483
  columnId
4483
4484
  ]);
4484
- const onOpenChange = React$32.useCallback((isOpen) => {
4485
+ const onOpenChange = React$33.useCallback((isOpen) => {
4485
4486
  setOpen(isOpen);
4486
4487
  if (!isOpen && isEditing && !hasStoppedRef.current) {
4487
4488
  hasStoppedRef.current = true;
4488
4489
  meta?.onCellEditingStop?.();
4489
4490
  }
4490
4491
  }, [isEditing, meta]);
4491
- const onWrapperKeyDown = React$32.useCallback((event) => {
4492
+ const onWrapperKeyDown = React$33.useCallback((event) => {
4492
4493
  if (isEditing) {
4493
4494
  if (event.key === "Escape") {
4494
4495
  event.preventDefault();
@@ -4508,10 +4509,10 @@ function DateCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isSel
4508
4509
  initialValue,
4509
4510
  meta
4510
4511
  ]);
4511
- React$32.useEffect(() => {
4512
+ React$33.useEffect(() => {
4512
4513
  setOpen(isEditing);
4513
4514
  }, [isEditing]);
4514
- React$32.useEffect(() => {
4515
+ React$33.useEffect(() => {
4515
4516
  if (isFocused && !isEditing && !meta?.searchOpen && !meta?.isScrolling && containerRef.current) containerRef.current.focus();
4516
4517
  }, [
4517
4518
  isFocused,
@@ -4604,7 +4605,7 @@ function DownloadFileCell({ cell, table, rowIndex, columnId, isEditing, isFocuse
4604
4605
  //#region src/data-grid/cell-variants/gantt-cell.tsx
4605
4606
  function GanttCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isSelected }) {
4606
4607
  const initialValue = cell.getValue();
4607
- const containerRef = React$31.useRef(null);
4608
+ const containerRef = React$32.useRef(null);
4608
4609
  const cellOpts = cell.column.columnDef.meta?.cell;
4609
4610
  const ts = cellOpts?.dateRangeFrom ?? cellOpts?.timelineStart;
4610
4611
  const te = cellOpts?.dateRangeTo ?? cellOpts?.timelineEnd;
@@ -4639,6 +4640,191 @@ function GanttCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isSe
4639
4640
  });
4640
4641
  }
4641
4642
 
4643
+ //#endregion
4644
+ //#region src/data-grid/cell-variants/json-cell.tsx
4645
+ function formatJson(value) {
4646
+ if (value == null || value === "") return null;
4647
+ try {
4648
+ const parsed = typeof value === "string" ? JSON.parse(value) : value;
4649
+ return JSON.stringify(parsed, null, 2);
4650
+ } catch {
4651
+ return typeof value === "string" ? value : String(value);
4652
+ }
4653
+ }
4654
+ function isValidJson(str) {
4655
+ if (!str) return false;
4656
+ try {
4657
+ JSON.parse(str);
4658
+ return true;
4659
+ } catch {
4660
+ return false;
4661
+ }
4662
+ }
4663
+ function JsonCell({ cell, table, rowIndex, columnId, isFocused, isSelected }) {
4664
+ const rawValue = cell.getValue();
4665
+ const [dialogOpen, setDialogOpen] = React$31.useState(false);
4666
+ const [editValue, setEditValue] = React$31.useState("");
4667
+ const [copied, setCopied] = React$31.useState(false);
4668
+ const containerRef = React$31.useRef(null);
4669
+ const copiedTimerRef = React$31.useRef(null);
4670
+ const meta = table.options.meta;
4671
+ const displayValue = React$31.useMemo(() => {
4672
+ if (rawValue == null || rawValue === "") return "";
4673
+ if (typeof rawValue === "string") try {
4674
+ return JSON.stringify(JSON.parse(rawValue));
4675
+ } catch {
4676
+ return rawValue;
4677
+ }
4678
+ return JSON.stringify(rawValue);
4679
+ }, [rawValue]);
4680
+ const formattedJson = React$31.useMemo(() => formatJson(rawValue), [rawValue]);
4681
+ const jsonParseError = React$31.useMemo(() => {
4682
+ if (!editValue) return null;
4683
+ try {
4684
+ JSON.parse(editValue);
4685
+ return null;
4686
+ } catch (e) {
4687
+ return e.message;
4688
+ }
4689
+ }, [editValue]);
4690
+ const hasChanges = React$31.useMemo(() => editValue !== (formattedJson ?? ""), [editValue, formattedJson]);
4691
+ const onContentDoubleClick = React$31.useCallback((event) => {
4692
+ event.stopPropagation();
4693
+ setEditValue(formattedJson ?? "");
4694
+ setCopied(false);
4695
+ setDialogOpen(true);
4696
+ }, [formattedJson]);
4697
+ const onCopy = React$31.useCallback(() => {
4698
+ navigator.clipboard.writeText(editValue).then(() => {
4699
+ if (copiedTimerRef.current) clearTimeout(copiedTimerRef.current);
4700
+ setCopied(true);
4701
+ copiedTimerRef.current = setTimeout(() => setCopied(false), 2e3);
4702
+ }, () => {});
4703
+ }, [editValue]);
4704
+ const onSave = React$31.useCallback(() => {
4705
+ if (!hasChanges) return;
4706
+ if (!editValue) {
4707
+ meta?.onDataUpdate?.({
4708
+ rowIndex,
4709
+ columnId,
4710
+ value: null
4711
+ });
4712
+ setDialogOpen(false);
4713
+ return;
4714
+ }
4715
+ if (jsonParseError) return;
4716
+ const compactValue = JSON.stringify(JSON.parse(editValue));
4717
+ meta?.onDataUpdate?.({
4718
+ rowIndex,
4719
+ columnId,
4720
+ value: compactValue
4721
+ });
4722
+ setDialogOpen(false);
4723
+ }, [
4724
+ editValue,
4725
+ jsonParseError,
4726
+ hasChanges,
4727
+ meta,
4728
+ rowIndex,
4729
+ columnId
4730
+ ]);
4731
+ const onFormat = React$31.useCallback(() => {
4732
+ if (isValidJson(editValue)) setEditValue(JSON.stringify(JSON.parse(editValue), null, 2));
4733
+ }, [editValue]);
4734
+ const onCancel = React$31.useCallback(() => {
4735
+ setDialogOpen(false);
4736
+ }, []);
4737
+ React$31.useEffect(() => {
4738
+ return () => {
4739
+ if (copiedTimerRef.current) clearTimeout(copiedTimerRef.current);
4740
+ };
4741
+ }, []);
4742
+ React$31.useEffect(() => {
4743
+ if (isFocused && !meta?.searchOpen && !meta?.isScrolling && containerRef.current) containerRef.current.focus();
4744
+ }, [
4745
+ isFocused,
4746
+ meta?.searchOpen,
4747
+ meta?.isScrolling
4748
+ ]);
4749
+ const onKeyDown = React$31.useCallback((event) => {
4750
+ if (event.key === "Enter" && !dialogOpen) {
4751
+ event.preventDefault();
4752
+ setEditValue(formattedJson ?? "");
4753
+ setCopied(false);
4754
+ setDialogOpen(true);
4755
+ }
4756
+ }, [dialogOpen, formattedJson]);
4757
+ const headerLabel = typeof cell.column.columnDef.header === "string" ? cell.column.columnDef.header : "JSON";
4758
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(DataGridCellWrapper, {
4759
+ ref: containerRef,
4760
+ cell,
4761
+ table,
4762
+ rowIndex,
4763
+ columnId,
4764
+ isEditing: false,
4765
+ isFocused,
4766
+ isSelected,
4767
+ onKeyDown,
4768
+ children: /* @__PURE__ */ jsx("span", {
4769
+ "data-slot": "grid-cell-content",
4770
+ className: "font-mono text-xs text-muted-foreground",
4771
+ onDoubleClick: onContentDoubleClick,
4772
+ children: displayValue
4773
+ })
4774
+ }), /* @__PURE__ */ jsx(Dialog, {
4775
+ open: dialogOpen,
4776
+ onOpenChange: setDialogOpen,
4777
+ children: /* @__PURE__ */ jsxs(DialogContent, {
4778
+ className: "max-w-2xl max-h-[80vh]",
4779
+ children: [
4780
+ /* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsxs(DialogTitle, { children: [headerLabel, " (JSON)"] }) }),
4781
+ /* @__PURE__ */ jsx(Textarea, {
4782
+ value: editValue,
4783
+ onChange: (e) => setEditValue(e.target.value),
4784
+ className: "min-h-[200px] max-h-[50vh] font-mono text-sm resize-y",
4785
+ spellCheck: false
4786
+ }),
4787
+ jsonParseError && /* @__PURE__ */ jsx("p", {
4788
+ className: "text-sm text-destructive",
4789
+ children: jsonParseError
4790
+ }),
4791
+ /* @__PURE__ */ jsxs(DialogFooter, {
4792
+ className: "flex-row justify-between sm:justify-between gap-2",
4793
+ children: [/* @__PURE__ */ jsxs(Button, {
4794
+ variant: "ghost",
4795
+ size: "sm",
4796
+ onClick: onCopy,
4797
+ children: [copied ? /* @__PURE__ */ jsx(Check, { className: "h-4 w-4 text-green-500" }) : /* @__PURE__ */ jsx(ClipboardCopy, { className: "h-4 w-4" }), copied ? "Copied" : "Copy"]
4798
+ }), /* @__PURE__ */ jsxs("div", {
4799
+ className: "flex gap-2",
4800
+ children: [
4801
+ /* @__PURE__ */ jsx(Button, {
4802
+ variant: "outline",
4803
+ size: "sm",
4804
+ onClick: onCancel,
4805
+ children: "Cancel"
4806
+ }),
4807
+ /* @__PURE__ */ jsx(Button, {
4808
+ variant: "outline",
4809
+ size: "sm",
4810
+ onClick: onFormat,
4811
+ disabled: !!jsonParseError || !editValue,
4812
+ children: "Format"
4813
+ }),
4814
+ /* @__PURE__ */ jsx(Button, {
4815
+ size: "sm",
4816
+ onClick: onSave,
4817
+ disabled: !!jsonParseError || !hasChanges,
4818
+ children: "Save"
4819
+ })
4820
+ ]
4821
+ })]
4822
+ })
4823
+ ]
4824
+ })
4825
+ })] });
4826
+ }
4827
+
4642
4828
  //#endregion
4643
4829
  //#region src/data-grid/cell-variants/long-text-cell.tsx
4644
4830
  function LongTextCell({ cell, table, rowIndex, columnId, isFocused, isEditing, isSelected }) {
@@ -5655,6 +5841,15 @@ function DataGridCell({ cell, table }) {
5655
5841
  isFocused,
5656
5842
  isSelected
5657
5843
  });
5844
+ case "json": return /* @__PURE__ */ jsx(JsonCell, {
5845
+ cell,
5846
+ table,
5847
+ rowIndex,
5848
+ columnId,
5849
+ isEditing,
5850
+ isFocused,
5851
+ isSelected
5852
+ });
5658
5853
  case "gantt": return /* @__PURE__ */ jsx(GanttCell, {
5659
5854
  cell,
5660
5855
  table,
@@ -11335,114 +11530,316 @@ ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
11335
11530
 
11336
11531
  //#endregion
11337
11532
  //#region src/tree-view/tree-view.tsx
11338
- const TreeBranch = ({ node, level, onNodeSelect, onGroupSelect, onToggleGroup, isLast = false, parentIsLast = [], defaultExpandedIds = [], selectedId }) => {
11533
+ const DragContext = React$1.createContext({
11534
+ dragState: {
11535
+ draggedNodeId: null,
11536
+ dropTarget: null
11537
+ },
11538
+ setDragState: () => {}
11539
+ });
11540
+ /** Checks if `targetId` is a descendant of `ancestorId` in the tree. Used to prevent dropping a node into itself. */
11541
+ function isDescendant(nodes, ancestorId, targetId) {
11542
+ for (const node of nodes) {
11543
+ if (node.id === ancestorId && node.children) return containsNode(node.children, targetId);
11544
+ if (node.children && isDescendant(node.children, ancestorId, targetId)) return true;
11545
+ }
11546
+ return false;
11547
+ }
11548
+ /** Recursively checks if any node in the subtree has the given id. */
11549
+ function containsNode(nodes, targetId) {
11550
+ for (const node of nodes) {
11551
+ if (node.id === targetId) return true;
11552
+ if (node.children && containsNode(node.children, targetId)) return true;
11553
+ }
11554
+ return false;
11555
+ }
11556
+ /** Finds and returns a node by id from anywhere in the tree. */
11557
+ function findNode(nodes, id) {
11558
+ for (const node of nodes) {
11559
+ if (node.id === id) return node;
11560
+ if (node.children) {
11561
+ const found = findNode(node.children, id);
11562
+ if (found) return found;
11563
+ }
11564
+ }
11565
+ return void 0;
11566
+ }
11567
+ const TreeBranch = ({ node, level, onNodeSelect, onGroupSelect, onToggleGroup, onNodeDelete, onNodeDrop, defaultExpandedIds = [], selectedId, rootData }) => {
11339
11568
  const isGroup = node.type === "group";
11340
11569
  const hasChildren = node.children && node.children.length > 0;
11570
+ const { dragState, setDragState } = React$1.useContext(DragContext);
11571
+ /** Determines drop position (before/after/inside) based on cursor proximity to element edges. */
11572
+ const handleDragOver = (e) => {
11573
+ if (!dragState.draggedNodeId || dragState.draggedNodeId === node.id) return;
11574
+ if (isDescendant(rootData, dragState.draggedNodeId, node.id)) return;
11575
+ e.preventDefault();
11576
+ e.stopPropagation();
11577
+ const rect = e.currentTarget.getBoundingClientRect();
11578
+ const distFromTop = e.clientY - rect.top;
11579
+ const distFromBottom = rect.bottom - e.clientY;
11580
+ const isExpanded = isGroup && hasChildren && defaultExpandedIds.includes(node.id);
11581
+ let position;
11582
+ if (distFromTop < 10) position = "before";
11583
+ else if (!isExpanded && distFromBottom < 10) position = "after";
11584
+ else position = "inside";
11585
+ if (node.locked && position !== "inside") return;
11586
+ setDragState((prev) => {
11587
+ if (prev.dropTarget?.nodeId === node.id && prev.dropTarget.position === position) return prev;
11588
+ return {
11589
+ ...prev,
11590
+ dropTarget: {
11591
+ nodeId: node.id,
11592
+ position
11593
+ }
11594
+ };
11595
+ });
11596
+ };
11597
+ /** Fires onNodeDrop with the source node and target info, then resets drag state. */
11598
+ const handleDrop = (e) => {
11599
+ e.preventDefault();
11600
+ e.stopPropagation();
11601
+ if (!dragState.draggedNodeId || !dragState.dropTarget || !onNodeDrop) return;
11602
+ const sourceNode = findNode(rootData, dragState.draggedNodeId);
11603
+ if (!sourceNode) return;
11604
+ onNodeDrop(sourceNode, {
11605
+ node,
11606
+ position: dragState.dropTarget.position
11607
+ });
11608
+ setDragState({
11609
+ draggedNodeId: null,
11610
+ dropTarget: null
11611
+ });
11612
+ };
11613
+ /** Clears drop target when the cursor leaves this node (but not when moving to a child element). */
11614
+ const handleDragLeave = (e) => {
11615
+ if (!e.currentTarget.contains(e.relatedTarget)) setDragState((prev) => prev.dropTarget?.nodeId === node.id ? {
11616
+ ...prev,
11617
+ dropTarget: null
11618
+ } : prev);
11619
+ };
11620
+ const isDraggedOver = dragState.dropTarget?.nodeId === node.id;
11621
+ const dropPosition = dragState.dropTarget?.position;
11622
+ const isDragging = dragState.draggedNodeId === node.id;
11623
+ const indent = level * 24;
11624
+ const dropLineBase = "after:absolute after:right-0 after:h-[2.5px] after:bg-primary after:left-(--drop-left) after:z-10";
11625
+ const showLine = isDraggedOver && dropPosition;
11626
+ const dropLineClass = cn("relative", {
11627
+ [`after:top-0 ${dropLineBase}`]: showLine === "before",
11628
+ [`after:-bottom-px ${dropLineBase}`]: showLine === "after" || showLine === "inside",
11629
+ "opacity-50": isDragging
11630
+ });
11631
+ const dropLineStyle = (offset) => isDraggedOver ? { "--drop-left": `${offset + (dropPosition === "inside" ? 24 : 0)}px` } : {};
11632
+ const dropHighlightClass = cn({ "bg-accent text-accent-foreground": isDraggedOver && dropPosition === "inside" });
11341
11633
  if (!isGroup) return /* @__PURE__ */ jsxs("div", {
11342
11634
  "data-test-id": `tree-node-${node.id}`,
11343
- className: cn("relative flex items-center gap-2 py-1.5 px-2 rounded-md cursor-pointer hover:bg-accent hover:text-accent-foreground transition-colors border border-transparent hover:border hover:border-(--discreet-border)", node.className, { "bg-primary text-primary-foreground hover:border hover:border-(--discreet-border)": selectedId === node.id }),
11344
- style: { marginLeft: `${level * 24}px` },
11345
- onClick: () => onNodeSelect?.(node),
11635
+ className: cn("relative group/node flex items-center gap-2 py-1.5 px-2 rounded-md cursor-pointer hover:bg-accent hover:text-accent-foreground transition-colors border border-transparent hover:border hover:border-(--discreet-border)", node.className, { "bg-primary text-primary-foreground hover:border hover:border-(--discreet-border)": selectedId === node.id }, dropLineClass, dropHighlightClass),
11636
+ style: {
11637
+ marginLeft: `${indent}px`,
11638
+ ...dropLineStyle(0)
11639
+ },
11640
+ onClick: (e) => {
11641
+ if (e.target.closest("[data-slot=\"drag-handle\"]")) return;
11642
+ onNodeSelect?.(node);
11643
+ },
11644
+ onDragOver: onNodeDrop ? handleDragOver : void 0,
11645
+ onDrop: onNodeDrop ? handleDrop : void 0,
11646
+ onDragLeave: onNodeDrop ? handleDragLeave : void 0,
11346
11647
  children: [
11347
11648
  node.icon,
11348
11649
  /* @__PURE__ */ jsx("span", {
11349
11650
  className: "text-sm select-none truncate",
11350
11651
  children: node.name
11351
11652
  }),
11352
- node.trailing
11653
+ node.trailing,
11654
+ !node.locked && (onNodeDelete || onNodeDrop) && /* @__PURE__ */ jsx(NodeActions, {
11655
+ node,
11656
+ onNodeDelete,
11657
+ onNodeDrop
11658
+ })
11353
11659
  ]
11354
11660
  });
11355
11661
  return /* @__PURE__ */ jsxs(AccordionItem, {
11356
11662
  value: node.id,
11357
- className: "border-0",
11663
+ className: "border-0 overflow-y-visible overflow-x-clip",
11358
11664
  "data-test-id": `tree-group-${node.id}`,
11359
- children: [/* @__PURE__ */ jsxs(AccordionTrigger, {
11360
- style: { "--margin-left": `calc(${level * 24 + 16}px - 16px)` },
11361
- className: cn("flex flex-1 overflow-hidden items-center gap-2 py-1.5 px-2 rounded-md ml-(--margin-left) hover:bg-accent hover:text-accent-foreground hover:no-underline transition-colors border border-transparent hover:border hover:border-(--discreet-border)", "[&>svg:last-child]:hidden", node.className, { "bg-primary text-primary-foreground": selectedId === node.id }),
11362
- children: [
11363
- /* @__PURE__ */ jsx(PlusIcon, {
11364
- "data-test-id": `tree-expand-${node.id}`,
11365
- className: "size-4 shrink-0 hidden [[data-state=closed]>&]:block hover:border rounded",
11366
- onClick: () => {
11367
- onToggleGroup?.({
11368
- isExpanded: true,
11369
- node
11370
- });
11371
- }
11372
- }),
11373
- /* @__PURE__ */ jsx(MinusIcon, {
11374
- "data-test-id": `tree-collapse-${node.id}`,
11375
- className: "size-4 shrink-0 hidden [[data-state=open]>&]:block hover:border rounded",
11376
- onClick: () => {
11377
- onToggleGroup?.({
11378
- isExpanded: false,
11379
- node
11380
- });
11381
- }
11382
- }),
11383
- /* @__PURE__ */ jsxs("div", {
11384
- "data-test-id": `tree-group-label-${node.id}`,
11385
- className: "flex w-[calc(100%-16px)] gap-2",
11386
- onClick: (e) => {
11387
- e.stopPropagation();
11388
- onGroupSelect?.(node);
11389
- },
11390
- children: [
11391
- node.icon,
11392
- /* @__PURE__ */ jsx("span", {
11393
- className: "text-sm select-none truncate text-left",
11394
- children: node.name
11395
- }),
11396
- node.trailing
11397
- ]
11398
- })
11399
- ]
11665
+ children: [/* @__PURE__ */ jsxs("div", {
11666
+ className: cn("relative group/node overflow-y-visible overflow-x-clip", dropLineClass),
11667
+ style: dropLineStyle(indent),
11668
+ onDragOver: onNodeDrop ? handleDragOver : void 0,
11669
+ onDrop: onNodeDrop ? handleDrop : void 0,
11670
+ onDragLeave: onNodeDrop ? handleDragLeave : void 0,
11671
+ children: [/* @__PURE__ */ jsxs(AccordionTrigger, {
11672
+ style: { "--margin-left": `calc(${level * 24 + 16}px - 16px)` },
11673
+ className: cn("relative flex flex-1 overflow-hidden items-center gap-2 py-1.5 px-2 rounded-md ml-(--margin-left) group-hover/node:bg-accent group-hover/node:text-accent-foreground hover:no-underline transition-colors border border-transparent group-hover/node:border group-hover/node:border-(--discreet-border)", "[&>svg:last-child]:hidden", node.className, { "bg-primary text-primary-foreground": selectedId === node.id }, dropHighlightClass),
11674
+ children: [
11675
+ /* @__PURE__ */ jsx(PlusIcon, {
11676
+ "data-test-id": `tree-expand-${node.id}`,
11677
+ className: "size-4 shrink-0 hidden [[data-state=closed]>&]:block hover:border rounded",
11678
+ onClick: () => {
11679
+ onToggleGroup?.({
11680
+ isExpanded: true,
11681
+ node
11682
+ });
11683
+ }
11684
+ }),
11685
+ /* @__PURE__ */ jsx(MinusIcon, {
11686
+ "data-test-id": `tree-collapse-${node.id}`,
11687
+ className: "size-4 shrink-0 hidden [[data-state=open]>&]:block hover:border rounded",
11688
+ onClick: () => {
11689
+ onToggleGroup?.({
11690
+ isExpanded: false,
11691
+ node
11692
+ });
11693
+ }
11694
+ }),
11695
+ /* @__PURE__ */ jsxs("div", {
11696
+ "data-test-id": `tree-group-label-${node.id}`,
11697
+ className: "flex w-[calc(100%-16px)] gap-2",
11698
+ onClick: (e) => {
11699
+ e.stopPropagation();
11700
+ if (e.target.closest("[data-slot=\"dropdown-menu-trigger\"]")) return;
11701
+ if (e.target.closest("[data-slot=\"drag-handle\"]")) return;
11702
+ onGroupSelect?.(node);
11703
+ },
11704
+ children: [
11705
+ node.icon,
11706
+ /* @__PURE__ */ jsx("span", {
11707
+ className: "text-sm select-none truncate text-left",
11708
+ children: node.name
11709
+ }),
11710
+ node.trailing
11711
+ ]
11712
+ })
11713
+ ]
11714
+ }), !node.locked && (onNodeDelete || onNodeDrop) && /* @__PURE__ */ jsx(NodeActions, {
11715
+ node,
11716
+ onNodeDelete,
11717
+ onNodeDrop
11718
+ })]
11400
11719
  }), hasChildren && /* @__PURE__ */ jsxs(AccordionContent, {
11401
- className: "pb-0 pt-0 relative",
11720
+ className: "pb-0 pt-0 relative overflow-y-visible overflow-x-clip",
11402
11721
  children: [/* @__PURE__ */ jsx("div", {
11403
11722
  style: { "--left-offset": `calc(${level * 24 + 32}px - 16px)` },
11404
11723
  className: "before:absolute before:top-0 before:start-(--left-offset) before:w-0.5 before:-ms-px before:h-full before:bg-sidebar-ring dark:before:bg-sidebar-ring"
11405
11724
  }), /* @__PURE__ */ jsx(Accordion, {
11406
11725
  type: "multiple",
11407
11726
  value: defaultExpandedIds,
11408
- children: node.children?.map((child, index) => /* @__PURE__ */ jsx(TreeBranch, {
11727
+ children: node.children?.map((child) => /* @__PURE__ */ jsx(TreeBranch, {
11409
11728
  node: child,
11410
11729
  level: level + 1,
11411
11730
  onNodeSelect,
11412
11731
  onGroupSelect,
11413
11732
  onToggleGroup,
11414
- isLast: index === node.children.length - 1,
11415
- parentIsLast: [...parentIsLast, isLast],
11733
+ onNodeDelete,
11734
+ onNodeDrop,
11416
11735
  defaultExpandedIds,
11417
- selectedId
11736
+ selectedId,
11737
+ rootData
11418
11738
  }, child.id))
11419
11739
  })]
11420
11740
  })]
11421
11741
  });
11422
11742
  };
11423
- const TreeView = React$1.forwardRef(({ data, onNodeSelect, onGroupSelect, onToggleGroup, className, defaultExpandedIds = [], selectedId }, ref) => {
11424
- return /* @__PURE__ */ jsx("div", {
11425
- ref,
11426
- className: cn("w-full select-none", className),
11427
- children: /* @__PURE__ */ jsx(Accordion, {
11428
- type: "multiple",
11429
- value: defaultExpandedIds,
11430
- children: data.map((node, index) => /* @__PURE__ */ jsx(TreeBranch, {
11431
- node,
11432
- level: 0,
11433
- onNodeSelect,
11434
- onGroupSelect,
11435
- onToggleGroup,
11436
- isLast: index === data.length - 1,
11437
- parentIsLast: [],
11438
- defaultExpandedIds,
11439
- selectedId
11440
- }, node.id))
11743
+ const TreeView = React$1.forwardRef(({ data, onNodeSelect, onGroupSelect, onToggleGroup, onNodeDelete, onNodeDrop, className, defaultExpandedIds = [], selectedId }, ref) => {
11744
+ const [dragState, setDragState] = React$1.useState({
11745
+ draggedNodeId: null,
11746
+ dropTarget: null
11747
+ });
11748
+ return /* @__PURE__ */ jsx(DragContext.Provider, {
11749
+ value: {
11750
+ dragState,
11751
+ setDragState
11752
+ },
11753
+ children: /* @__PURE__ */ jsx("div", {
11754
+ ref,
11755
+ className: cn("w-full select-none", className),
11756
+ onDragOver: onNodeDrop && dragState.draggedNodeId ? (e) => e.preventDefault() : void 0,
11757
+ children: /* @__PURE__ */ jsx(Accordion, {
11758
+ type: "multiple",
11759
+ value: defaultExpandedIds,
11760
+ children: data.map((node) => /* @__PURE__ */ jsx(TreeBranch, {
11761
+ node,
11762
+ level: 0,
11763
+ onNodeSelect,
11764
+ onGroupSelect,
11765
+ onToggleGroup,
11766
+ onNodeDelete,
11767
+ onNodeDrop,
11768
+ defaultExpandedIds,
11769
+ selectedId,
11770
+ rootData: data
11771
+ }, node.id))
11772
+ })
11441
11773
  })
11442
11774
  });
11443
11775
  });
11776
+ const NodeActions = ({ node, onNodeDelete, onNodeDrop }) => {
11777
+ const [showDeleteConfirmation, setShowDeleteConfirmation] = React$1.useState(false);
11778
+ const containerRef = React$1.useRef(null);
11779
+ const { setDragState } = React$1.useContext(DragContext);
11780
+ React$1.useEffect(() => {
11781
+ if (!showDeleteConfirmation) return;
11782
+ const handleClickOutside = (e) => {
11783
+ if (containerRef.current && !containerRef.current.contains(e.target)) setShowDeleteConfirmation(false);
11784
+ };
11785
+ document.addEventListener("mousedown", handleClickOutside);
11786
+ return () => document.removeEventListener("mousedown", handleClickOutside);
11787
+ }, [showDeleteConfirmation]);
11788
+ return /* @__PURE__ */ jsx("div", {
11789
+ ref: containerRef,
11790
+ className: "absolute top-1/2 -translate-y-1/2 end-1 flex items-center gap-0.5 rounded transition-none group-hover/node:bg-accent",
11791
+ children: showDeleteConfirmation && onNodeDelete ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Button, {
11792
+ variant: "ghost",
11793
+ size: "iconXs",
11794
+ onClick: (e) => {
11795
+ e.stopPropagation();
11796
+ setShowDeleteConfirmation(false);
11797
+ },
11798
+ children: /* @__PURE__ */ jsx(XIcon, { className: "size-4" })
11799
+ }), /* @__PURE__ */ jsx(Button, {
11800
+ variant: "destructive",
11801
+ size: "iconXs",
11802
+ onClick: (e) => {
11803
+ e.stopPropagation();
11804
+ onNodeDelete(node);
11805
+ setShowDeleteConfirmation(false);
11806
+ },
11807
+ children: /* @__PURE__ */ jsx(CheckIcon$1, { className: "size-4" })
11808
+ })] }) : /* @__PURE__ */ jsxs(Fragment, { children: [onNodeDelete && /* @__PURE__ */ jsx(Button, {
11809
+ variant: "ghost",
11810
+ size: "iconXs",
11811
+ className: "opacity-0 group-hover/node:opacity-100",
11812
+ onClick: (e) => {
11813
+ e.stopPropagation();
11814
+ setShowDeleteConfirmation(true);
11815
+ },
11816
+ children: /* @__PURE__ */ jsx(Trash2Icon, { className: "size-4" })
11817
+ }), onNodeDrop && /* @__PURE__ */ jsx(Button, {
11818
+ variant: "ghost",
11819
+ size: "iconXs",
11820
+ "data-slot": "drag-handle",
11821
+ draggable: true,
11822
+ className: "opacity-0 group-hover/node:opacity-100 cursor-grab active:cursor-grabbing bg-transparent",
11823
+ onDragStart: (e) => {
11824
+ e.dataTransfer.effectAllowed = "move";
11825
+ e.dataTransfer.setData("text/plain", node.id);
11826
+ setDragState({
11827
+ draggedNodeId: node.id,
11828
+ dropTarget: null
11829
+ });
11830
+ },
11831
+ onDragEnd: () => {
11832
+ setDragState({
11833
+ draggedNodeId: null,
11834
+ dropTarget: null
11835
+ });
11836
+ },
11837
+ children: /* @__PURE__ */ jsx(GripVerticalIcon, { className: "size-4" })
11838
+ })] })
11839
+ });
11840
+ };
11444
11841
  TreeView.displayName = "TreeView";
11445
11842
 
11446
11843
  //#endregion
11447
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, Avatar, AvatarFallback, AvatarImage, Badge, KanbanBoard as Board, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, CheckboxCell, Collapse, CollapseContent, CollapseTrigger, KanbanColumn as Column, KanbanColumnHandle as ColumnHandle, ComboboxDemo, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandPalette, CommandPaletteDialog, CommandPaletteEmpty, CommandPaletteGroup, CommandPaletteInput, CommandPaletteItem, CommandPaletteList, CommandPaletteSeparator, CommandPaletteShortcut, CommandSeparator, CommandShortcut, CommentCreate, CommentList, CommentThread, ContentFrame, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataGrid, DataGridCell, DataGridCellWrapper, DataGridColumnHeader, DataGridContextMenu, DataGridRow, DataGridSearch, DataGridViewMenu, DateCell, DatePickerDemo, DeferredInput, DeferredNumberInput, DeferredTextarea, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DynamicTabbedSidebar, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, GanttCell, GanttTimeline, GanttTimerangePicker, HeaderComponents, HierarchyCell, HierarchyItem, HoverCard, HoverCardContent, HoverCardTrigger, InfoCard, Input, KanbanItem as Item, KanbanItemHandle as ItemHandle, KanbanRoot as Kanban, KanbanBoard, KanbanColumn, KanbanColumnHandle, KanbanItem, KanbanItemHandle, KanbanOverlay, Label, Loader, LongTextCell, MarkValueRenderer, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Modal, MultiSelectCell, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NumberCell, NumberInput, KanbanOverlay as Overlay, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ReactNodeCell, ResizableHandle, ResizablePanel, ResizablePanelGroup, KanbanRoot as Root, SIDEBAR_KEYBOARD_SHORTCUT, SIDEBAR_KEYBOARD_SHORTCUT_RIGHT, SIDEBAR_MAX_WIDTH, SIDEBAR_MIN_WIDTH, SIDEBAR_WIDTH, SIDEBAR_WIDTH_ICON, SIDEBAR_WIDTH_MOBILE, ScrollArea, ScrollBar, Select, SelectCell, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, ShortTextCell, Sidebar, SidebarContent, SidebarContext, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarSideContext, SidebarTab, SidebarTabsContext, SidebarTabsProvider, SidebarTrigger, Skeleton, Slicer, SlicerHierarchyItem, Slider, Spinner, Stepper, StepperContent, StepperDescription, StepperIndicator, StepperItem, StepperList, StepperNext, StepperPrev, StepperSeparator, StepperTitle, StepperTrigger, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TreeBranch, TreeView, badgeVariants, buildLabelMap, buttonVariants, checkboxVariants, cn, commandInputVariants, createSelectColumn, findOptionById, getAllDescendantIds, getAllDescendantValues, getAllIds, getAncestorIds, getCellKey, getCommonPinningStyles, getInitialExpandedIds, getLabelPath, getLineCount, getRowHeightValue, inputVariants, isoToLocalDate, knobVariants, matchesSearch, navigationMenuTriggerStyle, parseCellKey, sliderVariants, testId, toast, toggleVariants, useCallbackRef, useDataGrid, useDebouncedCallback, useIsMobile, useRegisteredSidebars, useSidebar, useSidebarTabs, useStore as useStepper };
11844
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, Avatar, AvatarFallback, AvatarImage, Badge, KanbanBoard as Board, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, CheckboxCell, Collapse, CollapseContent, CollapseTrigger, KanbanColumn as Column, KanbanColumnHandle as ColumnHandle, ComboboxDemo, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandPalette, CommandPaletteDialog, CommandPaletteEmpty, CommandPaletteGroup, CommandPaletteInput, CommandPaletteItem, CommandPaletteList, CommandPaletteSeparator, CommandPaletteShortcut, CommandSeparator, CommandShortcut, CommentCreate, CommentList, CommentThread, ContentFrame, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataGrid, DataGridCell, DataGridCellWrapper, DataGridColumnHeader, DataGridContextMenu, DataGridRow, DataGridSearch, DataGridViewMenu, DateCell, DatePickerDemo, DeferredInput, DeferredNumberInput, DeferredTextarea, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, DynamicTabbedSidebar, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, GanttCell, GanttTimeline, GanttTimerangePicker, HeaderComponents, HierarchyCell, HierarchyItem, HoverCard, HoverCardContent, HoverCardTrigger, InfoCard, Input, KanbanItem as Item, KanbanItemHandle as ItemHandle, JsonCell, KanbanRoot as Kanban, KanbanBoard, KanbanColumn, KanbanColumnHandle, KanbanItem, KanbanItemHandle, KanbanOverlay, Label, Loader, LongTextCell, MarkValueRenderer, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, Modal, MultiSelectCell, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NumberCell, NumberInput, KanbanOverlay as Overlay, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ReactNodeCell, ResizableHandle, ResizablePanel, ResizablePanelGroup, KanbanRoot as Root, SIDEBAR_KEYBOARD_SHORTCUT, SIDEBAR_KEYBOARD_SHORTCUT_RIGHT, SIDEBAR_MAX_WIDTH, SIDEBAR_MIN_WIDTH, SIDEBAR_WIDTH, SIDEBAR_WIDTH_ICON, SIDEBAR_WIDTH_MOBILE, ScrollArea, ScrollBar, Select, SelectCell, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, ShortTextCell, Sidebar, SidebarContent, SidebarContext, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarSideContext, SidebarTab, SidebarTabsContext, SidebarTabsProvider, SidebarTrigger, Skeleton, Slicer, SlicerHierarchyItem, Slider, Spinner, Stepper, StepperContent, StepperDescription, StepperIndicator, StepperItem, StepperList, StepperNext, StepperPrev, StepperSeparator, StepperTitle, StepperTrigger, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TreeBranch, TreeView, badgeVariants, buildLabelMap, buttonVariants, checkboxVariants, cn, commandInputVariants, createSelectColumn, findOptionById, getAllDescendantIds, getAllDescendantValues, getAllIds, getAncestorIds, getCellKey, getCommonPinningStyles, getInitialExpandedIds, getLabelPath, getLineCount, getRowHeightValue, inputVariants, isoToLocalDate, knobVariants, matchesSearch, navigationMenuTriggerStyle, parseCellKey, sliderVariants, testId, toast, toggleVariants, useCallbackRef, useDataGrid, useDebouncedCallback, useIsMobile, useRegisteredSidebars, useSidebar, useSidebarTabs, useStore as useStepper };
11448
11845
  //# sourceMappingURL=index.js.map