@mlw-packages/react-components 1.9.2 → 1.9.3

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
@@ -5,7 +5,7 @@ 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, InfoIcon, WarningIcon, XCircleIcon, CheckCircleIcon, SunIcon, MoonIcon, CaretLeftIcon, DownloadSimpleIcon, UploadSimpleIcon, CopyIcon, ArrowClockwiseIcon, ArrowLeftIcon, GearIcon, BellIcon, DotsThreeIcon, FunnelIcon, HeartIcon, StarIcon, EyeIcon, EyeSlashIcon, LockIcon, LockOpenIcon, ArrowRightIcon as ArrowRightIcon$1, FolderIcon, ArrowsOutIcon, DownloadIcon, CalendarBlankIcon, CalendarIcon, CaretLeft, CaretRight, ArrowDownIcon, ClockUserIcon, EyeSlash, Eye, ArrowRight, ArrowUpRightIcon, ArrowDownRightIcon, 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, FilePdfIcon, FileDocIcon, FileXlsIcon, FilePptIcon, FileCsvIcon, FileTextIcon, FileImageIcon, FileVideoIcon, FileAudioIcon, FileZipIcon, FileIcon, DotsSixVerticalIcon, InfoIcon, WarningIcon, XCircleIcon, CheckCircleIcon, SunIcon, MoonIcon, CaretLeftIcon, DownloadSimpleIcon, UploadSimpleIcon, CopyIcon, ArrowClockwiseIcon, ArrowLeftIcon, GearIcon, BellIcon, DotsThreeIcon, FunnelIcon, HeartIcon, StarIcon, EyeIcon, EyeSlashIcon, LockIcon, LockOpenIcon, ArrowRightIcon as ArrowRightIcon$1, FolderIcon, ArrowsOutIcon, DownloadIcon, CalendarBlankIcon, CalendarIcon, CaretLeft, CaretRight, ArrowDownIcon, ClockUserIcon, EyeSlash, Eye, ArrowRight, ArrowUpRightIcon, ArrowDownRightIcon, FunnelSimpleIcon, 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';
@@ -645,7 +645,7 @@ var DialogContentBase = React33.forwardRef(
645
645
  {
646
646
  ref,
647
647
  className: cn(
648
- "fixed left-[50%] top-[50%] z-50 w-lg grid 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 max-h-[100dvh] overflow-auto rounded-md border-border",
648
+ "fixed left-[50%] top-[50%] z-50 w-[90%] sm:w-lg grid 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 max-h-[100dvh] overflow-y-auto overflow-x-hidden rounded-md border-border",
649
649
  className
650
650
  ),
651
651
  "data-testid": dataTestId,
@@ -1911,21 +1911,28 @@ var CommandDialogBase = ({ children, open, ...props }) => {
1911
1911
  "command-dialog"
1912
1912
  ) }) }) });
1913
1913
  };
1914
- var CommandInputBase = React33.forwardRef(({ className, testid: dataTestId = "command-input", ...props }, ref) => /* @__PURE__ */ jsxs("div", { className: "flex items-center border-b px-3 border-border", "cmdk-input-wrapper": "", children: [
1915
- /* @__PURE__ */ jsx(MagnifyingGlassIcon, { className: "mr-2 h-4 w-4 shrink-0 text-primary" }),
1916
- /* @__PURE__ */ jsx(
1917
- Command.Input,
1918
- {
1919
- ref,
1920
- className: cn(
1921
- "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none text-primary placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
1922
- className
1923
- ),
1924
- "data-testid": dataTestId,
1925
- ...props
1926
- }
1927
- )
1928
- ] }));
1914
+ var CommandInputBase = React33.forwardRef(({ className, testid: dataTestId = "command-input", ...props }, ref) => /* @__PURE__ */ jsxs(
1915
+ "div",
1916
+ {
1917
+ className: "flex items-center border-b px-3 border-border",
1918
+ "cmdk-input-wrapper": "",
1919
+ children: [
1920
+ /* @__PURE__ */ jsx(MagnifyingGlassIcon, { className: "mr-2 h-4 w-4 shrink-0 text-primary" }),
1921
+ /* @__PURE__ */ jsx(
1922
+ Command.Input,
1923
+ {
1924
+ ref,
1925
+ className: cn(
1926
+ "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none text-primary placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
1927
+ className
1928
+ ),
1929
+ "data-testid": dataTestId,
1930
+ ...props
1931
+ }
1932
+ )
1933
+ ]
1934
+ }
1935
+ ));
1929
1936
  CommandInputBase.displayName = Command.Input.displayName;
1930
1937
  var CommandListBase = React33.forwardRef(({ className, testid: dataTestId = "command-list", ...props }, ref) => {
1931
1938
  const listRef = React33.useRef(null);
@@ -1933,11 +1940,45 @@ var CommandListBase = React33.forwardRef(({ className, testid: dataTestId = "com
1933
1940
  const element = listRef.current;
1934
1941
  if (!element) return;
1935
1942
  const handleWheel = (e) => {
1943
+ const target = e.currentTarget;
1944
+ const { scrollTop, scrollHeight, clientHeight } = target;
1945
+ const isScrollingDown = e.deltaY > 0;
1946
+ const isScrollingUp = e.deltaY < 0;
1947
+ const isAtBottom = scrollTop + clientHeight >= scrollHeight - 1;
1948
+ const isAtTop = scrollTop <= 1;
1949
+ if (isScrollingDown && !isAtBottom || isScrollingUp && !isAtTop) {
1950
+ e.stopPropagation();
1951
+ }
1952
+ };
1953
+ let touchStartY = 0;
1954
+ const handleTouchStart = (e) => {
1955
+ touchStartY = e.touches[0].clientY;
1936
1956
  e.stopPropagation();
1937
1957
  };
1958
+ const handleTouchMove = (e) => {
1959
+ const target = e.currentTarget;
1960
+ const { scrollTop, scrollHeight, clientHeight } = target;
1961
+ const touchCurrentY = e.touches[0].clientY;
1962
+ const touchDeltaY = touchStartY - touchCurrentY;
1963
+ const isScrollingDown = touchDeltaY > 0;
1964
+ const isScrollingUp = touchDeltaY < 0;
1965
+ const isAtBottom = scrollTop + clientHeight >= scrollHeight - 1;
1966
+ const isAtTop = scrollTop <= 1;
1967
+ if (isScrollingDown && !isAtBottom || isScrollingUp && !isAtTop) {
1968
+ e.stopPropagation();
1969
+ } else if (isScrollingDown && isAtBottom || isScrollingUp && isAtTop) {
1970
+ e.preventDefault();
1971
+ }
1972
+ };
1938
1973
  element.addEventListener("wheel", handleWheel, { passive: false });
1974
+ element.addEventListener("touchstart", handleTouchStart, {
1975
+ passive: false
1976
+ });
1977
+ element.addEventListener("touchmove", handleTouchMove, { passive: false });
1939
1978
  return () => {
1940
1979
  element.removeEventListener("wheel", handleWheel);
1980
+ element.removeEventListener("touchmove", handleTouchMove);
1981
+ element.removeEventListener("touchstart", handleTouchStart);
1941
1982
  };
1942
1983
  }, []);
1943
1984
  const combinedRef = React33.useCallback(
@@ -1962,7 +2003,13 @@ var CommandListBase = React33.forwardRef(({ className, testid: dataTestId = "com
1962
2003
  "data-testid": dataTestId,
1963
2004
  style: {
1964
2005
  overscrollBehavior: "contain",
1965
- WebkitOverflowScrolling: "touch"
2006
+ WebkitOverflowScrolling: "touch",
2007
+ touchAction: "pan-y",
2008
+ scrollbarWidth: "thin",
2009
+ scrollbarColor: "hsl(var(--muted)) transparent",
2010
+ overflowY: "auto",
2011
+ willChange: "scroll-position",
2012
+ transform: "translateZ(0)"
1966
2013
  },
1967
2014
  ...props
1968
2015
  }
@@ -2040,6 +2087,7 @@ var PopoverContentBase = React33.forwardRef(
2040
2087
  align = "center",
2041
2088
  sideOffset = 4,
2042
2089
  testid: dataTestId = "popover-content",
2090
+ style,
2043
2091
  ...props
2044
2092
  }, ref) => /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(
2045
2093
  PopoverPrimitive.Content,
@@ -2048,10 +2096,20 @@ var PopoverContentBase = React33.forwardRef(
2048
2096
  align,
2049
2097
  sideOffset,
2050
2098
  className: cn(
2051
- "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",
2099
+ "z-[100] 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",
2052
2100
  className
2053
2101
  ),
2054
2102
  "data-testid": dataTestId,
2103
+ style: {
2104
+ ...style,
2105
+ WebkitOverflowScrolling: "touch",
2106
+ overscrollBehavior: "contain",
2107
+ pointerEvents: "auto"
2108
+ },
2109
+ onWheel: (e) => {
2110
+ e.stopPropagation();
2111
+ props.onWheel?.(e);
2112
+ },
2055
2113
  onInteractOutside: (event) => {
2056
2114
  props.onInteractOutside?.(event);
2057
2115
  if (event.defaultPrevented) return;
@@ -2108,7 +2166,6 @@ function ComboboxBase({
2108
2166
  hideClear = false
2109
2167
  }) {
2110
2168
  const [open, setOpen] = useState(false);
2111
- const isMobile = useIsMobile();
2112
2169
  return /* @__PURE__ */ jsxs(
2113
2170
  "div",
2114
2171
  {
@@ -2120,7 +2177,7 @@ function ComboboxBase({
2120
2177
  {
2121
2178
  open,
2122
2179
  onOpenChange: (v) => !disabled && setOpen(v),
2123
- modal: isMobile,
2180
+ modal: false,
2124
2181
  children: [
2125
2182
  /* @__PURE__ */ jsx(
2126
2183
  PopoverTriggerBase,
@@ -2852,7 +2909,7 @@ var SelectContentBase = React33.forwardRef(
2852
2909
  {
2853
2910
  ref,
2854
2911
  className: cn(
2855
- "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md",
2912
+ "relative z-50 max-h-96 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md",
2856
2913
  className
2857
2914
  ),
2858
2915
  position,
@@ -5393,14 +5450,29 @@ var TableCaptionBase = React33.forwardRef(({ className, ...props }, ref) => /* @
5393
5450
  }
5394
5451
  ));
5395
5452
  TableCaptionBase.displayName = "TableCaptionBase";
5396
- var TabsBase = TabsPrimitive.Root;
5453
+ var TabsBase = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
5454
+ TabsPrimitive.Root,
5455
+ {
5456
+ ref,
5457
+ className: cn("w-full", className),
5458
+ ...props
5459
+ }
5460
+ ));
5461
+ TabsBase.displayName = TabsPrimitive.Root.displayName;
5397
5462
  var TabsListBase = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
5398
5463
  TabsPrimitive.List,
5399
5464
  {
5400
5465
  ref,
5401
5466
  className: cn(
5402
5467
  "relative flex w-full items-center justify-start gap-2 border-b border-border",
5403
- "bg-transparent",
5468
+ "bg-transparent overflow-x-auto",
5469
+ "scrollbar-thin scrollbar-thumb-muted-foreground/30 scrollbar-track-transparent",
5470
+ "hover:scrollbar-thumb-muted-foreground/50",
5471
+ "[&::-webkit-scrollbar]:h-1.5",
5472
+ "[&::-webkit-scrollbar-track]:bg-transparent",
5473
+ "[&::-webkit-scrollbar-thumb]:bg-muted-foreground/30",
5474
+ "[&::-webkit-scrollbar-thumb]:rounded-full",
5475
+ "hover:[&::-webkit-scrollbar-thumb]:bg-muted-foreground/50",
5404
5476
  className
5405
5477
  ),
5406
5478
  ...props
@@ -8121,7 +8193,7 @@ function DateTimePicker({
8121
8193
  }
8122
8194
  ),
8123
8195
  /* @__PURE__ */ jsx(ErrorMessage_default, { error }),
8124
- /* @__PURE__ */ jsx(DialogContentBase, { className: "p-0 max-h-[95vh] w-[calc(100vw-24px)] sm:w-[calc(100vw-32px)] overflow-hidden flex flex-col", children: /* @__PURE__ */ jsx("div", { className: "overflow-y-auto flex-1", children: renderPickerContent() }) })
8196
+ /* @__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() }) })
8125
8197
  ] }) : /* @__PURE__ */ jsxs(PopoverBase, { open, onOpenChange: setOpen, children: [
8126
8198
  /* @__PURE__ */ jsx(
8127
8199
  PopoverTriggerBase,
@@ -10107,8 +10179,8 @@ function EventAgenda({
10107
10179
  setView(v);
10108
10180
  },
10109
10181
  items: selectItems,
10110
- className: "gap-2 px-3 py-1.5 max-[479px]:h-8",
10111
10182
  placeholder: viewLabel(view),
10183
+ className: "min-w-24",
10112
10184
  hideClear: true
10113
10185
  }
10114
10186
  ) })
@@ -10116,8 +10188,7 @@ function EventAgenda({
10116
10188
  /* @__PURE__ */ jsxs(
10117
10189
  "div",
10118
10190
  {
10119
- className: "flex flex-1 flex-col transition-all duration-200 ease-in-out",
10120
- "aria-live": "polite",
10191
+ className: "flex flex-col transition-all duration-200 ease-in-out",
10121
10192
  children: [
10122
10193
  view === "month" && /* @__PURE__ */ jsx(
10123
10194
  MonthViewAgenda,
@@ -14125,29 +14196,62 @@ var adaptDataForTooltip = (data, xAxisKey) => {
14125
14196
  };
14126
14197
  var createValueFormatter = (customFormatter, formatBR) => {
14127
14198
  const nf = new Intl.NumberFormat("pt-BR", {
14128
- minimumFractionDigits: 2,
14129
- maximumFractionDigits: 2
14199
+ minimumFractionDigits: 0,
14200
+ maximumFractionDigits: 0
14130
14201
  });
14202
+ const prefixFormats = ["R$", "$", "\u20AC", "\xA3"];
14203
+ const suffixFormats = ["%", "kg", "km", "m", "L", "un", "t", "h", "min", "s"];
14204
+ const getFormattedValue = (baseValue, format17) => {
14205
+ const trimmedFormat = format17.trim();
14206
+ if (prefixFormats.includes(trimmedFormat)) {
14207
+ return `${trimmedFormat} ${baseValue}`;
14208
+ }
14209
+ if (suffixFormats.includes(trimmedFormat)) {
14210
+ return `${baseValue}${trimmedFormat}`;
14211
+ }
14212
+ return `${baseValue} ${trimmedFormat}`;
14213
+ };
14131
14214
  if (customFormatter) {
14132
- if (formatBR) {
14133
- const wrapped = (props) => {
14134
- const { value, formattedValue } = props;
14215
+ if (typeof customFormatter === "object" && !Array.isArray(customFormatter)) {
14216
+ const formatterMap = customFormatter;
14217
+ return (props) => {
14218
+ const {
14219
+ value,
14220
+ formattedValue,
14221
+ dataKey: propsDataKey
14222
+ } = props;
14135
14223
  let num = NaN;
14136
14224
  if (typeof value === "number") num = value;
14137
14225
  else if (typeof value === "string" && value.trim() !== "") {
14138
14226
  const parsed = Number(value);
14139
14227
  num = Number.isNaN(parsed) ? NaN : parsed;
14140
14228
  }
14141
- const brFormatted = !Number.isNaN(num) ? nf.format(num) : String(formattedValue ?? value ?? "");
14142
- return customFormatter({
14143
- ...props,
14144
- formattedValue: brFormatted,
14145
- value: void 0
14146
- });
14229
+ const baseFormatted = formatBR && !Number.isNaN(num) ? nf.format(num) : String(formattedValue ?? value ?? "");
14230
+ const format17 = propsDataKey && formatterMap[propsDataKey] ? formatterMap[propsDataKey] : "";
14231
+ return format17 ? getFormattedValue(baseFormatted, format17) : baseFormatted;
14147
14232
  };
14148
- return wrapped;
14149
14233
  }
14150
- return customFormatter;
14234
+ if (typeof customFormatter === "function") {
14235
+ if (formatBR) {
14236
+ const wrapped = (props) => {
14237
+ const { value, formattedValue } = props;
14238
+ let num = NaN;
14239
+ if (typeof value === "number") num = value;
14240
+ else if (typeof value === "string" && value.trim() !== "") {
14241
+ const parsed = Number(value);
14242
+ num = Number.isNaN(parsed) ? NaN : parsed;
14243
+ }
14244
+ const brFormatted = !Number.isNaN(num) ? nf.format(num) : String(formattedValue ?? value ?? "");
14245
+ return customFormatter({
14246
+ ...props,
14247
+ formattedValue: brFormatted,
14248
+ value: void 0
14249
+ });
14250
+ };
14251
+ return wrapped;
14252
+ }
14253
+ return customFormatter;
14254
+ }
14151
14255
  }
14152
14256
  if (!formatBR) return void 0;
14153
14257
  const builtIn = (props) => {
@@ -14165,8 +14269,8 @@ var createValueFormatter = (customFormatter, formatBR) => {
14165
14269
  };
14166
14270
  var createYTickFormatter = (finalValueFormatter) => {
14167
14271
  const nf = new Intl.NumberFormat("pt-BR", {
14168
- minimumFractionDigits: 2,
14169
- maximumFractionDigits: 2
14272
+ minimumFractionDigits: 0,
14273
+ maximumFractionDigits: 0
14170
14274
  });
14171
14275
  const stripCurrency = (s) => String(s).replace(/^\s*R\$\s?/, "");
14172
14276
  if (finalValueFormatter) {
@@ -15676,7 +15780,7 @@ var Brush = ({
15676
15780
  xAxisKey,
15677
15781
  seriesOrder,
15678
15782
  finalColors,
15679
- brushHeight = 80,
15783
+ brushHeight = 40,
15680
15784
  brushColor,
15681
15785
  miniChartOpacity = 0.3
15682
15786
  }) => {
@@ -15900,16 +16004,76 @@ var ChartTotalLegend = ({ items }) => {
15900
16004
  ] }, index)) });
15901
16005
  };
15902
16006
  var ChartTotalLegend_default = ChartTotalLegend;
16007
+ var formatFieldName2 = (key) => {
16008
+ return key.replace(/([A-Z])/g, " $1").replace(/^./, (str) => str.toUpperCase()).trim();
16009
+ };
16010
+ var HorizontalLegend = ({
16011
+ allKeys,
16012
+ mapperConfig,
16013
+ finalColors,
16014
+ labelMap,
16015
+ legendUppercase = false,
16016
+ orderBy,
16017
+ maxPeriodLabel,
16018
+ minPeriodLabel,
16019
+ className
16020
+ }) => {
16021
+ const formatLegendLabel = (key) => {
16022
+ const label = mapperConfig[key]?.label ?? labelMap?.[key] ?? formatFieldName2(key);
16023
+ return legendUppercase ? label.toUpperCase() : label;
16024
+ };
16025
+ return /* @__PURE__ */ jsx("div", { className: cn(className), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 sm:gap-3 md:gap-4 flex-wrap", children: [
16026
+ allKeys.map((key) => {
16027
+ const displayLabel = formatLegendLabel(key);
16028
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 sm:gap-2", children: [
16029
+ /* @__PURE__ */ jsx(
16030
+ "div",
16031
+ {
16032
+ className: "w-2.5 h-2.5 sm:w-3 sm:h-3 rounded-sm flex-shrink-0",
16033
+ style: { backgroundColor: finalColors[key] }
16034
+ }
16035
+ ),
16036
+ /* @__PURE__ */ jsx("span", { className: "text-xs sm:text-sm tracking-[0] break-words", children: displayLabel })
16037
+ ] }, key);
16038
+ }),
16039
+ orderBy && maxPeriodLabel && minPeriodLabel && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 sm:gap-3 md:gap-4 w-full sm:w-auto justify-center mt-2 sm:mt-0 sm:ml-3 sm:pl-3 md:ml-4 md:pl-4 sm:border-l border-border", children: [
16040
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 sm:gap-1.5", children: [
16041
+ /* @__PURE__ */ jsx(
16042
+ FunnelSimpleIcon,
16043
+ {
16044
+ className: "w-3 h-3 sm:w-4 sm:h-4 text-green-600 flex-shrink-0",
16045
+ weight: "bold"
16046
+ }
16047
+ ),
16048
+ /* @__PURE__ */ jsx("span", { className: "text-xs sm:text-sm tracking-[0] font-medium truncate max-w-[120px] sm:max-w-none", children: maxPeriodLabel })
16049
+ ] }),
16050
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 sm:gap-1.5", children: [
16051
+ /* @__PURE__ */ jsx(
16052
+ FunnelSimpleIcon,
16053
+ {
16054
+ className: "w-3 h-3 sm:w-4 sm:h-4 text-red-600 rotate-180 flex-shrink-0",
16055
+ weight: "bold"
16056
+ }
16057
+ ),
16058
+ /* @__PURE__ */ jsx("span", { className: "text-xs sm:text-sm tracking-[0] font-medium truncate max-w-[120px] sm:max-w-none", children: minPeriodLabel })
16059
+ ] })
16060
+ ] })
16061
+ ] }) });
16062
+ };
16063
+ var HorizontalLegend_default = HorizontalLegend;
15903
16064
  var formatCompactNumber = (value) => {
15904
16065
  const isNegative = value < 0;
15905
16066
  const absValue = Math.abs(value);
15906
16067
  let formatted;
15907
16068
  if (absValue >= 1e9) {
15908
- formatted = (absValue / 1e9).toFixed(1).replace(/\.0$/, "") + "B";
16069
+ const billions = absValue / 1e9;
16070
+ formatted = (billions % 1 === 0 ? billions.toFixed(0) : billions.toFixed(1)) + "B";
15909
16071
  } else if (absValue >= 1e6) {
15910
- formatted = (absValue / 1e6).toFixed(1).replace(/\.0$/, "") + "M";
16072
+ const millions = absValue / 1e6;
16073
+ formatted = (millions % 1 === 0 ? millions.toFixed(0) : millions.toFixed(1)) + "M";
15911
16074
  } else if (absValue >= 1e3) {
15912
- formatted = (absValue / 1e3).toFixed(1).replace(/\.0$/, "") + " mil";
16075
+ const thousands = absValue / 1e3;
16076
+ formatted = (thousands % 1 === 0 ? thousands.toFixed(0) : thousands.toFixed(1)) + " mil";
15913
16077
  } else {
15914
16078
  try {
15915
16079
  const nf = new Intl.NumberFormat("pt-BR", {
@@ -16636,6 +16800,42 @@ function useTimeSeriesRange({
16636
16800
  handleMouseDown
16637
16801
  };
16638
16802
  }
16803
+ var useChartMinMax = ({
16804
+ processedData,
16805
+ orderBy,
16806
+ xAxisDataKey,
16807
+ categoryFormatter
16808
+ }) => {
16809
+ return useMemo(() => {
16810
+ if (!processedData || processedData.length === 0 || !orderBy) {
16811
+ return {
16812
+ maxPeriodLabel: "",
16813
+ minPeriodLabel: ""
16814
+ };
16815
+ }
16816
+ let maxValue = -Infinity;
16817
+ let minValue = Infinity;
16818
+ let maxPeriodLabel = "";
16819
+ let minPeriodLabel = "";
16820
+ processedData.forEach((item) => {
16821
+ const value = Number(item[orderBy]) || 0;
16822
+ const periodName = String(item[xAxisDataKey] || "N/A");
16823
+ const formattedPeriod = categoryFormatter ? categoryFormatter(periodName) : periodName;
16824
+ if (value > maxValue) {
16825
+ maxValue = value;
16826
+ maxPeriodLabel = formattedPeriod;
16827
+ }
16828
+ if (value < minValue) {
16829
+ minValue = value;
16830
+ minPeriodLabel = formattedPeriod;
16831
+ }
16832
+ });
16833
+ return {
16834
+ maxPeriodLabel,
16835
+ minPeriodLabel
16836
+ };
16837
+ }, [processedData, orderBy, xAxisDataKey, categoryFormatter]);
16838
+ };
16639
16839
  var filtersOrder = (mapperConfig, series) => {
16640
16840
  const seriesOrder = [];
16641
16841
  if (series) {
@@ -16708,7 +16908,7 @@ var fnSmartConfig = ({ xAxis, data, labelMap }) => {
16708
16908
  return { xAxisConfig, mapperConfig };
16709
16909
  };
16710
16910
  var fnConfigRightKeys = (biaxialConfigNormalized, yTickFormatter, finalColors) => {
16711
- const decimals = typeof biaxialConfigNormalized?.decimals === "number" ? Math.max(0, Math.floor(biaxialConfigNormalized.decimals)) : 2;
16911
+ const decimals = typeof biaxialConfigNormalized?.decimals === "number" ? Math.max(0, Math.floor(biaxialConfigNormalized.decimals)) : 1;
16712
16912
  const rightTickFormatter = (v) => {
16713
16913
  if (biaxialConfigNormalized?.percentage) {
16714
16914
  const num = Number(String(v));
@@ -16758,6 +16958,11 @@ var fnContentLabelList = (p) => {
16758
16958
  const needsOutside = barHeight > 0 && barHeight < smallThreshold || barWidth > 0 && barWidth < smallThreshold;
16759
16959
  return needsOutside ? null : true;
16760
16960
  };
16961
+
16962
+ // src/utils/calcDivision.ts
16963
+ var calcDivision = (dividend, divisor) => {
16964
+ return dividend / divisor;
16965
+ };
16761
16966
  var DEFAULT_COLORS2 = ["#55af7d", "#8e68ff", "#2273e1"];
16762
16967
  var Chart = ({
16763
16968
  data,
@@ -16794,7 +16999,9 @@ var Chart = ({
16794
16999
  isLoading = false,
16795
17000
  timeSeries,
16796
17001
  timeSeriesLegend,
16797
- customLegend
17002
+ customLegend,
17003
+ horizontal = false,
17004
+ orderBy
16798
17005
  }) => {
16799
17006
  const { xAxisConfig, mapperConfig } = useMemo(() => {
16800
17007
  return fnSmartConfig({ xAxis, data, labelMap });
@@ -16830,16 +17037,38 @@ var Chart = ({
16830
17037
  defaultEndIndex: timeSeriesConfig?.end,
16831
17038
  onRangeChange: timeSeriesConfig?.onRangeChange
16832
17039
  });
17040
+ const { maxPeriodLabel, minPeriodLabel } = useChartMinMax({
17041
+ processedData: data,
17042
+ orderBy,
17043
+ xAxisDataKey: xAxisConfig.dataKey,
17044
+ categoryFormatter
17045
+ });
16833
17046
  const processedData = useMemo(() => {
16834
17047
  const mapped = data.map((item) => ({
16835
17048
  ...item,
16836
17049
  name: String(item[xAxisConfig.dataKey] || "N/A")
16837
17050
  }));
17051
+ let result = mapped;
16838
17052
  if (timeSeriesConfig) {
16839
- return mapped.slice(startIndex, endIndex + 1);
17053
+ result = mapped.slice(startIndex, endIndex + 1);
17054
+ }
17055
+ if (orderBy && horizontal) {
17056
+ result = [...result].sort((a, b) => {
17057
+ const valueA = Number(a[orderBy]) || 0;
17058
+ const valueB = Number(b[orderBy]) || 0;
17059
+ return valueB - valueA;
17060
+ });
16840
17061
  }
16841
- return mapped;
16842
- }, [data, xAxisConfig.dataKey, timeSeriesConfig, startIndex, endIndex]);
17062
+ return result;
17063
+ }, [
17064
+ data,
17065
+ xAxisConfig.dataKey,
17066
+ timeSeriesConfig,
17067
+ startIndex,
17068
+ endIndex,
17069
+ orderBy,
17070
+ horizontal
17071
+ ]);
16843
17072
  const seriesOrder = filtersOrder(mapperConfig, series);
16844
17073
  const allKeys = seriesOrder.map((s) => s.key).filter(Boolean);
16845
17074
  const finalColors = useMemo(
@@ -17005,7 +17234,10 @@ var Chart = ({
17005
17234
  "div",
17006
17235
  {
17007
17236
  ref: wrapperRef,
17008
- className: cn("w-full overflow-hidden min-w-0 rounded-lg border-border", className),
17237
+ className: cn(
17238
+ "w-full overflow-hidden min-w-0 rounded-lg border-border",
17239
+ className
17240
+ ),
17009
17241
  children: /* @__PURE__ */ jsxs("div", { className: "rounded-lg bg-card relative w-full max-w-full min-w-0 py-1", children: [
17010
17242
  title && /* @__PURE__ */ jsx(
17011
17243
  "div",
@@ -17102,303 +17334,416 @@ var Chart = ({
17102
17334
  )
17103
17335
  }
17104
17336
  ),
17105
- /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */ jsxs(
17106
- ComposedChart,
17337
+ showLegend && horizontal && /* @__PURE__ */ jsx(
17338
+ HorizontalLegend_default,
17107
17339
  {
17108
- data: processedData,
17109
- height,
17110
- margin: {
17111
- top: 10,
17112
- right: finalChartRightMargin,
17113
- left: finalChartLeftMargin,
17114
- bottom: 10
17340
+ allKeys,
17341
+ mapperConfig,
17342
+ finalColors,
17343
+ labelMap,
17344
+ legendUppercase,
17345
+ orderBy,
17346
+ maxPeriodLabel,
17347
+ minPeriodLabel,
17348
+ className: cn(HORIZONTAL_PADDING_CLASS)
17349
+ }
17350
+ ),
17351
+ /* @__PURE__ */ jsx(
17352
+ "div",
17353
+ {
17354
+ className: cn(
17355
+ horizontal && "overflow-y-auto overflow-x-hidden px-6",
17356
+ horizontal && "scrollbar-thin scrollbar-thumb-muted scrollbar-track-transparent"
17357
+ ),
17358
+ style: {
17359
+ maxHeight: horizontal ? height : void 0
17115
17360
  },
17116
- onClick: handleChartClick,
17117
- children: [
17118
- /* @__PURE__ */ jsx("defs", { children: seriesOrder.filter((s) => s.type === "area").map((s) => {
17119
- const key = s.key;
17120
- const color = finalColors[key];
17121
- return /* @__PURE__ */ jsxs(
17122
- "linearGradient",
17361
+ children: /* @__PURE__ */ jsx(
17362
+ ResponsiveContainer,
17363
+ {
17364
+ width: "100%",
17365
+ height: horizontal ? Math.max(height, processedData.length * 50) : height,
17366
+ children: /* @__PURE__ */ jsxs(
17367
+ ComposedChart,
17123
17368
  {
17124
- id: `gradient-${key}`,
17125
- x1: "0",
17126
- y1: "0",
17127
- x2: "0",
17128
- y2: "0.8",
17369
+ data: processedData,
17370
+ height: horizontal ? Math.max(height, processedData.length * 50) : height,
17371
+ layout: horizontal ? "vertical" : "horizontal",
17372
+ margin: {
17373
+ top: 10,
17374
+ right: finalChartRightMargin,
17375
+ left: finalChartLeftMargin,
17376
+ bottom: 10
17377
+ },
17378
+ onClick: handleChartClick,
17129
17379
  children: [
17130
- /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: color, stopOpacity: 0.8 }),
17131
- /* @__PURE__ */ jsx("stop", { offset: "90%", stopColor: color, stopOpacity: 0.1 })
17132
- ]
17133
- },
17134
- `gradient-${key}`
17135
- );
17136
- }) }),
17137
- showGrid && /* @__PURE__ */ jsx(
17138
- CartesianGrid,
17139
- {
17140
- strokeDasharray: "3 3",
17141
- stroke: gridColor || "hsl(var(--muted-foreground))",
17142
- opacity: 0.5
17143
- }
17144
- ),
17145
- /* @__PURE__ */ jsx(
17146
- XAxis,
17147
- {
17148
- dataKey: xAxisConfig.dataKey,
17149
- stroke: "hsl(var(--muted-foreground))",
17150
- fontSize: 12,
17151
- tickLine: false,
17152
- axisLine: false,
17153
- tickFormatter: (value) => {
17154
- if (categoryFormatter)
17155
- return categoryFormatter(value);
17156
- if (xAxisConfig.valueFormatter)
17157
- return xAxisConfig.valueFormatter(value);
17158
- return String(value ?? "");
17159
- },
17160
- label: xAxisLabel ? {
17161
- value: xAxisLabel,
17162
- position: "insideBottomRight",
17163
- offset: -5,
17164
- style: {
17165
- fontSize: 12,
17166
- fill: "hsl(var(--muted-foreground))",
17167
- fontWeight: 500
17168
- }
17169
- } : void 0
17170
- }
17171
- ),
17172
- /* @__PURE__ */ jsx(
17173
- YAxis,
17174
- {
17175
- yAxisId: "left",
17176
- width: yAxisTickWidth,
17177
- stroke: "hsl(var(--muted-foreground))",
17178
- fontSize: 12,
17179
- tickLine: false,
17180
- axisLine: false,
17181
- tickFormatter: yTickFormatter,
17182
- domain: [Math.min(minLeftDataValue, 0), niceMaxLeft],
17183
- tickCount: 6,
17184
- label: yAxisLabel ? {
17185
- value: yAxisLabel,
17186
- angle: -90,
17187
- position: "left",
17188
- dx: leftYAxisLabelDx,
17189
- style: {
17190
- fontSize: 12,
17191
- fill: "hsl(var(--muted-foreground))",
17192
- fontWeight: 500,
17193
- textAnchor: "middle"
17194
- }
17195
- } : void 0
17196
- }
17197
- ),
17198
- minLeftDataValue < 0 && /* @__PURE__ */ jsx(
17199
- ReferenceLine,
17200
- {
17201
- y: 0,
17202
- yAxisId: "left",
17203
- stroke: "hsl(var(--muted-foreground))",
17204
- strokeWidth: 1,
17205
- strokeDasharray: "4 4"
17206
- }
17207
- ),
17208
- rightKeys.length > 0 && (() => {
17209
- const { rightAxisColor, rightTickFormatter } = fnConfigRightKeys(biaxialConfigNormalized, yTickFormatter, finalColors);
17210
- return /* @__PURE__ */ jsx(
17211
- YAxis,
17212
- {
17213
- yAxisId: "right",
17214
- width: finalChartRightMargin,
17215
- orientation: "right",
17216
- stroke: "hsl(var(--muted-foreground))",
17217
- fontSize: 12,
17218
- tickLine: false,
17219
- axisLine: false,
17220
- tick: { fill: rightAxisColor },
17221
- tickFormatter: rightTickFormatter,
17222
- domain: [Math.min(minRightDataValue, 0), niceMaxRight],
17223
- tickCount: 6,
17224
- label: biaxialConfigNormalized?.label ? {
17225
- value: biaxialConfigNormalized.label,
17226
- angle: -90,
17227
- position: "right",
17228
- dx: rightYAxisLabelDx,
17229
- style: {
17230
- fontSize: 12,
17231
- fill: "hsl(var(--muted-foreground))",
17232
- fontWeight: 500,
17233
- textAnchor: "middle"
17234
- }
17235
- } : void 0
17236
- }
17237
- );
17238
- })(),
17239
- showTooltip && /* @__PURE__ */ jsx(
17240
- Tooltip,
17241
- {
17242
- content: showTooltipTotal ? /* @__PURE__ */ jsx(
17243
- TooltipWithTotal_default,
17244
- {
17245
- finalColors,
17246
- valueFormatter: finalValueFormatter,
17247
- categoryFormatter,
17248
- periodLabel
17249
- }
17250
- ) : /* @__PURE__ */ jsx(
17251
- TooltipSimple_default,
17252
- {
17253
- finalColors,
17254
- valueFormatter: finalValueFormatter,
17255
- categoryFormatter,
17256
- periodLabel
17257
- }
17258
- ),
17259
- cursor: { fill: "hsl(var(--muted))", opacity: 0.1 }
17260
- }
17261
- ),
17262
- showLegend && /* @__PURE__ */ jsx(
17263
- Legend,
17264
- {
17265
- iconSize: 12,
17266
- formatter: (value) => {
17267
- return /* @__PURE__ */ jsx("span", { className: "tracking-[0]", children: fnFormatterValueLegend(
17268
- value,
17269
- mapperConfig,
17270
- labelMap,
17271
- legendUppercase
17272
- ) });
17273
- }
17274
- }
17275
- ),
17276
- seriesOrder.map((s) => {
17277
- if (showOnlyHighlighted && !highlightedSeries.has(s.key))
17278
- return null;
17279
- const { label, color, key } = fnBuildConfigData(
17280
- s,
17281
- mapperConfig,
17282
- labelMap,
17283
- finalColors,
17284
- rightKeys,
17285
- biaxialConfigNormalized
17286
- );
17287
- if (s.type === "bar") {
17288
- return /* @__PURE__ */ jsx(
17289
- Bar,
17290
- {
17291
- dataKey: key,
17292
- yAxisId: rightKeys.includes(key) ? "right" : "left",
17293
- name: label,
17294
- fill: color,
17295
- radius: [4, 4, 0, 0],
17296
- onClick: handleBarClick,
17297
- className: "cursor-pointer",
17298
- style: { opacity: getSeriesOpacity(key) },
17299
- activeBar: /* @__PURE__ */ jsx(
17300
- Rectangle,
17380
+ /* @__PURE__ */ jsx("defs", { children: seriesOrder.filter((s) => s.type === "area").map((s) => {
17381
+ const key = s.key;
17382
+ const color = finalColors[key];
17383
+ return /* @__PURE__ */ jsxs(
17384
+ "linearGradient",
17385
+ {
17386
+ id: `gradient-${key}`,
17387
+ x1: "0",
17388
+ y1: "0",
17389
+ x2: "0",
17390
+ y2: "0.8",
17391
+ children: [
17392
+ /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: color, stopOpacity: 0.8 }),
17393
+ /* @__PURE__ */ jsx(
17394
+ "stop",
17395
+ {
17396
+ offset: "90%",
17397
+ stopColor: color,
17398
+ stopOpacity: 0.1
17399
+ }
17400
+ )
17401
+ ]
17402
+ },
17403
+ `gradient-${key}`
17404
+ );
17405
+ }) }),
17406
+ showGrid && /* @__PURE__ */ jsx(
17407
+ CartesianGrid,
17301
17408
  {
17302
- fill: color,
17303
- stroke: color,
17304
- strokeWidth: 2,
17305
- opacity: 0.8
17409
+ strokeDasharray: "3 3",
17410
+ stroke: gridColor || "hsl(var(--muted-foreground))",
17411
+ opacity: 0.5
17306
17412
  }
17307
17413
  ),
17308
- children: showLabels && labelsVisibility.bar !== false && highlightedSeries.size === 0 || highlightedSeries.has(key) ? /* @__PURE__ */ jsx(
17309
- LabelList,
17414
+ horizontal ? /* @__PURE__ */ jsxs(Fragment, { children: [
17415
+ /* @__PURE__ */ jsx(
17416
+ XAxis,
17417
+ {
17418
+ type: "number",
17419
+ orientation: "top",
17420
+ stroke: "hsl(var(--muted-foreground))",
17421
+ fontSize: 12,
17422
+ tickLine: false,
17423
+ axisLine: false,
17424
+ tickFormatter: yTickFormatter,
17425
+ domain: [Math.min(minLeftDataValue, 0), niceMaxLeft],
17426
+ tickCount: 6,
17427
+ label: yAxisLabel ? {
17428
+ value: yAxisLabel,
17429
+ position: "insideTopRight",
17430
+ offset: -5,
17431
+ style: {
17432
+ fontSize: 12,
17433
+ fill: "hsl(var(--muted-foreground))",
17434
+ fontWeight: 500
17435
+ }
17436
+ } : void 0
17437
+ }
17438
+ ),
17439
+ /* @__PURE__ */ jsx(
17440
+ YAxis,
17441
+ {
17442
+ type: "category",
17443
+ dataKey: xAxisConfig.dataKey,
17444
+ yAxisId: "left",
17445
+ width: yAxisTickWidth,
17446
+ stroke: "hsl(var(--muted-foreground))",
17447
+ fontSize: 12,
17448
+ tickLine: false,
17449
+ axisLine: false,
17450
+ tickFormatter: (value) => {
17451
+ if (categoryFormatter)
17452
+ return categoryFormatter(value);
17453
+ if (xAxisConfig.valueFormatter)
17454
+ return xAxisConfig.valueFormatter(
17455
+ value
17456
+ );
17457
+ return String(value ?? "");
17458
+ },
17459
+ label: xAxisLabel ? {
17460
+ value: xAxisLabel,
17461
+ angle: -90,
17462
+ position: "insideTop",
17463
+ dx: leftYAxisLabelDx,
17464
+ style: {
17465
+ fontSize: 12,
17466
+ fill: "hsl(var(--muted-foreground))",
17467
+ fontWeight: 500,
17468
+ textAnchor: "middle"
17469
+ }
17470
+ } : void 0
17471
+ }
17472
+ )
17473
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
17474
+ /* @__PURE__ */ jsx(
17475
+ XAxis,
17476
+ {
17477
+ dataKey: xAxisConfig.dataKey,
17478
+ stroke: "hsl(var(--muted-foreground))",
17479
+ fontSize: 12,
17480
+ tickLine: false,
17481
+ axisLine: false,
17482
+ tickFormatter: (value) => {
17483
+ if (categoryFormatter)
17484
+ return categoryFormatter(value);
17485
+ if (xAxisConfig.valueFormatter)
17486
+ return xAxisConfig.valueFormatter(
17487
+ value
17488
+ );
17489
+ return String(value ?? "");
17490
+ },
17491
+ label: xAxisLabel ? {
17492
+ value: xAxisLabel,
17493
+ position: "insideBottomRight",
17494
+ offset: -5,
17495
+ style: {
17496
+ fontSize: 12,
17497
+ fill: "hsl(var(--muted-foreground))",
17498
+ fontWeight: 500
17499
+ }
17500
+ } : void 0
17501
+ }
17502
+ ),
17503
+ /* @__PURE__ */ jsx(
17504
+ YAxis,
17505
+ {
17506
+ yAxisId: "left",
17507
+ width: yAxisTickWidth,
17508
+ stroke: "hsl(var(--muted-foreground))",
17509
+ fontSize: 12,
17510
+ tickLine: false,
17511
+ axisLine: false,
17512
+ tickFormatter: yTickFormatter,
17513
+ domain: [Math.min(minLeftDataValue, 0), niceMaxLeft],
17514
+ tickCount: 6,
17515
+ label: yAxisLabel ? {
17516
+ value: yAxisLabel,
17517
+ angle: -90,
17518
+ position: "left",
17519
+ dx: leftYAxisLabelDx,
17520
+ style: {
17521
+ fontSize: 12,
17522
+ fill: "hsl(var(--muted-foreground))",
17523
+ fontWeight: 500,
17524
+ textAnchor: "middle"
17525
+ }
17526
+ } : void 0
17527
+ }
17528
+ )
17529
+ ] }),
17530
+ minLeftDataValue < 0 && /* @__PURE__ */ jsx(
17531
+ ReferenceLine,
17310
17532
  {
17311
- dataKey: key,
17312
- content: (props) => {
17313
- if (!fnContentLabelList(props))
17314
- return null;
17315
- const inside = renderInsideBarLabel(
17316
- color,
17317
- finalValueFormatter
17318
- );
17319
- return inside(props);
17320
- },
17321
- offset: 0
17533
+ y: 0,
17534
+ yAxisId: "left",
17535
+ stroke: "hsl(var(--muted-foreground))",
17536
+ strokeWidth: 1,
17537
+ strokeDasharray: "4 4"
17322
17538
  }
17323
- ) : null
17324
- },
17325
- `bar-${key}`
17326
- );
17327
- }
17328
- if (s.type === "line") {
17329
- return /* @__PURE__ */ jsx(
17330
- Line,
17331
- {
17332
- dataKey: key,
17333
- yAxisId: rightKeys.includes(key) ? "right" : "left",
17334
- name: label,
17335
- stroke: color,
17336
- strokeWidth: 2,
17337
- dot: { r: 3 },
17338
- activeDot: { r: 6 },
17339
- onClick: handleSeriesClick,
17340
- className: "cursor-pointer pointer-events-auto",
17341
- style: { opacity: getSeriesOpacity(key) },
17342
- children: showLabels && labelsVisibility.line !== false && highlightedSeries.size === 0 || highlightedSeries.has(key) ? /* @__PURE__ */ jsx(
17343
- LabelList,
17539
+ ),
17540
+ rightKeys.length > 0 && (() => {
17541
+ const { rightAxisColor, rightTickFormatter } = fnConfigRightKeys(
17542
+ biaxialConfigNormalized,
17543
+ yTickFormatter,
17544
+ finalColors
17545
+ );
17546
+ return /* @__PURE__ */ jsx(
17547
+ YAxis,
17548
+ {
17549
+ yAxisId: "right",
17550
+ width: finalChartRightMargin,
17551
+ orientation: "right",
17552
+ stroke: "hsl(var(--muted-foreground))",
17553
+ fontSize: 12,
17554
+ tickLine: false,
17555
+ axisLine: false,
17556
+ tick: { fill: rightAxisColor },
17557
+ tickFormatter: rightTickFormatter,
17558
+ domain: [Math.min(minRightDataValue, 0), niceMaxRight],
17559
+ tickCount: 6,
17560
+ label: biaxialConfigNormalized?.label ? {
17561
+ value: biaxialConfigNormalized.label,
17562
+ angle: -90,
17563
+ position: "right",
17564
+ dx: rightYAxisLabelDx,
17565
+ style: {
17566
+ fontSize: 12,
17567
+ fill: "hsl(var(--muted-foreground))",
17568
+ fontWeight: 500,
17569
+ textAnchor: "middle"
17570
+ }
17571
+ } : void 0
17572
+ }
17573
+ );
17574
+ })(),
17575
+ showTooltip && /* @__PURE__ */ jsx(
17576
+ Tooltip,
17344
17577
  {
17345
- dataKey: key,
17346
- position: "top",
17347
- content: pillLabelRenderer_default(
17348
- color,
17349
- "filled",
17350
- finalValueFormatter
17578
+ content: showTooltipTotal ? /* @__PURE__ */ jsx(
17579
+ TooltipWithTotal_default,
17580
+ {
17581
+ finalColors,
17582
+ valueFormatter: finalValueFormatter,
17583
+ categoryFormatter,
17584
+ periodLabel
17585
+ }
17586
+ ) : /* @__PURE__ */ jsx(
17587
+ TooltipSimple_default,
17588
+ {
17589
+ finalColors,
17590
+ valueFormatter: finalValueFormatter,
17591
+ categoryFormatter,
17592
+ periodLabel
17593
+ }
17351
17594
  ),
17352
- offset: 14
17595
+ cursor: { fill: "hsl(var(--muted))", opacity: 0.1 }
17353
17596
  }
17354
- ) : null
17355
- },
17356
- `line-${key}`
17357
- );
17358
- }
17359
- if (s.type === "area") {
17360
- return /* @__PURE__ */ jsx(
17361
- Area,
17362
- {
17363
- type: "monotone",
17364
- dataKey: key,
17365
- yAxisId: rightKeys.includes(key) ? "right" : "left",
17366
- name: label,
17367
- stroke: color,
17368
- fill: `url(#gradient-${key})`,
17369
- fillOpacity: 1,
17370
- strokeWidth: 2,
17371
- onClick: handleSeriesClick,
17372
- className: "cursor-pointer pointer-events-auto",
17373
- style: { opacity: getSeriesOpacity(key) },
17374
- activeDot: {
17375
- r: 6,
17376
- fill: color,
17377
- stroke: "hsl(var(--background))",
17378
- strokeWidth: 2
17379
- },
17380
- children: showLabels && labelsVisibility.area !== false && highlightedSeries.size === 0 || highlightedSeries.has(key) ? /* @__PURE__ */ jsx(
17381
- LabelList,
17597
+ ),
17598
+ showLegend && !horizontal && /* @__PURE__ */ jsx(
17599
+ Legend,
17382
17600
  {
17383
- dataKey: key,
17384
- position: "top",
17385
- content: pillLabelRenderer_default(
17386
- color,
17387
- "soft",
17388
- finalValueFormatter
17389
- ),
17390
- offset: 12
17601
+ iconSize: 12,
17602
+ formatter: (value) => {
17603
+ return /* @__PURE__ */ jsx("span", { className: "tracking-[0] rounded-sm", children: fnFormatterValueLegend(
17604
+ value,
17605
+ mapperConfig,
17606
+ labelMap,
17607
+ legendUppercase
17608
+ ) });
17609
+ }
17391
17610
  }
17392
- ) : null
17393
- },
17394
- `area-${key}`
17395
- );
17396
- }
17397
- return null;
17398
- })
17399
- ]
17611
+ ),
17612
+ seriesOrder.map((s) => {
17613
+ if (showOnlyHighlighted && !highlightedSeries.has(s.key))
17614
+ return null;
17615
+ const { label, color, key } = fnBuildConfigData(
17616
+ s,
17617
+ mapperConfig,
17618
+ labelMap,
17619
+ finalColors,
17620
+ rightKeys,
17621
+ biaxialConfigNormalized
17622
+ );
17623
+ if (s.type === "bar") {
17624
+ return /* @__PURE__ */ jsx(
17625
+ Bar,
17626
+ {
17627
+ dataKey: key,
17628
+ yAxisId: rightKeys.includes(key) ? "right" : "left",
17629
+ name: label,
17630
+ fill: color,
17631
+ radius: horizontal ? [0, 4, 4, 0] : [4, 4, 0, 0],
17632
+ onClick: handleBarClick,
17633
+ className: "cursor-pointer",
17634
+ style: { opacity: getSeriesOpacity(key) },
17635
+ activeBar: /* @__PURE__ */ jsx(
17636
+ Rectangle,
17637
+ {
17638
+ fill: color,
17639
+ stroke: color,
17640
+ strokeWidth: 2,
17641
+ opacity: 0.8
17642
+ }
17643
+ ),
17644
+ children: showLabels && labelsVisibility.bar !== false && highlightedSeries.size === 0 || highlightedSeries.has(key) ? /* @__PURE__ */ jsx(
17645
+ LabelList,
17646
+ {
17647
+ dataKey: key,
17648
+ content: (props) => {
17649
+ if (!fnContentLabelList(props)) return null;
17650
+ const inside = renderInsideBarLabel(
17651
+ color,
17652
+ finalValueFormatter
17653
+ );
17654
+ return inside(props);
17655
+ },
17656
+ offset: 0
17657
+ }
17658
+ ) : null
17659
+ },
17660
+ `bar-${key}`
17661
+ );
17662
+ }
17663
+ if (s.type === "line") {
17664
+ const lineFormatter = (props) => {
17665
+ const numValue = typeof props.value === "number" ? props.value : typeof props.value === "string" ? parseFloat(props.value) : 0;
17666
+ const percentage = calcDivision(numValue, 100);
17667
+ const formattedPercentage = typeof percentage === "number" ? percentage.toFixed(1).replace(".", ",") : String(percentage).replace(".", ",");
17668
+ return `${formattedPercentage}%`;
17669
+ };
17670
+ return /* @__PURE__ */ jsx(
17671
+ Line,
17672
+ {
17673
+ dataKey: key,
17674
+ yAxisId: rightKeys.includes(key) ? "right" : "left",
17675
+ name: label,
17676
+ stroke: color,
17677
+ strokeWidth: 2,
17678
+ dot: { r: 3 },
17679
+ activeDot: { r: 6 },
17680
+ onClick: handleSeriesClick,
17681
+ className: "cursor-pointer pointer-events-auto",
17682
+ style: { opacity: getSeriesOpacity(key) },
17683
+ children: showLabels && labelsVisibility.line !== false && highlightedSeries.size === 0 || highlightedSeries.has(key) ? /* @__PURE__ */ jsx(
17684
+ LabelList,
17685
+ {
17686
+ dataKey: key,
17687
+ position: "top",
17688
+ content: pillLabelRenderer_default(
17689
+ color,
17690
+ "filled",
17691
+ lineFormatter
17692
+ ),
17693
+ offset: 14
17694
+ }
17695
+ ) : null
17696
+ },
17697
+ `line-${key}`
17698
+ );
17699
+ }
17700
+ if (s.type === "area") {
17701
+ return /* @__PURE__ */ jsx(
17702
+ Area,
17703
+ {
17704
+ type: "monotone",
17705
+ dataKey: key,
17706
+ yAxisId: rightKeys.includes(key) ? "right" : "left",
17707
+ name: label,
17708
+ stroke: color,
17709
+ fill: `url(#gradient-${key})`,
17710
+ fillOpacity: 1,
17711
+ strokeWidth: 2,
17712
+ onClick: handleSeriesClick,
17713
+ className: "cursor-pointer pointer-events-auto",
17714
+ style: { opacity: getSeriesOpacity(key) },
17715
+ activeDot: {
17716
+ r: 6,
17717
+ fill: color,
17718
+ stroke: "hsl(var(--background))",
17719
+ strokeWidth: 2
17720
+ },
17721
+ children: showLabels && labelsVisibility.area !== false && highlightedSeries.size === 0 || highlightedSeries.has(key) ? /* @__PURE__ */ jsx(
17722
+ LabelList,
17723
+ {
17724
+ dataKey: key,
17725
+ position: "top",
17726
+ content: pillLabelRenderer_default(
17727
+ color,
17728
+ "soft",
17729
+ finalValueFormatter
17730
+ ),
17731
+ offset: 12
17732
+ }
17733
+ ) : null
17734
+ },
17735
+ `area-${key}`
17736
+ );
17737
+ }
17738
+ return null;
17739
+ })
17740
+ ]
17741
+ }
17742
+ )
17743
+ }
17744
+ )
17400
17745
  }
17401
- ) }),
17746
+ ),
17402
17747
  enableDraggableTooltips && activeTooltips.map((tooltip) => /* @__PURE__ */ jsx(
17403
17748
  DraggableTooltip_default,
17404
17749
  {
@@ -17823,4 +18168,4 @@ function Leaderboard({
17823
18168
  );
17824
18169
  }
17825
18170
 
17826
- 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, CarouselContentBase, CarouselItemBase, CarouselNextBase, CarouselPreviousBase, ChangeButton, Chart_default as Chart, ChartTotalLegend_default as ChartTotalLegend, CheckButton, CheckboxBase, CheckboxTree, CloseAllButton_default as CloseAllButton, CloseButton, CodeBlock, CollapsibleBase, CollapsibleContentBase, CollapsibleTriggerBase, Combobox, CommandBase, CommandDialogBase, CommandEmptyBase, CommandGroupBase, CommandInputBase, CommandItemBase, CommandListBase, CommandSeparatorBase, CommandShortcutBase, ContextMenuBase, ContextMenuCheckboxItemBase, ContextMenuContentBase, ContextMenuGroupBase, ContextMenuItemBase, ContextMenuLabelBase, ContextMenuPortalBase, ContextMenuRadioGroupBase, ContextMenuRadioItemBase, ContextMenuSeparatorBase, ContextMenuShortcutBase, ContextMenuSubBase, ContextMenuSubContentBase, ContextMenuSubTriggerBase, ContextMenuTriggerBase, 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, EventDialog, EventGap, EventGapAgenda, EventHeight, EventHeightAgenda, EventItem, EventItemAgenda, EventsPopup, FavoriteButton, FileUploader, FilterButton, HideButton, Highlights_default as Highlights, HoverCardBase, HoverCardContentBase, HoverCardTriggerBase, ITEM_HEIGHT, InputBase, InputOTPBase, InputOTPGroupBase, InputOTPSeparatorBase, InputOTPSlotBase, LabelBase_default as LabelBase, Leaderboard, LikeButton, LoadingBase, LockButton, ModalBase, ModalCloseBase, ModalContentBase, ModalDescriptionBase, ModalFooterBase, ModalHeaderBase, ModalOverlayBase, ModalPortalBase, ModalTitleBase, ModalTriggerBase, ModeToggleBase, MonthView, MonthViewAgenda, MoreButton, MultiCombobox, 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, PieChart_default as PieChart, PopoverAnchorBase, PopoverBase, PopoverContentBase, PopoverTriggerBase, ProgressBase, ProgressCirclesBase, ProgressPanelsBase, ProgressSegmentsBase, 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, adaptDataForTooltip, addHoursToDate, addHoursToDateAgenda, addMinutesToDateAgenda, badgeVariants, buttonVariantsBase, compactTick, computeChartWidth, computeNiceMax, computeYAxisTickWidth, convert12HourTo24Hour, createValueFormatter, createYTickFormatter, detectDataFields, detectXAxis, display12HourValue, formatFieldName, generateAdditionalColors, generateColorMap, getAgendaEventsForDay, getAgendaEventsForDayAgenda, getAllEventsForDay, getAllEventsForDayAgenda, getArrowByType, 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, renderInsideBarLabel, pillLabelRenderer_default as renderPillLabel, resolveChartMargins, resolveContainerPaddingLeft, set12Hours, setDateByType, setHours, setMinutes, setSeconds, sortEvents, sortEventsAgenda, toast, useCalendarDnd, useCalendarDndAgenda, useChartClick, useChartDimensions, useChartHighlights, useChartTooltips, useCurrentTimeIndicator, useCurrentTimeIndicatorAgenda, useDrag, useEventVisibility, useEventVisibilityAgenda, useIsMobile, useTheme, useTimeSeriesRange, visualForItem };
18171
+ 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, CarouselContentBase, CarouselItemBase, CarouselNextBase, CarouselPreviousBase, ChangeButton, Chart_default as Chart, ChartTotalLegend_default as ChartTotalLegend, CheckButton, CheckboxBase, CheckboxTree, CloseAllButton_default as CloseAllButton, CloseButton, CodeBlock, CollapsibleBase, CollapsibleContentBase, CollapsibleTriggerBase, Combobox, CommandBase, CommandDialogBase, CommandEmptyBase, CommandGroupBase, CommandInputBase, CommandItemBase, CommandListBase, CommandSeparatorBase, CommandShortcutBase, ContextMenuBase, ContextMenuCheckboxItemBase, ContextMenuContentBase, ContextMenuGroupBase, ContextMenuItemBase, ContextMenuLabelBase, ContextMenuPortalBase, ContextMenuRadioGroupBase, ContextMenuRadioItemBase, ContextMenuSeparatorBase, ContextMenuShortcutBase, ContextMenuSubBase, ContextMenuSubContentBase, ContextMenuSubTriggerBase, ContextMenuTriggerBase, 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, EventDialog, EventGap, EventGapAgenda, EventHeight, EventHeightAgenda, EventItem, EventItemAgenda, EventsPopup, FavoriteButton, FileUploader, FilterButton, HideButton, Highlights_default as Highlights, HorizontalLegend_default as HorizontalLegend, HoverCardBase, HoverCardContentBase, HoverCardTriggerBase, ITEM_HEIGHT, InputBase, InputOTPBase, InputOTPGroupBase, InputOTPSeparatorBase, InputOTPSlotBase, LabelBase_default as LabelBase, Leaderboard, LikeButton, LoadingBase, LockButton, ModalBase, ModalCloseBase, ModalContentBase, ModalDescriptionBase, ModalFooterBase, ModalHeaderBase, ModalOverlayBase, ModalPortalBase, ModalTitleBase, ModalTriggerBase, ModeToggleBase, MonthView, MonthViewAgenda, MoreButton, MultiCombobox, 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, PieChart_default as PieChart, PopoverAnchorBase, PopoverBase, PopoverContentBase, PopoverTriggerBase, ProgressBase, ProgressCirclesBase, ProgressPanelsBase, ProgressSegmentsBase, 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, adaptDataForTooltip, addHoursToDate, addHoursToDateAgenda, addMinutesToDateAgenda, badgeVariants, buttonVariantsBase, compactTick, computeChartWidth, computeNiceMax, computeYAxisTickWidth, convert12HourTo24Hour, createValueFormatter, createYTickFormatter, detectDataFields, detectXAxis, display12HourValue, formatFieldName, generateAdditionalColors, generateColorMap, getAgendaEventsForDay, getAgendaEventsForDayAgenda, getAllEventsForDay, getAllEventsForDayAgenda, getArrowByType, 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, renderInsideBarLabel, pillLabelRenderer_default as renderPillLabel, resolveChartMargins, resolveContainerPaddingLeft, set12Hours, setDateByType, setHours, setMinutes, setSeconds, sortEvents, sortEventsAgenda, toast, useCalendarDnd, useCalendarDndAgenda, useChartClick, useChartDimensions, useChartHighlights, useChartMinMax, useChartTooltips, useCurrentTimeIndicator, useCurrentTimeIndicatorAgenda, useDrag, useEventVisibility, useEventVisibilityAgenda, useIsMobile, useTheme, useTimeSeriesRange, visualForItem };