@mlw-packages/react-components 1.9.6 → 1.9.8

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,6 +1,6 @@
1
1
  import './index.css';
2
2
  import * as React33 from 'react';
3
- import React33__default, { createContext, useMemo, useState, useRef, useEffect, useCallback, useContext, useId, useLayoutEffect } from 'react';
3
+ import React33__default, { createContext, forwardRef, useState, useEffect, useMemo, useRef, useCallback, useContext, useId, 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';
@@ -42,7 +42,7 @@ import ptBR3 from 'date-fns/locale/pt-BR';
42
42
  import { useSensors, useSensor, MouseSensor, TouchSensor, PointerSensor, DndContext, DragOverlay, useDroppable, useDraggable } from '@dnd-kit/core';
43
43
  import { CSS } from '@dnd-kit/utilities';
44
44
  import { RadioGroup, RadioGroupItem } from '@radix-ui/react-radio-group';
45
- import { ResponsiveContainer, ComposedChart, XAxis, YAxis, Bar, Line, Area, CartesianGrid, Tooltip, Legend, LabelList, Rectangle, PieChart, Pie, Cell } from 'recharts';
45
+ import { ResponsiveContainer, ComposedChart, XAxis, YAxis, Bar, Line, Area, CartesianGrid, Tooltip, Legend, LabelList, Rectangle } from 'recharts';
46
46
 
47
47
  var __create = Object.create;
48
48
  var __defProp = Object.defineProperty;
@@ -1848,9 +1848,9 @@ var InputBase = React33.forwardRef(
1848
1848
  "div",
1849
1849
  {
1850
1850
  className: cn(
1851
- "flex items-center rounded-md transition h-9 focus-within:ring-1 focus-within:ring-ring focus-within:border-ring bg-background overflow-hidden",
1851
+ "flex items-center rounded-md transition h-9 bg-background overflow-hidden",
1852
1852
  type !== "file" && "border border-input",
1853
- error ? "border-destructive focus:ring-1 focus:ring-destructive" : "border-input focus:ring-1 focus:ring-ring"
1853
+ error ? "border-destructive focus:ring-1 focus:ring-destructive" : "border-input"
1854
1854
  ),
1855
1855
  children: [
1856
1856
  leftIcon && /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center px-2", children: leftIcon }),
@@ -1934,87 +1934,130 @@ var CommandInputBase = React33.forwardRef(({ className, testid: dataTestId = "co
1934
1934
  }
1935
1935
  ));
1936
1936
  CommandInputBase.displayName = Command.Input.displayName;
1937
- var CommandListBase = React33.forwardRef(({ className, testid: dataTestId = "command-list", ...props }, ref) => {
1938
- const listRef = React33.useRef(null);
1939
- React33.useEffect(() => {
1940
- const element = listRef.current;
1941
- if (!element) return;
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;
1956
- e.stopPropagation();
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) {
1937
+ var CommandDebouncedInputBase = React33.forwardRef(({ className, testid: dataTestId = "command-input", ...props }, ref) => /* @__PURE__ */ jsxs(
1938
+ "div",
1939
+ {
1940
+ className: "flex items-center border-b px-3 border-border",
1941
+ "cmdk-input-wrapper": "",
1942
+ children: [
1943
+ /* @__PURE__ */ jsx(MagnifyingGlassIcon, { className: "mr-2 h-4 w-4 shrink-0 text-primary" }),
1944
+ /* @__PURE__ */ jsx(
1945
+ Command.Input,
1946
+ {
1947
+ ref,
1948
+ className: cn(
1949
+ "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",
1950
+ className
1951
+ ),
1952
+ "data-testid": dataTestId,
1953
+ ...props
1954
+ }
1955
+ )
1956
+ ]
1957
+ }
1958
+ ));
1959
+ CommandDebouncedInputBase.displayName = Command.Input.displayName;
1960
+ var CommandListBase = React33.forwardRef(
1961
+ ({ className, testid: dataTestId = "command-list", onEndReached, ...props }, ref) => {
1962
+ const listRef = React33.useRef(null);
1963
+ React33.useEffect(() => {
1964
+ const element = listRef.current;
1965
+ if (!element) return;
1966
+ const handleWheel = (e) => {
1967
+ const target = e.currentTarget;
1968
+ const { scrollTop, scrollHeight, clientHeight } = target;
1969
+ const isScrollingDown = e.deltaY > 0;
1970
+ const isScrollingUp = e.deltaY < 0;
1971
+ const isAtBottom = scrollTop + clientHeight >= scrollHeight - 1;
1972
+ const isAtTop = scrollTop <= 1;
1973
+ if (isScrollingDown && isAtBottom && onEndReached) {
1974
+ onEndReached();
1975
+ }
1976
+ if (isScrollingDown && !isAtBottom || isScrollingUp && !isAtTop) {
1977
+ e.stopPropagation();
1978
+ }
1979
+ };
1980
+ const handleScroll = (e) => {
1981
+ const target = e.currentTarget;
1982
+ const { scrollTop, scrollHeight, clientHeight } = target;
1983
+ const isAtBottom = scrollTop + clientHeight >= scrollHeight - 1;
1984
+ if (isAtBottom && onEndReached) {
1985
+ onEndReached();
1986
+ }
1987
+ };
1988
+ let touchStartY = 0;
1989
+ const handleTouchStart = (e) => {
1990
+ touchStartY = e.touches[0].clientY;
1968
1991
  e.stopPropagation();
1969
- } else if (isScrollingDown && isAtBottom || isScrollingUp && isAtTop) {
1970
- e.preventDefault();
1971
- }
1972
- };
1973
- element.addEventListener("wheel", handleWheel, { passive: false });
1974
- element.addEventListener("touchstart", handleTouchStart, {
1975
- passive: false
1976
- });
1977
- element.addEventListener("touchmove", handleTouchMove, { passive: false });
1978
- return () => {
1979
- element.removeEventListener("wheel", handleWheel);
1980
- element.removeEventListener("touchmove", handleTouchMove);
1981
- element.removeEventListener("touchstart", handleTouchStart);
1982
- };
1983
- }, []);
1984
- const combinedRef = React33.useCallback(
1985
- (node) => {
1986
- listRef.current = node;
1987
- if (typeof ref === "function") {
1988
- ref(node);
1989
- } else if (ref) {
1990
- ref.current = node;
1991
- }
1992
- },
1993
- [ref]
1994
- );
1995
- return /* @__PURE__ */ jsx(
1996
- Command.List,
1997
- {
1998
- ref: combinedRef,
1999
- className: cn(
2000
- "max-h-[300px] overflow-y-auto overflow-x-hidden scroll-smooth [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:bg-muted [&::-webkit-scrollbar-thumb]:rounded-full hover:[&::-webkit-scrollbar-thumb]:bg-muted-foreground/50",
2001
- className
2002
- ),
2003
- "data-testid": dataTestId,
2004
- style: {
2005
- overscrollBehavior: "contain",
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)"
1992
+ };
1993
+ const handleTouchMove = (e) => {
1994
+ const target = e.currentTarget;
1995
+ const { scrollTop, scrollHeight, clientHeight } = target;
1996
+ const touchCurrentY = e.touches[0].clientY;
1997
+ const touchDeltaY = touchStartY - touchCurrentY;
1998
+ const isScrollingDown = touchDeltaY > 0;
1999
+ const isScrollingUp = touchDeltaY < 0;
2000
+ const isAtBottom = scrollTop + clientHeight >= scrollHeight - 1;
2001
+ const isAtTop = scrollTop <= 1;
2002
+ if (isScrollingDown && isAtBottom && onEndReached) {
2003
+ onEndReached();
2004
+ }
2005
+ if (isScrollingDown && !isAtBottom || isScrollingUp && !isAtTop) {
2006
+ e.stopPropagation();
2007
+ } else if (isScrollingDown && isAtBottom || isScrollingUp && isAtTop) {
2008
+ e.preventDefault();
2009
+ }
2010
+ };
2011
+ element.addEventListener("wheel", handleWheel, { passive: false });
2012
+ element.addEventListener("scroll", handleScroll);
2013
+ element.addEventListener("touchstart", handleTouchStart, {
2014
+ passive: false
2015
+ });
2016
+ element.addEventListener("touchmove", handleTouchMove, {
2017
+ passive: false
2018
+ });
2019
+ return () => {
2020
+ element.removeEventListener("wheel", handleWheel);
2021
+ element.removeEventListener("scroll", handleScroll);
2022
+ element.removeEventListener("touchmove", handleTouchMove);
2023
+ element.removeEventListener("touchstart", handleTouchStart);
2024
+ };
2025
+ }, [onEndReached]);
2026
+ const combinedRef = React33.useCallback(
2027
+ (node) => {
2028
+ listRef.current = node;
2029
+ if (typeof ref === "function") {
2030
+ ref(node);
2031
+ } else if (ref) {
2032
+ ref.current = node;
2033
+ }
2013
2034
  },
2014
- ...props
2015
- }
2016
- );
2017
- });
2035
+ [ref]
2036
+ );
2037
+ return /* @__PURE__ */ jsx(
2038
+ Command.List,
2039
+ {
2040
+ ref: combinedRef,
2041
+ className: cn(
2042
+ "max-h-[300px] overflow-y-auto overflow-x-hidden scroll-smooth [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:bg-muted [&::-webkit-scrollbar-thumb]:rounded-full hover:[&::-webkit-scrollbar-thumb]:bg-muted-foreground/50",
2043
+ className
2044
+ ),
2045
+ "data-testid": dataTestId,
2046
+ style: {
2047
+ overscrollBehavior: "contain",
2048
+ WebkitOverflowScrolling: "touch",
2049
+ touchAction: "pan-y",
2050
+ scrollbarWidth: "thin",
2051
+ scrollbarColor: "hsl(var(--muted)) transparent",
2052
+ overflowY: "auto",
2053
+ willChange: "scroll-position",
2054
+ transform: "translateZ(0)"
2055
+ },
2056
+ ...props
2057
+ }
2058
+ );
2059
+ }
2060
+ );
2018
2061
  CommandListBase.displayName = Command.List.displayName;
2019
2062
  var CommandEmptyBase = React33.forwardRef(({ testid: dataTestId = "command-empty", ...props }, ref) => /* @__PURE__ */ jsx(
2020
2063
  Command.Empty,
@@ -2515,8 +2558,8 @@ function MultiSelectTriggerBase({
2515
2558
  "aria-disabled": disabled || void 0,
2516
2559
  disabled,
2517
2560
  className: cn(
2518
- "flex h-auto max-h-9 min-h-9 w-full items-center justify-between gap-2 overflow-hidden rounded-md border border-input bg-background px-3 py-1.5 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
2519
- error ? "border-destructive focus:ring-1 focus:ring-destructive" : "border-input focus:ring-1 focus:ring-ring",
2561
+ "flex h-auto max-h-9 min-h-9 w-full items-center justify-between gap-2 overflow-hidden rounded-md border border-input bg-background px-3 py-1.5 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground hover:text-primary",
2562
+ error ? "border-destructive focus:ring-1 focus:ring-destructive dark:border-red-500" : "border-border focus:ring-1 focus:ring-ring",
2520
2563
  className
2521
2564
  ),
2522
2565
  children: [
@@ -7280,58 +7323,62 @@ function StatusIndicator({
7280
7323
  /* @__PURE__ */ jsx("div", { className: "min-w-0", children })
7281
7324
  ] });
7282
7325
  }
7283
- function DebouncedInput({
7284
- value: initialValue,
7285
- onChange,
7286
- debounce: debounce2 = 500,
7287
- label,
7288
- labelClassname,
7289
- leftIcon,
7290
- rightIcon,
7291
- showLoadingIndicator = false,
7292
- className,
7293
- error,
7294
- ...props
7295
- }) {
7296
- const [value, setValue] = useState(initialValue);
7297
- const [isDebouncing, setIsDebouncing] = useState(false);
7298
- useEffect(() => {
7299
- setValue(initialValue);
7300
- }, [initialValue]);
7301
- useEffect(() => {
7302
- if (value !== initialValue) {
7303
- setIsDebouncing(true);
7304
- }
7305
- const timeout = setTimeout(() => {
7306
- onChange(value);
7307
- setIsDebouncing(false);
7308
- }, debounce2);
7309
- return () => {
7310
- clearTimeout(timeout);
7311
- setIsDebouncing(false);
7326
+ var DebouncedInput = forwardRef(
7327
+ ({
7328
+ value: initialValue,
7329
+ onChange,
7330
+ debounce: debounce2 = 500,
7331
+ label,
7332
+ labelClassname,
7333
+ leftIcon,
7334
+ rightIcon,
7335
+ showLoadingIndicator = false,
7336
+ className,
7337
+ error,
7338
+ ...props
7339
+ }, ref) => {
7340
+ const [value, setValue] = useState(initialValue);
7341
+ const [isDebouncing, setIsDebouncing] = useState(false);
7342
+ useEffect(() => {
7343
+ setValue(initialValue);
7344
+ }, [initialValue]);
7345
+ useEffect(() => {
7346
+ if (value !== initialValue) {
7347
+ setIsDebouncing(true);
7348
+ }
7349
+ const timeout = setTimeout(() => {
7350
+ onChange(value);
7351
+ setIsDebouncing(false);
7352
+ }, debounce2);
7353
+ return () => {
7354
+ clearTimeout(timeout);
7355
+ setIsDebouncing(false);
7356
+ };
7357
+ }, [debounce2, initialValue, onChange, value]);
7358
+ const renderRightIcon = () => {
7359
+ if (showLoadingIndicator && isDebouncing) {
7360
+ return /* @__PURE__ */ jsx(CircleNotchIcon, { className: "h-4 w-4 animate-spin text-muted-foreground" });
7361
+ }
7362
+ return rightIcon;
7312
7363
  };
7313
- }, [debounce2, initialValue, onChange, value]);
7314
- const renderRightIcon = () => {
7315
- if (showLoadingIndicator && isDebouncing) {
7316
- return /* @__PURE__ */ jsx(CircleNotchIcon, { className: "h-4 w-4 animate-spin text-muted-foreground" });
7317
- }
7318
- return rightIcon;
7319
- };
7320
- return /* @__PURE__ */ jsx(
7321
- InputBase,
7322
- {
7323
- ...props,
7324
- label,
7325
- labelClassname,
7326
- leftIcon,
7327
- rightIcon: renderRightIcon(),
7328
- className: cn("transition-all duration-200", className),
7329
- value,
7330
- onChange: (e) => setValue(e.target.value),
7331
- error
7332
- }
7333
- );
7334
- }
7364
+ return /* @__PURE__ */ jsx(
7365
+ InputBase,
7366
+ {
7367
+ ...props,
7368
+ ref,
7369
+ label,
7370
+ labelClassname,
7371
+ leftIcon,
7372
+ rightIcon: renderRightIcon(),
7373
+ className: cn("transition-all duration-200", className),
7374
+ value,
7375
+ onChange: (e) => setValue(e.target.value),
7376
+ error
7377
+ }
7378
+ );
7379
+ }
7380
+ );
7381
+ DebouncedInput.displayName = "DebouncedInput";
7335
7382
  function useCheckboxTree(initialTree) {
7336
7383
  const initialCheckedNodes = useMemo(() => {
7337
7384
  const checkedSet = /* @__PURE__ */ new Set();
@@ -7843,7 +7890,7 @@ function ScrollColumn({
7843
7890
  {
7844
7891
  className: cn(
7845
7892
  "snap-center flex items-center justify-center select-none font-bold tabular-nums transition-all duration-200",
7846
- isCentered ? "text-2xl sm:text-xl text-foreground scale-110" : "text-base sm:text-sm text-muted-foreground/60"
7893
+ isCentered ? "text-foreground scale-110" : "text-base sm:text-sm text-muted-foreground/60"
7847
7894
  ),
7848
7895
  style: { height: `${itemHeight}px` },
7849
7896
  children: item.toString().padStart(2, "0")
@@ -9101,19 +9148,19 @@ function getEventColorClassesAgenda(color) {
9101
9148
  const eventColor = color || "sky";
9102
9149
  switch (eventColor) {
9103
9150
  case "sky":
9104
- return "bg-sky-200/50 hover:bg-sky-200/40 text-sky-950/80 dark:bg-sky-400/25 dark:hover:bg-sky-400/20 dark:text-sky-200 shadow-sky-700/8";
9151
+ return "bg-sky-100 hover:bg-sky-200 text-sky-900 border dark:bg-sky-500/30 dark:hover:bg-sky-500/40 dark:text-sky-50 dark:border-sky-400/40 shadow-sky-500/15 hover:shadow-sky-500/25 transition-all duration-200";
9105
9152
  case "amber":
9106
- return "bg-amber-200/50 hover:bg-amber-200/40 text-amber-950/80 dark:bg-amber-400/25 dark:hover:bg-amber-400/20 dark:text-amber-200 shadow-amber-700/8";
9153
+ return "bg-amber-100 hover:bg-amber-200 text-amber-900 border dark:bg-amber-500/30 dark:hover:bg-amber-500/40 dark:text-amber-50 dark:border-amber-400/40 shadow-amber-500/15 hover:shadow-amber-500/25 transition-all duration-200";
9107
9154
  case "violet":
9108
- return "bg-violet-200/50 hover:bg-violet-200/40 text-violet-950/80 dark:bg-violet-400/25 dark:hover:bg-violet-400/20 dark:text-violet-200 shadow-violet-700/8";
9155
+ return "bg-violet-100 hover:bg-violet-200 text-violet-900 border dark:bg-violet-500/30 dark:hover:bg-violet-500/40 dark:text-violet-50 dark:border-violet-400/40 shadow-violet-500/15 hover:shadow-violet-500/25 transition-all duration-200";
9109
9156
  case "rose":
9110
- return "bg-rose-200/50 hover:bg-rose-200/40 text-rose-950/80 dark:bg-rose-400/25 dark:hover:bg-rose-400/20 dark:text-rose-200 shadow-rose-700/8";
9157
+ return "bg-rose-100 hover:bg-rose-200 text-rose-900 border dark:bg-rose-500/30 dark:hover:bg-rose-500/40 dark:text-rose-50 dark:border-rose-400/40 shadow-rose-500/15 hover:shadow-rose-500/25 transition-all duration-200";
9111
9158
  case "emerald":
9112
- return "bg-emerald-200/50 hover:bg-emerald-200/40 text-emerald-950/80 dark:bg-emerald-400/25 dark:hover:bg-emerald-400/20 dark:text-emerald-200 shadow-emerald-700/8";
9159
+ return "bg-emerald-100 hover:bg-emerald-200 text-emerald-900 border dark:bg-emerald-500/30 dark:hover:bg-emerald-500/40 dark:text-emerald-50 dark:border-emerald-400/40 shadow-emerald-500/15 hover:shadow-emerald-500/25 transition-all duration-200";
9113
9160
  case "orange":
9114
- return "bg-orange-200/50 hover:bg-orange-200/40 text-orange-950/80 dark:bg-orange-400/25 dark:hover:bg-orange-400/20 dark:text-orange-200 shadow-orange-700/8";
9161
+ return "bg-orange-100 hover:bg-orange-200 text-orange-900 border dark:bg-orange-500/30 dark:hover:bg-orange-500/40 dark:text-orange-50 dark:border-orange-400/40 shadow-orange-500/15 hover:shadow-orange-500/25 transition-all duration-200";
9115
9162
  default:
9116
- return "bg-sky-200/50 hover:bg-sky-200/40 text-sky-950/80 dark:bg-sky-400/25 dark:hover:bg-sky-400/20 dark:text-sky-200 shadow-sky-700/8";
9163
+ return "bg-sky-100 hover:bg-sky-200 text-sky-900 border dark:bg-sky-500/30 dark:hover:bg-sky-500/40 dark:text-sky-50 dark:border-sky-400/40 shadow-sky-500/15 hover:shadow-sky-500/25 transition-all duration-200";
9117
9164
  }
9118
9165
  }
9119
9166
  function getBorderRadiusClassesAgenda(isFirstDay, isLastDay) {
@@ -9132,7 +9179,7 @@ function isMultiDayEventAgenda(event) {
9132
9179
  const eventStart = getEventStartDate(event);
9133
9180
  const eventEnd = getEventEndDate(event);
9134
9181
  if (!eventStart || !eventEnd) return !!event.allDay;
9135
- return event.allDay || eventStart.getDate() !== eventEnd.getDate();
9182
+ return event.allDay || !isSameDay(eventStart, eventEnd);
9136
9183
  }
9137
9184
  function getEventsForDayAgenda(events, day) {
9138
9185
  return events.filter((event) => {
@@ -9288,12 +9335,13 @@ function EventWrapper({
9288
9335
  return void 0;
9289
9336
  })();
9290
9337
  const isEventInPast = displayEnd ? isPast(displayEnd) : false;
9291
- const colorClasses = hasValidTimeForWrapper ? getEventColorClassesAgenda(event.color) : "bg-gray-200/50 hover:bg-gray-200/40 text-gray-900/80 dark:bg-gray-700/25 dark:text-gray-200/90 shadow-none";
9338
+ const colorClasses = hasValidTimeForWrapper ? getEventColorClassesAgenda(event.color) : "bg-gray-200/50 hover:bg-gray-200/40 text-gray-900/80 dark:bg-gray-700/25 dark:text-gray-200/90 shadow-none ";
9292
9339
  return /* @__PURE__ */ jsx(
9293
9340
  "button",
9294
9341
  {
9295
9342
  className: cn(
9296
- "flex w-full select-none overflow-hidden px-3 py-1 text-left font-medium outline-none transition-transform duration-150 ease-out backdrop-blur-sm focus-visible:ring-2 focus-visible:ring-ring/50 focus-visible:border-ring data-dragging:cursor-grabbing data-past-event:line-through data-dragging:shadow-lg sm:px-3 rounded-lg shadow-sm hover:shadow-md border",
9343
+ "flex w-full select-none px-3 py-1 text-left font-medium outline-none transition-transform duration-150 ease-out backdrop-blur-sm focus-visible:ring-2 focus-visible:ring-ring/50 focus-visible:border-ring data-dragging:cursor-grabbing data-past-event:line-through data-dragging:shadow-lg sm:px-3 rounded-lg shadow-sm hover:shadow-md border ",
9344
+ className?.includes("overflow-visible") ? "" : "overflow-hidden",
9297
9345
  colorClasses,
9298
9346
  getBorderRadiusClassesAgenda(isFirstDay, isLastDay),
9299
9347
  className
@@ -9918,7 +9966,7 @@ function Select({
9918
9966
  ]
9919
9967
  }
9920
9968
  ),
9921
- /* @__PURE__ */ jsx(ScrollAreaBase, { "data-testid": testIds.scrollarea ?? "select-scrollarea", children: /* @__PURE__ */ jsx(SelectContentBase, { "data-testid": testIds.content ?? "select-content", children: pagination && pagination > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
9969
+ /* @__PURE__ */ jsx(ScrollAreaBase, { "data-testid": testIds.scrollarea ?? "select-scrollarea", children: /* @__PURE__ */ jsx(SelectContentBase, { "data-testid": testIds.content ?? "select-content", className: "border-border", children: pagination && pagination > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
9922
9970
  /* @__PURE__ */ jsx(
9923
9971
  "div",
9924
9972
  {
@@ -10416,7 +10464,7 @@ function MonthViewAgenda({
10416
10464
  "div",
10417
10465
  {
10418
10466
  className: twMerge(
10419
- `mt-1 inline-flex w-6 h-6 sm:w-7 sm:h-7 items-center justify-center rounded-full text-xs sm:text-sm font-semibold text-muted-foreground`,
10467
+ `mt-1 inline-flex w-6 h-6 sm:w-7 sm:h-7 items-center justify-center border rounded-md text-xs sm:text-sm font-semibold text-muted-foreground`,
10420
10468
  isToday(day) ? "bg-blue-500 text-white" : ""
10421
10469
  ),
10422
10470
  children: format(day, "d")
@@ -10449,21 +10497,19 @@ function MonthViewAgenda({
10449
10497
  isLastDay,
10450
10498
  onClick: (e) => handleEventClick(event, e),
10451
10499
  view: "month",
10452
- children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 truncate text-[12px] text-foreground", children: [
10453
- /* @__PURE__ */ jsx("span", { className: "text-[11px] opacity-80", children: "\u2192" }),
10454
- /* @__PURE__ */ jsx("span", { className: "truncate font-medium", children: event.title })
10455
- ] })
10500
+ children: /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1 truncate text-[12px] text-foreground" })
10456
10501
  }
10457
10502
  )
10458
10503
  },
10459
10504
  `spanning-${event.id}-${day.toISOString().slice(0, 10)}`
10460
10505
  );
10461
10506
  }
10507
+ const isMultiDay = !isLastDay;
10462
10508
  return /* @__PURE__ */ jsx(
10463
10509
  "div",
10464
10510
  {
10465
10511
  "aria-hidden": isHidden ? "true" : void 0,
10466
- className: "aria-hidden:hidden",
10512
+ className: "aria-hidden:hidden relative",
10467
10513
  children: /* @__PURE__ */ jsx(
10468
10514
  EventItemAgenda,
10469
10515
  {
@@ -10472,9 +10518,16 @@ function MonthViewAgenda({
10472
10518
  isLastDay,
10473
10519
  onClick: (e) => handleEventClick(event, e),
10474
10520
  view: "month",
10475
- children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1 sm:gap-2 truncate text-[12px] text-foreground", children: [
10521
+ className: isMultiDay ? "overflow-visible" : "",
10522
+ children: /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-1 sm:gap-2 truncate text-[12px] text-foreground relative z-10", children: [
10476
10523
  !event.allDay && /* @__PURE__ */ jsx("span", { className: "truncate font-normal opacity-80 text-[10px] sm:text-[11px] bg-white/10 px-1 py-0.5 rounded-full", children: format(eventStart, "HH:mm") }),
10477
- /* @__PURE__ */ jsx("span", { className: "truncate font-medium text-xs sm:text-sm", children: event.title })
10524
+ /* @__PURE__ */ jsx(
10525
+ "span",
10526
+ {
10527
+ className: `font-medium text-xs sm:text-sm ${isMultiDay ? "whitespace-nowrap" : "truncate"}`,
10528
+ children: event.title
10529
+ }
10530
+ )
10478
10531
  ] })
10479
10532
  }
10480
10533
  )
@@ -13240,13 +13293,13 @@ function getEventColorClasses(color) {
13240
13293
  }
13241
13294
  function getBorderRadiusClasses(isFirstDay, isLastDay) {
13242
13295
  if (isFirstDay && isLastDay) {
13243
- return "rounded";
13296
+ return "rounded-lg";
13244
13297
  }
13245
13298
  if (isFirstDay) {
13246
- return "rounded-l rounded-r-none";
13299
+ return "rounded-l-lg rounded-r-none";
13247
13300
  }
13248
13301
  if (isLastDay) {
13249
- return "rounded-r rounded-l-none";
13302
+ return "rounded-r-lg rounded-l-none";
13250
13303
  }
13251
13304
  return "rounded-none";
13252
13305
  }
@@ -13974,8 +14027,7 @@ function MultiSelect({
13974
14027
  )
13975
14028
  ]
13976
14029
  }
13977
- ),
13978
- /* @__PURE__ */ jsx(ErrorMessage_default, { error })
14030
+ )
13979
14031
  ] });
13980
14032
  }
13981
14033
 
@@ -15081,7 +15133,7 @@ var DraggableTooltipComponent = ({
15081
15133
  /* @__PURE__ */ jsx(
15082
15134
  motion.div,
15083
15135
  {
15084
- className: "fixed pointer-events-none z-30",
15136
+ className: "fixed pointer-events-none z-[9998]",
15085
15137
  variants: guideVariants,
15086
15138
  initial: "hidden",
15087
15139
  animate: "visible",
@@ -15103,7 +15155,7 @@ var DraggableTooltipComponent = ({
15103
15155
  /* @__PURE__ */ jsx(
15104
15156
  motion.div,
15105
15157
  {
15106
- className: "fixed pointer-events-none z-31",
15158
+ className: "fixed pointer-events-none z-[9999]",
15107
15159
  variants: guideDotVariants,
15108
15160
  initial: "hidden",
15109
15161
  animate: "visible",
@@ -15143,7 +15195,7 @@ var DraggableTooltipComponent = ({
15143
15195
  /* @__PURE__ */ jsx(AnimatePresence, { children: /* @__PURE__ */ jsxs(
15144
15196
  motion.div,
15145
15197
  {
15146
- className: "fixed bg-card border border-border rounded-lg shadow-lg z-50 min-w-80 select-none",
15198
+ className: "fixed bg-card border border-border rounded-lg shadow-lg z-[10000] min-w-80 select-none",
15147
15199
  variants: tooltipVariants,
15148
15200
  initial: "hidden",
15149
15201
  animate: "visible",
@@ -15375,7 +15427,7 @@ var RechartTooltipWithTotal = ({
15375
15427
  {
15376
15428
  role: "dialog",
15377
15429
  "aria-label": `Tooltip ${label ?? ""}`,
15378
- className: "bg-card border border-border rounded-lg p-3 shadow-2xl max-w-xs",
15430
+ className: "bg-card border border-border rounded-lg p-3 shadow-2xl max-w-xs z-[10000]",
15379
15431
  style: { minWidth: 220 },
15380
15432
  children: [
15381
15433
  /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between mb-2", children: [
@@ -15488,7 +15540,7 @@ var TooltipSimple = ({
15488
15540
  {
15489
15541
  role: "dialog",
15490
15542
  "aria-label": `Tooltip ${label ?? ""}`,
15491
- className: "bg-card border border-border rounded-lg p-3 shadow-2xl max-w-[280px]",
15543
+ className: "bg-card border border-border rounded-lg p-3 shadow-2xl max-w-[280px] z-[10000]",
15492
15544
  style: { minWidth: 220 },
15493
15545
  children: [
15494
15546
  /* @__PURE__ */ jsx("div", { className: "mb-2", children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between gap-3", children: /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
@@ -15677,7 +15729,7 @@ var SystemTooltip = ({
15677
15729
  return /* @__PURE__ */ jsx(AnimatePresence, { children: /* @__PURE__ */ jsxs(
15678
15730
  motion.div,
15679
15731
  {
15680
- className: "fixed bg-card/95 backdrop-blur-md border border-border/50 rounded-xl shadow-2xl z-50 w-80 overflow-hidden",
15732
+ className: "fixed bg-card/95 backdrop-blur-md border border-border/50 rounded-xl shadow-2xl z-[10000] w-80 overflow-hidden",
15681
15733
  variants: tooltipVariants2,
15682
15734
  initial: "hidden",
15683
15735
  animate: "visible",
@@ -15752,7 +15804,9 @@ var SystemTooltip = ({
15752
15804
  "div",
15753
15805
  {
15754
15806
  className: "group flex items-center justify-between p-2 rounded-lg bg-emerald-500/5 border border-emerald-500/10 hover:border-emerald-500/30 transition-all cursor-pointer",
15755
- onClick: () => setExpandedId(expandedId === conn.id ? null : conn.id),
15807
+ onClick: () => setExpandedId(
15808
+ expandedId === conn.id ? null : conn.id
15809
+ ),
15756
15810
  children: [
15757
15811
  /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2 overflow-hidden", children: /* @__PURE__ */ jsx("span", { className: "text-sm font-medium truncate", children: conn.name }) }),
15758
15812
  /* @__PURE__ */ jsx(
@@ -15814,7 +15868,9 @@ var SystemTooltip = ({
15814
15868
  "div",
15815
15869
  {
15816
15870
  className: "group flex items-center justify-between p-2 rounded-lg bg-blue-500/5 border border-blue-500/10 hover:border-blue-500/30 transition-all cursor-pointer",
15817
- onClick: () => setExpandedId(expandedId === conn.id ? null : conn.id),
15871
+ onClick: () => setExpandedId(
15872
+ expandedId === conn.id ? null : conn.id
15873
+ ),
15818
15874
  children: [
15819
15875
  /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2 overflow-hidden", children: /* @__PURE__ */ jsx("span", { className: "text-sm font-medium truncate", children: conn.name }) }),
15820
15876
  /* @__PURE__ */ jsx(
@@ -15875,6 +15931,35 @@ var SystemTooltip = ({
15875
15931
  ) });
15876
15932
  };
15877
15933
  var SystemTooltip_default = SystemTooltip;
15934
+
15935
+ // src/components/ui/charts/components/tooltips/systemTooltipUtils.ts
15936
+ function processNeo4jData(integrations, targetSystemName) {
15937
+ const connections = [];
15938
+ integrations.forEach((integration) => {
15939
+ const origemNome = integration.origem.properties.nome;
15940
+ const destinoNome = integration.destino.properties.nome;
15941
+ if (origemNome === targetSystemName) {
15942
+ connections.push({
15943
+ id: integration.r.elementId,
15944
+ name: destinoNome,
15945
+ type: "saida",
15946
+ integration: integration.r.properties
15947
+ });
15948
+ }
15949
+ if (destinoNome === targetSystemName) {
15950
+ connections.push({
15951
+ id: integration.r.elementId,
15952
+ name: origemNome,
15953
+ type: "entrada",
15954
+ integration: integration.r.properties
15955
+ });
15956
+ }
15957
+ });
15958
+ return {
15959
+ name: targetSystemName,
15960
+ connections
15961
+ };
15962
+ }
15878
15963
  var Brush = ({
15879
15964
  data,
15880
15965
  legend,
@@ -16166,6 +16251,119 @@ var HorizontalLegend = ({
16166
16251
  ] }) });
16167
16252
  };
16168
16253
  var HorizontalLegend_default = HorizontalLegend;
16254
+ function ChartControls({
16255
+ allKeys,
16256
+ mapperConfig,
16257
+ finalColors,
16258
+ highlightedSeries,
16259
+ toggleHighlight,
16260
+ showOnlyHighlighted,
16261
+ setShowOnlyHighlighted,
16262
+ highlightedSeriesSize,
16263
+ clearHighlights,
16264
+ enableHighlights,
16265
+ enableShowOnly,
16266
+ enablePeriodsDropdown,
16267
+ enableDraggableTooltips,
16268
+ processedData,
16269
+ onOpenPeriod,
16270
+ rightOffset,
16271
+ activePeriods,
16272
+ containerClass,
16273
+ containerWidth
16274
+ }) {
16275
+ return /* @__PURE__ */ jsxs("div", { className: containerClass, children: [
16276
+ enableHighlights && /* @__PURE__ */ jsx(
16277
+ Highlights_default,
16278
+ {
16279
+ allKeys,
16280
+ mapperConfig,
16281
+ finalColors,
16282
+ highlightedSeries,
16283
+ toggleHighlight,
16284
+ containerWidth
16285
+ }
16286
+ ),
16287
+ enableShowOnly && /* @__PURE__ */ jsx(
16288
+ ShowOnly_default,
16289
+ {
16290
+ showOnlyHighlighted,
16291
+ setShowOnlyHighlighted,
16292
+ highlightedSeriesSize,
16293
+ clearHighlights
16294
+ }
16295
+ ),
16296
+ enablePeriodsDropdown && enableDraggableTooltips && /* @__PURE__ */ jsx("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ jsx(
16297
+ PeriodsDropdown_default,
16298
+ {
16299
+ processedData: processedData ?? [],
16300
+ onOpenPeriod: onOpenPeriod ?? (() => {
16301
+ }),
16302
+ rightOffset,
16303
+ activePeriods
16304
+ }
16305
+ ) })
16306
+ ] });
16307
+ }
16308
+ function ChartHeader({
16309
+ title,
16310
+ titlePosition = "left",
16311
+ HORIZONTAL_PADDING_CLASS = "px-24",
16312
+ customLegend,
16313
+ data,
16314
+ allKeys,
16315
+ processedData,
16316
+ finalColors,
16317
+ mapperConfig,
16318
+ finalValueFormatter,
16319
+ formatBR
16320
+ }) {
16321
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
16322
+ title && /* @__PURE__ */ jsx(
16323
+ "div",
16324
+ {
16325
+ className: cn(
16326
+ "w-full flex items-center mt-3 mb-2",
16327
+ HORIZONTAL_PADDING_CLASS,
16328
+ titlePosition === "center" && "justify-center",
16329
+ titlePosition === "right" && "justify-end",
16330
+ titlePosition === "left" && "justify-start"
16331
+ ),
16332
+ children: /* @__PURE__ */ jsx("div", { className: "text-[1.4rem] font-semibold text-foreground", children: title })
16333
+ }
16334
+ ),
16335
+ customLegend && !!data.length && /* @__PURE__ */ jsx("div", { className: cn("px-6 mb-2", HORIZONTAL_PADDING_CLASS), children: /* @__PURE__ */ jsx(
16336
+ ChartTotalLegend_default,
16337
+ {
16338
+ items: allKeys.map((key) => {
16339
+ const values = processedData.map(
16340
+ (d) => Number(d[key] || 0)
16341
+ );
16342
+ const total = values.reduce((a, b) => a + b, 0);
16343
+ const first = values[0] || 0;
16344
+ const last = values[values.length - 1] || 0;
16345
+ const trendValue = first !== 0 ? Math.round((last - first) / first * 100) : 0;
16346
+ const formattedTotal = finalValueFormatter ? finalValueFormatter({
16347
+ value: total,
16348
+ formattedValue: String(total)
16349
+ }) : new Intl.NumberFormat(formatBR ? "pt-BR" : "en-US").format(
16350
+ total
16351
+ );
16352
+ return {
16353
+ label: mapperConfig[key]?.label || key,
16354
+ value: formattedTotal,
16355
+ color: finalColors[key],
16356
+ trend: {
16357
+ value: Math.abs(trendValue),
16358
+ positive: trendValue >= 0,
16359
+ neutral: trendValue === 0
16360
+ }
16361
+ };
16362
+ })
16363
+ }
16364
+ ) })
16365
+ ] });
16366
+ }
16169
16367
  var formatCompactNumber = (value) => {
16170
16368
  const isNegative = value < 0;
16171
16369
  const absValue = Math.abs(value);
@@ -16360,6 +16558,19 @@ var renderInsideBarLabel = (color, valueFormatter) => {
16360
16558
  );
16361
16559
  };
16362
16560
  };
16561
+
16562
+ // src/utils/calcDivision.ts
16563
+ var calcDivision = (dividend, divisor) => {
16564
+ return dividend / divisor;
16565
+ };
16566
+
16567
+ // src/components/ui/charts/utils/formatters.ts
16568
+ function formatLinePercentage(value) {
16569
+ const numValue = typeof value === "number" ? value : typeof value === "string" ? parseFloat(value) : 0;
16570
+ const percentage = calcDivision(numValue, 100);
16571
+ const formattedPercentage = typeof percentage === "number" ? percentage.toFixed(1).replace(".", ",") : String(percentage).replace(".", ",");
16572
+ return `${formattedPercentage}%`;
16573
+ }
16363
16574
  var ChartBar = ({ x, y, w, h, i, loading }) => {
16364
16575
  const baseY = y - h;
16365
16576
  const d = i * 0.08;
@@ -16453,7 +16664,7 @@ var NoData = ({
16453
16664
  /* @__PURE__ */ jsxs(
16454
16665
  "svg",
16455
16666
  {
16456
- className: "w-full h-[var(--svg-h)] opacity-40",
16667
+ className: "w-full h-full opacity-40",
16457
16668
  viewBox: `0 0 900 ${h}`,
16458
16669
  preserveAspectRatio: "none",
16459
16670
  children: [
@@ -16941,45 +17152,133 @@ var useChartMinMax = ({
16941
17152
  };
16942
17153
  }, [processedData, orderBy, xAxisDataKey, categoryFormatter]);
16943
17154
  };
16944
- var filtersOrder = (mapperConfig, series) => {
16945
- const seriesOrder = [];
16946
- if (series) {
16947
- if (series.bar)
16948
- series.bar.forEach((k) => seriesOrder.push({ type: "bar", key: k }));
16949
- if (series.line)
16950
- series.line.forEach((k) => seriesOrder.push({ type: "line", key: k }));
16951
- if (series.area)
16952
- series.area.forEach((k) => seriesOrder.push({ type: "area", key: k }));
16953
- } else {
16954
- Object.keys(mapperConfig).forEach(
16955
- (k) => seriesOrder.push({ type: "bar", key: k })
16956
- );
16957
- }
16958
- return seriesOrder;
16959
- };
16960
- var fnOpenTooltipForPeriod = (enableDraggableTooltips, processedData, periodName, activeTooltips, setActiveTooltips, maxTooltips, effectiveChartWidth) => {
16961
- if (!enableDraggableTooltips) return;
16962
- const row = processedData.find((r) => String(r.name) === periodName);
16963
- if (!row) return;
16964
- const tooltipId = String(periodName);
16965
- const existingIndex = activeTooltips.findIndex((t) => t.id === tooltipId);
16966
- if (existingIndex !== -1) {
16967
- setActiveTooltips((prev) => prev.filter((t) => t.id !== tooltipId));
16968
- return;
16969
- }
16970
- if (activeTooltips.length >= maxTooltips) {
16971
- toast$1.warning(
16972
- `Limite de ${maxTooltips} janelas de informa\xE7\xE3o atingido. A mais antiga ser\xE1 substitu\xEDda.`
16973
- );
16974
- }
16975
- const offsetIndex = activeTooltips.length;
16976
- const availableWidth = effectiveChartWidth;
16977
- const gap = 28;
16978
- const leftGap = 28;
16979
- const newTooltip = {
16980
- id: tooltipId,
16981
- data: row,
16982
- position: {
17155
+ function useProcessedData({
17156
+ data,
17157
+ xAxisKey,
17158
+ timeSeriesConfig,
17159
+ startIndex,
17160
+ endIndex
17161
+ }) {
17162
+ return useMemo(() => {
17163
+ const mapped = data.map((item) => ({
17164
+ ...item,
17165
+ name: String(item[xAxisKey] || "N/A")
17166
+ }));
17167
+ if (timeSeriesConfig) {
17168
+ return mapped.slice(startIndex, endIndex + 1);
17169
+ }
17170
+ return mapped;
17171
+ }, [data, xAxisKey, timeSeriesConfig, startIndex, endIndex]);
17172
+ }
17173
+ function useBiaxial(biaxial, yAxisLabel) {
17174
+ return useMemo(() => {
17175
+ if (!biaxial) return null;
17176
+ if (typeof biaxial === "string") return { key: [biaxial] };
17177
+ if (Array.isArray(biaxial)) return { key: biaxial };
17178
+ const normalized = biaxial;
17179
+ const leftLabelMissing = !yAxisLabel || String(yAxisLabel).trim() === "";
17180
+ const rightLabelMissing = !normalized.label || String(normalized.label).trim() === "";
17181
+ if (leftLabelMissing || rightLabelMissing) {
17182
+ throw new Error(
17183
+ "When using `biaxial`, you must provide both `yAxisLabel` (left axis) and `biaxial.label` (right axis)."
17184
+ );
17185
+ }
17186
+ return normalized;
17187
+ }, [biaxial, yAxisLabel]);
17188
+ }
17189
+ function useChartLayout({
17190
+ chartMargin,
17191
+ yAxisLabel,
17192
+ AXIS_LABEL_MARGIN,
17193
+ yTickFormatter,
17194
+ minLeftDataValue,
17195
+ niceMaxLeft,
17196
+ rightKeysLength,
17197
+ measuredWidth,
17198
+ width,
17199
+ computedWidth
17200
+ }) {
17201
+ const finalChartRightMargin = chartMargin?.right ?? (rightKeysLength > 0 ? AXIS_LABEL_MARGIN : 30);
17202
+ const finalChartLeftMargin = chartMargin?.left ?? (yAxisLabel ? AXIS_LABEL_MARGIN : 0);
17203
+ const yAxisTickWidth = useMemo(() => {
17204
+ const yAxisLabelStr = yAxisLabel === null || yAxisLabel === void 0 ? void 0 : String(yAxisLabel);
17205
+ return computeYAxisTickWidth(
17206
+ chartMargin?.left,
17207
+ yAxisLabelStr,
17208
+ AXIS_LABEL_MARGIN,
17209
+ yTickFormatter,
17210
+ minLeftDataValue,
17211
+ niceMaxLeft
17212
+ );
17213
+ }, [
17214
+ chartMargin?.left,
17215
+ yAxisLabel,
17216
+ AXIS_LABEL_MARGIN,
17217
+ yTickFormatter,
17218
+ minLeftDataValue,
17219
+ niceMaxLeft
17220
+ ]);
17221
+ const effectiveChartWidth = typeof width === "number" ? width : measuredWidth ? Math.max(0, measuredWidth - 32) : computedWidth;
17222
+ const chartInnerWidth = effectiveChartWidth - finalChartLeftMargin - finalChartRightMargin;
17223
+ const leftYAxisLabelDx = -Math.max(12, Math.round(yAxisTickWidth / 2));
17224
+ const rightYAxisLabelDx = Math.max(12, Math.round(finalChartRightMargin / 2));
17225
+ return {
17226
+ finalChartRightMargin,
17227
+ finalChartLeftMargin,
17228
+ yAxisTickWidth,
17229
+ effectiveChartWidth,
17230
+ chartInnerWidth,
17231
+ leftYAxisLabelDx,
17232
+ rightYAxisLabelDx
17233
+ };
17234
+ }
17235
+ function useSeriesOpacity(highlightedSeries) {
17236
+ return useCallback(
17237
+ (key) => {
17238
+ return highlightedSeries.size > 0 ? highlightedSeries.has(key) ? 1 : 0.25 : 1;
17239
+ },
17240
+ [highlightedSeries]
17241
+ );
17242
+ }
17243
+ var filtersOrder = (mapperConfig, series) => {
17244
+ const seriesOrder = [];
17245
+ if (series) {
17246
+ if (series.bar)
17247
+ series.bar.forEach((k) => seriesOrder.push({ type: "bar", key: k }));
17248
+ if (series.line)
17249
+ series.line.forEach((k) => seriesOrder.push({ type: "line", key: k }));
17250
+ if (series.area)
17251
+ series.area.forEach((k) => seriesOrder.push({ type: "area", key: k }));
17252
+ } else {
17253
+ Object.keys(mapperConfig).forEach(
17254
+ (k) => seriesOrder.push({ type: "bar", key: k })
17255
+ );
17256
+ }
17257
+ return seriesOrder;
17258
+ };
17259
+ var fnOpenTooltipForPeriod = (enableDraggableTooltips, processedData, periodName, activeTooltips, setActiveTooltips, maxTooltips, effectiveChartWidth) => {
17260
+ if (!enableDraggableTooltips) return;
17261
+ const row = processedData.find((r) => String(r.name) === periodName);
17262
+ if (!row) return;
17263
+ const tooltipId = String(periodName);
17264
+ const existingIndex = activeTooltips.findIndex((t) => t.id === tooltipId);
17265
+ if (existingIndex !== -1) {
17266
+ setActiveTooltips((prev) => prev.filter((t) => t.id !== tooltipId));
17267
+ return;
17268
+ }
17269
+ if (activeTooltips.length >= maxTooltips) {
17270
+ toast$1.warning(
17271
+ `Limite de ${maxTooltips} janelas de informa\xE7\xE3o atingido. A mais antiga ser\xE1 substitu\xEDda.`
17272
+ );
17273
+ }
17274
+ const offsetIndex = activeTooltips.length;
17275
+ const availableWidth = effectiveChartWidth;
17276
+ const gap = 28;
17277
+ const leftGap = 28;
17278
+ const newTooltip = {
17279
+ id: tooltipId,
17280
+ data: row,
17281
+ position: {
16983
17282
  top: 48 + offsetIndex * gap,
16984
17283
  left: Math.max(120, availableWidth - 280 - offsetIndex * leftGap)
16985
17284
  }
@@ -17064,10 +17363,37 @@ var fnContentLabelList = (p) => {
17064
17363
  return needsOutside ? null : true;
17065
17364
  };
17066
17365
 
17067
- // src/utils/calcDivision.ts
17068
- var calcDivision = (dividend, divisor) => {
17069
- return dividend / divisor;
17070
- };
17366
+ // src/components/ui/charts/hooks/useOpenTooltipForPeriod.ts
17367
+ function useOpenTooltipForPeriod({
17368
+ enableDraggableTooltips,
17369
+ processedData,
17370
+ activeTooltips,
17371
+ setActiveTooltips,
17372
+ maxTooltips,
17373
+ effectiveChartWidth
17374
+ }) {
17375
+ return useCallback(
17376
+ (periodName) => {
17377
+ fnOpenTooltipForPeriod(
17378
+ enableDraggableTooltips,
17379
+ processedData,
17380
+ periodName,
17381
+ activeTooltips,
17382
+ setActiveTooltips,
17383
+ maxTooltips,
17384
+ effectiveChartWidth
17385
+ );
17386
+ },
17387
+ [
17388
+ enableDraggableTooltips,
17389
+ processedData,
17390
+ activeTooltips,
17391
+ effectiveChartWidth,
17392
+ maxTooltips,
17393
+ setActiveTooltips
17394
+ ]
17395
+ );
17396
+ }
17071
17397
  var DEFAULT_COLORS2 = ["#55af7d", "#8e68ff", "#2273e1"];
17072
17398
  var Chart = ({
17073
17399
  data,
@@ -17108,6 +17434,16 @@ var Chart = ({
17108
17434
  // horizontal removido
17109
17435
  // orderBy removido
17110
17436
  }) => {
17437
+ const usesFullHeight = typeof height === "string" && (height === "100%" || height === "100vh") || typeof className === "string" && /\bh-full\b/.test(className || "");
17438
+ const responsiveHeight = usesFullHeight ? "100%" : height;
17439
+ const wrapperClass = cn(
17440
+ "w-full min-w-0 rounded-lg border-border",
17441
+ className,
17442
+ "overflow-hidden"
17443
+ );
17444
+ const wrapperStyle = usesFullHeight ? void 0 : {
17445
+ height: typeof responsiveHeight === "number" ? `${responsiveHeight}px` : responsiveHeight
17446
+ };
17111
17447
  const { xAxisConfig, mapperConfig } = useMemo(() => {
17112
17448
  return fnSmartConfig({ xAxis, data, labelMap });
17113
17449
  }, [data, xAxis, labelMap]);
@@ -17142,39 +17478,20 @@ var Chart = ({
17142
17478
  defaultEndIndex: timeSeriesConfig?.end,
17143
17479
  onRangeChange: timeSeriesConfig?.onRangeChange
17144
17480
  });
17145
- const processedData = useMemo(() => {
17146
- const mapped = data.map((item) => ({
17147
- ...item,
17148
- name: String(item[xAxisConfig.dataKey] || "N/A")
17149
- }));
17150
- let result = mapped;
17151
- if (timeSeriesConfig) {
17152
- result = mapped.slice(startIndex, endIndex + 1);
17153
- }
17154
- return result;
17155
- }, [data, xAxisConfig.dataKey, timeSeriesConfig, startIndex, endIndex]);
17481
+ const processedData = useProcessedData({
17482
+ data,
17483
+ xAxisKey: xAxisConfig.dataKey,
17484
+ timeSeriesConfig,
17485
+ startIndex,
17486
+ endIndex
17487
+ });
17156
17488
  const seriesOrder = filtersOrder(mapperConfig, series);
17157
17489
  const allKeys = seriesOrder.map((s) => s.key).filter(Boolean);
17158
17490
  const finalColors = useMemo(
17159
17491
  () => generateColorMap(allKeys, colors2, mapperConfig),
17160
17492
  [allKeys, colors2, mapperConfig]
17161
17493
  );
17162
- const biaxialConfigNormalized = useMemo(() => {
17163
- if (!biaxial) return null;
17164
- if (typeof biaxial === "string") return { key: [biaxial] };
17165
- if (Array.isArray(biaxial)) return { key: biaxial };
17166
- return biaxial;
17167
- }, [biaxial]);
17168
- useMemo(() => {
17169
- if (!biaxialConfigNormalized) return;
17170
- const leftLabelMissing = !yAxisLabel || String(yAxisLabel).trim() === "";
17171
- const rightLabelMissing = !biaxialConfigNormalized.label || String(biaxialConfigNormalized.label).trim() === "";
17172
- if (leftLabelMissing || rightLabelMissing) {
17173
- throw new Error(
17174
- "When using `biaxial`, you must provide both `yAxisLabel` (left axis) and `biaxial.label` (right axis)."
17175
- );
17176
- }
17177
- }, [biaxialConfigNormalized, yAxisLabel]);
17494
+ const biaxialConfigNormalized = useBiaxial(biaxial, yAxisLabel);
17178
17495
  const rightKeys = useMemo(
17179
17496
  () => biaxialConfigNormalized?.key ?? [],
17180
17497
  [biaxialConfigNormalized]
@@ -17229,12 +17546,7 @@ var Chart = ({
17229
17546
  setActiveTooltips
17230
17547
  }
17231
17548
  );
17232
- const getSeriesOpacity = useCallback(
17233
- (key) => {
17234
- return highlightedSeries.size > 0 ? highlightedSeries.has(key) ? 1 : 0.25 : 1;
17235
- },
17236
- [highlightedSeries]
17237
- );
17549
+ const getSeriesOpacity = useSeriesOpacity(highlightedSeries);
17238
17550
  const finalValueFormatter = useMemo(
17239
17551
  () => createValueFormatter(valueFormatter, formatBR),
17240
17552
  [valueFormatter, formatBR]
@@ -17245,51 +17557,40 @@ var Chart = ({
17245
17557
  );
17246
17558
  const AXIS_LABEL_MARGIN = 56;
17247
17559
  const CONTAINER_PADDING_LEFT = -6;
17248
- const finalChartRightMargin = chartMargin?.right ?? (rightKeys.length > 0 ? AXIS_LABEL_MARGIN : 30);
17249
- const finalChartLeftMargin = chartMargin?.left ?? (yAxisLabel ? AXIS_LABEL_MARGIN : 0);
17250
- const yAxisTickWidth = useMemo(() => {
17251
- return computeYAxisTickWidth(
17252
- chartMargin?.left,
17253
- yAxisLabel,
17254
- AXIS_LABEL_MARGIN,
17255
- yTickFormatter,
17256
- minLeftDataValue,
17257
- niceMaxLeft
17258
- );
17259
- }, [
17260
- chartMargin?.left,
17560
+ const HORIZONTAL_PADDING_CLASS = "px-24";
17561
+ const teste = "pl-24 pr-4";
17562
+ const {
17563
+ finalChartRightMargin,
17564
+ finalChartLeftMargin,
17565
+ yAxisTickWidth,
17566
+ effectiveChartWidth,
17567
+ chartInnerWidth,
17568
+ leftYAxisLabelDx,
17569
+ rightYAxisLabelDx
17570
+ } = useChartLayout({
17571
+ chartMargin,
17261
17572
  yAxisLabel,
17573
+ AXIS_LABEL_MARGIN,
17262
17574
  yTickFormatter,
17263
17575
  minLeftDataValue,
17264
- niceMaxLeft
17265
- ]);
17266
- const HORIZONTAL_PADDING_CLASS = "px-24";
17267
- const teste = "pl-24 pr-4";
17268
- const effectiveChartWidth = typeof width === "number" ? width : measuredWidth ? Math.max(0, measuredWidth - 32) : computedWidth;
17269
- const chartInnerWidth = effectiveChartWidth - finalChartLeftMargin - finalChartRightMargin;
17270
- const leftYAxisLabelDx = -Math.max(12, Math.round(yAxisTickWidth / 2));
17271
- const rightYAxisLabelDx = Math.max(12, Math.round(finalChartRightMargin / 2));
17272
- const openTooltipForPeriod = useCallback(
17273
- (periodName) => {
17274
- fnOpenTooltipForPeriod(
17275
- enableDraggableTooltips,
17276
- processedData,
17277
- periodName,
17278
- activeTooltips,
17279
- setActiveTooltips,
17280
- maxTooltips,
17281
- effectiveChartWidth
17282
- );
17283
- },
17284
- [
17285
- enableDraggableTooltips,
17286
- processedData,
17287
- activeTooltips,
17288
- effectiveChartWidth,
17289
- maxTooltips,
17290
- setActiveTooltips
17291
- ]
17292
- );
17576
+ niceMaxLeft,
17577
+ rightKeysLength: rightKeys.length,
17578
+ measuredWidth,
17579
+ width,
17580
+ computedWidth
17581
+ });
17582
+ const openTooltipForPeriod = useOpenTooltipForPeriod({
17583
+ enableDraggableTooltips,
17584
+ processedData,
17585
+ activeTooltips,
17586
+ setActiveTooltips,
17587
+ maxTooltips,
17588
+ effectiveChartWidth
17589
+ });
17590
+ const legendSpace = showLegend ? 44 : 0;
17591
+ const xAxisLabelSpace = xAxisLabel ? 18 : 0;
17592
+ const brushSpace = timeSeriesConfig?.height ? 200 : 0;
17593
+ const bottomMargin = 10 + legendSpace + xAxisLabelSpace + brushSpace;
17293
17594
  if (!data && !isLoading) return null;
17294
17595
  if (isLoading) {
17295
17596
  return /* @__PURE__ */ jsx(
@@ -17304,128 +17605,62 @@ var Chart = ({
17304
17605
  );
17305
17606
  }
17306
17607
  if (Array.isArray(data) && data.length === 0) {
17307
- return /* @__PURE__ */ jsxs("div", { children: [
17308
- /* @__PURE__ */ jsx(
17309
- NoData_default,
17310
- {
17311
- title,
17312
- paddingLeft: CONTAINER_PADDING_LEFT + finalChartLeftMargin,
17313
- height
17314
- }
17315
- ),
17316
- /* @__PURE__ */ jsx("div", { style: { height: 0 }, children: /* @__PURE__ */ jsxs("svg", { width: effectiveChartWidth, height, children: [
17317
- xAxisLabel && /* @__PURE__ */ jsx(
17318
- "text",
17319
- {
17320
- x: effectiveChartWidth - 40,
17321
- y: height - 10,
17322
- fontSize: 12,
17323
- fill: "hsl(var(--muted-foreground))",
17324
- fontWeight: 500,
17325
- textAnchor: "end",
17326
- children: xAxisLabel
17327
- }
17328
- ),
17329
- yAxisLabel && /* @__PURE__ */ jsx(
17330
- "text",
17331
- {
17332
- x: 20,
17333
- y: 40,
17334
- fontSize: 12,
17335
- fill: "hsl(var(--muted-foreground))",
17336
- fontWeight: 500,
17337
- textAnchor: "start",
17338
- transform: `rotate(-90 20 40)`,
17339
- children: yAxisLabel
17340
- }
17341
- )
17342
- ] }) })
17343
- ] });
17608
+ return /* @__PURE__ */ jsx(
17609
+ NoData_default,
17610
+ {
17611
+ title,
17612
+ paddingLeft: CONTAINER_PADDING_LEFT + finalChartLeftMargin,
17613
+ height
17614
+ }
17615
+ );
17344
17616
  }
17345
- return /* @__PURE__ */ jsxs(
17346
- "div",
17347
- {
17348
- ref: wrapperRef,
17349
- className: cn(
17350
- "w-full overflow-hidden min-w-0 rounded-lg border-border",
17351
- className
17352
- ),
17353
- children: [
17354
- /* @__PURE__ */ jsxs("div", { className: "rounded-lg bg-card relative w-full max-w-full min-w-0 py-1", children: [
17355
- title && /* @__PURE__ */ jsx(
17356
- "div",
17617
+ return /* @__PURE__ */ jsxs("div", { ref: wrapperRef, className: wrapperClass, style: wrapperStyle, children: [
17618
+ /* @__PURE__ */ jsxs(
17619
+ "div",
17620
+ {
17621
+ className: "rounded-lg bg-card relative w-full max-w-full min-w-0 py-1",
17622
+ style: usesFullHeight ? { height: "100%" } : void 0,
17623
+ children: [
17624
+ /* @__PURE__ */ jsx(
17625
+ ChartHeader,
17357
17626
  {
17358
- className: cn(
17359
- "w-full flex items-center mt-3 mb-2",
17360
- HORIZONTAL_PADDING_CLASS,
17361
- titlePosition === "center" && "justify-center",
17362
- titlePosition === "right" && "justify-end",
17363
- titlePosition === "left" && "justify-start"
17364
- ),
17365
- children: /* @__PURE__ */ jsx("div", { className: "text-[1.4rem] font-semibold text-foreground", children: title })
17627
+ title,
17628
+ titlePosition,
17629
+ HORIZONTAL_PADDING_CLASS,
17630
+ customLegend,
17631
+ data,
17632
+ allKeys,
17633
+ processedData,
17634
+ finalColors,
17635
+ mapperConfig,
17636
+ finalValueFormatter,
17637
+ formatBR
17366
17638
  }
17367
17639
  ),
17368
- customLegend && !!data.length && /* @__PURE__ */ jsx("div", { className: cn("px-6 mb-2", HORIZONTAL_PADDING_CLASS), children: /* @__PURE__ */ jsx(
17369
- ChartTotalLegend_default,
17640
+ allKeys.length > 0 && (enableHighlights || enableShowOnly) && /* @__PURE__ */ jsx(
17641
+ ChartControls,
17370
17642
  {
17371
- items: allKeys.map((key) => {
17372
- const values = processedData.map(
17373
- (d) => Number(d[key] || 0)
17374
- );
17375
- const total = values.reduce((a, b) => a + b, 0);
17376
- const first = values[0] || 0;
17377
- const last = values[values.length - 1] || 0;
17378
- const trendValue = first !== 0 ? Math.round((last - first) / first * 100) : 0;
17379
- const formattedTotal = finalValueFormatter ? finalValueFormatter({
17380
- value: total,
17381
- formattedValue: String(total)
17382
- }) : new Intl.NumberFormat(formatBR ? "pt-BR" : "en-US").format(
17383
- total
17384
- );
17385
- return {
17386
- label: mapperConfig[key]?.label || key,
17387
- value: formattedTotal,
17388
- color: finalColors[key],
17389
- trend: {
17390
- value: Math.abs(trendValue),
17391
- positive: trendValue >= 0,
17392
- neutral: trendValue === 0
17393
- }
17394
- };
17395
- })
17643
+ allKeys,
17644
+ mapperConfig,
17645
+ finalColors,
17646
+ highlightedSeries,
17647
+ toggleHighlight,
17648
+ showOnlyHighlighted,
17649
+ setShowOnlyHighlighted,
17650
+ highlightedSeriesSize: highlightedSeries.size,
17651
+ clearHighlights,
17652
+ enableHighlights,
17653
+ enableShowOnly,
17654
+ enablePeriodsDropdown,
17655
+ enableDraggableTooltips,
17656
+ processedData,
17657
+ onOpenPeriod: openTooltipForPeriod,
17658
+ rightOffset: finalChartRightMargin,
17659
+ activePeriods,
17660
+ containerClass: cn("flex items-center gap-2", teste),
17661
+ containerWidth: chartInnerWidth
17396
17662
  }
17397
- ) }),
17398
- allKeys.length > 0 && (enableHighlights || enableShowOnly) && /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-2", teste), children: [
17399
- enableHighlights && /* @__PURE__ */ jsx(
17400
- Highlights_default,
17401
- {
17402
- allKeys,
17403
- mapperConfig,
17404
- finalColors,
17405
- highlightedSeries,
17406
- toggleHighlight,
17407
- containerWidth: chartInnerWidth
17408
- }
17409
- ),
17410
- enableShowOnly && /* @__PURE__ */ jsx(
17411
- ShowOnly_default,
17412
- {
17413
- showOnlyHighlighted,
17414
- setShowOnlyHighlighted,
17415
- highlightedSeriesSize: highlightedSeries.size,
17416
- clearHighlights
17417
- }
17418
- ),
17419
- enablePeriodsDropdown && enableDraggableTooltips && /* @__PURE__ */ jsx("div", { className: "ml-auto flex items-center", children: /* @__PURE__ */ jsx(
17420
- PeriodsDropdown_default,
17421
- {
17422
- processedData,
17423
- onOpenPeriod: openTooltipForPeriod,
17424
- rightOffset: finalChartRightMargin,
17425
- activePeriods
17426
- }
17427
- ) })
17428
- ] }),
17663
+ ),
17429
17664
  !(allKeys.length > 0 && (enableHighlights || enableShowOnly)) && enablePeriodsDropdown && enableDraggableTooltips && /* @__PURE__ */ jsx(
17430
17665
  "div",
17431
17666
  {
@@ -17447,16 +17682,15 @@ var Chart = ({
17447
17682
  )
17448
17683
  }
17449
17684
  ),
17450
- /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */ jsxs(
17685
+ /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height: responsiveHeight, children: /* @__PURE__ */ jsxs(
17451
17686
  ComposedChart,
17452
17687
  {
17453
17688
  data: processedData,
17454
- height,
17455
17689
  margin: {
17456
17690
  top: 10,
17457
17691
  right: finalChartRightMargin,
17458
17692
  left: finalChartLeftMargin,
17459
- bottom: 10
17693
+ bottom: bottomMargin
17460
17694
  },
17461
17695
  onClick: handleChartClick,
17462
17696
  children: [
@@ -17664,12 +17898,6 @@ var Chart = ({
17664
17898
  );
17665
17899
  }
17666
17900
  if (s.type === "line") {
17667
- const lineFormatter = (props) => {
17668
- const numValue = typeof props.value === "number" ? props.value : typeof props.value === "string" ? parseFloat(props.value) : 0;
17669
- const percentage = calcDivision(numValue, 100);
17670
- const formattedPercentage = typeof percentage === "number" ? percentage.toFixed(1).replace(".", ",") : String(percentage).replace(".", ",");
17671
- return `${formattedPercentage}%`;
17672
- };
17673
17901
  return /* @__PURE__ */ jsx(
17674
17902
  Line,
17675
17903
  {
@@ -17691,7 +17919,7 @@ var Chart = ({
17691
17919
  content: pillLabelRenderer_default(
17692
17920
  color,
17693
17921
  "filled",
17694
- lineFormatter
17922
+ (props) => formatLinePercentage(props.value)
17695
17923
  ),
17696
17924
  offset: 14
17697
17925
  }
@@ -17743,67 +17971,67 @@ var Chart = ({
17743
17971
  ]
17744
17972
  }
17745
17973
  ) })
17746
- ] }),
17747
- enableDraggableTooltips && activeTooltips.map((tooltip) => /* @__PURE__ */ jsx(
17748
- DraggableTooltip_default,
17749
- {
17750
- id: tooltip.id,
17751
- data: adaptDataForTooltip(tooltip.data, xAxisConfig.dataKey),
17752
- position: tooltip.position,
17753
- title,
17754
- dataKeys: allKeys,
17755
- finalColors,
17756
- highlightedSeries,
17757
- toggleHighlight,
17758
- showOnlyHighlighted,
17759
- onClose: (id) => setActiveTooltips((prev) => prev.filter((t) => t.id !== id)),
17760
- onPositionChange: onTooltipPositionChange,
17761
- periodLabel,
17762
- dataLabel: "Dados do Per\xEDodo",
17763
- valueFormatter: finalValueFormatter,
17764
- categoryFormatter,
17765
- globalTooltipCount: activeTooltips.length,
17766
- onCloseAll: () => window.dispatchEvent(new Event("closeAllTooltips")),
17767
- closeAllButtonPosition: "top-center",
17768
- closeAllButtonVariant: "floating"
17769
- },
17770
- tooltip.id
17771
- )),
17772
- enableDraggableTooltips && activeTooltips.length > 1 && /* @__PURE__ */ jsx(
17773
- CloseAllButton_default,
17774
- {
17775
- count: activeTooltips.length,
17776
- onCloseAll: () => window.dispatchEvent(new Event("closeAllTooltips")),
17777
- position: "top-center",
17778
- variant: "floating"
17779
- }
17780
- ),
17781
- timeSeriesConfig && /* @__PURE__ */ jsx(
17782
- Brush_default,
17783
- {
17784
- legend: timeSeriesLegend,
17785
- data,
17786
- startIndex,
17787
- endIndex,
17788
- onMouseDown: handleMouseDown,
17789
- brushRef,
17790
- xAxisKey: xAxisConfig.dataKey,
17791
- seriesOrder,
17792
- finalColors,
17793
- brushHeight: timeSeriesConfig.height,
17794
- brushColor: timeSeriesConfig.brushColor,
17795
- miniChartOpacity: timeSeriesConfig.miniChartOpacity,
17796
- showGrid,
17797
- gridColor,
17798
- margin: {
17799
- left: finalChartLeftMargin,
17800
- right: finalChartRightMargin
17801
- }
17802
- }
17803
- )
17804
- ]
17805
- }
17806
- );
17974
+ ]
17975
+ }
17976
+ ),
17977
+ enableDraggableTooltips && activeTooltips.map((tooltip) => /* @__PURE__ */ jsx(
17978
+ DraggableTooltip_default,
17979
+ {
17980
+ id: tooltip.id,
17981
+ data: adaptDataForTooltip(tooltip.data, xAxisConfig.dataKey),
17982
+ position: tooltip.position,
17983
+ title,
17984
+ dataKeys: allKeys,
17985
+ finalColors,
17986
+ highlightedSeries,
17987
+ toggleHighlight,
17988
+ showOnlyHighlighted,
17989
+ onClose: (id) => setActiveTooltips((prev) => prev.filter((t) => t.id !== id)),
17990
+ onPositionChange: onTooltipPositionChange,
17991
+ periodLabel,
17992
+ dataLabel: "Dados do Per\xEDodo",
17993
+ valueFormatter: finalValueFormatter,
17994
+ categoryFormatter,
17995
+ globalTooltipCount: activeTooltips.length,
17996
+ onCloseAll: () => window.dispatchEvent(new Event("closeAllTooltips")),
17997
+ closeAllButtonPosition: "top-center",
17998
+ closeAllButtonVariant: "floating"
17999
+ },
18000
+ tooltip.id
18001
+ )),
18002
+ enableDraggableTooltips && activeTooltips.length > 1 && /* @__PURE__ */ jsx(
18003
+ CloseAllButton_default,
18004
+ {
18005
+ count: activeTooltips.length,
18006
+ onCloseAll: () => window.dispatchEvent(new Event("closeAllTooltips")),
18007
+ position: "top-center",
18008
+ variant: "floating"
18009
+ }
18010
+ ),
18011
+ timeSeriesConfig && /* @__PURE__ */ jsx(
18012
+ Brush_default,
18013
+ {
18014
+ legend: timeSeriesLegend,
18015
+ data,
18016
+ startIndex,
18017
+ endIndex,
18018
+ onMouseDown: handleMouseDown,
18019
+ brushRef,
18020
+ xAxisKey: xAxisConfig.dataKey,
18021
+ seriesOrder,
18022
+ finalColors,
18023
+ brushHeight: timeSeriesConfig.height,
18024
+ brushColor: timeSeriesConfig.brushColor,
18025
+ miniChartOpacity: timeSeriesConfig.miniChartOpacity,
18026
+ showGrid,
18027
+ gridColor,
18028
+ margin: {
18029
+ left: finalChartLeftMargin,
18030
+ right: finalChartRightMargin
18031
+ }
18032
+ }
18033
+ )
18034
+ ] });
17807
18035
  };
17808
18036
  var Chart_default = Chart;
17809
18037
  var DEFAULT_COLORS3 = ["#0d1136", "#666655", "#1a1a1a"];
@@ -18106,7 +18334,7 @@ var HorizontalChart = ({
18106
18334
  margin: {
18107
18335
  top: 10,
18108
18336
  right: finalChartRightMargin,
18109
- left: finalChartLeftMargin,
18337
+ left: 55 + finalChartLeftMargin,
18110
18338
  bottom: 10
18111
18339
  },
18112
18340
  onClick: handleChartClick,
@@ -18149,9 +18377,9 @@ var HorizontalChart = ({
18149
18377
  dataKey: xAxisConfig.dataKey,
18150
18378
  stroke: "hsl(var(--muted-foreground))",
18151
18379
  fontSize: 12,
18152
- tickLine: false,
18153
- axisLine: false,
18154
- width: 125,
18380
+ tickLine: true,
18381
+ minTickGap: 24,
18382
+ axisLine: true,
18155
18383
  tickFormatter: (value) => {
18156
18384
  if (categoryFormatter)
18157
18385
  return categoryFormatter(value);
@@ -18293,109 +18521,6 @@ var HorizontalChart = ({
18293
18521
  );
18294
18522
  };
18295
18523
  var HorizontalChart_default = HorizontalChart;
18296
- var defaultData = [
18297
- { name: "Vendas", value: 4e3 },
18298
- { name: "Marketing", value: 3e3 },
18299
- { name: "Desenvolvimento", value: 2e3 },
18300
- { name: "Suporte", value: 1e3 },
18301
- { name: "Outros", value: 800 }
18302
- ];
18303
- var DEFAULT_COLORS4 = [
18304
- "#55af7d",
18305
- // verde do projeto
18306
- "#8e68ff",
18307
- // roxo do projeto
18308
- "#2273e1",
18309
- // azul do projeto
18310
- "#f59e0b",
18311
- // amarelo complementar
18312
- "#ef4444",
18313
- // vermelho complementar
18314
- "#8b5cf6",
18315
- // roxo claro
18316
- "#06b6d4",
18317
- // ciano
18318
- "#84cc16"
18319
- // verde lima
18320
- ];
18321
- var RADIAN = Math.PI / 180;
18322
- var renderCustomizedLabel = ({
18323
- cx = 0,
18324
- cy = 0,
18325
- midAngle = 0,
18326
- innerRadius = 0,
18327
- outerRadius = 0,
18328
- percent = 0
18329
- }) => {
18330
- const radius = innerRadius + (outerRadius - innerRadius) * 0.5;
18331
- const x = cx + radius * Math.cos(-midAngle * RADIAN);
18332
- const y = cy + radius * Math.sin(-midAngle * RADIAN);
18333
- return /* @__PURE__ */ jsx(
18334
- "text",
18335
- {
18336
- x,
18337
- y,
18338
- fill: "white",
18339
- textAnchor: x > cx ? "start" : "end",
18340
- dominantBaseline: "central",
18341
- fontSize: 12,
18342
- fontWeight: "600",
18343
- children: `${(percent * 100).toFixed(0)}%`
18344
- }
18345
- );
18346
- };
18347
- var CustomPieChart = ({
18348
- data = defaultData,
18349
- className,
18350
- height = 400,
18351
- width = "100%",
18352
- colors: colors2,
18353
- showTooltip = true,
18354
- showLegend = true,
18355
- showLabels = true,
18356
- innerRadius = 0,
18357
- outerRadius = 120,
18358
- centerX = "50%",
18359
- centerY = "50%"
18360
- }) => {
18361
- const finalColors = colors2 || DEFAULT_COLORS4;
18362
- return /* @__PURE__ */ jsx("div", { className: cn("w-full rounded-lg bg-card p-4", className), children: /* @__PURE__ */ jsx(ResponsiveContainer, { width, height, children: /* @__PURE__ */ jsxs(PieChart, { children: [
18363
- /* @__PURE__ */ jsx(
18364
- Pie,
18365
- {
18366
- data,
18367
- cx: centerX,
18368
- cy: centerY,
18369
- labelLine: false,
18370
- label: showLabels ? renderCustomizedLabel : false,
18371
- outerRadius,
18372
- innerRadius,
18373
- fill: "#8884d8",
18374
- dataKey: "value",
18375
- children: data.map((entry, index) => /* @__PURE__ */ jsx(
18376
- Cell,
18377
- {
18378
- fill: finalColors[index % finalColors.length]
18379
- },
18380
- `cell-${entry.name}-${index}`
18381
- ))
18382
- }
18383
- ),
18384
- showTooltip && /* @__PURE__ */ jsx(
18385
- Tooltip,
18386
- {
18387
- contentStyle: {
18388
- backgroundColor: "hsl(var(--popover))",
18389
- border: "1px solid hsl(var(--border))",
18390
- borderRadius: "6px",
18391
- color: "hsl(var(--popover-foreground))"
18392
- }
18393
- }
18394
- ),
18395
- showLegend && /* @__PURE__ */ jsx(Legend, {})
18396
- ] }) }) });
18397
- };
18398
- var PieChart_default = CustomPieChart;
18399
18524
  var TimeSeries = ({
18400
18525
  data,
18401
18526
  xAxis,
@@ -18655,4 +18780,4 @@ function Leaderboard({
18655
18780
  );
18656
18781
  }
18657
18782
 
18658
- 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, HorizontalChart_default as HorizontalChart, 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 };
18783
+ 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, ChartControls, ChartHeader, 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, HorizontalChart_default as HorizontalChart, 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, 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, formatLinePercentage, 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, processNeo4jData, renderInsideBarLabel, pillLabelRenderer_default as renderPillLabel, resolveChartMargins, resolveContainerPaddingLeft, set12Hours, setDateByType, setHours, setMinutes, setSeconds, sortEvents, sortEventsAgenda, toast, useBiaxial, useCalendarDnd, useCalendarDndAgenda, useChartClick, useChartDimensions, useChartHighlights, useChartLayout, useChartMinMax, useChartTooltips, useCurrentTimeIndicator, useCurrentTimeIndicatorAgenda, useDrag, useEventVisibility, useEventVisibilityAgenda, useIsMobile, useOpenTooltipForPeriod, useProcessedData, useSeriesOpacity, useTheme, useTimeSeriesRange, visualForItem };