@greatapps/common 1.1.217 → 1.1.219

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 (254) hide show
  1. package/dist/components/account/ConfigurationsMyAccountModal.mjs +5 -5
  2. package/dist/components/account/ConfigurationsMyAccountModal.mjs.map +1 -1
  3. package/dist/components/account/ConfirmDeleteAccountModal.mjs +2 -2
  4. package/dist/components/account/ConfirmDeleteAccountModal.mjs.map +1 -1
  5. package/dist/components/account/ConfirmGlobalPreferencesModal.mjs +2 -2
  6. package/dist/components/account/ConfirmGlobalPreferencesModal.mjs.map +1 -1
  7. package/dist/components/account/DeleteAccountModal.mjs +3 -3
  8. package/dist/components/account/DeleteAccountModal.mjs.map +1 -1
  9. package/dist/components/account/DisableTwoFactorAuthModal.mjs +2 -2
  10. package/dist/components/account/DisableTwoFactorAuthModal.mjs.map +1 -1
  11. package/dist/components/account/IsntPossibleDeleteAccountModal.mjs +2 -2
  12. package/dist/components/account/IsntPossibleDeleteAccountModal.mjs.map +1 -1
  13. package/dist/components/account/TwoFactorAuthModal.mjs +6 -6
  14. package/dist/components/account/TwoFactorAuthModal.mjs.map +1 -1
  15. package/dist/components/account/hooks/useChangePhoneForm.mjs.map +1 -1
  16. package/dist/components/account/hooks/useTwoFactorAuthForm.mjs.map +1 -1
  17. package/dist/components/account/sections/ChangeEmailModal.mjs +6 -6
  18. package/dist/components/account/sections/ChangeEmailModal.mjs.map +1 -1
  19. package/dist/components/account/sections/ChangePasswordSection.mjs +4 -4
  20. package/dist/components/account/sections/ChangePasswordSection.mjs.map +1 -1
  21. package/dist/components/account/sections/ChangePhoneModal.mjs +5 -5
  22. package/dist/components/account/sections/ChangePhoneModal.mjs.map +1 -1
  23. package/dist/components/account/sections/MyProfileSection.mjs +3 -3
  24. package/dist/components/account/sections/MyProfileSection.mjs.map +1 -1
  25. package/dist/components/account/sections/PreferencesSection.mjs +6 -6
  26. package/dist/components/account/sections/PreferencesSection.mjs.map +1 -1
  27. package/dist/components/account/sections/SecuritySection.mjs +3 -3
  28. package/dist/components/account/sections/SecuritySection.mjs.map +1 -1
  29. package/dist/components/embeds/CrispEmbed.mjs.map +1 -1
  30. package/dist/components/embeds/FrillEmbed.mjs.map +1 -1
  31. package/dist/components/layouts/AppMobileNavBar.mjs.map +1 -1
  32. package/dist/components/layouts/AppNavBar.mjs.map +1 -1
  33. package/dist/components/layouts/MdSideBarNavigation.mjs +2 -2
  34. package/dist/components/layouts/MdSideBarNavigation.mjs.map +1 -1
  35. package/dist/components/layouts/NavBar.mjs +2 -2
  36. package/dist/components/layouts/NavBar.mjs.map +1 -1
  37. package/dist/components/layouts/NotificationsPopover.mjs +4 -4
  38. package/dist/components/layouts/NotificationsPopover.mjs.map +1 -1
  39. package/dist/components/layouts/ProfilePopover.mjs +2 -2
  40. package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
  41. package/dist/components/layouts/UsersSelectorPopover.mjs +5 -5
  42. package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
  43. package/dist/components/navigation/CancelledSubscriptionBanner.mjs.map +1 -1
  44. package/dist/components/navigation/NavItemsContext.mjs.map +1 -1
  45. package/dist/components/navigation/ProjectSelectorPopover.mjs +6 -6
  46. package/dist/components/navigation/ProjectSelectorPopover.mjs.map +1 -1
  47. package/dist/components/navigation/shells/TabsMobileShell.mjs.map +1 -1
  48. package/dist/components/navigation/subcomponents/ProjectSelector.mjs +5 -5
  49. package/dist/components/navigation/subcomponents/ProjectSelector.mjs.map +1 -1
  50. package/dist/components/pages/notifications/Notifications.mjs +5 -5
  51. package/dist/components/pages/notifications/Notifications.mjs.map +1 -1
  52. package/dist/components/ui/buttons/Button.mjs.map +1 -1
  53. package/dist/components/ui/buttons/CancelButton.mjs.map +1 -1
  54. package/dist/components/ui/buttons/CopyButton.mjs +2 -2
  55. package/dist/components/ui/buttons/CopyButton.mjs.map +1 -1
  56. package/dist/components/ui/data-display/Accordion.mjs +2 -2
  57. package/dist/components/ui/data-display/Accordion.mjs.map +1 -1
  58. package/dist/components/ui/data-display/Badge.mjs.map +1 -1
  59. package/dist/components/ui/data-display/Card.mjs.map +1 -1
  60. package/dist/components/ui/data-display/Pagination.mjs +7 -7
  61. package/dist/components/ui/data-display/Pagination.mjs.map +1 -1
  62. package/dist/components/ui/data-display/ScrollArea.mjs.map +1 -1
  63. package/dist/components/ui/data-display/Separator.mjs.map +1 -1
  64. package/dist/components/ui/data-display/Table.mjs.map +1 -1
  65. package/dist/components/ui/data-display/Tabs.mjs.map +1 -1
  66. package/dist/components/ui/feedback/CircularProgress.mjs.map +1 -1
  67. package/dist/components/ui/feedback/DefaultCircularProgress.mjs.map +1 -1
  68. package/dist/components/ui/feedback/LoadingOverlay.mjs.map +1 -1
  69. package/dist/components/ui/feedback/Progress.mjs.map +1 -1
  70. package/dist/components/ui/feedback/Toast.mjs +7 -7
  71. package/dist/components/ui/feedback/Toast.mjs.map +1 -1
  72. package/dist/components/ui/form/Calendar.mjs +7 -7
  73. package/dist/components/ui/form/Calendar.mjs.map +1 -1
  74. package/dist/components/ui/form/Checkbox.mjs +2 -2
  75. package/dist/components/ui/form/Checkbox.mjs.map +1 -1
  76. package/dist/components/ui/form/ComboboxField.mjs +4 -4
  77. package/dist/components/ui/form/ComboboxField.mjs.map +1 -1
  78. package/dist/components/ui/form/DatePicker.mjs.map +1 -1
  79. package/dist/components/ui/form/DateRangePicker.mjs +2 -2
  80. package/dist/components/ui/form/DateRangePicker.mjs.map +1 -1
  81. package/dist/components/ui/form/FormField.mjs +3 -3
  82. package/dist/components/ui/form/FormField.mjs.map +1 -1
  83. package/dist/components/ui/form/Input.mjs.map +1 -1
  84. package/dist/components/ui/form/InputOtp.mjs +2 -2
  85. package/dist/components/ui/form/InputOtp.mjs.map +1 -1
  86. package/dist/components/ui/form/PhoneInput.mjs.map +1 -1
  87. package/dist/components/ui/form/RadioGroup.mjs +2 -2
  88. package/dist/components/ui/form/RadioGroup.mjs.map +1 -1
  89. package/dist/components/ui/form/Select.mjs +6 -6
  90. package/dist/components/ui/form/Select.mjs.map +1 -1
  91. package/dist/components/ui/form/Switch.mjs.map +1 -1
  92. package/dist/components/ui/form/SwitchOptionFieldWithIcon.mjs.map +1 -1
  93. package/dist/components/ui/form/Textarea.mjs.map +1 -1
  94. package/dist/components/ui/overlay/Command.mjs +2 -2
  95. package/dist/components/ui/overlay/Command.mjs.map +1 -1
  96. package/dist/components/ui/overlay/Dialog.mjs +2 -2
  97. package/dist/components/ui/overlay/Dialog.mjs.map +1 -1
  98. package/dist/components/ui/overlay/Popover.mjs.map +1 -1
  99. package/dist/components/ui/overlay/Sheet.mjs +2 -2
  100. package/dist/components/ui/overlay/Sheet.mjs.map +1 -1
  101. package/dist/components/ui/overlay/Tooltip.mjs.map +1 -1
  102. package/dist/components/widgets/notifications/NotificationCard.mjs +2 -2
  103. package/dist/components/widgets/notifications/NotificationCard.mjs.map +1 -1
  104. package/dist/hooks/copy-to-clipboard.hook.mjs.map +1 -1
  105. package/dist/index.mjs.map +1 -1
  106. package/dist/middleware.mjs.map +1 -1
  107. package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
  108. package/dist/modules/accounts/actions/find-current-account.action.mjs.map +1 -1
  109. package/dist/modules/accounts/actions/list-currencies.action.mjs.map +1 -1
  110. package/dist/modules/accounts/actions/list-timezones.action.mjs.map +1 -1
  111. package/dist/modules/accounts/hooks/current-account.hook.mjs.map +1 -1
  112. package/dist/modules/accounts/hooks/useAccountManagement.mjs.map +1 -1
  113. package/dist/modules/accounts/hooks/useCurrencies.mjs.map +1 -1
  114. package/dist/modules/accounts/hooks/useTimezones.mjs.map +1 -1
  115. package/dist/modules/accounts/services/account.service.mjs.map +1 -1
  116. package/dist/modules/auth/hooks/login.hook.mjs.map +1 -1
  117. package/dist/modules/auth/hooks/logout.hook.mjs.map +1 -1
  118. package/dist/modules/auth/hooks/register.hook.mjs.map +1 -1
  119. package/dist/modules/ia-credits/actions/list-ia-credits.action.mjs.map +1 -1
  120. package/dist/modules/projects/actions/add-project-user.action.mjs.map +1 -1
  121. package/dist/modules/projects/actions/list-all-account-users.action.mjs.map +1 -1
  122. package/dist/modules/projects/actions/list-available-users.action.mjs.map +1 -1
  123. package/dist/modules/projects/actions/list-project-users.action.mjs.map +1 -1
  124. package/dist/modules/projects/actions/remove-project-user.action.mjs.map +1 -1
  125. package/dist/modules/projects/hooks/add-project-user.hook.mjs.map +1 -1
  126. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
  127. package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
  128. package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
  129. package/dist/modules/projects/hooks/remove-project-user.hook.mjs.map +1 -1
  130. package/dist/modules/subscriptions/actions/list-subscriptions.action.mjs.map +1 -1
  131. package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs.map +1 -1
  132. package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs.map +1 -1
  133. package/dist/modules/users/action/find-user-by-id.action.mjs.map +1 -1
  134. package/dist/modules/users/action/list-messages.action.mjs.map +1 -1
  135. package/dist/modules/users/action/mark-all-messages-as-read.action.mjs.map +1 -1
  136. package/dist/modules/users/action/mark-message-as-read.action.mjs.map +1 -1
  137. package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
  138. package/dist/modules/whitelabel/actions/find-whitelabel-styles.action.mjs.map +1 -1
  139. package/dist/modules/whitelabel/actions/find-whitelabel.action.mjs.map +1 -1
  140. package/dist/modules/whitelabel/services/whitelabel-styles.service.mjs.map +1 -1
  141. package/dist/providers/whitelabel.provider.mjs.map +1 -1
  142. package/dist/utils/countries.mjs.map +1 -1
  143. package/dist/utils/safeServerAction.mjs.map +1 -1
  144. package/dist/utils/withAction.mjs.map +1 -1
  145. package/package.json +89 -90
  146. package/src/components/account/ConfigurationsMyAccountModal.tsx +5 -5
  147. package/src/components/account/ConfirmDeleteAccountModal.tsx +55 -55
  148. package/src/components/account/ConfirmGlobalPreferencesModal.tsx +2 -2
  149. package/src/components/account/DeleteAccountModal.tsx +130 -130
  150. package/src/components/account/DisableTwoFactorAuthModal.tsx +2 -2
  151. package/src/components/account/IsntPossibleDeleteAccountModal.tsx +49 -49
  152. package/src/components/account/TwoFactorAuthModal.tsx +6 -6
  153. package/src/components/account/hooks/useChangePhoneForm.tsx +81 -81
  154. package/src/components/account/hooks/useTwoFactorAuthForm.tsx +101 -101
  155. package/src/components/account/sections/ChangeEmailModal.tsx +6 -6
  156. package/src/components/account/sections/ChangePasswordSection.tsx +4 -4
  157. package/src/components/account/sections/ChangePhoneModal.tsx +231 -231
  158. package/src/components/account/sections/MyProfileSection.tsx +3 -3
  159. package/src/components/account/sections/PreferencesSection.tsx +6 -6
  160. package/src/components/account/sections/SecuritySection.tsx +3 -3
  161. package/src/components/embeds/CrispEmbed.tsx +101 -101
  162. package/src/components/embeds/FrillEmbed.tsx +119 -119
  163. package/src/components/layouts/AppMobileNavBar.tsx +111 -111
  164. package/src/components/layouts/AppNavBar.tsx +57 -57
  165. package/src/components/layouts/MdSideBarNavigation.tsx +4 -4
  166. package/src/components/layouts/NavBar.tsx +120 -120
  167. package/src/components/layouts/NotificationsPopover.tsx +4 -4
  168. package/src/components/layouts/ProfilePopover.tsx +2 -2
  169. package/src/components/layouts/UsersSelectorPopover.tsx +238 -238
  170. package/src/components/navigation/CancelledSubscriptionBanner.tsx +69 -69
  171. package/src/components/navigation/NavItemsContext.ts +20 -20
  172. package/src/components/navigation/ProjectSelectorPopover.tsx +6 -6
  173. package/src/components/navigation/shells/TabsMobileShell.tsx +72 -72
  174. package/src/components/navigation/subcomponents/ProjectSelector.tsx +5 -5
  175. package/src/components/pages/notifications/Notifications.tsx +160 -160
  176. package/src/components/ui/buttons/Button.tsx +57 -57
  177. package/src/components/ui/buttons/CancelButton.tsx +14 -14
  178. package/src/components/ui/buttons/CopyButton.tsx +54 -54
  179. package/src/components/ui/data-display/Accordion.tsx +81 -81
  180. package/src/components/ui/data-display/Badge.tsx +47 -47
  181. package/src/components/ui/data-display/Card.tsx +93 -93
  182. package/src/components/ui/data-display/Pagination.tsx +126 -126
  183. package/src/components/ui/data-display/ScrollArea.tsx +59 -59
  184. package/src/components/ui/data-display/Separator.tsx +29 -29
  185. package/src/components/ui/data-display/Table.tsx +117 -117
  186. package/src/components/ui/data-display/Tabs.tsx +67 -67
  187. package/src/components/ui/feedback/CircularProgress.tsx +75 -75
  188. package/src/components/ui/feedback/DefaultCircularProgress.tsx +61 -61
  189. package/src/components/ui/feedback/LoadingOverlay.tsx +31 -31
  190. package/src/components/ui/feedback/Progress.tsx +40 -40
  191. package/src/components/ui/feedback/Toast.tsx +101 -101
  192. package/src/components/ui/form/Calendar.tsx +228 -228
  193. package/src/components/ui/form/Checkbox.tsx +31 -31
  194. package/src/components/ui/form/ComboboxField.tsx +4 -4
  195. package/src/components/ui/form/DatePicker.tsx +97 -97
  196. package/src/components/ui/form/DateRangePicker.tsx +108 -108
  197. package/src/components/ui/form/FormField.tsx +6 -5
  198. package/src/components/ui/form/Input.tsx +20 -20
  199. package/src/components/ui/form/InputOtp.tsx +80 -80
  200. package/src/components/ui/form/PhoneInput.tsx +205 -205
  201. package/src/components/ui/form/RadioGroup.tsx +45 -45
  202. package/src/components/ui/form/Select.tsx +200 -200
  203. package/src/components/ui/form/Switch.tsx +32 -32
  204. package/src/components/ui/form/SwitchOptionFieldWithIcon.tsx +2 -2
  205. package/src/components/ui/form/Textarea.tsx +19 -19
  206. package/src/components/ui/overlay/Command.tsx +185 -185
  207. package/src/components/ui/overlay/Dialog.tsx +151 -151
  208. package/src/components/ui/overlay/Popover.tsx +49 -49
  209. package/src/components/ui/overlay/Sheet.tsx +166 -166
  210. package/src/components/ui/overlay/Tooltip.tsx +62 -62
  211. package/src/components/widgets/notifications/NotificationCard.tsx +68 -68
  212. package/src/hooks/copy-to-clipboard.hook.tsx +67 -67
  213. package/src/index.ts +355 -355
  214. package/src/middleware.ts +4 -4
  215. package/src/modules/accounts/actions/account-management.action.ts +90 -90
  216. package/src/modules/accounts/actions/find-current-account.action.ts +9 -9
  217. package/src/modules/accounts/actions/list-currencies.action.ts +8 -8
  218. package/src/modules/accounts/actions/list-timezones.action.ts +8 -8
  219. package/src/modules/accounts/hooks/current-account.hook.tsx +22 -22
  220. package/src/modules/accounts/hooks/useAccountManagement.ts +85 -85
  221. package/src/modules/accounts/hooks/useCurrencies.ts +15 -15
  222. package/src/modules/accounts/hooks/useTimezones.ts +15 -15
  223. package/src/modules/accounts/services/account.service.ts +236 -236
  224. package/src/modules/accounts/types.ts +214 -214
  225. package/src/modules/auth/hooks/login.hook.tsx +13 -13
  226. package/src/modules/auth/hooks/logout.hook.tsx +11 -11
  227. package/src/modules/auth/hooks/register.hook.tsx +11 -11
  228. package/src/modules/ia-credits/actions/list-ia-credits.action.ts +8 -8
  229. package/src/modules/projects/actions/add-project-user.action.ts +9 -9
  230. package/src/modules/projects/actions/list-all-account-users.action.ts +9 -9
  231. package/src/modules/projects/actions/list-available-users.action.ts +9 -9
  232. package/src/modules/projects/actions/list-project-users.action.ts +9 -9
  233. package/src/modules/projects/actions/remove-project-user.action.ts +9 -9
  234. package/src/modules/projects/hooks/add-project-user.hook.ts +69 -69
  235. package/src/modules/projects/hooks/list-all-account-users.hook.ts +34 -34
  236. package/src/modules/projects/hooks/list-available-users.hook.ts +33 -33
  237. package/src/modules/projects/hooks/list-project-users.hook.ts +33 -33
  238. package/src/modules/projects/hooks/remove-project-user.hook.ts +69 -69
  239. package/src/modules/subscriptions/actions/list-subscriptions.action.ts +9 -9
  240. package/src/modules/subscriptions/hooks/find-active-subscription.hook.ts +19 -19
  241. package/src/modules/subscriptions/hooks/list-subscriptions.hook.ts +17 -17
  242. package/src/modules/users/action/find-user-by-id.action.ts +8 -8
  243. package/src/modules/users/action/list-messages.action.ts +12 -12
  244. package/src/modules/users/action/mark-all-messages-as-read.action.ts +8 -8
  245. package/src/modules/users/action/mark-message-as-read.action.ts +8 -8
  246. package/src/modules/users/hooks/messages.hook.ts +60 -60
  247. package/src/modules/whitelabel/actions/find-whitelabel-styles.action.ts +14 -14
  248. package/src/modules/whitelabel/actions/find-whitelabel.action.ts +23 -23
  249. package/src/modules/whitelabel/services/whitelabel-styles.service.ts +98 -98
  250. package/src/modules/whitelabel/styles-schema.ts +37 -37
  251. package/src/providers/whitelabel.provider.tsx +46 -46
  252. package/src/utils/countries.ts +224 -224
  253. package/src/utils/safeServerAction.ts +21 -21
  254. package/src/utils/withAction.ts +13 -13
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/safeServerAction.ts"],"sourcesContent":["import { isRedirectError } from 'next/dist/client/components/redirect-error';\nimport { ApiError } from '../infra/api/types';\nimport type { ActionResult } from '../infra/api/types';\n\nexport async function safeServerAction<T>(\n fn: () => Promise<T>\n): Promise<ActionResult<T>> {\n try {\n const data = await fn();\n return { success: true, data };\n } catch (error) {\n if (isRedirectError(error)) throw error;\n const message =\n error instanceof ApiError\n ? error.message\n : error instanceof Error\n ? error.message\n : 'Erro desconhecido';\n return { success: false, error: message };\n }\n}\n"],"mappings":"AAAA,SAAS,uBAAuB;AAChC,SAAS,gBAAgB;AAGzB,eAAsB,iBACpB,IAC0B;AAC1B,MAAI;AACF,UAAM,OAAO,MAAM,GAAG;AACtB,WAAO,EAAE,SAAS,MAAM,KAAK;AAAA,EAC/B,SAAS,OAAO;AACd,QAAI,gBAAgB,KAAK,EAAG,OAAM;AAClC,UAAM,UACJ,iBAAiB,WACb,MAAM,UACN,iBAAiB,QACf,MAAM,UACN;AACR,WAAO,EAAE,SAAS,OAAO,OAAO,QAAQ;AAAA,EAC1C;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/safeServerAction.ts"],"sourcesContent":["import { isRedirectError } from 'next/dist/client/components/redirect-error';\r\nimport { ApiError } from '../infra/api/types';\r\nimport type { ActionResult } from '../infra/api/types';\r\n\r\nexport async function safeServerAction<T>(\r\n fn: () => Promise<T>\r\n): Promise<ActionResult<T>> {\r\n try {\r\n const data = await fn();\r\n return { success: true, data };\r\n } catch (error) {\r\n if (isRedirectError(error)) throw error;\r\n const message =\r\n error instanceof ApiError\r\n ? error.message\r\n : error instanceof Error\r\n ? error.message\r\n : 'Erro desconhecido';\r\n return { success: false, error: message };\r\n }\r\n}\r\n"],"mappings":"AAAA,SAAS,uBAAuB;AAChC,SAAS,gBAAgB;AAGzB,eAAsB,iBACpB,IAC0B;AAC1B,MAAI;AACF,UAAM,OAAO,MAAM,GAAG;AACtB,WAAO,EAAE,SAAS,MAAM,KAAK;AAAA,EAC/B,SAAS,OAAO;AACd,QAAI,gBAAgB,KAAK,EAAG,OAAM;AAClC,UAAM,UACJ,iBAAiB,WACb,MAAM,UACN,iBAAiB,QACf,MAAM,UACN;AACR,WAAO,EAAE,SAAS,OAAO,OAAO,QAAQ;AAAA,EAC1C;AACF;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/withAction.ts"],"sourcesContent":["import type { ActionResult } from '../infra/api/types';\n\nexport function withAction<TArgs extends any[], TData>(\n action: (...args: TArgs) => Promise<ActionResult<TData>>\n): (...args: TArgs) => Promise<TData> {\n return async (...args) => {\n const result = await action(...args);\n if (!result.success) {\n throw new Error(result.error ?? 'Erro desconhecido');\n }\n return result.data as TData;\n };\n}\n"],"mappings":"AAEO,SAAS,WACd,QACoC;AACpC,SAAO,UAAU,SAAS;AACxB,UAAM,SAAS,MAAM,OAAO,GAAG,IAAI;AACnC,QAAI,CAAC,OAAO,SAAS;AACnB,YAAM,IAAI,MAAM,OAAO,SAAS,mBAAmB;AAAA,IACrD;AACA,WAAO,OAAO;AAAA,EAChB;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/withAction.ts"],"sourcesContent":["import type { ActionResult } from '../infra/api/types';\r\n\r\nexport function withAction<TArgs extends any[], TData>(\r\n action: (...args: TArgs) => Promise<ActionResult<TData>>\r\n): (...args: TArgs) => Promise<TData> {\r\n return async (...args) => {\r\n const result = await action(...args);\r\n if (!result.success) {\r\n throw new Error(result.error ?? 'Erro desconhecido');\r\n }\r\n return result.data as TData;\r\n };\r\n}\r\n"],"mappings":"AAEO,SAAS,WACd,QACoC;AACpC,SAAO,UAAU,SAAS;AACxB,UAAM,SAAS,MAAM,OAAO,GAAG,IAAI;AACnC,QAAI,CAAC,OAAO,SAAS;AACnB,YAAM,IAAI,MAAM,OAAO,SAAS,mBAAmB;AAAA,IACrD;AACA,WAAO,OAAO;AAAA,EAChB;AACF;","names":[]}
package/package.json CHANGED
@@ -1,90 +1,89 @@
1
- {
2
- "name": "@greatapps/common",
3
- "version": "1.1.217",
4
- "description": "Shared library for GreatApps frontend applications",
5
- "main": "./dist/index.mjs",
6
- "types": "./src/index.ts",
7
- "exports": {
8
- ".": {
9
- "import": "./dist/index.mjs",
10
- "types": "./src/index.ts"
11
- },
12
- "./server": {
13
- "import": "./dist/server.mjs",
14
- "types": "./src/server.ts"
15
- },
16
- "./middleware": {
17
- "import": "./dist/middleware.mjs",
18
- "types": "./src/middleware.ts"
19
- }
20
- },
21
- "files": [
22
- "dist",
23
- "src"
24
- ],
25
- "scripts": {
26
- "build": "tsup",
27
- "dev": "tsup --watch",
28
- "typecheck": "tsc --noEmit"
29
- },
30
- "keywords": [],
31
- "author": "",
32
- "license": "ISC",
33
- "dependencies": {
34
- "@greatapps/cache": "^2.0.1",
35
- "@radix-ui/react-accordion": "^1.2.12",
36
- "@radix-ui/react-checkbox": "^1.3.3",
37
- "@radix-ui/react-popover": "^1.1.15",
38
- "@radix-ui/react-progress": "^1.1.8",
39
- "@radix-ui/react-radio-group": "^1.3.8",
40
- "@radix-ui/react-scroll-area": "^1.2.10",
41
- "@radix-ui/react-select": "^2.2.6",
42
- "@radix-ui/react-separator": "^1.1.8",
43
- "@radix-ui/react-switch": "^1.2.6",
44
- "@radix-ui/react-tabs": "^1.1.13",
45
- "@radix-ui/react-tooltip": "^1.2.8",
46
- "@tabler/icons-react": "^3.40.0",
47
- "@tanstack/query-broadcast-client-experimental": "^5.95.2",
48
- "@tanstack/react-query-persist-client": "^5.95.2",
49
- "axios": "^1.13.6",
50
- "class-variance-authority": "^0.7.1",
51
- "clsx": "^2.1.1",
52
- "cmdk": "^1.1.1",
53
- "date-fns": "^4.1.0",
54
- "idb-keyval": "^6.2.2",
55
- "input-otp": "^1.4.2",
56
- "libphonenumber-js": "^1.12.40",
57
- "lucide-react": "^0.575.0",
58
- "react-day-picker": "^9.14.0",
59
- "server-only": "^0.0.1",
60
- "sonner": ">=2.0.0",
61
- "tailwind-merge": "^3.5.0",
62
- "zod": "^4.3.6"
63
- },
64
- "devDependencies": {
65
- "@hookform/resolvers": "^5.2.2",
66
- "@tanstack/react-query": "^5.95.2",
67
- "@tanstack/react-query-devtools": "^5.95.2",
68
- "@types/node": "^25.5.0",
69
- "@types/react": "^19.2.14",
70
- "@types/react-dom": "^19.2.3",
71
- "glob": "^13.0.6",
72
- "next": "16.2.1",
73
- "react": "19.1.4",
74
- "react-dom": "19.1.4",
75
- "react-hook-form": "^7.72.0",
76
- "tsup": "^8.5.1",
77
- "typescript": "^5.9.3",
78
- "zustand": "^5.0.12"
79
- },
80
- "peerDependencies": {
81
- "@hookform/resolvers": ">=3.0.0",
82
- "@tanstack/react-query": ">=5.0.0",
83
- "next": ">=16.0.0",
84
- "react": ">=19.0.0",
85
- "react-dom": ">=19.0.0",
86
- "react-hook-form": ">=7.0.0",
87
- "sonner": ">=2.0.0",
88
- "zustand": ">=4.0.0"
89
- }
90
- }
1
+ {
2
+ "name": "@greatapps/common",
3
+ "version": "1.1.219",
4
+ "description": "Shared library for GreatApps frontend applications",
5
+ "main": "./dist/index.mjs",
6
+ "types": "./src/index.ts",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/index.mjs",
10
+ "types": "./src/index.ts"
11
+ },
12
+ "./server": {
13
+ "import": "./dist/server.mjs",
14
+ "types": "./src/server.ts"
15
+ },
16
+ "./middleware": {
17
+ "import": "./dist/middleware.mjs",
18
+ "types": "./src/middleware.ts"
19
+ }
20
+ },
21
+ "files": [
22
+ "dist",
23
+ "src"
24
+ ],
25
+ "scripts": {
26
+ "build": "tsup",
27
+ "dev": "tsup --watch",
28
+ "typecheck": "tsc --noEmit"
29
+ },
30
+ "keywords": [],
31
+ "author": "",
32
+ "license": "ISC",
33
+ "dependencies": {
34
+ "@greatapps/cache": "^2.0.1",
35
+ "@radix-ui/react-accordion": "^1.2.12",
36
+ "@radix-ui/react-checkbox": "^1.3.3",
37
+ "@radix-ui/react-popover": "^1.1.15",
38
+ "@radix-ui/react-progress": "^1.1.8",
39
+ "@radix-ui/react-radio-group": "^1.3.8",
40
+ "@radix-ui/react-scroll-area": "^1.2.10",
41
+ "@radix-ui/react-select": "^2.2.6",
42
+ "@radix-ui/react-separator": "^1.1.8",
43
+ "@radix-ui/react-switch": "^1.2.6",
44
+ "@radix-ui/react-tabs": "^1.1.13",
45
+ "@radix-ui/react-tooltip": "^1.2.8",
46
+ "@tabler/icons-react": "^3.40.0",
47
+ "@tanstack/query-broadcast-client-experimental": "^5.95.2",
48
+ "@tanstack/react-query-persist-client": "^5.95.2",
49
+ "axios": "^1.13.6",
50
+ "class-variance-authority": "^0.7.1",
51
+ "clsx": "^2.1.1",
52
+ "cmdk": "^1.1.1",
53
+ "date-fns": "^4.1.0",
54
+ "idb-keyval": "^6.2.2",
55
+ "input-otp": "^1.4.2",
56
+ "libphonenumber-js": "^1.12.40",
57
+ "react-day-picker": "^9.14.0",
58
+ "server-only": "^0.0.1",
59
+ "sonner": ">=2.0.0",
60
+ "tailwind-merge": "^3.5.0",
61
+ "zod": "^4.3.6"
62
+ },
63
+ "devDependencies": {
64
+ "@hookform/resolvers": "^5.2.2",
65
+ "@tanstack/react-query": "^5.95.2",
66
+ "@tanstack/react-query-devtools": "^5.95.2",
67
+ "@types/node": "^25.5.0",
68
+ "@types/react": "^19.2.14",
69
+ "@types/react-dom": "^19.2.3",
70
+ "glob": "^13.0.6",
71
+ "next": "16.2.1",
72
+ "react": "19.1.4",
73
+ "react-dom": "19.1.4",
74
+ "react-hook-form": "^7.72.0",
75
+ "tsup": "^8.5.1",
76
+ "typescript": "^5.9.3",
77
+ "zustand": "^5.0.12"
78
+ },
79
+ "peerDependencies": {
80
+ "@hookform/resolvers": ">=3.0.0",
81
+ "@tanstack/react-query": ">=5.0.0",
82
+ "next": ">=16.0.0",
83
+ "react": ">=19.0.0",
84
+ "react-dom": ">=19.0.0",
85
+ "react-hook-form": ">=7.0.0",
86
+ "sonner": ">=2.0.0",
87
+ "zustand": ">=4.0.0"
88
+ }
89
+ }
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { Lock, Settings2, User, X } from 'lucide-react';
3
+ import { IconLock, IconSettings2, IconUser, IconX } from '@tabler/icons-react';
4
4
  import { Dialog, DialogContent, DialogHeader, DialogTitle } from '../ui/overlay/Dialog';
5
5
  import { Tabs, TabsList, TabsTrigger, TabsContent } from '../ui/data-display/Tabs';
6
6
  import { Button } from '../ui/buttons/Button';
@@ -78,7 +78,7 @@ export default function ConfigurationsMyAccountModal() {
78
78
  className="size-8 flex items-center justify-center text-gray-500 cursor-pointer"
79
79
  onClick={close}
80
80
  >
81
- <X size={18} />
81
+ <IconX size={18} />
82
82
  </button>
83
83
  </div>
84
84
  <Tabs
@@ -105,17 +105,17 @@ export default function ConfigurationsMyAccountModal() {
105
105
 
106
106
  <div className="lg:flex lg:flex-col flex flex-row lg:gap-0 gap-0 lg:w-full">
107
107
  <TabsTrigger value={AccountSectionType.MY_PROFILE} className={tabTriggerClasses}>
108
- <User size={20} className="shrink-0" />
108
+ <IconUser size={20} className="shrink-0" />
109
109
  <span className="paragraph-small-medium">Meu perfil</span>
110
110
  </TabsTrigger>
111
111
 
112
112
  <TabsTrigger value={AccountSectionType.PREFERENCES} className={tabTriggerClasses}>
113
- <Settings2 size={20} className="shrink-0" />
113
+ <IconSettings2 size={20} className="shrink-0" />
114
114
  <span className="paragraph-small-medium">Preferências</span>
115
115
  </TabsTrigger>
116
116
 
117
117
  <TabsTrigger value={AccountSectionType.SECURITY} className={tabTriggerClasses}>
118
- <Lock size={20} className="shrink-0" />
118
+ <IconLock size={20} className="shrink-0" />
119
119
  <span className="paragraph-small-medium">Segurança</span>
120
120
  </TabsTrigger>
121
121
  </div>
@@ -1,55 +1,55 @@
1
- 'use client';
2
-
3
- import { TriangleAlert } from 'lucide-react';
4
- import { toast } from 'sonner';
5
- import { Dialog, DialogContent, DialogHeader, DialogTitle } from '../ui/overlay/Dialog';
6
- import { Button } from '../ui/buttons/Button';
7
- import { Toast } from '../ui/feedback/Toast';
8
- import { useAccountModals } from '../../store/useAccountModals';
9
-
10
- export default function ConfirmDeleteAccountModal() {
11
- const { activeModal, pagesCount, close } = useAccountModals();
12
- const open = activeModal === 'confirmDelete';
13
-
14
- const handleConfirm = () => {
15
- toast.custom((t) => (
16
- <Toast variant="success" message="Conta excluída com sucesso" toastId={t} />
17
- ));
18
- close();
19
- };
20
-
21
- return (
22
- <Dialog open={open} onOpenChange={close}>
23
- <DialogContent className="flex flex-col p-0 gap-0 max-w-[calc(100%-2rem)]! w-full rounded-lg border sm:max-w-[400px]! lg:max-w-[470px]! lg:top-[50%]! lg:left-[50%]! lg:right-auto! lg:bottom-auto! lg:translate-x-[-50%]! lg:translate-y-[-50%]!">
24
- <div className="flex flex-col gap-5 p-4 lg:p-5">
25
- <DialogHeader className="p-0">
26
- <DialogTitle className="paragraph-medium-semibold text-gray-950">
27
- Uma pena te ver ir!
28
- </DialogTitle>
29
- </DialogHeader>
30
-
31
- <div className="bg-red-50 p-4 lg:p-5 rounded-lg flex items-center gap-4">
32
- <TriangleAlert size={20} className="text-red-500 shrink-0" strokeWidth={2} />
33
- <p className="paragraph-small-regular text-gray-600">
34
- Todas suas{' '}
35
- <span className="font-semibold text-gray-950">{pagesCount} páginas</span>{' '}
36
- serão deletadas permanentemente. Essa ação é{' '}
37
- <span className="font-semibold text-gray-950">irreversível!</span>
38
- </p>
39
- </div>
40
- </div>
41
-
42
- <div className="h-px bg-gray-200" />
43
-
44
- <div className="flex items-center gap-2 p-4 lg:p-5">
45
- <Button className="h-10 flex-1" onClick={close}>
46
- Manter minha conta
47
- </Button>
48
- <Button variant="secondary" className="h-10! flex-1" onClick={handleConfirm}>
49
- Excluir mesmo assim
50
- </Button>
51
- </div>
52
- </DialogContent>
53
- </Dialog>
54
- );
55
- }
1
+ 'use client';
2
+
3
+ import { IconAlertTriangle } from '@tabler/icons-react';
4
+ import { toast } from 'sonner';
5
+ import { Dialog, DialogContent, DialogHeader, DialogTitle } from '../ui/overlay/Dialog';
6
+ import { Button } from '../ui/buttons/Button';
7
+ import { Toast } from '../ui/feedback/Toast';
8
+ import { useAccountModals } from '../../store/useAccountModals';
9
+
10
+ export default function ConfirmDeleteAccountModal() {
11
+ const { activeModal, pagesCount, close } = useAccountModals();
12
+ const open = activeModal === 'confirmDelete';
13
+
14
+ const handleConfirm = () => {
15
+ toast.custom((t) => (
16
+ <Toast variant="success" message="Conta excluída com sucesso" toastId={t} />
17
+ ));
18
+ close();
19
+ };
20
+
21
+ return (
22
+ <Dialog open={open} onOpenChange={close}>
23
+ <DialogContent className="flex flex-col p-0 gap-0 max-w-[calc(100%-2rem)]! w-full rounded-lg border sm:max-w-[400px]! lg:max-w-[470px]! lg:top-[50%]! lg:left-[50%]! lg:right-auto! lg:bottom-auto! lg:translate-x-[-50%]! lg:translate-y-[-50%]!">
24
+ <div className="flex flex-col gap-5 p-4 lg:p-5">
25
+ <DialogHeader className="p-0">
26
+ <DialogTitle className="paragraph-medium-semibold text-gray-950">
27
+ Uma pena te ver ir!
28
+ </DialogTitle>
29
+ </DialogHeader>
30
+
31
+ <div className="bg-red-50 p-4 lg:p-5 rounded-lg flex items-center gap-4">
32
+ <IconAlertTriangle size={20} className="text-red-500 shrink-0" strokeWidth={2} />
33
+ <p className="paragraph-small-regular text-gray-600">
34
+ Todas suas{' '}
35
+ <span className="font-semibold text-gray-950">{pagesCount} páginas</span>{' '}
36
+ serão deletadas permanentemente. Essa ação é{' '}
37
+ <span className="font-semibold text-gray-950">irreversível!</span>
38
+ </p>
39
+ </div>
40
+ </div>
41
+
42
+ <div className="h-px bg-gray-200" />
43
+
44
+ <div className="flex items-center gap-2 p-4 lg:p-5">
45
+ <Button className="h-10 flex-1" onClick={close}>
46
+ Manter minha conta
47
+ </Button>
48
+ <Button variant="secondary" className="h-10! flex-1" onClick={handleConfirm}>
49
+ Excluir mesmo assim
50
+ </Button>
51
+ </div>
52
+ </DialogContent>
53
+ </Dialog>
54
+ );
55
+ }
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { TriangleAlert } from 'lucide-react';
3
+ import { IconAlertTriangle } from '@tabler/icons-react';
4
4
  import { Button } from '../ui/buttons/Button';
5
5
  import {
6
6
  Dialog,
@@ -34,7 +34,7 @@ export default function ConfirmGlobalPreferencesModal({
34
34
 
35
35
  <div className="flex flex-col gap-3 p-5">
36
36
  <div className="flex items-center justify-center bg-gray-50 rounded-lg size-10">
37
- <TriangleAlert size={24} className="text-gray-950" />
37
+ <IconAlertTriangle size={24} className="text-gray-950" />
38
38
  </div>
39
39
  <div className="flex flex-col gap-2">
40
40
  <span className="paragraph-medium-semibold text-gray-950">
@@ -1,130 +1,130 @@
1
- 'use client';
2
-
3
- import { useState, useCallback } from 'react';
4
- import { Lock, TriangleAlert } from 'lucide-react';
5
- import { toast } from 'sonner';
6
- import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '../ui/overlay/Dialog';
7
- import { Button } from '../ui/buttons/Button';
8
- import { FormField } from '../ui/form/FormField';
9
- import { SelectField } from '../ui/form/SelectField';
10
- import { TextAreaField } from '../ui/form/TextAreaField';
11
- import { Toast } from '../ui/feedback/Toast';
12
- import usePasswordVisibility from '../../hooks/usePasswordVisibility';
13
- import { useAccountModals } from '../../store/useAccountModals';
14
- import { AccountSectionType } from '../../enums/AccountSectionType';
15
-
16
- const REASON_OPTIONS = [
17
- { value: 'sem-funcao', label: 'A ferramenta não possui uma função que eu preciso' },
18
- { value: 'problemas', label: 'Encontrei problemas técnicos ou erros no sistema' },
19
- { value: 'suporte', label: 'Tive problemas com o suporte ou atendimento' },
20
- { value: 'demora', label: 'As atualizações demoram mais do que o esperado' },
21
- { value: 'temporario', label: 'O cancelamento é temporário' },
22
- { value: 'outro', label: 'Outro motivo' },
23
- ];
24
-
25
- export default function DeleteAccountModal() {
26
- const { activeModal, pagesCount, openConfigurations, openConfirmDelete, close } = useAccountModals();
27
- const open = activeModal === 'deleteAccount';
28
-
29
- const [reason, setReason] = useState('');
30
- const [description, setDescription] = useState('');
31
- const [password, setPassword] = useState('');
32
- const { showPassword, togglePassword } = usePasswordVisibility();
33
-
34
- const isFormValid = Boolean(reason && description && password);
35
-
36
- const resetForm = useCallback(() => {
37
- setReason('');
38
- setDescription('');
39
- setPassword('');
40
- }, []);
41
-
42
- const handleClose = () => {
43
- resetForm();
44
- openConfigurations(AccountSectionType.SECURITY);
45
- };
46
-
47
- const handleDelete = (e: React.FormEvent) => {
48
- e.preventDefault();
49
- if (!isFormValid) {
50
- toast.custom((t) => (
51
- <Toast variant="error" message="Preencha todos os campos obrigatórios" toastId={t} />
52
- ));
53
- return;
54
- }
55
- resetForm();
56
- openConfirmDelete(pagesCount);
57
- };
58
-
59
- return (
60
- <Dialog open={open} onOpenChange={handleClose}>
61
- <DialogContent className="flex flex-col p-0 gap-0 max-w-full! border-0 rounded-t-2xl rounded-b-none h-[100dvh] top-0! bottom-0! left-0! right-0! translate-x-0! translate-y-0! lg:max-w-lg! lg:h-auto! lg:max-h-[90vh] lg:rounded-lg lg:border lg:top-[50%]! lg:left-[50%]! lg:right-auto! lg:bottom-auto! lg:translate-x-[-50%]! lg:translate-y-[-50%]! overflow-y-auto">
62
- <form onSubmit={handleDelete} className="flex flex-col flex-1 lg:flex-none">
63
- <div className="flex flex-col gap-6 p-4 lg:p-6 flex-1 lg:flex-none">
64
- <DialogHeader className="p-0">
65
- <div className="flex items-center justify-center w-fit bg-red-50 rounded-lg p-2.5 mb-5">
66
- <TriangleAlert size={20} className="text-red-500" />
67
- </div>
68
- <DialogTitle>Excluir conta</DialogTitle>
69
- <DialogDescription className="paragraph-small-regular">
70
- Esta ação é <span className="font-semibold text-gray-950">irreversível</span>. Ao
71
- confirmar, sua conta e todos os seus dados serão excluídos.
72
- </DialogDescription>
73
- </DialogHeader>
74
-
75
- <SelectField
76
- label="Motivo do cancelamento"
77
- required
78
- placeholder="Selecione"
79
- options={REASON_OPTIONS}
80
- value={reason}
81
- onChange={(value) => setReason(value as string)}
82
- className="h-10!"
83
- />
84
-
85
- <div>
86
- <TextAreaField
87
- label="Descreva o que levou a tomar essa decisão"
88
- required
89
- placeholder="Explique sua decisão..."
90
- value={description}
91
- onChange={(e) => setDescription(e.target.value)}
92
- rows={4}
93
- maxLength={400}
94
- />
95
- <span className="paragraph-xsmall-medium text-gray-600 text-left mt-1 block">
96
- {description.length}/400 caracteres
97
- </span>
98
- </div>
99
-
100
- <FormField
101
- className="text-gray-600"
102
- label="Senha"
103
- type="password"
104
- placeholder="Informe sua senha"
105
- leftIcon={Lock}
106
- value={password}
107
- onChange={(e) => setPassword(e.target.value)}
108
- classnameContainer="h-10!"
109
- showPassword={showPassword}
110
- onTogglePassword={togglePassword}
111
- />
112
- </div>
113
-
114
- <div className="flex flex-row items-center gap-2 p-4 lg:p-6 border-t border-gray-200 bg-white mt-auto lg:mt-0">
115
- <Button
116
- variant="default"
117
- className="h-10 flex-1 bg-gray-950 text-white hover:bg-gray-800"
118
- type="submit"
119
- >
120
- Excluir conta
121
- </Button>
122
- <Button variant="secondary" className="h-10 flex-1" type="button" onClick={handleClose}>
123
- Fechar
124
- </Button>
125
- </div>
126
- </form>
127
- </DialogContent>
128
- </Dialog>
129
- );
130
- }
1
+ 'use client';
2
+
3
+ import { useState, useCallback } from 'react';
4
+ import { IconLock, IconAlertTriangle } from '@tabler/icons-react';
5
+ import { toast } from 'sonner';
6
+ import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '../ui/overlay/Dialog';
7
+ import { Button } from '../ui/buttons/Button';
8
+ import { FormField } from '../ui/form/FormField';
9
+ import { SelectField } from '../ui/form/SelectField';
10
+ import { TextAreaField } from '../ui/form/TextAreaField';
11
+ import { Toast } from '../ui/feedback/Toast';
12
+ import usePasswordVisibility from '../../hooks/usePasswordVisibility';
13
+ import { useAccountModals } from '../../store/useAccountModals';
14
+ import { AccountSectionType } from '../../enums/AccountSectionType';
15
+
16
+ const REASON_OPTIONS = [
17
+ { value: 'sem-funcao', label: 'A ferramenta não possui uma função que eu preciso' },
18
+ { value: 'problemas', label: 'Encontrei problemas técnicos ou erros no sistema' },
19
+ { value: 'suporte', label: 'Tive problemas com o suporte ou atendimento' },
20
+ { value: 'demora', label: 'As atualizações demoram mais do que o esperado' },
21
+ { value: 'temporario', label: 'O cancelamento é temporário' },
22
+ { value: 'outro', label: 'Outro motivo' },
23
+ ];
24
+
25
+ export default function DeleteAccountModal() {
26
+ const { activeModal, pagesCount, openConfigurations, openConfirmDelete, close } = useAccountModals();
27
+ const open = activeModal === 'deleteAccount';
28
+
29
+ const [reason, setReason] = useState('');
30
+ const [description, setDescription] = useState('');
31
+ const [password, setPassword] = useState('');
32
+ const { showPassword, togglePassword } = usePasswordVisibility();
33
+
34
+ const isFormValid = Boolean(reason && description && password);
35
+
36
+ const resetForm = useCallback(() => {
37
+ setReason('');
38
+ setDescription('');
39
+ setPassword('');
40
+ }, []);
41
+
42
+ const handleClose = () => {
43
+ resetForm();
44
+ openConfigurations(AccountSectionType.SECURITY);
45
+ };
46
+
47
+ const handleDelete = (e: React.FormEvent) => {
48
+ e.preventDefault();
49
+ if (!isFormValid) {
50
+ toast.custom((t) => (
51
+ <Toast variant="error" message="Preencha todos os campos obrigatórios" toastId={t} />
52
+ ));
53
+ return;
54
+ }
55
+ resetForm();
56
+ openConfirmDelete(pagesCount);
57
+ };
58
+
59
+ return (
60
+ <Dialog open={open} onOpenChange={handleClose}>
61
+ <DialogContent className="flex flex-col p-0 gap-0 max-w-full! border-0 rounded-t-2xl rounded-b-none h-[100dvh] top-0! bottom-0! left-0! right-0! translate-x-0! translate-y-0! lg:max-w-lg! lg:h-auto! lg:max-h-[90vh] lg:rounded-lg lg:border lg:top-[50%]! lg:left-[50%]! lg:right-auto! lg:bottom-auto! lg:translate-x-[-50%]! lg:translate-y-[-50%]! overflow-y-auto">
62
+ <form onSubmit={handleDelete} className="flex flex-col flex-1 lg:flex-none">
63
+ <div className="flex flex-col gap-6 p-4 lg:p-6 flex-1 lg:flex-none">
64
+ <DialogHeader className="p-0">
65
+ <div className="flex items-center justify-center w-fit bg-red-50 rounded-lg p-2.5 mb-5">
66
+ <IconAlertTriangle size={20} className="text-red-500" />
67
+ </div>
68
+ <DialogTitle>Excluir conta</DialogTitle>
69
+ <DialogDescription className="paragraph-small-regular">
70
+ Esta ação é <span className="font-semibold text-gray-950">irreversível</span>. Ao
71
+ confirmar, sua conta e todos os seus dados serão excluídos.
72
+ </DialogDescription>
73
+ </DialogHeader>
74
+
75
+ <SelectField
76
+ label="Motivo do cancelamento"
77
+ required
78
+ placeholder="Selecione"
79
+ options={REASON_OPTIONS}
80
+ value={reason}
81
+ onChange={(value) => setReason(value as string)}
82
+ className="h-10!"
83
+ />
84
+
85
+ <div>
86
+ <TextAreaField
87
+ label="Descreva o que levou a tomar essa decisão"
88
+ required
89
+ placeholder="Explique sua decisão..."
90
+ value={description}
91
+ onChange={(e) => setDescription(e.target.value)}
92
+ rows={4}
93
+ maxLength={400}
94
+ />
95
+ <span className="paragraph-xsmall-medium text-gray-600 text-left mt-1 block">
96
+ {description.length}/400 caracteres
97
+ </span>
98
+ </div>
99
+
100
+ <FormField
101
+ className="text-gray-600"
102
+ label="Senha"
103
+ type="password"
104
+ placeholder="Informe sua senha"
105
+ leftIcon={IconLock}
106
+ value={password}
107
+ onChange={(e) => setPassword(e.target.value)}
108
+ classnameContainer="h-10!"
109
+ showPassword={showPassword}
110
+ onTogglePassword={togglePassword}
111
+ />
112
+ </div>
113
+
114
+ <div className="flex flex-row items-center gap-2 p-4 lg:p-6 border-t border-gray-200 bg-white mt-auto lg:mt-0">
115
+ <Button
116
+ variant="default"
117
+ className="h-10 flex-1 bg-gray-950 text-white hover:bg-gray-800"
118
+ type="submit"
119
+ >
120
+ Excluir conta
121
+ </Button>
122
+ <Button variant="secondary" className="h-10 flex-1" type="button" onClick={handleClose}>
123
+ Fechar
124
+ </Button>
125
+ </div>
126
+ </form>
127
+ </DialogContent>
128
+ </Dialog>
129
+ );
130
+ }