eai-frontend-components 2.0.24 → 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.js CHANGED
@@ -38,11 +38,11 @@ var SwitchPrimitives = require('@radix-ui/react-switch');
38
38
  var TabsPrimitive = require('@radix-ui/react-tabs');
39
39
  var ToastPrimitives = require('@radix-ui/react-toast');
40
40
  var reactColorful = require('react-colorful');
41
+ var reactRouterDom = require('react-router-dom');
42
+ var LoadingBar = require('react-top-loading-bar');
41
43
  var reactTable = require('@tanstack/react-table');
42
44
  var zod$1 = require('@hookform/resolvers/zod');
43
45
  var zod = require('zod');
44
- var reactRouterDom = require('react-router-dom');
45
- var LoadingBar = require('react-top-loading-bar');
46
46
 
47
47
  function _interopNamespaceDefault(e) {
48
48
  var n = Object.create(null);
@@ -146,30 +146,29 @@ Button.displayName = 'Button';
146
146
  const AlertDialog = AlertDialogPrimitive__namespace.Root;
147
147
  const AlertDialogTrigger = AlertDialogPrimitive__namespace.Trigger;
148
148
  const AlertDialogPortal = AlertDialogPrimitive__namespace.Portal;
149
- const AlertDialogOverlay = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(AlertDialogPrimitive__namespace.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 })));
149
+ const AlertDialogOverlay = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(AlertDialogPrimitive__namespace.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 })));
150
150
  AlertDialogOverlay.displayName = AlertDialogPrimitive__namespace.Overlay.displayName;
151
- const AlertDialogContent = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsxs(AlertDialogPortal, { children: [jsxRuntime.jsx(AlertDialogOverlay, {}), jsxRuntime.jsx(AlertDialogPrimitive__namespace.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 })] })));
151
+ const AlertDialogContent = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsxs(AlertDialogPortal, { children: [jsxRuntime.jsx(AlertDialogOverlay, {}), jsxRuntime.jsx(AlertDialogPrimitive__namespace.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 })] })));
152
152
  AlertDialogContent.displayName = AlertDialogPrimitive__namespace.Content.displayName;
153
- const AlertDialogHeader = ({ className, ...props }) => (jsxRuntime.jsx("div", { className: cn("flex flex-col space-y-2 text-center sm:text-left", className), ...props }));
154
- AlertDialogHeader.displayName = "AlertDialogHeader";
155
- const AlertDialogFooter = ({ className, ...props }) => (jsxRuntime.jsx("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props }));
156
- AlertDialogFooter.displayName = "AlertDialogFooter";
157
- const AlertDialogTitle = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(AlertDialogPrimitive__namespace.Title, { ref: ref, className: cn("text-lg font-semibold", className), ...props })));
153
+ const AlertDialogHeader = ({ className, ...props }) => (jsxRuntime.jsx("div", { className: cn('flex flex-col space-y-2 text-center sm:text-left', className), ...props }));
154
+ AlertDialogHeader.displayName = 'AlertDialogHeader';
155
+ const AlertDialogFooter = ({ className, ...props }) => (jsxRuntime.jsx("div", { className: cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className), ...props }));
156
+ AlertDialogFooter.displayName = 'AlertDialogFooter';
157
+ const AlertDialogTitle = React__namespace.forwardRef(({ className, ...props }, ref) => jsxRuntime.jsx(AlertDialogPrimitive__namespace.Title, { ref: ref, className: cn('text-lg font-semibold', className), ...props }));
158
158
  AlertDialogTitle.displayName = AlertDialogPrimitive__namespace.Title.displayName;
159
- const AlertDialogDescription = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(AlertDialogPrimitive__namespace.Description, { ref: ref, className: cn("text-sm text-muted-foreground", className), ...props })));
160
- AlertDialogDescription.displayName =
161
- AlertDialogPrimitive__namespace.Description.displayName;
162
- const AlertDialogAction = React__namespace.forwardRef(({ className, variant = "default", ...props }, ref) => (jsxRuntime.jsx(AlertDialogPrimitive__namespace.Action, { ref: ref, className: cn(buttonVariants({ variant }), className), ...props })));
159
+ const AlertDialogDescription = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(AlertDialogPrimitive__namespace.Description, { ref: ref, className: cn('text-sm text-muted-foreground', className), ...props })));
160
+ AlertDialogDescription.displayName = AlertDialogPrimitive__namespace.Description.displayName;
161
+ const AlertDialogAction = React__namespace.forwardRef(({ className, variant = 'default', ...props }, ref) => (jsxRuntime.jsx(AlertDialogPrimitive__namespace.Action, { ref: ref, className: cn(buttonVariants({ variant }), className), ...props })));
163
162
  AlertDialogAction.displayName = AlertDialogPrimitive__namespace.Action.displayName;
164
- const AlertDialogCancel = React__namespace.forwardRef(({ className, variant = "outline", ...props }, ref) => (jsxRuntime.jsx(AlertDialogPrimitive__namespace.Cancel, { ref: ref, className: cn(buttonVariants({ variant }), // Usa a variante passada como prop
165
- "mt-2 sm:mt-0", className), ...props })));
163
+ const AlertDialogCancel = React__namespace.forwardRef(({ className, variant = 'outline', ...props }, ref) => (jsxRuntime.jsx(AlertDialogPrimitive__namespace.Cancel, { ref: ref, className: cn(buttonVariants({ variant }), // Usa a variante passada como prop
164
+ 'mt-2 sm:mt-0', className), ...props })));
166
165
  AlertDialogCancel.displayName = AlertDialogPrimitive__namespace.Cancel.displayName;
167
166
 
168
- const Avatar = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(AvatarPrimitive__namespace.Root, { ref: ref, className: cn("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full", className), ...props })));
167
+ const Avatar = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(AvatarPrimitive__namespace.Root, { ref: ref, className: cn('relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full', className), ...props })));
169
168
  Avatar.displayName = AvatarPrimitive__namespace.Root.displayName;
170
- const AvatarImage = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(AvatarPrimitive__namespace.Image, { ref: ref, className: cn("aspect-square h-full w-full", className), ...props })));
169
+ const AvatarImage = React__namespace.forwardRef(({ className, ...props }, ref) => jsxRuntime.jsx(AvatarPrimitive__namespace.Image, { ref: ref, className: cn('aspect-square h-full w-full', className), ...props }));
171
170
  AvatarImage.displayName = AvatarPrimitive__namespace.Image.displayName;
172
- const AvatarFallback = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(AvatarPrimitive__namespace.Fallback, { ref: ref, className: cn("flex h-full w-full items-center justify-center rounded-full bg-muted", className), ...props })));
171
+ const AvatarFallback = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(AvatarPrimitive__namespace.Fallback, { ref: ref, className: cn('flex h-full w-full items-center justify-center rounded-full bg-muted', className), ...props })));
173
172
  AvatarFallback.displayName = AvatarPrimitive__namespace.Fallback.displayName;
174
173
 
175
174
  const badgeVariants = classVarianceAuthority.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', {
@@ -195,23 +194,23 @@ function Badge({ className, variant, ...props }) {
195
194
  return jsxRuntime.jsx("div", { className: cn(badgeVariants({ variant }), className), ...props });
196
195
  }
197
196
 
198
- const Breadcrumb = React__namespace.forwardRef(({ ...props }, ref) => jsxRuntime.jsx("nav", { ref: ref, "aria-label": "breadcrumb", ...props }));
199
- Breadcrumb.displayName = "Breadcrumb";
200
- const BreadcrumbList = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.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 })));
201
- BreadcrumbList.displayName = "BreadcrumbList";
202
- const BreadcrumbItem = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx("li", { ref: ref, className: cn("inline-flex items-center gap-1.5", className), ...props })));
203
- BreadcrumbItem.displayName = "BreadcrumbItem";
197
+ const Breadcrumb = React__namespace.forwardRef(({ ...props }, ref) => jsxRuntime.jsx("nav", { ref: ref, "aria-label": 'breadcrumb', ...props }));
198
+ Breadcrumb.displayName = 'Breadcrumb';
199
+ const BreadcrumbList = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.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 })));
200
+ BreadcrumbList.displayName = 'BreadcrumbList';
201
+ const BreadcrumbItem = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx("li", { ref: ref, className: cn('inline-flex items-center gap-1.5', className), ...props })));
202
+ BreadcrumbItem.displayName = 'BreadcrumbItem';
204
203
  const BreadcrumbLink = React__namespace.forwardRef(({ asChild, className, ...props }, ref) => {
205
- const Comp = asChild ? reactSlot.Slot : "a";
206
- return (jsxRuntime.jsx(Comp, { ref: ref, className: cn("transition-colors hover:text-foreground", className), ...props }));
204
+ const Comp = asChild ? reactSlot.Slot : 'a';
205
+ return jsxRuntime.jsx(Comp, { ref: ref, className: cn('transition-colors hover:text-foreground', className), ...props });
207
206
  });
208
- BreadcrumbLink.displayName = "BreadcrumbLink";
209
- const BreadcrumbPage = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx("span", { ref: ref, role: "link", "aria-disabled": "true", "aria-current": "page", className: cn("font-normal text-foreground", className), ...props })));
210
- BreadcrumbPage.displayName = "BreadcrumbPage";
211
- const BreadcrumbSeparator = ({ children, className, ...props }) => (jsxRuntime.jsx("li", { role: "presentation", "aria-hidden": "true", className: cn("[&>svg]:w-3.5 [&>svg]:h-3.5", className), ...props, children: children ?? jsxRuntime.jsx(lucideReact.ChevronRight, {}) }));
212
- BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
213
- const BreadcrumbEllipsis = ({ className, ...props }) => (jsxRuntime.jsxs("span", { role: "presentation", "aria-hidden": "true", className: cn("flex h-9 w-9 items-center justify-center", className), ...props, children: [jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "h-4 w-4" }), jsxRuntime.jsx("span", { className: "sr-only", children: "More" })] }));
214
- BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
207
+ BreadcrumbLink.displayName = 'BreadcrumbLink';
208
+ const BreadcrumbPage = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx("span", { ref: ref, "aria-disabled": 'true', "aria-current": 'page', className: cn('font-normal text-foreground', className), ...props })));
209
+ BreadcrumbPage.displayName = 'BreadcrumbPage';
210
+ const BreadcrumbSeparator = ({ children, className, ...props }) => (jsxRuntime.jsx("li", { role: 'presentation', "aria-hidden": 'true', className: cn('[&>svg]:w-3.5 [&>svg]:h-3.5', className), ...props, children: children ?? jsxRuntime.jsx(lucideReact.ChevronRight, {}) }));
211
+ BreadcrumbSeparator.displayName = 'BreadcrumbSeparator';
212
+ const BreadcrumbEllipsis = ({ className, ...props }) => (jsxRuntime.jsxs("span", { role: 'presentation', "aria-hidden": 'true', className: cn('flex h-9 w-9 items-center justify-center', className), ...props, children: [jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: 'h-4 w-4' }), jsxRuntime.jsx("span", { className: 'sr-only', children: "More" })] }));
213
+ BreadcrumbEllipsis.displayName = 'BreadcrumbElipssis';
215
214
 
216
215
  function Calendar({ className, classNames, showOutsideDays = true, captionLayout = 'label', buttonVariant = 'ghost', formatters, components, ...props }) {
217
216
  const defaultClassNames = reactDayPicker.getDefaultClassNames();
@@ -294,14 +293,14 @@ const CarouselContext = React__namespace.createContext(null);
294
293
  function useCarousel() {
295
294
  const context = React__namespace.useContext(CarouselContext);
296
295
  if (!context) {
297
- throw new Error("useCarousel must be used within a <Carousel />");
296
+ throw new Error('useCarousel must be used within a <Carousel />');
298
297
  }
299
298
  return context;
300
299
  }
301
- const Carousel = React__namespace.forwardRef(({ orientation = "horizontal", opts, setApi, plugins, className, children, ...props }, ref) => {
300
+ const Carousel = React__namespace.forwardRef(({ orientation = 'horizontal', opts, setApi, plugins, className, children, ...props }, ref) => {
302
301
  const [carouselRef, api] = useEmblaCarousel({
303
302
  ...opts,
304
- axis: orientation === "horizontal" ? "x" : "y",
303
+ axis: orientation === 'horizontal' ? 'x' : 'y',
305
304
  }, plugins);
306
305
  const [canScrollPrev, setCanScrollPrev] = React__namespace.useState(false);
307
306
  const [canScrollNext, setCanScrollNext] = React__namespace.useState(false);
@@ -319,11 +318,11 @@ const Carousel = React__namespace.forwardRef(({ orientation = "horizontal", opts
319
318
  api?.scrollNext();
320
319
  }, [api]);
321
320
  const handleKeyDown = React__namespace.useCallback((event) => {
322
- if (event.key === "ArrowLeft") {
321
+ if (event.key === 'ArrowLeft') {
323
322
  event.preventDefault();
324
323
  scrollPrev();
325
324
  }
326
- else if (event.key === "ArrowRight") {
325
+ else if (event.key === 'ArrowRight') {
327
326
  event.preventDefault();
328
327
  scrollNext();
329
328
  }
@@ -339,48 +338,44 @@ const Carousel = React__namespace.forwardRef(({ orientation = "horizontal", opts
339
338
  return;
340
339
  }
341
340
  onSelect(api);
342
- api.on("reInit", onSelect);
343
- api.on("select", onSelect);
341
+ api.on('reInit', onSelect);
342
+ api.on('select', onSelect);
344
343
  return () => {
345
- api?.off("select", onSelect);
344
+ api?.off('select', onSelect);
346
345
  };
347
346
  }, [api, onSelect]);
348
347
  return (jsxRuntime.jsx(CarouselContext.Provider, { value: {
349
348
  carouselRef,
350
349
  api: api,
351
350
  opts,
352
- orientation: orientation || (opts?.axis === "y" ? "vertical" : "horizontal"),
351
+ orientation: orientation || (opts?.axis === 'y' ? 'vertical' : 'horizontal'),
353
352
  scrollPrev,
354
353
  scrollNext,
355
354
  canScrollPrev,
356
355
  canScrollNext,
357
- }, children: jsxRuntime.jsx("div", { ref: ref, onKeyDownCapture: handleKeyDown, className: cn("relative", className), role: "region", "aria-roledescription": "carousel", ...props, children: children }) }));
356
+ }, children: jsxRuntime.jsx("div", { ref: ref, onKeyDownCapture: handleKeyDown, className: cn('relative', className), ...props, children: children }) }));
358
357
  });
359
- Carousel.displayName = "Carousel";
358
+ Carousel.displayName = 'Carousel';
360
359
  const CarouselContent = React__namespace.forwardRef(({ className, ...props }, ref) => {
361
360
  const { carouselRef, orientation } = useCarousel();
362
- return (jsxRuntime.jsx("div", { ref: carouselRef, className: "overflow-hidden", children: jsxRuntime.jsx("div", { ref: ref, className: cn("flex", orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col", className), ...props }) }));
361
+ return (jsxRuntime.jsx("div", { ref: carouselRef, className: 'overflow-hidden', children: jsxRuntime.jsx("div", { ref: ref, className: cn('flex', orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col', className), ...props }) }));
363
362
  });
364
- CarouselContent.displayName = "CarouselContent";
363
+ CarouselContent.displayName = 'CarouselContent';
365
364
  const CarouselItem = React__namespace.forwardRef(({ className, ...props }, ref) => {
366
365
  const { orientation } = useCarousel();
367
- return (jsxRuntime.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 }));
366
+ return (jsxRuntime.jsx("div", { ref: ref, className: cn('min-w-0 shrink-0 grow-0 basis-full', orientation === 'horizontal' ? 'pl-4' : 'pt-4', className), ...props }));
368
367
  });
369
- CarouselItem.displayName = "CarouselItem";
370
- const CarouselPrevious = React__namespace.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
368
+ CarouselItem.displayName = 'CarouselItem';
369
+ const CarouselPrevious = React__namespace.forwardRef(({ className, variant = 'outline', size = 'icon', ...props }, ref) => {
371
370
  const { orientation, scrollPrev, canScrollPrev } = useCarousel();
372
- return (jsxRuntime.jsxs(Button, { ref: ref, variant: variant, size: size, className: cn("absolute h-8 w-8 rounded-full", orientation === "horizontal"
373
- ? "-left-12 top-1/2 -translate-y-1/2"
374
- : "-top-12 left-1/2 -translate-x-1/2 rotate-90", className), disabled: !canScrollPrev, onClick: scrollPrev, ...props, children: [jsxRuntime.jsx(lucideReact.ArrowLeft, { className: "h-4 w-4" }), jsxRuntime.jsx("span", { className: "sr-only", children: "Previous slide" })] }));
371
+ return (jsxRuntime.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: [jsxRuntime.jsx(lucideReact.ArrowLeft, { className: 'h-4 w-4' }), jsxRuntime.jsx("span", { className: 'sr-only', children: "Previous slide" })] }));
375
372
  });
376
- CarouselPrevious.displayName = "CarouselPrevious";
377
- const CarouselNext = React__namespace.forwardRef(({ className, variant = "outline", size = "icon", ...props }, ref) => {
373
+ CarouselPrevious.displayName = 'CarouselPrevious';
374
+ const CarouselNext = React__namespace.forwardRef(({ className, variant = 'outline', size = 'icon', ...props }, ref) => {
378
375
  const { orientation, scrollNext, canScrollNext } = useCarousel();
379
- return (jsxRuntime.jsxs(Button, { ref: ref, variant: variant, size: size, className: cn("absolute h-8 w-8 rounded-full", orientation === "horizontal"
380
- ? "-right-12 top-1/2 -translate-y-1/2"
381
- : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90", className), disabled: !canScrollNext, onClick: scrollNext, ...props, children: [jsxRuntime.jsx(lucideReact.ArrowRight, { className: "h-4 w-4" }), jsxRuntime.jsx("span", { className: "sr-only", children: "Next slide" })] }));
376
+ return (jsxRuntime.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: [jsxRuntime.jsx(lucideReact.ArrowRight, { className: 'h-4 w-4' }), jsxRuntime.jsx("span", { className: 'sr-only', children: "Next slide" })] }));
382
377
  });
383
- CarouselNext.displayName = "CarouselNext";
378
+ CarouselNext.displayName = 'CarouselNext';
384
379
 
385
380
  const THEMES = { light: '', dark: '.dark' };
386
381
  const ChartContext = React__namespace.createContext(null);
@@ -513,27 +508,27 @@ DialogTitle.displayName = DialogPrimitive__namespace.Title.displayName;
513
508
  const DialogDescription = React__namespace.forwardRef(({ className, ...props }, ref) => jsxRuntime.jsx(DialogPrimitive__namespace.Description, { ref: ref, className: cn('text-sm text-muted-foreground', className), ...props }));
514
509
  DialogDescription.displayName = DialogPrimitive__namespace.Description.displayName;
515
510
 
516
- const Command = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(cmdk.Command, { ref: ref, className: cn("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground", className), ...props })));
511
+ const Command = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(cmdk.Command, { ref: ref, className: cn('flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground', className), ...props })));
517
512
  Command.displayName = cmdk.Command.displayName;
518
513
  const CommandDialog = ({ children, ...props }) => {
519
- return (jsxRuntime.jsx(Dialog, { ...props, children: jsxRuntime.jsx(DialogContent, { className: "overflow-hidden p-0 shadow-lg", children: jsxRuntime.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 }) }) }));
514
+ return (jsxRuntime.jsx(Dialog, { ...props, children: jsxRuntime.jsx(DialogContent, { className: 'overflow-hidden p-0 shadow-lg', children: jsxRuntime.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 }) }) }));
520
515
  };
521
- const CommandInput = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsxs("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [jsxRuntime.jsx(lucideReact.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }), jsxRuntime.jsx(cmdk.Command.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 })] })));
516
+ const CommandInput = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsxs("div", { className: 'flex items-center border-b px-3', "cmdk-input-wrapper": '', children: [jsxRuntime.jsx(lucideReact.Search, { className: 'mr-2 h-4 w-4 shrink-0 opacity-50' }), jsxRuntime.jsx(cmdk.Command.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 })] })));
522
517
  CommandInput.displayName = cmdk.Command.Input.displayName;
523
- const CommandList = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(cmdk.Command.List, { ref: ref, className: cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className), ...props })));
518
+ const CommandList = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(cmdk.Command.List, { ref: ref, className: cn('max-h-[300px] overflow-y-auto overflow-x-hidden', className), ...props })));
524
519
  CommandList.displayName = cmdk.Command.List.displayName;
525
- const CommandEmpty = React__namespace.forwardRef((props, ref) => (jsxRuntime.jsx(cmdk.Command.Empty, { ref: ref, className: "py-6 text-center text-sm", ...props })));
520
+ const CommandEmpty = React__namespace.forwardRef((props, ref) => jsxRuntime.jsx(cmdk.Command.Empty, { ref: ref, className: 'py-6 text-center text-sm', ...props }));
526
521
  CommandEmpty.displayName = cmdk.Command.Empty.displayName;
527
- const CommandGroup = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(cmdk.Command.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 })));
522
+ const CommandGroup = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(cmdk.Command.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 })));
528
523
  CommandGroup.displayName = cmdk.Command.Group.displayName;
529
- const CommandSeparator = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(cmdk.Command.Separator, { ref: ref, className: cn("-mx-1 h-px bg-border", className), ...props })));
524
+ const CommandSeparator = React__namespace.forwardRef(({ className, ...props }, ref) => jsxRuntime.jsx(cmdk.Command.Separator, { ref: ref, className: cn('-mx-1 h-px bg-border', className), ...props }));
530
525
  CommandSeparator.displayName = cmdk.Command.Separator.displayName;
531
526
  const CommandItem = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(cmdk.Command.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 })));
532
527
  CommandItem.displayName = cmdk.Command.Item.displayName;
533
528
  const CommandShortcut = ({ className, ...props }) => {
534
- return (jsxRuntime.jsx("span", { className: cn("ml-auto text-xs tracking-widest text-muted-foreground", className), ...props }));
529
+ return jsxRuntime.jsx("span", { className: cn('ml-auto text-xs tracking-widest text-muted-foreground', className), ...props });
535
530
  };
536
- CommandShortcut.displayName = "CommandShortcut";
531
+ CommandShortcut.displayName = 'CommandShortcut';
537
532
 
538
533
  const ContextMenu = ContextMenuPrimitive__namespace.Root;
539
534
  const ContextMenuTrigger = ContextMenuPrimitive__namespace.Trigger;
@@ -541,27 +536,26 @@ const ContextMenuGroup = ContextMenuPrimitive__namespace.Group;
541
536
  const ContextMenuPortal = ContextMenuPrimitive__namespace.Portal;
542
537
  const ContextMenuSub = ContextMenuPrimitive__namespace.Sub;
543
538
  const ContextMenuRadioGroup = ContextMenuPrimitive__namespace.RadioGroup;
544
- const ContextMenuSubTrigger = React__namespace.forwardRef(({ className, inset, children, ...props }, ref) => (jsxRuntime.jsxs(ContextMenuPrimitive__namespace.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, jsxRuntime.jsx(lucideReact.ChevronRight, { className: "ml-auto h-4 w-4" })] })));
539
+ const ContextMenuSubTrigger = React__namespace.forwardRef(({ className, inset, children, ...props }, ref) => (jsxRuntime.jsxs(ContextMenuPrimitive__namespace.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, jsxRuntime.jsx(lucideReact.ChevronRight, { className: 'ml-auto h-4 w-4' })] })));
545
540
  ContextMenuSubTrigger.displayName = ContextMenuPrimitive__namespace.SubTrigger.displayName;
546
- const ContextMenuSubContent = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(ContextMenuPrimitive__namespace.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 })));
541
+ const ContextMenuSubContent = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(ContextMenuPrimitive__namespace.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 })));
547
542
  ContextMenuSubContent.displayName = ContextMenuPrimitive__namespace.SubContent.displayName;
548
- const ContextMenuContent = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(ContextMenuPrimitive__namespace.Portal, { children: jsxRuntime.jsx(ContextMenuPrimitive__namespace.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 }) })));
543
+ const ContextMenuContent = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(ContextMenuPrimitive__namespace.Portal, { children: jsxRuntime.jsx(ContextMenuPrimitive__namespace.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 }) })));
549
544
  ContextMenuContent.displayName = ContextMenuPrimitive__namespace.Content.displayName;
550
- const ContextMenuItem = React__namespace.forwardRef(({ className, inset, ...props }, ref) => (jsxRuntime.jsx(ContextMenuPrimitive__namespace.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 })));
545
+ const ContextMenuItem = React__namespace.forwardRef(({ className, inset, ...props }, ref) => (jsxRuntime.jsx(ContextMenuPrimitive__namespace.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 })));
551
546
  ContextMenuItem.displayName = ContextMenuPrimitive__namespace.Item.displayName;
552
- const ContextMenuCheckboxItem = React__namespace.forwardRef(({ className, children, checked, ...props }, ref) => (jsxRuntime.jsxs(ContextMenuPrimitive__namespace.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: [jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: jsxRuntime.jsx(ContextMenuPrimitive__namespace.ItemIndicator, { children: jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" }) }) }), children] })));
553
- ContextMenuCheckboxItem.displayName =
554
- ContextMenuPrimitive__namespace.CheckboxItem.displayName;
555
- const ContextMenuRadioItem = React__namespace.forwardRef(({ className, children, ...props }, ref) => (jsxRuntime.jsxs(ContextMenuPrimitive__namespace.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: [jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: jsxRuntime.jsx(ContextMenuPrimitive__namespace.ItemIndicator, { children: jsxRuntime.jsx(lucideReact.Circle, { className: "h-2 w-2 fill-current" }) }) }), children] })));
547
+ const ContextMenuCheckboxItem = React__namespace.forwardRef(({ className, children, checked, ...props }, ref) => (jsxRuntime.jsxs(ContextMenuPrimitive__namespace.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: [jsxRuntime.jsx("span", { className: 'absolute left-2 flex h-3.5 w-3.5 items-center justify-center', children: jsxRuntime.jsx(ContextMenuPrimitive__namespace.ItemIndicator, { children: jsxRuntime.jsx(lucideReact.Check, { className: 'h-4 w-4' }) }) }), children] })));
548
+ ContextMenuCheckboxItem.displayName = ContextMenuPrimitive__namespace.CheckboxItem.displayName;
549
+ const ContextMenuRadioItem = React__namespace.forwardRef(({ className, children, ...props }, ref) => (jsxRuntime.jsxs(ContextMenuPrimitive__namespace.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: [jsxRuntime.jsx("span", { className: 'absolute left-2 flex h-3.5 w-3.5 items-center justify-center', children: jsxRuntime.jsx(ContextMenuPrimitive__namespace.ItemIndicator, { children: jsxRuntime.jsx(lucideReact.Circle, { className: 'h-2 w-2 fill-current' }) }) }), children] })));
556
550
  ContextMenuRadioItem.displayName = ContextMenuPrimitive__namespace.RadioItem.displayName;
557
- const ContextMenuLabel = React__namespace.forwardRef(({ className, inset, ...props }, ref) => (jsxRuntime.jsx(ContextMenuPrimitive__namespace.Label, { ref: ref, className: cn("px-2 py-1.5 text-sm font-semibold text-foreground", inset && "pl-8", className), ...props })));
551
+ const ContextMenuLabel = React__namespace.forwardRef(({ className, inset, ...props }, ref) => (jsxRuntime.jsx(ContextMenuPrimitive__namespace.Label, { ref: ref, className: cn('px-2 py-1.5 text-sm font-semibold text-foreground', inset && 'pl-8', className), ...props })));
558
552
  ContextMenuLabel.displayName = ContextMenuPrimitive__namespace.Label.displayName;
559
- const ContextMenuSeparator = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(ContextMenuPrimitive__namespace.Separator, { ref: ref, className: cn("-mx-1 my-1 h-px bg-border", className), ...props })));
553
+ const ContextMenuSeparator = React__namespace.forwardRef(({ className, ...props }, ref) => jsxRuntime.jsx(ContextMenuPrimitive__namespace.Separator, { ref: ref, className: cn('-mx-1 my-1 h-px bg-border', className), ...props }));
560
554
  ContextMenuSeparator.displayName = ContextMenuPrimitive__namespace.Separator.displayName;
561
555
  const ContextMenuShortcut = ({ className, ...props }) => {
562
- return (jsxRuntime.jsx("span", { className: cn("ml-auto text-xs tracking-widest text-muted-foreground", className), ...props }));
556
+ return jsxRuntime.jsx("span", { className: cn('ml-auto text-xs tracking-widest text-muted-foreground', className), ...props });
563
557
  };
564
- ContextMenuShortcut.displayName = "ContextMenuShortcut";
558
+ ContextMenuShortcut.displayName = 'ContextMenuShortcut';
565
559
 
566
560
  const Popover = PopoverPrimitive__namespace.Root;
567
561
  const PopoverTrigger = PopoverPrimitive__namespace.Trigger;
@@ -570,30 +564,30 @@ const PopoverContent = React__namespace.forwardRef(({ className, align = 'center
570
564
  }, 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 }) })));
571
565
  PopoverContent.displayName = PopoverPrimitive__namespace.Content.displayName;
572
566
 
573
- function DatePickerWithRange({ className, }) {
567
+ function DatePickerWithRange({ className }) {
574
568
  const [date, setDate] = React__namespace.useState({
575
569
  from: new Date(2022, 0, 20),
576
570
  to: dateFns.addDays(new Date(2022, 0, 20), 20),
577
571
  });
578
- return (jsxRuntime.jsx("div", { className: cn("grid gap-2", className), children: jsxRuntime.jsxs(Popover, { children: [jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: jsxRuntime.jsxs(Button, { id: "date", variant: "outline", className: cn("w-[300px] justify-start text-left font-normal", !date && "text-muted-foreground"), children: [jsxRuntime.jsx(lucideReact.CalendarIcon, {}), date?.from ? (date.to ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [dateFns.format(date.from, "LLL dd, y"), " -", " ", dateFns.format(date.to, "LLL dd, y")] })) : (dateFns.format(date.from, "LLL dd, y"))) : (jsxRuntime.jsx("span", { children: "Pick a date" }))] }) }), jsxRuntime.jsx(PopoverContent, { className: "w-auto p-0", align: "start", children: jsxRuntime.jsx(Calendar, { initialFocus: true, mode: "range", defaultMonth: date?.from, selected: date, onSelect: setDate, numberOfMonths: 2 }) })] }) }));
572
+ return (jsxRuntime.jsx("div", { className: cn('grid gap-2', className), children: jsxRuntime.jsxs(Popover, { children: [jsxRuntime.jsx(PopoverTrigger, { asChild: true, children: jsxRuntime.jsxs(Button, { id: 'date', variant: 'outline', className: cn('w-[300px] justify-start text-left font-normal', !date && 'text-muted-foreground'), children: [jsxRuntime.jsx(lucideReact.CalendarIcon, {}), date?.from ? (date.to ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [dateFns.format(date.from, 'LLL dd, y'), " - ", dateFns.format(date.to, 'LLL dd, y')] })) : (dateFns.format(date.from, 'LLL dd, y'))) : (jsxRuntime.jsx("span", { children: "Pick a date" }))] }) }), jsxRuntime.jsx(PopoverContent, { className: 'w-auto p-0', align: 'start', children: jsxRuntime.jsx(Calendar, { initialFocus: true, mode: 'range', defaultMonth: date?.from, selected: date, onSelect: setDate, numberOfMonths: 2 }) })] }) }));
579
573
  }
580
574
 
581
575
  const Drawer = ({ shouldScaleBackground = true, ...props }) => (jsxRuntime.jsx(vaul.Drawer.Root, { shouldScaleBackground: shouldScaleBackground, ...props }));
582
- Drawer.displayName = "Drawer";
576
+ Drawer.displayName = 'Drawer';
583
577
  const DrawerTrigger = vaul.Drawer.Trigger;
584
578
  const DrawerPortal = vaul.Drawer.Portal;
585
579
  const DrawerClose = vaul.Drawer.Close;
586
- const DrawerOverlay = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(vaul.Drawer.Overlay, { ref: ref, className: cn("fixed inset-0 z-50 bg-black/80", className), ...props })));
580
+ const DrawerOverlay = React__namespace.forwardRef(({ className, ...props }, ref) => jsxRuntime.jsx(vaul.Drawer.Overlay, { ref: ref, className: cn('fixed inset-0 z-50 bg-black/80', className), ...props }));
587
581
  DrawerOverlay.displayName = vaul.Drawer.Overlay.displayName;
588
- const DrawerContent = React__namespace.forwardRef(({ className, children, ...props }, ref) => (jsxRuntime.jsxs(DrawerPortal, { children: [jsxRuntime.jsx(DrawerOverlay, {}), jsxRuntime.jsxs(vaul.Drawer.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: [jsxRuntime.jsx("div", { className: "mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted" }), children] })] })));
589
- DrawerContent.displayName = "DrawerContent";
590
- const DrawerHeader = ({ className, ...props }) => (jsxRuntime.jsx("div", { className: cn("grid gap-1.5 p-4 text-center sm:text-left", className), ...props }));
591
- DrawerHeader.displayName = "DrawerHeader";
592
- const DrawerFooter = ({ className, ...props }) => (jsxRuntime.jsx("div", { className: cn("mt-auto flex flex-col gap-2 p-4", className), ...props }));
593
- DrawerFooter.displayName = "DrawerFooter";
594
- const DrawerTitle = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(vaul.Drawer.Title, { ref: ref, className: cn("text-lg font-semibold leading-none tracking-tight", className), ...props })));
582
+ const DrawerContent = React__namespace.forwardRef(({ className, children, ...props }, ref) => (jsxRuntime.jsxs(DrawerPortal, { children: [jsxRuntime.jsx(DrawerOverlay, {}), jsxRuntime.jsxs(vaul.Drawer.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: [jsxRuntime.jsx("div", { className: 'mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted' }), children] })] })));
583
+ DrawerContent.displayName = 'DrawerContent';
584
+ const DrawerHeader = ({ className, ...props }) => (jsxRuntime.jsx("div", { className: cn('grid gap-1.5 p-4 text-center sm:text-left', className), ...props }));
585
+ DrawerHeader.displayName = 'DrawerHeader';
586
+ const DrawerFooter = ({ className, ...props }) => (jsxRuntime.jsx("div", { className: cn('mt-auto flex flex-col gap-2 p-4', className), ...props }));
587
+ DrawerFooter.displayName = 'DrawerFooter';
588
+ const DrawerTitle = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(vaul.Drawer.Title, { ref: ref, className: cn('text-lg font-semibold leading-none tracking-tight', className), ...props })));
595
589
  DrawerTitle.displayName = vaul.Drawer.Title.displayName;
596
- const DrawerDescription = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx(vaul.Drawer.Description, { ref: ref, className: cn("text-sm text-muted-foreground", className), ...props })));
590
+ const DrawerDescription = React__namespace.forwardRef(({ className, ...props }, ref) => jsxRuntime.jsx(vaul.Drawer.Description, { ref: ref, className: cn('text-sm text-muted-foreground', className), ...props }));
597
591
  DrawerDescription.displayName = vaul.Drawer.Description.displayName;
598
592
 
599
593
  const DropdownMenu = DropdownMenuPrimitive__namespace.Root;
@@ -859,7 +853,7 @@ function getYear(date) {
859
853
  * formatDate(new Date()) // '13/10/2025'
860
854
  * ```
861
855
  */
862
- const formatDate = (date, separator = '/') => {
856
+ const formatDate = (date, _separator = '/') => {
863
857
  if (!date)
864
858
  return '';
865
859
  const d = new Date(date);
@@ -901,6 +895,22 @@ const stringToNumber = (value) => {
901
895
  .replace(',', '.');
902
896
  return Number.parseFloat(numericValue);
903
897
  };
898
+ var InternetAmountUnity;
899
+ (function (InternetAmountUnity) {
900
+ InternetAmountUnity[InternetAmountUnity["iauMegabyte"] = 0] = "iauMegabyte";
901
+ InternetAmountUnity[InternetAmountUnity["iauGigabyte"] = 1] = "iauGigabyte";
902
+ InternetAmountUnity[InternetAmountUnity["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
903
+ })(InternetAmountUnity || (InternetAmountUnity = {}));
904
+ const convertInternetToDisplay = (internet, unit) => {
905
+ if (internet === 0) {
906
+ return '';
907
+ }
908
+ const internetInMB = unit === InternetAmountUnity.iauGigabyte ? convertGbToMb(internet) : internet;
909
+ if (internetInMB > 1023) {
910
+ return `${convertMbToGb(roundNumber(internetInMB))} GB`;
911
+ }
912
+ return `${internetInMB} MB`;
913
+ };
904
914
  const convertMbToGb = (value) => {
905
915
  return value > 0 ? roundNumber(value / 1024) : 0;
906
916
  };
@@ -1784,7 +1794,7 @@ const MaskInputDecimal = React__namespace.forwardRef(({ className, value, onChan
1784
1794
  return (jsxRuntime.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 }));
1785
1795
  });
1786
1796
 
1787
- const Pagination = ({ className, ...props }) => (jsxRuntime.jsx("nav", { role: 'navigation', "aria-label": 'pagination', className: cn('mx-auto flex w-full justify-center', className), ...props }));
1797
+ const Pagination = ({ className, ...props }) => (jsxRuntime.jsx("nav", { "aria-label": 'pagination', className: cn('mx-auto flex w-full justify-center', className), ...props }));
1788
1798
  Pagination.displayName = 'Pagination';
1789
1799
  const PaginationContent = React__namespace.forwardRef(({ className, ...props }, ref) => (jsxRuntime.jsx("ul", { ref: ref, className: cn('flex flex-row items-center gap-1', className), ...props })));
1790
1800
  PaginationContent.displayName = 'PaginationContent';
@@ -1814,14 +1824,12 @@ const RadioGroupItem = React__namespace.forwardRef(({ className, ...props }, ref
1814
1824
  });
1815
1825
  RadioGroupItem.displayName = RadioGroupPrimitive__namespace.Item.displayName;
1816
1826
 
1817
- const ScrollArea = React__namespace.forwardRef(({ className, children, ...props }, ref) => (jsxRuntime.jsxs(ScrollAreaPrimitive__namespace.Root, { ref: ref, className: cn("relative overflow-hidden", className), ...props, children: [jsxRuntime.jsx(ScrollAreaPrimitive__namespace.Viewport, { className: "h-full w-full rounded-[inherit]", children: children }), jsxRuntime.jsx(ScrollBar, {}), jsxRuntime.jsx(ScrollAreaPrimitive__namespace.Corner, {})] })));
1827
+ const ScrollArea = React__namespace.forwardRef(({ className, children, ...props }, ref) => (jsxRuntime.jsxs(ScrollAreaPrimitive__namespace.Root, { ref: ref, className: cn('relative overflow-hidden', className), ...props, children: [jsxRuntime.jsx(ScrollAreaPrimitive__namespace.Viewport, { className: 'h-full w-full rounded-[inherit]', children: children }), jsxRuntime.jsx(ScrollBar, {}), jsxRuntime.jsx(ScrollAreaPrimitive__namespace.Corner, {})] })));
1818
1828
  ScrollArea.displayName = ScrollAreaPrimitive__namespace.Root.displayName;
1819
- const ScrollBar = React__namespace.forwardRef(({ className, orientation = "vertical", ...props }, ref) => (jsxRuntime.jsx(ScrollAreaPrimitive__namespace.ScrollAreaScrollbar, { ref: ref, orientation: orientation, className: cn("flex touch-none select-none transition-colors", orientation === "vertical" &&
1820
- "h-full w-2.5 border-l border-l-transparent p-[1px]", orientation === "horizontal" &&
1821
- "h-2.5 flex-col border-t border-t-transparent p-[1px]", className), ...props, children: jsxRuntime.jsx(ScrollAreaPrimitive__namespace.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" }) })));
1829
+ const ScrollBar = React__namespace.forwardRef(({ className, orientation = 'vertical', ...props }, ref) => (jsxRuntime.jsx(ScrollAreaPrimitive__namespace.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: jsxRuntime.jsx(ScrollAreaPrimitive__namespace.ScrollAreaThumb, { className: 'relative flex-1 rounded-full bg-border' }) })));
1822
1830
  ScrollBar.displayName = ScrollAreaPrimitive__namespace.ScrollAreaScrollbar.displayName;
1823
1831
 
1824
- const Separator = React__namespace.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => (jsxRuntime.jsx(SeparatorPrimitive__namespace.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 })));
1832
+ const Separator = React__namespace.forwardRef(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (jsxRuntime.jsx(SeparatorPrimitive__namespace.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 })));
1825
1833
  Separator.displayName = SeparatorPrimitive__namespace.Root.displayName;
1826
1834
 
1827
1835
  const Sheet = DialogPrimitive__namespace.Root;
@@ -1855,7 +1863,7 @@ const SheetDescription = React__namespace.forwardRef(({ className, ...props }, r
1855
1863
  SheetDescription.displayName = DialogPrimitive__namespace.Description.displayName;
1856
1864
 
1857
1865
  function Skeleton({ className, ...props }) {
1858
- return (jsxRuntime.jsx("div", { className: cn("animate-pulse rounded-md bg-muted", className), ...props }));
1866
+ return jsxRuntime.jsx("div", { className: cn('animate-pulse rounded-md bg-muted', className), ...props });
1859
1867
  }
1860
1868
 
1861
1869
  const TooltipProvider = TooltipPrimitive__namespace.Provider;
@@ -2157,7 +2165,6 @@ ToastTitle.displayName = ToastPrimitives__namespace.Title.displayName;
2157
2165
  const ToastDescription = React__namespace.forwardRef(({ className, ...props }, ref) => jsxRuntime.jsx(ToastPrimitives__namespace.Description, { ref: ref, className: cn('text-sm opacity-90', className), ...props }));
2158
2166
  ToastDescription.displayName = ToastPrimitives__namespace.Description.displayName;
2159
2167
 
2160
- // Inspired by react-hot-toast library
2161
2168
  const TOAST_LIMIT = 1;
2162
2169
  const TOAST_REMOVE_DELAY = 1000000;
2163
2170
  let count = 0;
@@ -2308,424 +2315,6 @@ function UseCalendar({ className, getDataFilter }) {
2308
2315
  return (jsxRuntime.jsx("div", { className: cn('grid gap-2', className), children: jsxRuntime.jsxs(PopoverPrimitive.Popover, { children: [jsxRuntime.jsx(PopoverPrimitive.PopoverTrigger, { asChild: true, children: jsxRuntime.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: [jsxRuntime.jsx(lucideReact.CalendarDays, { color: '#0F172A', size: 16, className: 'mr-4' }), date?.to ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [dateFns.format(date.from, 'dd/MM', { locale: ptBR }), " - ", dateFns.format(date.to, 'dd/MM', { locale: ptBR })] })) : (jsxRuntime.jsx("span", { children: "Filtrar por Per\u00EDodo" }))] }) }), jsxRuntime.jsxs(PopoverPrimitive.PopoverContent, { className: 'w-auto p-0 testeCalendar flex flex-col justify-center bg-white z-10 shadow-md text-black ', align: 'start', children: [jsxRuntime.jsx(Calendar, { mode: 'range', locale: ptBR, selected: date, onSelect: setDate, className: ' ' }), jsxRuntime.jsx(PopoverPrimitive.PopoverClose, { className: 'flex justify-center items-center p-4', children: jsxRuntime.jsx(Button, { className: 'w-[150px] bg-background-primary mt-8 px-4 py-2 text-white', onClick: submitDate, children: "Aplicar Filtro" }) })] })] }) }));
2309
2316
  }
2310
2317
 
2311
- // Retorna todas as cores do Tailwind CSS das variações 50 a 950
2312
- function getTailwindColorShades() {
2313
- // Paleta padrão do Tailwind v3.3.0
2314
- // Fonte: https://github.com/tailwindlabs/tailwindcss/blob/master/src/public/colors.js
2315
- return {
2316
- slate: {
2317
- 50: '#f8fafc',
2318
- 100: '#f1f5f9',
2319
- 200: '#e2e8f0',
2320
- 300: '#cbd5e1',
2321
- 400: '#94a3b8',
2322
- 500: '#64748b',
2323
- 600: '#475569',
2324
- 700: '#334155',
2325
- 800: '#1e293b',
2326
- 900: '#0f172a',
2327
- 950: '#020617',
2328
- },
2329
- gray: {
2330
- 50: '#f9fafb',
2331
- 100: '#f3f4f6',
2332
- 200: '#e5e7eb',
2333
- 300: '#d1d5db',
2334
- 400: '#9ca3af',
2335
- 500: '#6b7280',
2336
- 600: '#4b5563',
2337
- 700: '#374151',
2338
- 800: '#1f2937',
2339
- 900: '#111827',
2340
- 950: '#030712',
2341
- },
2342
- zinc: {
2343
- 50: '#fafafa',
2344
- 100: '#f4f4f5',
2345
- 200: '#e4e4e7',
2346
- 300: '#d4d4d8',
2347
- 400: '#a1a1aa',
2348
- 500: '#71717a',
2349
- 600: '#52525b',
2350
- 700: '#3f3f46',
2351
- 800: '#27272a',
2352
- 900: '#18181b',
2353
- 950: '#09090b',
2354
- },
2355
- neutral: {
2356
- 50: '#fafafa',
2357
- 100: '#f5f5f5',
2358
- 200: '#e5e5e5',
2359
- 300: '#d4d4d4',
2360
- 400: '#a3a3a3',
2361
- 500: '#737373',
2362
- 600: '#525252',
2363
- 700: '#404040',
2364
- 800: '#262626',
2365
- 900: '#171717',
2366
- 950: '#0a0a0a',
2367
- },
2368
- stone: {
2369
- 50: '#fafaf9',
2370
- 100: '#f5f5f4',
2371
- 200: '#e7e5e4',
2372
- 300: '#d6d3d1',
2373
- 400: '#a8a29e',
2374
- 500: '#78716c',
2375
- 600: '#57534e',
2376
- 700: '#44403c',
2377
- 800: '#292524',
2378
- 900: '#1c1917',
2379
- 950: '#0c0a09',
2380
- },
2381
- red: {
2382
- 50: '#fef2f2',
2383
- 100: '#fee2e2',
2384
- 200: '#fecaca',
2385
- 300: '#fca5a5',
2386
- 400: '#f87171',
2387
- 500: '#ef4444',
2388
- 600: '#dc2626',
2389
- 700: '#b91c1c',
2390
- 800: '#991b1b',
2391
- 900: '#7f1d1d',
2392
- 950: '#450a0a',
2393
- },
2394
- orange: {
2395
- 50: '#fff7ed',
2396
- 100: '#ffedd5',
2397
- 200: '#fed7aa',
2398
- 300: '#fdba74',
2399
- 400: '#fb923c',
2400
- 500: '#f97316',
2401
- 600: '#ea580c',
2402
- 700: '#c2410c',
2403
- 800: '#9a3412',
2404
- 900: '#7c2d12',
2405
- 950: '#431407',
2406
- },
2407
- amber: {
2408
- 50: '#fffbeb',
2409
- 100: '#fef3c7',
2410
- 200: '#fde68a',
2411
- 300: '#fcd34d',
2412
- 400: '#fbbf24',
2413
- 500: '#f59e42',
2414
- 600: '#d97706',
2415
- 700: '#b45309',
2416
- 800: '#92400e',
2417
- 900: '#78350f',
2418
- 950: '#451a03',
2419
- },
2420
- yellow: {
2421
- 50: '#fefce8',
2422
- 100: '#fef9c3',
2423
- 200: '#fef08a',
2424
- 300: '#fde047',
2425
- 400: '#facc15',
2426
- 500: '#eab308',
2427
- 600: '#ca8a04',
2428
- 700: '#a16207',
2429
- 800: '#854d0e',
2430
- 900: '#713f12',
2431
- 950: '#422006',
2432
- },
2433
- lime: {
2434
- 50: '#f7fee7',
2435
- 100: '#ecfccb',
2436
- 200: '#d9f99d',
2437
- 300: '#bef264',
2438
- 400: '#a3e635',
2439
- 500: '#84cc16',
2440
- 600: '#65a30d',
2441
- 700: '#4d7c0f',
2442
- 800: '#3f6212',
2443
- 900: '#365314',
2444
- 950: '#1a2e05',
2445
- },
2446
- green: {
2447
- 50: '#f0fdf4',
2448
- 100: '#dcfce7',
2449
- 200: '#bbf7d0',
2450
- 300: '#86efac',
2451
- 400: '#4ade80',
2452
- 500: '#22c55e',
2453
- 600: '#16a34a',
2454
- 700: '#15803d',
2455
- 800: '#166534',
2456
- 900: '#14532d',
2457
- 950: '#052e16',
2458
- },
2459
- emerald: {
2460
- 50: '#ecfdf5',
2461
- 100: '#d1fae5',
2462
- 200: '#a7f3d0',
2463
- 300: '#6ee7b7',
2464
- 400: '#34d399',
2465
- 500: '#10b981',
2466
- 600: '#059669',
2467
- 700: '#047857',
2468
- 800: '#065f46',
2469
- 900: '#064e3b',
2470
- 950: '#022c22',
2471
- },
2472
- teal: {
2473
- 50: '#f0fdfa',
2474
- 100: '#ccfbf1',
2475
- 200: '#99f6e4',
2476
- 300: '#5eead4',
2477
- 400: '#2dd4bf',
2478
- 500: '#14b8a6',
2479
- 600: '#0d9488',
2480
- 700: '#0f766e',
2481
- 800: '#115e59',
2482
- 900: '#134e4a',
2483
- 950: '#042f2e',
2484
- },
2485
- cyan: {
2486
- 50: '#ecfeff',
2487
- 100: '#cffafe',
2488
- 200: '#a5f3fc',
2489
- 300: '#67e8f9',
2490
- 400: '#22d3ee',
2491
- 500: '#06b6d4',
2492
- 600: '#0891b2',
2493
- 700: '#0e7490',
2494
- 800: '#155e75',
2495
- 900: '#164e63',
2496
- 950: '#083344',
2497
- },
2498
- sky: {
2499
- 50: '#f0f9ff',
2500
- 100: '#e0f2fe',
2501
- 200: '#bae6fd',
2502
- 300: '#7dd3fc',
2503
- 400: '#38bdf8',
2504
- 500: '#0ea5e9',
2505
- 600: '#0284c7',
2506
- 700: '#0369a1',
2507
- 800: '#075985',
2508
- 900: '#0e3a5e',
2509
- 950: '#082f49',
2510
- },
2511
- blue: {
2512
- 50: '#eff6ff',
2513
- 100: '#dbeafe',
2514
- 200: '#bfdbfe',
2515
- 300: '#93c5fd',
2516
- 400: '#60a5fa',
2517
- 500: '#3b82f6',
2518
- 600: '#2563eb',
2519
- 700: '#1d4ed8',
2520
- 800: '#1e40af',
2521
- 900: '#1e3a8a',
2522
- 950: '#172554',
2523
- },
2524
- indigo: {
2525
- 50: '#eef2ff',
2526
- 100: '#e0e7ff',
2527
- 200: '#c7d2fe',
2528
- 300: '#a5b4fc',
2529
- 400: '#818cf8',
2530
- 500: '#6366f1',
2531
- 600: '#4f46e5',
2532
- 700: '#4338ca',
2533
- 800: '#3730a3',
2534
- 900: '#312e81',
2535
- 950: '#1e1b4b',
2536
- },
2537
- violet: {
2538
- 50: '#f5f3ff',
2539
- 100: '#ede9fe',
2540
- 200: '#ddd6fe',
2541
- 300: '#c4b5fd',
2542
- 400: '#a78bfa',
2543
- 500: '#8b5cf6',
2544
- 600: '#7c3aed',
2545
- 700: '#6d28d9',
2546
- 800: '#5b21b6',
2547
- 900: '#4c1d95',
2548
- 950: '#2e1065',
2549
- },
2550
- purple: {
2551
- 50: '#faf5ff',
2552
- 100: '#f3e8ff',
2553
- 200: '#e9d5ff',
2554
- 300: '#d8b4fe',
2555
- 400: '#c084fc',
2556
- 500: '#a855f7',
2557
- 600: '#9333ea',
2558
- 700: '#7e22ce',
2559
- 800: '#6d19a8',
2560
- 900: '#581c87',
2561
- 950: '#3b0764',
2562
- },
2563
- fuchsia: {
2564
- 50: '#fdf4ff',
2565
- 100: '#fae8ff',
2566
- 200: '#f5d0fe',
2567
- 300: '#f0abfc',
2568
- 400: '#e879f9',
2569
- 500: '#d946ef',
2570
- 600: '#c026d3',
2571
- 700: '#a21caf',
2572
- 800: '#86198f',
2573
- 900: '#701a75',
2574
- 950: '#4a044e',
2575
- },
2576
- pink: {
2577
- 50: '#fdf2f8',
2578
- 100: '#fce7f3',
2579
- 200: '#fbcfe8',
2580
- 300: '#f9a8d4',
2581
- 400: '#f472b6',
2582
- 500: '#ec4899',
2583
- 600: '#db2777',
2584
- 700: '#be185d',
2585
- 800: '#9d174d',
2586
- 900: '#831843',
2587
- 950: '#500724',
2588
- },
2589
- rose: {
2590
- 50: '#fff1f2',
2591
- 100: '#ffe4e6',
2592
- 200: '#fecdd3',
2593
- 300: '#fda4af',
2594
- 400: '#fb7185',
2595
- 500: '#f43f5e',
2596
- 600: '#e11d48',
2597
- 700: '#be123c',
2598
- 800: '#9f1239',
2599
- 900: '#881337',
2600
- 950: '#4c0519',
2601
- },
2602
- };
2603
- }
2604
- const replaceThemeTailwindColors = (theme, tailwindColor) => {
2605
- const colorShades = getTailwindColorShades();
2606
- const isValidColor = (color) => color in colorShades;
2607
- const colorPallete = isValidColor(tailwindColor) ? colorShades[tailwindColor] : colorShades.violet;
2608
- const el = document.createElement('style');
2609
- el.id = 'theme-variables';
2610
- el.setAttribute('type', 'text/css');
2611
- el.textContent = ':root {';
2612
- if (theme === 'light') {
2613
- el.textContent += `--sidebar-background: ${colorPallete[50]};\n`;
2614
- el.textContent += `--sidebar-accent: ${colorPallete[200]};\n`;
2615
- el.textContent += `--sidebar-ring: ${colorPallete[300]};\n`;
2616
- el.textContent += `--sidebar-border: ${colorPallete[100]};\n`;
2617
- el.textContent += `--sidebar-scrollbar-thumb: ${colorPallete[200]};\n`;
2618
- }
2619
- if (theme === 'light' || theme === 'dark-side') {
2620
- el.textContent += `--background-elevated: ${colorPallete[200]};\n`;
2621
- el.textContent += `--background-primary-hover: ${colorPallete[100]};\n`;
2622
- el.textContent += `--background-subtle: ${colorPallete[50]};\n`;
2623
- el.textContent += `--accent: ${colorPallete[200]};\n`;
2624
- el.textContent += `--datatable-background: ${colorPallete[50]};\n`;
2625
- el.textContent += `--datatable-accent: ${colorPallete[50]};\n`;
2626
- el.textContent += `--scrollbar-thumb: ${colorPallete[200]};\n`;
2627
- }
2628
- if (theme === 'dark-side' || theme === 'dark') {
2629
- // Verificar essa propriedade
2630
- el.textContent += `--sidebar-accent: ${colorPallete[950]};\n`;
2631
- }
2632
- el.textContent += `--background-primary: ${colorPallete[900]};\n`;
2633
- el.textContent += `--background-primary-hover: ${colorPallete[950]};\n`;
2634
- el.textContent += `--primary: ${colorPallete[900]};\n`;
2635
- el.textContent += `--primary-950: ${colorPallete[950]};\n`;
2636
- el.textContent += `--primary-900: ${colorPallete[900]};\n`;
2637
- el.textContent += `--primary-800: ${colorPallete[800]};\n`;
2638
- el.textContent += `--primary-700: ${colorPallete[700]};\n`;
2639
- el.textContent += `--primary-600: ${colorPallete[600]};\n`;
2640
- el.textContent += `--primary-500: ${colorPallete[500]};\n`;
2641
- el.textContent += `--primary-400: ${colorPallete[400]};\n`;
2642
- el.textContent += `--primary-300: ${colorPallete[300]};\n`;
2643
- el.textContent += `--primary-200: ${colorPallete[200]};\n`;
2644
- el.textContent += `--primary-100: ${colorPallete[100]};\n`;
2645
- el.textContent += `--primary-50: ${colorPallete[50]};\n`;
2646
- el.textContent += `--chart-primary: ${colorPallete[800]};\n`;
2647
- el.textContent += `--chart-secondary: ${colorPallete[200]};\n`;
2648
- el.textContent += '}';
2649
- return el;
2650
- };
2651
-
2652
- const DEFAULT_THEME_DATA = {
2653
- faviconPath: '',
2654
- fullLogoPath: '',
2655
- bannerDesktopPath: '/imgs/background-auth.png',
2656
- mvnoPrimaryColor: 'green',
2657
- mvnoMainTheme: 'light',
2658
- title: '-',
2659
- hideModuleSwitcher: false,
2660
- };
2661
- const initialState = {
2662
- portalDefinitions: DEFAULT_THEME_DATA,
2663
- setPortalDefinitions: () => null,
2664
- };
2665
- const ThemeProviderContext = React.createContext(initialState);
2666
- function ThemeProvider({ children, defaultTheme = DEFAULT_THEME_DATA, storageKey = 'vite-ui-theme', ...props }) {
2667
- const [portalDefinitions, setPortalDefinitionsState] = React.useState({
2668
- faviconPath: localStorage.getItem(`${storageKey}-faviconPath`) || defaultTheme.faviconPath,
2669
- fullLogoPath: localStorage.getItem(`${storageKey}-fullLogoPath`) || defaultTheme.fullLogoPath,
2670
- bannerDesktopPath: localStorage.getItem(`${storageKey}-bannerDesktopPath`) || defaultTheme.bannerDesktopPath,
2671
- mvnoPrimaryColor: localStorage.getItem(`${storageKey}-mvnoPrimaryColor`) || defaultTheme.mvnoPrimaryColor,
2672
- mvnoMainTheme: localStorage.getItem(storageKey) || defaultTheme.mvnoMainTheme,
2673
- title: localStorage.getItem(`${storageKey}-title`) || defaultTheme.title,
2674
- hideModuleSwitcher: localStorage.getItem(`${storageKey}-hideModuleSwitcher`) === 'true',
2675
- });
2676
- React.useEffect(() => {
2677
- const theme = portalDefinitions?.mvnoMainTheme;
2678
- const root = window.document.documentElement;
2679
- root.classList.remove('light', 'dark', 'dark-side');
2680
- root.classList.add(theme);
2681
- document.title = portalDefinitions?.title;
2682
- const meta = document.querySelector('meta[name="description"]');
2683
- if (meta) {
2684
- meta.setAttribute('content', portalDefinitions?.title);
2685
- }
2686
- let link = document.querySelector("link[rel~='icon']");
2687
- if (!link) {
2688
- link = document.createElement('link');
2689
- link.rel = 'icon';
2690
- document.getElementsByTagName('head')[0].appendChild(link);
2691
- }
2692
- link.href = portalDefinitions?.faviconPath;
2693
- const el = replaceThemeTailwindColors(theme, portalDefinitions?.mvnoPrimaryColor);
2694
- document.getElementById('theme-variables') &&
2695
- document.getElementsByTagName('head')[0].removeChild(document.getElementById('theme-variables'));
2696
- document.getElementsByTagName('head')[0].appendChild(el);
2697
- }, [portalDefinitions]);
2698
- const setPortalDefinitions = (portalDefinitions) => {
2699
- localStorage.setItem(`${storageKey}-faviconPath`, portalDefinitions.faviconPath);
2700
- localStorage.setItem(`${storageKey}-fullLogoPath`, portalDefinitions.fullLogoPath);
2701
- localStorage.setItem(`${storageKey}-bannerDesktopPath`, portalDefinitions.bannerDesktopPath);
2702
- localStorage.setItem(`${storageKey}-mvnoPrimaryColor`, portalDefinitions.mvnoPrimaryColor);
2703
- localStorage.setItem(`${storageKey}-mvnoMainTheme`, portalDefinitions.mvnoMainTheme);
2704
- localStorage.setItem(`${storageKey}-title`, portalDefinitions.title);
2705
- localStorage.setItem(`${storageKey}-hideModuleSwitcher`, String(portalDefinitions.hideModuleSwitcher));
2706
- setPortalDefinitionsState({
2707
- faviconPath: portalDefinitions.faviconPath || DEFAULT_THEME_DATA.faviconPath,
2708
- fullLogoPath: portalDefinitions.fullLogoPath || DEFAULT_THEME_DATA.fullLogoPath,
2709
- bannerDesktopPath: portalDefinitions.bannerDesktopPath || DEFAULT_THEME_DATA.bannerDesktopPath,
2710
- mvnoPrimaryColor: portalDefinitions.mvnoPrimaryColor || DEFAULT_THEME_DATA.mvnoPrimaryColor,
2711
- mvnoMainTheme: portalDefinitions.mvnoMainTheme ? portalDefinitions.mvnoMainTheme : DEFAULT_THEME_DATA.mvnoMainTheme,
2712
- title: portalDefinitions.title || DEFAULT_THEME_DATA.title,
2713
- hideModuleSwitcher: portalDefinitions.hideModuleSwitcher || DEFAULT_THEME_DATA.hideModuleSwitcher,
2714
- });
2715
- };
2716
- const value = {
2717
- portalDefinitions,
2718
- setPortalDefinitions: setPortalDefinitions,
2719
- };
2720
- return (jsxRuntime.jsx(ThemeProviderContext.Provider, { ...props, value: value, children: children }));
2721
- }
2722
- const useTheme = () => {
2723
- const context = React.useContext(ThemeProviderContext);
2724
- if (context === undefined)
2725
- throw new Error('useTheme must be used within a ThemeProvider');
2726
- return context;
2727
- };
2728
-
2729
2318
  const formHelpText = (helpText) => {
2730
2319
  return (jsxRuntime.jsx(TooltipProvider, { children: jsxRuntime.jsxs(Tooltip, { children: [jsxRuntime.jsx(TooltipTrigger, { className: 'pb-2', children: jsxRuntime.jsx(lucideReact.CircleHelp, { size: 16, className: 'text-muted' }) }), jsxRuntime.jsx(TooltipContent, { className: 'text-white bg-background-primary', align: 'start', children: helpText })] }) }));
2731
2320
  };
@@ -2784,7 +2373,7 @@ const FormInputColor = ({ control, name, label, subLabel, helpText, placeholder,
2784
2373
  }
2785
2374
  };
2786
2375
  const handleRgbChange = (key, value, onChange) => {
2787
- const numValue = Number.parseInt(value);
2376
+ const numValue = Number.parseInt(value, 10);
2788
2377
  if (!Number.isNaN(numValue) && numValue >= 0 && numValue <= 255) {
2789
2378
  const newRgb = { ...rgb, [key]: numValue };
2790
2379
  handleColorChange(rgbToHex(newRgb), onChange);
@@ -3096,18 +2685,13 @@ const FormInputPercent = ({ control, name, label, subLabel, helpText, className,
3096
2685
  const masks = ['(99) 9999-99999', '(99) 9 9999-9999'];
3097
2686
  const FormInputPhone = ({ control, name, label, subLabel, helpText, placeholder, className, disabled, required, onChange, onKeyUp, }) => {
3098
2687
  const { FormField, FormItem, FormLabel, FormControl, FormMessage } = FormComponents;
3099
- const [mask, setMask] = React.useState(masks[0]);
2688
+ // const [_mask, setMask] = useState(masks[0]);
3100
2689
  const getMask = (val) => (val.replace(/\D/g, '').length > 10 ? masks[1] : masks[0]);
3101
- return (jsxRuntime.jsx(FormField, { control: control, name: name, render: ({ field, formState }) => {
3102
- React.useEffect(() => {
3103
- setMask(getMask(field.value || ''));
3104
- }, [field.value]);
3105
- return (jsxRuntime.jsxs(FormItem, { className: className, children: [jsxRuntime.jsxs("div", { className: 'flex items-center space-x-1.5', children: [label && formLabelAndSubLabel(FormLabel, label, subLabel, required), helpText && formHelpText(helpText)] }), jsxRuntime.jsx(FormControl, { children: jsxRuntime.jsx(MaskInputFone, { ...field, className: className, placeholder: placeholder ?? '(00) 0 0000-0000', disabled: disabled || formState.isSubmitting, mask: mask, onChange: (e) => {
3106
- onChange?.(e);
3107
- field.onChange(e);
3108
- setMask(getMask(e.target.value));
3109
- }, onKeyUp: (e) => onKeyUp?.(e) }) }), formMessage(FormMessage)] }));
3110
- } }));
2690
+ return (jsxRuntime.jsx(FormField, { control: control, name: name, render: ({ field, formState }) => (jsxRuntime.jsxs(FormItem, { className: className, children: [jsxRuntime.jsxs("div", { className: 'flex items-center space-x-1.5', children: [label && formLabelAndSubLabel(FormLabel, label, subLabel, required), helpText && formHelpText(helpText)] }), jsxRuntime.jsx(FormControl, { children: jsxRuntime.jsx(MaskInputFone, { ...field, className: className, placeholder: placeholder ?? '(00) 0 0000-0000', disabled: disabled || formState.isSubmitting, mask: getMask(field.value || ''), onChange: (e) => {
2691
+ onChange?.(e);
2692
+ field.onChange(e);
2693
+ // setMask(getMask(e.target.value));
2694
+ }, onKeyUp: (e) => onKeyUp?.(e) }) }), formMessage(FormMessage)] })) }));
3111
2695
  };
3112
2696
 
3113
2697
  const FormRadioGroup = ({ control, name, value, label, subLabel, helpText, className, classNameOptions, disabled, required, options, onChange, }) => {
@@ -3166,98 +2750,699 @@ const FormTextarea = ({ control, name, label, subLabel, helpText, placeholder, c
3166
2750
  } }) }), formMessage(FormMessage)] })) }));
3167
2751
  };
3168
2752
 
3169
- function DataTableExport({ exportData, totalRows }) {
3170
- const exportXlSX = () => {
3171
- if (!exportData)
3172
- return;
3173
- if (totalRows === 0) {
3174
- toast({
3175
- title: 'Não há dados para exportar.',
3176
- variant: 'destructive',
3177
- });
3178
- return {};
3179
- }
3180
- const params = new URLSearchParams(exportData.params).toString();
3181
- window.open(`${exportData.url}?${params}`, '_blank');
3182
- };
3183
- const renderExport = () => {
3184
- if (!exportData)
3185
- return null;
3186
- if (exportData.type === 'xlsx') {
3187
- return (jsxRuntime.jsx(Button, { variant: 'secondary', onClick: exportXlSX, children: "Exportar" }));
3188
- }
3189
- if (exportData.type === 'dialog') {
3190
- const ExportDataSchema = zod.z.object({
3191
- model: zod.z.string(),
3192
- format: zod.z.string(),
3193
- });
3194
- const form = reactHookForm.useForm({
3195
- mode: 'onTouched',
3196
- resolver: zod$1.zodResolver(ExportDataSchema),
3197
- });
3198
- const { control, trigger, handleSubmit } = form;
3199
- const onSubmit = async (values) => {
3200
- await trigger();
3201
- toast({
3202
- title: 'Em desenvolvimento.',
3203
- variant: 'destructive',
3204
- });
3205
- };
3206
- const onError = async (errors) => {
3207
- toast({
3208
- title: 'Erro ao salvar',
3209
- description: 'Verifique os campos obrigatórios',
3210
- variant: 'destructive',
3211
- });
3212
- };
3213
- return (jsxRuntime.jsx(Form, { ...form, onSubmit: handleSubmit(onSubmit, onError), children: jsxRuntime.jsxs(Dialog, { children: [jsxRuntime.jsx(DialogTrigger, { asChild: true, children: jsxRuntime.jsx(Button, { variant: 'secondary', children: "Exportar" }) }), jsxRuntime.jsxs(DialogContent, { hideClose: true, className: 'fixed p-6 rounded-lg w-[451px]', children: [jsxRuntime.jsxs(DialogHeader, { children: [jsxRuntime.jsx(DialogTitle, { children: "Exportar" }), jsxRuntime.jsx(DialogDescription, {})] }), jsxRuntime.jsxs("div", { className: 'flex flex-col gap-6', children: [jsxRuntime.jsx(FormRadioGroup, { control: control, name: 'model', label: 'Selecione o modelo de visualiza\u00E7\u00E3o', options: [
3214
- { value: '0', label: 'Resumido' },
3215
- { value: '1', label: 'Detalhado' },
3216
- ], className: 'text-sm font-normal', classNameOptions: 'flex flex-col gap-4 mt-4 text-sm font-normal' }), jsxRuntime.jsx(FormRadioGroup, { control: control, name: 'format', label: 'Selecione o formato desejado para exporta\u00E7\u00E3o', options: [
3217
- { value: '0', label: 'PDF' },
3218
- { value: '1', label: 'XLSX' },
3219
- ], className: 'text-sm font-normal', classNameOptions: 'flex flex-col gap-4 mt-4 text-sm font-normal' })] }), jsxRuntime.jsxs(DialogFooter, { className: 'sm:justify-end gap-2', children: [jsxRuntime.jsx(Button, { type: 'button', variant: 'secondary', children: "Fechar" }), jsxRuntime.jsx(Button, { type: 'button', variant: 'default', onClick: () => exportXlSX(), children: "Exportar" })] })] })] }) }));
3220
- }
3221
- return null;
3222
- };
3223
- return exportData && renderExport();
3224
- }
3225
-
3226
- function DataTableFooter({ isLoading, totalRows, totalPages, currentPage, hidePagination, disablePagination, pagination, handlePageSize, handlePage, previousPage, nextPage, exportData, }) {
3227
- const renderPaginationPages = () => {
3228
- const paginationItems = [];
3229
- const createPaginationItem = (pageIndex) => (jsxRuntime.jsx(PaginationItem, { children: jsxRuntime.jsx(PaginationLink, { onClick: () => handlePage(pageIndex), isActive: currentPage === pageIndex, children: pageIndex + 1 }) }, pageIndex));
3230
- // Add first page
3231
- paginationItems.push(createPaginationItem(0));
3232
- // Add ellipsis if needed
3233
- if (currentPage > 2) {
3234
- paginationItems.push(jsxRuntime.jsx(PaginationEllipsis, {}, 'start-ellipsis'));
3235
- }
3236
- // Add pages before current page
3237
- for (let i = Math.max(1, currentPage - 1); i < currentPage; i++) {
3238
- paginationItems.push(createPaginationItem(i));
3239
- }
3240
- // Add current page
3241
- if (currentPage !== 0 && currentPage !== totalPages - 1) {
3242
- paginationItems.push(createPaginationItem(currentPage));
3243
- }
3244
- // Add pages after current page
3245
- for (let i = currentPage + 1; i <= Math.min(totalPages - 2, currentPage + 1); i++) {
3246
- paginationItems.push(createPaginationItem(i));
3247
- }
3248
- // Add ellipsis if needed
3249
- if (currentPage < totalPages - 3) {
3250
- paginationItems.push(jsxRuntime.jsx(PaginationEllipsis, {}, 'end-ellipsis'));
3251
- }
3252
- // Add last page
3253
- if (totalPages > 1) {
3254
- paginationItems.push(createPaginationItem(totalPages - 1));
3255
- }
3256
- return paginationItems;
3257
- };
3258
- return (!hidePagination && (jsxRuntime.jsxs("footer", { className: 'flex items-center justify-between h-[64px]', children: [jsxRuntime.jsxs("div", { className: 'flex flex-row items-center gap-6', children: [jsxRuntime.jsxs("div", { className: 'flex flex-row items-center gap-2', children: ["Linhas por p\u00E1gina", jsxRuntime.jsxs(Select, { value: pagination.pageSize.toString(), onValueChange: (value) => handlePageSize(Number(value)), disabled: isLoading || disablePagination, children: [jsxRuntime.jsx(SelectTrigger, { className: 'w-20', children: jsxRuntime.jsx(SelectValue, { placeholder: '', className: 'text-slate-800 font-medium' }) }), jsxRuntime.jsx(SelectContent, { children: jsxRuntime.jsxs(SelectGroup, { children: [jsxRuntime.jsx(SelectItem, { value: '25', children: "25" }), jsxRuntime.jsx(SelectItem, { value: '50', children: "50" }), jsxRuntime.jsx(SelectItem, { value: '100', children: "100" })] }) })] })] }), jsxRuntime.jsx(DataTableExport, { exportData: exportData, totalRows: totalPages })] }), jsxRuntime.jsxs("div", { className: 'flex items-center gap-4', children: [jsxRuntime.jsx("div", { children: !isLoading && (jsxRuntime.jsx(Badge, { variant: 'secondary', children: totalRows === 0 ? 'Nenhum item' : totalRows === 1 ? '1 item' : `${totalRows} itens` })) }), jsxRuntime.jsx("div", { children: jsxRuntime.jsx(Pagination, { children: jsxRuntime.jsxs(PaginationContent, { children: [jsxRuntime.jsx(PaginationItem, { children: jsxRuntime.jsx(PaginationPrevious, { onClick: () => previousPage.action(), disabled: previousPage.disabled || disablePagination }) }), renderPaginationPages(), jsxRuntime.jsx(PaginationItem, { children: jsxRuntime.jsx(PaginationNext, { onClick: () => nextPage.action(), disabled: nextPage.disabled || disablePagination }) })] }) }) })] })] })));
3259
- }
3260
-
2753
+ // Retorna todas as cores do Tailwind CSS das variações 50 a 950
2754
+ function getTailwindColorShades() {
2755
+ // Paleta padrão do Tailwind v3.3.0
2756
+ // Fonte: https://github.com/tailwindlabs/tailwindcss/blob/master/src/public/colors.js
2757
+ return {
2758
+ slate: {
2759
+ 50: '#f8fafc',
2760
+ 100: '#f1f5f9',
2761
+ 200: '#e2e8f0',
2762
+ 300: '#cbd5e1',
2763
+ 400: '#94a3b8',
2764
+ 500: '#64748b',
2765
+ 600: '#475569',
2766
+ 700: '#334155',
2767
+ 800: '#1e293b',
2768
+ 900: '#0f172a',
2769
+ 950: '#020617',
2770
+ },
2771
+ gray: {
2772
+ 50: '#f9fafb',
2773
+ 100: '#f3f4f6',
2774
+ 200: '#e5e7eb',
2775
+ 300: '#d1d5db',
2776
+ 400: '#9ca3af',
2777
+ 500: '#6b7280',
2778
+ 600: '#4b5563',
2779
+ 700: '#374151',
2780
+ 800: '#1f2937',
2781
+ 900: '#111827',
2782
+ 950: '#030712',
2783
+ },
2784
+ zinc: {
2785
+ 50: '#fafafa',
2786
+ 100: '#f4f4f5',
2787
+ 200: '#e4e4e7',
2788
+ 300: '#d4d4d8',
2789
+ 400: '#a1a1aa',
2790
+ 500: '#71717a',
2791
+ 600: '#52525b',
2792
+ 700: '#3f3f46',
2793
+ 800: '#27272a',
2794
+ 900: '#18181b',
2795
+ 950: '#09090b',
2796
+ },
2797
+ neutral: {
2798
+ 50: '#fafafa',
2799
+ 100: '#f5f5f5',
2800
+ 200: '#e5e5e5',
2801
+ 300: '#d4d4d4',
2802
+ 400: '#a3a3a3',
2803
+ 500: '#737373',
2804
+ 600: '#525252',
2805
+ 700: '#404040',
2806
+ 800: '#262626',
2807
+ 900: '#171717',
2808
+ 950: '#0a0a0a',
2809
+ },
2810
+ stone: {
2811
+ 50: '#fafaf9',
2812
+ 100: '#f5f5f4',
2813
+ 200: '#e7e5e4',
2814
+ 300: '#d6d3d1',
2815
+ 400: '#a8a29e',
2816
+ 500: '#78716c',
2817
+ 600: '#57534e',
2818
+ 700: '#44403c',
2819
+ 800: '#292524',
2820
+ 900: '#1c1917',
2821
+ 950: '#0c0a09',
2822
+ },
2823
+ red: {
2824
+ 50: '#fef2f2',
2825
+ 100: '#fee2e2',
2826
+ 200: '#fecaca',
2827
+ 300: '#fca5a5',
2828
+ 400: '#f87171',
2829
+ 500: '#ef4444',
2830
+ 600: '#dc2626',
2831
+ 700: '#b91c1c',
2832
+ 800: '#991b1b',
2833
+ 900: '#7f1d1d',
2834
+ 950: '#450a0a',
2835
+ },
2836
+ orange: {
2837
+ 50: '#fff7ed',
2838
+ 100: '#ffedd5',
2839
+ 200: '#fed7aa',
2840
+ 300: '#fdba74',
2841
+ 400: '#fb923c',
2842
+ 500: '#f97316',
2843
+ 600: '#ea580c',
2844
+ 700: '#c2410c',
2845
+ 800: '#9a3412',
2846
+ 900: '#7c2d12',
2847
+ 950: '#431407',
2848
+ },
2849
+ amber: {
2850
+ 50: '#fffbeb',
2851
+ 100: '#fef3c7',
2852
+ 200: '#fde68a',
2853
+ 300: '#fcd34d',
2854
+ 400: '#fbbf24',
2855
+ 500: '#f59e42',
2856
+ 600: '#d97706',
2857
+ 700: '#b45309',
2858
+ 800: '#92400e',
2859
+ 900: '#78350f',
2860
+ 950: '#451a03',
2861
+ },
2862
+ yellow: {
2863
+ 50: '#fefce8',
2864
+ 100: '#fef9c3',
2865
+ 200: '#fef08a',
2866
+ 300: '#fde047',
2867
+ 400: '#facc15',
2868
+ 500: '#eab308',
2869
+ 600: '#ca8a04',
2870
+ 700: '#a16207',
2871
+ 800: '#854d0e',
2872
+ 900: '#713f12',
2873
+ 950: '#422006',
2874
+ },
2875
+ lime: {
2876
+ 50: '#f7fee7',
2877
+ 100: '#ecfccb',
2878
+ 200: '#d9f99d',
2879
+ 300: '#bef264',
2880
+ 400: '#a3e635',
2881
+ 500: '#84cc16',
2882
+ 600: '#65a30d',
2883
+ 700: '#4d7c0f',
2884
+ 800: '#3f6212',
2885
+ 900: '#365314',
2886
+ 950: '#1a2e05',
2887
+ },
2888
+ green: {
2889
+ 50: '#f0fdf4',
2890
+ 100: '#dcfce7',
2891
+ 200: '#bbf7d0',
2892
+ 300: '#86efac',
2893
+ 400: '#4ade80',
2894
+ 500: '#22c55e',
2895
+ 600: '#16a34a',
2896
+ 700: '#15803d',
2897
+ 800: '#166534',
2898
+ 900: '#14532d',
2899
+ 950: '#052e16',
2900
+ },
2901
+ emerald: {
2902
+ 50: '#ecfdf5',
2903
+ 100: '#d1fae5',
2904
+ 200: '#a7f3d0',
2905
+ 300: '#6ee7b7',
2906
+ 400: '#34d399',
2907
+ 500: '#10b981',
2908
+ 600: '#059669',
2909
+ 700: '#047857',
2910
+ 800: '#065f46',
2911
+ 900: '#064e3b',
2912
+ 950: '#022c22',
2913
+ },
2914
+ teal: {
2915
+ 50: '#f0fdfa',
2916
+ 100: '#ccfbf1',
2917
+ 200: '#99f6e4',
2918
+ 300: '#5eead4',
2919
+ 400: '#2dd4bf',
2920
+ 500: '#14b8a6',
2921
+ 600: '#0d9488',
2922
+ 700: '#0f766e',
2923
+ 800: '#115e59',
2924
+ 900: '#134e4a',
2925
+ 950: '#042f2e',
2926
+ },
2927
+ cyan: {
2928
+ 50: '#ecfeff',
2929
+ 100: '#cffafe',
2930
+ 200: '#a5f3fc',
2931
+ 300: '#67e8f9',
2932
+ 400: '#22d3ee',
2933
+ 500: '#06b6d4',
2934
+ 600: '#0891b2',
2935
+ 700: '#0e7490',
2936
+ 800: '#155e75',
2937
+ 900: '#164e63',
2938
+ 950: '#083344',
2939
+ },
2940
+ sky: {
2941
+ 50: '#f0f9ff',
2942
+ 100: '#e0f2fe',
2943
+ 200: '#bae6fd',
2944
+ 300: '#7dd3fc',
2945
+ 400: '#38bdf8',
2946
+ 500: '#0ea5e9',
2947
+ 600: '#0284c7',
2948
+ 700: '#0369a1',
2949
+ 800: '#075985',
2950
+ 900: '#0e3a5e',
2951
+ 950: '#082f49',
2952
+ },
2953
+ blue: {
2954
+ 50: '#eff6ff',
2955
+ 100: '#dbeafe',
2956
+ 200: '#bfdbfe',
2957
+ 300: '#93c5fd',
2958
+ 400: '#60a5fa',
2959
+ 500: '#3b82f6',
2960
+ 600: '#2563eb',
2961
+ 700: '#1d4ed8',
2962
+ 800: '#1e40af',
2963
+ 900: '#1e3a8a',
2964
+ 950: '#172554',
2965
+ },
2966
+ indigo: {
2967
+ 50: '#eef2ff',
2968
+ 100: '#e0e7ff',
2969
+ 200: '#c7d2fe',
2970
+ 300: '#a5b4fc',
2971
+ 400: '#818cf8',
2972
+ 500: '#6366f1',
2973
+ 600: '#4f46e5',
2974
+ 700: '#4338ca',
2975
+ 800: '#3730a3',
2976
+ 900: '#312e81',
2977
+ 950: '#1e1b4b',
2978
+ },
2979
+ violet: {
2980
+ 50: '#f5f3ff',
2981
+ 100: '#ede9fe',
2982
+ 200: '#ddd6fe',
2983
+ 300: '#c4b5fd',
2984
+ 400: '#a78bfa',
2985
+ 500: '#8b5cf6',
2986
+ 600: '#7c3aed',
2987
+ 700: '#6d28d9',
2988
+ 800: '#5b21b6',
2989
+ 900: '#4c1d95',
2990
+ 950: '#2e1065',
2991
+ },
2992
+ purple: {
2993
+ 50: '#faf5ff',
2994
+ 100: '#f3e8ff',
2995
+ 200: '#e9d5ff',
2996
+ 300: '#d8b4fe',
2997
+ 400: '#c084fc',
2998
+ 500: '#a855f7',
2999
+ 600: '#9333ea',
3000
+ 700: '#7e22ce',
3001
+ 800: '#6d19a8',
3002
+ 900: '#581c87',
3003
+ 950: '#3b0764',
3004
+ },
3005
+ fuchsia: {
3006
+ 50: '#fdf4ff',
3007
+ 100: '#fae8ff',
3008
+ 200: '#f5d0fe',
3009
+ 300: '#f0abfc',
3010
+ 400: '#e879f9',
3011
+ 500: '#d946ef',
3012
+ 600: '#c026d3',
3013
+ 700: '#a21caf',
3014
+ 800: '#86198f',
3015
+ 900: '#701a75',
3016
+ 950: '#4a044e',
3017
+ },
3018
+ pink: {
3019
+ 50: '#fdf2f8',
3020
+ 100: '#fce7f3',
3021
+ 200: '#fbcfe8',
3022
+ 300: '#f9a8d4',
3023
+ 400: '#f472b6',
3024
+ 500: '#ec4899',
3025
+ 600: '#db2777',
3026
+ 700: '#be185d',
3027
+ 800: '#9d174d',
3028
+ 900: '#831843',
3029
+ 950: '#500724',
3030
+ },
3031
+ rose: {
3032
+ 50: '#fff1f2',
3033
+ 100: '#ffe4e6',
3034
+ 200: '#fecdd3',
3035
+ 300: '#fda4af',
3036
+ 400: '#fb7185',
3037
+ 500: '#f43f5e',
3038
+ 600: '#e11d48',
3039
+ 700: '#be123c',
3040
+ 800: '#9f1239',
3041
+ 900: '#881337',
3042
+ 950: '#4c0519',
3043
+ },
3044
+ };
3045
+ }
3046
+ const replaceThemeTailwindColors = (theme, tailwindColor) => {
3047
+ const colorShades = getTailwindColorShades();
3048
+ const isValidColor = (color) => color in colorShades;
3049
+ const colorPallete = isValidColor(tailwindColor) ? colorShades[tailwindColor] : colorShades.violet;
3050
+ const el = document.createElement('style');
3051
+ el.id = 'theme-variables';
3052
+ el.setAttribute('type', 'text/css');
3053
+ el.textContent = ':root {';
3054
+ if (theme === 'light') {
3055
+ el.textContent += `--sidebar-background: ${colorPallete[50]};\n`;
3056
+ el.textContent += `--sidebar-accent: ${colorPallete[200]};\n`;
3057
+ el.textContent += `--sidebar-ring: ${colorPallete[300]};\n`;
3058
+ el.textContent += `--sidebar-border: ${colorPallete[100]};\n`;
3059
+ el.textContent += `--sidebar-scrollbar-thumb: ${colorPallete[200]};\n`;
3060
+ }
3061
+ if (theme === 'light' || theme === 'dark-side') {
3062
+ el.textContent += `--background-elevated: ${colorPallete[200]};\n`;
3063
+ el.textContent += `--background-primary-hover: ${colorPallete[100]};\n`;
3064
+ el.textContent += `--background-subtle: ${colorPallete[50]};\n`;
3065
+ el.textContent += `--accent: ${colorPallete[200]};\n`;
3066
+ el.textContent += `--datatable-background: ${colorPallete[50]};\n`;
3067
+ el.textContent += `--datatable-accent: ${colorPallete[50]};\n`;
3068
+ el.textContent += `--scrollbar-thumb: ${colorPallete[200]};\n`;
3069
+ }
3070
+ if (theme === 'dark-side' || theme === 'dark') {
3071
+ // Verificar essa propriedade
3072
+ el.textContent += `--sidebar-accent: ${colorPallete[950]};\n`;
3073
+ }
3074
+ el.textContent += `--background-primary: ${colorPallete[900]};\n`;
3075
+ el.textContent += `--background-primary-hover: ${colorPallete[950]};\n`;
3076
+ el.textContent += `--primary: ${colorPallete[900]};\n`;
3077
+ el.textContent += `--primary-950: ${colorPallete[950]};\n`;
3078
+ el.textContent += `--primary-900: ${colorPallete[900]};\n`;
3079
+ el.textContent += `--primary-800: ${colorPallete[800]};\n`;
3080
+ el.textContent += `--primary-700: ${colorPallete[700]};\n`;
3081
+ el.textContent += `--primary-600: ${colorPallete[600]};\n`;
3082
+ el.textContent += `--primary-500: ${colorPallete[500]};\n`;
3083
+ el.textContent += `--primary-400: ${colorPallete[400]};\n`;
3084
+ el.textContent += `--primary-300: ${colorPallete[300]};\n`;
3085
+ el.textContent += `--primary-200: ${colorPallete[200]};\n`;
3086
+ el.textContent += `--primary-100: ${colorPallete[100]};\n`;
3087
+ el.textContent += `--primary-50: ${colorPallete[50]};\n`;
3088
+ el.textContent += `--chart-primary: ${colorPallete[800]};\n`;
3089
+ el.textContent += `--chart-secondary: ${colorPallete[200]};\n`;
3090
+ el.textContent += '}';
3091
+ return el;
3092
+ };
3093
+
3094
+ const DEFAULT_THEME_DATA = {
3095
+ faviconPath: '',
3096
+ fullLogoPath: '',
3097
+ bannerDesktopPath: '/imgs/background-auth.png',
3098
+ mvnoPrimaryColor: 'green',
3099
+ mvnoMainTheme: 'light',
3100
+ title: '-',
3101
+ hideModuleSwitcher: false,
3102
+ };
3103
+ const initialState = {
3104
+ portalDefinitions: DEFAULT_THEME_DATA,
3105
+ setPortalDefinitions: () => null,
3106
+ };
3107
+ const ThemeProviderContext = React.createContext(initialState);
3108
+ function ThemeProvider({ children, defaultTheme = DEFAULT_THEME_DATA, storageKey = 'vite-ui-theme', ...props }) {
3109
+ const [portalDefinitions, setPortalDefinitionsState] = React.useState({
3110
+ faviconPath: localStorage.getItem(`${storageKey}-faviconPath`) || defaultTheme.faviconPath,
3111
+ fullLogoPath: localStorage.getItem(`${storageKey}-fullLogoPath`) || defaultTheme.fullLogoPath,
3112
+ bannerDesktopPath: localStorage.getItem(`${storageKey}-bannerDesktopPath`) || defaultTheme.bannerDesktopPath,
3113
+ mvnoPrimaryColor: localStorage.getItem(`${storageKey}-mvnoPrimaryColor`) || defaultTheme.mvnoPrimaryColor,
3114
+ mvnoMainTheme: localStorage.getItem(storageKey) || defaultTheme.mvnoMainTheme,
3115
+ title: localStorage.getItem(`${storageKey}-title`) || defaultTheme.title,
3116
+ hideModuleSwitcher: localStorage.getItem(`${storageKey}-hideModuleSwitcher`) === 'true',
3117
+ });
3118
+ React.useEffect(() => {
3119
+ const theme = portalDefinitions?.mvnoMainTheme;
3120
+ const root = window.document.documentElement;
3121
+ root.classList.remove('light', 'dark', 'dark-side');
3122
+ root.classList.add(theme);
3123
+ document.title = portalDefinitions?.title;
3124
+ const meta = document.querySelector('meta[name="description"]');
3125
+ if (meta) {
3126
+ meta.setAttribute('content', portalDefinitions?.title);
3127
+ }
3128
+ let link = document.querySelector("link[rel~='icon']");
3129
+ if (!link) {
3130
+ link = document.createElement('link');
3131
+ link.rel = 'icon';
3132
+ document.getElementsByTagName('head')[0].appendChild(link);
3133
+ }
3134
+ link.href = portalDefinitions?.faviconPath;
3135
+ const el = replaceThemeTailwindColors(theme, portalDefinitions?.mvnoPrimaryColor);
3136
+ document.getElementById('theme-variables') &&
3137
+ document.getElementsByTagName('head')[0].removeChild(document.getElementById('theme-variables'));
3138
+ document.getElementsByTagName('head')[0].appendChild(el);
3139
+ }, [portalDefinitions]);
3140
+ const setPortalDefinitions = (portalDefinitions) => {
3141
+ localStorage.setItem(`${storageKey}-faviconPath`, portalDefinitions.faviconPath);
3142
+ localStorage.setItem(`${storageKey}-fullLogoPath`, portalDefinitions.fullLogoPath);
3143
+ localStorage.setItem(`${storageKey}-bannerDesktopPath`, portalDefinitions.bannerDesktopPath);
3144
+ localStorage.setItem(`${storageKey}-mvnoPrimaryColor`, portalDefinitions.mvnoPrimaryColor);
3145
+ localStorage.setItem(`${storageKey}-mvnoMainTheme`, portalDefinitions.mvnoMainTheme);
3146
+ localStorage.setItem(`${storageKey}-title`, portalDefinitions.title);
3147
+ localStorage.setItem(`${storageKey}-hideModuleSwitcher`, String(portalDefinitions.hideModuleSwitcher));
3148
+ setPortalDefinitionsState({
3149
+ faviconPath: portalDefinitions.faviconPath || DEFAULT_THEME_DATA.faviconPath,
3150
+ fullLogoPath: portalDefinitions.fullLogoPath || DEFAULT_THEME_DATA.fullLogoPath,
3151
+ bannerDesktopPath: portalDefinitions.bannerDesktopPath || DEFAULT_THEME_DATA.bannerDesktopPath,
3152
+ mvnoPrimaryColor: portalDefinitions.mvnoPrimaryColor || DEFAULT_THEME_DATA.mvnoPrimaryColor,
3153
+ mvnoMainTheme: portalDefinitions.mvnoMainTheme ? portalDefinitions.mvnoMainTheme : DEFAULT_THEME_DATA.mvnoMainTheme,
3154
+ title: portalDefinitions.title || DEFAULT_THEME_DATA.title,
3155
+ hideModuleSwitcher: portalDefinitions.hideModuleSwitcher || DEFAULT_THEME_DATA.hideModuleSwitcher,
3156
+ });
3157
+ };
3158
+ const value = {
3159
+ portalDefinitions,
3160
+ setPortalDefinitions: setPortalDefinitions,
3161
+ };
3162
+ return (jsxRuntime.jsx(ThemeProviderContext.Provider, { ...props, value: value, children: children }));
3163
+ }
3164
+ const useTheme = () => {
3165
+ const context = React.useContext(ThemeProviderContext);
3166
+ if (context === undefined)
3167
+ throw new Error('useTheme must be used within a ThemeProvider');
3168
+ return context;
3169
+ };
3170
+
3171
+ const Header = ({ splittedPath, modules, pages, isLoading, combobox, }) => {
3172
+ const { portalDefinitions } = useTheme();
3173
+ const navigate = reactRouterDom.useNavigate();
3174
+ const refProgressLoading = React.useRef(null);
3175
+ const lastPage = splittedPath[splittedPath.length - 1];
3176
+ React.useEffect(() => {
3177
+ isLoading ? refProgressLoading.current?.start() : refProgressLoading.current?.complete();
3178
+ }, [isLoading]);
3179
+ const setRouter = (path) => {
3180
+ navigate(path);
3181
+ };
3182
+ const getPath = (index) => {
3183
+ let path = '';
3184
+ for (let i = 0; i <= index; i++) {
3185
+ path += `/${splittedPath[i]}`;
3186
+ }
3187
+ return path;
3188
+ };
3189
+ const getLinkSidebar = (index) => {
3190
+ return pages.find((item) => item.path === getPath(index));
3191
+ };
3192
+ const getSubMenuItem = (index) => {
3193
+ return pages.flatMap((item) => item.subMenuItems || []).find((sub) => sub.path === getPath(index));
3194
+ };
3195
+ const getModule = (page) => {
3196
+ const module = modules.find((mod) => mod.value === page);
3197
+ if (!module) {
3198
+ return page;
3199
+ }
3200
+ return module?.title;
3201
+ };
3202
+ const getTitle = (index) => {
3203
+ const linkSidebar = getLinkSidebar(index);
3204
+ const subMenuItem = getSubMenuItem(index);
3205
+ if (subMenuItem) {
3206
+ return subMenuItem.label;
3207
+ }
3208
+ return linkSidebar?.title;
3209
+ };
3210
+ const renderBreadcrumbPage = (index) => {
3211
+ return jsxRuntime.jsx(BreadcrumbPage, { children: getTitle(index) });
3212
+ };
3213
+ const renderBreadcrumbLink = (page, index) => {
3214
+ const linkSidebar = getLinkSidebar(index);
3215
+ return linkSidebar?.subMenuType ? (renderBreadcrumbPage(index)) : (jsxRuntime.jsx(BreadcrumbLink, { onClick: () => setRouter(getPath(index)), className: 'cursor-pointer', children: index === 0 ? getModule(page) : getTitle(index) }));
3216
+ };
3217
+ const renderBreadcrumbItens = () => {
3218
+ const breadcrumbItems = [];
3219
+ splittedPath.forEach((page, index) => {
3220
+ breadcrumbItems.push(jsxRuntime.jsx(BreadcrumbItem, { children: page === lastPage ? renderBreadcrumbPage(index) : renderBreadcrumbLink(page, index) }, `breadcrumb-item-${index}`));
3221
+ if (page !== lastPage) {
3222
+ breadcrumbItems.push(jsxRuntime.jsx(BreadcrumbSeparator, { className: 'mt-[1px]' }, `breadcrumb-separator-${index}`));
3223
+ }
3224
+ });
3225
+ return breadcrumbItems;
3226
+ };
3227
+ const getColorLoadingBar = () => {
3228
+ const colorShades = getTailwindColorShades();
3229
+ const tailwindColor = portalDefinitions?.mvnoPrimaryColor || DEFAULT_THEME_DATA.mvnoPrimaryColor;
3230
+ const isValidColor = (color) => color in colorShades;
3231
+ const colorPallete = isValidColor(tailwindColor) ? colorShades[tailwindColor] : colorShades.violet;
3232
+ return colorPallete[900];
3233
+ };
3234
+ return (jsxRuntime.jsxs("header", { className: 'flex flex-col justify-between items-center w-full', children: [jsxRuntime.jsxs("div", { className: 'flex justify-between items-center py-3 px-5 w-full', children: [jsxRuntime.jsxs("div", { className: 'flex items-center gap-x-2 h-[40px]', children: [jsxRuntime.jsx(SidebarTrigger, { className: 'p-5' }), jsxRuntime.jsx("div", { className: 'p-2', children: jsxRuntime.jsx(Breadcrumb, { children: jsxRuntime.jsx(BreadcrumbList, { children: renderBreadcrumbItens() }) }) })] }), jsxRuntime.jsx("div", { className: 'flex items-center', children: combobox })] }), jsxRuntime.jsx(LoadingBar, { ref: refProgressLoading, color: getColorLoadingBar(), height: 7 })] }));
3235
+ };
3236
+
3237
+ const LabelWithTitle = ({ title, value, value2, required, showCopyIcon = false, className, isLoading }) => {
3238
+ const handleCopy = () => {
3239
+ if (showCopyIcon && value) {
3240
+ navigator.clipboard.writeText(`${value}${value2 ?? ''}`);
3241
+ toast({
3242
+ title: `"${value}${value2 ?? ''}" foi copiado para a área de transferência.`,
3243
+ variant: 'success',
3244
+ });
3245
+ }
3246
+ };
3247
+ return (jsxRuntime.jsx("div", { className: cn('flex group', className), children: jsxRuntime.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: jsxRuntime.jsxs("div", { className: 'relative', children: [jsxRuntime.jsxs("div", { className: 'flex items-center text-sm font-medium gap-0.5', children: [jsxRuntime.jsx("span", { className: 'text-default truncate', children: title }), required && jsxRuntime.jsx("div", { className: 'text-red-500 truncate', children: "*" })] }), jsxRuntime.jsx("div", { className: 'grid flex-1 items-center pt-1', children: isLoading ? jsxRuntime.jsx(Skeleton, { className: 'h-5 w-full rounded-lg' }) : jsxRuntime.jsx("div", { className: 'text-zinc-500 truncate', children: value }) }), value2 && (jsxRuntime.jsx("div", { className: 'grid flex-1 items-center pt-1', children: isLoading ? jsxRuntime.jsx(Skeleton, { className: 'h-5 w-full rounded-lg' }) : jsxRuntime.jsx("div", { className: 'text-zinc-500 truncate', children: value2 }) })), jsxRuntime.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: jsxRuntime.jsx(TooltipProvider, { children: jsxRuntime.jsxs(Tooltip, { children: [jsxRuntime.jsx(TooltipTrigger, { asChild: true, children: jsxRuntime.jsx(Button, { variant: 'ghost', type: 'button', className: cn('p-1 h-8', !showCopyIcon && 'cursor-default'), onClick: handleCopy, children: jsxRuntime.jsx(lucideReact.Copy, { size: 16 }) }) }), jsxRuntime.jsx(TooltipContent, { children: "Copiar" })] }) }) })] }) }) }));
3248
+ };
3249
+
3250
+ const NotFound = () => {
3251
+ return (jsxRuntime.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: jsxRuntime.jsxs("div", { className: 'flex flex-col items-center justify-center gap-8 w-[424px]', children: [jsxRuntime.jsxs("div", { className: 'flex flex-col items-center w-full', children: [jsxRuntime.jsx("div", { className: 'text-5xl font-extrabold', children: "404" }), jsxRuntime.jsx("div", { className: 'text-3xl font-semibold', children: "P\u00E1gina Indispon\u00EDvel" })] }), jsxRuntime.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" }), jsxRuntime.jsx("div", { className: 'flex justify-center w-full', children: jsxRuntime.jsxs(Button, { onClick: () => {
3252
+ window.location.href = '/';
3253
+ }, className: '[&_svg]:size-5', children: [jsxRuntime.jsx(lucideReact.BarChart2, {}), "Voltar Para Inicial"] }) })] }) }));
3254
+ };
3255
+
3256
+ const SidebarItemTwoLines = ({ item }) => {
3257
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: '[&_svg]:size-4 text-white', children: item.iconLeft }), jsxRuntime.jsxs("div", { className: 'grid flex-1 text-left text-sm leading-tight', children: [jsxRuntime.jsx("span", { className: 'truncate font-semibold', children: item.title }), jsxRuntime.jsx("span", { className: 'truncate text-xs text-foreground', children: item.subTitle })] }), item.iconRight] }));
3258
+ };
3259
+
3260
+ const ModuleSwitcher = ({ modules, activeModule, onModuleChange }) => {
3261
+ const { isMobile } = useSidebar();
3262
+ return modules.length === 1 ? (jsxRuntime.jsx(SidebarMenuButton, { size: 'lg', className: 'data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground', children: jsxRuntime.jsx(SidebarItemTwoLines, { item: {
3263
+ iconLeft: jsxRuntime.jsx("div", { className: 'flex p-[7.6px] items-center rounded-md bg-background-primary', children: activeModule?.icon }),
3264
+ title: activeModule?.title ?? '',
3265
+ subTitle: activeModule?.subTitle ?? '',
3266
+ } }) })) : (jsxRuntime.jsx(SidebarMenu, { children: jsxRuntime.jsx(SidebarMenuItem, { children: jsxRuntime.jsxs(DropdownMenu, { children: [jsxRuntime.jsx(DropdownMenuTrigger, { asChild: true, children: jsxRuntime.jsx(SidebarMenuButton, { size: 'lg', className: 'data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground', children: jsxRuntime.jsx(SidebarItemTwoLines, { item: {
3267
+ iconLeft: (jsxRuntime.jsx("div", { className: 'flex p-[7.6px] items-center rounded-md bg-background-primary', children: activeModule?.icon })),
3268
+ title: activeModule?.title ?? '',
3269
+ subTitle: activeModule?.subTitle ?? '',
3270
+ iconRight: jsxRuntime.jsx(lucideReact.ChevronsUpDown, { size: 16 }),
3271
+ } }) }) }), jsxRuntime.jsx(DropdownMenuContent, { className: 'w-[250px] rounded-lg', align: 'start', side: isMobile ? 'bottom' : 'right', sideOffset: 4, children: modules.map((module) => (jsxRuntime.jsx(DropdownMenuItem, { onClick: () => onModuleChange?.(module), className: 'gap-2 p-2', children: jsxRuntime.jsx(SidebarItemTwoLines, { item: {
3272
+ iconLeft: jsxRuntime.jsx("div", { className: 'flex p-[7.6px] items-center rounded-md bg-background-primary', children: module.icon }),
3273
+ title: module.title,
3274
+ subTitle: module.subTitle,
3275
+ iconRight: activeModule?.value === module.value ? jsxRuntime.jsx(lucideReact.Check, { size: 16 }) : null,
3276
+ } }) }, `module-switcher-${module.value}`))) })] }) }) }));
3277
+ };
3278
+
3279
+ const SidebarButton = ({ item, selectedRoute, onClick }) => {
3280
+ return (jsxRuntime.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, onClick: () => onClick?.(item.module ?? null, item.path), children: jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("div", { className: '[&_svg]:size-4 text-sidebar-foreground', children: item.icon }), jsxRuntime.jsx("span", { children: item.title })] }) }));
3281
+ };
3282
+
3283
+ const SidebarItem = ({ item, selectedRoute, onClick }) => {
3284
+ return (jsxRuntime.jsx(SidebarMenuItem, { children: jsxRuntime.jsx(SidebarButton, { item: item, selectedRoute: selectedRoute, onClick: onClick }) }));
3285
+ };
3286
+
3287
+ const NavFooter = ({ pages }) => {
3288
+ const navigate = reactRouterDom.useNavigate();
3289
+ const location = reactRouterDom.useLocation();
3290
+ const selectedRoutePath = location.pathname;
3291
+ return (jsxRuntime.jsx(SidebarGroup, { className: 'p-0', children: jsxRuntime.jsx(SidebarGroupContent, { children: jsxRuntime.jsx(SidebarMenu, { children: pages.map((item) => {
3292
+ return (jsxRuntime.jsx(SidebarItem, { item: item, selectedRoute: selectedRoutePath, onClick: () => navigate(item.path) }, `sidebar-menu-main-${item.path}`));
3293
+ }) }) }) }));
3294
+ };
3295
+
3296
+ const NavSubmenuCollapsible = ({ item, selectedRoute, onClick }) => {
3297
+ const { open, toggleSidebar } = useSidebar();
3298
+ const isOpen = () => {
3299
+ return selectedRoute?.includes(item.path) ?? false;
3300
+ };
3301
+ const handleToggleSidebar = () => {
3302
+ if (!open)
3303
+ toggleSidebar();
3304
+ };
3305
+ return (jsxRuntime.jsx(SidebarMenu, { children: jsxRuntime.jsx(Collapsible, { asChild: true, defaultOpen: isOpen(), children: jsxRuntime.jsxs(SidebarMenuItem, { children: [jsxRuntime.jsx(CollapsibleTrigger, { asChild: true, className: 'group/collapsible', children: jsxRuntime.jsxs(SidebarMenuButton, { tooltip: item.title, className: 'px-2 py-5 gap-3', onClick: () => handleToggleSidebar(), children: [item.icon, jsxRuntime.jsx("span", { children: item.title }), jsxRuntime.jsx(lucideReact.ChevronRight, { className: 'ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90' })] }) }), jsxRuntime.jsx(CollapsibleContent, { children: jsxRuntime.jsx(SidebarMenuSub, { children: item.subMenuItems?.map((subItem) => (jsxRuntime.jsx(SidebarMenuSubItem, { children: jsxRuntime.jsx(SidebarMenuSubButton, { asChild: true, onClick: () => onClick(subItem.path), "aria-disabled": subItem.disabled, children: jsxRuntime.jsx("div", { className: cn('cursor-pointer px-2 py-1 items-center self-stretch', selectedRoute === subItem.path ? 'bg-sidebar-accent' : ''), children: jsxRuntime.jsx("span", { children: subItem.label }) }) }) }, subItem.label))) }) })] }) }, item.title) }));
3306
+ };
3307
+
3308
+ const NavSubmenuDropdown = ({ cols, item, selectedRoute, onClick }) => {
3309
+ return (jsxRuntime.jsx(SidebarMenuItem, { children: jsxRuntime.jsxs(DropdownMenu, { children: [jsxRuntime.jsx(DropdownMenuTrigger, { asChild: true, children: jsxRuntime.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: jsxRuntime.jsxs("div", { children: [item.icon, jsxRuntime.jsx("span", { children: item.title }), jsxRuntime.jsx(lucideReact.ChevronRight, { className: 'ml-auto' })] }) }) }), jsxRuntime.jsx(DropdownMenuContent, { className: `grid grid-cols-${cols ?? '1'} gap-4 p-4`, align: 'start', side: 'right', sideOffset: 4, children: item.subMenuItems?.map((subItem, index) => (jsxRuntime.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: [jsxRuntime.jsx("div", { className: 'text-sm font-semibold', children: subItem.label }), jsxRuntime.jsx("div", { className: 'text-sm text-muted-foreground', children: subItem.description })] }, `${index}`))) })] }) }));
3310
+ };
3311
+
3312
+ const SidebarSubmenuType = {
3313
+ COLLAPSIBLE: 'collapsible',
3314
+ // Deprecated: Use COLLAPSIBLE instead
3315
+ DROPDOWN: 'dropdown',
3316
+ };
3317
+
3318
+ const NavMain = ({ pages }) => {
3319
+ const navigate = reactRouterDom.useNavigate();
3320
+ const location = reactRouterDom.useLocation();
3321
+ const isMobile = useIsMobile();
3322
+ const selectedRoutePath = location.pathname;
3323
+ return (jsxRuntime.jsx(SidebarGroup, { children: jsxRuntime.jsx(SidebarGroupContent, { children: jsxRuntime.jsx(SidebarMenu, { children: pages.map((item) => {
3324
+ if (item.subMenuType) {
3325
+ if (item.subMenuType === SidebarSubmenuType.COLLAPSIBLE || isMobile) {
3326
+ return (jsxRuntime.jsx(NavSubmenuCollapsible, { item: item, selectedRoute: selectedRoutePath, onClick: (path) => navigate(path) }, `sidebar-submenu-collapsible-${item.path}`));
3327
+ }
3328
+ // Deprecated: Use COLLAPSIBLE instead
3329
+ if (item.subMenuType === SidebarSubmenuType.DROPDOWN) {
3330
+ return (jsxRuntime.jsx(NavSubmenuDropdown, { item: item, selectedRoute: selectedRoutePath, onClick: (path) => navigate(path), cols: 3 }, `sidebar-submenu-dropdown-${item.path}`));
3331
+ }
3332
+ }
3333
+ return (jsxRuntime.jsx(SidebarItem, { item: item, selectedRoute: selectedRoutePath, onClick: () => navigate(item.path) }, `sidebar-menu-main-${item.path}`));
3334
+ }) }) }) }));
3335
+ };
3336
+
3337
+ const NavUser = ({ userName, userEmail, userInitials, callbackLogout }) => {
3338
+ const [isLoggingOut, setIsLoggingOut] = React.useState(false);
3339
+ const { isMobile } = useSidebar();
3340
+ const handleLogout = () => {
3341
+ setIsLoggingOut(true);
3342
+ setTimeout(() => {
3343
+ callbackLogout();
3344
+ }, 1000);
3345
+ };
3346
+ return (jsxRuntime.jsx(SidebarMenu, { children: jsxRuntime.jsx(SidebarMenuItem, { children: jsxRuntime.jsxs(DropdownMenu, { children: [jsxRuntime.jsx(DropdownMenuTrigger, { asChild: true, children: jsxRuntime.jsx(SidebarMenuButton, { size: 'lg', className: 'data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground', children: jsxRuntime.jsx(SidebarItemTwoLines, { item: {
3347
+ iconLeft: (jsxRuntime.jsxs(Avatar, { className: 'h-[31px] w-[31px] rounded-md', children: [jsxRuntime.jsx(AvatarImage, { src: userInitials, alt: userName }), jsxRuntime.jsx(AvatarFallback, { className: 'rounded-md bg-background-primary text-white', children: userInitials })] })),
3348
+ title: isLoggingOut ? 'Saindo...' : userName,
3349
+ subTitle: isLoggingOut ? '' : userEmail,
3350
+ iconRight: isLoggingOut ? (jsxRuntime.jsx(lucideReact.LoaderCircle, { size: 16, className: 'text-sidebar-foreground animate-spin mr-2' })) : (jsxRuntime.jsx(lucideReact.LogOut, { size: 16, className: 'text-sidebar-foreground' })),
3351
+ } }) }) }), jsxRuntime.jsxs(DropdownMenuContent, { className: 'w-[250px] rounded-lg', side: isMobile ? 'bottom' : 'right', align: 'end', sideOffset: 4, children: [jsxRuntime.jsx(DropdownMenuLabel, { className: 'p-0 font-normal', children: jsxRuntime.jsxs("div", { className: 'flex items-center gap-2 px-1 py-1.5 text-left text-sm', children: [jsxRuntime.jsxs(Avatar, { className: 'h-8 w-8 rounded-lg', children: [jsxRuntime.jsx(AvatarImage, { src: userInitials, alt: userName }), jsxRuntime.jsx(AvatarFallback, { className: 'rounded-lg bg-background-primary text-white', children: userInitials })] }), jsxRuntime.jsxs("div", { className: 'grid flex-1 text-left text-sm leading-tight', children: [jsxRuntime.jsx("span", { className: 'truncate font-semibold', children: userName }), jsxRuntime.jsx("span", { className: 'truncate text-xs', children: userEmail })] })] }) }), jsxRuntime.jsx(DropdownMenuItem, { className: 'p-0 font-normal cursor-pointer', onClick: () => handleLogout(), children: jsxRuntime.jsxs("div", { className: 'flex items-center gap-2 px-1 py-1.5 text-left text-sm', children: [jsxRuntime.jsx("div", { className: 'flex w-8 h-8 p-2 items-center rounded-md', children: jsxRuntime.jsx(lucideReact.LogOut, { size: 16 }) }), "Log out"] }) })] })] }) }) }));
3352
+ };
3353
+
3354
+ function DataTableExport({ exportData, totalRows }) {
3355
+ const ExportDataSchema = zod.z.object({
3356
+ model: zod.z.string(),
3357
+ format: zod.z.string(),
3358
+ });
3359
+ const form = reactHookForm.useForm({
3360
+ mode: 'onTouched',
3361
+ resolver: zod$1.zodResolver(ExportDataSchema),
3362
+ });
3363
+ const { control, trigger, handleSubmit } = form;
3364
+ const exportXlSX = () => {
3365
+ if (!exportData)
3366
+ return;
3367
+ if (totalRows === 0) {
3368
+ toast({
3369
+ title: 'Não há dados para exportar.',
3370
+ variant: 'destructive',
3371
+ });
3372
+ return {};
3373
+ }
3374
+ const params = new URLSearchParams(exportData.params).toString();
3375
+ window.open(`${exportData.url}?${params}`, '_blank');
3376
+ };
3377
+ const renderExport = () => {
3378
+ if (!exportData)
3379
+ return null;
3380
+ if (exportData.type === 'xlsx') {
3381
+ return (jsxRuntime.jsx(Button, { variant: 'secondary', onClick: exportXlSX, children: "Exportar" }));
3382
+ }
3383
+ if (exportData.type === 'dialog') {
3384
+ const onSubmit = async (_values) => {
3385
+ await trigger();
3386
+ toast({
3387
+ title: 'Em desenvolvimento.',
3388
+ variant: 'destructive',
3389
+ });
3390
+ };
3391
+ const onError = async (_errors) => {
3392
+ toast({
3393
+ title: 'Erro ao salvar',
3394
+ description: 'Verifique os campos obrigatórios',
3395
+ variant: 'destructive',
3396
+ });
3397
+ };
3398
+ return (jsxRuntime.jsx(Form, { ...form, onSubmit: handleSubmit(onSubmit, onError), children: jsxRuntime.jsxs(Dialog, { children: [jsxRuntime.jsx(DialogTrigger, { asChild: true, children: jsxRuntime.jsx(Button, { variant: 'secondary', children: "Exportar" }) }), jsxRuntime.jsxs(DialogContent, { hideClose: true, className: 'fixed p-6 rounded-lg w-[451px]', children: [jsxRuntime.jsxs(DialogHeader, { children: [jsxRuntime.jsx(DialogTitle, { children: "Exportar" }), jsxRuntime.jsx(DialogDescription, {})] }), jsxRuntime.jsxs("div", { className: 'flex flex-col gap-6', children: [jsxRuntime.jsx(FormRadioGroup, { control: control, name: 'model', label: 'Selecione o modelo de visualiza\u00E7\u00E3o', options: [
3399
+ { value: '0', label: 'Resumido' },
3400
+ { value: '1', label: 'Detalhado' },
3401
+ ], className: 'text-sm font-normal', classNameOptions: 'flex flex-col gap-4 mt-4 text-sm font-normal' }), jsxRuntime.jsx(FormRadioGroup, { control: control, name: 'format', label: 'Selecione o formato desejado para exporta\u00E7\u00E3o', options: [
3402
+ { value: '0', label: 'PDF' },
3403
+ { value: '1', label: 'XLSX' },
3404
+ ], className: 'text-sm font-normal', classNameOptions: 'flex flex-col gap-4 mt-4 text-sm font-normal' })] }), jsxRuntime.jsxs(DialogFooter, { className: 'sm:justify-end gap-2', children: [jsxRuntime.jsx(Button, { type: 'button', variant: 'secondary', children: "Fechar" }), jsxRuntime.jsx(Button, { type: 'button', variant: 'default', onClick: () => exportXlSX(), children: "Exportar" })] })] })] }) }));
3405
+ }
3406
+ return null;
3407
+ };
3408
+ return exportData && renderExport();
3409
+ }
3410
+
3411
+ function DataTableFooter({ isLoading, totalRows, totalPages, currentPage, hidePagination, disablePagination, pagination, handlePageSize, handlePage, previousPage, nextPage, exportData, }) {
3412
+ const renderPaginationPages = () => {
3413
+ const paginationItems = [];
3414
+ const createPaginationItem = (pageIndex) => (jsxRuntime.jsx(PaginationItem, { children: jsxRuntime.jsx(PaginationLink, { onClick: () => handlePage(pageIndex), isActive: currentPage === pageIndex, children: pageIndex + 1 }) }, pageIndex));
3415
+ // Add first page
3416
+ paginationItems.push(createPaginationItem(0));
3417
+ // Add ellipsis if needed
3418
+ if (currentPage > 2) {
3419
+ paginationItems.push(jsxRuntime.jsx(PaginationEllipsis, {}, 'start-ellipsis'));
3420
+ }
3421
+ // Add pages before current page
3422
+ for (let i = Math.max(1, currentPage - 1); i < currentPage; i++) {
3423
+ paginationItems.push(createPaginationItem(i));
3424
+ }
3425
+ // Add current page
3426
+ if (currentPage !== 0 && currentPage !== totalPages - 1) {
3427
+ paginationItems.push(createPaginationItem(currentPage));
3428
+ }
3429
+ // Add pages after current page
3430
+ for (let i = currentPage + 1; i <= Math.min(totalPages - 2, currentPage + 1); i++) {
3431
+ paginationItems.push(createPaginationItem(i));
3432
+ }
3433
+ // Add ellipsis if needed
3434
+ if (currentPage < totalPages - 3) {
3435
+ paginationItems.push(jsxRuntime.jsx(PaginationEllipsis, {}, 'end-ellipsis'));
3436
+ }
3437
+ // Add last page
3438
+ if (totalPages > 1) {
3439
+ paginationItems.push(createPaginationItem(totalPages - 1));
3440
+ }
3441
+ return paginationItems;
3442
+ };
3443
+ return (!hidePagination && (jsxRuntime.jsxs("footer", { className: 'flex items-center justify-between h-[64px]', children: [jsxRuntime.jsxs("div", { className: 'flex flex-row items-center gap-6', children: [jsxRuntime.jsxs("div", { className: 'flex flex-row items-center gap-2', children: ["Linhas por p\u00E1gina", jsxRuntime.jsxs(Select, { value: pagination.pageSize.toString(), onValueChange: (value) => handlePageSize(Number(value)), disabled: isLoading || disablePagination, children: [jsxRuntime.jsx(SelectTrigger, { className: 'w-20', children: jsxRuntime.jsx(SelectValue, { placeholder: '', className: 'text-slate-800 font-medium' }) }), jsxRuntime.jsx(SelectContent, { children: jsxRuntime.jsxs(SelectGroup, { children: [jsxRuntime.jsx(SelectItem, { value: '25', children: "25" }), jsxRuntime.jsx(SelectItem, { value: '50', children: "50" }), jsxRuntime.jsx(SelectItem, { value: '100', children: "100" })] }) })] })] }), jsxRuntime.jsx(DataTableExport, { exportData: exportData, totalRows: totalPages })] }), jsxRuntime.jsxs("div", { className: 'flex items-center gap-4', children: [jsxRuntime.jsx("div", { children: !isLoading && (jsxRuntime.jsx(Badge, { variant: 'secondary', children: totalRows === 0 ? 'Nenhum item' : totalRows === 1 ? '1 item' : `${totalRows} itens` })) }), jsxRuntime.jsx("div", { children: jsxRuntime.jsx(Pagination, { children: jsxRuntime.jsxs(PaginationContent, { children: [jsxRuntime.jsx(PaginationItem, { children: jsxRuntime.jsx(PaginationPrevious, { onClick: () => previousPage.action(), disabled: previousPage.disabled || disablePagination }) }), renderPaginationPages(), jsxRuntime.jsx(PaginationItem, { children: jsxRuntime.jsx(PaginationNext, { onClick: () => nextPage.action(), disabled: nextPage.disabled || disablePagination }) })] }) }) })] })] })));
3444
+ }
3445
+
3261
3446
  function DataTableHeader({ table, canActionsRow, enableMultiRowSelection }) {
3262
3447
  const headerGroups = table.getHeaderGroups();
3263
3448
  return (jsxRuntime.jsx(TableHeader, { children: headerGroups.map((headerGroup) => (jsxRuntime.jsxs(TableRow, { className: 'bg-background dark:bg-datatable-accent rounded-t-md sticky top-0 z-10', children: [enableMultiRowSelection && (jsxRuntime.jsx(TableHead, { className: 'h-[65px] w-6', children: jsxRuntime.jsx(Checkbox, { checked: table.getIsAllPageRowsSelected() || (table.getIsSomePageRowsSelected() && 'indeterminate'), onCheckedChange: (value) => table.toggleAllPageRowsSelected(!!value) }) })), headerGroup.headers.map((header) => (jsxRuntime.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 ? (jsxRuntime.jsxs(Button, { variant: 'ghost', onClick: () => header.column.toggleSorting(header.column.getIsSorted() === 'asc'), children: [reactTable.flexRender(header.column.columnDef.header, header.getContext()), header.column.getIsSorted() === 'asc' ? (jsxRuntime.jsx(lucideReact.MoveUp, { className: 'ml-2 h-4 w-4' })) : header.column.getIsSorted() === 'desc' ? (jsxRuntime.jsx(lucideReact.MoveDown, { className: 'ml-2 h-4 w-4' })) : (jsxRuntime.jsx(lucideReact.ArrowUpDown, { className: 'ml-2 h-4 w-4' }))] })) : (reactTable.flexRender(header.column.columnDef.header, header.getContext())) }, header.id))), canActionsRow && jsxRuntime.jsx(TableHead, {})] }, headerGroup.id))) }));
@@ -3371,191 +3556,6 @@ function DataTable({ columns, data, className, title, rowsPage, actions, actions
3371
3556
  }, 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 && (jsxRuntime.jsxs(Sheet, { open: filtersActions.filterOpen, onOpenChange: filtersActions.setFilterOpen, children: [jsxRuntime.jsx(SheetTrigger, { asChild: true, children: jsxRuntime.jsxs(Button, { variant: 'secondary', type: 'button', children: [jsxRuntime.jsx(lucideReact.Filter, { size: 20, className: 'h-4 w-4' }), " Filtros", filtersActions.countFilters > 0 && (jsxRuntime.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 }))] }) }), jsxRuntime.jsxs(SheetContent, { children: [jsxRuntime.jsxs(SheetHeader, { children: [jsxRuntime.jsx(SheetTitle, { children: "Filtros" }), jsxRuntime.jsx(SheetDescription, {})] }), jsxRuntime.jsx("div", { className: 'flex flex-col py-6', children: filtersActions.fields })] })] }))] }), customFilters, jsxRuntime.jsx("div", { className: 'flex space-x-4 content-end', children: actions?.map((action, index) => (jsxRuntime.jsx("div", { children: jsxRuntime.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: [jsxRuntime.jsx("div", { className: '[&_svg]:size-5', children: action.icon }), action.label] }) }, `action-table-${index}`))) })] })), jsxRuntime.jsxs("div", { className: `flex-1 flex flex-col rounded-md border ${className}`, children: [jsxRuntime.jsx("div", { className: 'flex items-center justify-between', children: title && jsxRuntime.jsx("div", { className: 'text-h4 p-4', children: title }) }), jsxRuntime.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: jsxRuntime.jsxs(Table, { children: [jsxRuntime.jsx(DataTableHeader, { table: table, canActionsRow: actionsRow && actionsRow.length > 0, enableMultiRowSelection: enableMultiRowSelection }), jsxRuntime.jsx(TableBody, { className: 'bg-background', children: jsxRuntime.jsx(DataTableRows, { table: table, columns: columns, isLoading: isLoading, actionsRow: actionsRow, textNoRecords: textNoRecords, enableMultiRowSelection: enableMultiRowSelection }) })] }) })] }), jsxRuntime.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 })] }));
3372
3557
  }
3373
3558
 
3374
- const SidebarItemTwoLines = ({ item }) => {
3375
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: '[&_svg]:size-4 text-white', children: item.iconLeft }), jsxRuntime.jsxs("div", { className: 'grid flex-1 text-left text-sm leading-tight', children: [jsxRuntime.jsx("span", { className: 'truncate font-semibold', children: item.title }), jsxRuntime.jsx("span", { className: 'truncate text-xs text-foreground', children: item.subTitle })] }), item.iconRight] }));
3376
- };
3377
-
3378
- const ModuleSwitcher = ({ modules, activeModule, onModuleChange }) => {
3379
- const { isMobile } = useSidebar();
3380
- return modules.length === 1 ? (jsxRuntime.jsx(SidebarMenuButton, { size: 'lg', className: 'data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground', children: jsxRuntime.jsx(SidebarItemTwoLines, { item: {
3381
- iconLeft: jsxRuntime.jsx("div", { className: 'flex p-[7.6px] items-center rounded-md bg-background-primary', children: activeModule?.icon }),
3382
- title: activeModule?.title ?? '',
3383
- subTitle: activeModule?.subTitle ?? '',
3384
- } }) })) : (jsxRuntime.jsx(SidebarMenu, { children: jsxRuntime.jsx(SidebarMenuItem, { children: jsxRuntime.jsxs(DropdownMenu, { children: [jsxRuntime.jsx(DropdownMenuTrigger, { asChild: true, children: jsxRuntime.jsx(SidebarMenuButton, { size: 'lg', className: 'data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground', children: jsxRuntime.jsx(SidebarItemTwoLines, { item: {
3385
- iconLeft: (jsxRuntime.jsx("div", { className: 'flex p-[7.6px] items-center rounded-md bg-background-primary', children: activeModule?.icon })),
3386
- title: activeModule?.title ?? '',
3387
- subTitle: activeModule?.subTitle ?? '',
3388
- iconRight: jsxRuntime.jsx(lucideReact.ChevronsUpDown, { size: 16 }),
3389
- } }) }) }), jsxRuntime.jsx(DropdownMenuContent, { className: 'w-[250px] rounded-lg', align: 'start', side: isMobile ? 'bottom' : 'right', sideOffset: 4, children: modules.map((module) => (jsxRuntime.jsx(DropdownMenuItem, { onClick: () => onModuleChange?.(module), className: 'gap-2 p-2', children: jsxRuntime.jsx(SidebarItemTwoLines, { item: {
3390
- iconLeft: jsxRuntime.jsx("div", { className: 'flex p-[7.6px] items-center rounded-md bg-background-primary', children: module.icon }),
3391
- title: module.title,
3392
- subTitle: module.subTitle,
3393
- iconRight: activeModule?.value === module.value ? jsxRuntime.jsx(lucideReact.Check, { size: 16 }) : null,
3394
- } }) }, `module-switcher-${module.value}`))) })] }) }) }));
3395
- };
3396
-
3397
- const SidebarButton = ({ item, selectedRoute, onClick }) => {
3398
- return (jsxRuntime.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, onClick: () => onClick?.(item.module ?? null, item.path), children: jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("div", { className: '[&_svg]:size-4 text-sidebar-foreground', children: item.icon }), jsxRuntime.jsx("span", { children: item.title })] }) }));
3399
- };
3400
-
3401
- const SidebarItem = ({ item, selectedRoute, onClick }) => {
3402
- return (jsxRuntime.jsx(SidebarMenuItem, { children: jsxRuntime.jsx(SidebarButton, { item: item, selectedRoute: selectedRoute, onClick: onClick }) }));
3403
- };
3404
-
3405
- const NavFooter = ({ pages }) => {
3406
- const navigate = reactRouterDom.useNavigate();
3407
- const location = reactRouterDom.useLocation();
3408
- const selectedRoutePath = location.pathname;
3409
- return (jsxRuntime.jsx(SidebarGroup, { className: 'p-0', children: jsxRuntime.jsx(SidebarGroupContent, { children: jsxRuntime.jsx(SidebarMenu, { children: pages.map((item) => {
3410
- return (jsxRuntime.jsx(SidebarItem, { item: item, selectedRoute: selectedRoutePath, onClick: () => navigate(item.path) }, `sidebar-menu-main-${item.path}`));
3411
- }) }) }) }));
3412
- };
3413
-
3414
- const NavSubmenuCollapsible = ({ item, selectedRoute, onClick }) => {
3415
- const { open, toggleSidebar } = useSidebar();
3416
- const isOpen = () => {
3417
- return selectedRoute?.includes(item.path) ?? false;
3418
- };
3419
- const handleToggleSidebar = () => {
3420
- if (!open)
3421
- toggleSidebar();
3422
- };
3423
- return (jsxRuntime.jsx(SidebarMenu, { children: jsxRuntime.jsx(Collapsible, { asChild: true, defaultOpen: isOpen(), children: jsxRuntime.jsxs(SidebarMenuItem, { children: [jsxRuntime.jsx(CollapsibleTrigger, { asChild: true, className: 'group/collapsible', children: jsxRuntime.jsxs(SidebarMenuButton, { tooltip: item.title, className: 'px-2 py-5 gap-3', onClick: () => handleToggleSidebar(), children: [item.icon, jsxRuntime.jsx("span", { children: item.title }), jsxRuntime.jsx(lucideReact.ChevronRight, { className: 'ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90' })] }) }), jsxRuntime.jsx(CollapsibleContent, { children: jsxRuntime.jsx(SidebarMenuSub, { children: item.subMenuItems
3424
- ?.map((subItem) => (jsxRuntime.jsx(SidebarMenuSubItem, { children: jsxRuntime.jsx(SidebarMenuSubButton, { asChild: true, onClick: () => onClick(subItem.path), "aria-disabled": subItem.disabled, children: jsxRuntime.jsx("div", { className: cn('cursor-pointer px-2 py-1 items-center self-stretch', selectedRoute === subItem.path ? 'bg-sidebar-accent' : ''), children: jsxRuntime.jsx("span", { children: subItem.label }) }) }) }, subItem.label))) }) })] }) }, item.title) }));
3425
- };
3426
-
3427
- const NavSubmenuDropdown = ({ cols, item, selectedRoute, onClick }) => {
3428
- return (jsxRuntime.jsx(SidebarMenuItem, { children: jsxRuntime.jsxs(DropdownMenu, { children: [jsxRuntime.jsx(DropdownMenuTrigger, { asChild: true, children: jsxRuntime.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: jsxRuntime.jsxs("div", { children: [item.icon, jsxRuntime.jsx("span", { children: item.title }), jsxRuntime.jsx(lucideReact.ChevronRight, { className: 'ml-auto' })] }) }) }), jsxRuntime.jsx(DropdownMenuContent, { className: `grid grid-cols-${cols ?? '1'} gap-4 p-4`, align: 'start', side: 'right', sideOffset: 4, children: item.subMenuItems
3429
- ?.map((subItem, index) => (jsxRuntime.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: [jsxRuntime.jsx("div", { className: 'text-sm font-semibold', children: subItem.label }), jsxRuntime.jsx("div", { className: 'text-sm text-muted-foreground', children: subItem.description })] }, `${index}`))) })] }) }));
3430
- };
3431
-
3432
- const SidebarSubmenuType = {
3433
- COLLAPSIBLE: 'collapsible',
3434
- // Deprecated: Use COLLAPSIBLE instead
3435
- DROPDOWN: 'dropdown',
3436
- };
3437
-
3438
- const NavMain = ({ pages }) => {
3439
- const navigate = reactRouterDom.useNavigate();
3440
- const location = reactRouterDom.useLocation();
3441
- const isMobile = useIsMobile();
3442
- const selectedRoutePath = location.pathname;
3443
- return (jsxRuntime.jsx(SidebarGroup, { children: jsxRuntime.jsx(SidebarGroupContent, { children: jsxRuntime.jsx(SidebarMenu, { children: pages.map((item) => {
3444
- if (item.subMenuType) {
3445
- if (item.subMenuType === SidebarSubmenuType.COLLAPSIBLE || isMobile) {
3446
- return (jsxRuntime.jsx(NavSubmenuCollapsible, { item: item, selectedRoute: selectedRoutePath, onClick: (path) => navigate(path) }, `sidebar-submenu-collapsible-${item.path}`));
3447
- }
3448
- // Deprecated: Use COLLAPSIBLE instead
3449
- if (item.subMenuType === SidebarSubmenuType.DROPDOWN) {
3450
- return (jsxRuntime.jsx(NavSubmenuDropdown, { item: item, selectedRoute: selectedRoutePath, onClick: (path) => navigate(path), cols: 3 }, `sidebar-submenu-dropdown-${item.path}`));
3451
- }
3452
- }
3453
- return (jsxRuntime.jsx(SidebarItem, { item: item, selectedRoute: selectedRoutePath, onClick: () => navigate(item.path) }, `sidebar-menu-main-${item.path}`));
3454
- }) }) }) }));
3455
- };
3456
-
3457
- const NavUser = ({ userName, userEmail, userInitials, callbackLogout }) => {
3458
- const [isLoggingOut, setIsLoggingOut] = React.useState(false);
3459
- const { isMobile } = useSidebar();
3460
- const handleLogout = () => {
3461
- setIsLoggingOut(true);
3462
- setTimeout(() => {
3463
- callbackLogout();
3464
- }, 1000);
3465
- };
3466
- return (jsxRuntime.jsx(SidebarMenu, { children: jsxRuntime.jsx(SidebarMenuItem, { children: jsxRuntime.jsxs(DropdownMenu, { children: [jsxRuntime.jsx(DropdownMenuTrigger, { asChild: true, children: jsxRuntime.jsx(SidebarMenuButton, { size: 'lg', className: 'data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground', children: jsxRuntime.jsx(SidebarItemTwoLines, { item: {
3467
- iconLeft: (jsxRuntime.jsxs(Avatar, { className: 'h-[31px] w-[31px] rounded-md', children: [jsxRuntime.jsx(AvatarImage, { src: userInitials, alt: userName }), jsxRuntime.jsx(AvatarFallback, { className: 'rounded-md bg-background-primary text-white', children: userInitials })] })),
3468
- title: isLoggingOut ? 'Saindo...' : userName,
3469
- subTitle: isLoggingOut ? '' : userEmail,
3470
- iconRight: isLoggingOut ? (jsxRuntime.jsx(lucideReact.LoaderCircle, { size: 16, className: 'text-sidebar-foreground animate-spin mr-2' })) : (jsxRuntime.jsx(lucideReact.LogOut, { size: 16, className: 'text-sidebar-foreground' })),
3471
- } }) }) }), jsxRuntime.jsxs(DropdownMenuContent, { className: 'w-[250px] rounded-lg', side: isMobile ? 'bottom' : 'right', align: 'end', sideOffset: 4, children: [jsxRuntime.jsx(DropdownMenuLabel, { className: 'p-0 font-normal', children: jsxRuntime.jsxs("div", { className: 'flex items-center gap-2 px-1 py-1.5 text-left text-sm', children: [jsxRuntime.jsxs(Avatar, { className: 'h-8 w-8 rounded-lg', children: [jsxRuntime.jsx(AvatarImage, { src: userInitials, alt: userName }), jsxRuntime.jsx(AvatarFallback, { className: 'rounded-lg bg-background-primary text-white', children: userInitials })] }), jsxRuntime.jsxs("div", { className: 'grid flex-1 text-left text-sm leading-tight', children: [jsxRuntime.jsx("span", { className: 'truncate font-semibold', children: userName }), jsxRuntime.jsx("span", { className: 'truncate text-xs', children: userEmail })] })] }) }), jsxRuntime.jsx(DropdownMenuItem, { className: 'p-0 font-normal cursor-pointer', onClick: () => handleLogout(), children: jsxRuntime.jsxs("div", { className: 'flex items-center gap-2 px-1 py-1.5 text-left text-sm', children: [jsxRuntime.jsx("div", { className: 'flex w-8 h-8 p-2 items-center rounded-md', children: jsxRuntime.jsx(lucideReact.LogOut, { size: 16 }) }), "Log out"] }) })] })] }) }) }));
3472
- };
3473
-
3474
- const Header = ({ splittedPath, modules, pages, isLoading, combobox, }) => {
3475
- const { portalDefinitions } = useTheme();
3476
- const navigate = reactRouterDom.useNavigate();
3477
- const refProgressLoading = React.useRef(null);
3478
- const lastPage = splittedPath[splittedPath.length - 1];
3479
- React.useEffect(() => {
3480
- isLoading ? refProgressLoading.current?.start() : refProgressLoading.current?.complete();
3481
- }, [isLoading]);
3482
- const setRouter = (path) => {
3483
- navigate(path);
3484
- };
3485
- const getPath = (index) => {
3486
- let path = '';
3487
- for (let i = 0; i <= index; i++) {
3488
- path += `/${splittedPath[i]}`;
3489
- }
3490
- return path;
3491
- };
3492
- const getLinkSidebar = (index) => {
3493
- return pages.find((item) => item.path === getPath(index));
3494
- };
3495
- const getSubMenuItem = (index) => {
3496
- return pages.flatMap((item) => item.subMenuItems || []).find((sub) => sub.path === getPath(index));
3497
- };
3498
- const getModule = (page) => {
3499
- const module = modules.find((mod) => mod.value === page);
3500
- if (!module) {
3501
- return page;
3502
- }
3503
- return module?.title;
3504
- };
3505
- const getTitle = (index) => {
3506
- const linkSidebar = getLinkSidebar(index);
3507
- const subMenuItem = getSubMenuItem(index);
3508
- if (subMenuItem) {
3509
- return subMenuItem.label;
3510
- }
3511
- return linkSidebar?.title;
3512
- };
3513
- const renderBreadcrumbPage = (index) => {
3514
- return jsxRuntime.jsx(BreadcrumbPage, { children: getTitle(index) });
3515
- };
3516
- const renderBreadcrumbLink = (page, index) => {
3517
- const linkSidebar = getLinkSidebar(index);
3518
- return linkSidebar?.subMenuType ? (renderBreadcrumbPage(index)) : (jsxRuntime.jsx(BreadcrumbLink, { onClick: () => setRouter(getPath(index)), className: 'cursor-pointer', children: index === 0 ? getModule(page) : getTitle(index) }));
3519
- };
3520
- const renderBreadcrumbItens = () => {
3521
- const breadcrumbItems = [];
3522
- splittedPath.map((page, index) => {
3523
- breadcrumbItems.push(jsxRuntime.jsx(BreadcrumbItem, { children: page === lastPage ? renderBreadcrumbPage(index) : renderBreadcrumbLink(page, index) }, `breadcrumb-item-${index}`));
3524
- if (page !== lastPage) {
3525
- breadcrumbItems.push(jsxRuntime.jsx(BreadcrumbSeparator, { className: 'mt-[1px]' }, `breadcrumb-separator-${index}`));
3526
- }
3527
- });
3528
- return breadcrumbItems;
3529
- };
3530
- const getColorLoadingBar = () => {
3531
- const colorShades = getTailwindColorShades();
3532
- const tailwindColor = portalDefinitions?.mvnoPrimaryColor || DEFAULT_THEME_DATA.mvnoPrimaryColor;
3533
- const isValidColor = (color) => color in colorShades;
3534
- const colorPallete = isValidColor(tailwindColor) ? colorShades[tailwindColor] : colorShades.violet;
3535
- return colorPallete[900];
3536
- };
3537
- return (jsxRuntime.jsxs("header", { className: 'flex flex-col justify-between items-center w-full', children: [jsxRuntime.jsxs("div", { className: 'flex justify-between items-center py-3 px-5 w-full', children: [jsxRuntime.jsxs("div", { className: 'flex items-center gap-x-2 h-[40px]', children: [jsxRuntime.jsx(SidebarTrigger, { className: 'p-5' }), jsxRuntime.jsx("div", { className: 'p-2', children: jsxRuntime.jsx(Breadcrumb, { children: jsxRuntime.jsx(BreadcrumbList, { children: renderBreadcrumbItens() }) }) })] }), jsxRuntime.jsx("div", { className: 'flex items-center', children: combobox })] }), jsxRuntime.jsx(LoadingBar, { ref: refProgressLoading, color: getColorLoadingBar(), height: 7 })] }));
3538
- };
3539
-
3540
- const LabelWithTitle = ({ title, value, value2, required, showCopyIcon = false, className, isLoading }) => {
3541
- const handleCopy = () => {
3542
- if (showCopyIcon && value) {
3543
- navigator.clipboard.writeText(`${value}${value2 ?? ''}`);
3544
- toast({
3545
- title: `"${value}${value2 ?? ''}" foi copiado para a área de transferência.`,
3546
- variant: 'success',
3547
- });
3548
- }
3549
- };
3550
- return (jsxRuntime.jsx("div", { className: cn('flex group', className), children: jsxRuntime.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: jsxRuntime.jsxs("div", { className: 'relative', children: [jsxRuntime.jsxs("div", { className: 'flex items-center text-sm font-medium gap-0.5', children: [jsxRuntime.jsx("label", { className: 'text-default truncate', children: title }), required && jsxRuntime.jsx("div", { className: 'text-red-500 truncate', children: "*" })] }), jsxRuntime.jsx("div", { className: 'grid flex-1 items-center pt-1', children: isLoading ? jsxRuntime.jsx(Skeleton, { className: 'h-5 w-full rounded-lg' }) : jsxRuntime.jsx("div", { className: 'text-zinc-500 truncate', children: value }) }), value2 && (jsxRuntime.jsx("div", { className: 'grid flex-1 items-center pt-1', children: isLoading ? jsxRuntime.jsx(Skeleton, { className: 'h-5 w-full rounded-lg' }) : jsxRuntime.jsx("div", { className: 'text-zinc-500 truncate', children: value2 }) })), jsxRuntime.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: jsxRuntime.jsx(TooltipProvider, { children: jsxRuntime.jsxs(Tooltip, { children: [jsxRuntime.jsx(TooltipTrigger, { asChild: true, children: jsxRuntime.jsx(Button, { variant: 'ghost', type: 'button', className: cn('p-1 h-8', !showCopyIcon && 'cursor-default'), onClick: handleCopy, children: jsxRuntime.jsx(lucideReact.Copy, { size: 16 }) }) }), jsxRuntime.jsx(TooltipContent, { children: "Copiar" })] }) }) })] }) }) }));
3551
- };
3552
-
3553
- const NotFound = () => {
3554
- return (jsxRuntime.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: jsxRuntime.jsxs("div", { className: 'flex flex-col items-center justify-center gap-8 w-[424px]', children: [jsxRuntime.jsxs("div", { className: 'flex flex-col items-center w-full', children: [jsxRuntime.jsx("div", { className: 'text-5xl font-extrabold', children: "404" }), jsxRuntime.jsx("div", { className: 'text-3xl font-semibold', children: "P\u00E1gina Indispon\u00EDvel" })] }), jsxRuntime.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" }), jsxRuntime.jsx("div", { className: 'flex justify-center w-full', children: jsxRuntime.jsxs(Button, { onClick: () => {
3555
- window.location.href = '/';
3556
- }, className: '[&_svg]:size-5', children: [jsxRuntime.jsx(lucideReact.BarChart2, {}), "Voltar Para Inicial"] }) })] }) }));
3557
- };
3558
-
3559
3559
  function isUUIDv4(str) {
3560
3560
  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;
3561
3561
  return uuidV4Regex.test(str);
@@ -3588,7 +3588,7 @@ function styleInject(css, ref) {
3588
3588
  }
3589
3589
  }
3590
3590
 
3591
- 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}";
3591
+ 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}";
3592
3592
  styleInject(css_248z,{"insertAt":"top"});
3593
3593
 
3594
3594
  exports.Accordion = Accordion;
@@ -3850,6 +3850,7 @@ exports.cn = cn;
3850
3850
  exports.convertBytesToMB = convertBytesToMB;
3851
3851
  exports.convertDaysToMonth = convertDaysToMonth;
3852
3852
  exports.convertGbToMb = convertGbToMb;
3853
+ exports.convertInternetToDisplay = convertInternetToDisplay;
3853
3854
  exports.convertMbToGb = convertMbToGb;
3854
3855
  exports.convertMonthToDays = convertMonthToDays;
3855
3856
  exports.convertSecondsToMinutes = convertSecondsToMinutes;