analytica-frontend-lib 1.1.68 → 1.1.69

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.
@@ -38,7 +38,7 @@ function cn(...inputs) {
38
38
  // src/components/DropdownMenu/DropdownMenu.tsx
39
39
  var import_phosphor_react3 = require("phosphor-react");
40
40
  var import_react5 = require("react");
41
- var import_zustand = require("zustand");
41
+ var import_zustand2 = require("zustand");
42
42
 
43
43
  // src/components/Button/Button.tsx
44
44
  var import_jsx_runtime = require("react/jsx-runtime");
@@ -433,82 +433,117 @@ var SelectionButton_default = SelectionButton;
433
433
 
434
434
  // src/hooks/useTheme.ts
435
435
  var import_react3 = require("react");
436
- var useTheme = () => {
437
- const [themeMode, setThemeMode] = (0, import_react3.useState)("system");
438
- const [isDark, setIsDark] = (0, import_react3.useState)(false);
439
- const themeModeRef = (0, import_react3.useRef)("system");
440
- const applyTheme = (0, import_react3.useCallback)((mode) => {
441
- const htmlElement = document.documentElement;
442
- const originalTheme = htmlElement.getAttribute("data-original-theme");
443
- if (mode === "dark") {
436
+
437
+ // src/store/themeStore.ts
438
+ var import_zustand = require("zustand");
439
+ var import_middleware = require("zustand/middleware");
440
+ var applyThemeToDOM = (mode) => {
441
+ const htmlElement = document.documentElement;
442
+ const originalTheme = htmlElement.getAttribute("data-original-theme");
443
+ if (mode === "dark") {
444
+ htmlElement.setAttribute("data-theme", "dark");
445
+ return true;
446
+ } else if (mode === "light") {
447
+ if (originalTheme) {
448
+ htmlElement.setAttribute("data-theme", originalTheme);
449
+ }
450
+ return false;
451
+ } else if (mode === "system") {
452
+ const isSystemDark = window.matchMedia(
453
+ "(prefers-color-scheme: dark)"
454
+ ).matches;
455
+ if (isSystemDark) {
444
456
  htmlElement.setAttribute("data-theme", "dark");
445
- setIsDark(true);
446
- } else if (mode === "light") {
447
- if (originalTheme) {
448
- htmlElement.setAttribute("data-theme", originalTheme);
449
- }
450
- setIsDark(false);
451
- } else if (mode === "system") {
452
- const isSystemDark = window.matchMedia(
453
- "(prefers-color-scheme: dark)"
454
- ).matches;
455
- if (isSystemDark) {
456
- htmlElement.setAttribute("data-theme", "dark");
457
- setIsDark(true);
458
- } else if (originalTheme) {
459
- htmlElement.setAttribute("data-theme", originalTheme);
460
- setIsDark(false);
461
- }
457
+ return true;
458
+ } else if (originalTheme) {
459
+ htmlElement.setAttribute("data-theme", originalTheme);
460
+ return false;
462
461
  }
463
- }, []);
464
- const toggleTheme = (0, import_react3.useCallback)(() => {
465
- let newMode;
466
- if (themeMode === "light") {
467
- newMode = "dark";
468
- } else if (themeMode === "dark") {
469
- newMode = "light";
470
- } else {
471
- newMode = "dark";
462
+ }
463
+ return false;
464
+ };
465
+ var saveOriginalTheme = () => {
466
+ const htmlElement = document.documentElement;
467
+ const currentTheme = htmlElement.getAttribute("data-theme");
468
+ if (currentTheme && !htmlElement.getAttribute("data-original-theme")) {
469
+ htmlElement.setAttribute("data-original-theme", currentTheme);
470
+ }
471
+ };
472
+ var useThemeStore = (0, import_zustand.create)()(
473
+ (0, import_middleware.devtools)(
474
+ (0, import_middleware.persist)(
475
+ (set, get) => ({
476
+ // Initial state
477
+ themeMode: "system",
478
+ isDark: false,
479
+ // Actions
480
+ applyTheme: (mode) => {
481
+ const isDark = applyThemeToDOM(mode);
482
+ set({ isDark });
483
+ },
484
+ toggleTheme: () => {
485
+ const { themeMode, applyTheme } = get();
486
+ let newMode;
487
+ if (themeMode === "light") {
488
+ newMode = "dark";
489
+ } else if (themeMode === "dark") {
490
+ newMode = "light";
491
+ } else {
492
+ newMode = "dark";
493
+ }
494
+ set({ themeMode: newMode });
495
+ applyTheme(newMode);
496
+ },
497
+ setTheme: (mode) => {
498
+ const { applyTheme } = get();
499
+ set({ themeMode: mode });
500
+ applyTheme(mode);
501
+ },
502
+ initializeTheme: () => {
503
+ const { themeMode, applyTheme } = get();
504
+ saveOriginalTheme();
505
+ applyTheme(themeMode);
506
+ },
507
+ handleSystemThemeChange: () => {
508
+ const { themeMode, applyTheme } = get();
509
+ if (themeMode === "system") {
510
+ applyTheme("system");
511
+ }
512
+ }
513
+ }),
514
+ {
515
+ name: "theme-store",
516
+ // Nome da chave no localStorage
517
+ partialize: (state) => ({
518
+ themeMode: state.themeMode
519
+ })
520
+ // Só persiste o themeMode, não o isDark
521
+ }
522
+ ),
523
+ {
524
+ name: "theme-store"
472
525
  }
473
- setThemeMode(newMode);
474
- themeModeRef.current = newMode;
475
- applyTheme(newMode);
476
- localStorage.setItem("theme-mode", newMode);
477
- }, [themeMode, applyTheme]);
478
- const setTheme = (0, import_react3.useCallback)(
479
- (mode) => {
480
- setThemeMode(mode);
481
- themeModeRef.current = mode;
482
- applyTheme(mode);
483
- localStorage.setItem("theme-mode", mode);
484
- },
485
- [applyTheme]
486
- );
526
+ )
527
+ );
528
+
529
+ // src/hooks/useTheme.ts
530
+ var useTheme = () => {
531
+ const {
532
+ themeMode,
533
+ isDark,
534
+ toggleTheme,
535
+ setTheme,
536
+ initializeTheme,
537
+ handleSystemThemeChange
538
+ } = useThemeStore();
487
539
  (0, import_react3.useEffect)(() => {
488
- const htmlElement = document.documentElement;
489
- const currentTheme = htmlElement.getAttribute("data-theme");
490
- if (currentTheme && !htmlElement.getAttribute("data-original-theme")) {
491
- htmlElement.setAttribute("data-original-theme", currentTheme);
492
- }
493
- const savedThemeMode = localStorage.getItem("theme-mode");
494
- const initialMode = savedThemeMode || "system";
495
- if (!savedThemeMode) {
496
- localStorage.setItem("theme-mode", "system");
497
- }
498
- setThemeMode(initialMode);
499
- themeModeRef.current = initialMode;
500
- applyTheme(initialMode);
540
+ initializeTheme();
501
541
  const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
502
- const handleSystemThemeChange = () => {
503
- if (themeModeRef.current === "system") {
504
- applyTheme("system");
505
- }
506
- };
507
542
  mediaQuery.addEventListener("change", handleSystemThemeChange);
508
543
  return () => {
509
544
  mediaQuery.removeEventListener("change", handleSystemThemeChange);
510
545
  };
511
- }, [applyTheme]);
546
+ }, [initializeTheme, handleSystemThemeChange]);
512
547
  return {
513
548
  themeMode,
514
549
  isDark,
@@ -588,7 +623,7 @@ var ThemeToggle = ({
588
623
  // src/components/DropdownMenu/DropdownMenu.tsx
589
624
  var import_jsx_runtime6 = require("react/jsx-runtime");
590
625
  function createDropdownStore() {
591
- return (0, import_zustand.create)((set) => ({
626
+ return (0, import_zustand2.create)((set) => ({
592
627
  open: false,
593
628
  setOpen: (open) => set({ open })
594
629
  }));
@@ -624,7 +659,7 @@ var DropdownMenu = ({
624
659
  const storeRef = (0, import_react5.useRef)(null);
625
660
  storeRef.current ??= createDropdownStore();
626
661
  const store = storeRef.current;
627
- const { open, setOpen: storeSetOpen } = (0, import_zustand.useStore)(store, (s) => s);
662
+ const { open, setOpen: storeSetOpen } = (0, import_zustand2.useStore)(store, (s) => s);
628
663
  const setOpen = (newOpen) => {
629
664
  storeSetOpen(newOpen);
630
665
  };
@@ -691,7 +726,7 @@ var DropdownMenuTrigger = ({
691
726
  ...props
692
727
  }) => {
693
728
  const store = useDropdownStore(externalStore);
694
- const open = (0, import_zustand.useStore)(store, (s) => s.open);
729
+ const open = (0, import_zustand2.useStore)(store, (s) => s.open);
695
730
  const toggleOpen = () => store.setState({ open: !open });
696
731
  return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
697
732
  "button",
@@ -751,7 +786,7 @@ var DropdownMenuContent = (0, import_react5.forwardRef)(
751
786
  ...props
752
787
  }, ref) => {
753
788
  const store = useDropdownStore(externalStore);
754
- const open = (0, import_zustand.useStore)(store, (s) => s.open);
789
+ const open = (0, import_zustand2.useStore)(store, (s) => s.open);
755
790
  const [isVisible, setIsVisible] = (0, import_react5.useState)(open);
756
791
  (0, import_react5.useEffect)(() => {
757
792
  if (open) {
@@ -807,7 +842,7 @@ var DropdownMenuItem = (0, import_react5.forwardRef)(
807
842
  ...props
808
843
  }, ref) => {
809
844
  const store = useDropdownStore(externalStore);
810
- const setOpen = (0, import_zustand.useStore)(store, (s) => s.setOpen);
845
+ const setOpen = (0, import_zustand2.useStore)(store, (s) => s.setOpen);
811
846
  const sizeClasses = ITEM_SIZE_CLASSES[size];
812
847
  const handleClick = (e) => {
813
848
  if (disabled) {
@@ -868,7 +903,7 @@ var DropdownMenuSeparator = (0, import_react5.forwardRef)(({ className, store: _
868
903
  DropdownMenuSeparator.displayName = "DropdownMenuSeparator";
869
904
  var ProfileMenuTrigger = (0, import_react5.forwardRef)(({ className, onClick, store: externalStore, ...props }, ref) => {
870
905
  const store = useDropdownStore(externalStore);
871
- const open = (0, import_zustand.useStore)(store, (s) => s.open);
906
+ const open = (0, import_zustand2.useStore)(store, (s) => s.open);
872
907
  const toggleOpen = () => store.setState({ open: !open });
873
908
  return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
874
909
  "button",
@@ -1001,7 +1036,7 @@ var ProfileMenuFooter = ({
1001
1036
  ...props
1002
1037
  }) => {
1003
1038
  const store = useDropdownStore(externalStore);
1004
- const setOpen = (0, import_zustand.useStore)(store, (s) => s.setOpen);
1039
+ const setOpen = (0, import_zustand2.useStore)(store, (s) => s.setOpen);
1005
1040
  return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
1006
1041
  Button_default,
1007
1042
  {
@@ -1383,8 +1418,8 @@ var useMobile = () => {
1383
1418
  };
1384
1419
 
1385
1420
  // src/store/notificationStore.ts
1386
- var import_zustand2 = require("zustand");
1387
- var import_middleware = require("zustand/middleware");
1421
+ var import_zustand3 = require("zustand");
1422
+ var import_middleware2 = require("zustand/middleware");
1388
1423
  var formatTimeAgo = (date) => {
1389
1424
  const now = /* @__PURE__ */ new Date();
1390
1425
  const diffInMs = now.getTime() - new Date(date).getTime();