analytica-frontend-lib 1.1.67 → 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.
Files changed (41) hide show
  1. package/dist/DropdownMenu/index.js +110 -75
  2. package/dist/DropdownMenu/index.js.map +1 -1
  3. package/dist/DropdownMenu/index.mjs +114 -79
  4. package/dist/DropdownMenu/index.mjs.map +1 -1
  5. package/dist/Menu/index.js +1 -1
  6. package/dist/Menu/index.js.map +1 -1
  7. package/dist/Menu/index.mjs +1 -1
  8. package/dist/Menu/index.mjs.map +1 -1
  9. package/dist/NotificationCard/index.js +112 -77
  10. package/dist/NotificationCard/index.js.map +1 -1
  11. package/dist/NotificationCard/index.mjs +123 -88
  12. package/dist/NotificationCard/index.mjs.map +1 -1
  13. package/dist/Search/index.js +110 -75
  14. package/dist/Search/index.js.map +1 -1
  15. package/dist/Search/index.mjs +119 -84
  16. package/dist/Search/index.mjs.map +1 -1
  17. package/dist/ThemeToggle/index.d.mts +3 -1
  18. package/dist/ThemeToggle/index.d.ts +3 -1
  19. package/dist/ThemeToggle/index.js +102 -67
  20. package/dist/ThemeToggle/index.js.map +1 -1
  21. package/dist/ThemeToggle/index.mjs +105 -70
  22. package/dist/ThemeToggle/index.mjs.map +1 -1
  23. package/dist/hooks/useTheme/index.d.mts +6 -2
  24. package/dist/hooks/useTheme/index.d.ts +6 -2
  25. package/dist/hooks/useTheme/index.js +102 -67
  26. package/dist/hooks/useTheme/index.js.map +1 -1
  27. package/dist/hooks/useTheme/index.mjs +103 -68
  28. package/dist/hooks/useTheme/index.mjs.map +1 -1
  29. package/dist/index.css +2 -2
  30. package/dist/index.css.map +1 -1
  31. package/dist/index.d.mts +3 -1
  32. package/dist/index.d.ts +3 -1
  33. package/dist/index.js +133 -96
  34. package/dist/index.js.map +1 -1
  35. package/dist/index.mjs +252 -216
  36. package/dist/index.mjs.map +1 -1
  37. package/dist/styles.css +2 -2
  38. package/dist/styles.css.map +1 -1
  39. package/dist/themeStore-P2X64zC-.d.mts +79 -0
  40. package/dist/themeStore-P2X64zC-.d.ts +79 -0
  41. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  // src/components/NotificationCard/NotificationCard.tsx
2
2
  import { DotsThreeVertical, Bell as Bell2 } from "phosphor-react";
3
- import { useState as useState5, useEffect as useEffect6 } from "react";
3
+ import { useState as useState4, useEffect as useEffect6 } from "react";
4
4
 
5
5
  // src/utils/utils.ts
6
6
  import { clsx } from "clsx";
@@ -14,13 +14,13 @@ import { CaretRight, SignOut, User } from "phosphor-react";
14
14
  import {
15
15
  forwardRef as forwardRef2,
16
16
  useEffect as useEffect4,
17
- useRef as useRef2,
17
+ useRef,
18
18
  isValidElement,
19
19
  Children,
20
20
  cloneElement,
21
- useState as useState3
21
+ useState as useState2
22
22
  } from "react";
23
- import { create, useStore } from "zustand";
23
+ import { create as create2, useStore } from "zustand";
24
24
 
25
25
  // src/components/Button/Button.tsx
26
26
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -356,7 +356,7 @@ var Modal_default = Modal;
356
356
 
357
357
  // src/components/ThemeToggle/ThemeToggle.tsx
358
358
  import { Moon, Sun } from "phosphor-react";
359
- import { useState as useState2, useEffect as useEffect3 } from "react";
359
+ import { useState, useEffect as useEffect3 } from "react";
360
360
 
361
361
  // src/components/SelectionButton/SelectionButton.tsx
362
362
  import { forwardRef } from "react";
@@ -414,83 +414,118 @@ SelectionButton.displayName = "SelectionButton";
414
414
  var SelectionButton_default = SelectionButton;
415
415
 
416
416
  // src/hooks/useTheme.ts
417
- import { useEffect as useEffect2, useState, useCallback, useRef } from "react";
418
- var useTheme = () => {
419
- const [themeMode, setThemeMode] = useState("system");
420
- const [isDark, setIsDark] = useState(false);
421
- const themeModeRef = useRef("system");
422
- const applyTheme = useCallback((mode) => {
423
- const htmlElement = document.documentElement;
424
- const originalTheme = htmlElement.getAttribute("data-original-theme");
425
- if (mode === "dark") {
417
+ import { useEffect as useEffect2 } from "react";
418
+
419
+ // src/store/themeStore.ts
420
+ import { create } from "zustand";
421
+ import { devtools, persist } from "zustand/middleware";
422
+ var applyThemeToDOM = (mode) => {
423
+ const htmlElement = document.documentElement;
424
+ const originalTheme = htmlElement.getAttribute("data-original-theme");
425
+ if (mode === "dark") {
426
+ htmlElement.setAttribute("data-theme", "dark");
427
+ return true;
428
+ } else if (mode === "light") {
429
+ if (originalTheme) {
430
+ htmlElement.setAttribute("data-theme", originalTheme);
431
+ }
432
+ return false;
433
+ } else if (mode === "system") {
434
+ const isSystemDark = window.matchMedia(
435
+ "(prefers-color-scheme: dark)"
436
+ ).matches;
437
+ if (isSystemDark) {
426
438
  htmlElement.setAttribute("data-theme", "dark");
427
- setIsDark(true);
428
- } else if (mode === "light") {
429
- if (originalTheme) {
430
- htmlElement.setAttribute("data-theme", originalTheme);
431
- }
432
- setIsDark(false);
433
- } else if (mode === "system") {
434
- const isSystemDark = window.matchMedia(
435
- "(prefers-color-scheme: dark)"
436
- ).matches;
437
- if (isSystemDark) {
438
- htmlElement.setAttribute("data-theme", "dark");
439
- setIsDark(true);
440
- } else if (originalTheme) {
441
- htmlElement.setAttribute("data-theme", originalTheme);
442
- setIsDark(false);
443
- }
439
+ return true;
440
+ } else if (originalTheme) {
441
+ htmlElement.setAttribute("data-theme", originalTheme);
442
+ return false;
444
443
  }
445
- }, []);
446
- const toggleTheme = useCallback(() => {
447
- let newMode;
448
- if (themeMode === "light") {
449
- newMode = "dark";
450
- } else if (themeMode === "dark") {
451
- newMode = "light";
452
- } else {
453
- newMode = "dark";
444
+ }
445
+ return false;
446
+ };
447
+ var saveOriginalTheme = () => {
448
+ const htmlElement = document.documentElement;
449
+ const currentTheme = htmlElement.getAttribute("data-theme");
450
+ if (currentTheme && !htmlElement.getAttribute("data-original-theme")) {
451
+ htmlElement.setAttribute("data-original-theme", currentTheme);
452
+ }
453
+ };
454
+ var useThemeStore = create()(
455
+ devtools(
456
+ persist(
457
+ (set, get) => ({
458
+ // Initial state
459
+ themeMode: "system",
460
+ isDark: false,
461
+ // Actions
462
+ applyTheme: (mode) => {
463
+ const isDark = applyThemeToDOM(mode);
464
+ set({ isDark });
465
+ },
466
+ toggleTheme: () => {
467
+ const { themeMode, applyTheme } = get();
468
+ let newMode;
469
+ if (themeMode === "light") {
470
+ newMode = "dark";
471
+ } else if (themeMode === "dark") {
472
+ newMode = "light";
473
+ } else {
474
+ newMode = "dark";
475
+ }
476
+ set({ themeMode: newMode });
477
+ applyTheme(newMode);
478
+ },
479
+ setTheme: (mode) => {
480
+ const { applyTheme } = get();
481
+ set({ themeMode: mode });
482
+ applyTheme(mode);
483
+ },
484
+ initializeTheme: () => {
485
+ const { themeMode, applyTheme } = get();
486
+ saveOriginalTheme();
487
+ applyTheme(themeMode);
488
+ },
489
+ handleSystemThemeChange: () => {
490
+ const { themeMode, applyTheme } = get();
491
+ if (themeMode === "system") {
492
+ applyTheme("system");
493
+ }
494
+ }
495
+ }),
496
+ {
497
+ name: "theme-store",
498
+ // Nome da chave no localStorage
499
+ partialize: (state) => ({
500
+ themeMode: state.themeMode
501
+ })
502
+ // Só persiste o themeMode, não o isDark
503
+ }
504
+ ),
505
+ {
506
+ name: "theme-store"
454
507
  }
455
- setThemeMode(newMode);
456
- themeModeRef.current = newMode;
457
- applyTheme(newMode);
458
- localStorage.setItem("theme-mode", newMode);
459
- }, [themeMode, applyTheme]);
460
- const setTheme = useCallback(
461
- (mode) => {
462
- setThemeMode(mode);
463
- themeModeRef.current = mode;
464
- applyTheme(mode);
465
- localStorage.setItem("theme-mode", mode);
466
- },
467
- [applyTheme]
468
- );
508
+ )
509
+ );
510
+
511
+ // src/hooks/useTheme.ts
512
+ var useTheme = () => {
513
+ const {
514
+ themeMode,
515
+ isDark,
516
+ toggleTheme,
517
+ setTheme,
518
+ initializeTheme,
519
+ handleSystemThemeChange
520
+ } = useThemeStore();
469
521
  useEffect2(() => {
470
- const htmlElement = document.documentElement;
471
- const currentTheme = htmlElement.getAttribute("data-theme");
472
- if (currentTheme && !htmlElement.getAttribute("data-original-theme")) {
473
- htmlElement.setAttribute("data-original-theme", currentTheme);
474
- }
475
- const savedThemeMode = localStorage.getItem("theme-mode");
476
- const initialMode = savedThemeMode || "system";
477
- if (!savedThemeMode) {
478
- localStorage.setItem("theme-mode", "system");
479
- }
480
- setThemeMode(initialMode);
481
- themeModeRef.current = initialMode;
482
- applyTheme(initialMode);
522
+ initializeTheme();
483
523
  const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
484
- const handleSystemThemeChange = () => {
485
- if (themeModeRef.current === "system") {
486
- applyTheme("system");
487
- }
488
- };
489
524
  mediaQuery.addEventListener("change", handleSystemThemeChange);
490
525
  return () => {
491
526
  mediaQuery.removeEventListener("change", handleSystemThemeChange);
492
527
  };
493
- }, [applyTheme]);
528
+ }, [initializeTheme, handleSystemThemeChange]);
494
529
  return {
495
530
  themeMode,
496
531
  isDark,
@@ -506,7 +541,7 @@ var ThemeToggle = ({
506
541
  onToggle
507
542
  }) => {
508
543
  const { themeMode, setTheme } = useTheme();
509
- const [tempTheme, setTempTheme] = useState2(themeMode);
544
+ const [tempTheme, setTempTheme] = useState(themeMode);
510
545
  useEffect3(() => {
511
546
  setTempTheme(themeMode);
512
547
  }, [themeMode]);
@@ -570,7 +605,7 @@ var ThemeToggle = ({
570
605
  // src/components/DropdownMenu/DropdownMenu.tsx
571
606
  import { Fragment, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
572
607
  function createDropdownStore() {
573
- return create((set) => ({
608
+ return create2((set) => ({
574
609
  open: false,
575
610
  setOpen: (open) => set({ open })
576
611
  }));
@@ -603,14 +638,14 @@ var DropdownMenu = ({
603
638
  open: propOpen,
604
639
  onOpenChange
605
640
  }) => {
606
- const storeRef = useRef2(null);
641
+ const storeRef = useRef(null);
607
642
  storeRef.current ??= createDropdownStore();
608
643
  const store = storeRef.current;
609
644
  const { open, setOpen: storeSetOpen } = useStore(store, (s) => s);
610
645
  const setOpen = (newOpen) => {
611
646
  storeSetOpen(newOpen);
612
647
  };
613
- const menuRef = useRef2(null);
648
+ const menuRef = useRef(null);
614
649
  const handleArrowDownOrArrowUp = (event) => {
615
650
  const menuContent = menuRef.current?.querySelector('[role="menu"]');
616
651
  if (menuContent) {
@@ -734,7 +769,7 @@ var DropdownMenuContent = forwardRef2(
734
769
  }, ref) => {
735
770
  const store = useDropdownStore(externalStore);
736
771
  const open = useStore(store, (s) => s.open);
737
- const [isVisible, setIsVisible] = useState3(open);
772
+ const [isVisible, setIsVisible] = useState2(open);
738
773
  useEffect4(() => {
739
774
  if (open) {
740
775
  setIsVisible(true);
@@ -893,8 +928,8 @@ var ProfileMenuHeader = forwardRef2(({ className, name, email, store: _store, ..
893
928
  ProfileMenuHeader.displayName = "ProfileMenuHeader";
894
929
  var ProfileToggleTheme = ({ ...props }) => {
895
930
  const { themeMode, setTheme } = useTheme();
896
- const [modalThemeToggle, setModalThemeToggle] = useState3(false);
897
- const [selectedTheme, setSelectedTheme] = useState3(themeMode);
931
+ const [modalThemeToggle, setModalThemeToggle] = useState2(false);
932
+ const [selectedTheme, setSelectedTheme] = useState2(themeMode);
898
933
  const handleClick = (e) => {
899
934
  e.preventDefault();
900
935
  e.stopPropagation();
@@ -1308,7 +1343,7 @@ var Badge = ({
1308
1343
  var Badge_default = Badge;
1309
1344
 
1310
1345
  // src/hooks/useMobile.ts
1311
- import { useState as useState4, useEffect as useEffect5 } from "react";
1346
+ import { useState as useState3, useEffect as useEffect5 } from "react";
1312
1347
  var MOBILE_WIDTH = 500;
1313
1348
  var TABLET_WIDTH = 931;
1314
1349
  var DEFAULT_WIDTH = 1200;
@@ -1323,8 +1358,8 @@ var getDeviceType = () => {
1323
1358
  return width < TABLET_WIDTH ? "responsive" : "desktop";
1324
1359
  };
1325
1360
  var useMobile = () => {
1326
- const [isMobile, setIsMobile] = useState4(false);
1327
- const [isTablet, setIsTablet] = useState4(false);
1361
+ const [isMobile, setIsMobile] = useState3(false);
1362
+ const [isTablet, setIsTablet] = useState3(false);
1328
1363
  useEffect5(() => {
1329
1364
  const checkScreenSize = () => {
1330
1365
  const width = getWindowWidth();
@@ -1365,8 +1400,8 @@ var useMobile = () => {
1365
1400
  };
1366
1401
 
1367
1402
  // src/store/notificationStore.ts
1368
- import { create as create2 } from "zustand";
1369
- import { devtools } from "zustand/middleware";
1403
+ import { create as create3 } from "zustand";
1404
+ import { devtools as devtools2 } from "zustand/middleware";
1370
1405
  var formatTimeAgo = (date) => {
1371
1406
  const now = /* @__PURE__ */ new Date();
1372
1407
  const diffInMs = now.getTime() - new Date(date).getTime();
@@ -1539,7 +1574,7 @@ var NotificationList = ({
1539
1574
  className,
1540
1575
  emptyStateImage
1541
1576
  }) => {
1542
- const [globalNotificationModal, setGlobalNotificationModal] = useState5({ isOpen: false, notification: null });
1577
+ const [globalNotificationModal, setGlobalNotificationModal] = useState4({ isOpen: false, notification: null });
1543
1578
  const handleGlobalNotificationClick = (notification) => {
1544
1579
  if (onGlobalNotificationClick) {
1545
1580
  onGlobalNotificationClick(notification);
@@ -1653,8 +1688,8 @@ var NotificationCenter = ({
1653
1688
  className
1654
1689
  }) => {
1655
1690
  const { isMobile } = useMobile();
1656
- const [isModalOpen, setIsModalOpen] = useState5(false);
1657
- const [globalNotificationModal, setGlobalNotificationModal] = useState5({ isOpen: false, notification: null });
1691
+ const [isModalOpen, setIsModalOpen] = useState4(false);
1692
+ const [globalNotificationModal, setGlobalNotificationModal] = useState4({ isOpen: false, notification: null });
1658
1693
  const handleMobileClick = () => {
1659
1694
  setIsModalOpen(true);
1660
1695
  onFetchNotifications?.();