@bizapps/ui 1.9.0 → 1.10.1

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/main.js CHANGED
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- import { SearchIcon, BellIcon, CircleHelpIcon, ChevronDownIcon, ChevronLeftIcon, MoreHorizontalIcon, ChevronRightIcon, MinusIcon, CheckIcon, LoaderCircle, ChevronUpIcon, X, ChevronLeft, ChevronRight, ExternalLinkIcon, ChevronsUpDownIcon, XIcon, UploadIcon, Loader2Icon, LoaderIcon, PipetteIcon, CalendarIcon, MenuIcon, Pencil, Clock, Funnel, ArrowUp, ArrowDown, ArrowUpDown, Ellipsis, Rows2, Eye, Search, House, Plane, Wallet, LayoutDashboardIcon, InfoIcon, TriangleAlertIcon, OctagonXIcon, CircleCheckIcon } from 'lucide-react';
2
+ import { SearchIcon, BellIcon, CircleHelpIcon, ChevronDownIcon, ChevronLeftIcon, MoreHorizontalIcon, ChevronRightIcon, MinusIcon, CheckIcon, LoaderCircle, ChevronUpIcon, X, ChevronLeft, ChevronRight, ExternalLinkIcon, ChevronsUpDownIcon, XIcon, UploadIcon, Loader2Icon, LoaderIcon, PipetteIcon, CalendarIcon, MenuIcon, Pencil, Clock, Funnel, ArrowUp, ArrowDown, ArrowUpDown, Ellipsis, Rows2, Eye, Search, BrushCleaning, House, Plane, Wallet, LayoutDashboardIcon, InfoIcon, TriangleAlertIcon, OctagonXIcon, CircleCheckIcon } from 'lucide-react';
3
3
  import { cva } from 'class-variance-authority';
4
4
  import { clsx } from 'clsx';
5
5
  import { twMerge } from 'tailwind-merge';
6
6
  import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
7
- import { createContext, memo, useRef, useState, useMemo, useCallback, useEffect, forwardRef, Fragment, useId, useContext, useLayoutEffect, isValidElement, cloneElement } from 'react';
7
+ import { createContext, memo, useRef, useState, useMemo, useCallback, useEffect, forwardRef, Fragment, useId, useContext, useLayoutEffect, isValidElement, useImperativeHandle, cloneElement } from 'react';
8
8
  import { Avatar as Avatar$1, Checkbox as Checkbox$1, Slot, Select as Select$1, Label as Label$1, Popover as Popover$1, Toggle as Toggle$1, ToggleGroup, Separator as Separator$1, Progress as Progress$1, Slider as Slider$1, Switch as Switch$1, Tabs as Tabs$1, Tooltip as Tooltip$1, Dialog as Dialog$1, AlertDialog as AlertDialog$1, Accordion as Accordion$1, DropdownMenu as DropdownMenu$1, RadioGroup as RadioGroup$1, NavigationMenu as NavigationMenu$1 } from 'radix-ui';
9
9
  import { isSameDay, isToday, format, addDays } from 'date-fns';
10
10
  import useEmblaCarousel from 'embla-carousel-react';
@@ -28,6 +28,7 @@ import { zodResolver } from '@hookform/resolvers/zod';
28
28
  import confetti from 'canvas-confetti';
29
29
  import { flexRender, useReactTable, getFilteredRowModel, getSortedRowModel, getCoreRowModel } from '@tanstack/react-table';
30
30
  export { createColumnHelper } from '@tanstack/react-table';
31
+ import SignaturePadLib from 'signature_pad';
31
32
 
32
33
  // src/components/ui/Alert/alert.tsx
33
34
  function cn(...inputs) {
@@ -928,10 +929,11 @@ function Input({ className, type, ...props }) {
928
929
  type,
929
930
  "data-slot": "input",
930
931
  className: cn(
931
- "border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-sm shadow-xs transition-[color,box-shadow] outline-none",
932
- "placeholder:text-muted-foreground",
932
+ "border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[border-color,box-shadow] outline-hidden md:text-sm",
933
+ "placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground",
934
+ "file:text-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium",
933
935
  "focus-visible:border-ring focus-visible:ring-ring/30 focus-visible:ring-3",
934
- "disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
936
+ "disabled:cursor-not-allowed disabled:opacity-50",
935
937
  "aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-invalid:ring-3",
936
938
  "dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
937
939
  className
@@ -6163,10 +6165,10 @@ function Textarea({ className, ...props }) {
6163
6165
  {
6164
6166
  "data-slot": "textarea",
6165
6167
  className: cn(
6166
- "border-input flex min-h-[80px] w-full resize-y rounded-md border bg-transparent px-3 py-2 text-sm shadow-xs transition-[color,box-shadow] outline-none",
6168
+ "border-input flex min-h-[80px] w-full resize-y rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[border-color,box-shadow] outline-hidden md:text-sm",
6167
6169
  "placeholder:text-muted-foreground",
6168
6170
  "focus-visible:border-ring focus-visible:ring-ring/30 focus-visible:ring-3",
6169
- "disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50",
6171
+ "disabled:cursor-not-allowed disabled:opacity-50",
6170
6172
  "aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-invalid:ring-3",
6171
6173
  "dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
6172
6174
  className
@@ -9396,6 +9398,201 @@ function DrawerDescription({
9396
9398
  }
9397
9399
  );
9398
9400
  }
9401
+ function SignaturePad({
9402
+ "aria-label": ariaLabel,
9403
+ "aria-describedby": ariaDescribedBy,
9404
+ onEmptyChange,
9405
+ disabled = false,
9406
+ height = 260,
9407
+ penColor = "black",
9408
+ // Smoother than the library defaults (0.5–2.5 px, 5 px, 16 ms), which drop points and turn
9409
+ // fast or small curves into visible straight segments.
9410
+ minWidth = 1,
9411
+ maxWidth = 3,
9412
+ minDistance = 1,
9413
+ throttle = 0,
9414
+ velocityFilterWeight,
9415
+ clearLabel,
9416
+ className,
9417
+ ref
9418
+ }) {
9419
+ const canvasRef = useRef(null);
9420
+ const padRef = useRef(null);
9421
+ const emptyRef = useRef(true);
9422
+ const [empty, setEmptyState] = useState(true);
9423
+ const onEmptyChangeRef = useRef(onEmptyChange);
9424
+ const drawnRef = useRef({
9425
+ data: [],
9426
+ width: 0,
9427
+ height: 0,
9428
+ scale: 1
9429
+ });
9430
+ const optionsRef = useRef({
9431
+ penColor,
9432
+ minWidth,
9433
+ maxWidth,
9434
+ minDistance,
9435
+ throttle,
9436
+ velocityFilterWeight
9437
+ });
9438
+ useEffect(() => {
9439
+ onEmptyChangeRef.current = onEmptyChange;
9440
+ }, [onEmptyChange]);
9441
+ const setEmpty = (next) => {
9442
+ if (emptyRef.current === next) return;
9443
+ emptyRef.current = next;
9444
+ setEmptyState(next);
9445
+ onEmptyChangeRef.current?.(next);
9446
+ };
9447
+ const clear = () => {
9448
+ padRef.current?.clear();
9449
+ drawnRef.current = { data: [], width: 0, height: 0, scale: 1 };
9450
+ setEmpty(true);
9451
+ };
9452
+ useEffect(() => {
9453
+ const canvas = canvasRef.current;
9454
+ if (!canvas) return;
9455
+ const pad = new SignaturePadLib(canvas, optionsRef.current);
9456
+ padRef.current = pad;
9457
+ let width = 0;
9458
+ let fittedHeight = 0;
9459
+ const redraw = () => {
9460
+ const drawn = drawnRef.current;
9461
+ drawn.scale = Math.min(width / drawn.width, fittedHeight / drawn.height, 1);
9462
+ pad.clear();
9463
+ pad.fromData(
9464
+ drawn.data.map((group) => ({
9465
+ ...group,
9466
+ points: group.points.map((point) => ({
9467
+ ...point,
9468
+ x: point.x * drawn.scale,
9469
+ y: point.y * drawn.scale
9470
+ }))
9471
+ }))
9472
+ );
9473
+ };
9474
+ const handleEnd = () => {
9475
+ const drawn = drawnRef.current;
9476
+ if (drawn.data.length === 0) {
9477
+ drawn.width = width;
9478
+ drawn.height = fittedHeight;
9479
+ drawn.scale = 1;
9480
+ }
9481
+ const newest = pad.toData().at(-1);
9482
+ if (newest) {
9483
+ const points = newest.points.map((point) => ({
9484
+ ...point,
9485
+ x: point.x / drawn.scale,
9486
+ y: point.y / drawn.scale
9487
+ }));
9488
+ drawn.data = [...drawn.data, { ...newest, points }];
9489
+ const margin = newest.maxWidth ?? 0;
9490
+ const reach = (axis) => Math.max(...points.map((point) => point[axis])) + margin;
9491
+ drawn.width = Math.max(drawn.width, reach("x"));
9492
+ drawn.height = Math.max(drawn.height, reach("y"));
9493
+ const fitting = Math.min(width / drawn.width, fittedHeight / drawn.height, 1);
9494
+ if (fitting !== drawn.scale) redraw();
9495
+ }
9496
+ setEmpty(pad.isEmpty());
9497
+ };
9498
+ pad.addEventListener("endStroke", handleEnd);
9499
+ const fit = () => {
9500
+ const nextWidth = canvas.offsetWidth;
9501
+ const nextHeight = canvas.offsetHeight;
9502
+ if (!nextWidth || !nextHeight) return;
9503
+ if (nextWidth === width && nextHeight === fittedHeight) return;
9504
+ width = nextWidth;
9505
+ fittedHeight = nextHeight;
9506
+ const ratio = window.devicePixelRatio || 1;
9507
+ canvas.width = nextWidth * ratio;
9508
+ canvas.height = nextHeight * ratio;
9509
+ canvas.getContext("2d")?.scale(ratio, ratio);
9510
+ pad.clear();
9511
+ if (drawnRef.current.data.length > 0) redraw();
9512
+ };
9513
+ fit();
9514
+ const observer = new ResizeObserver(fit);
9515
+ observer.observe(canvas);
9516
+ return () => {
9517
+ observer.disconnect();
9518
+ pad.removeEventListener("endStroke", handleEnd);
9519
+ pad.off();
9520
+ padRef.current = null;
9521
+ };
9522
+ }, []);
9523
+ useEffect(() => {
9524
+ if (disabled) padRef.current?.off();
9525
+ else padRef.current?.on();
9526
+ }, [disabled]);
9527
+ useImperativeHandle(
9528
+ ref,
9529
+ () => ({
9530
+ clear,
9531
+ isEmpty: () => padRef.current?.isEmpty() ?? true,
9532
+ toBlob: () => new Promise((resolve, reject) => {
9533
+ const canvas = canvasRef.current;
9534
+ if (!canvas) return reject(new Error("The signature pad is not mounted"));
9535
+ canvas.toBlob((blob) => {
9536
+ if (blob) resolve(blob);
9537
+ else reject(new Error("The signature could not be encoded as PNG"));
9538
+ }, "image/png");
9539
+ })
9540
+ }),
9541
+ // `clear` only touches refs and state setters, so the handle is created once.
9542
+ // eslint-disable-next-line react-hooks/exhaustive-deps
9543
+ []
9544
+ );
9545
+ return /* @__PURE__ */ jsxs(
9546
+ "div",
9547
+ {
9548
+ "data-slot": "signature-pad",
9549
+ "data-disabled": disabled ? "" : void 0,
9550
+ className: cn(
9551
+ // Fixed light "paper": the pen is black and the PNG is read on white by others. The
9552
+ // primitive keeps the pad light for consumers that define a dark theme, where a themed
9553
+ // surface (`background`, `border`) would turn dark and hide the black ink. The edge
9554
+ // uses `dark-400` (4.66:1 on white) so the pad reads as a control (WCAG 1.4.11).
9555
+ "bg-main-alternative-secondary border-dark-400 relative overflow-hidden rounded-xl border",
9556
+ "data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50",
9557
+ className
9558
+ ),
9559
+ children: [
9560
+ /* @__PURE__ */ jsx(
9561
+ "canvas",
9562
+ {
9563
+ ref: canvasRef,
9564
+ "data-slot": "signature-pad-canvas",
9565
+ role: "img",
9566
+ "aria-label": ariaLabel,
9567
+ "aria-describedby": ariaDescribedBy,
9568
+ "aria-disabled": disabled || void 0,
9569
+ style: { height },
9570
+ className: "block w-full touch-none"
9571
+ }
9572
+ ),
9573
+ /* @__PURE__ */ jsxs(
9574
+ Button,
9575
+ {
9576
+ type: "button",
9577
+ variant: "ghost",
9578
+ size: "sm",
9579
+ "data-slot": "signature-pad-clear",
9580
+ disabled,
9581
+ "aria-disabled": empty && !disabled ? true : void 0,
9582
+ onClick: () => {
9583
+ if (!emptyRef.current) clear();
9584
+ },
9585
+ className: "bg-main-white text-dark-600 border-dark-400 hover:bg-dark-100 hover:text-main-black aria-disabled:hover:bg-main-white absolute right-2 bottom-2 h-11 max-w-[calc(100%-1rem)] gap-1.5 rounded-full border border-solid px-4 text-sm aria-disabled:cursor-not-allowed aria-disabled:opacity-70",
9586
+ children: [
9587
+ /* @__PURE__ */ jsx(BrushCleaning, { "aria-hidden": true, className: "size-4 shrink-0" }),
9588
+ /* @__PURE__ */ jsx("span", { className: "truncate", children: clearLabel })
9589
+ ]
9590
+ }
9591
+ )
9592
+ ]
9593
+ }
9594
+ );
9595
+ }
9399
9596
  function TCCEProvider({
9400
9597
  children,
9401
9598
  permissions,
@@ -9405,6 +9602,6 @@ function TCCEProvider({
9405
9602
  return /* @__PURE__ */ jsx(TooltipProvider, { delayDuration: tooltipDelayDuration, children: /* @__PURE__ */ jsx(AbilityProvider, { permissions, children: /* @__PURE__ */ jsx(Toaster, { position: toasterPosition, children }) }) });
9406
9603
  }
9407
9604
 
9408
- export { AbilityProvider, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppShell, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge2 as Badge, BottomNav, BottomNavTabs, BottomNavTabsContent, BottomNavTabsList, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, CONFETTI_COLORS, Can, CanNot, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, ColorPicker, ColorPickerAlpha, ColorPickerEyeDropper, ColorPickerFormat, ColorPickerHue, ColorPickerOutput, ColorPickerPresets, ColorPickerSelection, Combobox, DataTable, DataTableCardView, DataTableColumnFilter, DataTableFooter, DataTableHeaderCell, DataTableRowActions, DataTableSearch, DataTableSkeleton, DataTableToolbar, DatePicker, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Dropzone, DropzoneContent, DropzoneEmptyState, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, EventCalendar, Field, FieldDescription, FieldError, FieldGroup, FieldLabel, FilterOption, Input, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, KNOWN_PERMISSIONS, Label, Link, Logo, MiniCalendar, MiniCalendarDay, MiniCalendarDays, MiniCalendarNavigation, Navbar, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PhoneField, PinInput, Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, SegmentedControl, SegmentedControlItem, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Spinner, SpinnerDots, SpinnerLoader, Status, StatusIndicator, StatusLabel, Switch, TCCEProvider, TEXT_SIZES, TEXT_WEIGHTS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TablePagination, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Text, Textarea, Toaster, Toggle, ToggleGroup2 as ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, alertVariants, animation, avatarVariants, badgeVariants2 as badgeVariants, buttonVariants, columnFiltersToArrayQueryParams, columnFiltersToJsonString, columnFiltersToQueryParams, columnFiltersToRecord, createBackendParams, createBackendParamsWithFilters, duration, ease, fadeIn, fireConfetti, getActiveFilterCount, getActiveFilterValues, getColumnValueCounts, getUniqueColumnValues, hasActiveFilters, linkVariants, logos, matchPermission, mergeFilters, multiSelectFilter, navigationMenuTriggerStyle, parseJsonToFilters, parseQueryParamsToFilters, progressIndicatorVariants, progressVariants, resetConfetti, scaleIn, searchInArray, skeletonVariants, slideRight, slideUp, sortRecordToSortingState, sortingStateToJsonString, sortingStateToRecord, spinnerDotsVariants, spinnerLoaderVariants, spinnerVariants, spring, stagger, toggleVariants, tooltipContentVariants, transition, useAbility, useAbilityStatus, useAppForm, useCan, useCarousel, useColorPicker, useColumnFilter, useSidebar, useTableContext, useTableData, useTableFiltering, useTableGlobalFilter, useTableSizing, useTableSorting, useTableVisibility, useToast, validatePhone };
9605
+ export { AbilityProvider, Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppShell, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, Badge2 as Badge, BottomNav, BottomNavTabs, BottomNavTabsContent, BottomNavTabsList, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, CONFETTI_COLORS, Can, CanNot, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, Checkbox, ColorPicker, ColorPickerAlpha, ColorPickerEyeDropper, ColorPickerFormat, ColorPickerHue, ColorPickerOutput, ColorPickerPresets, ColorPickerSelection, Combobox, DataTable, DataTableCardView, DataTableColumnFilter, DataTableFooter, DataTableHeaderCell, DataTableRowActions, DataTableSearch, DataTableSkeleton, DataTableToolbar, DatePicker, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Dropzone, DropzoneContent, DropzoneEmptyState, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, EventCalendar, Field, FieldDescription, FieldError, FieldGroup, FieldLabel, FilterOption, Input, Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemMedia, ItemSeparator, ItemTitle, KNOWN_PERMISSIONS, Label, Link, Logo, MiniCalendar, MiniCalendarDay, MiniCalendarDays, MiniCalendarNavigation, Navbar, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PhoneField, PinInput, Popover, PopoverAnchor, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, SegmentedControl, SegmentedControlItem, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SignaturePad, Skeleton, Slider, Spinner, SpinnerDots, SpinnerLoader, Status, StatusIndicator, StatusLabel, Switch, TCCEProvider, TEXT_SIZES, TEXT_WEIGHTS, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TablePagination, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Text, Textarea, Toaster, Toggle, ToggleGroup2 as ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, alertVariants, animation, avatarVariants, badgeVariants2 as badgeVariants, buttonVariants, columnFiltersToArrayQueryParams, columnFiltersToJsonString, columnFiltersToQueryParams, columnFiltersToRecord, createBackendParams, createBackendParamsWithFilters, duration, ease, fadeIn, fireConfetti, getActiveFilterCount, getActiveFilterValues, getColumnValueCounts, getUniqueColumnValues, hasActiveFilters, linkVariants, logos, matchPermission, mergeFilters, multiSelectFilter, navigationMenuTriggerStyle, parseJsonToFilters, parseQueryParamsToFilters, progressIndicatorVariants, progressVariants, resetConfetti, scaleIn, searchInArray, skeletonVariants, slideRight, slideUp, sortRecordToSortingState, sortingStateToJsonString, sortingStateToRecord, spinnerDotsVariants, spinnerLoaderVariants, spinnerVariants, spring, stagger, toggleVariants, tooltipContentVariants, transition, useAbility, useAbilityStatus, useAppForm, useCan, useCarousel, useColorPicker, useColumnFilter, useSidebar, useTableContext, useTableData, useTableFiltering, useTableGlobalFilter, useTableSizing, useTableSorting, useTableVisibility, useToast, validatePhone };
9409
9606
  //# sourceMappingURL=main.js.map
9410
9607
  //# sourceMappingURL=main.js.map