eai-frontend-components 2.0.25 → 2.0.26

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.esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
3
- import { ChevronDown, MoreHorizontal, ChevronRight, ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon, ArrowLeft, ArrowRight, Check, X, Search, Circle, CalendarIcon, ChevronUp, Calendar as Calendar$1, ChevronLeft, PanelLeft, CircleX, CalendarDays, CircleHelp, Paintbrush, ChevronsUpDown, LoaderCircle, CheckIcon, EyeOff, Eye, MoveUp, MoveDown, ArrowUpDown, Filter, LogOut, Copy, BarChart2 } from 'lucide-react';
3
+ import { ChevronDown, MoreHorizontal, ChevronRight, ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon, ArrowLeft, ArrowRight, Check, X, Search, Circle, CalendarIcon, ChevronUp, Calendar as Calendar$1, ChevronLeft, PanelLeft, CircleX, CalendarDays, CircleHelp, Paintbrush, ChevronsUpDown, LoaderCircle, CheckIcon, EyeOff, Eye, Copy, BarChart2, LogOut, MoveUp, MoveDown, ArrowUpDown, Filter } from 'lucide-react';
4
4
  import * as React from 'react';
5
5
  import React__default, { useState, useEffect, createContext, useContext, useRef } from 'react';
6
6
  import { clsx } from 'clsx';
@@ -39,11 +39,11 @@ import * as SwitchPrimitives from '@radix-ui/react-switch';
39
39
  import * as TabsPrimitive from '@radix-ui/react-tabs';
40
40
  import * as ToastPrimitives from '@radix-ui/react-toast';
41
41
  import { HexColorPicker } from 'react-colorful';
42
+ import { useNavigate, useLocation } from 'react-router-dom';
43
+ import LoadingBar from 'react-top-loading-bar';
42
44
  import { flexRender, useReactTable, getFilteredRowModel, getSortedRowModel, getCoreRowModel, getPaginationRowModel } from '@tanstack/react-table';
43
45
  import { zodResolver } from '@hookform/resolvers/zod';
44
46
  import { z } from 'zod';
45
- import { useNavigate, useLocation } from 'react-router-dom';
46
- import LoadingBar from 'react-top-loading-bar';
47
47
 
48
48
  function cn(...inputs) {
49
49
  return twMerge(clsx(inputs));
@@ -106,30 +106,29 @@ Button.displayName = 'Button';
106
106
  const AlertDialog = AlertDialogPrimitive.Root;
107
107
  const AlertDialogTrigger = AlertDialogPrimitive.Trigger;
108
108
  const AlertDialogPortal = AlertDialogPrimitive.Portal;
109
- const AlertDialogOverlay = React.forwardRef(({ className, ...props }, ref) => (jsx(AlertDialogPrimitive.Overlay, { 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), ...props, ref: ref })));
109
+ const AlertDialogOverlay = React.forwardRef(({ className, ...props }, ref) => (jsx(AlertDialogPrimitive.Overlay, { 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), ...props, ref: ref })));
110
110
  AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
111
- const AlertDialogContent = React.forwardRef(({ className, ...props }, ref) => (jsxs(AlertDialogPortal, { children: [jsx(AlertDialogOverlay, {}), jsx(AlertDialogPrimitive.Content, { ref: ref, 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=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-[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), ...props })] })));
111
+ const AlertDialogContent = React.forwardRef(({ className, ...props }, ref) => (jsxs(AlertDialogPortal, { children: [jsx(AlertDialogOverlay, {}), jsx(AlertDialogPrimitive.Content, { ref: ref, 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=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-[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), ...props })] })));
112
112
  AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName;
113
- const AlertDialogHeader = ({ className, ...props }) => (jsx("div", { className: cn("flex flex-col space-y-2 text-center sm:text-left", className), ...props }));
114
- AlertDialogHeader.displayName = "AlertDialogHeader";
115
- const AlertDialogFooter = ({ className, ...props }) => (jsx("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props }));
116
- AlertDialogFooter.displayName = "AlertDialogFooter";
117
- const AlertDialogTitle = React.forwardRef(({ className, ...props }, ref) => (jsx(AlertDialogPrimitive.Title, { ref: ref, className: cn("text-lg font-semibold", className), ...props })));
113
+ const AlertDialogHeader = ({ className, ...props }) => (jsx("div", { className: cn('flex flex-col space-y-2 text-center sm:text-left', className), ...props }));
114
+ AlertDialogHeader.displayName = 'AlertDialogHeader';
115
+ const AlertDialogFooter = ({ className, ...props }) => (jsx("div", { className: cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className), ...props }));
116
+ AlertDialogFooter.displayName = 'AlertDialogFooter';
117
+ const AlertDialogTitle = React.forwardRef(({ className, ...props }, ref) => jsx(AlertDialogPrimitive.Title, { ref: ref, className: cn('text-lg font-semibold', className), ...props }));
118
118
  AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
119
- const AlertDialogDescription = React.forwardRef(({ className, ...props }, ref) => (jsx(AlertDialogPrimitive.Description, { ref: ref, className: cn("text-sm text-muted-foreground", className), ...props })));
120
- AlertDialogDescription.displayName =
121
- AlertDialogPrimitive.Description.displayName;
122
- const AlertDialogAction = React.forwardRef(({ className, variant = "default", ...props }, ref) => (jsx(AlertDialogPrimitive.Action, { ref: ref, className: cn(buttonVariants({ variant }), className), ...props })));
119
+ const AlertDialogDescription = React.forwardRef(({ className, ...props }, ref) => (jsx(AlertDialogPrimitive.Description, { ref: ref, className: cn('text-sm text-muted-foreground', className), ...props })));
120
+ AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
121
+ const AlertDialogAction = React.forwardRef(({ className, variant = 'default', ...props }, ref) => (jsx(AlertDialogPrimitive.Action, { ref: ref, className: cn(buttonVariants({ variant }), className), ...props })));
123
122
  AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
124
- const AlertDialogCancel = React.forwardRef(({ className, variant = "outline", ...props }, ref) => (jsx(AlertDialogPrimitive.Cancel, { ref: ref, className: cn(buttonVariants({ variant }), // Usa a variante passada como prop
125
- "mt-2 sm:mt-0", className), ...props })));
123
+ const AlertDialogCancel = React.forwardRef(({ className, variant = 'outline', ...props }, ref) => (jsx(AlertDialogPrimitive.Cancel, { ref: ref, className: cn(buttonVariants({ variant }), // Usa a variante passada como prop
124
+ 'mt-2 sm:mt-0', className), ...props })));
126
125
  AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
127
126
 
128
- const Avatar = React.forwardRef(({ className, ...props }, ref) => (jsx(AvatarPrimitive.Root, { ref: ref, className: cn("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full", className), ...props })));
127
+ const Avatar = React.forwardRef(({ className, ...props }, ref) => (jsx(AvatarPrimitive.Root, { ref: ref, className: cn('relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full', className), ...props })));
129
128
  Avatar.displayName = AvatarPrimitive.Root.displayName;
130
- const AvatarImage = React.forwardRef(({ className, ...props }, ref) => (jsx(AvatarPrimitive.Image, { ref: ref, className: cn("aspect-square h-full w-full", className), ...props })));
129
+ const AvatarImage = React.forwardRef(({ className, ...props }, ref) => jsx(AvatarPrimitive.Image, { ref: ref, className: cn('aspect-square h-full w-full', className), ...props }));
131
130
  AvatarImage.displayName = AvatarPrimitive.Image.displayName;
132
- const AvatarFallback = React.forwardRef(({ className, ...props }, ref) => (jsx(AvatarPrimitive.Fallback, { ref: ref, className: cn("flex h-full w-full items-center justify-center rounded-full bg-muted", className), ...props })));
131
+ const AvatarFallback = React.forwardRef(({ className, ...props }, ref) => (jsx(AvatarPrimitive.Fallback, { ref: ref, className: cn('flex h-full w-full items-center justify-center rounded-full bg-muted', className), ...props })));
133
132
  AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
134
133
 
135
134
  const badgeVariants = cva('inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2', {
@@ -155,23 +154,23 @@ function Badge({ className, variant, ...props }) {
155
154
  return jsx("div", { className: cn(badgeVariants({ variant }), className), ...props });
156
155
  }
157
156
 
158
- const Breadcrumb = React.forwardRef(({ ...props }, ref) => jsx("nav", { ref: ref, "aria-label": "breadcrumb", ...props }));
159
- Breadcrumb.displayName = "Breadcrumb";
160
- const BreadcrumbList = React.forwardRef(({ className, ...props }, ref) => (jsx("ol", { ref: ref, className: cn("flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5", className), ...props })));
161
- BreadcrumbList.displayName = "BreadcrumbList";
162
- const BreadcrumbItem = React.forwardRef(({ className, ...props }, ref) => (jsx("li", { ref: ref, className: cn("inline-flex items-center gap-1.5", className), ...props })));
163
- BreadcrumbItem.displayName = "BreadcrumbItem";
157
+ const Breadcrumb = React.forwardRef(({ ...props }, ref) => jsx("nav", { ref: ref, "aria-label": 'breadcrumb', ...props }));
158
+ Breadcrumb.displayName = 'Breadcrumb';
159
+ const BreadcrumbList = React.forwardRef(({ className, ...props }, ref) => (jsx("ol", { ref: ref, className: cn('flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5', className), ...props })));
160
+ BreadcrumbList.displayName = 'BreadcrumbList';
161
+ const BreadcrumbItem = React.forwardRef(({ className, ...props }, ref) => (jsx("li", { ref: ref, className: cn('inline-flex items-center gap-1.5', className), ...props })));
162
+ BreadcrumbItem.displayName = 'BreadcrumbItem';
164
163
  const BreadcrumbLink = React.forwardRef(({ asChild, className, ...props }, ref) => {
165
- const Comp = asChild ? Slot : "a";
166
- return (jsx(Comp, { ref: ref, className: cn("transition-colors hover:text-foreground", className), ...props }));
164
+ const Comp = asChild ? Slot : 'a';
165
+ return jsx(Comp, { ref: ref, className: cn('transition-colors hover:text-foreground', className), ...props });
167
166
  });
168
- BreadcrumbLink.displayName = "BreadcrumbLink";
169
- const BreadcrumbPage = React.forwardRef(({ className, ...props }, ref) => (jsx("span", { ref: ref, role: "link", "aria-disabled": "true", "aria-current": "page", className: cn("font-normal text-foreground", className), ...props })));
170
- BreadcrumbPage.displayName = "BreadcrumbPage";
171
- const BreadcrumbSeparator = ({ children, className, ...props }) => (jsx("li", { role: "presentation", "aria-hidden": "true", className: cn("[&>svg]:w-3.5 [&>svg]:h-3.5", className), ...props, children: children ?? jsx(ChevronRight, {}) }));
172
- BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
173
- const BreadcrumbEllipsis = ({ className, ...props }) => (jsxs("span", { role: "presentation", "aria-hidden": "true", className: cn("flex h-9 w-9 items-center justify-center", className), ...props, children: [jsx(MoreHorizontal, { className: "h-4 w-4" }), jsx("span", { className: "sr-only", children: "More" })] }));
174
- BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
167
+ BreadcrumbLink.displayName = 'BreadcrumbLink';
168
+ const BreadcrumbPage = React.forwardRef(({ className, ...props }, ref) => (jsx("span", { ref: ref, "aria-disabled": 'true', "aria-current": 'page', className: cn('font-normal text-foreground', className), ...props })));
169
+ BreadcrumbPage.displayName = 'BreadcrumbPage';
170
+ const BreadcrumbSeparator = ({ children, className, ...props }) => (jsx("li", { role: 'presentation', "aria-hidden": 'true', className: cn('[&>svg]:w-3.5 [&>svg]:h-3.5', className), ...props, children: children ?? jsx(ChevronRight, {}) }));
171
+ BreadcrumbSeparator.displayName = 'BreadcrumbSeparator';
172
+ const BreadcrumbEllipsis = ({ className, ...props }) => (jsxs("span", { role: 'presentation', "aria-hidden": 'true', className: cn('flex h-9 w-9 items-center justify-center', className), ...props, children: [jsx(MoreHorizontal, { className: 'h-4 w-4' }), jsx("span", { className: 'sr-only', children: "More" })] }));
173
+ BreadcrumbEllipsis.displayName = 'BreadcrumbElipssis';
175
174
 
176
175
  function Calendar({ className, classNames, showOutsideDays = true, captionLayout = 'label', buttonVariant = 'ghost', formatters, components, ...props }) {
177
176
  const defaultClassNames = getDefaultClassNames();
@@ -254,14 +253,14 @@ const CarouselContext = React.createContext(null);
254
253
  function useCarousel() {
255
254
  const context = React.useContext(CarouselContext);
256
255
  if (!context) {
257
- throw new Error("useCarousel must be used within a <Carousel />");
256
+ throw new Error('useCarousel must be used within a <Carousel />');
258
257
  }
259
258
  return context;
260
259
  }
261
- const Carousel = React.forwardRef(({ orientation = "horizontal", opts, setApi, plugins, className, children, ...props }, ref) => {
260
+ const Carousel = React.forwardRef(({ orientation = 'horizontal', opts, setApi, plugins, className, children, ...props }, ref) => {
262
261
  const [carouselRef, api] = useEmblaCarousel({
263
262
  ...opts,
264
- axis: orientation === "horizontal" ? "x" : "y",
263
+ axis: orientation === 'horizontal' ? 'x' : 'y',
265
264
  }, plugins);
266
265
  const [canScrollPrev, setCanScrollPrev] = React.useState(false);
267
266
  const [canScrollNext, setCanScrollNext] = React.useState(false);
@@ -279,11 +278,11 @@ const Carousel = React.forwardRef(({ orientation = "horizontal", opts, setApi, p
279
278
  api?.scrollNext();
280
279
  }, [api]);
281
280
  const handleKeyDown = React.useCallback((event) => {
282
- if (event.key === "ArrowLeft") {
281
+ if (event.key === 'ArrowLeft') {
283
282
  event.preventDefault();
284
283
  scrollPrev();
285
284
  }
286
- else if (event.key === "ArrowRight") {
285
+ else if (event.key === 'ArrowRight') {
287
286
  event.preventDefault();
288
287
  scrollNext();
289
288
  }
@@ -299,48 +298,44 @@ const Carousel = React.forwardRef(({ orientation = "horizontal", opts, setApi, p
299
298
  return;
300
299
  }
301
300
  onSelect(api);
302
- api.on("reInit", onSelect);
303
- api.on("select", onSelect);
301
+ api.on('reInit', onSelect);
302
+ api.on('select', onSelect);
304
303
  return () => {
305
- api?.off("select", onSelect);
304
+ api?.off('select', onSelect);
306
305
  };
307
306
  }, [api, onSelect]);
308
307
  return (jsx(CarouselContext.Provider, { value: {
309
308
  carouselRef,
310
309
  api: api,
311
310
  opts,
312
- orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"),
311
+ orientation: orientation || (opts?.axis === 'y' ? 'vertical' : 'horizontal'),
313
312
  scrollPrev,
314
313
  scrollNext,
315
314
  canScrollPrev,
316
315
  canScrollNext,
317
- }, children: jsx("div", { ref: ref, onKeyDownCapture: handleKeyDown, className: cn("relative", className), role: "region", "aria-roledescription": "carousel", ...props, children: children }) }));
316
+ }, children: jsx("div", { ref: ref, onKeyDownCapture: handleKeyDown, className: cn('relative', className), ...props, children: children }) }));
318
317
  });
319
- Carousel.displayName = "Carousel";
318
+ Carousel.displayName = 'Carousel';
320
319
  const CarouselContent = React.forwardRef(({ className, ...props }, ref) => {
321
320
  const { carouselRef, orientation } = useCarousel();
322
- return (jsx("div", { ref: carouselRef, className: "overflow-hidden", children: jsx("div", { ref: ref, className: cn("flex", orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col", className), ...props }) }));
321
+ return (jsx("div", { ref: carouselRef, className: 'overflow-hidden', children: jsx("div", { ref: ref, className: cn('flex', orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col', className), ...props }) }));
323
322
  });
324
- CarouselContent.displayName = "CarouselContent";
323
+ CarouselContent.displayName = 'CarouselContent';
325
324
  const CarouselItem = React.forwardRef(({ className, ...props }, ref) => {
326
325
  const { orientation } = useCarousel();
327
- return (jsx("div", { ref: ref, role: "group", "aria-roledescription": "slide", className: cn("min-w-0 shrink-0 grow-0 basis-full", orientation === "horizontal" ? "pl-4" : "pt-4", className), ...props }));
326
+ return (jsx("div", { ref: ref, className: cn('min-w-0 shrink-0 grow-0 basis-full', orientation === 'horizontal' ? 'pl-4' : 'pt-4', className), ...props }));
328
327
  });
329
- CarouselItem.displayName = "CarouselItem";
330
- const CarouselPrevious = React.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
328
+ CarouselItem.displayName = 'CarouselItem';
329
+ const CarouselPrevious = React.forwardRef(({ className, variant = 'outline', size = 'icon', ...props }, ref) => {
331
330
  const { orientation, scrollPrev, canScrollPrev } = useCarousel();
332
- return (jsxs(Button, { ref: ref, variant: variant, size: size, className: cn("absolute h-8 w-8 rounded-full", orientation === "horizontal"
333
- ? "-left-12 top-1/2 -translate-y-1/2"
334
- : "-top-12 left-1/2 -translate-x-1/2 rotate-90", className), disabled: !canScrollPrev, onClick: scrollPrev, ...props, children: [jsx(ArrowLeft, { className: "h-4 w-4" }), jsx("span", { className: "sr-only", children: "Previous slide" })] }));
331
+ return (jsxs(Button, { ref: ref, variant: variant, size: size, className: cn('absolute h-8 w-8 rounded-full', orientation === 'horizontal' ? '-left-12 top-1/2 -translate-y-1/2' : '-top-12 left-1/2 -translate-x-1/2 rotate-90', className), disabled: !canScrollPrev, onClick: scrollPrev, ...props, children: [jsx(ArrowLeft, { className: 'h-4 w-4' }), jsx("span", { className: 'sr-only', children: "Previous slide" })] }));
335
332
  });
336
- CarouselPrevious.displayName = "CarouselPrevious";
337
- const CarouselNext = React.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
333
+ CarouselPrevious.displayName = 'CarouselPrevious';
334
+ const CarouselNext = React.forwardRef(({ className, variant = 'outline', size = 'icon', ...props }, ref) => {
338
335
  const { orientation, scrollNext, canScrollNext } = useCarousel();
339
- return (jsxs(Button, { ref: ref, variant: variant, size: size, className: cn("absolute h-8 w-8 rounded-full", orientation === "horizontal"
340
- ? "-right-12 top-1/2 -translate-y-1/2"
341
- : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90", className), disabled: !canScrollNext, onClick: scrollNext, ...props, children: [jsx(ArrowRight, { className: "h-4 w-4" }), jsx("span", { className: "sr-only", children: "Next slide" })] }));
336
+ return (jsxs(Button, { ref: ref, variant: variant, size: size, className: cn('absolute h-8 w-8 rounded-full', orientation === 'horizontal' ? '-right-12 top-1/2 -translate-y-1/2' : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90', className), disabled: !canScrollNext, onClick: scrollNext, ...props, children: [jsx(ArrowRight, { className: 'h-4 w-4' }), jsx("span", { className: 'sr-only', children: "Next slide" })] }));
342
337
  });
343
- CarouselNext.displayName = "CarouselNext";
338
+ CarouselNext.displayName = 'CarouselNext';
344
339
 
345
340
  const THEMES = { light: '', dark: '.dark' };
346
341
  const ChartContext = React.createContext(null);
@@ -473,27 +468,27 @@ DialogTitle.displayName = DialogPrimitive.Title.displayName;
473
468
  const DialogDescription = React.forwardRef(({ className, ...props }, ref) => jsx(DialogPrimitive.Description, { ref: ref, className: cn('text-sm text-muted-foreground', className), ...props }));
474
469
  DialogDescription.displayName = DialogPrimitive.Description.displayName;
475
470
 
476
- const Command = React.forwardRef(({ className, ...props }, ref) => (jsx(Command$1, { ref: ref, className: cn("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground", className), ...props })));
471
+ const Command = React.forwardRef(({ className, ...props }, ref) => (jsx(Command$1, { ref: ref, className: cn('flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground', className), ...props })));
477
472
  Command.displayName = Command$1.displayName;
478
473
  const CommandDialog = ({ children, ...props }) => {
479
- return (jsx(Dialog, { ...props, children: jsx(DialogContent, { className: "overflow-hidden p-0 shadow-lg", children: jsx(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children: children }) }) }));
474
+ return (jsx(Dialog, { ...props, children: jsx(DialogContent, { className: 'overflow-hidden p-0 shadow-lg', children: jsx(Command, { className: '[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5', children: children }) }) }));
480
475
  };
481
- const CommandInput = React.forwardRef(({ className, ...props }, ref) => (jsxs("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [jsx(Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }), jsx(Command$1.Input, { ref: ref, className: cn("flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50", className), ...props })] })));
476
+ const CommandInput = React.forwardRef(({ className, ...props }, ref) => (jsxs("div", { className: 'flex items-center border-b px-3', "cmdk-input-wrapper": '', children: [jsx(Search, { className: 'mr-2 h-4 w-4 shrink-0 opacity-50' }), jsx(Command$1.Input, { ref: ref, className: cn('flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50', className), ...props })] })));
482
477
  CommandInput.displayName = Command$1.Input.displayName;
483
- const CommandList = React.forwardRef(({ className, ...props }, ref) => (jsx(Command$1.List, { ref: ref, className: cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className), ...props })));
478
+ const CommandList = React.forwardRef(({ className, ...props }, ref) => (jsx(Command$1.List, { ref: ref, className: cn('max-h-[300px] overflow-y-auto overflow-x-hidden', className), ...props })));
484
479
  CommandList.displayName = Command$1.List.displayName;
485
- const CommandEmpty = React.forwardRef((props, ref) => (jsx(Command$1.Empty, { ref: ref, className: "py-6 text-center text-sm", ...props })));
480
+ const CommandEmpty = React.forwardRef((props, ref) => jsx(Command$1.Empty, { ref: ref, className: 'py-6 text-center text-sm', ...props }));
486
481
  CommandEmpty.displayName = Command$1.Empty.displayName;
487
- const CommandGroup = React.forwardRef(({ className, ...props }, ref) => (jsx(Command$1.Group, { ref: ref, 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), ...props })));
482
+ const CommandGroup = React.forwardRef(({ className, ...props }, ref) => (jsx(Command$1.Group, { ref: ref, 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), ...props })));
488
483
  CommandGroup.displayName = Command$1.Group.displayName;
489
- const CommandSeparator = React.forwardRef(({ className, ...props }, ref) => (jsx(Command$1.Separator, { ref: ref, className: cn("-mx-1 h-px bg-border", className), ...props })));
484
+ const CommandSeparator = React.forwardRef(({ className, ...props }, ref) => jsx(Command$1.Separator, { ref: ref, className: cn('-mx-1 h-px bg-border', className), ...props }));
490
485
  CommandSeparator.displayName = Command$1.Separator.displayName;
491
486
  const CommandItem = React.forwardRef(({ className, ...props }, ref) => (jsx(Command$1.Item, { ref: ref, className: cn("relative flex cursor-default gap-2 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 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", className), ...props })));
492
487
  CommandItem.displayName = Command$1.Item.displayName;
493
488
  const CommandShortcut = ({ className, ...props }) => {
494
- return (jsx("span", { className: cn("ml-auto text-xs tracking-widest text-muted-foreground", className), ...props }));
489
+ return jsx("span", { className: cn('ml-auto text-xs tracking-widest text-muted-foreground', className), ...props });
495
490
  };
496
- CommandShortcut.displayName = "CommandShortcut";
491
+ CommandShortcut.displayName = 'CommandShortcut';
497
492
 
498
493
  const ContextMenu = ContextMenuPrimitive.Root;
499
494
  const ContextMenuTrigger = ContextMenuPrimitive.Trigger;
@@ -501,27 +496,26 @@ const ContextMenuGroup = ContextMenuPrimitive.Group;
501
496
  const ContextMenuPortal = ContextMenuPrimitive.Portal;
502
497
  const ContextMenuSub = ContextMenuPrimitive.Sub;
503
498
  const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
504
- const ContextMenuSubTrigger = React.forwardRef(({ className, inset, children, ...props }, ref) => (jsxs(ContextMenuPrimitive.SubTrigger, { ref: ref, 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), ...props, children: [children, jsx(ChevronRight, { className: "ml-auto h-4 w-4" })] })));
499
+ const ContextMenuSubTrigger = React.forwardRef(({ className, inset, children, ...props }, ref) => (jsxs(ContextMenuPrimitive.SubTrigger, { ref: ref, 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), ...props, children: [children, jsx(ChevronRight, { className: 'ml-auto h-4 w-4' })] })));
505
500
  ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
506
- const ContextMenuSubContent = React.forwardRef(({ className, ...props }, ref) => (jsx(ContextMenuPrimitive.SubContent, { ref: ref, 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), ...props })));
501
+ const ContextMenuSubContent = React.forwardRef(({ className, ...props }, ref) => (jsx(ContextMenuPrimitive.SubContent, { ref: ref, 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), ...props })));
507
502
  ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
508
- const ContextMenuContent = React.forwardRef(({ className, ...props }, ref) => (jsx(ContextMenuPrimitive.Portal, { children: jsx(ContextMenuPrimitive.Content, { ref: ref, className: cn("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 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), ...props }) })));
503
+ const ContextMenuContent = React.forwardRef(({ className, ...props }, ref) => (jsx(ContextMenuPrimitive.Portal, { children: jsx(ContextMenuPrimitive.Content, { ref: ref, className: cn('z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 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), ...props }) })));
509
504
  ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
510
- const ContextMenuItem = React.forwardRef(({ className, inset, ...props }, ref) => (jsx(ContextMenuPrimitive.Item, { ref: ref, 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), ...props })));
505
+ const ContextMenuItem = React.forwardRef(({ className, inset, ...props }, ref) => (jsx(ContextMenuPrimitive.Item, { ref: ref, 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), ...props })));
511
506
  ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
512
- const ContextMenuCheckboxItem = React.forwardRef(({ className, children, checked, ...props }, ref) => (jsxs(ContextMenuPrimitive.CheckboxItem, { ref: ref, 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), checked: checked, ...props, children: [jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: jsx(ContextMenuPrimitive.ItemIndicator, { children: jsx(Check, { className: "h-4 w-4" }) }) }), children] })));
513
- ContextMenuCheckboxItem.displayName =
514
- ContextMenuPrimitive.CheckboxItem.displayName;
515
- const ContextMenuRadioItem = React.forwardRef(({ className, children, ...props }, ref) => (jsxs(ContextMenuPrimitive.RadioItem, { ref: ref, 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), ...props, children: [jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: jsx(ContextMenuPrimitive.ItemIndicator, { children: jsx(Circle, { className: "h-2 w-2 fill-current" }) }) }), children] })));
507
+ const ContextMenuCheckboxItem = React.forwardRef(({ className, children, checked, ...props }, ref) => (jsxs(ContextMenuPrimitive.CheckboxItem, { ref: ref, 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), checked: checked, ...props, children: [jsx("span", { className: 'absolute left-2 flex h-3.5 w-3.5 items-center justify-center', children: jsx(ContextMenuPrimitive.ItemIndicator, { children: jsx(Check, { className: 'h-4 w-4' }) }) }), children] })));
508
+ ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
509
+ const ContextMenuRadioItem = React.forwardRef(({ className, children, ...props }, ref) => (jsxs(ContextMenuPrimitive.RadioItem, { ref: ref, 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), ...props, children: [jsx("span", { className: 'absolute left-2 flex h-3.5 w-3.5 items-center justify-center', children: jsx(ContextMenuPrimitive.ItemIndicator, { children: jsx(Circle, { className: 'h-2 w-2 fill-current' }) }) }), children] })));
516
510
  ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
517
- const ContextMenuLabel = React.forwardRef(({ className, inset, ...props }, ref) => (jsx(ContextMenuPrimitive.Label, { ref: ref, className: cn("px-2 py-1.5 text-sm font-semibold text-foreground", inset && "pl-8", className), ...props })));
511
+ const ContextMenuLabel = React.forwardRef(({ className, inset, ...props }, ref) => (jsx(ContextMenuPrimitive.Label, { ref: ref, className: cn('px-2 py-1.5 text-sm font-semibold text-foreground', inset && 'pl-8', className), ...props })));
518
512
  ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
519
- const ContextMenuSeparator = React.forwardRef(({ className, ...props }, ref) => (jsx(ContextMenuPrimitive.Separator, { ref: ref, className: cn("-mx-1 my-1 h-px bg-border", className), ...props })));
513
+ const ContextMenuSeparator = React.forwardRef(({ className, ...props }, ref) => jsx(ContextMenuPrimitive.Separator, { ref: ref, className: cn('-mx-1 my-1 h-px bg-border', className), ...props }));
520
514
  ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
521
515
  const ContextMenuShortcut = ({ className, ...props }) => {
522
- return (jsx("span", { className: cn("ml-auto text-xs tracking-widest text-muted-foreground", className), ...props }));
516
+ return jsx("span", { className: cn('ml-auto text-xs tracking-widest text-muted-foreground', className), ...props });
523
517
  };
524
- ContextMenuShortcut.displayName = "ContextMenuShortcut";
518
+ ContextMenuShortcut.displayName = 'ContextMenuShortcut';
525
519
 
526
520
  const Popover = PopoverPrimitive.Root;
527
521
  const PopoverTrigger = PopoverPrimitive.Trigger;
@@ -530,30 +524,30 @@ const PopoverContent = React.forwardRef(({ className, align = 'center', sideOffs
530
524
  }, className: cn('z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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), ...props }) })));
531
525
  PopoverContent.displayName = PopoverPrimitive.Content.displayName;
532
526
 
533
- function DatePickerWithRange({ className, }) {
527
+ function DatePickerWithRange({ className }) {
534
528
  const [date, setDate] = React.useState({
535
529
  from: new Date(2022, 0, 20),
536
530
  to: addDays(new Date(2022, 0, 20), 20),
537
531
  });
538
- return (jsx("div", { className: cn("grid gap-2", className), children: jsxs(Popover, { children: [jsx(PopoverTrigger, { asChild: true, children: jsxs(Button, { id: "date", variant: "outline", className: cn("w-[300px] justify-start text-left font-normal", !date && "text-muted-foreground"), children: [jsx(CalendarIcon, {}), date?.from ? (date.to ? (jsxs(Fragment, { children: [format(date.from, "LLL dd, y"), " -", " ", format(date.to, "LLL dd, y")] })) : (format(date.from, "LLL dd, y"))) : (jsx("span", { children: "Pick a date" }))] }) }), jsx(PopoverContent, { className: "w-auto p-0", align: "start", children: jsx(Calendar, { initialFocus: true, mode: "range", defaultMonth: date?.from, selected: date, onSelect: setDate, numberOfMonths: 2 }) })] }) }));
532
+ return (jsx("div", { className: cn('grid gap-2', className), children: jsxs(Popover, { children: [jsx(PopoverTrigger, { asChild: true, children: jsxs(Button, { id: 'date', variant: 'outline', className: cn('w-[300px] justify-start text-left font-normal', !date && 'text-muted-foreground'), children: [jsx(CalendarIcon, {}), date?.from ? (date.to ? (jsxs(Fragment, { children: [format(date.from, 'LLL dd, y'), " - ", format(date.to, 'LLL dd, y')] })) : (format(date.from, 'LLL dd, y'))) : (jsx("span", { children: "Pick a date" }))] }) }), jsx(PopoverContent, { className: 'w-auto p-0', align: 'start', children: jsx(Calendar, { initialFocus: true, mode: 'range', defaultMonth: date?.from, selected: date, onSelect: setDate, numberOfMonths: 2 }) })] }) }));
539
533
  }
540
534
 
541
535
  const Drawer = ({ shouldScaleBackground = true, ...props }) => (jsx(Drawer$1.Root, { shouldScaleBackground: shouldScaleBackground, ...props }));
542
- Drawer.displayName = "Drawer";
536
+ Drawer.displayName = 'Drawer';
543
537
  const DrawerTrigger = Drawer$1.Trigger;
544
538
  const DrawerPortal = Drawer$1.Portal;
545
539
  const DrawerClose = Drawer$1.Close;
546
- const DrawerOverlay = React.forwardRef(({ className, ...props }, ref) => (jsx(Drawer$1.Overlay, { ref: ref, className: cn("fixed inset-0 z-50 bg-black/80", className), ...props })));
540
+ const DrawerOverlay = React.forwardRef(({ className, ...props }, ref) => jsx(Drawer$1.Overlay, { ref: ref, className: cn('fixed inset-0 z-50 bg-black/80', className), ...props }));
547
541
  DrawerOverlay.displayName = Drawer$1.Overlay.displayName;
548
- const DrawerContent = React.forwardRef(({ className, children, ...props }, ref) => (jsxs(DrawerPortal, { children: [jsx(DrawerOverlay, {}), jsxs(Drawer$1.Content, { ref: ref, className: cn("fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background", className), ...props, children: [jsx("div", { className: "mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted" }), children] })] })));
549
- DrawerContent.displayName = "DrawerContent";
550
- const DrawerHeader = ({ className, ...props }) => (jsx("div", { className: cn("grid gap-1.5 p-4 text-center sm:text-left", className), ...props }));
551
- DrawerHeader.displayName = "DrawerHeader";
552
- const DrawerFooter = ({ className, ...props }) => (jsx("div", { className: cn("mt-auto flex flex-col gap-2 p-4", className), ...props }));
553
- DrawerFooter.displayName = "DrawerFooter";
554
- const DrawerTitle = React.forwardRef(({ className, ...props }, ref) => (jsx(Drawer$1.Title, { ref: ref, className: cn("text-lg font-semibold leading-none tracking-tight", className), ...props })));
542
+ const DrawerContent = React.forwardRef(({ className, children, ...props }, ref) => (jsxs(DrawerPortal, { children: [jsx(DrawerOverlay, {}), jsxs(Drawer$1.Content, { ref: ref, className: cn('fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background', className), ...props, children: [jsx("div", { className: 'mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted' }), children] })] })));
543
+ DrawerContent.displayName = 'DrawerContent';
544
+ const DrawerHeader = ({ className, ...props }) => (jsx("div", { className: cn('grid gap-1.5 p-4 text-center sm:text-left', className), ...props }));
545
+ DrawerHeader.displayName = 'DrawerHeader';
546
+ const DrawerFooter = ({ className, ...props }) => (jsx("div", { className: cn('mt-auto flex flex-col gap-2 p-4', className), ...props }));
547
+ DrawerFooter.displayName = 'DrawerFooter';
548
+ const DrawerTitle = React.forwardRef(({ className, ...props }, ref) => (jsx(Drawer$1.Title, { ref: ref, className: cn('text-lg font-semibold leading-none tracking-tight', className), ...props })));
555
549
  DrawerTitle.displayName = Drawer$1.Title.displayName;
556
- const DrawerDescription = React.forwardRef(({ className, ...props }, ref) => (jsx(Drawer$1.Description, { ref: ref, className: cn("text-sm text-muted-foreground", className), ...props })));
550
+ const DrawerDescription = React.forwardRef(({ className, ...props }, ref) => jsx(Drawer$1.Description, { ref: ref, className: cn('text-sm text-muted-foreground', className), ...props }));
557
551
  DrawerDescription.displayName = Drawer$1.Description.displayName;
558
552
 
559
553
  const DropdownMenu = DropdownMenuPrimitive.Root;
@@ -819,7 +813,7 @@ function getYear(date) {
819
813
  * formatDate(new Date()) // '13/10/2025'
820
814
  * ```
821
815
  */
822
- const formatDate = (date, separator = '/') => {
816
+ const formatDate = (date, _separator = '/') => {
823
817
  if (!date)
824
818
  return '';
825
819
  const d = new Date(date);
@@ -1760,7 +1754,7 @@ const MaskInputDecimal = React.forwardRef(({ className, value, onChange, disable
1760
1754
  return (jsx(InputMask, { ref: ref, mask: '', value: value || '', onChange: handleChange, disabled: disabled, placeholder: symbol ? `${symbol} 0,00` : '0,00', className: cn('flex h-10 w-full rounded-md border bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:border-disabled disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', classBorderColor$1(className, props['aria-invalid'] === true), className), ...props }));
1761
1755
  });
1762
1756
 
1763
- const Pagination = ({ className, ...props }) => (jsx("nav", { role: 'navigation', "aria-label": 'pagination', className: cn('mx-auto flex w-full justify-center', className), ...props }));
1757
+ const Pagination = ({ className, ...props }) => (jsx("nav", { "aria-label": 'pagination', className: cn('mx-auto flex w-full justify-center', className), ...props }));
1764
1758
  Pagination.displayName = 'Pagination';
1765
1759
  const PaginationContent = React.forwardRef(({ className, ...props }, ref) => (jsx("ul", { ref: ref, className: cn('flex flex-row items-center gap-1', className), ...props })));
1766
1760
  PaginationContent.displayName = 'PaginationContent';
@@ -1790,14 +1784,12 @@ const RadioGroupItem = React.forwardRef(({ className, ...props }, ref) => {
1790
1784
  });
1791
1785
  RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
1792
1786
 
1793
- const ScrollArea = React.forwardRef(({ className, children, ...props }, ref) => (jsxs(ScrollAreaPrimitive.Root, { ref: ref, className: cn("relative overflow-hidden", className), ...props, children: [jsx(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children: children }), jsx(ScrollBar, {}), jsx(ScrollAreaPrimitive.Corner, {})] })));
1787
+ const ScrollArea = React.forwardRef(({ className, children, ...props }, ref) => (jsxs(ScrollAreaPrimitive.Root, { ref: ref, className: cn('relative overflow-hidden', className), ...props, children: [jsx(ScrollAreaPrimitive.Viewport, { className: 'h-full w-full rounded-[inherit]', children: children }), jsx(ScrollBar, {}), jsx(ScrollAreaPrimitive.Corner, {})] })));
1794
1788
  ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
1795
- const ScrollBar = React.forwardRef(({ className, orientation = "vertical", ...props }, ref) => (jsx(ScrollAreaPrimitive.ScrollAreaScrollbar, { ref: ref, orientation: orientation, className: cn("flex touch-none select-none transition-colors", orientation === "vertical" &&
1796
- "h-full w-2.5 border-l border-l-transparent p-[1px]", orientation === "horizontal" &&
1797
- "h-2.5 flex-col border-t border-t-transparent p-[1px]", className), ...props, children: jsx(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" }) })));
1789
+ const ScrollBar = React.forwardRef(({ className, orientation = 'vertical', ...props }, ref) => (jsx(ScrollAreaPrimitive.ScrollAreaScrollbar, { ref: ref, orientation: orientation, className: cn('flex touch-none select-none transition-colors', orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent p-[1px]', orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent p-[1px]', className), ...props, children: jsx(ScrollAreaPrimitive.ScrollAreaThumb, { className: 'relative flex-1 rounded-full bg-border' }) })));
1798
1790
  ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
1799
1791
 
1800
- const Separator = React.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => (jsx(SeparatorPrimitive.Root, { ref: ref, decorative: decorative, orientation: orientation, className: cn("shrink-0 bg-border", orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]", className), ...props })));
1792
+ const Separator = React.forwardRef(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (jsx(SeparatorPrimitive.Root, { ref: ref, decorative: decorative, orientation: orientation, className: cn('shrink-0 bg-border', orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]', className), ...props })));
1801
1793
  Separator.displayName = SeparatorPrimitive.Root.displayName;
1802
1794
 
1803
1795
  const Sheet = DialogPrimitive.Root;
@@ -1831,7 +1823,7 @@ const SheetDescription = React.forwardRef(({ className, ...props }, ref) => jsx(
1831
1823
  SheetDescription.displayName = DialogPrimitive.Description.displayName;
1832
1824
 
1833
1825
  function Skeleton({ className, ...props }) {
1834
- return (jsx("div", { className: cn("animate-pulse rounded-md bg-muted", className), ...props }));
1826
+ return jsx("div", { className: cn('animate-pulse rounded-md bg-muted', className), ...props });
1835
1827
  }
1836
1828
 
1837
1829
  const TooltipProvider = TooltipPrimitive.Provider;
@@ -2133,7 +2125,6 @@ ToastTitle.displayName = ToastPrimitives.Title.displayName;
2133
2125
  const ToastDescription = React.forwardRef(({ className, ...props }, ref) => jsx(ToastPrimitives.Description, { ref: ref, className: cn('text-sm opacity-90', className), ...props }));
2134
2126
  ToastDescription.displayName = ToastPrimitives.Description.displayName;
2135
2127
 
2136
- // Inspired by react-hot-toast library
2137
2128
  const TOAST_LIMIT = 1;
2138
2129
  const TOAST_REMOVE_DELAY = 1000000;
2139
2130
  let count = 0;
@@ -2284,424 +2275,6 @@ function UseCalendar({ className, getDataFilter }) {
2284
2275
  return (jsx("div", { className: cn('grid gap-2', className), children: jsxs(Popover$1, { children: [jsx(PopoverTrigger$1, { asChild: true, children: jsxs(Button, { id: 'date', variant: 'outline', className: 'flex justify-center items-center px-4 py-2 cursor-pointer bg-primaryBack text-textFilter rounded-md', children: [jsx(CalendarDays, { color: '#0F172A', size: 16, className: 'mr-4' }), date?.to ? (jsxs(Fragment, { children: [format(date.from, 'dd/MM', { locale: ptBR }), " - ", format(date.to, 'dd/MM', { locale: ptBR })] })) : (jsx("span", { children: "Filtrar por Per\u00EDodo" }))] }) }), jsxs(PopoverContent$1, { className: 'w-auto p-0 testeCalendar flex flex-col justify-center bg-white z-10 shadow-md text-black ', align: 'start', children: [jsx(Calendar, { mode: 'range', locale: ptBR, selected: date, onSelect: setDate, className: ' ' }), jsx(PopoverClose, { className: 'flex justify-center items-center p-4', children: jsx(Button, { className: 'w-[150px] bg-background-primary mt-8 px-4 py-2 text-white', onClick: submitDate, children: "Aplicar Filtro" }) })] })] }) }));
2285
2276
  }
2286
2277
 
2287
- // Retorna todas as cores do Tailwind CSS das variações 50 a 950
2288
- function getTailwindColorShades() {
2289
- // Paleta padrão do Tailwind v3.3.0
2290
- // Fonte: https://github.com/tailwindlabs/tailwindcss/blob/master/src/public/colors.js
2291
- return {
2292
- slate: {
2293
- 50: '#f8fafc',
2294
- 100: '#f1f5f9',
2295
- 200: '#e2e8f0',
2296
- 300: '#cbd5e1',
2297
- 400: '#94a3b8',
2298
- 500: '#64748b',
2299
- 600: '#475569',
2300
- 700: '#334155',
2301
- 800: '#1e293b',
2302
- 900: '#0f172a',
2303
- 950: '#020617',
2304
- },
2305
- gray: {
2306
- 50: '#f9fafb',
2307
- 100: '#f3f4f6',
2308
- 200: '#e5e7eb',
2309
- 300: '#d1d5db',
2310
- 400: '#9ca3af',
2311
- 500: '#6b7280',
2312
- 600: '#4b5563',
2313
- 700: '#374151',
2314
- 800: '#1f2937',
2315
- 900: '#111827',
2316
- 950: '#030712',
2317
- },
2318
- zinc: {
2319
- 50: '#fafafa',
2320
- 100: '#f4f4f5',
2321
- 200: '#e4e4e7',
2322
- 300: '#d4d4d8',
2323
- 400: '#a1a1aa',
2324
- 500: '#71717a',
2325
- 600: '#52525b',
2326
- 700: '#3f3f46',
2327
- 800: '#27272a',
2328
- 900: '#18181b',
2329
- 950: '#09090b',
2330
- },
2331
- neutral: {
2332
- 50: '#fafafa',
2333
- 100: '#f5f5f5',
2334
- 200: '#e5e5e5',
2335
- 300: '#d4d4d4',
2336
- 400: '#a3a3a3',
2337
- 500: '#737373',
2338
- 600: '#525252',
2339
- 700: '#404040',
2340
- 800: '#262626',
2341
- 900: '#171717',
2342
- 950: '#0a0a0a',
2343
- },
2344
- stone: {
2345
- 50: '#fafaf9',
2346
- 100: '#f5f5f4',
2347
- 200: '#e7e5e4',
2348
- 300: '#d6d3d1',
2349
- 400: '#a8a29e',
2350
- 500: '#78716c',
2351
- 600: '#57534e',
2352
- 700: '#44403c',
2353
- 800: '#292524',
2354
- 900: '#1c1917',
2355
- 950: '#0c0a09',
2356
- },
2357
- red: {
2358
- 50: '#fef2f2',
2359
- 100: '#fee2e2',
2360
- 200: '#fecaca',
2361
- 300: '#fca5a5',
2362
- 400: '#f87171',
2363
- 500: '#ef4444',
2364
- 600: '#dc2626',
2365
- 700: '#b91c1c',
2366
- 800: '#991b1b',
2367
- 900: '#7f1d1d',
2368
- 950: '#450a0a',
2369
- },
2370
- orange: {
2371
- 50: '#fff7ed',
2372
- 100: '#ffedd5',
2373
- 200: '#fed7aa',
2374
- 300: '#fdba74',
2375
- 400: '#fb923c',
2376
- 500: '#f97316',
2377
- 600: '#ea580c',
2378
- 700: '#c2410c',
2379
- 800: '#9a3412',
2380
- 900: '#7c2d12',
2381
- 950: '#431407',
2382
- },
2383
- amber: {
2384
- 50: '#fffbeb',
2385
- 100: '#fef3c7',
2386
- 200: '#fde68a',
2387
- 300: '#fcd34d',
2388
- 400: '#fbbf24',
2389
- 500: '#f59e42',
2390
- 600: '#d97706',
2391
- 700: '#b45309',
2392
- 800: '#92400e',
2393
- 900: '#78350f',
2394
- 950: '#451a03',
2395
- },
2396
- yellow: {
2397
- 50: '#fefce8',
2398
- 100: '#fef9c3',
2399
- 200: '#fef08a',
2400
- 300: '#fde047',
2401
- 400: '#facc15',
2402
- 500: '#eab308',
2403
- 600: '#ca8a04',
2404
- 700: '#a16207',
2405
- 800: '#854d0e',
2406
- 900: '#713f12',
2407
- 950: '#422006',
2408
- },
2409
- lime: {
2410
- 50: '#f7fee7',
2411
- 100: '#ecfccb',
2412
- 200: '#d9f99d',
2413
- 300: '#bef264',
2414
- 400: '#a3e635',
2415
- 500: '#84cc16',
2416
- 600: '#65a30d',
2417
- 700: '#4d7c0f',
2418
- 800: '#3f6212',
2419
- 900: '#365314',
2420
- 950: '#1a2e05',
2421
- },
2422
- green: {
2423
- 50: '#f0fdf4',
2424
- 100: '#dcfce7',
2425
- 200: '#bbf7d0',
2426
- 300: '#86efac',
2427
- 400: '#4ade80',
2428
- 500: '#22c55e',
2429
- 600: '#16a34a',
2430
- 700: '#15803d',
2431
- 800: '#166534',
2432
- 900: '#14532d',
2433
- 950: '#052e16',
2434
- },
2435
- emerald: {
2436
- 50: '#ecfdf5',
2437
- 100: '#d1fae5',
2438
- 200: '#a7f3d0',
2439
- 300: '#6ee7b7',
2440
- 400: '#34d399',
2441
- 500: '#10b981',
2442
- 600: '#059669',
2443
- 700: '#047857',
2444
- 800: '#065f46',
2445
- 900: '#064e3b',
2446
- 950: '#022c22',
2447
- },
2448
- teal: {
2449
- 50: '#f0fdfa',
2450
- 100: '#ccfbf1',
2451
- 200: '#99f6e4',
2452
- 300: '#5eead4',
2453
- 400: '#2dd4bf',
2454
- 500: '#14b8a6',
2455
- 600: '#0d9488',
2456
- 700: '#0f766e',
2457
- 800: '#115e59',
2458
- 900: '#134e4a',
2459
- 950: '#042f2e',
2460
- },
2461
- cyan: {
2462
- 50: '#ecfeff',
2463
- 100: '#cffafe',
2464
- 200: '#a5f3fc',
2465
- 300: '#67e8f9',
2466
- 400: '#22d3ee',
2467
- 500: '#06b6d4',
2468
- 600: '#0891b2',
2469
- 700: '#0e7490',
2470
- 800: '#155e75',
2471
- 900: '#164e63',
2472
- 950: '#083344',
2473
- },
2474
- sky: {
2475
- 50: '#f0f9ff',
2476
- 100: '#e0f2fe',
2477
- 200: '#bae6fd',
2478
- 300: '#7dd3fc',
2479
- 400: '#38bdf8',
2480
- 500: '#0ea5e9',
2481
- 600: '#0284c7',
2482
- 700: '#0369a1',
2483
- 800: '#075985',
2484
- 900: '#0e3a5e',
2485
- 950: '#082f49',
2486
- },
2487
- blue: {
2488
- 50: '#eff6ff',
2489
- 100: '#dbeafe',
2490
- 200: '#bfdbfe',
2491
- 300: '#93c5fd',
2492
- 400: '#60a5fa',
2493
- 500: '#3b82f6',
2494
- 600: '#2563eb',
2495
- 700: '#1d4ed8',
2496
- 800: '#1e40af',
2497
- 900: '#1e3a8a',
2498
- 950: '#172554',
2499
- },
2500
- indigo: {
2501
- 50: '#eef2ff',
2502
- 100: '#e0e7ff',
2503
- 200: '#c7d2fe',
2504
- 300: '#a5b4fc',
2505
- 400: '#818cf8',
2506
- 500: '#6366f1',
2507
- 600: '#4f46e5',
2508
- 700: '#4338ca',
2509
- 800: '#3730a3',
2510
- 900: '#312e81',
2511
- 950: '#1e1b4b',
2512
- },
2513
- violet: {
2514
- 50: '#f5f3ff',
2515
- 100: '#ede9fe',
2516
- 200: '#ddd6fe',
2517
- 300: '#c4b5fd',
2518
- 400: '#a78bfa',
2519
- 500: '#8b5cf6',
2520
- 600: '#7c3aed',
2521
- 700: '#6d28d9',
2522
- 800: '#5b21b6',
2523
- 900: '#4c1d95',
2524
- 950: '#2e1065',
2525
- },
2526
- purple: {
2527
- 50: '#faf5ff',
2528
- 100: '#f3e8ff',
2529
- 200: '#e9d5ff',
2530
- 300: '#d8b4fe',
2531
- 400: '#c084fc',
2532
- 500: '#a855f7',
2533
- 600: '#9333ea',
2534
- 700: '#7e22ce',
2535
- 800: '#6d19a8',
2536
- 900: '#581c87',
2537
- 950: '#3b0764',
2538
- },
2539
- fuchsia: {
2540
- 50: '#fdf4ff',
2541
- 100: '#fae8ff',
2542
- 200: '#f5d0fe',
2543
- 300: '#f0abfc',
2544
- 400: '#e879f9',
2545
- 500: '#d946ef',
2546
- 600: '#c026d3',
2547
- 700: '#a21caf',
2548
- 800: '#86198f',
2549
- 900: '#701a75',
2550
- 950: '#4a044e',
2551
- },
2552
- pink: {
2553
- 50: '#fdf2f8',
2554
- 100: '#fce7f3',
2555
- 200: '#fbcfe8',
2556
- 300: '#f9a8d4',
2557
- 400: '#f472b6',
2558
- 500: '#ec4899',
2559
- 600: '#db2777',
2560
- 700: '#be185d',
2561
- 800: '#9d174d',
2562
- 900: '#831843',
2563
- 950: '#500724',
2564
- },
2565
- rose: {
2566
- 50: '#fff1f2',
2567
- 100: '#ffe4e6',
2568
- 200: '#fecdd3',
2569
- 300: '#fda4af',
2570
- 400: '#fb7185',
2571
- 500: '#f43f5e',
2572
- 600: '#e11d48',
2573
- 700: '#be123c',
2574
- 800: '#9f1239',
2575
- 900: '#881337',
2576
- 950: '#4c0519',
2577
- },
2578
- };
2579
- }
2580
- const replaceThemeTailwindColors = (theme, tailwindColor) => {
2581
- const colorShades = getTailwindColorShades();
2582
- const isValidColor = (color) => color in colorShades;
2583
- const colorPallete = isValidColor(tailwindColor) ? colorShades[tailwindColor] : colorShades.violet;
2584
- const el = document.createElement('style');
2585
- el.id = 'theme-variables';
2586
- el.setAttribute('type', 'text/css');
2587
- el.textContent = ':root {';
2588
- if (theme === 'light') {
2589
- el.textContent += `--sidebar-background: ${colorPallete[50]};\n`;
2590
- el.textContent += `--sidebar-accent: ${colorPallete[200]};\n`;
2591
- el.textContent += `--sidebar-ring: ${colorPallete[300]};\n`;
2592
- el.textContent += `--sidebar-border: ${colorPallete[100]};\n`;
2593
- el.textContent += `--sidebar-scrollbar-thumb: ${colorPallete[200]};\n`;
2594
- }
2595
- if (theme === 'light' || theme === 'dark-side') {
2596
- el.textContent += `--background-elevated: ${colorPallete[200]};\n`;
2597
- el.textContent += `--background-primary-hover: ${colorPallete[100]};\n`;
2598
- el.textContent += `--background-subtle: ${colorPallete[50]};\n`;
2599
- el.textContent += `--accent: ${colorPallete[200]};\n`;
2600
- el.textContent += `--datatable-background: ${colorPallete[50]};\n`;
2601
- el.textContent += `--datatable-accent: ${colorPallete[50]};\n`;
2602
- el.textContent += `--scrollbar-thumb: ${colorPallete[200]};\n`;
2603
- }
2604
- if (theme === 'dark-side' || theme === 'dark') {
2605
- // Verificar essa propriedade
2606
- el.textContent += `--sidebar-accent: ${colorPallete[950]};\n`;
2607
- }
2608
- el.textContent += `--background-primary: ${colorPallete[900]};\n`;
2609
- el.textContent += `--background-primary-hover: ${colorPallete[950]};\n`;
2610
- el.textContent += `--primary: ${colorPallete[900]};\n`;
2611
- el.textContent += `--primary-950: ${colorPallete[950]};\n`;
2612
- el.textContent += `--primary-900: ${colorPallete[900]};\n`;
2613
- el.textContent += `--primary-800: ${colorPallete[800]};\n`;
2614
- el.textContent += `--primary-700: ${colorPallete[700]};\n`;
2615
- el.textContent += `--primary-600: ${colorPallete[600]};\n`;
2616
- el.textContent += `--primary-500: ${colorPallete[500]};\n`;
2617
- el.textContent += `--primary-400: ${colorPallete[400]};\n`;
2618
- el.textContent += `--primary-300: ${colorPallete[300]};\n`;
2619
- el.textContent += `--primary-200: ${colorPallete[200]};\n`;
2620
- el.textContent += `--primary-100: ${colorPallete[100]};\n`;
2621
- el.textContent += `--primary-50: ${colorPallete[50]};\n`;
2622
- el.textContent += `--chart-primary: ${colorPallete[800]};\n`;
2623
- el.textContent += `--chart-secondary: ${colorPallete[200]};\n`;
2624
- el.textContent += '}';
2625
- return el;
2626
- };
2627
-
2628
- const DEFAULT_THEME_DATA = {
2629
- faviconPath: '',
2630
- fullLogoPath: '',
2631
- bannerDesktopPath: '/imgs/background-auth.png',
2632
- mvnoPrimaryColor: 'green',
2633
- mvnoMainTheme: 'light',
2634
- title: '-',
2635
- hideModuleSwitcher: false,
2636
- };
2637
- const initialState = {
2638
- portalDefinitions: DEFAULT_THEME_DATA,
2639
- setPortalDefinitions: () => null,
2640
- };
2641
- const ThemeProviderContext = createContext(initialState);
2642
- function ThemeProvider({ children, defaultTheme = DEFAULT_THEME_DATA, storageKey = 'vite-ui-theme', ...props }) {
2643
- const [portalDefinitions, setPortalDefinitionsState] = useState({
2644
- faviconPath: localStorage.getItem(`${storageKey}-faviconPath`) || defaultTheme.faviconPath,
2645
- fullLogoPath: localStorage.getItem(`${storageKey}-fullLogoPath`) || defaultTheme.fullLogoPath,
2646
- bannerDesktopPath: localStorage.getItem(`${storageKey}-bannerDesktopPath`) || defaultTheme.bannerDesktopPath,
2647
- mvnoPrimaryColor: localStorage.getItem(`${storageKey}-mvnoPrimaryColor`) || defaultTheme.mvnoPrimaryColor,
2648
- mvnoMainTheme: localStorage.getItem(storageKey) || defaultTheme.mvnoMainTheme,
2649
- title: localStorage.getItem(`${storageKey}-title`) || defaultTheme.title,
2650
- hideModuleSwitcher: localStorage.getItem(`${storageKey}-hideModuleSwitcher`) === 'true',
2651
- });
2652
- useEffect(() => {
2653
- const theme = portalDefinitions?.mvnoMainTheme;
2654
- const root = window.document.documentElement;
2655
- root.classList.remove('light', 'dark', 'dark-side');
2656
- root.classList.add(theme);
2657
- document.title = portalDefinitions?.title;
2658
- const meta = document.querySelector('meta[name="description"]');
2659
- if (meta) {
2660
- meta.setAttribute('content', portalDefinitions?.title);
2661
- }
2662
- let link = document.querySelector("link[rel~='icon']");
2663
- if (!link) {
2664
- link = document.createElement('link');
2665
- link.rel = 'icon';
2666
- document.getElementsByTagName('head')[0].appendChild(link);
2667
- }
2668
- link.href = portalDefinitions?.faviconPath;
2669
- const el = replaceThemeTailwindColors(theme, portalDefinitions?.mvnoPrimaryColor);
2670
- document.getElementById('theme-variables') &&
2671
- document.getElementsByTagName('head')[0].removeChild(document.getElementById('theme-variables'));
2672
- document.getElementsByTagName('head')[0].appendChild(el);
2673
- }, [portalDefinitions]);
2674
- const setPortalDefinitions = (portalDefinitions) => {
2675
- localStorage.setItem(`${storageKey}-faviconPath`, portalDefinitions.faviconPath);
2676
- localStorage.setItem(`${storageKey}-fullLogoPath`, portalDefinitions.fullLogoPath);
2677
- localStorage.setItem(`${storageKey}-bannerDesktopPath`, portalDefinitions.bannerDesktopPath);
2678
- localStorage.setItem(`${storageKey}-mvnoPrimaryColor`, portalDefinitions.mvnoPrimaryColor);
2679
- localStorage.setItem(`${storageKey}-mvnoMainTheme`, portalDefinitions.mvnoMainTheme);
2680
- localStorage.setItem(`${storageKey}-title`, portalDefinitions.title);
2681
- localStorage.setItem(`${storageKey}-hideModuleSwitcher`, String(portalDefinitions.hideModuleSwitcher));
2682
- setPortalDefinitionsState({
2683
- faviconPath: portalDefinitions.faviconPath || DEFAULT_THEME_DATA.faviconPath,
2684
- fullLogoPath: portalDefinitions.fullLogoPath || DEFAULT_THEME_DATA.fullLogoPath,
2685
- bannerDesktopPath: portalDefinitions.bannerDesktopPath || DEFAULT_THEME_DATA.bannerDesktopPath,
2686
- mvnoPrimaryColor: portalDefinitions.mvnoPrimaryColor || DEFAULT_THEME_DATA.mvnoPrimaryColor,
2687
- mvnoMainTheme: portalDefinitions.mvnoMainTheme ? portalDefinitions.mvnoMainTheme : DEFAULT_THEME_DATA.mvnoMainTheme,
2688
- title: portalDefinitions.title || DEFAULT_THEME_DATA.title,
2689
- hideModuleSwitcher: portalDefinitions.hideModuleSwitcher || DEFAULT_THEME_DATA.hideModuleSwitcher,
2690
- });
2691
- };
2692
- const value = {
2693
- portalDefinitions,
2694
- setPortalDefinitions: setPortalDefinitions,
2695
- };
2696
- return (jsx(ThemeProviderContext.Provider, { ...props, value: value, children: children }));
2697
- }
2698
- const useTheme = () => {
2699
- const context = useContext(ThemeProviderContext);
2700
- if (context === undefined)
2701
- throw new Error('useTheme must be used within a ThemeProvider');
2702
- return context;
2703
- };
2704
-
2705
2278
  const formHelpText = (helpText) => {
2706
2279
  return (jsx(TooltipProvider, { children: jsxs(Tooltip, { children: [jsx(TooltipTrigger, { className: 'pb-2', children: jsx(CircleHelp, { size: 16, className: 'text-muted' }) }), jsx(TooltipContent, { className: 'text-white bg-background-primary', align: 'start', children: helpText })] }) }));
2707
2280
  };
@@ -2760,7 +2333,7 @@ const FormInputColor = ({ control, name, label, subLabel, helpText, placeholder,
2760
2333
  }
2761
2334
  };
2762
2335
  const handleRgbChange = (key, value, onChange) => {
2763
- const numValue = Number.parseInt(value);
2336
+ const numValue = Number.parseInt(value, 10);
2764
2337
  if (!Number.isNaN(numValue) && numValue >= 0 && numValue <= 255) {
2765
2338
  const newRgb = { ...rgb, [key]: numValue };
2766
2339
  handleColorChange(rgbToHex(newRgb), onChange);
@@ -3072,18 +2645,13 @@ const FormInputPercent = ({ control, name, label, subLabel, helpText, className,
3072
2645
  const masks = ['(99) 9999-99999', '(99) 9 9999-9999'];
3073
2646
  const FormInputPhone = ({ control, name, label, subLabel, helpText, placeholder, className, disabled, required, onChange, onKeyUp, }) => {
3074
2647
  const { FormField, FormItem, FormLabel, FormControl, FormMessage } = FormComponents;
3075
- const [mask, setMask] = useState(masks[0]);
2648
+ // const [_mask, setMask] = useState(masks[0]);
3076
2649
  const getMask = (val) => (val.replace(/\D/g, '').length > 10 ? masks[1] : masks[0]);
3077
- return (jsx(FormField, { control: control, name: name, render: ({ field, formState }) => {
3078
- useEffect(() => {
3079
- setMask(getMask(field.value || ''));
3080
- }, [field.value]);
3081
- return (jsxs(FormItem, { className: className, children: [jsxs("div", { className: 'flex items-center space-x-1.5', children: [label && formLabelAndSubLabel(FormLabel, label, subLabel, required), helpText && formHelpText(helpText)] }), jsx(FormControl, { children: jsx(MaskInputFone, { ...field, className: className, placeholder: placeholder ?? '(00) 0 0000-0000', disabled: disabled || formState.isSubmitting, mask: mask, onChange: (e) => {
3082
- onChange?.(e);
3083
- field.onChange(e);
3084
- setMask(getMask(e.target.value));
3085
- }, onKeyUp: (e) => onKeyUp?.(e) }) }), formMessage(FormMessage)] }));
3086
- } }));
2650
+ return (jsx(FormField, { control: control, name: name, render: ({ field, formState }) => (jsxs(FormItem, { className: className, children: [jsxs("div", { className: 'flex items-center space-x-1.5', children: [label && formLabelAndSubLabel(FormLabel, label, subLabel, required), helpText && formHelpText(helpText)] }), jsx(FormControl, { children: jsx(MaskInputFone, { ...field, className: className, placeholder: placeholder ?? '(00) 0 0000-0000', disabled: disabled || formState.isSubmitting, mask: getMask(field.value || ''), onChange: (e) => {
2651
+ onChange?.(e);
2652
+ field.onChange(e);
2653
+ // setMask(getMask(e.target.value));
2654
+ }, onKeyUp: (e) => onKeyUp?.(e) }) }), formMessage(FormMessage)] })) }));
3087
2655
  };
3088
2656
 
3089
2657
  const FormRadioGroup = ({ control, name, value, label, subLabel, helpText, className, classNameOptions, disabled, required, options, onChange, }) => {
@@ -3142,210 +2710,508 @@ const FormTextarea = ({ control, name, label, subLabel, helpText, placeholder, c
3142
2710
  } }) }), formMessage(FormMessage)] })) }));
3143
2711
  };
3144
2712
 
3145
- function DataTableExport({ exportData, totalRows }) {
3146
- const exportXlSX = () => {
3147
- if (!exportData)
3148
- return;
3149
- if (totalRows === 0) {
3150
- toast({
3151
- title: 'Não há dados para exportar.',
3152
- variant: 'destructive',
3153
- });
3154
- return {};
3155
- }
3156
- const params = new URLSearchParams(exportData.params).toString();
3157
- window.open(`${exportData.url}?${params}`, '_blank');
3158
- };
3159
- const renderExport = () => {
3160
- if (!exportData)
3161
- return null;
3162
- if (exportData.type === 'xlsx') {
3163
- return (jsx(Button, { variant: 'secondary', onClick: exportXlSX, children: "Exportar" }));
3164
- }
3165
- if (exportData.type === 'dialog') {
3166
- const ExportDataSchema = z.object({
3167
- model: z.string(),
3168
- format: z.string(),
3169
- });
3170
- const form = useForm({
3171
- mode: 'onTouched',
3172
- resolver: zodResolver(ExportDataSchema),
3173
- });
3174
- const { control, trigger, handleSubmit } = form;
3175
- const onSubmit = async (values) => {
3176
- await trigger();
3177
- toast({
3178
- title: 'Em desenvolvimento.',
3179
- variant: 'destructive',
3180
- });
3181
- };
3182
- const onError = async (errors) => {
3183
- toast({
3184
- title: 'Erro ao salvar',
3185
- description: 'Verifique os campos obrigatórios',
3186
- variant: 'destructive',
3187
- });
3188
- };
3189
- return (jsx(Form, { ...form, onSubmit: handleSubmit(onSubmit, onError), children: jsxs(Dialog, { children: [jsx(DialogTrigger, { asChild: true, children: jsx(Button, { variant: 'secondary', children: "Exportar" }) }), jsxs(DialogContent, { hideClose: true, className: 'fixed p-6 rounded-lg w-[451px]', children: [jsxs(DialogHeader, { children: [jsx(DialogTitle, { children: "Exportar" }), jsx(DialogDescription, {})] }), jsxs("div", { className: 'flex flex-col gap-6', children: [jsx(FormRadioGroup, { control: control, name: 'model', label: 'Selecione o modelo de visualiza\u00E7\u00E3o', options: [
3190
- { value: '0', label: 'Resumido' },
3191
- { value: '1', label: 'Detalhado' },
3192
- ], className: 'text-sm font-normal', classNameOptions: 'flex flex-col gap-4 mt-4 text-sm font-normal' }), jsx(FormRadioGroup, { control: control, name: 'format', label: 'Selecione o formato desejado para exporta\u00E7\u00E3o', options: [
3193
- { value: '0', label: 'PDF' },
3194
- { value: '1', label: 'XLSX' },
3195
- ], className: 'text-sm font-normal', classNameOptions: 'flex flex-col gap-4 mt-4 text-sm font-normal' })] }), jsxs(DialogFooter, { className: 'sm:justify-end gap-2', children: [jsx(Button, { type: 'button', variant: 'secondary', children: "Fechar" }), jsx(Button, { type: 'button', variant: 'default', onClick: () => exportXlSX(), children: "Exportar" })] })] })] }) }));
3196
- }
3197
- return null;
3198
- };
3199
- return exportData && renderExport();
3200
- }
3201
-
3202
- function DataTableFooter({ isLoading, totalRows, totalPages, currentPage, hidePagination, disablePagination, pagination, handlePageSize, handlePage, previousPage, nextPage, exportData, }) {
3203
- const renderPaginationPages = () => {
3204
- const paginationItems = [];
3205
- const createPaginationItem = (pageIndex) => (jsx(PaginationItem, { children: jsx(PaginationLink, { onClick: () => handlePage(pageIndex), isActive: currentPage === pageIndex, children: pageIndex + 1 }) }, pageIndex));
3206
- // Add first page
3207
- paginationItems.push(createPaginationItem(0));
3208
- // Add ellipsis if needed
3209
- if (currentPage > 2) {
3210
- paginationItems.push(jsx(PaginationEllipsis, {}, 'start-ellipsis'));
3211
- }
3212
- // Add pages before current page
3213
- for (let i = Math.max(1, currentPage - 1); i < currentPage; i++) {
3214
- paginationItems.push(createPaginationItem(i));
3215
- }
3216
- // Add current page
3217
- if (currentPage !== 0 && currentPage !== totalPages - 1) {
3218
- paginationItems.push(createPaginationItem(currentPage));
3219
- }
3220
- // Add pages after current page
3221
- for (let i = currentPage + 1; i <= Math.min(totalPages - 2, currentPage + 1); i++) {
3222
- paginationItems.push(createPaginationItem(i));
3223
- }
3224
- // Add ellipsis if needed
3225
- if (currentPage < totalPages - 3) {
3226
- paginationItems.push(jsx(PaginationEllipsis, {}, 'end-ellipsis'));
3227
- }
3228
- // Add last page
3229
- if (totalPages > 1) {
3230
- paginationItems.push(createPaginationItem(totalPages - 1));
3231
- }
3232
- return paginationItems;
3233
- };
3234
- return (!hidePagination && (jsxs("footer", { className: 'flex items-center justify-between h-[64px]', children: [jsxs("div", { className: 'flex flex-row items-center gap-6', children: [jsxs("div", { className: 'flex flex-row items-center gap-2', children: ["Linhas por p\u00E1gina", jsxs(Select, { value: pagination.pageSize.toString(), onValueChange: (value) => handlePageSize(Number(value)), disabled: isLoading || disablePagination, children: [jsx(SelectTrigger, { className: 'w-20', children: jsx(SelectValue, { placeholder: '', className: 'text-slate-800 font-medium' }) }), jsx(SelectContent, { children: jsxs(SelectGroup, { children: [jsx(SelectItem, { value: '25', children: "25" }), jsx(SelectItem, { value: '50', children: "50" }), jsx(SelectItem, { value: '100', children: "100" })] }) })] })] }), jsx(DataTableExport, { exportData: exportData, totalRows: totalPages })] }), jsxs("div", { className: 'flex items-center gap-4', children: [jsx("div", { children: !isLoading && (jsx(Badge, { variant: 'secondary', children: totalRows === 0 ? 'Nenhum item' : totalRows === 1 ? '1 item' : `${totalRows} itens` })) }), jsx("div", { children: jsx(Pagination, { children: jsxs(PaginationContent, { children: [jsx(PaginationItem, { children: jsx(PaginationPrevious, { onClick: () => previousPage.action(), disabled: previousPage.disabled || disablePagination }) }), renderPaginationPages(), jsx(PaginationItem, { children: jsx(PaginationNext, { onClick: () => nextPage.action(), disabled: nextPage.disabled || disablePagination }) })] }) }) })] })] })));
3235
- }
3236
-
3237
- function DataTableHeader({ table, canActionsRow, enableMultiRowSelection }) {
3238
- const headerGroups = table.getHeaderGroups();
3239
- return (jsx(TableHeader, { children: headerGroups.map((headerGroup) => (jsxs(TableRow, { className: 'bg-background dark:bg-datatable-accent rounded-t-md sticky top-0 z-10', children: [enableMultiRowSelection && (jsx(TableHead, { className: 'h-[65px] w-6', children: jsx(Checkbox, { checked: table.getIsAllPageRowsSelected() || (table.getIsSomePageRowsSelected() && 'indeterminate'), onCheckedChange: (value) => table.toggleAllPageRowsSelected(!!value) }) })), headerGroup.headers.map((header) => (jsx(TableHead, { className: cn('h-[65px] whitespace-nowrap', header.column.id === 'id' ? 'sticky left-0 z-20' : '', header.column.columnDef.enableSorting ? 'pl-2' : ''), children: header.column.columnDef.enableSorting ? (jsxs(Button, { variant: 'ghost', onClick: () => header.column.toggleSorting(header.column.getIsSorted() === 'asc'), children: [flexRender(header.column.columnDef.header, header.getContext()), header.column.getIsSorted() === 'asc' ? (jsx(MoveUp, { className: 'ml-2 h-4 w-4' })) : header.column.getIsSorted() === 'desc' ? (jsx(MoveDown, { className: 'ml-2 h-4 w-4' })) : (jsx(ArrowUpDown, { className: 'ml-2 h-4 w-4' }))] })) : (flexRender(header.column.columnDef.header, header.getContext())) }, header.id))), canActionsRow && jsx(TableHead, {})] }, headerGroup.id))) }));
3240
- }
2713
+ // Retorna todas as cores do Tailwind CSS das variações 50 a 950
2714
+ function getTailwindColorShades() {
2715
+ // Paleta padrão do Tailwind v3.3.0
2716
+ // Fonte: https://github.com/tailwindlabs/tailwindcss/blob/master/src/public/colors.js
2717
+ return {
2718
+ slate: {
2719
+ 50: '#f8fafc',
2720
+ 100: '#f1f5f9',
2721
+ 200: '#e2e8f0',
2722
+ 300: '#cbd5e1',
2723
+ 400: '#94a3b8',
2724
+ 500: '#64748b',
2725
+ 600: '#475569',
2726
+ 700: '#334155',
2727
+ 800: '#1e293b',
2728
+ 900: '#0f172a',
2729
+ 950: '#020617',
2730
+ },
2731
+ gray: {
2732
+ 50: '#f9fafb',
2733
+ 100: '#f3f4f6',
2734
+ 200: '#e5e7eb',
2735
+ 300: '#d1d5db',
2736
+ 400: '#9ca3af',
2737
+ 500: '#6b7280',
2738
+ 600: '#4b5563',
2739
+ 700: '#374151',
2740
+ 800: '#1f2937',
2741
+ 900: '#111827',
2742
+ 950: '#030712',
2743
+ },
2744
+ zinc: {
2745
+ 50: '#fafafa',
2746
+ 100: '#f4f4f5',
2747
+ 200: '#e4e4e7',
2748
+ 300: '#d4d4d8',
2749
+ 400: '#a1a1aa',
2750
+ 500: '#71717a',
2751
+ 600: '#52525b',
2752
+ 700: '#3f3f46',
2753
+ 800: '#27272a',
2754
+ 900: '#18181b',
2755
+ 950: '#09090b',
2756
+ },
2757
+ neutral: {
2758
+ 50: '#fafafa',
2759
+ 100: '#f5f5f5',
2760
+ 200: '#e5e5e5',
2761
+ 300: '#d4d4d4',
2762
+ 400: '#a3a3a3',
2763
+ 500: '#737373',
2764
+ 600: '#525252',
2765
+ 700: '#404040',
2766
+ 800: '#262626',
2767
+ 900: '#171717',
2768
+ 950: '#0a0a0a',
2769
+ },
2770
+ stone: {
2771
+ 50: '#fafaf9',
2772
+ 100: '#f5f5f4',
2773
+ 200: '#e7e5e4',
2774
+ 300: '#d6d3d1',
2775
+ 400: '#a8a29e',
2776
+ 500: '#78716c',
2777
+ 600: '#57534e',
2778
+ 700: '#44403c',
2779
+ 800: '#292524',
2780
+ 900: '#1c1917',
2781
+ 950: '#0c0a09',
2782
+ },
2783
+ red: {
2784
+ 50: '#fef2f2',
2785
+ 100: '#fee2e2',
2786
+ 200: '#fecaca',
2787
+ 300: '#fca5a5',
2788
+ 400: '#f87171',
2789
+ 500: '#ef4444',
2790
+ 600: '#dc2626',
2791
+ 700: '#b91c1c',
2792
+ 800: '#991b1b',
2793
+ 900: '#7f1d1d',
2794
+ 950: '#450a0a',
2795
+ },
2796
+ orange: {
2797
+ 50: '#fff7ed',
2798
+ 100: '#ffedd5',
2799
+ 200: '#fed7aa',
2800
+ 300: '#fdba74',
2801
+ 400: '#fb923c',
2802
+ 500: '#f97316',
2803
+ 600: '#ea580c',
2804
+ 700: '#c2410c',
2805
+ 800: '#9a3412',
2806
+ 900: '#7c2d12',
2807
+ 950: '#431407',
2808
+ },
2809
+ amber: {
2810
+ 50: '#fffbeb',
2811
+ 100: '#fef3c7',
2812
+ 200: '#fde68a',
2813
+ 300: '#fcd34d',
2814
+ 400: '#fbbf24',
2815
+ 500: '#f59e42',
2816
+ 600: '#d97706',
2817
+ 700: '#b45309',
2818
+ 800: '#92400e',
2819
+ 900: '#78350f',
2820
+ 950: '#451a03',
2821
+ },
2822
+ yellow: {
2823
+ 50: '#fefce8',
2824
+ 100: '#fef9c3',
2825
+ 200: '#fef08a',
2826
+ 300: '#fde047',
2827
+ 400: '#facc15',
2828
+ 500: '#eab308',
2829
+ 600: '#ca8a04',
2830
+ 700: '#a16207',
2831
+ 800: '#854d0e',
2832
+ 900: '#713f12',
2833
+ 950: '#422006',
2834
+ },
2835
+ lime: {
2836
+ 50: '#f7fee7',
2837
+ 100: '#ecfccb',
2838
+ 200: '#d9f99d',
2839
+ 300: '#bef264',
2840
+ 400: '#a3e635',
2841
+ 500: '#84cc16',
2842
+ 600: '#65a30d',
2843
+ 700: '#4d7c0f',
2844
+ 800: '#3f6212',
2845
+ 900: '#365314',
2846
+ 950: '#1a2e05',
2847
+ },
2848
+ green: {
2849
+ 50: '#f0fdf4',
2850
+ 100: '#dcfce7',
2851
+ 200: '#bbf7d0',
2852
+ 300: '#86efac',
2853
+ 400: '#4ade80',
2854
+ 500: '#22c55e',
2855
+ 600: '#16a34a',
2856
+ 700: '#15803d',
2857
+ 800: '#166534',
2858
+ 900: '#14532d',
2859
+ 950: '#052e16',
2860
+ },
2861
+ emerald: {
2862
+ 50: '#ecfdf5',
2863
+ 100: '#d1fae5',
2864
+ 200: '#a7f3d0',
2865
+ 300: '#6ee7b7',
2866
+ 400: '#34d399',
2867
+ 500: '#10b981',
2868
+ 600: '#059669',
2869
+ 700: '#047857',
2870
+ 800: '#065f46',
2871
+ 900: '#064e3b',
2872
+ 950: '#022c22',
2873
+ },
2874
+ teal: {
2875
+ 50: '#f0fdfa',
2876
+ 100: '#ccfbf1',
2877
+ 200: '#99f6e4',
2878
+ 300: '#5eead4',
2879
+ 400: '#2dd4bf',
2880
+ 500: '#14b8a6',
2881
+ 600: '#0d9488',
2882
+ 700: '#0f766e',
2883
+ 800: '#115e59',
2884
+ 900: '#134e4a',
2885
+ 950: '#042f2e',
2886
+ },
2887
+ cyan: {
2888
+ 50: '#ecfeff',
2889
+ 100: '#cffafe',
2890
+ 200: '#a5f3fc',
2891
+ 300: '#67e8f9',
2892
+ 400: '#22d3ee',
2893
+ 500: '#06b6d4',
2894
+ 600: '#0891b2',
2895
+ 700: '#0e7490',
2896
+ 800: '#155e75',
2897
+ 900: '#164e63',
2898
+ 950: '#083344',
2899
+ },
2900
+ sky: {
2901
+ 50: '#f0f9ff',
2902
+ 100: '#e0f2fe',
2903
+ 200: '#bae6fd',
2904
+ 300: '#7dd3fc',
2905
+ 400: '#38bdf8',
2906
+ 500: '#0ea5e9',
2907
+ 600: '#0284c7',
2908
+ 700: '#0369a1',
2909
+ 800: '#075985',
2910
+ 900: '#0e3a5e',
2911
+ 950: '#082f49',
2912
+ },
2913
+ blue: {
2914
+ 50: '#eff6ff',
2915
+ 100: '#dbeafe',
2916
+ 200: '#bfdbfe',
2917
+ 300: '#93c5fd',
2918
+ 400: '#60a5fa',
2919
+ 500: '#3b82f6',
2920
+ 600: '#2563eb',
2921
+ 700: '#1d4ed8',
2922
+ 800: '#1e40af',
2923
+ 900: '#1e3a8a',
2924
+ 950: '#172554',
2925
+ },
2926
+ indigo: {
2927
+ 50: '#eef2ff',
2928
+ 100: '#e0e7ff',
2929
+ 200: '#c7d2fe',
2930
+ 300: '#a5b4fc',
2931
+ 400: '#818cf8',
2932
+ 500: '#6366f1',
2933
+ 600: '#4f46e5',
2934
+ 700: '#4338ca',
2935
+ 800: '#3730a3',
2936
+ 900: '#312e81',
2937
+ 950: '#1e1b4b',
2938
+ },
2939
+ violet: {
2940
+ 50: '#f5f3ff',
2941
+ 100: '#ede9fe',
2942
+ 200: '#ddd6fe',
2943
+ 300: '#c4b5fd',
2944
+ 400: '#a78bfa',
2945
+ 500: '#8b5cf6',
2946
+ 600: '#7c3aed',
2947
+ 700: '#6d28d9',
2948
+ 800: '#5b21b6',
2949
+ 900: '#4c1d95',
2950
+ 950: '#2e1065',
2951
+ },
2952
+ purple: {
2953
+ 50: '#faf5ff',
2954
+ 100: '#f3e8ff',
2955
+ 200: '#e9d5ff',
2956
+ 300: '#d8b4fe',
2957
+ 400: '#c084fc',
2958
+ 500: '#a855f7',
2959
+ 600: '#9333ea',
2960
+ 700: '#7e22ce',
2961
+ 800: '#6d19a8',
2962
+ 900: '#581c87',
2963
+ 950: '#3b0764',
2964
+ },
2965
+ fuchsia: {
2966
+ 50: '#fdf4ff',
2967
+ 100: '#fae8ff',
2968
+ 200: '#f5d0fe',
2969
+ 300: '#f0abfc',
2970
+ 400: '#e879f9',
2971
+ 500: '#d946ef',
2972
+ 600: '#c026d3',
2973
+ 700: '#a21caf',
2974
+ 800: '#86198f',
2975
+ 900: '#701a75',
2976
+ 950: '#4a044e',
2977
+ },
2978
+ pink: {
2979
+ 50: '#fdf2f8',
2980
+ 100: '#fce7f3',
2981
+ 200: '#fbcfe8',
2982
+ 300: '#f9a8d4',
2983
+ 400: '#f472b6',
2984
+ 500: '#ec4899',
2985
+ 600: '#db2777',
2986
+ 700: '#be185d',
2987
+ 800: '#9d174d',
2988
+ 900: '#831843',
2989
+ 950: '#500724',
2990
+ },
2991
+ rose: {
2992
+ 50: '#fff1f2',
2993
+ 100: '#ffe4e6',
2994
+ 200: '#fecdd3',
2995
+ 300: '#fda4af',
2996
+ 400: '#fb7185',
2997
+ 500: '#f43f5e',
2998
+ 600: '#e11d48',
2999
+ 700: '#be123c',
3000
+ 800: '#9f1239',
3001
+ 900: '#881337',
3002
+ 950: '#4c0519',
3003
+ },
3004
+ };
3005
+ }
3006
+ const replaceThemeTailwindColors = (theme, tailwindColor) => {
3007
+ const colorShades = getTailwindColorShades();
3008
+ const isValidColor = (color) => color in colorShades;
3009
+ const colorPallete = isValidColor(tailwindColor) ? colorShades[tailwindColor] : colorShades.violet;
3010
+ const el = document.createElement('style');
3011
+ el.id = 'theme-variables';
3012
+ el.setAttribute('type', 'text/css');
3013
+ el.textContent = ':root {';
3014
+ if (theme === 'light') {
3015
+ el.textContent += `--sidebar-background: ${colorPallete[50]};\n`;
3016
+ el.textContent += `--sidebar-accent: ${colorPallete[200]};\n`;
3017
+ el.textContent += `--sidebar-ring: ${colorPallete[300]};\n`;
3018
+ el.textContent += `--sidebar-border: ${colorPallete[100]};\n`;
3019
+ el.textContent += `--sidebar-scrollbar-thumb: ${colorPallete[200]};\n`;
3020
+ }
3021
+ if (theme === 'light' || theme === 'dark-side') {
3022
+ el.textContent += `--background-elevated: ${colorPallete[200]};\n`;
3023
+ el.textContent += `--background-primary-hover: ${colorPallete[100]};\n`;
3024
+ el.textContent += `--background-subtle: ${colorPallete[50]};\n`;
3025
+ el.textContent += `--accent: ${colorPallete[200]};\n`;
3026
+ el.textContent += `--datatable-background: ${colorPallete[50]};\n`;
3027
+ el.textContent += `--datatable-accent: ${colorPallete[50]};\n`;
3028
+ el.textContent += `--scrollbar-thumb: ${colorPallete[200]};\n`;
3029
+ }
3030
+ if (theme === 'dark-side' || theme === 'dark') {
3031
+ // Verificar essa propriedade
3032
+ el.textContent += `--sidebar-accent: ${colorPallete[950]};\n`;
3033
+ }
3034
+ el.textContent += `--background-primary: ${colorPallete[900]};\n`;
3035
+ el.textContent += `--background-primary-hover: ${colorPallete[950]};\n`;
3036
+ el.textContent += `--primary: ${colorPallete[900]};\n`;
3037
+ el.textContent += `--primary-950: ${colorPallete[950]};\n`;
3038
+ el.textContent += `--primary-900: ${colorPallete[900]};\n`;
3039
+ el.textContent += `--primary-800: ${colorPallete[800]};\n`;
3040
+ el.textContent += `--primary-700: ${colorPallete[700]};\n`;
3041
+ el.textContent += `--primary-600: ${colorPallete[600]};\n`;
3042
+ el.textContent += `--primary-500: ${colorPallete[500]};\n`;
3043
+ el.textContent += `--primary-400: ${colorPallete[400]};\n`;
3044
+ el.textContent += `--primary-300: ${colorPallete[300]};\n`;
3045
+ el.textContent += `--primary-200: ${colorPallete[200]};\n`;
3046
+ el.textContent += `--primary-100: ${colorPallete[100]};\n`;
3047
+ el.textContent += `--primary-50: ${colorPallete[50]};\n`;
3048
+ el.textContent += `--chart-primary: ${colorPallete[800]};\n`;
3049
+ el.textContent += `--chart-secondary: ${colorPallete[200]};\n`;
3050
+ el.textContent += '}';
3051
+ return el;
3052
+ };
3241
3053
 
3242
- function DataTableRows({ table, isLoading, columns, actionsRow, textNoRecords, enableMultiRowSelection }) {
3243
- const rows = table.getRowModel().rows;
3244
- const renderLoadingRows = () => {
3245
- const rows = [];
3246
- for (let i = 0; i < 10; i++) {
3247
- rows.push(jsxs(TableRow, { children: [enableMultiRowSelection && (jsx(TableCell, { className: 'py-2', children: jsx(Skeleton, { className: 'h-10 w-full' }) })), columns.map((column) => (jsx(TableCell, { className: 'py-2', children: jsx(Skeleton, { className: 'h-10 w-full' }) }, column.id)))] }, `loading-row-${i}`));
3054
+ const DEFAULT_THEME_DATA = {
3055
+ faviconPath: '',
3056
+ fullLogoPath: '',
3057
+ bannerDesktopPath: '/imgs/background-auth.png',
3058
+ mvnoPrimaryColor: 'green',
3059
+ mvnoMainTheme: 'light',
3060
+ title: '-',
3061
+ hideModuleSwitcher: false,
3062
+ };
3063
+ const initialState = {
3064
+ portalDefinitions: DEFAULT_THEME_DATA,
3065
+ setPortalDefinitions: () => null,
3066
+ };
3067
+ const ThemeProviderContext = createContext(initialState);
3068
+ function ThemeProvider({ children, defaultTheme = DEFAULT_THEME_DATA, storageKey = 'vite-ui-theme', ...props }) {
3069
+ const [portalDefinitions, setPortalDefinitionsState] = useState({
3070
+ faviconPath: localStorage.getItem(`${storageKey}-faviconPath`) || defaultTheme.faviconPath,
3071
+ fullLogoPath: localStorage.getItem(`${storageKey}-fullLogoPath`) || defaultTheme.fullLogoPath,
3072
+ bannerDesktopPath: localStorage.getItem(`${storageKey}-bannerDesktopPath`) || defaultTheme.bannerDesktopPath,
3073
+ mvnoPrimaryColor: localStorage.getItem(`${storageKey}-mvnoPrimaryColor`) || defaultTheme.mvnoPrimaryColor,
3074
+ mvnoMainTheme: localStorage.getItem(storageKey) || defaultTheme.mvnoMainTheme,
3075
+ title: localStorage.getItem(`${storageKey}-title`) || defaultTheme.title,
3076
+ hideModuleSwitcher: localStorage.getItem(`${storageKey}-hideModuleSwitcher`) === 'true',
3077
+ });
3078
+ useEffect(() => {
3079
+ const theme = portalDefinitions?.mvnoMainTheme;
3080
+ const root = window.document.documentElement;
3081
+ root.classList.remove('light', 'dark', 'dark-side');
3082
+ root.classList.add(theme);
3083
+ document.title = portalDefinitions?.title;
3084
+ const meta = document.querySelector('meta[name="description"]');
3085
+ if (meta) {
3086
+ meta.setAttribute('content', portalDefinitions?.title);
3248
3087
  }
3249
- return rows;
3250
- };
3251
- const renderRows = () => {
3252
- return rows.map((row) => (jsxs(TableRow, { "data-state": row.getIsSelected() && 'selected', className: 'group', children: [enableMultiRowSelection && (jsx(TableCell, { className: 'py-4', children: jsx(Checkbox, { checked: row.getIsSelected(), onCheckedChange: (value) => row.toggleSelected(!!value), "aria-label": 'Select row' }) })), row.getVisibleCells().map((cell) => (jsx(TableCell, { className: 'py-4', children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id))), actionsRow && (jsx(TableCell, { className: 'opacity-0 group-hover:opacity-100 hover:opacity-100 relative overflow-visible w-[0px]', children: jsx("div", { className: 'absolute transition-colors group-hover:bg-datatable-accent overflow-visible right-5 -translate-y-1/2 flex space-x-4', children: actionsRow.map((action, index) => (jsxs(Button, { variant: action.variant || 'default', className: cn('bg-datatable-accent', action.className?.(row.original) || ''), onClick: () => action.onClick?.(row.original), disabled: action.disabled?.(row.original) || false, children: [action.icon, action.label] }, `action-row-${index}`))) }) }, `buttons-${row.id}`))] }, row.id)));
3088
+ let link = document.querySelector("link[rel~='icon']");
3089
+ if (!link) {
3090
+ link = document.createElement('link');
3091
+ link.rel = 'icon';
3092
+ document.getElementsByTagName('head')[0].appendChild(link);
3093
+ }
3094
+ link.href = portalDefinitions?.faviconPath;
3095
+ const el = replaceThemeTailwindColors(theme, portalDefinitions?.mvnoPrimaryColor);
3096
+ document.getElementById('theme-variables') &&
3097
+ document.getElementsByTagName('head')[0].removeChild(document.getElementById('theme-variables'));
3098
+ document.getElementsByTagName('head')[0].appendChild(el);
3099
+ }, [portalDefinitions]);
3100
+ const setPortalDefinitions = (portalDefinitions) => {
3101
+ localStorage.setItem(`${storageKey}-faviconPath`, portalDefinitions.faviconPath);
3102
+ localStorage.setItem(`${storageKey}-fullLogoPath`, portalDefinitions.fullLogoPath);
3103
+ localStorage.setItem(`${storageKey}-bannerDesktopPath`, portalDefinitions.bannerDesktopPath);
3104
+ localStorage.setItem(`${storageKey}-mvnoPrimaryColor`, portalDefinitions.mvnoPrimaryColor);
3105
+ localStorage.setItem(`${storageKey}-mvnoMainTheme`, portalDefinitions.mvnoMainTheme);
3106
+ localStorage.setItem(`${storageKey}-title`, portalDefinitions.title);
3107
+ localStorage.setItem(`${storageKey}-hideModuleSwitcher`, String(portalDefinitions.hideModuleSwitcher));
3108
+ setPortalDefinitionsState({
3109
+ faviconPath: portalDefinitions.faviconPath || DEFAULT_THEME_DATA.faviconPath,
3110
+ fullLogoPath: portalDefinitions.fullLogoPath || DEFAULT_THEME_DATA.fullLogoPath,
3111
+ bannerDesktopPath: portalDefinitions.bannerDesktopPath || DEFAULT_THEME_DATA.bannerDesktopPath,
3112
+ mvnoPrimaryColor: portalDefinitions.mvnoPrimaryColor || DEFAULT_THEME_DATA.mvnoPrimaryColor,
3113
+ mvnoMainTheme: portalDefinitions.mvnoMainTheme ? portalDefinitions.mvnoMainTheme : DEFAULT_THEME_DATA.mvnoMainTheme,
3114
+ title: portalDefinitions.title || DEFAULT_THEME_DATA.title,
3115
+ hideModuleSwitcher: portalDefinitions.hideModuleSwitcher || DEFAULT_THEME_DATA.hideModuleSwitcher,
3116
+ });
3253
3117
  };
3254
- const renderEmptyRows = () => {
3255
- const colSpan = columns.length + (actionsRow ? 1 : 0);
3256
- return (jsx(TableRow, { children: jsx(TableCell, { colSpan: colSpan, className: 'text-center h-[53px]', children: textNoRecords ? textNoRecords : 'Sem resultados.' }) }));
3118
+ const value = {
3119
+ portalDefinitions,
3120
+ setPortalDefinitions: setPortalDefinitions,
3257
3121
  };
3258
- return isLoading ? renderLoadingRows() : rows.length ? renderRows() : renderEmptyRows();
3122
+ return (jsx(ThemeProviderContext.Provider, { ...props, value: value, children: children }));
3259
3123
  }
3124
+ const useTheme = () => {
3125
+ const context = useContext(ThemeProviderContext);
3126
+ if (context === undefined)
3127
+ throw new Error('useTheme must be used within a ThemeProvider');
3128
+ return context;
3129
+ };
3260
3130
 
3261
- function DataTable({ columns, data, className, title, rowsPage, actions, actionsRow, customFilters, setSearch, pageChanged, pageSizeChanged, totalRows, filtersActions, exportData, textNoRecords, heightRemainingScroll, hideFilterField, multiRowSelection, hidePagination, disablePagination, isLoading, fixedHeight, }) {
3262
- const [sorting, setSorting] = useState([]);
3263
- const [pagination, setPagination] = useState({
3264
- pageIndex: 0,
3265
- pageSize: rowsPage ?? 25,
3266
- });
3267
- const enableMultiRowSelection = multiRowSelection !== undefined;
3268
- const [rowSelection, setRowSelection] = useState(enableMultiRowSelection
3269
- ? Object.fromEntries((Array.isArray(data) ? data : []).map((row, idx) => {
3270
- return [idx, row.checked];
3271
- }))
3272
- : {});
3273
- const debounceTimeout = useRef(null);
3274
- const tableContainerRef = useRef(null);
3275
- const [tableHeight, setTableHeight] = useState('auto');
3276
- totalRows = totalRows ?? data.length;
3277
- const table = useReactTable({
3278
- manualPagination: true,
3279
- data: data,
3280
- columns,
3281
- getPaginationRowModel: getPaginationRowModel(),
3282
- onPaginationChange: setPagination,
3283
- getCoreRowModel: getCoreRowModel(),
3284
- onSortingChange: setSorting,
3285
- getSortedRowModel: getSortedRowModel(),
3286
- getFilteredRowModel: getFilteredRowModel(),
3287
- onRowSelectionChange: (rowSelection) => {
3288
- setRowSelection(rowSelection);
3289
- },
3290
- enableMultiRowSelection: enableMultiRowSelection,
3291
- state: { pagination, rowSelection, sorting },
3292
- pageCount: Math.ceil(totalRows / pagination.pageSize),
3293
- });
3294
- const totalPages = table.getPageCount();
3295
- const currentPage = table.getState().pagination.pageIndex;
3296
- const selectedRows = table.getSelectedRowModel().rows;
3297
- const selectedIds = selectedRows.map((row) => row.original.id);
3298
- useEffect(() => {
3299
- if (data.length === 0 && pagination.pageIndex > 0) {
3300
- setPagination({ ...pagination, pageIndex: 0 });
3301
- }
3302
- }, [data]);
3303
- useEffect(() => {
3304
- handleResize();
3305
- window.addEventListener('resize', handleResize);
3306
- return () => {
3307
- window.removeEventListener('resize', handleResize);
3308
- };
3309
- }, []);
3310
- useEffect(() => {
3311
- if (pageChanged)
3312
- pageChanged(pagination.pageIndex + 1);
3313
- }, [pagination]);
3131
+ const Header = ({ splittedPath, modules, pages, isLoading, combobox, }) => {
3132
+ const { portalDefinitions } = useTheme();
3133
+ const navigate = useNavigate();
3134
+ const refProgressLoading = useRef(null);
3135
+ const lastPage = splittedPath[splittedPath.length - 1];
3314
3136
  useEffect(() => {
3315
- const selectedRowsChecked = selectedRows.map((row) => row.original);
3316
- if (multiRowSelection && selectedRowsChecked.length > 0) {
3317
- multiRowSelection.callback(selectedRowsChecked);
3137
+ isLoading ? refProgressLoading.current?.start() : refProgressLoading.current?.complete();
3138
+ }, [isLoading]);
3139
+ const setRouter = (path) => {
3140
+ navigate(path);
3141
+ };
3142
+ const getPath = (index) => {
3143
+ let path = '';
3144
+ for (let i = 0; i <= index; i++) {
3145
+ path += `/${splittedPath[i]}`;
3318
3146
  }
3319
- }, [rowSelection]);
3320
- const handleResize = () => {
3321
- if (tableContainerRef.current) {
3322
- const newHeight = window.innerHeight - tableContainerRef.current.getBoundingClientRect().top - (hidePagination ? 30 : 74);
3323
- setTableHeight(`${newHeight - (heightRemainingScroll ?? 0)}px`);
3147
+ return path;
3148
+ };
3149
+ const getLinkSidebar = (index) => {
3150
+ return pages.find((item) => item.path === getPath(index));
3151
+ };
3152
+ const getSubMenuItem = (index) => {
3153
+ return pages.flatMap((item) => item.subMenuItems || []).find((sub) => sub.path === getPath(index));
3154
+ };
3155
+ const getModule = (page) => {
3156
+ const module = modules.find((mod) => mod.value === page);
3157
+ if (!module) {
3158
+ return page;
3324
3159
  }
3160
+ return module?.title;
3325
3161
  };
3326
- const handleSearchChange = (event) => {
3327
- const value = event.currentTarget.value;
3328
- if (debounceTimeout.current) {
3329
- clearTimeout(debounceTimeout.current);
3162
+ const getTitle = (index) => {
3163
+ const linkSidebar = getLinkSidebar(index);
3164
+ const subMenuItem = getSubMenuItem(index);
3165
+ if (subMenuItem) {
3166
+ return subMenuItem.label;
3330
3167
  }
3331
- debounceTimeout.current = setTimeout(() => {
3332
- setSearch?.(value);
3333
- handlePage(0);
3334
- }, 300);
3168
+ return linkSidebar?.title;
3335
3169
  };
3336
- const handlePageSize = (value) => {
3337
- pageSizeChanged?.(value);
3338
- setPagination({ pageIndex: 0, pageSize: value });
3170
+ const renderBreadcrumbPage = (index) => {
3171
+ return jsx(BreadcrumbPage, { children: getTitle(index) });
3339
3172
  };
3340
- const handlePage = (index) => {
3341
- if (index !== currentPage) {
3342
- setPagination({ ...pagination, pageIndex: index });
3173
+ const renderBreadcrumbLink = (page, index) => {
3174
+ const linkSidebar = getLinkSidebar(index);
3175
+ return linkSidebar?.subMenuType ? (renderBreadcrumbPage(index)) : (jsx(BreadcrumbLink, { onClick: () => setRouter(getPath(index)), className: 'cursor-pointer', children: index === 0 ? getModule(page) : getTitle(index) }));
3176
+ };
3177
+ const renderBreadcrumbItens = () => {
3178
+ const breadcrumbItems = [];
3179
+ splittedPath.forEach((page, index) => {
3180
+ breadcrumbItems.push(jsx(BreadcrumbItem, { children: page === lastPage ? renderBreadcrumbPage(index) : renderBreadcrumbLink(page, index) }, `breadcrumb-item-${index}`));
3181
+ if (page !== lastPage) {
3182
+ breadcrumbItems.push(jsx(BreadcrumbSeparator, { className: 'mt-[1px]' }, `breadcrumb-separator-${index}`));
3183
+ }
3184
+ });
3185
+ return breadcrumbItems;
3186
+ };
3187
+ const getColorLoadingBar = () => {
3188
+ const colorShades = getTailwindColorShades();
3189
+ const tailwindColor = portalDefinitions?.mvnoPrimaryColor || DEFAULT_THEME_DATA.mvnoPrimaryColor;
3190
+ const isValidColor = (color) => color in colorShades;
3191
+ const colorPallete = isValidColor(tailwindColor) ? colorShades[tailwindColor] : colorShades.violet;
3192
+ return colorPallete[900];
3193
+ };
3194
+ return (jsxs("header", { className: 'flex flex-col justify-between items-center w-full', children: [jsxs("div", { className: 'flex justify-between items-center py-3 px-5 w-full', children: [jsxs("div", { className: 'flex items-center gap-x-2 h-[40px]', children: [jsx(SidebarTrigger, { className: 'p-5' }), jsx("div", { className: 'p-2', children: jsx(Breadcrumb, { children: jsx(BreadcrumbList, { children: renderBreadcrumbItens() }) }) })] }), jsx("div", { className: 'flex items-center', children: combobox })] }), jsx(LoadingBar, { ref: refProgressLoading, color: getColorLoadingBar(), height: 7 })] }));
3195
+ };
3196
+
3197
+ const LabelWithTitle = ({ title, value, value2, required, showCopyIcon = false, className, isLoading }) => {
3198
+ const handleCopy = () => {
3199
+ if (showCopyIcon && value) {
3200
+ navigator.clipboard.writeText(`${value}${value2 ?? ''}`);
3201
+ toast({
3202
+ title: `"${value}${value2 ?? ''}" foi copiado para a área de transferência.`,
3203
+ variant: 'success',
3204
+ });
3343
3205
  }
3344
3206
  };
3345
- return (jsxs("div", { className: 'flex flex-col flex-1', children: [(!hideFilterField || filtersActions || customFilters || actions) && (jsxs("div", { className: 'flex items-end justify-between mb-4 space-x-6', children: [jsxs("div", { className: 'flex items-center gap-x-4', children: [!hideFilterField && (jsxs("div", { className: 'flex bg-background items-center border border-slate-300 rounded-sm w-[350px] overflow-hidden focus-within:outline-none focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2 group', children: [jsx("div", { className: 'pl-3.5 transform transition-transform duration-300 group-hover:-translate-x-1', children: jsx(Search, { size: 18, className: 'w-5 h-5 stroke-zinc-500 dark:stroke-default' }) }), jsx("input", { placeholder: 'Buscar', onKeyUp: (event) => {
3346
- handleSearchChange(event);
3347
- }, className: 'w-full bg-background text-default border-none focus:ring-0 focus:outline-none px-3 py-2 transform transition-transform duration-300 group-hover:-translate-x-1 ' })] })), filtersActions && (jsxs(Sheet, { open: filtersActions.filterOpen, onOpenChange: filtersActions.setFilterOpen, children: [jsx(SheetTrigger, { asChild: true, children: jsxs(Button, { variant: 'secondary', type: 'button', children: [jsx(Filter, { size: 20, className: 'h-4 w-4' }), " Filtros", filtersActions.countFilters > 0 && (jsx("div", { className: 'bg-background-primary text-white rounded-full h-5 w-5 flex items-center justify-center text-sm placeholder:text-muted-foreground', children: filtersActions.countFilters }))] }) }), jsxs(SheetContent, { children: [jsxs(SheetHeader, { children: [jsx(SheetTitle, { children: "Filtros" }), jsx(SheetDescription, {})] }), jsx("div", { className: 'flex flex-col py-6', children: filtersActions.fields })] })] }))] }), customFilters, jsx("div", { className: 'flex space-x-4 content-end', children: actions?.map((action, index) => (jsx("div", { children: jsxs(Button, { onClick: () => action.onClick?.(selectedIds, selectedRows), className: cn(action.className, action.hideUnselectedRows && selectedRows.length === 0 ? 'hidden' : ''), variant: action.variant || 'default', disabled: action.disabled, children: [jsx("div", { className: '[&_svg]:size-5', children: action.icon }), action.label] }) }, `action-table-${index}`))) })] })), jsxs("div", { className: `flex-1 flex flex-col rounded-md border ${className}`, children: [jsx("div", { className: 'flex items-center justify-between', children: title && jsx("div", { className: 'text-h4 p-4', children: title }) }), jsx("div", { id: 'data-table', ref: tableContainerRef, style: fixedHeight ? { height: fixedHeight } : { height: tableHeight }, className: 'flex flex-col justify-between rounded-md overflow-x-auto overflow-y-auto', children: jsxs(Table, { children: [jsx(DataTableHeader, { table: table, canActionsRow: actionsRow && actionsRow.length > 0, enableMultiRowSelection: enableMultiRowSelection }), jsx(TableBody, { className: 'bg-background', children: jsx(DataTableRows, { table: table, columns: columns, isLoading: isLoading, actionsRow: actionsRow, textNoRecords: textNoRecords, enableMultiRowSelection: enableMultiRowSelection }) })] }) })] }), jsx(DataTableFooter, { hidePagination: hidePagination, disablePagination: disablePagination, isLoading: isLoading, totalRows: totalRows, totalPages: totalPages, currentPage: currentPage, pagination: pagination, handlePageSize: handlePageSize, handlePage: handlePage, previousPage: { action: () => table.previousPage(), disabled: !table.getCanPreviousPage() }, nextPage: { action: () => table.nextPage(), disabled: !table.getCanNextPage() }, exportData: exportData })] }));
3348
- }
3207
+ return (jsx("div", { className: cn('flex group', className), children: jsx("div", { className: cn('flex flex-col text-sm w-full', showCopyIcon ? 'p-1 rounded-md transition-colors group-hover:bg-sidebar-accent' : 'p-1'), children: jsxs("div", { className: 'relative', children: [jsxs("div", { className: 'flex items-center text-sm font-medium gap-0.5', children: [jsx("span", { className: 'text-default truncate', children: title }), required && jsx("div", { className: 'text-red-500 truncate', children: "*" })] }), jsx("div", { className: 'grid flex-1 items-center pt-1', children: isLoading ? jsx(Skeleton, { className: 'h-5 w-full rounded-lg' }) : jsx("div", { className: 'text-zinc-500 truncate', children: value }) }), value2 && (jsx("div", { className: 'grid flex-1 items-center pt-1', children: isLoading ? jsx(Skeleton, { className: 'h-5 w-full rounded-lg' }) : jsx("div", { className: 'text-zinc-500 truncate', children: value2 }) })), jsx("div", { className: cn('pr-1 absolute top-1/2 right-0 -translate-y-1/2 opacity-0 transition-opacity', showCopyIcon && 'group-hover:opacity-100'), children: jsx(TooltipProvider, { children: jsxs(Tooltip, { children: [jsx(TooltipTrigger, { asChild: true, children: jsx(Button, { variant: 'ghost', type: 'button', className: cn('p-1 h-8', !showCopyIcon && 'cursor-default'), onClick: handleCopy, children: jsx(Copy, { size: 16 }) }) }), jsx(TooltipContent, { children: "Copiar" })] }) }) })] }) }) }));
3208
+ };
3209
+
3210
+ const NotFound = () => {
3211
+ return (jsx("div", { className: "flex flex-col items-center justify-center h-screen bg-[url('/imgs/404.png')] bg-cover bg-no-repeat bg-center", children: jsxs("div", { className: 'flex flex-col items-center justify-center gap-8 w-[424px]', children: [jsxs("div", { className: 'flex flex-col items-center w-full', children: [jsx("div", { className: 'text-5xl font-extrabold', children: "404" }), jsx("div", { className: 'text-3xl font-semibold', children: "P\u00E1gina Indispon\u00EDvel" })] }), jsx("div", { className: 'flex text-center text-xl font-semibold text-zinc-500', children: "A p\u00E1gina que voc\u00EA est\u00E1 tentando acessar se encontra indispon\u00EDvel no momento, tente novamente mais tarde" }), jsx("div", { className: 'flex justify-center w-full', children: jsxs(Button, { onClick: () => {
3212
+ window.location.href = '/';
3213
+ }, className: '[&_svg]:size-5', children: [jsx(BarChart2, {}), "Voltar Para Inicial"] }) })] }) }));
3214
+ };
3349
3215
 
3350
3216
  const SidebarItemTwoLines = ({ item }) => {
3351
3217
  return (jsxs(Fragment, { children: [jsx("div", { className: '[&_svg]:size-4 text-white', children: item.iconLeft }), jsxs("div", { className: 'grid flex-1 text-left text-sm leading-tight', children: [jsx("span", { className: 'truncate font-semibold', children: item.title }), jsx("span", { className: 'truncate text-xs text-foreground', children: item.subTitle })] }), item.iconRight] }));
@@ -3396,13 +3262,11 @@ const NavSubmenuCollapsible = ({ item, selectedRoute, onClick }) => {
3396
3262
  if (!open)
3397
3263
  toggleSidebar();
3398
3264
  };
3399
- return (jsx(SidebarMenu, { children: jsx(Collapsible, { asChild: true, defaultOpen: isOpen(), children: jsxs(SidebarMenuItem, { children: [jsx(CollapsibleTrigger, { asChild: true, className: 'group/collapsible', children: jsxs(SidebarMenuButton, { tooltip: item.title, className: 'px-2 py-5 gap-3', onClick: () => handleToggleSidebar(), children: [item.icon, jsx("span", { children: item.title }), jsx(ChevronRight, { className: 'ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90' })] }) }), jsx(CollapsibleContent, { children: jsx(SidebarMenuSub, { children: item.subMenuItems
3400
- ?.map((subItem) => (jsx(SidebarMenuSubItem, { children: jsx(SidebarMenuSubButton, { asChild: true, onClick: () => onClick(subItem.path), "aria-disabled": subItem.disabled, children: jsx("div", { className: cn('cursor-pointer px-2 py-1 items-center self-stretch', selectedRoute === subItem.path ? 'bg-sidebar-accent' : ''), children: jsx("span", { children: subItem.label }) }) }) }, subItem.label))) }) })] }) }, item.title) }));
3265
+ return (jsx(SidebarMenu, { children: jsx(Collapsible, { asChild: true, defaultOpen: isOpen(), children: jsxs(SidebarMenuItem, { children: [jsx(CollapsibleTrigger, { asChild: true, className: 'group/collapsible', children: jsxs(SidebarMenuButton, { tooltip: item.title, className: 'px-2 py-5 gap-3', onClick: () => handleToggleSidebar(), children: [item.icon, jsx("span", { children: item.title }), jsx(ChevronRight, { className: 'ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90' })] }) }), jsx(CollapsibleContent, { children: jsx(SidebarMenuSub, { children: item.subMenuItems?.map((subItem) => (jsx(SidebarMenuSubItem, { children: jsx(SidebarMenuSubButton, { asChild: true, onClick: () => onClick(subItem.path), "aria-disabled": subItem.disabled, children: jsx("div", { className: cn('cursor-pointer px-2 py-1 items-center self-stretch', selectedRoute === subItem.path ? 'bg-sidebar-accent' : ''), children: jsx("span", { children: subItem.label }) }) }) }, subItem.label))) }) })] }) }, item.title) }));
3401
3266
  };
3402
3267
 
3403
3268
  const NavSubmenuDropdown = ({ cols, item, selectedRoute, onClick }) => {
3404
- return (jsx(SidebarMenuItem, { children: jsxs(DropdownMenu, { children: [jsx(DropdownMenuTrigger, { asChild: true, children: jsx(SidebarMenuButton, { asChild: true, className: cn('data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground hover:bg-sidebar-accent px-2 py-5 gap-3 cursor-pointer', selectedRoute?.includes(item.path) ? 'bg-sidebar-accent' : ''), tooltip: item.title, children: jsxs("div", { children: [item.icon, jsx("span", { children: item.title }), jsx(ChevronRight, { className: 'ml-auto' })] }) }) }), jsx(DropdownMenuContent, { className: `grid grid-cols-${cols ?? '1'} gap-4 p-4`, align: 'start', side: 'right', sideOffset: 4, children: item.subMenuItems
3405
- ?.map((subItem, index) => (jsxs(DropdownMenuItem, { className: cn('flex flex-col items-start text-left max-w-[220px] gap-1 cursor-pointer', selectedRoute === subItem.path ? 'bg-sidebar-accent' : ''), onClick: () => onClick(subItem.path), disabled: subItem.disabled, children: [jsx("div", { className: 'text-sm font-semibold', children: subItem.label }), jsx("div", { className: 'text-sm text-muted-foreground', children: subItem.description })] }, `${index}`))) })] }) }));
3269
+ return (jsx(SidebarMenuItem, { children: jsxs(DropdownMenu, { children: [jsx(DropdownMenuTrigger, { asChild: true, children: jsx(SidebarMenuButton, { asChild: true, className: cn('data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground hover:bg-sidebar-accent px-2 py-5 gap-3 cursor-pointer', selectedRoute?.includes(item.path) ? 'bg-sidebar-accent' : ''), tooltip: item.title, children: jsxs("div", { children: [item.icon, jsx("span", { children: item.title }), jsx(ChevronRight, { className: 'ml-auto' })] }) }) }), jsx(DropdownMenuContent, { className: `grid grid-cols-${cols ?? '1'} gap-4 p-4`, align: 'start', side: 'right', sideOffset: 4, children: item.subMenuItems?.map((subItem, index) => (jsxs(DropdownMenuItem, { className: cn('flex flex-col items-start text-left max-w-[220px] gap-1 cursor-pointer', selectedRoute === subItem.path ? 'bg-sidebar-accent' : ''), onClick: () => onClick(subItem.path), disabled: subItem.disabled, children: [jsx("div", { className: 'text-sm font-semibold', children: subItem.label }), jsx("div", { className: 'text-sm text-muted-foreground', children: subItem.description })] }, `${index}`))) })] }) }));
3406
3270
  };
3407
3271
 
3408
3272
  const SidebarSubmenuType = {
@@ -3447,90 +3311,210 @@ const NavUser = ({ userName, userEmail, userInitials, callbackLogout }) => {
3447
3311
  } }) }) }), jsxs(DropdownMenuContent, { className: 'w-[250px] rounded-lg', side: isMobile ? 'bottom' : 'right', align: 'end', sideOffset: 4, children: [jsx(DropdownMenuLabel, { className: 'p-0 font-normal', children: jsxs("div", { className: 'flex items-center gap-2 px-1 py-1.5 text-left text-sm', children: [jsxs(Avatar, { className: 'h-8 w-8 rounded-lg', children: [jsx(AvatarImage, { src: userInitials, alt: userName }), jsx(AvatarFallback, { className: 'rounded-lg bg-background-primary text-white', children: userInitials })] }), jsxs("div", { className: 'grid flex-1 text-left text-sm leading-tight', children: [jsx("span", { className: 'truncate font-semibold', children: userName }), jsx("span", { className: 'truncate text-xs', children: userEmail })] })] }) }), jsx(DropdownMenuItem, { className: 'p-0 font-normal cursor-pointer', onClick: () => handleLogout(), children: jsxs("div", { className: 'flex items-center gap-2 px-1 py-1.5 text-left text-sm', children: [jsx("div", { className: 'flex w-8 h-8 p-2 items-center rounded-md', children: jsx(LogOut, { size: 16 }) }), "Log out"] }) })] })] }) }) }));
3448
3312
  };
3449
3313
 
3450
- const Header = ({ splittedPath, modules, pages, isLoading, combobox, }) => {
3451
- const { portalDefinitions } = useTheme();
3452
- const navigate = useNavigate();
3453
- const refProgressLoading = useRef(null);
3454
- const lastPage = splittedPath[splittedPath.length - 1];
3455
- useEffect(() => {
3456
- isLoading ? refProgressLoading.current?.start() : refProgressLoading.current?.complete();
3457
- }, [isLoading]);
3458
- const setRouter = (path) => {
3459
- navigate(path);
3460
- };
3461
- const getPath = (index) => {
3462
- let path = '';
3463
- for (let i = 0; i <= index; i++) {
3464
- path += `/${splittedPath[i]}`;
3314
+ function DataTableExport({ exportData, totalRows }) {
3315
+ const ExportDataSchema = z.object({
3316
+ model: z.string(),
3317
+ format: z.string(),
3318
+ });
3319
+ const form = useForm({
3320
+ mode: 'onTouched',
3321
+ resolver: zodResolver(ExportDataSchema),
3322
+ });
3323
+ const { control, trigger, handleSubmit } = form;
3324
+ const exportXlSX = () => {
3325
+ if (!exportData)
3326
+ return;
3327
+ if (totalRows === 0) {
3328
+ toast({
3329
+ title: 'Não há dados para exportar.',
3330
+ variant: 'destructive',
3331
+ });
3332
+ return {};
3465
3333
  }
3466
- return path;
3467
- };
3468
- const getLinkSidebar = (index) => {
3469
- return pages.find((item) => item.path === getPath(index));
3334
+ const params = new URLSearchParams(exportData.params).toString();
3335
+ window.open(`${exportData.url}?${params}`, '_blank');
3470
3336
  };
3471
- const getSubMenuItem = (index) => {
3472
- return pages.flatMap((item) => item.subMenuItems || []).find((sub) => sub.path === getPath(index));
3337
+ const renderExport = () => {
3338
+ if (!exportData)
3339
+ return null;
3340
+ if (exportData.type === 'xlsx') {
3341
+ return (jsx(Button, { variant: 'secondary', onClick: exportXlSX, children: "Exportar" }));
3342
+ }
3343
+ if (exportData.type === 'dialog') {
3344
+ const onSubmit = async (_values) => {
3345
+ await trigger();
3346
+ toast({
3347
+ title: 'Em desenvolvimento.',
3348
+ variant: 'destructive',
3349
+ });
3350
+ };
3351
+ const onError = async (_errors) => {
3352
+ toast({
3353
+ title: 'Erro ao salvar',
3354
+ description: 'Verifique os campos obrigatórios',
3355
+ variant: 'destructive',
3356
+ });
3357
+ };
3358
+ return (jsx(Form, { ...form, onSubmit: handleSubmit(onSubmit, onError), children: jsxs(Dialog, { children: [jsx(DialogTrigger, { asChild: true, children: jsx(Button, { variant: 'secondary', children: "Exportar" }) }), jsxs(DialogContent, { hideClose: true, className: 'fixed p-6 rounded-lg w-[451px]', children: [jsxs(DialogHeader, { children: [jsx(DialogTitle, { children: "Exportar" }), jsx(DialogDescription, {})] }), jsxs("div", { className: 'flex flex-col gap-6', children: [jsx(FormRadioGroup, { control: control, name: 'model', label: 'Selecione o modelo de visualiza\u00E7\u00E3o', options: [
3359
+ { value: '0', label: 'Resumido' },
3360
+ { value: '1', label: 'Detalhado' },
3361
+ ], className: 'text-sm font-normal', classNameOptions: 'flex flex-col gap-4 mt-4 text-sm font-normal' }), jsx(FormRadioGroup, { control: control, name: 'format', label: 'Selecione o formato desejado para exporta\u00E7\u00E3o', options: [
3362
+ { value: '0', label: 'PDF' },
3363
+ { value: '1', label: 'XLSX' },
3364
+ ], className: 'text-sm font-normal', classNameOptions: 'flex flex-col gap-4 mt-4 text-sm font-normal' })] }), jsxs(DialogFooter, { className: 'sm:justify-end gap-2', children: [jsx(Button, { type: 'button', variant: 'secondary', children: "Fechar" }), jsx(Button, { type: 'button', variant: 'default', onClick: () => exportXlSX(), children: "Exportar" })] })] })] }) }));
3365
+ }
3366
+ return null;
3473
3367
  };
3474
- const getModule = (page) => {
3475
- const module = modules.find((mod) => mod.value === page);
3476
- if (!module) {
3477
- return page;
3368
+ return exportData && renderExport();
3369
+ }
3370
+
3371
+ function DataTableFooter({ isLoading, totalRows, totalPages, currentPage, hidePagination, disablePagination, pagination, handlePageSize, handlePage, previousPage, nextPage, exportData, }) {
3372
+ const renderPaginationPages = () => {
3373
+ const paginationItems = [];
3374
+ const createPaginationItem = (pageIndex) => (jsx(PaginationItem, { children: jsx(PaginationLink, { onClick: () => handlePage(pageIndex), isActive: currentPage === pageIndex, children: pageIndex + 1 }) }, pageIndex));
3375
+ // Add first page
3376
+ paginationItems.push(createPaginationItem(0));
3377
+ // Add ellipsis if needed
3378
+ if (currentPage > 2) {
3379
+ paginationItems.push(jsx(PaginationEllipsis, {}, 'start-ellipsis'));
3478
3380
  }
3479
- return module?.title;
3381
+ // Add pages before current page
3382
+ for (let i = Math.max(1, currentPage - 1); i < currentPage; i++) {
3383
+ paginationItems.push(createPaginationItem(i));
3384
+ }
3385
+ // Add current page
3386
+ if (currentPage !== 0 && currentPage !== totalPages - 1) {
3387
+ paginationItems.push(createPaginationItem(currentPage));
3388
+ }
3389
+ // Add pages after current page
3390
+ for (let i = currentPage + 1; i <= Math.min(totalPages - 2, currentPage + 1); i++) {
3391
+ paginationItems.push(createPaginationItem(i));
3392
+ }
3393
+ // Add ellipsis if needed
3394
+ if (currentPage < totalPages - 3) {
3395
+ paginationItems.push(jsx(PaginationEllipsis, {}, 'end-ellipsis'));
3396
+ }
3397
+ // Add last page
3398
+ if (totalPages > 1) {
3399
+ paginationItems.push(createPaginationItem(totalPages - 1));
3400
+ }
3401
+ return paginationItems;
3480
3402
  };
3481
- const getTitle = (index) => {
3482
- const linkSidebar = getLinkSidebar(index);
3483
- const subMenuItem = getSubMenuItem(index);
3484
- if (subMenuItem) {
3485
- return subMenuItem.label;
3403
+ return (!hidePagination && (jsxs("footer", { className: 'flex items-center justify-between h-[64px]', children: [jsxs("div", { className: 'flex flex-row items-center gap-6', children: [jsxs("div", { className: 'flex flex-row items-center gap-2', children: ["Linhas por p\u00E1gina", jsxs(Select, { value: pagination.pageSize.toString(), onValueChange: (value) => handlePageSize(Number(value)), disabled: isLoading || disablePagination, children: [jsx(SelectTrigger, { className: 'w-20', children: jsx(SelectValue, { placeholder: '', className: 'text-slate-800 font-medium' }) }), jsx(SelectContent, { children: jsxs(SelectGroup, { children: [jsx(SelectItem, { value: '25', children: "25" }), jsx(SelectItem, { value: '50', children: "50" }), jsx(SelectItem, { value: '100', children: "100" })] }) })] })] }), jsx(DataTableExport, { exportData: exportData, totalRows: totalPages })] }), jsxs("div", { className: 'flex items-center gap-4', children: [jsx("div", { children: !isLoading && (jsx(Badge, { variant: 'secondary', children: totalRows === 0 ? 'Nenhum item' : totalRows === 1 ? '1 item' : `${totalRows} itens` })) }), jsx("div", { children: jsx(Pagination, { children: jsxs(PaginationContent, { children: [jsx(PaginationItem, { children: jsx(PaginationPrevious, { onClick: () => previousPage.action(), disabled: previousPage.disabled || disablePagination }) }), renderPaginationPages(), jsx(PaginationItem, { children: jsx(PaginationNext, { onClick: () => nextPage.action(), disabled: nextPage.disabled || disablePagination }) })] }) }) })] })] })));
3404
+ }
3405
+
3406
+ function DataTableHeader({ table, canActionsRow, enableMultiRowSelection }) {
3407
+ const headerGroups = table.getHeaderGroups();
3408
+ return (jsx(TableHeader, { children: headerGroups.map((headerGroup) => (jsxs(TableRow, { className: 'bg-background dark:bg-datatable-accent rounded-t-md sticky top-0 z-10', children: [enableMultiRowSelection && (jsx(TableHead, { className: 'h-[65px] w-6', children: jsx(Checkbox, { checked: table.getIsAllPageRowsSelected() || (table.getIsSomePageRowsSelected() && 'indeterminate'), onCheckedChange: (value) => table.toggleAllPageRowsSelected(!!value) }) })), headerGroup.headers.map((header) => (jsx(TableHead, { className: cn('h-[65px] whitespace-nowrap', header.column.id === 'id' ? 'sticky left-0 z-20' : '', header.column.columnDef.enableSorting ? 'pl-2' : ''), children: header.column.columnDef.enableSorting ? (jsxs(Button, { variant: 'ghost', onClick: () => header.column.toggleSorting(header.column.getIsSorted() === 'asc'), children: [flexRender(header.column.columnDef.header, header.getContext()), header.column.getIsSorted() === 'asc' ? (jsx(MoveUp, { className: 'ml-2 h-4 w-4' })) : header.column.getIsSorted() === 'desc' ? (jsx(MoveDown, { className: 'ml-2 h-4 w-4' })) : (jsx(ArrowUpDown, { className: 'ml-2 h-4 w-4' }))] })) : (flexRender(header.column.columnDef.header, header.getContext())) }, header.id))), canActionsRow && jsx(TableHead, {})] }, headerGroup.id))) }));
3409
+ }
3410
+
3411
+ function DataTableRows({ table, isLoading, columns, actionsRow, textNoRecords, enableMultiRowSelection }) {
3412
+ const rows = table.getRowModel().rows;
3413
+ const renderLoadingRows = () => {
3414
+ const rows = [];
3415
+ for (let i = 0; i < 10; i++) {
3416
+ rows.push(jsxs(TableRow, { children: [enableMultiRowSelection && (jsx(TableCell, { className: 'py-2', children: jsx(Skeleton, { className: 'h-10 w-full' }) })), columns.map((column) => (jsx(TableCell, { className: 'py-2', children: jsx(Skeleton, { className: 'h-10 w-full' }) }, column.id)))] }, `loading-row-${i}`));
3486
3417
  }
3487
- return linkSidebar?.title;
3418
+ return rows;
3488
3419
  };
3489
- const renderBreadcrumbPage = (index) => {
3490
- return jsx(BreadcrumbPage, { children: getTitle(index) });
3420
+ const renderRows = () => {
3421
+ return rows.map((row) => (jsxs(TableRow, { "data-state": row.getIsSelected() && 'selected', className: 'group', children: [enableMultiRowSelection && (jsx(TableCell, { className: 'py-4', children: jsx(Checkbox, { checked: row.getIsSelected(), onCheckedChange: (value) => row.toggleSelected(!!value), "aria-label": 'Select row' }) })), row.getVisibleCells().map((cell) => (jsx(TableCell, { className: 'py-4', children: flexRender(cell.column.columnDef.cell, cell.getContext()) }, cell.id))), actionsRow && (jsx(TableCell, { className: 'opacity-0 group-hover:opacity-100 hover:opacity-100 relative overflow-visible w-[0px]', children: jsx("div", { className: 'absolute transition-colors group-hover:bg-datatable-accent overflow-visible right-5 -translate-y-1/2 flex space-x-4', children: actionsRow.map((action, index) => (jsxs(Button, { variant: action.variant || 'default', className: cn('bg-datatable-accent', action.className?.(row.original) || ''), onClick: () => action.onClick?.(row.original), disabled: action.disabled?.(row.original) || false, children: [action.icon, action.label] }, `action-row-${index}`))) }) }, `buttons-${row.id}`))] }, row.id)));
3491
3422
  };
3492
- const renderBreadcrumbLink = (page, index) => {
3493
- const linkSidebar = getLinkSidebar(index);
3494
- return linkSidebar?.subMenuType ? (renderBreadcrumbPage(index)) : (jsx(BreadcrumbLink, { onClick: () => setRouter(getPath(index)), className: 'cursor-pointer', children: index === 0 ? getModule(page) : getTitle(index) }));
3423
+ const renderEmptyRows = () => {
3424
+ const colSpan = columns.length + (actionsRow ? 1 : 0);
3425
+ return (jsx(TableRow, { children: jsx(TableCell, { colSpan: colSpan, className: 'text-center h-[53px]', children: textNoRecords ? textNoRecords : 'Sem resultados.' }) }));
3495
3426
  };
3496
- const renderBreadcrumbItens = () => {
3497
- const breadcrumbItems = [];
3498
- splittedPath.map((page, index) => {
3499
- breadcrumbItems.push(jsx(BreadcrumbItem, { children: page === lastPage ? renderBreadcrumbPage(index) : renderBreadcrumbLink(page, index) }, `breadcrumb-item-${index}`));
3500
- if (page !== lastPage) {
3501
- breadcrumbItems.push(jsx(BreadcrumbSeparator, { className: 'mt-[1px]' }, `breadcrumb-separator-${index}`));
3502
- }
3503
- });
3504
- return breadcrumbItems;
3427
+ return isLoading ? renderLoadingRows() : rows.length ? renderRows() : renderEmptyRows();
3428
+ }
3429
+
3430
+ function DataTable({ columns, data, className, title, rowsPage, actions, actionsRow, customFilters, setSearch, pageChanged, pageSizeChanged, totalRows, filtersActions, exportData, textNoRecords, heightRemainingScroll, hideFilterField, multiRowSelection, hidePagination, disablePagination, isLoading, fixedHeight, }) {
3431
+ const [sorting, setSorting] = useState([]);
3432
+ const [pagination, setPagination] = useState({
3433
+ pageIndex: 0,
3434
+ pageSize: rowsPage ?? 25,
3435
+ });
3436
+ const enableMultiRowSelection = multiRowSelection !== undefined;
3437
+ const [rowSelection, setRowSelection] = useState(enableMultiRowSelection
3438
+ ? Object.fromEntries((Array.isArray(data) ? data : []).map((row, idx) => {
3439
+ return [idx, row.checked];
3440
+ }))
3441
+ : {});
3442
+ const debounceTimeout = useRef(null);
3443
+ const tableContainerRef = useRef(null);
3444
+ const [tableHeight, setTableHeight] = useState('auto');
3445
+ totalRows = totalRows ?? data.length;
3446
+ const table = useReactTable({
3447
+ manualPagination: true,
3448
+ data: data,
3449
+ columns,
3450
+ getPaginationRowModel: getPaginationRowModel(),
3451
+ onPaginationChange: setPagination,
3452
+ getCoreRowModel: getCoreRowModel(),
3453
+ onSortingChange: setSorting,
3454
+ getSortedRowModel: getSortedRowModel(),
3455
+ getFilteredRowModel: getFilteredRowModel(),
3456
+ onRowSelectionChange: (rowSelection) => {
3457
+ setRowSelection(rowSelection);
3458
+ },
3459
+ enableMultiRowSelection: enableMultiRowSelection,
3460
+ state: { pagination, rowSelection, sorting },
3461
+ pageCount: Math.ceil(totalRows / pagination.pageSize),
3462
+ });
3463
+ const totalPages = table.getPageCount();
3464
+ const currentPage = table.getState().pagination.pageIndex;
3465
+ const selectedRows = table.getSelectedRowModel().rows;
3466
+ const selectedIds = selectedRows.map((row) => row.original.id);
3467
+ useEffect(() => {
3468
+ if (data.length === 0 && pagination.pageIndex > 0) {
3469
+ setPagination({ ...pagination, pageIndex: 0 });
3470
+ }
3471
+ }, [data]);
3472
+ useEffect(() => {
3473
+ handleResize();
3474
+ window.addEventListener('resize', handleResize);
3475
+ return () => {
3476
+ window.removeEventListener('resize', handleResize);
3477
+ };
3478
+ }, []);
3479
+ useEffect(() => {
3480
+ if (pageChanged)
3481
+ pageChanged(pagination.pageIndex + 1);
3482
+ }, [pagination]);
3483
+ useEffect(() => {
3484
+ const selectedRowsChecked = selectedRows.map((row) => row.original);
3485
+ if (multiRowSelection && selectedRowsChecked.length > 0) {
3486
+ multiRowSelection.callback(selectedRowsChecked);
3487
+ }
3488
+ }, [rowSelection]);
3489
+ const handleResize = () => {
3490
+ if (tableContainerRef.current) {
3491
+ const newHeight = window.innerHeight - tableContainerRef.current.getBoundingClientRect().top - (hidePagination ? 30 : 74);
3492
+ setTableHeight(`${newHeight - (heightRemainingScroll ?? 0)}px`);
3493
+ }
3505
3494
  };
3506
- const getColorLoadingBar = () => {
3507
- const colorShades = getTailwindColorShades();
3508
- const tailwindColor = portalDefinitions?.mvnoPrimaryColor || DEFAULT_THEME_DATA.mvnoPrimaryColor;
3509
- const isValidColor = (color) => color in colorShades;
3510
- const colorPallete = isValidColor(tailwindColor) ? colorShades[tailwindColor] : colorShades.violet;
3511
- return colorPallete[900];
3495
+ const handleSearchChange = (event) => {
3496
+ const value = event.currentTarget.value;
3497
+ if (debounceTimeout.current) {
3498
+ clearTimeout(debounceTimeout.current);
3499
+ }
3500
+ debounceTimeout.current = setTimeout(() => {
3501
+ setSearch?.(value);
3502
+ handlePage(0);
3503
+ }, 300);
3512
3504
  };
3513
- return (jsxs("header", { className: 'flex flex-col justify-between items-center w-full', children: [jsxs("div", { className: 'flex justify-between items-center py-3 px-5 w-full', children: [jsxs("div", { className: 'flex items-center gap-x-2 h-[40px]', children: [jsx(SidebarTrigger, { className: 'p-5' }), jsx("div", { className: 'p-2', children: jsx(Breadcrumb, { children: jsx(BreadcrumbList, { children: renderBreadcrumbItens() }) }) })] }), jsx("div", { className: 'flex items-center', children: combobox })] }), jsx(LoadingBar, { ref: refProgressLoading, color: getColorLoadingBar(), height: 7 })] }));
3514
- };
3515
-
3516
- const LabelWithTitle = ({ title, value, value2, required, showCopyIcon = false, className, isLoading }) => {
3517
- const handleCopy = () => {
3518
- if (showCopyIcon && value) {
3519
- navigator.clipboard.writeText(`${value}${value2 ?? ''}`);
3520
- toast({
3521
- title: `"${value}${value2 ?? ''}" foi copiado para a área de transferência.`,
3522
- variant: 'success',
3523
- });
3505
+ const handlePageSize = (value) => {
3506
+ pageSizeChanged?.(value);
3507
+ setPagination({ pageIndex: 0, pageSize: value });
3508
+ };
3509
+ const handlePage = (index) => {
3510
+ if (index !== currentPage) {
3511
+ setPagination({ ...pagination, pageIndex: index });
3524
3512
  }
3525
3513
  };
3526
- return (jsx("div", { className: cn('flex group', className), children: jsx("div", { className: cn('flex flex-col text-sm w-full', showCopyIcon ? 'p-1 rounded-md transition-colors group-hover:bg-sidebar-accent' : 'p-1'), children: jsxs("div", { className: 'relative', children: [jsxs("div", { className: 'flex items-center text-sm font-medium gap-0.5', children: [jsx("label", { className: 'text-default truncate', children: title }), required && jsx("div", { className: 'text-red-500 truncate', children: "*" })] }), jsx("div", { className: 'grid flex-1 items-center pt-1', children: isLoading ? jsx(Skeleton, { className: 'h-5 w-full rounded-lg' }) : jsx("div", { className: 'text-zinc-500 truncate', children: value }) }), value2 && (jsx("div", { className: 'grid flex-1 items-center pt-1', children: isLoading ? jsx(Skeleton, { className: 'h-5 w-full rounded-lg' }) : jsx("div", { className: 'text-zinc-500 truncate', children: value2 }) })), jsx("div", { className: cn('pr-1 absolute top-1/2 right-0 -translate-y-1/2 opacity-0 transition-opacity', showCopyIcon && 'group-hover:opacity-100'), children: jsx(TooltipProvider, { children: jsxs(Tooltip, { children: [jsx(TooltipTrigger, { asChild: true, children: jsx(Button, { variant: 'ghost', type: 'button', className: cn('p-1 h-8', !showCopyIcon && 'cursor-default'), onClick: handleCopy, children: jsx(Copy, { size: 16 }) }) }), jsx(TooltipContent, { children: "Copiar" })] }) }) })] }) }) }));
3527
- };
3528
-
3529
- const NotFound = () => {
3530
- return (jsx("div", { className: "flex flex-col items-center justify-center h-screen bg-[url('/imgs/404.png')] bg-cover bg-no-repeat bg-center", children: jsxs("div", { className: 'flex flex-col items-center justify-center gap-8 w-[424px]', children: [jsxs("div", { className: 'flex flex-col items-center w-full', children: [jsx("div", { className: 'text-5xl font-extrabold', children: "404" }), jsx("div", { className: 'text-3xl font-semibold', children: "P\u00E1gina Indispon\u00EDvel" })] }), jsx("div", { className: 'flex text-center text-xl font-semibold text-zinc-500', children: "A p\u00E1gina que voc\u00EA est\u00E1 tentando acessar se encontra indispon\u00EDvel no momento, tente novamente mais tarde" }), jsx("div", { className: 'flex justify-center w-full', children: jsxs(Button, { onClick: () => {
3531
- window.location.href = '/';
3532
- }, className: '[&_svg]:size-5', children: [jsx(BarChart2, {}), "Voltar Para Inicial"] }) })] }) }));
3533
- };
3514
+ return (jsxs("div", { className: 'flex flex-col flex-1', children: [(!hideFilterField || filtersActions || customFilters || actions) && (jsxs("div", { className: 'flex items-end justify-between mb-4 space-x-6', children: [jsxs("div", { className: 'flex items-center gap-x-4', children: [!hideFilterField && (jsxs("div", { className: 'flex bg-background items-center border border-slate-300 rounded-sm w-[350px] overflow-hidden focus-within:outline-none focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2 group', children: [jsx("div", { className: 'pl-3.5 transform transition-transform duration-300 group-hover:-translate-x-1', children: jsx(Search, { size: 18, className: 'w-5 h-5 stroke-zinc-500 dark:stroke-default' }) }), jsx("input", { placeholder: 'Buscar', onKeyUp: (event) => {
3515
+ handleSearchChange(event);
3516
+ }, className: 'w-full bg-background text-default border-none focus:ring-0 focus:outline-none px-3 py-2 transform transition-transform duration-300 group-hover:-translate-x-1 ' })] })), filtersActions && (jsxs(Sheet, { open: filtersActions.filterOpen, onOpenChange: filtersActions.setFilterOpen, children: [jsx(SheetTrigger, { asChild: true, children: jsxs(Button, { variant: 'secondary', type: 'button', children: [jsx(Filter, { size: 20, className: 'h-4 w-4' }), " Filtros", filtersActions.countFilters > 0 && (jsx("div", { className: 'bg-background-primary text-white rounded-full h-5 w-5 flex items-center justify-center text-sm placeholder:text-muted-foreground', children: filtersActions.countFilters }))] }) }), jsxs(SheetContent, { children: [jsxs(SheetHeader, { children: [jsx(SheetTitle, { children: "Filtros" }), jsx(SheetDescription, {})] }), jsx("div", { className: 'flex flex-col py-6', children: filtersActions.fields })] })] }))] }), customFilters, jsx("div", { className: 'flex space-x-4 content-end', children: actions?.map((action, index) => (jsx("div", { children: jsxs(Button, { onClick: () => action.onClick?.(selectedIds, selectedRows), className: cn(action.className, action.hideUnselectedRows && selectedRows.length === 0 ? 'hidden' : ''), variant: action.variant || 'default', disabled: action.disabled, children: [jsx("div", { className: '[&_svg]:size-5', children: action.icon }), action.label] }) }, `action-table-${index}`))) })] })), jsxs("div", { className: `flex-1 flex flex-col rounded-md border ${className}`, children: [jsx("div", { className: 'flex items-center justify-between', children: title && jsx("div", { className: 'text-h4 p-4', children: title }) }), jsx("div", { id: 'data-table', ref: tableContainerRef, style: fixedHeight ? { height: fixedHeight } : { height: tableHeight }, className: 'flex flex-col justify-between rounded-md overflow-x-auto overflow-y-auto', children: jsxs(Table, { children: [jsx(DataTableHeader, { table: table, canActionsRow: actionsRow && actionsRow.length > 0, enableMultiRowSelection: enableMultiRowSelection }), jsx(TableBody, { className: 'bg-background', children: jsx(DataTableRows, { table: table, columns: columns, isLoading: isLoading, actionsRow: actionsRow, textNoRecords: textNoRecords, enableMultiRowSelection: enableMultiRowSelection }) })] }) })] }), jsx(DataTableFooter, { hidePagination: hidePagination, disablePagination: disablePagination, isLoading: isLoading, totalRows: totalRows, totalPages: totalPages, currentPage: currentPage, pagination: pagination, handlePageSize: handlePageSize, handlePage: handlePage, previousPage: { action: () => table.previousPage(), disabled: !table.getCanPreviousPage() }, nextPage: { action: () => table.nextPage(), disabled: !table.getCanNextPage() }, exportData: exportData })] }));
3517
+ }
3534
3518
 
3535
3519
  function isUUIDv4(str) {
3536
3520
  const uuidV4Regex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
@@ -3564,7 +3548,7 @@ function styleInject(css, ref) {
3564
3548
  }
3565
3549
  }
3566
3550
 
3567
- var css_248z = "*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb}:after,:before{--tw-content:\"\"}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background-default:#fff;--background-subtle:#f7f5ff;--background-elevated:#ded7fe;--background-disabled:#c9c9c9;--background-primary:#4d1d95;--background-primary-hover:#2e1065;--background-secondary:#f4f4f5;--background-secondary-hover:#e4e4e7;--background-success-strong:#059467;--background-success-muted:#f2fdf5;--background-success-muted-hover:#f2fdf5;--background-success-muted-active:#defce9;--background-error-strong:#dc2828;--background-error-strong-hover:#ba1c1c;--background-error-strong-active:#dc2828;--background-error-muted:#fef1f1;--background-error-muted-hover:#fee1e1;--background-error-muted-active:#fec8c8;--background-warning-strong:#e7b008;--background-warning-muted:#fefce7;--background-warning-muted-hover:#fef9c3;--background-warning-muted-active:#fef08b;--background-info-strong:#2463eb;--background-info-muted:#f0f6ff;--background-info-muted-hover:#dcebfe;--background-info-muted-active:#bedbfe;--background-interactive:#2463eb;--background-interactive-hover:#1d4fd7;--background-interactive-active:#1e3fae;--background-interactive-muted:#f0f6ff;--background-interactive-muted-hover:#dcebfe;--background-interactive-muted-active:#bedbfe;--border:#e4e4e7;--border-disabled:#e5e7eb;--default:#09090b;--background:#fff;--foreground:#3f3f46;--card:#fff;--card-foreground:#020817;--popover:#fff;--popover-foreground:#020817;--primary:#5a21b5;--primary-foreground:#fff;--primary-hover:#2e1065;--primary-950:#2e1065;--primary-900:#4c1d95;--primary-800:#5b21b6;--primary-700:#6d28d9;--primary-600:#7c3aed;--primary-500:#8b5cf6;--primary-400:#a78bfa;--primary-300:#c4b5fd;--primary-200:#ddd6fe;--primary-100:#ede9fe;--primary-50:#f5f3ff;--secondary:#f4f4f5;--secondary-foreground:#0f172a;--secondary-hover:#e4e4e7;--muted:#f1f5f9;--muted-foreground:#64748b;--accent:#ddd6fe;--accent-foreground:#0f172a;--destructive:#ef4444;--destructive-foreground:#f8fafc;--input:#e2e8f0;--ring:#3c83f6;--radius:0.5rem;--sidebar-background:#f7f5ff;--sidebar-foreground:#09090b;--sidebar-primary:#18181b;--sidebar-primary-foreground:#fafafa;--sidebar-accent:#ded7fe;--sidebar-accent-foreground:#18181b;--sidebar-border:#e5e7eb;--sidebar-ring:#5a21b5;--sidebar-scrollbar-track:#f1f5f9;--sidebar-scrollbar-thumb:#ddd6fe;--datatable-background:#f5f3ff;--datatable-accent:#f5f3ff;--scrollbar-track:#f1f5f9;--scrollbar-thumb:#ddd6fe;--chart-primary:#5a21b5;--chart-secondary:#ddd6fe;--chart-red:#dc2828;--chart-yellow:#e7b008;--chart-green:#059467;--chart-blue:#2463eb}.dark{--background-default:#0a0a0a;--background-subtle:#262626;--background-elevated:#333;--background-strong:#ded7fe;--background-disabled:#333;--background-primary:#4d1d95;--background-primary-hover:#2e1065;--background-primary-active:#4d1d95;--background-secondary:#0a0a0a;--background-secondary-hover:#e4e4e7;--background-secondary-active:#f4f4f5;--default:#fff;--background:#0a0a0a;--foreground:#fafafa;--card:#171717;--card-foreground:#fafafa;--popover:#262626;--popover-foreground:#fafafa;--primary:#5a21b5;--primary-foreground:#171717;--primary-hover:#2e1065;--secondary:#262626;--secondary-foreground:#fafafa;--secondary-hover:#1c1c1c;--muted:#262626;--muted-foreground:#a1a1a1;--accent:#404040;--accent-foreground:#fafafa;--destructive:#7f1d1d;--destructive-foreground:#f8fafc;--border:hsla(0,0%,100%,.1);--border-disabled:#e5e7eb;--input:hsla(0,0%,100%,.15);--ring:#737373;--sidebar-background:#171717;--sidebar-foreground:#fafafa;--sidebar-primary:#4d1d95;--sidebar-primary-foreground:#fafafa;--sidebar-accent:#262626;--sidebar-accent-foreground:#fafafa;--sidebar-border:hsla(0,0%,100%,.1);--sidebar-ring:#525252;--sidebar-scrollbar-track:#262626;--sidebar-scrollbar-thumb:#404040;--datatable-background:#18181b;--datatable-accent:#171717;--scrollbar-track:#262626;--scrollbar-thumb:#404040}.dark-side{--sidebar-background:#171717;--sidebar-foreground:#fafafa;--sidebar-primary:#4d1d95;--sidebar-primary-foreground:#fafafa;--sidebar-accent:#262626;--sidebar-accent-foreground:#fafafa;--sidebar-border:#ffffff1a;--sidebar-ring:#525252;--sidebar-scrollbar-track:#262626;--sidebar-scrollbar-thumb:#404040}*{border-color:var(--border)}body{background-color:var(--background-default);color:var(--foreground)}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{bottom:0;top:0}.-bottom-12{bottom:-3rem}.-left-12{left:-3rem}.-right-12{right:-3rem}.-top-12{top:-3rem}.bottom-0{bottom:0}.left-0{left:0}.left-1\\/2{left:50%}.left-2{left:.5rem}.left-3{left:.75rem}.left-\\[50\\%\\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.right-5{right:1.25rem}.top-0{top:0}.top-1\\.5{top:.375rem}.top-1\\/2{top:50%}.top-2{top:.5rem}.top-3\\.5{top:.875rem}.top-4{top:1rem}.top-\\[50\\%\\]{top:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\\[100\\]{z-index:100}.m-1{margin:.25rem}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-3\\.5{margin-left:.875rem;margin-right:.875rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\\.5{margin-bottom:.125rem;margin-top:.125rem}.my-1{margin-bottom:.25rem;margin-top:.25rem}.my-2\\.5{margin-bottom:.625rem;margin-top:.625rem}.-ml-4{margin-left:-1rem}.-mt-4{margin-top:-1rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mr-20{margin-right:5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-24{margin-top:6rem}.mt-4{margin-top:1rem}.mt-8{margin-top:2rem}.mt-\\[1px\\]{margin-top:1px}.mt-auto{margin-top:auto}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.\\!table{display:table!important}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.aspect-video{aspect-ratio:16/9}.size-4{height:1rem;width:1rem}.size-\\[--cell-size\\]{height:var(--cell-size);width:var(--cell-size)}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-2{height:.5rem}.h-2\\.5{height:.625rem}.h-3\\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\\[--cell-size\\]{height:var(--cell-size)}.h-\\[1px\\]{height:1px}.h-\\[31px\\]{height:31px}.h-\\[32px\\]{height:32px}.h-\\[40px\\]{height:40px}.h-\\[53px\\]{height:53px}.h-\\[64px\\]{height:64px}.h-\\[65px\\]{height:65px}.h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.h-svh{height:100svh}.max-h-\\[--radix-select-content-available-height\\]{max-height:var(--radix-select-content-available-height)}.max-h-\\[300px\\]{max-height:300px}.min-h-0{min-height:0}.min-h-10{min-height:2.5rem}.min-h-\\[80px\\]{min-height:80px}.min-h-svh{min-height:100svh}.w-0{width:0}.w-1{width:.25rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-14{width:3.5rem}.w-2{width:.5rem}.w-2\\.5{width:.625rem}.w-20{width:5rem}.w-3\\.5{width:.875rem}.w-3\\/4{width:75%}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\\[--cell-size\\]{width:var(--cell-size)}.w-\\[--radix-popover-trigger-width\\]{width:var(--radix-popover-trigger-width)}.w-\\[--sidebar-width\\]{width:var(--sidebar-width)}.w-\\[0px\\]{width:0}.w-\\[100px\\]{width:100px}.w-\\[150px\\]{width:150px}.w-\\[1px\\]{width:1px}.w-\\[240px\\]{width:240px}.w-\\[250px\\]{width:250px}.w-\\[300px\\]{width:300px}.w-\\[31px\\]{width:31px}.w-\\[32px\\]{width:32px}.w-\\[334px\\]{width:334px}.w-\\[350px\\]{width:350px}.w-\\[424px\\]{width:424px}.w-\\[451px\\]{width:451px}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-0{min-width:0}.min-w-5{min-width:1.25rem}.min-w-\\[--cell-size\\]{min-width:var(--cell-size)}.min-w-\\[8rem\\]{min-width:8rem}.min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.max-w-\\[--skeleton-width\\]{max-width:var(--skeleton-width)}.max-w-\\[220px\\]{max-width:220px}.max-w-lg{max-width:32rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\\[--radix-select-content-transform-origin\\]{transform-origin:var(--radix-select-content-transform-origin)}.-translate-x-1\\/2{--tw-translate-x:-50%}.-translate-x-1\\/2,.-translate-x-px{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-px{--tw-translate-x:-1px}.-translate-y-1\\/2{--tw-translate-y:-50%}.-translate-y-1\\/2,.translate-x-\\[-50\\%\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\\[-50\\%\\]{--tw-translate-x:-50%}.translate-x-px{--tw-translate-x:1px}.translate-x-px,.translate-y-\\[-50\\%\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\\[-50\\%\\]{--tw-translate-y:-50%}.rotate-90{--tw-rotate:90deg}.rotate-90,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-end{align-content:flex-end}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-2{row-gap:.5rem}.space-x-1\\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.375rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.375rem*var(--tw-space-x-reverse))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.5rem*var(--tw-space-x-reverse))}.space-y-1\\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.375rem*var(--tw-space-y-reverse));margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-\\[2px\\]{border-radius:2px}.rounded-\\[3px\\]{border-radius:3px}.rounded-\\[6px\\]{border-radius:6px}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-l-md{border-bottom-left-radius:calc(var(--radius) - 2px);border-top-left-radius:calc(var(--radius) - 2px)}.rounded-r-md{border-bottom-right-radius:calc(var(--radius) - 2px);border-top-right-radius:calc(var(--radius) - 2px)}.rounded-t-\\[10px\\]{border-top-left-radius:10px;border-top-right-radius:10px}.rounded-t-md{border-top-left-radius:calc(var(--radius) - 2px);border-top-right-radius:calc(var(--radius) - 2px)}.border{border-width:1px}.border-2{border-width:2px}.border-\\[1\\.5px\\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-\\[--color-border\\]{border-color:var(--color-border)}.border-black{--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity,1))}.border-input{border-color:var(--input)}.border-primary{border-color:var(--primary)}.border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity,1))}.border-sidebar-border{border-color:var(--sidebar-border)}.border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\\[--color-bg\\]{background-color:var(--color-bg)}.bg-accent{background-color:var(--accent)}.bg-background{background-color:var(--background-default)}.bg-background-elevated{background-color:var(--background-elevated)}.bg-background-primary{background-color:var(--background-primary)}.bg-background-secondary{background-color:var(--background-secondary)}.bg-black\\/80{background-color:rgba(0,0,0,.8)}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-datatable-accent{background-color:var(--datatable-accent)}.bg-destructive{background-color:var(--destructive)}.bg-emerald-700{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity,1))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.bg-muted{background-color:var(--muted)}.bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-primary-100{background-color:var(--primary-100)}.bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar-background)}.bg-sidebar-accent{background-color:var(--sidebar-accent)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.bg-\\[url\\(\\'\\/imgs\\/404\\.png\\'\\)\\]{background-image:url(/imgs/404.png)}.\\!bg-cover{background-size:cover!important}.bg-cover{background-size:cover}.\\!bg-center{background-position:50%!important}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.fill-current{fill:currentColor}.fill-primary{fill:var(--primary)}.stroke-primary{stroke:var(--primary)}.stroke-zinc-500{stroke:#71717a}.stroke-2{stroke-width:2}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-\\[1px\\]{padding:1px}.p-\\[7\\.6px\\]{padding:7.6px}.p-px{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\\[--cell-size\\]{padding-left:var(--cell-size);padding-right:var(--cell-size)}.py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.py-\\[12\\.25px\\]{padding-bottom:12.25px;padding-top:12.25px}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-2{padding-left:.5rem}.pl-2\\.5{padding-left:.625rem}.pl-3{padding-left:.75rem}.pl-3\\.5{padding-left:.875rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-2\\.5{padding-right:.625rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-\\[0\\.8rem\\]{font-size:.8rem}.text-base{font-size:1rem;line-height:1.5rem}.text-h4{font-size:20px;font-weight:600;letter-spacing:-.005em;line-height:28px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:var(--accent-foreground)}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-foreground{color:var(--foreground)}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-muted{color:var(--muted)}.text-muted-foreground{color:var(--muted-foreground)}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground{color:var(--sidebar-foreground)}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow-\\[0_0_0_1px_var\\(--sidebar-border\\)\\]{--tw-shadow:0 0 0 1px var(--sidebar-border);--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color)}.shadow-\\[0_0_0_1px_var\\(--sidebar-border\\)\\],.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-0,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-ring{--tw-ring-color:var(--ring)}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-offset-2{--tw-ring-offset-width:2px}.ring-offset-background{--tw-ring-offset-color:var(--background-default)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\\[left\\2c right\\2c width\\]{transition-duration:.15s;transition-property:left,right,width;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\\[margin\\2c opa\\]{transition-duration:.15s;transition-property:margin,opa;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\\[width\\2c height\\2c padding\\]{transition-duration:.15s;transition-property:width,height,padding;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\\[width\\]{transition-duration:.15s;transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.animate-in{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-duration:.15s;animation-name:enter}.fade-in-0{--tw-enter-opacity:0}.fade-in-80{--tw-enter-opacity:0.8}.zoom-in-95{--tw-enter-scale:.95}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{animation-timing-function:linear}::-webkit-scrollbar-track{background:var(--scrollbar-track);border-radius:8px}::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:8px}.\\[--cell-size\\:2rem\\]{--cell-size:2rem}.\\[display\\:none\\]{display:none}body{pointer-events:auto!important}*{box-sizing:border-box;margin:0;padding:0}::-webkit-scrollbar{height:8px;width:8px}.btn:active{box-shadow:3px 2px 22px 1px rgba(0,0,0,.24);transform:scale(.98)}.pulse{animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}*,:after,:before{box-sizing:border-box}.file\\:border-0::file-selector-button{border-width:0}.file\\:bg-transparent::file-selector-button{background-color:transparent}.file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\\:font-medium::file-selector-button{font-weight:500}.file\\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\\:text-muted-foreground::-moz-placeholder{color:var(--muted-foreground)}.placeholder\\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:-inset-2:after{content:var(--tw-content);inset:-.5rem}.after\\:inset-y-0:after{bottom:0;content:var(--tw-content);top:0}.after\\:left-1\\/2:after{content:var(--tw-content);left:50%}.after\\:w-\\[2px\\]:after{content:var(--tw-content);width:2px}.focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.focus-within\\:ring-2:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\\:ring-ring:focus-within{--tw-ring-color:var(--ring)}.focus-within\\:ring-offset-2:focus-within{--tw-ring-offset-width:2px}.hover\\:flex:hover{display:flex}.hover\\:hidden:hover{display:none}.hover\\:bg-accent:hover{background-color:var(--accent)}.hover\\:bg-background:hover{background-color:var(--background-default)}.hover\\:bg-background-primary-hover:hover{background-color:var(--background-primary-hover)}.hover\\:bg-background-secondary:hover{background-color:var(--background-secondary)}.hover\\:bg-datatable-accent:hover{background-color:var(--datatable-accent)}.hover\\:bg-secondary-hover:hover{background-color:var(--secondary-hover)}.hover\\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\\:text-foreground:hover{color:var(--foreground)}.hover\\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-100:hover{opacity:1}.hover\\:shadow-\\[0_0_0_1px_var\\(--sidebar-accent\\)\\]:hover{--tw-shadow:0 0 0 1px var(--sidebar-accent);--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\\:after\\:bg-sidebar-border:hover:after{background-color:var(--sidebar-border);content:var(--tw-content)}.focus\\:bg-accent:focus{background-color:var(--accent)}.focus\\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\\:opacity-100:focus{opacity:1}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:ring-0:focus,.focus\\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\\:ring-sidebar-ring:focus-visible{--tw-ring-color:var(--sidebar-ring)}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.focus-visible\\:ring-offset-background:focus-visible{--tw-ring-offset-color:var(--background-default)}.active\\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}.group\\/menu-item:focus-within .group-focus-within\\/menu-item\\:opacity-100{opacity:1}.group:hover .group-hover\\:flex{display:flex}.group:hover .group-hover\\:hidden{display:none}.group:hover .group-hover\\:-translate-x-1{--tw-translate-x:-0.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\\:bg-datatable-accent{background-color:var(--datatable-accent)}.group:hover .group-hover\\:bg-sidebar-accent{background-color:var(--sidebar-accent)}.group:hover .group-hover\\:opacity-100,.group\\/menu-item:hover .group-hover\\/menu-item\\:opacity-100{opacity:1}.group.destructive .group-\\[\\.destructive\\]\\:text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.group.destructive .group-\\[\\.destructive\\]\\:hover\\:bg-destructive:hover{background-color:var(--destructive)}.group.destructive .group-\\[\\.destructive\\]\\:hover\\:text-destructive-foreground:hover{color:var(--destructive-foreground)}.group.destructive .group-\\[\\.destructive\\]\\:hover\\:text-red-50:hover{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity,1))}.group.destructive .group-\\[\\.destructive\\]\\:focus\\:ring-destructive:focus{--tw-ring-color:var(--destructive)}.group.destructive .group-\\[\\.destructive\\]\\:focus\\:ring-red-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113/var(--tw-ring-opacity,1))}.group.destructive .group-\\[\\.destructive\\]\\:focus\\:ring-offset-red-600:focus{--tw-ring-offset-color:#dc2626}.peer\\/menu-button:hover~.peer-hover\\/menu-button\\:text-sidebar-accent-foreground{color:var(--sidebar-accent-foreground)}.peer:disabled~.peer-disabled\\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\\:opacity-70{opacity:.7}.has-\\[\\[data-variant\\=inset\\]\\]\\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar-background)}.group\\/menu-item:has([data-sidebar=menu-action]) .group-has-\\[\\[data-sidebar\\=menu-action\\]\\]\\/menu-item\\:pr-8{padding-right:2rem}.aria-disabled\\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\\:text-muted-foreground[aria-selected=true]{color:var(--muted-foreground)}.data-\\[disabled\\=true\\]\\:pointer-events-none[data-disabled=true],.data-\\[disabled\\]\\:pointer-events-none[data-disabled]{pointer-events:none}.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom],.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.data-\\[side\\=right\\]\\:translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.data-\\[side\\=right\\]\\:translate-x-1[data-side=right],.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.data-\\[state\\=checked\\]\\:translate-x-5[data-state=checked]{--tw-translate-x:1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[state\\=unchecked\\]\\:translate-x-0[data-state=unchecked],.data-\\[swipe\\=cancel\\]\\:translate-x-0[data-swipe=cancel]{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\][data-swipe=end]{--tw-translate-x:var(--radix-toast-swipe-end-x)}.data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\][data-swipe=end],.data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\][data-swipe=move]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\][data-swipe=move]{--tw-translate-x:var(--radix-toast-swipe-move-x)}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=closed]{animation:accordion-up .2s ease-out}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=open]{animation:accordion-down .2s ease-out}.data-\\[range-end\\=true\\]\\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\\[range-middle\\=true\\]\\:rounded-none[data-range-middle=true]{border-radius:0}.data-\\[range-start\\=true\\]\\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\\[selected\\=true\\]\\:rounded-none[data-selected=true]{border-radius:0}.data-\\[active\\=true\\]\\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\\[range-end\\=true\\]\\:bg-background-primary[data-range-end=true]{background-color:var(--background-primary)}.data-\\[range-middle\\=true\\]\\:bg-accent[data-range-middle=true]{background-color:var(--accent)}.data-\\[range-start\\=true\\]\\:bg-background-primary[data-range-start=true],.data-\\[selected-single\\=true\\]\\:bg-background-primary[data-selected-single=true]{background-color:var(--background-primary)}.data-\\[selected\\=\\'true\\'\\]\\:bg-accent[data-selected=true]{background-color:var(--accent)}.data-\\[state\\=active\\]\\:bg-background[data-state=active]{background-color:var(--background-default)}.data-\\[state\\=checked\\]\\:bg-background-primary[data-state=checked]{background-color:var(--background-primary)}.data-\\[state\\=open\\]\\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\\[state\\=open\\]\\:bg-background-secondary[data-state=open]{background-color:var(--background-secondary)}.data-\\[state\\=open\\]\\:bg-sidebar-accent[data-state=open]{background-color:var(--sidebar-accent)}.data-\\[state\\=selected\\]\\:bg-background-secondary[data-state=selected]{background-color:var(--background-secondary)}.data-\\[state\\=unchecked\\]\\:bg-accent[data-state=unchecked]{background-color:var(--accent)}.data-\\[active\\=true\\]\\:font-medium[data-active=true]{font-weight:500}.data-\\[active\\=true\\]\\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\\[placeholder\\]\\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\\[range-end\\=true\\]\\:text-primary-foreground[data-range-end=true]{color:var(--primary-foreground)}.data-\\[range-middle\\=true\\]\\:text-accent-foreground[data-range-middle=true]{color:var(--accent-foreground)}.data-\\[range-start\\=true\\]\\:text-primary-foreground[data-range-start=true],.data-\\[selected-single\\=true\\]\\:text-primary-foreground[data-selected-single=true]{color:var(--primary-foreground)}.data-\\[selected\\=true\\]\\:text-accent-foreground[data-selected=true]{color:var(--accent-foreground)}.data-\\[state\\=active\\]\\:text-foreground[data-state=active]{color:var(--foreground)}.data-\\[state\\=checked\\]\\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\\[state\\=open\\]\\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\\[state\\=open\\]\\:text-sidebar-accent-foreground[data-state=open]{color:var(--sidebar-accent-foreground)}.data-\\[disabled\\=true\\]\\:opacity-50[data-disabled=true],.data-\\[disabled\\]\\:opacity-50[data-disabled]{opacity:.5}.data-\\[state\\=open\\]\\:opacity-100[data-state=open]{opacity:1}.data-\\[state\\=active\\]\\:shadow-sm[data-state=active]{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\\[swipe\\=move\\]\\:transition-none[data-swipe=move]{transition-property:none}.data-\\[state\\=closed\\]\\:duration-300[data-state=closed]{transition-duration:.3s}.data-\\[state\\=open\\]\\:duration-500[data-state=open]{transition-duration:.5s}.data-\\[state\\=open\\]\\:animate-in[data-state=open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-duration:.15s;animation-name:enter}.data-\\[state\\=closed\\]\\:animate-out[data-state=closed],.data-\\[swipe\\=end\\]\\:animate-out[data-swipe=end]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-duration:.15s;animation-name:exit}.data-\\[state\\=closed\\]\\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\\[state\\=closed\\]\\:fade-out-80[data-state=closed]{--tw-exit-opacity:0.8}.data-\\[state\\=open\\]\\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\\[state\\=open\\]\\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\\[side\\=right\\]\\:slide-in-from-left-1[data-side=right]{--tw-enter-translate-x:-0.25rem}.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.data-\\[state\\=closed\\]\\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\\[state\\=closed\\]\\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\\[state\\=closed\\]\\:slide-out-to-right-full[data-state=closed],.data-\\[state\\=closed\\]\\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\\[state\\=closed\\]\\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\\[state\\=open\\]\\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\\[state\\=open\\]\\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\\[state\\=open\\]\\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\\[state\\=open\\]\\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=open]{--tw-enter-translate-y:-48%}.data-\\[state\\=open\\]\\:slide-in-from-top-full[data-state=open]{--tw-enter-translate-y:-100%}.data-\\[state\\=closed\\]\\:duration-300[data-state=closed]{animation-duration:.3s}.data-\\[state\\=open\\]\\:duration-500[data-state=open]{animation-duration:.5s}.data-\\[state\\=open\\]\\:hover\\:bg-sidebar-accent:hover[data-state=open]{background-color:var(--sidebar-accent)}.data-\\[state\\=open\\]\\:hover\\:text-sidebar-accent-foreground:hover[data-state=open]{color:var(--sidebar-accent-foreground)}.group\\/day[data-focused=true] .group-data-\\[focused\\=true\\]\\/day\\:relative{position:relative}.group[data-collapsible=offcanvas] .group-data-\\[collapsible\\=offcanvas\\]\\:left-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\]{left:calc(var(--sidebar-width)*-1)}.group[data-collapsible=offcanvas] .group-data-\\[collapsible\\=offcanvas\\]\\:right-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\]{right:calc(var(--sidebar-width)*-1)}.group[data-side=left] .group-data-\\[side\\=left\\]\\:-right-4{right:-1rem}.group[data-side=right] .group-data-\\[side\\=right\\]\\:left-0{left:0}.group\\/day[data-focused=true] .group-data-\\[focused\\=true\\]\\/day\\:z-10{z-index:10}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:-mt-8{margin-top:-2rem}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:hidden{display:none}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:\\!size-8{height:2rem!important;width:2rem!important}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:w-\\[--sidebar-width-icon\\]{width:var(--sidebar-width-icon)}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)_\\+_theme\\(spacing\\.4\\)\\)\\]{width:calc(var(--sidebar-width-icon) + 1rem)}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)_\\+_theme\\(spacing\\.4\\)_\\+2px\\)\\]{width:calc(var(--sidebar-width-icon) + 1rem + 2px)}.group[data-collapsible=offcanvas] .group-data-\\[collapsible\\=offcanvas\\]\\:w-0{width:0}.group[data-collapsible=offcanvas] .group-data-\\[collapsible\\=offcanvas\\]\\:translate-x-0{--tw-translate-x:0px}.group[data-collapsible=offcanvas] .group-data-\\[collapsible\\=offcanvas\\]\\:translate-x-0,.group[data-side=right] .group-data-\\[side\\=right\\]\\:rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-side=right] .group-data-\\[side\\=right\\]\\:rotate-180{--tw-rotate:180deg}.group\\/collapsible[data-state=open] .group-data-\\[state\\=open\\]\\/collapsible\\:rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:overflow-hidden{overflow:hidden}.group[data-variant=floating] .group-data-\\[variant\\=floating\\]\\:rounded-lg{border-radius:var(--radius)}.group[data-variant=floating] .group-data-\\[variant\\=floating\\]\\:border{border-width:1px}.group[data-side=left] .group-data-\\[side\\=left\\]\\:border-r{border-right-width:1px}.group[data-side=right] .group-data-\\[side\\=right\\]\\:border-l{border-left-width:1px}.group\\/day[data-focused=true] .group-data-\\[focused\\=true\\]\\/day\\:border-ring{border-color:var(--ring)}.group[data-variant=floating] .group-data-\\[variant\\=floating\\]\\:border-sidebar-border{border-color:var(--sidebar-border)}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:\\!p-0{padding:0!important}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:\\!p-2{padding:.5rem!important}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:opacity-0{opacity:0}.group[data-variant=floating] .group-data-\\[variant\\=floating\\]\\:shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.group\\/day[data-focused=true] .group-data-\\[focused\\=true\\]\\/day\\:ring-\\[3px\\]{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.group[data-collapsible=offcanvas] .group-data-\\[collapsible\\=offcanvas\\]\\:after\\:left-full:after{content:var(--tw-content);left:100%}.group[data-collapsible=offcanvas] .group-data-\\[collapsible\\=offcanvas\\]\\:hover\\:bg-sidebar:hover{background-color:var(--sidebar-background)}.peer\\/menu-button[data-size=default]~.peer-data-\\[size\\=default\\]\\/menu-button\\:top-1\\.5{top:.375rem}.peer\\/menu-button[data-size=lg]~.peer-data-\\[size\\=lg\\]\\/menu-button\\:top-2\\.5{top:.625rem}.peer\\/menu-button[data-size=sm]~.peer-data-\\[size\\=sm\\]\\/menu-button\\:top-1{top:.25rem}.peer[data-variant=inset]~.peer-data-\\[variant\\=inset\\]\\:min-h-\\[calc\\(100svh-theme\\(spacing\\.4\\)\\)\\]{min-height:calc(100svh - 1rem)}.peer\\/menu-button[data-active=true]~.peer-data-\\[active\\=true\\]\\/menu-button\\:text-sidebar-accent-foreground{color:var(--sidebar-accent-foreground)}.dark\\:border-destructive:is(.dark *){border-color:var(--destructive)}.dark\\:bg-datatable-accent:is(.dark *){background-color:var(--datatable-accent)}.dark\\:bg-popover:is(.dark *){background-color:var(--popover)}@media (min-width:640px){.sm\\:mt-0{margin-top:0}.sm\\:flex{display:flex}.sm\\:max-w-sm{max-width:24rem}.sm\\:flex-row{flex-direction:row}.sm\\:justify-end{justify-content:flex-end}.sm\\:gap-2\\.5{gap:.625rem}.sm\\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.sm\\:rounded-lg{border-radius:var(--radius)}.sm\\:text-left{text-align:left}.data-\\[state\\=open\\]\\:sm\\:slide-in-from-top-full[data-state=open]{--tw-enter-translate-y:-100%}}@media (min-width:768px){.md\\:flex-row{flex-direction:row}.md\\:text-sm{font-size:.875rem;line-height:1.25rem}.md\\:opacity-0{opacity:0}.md\\:\\[display\\:block\\]{display:block}.md\\:\\[display\\:flex\\]{display:flex}.after\\:md\\:hidden:after{content:var(--tw-content);display:none}.peer[data-variant=inset]~.md\\:peer-data-\\[variant\\=inset\\]\\:m-2{margin:.5rem}.peer[data-state=collapsed][data-variant=inset]~.md\\:peer-data-\\[state\\=collapsed\\]\\:peer-data-\\[variant\\=inset\\]\\:ml-2{margin-left:.5rem}.peer[data-variant=inset]~.md\\:peer-data-\\[variant\\=inset\\]\\:ml-0{margin-left:0}.peer[data-variant=inset]~.md\\:peer-data-\\[variant\\=inset\\]\\:rounded-xl{border-radius:.75rem}.peer[data-variant=inset]~.md\\:peer-data-\\[variant\\=inset\\]\\:shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}}.\\[\\&\\:first-child\\[data-selected\\=true\\]_button\\]\\:rounded-l-md:first-child[data-selected=true] button{border-bottom-left-radius:calc(var(--radius) - 2px);border-top-left-radius:calc(var(--radius) - 2px)}.\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0:has([role=checkbox]){padding-right:0}.\\[\\&\\:last-child\\[data-selected\\=true\\]_button\\]\\:rounded-r-md:last-child[data-selected=true] button{border-bottom-right-radius:calc(var(--radius) - 2px);border-top-right-radius:calc(var(--radius) - 2px)}.\\[\\&\\>button\\]\\:hidden>button{display:none}.\\[\\&\\>span\\:last-child\\]\\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\\[\\&\\>span\\]\\:line-clamp-1>span{-webkit-box-orient:vertical;-webkit-line-clamp:1;display:-webkit-box;overflow:hidden}.\\[\\&\\>span\\]\\:text-xs>span{font-size:.75rem;line-height:1rem}.\\[\\&\\>span\\]\\:opacity-70>span{opacity:.7}.\\[\\&\\>svg\\+div\\]\\:translate-y-\\[-3px\\]>svg+div{--tw-translate-y:-3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\[\\&\\>svg\\]\\:absolute>svg{position:absolute}.\\[\\&\\>svg\\]\\:left-4>svg{left:1rem}.\\[\\&\\>svg\\]\\:top-4>svg{top:1rem}.\\[\\&\\>svg\\]\\:size-3\\.5>svg{height:.875rem;width:.875rem}.\\[\\&\\>svg\\]\\:size-4>svg{height:1rem;width:1rem}.\\[\\&\\>svg\\]\\:h-2\\.5>svg{height:.625rem}.\\[\\&\\>svg\\]\\:h-3>svg{height:.75rem}.\\[\\&\\>svg\\]\\:h-3\\.5>svg{height:.875rem}.\\[\\&\\>svg\\]\\:w-2\\.5>svg{width:.625rem}.\\[\\&\\>svg\\]\\:w-3>svg{width:.75rem}.\\[\\&\\>svg\\]\\:w-3\\.5>svg{width:.875rem}.\\[\\&\\>svg\\]\\:shrink-0>svg{flex-shrink:0}.\\[\\&\\>svg\\]\\:text-destructive>svg{color:var(--destructive)}.\\[\\&\\>svg\\]\\:text-foreground>svg{color:var(--foreground)}.\\[\\&\\>svg\\]\\:text-muted-foreground>svg{color:var(--muted-foreground)}.\\[\\&\\>svg\\]\\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\\[\\&\\>svg\\~\\*\\]\\:pl-7>svg~*{padding-left:1.75rem}.\\[\\&\\>tr\\]\\:last\\:border-b-0:last-child>tr{border-bottom-width:0}.\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180[data-state=open]>svg{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\[\\&_\\.react-colorful\\]\\:w-auto .react-colorful{width:auto}.\\[\\&_\\.recharts-cartesian-axis-tick_text\\]\\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:var(--muted-foreground)}.\\[\\&_\\.recharts-curve\\.recharts-tooltip-cursor\\]\\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:var(--border)}.\\[\\&_\\.recharts-dot\\[stroke\\=\\'\\#fff\\'\\]\\]\\:stroke-transparent .recharts-dot[stroke=\"#fff\"]{stroke:transparent}.\\[\\&_\\.recharts-layer\\]\\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\\[\\&_\\.recharts-polar-grid_\\[stroke\\=\\'\\#ccc\\'\\]\\]\\:stroke-border .recharts-polar-grid [stroke=\"#ccc\"]{stroke:var(--border)}.\\[\\&_\\.recharts-radial-bar-background-sector\\]\\:fill-muted .recharts-radial-bar-background-sector,.\\[\\&_\\.recharts-rectangle\\.recharts-tooltip-cursor\\]\\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:var(--muted)}.\\[\\&_\\.recharts-reference-line_\\[stroke\\=\\'\\#ccc\\'\\]\\]\\:stroke-border .recharts-reference-line [stroke=\"#ccc\"]{stroke:var(--border)}.\\[\\&_\\.recharts-sector\\[stroke\\=\\'\\#fff\\'\\]\\]\\:stroke-transparent .recharts-sector[stroke=\"#fff\"]{stroke:transparent}.\\[\\&_\\.recharts-sector\\]\\:outline-none .recharts-sector,.\\[\\&_\\.recharts-surface\\]\\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading]{padding-bottom:.375rem;padding-top:.375rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading]{font-weight:500}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground [cmdk-group-heading]{color:var(--muted-foreground)}.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\\[\\&_\\[cmdk-group\\]\\]\\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\\[\\&_\\[cmdk-input\\]\\]\\:h-12 [cmdk-input]{height:3rem}.\\[\\&_\\[cmdk-item\\]\\]\\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-item\\]\\]\\:py-3 [cmdk-item]{padding-bottom:.75rem;padding-top:.75rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 [cmdk-item] svg{height:1.25rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 [cmdk-item] svg{width:1.25rem}.\\[\\&_p\\]\\:leading-relaxed p{line-height:1.625}.\\[\\&_svg\\]\\:pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:invisible svg{visibility:hidden}.\\[\\&_svg\\]\\:size-3\\.5 svg{height:.875rem;width:.875rem}.\\[\\&_svg\\]\\:size-4 svg{height:1rem;width:1rem}.\\[\\&_svg\\]\\:size-5 svg{height:1.25rem;width:1.25rem}.\\[\\&_svg\\]\\:shrink-0 svg{flex-shrink:0}.\\[\\&_tr\\:last-child\\]\\:border-0 tr:last-child{border-width:0}.\\[\\&_tr\\]\\:border-b tr{border-bottom-width:1px}[data-side=left][data-collapsible=offcanvas] .\\[\\[data-side\\=left\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-right-2{right:-.5rem}[data-side=left][data-state=collapsed] .\\[\\[data-side\\=left\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-e-resize{cursor:e-resize}[data-side=left] .\\[\\[data-side\\=left\\]_\\&\\]\\:cursor-w-resize{cursor:w-resize}[data-side=right][data-collapsible=offcanvas] .\\[\\[data-side\\=right\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-left-2{left:-.5rem}[data-side=right][data-state=collapsed] .\\[\\[data-side\\=right\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-w-resize{cursor:w-resize}[data-side=right] .\\[\\[data-side\\=right\\]_\\&\\]\\:cursor-e-resize{cursor:e-resize}[data-slot=card-content] .\\[\\[data-slot\\=card-content\\]_\\&\\]\\:bg-transparent,[data-slot=popover-content] .\\[\\[data-slot\\=popover-content\\]_\\&\\]\\:bg-transparent{background-color:transparent}";
3551
+ var css_248z = "*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb}:after,:before{--tw-content:\"\"}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background-default:#fff;--background-subtle:#f7f5ff;--background-elevated:#ded7fe;--background-disabled:#c9c9c9;--background-primary:#4d1d95;--background-primary-hover:#2e1065;--background-secondary:#f4f4f5;--background-secondary-hover:#e4e4e7;--background-success-strong:#059467;--background-success-muted:#f2fdf5;--background-success-muted-hover:#f2fdf5;--background-success-muted-active:#defce9;--background-error-strong:#dc2828;--background-error-strong-hover:#ba1c1c;--background-error-strong-active:#dc2828;--background-error-muted:#fef1f1;--background-error-muted-hover:#fee1e1;--background-error-muted-active:#fec8c8;--background-warning-strong:#e7b008;--background-warning-muted:#fefce7;--background-warning-muted-hover:#fef9c3;--background-warning-muted-active:#fef08b;--background-info-strong:#2463eb;--background-info-muted:#f0f6ff;--background-info-muted-hover:#dcebfe;--background-info-muted-active:#bedbfe;--background-interactive:#2463eb;--background-interactive-hover:#1d4fd7;--background-interactive-active:#1e3fae;--background-interactive-muted:#f0f6ff;--background-interactive-muted-hover:#dcebfe;--background-interactive-muted-active:#bedbfe;--border:#e4e4e7;--border-disabled:#e5e7eb;--default:#09090b;--background:#fff;--foreground:#3f3f46;--card:#fff;--card-foreground:#020817;--popover:#fff;--popover-foreground:#020817;--primary:#5a21b5;--primary-foreground:#fff;--primary-hover:#2e1065;--primary-950:#2e1065;--primary-900:#4c1d95;--primary-800:#5b21b6;--primary-700:#6d28d9;--primary-600:#7c3aed;--primary-500:#8b5cf6;--primary-400:#a78bfa;--primary-300:#c4b5fd;--primary-200:#ddd6fe;--primary-100:#ede9fe;--primary-50:#f5f3ff;--secondary:#f4f4f5;--secondary-foreground:#0f172a;--secondary-hover:#e4e4e7;--muted:#f1f5f9;--muted-foreground:#64748b;--accent:#ddd6fe;--accent-foreground:#0f172a;--destructive:#ef4444;--destructive-foreground:#f8fafc;--input:#e2e8f0;--ring:#3c83f6;--radius:0.5rem;--sidebar-background:#f7f5ff;--sidebar-foreground:#09090b;--sidebar-primary:#18181b;--sidebar-primary-foreground:#fafafa;--sidebar-accent:#ded7fe;--sidebar-accent-foreground:#18181b;--sidebar-border:#e5e7eb;--sidebar-ring:#5a21b5;--sidebar-scrollbar-track:#f1f5f9;--sidebar-scrollbar-thumb:#ddd6fe;--datatable-background:#f5f3ff;--datatable-accent:#f5f3ff;--scrollbar-track:#f1f5f9;--scrollbar-thumb:#ddd6fe;--chart-primary:#5a21b5;--chart-secondary:#ddd6fe;--chart-red:#dc2828;--chart-yellow:#e7b008;--chart-green:#059467;--chart-blue:#2463eb}.dark{--background-default:#0a0a0a;--background-subtle:#262626;--background-elevated:#333;--background-strong:#ded7fe;--background-disabled:#333;--background-primary:#4d1d95;--background-primary-hover:#2e1065;--background-primary-active:#4d1d95;--background-secondary:#0a0a0a;--background-secondary-hover:#e4e4e7;--background-secondary-active:#f4f4f5;--default:#fff;--background:#0a0a0a;--foreground:#fafafa;--card:#171717;--card-foreground:#fafafa;--popover:#262626;--popover-foreground:#fafafa;--primary:#5a21b5;--primary-foreground:#171717;--primary-hover:#2e1065;--secondary:#262626;--secondary-foreground:#fafafa;--secondary-hover:#1c1c1c;--muted:#262626;--muted-foreground:#a1a1a1;--accent:#404040;--accent-foreground:#fafafa;--destructive:#7f1d1d;--destructive-foreground:#f8fafc;--border:hsla(0,0%,100%,.1);--border-disabled:#e5e7eb;--input:hsla(0,0%,100%,.15);--ring:#737373;--sidebar-background:#171717;--sidebar-foreground:#fafafa;--sidebar-primary:#4d1d95;--sidebar-primary-foreground:#fafafa;--sidebar-accent:#262626;--sidebar-accent-foreground:#fafafa;--sidebar-border:hsla(0,0%,100%,.1);--sidebar-ring:#525252;--sidebar-scrollbar-track:#262626;--sidebar-scrollbar-thumb:#404040;--datatable-background:#18181b;--datatable-accent:#171717;--scrollbar-track:#262626;--scrollbar-thumb:#404040}.dark-side{--sidebar-background:#171717;--sidebar-foreground:#fafafa;--sidebar-primary:#4d1d95;--sidebar-primary-foreground:#fafafa;--sidebar-accent:#262626;--sidebar-accent-foreground:#fafafa;--sidebar-border:#ffffff1a;--sidebar-ring:#525252;--sidebar-scrollbar-track:#262626;--sidebar-scrollbar-thumb:#404040}*{border-color:var(--border)}body{background-color:var(--background-default);color:var(--foreground)}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{bottom:0;top:0}.-bottom-12{bottom:-3rem}.-left-12{left:-3rem}.-right-12{right:-3rem}.-top-12{top:-3rem}.bottom-0{bottom:0}.left-0{left:0}.left-1\\/2{left:50%}.left-2{left:.5rem}.left-3{left:.75rem}.left-\\[50\\%\\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.right-5{right:1.25rem}.top-0{top:0}.top-1\\.5{top:.375rem}.top-1\\/2{top:50%}.top-2{top:.5rem}.top-3\\.5{top:.875rem}.top-4{top:1rem}.top-\\[50\\%\\]{top:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\\[100\\]{z-index:100}.m-1{margin:.25rem}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-3\\.5{margin-left:.875rem;margin-right:.875rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\\.5{margin-bottom:.125rem;margin-top:.125rem}.my-1{margin-bottom:.25rem;margin-top:.25rem}.my-2\\.5{margin-bottom:.625rem;margin-top:.625rem}.-ml-4{margin-left:-1rem}.-mt-4{margin-top:-1rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mr-2{margin-right:.5rem}.mr-20{margin-right:5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-24{margin-top:6rem}.mt-4{margin-top:1rem}.mt-8{margin-top:2rem}.mt-\\[1px\\]{margin-top:1px}.mt-auto{margin-top:auto}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.\\!table{display:table!important}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1/1}.aspect-video{aspect-ratio:16/9}.size-4{height:1rem;width:1rem}.size-\\[--cell-size\\]{height:var(--cell-size);width:var(--cell-size)}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-2{height:.5rem}.h-2\\.5{height:.625rem}.h-3\\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\\[--cell-size\\]{height:var(--cell-size)}.h-\\[1px\\]{height:1px}.h-\\[31px\\]{height:31px}.h-\\[32px\\]{height:32px}.h-\\[40px\\]{height:40px}.h-\\[53px\\]{height:53px}.h-\\[64px\\]{height:64px}.h-\\[65px\\]{height:65px}.h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.h-svh{height:100svh}.max-h-\\[--radix-select-content-available-height\\]{max-height:var(--radix-select-content-available-height)}.max-h-\\[300px\\]{max-height:300px}.min-h-0{min-height:0}.min-h-10{min-height:2.5rem}.min-h-\\[80px\\]{min-height:80px}.min-h-svh{min-height:100svh}.w-0{width:0}.w-1{width:.25rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-14{width:3.5rem}.w-2{width:.5rem}.w-2\\.5{width:.625rem}.w-20{width:5rem}.w-3\\.5{width:.875rem}.w-3\\/4{width:75%}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\\[--cell-size\\]{width:var(--cell-size)}.w-\\[--radix-popover-trigger-width\\]{width:var(--radix-popover-trigger-width)}.w-\\[--sidebar-width\\]{width:var(--sidebar-width)}.w-\\[0px\\]{width:0}.w-\\[100px\\]{width:100px}.w-\\[150px\\]{width:150px}.w-\\[1px\\]{width:1px}.w-\\[240px\\]{width:240px}.w-\\[250px\\]{width:250px}.w-\\[300px\\]{width:300px}.w-\\[31px\\]{width:31px}.w-\\[32px\\]{width:32px}.w-\\[334px\\]{width:334px}.w-\\[350px\\]{width:350px}.w-\\[424px\\]{width:424px}.w-\\[451px\\]{width:451px}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-0{min-width:0}.min-w-5{min-width:1.25rem}.min-w-\\[--cell-size\\]{min-width:var(--cell-size)}.min-w-\\[8rem\\]{min-width:8rem}.min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.max-w-\\[--skeleton-width\\]{max-width:var(--skeleton-width)}.max-w-\\[220px\\]{max-width:220px}.max-w-lg{max-width:32rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\\[--radix-select-content-transform-origin\\]{transform-origin:var(--radix-select-content-transform-origin)}.-translate-x-1\\/2{--tw-translate-x:-50%}.-translate-x-1\\/2,.-translate-x-px{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-px{--tw-translate-x:-1px}.-translate-y-1\\/2{--tw-translate-y:-50%}.-translate-y-1\\/2,.translate-x-\\[-50\\%\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\\[-50\\%\\]{--tw-translate-x:-50%}.translate-x-px{--tw-translate-x:1px}.translate-x-px,.translate-y-\\[-50\\%\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\\[-50\\%\\]{--tw-translate-y:-50%}.rotate-90{--tw-rotate:90deg}.rotate-90,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-end{align-content:flex-end}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-y-2{row-gap:.5rem}.space-x-1\\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.375rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.375rem*var(--tw-space-x-reverse))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.5rem*var(--tw-space-x-reverse))}.space-y-1\\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.375rem*var(--tw-space-y-reverse));margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-\\[2px\\]{border-radius:2px}.rounded-\\[3px\\]{border-radius:3px}.rounded-\\[6px\\]{border-radius:6px}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-l-md{border-bottom-left-radius:calc(var(--radius) - 2px);border-top-left-radius:calc(var(--radius) - 2px)}.rounded-r-md{border-bottom-right-radius:calc(var(--radius) - 2px);border-top-right-radius:calc(var(--radius) - 2px)}.rounded-t-\\[10px\\]{border-top-left-radius:10px;border-top-right-radius:10px}.rounded-t-md{border-top-left-radius:calc(var(--radius) - 2px);border-top-right-radius:calc(var(--radius) - 2px)}.border{border-width:1px}.border-2{border-width:2px}.border-\\[1\\.5px\\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-\\[--color-border\\]{border-color:var(--color-border)}.border-black{--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity,1))}.border-input{border-color:var(--input)}.border-primary{border-color:var(--primary)}.border-purple-900{--tw-border-opacity:1;border-color:rgb(88 28 135/var(--tw-border-opacity,1))}.border-red-600{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity,1))}.border-sidebar-border{border-color:var(--sidebar-border)}.border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\\[--color-bg\\]{background-color:var(--color-bg)}.bg-accent{background-color:var(--accent)}.bg-background{background-color:var(--background-default)}.bg-background-elevated{background-color:var(--background-elevated)}.bg-background-primary{background-color:var(--background-primary)}.bg-background-secondary{background-color:var(--background-secondary)}.bg-black\\/80{background-color:rgba(0,0,0,.8)}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-datatable-accent{background-color:var(--datatable-accent)}.bg-destructive{background-color:var(--destructive)}.bg-emerald-700{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity,1))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.bg-muted{background-color:var(--muted)}.bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.bg-popover{background-color:var(--popover)}.bg-primary{background-color:var(--primary)}.bg-primary-100{background-color:var(--primary-100)}.bg-purple-700{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar-background)}.bg-sidebar-accent{background-color:var(--sidebar-accent)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-zinc-100{--tw-bg-opacity:1;background-color:rgb(244 244 245/var(--tw-bg-opacity,1))}.bg-\\[url\\(\\'\\/imgs\\/404\\.png\\'\\)\\]{background-image:url(/imgs/404.png)}.\\!bg-cover{background-size:cover!important}.bg-cover{background-size:cover}.\\!bg-center{background-position:50%!important}.bg-center{background-position:50%}.bg-no-repeat{background-repeat:no-repeat}.fill-current{fill:currentColor}.fill-primary{fill:var(--primary)}.stroke-primary{stroke:var(--primary)}.stroke-zinc-500{stroke:#71717a}.stroke-2{stroke-width:2}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-\\[1px\\]{padding:1px}.p-\\[7\\.6px\\]{padding:7.6px}.p-px{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\\[--cell-size\\]{padding-left:var(--cell-size);padding-right:var(--cell-size)}.py-0\\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\\.5{padding-bottom:.375rem;padding-top:.375rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.py-\\[12\\.25px\\]{padding-bottom:12.25px;padding-top:12.25px}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-2{padding-left:.5rem}.pl-2\\.5{padding-left:.625rem}.pl-3{padding-left:.75rem}.pl-3\\.5{padding-left:.875rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-2{padding-right:.5rem}.pr-2\\.5{padding-right:.625rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-\\[0\\.8rem\\]{font-size:.8rem}.text-base{font-size:1rem;line-height:1.5rem}.text-h4{font-size:20px;font-weight:600;letter-spacing:-.005em;line-height:28px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:var(--accent-foreground)}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.text-card-foreground{color:var(--card-foreground)}.text-current{color:currentColor}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-foreground{color:var(--foreground)}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-muted{color:var(--muted)}.text-muted-foreground{color:var(--muted-foreground)}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground{color:var(--sidebar-foreground)}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-zinc-500{--tw-text-opacity:1;color:rgb(113 113 122/var(--tw-text-opacity,1))}.text-zinc-950{--tw-text-opacity:1;color:rgb(9 9 11/var(--tw-text-opacity,1))}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow-\\[0_0_0_1px_var\\(--sidebar-border\\)\\]{--tw-shadow:0 0 0 1px var(--sidebar-border);--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color)}.shadow-\\[0_0_0_1px_var\\(--sidebar-border\\)\\],.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-none{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-0,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-ring{--tw-ring-color:var(--ring)}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-offset-2{--tw-ring-offset-width:2px}.ring-offset-background{--tw-ring-offset-color:var(--background-default)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\\[left\\2c right\\2c width\\]{transition-duration:.15s;transition-property:left,right,width;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\\[margin\\2c opa\\]{transition-duration:.15s;transition-property:margin,opa;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\\[width\\2c height\\2c padding\\]{transition-duration:.15s;transition-property:width,height,padding;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\\[width\\]{transition-duration:.15s;transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.animate-in{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-duration:.15s;animation-name:enter}.fade-in-0{--tw-enter-opacity:0}.fade-in-80{--tw-enter-opacity:0.8}.zoom-in-95{--tw-enter-scale:.95}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{animation-timing-function:linear}::-webkit-scrollbar-track{background:var(--scrollbar-track);border-radius:8px}::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb);border-radius:8px}.\\[--cell-size\\:2rem\\]{--cell-size:2rem}.\\[display\\:none\\]{display:none}body{pointer-events:auto}*{box-sizing:border-box;margin:0;padding:0}::-webkit-scrollbar{height:8px;width:8px}.btn:active{box-shadow:3px 2px 22px 1px rgba(0,0,0,.24);transform:scale(.98)}.pulse{animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}*,:after,:before{box-sizing:border-box}.file\\:border-0::file-selector-button{border-width:0}.file\\:bg-transparent::file-selector-button{background-color:transparent}.file\\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\\:font-medium::file-selector-button{font-weight:500}.file\\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\\:text-muted-foreground::-moz-placeholder{color:var(--muted-foreground)}.placeholder\\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:-inset-2:after{content:var(--tw-content);inset:-.5rem}.after\\:inset-y-0:after{bottom:0;content:var(--tw-content);top:0}.after\\:left-1\\/2:after{content:var(--tw-content);left:50%}.after\\:w-\\[2px\\]:after{content:var(--tw-content);width:2px}.focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.focus-within\\:ring-2:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\\:ring-ring:focus-within{--tw-ring-color:var(--ring)}.focus-within\\:ring-offset-2:focus-within{--tw-ring-offset-width:2px}.hover\\:flex:hover{display:flex}.hover\\:hidden:hover{display:none}.hover\\:bg-accent:hover{background-color:var(--accent)}.hover\\:bg-background:hover{background-color:var(--background-default)}.hover\\:bg-background-primary-hover:hover{background-color:var(--background-primary-hover)}.hover\\:bg-background-secondary:hover{background-color:var(--background-secondary)}.hover\\:bg-datatable-accent:hover{background-color:var(--datatable-accent)}.hover\\:bg-secondary-hover:hover{background-color:var(--secondary-hover)}.hover\\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\\:text-foreground:hover{color:var(--foreground)}.hover\\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-100:hover{opacity:1}.hover\\:shadow-\\[0_0_0_1px_var\\(--sidebar-accent\\)\\]:hover{--tw-shadow:0 0 0 1px var(--sidebar-accent);--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\\:after\\:bg-sidebar-border:hover:after{background-color:var(--sidebar-border);content:var(--tw-content)}.focus\\:bg-accent:focus{background-color:var(--accent)}.focus\\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\\:opacity-100:focus{opacity:1}.focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:ring-0:focus,.focus\\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\\:ring-ring:focus-visible{--tw-ring-color:var(--ring)}.focus-visible\\:ring-sidebar-ring:focus-visible{--tw-ring-color:var(--sidebar-ring)}.focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.focus-visible\\:ring-offset-background:focus-visible{--tw-ring-offset-color:var(--background-default)}.active\\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\\:pointer-events-none:disabled{pointer-events:none}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-50:disabled{opacity:.5}.group\\/menu-item:focus-within .group-focus-within\\/menu-item\\:opacity-100{opacity:1}.group:hover .group-hover\\:flex{display:flex}.group:hover .group-hover\\:hidden{display:none}.group:hover .group-hover\\:-translate-x-1{--tw-translate-x:-0.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\\:bg-datatable-accent{background-color:var(--datatable-accent)}.group:hover .group-hover\\:bg-sidebar-accent{background-color:var(--sidebar-accent)}.group:hover .group-hover\\:opacity-100,.group\\/menu-item:hover .group-hover\\/menu-item\\:opacity-100{opacity:1}.group.destructive .group-\\[\\.destructive\\]\\:text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.group.destructive .group-\\[\\.destructive\\]\\:hover\\:bg-destructive:hover{background-color:var(--destructive)}.group.destructive .group-\\[\\.destructive\\]\\:hover\\:text-destructive-foreground:hover{color:var(--destructive-foreground)}.group.destructive .group-\\[\\.destructive\\]\\:hover\\:text-red-50:hover{--tw-text-opacity:1;color:rgb(254 242 242/var(--tw-text-opacity,1))}.group.destructive .group-\\[\\.destructive\\]\\:focus\\:ring-destructive:focus{--tw-ring-color:var(--destructive)}.group.destructive .group-\\[\\.destructive\\]\\:focus\\:ring-red-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113/var(--tw-ring-opacity,1))}.group.destructive .group-\\[\\.destructive\\]\\:focus\\:ring-offset-red-600:focus{--tw-ring-offset-color:#dc2626}.peer\\/menu-button:hover~.peer-hover\\/menu-button\\:text-sidebar-accent-foreground{color:var(--sidebar-accent-foreground)}.peer:disabled~.peer-disabled\\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\\:opacity-70{opacity:.7}.has-\\[\\[data-variant\\=inset\\]\\]\\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar-background)}.group\\/menu-item:has([data-sidebar=menu-action]) .group-has-\\[\\[data-sidebar\\=menu-action\\]\\]\\/menu-item\\:pr-8{padding-right:2rem}.aria-disabled\\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\\:text-muted-foreground[aria-selected=true]{color:var(--muted-foreground)}.data-\\[disabled\\=true\\]\\:pointer-events-none[data-disabled=true],.data-\\[disabled\\]\\:pointer-events-none[data-disabled]{pointer-events:none}.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom],.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.data-\\[side\\=right\\]\\:translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.data-\\[side\\=right\\]\\:translate-x-1[data-side=right],.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.data-\\[state\\=checked\\]\\:translate-x-5[data-state=checked]{--tw-translate-x:1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[state\\=unchecked\\]\\:translate-x-0[data-state=unchecked],.data-\\[swipe\\=cancel\\]\\:translate-x-0[data-swipe=cancel]{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\][data-swipe=end]{--tw-translate-x:var(--radix-toast-swipe-end-x)}.data-\\[swipe\\=end\\]\\:translate-x-\\[var\\(--radix-toast-swipe-end-x\\)\\][data-swipe=end],.data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\][data-swipe=move]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\\[swipe\\=move\\]\\:translate-x-\\[var\\(--radix-toast-swipe-move-x\\)\\][data-swipe=move]{--tw-translate-x:var(--radix-toast-swipe-move-x)}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}.data-\\[state\\=closed\\]\\:animate-accordion-up[data-state=closed]{animation:accordion-up .2s ease-out}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height)}}.data-\\[state\\=open\\]\\:animate-accordion-down[data-state=open]{animation:accordion-down .2s ease-out}.data-\\[range-end\\=true\\]\\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\\[range-middle\\=true\\]\\:rounded-none[data-range-middle=true]{border-radius:0}.data-\\[range-start\\=true\\]\\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\\[selected\\=true\\]\\:rounded-none[data-selected=true]{border-radius:0}.data-\\[active\\=true\\]\\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\\[range-end\\=true\\]\\:bg-background-primary[data-range-end=true]{background-color:var(--background-primary)}.data-\\[range-middle\\=true\\]\\:bg-accent[data-range-middle=true]{background-color:var(--accent)}.data-\\[range-start\\=true\\]\\:bg-background-primary[data-range-start=true],.data-\\[selected-single\\=true\\]\\:bg-background-primary[data-selected-single=true]{background-color:var(--background-primary)}.data-\\[selected\\=\\'true\\'\\]\\:bg-accent[data-selected=true]{background-color:var(--accent)}.data-\\[state\\=active\\]\\:bg-background[data-state=active]{background-color:var(--background-default)}.data-\\[state\\=checked\\]\\:bg-background-primary[data-state=checked]{background-color:var(--background-primary)}.data-\\[state\\=open\\]\\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\\[state\\=open\\]\\:bg-background-secondary[data-state=open]{background-color:var(--background-secondary)}.data-\\[state\\=open\\]\\:bg-sidebar-accent[data-state=open]{background-color:var(--sidebar-accent)}.data-\\[state\\=selected\\]\\:bg-background-secondary[data-state=selected]{background-color:var(--background-secondary)}.data-\\[state\\=unchecked\\]\\:bg-accent[data-state=unchecked]{background-color:var(--accent)}.data-\\[active\\=true\\]\\:font-medium[data-active=true]{font-weight:500}.data-\\[active\\=true\\]\\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\\[placeholder\\]\\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\\[range-end\\=true\\]\\:text-primary-foreground[data-range-end=true]{color:var(--primary-foreground)}.data-\\[range-middle\\=true\\]\\:text-accent-foreground[data-range-middle=true]{color:var(--accent-foreground)}.data-\\[range-start\\=true\\]\\:text-primary-foreground[data-range-start=true],.data-\\[selected-single\\=true\\]\\:text-primary-foreground[data-selected-single=true]{color:var(--primary-foreground)}.data-\\[selected\\=true\\]\\:text-accent-foreground[data-selected=true]{color:var(--accent-foreground)}.data-\\[state\\=active\\]\\:text-foreground[data-state=active]{color:var(--foreground)}.data-\\[state\\=checked\\]\\:text-primary-foreground[data-state=checked]{color:var(--primary-foreground)}.data-\\[state\\=open\\]\\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\\[state\\=open\\]\\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\\[state\\=open\\]\\:text-sidebar-accent-foreground[data-state=open]{color:var(--sidebar-accent-foreground)}.data-\\[disabled\\=true\\]\\:opacity-50[data-disabled=true],.data-\\[disabled\\]\\:opacity-50[data-disabled]{opacity:.5}.data-\\[state\\=open\\]\\:opacity-100[data-state=open]{opacity:1}.data-\\[state\\=active\\]\\:shadow-sm[data-state=active]{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\\[swipe\\=move\\]\\:transition-none[data-swipe=move]{transition-property:none}.data-\\[state\\=closed\\]\\:duration-300[data-state=closed]{transition-duration:.3s}.data-\\[state\\=open\\]\\:duration-500[data-state=open]{transition-duration:.5s}.data-\\[state\\=open\\]\\:animate-in[data-state=open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-duration:.15s;animation-name:enter}.data-\\[state\\=closed\\]\\:animate-out[data-state=closed],.data-\\[swipe\\=end\\]\\:animate-out[data-swipe=end]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-duration:.15s;animation-name:exit}.data-\\[state\\=closed\\]\\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\\[state\\=closed\\]\\:fade-out-80[data-state=closed]{--tw-exit-opacity:0.8}.data-\\[state\\=open\\]\\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\\[state\\=closed\\]\\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\\[state\\=open\\]\\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\\[side\\=right\\]\\:slide-in-from-left-1[data-side=right]{--tw-enter-translate-x:-0.25rem}.data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.data-\\[state\\=closed\\]\\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\\[state\\=closed\\]\\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\\[state\\=closed\\]\\:slide-out-to-left-1\\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\\[state\\=closed\\]\\:slide-out-to-right-full[data-state=closed],.data-\\[state\\=closed\\]\\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\\[state\\=closed\\]\\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\\[state\\=closed\\]\\:slide-out-to-top-\\[48\\%\\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\\[state\\=open\\]\\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\\[state\\=open\\]\\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\\[state\\=open\\]\\:slide-in-from-left-1\\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\\[state\\=open\\]\\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\\[state\\=open\\]\\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}.data-\\[state\\=open\\]\\:slide-in-from-top-\\[48\\%\\][data-state=open]{--tw-enter-translate-y:-48%}.data-\\[state\\=open\\]\\:slide-in-from-top-full[data-state=open]{--tw-enter-translate-y:-100%}.data-\\[state\\=closed\\]\\:duration-300[data-state=closed]{animation-duration:.3s}.data-\\[state\\=open\\]\\:duration-500[data-state=open]{animation-duration:.5s}.data-\\[state\\=open\\]\\:hover\\:bg-sidebar-accent:hover[data-state=open]{background-color:var(--sidebar-accent)}.data-\\[state\\=open\\]\\:hover\\:text-sidebar-accent-foreground:hover[data-state=open]{color:var(--sidebar-accent-foreground)}.group\\/day[data-focused=true] .group-data-\\[focused\\=true\\]\\/day\\:relative{position:relative}.group[data-collapsible=offcanvas] .group-data-\\[collapsible\\=offcanvas\\]\\:left-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\]{left:calc(var(--sidebar-width)*-1)}.group[data-collapsible=offcanvas] .group-data-\\[collapsible\\=offcanvas\\]\\:right-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\]{right:calc(var(--sidebar-width)*-1)}.group[data-side=left] .group-data-\\[side\\=left\\]\\:-right-4{right:-1rem}.group[data-side=right] .group-data-\\[side\\=right\\]\\:left-0{left:0}.group\\/day[data-focused=true] .group-data-\\[focused\\=true\\]\\/day\\:z-10{z-index:10}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:-mt-8{margin-top:-2rem}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:hidden{display:none}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:\\!size-8{height:2rem!important;width:2rem!important}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:w-\\[--sidebar-width-icon\\]{width:var(--sidebar-width-icon)}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)_\\+_theme\\(spacing\\.4\\)\\)\\]{width:calc(var(--sidebar-width-icon) + 1rem)}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)_\\+_theme\\(spacing\\.4\\)_\\+2px\\)\\]{width:calc(var(--sidebar-width-icon) + 1rem + 2px)}.group[data-collapsible=offcanvas] .group-data-\\[collapsible\\=offcanvas\\]\\:w-0{width:0}.group[data-collapsible=offcanvas] .group-data-\\[collapsible\\=offcanvas\\]\\:translate-x-0{--tw-translate-x:0px}.group[data-collapsible=offcanvas] .group-data-\\[collapsible\\=offcanvas\\]\\:translate-x-0,.group[data-side=right] .group-data-\\[side\\=right\\]\\:rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-side=right] .group-data-\\[side\\=right\\]\\:rotate-180{--tw-rotate:180deg}.group\\/collapsible[data-state=open] .group-data-\\[state\\=open\\]\\/collapsible\\:rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:overflow-hidden{overflow:hidden}.group[data-variant=floating] .group-data-\\[variant\\=floating\\]\\:rounded-lg{border-radius:var(--radius)}.group[data-variant=floating] .group-data-\\[variant\\=floating\\]\\:border{border-width:1px}.group[data-side=left] .group-data-\\[side\\=left\\]\\:border-r{border-right-width:1px}.group[data-side=right] .group-data-\\[side\\=right\\]\\:border-l{border-left-width:1px}.group\\/day[data-focused=true] .group-data-\\[focused\\=true\\]\\/day\\:border-ring{border-color:var(--ring)}.group[data-variant=floating] .group-data-\\[variant\\=floating\\]\\:border-sidebar-border{border-color:var(--sidebar-border)}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:\\!p-0{padding:0!important}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:\\!p-2{padding:.5rem!important}.group[data-collapsible=icon] .group-data-\\[collapsible\\=icon\\]\\:opacity-0{opacity:0}.group[data-variant=floating] .group-data-\\[variant\\=floating\\]\\:shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.group\\/day[data-focused=true] .group-data-\\[focused\\=true\\]\\/day\\:ring-\\[3px\\]{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.group[data-collapsible=offcanvas] .group-data-\\[collapsible\\=offcanvas\\]\\:after\\:left-full:after{content:var(--tw-content);left:100%}.group[data-collapsible=offcanvas] .group-data-\\[collapsible\\=offcanvas\\]\\:hover\\:bg-sidebar:hover{background-color:var(--sidebar-background)}.peer\\/menu-button[data-size=default]~.peer-data-\\[size\\=default\\]\\/menu-button\\:top-1\\.5{top:.375rem}.peer\\/menu-button[data-size=lg]~.peer-data-\\[size\\=lg\\]\\/menu-button\\:top-2\\.5{top:.625rem}.peer\\/menu-button[data-size=sm]~.peer-data-\\[size\\=sm\\]\\/menu-button\\:top-1{top:.25rem}.peer[data-variant=inset]~.peer-data-\\[variant\\=inset\\]\\:min-h-\\[calc\\(100svh-theme\\(spacing\\.4\\)\\)\\]{min-height:calc(100svh - 1rem)}.peer\\/menu-button[data-active=true]~.peer-data-\\[active\\=true\\]\\/menu-button\\:text-sidebar-accent-foreground{color:var(--sidebar-accent-foreground)}.dark\\:border-destructive:is(.dark *){border-color:var(--destructive)}.dark\\:bg-datatable-accent:is(.dark *){background-color:var(--datatable-accent)}.dark\\:bg-popover:is(.dark *){background-color:var(--popover)}@media (min-width:640px){.sm\\:mt-0{margin-top:0}.sm\\:flex{display:flex}.sm\\:max-w-sm{max-width:24rem}.sm\\:flex-row{flex-direction:row}.sm\\:justify-end{justify-content:flex-end}.sm\\:gap-2\\.5{gap:.625rem}.sm\\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.sm\\:rounded-lg{border-radius:var(--radius)}.sm\\:text-left{text-align:left}.data-\\[state\\=open\\]\\:sm\\:slide-in-from-top-full[data-state=open]{--tw-enter-translate-y:-100%}}@media (min-width:768px){.md\\:flex-row{flex-direction:row}.md\\:text-sm{font-size:.875rem;line-height:1.25rem}.md\\:opacity-0{opacity:0}.md\\:\\[display\\:block\\]{display:block}.md\\:\\[display\\:flex\\]{display:flex}.after\\:md\\:hidden:after{content:var(--tw-content);display:none}.peer[data-variant=inset]~.md\\:peer-data-\\[variant\\=inset\\]\\:m-2{margin:.5rem}.peer[data-state=collapsed][data-variant=inset]~.md\\:peer-data-\\[state\\=collapsed\\]\\:peer-data-\\[variant\\=inset\\]\\:ml-2{margin-left:.5rem}.peer[data-variant=inset]~.md\\:peer-data-\\[variant\\=inset\\]\\:ml-0{margin-left:0}.peer[data-variant=inset]~.md\\:peer-data-\\[variant\\=inset\\]\\:rounded-xl{border-radius:.75rem}.peer[data-variant=inset]~.md\\:peer-data-\\[variant\\=inset\\]\\:shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}}.\\[\\&\\:first-child\\[data-selected\\=true\\]_button\\]\\:rounded-l-md:first-child[data-selected=true] button{border-bottom-left-radius:calc(var(--radius) - 2px);border-top-left-radius:calc(var(--radius) - 2px)}.\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pr-0:has([role=checkbox]){padding-right:0}.\\[\\&\\:last-child\\[data-selected\\=true\\]_button\\]\\:rounded-r-md:last-child[data-selected=true] button{border-bottom-right-radius:calc(var(--radius) - 2px);border-top-right-radius:calc(var(--radius) - 2px)}.\\[\\&\\>button\\]\\:hidden>button{display:none}.\\[\\&\\>span\\:last-child\\]\\:truncate>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.\\[\\&\\>span\\]\\:line-clamp-1>span{-webkit-box-orient:vertical;-webkit-line-clamp:1;display:-webkit-box;overflow:hidden}.\\[\\&\\>span\\]\\:text-xs>span{font-size:.75rem;line-height:1rem}.\\[\\&\\>span\\]\\:opacity-70>span{opacity:.7}.\\[\\&\\>svg\\+div\\]\\:translate-y-\\[-3px\\]>svg+div{--tw-translate-y:-3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\[\\&\\>svg\\]\\:absolute>svg{position:absolute}.\\[\\&\\>svg\\]\\:left-4>svg{left:1rem}.\\[\\&\\>svg\\]\\:top-4>svg{top:1rem}.\\[\\&\\>svg\\]\\:size-3\\.5>svg{height:.875rem;width:.875rem}.\\[\\&\\>svg\\]\\:size-4>svg{height:1rem;width:1rem}.\\[\\&\\>svg\\]\\:h-2\\.5>svg{height:.625rem}.\\[\\&\\>svg\\]\\:h-3>svg{height:.75rem}.\\[\\&\\>svg\\]\\:h-3\\.5>svg{height:.875rem}.\\[\\&\\>svg\\]\\:w-2\\.5>svg{width:.625rem}.\\[\\&\\>svg\\]\\:w-3>svg{width:.75rem}.\\[\\&\\>svg\\]\\:w-3\\.5>svg{width:.875rem}.\\[\\&\\>svg\\]\\:shrink-0>svg{flex-shrink:0}.\\[\\&\\>svg\\]\\:text-destructive>svg{color:var(--destructive)}.\\[\\&\\>svg\\]\\:text-foreground>svg{color:var(--foreground)}.\\[\\&\\>svg\\]\\:text-muted-foreground>svg{color:var(--muted-foreground)}.\\[\\&\\>svg\\]\\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\\[\\&\\>svg\\~\\*\\]\\:pl-7>svg~*{padding-left:1.75rem}.\\[\\&\\>tr\\]\\:last\\:border-b-0:last-child>tr{border-bottom-width:0}.\\[\\&\\[data-state\\=open\\]\\>svg\\]\\:rotate-180[data-state=open]>svg{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\\[\\&_\\.react-colorful\\]\\:w-auto .react-colorful{width:auto}.\\[\\&_\\.recharts-cartesian-axis-tick_text\\]\\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:var(--muted-foreground)}.\\[\\&_\\.recharts-curve\\.recharts-tooltip-cursor\\]\\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:var(--border)}.\\[\\&_\\.recharts-dot\\[stroke\\=\\'\\#fff\\'\\]\\]\\:stroke-transparent .recharts-dot[stroke=\"#fff\"]{stroke:transparent}.\\[\\&_\\.recharts-layer\\]\\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\\[\\&_\\.recharts-polar-grid_\\[stroke\\=\\'\\#ccc\\'\\]\\]\\:stroke-border .recharts-polar-grid [stroke=\"#ccc\"]{stroke:var(--border)}.\\[\\&_\\.recharts-radial-bar-background-sector\\]\\:fill-muted .recharts-radial-bar-background-sector,.\\[\\&_\\.recharts-rectangle\\.recharts-tooltip-cursor\\]\\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:var(--muted)}.\\[\\&_\\.recharts-reference-line_\\[stroke\\=\\'\\#ccc\\'\\]\\]\\:stroke-border .recharts-reference-line [stroke=\"#ccc\"]{stroke:var(--border)}.\\[\\&_\\.recharts-sector\\[stroke\\=\\'\\#fff\\'\\]\\]\\:stroke-transparent .recharts-sector[stroke=\"#fff\"]{stroke:transparent}.\\[\\&_\\.recharts-sector\\]\\:outline-none .recharts-sector,.\\[\\&_\\.recharts-surface\\]\\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:py-1\\.5 [cmdk-group-heading]{padding-bottom:.375rem;padding-top:.375rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:font-medium [cmdk-group-heading]{font-weight:500}.\\[\\&_\\[cmdk-group-heading\\]\\]\\:text-muted-foreground [cmdk-group-heading]{color:var(--muted-foreground)}.\\[\\&_\\[cmdk-group\\]\\:not\\(\\[hidden\\]\\)_\\~\\[cmdk-group\\]\\]\\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\\[\\&_\\[cmdk-group\\]\\]\\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\\[\\&_\\[cmdk-input-wrapper\\]_svg\\]\\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\\[\\&_\\[cmdk-input\\]\\]\\:h-12 [cmdk-input]{height:3rem}.\\[\\&_\\[cmdk-item\\]\\]\\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\\[\\&_\\[cmdk-item\\]\\]\\:py-3 [cmdk-item]{padding-bottom:.75rem;padding-top:.75rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:h-5 [cmdk-item] svg{height:1.25rem}.\\[\\&_\\[cmdk-item\\]_svg\\]\\:w-5 [cmdk-item] svg{width:1.25rem}.\\[\\&_p\\]\\:leading-relaxed p{line-height:1.625}.\\[\\&_svg\\]\\:pointer-events-none svg{pointer-events:none}.\\[\\&_svg\\]\\:invisible svg{visibility:hidden}.\\[\\&_svg\\]\\:size-3\\.5 svg{height:.875rem;width:.875rem}.\\[\\&_svg\\]\\:size-4 svg{height:1rem;width:1rem}.\\[\\&_svg\\]\\:size-5 svg{height:1.25rem;width:1.25rem}.\\[\\&_svg\\]\\:shrink-0 svg{flex-shrink:0}.\\[\\&_tr\\:last-child\\]\\:border-0 tr:last-child{border-width:0}.\\[\\&_tr\\]\\:border-b tr{border-bottom-width:1px}[data-side=left][data-collapsible=offcanvas] .\\[\\[data-side\\=left\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-right-2{right:-.5rem}[data-side=left][data-state=collapsed] .\\[\\[data-side\\=left\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-e-resize{cursor:e-resize}[data-side=left] .\\[\\[data-side\\=left\\]_\\&\\]\\:cursor-w-resize{cursor:w-resize}[data-side=right][data-collapsible=offcanvas] .\\[\\[data-side\\=right\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-left-2{left:-.5rem}[data-side=right][data-state=collapsed] .\\[\\[data-side\\=right\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-w-resize{cursor:w-resize}[data-side=right] .\\[\\[data-side\\=right\\]_\\&\\]\\:cursor-e-resize{cursor:e-resize}[data-slot=card-content] .\\[\\[data-slot\\=card-content\\]_\\&\\]\\:bg-transparent,[data-slot=popover-content] .\\[\\[data-slot\\=popover-content\\]_\\&\\]\\:bg-transparent{background-color:transparent}";
3568
3552
  styleInject(css_248z,{"insertAt":"top"});
3569
3553
 
3570
3554
  export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, AlertTitle, Avatar, AvatarFallback, AvatarImage, Badge, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DEFAULT_THEME_DATA, DataTable, DataTableExport, DataTableFooter, DataTableHeader, DataTableRows, DatePickerWithRange as DateRangePicker, 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, Form, FormCombobox, FormControl, FormDataRange, FormDescription, FormField, FormInput, FormInputCheckbox, FormInputColor, FormInputCpfCnpj, FormInputCurrency, FormInputDate, FormInputDecimal, FormInputFile, FormInputGhost, FormInputMask, FormInputPassWord, FormInputPercent, FormInputPhone, FormInputSwitch, FormInputText, FormItem, FormLabel, FormMessage, FormRadioGroup, FormSelect, FormTextarea, Header, HoverCard, HoverCardContent, HoverCardTrigger, Input, Label, LabelWithTitle, ModuleSwitcher, MultiSelect, NavFooter, NavMain, NavSubmenuCollapsible, NavSubmenuDropdown, NavUser, NotFound, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, Popover, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarButton, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarItem, SidebarItemTwoLines, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarSubmenuType, SidebarTrigger, Skeleton, Slider, StepNewForm, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeProvider, Toast, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UseCalendar, aYearAgo, addDaysToToday, badgeVariants, buttonVariants, cn, convertBytesToMB, convertDaysToMonth, convertGbToMb, convertInternetToDisplay, convertMbToGb, convertMonthToDays, convertSecondsToMinutes, formHelpText, formLabel, formLabelAndSubLabel, formMessage, formatCEP, formatCpfCnpj, formatCurrency, formatDate, formatDateCalendar, formatDateTime, formatDecimal, formatMsisdn, formatNumber, formatPercent, formatPhone, getFirstDayOf90DaysAgo, getFirstDayOfCurrentMonth, getTailwindColorShades, invertDate, isInvalidCurrencyValue, isUUIDv4, maskCpfCnpj, maskPhone, modifyCpfCnpj, modifyPhone, removeMaskNumber, replaceThemeTailwindColors, roundNumber, stringDateToDate, stringToDate, stringToNumber, toast, useFormField, useSidebar, useTheme, useToast };