@greatapps/common 1.1.212 → 1.1.214

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 (182) hide show
  1. package/dist/components/account/ConfirmDeleteAccountModal.mjs.map +1 -1
  2. package/dist/components/account/DeleteAccountModal.mjs.map +1 -1
  3. package/dist/components/account/IsntPossibleDeleteAccountModal.mjs.map +1 -1
  4. package/dist/components/account/hooks/useChangePhoneForm.mjs.map +1 -1
  5. package/dist/components/account/hooks/useTwoFactorAuthForm.mjs.map +1 -1
  6. package/dist/components/account/sections/ChangePhoneModal.mjs.map +1 -1
  7. package/dist/components/embeds/CrispEmbed.mjs.map +1 -1
  8. package/dist/components/embeds/FrillEmbed.mjs.map +1 -1
  9. package/dist/components/layouts/AppMobileNavBar.mjs.map +1 -1
  10. package/dist/components/layouts/AppNavBar.mjs.map +1 -1
  11. package/dist/components/layouts/NavBar.mjs.map +1 -1
  12. package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
  13. package/dist/components/navigation/CancelledSubscriptionBanner.mjs.map +1 -1
  14. package/dist/components/navigation/NavItemsContext.mjs.map +1 -1
  15. package/dist/components/navigation/shells/TabsMobileShell.mjs.map +1 -1
  16. package/dist/components/pages/notifications/Notifications.mjs.map +1 -1
  17. package/dist/components/ui/buttons/Button.mjs.map +1 -1
  18. package/dist/components/ui/buttons/CancelButton.mjs.map +1 -1
  19. package/dist/components/ui/buttons/CopyButton.mjs.map +1 -1
  20. package/dist/components/ui/data-display/Accordion.mjs.map +1 -1
  21. package/dist/components/ui/data-display/Badge.mjs.map +1 -1
  22. package/dist/components/ui/data-display/Card.mjs.map +1 -1
  23. package/dist/components/ui/data-display/Pagination.mjs.map +1 -1
  24. package/dist/components/ui/data-display/ScrollArea.mjs.map +1 -1
  25. package/dist/components/ui/data-display/Separator.mjs.map +1 -1
  26. package/dist/components/ui/data-display/Table.mjs.map +1 -1
  27. package/dist/components/ui/data-display/Tabs.mjs.map +1 -1
  28. package/dist/components/ui/feedback/CircularProgress.mjs.map +1 -1
  29. package/dist/components/ui/feedback/DefaultCircularProgress.mjs.map +1 -1
  30. package/dist/components/ui/feedback/LoadingOverlay.mjs.map +1 -1
  31. package/dist/components/ui/feedback/Progress.mjs.map +1 -1
  32. package/dist/components/ui/feedback/Toast.mjs.map +1 -1
  33. package/dist/components/ui/form/Calendar.mjs.map +1 -1
  34. package/dist/components/ui/form/Checkbox.mjs.map +1 -1
  35. package/dist/components/ui/form/DatePicker.mjs.map +1 -1
  36. package/dist/components/ui/form/DateRangePicker.mjs.map +1 -1
  37. package/dist/components/ui/form/Input.mjs.map +1 -1
  38. package/dist/components/ui/form/InputOtp.mjs.map +1 -1
  39. package/dist/components/ui/form/PhoneInput.mjs.map +1 -1
  40. package/dist/components/ui/form/RadioGroup.mjs.map +1 -1
  41. package/dist/components/ui/form/Select.mjs +1 -1
  42. package/dist/components/ui/form/Select.mjs.map +1 -1
  43. package/dist/components/ui/form/Switch.mjs.map +1 -1
  44. package/dist/components/ui/form/Textarea.mjs.map +1 -1
  45. package/dist/components/ui/overlay/Command.mjs.map +1 -1
  46. package/dist/components/ui/overlay/Dialog.mjs.map +1 -1
  47. package/dist/components/ui/overlay/Popover.mjs.map +1 -1
  48. package/dist/components/ui/overlay/Sheet.mjs.map +1 -1
  49. package/dist/components/ui/overlay/Tooltip.mjs.map +1 -1
  50. package/dist/hooks/copy-to-clipboard.hook.mjs.map +1 -1
  51. package/dist/index.mjs.map +1 -1
  52. package/dist/middleware.mjs.map +1 -1
  53. package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
  54. package/dist/modules/accounts/actions/find-current-account.action.mjs.map +1 -1
  55. package/dist/modules/accounts/actions/list-currencies.action.mjs.map +1 -1
  56. package/dist/modules/accounts/actions/list-timezones.action.mjs.map +1 -1
  57. package/dist/modules/accounts/hooks/current-account.hook.mjs.map +1 -1
  58. package/dist/modules/accounts/hooks/useAccountManagement.mjs.map +1 -1
  59. package/dist/modules/accounts/hooks/useCurrencies.mjs.map +1 -1
  60. package/dist/modules/accounts/hooks/useTimezones.mjs.map +1 -1
  61. package/dist/modules/accounts/services/account.service.mjs.map +1 -1
  62. package/dist/modules/auth/hooks/login.hook.mjs.map +1 -1
  63. package/dist/modules/auth/hooks/logout.hook.mjs.map +1 -1
  64. package/dist/modules/auth/hooks/register.hook.mjs.map +1 -1
  65. package/dist/modules/ia-credits/actions/list-ia-credits.action.mjs.map +1 -1
  66. package/dist/modules/projects/actions/add-project-user.action.mjs.map +1 -1
  67. package/dist/modules/projects/actions/list-all-account-users.action.mjs.map +1 -1
  68. package/dist/modules/projects/actions/list-available-users.action.mjs.map +1 -1
  69. package/dist/modules/projects/actions/list-project-users.action.mjs.map +1 -1
  70. package/dist/modules/projects/actions/remove-project-user.action.mjs.map +1 -1
  71. package/dist/modules/projects/hooks/add-project-user.hook.mjs.map +1 -1
  72. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
  73. package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
  74. package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
  75. package/dist/modules/projects/hooks/remove-project-user.hook.mjs.map +1 -1
  76. package/dist/modules/subscriptions/actions/list-subscriptions.action.mjs.map +1 -1
  77. package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs.map +1 -1
  78. package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs.map +1 -1
  79. package/dist/modules/users/action/find-user-by-id.action.mjs.map +1 -1
  80. package/dist/modules/users/action/list-messages.action.mjs.map +1 -1
  81. package/dist/modules/users/action/mark-all-messages-as-read.action.mjs.map +1 -1
  82. package/dist/modules/users/action/mark-message-as-read.action.mjs.map +1 -1
  83. package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
  84. package/dist/modules/whitelabel/actions/find-whitelabel-styles.action.mjs.map +1 -1
  85. package/dist/modules/whitelabel/actions/find-whitelabel.action.mjs.map +1 -1
  86. package/dist/modules/whitelabel/services/whitelabel-styles.service.mjs.map +1 -1
  87. package/dist/providers/whitelabel.provider.mjs.map +1 -1
  88. package/dist/utils/countries.mjs.map +1 -1
  89. package/dist/utils/safeServerAction.mjs.map +1 -1
  90. package/dist/utils/withAction.mjs.map +1 -1
  91. package/package.json +90 -90
  92. package/src/components/account/ConfirmDeleteAccountModal.tsx +55 -55
  93. package/src/components/account/DeleteAccountModal.tsx +130 -130
  94. package/src/components/account/IsntPossibleDeleteAccountModal.tsx +49 -49
  95. package/src/components/account/hooks/useChangePhoneForm.tsx +81 -81
  96. package/src/components/account/hooks/useTwoFactorAuthForm.tsx +101 -101
  97. package/src/components/account/sections/ChangePhoneModal.tsx +231 -231
  98. package/src/components/embeds/CrispEmbed.tsx +101 -101
  99. package/src/components/embeds/FrillEmbed.tsx +119 -119
  100. package/src/components/layouts/AppMobileNavBar.tsx +111 -111
  101. package/src/components/layouts/AppNavBar.tsx +57 -57
  102. package/src/components/layouts/NavBar.tsx +122 -122
  103. package/src/components/layouts/UsersSelectorPopover.tsx +238 -238
  104. package/src/components/navigation/CancelledSubscriptionBanner.tsx +69 -69
  105. package/src/components/navigation/NavItemsContext.ts +20 -20
  106. package/src/components/navigation/shells/TabsMobileShell.tsx +72 -72
  107. package/src/components/pages/notifications/Notifications.tsx +160 -160
  108. package/src/components/ui/buttons/Button.tsx +57 -57
  109. package/src/components/ui/buttons/CancelButton.tsx +14 -14
  110. package/src/components/ui/buttons/CopyButton.tsx +54 -54
  111. package/src/components/ui/data-display/Accordion.tsx +81 -81
  112. package/src/components/ui/data-display/Badge.tsx +47 -47
  113. package/src/components/ui/data-display/Card.tsx +93 -93
  114. package/src/components/ui/data-display/Pagination.tsx +126 -126
  115. package/src/components/ui/data-display/ScrollArea.tsx +59 -59
  116. package/src/components/ui/data-display/Separator.tsx +29 -29
  117. package/src/components/ui/data-display/Table.tsx +117 -117
  118. package/src/components/ui/data-display/Tabs.tsx +67 -67
  119. package/src/components/ui/feedback/CircularProgress.tsx +75 -75
  120. package/src/components/ui/feedback/DefaultCircularProgress.tsx +61 -61
  121. package/src/components/ui/feedback/LoadingOverlay.tsx +31 -31
  122. package/src/components/ui/feedback/Progress.tsx +40 -40
  123. package/src/components/ui/feedback/Toast.tsx +101 -101
  124. package/src/components/ui/form/Calendar.tsx +228 -228
  125. package/src/components/ui/form/Checkbox.tsx +31 -31
  126. package/src/components/ui/form/DatePicker.tsx +97 -97
  127. package/src/components/ui/form/DateRangePicker.tsx +108 -108
  128. package/src/components/ui/form/Input.tsx +20 -20
  129. package/src/components/ui/form/InputOtp.tsx +80 -80
  130. package/src/components/ui/form/PhoneInput.tsx +205 -205
  131. package/src/components/ui/form/RadioGroup.tsx +45 -45
  132. package/src/components/ui/form/Select.tsx +200 -200
  133. package/src/components/ui/form/Switch.tsx +32 -32
  134. package/src/components/ui/form/Textarea.tsx +19 -19
  135. package/src/components/ui/overlay/Command.tsx +185 -185
  136. package/src/components/ui/overlay/Dialog.tsx +151 -151
  137. package/src/components/ui/overlay/Popover.tsx +49 -49
  138. package/src/components/ui/overlay/Sheet.tsx +166 -166
  139. package/src/components/ui/overlay/Tooltip.tsx +62 -62
  140. package/src/hooks/copy-to-clipboard.hook.tsx +67 -67
  141. package/src/index.ts +355 -355
  142. package/src/middleware.ts +4 -4
  143. package/src/modules/accounts/actions/account-management.action.ts +90 -90
  144. package/src/modules/accounts/actions/find-current-account.action.ts +9 -9
  145. package/src/modules/accounts/actions/list-currencies.action.ts +8 -8
  146. package/src/modules/accounts/actions/list-timezones.action.ts +8 -8
  147. package/src/modules/accounts/hooks/current-account.hook.tsx +22 -22
  148. package/src/modules/accounts/hooks/useAccountManagement.ts +85 -85
  149. package/src/modules/accounts/hooks/useCurrencies.ts +15 -15
  150. package/src/modules/accounts/hooks/useTimezones.ts +15 -15
  151. package/src/modules/accounts/services/account.service.ts +236 -236
  152. package/src/modules/accounts/types.ts +214 -214
  153. package/src/modules/auth/hooks/login.hook.tsx +13 -13
  154. package/src/modules/auth/hooks/logout.hook.tsx +11 -11
  155. package/src/modules/auth/hooks/register.hook.tsx +11 -11
  156. package/src/modules/ia-credits/actions/list-ia-credits.action.ts +8 -8
  157. package/src/modules/projects/actions/add-project-user.action.ts +9 -9
  158. package/src/modules/projects/actions/list-all-account-users.action.ts +9 -9
  159. package/src/modules/projects/actions/list-available-users.action.ts +9 -9
  160. package/src/modules/projects/actions/list-project-users.action.ts +9 -9
  161. package/src/modules/projects/actions/remove-project-user.action.ts +9 -9
  162. package/src/modules/projects/hooks/add-project-user.hook.ts +69 -69
  163. package/src/modules/projects/hooks/list-all-account-users.hook.ts +34 -34
  164. package/src/modules/projects/hooks/list-available-users.hook.ts +33 -33
  165. package/src/modules/projects/hooks/list-project-users.hook.ts +33 -33
  166. package/src/modules/projects/hooks/remove-project-user.hook.ts +69 -69
  167. package/src/modules/subscriptions/actions/list-subscriptions.action.ts +9 -9
  168. package/src/modules/subscriptions/hooks/find-active-subscription.hook.ts +19 -19
  169. package/src/modules/subscriptions/hooks/list-subscriptions.hook.ts +17 -17
  170. package/src/modules/users/action/find-user-by-id.action.ts +8 -8
  171. package/src/modules/users/action/list-messages.action.ts +12 -12
  172. package/src/modules/users/action/mark-all-messages-as-read.action.ts +8 -8
  173. package/src/modules/users/action/mark-message-as-read.action.ts +8 -8
  174. package/src/modules/users/hooks/messages.hook.ts +60 -60
  175. package/src/modules/whitelabel/actions/find-whitelabel-styles.action.ts +14 -14
  176. package/src/modules/whitelabel/actions/find-whitelabel.action.ts +23 -23
  177. package/src/modules/whitelabel/services/whitelabel-styles.service.ts +98 -98
  178. package/src/modules/whitelabel/styles-schema.ts +37 -37
  179. package/src/providers/whitelabel.provider.tsx +46 -46
  180. package/src/utils/countries.ts +224 -224
  181. package/src/utils/safeServerAction.ts +21 -21
  182. package/src/utils/withAction.ts +13 -13
@@ -1,57 +1,57 @@
1
- "use client";
2
-
3
- import { useRouter } from "next/navigation";
4
- import { NavBar } from "./NavBar";
5
- import { ProfilePopover } from "./ProfilePopover";
6
- import { NotificationsPopover } from "./NotificationsPopover";
7
- import { useAccountModals } from "../../store/useAccountModals";
8
- import type { ProfileMenuItem } from "./ProfilePopover";
9
-
10
- export interface AppNavBarProps {
11
- onLogoClick?: () => void;
12
- /** Which app is currently active — controls which icon gets the indicator */
13
- activeApp?: "gapps" | "gpages";
14
- appIconHref?: string;
15
- showExpandButton?: boolean;
16
- onExpandClick?: () => void;
17
- menuItems?: ProfileMenuItem[];
18
- onCreditsClick?: () => void;
19
- onNotificationsViewAll?: () => void;
20
- logoutRedirect?: string;
21
- }
22
-
23
- export function AppNavBar({
24
- onLogoClick,
25
- activeApp,
26
- appIconHref = "/",
27
- showExpandButton = false,
28
- onExpandClick,
29
- menuItems = [],
30
- onCreditsClick,
31
- onNotificationsViewAll,
32
- logoutRedirect,
33
- }: AppNavBarProps) {
34
- const router = useRouter();
35
- const { openConfigurations } = useAccountModals();
36
-
37
- const handleLogoClick = onLogoClick ?? (() => router.push("/"));
38
- const handleAppIconClick = () => router.push(appIconHref);
39
-
40
- return (
41
- <NavBar
42
- onLogoClick={handleLogoClick}
43
- onAppIconClick={handleAppIconClick}
44
- activeApp={activeApp}
45
- showExpandButton={showExpandButton}
46
- onExpandClick={onExpandClick}
47
- >
48
- <NotificationsPopover onViewAll={onNotificationsViewAll} />
49
- <ProfilePopover
50
- onEditProfile={() => openConfigurations()}
51
- onCreditsClick={onCreditsClick}
52
- menuItems={menuItems}
53
- logoutRedirect={logoutRedirect}
54
- />
55
- </NavBar>
56
- );
57
- }
1
+ "use client";
2
+
3
+ import { useRouter } from "next/navigation";
4
+ import { NavBar } from "./NavBar";
5
+ import { ProfilePopover } from "./ProfilePopover";
6
+ import { NotificationsPopover } from "./NotificationsPopover";
7
+ import { useAccountModals } from "../../store/useAccountModals";
8
+ import type { ProfileMenuItem } from "./ProfilePopover";
9
+
10
+ export interface AppNavBarProps {
11
+ onLogoClick?: () => void;
12
+ /** Which app is currently active — controls which icon gets the indicator */
13
+ activeApp?: "gapps" | "gpages";
14
+ appIconHref?: string;
15
+ showExpandButton?: boolean;
16
+ onExpandClick?: () => void;
17
+ menuItems?: ProfileMenuItem[];
18
+ onCreditsClick?: () => void;
19
+ onNotificationsViewAll?: () => void;
20
+ logoutRedirect?: string;
21
+ }
22
+
23
+ export function AppNavBar({
24
+ onLogoClick,
25
+ activeApp,
26
+ appIconHref = "/",
27
+ showExpandButton = false,
28
+ onExpandClick,
29
+ menuItems = [],
30
+ onCreditsClick,
31
+ onNotificationsViewAll,
32
+ logoutRedirect,
33
+ }: AppNavBarProps) {
34
+ const router = useRouter();
35
+ const { openConfigurations } = useAccountModals();
36
+
37
+ const handleLogoClick = onLogoClick ?? (() => router.push("/"));
38
+ const handleAppIconClick = () => router.push(appIconHref);
39
+
40
+ return (
41
+ <NavBar
42
+ onLogoClick={handleLogoClick}
43
+ onAppIconClick={handleAppIconClick}
44
+ activeApp={activeApp}
45
+ showExpandButton={showExpandButton}
46
+ onExpandClick={onExpandClick}
47
+ >
48
+ <NotificationsPopover onViewAll={onNotificationsViewAll} />
49
+ <ProfilePopover
50
+ onEditProfile={() => openConfigurations()}
51
+ onCreditsClick={onCreditsClick}
52
+ menuItems={menuItems}
53
+ logoutRedirect={logoutRedirect}
54
+ />
55
+ </NavBar>
56
+ );
57
+ }
@@ -1,122 +1,122 @@
1
- "use client";
2
-
3
- import * as React from "react";
4
- import Image from "next/image";
5
- import { ChevronRight } from "lucide-react";
6
- import { Separator } from "../ui/data-display/Separator";
7
- import { Tooltip, TooltipContent, TooltipTrigger } from "../ui/overlay/Tooltip";
8
- import { cn } from "../../infra/utils/clsx";
9
-
10
- type NavBarProps = {
11
- onLogoClick: () => void;
12
- onAppIconClick?: () => void;
13
- activeApp?: "gapps" | "gpages";
14
- showExpandButton?: boolean;
15
- onExpandClick?: () => void;
16
- children?: React.ReactNode;
17
- className?: string;
18
- };
19
-
20
- function NavBar({
21
- onLogoClick,
22
- onAppIconClick,
23
- activeApp,
24
- showExpandButton = false,
25
- onExpandClick,
26
- children,
27
- className,
28
- }: NavBarProps) {
29
- return (
30
- <div
31
- className={cn(
32
- "hidden md:flex flex-col justify-between h-screen p-4 border-r border-gray-200 overflow-visible z-40 bg-white",
33
- className,
34
- )}
35
- >
36
- <div className="flex flex-col gap-4 items-center mt-[6.5px]">
37
- {/* GreatApps logo */}
38
- <div className="relative">
39
- <Tooltip>
40
- <TooltipTrigger
41
- className="cursor-pointer"
42
- asChild
43
- onClick={onLogoClick}
44
- >
45
- <Image
46
- src="/icons/great-icon.svg"
47
- alt="Great Icon"
48
- width={28}
49
- height={28}
50
- />
51
- </TooltipTrigger>
52
- <TooltipContent side="right">Great</TooltipContent>
53
- </Tooltip>
54
- <div
55
- className={cn(
56
- "absolute -left-[22px] top-1/2 -translate-y-1/2 w-[3px] h-5 bg-gray-950 rounded-r-xl transition-opacity duration-300",
57
- activeApp === "gapps" ? "opacity-100" : "opacity-0",
58
- )}
59
- />
60
- </div>
61
-
62
- <div className="relative w-full mt-[7.5px]">
63
- <Separator />
64
- {showExpandButton && (
65
- <Tooltip>
66
- <TooltipTrigger asChild>
67
- <button
68
- onClick={onExpandClick}
69
- className="lg:hidden absolute top-1/2 -translate-y-1/2 right-0 translate-x-[calc(50%+1rem)] size-8 flex items-center justify-center rounded-full border border-gray-200 bg-white hover:bg-gray-100 cursor-pointer transition-colors z-10"
70
- >
71
- <ChevronRight size={16} className="text-gray-500" />
72
- </button>
73
- </TooltipTrigger>
74
- <TooltipContent side="right">Expandir menu</TooltipContent>
75
- </Tooltip>
76
- )}
77
- </div>
78
-
79
- {/* GreatPages icon */}
80
- <div className="flex flex-col gap-2">
81
- <div className="relative">
82
- <Tooltip>
83
- <TooltipTrigger asChild onClick={onAppIconClick}>
84
- {activeApp === "gpages" ? (
85
- <div className="size-10 rounded-lg cursor-pointer flex items-center justify-center bg-cyan-100 border-2 border-white ring-2 ring-cyan-300">
86
- <Image
87
- src="/icons/icon-navbar.svg"
88
- alt="GreatPages"
89
- width={24}
90
- height={24}
91
- />
92
- </div>
93
- ) : (
94
- <div className="size-10 flex items-center justify-center rounded-lg cursor-pointer hover:bg-gray-100 transition-colors duration-300">
95
- <Image
96
- src="/icons/icon-navbar.svg"
97
- alt="GreatPages"
98
- width={28}
99
- height={28}
100
- />
101
- </div>
102
- )}
103
- </TooltipTrigger>
104
- <TooltipContent side="right">GreatPages</TooltipContent>
105
- </Tooltip>
106
- <div
107
- className={cn(
108
- "absolute -left-[22px] top-1/2 -translate-y-1/2 w-[3px] h-5 bg-cyan-300 rounded-r-xl transition-opacity duration-300",
109
- activeApp === "gpages" ? "opacity-100" : "opacity-0",
110
- )}
111
- />
112
- </div>
113
- </div>
114
- </div>
115
-
116
- <div className="flex flex-col items-center gap-2">{children}</div>
117
- </div>
118
- );
119
- }
120
-
121
- export { NavBar };
122
- export type { NavBarProps };
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import Image from "next/image";
5
+ import { ChevronRight } from "lucide-react";
6
+ import { Separator } from "../ui/data-display/Separator";
7
+ import { Tooltip, TooltipContent, TooltipTrigger } from "../ui/overlay/Tooltip";
8
+ import { cn } from "../../infra/utils/clsx";
9
+
10
+ type NavBarProps = {
11
+ onLogoClick: () => void;
12
+ onAppIconClick?: () => void;
13
+ activeApp?: "gapps" | "gpages";
14
+ showExpandButton?: boolean;
15
+ onExpandClick?: () => void;
16
+ children?: React.ReactNode;
17
+ className?: string;
18
+ };
19
+
20
+ function NavBar({
21
+ onLogoClick,
22
+ onAppIconClick,
23
+ activeApp,
24
+ showExpandButton = false,
25
+ onExpandClick,
26
+ children,
27
+ className,
28
+ }: NavBarProps) {
29
+ return (
30
+ <div
31
+ className={cn(
32
+ "hidden md:flex flex-col justify-between h-screen p-4 border-r border-gray-200 overflow-visible z-40 bg-white",
33
+ className,
34
+ )}
35
+ >
36
+ <div className="flex flex-col gap-4 items-center mt-[6.5px]">
37
+ {/* GreatApps logo */}
38
+ <div className="relative">
39
+ <Tooltip>
40
+ <TooltipTrigger
41
+ className="cursor-pointer"
42
+ asChild
43
+ onClick={onLogoClick}
44
+ >
45
+ <Image
46
+ src="/icons/great-icon.svg"
47
+ alt="Great Icon"
48
+ width={28}
49
+ height={28}
50
+ />
51
+ </TooltipTrigger>
52
+ <TooltipContent side="right">Great</TooltipContent>
53
+ </Tooltip>
54
+ <div
55
+ className={cn(
56
+ "absolute -left-[22px] top-1/2 -translate-y-1/2 w-[3px] h-5 bg-gray-950 rounded-r-xl transition-opacity duration-300",
57
+ activeApp === "gapps" ? "opacity-100" : "opacity-0",
58
+ )}
59
+ />
60
+ </div>
61
+
62
+ <div className="relative w-full mt-[7.5px]">
63
+ <Separator />
64
+ {showExpandButton && (
65
+ <Tooltip>
66
+ <TooltipTrigger asChild>
67
+ <button
68
+ onClick={onExpandClick}
69
+ className="lg:hidden absolute top-1/2 -translate-y-1/2 right-0 translate-x-[calc(50%+1rem)] size-8 flex items-center justify-center rounded-full border border-gray-200 bg-white hover:bg-gray-100 cursor-pointer transition-colors z-10"
70
+ >
71
+ <ChevronRight size={16} className="text-gray-500" />
72
+ </button>
73
+ </TooltipTrigger>
74
+ <TooltipContent side="right">Expandir menu</TooltipContent>
75
+ </Tooltip>
76
+ )}
77
+ </div>
78
+
79
+ {/* GreatPages icon */}
80
+ <div className="flex flex-col gap-2">
81
+ <div className="relative">
82
+ <Tooltip>
83
+ <TooltipTrigger asChild onClick={onAppIconClick}>
84
+ {activeApp === "gpages" ? (
85
+ <div className="size-10 rounded-lg cursor-pointer flex items-center justify-center bg-cyan-100 border-2 border-white ring-2 ring-cyan-300">
86
+ <Image
87
+ src="/icons/icon-navbar.svg"
88
+ alt="GreatPages"
89
+ width={24}
90
+ height={24}
91
+ />
92
+ </div>
93
+ ) : (
94
+ <div className="size-10 flex items-center justify-center rounded-lg cursor-pointer hover:bg-gray-100 transition-colors duration-300">
95
+ <Image
96
+ src="/icons/icon-navbar.svg"
97
+ alt="GreatPages"
98
+ width={28}
99
+ height={28}
100
+ />
101
+ </div>
102
+ )}
103
+ </TooltipTrigger>
104
+ <TooltipContent side="right">GreatPages</TooltipContent>
105
+ </Tooltip>
106
+ <div
107
+ className={cn(
108
+ "absolute -left-[22px] top-1/2 -translate-y-1/2 w-[3px] h-5 bg-cyan-300 rounded-r-xl transition-opacity duration-300",
109
+ activeApp === "gpages" ? "opacity-100" : "opacity-0",
110
+ )}
111
+ />
112
+ </div>
113
+ </div>
114
+ </div>
115
+
116
+ <div className="flex flex-col items-center gap-2">{children}</div>
117
+ </div>
118
+ );
119
+ }
120
+
121
+ export { NavBar };
122
+ export type { NavBarProps };