@mlw-packages/react-components 1.10.16 → 1.10.18

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.mjs CHANGED
@@ -1,11 +1,11 @@
1
1
  import './index.css';
2
2
  import * as React32 from 'react';
3
- import React32__default, { forwardRef, useState, useEffect, createContext, useRef, useCallback, useMemo, useId, useContext, useLayoutEffect } from 'react';
3
+ import React32__default, { forwardRef, useState, useEffect, createContext, useRef, useCallback, memo, useMemo, useId, useContext, useLayoutEffect } from 'react';
4
4
  import { Slot } from '@radix-ui/react-slot';
5
5
  import { cva } from 'class-variance-authority';
6
6
  import { clsx } from 'clsx';
7
7
  import { twMerge } from 'tailwind-merge';
8
- import { XIcon, CircleNotchIcon, MagnifyingGlassIcon, CaretUpIcon, CaretDownIcon, CheckIcon, CaretRightIcon, CircleIcon, CloudArrowUpIcon, MinusIcon, CaretUpDownIcon, PencilSimpleIcon, ArrowsLeftRightIcon, FloppyDiskIcon, PlusIcon, TrashIcon, SidebarSimpleIcon, FilePdfIcon, FileDocIcon, FileXlsIcon, FilePptIcon, FileCsvIcon, FileTextIcon, FileImageIcon, FileVideoIcon, FileAudioIcon, FileZipIcon, FileIcon, DotsSixVerticalIcon, CopyIcon, InfoIcon, WarningIcon, XCircleIcon, CheckCircleIcon, SunIcon, MoonIcon, CaretLeftIcon, DownloadSimpleIcon, UploadSimpleIcon, ArrowClockwiseIcon, ArrowLeftIcon, GearIcon, BellIcon, DotsThreeIcon, FunnelIcon, HeartIcon, StarIcon, EyeIcon, EyeSlashIcon, LockIcon, LockOpenIcon, FolderIcon, ArrowRightIcon as ArrowRightIcon$1, ArrowsOutIcon, DownloadIcon, CalendarBlankIcon, CalendarIcon, MapPinIcon, CalendarDotsIcon, ClockIcon, AlignLeftIcon, CaretLeft, CaretRight, ArrowDownIcon, ClockUserIcon, EyeSlash, Eye, ArrowUpRightIcon, ArrowDownRightIcon, FunnelSimpleIcon, PencilIcon, FileArchiveIcon, TerminalIcon, CodeIcon, CalendarDotIcon as CalendarDotIcon$1, DesktopIcon } from '@phosphor-icons/react';
8
+ import { XIcon, CircleNotchIcon, MagnifyingGlassIcon, CaretUpIcon, CaretDownIcon, CheckIcon, CaretRightIcon, CircleIcon, CloudArrowUpIcon, MinusIcon, CaretUpDownIcon, PencilSimpleIcon, ArrowsLeftRightIcon, FloppyDiskIcon, PlusIcon, TrashIcon, SidebarSimpleIcon, ArrowElbowDownRightIcon, ArrowBendUpLeftIcon, CommandIcon, FilePdfIcon, FileDocIcon, FileXlsIcon, FilePptIcon, FileCsvIcon, FileTextIcon, FileImageIcon, FileVideoIcon, FileAudioIcon, FileZipIcon, FileIcon, DotsSixVerticalIcon, CopyIcon, InfoIcon, WarningIcon, XCircleIcon, CheckCircleIcon, SunIcon, MoonIcon, CaretLeftIcon, DownloadSimpleIcon, UploadSimpleIcon, ArrowClockwiseIcon, ArrowLeftIcon, GearIcon, BellIcon, DotsThreeIcon, FunnelIcon, HeartIcon, StarIcon, EyeIcon, EyeSlashIcon, LockIcon, LockOpenIcon, FolderIcon, ArrowRightIcon as ArrowRightIcon$1, ArrowsOutIcon, DownloadIcon, CalendarBlankIcon, CalendarIcon, MapPinIcon, CalendarDotsIcon, ClockIcon, AlignLeftIcon, CaretLeft, CaretRight, ArrowDownIcon, ClockUserIcon, EyeSlash, Eye, ArrowUpRightIcon, ArrowDownRightIcon, FunnelSimpleIcon, PencilIcon, ClockCounterClockwiseIcon, FileArchiveIcon, TerminalIcon, CodeIcon, CalendarDotIcon as CalendarDotIcon$1, DesktopIcon } from '@phosphor-icons/react';
9
9
  import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
10
10
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
11
11
  import * as DialogPrimitive from '@radix-ui/react-dialog';
@@ -37,12 +37,12 @@ import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
37
37
  import { Prism } from 'react-syntax-highlighter';
38
38
  import { format, startOfMonth, endOfMonth, eachDayOfInterval, isToday, isSameDay, differenceInCalendarDays, differenceInMinutes, isPast, startOfDay, eachHourOfInterval, addHours, getHours, getMinutes, areIntervalsOverlapping, startOfWeek, endOfWeek, isSameMonth, addDays, startOfYear, endOfYear, eachMonthOfInterval, differenceInDays, isBefore, addMinutes, subMonths, subWeeks, subYears, addMonths, addWeeks, addYears, isWithinInterval, add, max, min } from 'date-fns';
39
39
  import { ptBR } from 'date-fns/locale';
40
- import ptBR3 from 'date-fns/locale/pt-BR';
41
40
  import { useSensors, useSensor, MouseSensor, TouchSensor, PointerSensor, DndContext, DragOverlay, useDroppable, useDraggable } from '@dnd-kit/core';
42
41
  import { CSS } from '@dnd-kit/utilities';
43
42
  import { RadioGroup, RadioGroupItem } from '@radix-ui/react-radio-group';
44
43
  import { ResponsiveContainer, ComposedChart, XAxis, YAxis, Bar, Line, Area, CartesianGrid, Tooltip, Legend, LabelList, Rectangle } from 'recharts';
45
44
  import useEmblaCarousel from 'embla-carousel-react';
45
+ import { useVirtualizer } from '@tanstack/react-virtual';
46
46
 
47
47
  var __create = Object.create;
48
48
  var __defProp = Object.defineProperty;
@@ -2513,7 +2513,7 @@ function Combobox({
2513
2513
  ] });
2514
2514
  }
2515
2515
  var badgeVariants = cva(
2516
- "inline-flex items-center justify-center rounded-md border text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
2516
+ "inline-flex items-center justify-center rounded-md border text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden border-border",
2517
2517
  {
2518
2518
  variants: {
2519
2519
  size: {
@@ -2530,6 +2530,7 @@ var badgeVariants = cva(
2530
2530
  function Badge({
2531
2531
  className,
2532
2532
  color,
2533
+ rank,
2533
2534
  size = "md",
2534
2535
  asChild = false,
2535
2536
  children,
@@ -2546,6 +2547,12 @@ function Badge({
2546
2547
  blue: "bg-blue-50 text-blue-500 border-blue-200",
2547
2548
  purple: "bg-purple-50 text-purple-500 border-purple-200"
2548
2549
  };
2550
+ const rankClasses = {
2551
+ diamond: "bg-cyan-100 text-cyan-600 border-cyan-300",
2552
+ gold: "bg-yellow-100 text-yellow-500 border-yellow-300",
2553
+ silver: "bg-gray-100 text-gray-500 border-gray-300",
2554
+ bronze: "bg-orange-100 text-orange-700 border-orange-300"
2555
+ };
2549
2556
  return /* @__PURE__ */ jsx(
2550
2557
  Comp,
2551
2558
  {
@@ -2553,6 +2560,7 @@ function Badge({
2553
2560
  className: cn(
2554
2561
  badgeVariants({ size }),
2555
2562
  color ? colorClasses[color] : void 0,
2563
+ rank ? rankClasses[rank] : void 0,
2556
2564
  className
2557
2565
  ),
2558
2566
  style: customStyle,
@@ -7816,7 +7824,8 @@ function DateTimePicker({
7816
7824
  disabled,
7817
7825
  className,
7818
7826
  error,
7819
- hideClear = true
7827
+ hideClear = true,
7828
+ triggerIcon
7820
7829
  }) {
7821
7830
  const [internalDate, setInternalDate] = useState(date);
7822
7831
  const [open, setOpen] = useState(false);
@@ -7866,193 +7875,222 @@ function DateTimePicker({
7866
7875
  const { ref: contentRef, center } = use_auto_center_default(open);
7867
7876
  const basePopoverClass = "w-auto max-w-[calc(100vw-16px)] p-0 border-none shadow-none";
7868
7877
  const centeredPopoverClass = "w-auto max-w-[calc(100vw-16px)] p-0 border-none shadow-none fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-50";
7869
- const renderTriggerButton = () => /* @__PURE__ */ jsxs(
7870
- ButtonBase,
7871
- {
7872
- variant: "outline",
7873
- disabled,
7874
- className: cn(
7875
- "w-full justify-start text-left min-w-0 overflow-hidden",
7876
- !date && "text-muted-foreground"
7877
- ),
7878
- children: [
7879
- /* @__PURE__ */ jsx("span", { className: cn("truncate flex-1", !date && "text-muted-foreground"), children: date ? format(date, getDisplayFormat(), { locale: ptBR }) : "Selecione uma data" }),
7880
- /* @__PURE__ */ jsx(motion.span, { className: "flex items-center", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-row gap-0 items-center ", children: [
7881
- hideClear && (date || internalDate) && /* @__PURE__ */ jsx(
7882
- ClearButton,
7883
- {
7884
- onClick: (e) => {
7885
- e?.stopPropagation();
7886
- setInternalDate(null);
7887
- onChange?.(null);
7888
- onConfirm?.(null);
7889
- }
7890
- }
7891
- ),
7892
- /* @__PURE__ */ jsx(
7893
- motion.div,
7894
- {
7895
- animate: { rotate: open ? 15 : 0 },
7896
- transition: { duration: 0.03 },
7897
- children: /* @__PURE__ */ jsx(CalendarBlankIcon, { className: "h-4 w-4" })
7898
- }
7899
- )
7900
- ] }) })
7901
- ]
7878
+ const renderTriggerButton = () => {
7879
+ if (triggerIcon) {
7880
+ return /* @__PURE__ */ jsx(
7881
+ ButtonBase,
7882
+ {
7883
+ variant: "outline",
7884
+ size: "icon",
7885
+ disabled,
7886
+ className: cn("no-active-animation", error && "border-red-500"),
7887
+ children: /* @__PURE__ */ jsx(CalendarBlankIcon, { className: "h-4 w-4" })
7888
+ }
7889
+ );
7902
7890
  }
7903
- );
7904
- const renderPickerContent = () => /* @__PURE__ */ jsxs("div", { className: "p-2 sm:p-3 border border-border rounded-md", children: [
7905
- isMobile && !hideTime ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col min-h-0", children: [
7906
- internalDate && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-3 px-4 py-3 rounded-lg ", children: /* @__PURE__ */ jsxs("span", { className: "text-md font-semibold", children: [
7907
- format(internalDate, "dd 'de' MMMM 'de' yyyy", {
7908
- locale: ptBR
7909
- }),
7910
- " ",
7911
- "- ",
7912
- format(internalDate, hideSeconds ? "HH:mm" : "HH:mm:ss")
7913
- ] }) }),
7914
- /* @__PURE__ */ jsxs(TabsBase, { value: activeTab, onValueChange: setActiveTab, children: [
7915
- /* @__PURE__ */ jsxs(TabsListBase, { className: "", children: [
7916
- /* @__PURE__ */ jsx(TabsTriggerBase, { value: "calendar", className: "flex-1", children: "Data" }),
7917
- /* @__PURE__ */ jsx(TabsTriggerBase, { value: "time", className: "flex-1", children: "Hor\xE1rio" })
7918
- ] }),
7919
- /* @__PURE__ */ jsx(TabsContentBase, { value: "calendar", className: "mt-0", children: /* @__PURE__ */ jsx(
7920
- CalendarBase2,
7921
- {
7922
- mode: "single",
7923
- locale: ptBR,
7924
- selected: internalDate ?? void 0,
7925
- onSelect: (d) => handleSelect(d ?? null),
7926
- autoFocus: true,
7927
- defaultMonth: fromDate ?? toDate ?? internalDate ?? void 0,
7928
- ...fromDate && { startMonth: fromDate },
7929
- ...toDate && { endMonth: toDate },
7930
- ...fromDate || toDate ? {
7931
- disabled: [
7932
- ...fromDate ? [{ before: fromDate }] : [],
7933
- ...toDate ? [{ after: toDate }] : []
7934
- ]
7935
- } : {},
7936
- className: cn("w-full rounded-none border-none")
7937
- }
7938
- ) }),
7939
- /* @__PURE__ */ jsx(TabsContentBase, { value: "time", className: "mt-0", children: /* @__PURE__ */ jsx("div", { className: "flex flex-col items-center justify-center gap-4 py-2", children: /* @__PURE__ */ jsx(
7940
- TimeScrollPicker,
7941
- {
7942
- setDate: (d) => handleTimeChange(d ?? null),
7943
- date: internalDate,
7944
- hideSeconds
7945
- }
7946
- ) }) })
7947
- ] })
7948
- ] }) : /* @__PURE__ */ jsxs(
7949
- "div",
7891
+ return /* @__PURE__ */ jsxs(
7892
+ ButtonBase,
7950
7893
  {
7951
- ref: contentRef,
7952
- className: "flex flex-col sm:flex-row max-h-auto overflow-y-auto border-none rounded-md",
7894
+ variant: "outline",
7895
+ disabled,
7896
+ className: cn(
7897
+ "w-full justify-start text-left min-w-0 overflow-hidden",
7898
+ !date && "text-muted-foreground"
7899
+ ),
7953
7900
  children: [
7954
7901
  /* @__PURE__ */ jsx(
7955
- CalendarBase2,
7902
+ "span",
7956
7903
  {
7957
- mode: "single",
7958
- locale: ptBR,
7959
- selected: internalDate ?? void 0,
7960
- onSelect: (d) => handleSelect(d ?? null),
7961
- autoFocus: true,
7962
- defaultMonth: fromDate ?? toDate ?? internalDate ?? void 0,
7963
- ...fromDate && { startMonth: fromDate },
7964
- ...toDate && { endMonth: toDate },
7965
- ...fromDate || toDate ? {
7966
- disabled: [
7967
- ...fromDate ? [{ before: fromDate }] : [],
7968
- ...toDate ? [{ after: toDate }] : []
7969
- ]
7970
- } : {},
7971
- className: cn(
7972
- "w-max rounded-none border-none",
7973
- !hideTime && "sm:rounded-r-none"
7974
- )
7904
+ className: cn("truncate flex-1", !date && "text-muted-foreground"),
7905
+ children: date ? format(date, getDisplayFormat(), { locale: ptBR }) : "Selecione uma data"
7975
7906
  }
7976
7907
  ),
7977
- !hideTime && /* @__PURE__ */ jsxs(
7978
- "div",
7979
- {
7980
- className: cn(
7981
- "flex flex-col items-center justify-center",
7982
- "border-l"
7983
- ),
7984
- children: [
7985
- /* @__PURE__ */ jsx("div", { className: "text-[clamp(0.85rem,1.4vw,1.125rem)] sm:text-[clamp(0.9rem,1.6vw,1.125rem)] font-semibold capitalize text-left", children: "Hor\xE1rio" }),
7986
- /* @__PURE__ */ jsx(
7987
- TimeScrollPicker,
7988
- {
7989
- setDate: (d) => handleTimeChange(d ?? null),
7990
- date: internalDate,
7991
- hideSeconds
7992
- }
7993
- )
7994
- ]
7995
- }
7996
- )
7908
+ /* @__PURE__ */ jsx(motion.span, { className: "flex items-center", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-row gap-0 items-center ", children: [
7909
+ hideClear && (date || internalDate) && /* @__PURE__ */ jsx(
7910
+ ClearButton,
7911
+ {
7912
+ onClick: (e) => {
7913
+ e?.stopPropagation();
7914
+ setInternalDate(null);
7915
+ onChange?.(null);
7916
+ onConfirm?.(null);
7917
+ }
7918
+ }
7919
+ ),
7920
+ /* @__PURE__ */ jsx(
7921
+ motion.div,
7922
+ {
7923
+ animate: { rotate: open ? 15 : 0 },
7924
+ transition: { duration: 0.03 },
7925
+ children: /* @__PURE__ */ jsx(CalendarBlankIcon, { className: "h-4 w-4" })
7926
+ }
7927
+ )
7928
+ ] }) })
7997
7929
  ]
7998
7930
  }
7999
- ),
8000
- /* @__PURE__ */ jsxs("div", { className: "flex rounded-md p-1.5 gap-2", children: [
8001
- /* @__PURE__ */ jsx(
8002
- ButtonBase,
8003
- {
8004
- variant: "outline",
8005
- className: "no-active-animation",
8006
- tooltip: "Hoje",
8007
- size: "icon",
8008
- onClick: () => {
8009
- const now = /* @__PURE__ */ new Date();
8010
- const selected = hideTime ? new Date(
8011
- Date.UTC(
8012
- now.getUTCFullYear(),
8013
- now.getUTCMonth(),
8014
- now.getUTCDate(),
8015
- 0,
8016
- 0,
8017
- 0,
8018
- 0
8019
- )
8020
- ) : now;
8021
- setInternalDate(selected);
8022
- onChange?.(selected);
8023
- onConfirm?.(selected);
8024
- },
8025
- children: /* @__PURE__ */ jsx(CalendarDotIcon$1, { className: "h-4 w-4" })
8026
- }
7931
+ );
7932
+ };
7933
+ const renderPickerContent = () => /* @__PURE__ */ jsxs(
7934
+ "div",
7935
+ {
7936
+ className: cn(
7937
+ "p-2 sm:p-3",
7938
+ !isMobile && "border border-border rounded-md"
8027
7939
  ),
8028
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 sm:flex-row w-full gap-2", children: [
8029
- /* @__PURE__ */ jsx(
8030
- ButtonBase,
7940
+ children: [
7941
+ isMobile && !hideTime ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col min-h-0", children: [
7942
+ internalDate && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-3 px-4 py-3 rounded-lg ", children: /* @__PURE__ */ jsxs("span", { className: "text-md font-semibold", children: [
7943
+ format(internalDate, "dd 'de' MMMM 'de' yyyy", {
7944
+ locale: ptBR
7945
+ }),
7946
+ " ",
7947
+ "- ",
7948
+ format(internalDate, hideSeconds ? "HH:mm" : "HH:mm:ss")
7949
+ ] }) }),
7950
+ /* @__PURE__ */ jsxs(TabsBase, { value: activeTab, onValueChange: setActiveTab, children: [
7951
+ /* @__PURE__ */ jsxs(TabsListBase, { className: "", children: [
7952
+ /* @__PURE__ */ jsx(TabsTriggerBase, { value: "calendar", className: "flex-1", children: "Data" }),
7953
+ /* @__PURE__ */ jsx(TabsTriggerBase, { value: "time", className: "flex-1", children: "Hor\xE1rio" })
7954
+ ] }),
7955
+ /* @__PURE__ */ jsx(TabsContentBase, { value: "calendar", className: "mt-0", children: /* @__PURE__ */ jsx(
7956
+ CalendarBase2,
7957
+ {
7958
+ mode: "single",
7959
+ locale: ptBR,
7960
+ selected: internalDate ?? void 0,
7961
+ onSelect: (d) => handleSelect(d ?? null),
7962
+ autoFocus: true,
7963
+ defaultMonth: fromDate ?? toDate ?? internalDate ?? void 0,
7964
+ ...fromDate && { startMonth: fromDate },
7965
+ ...toDate && { endMonth: toDate },
7966
+ ...fromDate || toDate ? {
7967
+ disabled: [
7968
+ ...fromDate ? [{ before: fromDate }] : [],
7969
+ ...toDate ? [{ after: toDate }] : []
7970
+ ]
7971
+ } : {},
7972
+ className: cn("w-full rounded-none border-none")
7973
+ }
7974
+ ) }),
7975
+ /* @__PURE__ */ jsx(TabsContentBase, { value: "time", className: "mt-0", children: /* @__PURE__ */ jsx("div", { className: "flex flex-col items-center justify-center gap-4 py-2", children: /* @__PURE__ */ jsx(
7976
+ TimeScrollPicker,
7977
+ {
7978
+ setDate: (d) => handleTimeChange(d ?? null),
7979
+ date: internalDate,
7980
+ hideSeconds
7981
+ }
7982
+ ) }) })
7983
+ ] })
7984
+ ] }) : /* @__PURE__ */ jsxs(
7985
+ "div",
8031
7986
  {
8032
- className: "no-active-animation rounded-md bg-background text-primary border hover:bg-muted/50 overflow-hidden flex-1 min-w-0 border-border",
8033
- onClick: () => setOpen(false),
8034
- children: "Cancelar"
7987
+ ref: contentRef,
7988
+ className: "flex flex-col sm:flex-row max-h-auto overflow-y-auto border-none rounded-md",
7989
+ children: [
7990
+ /* @__PURE__ */ jsx(
7991
+ CalendarBase2,
7992
+ {
7993
+ mode: "single",
7994
+ locale: ptBR,
7995
+ selected: internalDate ?? void 0,
7996
+ onSelect: (d) => handleSelect(d ?? null),
7997
+ autoFocus: true,
7998
+ defaultMonth: fromDate ?? toDate ?? internalDate ?? void 0,
7999
+ ...fromDate && { startMonth: fromDate },
8000
+ ...toDate && { endMonth: toDate },
8001
+ ...fromDate || toDate ? {
8002
+ disabled: [
8003
+ ...fromDate ? [{ before: fromDate }] : [],
8004
+ ...toDate ? [{ after: toDate }] : []
8005
+ ]
8006
+ } : {},
8007
+ className: cn(
8008
+ "w-max rounded-none border-none",
8009
+ !hideTime && "sm:rounded-r-none"
8010
+ )
8011
+ }
8012
+ ),
8013
+ !hideTime && /* @__PURE__ */ jsxs(
8014
+ "div",
8015
+ {
8016
+ className: cn(
8017
+ "flex flex-col items-center justify-center",
8018
+ "border-l"
8019
+ ),
8020
+ children: [
8021
+ /* @__PURE__ */ jsx("div", { className: "text-[clamp(0.85rem,1.4vw,1.125rem)] sm:text-[clamp(0.9rem,1.6vw,1.125rem)] font-semibold capitalize text-left", children: "Hor\xE1rio" }),
8022
+ /* @__PURE__ */ jsx(
8023
+ TimeScrollPicker,
8024
+ {
8025
+ setDate: (d) => handleTimeChange(d ?? null),
8026
+ date: internalDate,
8027
+ hideSeconds
8028
+ }
8029
+ )
8030
+ ]
8031
+ }
8032
+ )
8033
+ ]
8035
8034
  }
8036
8035
  ),
8037
- /* @__PURE__ */ jsx(
8038
- ButtonBase,
8039
- {
8040
- className: cn(
8041
- "no-active-animation rounded-md bg-emerald-600",
8042
- internalDate ? "hover:bg-emerald-700" : "opacity-50 cursor-not-allowed"
8036
+ /* @__PURE__ */ jsxs("div", { className: "flex rounded-md p-1.5 gap-2", children: [
8037
+ /* @__PURE__ */ jsx(
8038
+ ButtonBase,
8039
+ {
8040
+ variant: "outline",
8041
+ className: "no-active-animation",
8042
+ tooltip: "Hoje",
8043
+ size: "icon",
8044
+ onClick: () => {
8045
+ const now = /* @__PURE__ */ new Date();
8046
+ const selected = hideTime ? new Date(
8047
+ Date.UTC(
8048
+ now.getUTCFullYear(),
8049
+ now.getUTCMonth(),
8050
+ now.getUTCDate(),
8051
+ 0,
8052
+ 0,
8053
+ 0,
8054
+ 0
8055
+ )
8056
+ ) : now;
8057
+ setInternalDate(selected);
8058
+ onChange?.(selected);
8059
+ onConfirm?.(selected);
8060
+ },
8061
+ children: /* @__PURE__ */ jsx(CalendarDotIcon$1, { className: "h-4 w-4" })
8062
+ }
8063
+ ),
8064
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 sm:flex-row w-full gap-2", children: [
8065
+ /* @__PURE__ */ jsx(
8066
+ ButtonBase,
8067
+ {
8068
+ className: "no-active-animation rounded-md bg-background text-primary border hover:bg-muted/50 overflow-hidden flex-1 min-w-0 border-border",
8069
+ onClick: () => setOpen(false),
8070
+ children: "Cancelar"
8071
+ }
8043
8072
  ),
8044
- disabled: !internalDate,
8045
- onClick: () => {
8046
- if (!internalDate) return;
8047
- setOpen(false);
8048
- onConfirm?.(internalDate);
8049
- },
8050
- children: "Confirmar"
8051
- }
8052
- )
8053
- ] })
8054
- ] })
8055
- ] });
8073
+ /* @__PURE__ */ jsx(
8074
+ ButtonBase,
8075
+ {
8076
+ className: cn(
8077
+ "no-active-animation rounded-md bg-emerald-600",
8078
+ internalDate ? "hover:bg-emerald-700" : "opacity-50 cursor-not-allowed"
8079
+ ),
8080
+ disabled: !internalDate,
8081
+ onClick: () => {
8082
+ if (!internalDate) return;
8083
+ setOpen(false);
8084
+ onConfirm?.(internalDate);
8085
+ },
8086
+ children: "Confirmar"
8087
+ }
8088
+ )
8089
+ ] })
8090
+ ] })
8091
+ ]
8092
+ }
8093
+ );
8056
8094
  return /* @__PURE__ */ jsxs("div", { className: cn("w-full sm:w-auto", className), children: [
8057
8095
  label && /* @__PURE__ */ jsx(LabelBase_default, { children: label }),
8058
8096
  isMobile ? /* @__PURE__ */ jsxs(DialogBase, { open, onOpenChange: setOpen, children: [
@@ -8066,7 +8104,7 @@ function DateTimePicker({
8066
8104
  }
8067
8105
  ),
8068
8106
  /* @__PURE__ */ jsx(ErrorMessage_default, { error }),
8069
- /* @__PURE__ */ jsx(DialogContentBase, { className: "p-0 max-h-[95vh] w-3/6 overflow-hidden flex flex-col", children: /* @__PURE__ */ jsx("div", { className: "overflow-y-auto flex-1", children: renderPickerContent() }) })
8107
+ /* @__PURE__ */ jsx(DialogContentBase, { className: "p-0 max-h-[95vh] w-[95%] sm:max-w-lg overflow-hidden flex flex-col", children: /* @__PURE__ */ jsx("div", { className: "overflow-y-auto flex-1", children: renderPickerContent() }) })
8070
8108
  ] }) : /* @__PURE__ */ jsxs(PopoverBase, { open, onOpenChange: setOpen, children: [
8071
8109
  /* @__PURE__ */ jsx(
8072
8110
  PopoverTriggerBase,
@@ -8088,7 +8126,6 @@ function DateTimePicker({
8088
8126
  ] })
8089
8127
  ] });
8090
8128
  }
8091
- var dateFnsLocale = ptBR3?.default ?? ptBR3;
8092
8129
  function RangePicker({
8093
8130
  value,
8094
8131
  onChange,
@@ -8143,8 +8180,8 @@ function RangePicker({
8143
8180
  !range && "text-muted-foreground"
8144
8181
  ),
8145
8182
  children: range?.from && range?.to ? `${format(range.from, "P", {
8146
- locale: dateFnsLocale
8147
- })} - ${format(range.to, "P", { locale: dateFnsLocale })}` : "Selecione um intervalo"
8183
+ locale: ptBR
8184
+ })} - ${format(range.to, "P", { locale: ptBR })}` : "Selecione um intervalo"
8148
8185
  }
8149
8186
  ),
8150
8187
  /* @__PURE__ */ jsx(motion.span, { className: "flex items-center", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-row gap-0 items-center ", children: [
@@ -8204,7 +8241,7 @@ function RangePicker({
8204
8241
  mode: "range",
8205
8242
  selected: range,
8206
8243
  onSelect: handleSelect,
8207
- locale: dateFnsLocale,
8244
+ locale: ptBR,
8208
8245
  showOutsideDays: true,
8209
8246
  fixedWeeks: true,
8210
8247
  weekStartsOn: 1,
@@ -21475,5 +21512,675 @@ function processIntegrationData(integrations, targetSystemName) {
21475
21512
  connections
21476
21513
  };
21477
21514
  }
21515
+ function normalizeStr(s) {
21516
+ return s.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "");
21517
+ }
21518
+ function scoreMatch(item, query) {
21519
+ const q = normalizeStr(query);
21520
+ const label = normalizeStr(item.label);
21521
+ const desc = normalizeStr(item.description ?? "");
21522
+ const keywords = (item.keywords ?? []).map(normalizeStr);
21523
+ if (label === q) return 100;
21524
+ if (label.startsWith(q)) return 90;
21525
+ if (label.includes(q)) return 70;
21526
+ if (desc.includes(q)) return 50;
21527
+ if (keywords.some((k) => k.includes(q))) return 40;
21528
+ return -1;
21529
+ }
21530
+ function filterAndScore(groups, query) {
21531
+ if (!query.trim()) return groups;
21532
+ return groups.map((g) => ({
21533
+ ...g,
21534
+ items: g.items.map((item) => ({ item, score: scoreMatch(item, query) })).filter(({ score }) => score >= 0).sort((a, b) => b.score - a.score).map(({ item }) => item)
21535
+ })).filter((g) => g.items.length > 0).sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
21536
+ }
21537
+ function normaliseGroups(items = [], groups = []) {
21538
+ const result = [];
21539
+ if (items.length > 0) {
21540
+ result.push({ id: "__flat__", label: "", items });
21541
+ }
21542
+ result.push(...groups);
21543
+ return result;
21544
+ }
21545
+ function unionGroups(base, terms) {
21546
+ if (terms.length === 0) return base;
21547
+ const allMatchedIds = /* @__PURE__ */ new Set();
21548
+ terms.forEach((term) => {
21549
+ const filtered = filterAndScore(base, term);
21550
+ filtered.forEach((g) => g.items.forEach((i) => allMatchedIds.add(i.id)));
21551
+ });
21552
+ return base.map((group) => ({
21553
+ ...group,
21554
+ items: group.items.filter((item) => allMatchedIds.has(item.id))
21555
+ })).filter((group) => group.items.length > 0);
21556
+ }
21557
+ function createGroup(id, label, items, opts) {
21558
+ return { id, label, items, ...opts };
21559
+ }
21560
+ function createItem(item) {
21561
+ return item;
21562
+ }
21563
+ var STORAGE_KEY = "cmd:recents";
21564
+ var MAX_RECENTS = 5;
21565
+ function readStorage() {
21566
+ try {
21567
+ return JSON.parse(localStorage.getItem(STORAGE_KEY) ?? "[]");
21568
+ } catch {
21569
+ return [];
21570
+ }
21571
+ }
21572
+ function writeStorage(ids) {
21573
+ try {
21574
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(ids));
21575
+ } catch {
21576
+ console.error("Failed to write to localStorage");
21577
+ }
21578
+ }
21579
+ function useRecents(allItems) {
21580
+ const [recentIds, setRecentIds] = useState(readStorage);
21581
+ const push = useCallback((item) => {
21582
+ setRecentIds((prev) => {
21583
+ const next = [item.id, ...prev.filter((id) => id !== item.id)].slice(
21584
+ 0,
21585
+ MAX_RECENTS
21586
+ );
21587
+ writeStorage(next);
21588
+ return next;
21589
+ });
21590
+ }, []);
21591
+ const clear = useCallback(() => {
21592
+ setRecentIds([]);
21593
+ writeStorage([]);
21594
+ }, []);
21595
+ const items = recentIds.map((id) => allItems.find((i) => i.id === id)).filter(Boolean);
21596
+ return { items, push, clear };
21597
+ }
21598
+ function Kbd({ className, ...props }) {
21599
+ return /* @__PURE__ */ jsx(
21600
+ "kbd",
21601
+ {
21602
+ "data-slot": "kbd",
21603
+ className: cn(
21604
+ "bg-muted text-muted-foreground in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 h-5 w-fit min-w-5 gap-1 rounded-sm px-1 font-sans text-xs font-medium [&_svg:not([class*='size-'])]:size-3 pointer-events-none inline-flex items-center justify-center select-none",
21605
+ className
21606
+ ),
21607
+ ...props
21608
+ }
21609
+ );
21610
+ }
21611
+ function KbdGroup({ className, ...props }) {
21612
+ return /* @__PURE__ */ jsx(
21613
+ "kbd",
21614
+ {
21615
+ "data-slot": "kbd-group",
21616
+ className: cn("gap-1 inline-flex items-center", className),
21617
+ ...props
21618
+ }
21619
+ );
21620
+ }
21621
+ function GroupLabel({ group }) {
21622
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-3 py-1.5 mb-1", children: [
21623
+ group.icon && /* @__PURE__ */ jsx("span", { className: "text-muted-foreground w-3.5 h-3.5", children: group.icon }),
21624
+ /* @__PURE__ */ jsx("span", { className: "text-[11px] font-semibold text-muted-foreground uppercase tracking-widest", children: group.label })
21625
+ ] });
21626
+ }
21627
+ function mapBadgeVariantToColor(variant) {
21628
+ if (!variant) return void 0;
21629
+ switch (variant) {
21630
+ case "success":
21631
+ return "green";
21632
+ case "warning":
21633
+ return "yellow";
21634
+ case "danger":
21635
+ return "red";
21636
+ case "primary":
21637
+ return "blue";
21638
+ case "secondary":
21639
+ return "purple";
21640
+ case "destructive":
21641
+ return "red";
21642
+ case "muted":
21643
+ return "gray";
21644
+ case "default":
21645
+ return "gray";
21646
+ default:
21647
+ return void 0;
21648
+ }
21649
+ }
21650
+ function CommandItemRow({
21651
+ item,
21652
+ isActive,
21653
+ onSelect,
21654
+ onHover
21655
+ }) {
21656
+ return /* @__PURE__ */ jsxs(
21657
+ motion.button,
21658
+ {
21659
+ layout: true,
21660
+ onClick: onSelect,
21661
+ onMouseEnter: onHover,
21662
+ className: `
21663
+ w-full flex items-center gap-1 px-2 py-1 rounded-md text-left cursor-pointer
21664
+ transition-colors duration-75 group relative
21665
+ ${isActive ? "text-accent-foreground hover:bg-accent" : "hover:bg-accent hover:text-accent-foreground"}
21666
+ `,
21667
+ children: [
21668
+ item.icon && /* @__PURE__ */ jsx(
21669
+ "span",
21670
+ {
21671
+ className: `relative flex-shrink-0 w-8 h-8 flex items-center justify-center rounded-md text-base
21672
+ ${isActive ? "bg-primary/20 text-primary" : "bg-muted text-muted-foreground group-hover:text-foreground"}`,
21673
+ children: item.icon
21674
+ }
21675
+ ),
21676
+ /* @__PURE__ */ jsxs("div", { className: "relative flex-1 min-w-0 px-1", children: [
21677
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 flex-wrap", children: [
21678
+ /* @__PURE__ */ jsx(
21679
+ "span",
21680
+ {
21681
+ className: `text-sm font-medium truncate ${isActive ? "text-foreground" : "text-foreground/80"}`,
21682
+ children: item.label
21683
+ }
21684
+ ),
21685
+ item.badge && /* @__PURE__ */ jsx(Badge, { color: mapBadgeVariantToColor(item.badgeVariant), children: item.badge.toUpperCase() })
21686
+ ] }),
21687
+ item.description && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground truncate", children: item.description })
21688
+ ] }),
21689
+ item.shortcut && /* @__PURE__ */ jsx("div", { className: "relative hidden sm:flex items-center gap-1 flex-shrink-0", children: item.shortcut.map((k, i) => /* @__PURE__ */ jsx(Kbd, { children: k }, i)) }),
21690
+ isActive && /* @__PURE__ */ jsx(
21691
+ CaretRightIcon,
21692
+ {
21693
+ className: "relative w-4 h-4 text-primary flex-shrink-0",
21694
+ weight: "bold"
21695
+ }
21696
+ )
21697
+ ]
21698
+ }
21699
+ );
21700
+ }
21701
+ var PAGE_SIZE = 8;
21702
+ function useCommandPalette({
21703
+ items = [],
21704
+ groups = [],
21705
+ open,
21706
+ onOpenChange,
21707
+ recentItems = [],
21708
+ onRecentItemsChange,
21709
+ maxRecentItems = 5,
21710
+ multiSearch = false
21711
+ }) {
21712
+ const [query, setQuery] = React32.useState("");
21713
+ const [activeIndex, setActiveIndex] = React32.useState(0);
21714
+ const [page, setPage] = React32.useState(0);
21715
+ const baseGroups = React32.useMemo(
21716
+ () => normaliseGroups(items, groups),
21717
+ [items, groups]
21718
+ );
21719
+ React32.useEffect(() => {
21720
+ if (open) {
21721
+ setQuery("");
21722
+ setActiveIndex(0);
21723
+ setPage(0);
21724
+ }
21725
+ }, [open]);
21726
+ const searchTerms = React32.useMemo(() => {
21727
+ const parts = query.split(",");
21728
+ if (parts.length <= 1 && !multiSearch) return [];
21729
+ return parts.map((t) => t.trim().toLowerCase()).filter(Boolean);
21730
+ }, [query, multiSearch]);
21731
+ const allMatchedGroups = React32.useMemo(() => {
21732
+ if (!query.trim()) {
21733
+ if (recentItems.length > 0) {
21734
+ return [
21735
+ {
21736
+ id: "__recent__",
21737
+ label: "Recent",
21738
+ icon: React32.createElement(ClockCounterClockwiseIcon),
21739
+ items: recentItems,
21740
+ priority: 999
21741
+ },
21742
+ ...baseGroups
21743
+ ];
21744
+ }
21745
+ return baseGroups;
21746
+ }
21747
+ if (searchTerms.length > 1 || multiSearch && searchTerms.length > 0) {
21748
+ return unionGroups(baseGroups, searchTerms);
21749
+ }
21750
+ return filterAndScore(baseGroups, query);
21751
+ }, [query, baseGroups, recentItems, multiSearch, searchTerms]);
21752
+ const allFlatItems = useMemo(
21753
+ () => allMatchedGroups.flatMap((g) => g.items),
21754
+ [allMatchedGroups]
21755
+ );
21756
+ const totalItems = allFlatItems.length;
21757
+ const totalPages = Math.max(1, Math.ceil(totalItems / PAGE_SIZE));
21758
+ useEffect(() => {
21759
+ setPage(0);
21760
+ setActiveIndex(0);
21761
+ }, [query]);
21762
+ useEffect(() => {
21763
+ setActiveIndex(0);
21764
+ }, [page]);
21765
+ const displayedGroups = useMemo(() => {
21766
+ const start = page * PAGE_SIZE;
21767
+ const end = start + PAGE_SIZE;
21768
+ let count = 0;
21769
+ const result = [];
21770
+ for (const group of allMatchedGroups) {
21771
+ const slicedItems = [];
21772
+ for (const item of group.items) {
21773
+ if (count >= start && count < end) slicedItems.push(item);
21774
+ count++;
21775
+ if (count >= end) break;
21776
+ }
21777
+ if (slicedItems.length > 0) {
21778
+ result.push({ ...group, items: slicedItems });
21779
+ }
21780
+ if (count >= end) break;
21781
+ }
21782
+ return result;
21783
+ }, [allMatchedGroups, page]);
21784
+ const flatItems = useMemo(
21785
+ () => displayedGroups.flatMap((g) => g.items),
21786
+ [displayedGroups]
21787
+ );
21788
+ const pageItemCount = flatItems.length;
21789
+ useEffect(() => {
21790
+ setActiveIndex((i) => Math.min(i, Math.max(pageItemCount - 1, 0)));
21791
+ }, [pageItemCount]);
21792
+ function handleSelect(item) {
21793
+ if (!item) return;
21794
+ item.onSelect();
21795
+ onOpenChange?.(false);
21796
+ if (onRecentItemsChange) {
21797
+ const next = [item, ...recentItems.filter((r) => r.id !== item.id)].slice(
21798
+ 0,
21799
+ maxRecentItems
21800
+ );
21801
+ onRecentItemsChange(next);
21802
+ }
21803
+ }
21804
+ useEffect(() => {
21805
+ if (!open) return;
21806
+ const handler = (e) => {
21807
+ if (e.key === "ArrowDown") {
21808
+ e.preventDefault();
21809
+ if (activeIndex === pageItemCount - 1 && page < totalPages - 1) {
21810
+ setPage((p) => p + 1);
21811
+ } else {
21812
+ setActiveIndex((i) => (i + 1) % Math.max(pageItemCount, 1));
21813
+ }
21814
+ } else if (e.key === "ArrowUp") {
21815
+ e.preventDefault();
21816
+ if (activeIndex === 0 && page > 0) {
21817
+ setPage((p) => p - 1);
21818
+ setActiveIndex(PAGE_SIZE - 1);
21819
+ } else {
21820
+ setActiveIndex(
21821
+ (i) => (i - 1 + Math.max(pageItemCount, 1)) % Math.max(pageItemCount, 1)
21822
+ );
21823
+ }
21824
+ } else if (e.key === "Enter") {
21825
+ e.preventDefault();
21826
+ handleSelect(flatItems[activeIndex]);
21827
+ }
21828
+ };
21829
+ document.addEventListener("keydown", handler);
21830
+ return () => document.removeEventListener("keydown", handler);
21831
+ }, [open, flatItems, activeIndex, pageItemCount, page, totalPages]);
21832
+ return {
21833
+ query,
21834
+ setQuery,
21835
+ activeIndex,
21836
+ setActiveIndex,
21837
+ page,
21838
+ setPage,
21839
+ searchTerms,
21840
+ allMatchedGroups,
21841
+ allFlatItems,
21842
+ displayedGroups,
21843
+ flatItems,
21844
+ totalItems,
21845
+ totalPages,
21846
+ handleSelect,
21847
+ isEmpty: totalItems === 0 && query.trim().length > 0,
21848
+ showList: query.trim() !== "" || recentItems.length > 0
21849
+ };
21850
+ }
21851
+ function useKeyboardShortcut(key, callback, options = {}) {
21852
+ useEffect(() => {
21853
+ const handleKeyDown = (event) => {
21854
+ const { ctrl, meta, shift, alt } = options;
21855
+ const isKeyMatch = event.key.toLowerCase() === key.toLowerCase();
21856
+ const isCtrlMatch = ctrl === void 0 || event.ctrlKey === ctrl;
21857
+ const isMetaMatch = meta === void 0 || event.metaKey === meta;
21858
+ const isShiftMatch = shift === void 0 || event.shiftKey === shift;
21859
+ const isAltMatch = alt === void 0 || event.altKey === alt;
21860
+ if (isKeyMatch && isCtrlMatch && isMetaMatch && isShiftMatch && isAltMatch) {
21861
+ event.preventDefault();
21862
+ callback();
21863
+ }
21864
+ };
21865
+ window.addEventListener("keydown", handleKeyDown);
21866
+ return () => window.removeEventListener("keydown", handleKeyDown);
21867
+ }, [key, callback, options]);
21868
+ }
21869
+ var ITEM_HEIGHT2 = 40;
21870
+ var LABEL_HEIGHT = 28;
21871
+ var LIST_MAX_HEIGHT = 460;
21872
+ var ANIMATION = {
21873
+ overlay: { duration: 0.18 },
21874
+ panel: { duration: 0.2, ease: [0.16, 1, 0.3, 1] },
21875
+ mobilePanel: { duration: 0.18, ease: [0.16, 1, 0.3, 1] },
21876
+ empty: { initial: { opacity: 0, y: 8 }, animate: { opacity: 1, y: 0 } }
21877
+ };
21878
+ var SearchBadges = memo(({ terms }) => {
21879
+ if (terms.length === 0) return null;
21880
+ return /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1.5 px-4 py-1.5 border-b border-border flex-wrap", children: terms.map((term, i) => /* @__PURE__ */ jsx(Badge, { children: term }, i)) });
21881
+ });
21882
+ SearchBadges.displayName = "SearchBadges";
21883
+ var EmptyState = memo(({ message }) => /* @__PURE__ */ jsxs(
21884
+ motion.div,
21885
+ {
21886
+ ...ANIMATION.empty,
21887
+ className: "flex flex-col items-center justify-center py-14 text-center gap-3",
21888
+ children: [
21889
+ /* @__PURE__ */ jsx("div", { className: "w-12 h-12 rounded-md bg-muted flex items-center justify-center", children: /* @__PURE__ */ jsx(MagnifyingGlassIcon, { className: "w-6 h-6 text-muted-foreground" }) }),
21890
+ /* @__PURE__ */ jsxs("div", { children: [
21891
+ /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-muted-foreground", children: message }),
21892
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground/60 mt-1", children: "Try a different search term" })
21893
+ ] })
21894
+ ]
21895
+ }
21896
+ ));
21897
+ EmptyState.displayName = "EmptyState";
21898
+ var VirtualResultList = memo(
21899
+ ({
21900
+ listRef,
21901
+ isEmpty,
21902
+ emptyMessage,
21903
+ displayedGroups,
21904
+ flatItems,
21905
+ activeIndex,
21906
+ onHover,
21907
+ onSelect
21908
+ }) => {
21909
+ const rows = useMemo(() => {
21910
+ const acc = [];
21911
+ for (const group of displayedGroups) {
21912
+ if (group.label) acc.push({ kind: "label", group });
21913
+ for (const item of group.items) {
21914
+ const globalIdx = flatItems.findIndex((f) => f.id === item.id);
21915
+ acc.push({ kind: "item", item, globalIdx });
21916
+ }
21917
+ }
21918
+ return acc;
21919
+ }, [displayedGroups, flatItems]);
21920
+ const virtualizer = useVirtualizer({
21921
+ count: rows.length,
21922
+ getScrollElement: () => listRef.current,
21923
+ estimateSize: (i) => rows[i].kind === "label" ? LABEL_HEIGHT : ITEM_HEIGHT2,
21924
+ overscan: 8
21925
+ });
21926
+ const virtualItems = virtualizer.getVirtualItems();
21927
+ const totalSize = virtualizer.getTotalSize();
21928
+ if (isEmpty) {
21929
+ return /* @__PURE__ */ jsx(
21930
+ "div",
21931
+ {
21932
+ ref: listRef,
21933
+ className: "overflow-y-auto overscroll-contain px-2 py-1",
21934
+ style: { maxHeight: `min(${LIST_MAX_HEIGHT}px, 60vh)` },
21935
+ children: /* @__PURE__ */ jsx(EmptyState, { message: emptyMessage })
21936
+ }
21937
+ );
21938
+ }
21939
+ return /* @__PURE__ */ jsx(
21940
+ "div",
21941
+ {
21942
+ ref: listRef,
21943
+ className: "overflow-y-auto overscroll-contain px-2 py-1 [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:bg-muted-foreground/30 [&::-webkit-scrollbar-thumb]:rounded-full hover:[&::-webkit-scrollbar-thumb]:bg-muted-foreground/50 transition-colors",
21944
+ style: { maxHeight: `min(${LIST_MAX_HEIGHT}px, 60vh)` },
21945
+ children: /* @__PURE__ */ jsx("div", { style: { height: totalSize, position: "relative" }, children: virtualItems.map((vItem) => {
21946
+ const row = rows[vItem.index];
21947
+ return /* @__PURE__ */ jsx(
21948
+ "div",
21949
+ {
21950
+ "data-index": vItem.index,
21951
+ ref: virtualizer.measureElement,
21952
+ style: {
21953
+ position: "absolute",
21954
+ top: vItem.start,
21955
+ left: 0,
21956
+ right: 0
21957
+ },
21958
+ children: row.kind === "label" ? /* @__PURE__ */ jsx(GroupLabel, { group: row.group }) : /* @__PURE__ */ jsx("div", { "data-active": row.globalIdx === activeIndex, children: /* @__PURE__ */ jsx(
21959
+ CommandItemRow,
21960
+ {
21961
+ item: row.item,
21962
+ isActive: row.globalIdx === activeIndex,
21963
+ onHover: () => onHover(row.globalIdx),
21964
+ onSelect: () => onSelect(row.item)
21965
+ }
21966
+ ) })
21967
+ },
21968
+ vItem.key
21969
+ );
21970
+ }) })
21971
+ }
21972
+ );
21973
+ }
21974
+ );
21975
+ VirtualResultList.displayName = "VirtualResultList";
21976
+ var FooterBar = memo(({ footer, totalItems }) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-4 py-2 border-t border-border bg-muted/30", children: [
21977
+ footer ?? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4 text-[11px] text-muted-foreground", children: [
21978
+ /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5", children: [
21979
+ /* @__PURE__ */ jsx(ArrowElbowDownRightIcon, { className: "w-3 h-3" }),
21980
+ "Selecionar"
21981
+ ] }),
21982
+ /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5", children: [
21983
+ /* @__PURE__ */ jsx("span", { className: "font-mono", children: "\u2191\u2193" }),
21984
+ "Navegar"
21985
+ ] }),
21986
+ /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1.5", children: [
21987
+ /* @__PURE__ */ jsx(ArrowBendUpLeftIcon, { className: "w-3 h-3" }),
21988
+ "Fechar"
21989
+ ] })
21990
+ ] }),
21991
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 text-[11px] text-muted-foreground", children: [
21992
+ /* @__PURE__ */ jsx(CommandIcon, { className: "w-3 h-3" }),
21993
+ /* @__PURE__ */ jsxs("span", { children: [
21994
+ totalItems,
21995
+ " resultado",
21996
+ totalItems !== 1 ? "s" : ""
21997
+ ] })
21998
+ ] })
21999
+ ] }));
22000
+ FooterBar.displayName = "FooterBar";
22001
+ function CommandPalette(props) {
22002
+ const {
22003
+ placeholder = "Buscar comandos\u2026",
22004
+ open,
22005
+ onOpenChange,
22006
+ footer,
22007
+ debounceDelay = 300,
22008
+ multiSearch = false,
22009
+ emptyMessage = "Nenhum resultado encontrado.",
22010
+ shortcut = { key: "k", ctrl: true }
22011
+ } = props;
22012
+ const inputRef = useRef(null);
22013
+ const listRef = useRef(null);
22014
+ const isMobile = useIsMobile();
22015
+ const {
22016
+ query,
22017
+ setQuery,
22018
+ activeIndex,
22019
+ setActiveIndex,
22020
+ searchTerms,
22021
+ displayedGroups,
22022
+ flatItems,
22023
+ totalItems,
22024
+ handleSelect,
22025
+ isEmpty,
22026
+ showList
22027
+ } = useCommandPalette({
22028
+ ...props,
22029
+ open: isMobile ? true : props.open
22030
+ });
22031
+ useKeyboardShortcut(shortcut.key, () => onOpenChange(!open), {
22032
+ ctrl: shortcut.ctrl,
22033
+ meta: shortcut.meta,
22034
+ shift: shortcut.shift,
22035
+ alt: shortcut.alt
22036
+ });
22037
+ useEffect(() => {
22038
+ if (!open) return;
22039
+ const handleEscape = (e) => {
22040
+ if (e.key === "Escape") onOpenChange(false);
22041
+ };
22042
+ document.addEventListener("keydown", handleEscape);
22043
+ return () => document.removeEventListener("keydown", handleEscape);
22044
+ }, [open, onOpenChange]);
22045
+ useEffect(() => {
22046
+ if (!open) return;
22047
+ const timer = setTimeout(() => inputRef.current?.focus(), 50);
22048
+ return () => clearTimeout(timer);
22049
+ }, [open]);
22050
+ useEffect(() => {
22051
+ const el = listRef.current?.querySelector(
22052
+ `[data-active="true"]`
22053
+ );
22054
+ el?.scrollIntoView({ block: "nearest" });
22055
+ }, [activeIndex]);
22056
+ const handleQueryChange = useCallback(
22057
+ (val) => {
22058
+ setQuery(val);
22059
+ setActiveIndex(0);
22060
+ },
22061
+ [setQuery, setActiveIndex]
22062
+ );
22063
+ const handleQueryChangeMobile = useCallback(
22064
+ (val) => {
22065
+ setQuery(val);
22066
+ setActiveIndex(0);
22067
+ if (!open && val.trim() !== "") onOpenChange(true);
22068
+ },
22069
+ [setQuery, setActiveIndex, open, onOpenChange]
22070
+ );
22071
+ const handleClose = useCallback(() => onOpenChange(false), [onOpenChange]);
22072
+ const handleClearQuery = useCallback(() => setQuery(""), [setQuery]);
22073
+ const searchPlaceholder = multiSearch ? "Buscar\u2026 (separe termos por v\xEDrgula)" : placeholder;
22074
+ const sharedListProps = {
22075
+ listRef,
22076
+ isEmpty,
22077
+ emptyMessage,
22078
+ displayedGroups,
22079
+ flatItems,
22080
+ activeIndex,
22081
+ onHover: setActiveIndex,
22082
+ onSelect: handleSelect
22083
+ };
22084
+ if (isMobile) {
22085
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
22086
+ /* @__PURE__ */ jsx("div", { className: "fixed top-0 left-0 right-0 z-[100] px-3 py-2 bg-background", children: /* @__PURE__ */ jsx(
22087
+ DebouncedInput,
22088
+ {
22089
+ ref: inputRef,
22090
+ value: query,
22091
+ debounce: debounceDelay,
22092
+ onChange: handleQueryChangeMobile,
22093
+ placeholder: searchPlaceholder
22094
+ }
22095
+ ) }),
22096
+ /* @__PURE__ */ jsx(AnimatePresence, { children: showList && /* @__PURE__ */ jsxs(Fragment, { children: [
22097
+ /* @__PURE__ */ jsx(
22098
+ motion.div,
22099
+ {
22100
+ initial: { opacity: 0 },
22101
+ animate: { opacity: 1 },
22102
+ exit: { opacity: 0 },
22103
+ transition: ANIMATION.overlay,
22104
+ className: "fixed inset-0 z-[98] bg-background/60 backdrop-blur-[2px]",
22105
+ onClick: handleClose
22106
+ }
22107
+ ),
22108
+ /* @__PURE__ */ jsxs(
22109
+ motion.div,
22110
+ {
22111
+ initial: { opacity: 0, y: -6 },
22112
+ animate: { opacity: 1, y: 0 },
22113
+ exit: { opacity: 0, y: -6 },
22114
+ transition: ANIMATION.mobilePanel,
22115
+ className: "fixed left-3 right-3 z-[99] bg-popover border border-border rounded-lg shadow-2xl shadow-black/20 dark:shadow-black/50 overflow-hidden top-14",
22116
+ children: [
22117
+ /* @__PURE__ */ jsx(SearchBadges, { terms: searchTerms }),
22118
+ /* @__PURE__ */ jsx(VirtualResultList, { ...sharedListProps })
22119
+ ]
22120
+ }
22121
+ )
22122
+ ] }) })
22123
+ ] });
22124
+ }
22125
+ return /* @__PURE__ */ jsx(AnimatePresence, { children: open && /* @__PURE__ */ jsxs(Fragment, { children: [
22126
+ /* @__PURE__ */ jsx(
22127
+ motion.div,
22128
+ {
22129
+ initial: { opacity: 0 },
22130
+ animate: { opacity: 1 },
22131
+ exit: { opacity: 0 },
22132
+ transition: ANIMATION.overlay,
22133
+ className: "fixed inset-0 z-[100] bg-background/80 backdrop-blur-sm",
22134
+ onClick: handleClose
22135
+ }
22136
+ ),
22137
+ /* @__PURE__ */ jsxs(
22138
+ motion.div,
22139
+ {
22140
+ initial: { opacity: 0, scale: 0.96, y: -8 },
22141
+ animate: { opacity: 1, scale: 1, y: 0 },
22142
+ exit: { opacity: 0, scale: 0.96, y: -8 },
22143
+ transition: ANIMATION.panel,
22144
+ className: "fixed z-[100] top-12 -translate-x-1/2 -translate-y-1/2 w-full max-w-xl rounded-xl border border-border overflow-hidden shadow-2xl shadow-black/20 dark:shadow-black/60 bg-popover/95 backdrop-blur-xl",
22145
+ style: { maxHeight: "min(600px, 80vh)" },
22146
+ children: [
22147
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 px-4 py-2 border-b border-border", children: [
22148
+ /* @__PURE__ */ jsx(
22149
+ MagnifyingGlassIcon,
22150
+ {
22151
+ className: "w-4 h-4 text-muted-foreground flex-shrink-0",
22152
+ weight: "bold"
22153
+ }
22154
+ ),
22155
+ /* @__PURE__ */ jsx(
22156
+ DebouncedInput,
22157
+ {
22158
+ ref: inputRef,
22159
+ value: query,
22160
+ debounce: debounceDelay,
22161
+ onChange: handleQueryChange,
22162
+ placeholder: searchPlaceholder,
22163
+ rightIcon: query ? /* @__PURE__ */ jsx(
22164
+ ButtonBase,
22165
+ {
22166
+ variant: "ghost",
22167
+ size: "icon",
22168
+ onClick: handleClearQuery,
22169
+ className: "text-muted-foreground hover:text-red-500 hover:bg-transparent transition-colors",
22170
+ children: /* @__PURE__ */ jsx(XIcon, { className: "w-4 h-4" })
22171
+ }
22172
+ ) : void 0,
22173
+ className: "flex-1 bg-transparent border-none focus-visible:ring-0 outline-none shadow-none px-0 h-7 text-sm caret-primary"
22174
+ }
22175
+ )
22176
+ ] }),
22177
+ /* @__PURE__ */ jsx(SearchBadges, { terms: searchTerms }),
22178
+ showList && /* @__PURE__ */ jsx(VirtualResultList, { ...sharedListProps }),
22179
+ /* @__PURE__ */ jsx(FooterBar, { footer, totalItems })
22180
+ ]
22181
+ }
22182
+ )
22183
+ ] }) });
22184
+ }
21478
22185
 
21479
- export { AddButton, Agenda, AgendaDaysToShow, AgendaDaysToShowAgenda, AgendaView, AlertDialogActionBase, AlertDialogBase, AlertDialogCancelBase, AlertDialogContentBase, AlertDialogDescriptionBase, AlertDialogFooterBase, AlertDialogHeaderBase, AlertDialogOverlayBase, AlertDialogPortalBase, AlertDialogTitleBase, AlertDialogTriggerBase, AvatarBase, AvatarCombobox, AvatarFallbackBase, AvatarImageBase, BackButton, Badge, BreadcrumbBase, BreadcrumbEllipsisBase, BreadcrumbItemBase, BreadcrumbLinkBase, BreadcrumbListBase, BreadcrumbPageBase, BreadcrumbSeparatorBase, Brush_default as Brush, ButtonBase, ButtonGroupBase, CENTER_INDEX, CalendarBase, CalendarDndProvider, CalendarDndProviderAgenda, CardBase, CardContentBase, CardDescriptionBase, CardFooterBase, CardHeaderBase, CardTitleBase, CarouselBase, ChangeButton, Chart_default as Chart, ChartControls, ChartHeader, ChartTotalLegend_default as ChartTotalLegend, CheckButton, CheckboxBase, CheckboxTree, CircularProgress, CloseAllButton_default as CloseAllButton, CloseButton, CodeBlock, CollapsibleBase, CollapsibleContentBase, CollapsibleTriggerBase, Combobox, CommandBase, CommandDebouncedInputBase, CommandDialogBase, CommandEmptyBase, CommandGroupBase, CommandInputBase, CommandItemBase, CommandListBase, CommandSeparatorBase, CommandShortcutBase, ContextMenuBase, ContextMenuCheckboxItemBase, ContextMenuContentBase, ContextMenuGroupBase, ContextMenuItemBase, ContextMenuLabelBase, ContextMenuPortalBase, ContextMenuRadioGroupBase, ContextMenuRadioItemBase, ContextMenuSeparatorBase, ContextMenuShortcutBase, ContextMenuSubBase, ContextMenuSubContentBase, ContextMenuSubTriggerBase, ContextMenuTriggerBase, ControlledCombobox, CopyButton, DateTimePicker, DayView, DayViewAgenda, DebouncedInput, DefaultEndHour, DefaultEndHourAgenda, DefaultStartHour, DefaultStartHourAgenda, DestructiveDialog, DialogBase, DialogCloseBase, DialogContentBase, DialogDescriptionBase, DialogFooterBase, DialogHeaderBase, DialogOverlayBase, DialogPortalBase, DialogTitleBase, DialogTriggerBase, DownloadButton, DraggableEvent2 as DraggableEvent, DraggableTooltip_default as DraggableTooltip, DrawerBase, DrawerCloseBase, DrawerContentBase, DrawerDescriptionBase, DrawerFooterBase, DrawerHeaderBase, DrawerOverlayBase, DrawerPortalBase, DrawerTitleBase, DrawerTriggerBase, DropDownMenuBase, DropDownMenuCheckboxItemBase, DropDownMenuContentBase, DropDownMenuGroupBase, DropDownMenuItemBase, DropDownMenuLabelBase, DropDownMenuPortalBase, DropDownMenuRadioGroupBase, DropDownMenuRadioItemBase, DropDownMenuSeparatorBase, DropDownMenuShortcutBase, DropDownMenuSubBase, DropDownMenuSubContentBase, DropDownMenuSubTriggerBase, DropDownMenuTriggerBase, DroppableCell, DroppableCellAgenda, EditButton, EndHour, EndHourAgenda, ErrorMessage_default as ErrorMessage, EventAgenda, EventCalendar, EventDetailModalAgenda, EventDialog, EventGap, EventGapAgenda, EventHeight, EventHeightAgenda, EventItem, EventItemAgenda, EventsPopup, FavoriteButton, FileAccept, FileUploader, FilterButton, HideButton, Highlights_default as Highlights, HorizontalChart_default as HorizontalChart, HorizontalLegend_default as HorizontalLegend, HoverCardBase, HoverCardContentBase, HoverCardTriggerBase, ITEM_HEIGHT, InputBase, InputOTPBase, InputOTPGroupBase, InputOTPSeparatorBase, InputOTPSlotBase, IntegrationModal_default as IntegrationModal, LabelBase_default as LabelBase, Leaderboard, LikeButton, LoadingBase, LockButton, ModalBase, ModalCloseBase, ModalContentBase, ModalDescriptionBase, ModalFooterBase, ModalHeaderBase, ModalOverlayBase, ModalPortalBase, ModalTitleBase, ModalTriggerBase, ModeToggleBase, MonthView, MonthViewAgenda, MoreButton, MultiCombobox, MultiDayOverlay, MultiSelect, MultiSelectBase, MultiSelectContentBase, MultiSelectGroupBase, MultiSelectItemBase, MultiSelectSeparatorBase, MultiSelectTriggerBase, MultiSelectValueBase, NavigationMenuBase, NavigationMenuContentBase, NavigationMenuIndicatorBase, NavigationMenuItemBase, NavigationMenuLinkBase, NavigationMenuListBase, NavigationMenuTriggerBase, NavigationMenuViewportBase, NoData_default as NoData, NotificationButton, NumericInput, PeriodsDropdown_default as PeriodsDropdown, PopoverAnchorBase, PopoverBase, PopoverContentBase, PopoverTriggerBase, ProgressBase, ProgressCirclesBase, ProgressPanelsBase, ProgressSegmentsBase, RadialMenu, RangePicker, RefreshButton, SaveButton, ScrollAreaBase, ScrollBarBase, SearchButton, Select, SelectBase, SelectContentBase, SelectEmpty, SelectGroupBase, SelectItemBase, SelectLabelBase, SelectScrollDownButtonBase, SelectScrollUpButtonBase, SelectSeparatorBase, SelectTriggerBase, SelectValueBase, SeparatorBase, SettingsButton, SheetBase, SheetCloseBase, SheetContentBase, SheetDescriptionBase, SheetFooterBase, SheetHeaderBase, SheetOverlayBase, SheetPortalBase, SheetTitleBase, SheetTriggerBase, ShowOnly_default as ShowOnly, SidebarBase, SidebarContentBase, SidebarFooterBase, SidebarGroupActionBase, SidebarGroupBase, SidebarGroupContentBase, SidebarGroupLabelBase, SidebarHeaderBase, SidebarInputBase, SidebarInsetBase, SidebarMenuActionBase, SidebarMenuBadgeBase, SidebarMenuBase, SidebarMenuButtonBase, SidebarMenuItemBase, SidebarMenuSkeletonBase, SidebarMenuSubBase, SidebarMenuSubButtonBase, SidebarMenuSubItemBase, SidebarProviderBase, SidebarRailBase, SidebarSeparatorBase, SidebarTriggerBase, SkeletonBase, SlideBase, StartHour, StartHourAgenda, StatusIndicator, SwitchBase, SystemTooltip_default as SystemTooltip, TableBase, TableBodyBase, TableCaptionBase, TableCellBase, TableFooterBase, TableHeadBase, TableHeaderBase, TableRowBase, TabsBase, TabsContentBase, TabsListBase, TabsTriggerBase, TextAreaBase, ThemeProviderBase, TimePicker, TimePickerInput, TimeSeries_default as TimeSeries, Toaster, TooltipBase, TooltipContentBase, TooltipProviderBase, TooltipSimple_default as TooltipSimple, TooltipTriggerBase, TooltipWithTotal_default as TooltipWithTotal, UndatedEvents, UniversalTooltipRenderer, UnlockButton, UploadButton, UseSideBarBase, VISIBLE_ITEMS, ViewButton, VisibilityButton, WeekCellsHeight, WeekCellsHeightAgenda, WeekView, WeekViewAgenda, YearViewAgenda, adaptDataForTooltip, addHoursToDate, addHoursToDateAgenda, addMinutesToDateAgenda, badgeVariants, buttonVariantsBase, compactTick, computeChartWidth, computeNiceMax, computeYAxisTickWidth, convert12HourTo24Hour, createValueFormatter, createYTickFormatter, detectDataFields, detectXAxis, display12HourValue, formatDurationAgenda, formatDurationAgendaDays, formatFieldName, formatLinePercentage, generateAdditionalColors, generateColorMap, getAgendaEventsForDay, getAgendaEventsForDayAgenda, getAllEventsForDay, getAllEventsForDayAgenda, getArrowByType, getAutoColorAgenda, getBorderRadiusClasses, getBorderRadiusClassesAgenda, getDateByType, getEventColorClasses, getEventColorClassesAgenda, getEventEndDate, getEventStartDate, getEventsForDay, getEventsForDayAgenda, getItems, getMaxDataValue, getMinDataValue, getSpanningEventsForDay, getSpanningEventsForDayAgenda, getValid12Hour, getValidArrow12Hour, getValidArrowHour, getValidArrowMinuteOrSecond, getValidArrowNumber, getValidHour, getValidMinuteOrSecond, getValidNumber, isMultiDayEvent, isMultiDayEventAgenda, isValid12Hour, isValidHour, isValidMinuteOrSecond, niceCeil, normalizeAttendDate, processIntegrationData, processNeo4jData, renderInsideBarLabel, pillLabelRenderer_default as renderPillLabel, resolveChartMargins, resolveContainerPaddingLeft, set12Hours, setDateByType, setHours, setMinutes, setSeconds, sortEvents, sortEventsAgenda, startOfLocalDay, toast, useBiaxial, useCalendarDnd, useCalendarDndAgenda, useChartClick, useChartDimensions, useChartHighlights, useChartLayout, useChartMinMax, useChartTooltips, useCurrentTimeIndicator, useCurrentTimeIndicatorAgenda, useDrag, useEventVisibility, useEventVisibilityAgenda, useIsMobile, useIsTruncated, useOpenTooltipForPeriod, useProcessedData, useSeriesOpacity, useTheme, useTimeSeriesRange, visualForItem };
22186
+ export { AddButton, Agenda, AgendaDaysToShow, AgendaDaysToShowAgenda, AgendaView, AlertDialogActionBase, AlertDialogBase, AlertDialogCancelBase, AlertDialogContentBase, AlertDialogDescriptionBase, AlertDialogFooterBase, AlertDialogHeaderBase, AlertDialogOverlayBase, AlertDialogPortalBase, AlertDialogTitleBase, AlertDialogTriggerBase, AvatarBase, AvatarCombobox, AvatarFallbackBase, AvatarImageBase, BackButton, Badge, BreadcrumbBase, BreadcrumbEllipsisBase, BreadcrumbItemBase, BreadcrumbLinkBase, BreadcrumbListBase, BreadcrumbPageBase, BreadcrumbSeparatorBase, Brush_default as Brush, ButtonBase, ButtonGroupBase, CENTER_INDEX, CalendarBase, CalendarDndProvider, CalendarDndProviderAgenda, CardBase, CardContentBase, CardDescriptionBase, CardFooterBase, CardHeaderBase, CardTitleBase, CarouselBase, ChangeButton, Chart_default as Chart, ChartControls, ChartHeader, ChartTotalLegend_default as ChartTotalLegend, CheckButton, CheckboxBase, CheckboxTree, CircularProgress, CloseAllButton_default as CloseAllButton, CloseButton, CodeBlock, CollapsibleBase, CollapsibleContentBase, CollapsibleTriggerBase, Combobox, CommandBase, CommandDebouncedInputBase, CommandDialogBase, CommandEmptyBase, CommandGroupBase, CommandInputBase, CommandItemBase, CommandItemRow, CommandListBase, CommandPalette, CommandSeparatorBase, CommandShortcutBase, ContextMenuBase, ContextMenuCheckboxItemBase, ContextMenuContentBase, ContextMenuGroupBase, ContextMenuItemBase, ContextMenuLabelBase, ContextMenuPortalBase, ContextMenuRadioGroupBase, ContextMenuRadioItemBase, ContextMenuSeparatorBase, ContextMenuShortcutBase, ContextMenuSubBase, ContextMenuSubContentBase, ContextMenuSubTriggerBase, ContextMenuTriggerBase, ControlledCombobox, CopyButton, DateTimePicker, DayView, DayViewAgenda, DebouncedInput, DefaultEndHour, DefaultEndHourAgenda, DefaultStartHour, DefaultStartHourAgenda, DestructiveDialog, DialogBase, DialogCloseBase, DialogContentBase, DialogDescriptionBase, DialogFooterBase, DialogHeaderBase, DialogOverlayBase, DialogPortalBase, DialogTitleBase, DialogTriggerBase, DownloadButton, DraggableEvent2 as DraggableEvent, DraggableTooltip_default as DraggableTooltip, DrawerBase, DrawerCloseBase, DrawerContentBase, DrawerDescriptionBase, DrawerFooterBase, DrawerHeaderBase, DrawerOverlayBase, DrawerPortalBase, DrawerTitleBase, DrawerTriggerBase, DropDownMenuBase, DropDownMenuCheckboxItemBase, DropDownMenuContentBase, DropDownMenuGroupBase, DropDownMenuItemBase, DropDownMenuLabelBase, DropDownMenuPortalBase, DropDownMenuRadioGroupBase, DropDownMenuRadioItemBase, DropDownMenuSeparatorBase, DropDownMenuShortcutBase, DropDownMenuSubBase, DropDownMenuSubContentBase, DropDownMenuSubTriggerBase, DropDownMenuTriggerBase, DroppableCell, DroppableCellAgenda, EditButton, EndHour, EndHourAgenda, ErrorMessage_default as ErrorMessage, EventAgenda, EventCalendar, EventDetailModalAgenda, EventDialog, EventGap, EventGapAgenda, EventHeight, EventHeightAgenda, EventItem, EventItemAgenda, EventsPopup, FavoriteButton, FileAccept, FileUploader, FilterButton, GroupLabel, HideButton, Highlights_default as Highlights, HorizontalChart_default as HorizontalChart, HorizontalLegend_default as HorizontalLegend, HoverCardBase, HoverCardContentBase, HoverCardTriggerBase, ITEM_HEIGHT, InputBase, InputOTPBase, InputOTPGroupBase, InputOTPSeparatorBase, InputOTPSlotBase, IntegrationModal_default as IntegrationModal, Kbd, KbdGroup, LabelBase_default as LabelBase, Leaderboard, LikeButton, LoadingBase, LockButton, ModalBase, ModalCloseBase, ModalContentBase, ModalDescriptionBase, ModalFooterBase, ModalHeaderBase, ModalOverlayBase, ModalPortalBase, ModalTitleBase, ModalTriggerBase, ModeToggleBase, MonthView, MonthViewAgenda, MoreButton, MultiCombobox, MultiDayOverlay, MultiSelect, MultiSelectBase, MultiSelectContentBase, MultiSelectGroupBase, MultiSelectItemBase, MultiSelectSeparatorBase, MultiSelectTriggerBase, MultiSelectValueBase, NavigationMenuBase, NavigationMenuContentBase, NavigationMenuIndicatorBase, NavigationMenuItemBase, NavigationMenuLinkBase, NavigationMenuListBase, NavigationMenuTriggerBase, NavigationMenuViewportBase, NoData_default as NoData, NotificationButton, NumericInput, PeriodsDropdown_default as PeriodsDropdown, PopoverAnchorBase, PopoverBase, PopoverContentBase, PopoverTriggerBase, ProgressBase, ProgressCirclesBase, ProgressPanelsBase, ProgressSegmentsBase, RadialMenu, RangePicker, RefreshButton, SaveButton, ScrollAreaBase, ScrollBarBase, SearchButton, Select, SelectBase, SelectContentBase, SelectEmpty, SelectGroupBase, SelectItemBase, SelectLabelBase, SelectScrollDownButtonBase, SelectScrollUpButtonBase, SelectSeparatorBase, SelectTriggerBase, SelectValueBase, SeparatorBase, SettingsButton, SheetBase, SheetCloseBase, SheetContentBase, SheetDescriptionBase, SheetFooterBase, SheetHeaderBase, SheetOverlayBase, SheetPortalBase, SheetTitleBase, SheetTriggerBase, ShowOnly_default as ShowOnly, SidebarBase, SidebarContentBase, SidebarFooterBase, SidebarGroupActionBase, SidebarGroupBase, SidebarGroupContentBase, SidebarGroupLabelBase, SidebarHeaderBase, SidebarInputBase, SidebarInsetBase, SidebarMenuActionBase, SidebarMenuBadgeBase, SidebarMenuBase, SidebarMenuButtonBase, SidebarMenuItemBase, SidebarMenuSkeletonBase, SidebarMenuSubBase, SidebarMenuSubButtonBase, SidebarMenuSubItemBase, SidebarProviderBase, SidebarRailBase, SidebarSeparatorBase, SidebarTriggerBase, SkeletonBase, SlideBase, StartHour, StartHourAgenda, StatusIndicator, SwitchBase, SystemTooltip_default as SystemTooltip, TableBase, TableBodyBase, TableCaptionBase, TableCellBase, TableFooterBase, TableHeadBase, TableHeaderBase, TableRowBase, TabsBase, TabsContentBase, TabsListBase, TabsTriggerBase, TextAreaBase, ThemeProviderBase, TimePicker, TimePickerInput, TimeSeries_default as TimeSeries, Toaster, TooltipBase, TooltipContentBase, TooltipProviderBase, TooltipSimple_default as TooltipSimple, TooltipTriggerBase, TooltipWithTotal_default as TooltipWithTotal, UndatedEvents, UniversalTooltipRenderer, UnlockButton, UploadButton, UseSideBarBase, VISIBLE_ITEMS, ViewButton, VisibilityButton, WeekCellsHeight, WeekCellsHeightAgenda, WeekView, WeekViewAgenda, YearViewAgenda, adaptDataForTooltip, addHoursToDate, addHoursToDateAgenda, addMinutesToDateAgenda, badgeVariants, buttonVariantsBase, compactTick, computeChartWidth, computeNiceMax, computeYAxisTickWidth, convert12HourTo24Hour, createGroup, createItem, createValueFormatter, createYTickFormatter, detectDataFields, detectXAxis, display12HourValue, filterAndScore, formatDurationAgenda, formatDurationAgendaDays, formatFieldName, formatLinePercentage, generateAdditionalColors, generateColorMap, getAgendaEventsForDay, getAgendaEventsForDayAgenda, getAllEventsForDay, getAllEventsForDayAgenda, getArrowByType, getAutoColorAgenda, getBorderRadiusClasses, getBorderRadiusClassesAgenda, getDateByType, getEventColorClasses, getEventColorClassesAgenda, getEventEndDate, getEventStartDate, getEventsForDay, getEventsForDayAgenda, getItems, getMaxDataValue, getMinDataValue, getSpanningEventsForDay, getSpanningEventsForDayAgenda, getValid12Hour, getValidArrow12Hour, getValidArrowHour, getValidArrowMinuteOrSecond, getValidArrowNumber, getValidHour, getValidMinuteOrSecond, getValidNumber, isMultiDayEvent, isMultiDayEventAgenda, isValid12Hour, isValidHour, isValidMinuteOrSecond, niceCeil, normaliseGroups, normalizeAttendDate, normalizeStr, processIntegrationData, processNeo4jData, renderInsideBarLabel, pillLabelRenderer_default as renderPillLabel, resolveChartMargins, resolveContainerPaddingLeft, scoreMatch, set12Hours, setDateByType, setHours, setMinutes, setSeconds, sortEvents, sortEventsAgenda, startOfLocalDay, toast, unionGroups, useBiaxial, useCalendarDnd, useCalendarDndAgenda, useChartClick, useChartDimensions, useChartHighlights, useChartLayout, useChartMinMax, useChartTooltips, useCommandPalette, useCurrentTimeIndicator, useCurrentTimeIndicatorAgenda, useDrag, useEventVisibility, useEventVisibilityAgenda, useIsMobile, useIsTruncated, useOpenTooltipForPeriod, useProcessedData, useRecents, useSeriesOpacity, useTheme, useTimeSeriesRange, visualForItem };