@greatapps/common 1.1.231 → 1.1.232

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 (226) hide show
  1. package/dist/components/account/ConfigurationsMyAccountModal.mjs +1 -1
  2. package/dist/components/account/ConfigurationsMyAccountModal.mjs.map +1 -1
  3. package/dist/components/account/ConfirmDeleteAccountModal.mjs.map +1 -1
  4. package/dist/components/account/ConfirmGlobalPreferencesModal.mjs.map +1 -1
  5. package/dist/components/account/DeleteAccountModal.mjs.map +1 -1
  6. package/dist/components/account/DisableTwoFactorAuthModal.mjs.map +1 -1
  7. package/dist/components/account/IsntPossibleDeleteAccountModal.mjs.map +1 -1
  8. package/dist/components/account/TwoFactorAuthModal.mjs.map +1 -1
  9. package/dist/components/account/hooks/useChangePhoneForm.mjs.map +1 -1
  10. package/dist/components/account/hooks/useTwoFactorAuthForm.mjs.map +1 -1
  11. package/dist/components/account/sections/ChangeEmailModal.mjs.map +1 -1
  12. package/dist/components/account/sections/ChangePasswordSection.mjs.map +1 -1
  13. package/dist/components/account/sections/ChangePhoneModal.mjs.map +1 -1
  14. package/dist/components/account/sections/MyProfileSection.mjs.map +1 -1
  15. package/dist/components/account/sections/PreferencesSection.mjs.map +1 -1
  16. package/dist/components/account/sections/SecuritySection.mjs.map +1 -1
  17. package/dist/components/embeds/CrispEmbed.mjs.map +1 -1
  18. package/dist/components/embeds/FrillEmbed.mjs.map +1 -1
  19. package/dist/components/layouts/AppMobileNavBar.mjs.map +1 -1
  20. package/dist/components/layouts/AppNavBar.mjs.map +1 -1
  21. package/dist/components/layouts/MdSideBarNavigation.mjs.map +1 -1
  22. package/dist/components/layouts/NavBar.mjs +1 -1
  23. package/dist/components/layouts/NavBar.mjs.map +1 -1
  24. package/dist/components/layouts/NotificationsPopover.mjs.map +1 -1
  25. package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
  26. package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
  27. package/dist/components/navigation/CancelledSubscriptionBanner.mjs.map +1 -1
  28. package/dist/components/navigation/NavItemsContext.mjs.map +1 -1
  29. package/dist/components/navigation/ProjectSelectorPopover.mjs.map +1 -1
  30. package/dist/components/navigation/shells/TabsMobileShell.mjs.map +1 -1
  31. package/dist/components/navigation/subcomponents/ProjectSelector.mjs.map +1 -1
  32. package/dist/components/pages/notifications/Notifications.mjs.map +1 -1
  33. package/dist/components/ui/buttons/Button.mjs.map +1 -1
  34. package/dist/components/ui/buttons/CancelButton.mjs.map +1 -1
  35. package/dist/components/ui/buttons/CopyButton.mjs.map +1 -1
  36. package/dist/components/ui/data-display/Accordion.mjs.map +1 -1
  37. package/dist/components/ui/data-display/Badge.mjs.map +1 -1
  38. package/dist/components/ui/data-display/Card.mjs.map +1 -1
  39. package/dist/components/ui/data-display/Pagination.mjs.map +1 -1
  40. package/dist/components/ui/data-display/ScrollArea.mjs.map +1 -1
  41. package/dist/components/ui/data-display/Separator.mjs.map +1 -1
  42. package/dist/components/ui/data-display/Table.mjs.map +1 -1
  43. package/dist/components/ui/data-display/Tabs.mjs.map +1 -1
  44. package/dist/components/ui/feedback/CircularProgress.mjs.map +1 -1
  45. package/dist/components/ui/feedback/DefaultCircularProgress.mjs.map +1 -1
  46. package/dist/components/ui/feedback/LoadingOverlay.mjs.map +1 -1
  47. package/dist/components/ui/feedback/Progress.mjs.map +1 -1
  48. package/dist/components/ui/feedback/Toast.mjs.map +1 -1
  49. package/dist/components/ui/form/Calendar.mjs.map +1 -1
  50. package/dist/components/ui/form/Checkbox.mjs.map +1 -1
  51. package/dist/components/ui/form/ComboboxField.mjs.map +1 -1
  52. package/dist/components/ui/form/DatePicker.mjs.map +1 -1
  53. package/dist/components/ui/form/DateRangePicker.mjs.map +1 -1
  54. package/dist/components/ui/form/FormField.mjs.map +1 -1
  55. package/dist/components/ui/form/Input.mjs.map +1 -1
  56. package/dist/components/ui/form/InputOtp.mjs.map +1 -1
  57. package/dist/components/ui/form/PhoneInput.mjs.map +1 -1
  58. package/dist/components/ui/form/RadioGroup.mjs.map +1 -1
  59. package/dist/components/ui/form/Select.mjs +1 -1
  60. package/dist/components/ui/form/Select.mjs.map +1 -1
  61. package/dist/components/ui/form/Switch.mjs.map +1 -1
  62. package/dist/components/ui/form/Textarea.mjs.map +1 -1
  63. package/dist/components/ui/overlay/Command.mjs.map +1 -1
  64. package/dist/components/ui/overlay/Dialog.mjs.map +1 -1
  65. package/dist/components/ui/overlay/Popover.mjs.map +1 -1
  66. package/dist/components/ui/overlay/Sheet.mjs.map +1 -1
  67. package/dist/components/ui/overlay/Tooltip.mjs.map +1 -1
  68. package/dist/hooks/copy-to-clipboard.hook.mjs.map +1 -1
  69. package/dist/index.mjs.map +1 -1
  70. package/dist/middleware.mjs.map +1 -1
  71. package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
  72. package/dist/modules/accounts/actions/find-current-account.action.mjs.map +1 -1
  73. package/dist/modules/accounts/actions/list-currencies.action.mjs.map +1 -1
  74. package/dist/modules/accounts/actions/list-timezones.action.mjs.map +1 -1
  75. package/dist/modules/accounts/hooks/current-account.hook.mjs.map +1 -1
  76. package/dist/modules/accounts/hooks/useAccountManagement.mjs.map +1 -1
  77. package/dist/modules/accounts/hooks/useCurrencies.mjs.map +1 -1
  78. package/dist/modules/accounts/hooks/useTimezones.mjs.map +1 -1
  79. package/dist/modules/accounts/services/account.service.mjs.map +1 -1
  80. package/dist/modules/auth/hooks/login.hook.mjs.map +1 -1
  81. package/dist/modules/auth/hooks/logout.hook.mjs.map +1 -1
  82. package/dist/modules/auth/hooks/register.hook.mjs.map +1 -1
  83. package/dist/modules/ia-credits/actions/list-ia-credits.action.mjs.map +1 -1
  84. package/dist/modules/projects/actions/add-project-user.action.mjs.map +1 -1
  85. package/dist/modules/projects/actions/list-all-account-users.action.mjs.map +1 -1
  86. package/dist/modules/projects/actions/list-available-users.action.mjs.map +1 -1
  87. package/dist/modules/projects/actions/list-project-users.action.mjs.map +1 -1
  88. package/dist/modules/projects/actions/remove-project-user.action.mjs.map +1 -1
  89. package/dist/modules/projects/hooks/add-project-user.hook.mjs.map +1 -1
  90. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
  91. package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
  92. package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
  93. package/dist/modules/projects/hooks/remove-project-user.hook.mjs.map +1 -1
  94. package/dist/modules/subscriptions/actions/find-plan-by-id.action.mjs.map +1 -1
  95. package/dist/modules/subscriptions/actions/list-subscriptions.action.mjs.map +1 -1
  96. package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs.map +1 -1
  97. package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs.map +1 -1
  98. package/dist/modules/subscriptions/hooks/use-has-plan-addon.hook.mjs.map +1 -1
  99. package/dist/modules/subscriptions/hooks/use-plan-by-id.hook.mjs.map +1 -1
  100. package/dist/modules/subscriptions/services/plans.service.mjs.map +1 -1
  101. package/dist/modules/subscriptions/types/plan.type.mjs.map +1 -1
  102. package/dist/modules/users/action/find-user-by-id.action.mjs.map +1 -1
  103. package/dist/modules/users/action/list-messages.action.mjs.map +1 -1
  104. package/dist/modules/users/action/mark-all-messages-as-read.action.mjs.map +1 -1
  105. package/dist/modules/users/action/mark-message-as-read.action.mjs.map +1 -1
  106. package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
  107. package/dist/modules/whitelabel/actions/find-whitelabel-styles.action.mjs.map +1 -1
  108. package/dist/modules/whitelabel/actions/find-whitelabel.action.mjs.map +1 -1
  109. package/dist/modules/whitelabel/services/whitelabel-styles.service.mjs.map +1 -1
  110. package/dist/providers/whitelabel.provider.mjs.map +1 -1
  111. package/dist/utils/countries.mjs.map +1 -1
  112. package/dist/utils/safeServerAction.mjs.map +1 -1
  113. package/dist/utils/withAction.mjs.map +1 -1
  114. package/package.json +89 -89
  115. package/src/components/account/ConfigurationsMyAccountModal.tsx +150 -150
  116. package/src/components/account/ConfirmDeleteAccountModal.tsx +55 -55
  117. package/src/components/account/ConfirmGlobalPreferencesModal.tsx +66 -66
  118. package/src/components/account/DeleteAccountModal.tsx +130 -130
  119. package/src/components/account/DisableTwoFactorAuthModal.tsx +86 -86
  120. package/src/components/account/IsntPossibleDeleteAccountModal.tsx +49 -49
  121. package/src/components/account/TwoFactorAuthModal.tsx +223 -223
  122. package/src/components/account/hooks/useChangePhoneForm.tsx +81 -81
  123. package/src/components/account/hooks/useTwoFactorAuthForm.tsx +101 -101
  124. package/src/components/account/sections/ChangeEmailModal.tsx +225 -225
  125. package/src/components/account/sections/ChangePasswordSection.tsx +64 -64
  126. package/src/components/account/sections/ChangePhoneModal.tsx +231 -231
  127. package/src/components/account/sections/MyProfileSection.tsx +327 -327
  128. package/src/components/account/sections/PreferencesSection.tsx +273 -273
  129. package/src/components/account/sections/SecuritySection.tsx +160 -160
  130. package/src/components/embeds/CrispEmbed.tsx +101 -101
  131. package/src/components/embeds/FrillEmbed.tsx +119 -119
  132. package/src/components/layouts/AppMobileNavBar.tsx +110 -110
  133. package/src/components/layouts/AppNavBar.tsx +57 -57
  134. package/src/components/layouts/MdSideBarNavigation.tsx +56 -56
  135. package/src/components/layouts/NavBar.tsx +120 -120
  136. package/src/components/layouts/NotificationsPopover.tsx +115 -115
  137. package/src/components/layouts/ProfilePopover.tsx +167 -167
  138. package/src/components/layouts/UsersSelectorPopover.tsx +238 -238
  139. package/src/components/navigation/CancelledSubscriptionBanner.tsx +69 -69
  140. package/src/components/navigation/NavItemsContext.ts +20 -20
  141. package/src/components/navigation/ProjectSelectorPopover.tsx +157 -157
  142. package/src/components/navigation/shells/TabsMobileShell.tsx +72 -72
  143. package/src/components/navigation/subcomponents/ProjectSelector.tsx +155 -155
  144. package/src/components/pages/notifications/Notifications.tsx +160 -160
  145. package/src/components/ui/buttons/Button.tsx +57 -57
  146. package/src/components/ui/buttons/CancelButton.tsx +14 -14
  147. package/src/components/ui/buttons/CopyButton.tsx +54 -54
  148. package/src/components/ui/data-display/Accordion.tsx +81 -81
  149. package/src/components/ui/data-display/Badge.tsx +47 -47
  150. package/src/components/ui/data-display/Card.tsx +93 -93
  151. package/src/components/ui/data-display/Pagination.tsx +126 -126
  152. package/src/components/ui/data-display/ScrollArea.tsx +59 -59
  153. package/src/components/ui/data-display/Separator.tsx +29 -29
  154. package/src/components/ui/data-display/Table.tsx +117 -117
  155. package/src/components/ui/data-display/Tabs.tsx +67 -67
  156. package/src/components/ui/feedback/CircularProgress.tsx +75 -75
  157. package/src/components/ui/feedback/DefaultCircularProgress.tsx +61 -61
  158. package/src/components/ui/feedback/LoadingOverlay.tsx +31 -31
  159. package/src/components/ui/feedback/Progress.tsx +40 -40
  160. package/src/components/ui/feedback/Toast.tsx +101 -101
  161. package/src/components/ui/form/Calendar.tsx +228 -228
  162. package/src/components/ui/form/Checkbox.tsx +31 -31
  163. package/src/components/ui/form/ComboboxField.tsx +154 -154
  164. package/src/components/ui/form/DatePicker.tsx +97 -97
  165. package/src/components/ui/form/DateRangePicker.tsx +108 -108
  166. package/src/components/ui/form/FormField.tsx +131 -131
  167. package/src/components/ui/form/Input.tsx +20 -20
  168. package/src/components/ui/form/InputOtp.tsx +80 -80
  169. package/src/components/ui/form/PhoneInput.tsx +205 -205
  170. package/src/components/ui/form/RadioGroup.tsx +45 -45
  171. package/src/components/ui/form/Select.tsx +200 -200
  172. package/src/components/ui/form/Switch.tsx +32 -32
  173. package/src/components/ui/form/Textarea.tsx +19 -19
  174. package/src/components/ui/overlay/Command.tsx +185 -185
  175. package/src/components/ui/overlay/Dialog.tsx +151 -151
  176. package/src/components/ui/overlay/Popover.tsx +49 -49
  177. package/src/components/ui/overlay/Sheet.tsx +166 -166
  178. package/src/components/ui/overlay/Tooltip.tsx +62 -62
  179. package/src/hooks/copy-to-clipboard.hook.tsx +67 -67
  180. package/src/index.ts +359 -359
  181. package/src/middleware.ts +4 -4
  182. package/src/modules/accounts/actions/account-management.action.ts +90 -90
  183. package/src/modules/accounts/actions/find-current-account.action.ts +9 -9
  184. package/src/modules/accounts/actions/list-currencies.action.ts +8 -8
  185. package/src/modules/accounts/actions/list-timezones.action.ts +8 -8
  186. package/src/modules/accounts/hooks/current-account.hook.tsx +22 -22
  187. package/src/modules/accounts/hooks/useAccountManagement.ts +85 -85
  188. package/src/modules/accounts/hooks/useCurrencies.ts +15 -15
  189. package/src/modules/accounts/hooks/useTimezones.ts +15 -15
  190. package/src/modules/accounts/services/account.service.ts +236 -236
  191. package/src/modules/accounts/types.ts +214 -214
  192. package/src/modules/auth/hooks/login.hook.tsx +13 -13
  193. package/src/modules/auth/hooks/logout.hook.tsx +11 -11
  194. package/src/modules/auth/hooks/register.hook.tsx +11 -11
  195. package/src/modules/ia-credits/actions/list-ia-credits.action.ts +8 -8
  196. package/src/modules/projects/actions/add-project-user.action.ts +9 -9
  197. package/src/modules/projects/actions/list-all-account-users.action.ts +9 -9
  198. package/src/modules/projects/actions/list-available-users.action.ts +9 -9
  199. package/src/modules/projects/actions/list-project-users.action.ts +9 -9
  200. package/src/modules/projects/actions/remove-project-user.action.ts +9 -9
  201. package/src/modules/projects/hooks/add-project-user.hook.ts +69 -69
  202. package/src/modules/projects/hooks/list-all-account-users.hook.ts +34 -34
  203. package/src/modules/projects/hooks/list-available-users.hook.ts +33 -33
  204. package/src/modules/projects/hooks/list-project-users.hook.ts +33 -33
  205. package/src/modules/projects/hooks/remove-project-user.hook.ts +69 -69
  206. package/src/modules/subscriptions/actions/find-plan-by-id.action.ts +8 -8
  207. package/src/modules/subscriptions/actions/list-subscriptions.action.ts +9 -9
  208. package/src/modules/subscriptions/hooks/find-active-subscription.hook.ts +19 -19
  209. package/src/modules/subscriptions/hooks/list-subscriptions.hook.ts +17 -17
  210. package/src/modules/subscriptions/hooks/use-has-plan-addon.hook.ts +17 -17
  211. package/src/modules/subscriptions/hooks/use-plan-by-id.hook.ts +13 -13
  212. package/src/modules/subscriptions/services/plans.service.ts +36 -36
  213. package/src/modules/subscriptions/types/plan.type.ts +21 -21
  214. package/src/modules/users/action/find-user-by-id.action.ts +8 -8
  215. package/src/modules/users/action/list-messages.action.ts +12 -12
  216. package/src/modules/users/action/mark-all-messages-as-read.action.ts +8 -8
  217. package/src/modules/users/action/mark-message-as-read.action.ts +8 -8
  218. package/src/modules/users/hooks/messages.hook.ts +60 -60
  219. package/src/modules/whitelabel/actions/find-whitelabel-styles.action.ts +14 -14
  220. package/src/modules/whitelabel/actions/find-whitelabel.action.ts +23 -23
  221. package/src/modules/whitelabel/services/whitelabel-styles.service.ts +98 -98
  222. package/src/modules/whitelabel/styles-schema.ts +37 -37
  223. package/src/providers/whitelabel.provider.tsx +46 -46
  224. package/src/utils/countries.ts +224 -224
  225. package/src/utils/safeServerAction.ts +21 -21
  226. package/src/utils/withAction.ts +13 -13
@@ -1,31 +1,31 @@
1
- 'use client';
2
-
3
- import Image from 'next/image';
4
- import { ReactNode } from 'react';
5
-
6
- interface LoadingOverlayProps {
7
- isLoading: boolean;
8
- message?: string;
9
- icon?: ReactNode;
10
- }
11
-
12
- export function LoadingOverlay({ isLoading, message, icon }: LoadingOverlayProps) {
13
- if (!isLoading) return null;
14
-
15
- const defaultIcon = <Image src="/icons/great-icon.svg" alt="Great Icon" width={20} height={20} />;
16
-
17
- return (
18
- <div className="fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-[2px]">
19
- <div className="bg-white rounded-2xl shadow-xl px-16 py-12 flex flex-col items-center gap-6 min-w-[380px]">
20
- <div className="relative flex items-center justify-center w-20 h-20">
21
- <div className="absolute inset-0 border-[5px] border-gray-100 rounded-full" />
22
- <div className="absolute inset-0 border-[5px] border-transparent border-t-black rounded-full animate-spin" />
23
- <div className="relative z-20 flex items-center justify-center w-14 h-14 bg-gray-100 rounded-full">
24
- {icon ?? defaultIcon}
25
- </div>
26
- </div>
27
- <span className="font-bold text-gray-900 text-lg">{message}</span>
28
- </div>
29
- </div>
30
- );
31
- }
1
+ 'use client';
2
+
3
+ import Image from 'next/image';
4
+ import { ReactNode } from 'react';
5
+
6
+ interface LoadingOverlayProps {
7
+ isLoading: boolean;
8
+ message?: string;
9
+ icon?: ReactNode;
10
+ }
11
+
12
+ export function LoadingOverlay({ isLoading, message, icon }: LoadingOverlayProps) {
13
+ if (!isLoading) return null;
14
+
15
+ const defaultIcon = <Image src="/icons/great-icon.svg" alt="Great Icon" width={20} height={20} />;
16
+
17
+ return (
18
+ <div className="fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-[2px]">
19
+ <div className="bg-white rounded-2xl shadow-xl px-16 py-12 flex flex-col items-center gap-6 min-w-[380px]">
20
+ <div className="relative flex items-center justify-center w-20 h-20">
21
+ <div className="absolute inset-0 border-[5px] border-gray-100 rounded-full" />
22
+ <div className="absolute inset-0 border-[5px] border-transparent border-t-black rounded-full animate-spin" />
23
+ <div className="relative z-20 flex items-center justify-center w-14 h-14 bg-gray-100 rounded-full">
24
+ {icon ?? defaultIcon}
25
+ </div>
26
+ </div>
27
+ <span className="font-bold text-gray-900 text-lg">{message}</span>
28
+ </div>
29
+ </div>
30
+ );
31
+ }
@@ -1,40 +1,40 @@
1
- 'use client';
2
-
3
- "use client"
4
-
5
- import * as React from "react"
6
- import * as ProgressPrimitive from "@radix-ui/react-progress"
7
- import { cn } from "../../../infra/utils/clsx"
8
-
9
- interface ProgressProps extends React.ComponentProps<typeof ProgressPrimitive.Root> {
10
- indicatorColor?: string
11
- }
12
-
13
- function Progress({
14
- className,
15
- value,
16
- indicatorColor,
17
- ...props
18
- }: ProgressProps) {
19
- return (
20
- <ProgressPrimitive.Root
21
- data-slot="progress"
22
- className={cn(
23
- "bg-primary/20 relative h-2 w-full overflow-hidden rounded-full",
24
- className
25
- )}
26
- {...props}
27
- >
28
- <ProgressPrimitive.Indicator
29
- data-slot="progress-indicator"
30
- className={cn(
31
- "bg-primary h-full w-full flex-1 transition-all rounded-full",
32
- indicatorColor
33
- )}
34
- style={{ transform: `translateX(-${100 - (value || 0)}%)` }}
35
- />
36
- </ProgressPrimitive.Root>
37
- )
38
- }
39
-
40
- export { Progress }
1
+ 'use client';
2
+
3
+ "use client"
4
+
5
+ import * as React from "react"
6
+ import * as ProgressPrimitive from "@radix-ui/react-progress"
7
+ import { cn } from "../../../infra/utils/clsx"
8
+
9
+ interface ProgressProps extends React.ComponentProps<typeof ProgressPrimitive.Root> {
10
+ indicatorColor?: string
11
+ }
12
+
13
+ function Progress({
14
+ className,
15
+ value,
16
+ indicatorColor,
17
+ ...props
18
+ }: ProgressProps) {
19
+ return (
20
+ <ProgressPrimitive.Root
21
+ data-slot="progress"
22
+ className={cn(
23
+ "bg-primary/20 relative h-2 w-full overflow-hidden rounded-full",
24
+ className
25
+ )}
26
+ {...props}
27
+ >
28
+ <ProgressPrimitive.Indicator
29
+ data-slot="progress-indicator"
30
+ className={cn(
31
+ "bg-primary h-full w-full flex-1 transition-all rounded-full",
32
+ indicatorColor
33
+ )}
34
+ style={{ transform: `translateX(-${100 - (value || 0)}%)` }}
35
+ />
36
+ </ProgressPrimitive.Root>
37
+ )
38
+ }
39
+
40
+ export { Progress }
@@ -1,101 +1,101 @@
1
- 'use client';
2
-
3
- "use client"
4
-
5
- import * as React from "react"
6
- import { cva, type VariantProps } from "class-variance-authority"
7
- import { IconCircleCheck, IconCircleX, IconAlertCircle, IconInfoCircle, IconCircle, IconX } from "@tabler/icons-react"
8
- import { toast } from "sonner"
9
- import { cn } from "../../../infra/utils/clsx"
10
- import { Button } from "../buttons/Button"
11
-
12
- const toastVariants = cva(
13
- "w-full bg-white rounded-lg p-4 shadow-lg backdrop-blur-sm transition-all",
14
- {
15
- variants: {
16
- variant: {
17
- success: "",
18
- error: "",
19
- warning: "",
20
- info: "",
21
- default: "",
22
- },
23
- },
24
- defaultVariants: {
25
- variant: "default",
26
- },
27
- }
28
- )
29
-
30
- const toastIconContainerVariants = cva(
31
- "size-10 rounded-lg flex items-center justify-center shrink-0",
32
- {
33
- variants: {
34
- variant: {
35
- success: "bg-green-50 text-green-500",
36
- error: "bg-red-50 text-red-500",
37
- warning: "bg-yellow-50 text-yellow-400",
38
- info: "bg-pages-50 text-pages-500",
39
- default: "bg-gray-50 text-gray-950",
40
- },
41
- },
42
- defaultVariants: {
43
- variant: "default",
44
- },
45
- }
46
- )
47
-
48
- const TOAST_ICONS = {
49
- success: IconCircleCheck,
50
- error: IconCircleX,
51
- warning: IconAlertCircle,
52
- info: IconInfoCircle,
53
- default: IconCircle,
54
- } as const
55
-
56
- interface ToastProps extends VariantProps<typeof toastIconContainerVariants> {
57
- message?: React.ReactNode
58
- icon?: React.ReactNode
59
- children?: React.ReactNode
60
- className?: string
61
- toastId?: string | number
62
- }
63
-
64
- function Toast({
65
- variant = "default",
66
- message,
67
- icon,
68
- children,
69
- className,
70
- toastId,
71
- }: ToastProps) {
72
- const Icon = variant ? TOAST_ICONS[variant] : null
73
-
74
- return (
75
- <div data-slot="toast" className={cn(toastVariants({ variant }), className, "md:min-w-[310px] lg:min-w-[310px]")}>
76
- {children ? (
77
- children
78
- ) : (
79
- <div className="flex items-center gap-3 flex-1 min-w-0">
80
- <div className={cn(toastIconContainerVariants({ variant }))}>
81
- {icon || (Icon && <Icon size={16} />)}
82
- </div>
83
-
84
- <span className="w-full text-gray-600 paragraph-small-medium">
85
- {message}
86
- </span>
87
- <Button
88
- variant={"ghost"}
89
- className="size-8 rounded-full"
90
- onClick={() => toastId && toast.dismiss(toastId)}
91
- >
92
- <IconX size={18} />
93
- </Button>
94
- </div>
95
- )}
96
- </div>
97
- )
98
- }
99
-
100
- export { Toast, toastVariants, toastIconContainerVariants }
101
- export type { ToastProps }
1
+ 'use client';
2
+
3
+ "use client"
4
+
5
+ import * as React from "react"
6
+ import { cva, type VariantProps } from "class-variance-authority"
7
+ import { IconCircleCheck, IconCircleX, IconAlertCircle, IconInfoCircle, IconCircle, IconX } from "@tabler/icons-react"
8
+ import { toast } from "sonner"
9
+ import { cn } from "../../../infra/utils/clsx"
10
+ import { Button } from "../buttons/Button"
11
+
12
+ const toastVariants = cva(
13
+ "w-full bg-white rounded-lg p-4 shadow-lg backdrop-blur-sm transition-all",
14
+ {
15
+ variants: {
16
+ variant: {
17
+ success: "",
18
+ error: "",
19
+ warning: "",
20
+ info: "",
21
+ default: "",
22
+ },
23
+ },
24
+ defaultVariants: {
25
+ variant: "default",
26
+ },
27
+ }
28
+ )
29
+
30
+ const toastIconContainerVariants = cva(
31
+ "size-10 rounded-lg flex items-center justify-center shrink-0",
32
+ {
33
+ variants: {
34
+ variant: {
35
+ success: "bg-green-50 text-green-500",
36
+ error: "bg-red-50 text-red-500",
37
+ warning: "bg-yellow-50 text-yellow-400",
38
+ info: "bg-pages-50 text-pages-500",
39
+ default: "bg-gray-50 text-gray-950",
40
+ },
41
+ },
42
+ defaultVariants: {
43
+ variant: "default",
44
+ },
45
+ }
46
+ )
47
+
48
+ const TOAST_ICONS = {
49
+ success: IconCircleCheck,
50
+ error: IconCircleX,
51
+ warning: IconAlertCircle,
52
+ info: IconInfoCircle,
53
+ default: IconCircle,
54
+ } as const
55
+
56
+ interface ToastProps extends VariantProps<typeof toastIconContainerVariants> {
57
+ message?: React.ReactNode
58
+ icon?: React.ReactNode
59
+ children?: React.ReactNode
60
+ className?: string
61
+ toastId?: string | number
62
+ }
63
+
64
+ function Toast({
65
+ variant = "default",
66
+ message,
67
+ icon,
68
+ children,
69
+ className,
70
+ toastId,
71
+ }: ToastProps) {
72
+ const Icon = variant ? TOAST_ICONS[variant] : null
73
+
74
+ return (
75
+ <div data-slot="toast" className={cn(toastVariants({ variant }), className, "md:min-w-[310px] lg:min-w-[310px]")}>
76
+ {children ? (
77
+ children
78
+ ) : (
79
+ <div className="flex items-center gap-3 flex-1 min-w-0">
80
+ <div className={cn(toastIconContainerVariants({ variant }))}>
81
+ {icon || (Icon && <Icon size={16} />)}
82
+ </div>
83
+
84
+ <span className="w-full text-gray-600 paragraph-small-medium">
85
+ {message}
86
+ </span>
87
+ <Button
88
+ variant={"ghost"}
89
+ className="size-8 rounded-full"
90
+ onClick={() => toastId && toast.dismiss(toastId)}
91
+ >
92
+ <IconX size={18} />
93
+ </Button>
94
+ </div>
95
+ )}
96
+ </div>
97
+ )
98
+ }
99
+
100
+ export { Toast, toastVariants, toastIconContainerVariants }
101
+ export type { ToastProps }