@greatapps/common 1.1.516 → 1.1.517

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 (407) 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/account/sections/TokenSection.mjs.map +1 -1
  18. package/dist/components/embeds/CrispEmbed.mjs.map +1 -1
  19. package/dist/components/embeds/EmbedWidgets.mjs.map +1 -1
  20. package/dist/components/embeds/FrillEmbed.mjs.map +1 -1
  21. package/dist/components/layouts/AppMobileNavBar.mjs.map +1 -1
  22. package/dist/components/layouts/AppNavBar.mjs.map +1 -1
  23. package/dist/components/layouts/MdSideBarNavigation.mjs.map +1 -1
  24. package/dist/components/layouts/NavBar.mjs.map +1 -1
  25. package/dist/components/layouts/NotificationsPopover.mjs.map +1 -1
  26. package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
  27. package/dist/components/layouts/SideBarNavigation.mjs.map +1 -1
  28. package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
  29. package/dist/components/layouts/WhitelabelCodes.mjs.map +1 -1
  30. package/dist/components/modals/BuyCreditsModal.mjs.map +1 -1
  31. package/dist/components/modals/PaidPlanRequiredModal.mjs.map +1 -1
  32. package/dist/components/modals/cards/AddCardModal.mjs.map +1 -1
  33. package/dist/components/modals/cards/CardFormFields.mjs.map +1 -1
  34. package/dist/components/navigation/CancelledSubscriptionBanner.mjs.map +1 -1
  35. package/dist/components/navigation/NavItemsContext.mjs.map +1 -1
  36. package/dist/components/navigation/ProjectSelectorPopover.mjs.map +1 -1
  37. package/dist/components/navigation/shells/TabsMobileShell.mjs.map +1 -1
  38. package/dist/components/navigation/subcomponents/BottomLinks.mjs.map +1 -1
  39. package/dist/components/navigation/subcomponents/ProjectSelector.mjs.map +1 -1
  40. package/dist/components/pages/NotFoundPage.mjs.map +1 -1
  41. package/dist/components/pages/notifications/Notifications.mjs.map +1 -1
  42. package/dist/components/ui/buttons/Button.mjs.map +1 -1
  43. package/dist/components/ui/buttons/CancelButton.mjs.map +1 -1
  44. package/dist/components/ui/buttons/CopyButton.mjs.map +1 -1
  45. package/dist/components/ui/data-display/Accordion.mjs.map +1 -1
  46. package/dist/components/ui/data-display/Badge.mjs.map +1 -1
  47. package/dist/components/ui/data-display/Card.mjs.map +1 -1
  48. package/dist/components/ui/data-display/CardBrandIcons.mjs.map +1 -1
  49. package/dist/components/ui/data-display/CardItem.mjs.map +1 -1
  50. package/dist/components/ui/data-display/Pagination.mjs.map +1 -1
  51. package/dist/components/ui/data-display/PaymentInfoCard.mjs.map +1 -1
  52. package/dist/components/ui/data-display/ScrollArea.mjs.map +1 -1
  53. package/dist/components/ui/data-display/Separator.mjs.map +1 -1
  54. package/dist/components/ui/data-display/Table.mjs.map +1 -1
  55. package/dist/components/ui/data-display/Tabs.mjs.map +1 -1
  56. package/dist/components/ui/feedback/CircularProgress.mjs.map +1 -1
  57. package/dist/components/ui/feedback/DefaultCircularProgress.mjs.map +1 -1
  58. package/dist/components/ui/feedback/LoadingOverlay.mjs.map +1 -1
  59. package/dist/components/ui/feedback/Progress.mjs.map +1 -1
  60. package/dist/components/ui/feedback/Skeleton.mjs.map +1 -1
  61. package/dist/components/ui/feedback/Toast.mjs.map +1 -1
  62. package/dist/components/ui/form/Calendar.mjs.map +1 -1
  63. package/dist/components/ui/form/Checkbox.mjs.map +1 -1
  64. package/dist/components/ui/form/ComboboxField.mjs.map +1 -1
  65. package/dist/components/ui/form/DatePicker.mjs +2 -2
  66. package/dist/components/ui/form/DatePicker.mjs.map +1 -1
  67. package/dist/components/ui/form/DateRangePicker.mjs.map +1 -1
  68. package/dist/components/ui/form/FormField.mjs.map +1 -1
  69. package/dist/components/ui/form/Input.mjs.map +1 -1
  70. package/dist/components/ui/form/InputOtp.mjs.map +1 -1
  71. package/dist/components/ui/form/PhoneInput.mjs.map +1 -1
  72. package/dist/components/ui/form/RadioGroup.mjs.map +1 -1
  73. package/dist/components/ui/form/Select.mjs +1 -1
  74. package/dist/components/ui/form/Select.mjs.map +1 -1
  75. package/dist/components/ui/form/Switch.mjs.map +1 -1
  76. package/dist/components/ui/form/Textarea.mjs.map +1 -1
  77. package/dist/components/ui/overlay/Command.mjs.map +1 -1
  78. package/dist/components/ui/overlay/Dialog.mjs.map +1 -1
  79. package/dist/components/ui/overlay/Popover.mjs.map +1 -1
  80. package/dist/components/ui/overlay/Sheet.mjs.map +1 -1
  81. package/dist/components/ui/overlay/Tooltip.mjs.map +1 -1
  82. package/dist/components/widgets/ImageUpload/ImageCropModal.mjs.map +1 -1
  83. package/dist/components/widgets/ImageUpload/ImageTooSmallModal.mjs.map +1 -1
  84. package/dist/components/widgets/ImageUpload/ImageUpload.mjs.map +1 -1
  85. package/dist/components/widgets/ImageUpload/index.mjs.map +1 -1
  86. package/dist/components/widgets/notifications/NotificationCard.mjs.map +1 -1
  87. package/dist/hooks/copy-to-clipboard.hook.mjs.map +1 -1
  88. package/dist/hooks/useAuthQueryKey.mjs.map +1 -1
  89. package/dist/index.mjs.map +1 -1
  90. package/dist/infra/utils/array.mjs.map +1 -1
  91. package/dist/infra/utils/date.mjs.map +1 -1
  92. package/dist/middleware.mjs.map +1 -1
  93. package/dist/modules/accounts/actions/account-management.action.mjs.map +1 -1
  94. package/dist/modules/accounts/actions/find-current-account.action.mjs.map +1 -1
  95. package/dist/modules/accounts/actions/get-account-token.action.mjs.map +1 -1
  96. package/dist/modules/accounts/actions/list-currencies.action.mjs.map +1 -1
  97. package/dist/modules/accounts/actions/list-timezones.action.mjs.map +1 -1
  98. package/dist/modules/accounts/hooks/current-account.hook.mjs.map +1 -1
  99. package/dist/modules/accounts/hooks/use-account-token.hook.mjs.map +1 -1
  100. package/dist/modules/accounts/hooks/useAccountManagement.mjs.map +1 -1
  101. package/dist/modules/accounts/hooks/useCurrencies.mjs.map +1 -1
  102. package/dist/modules/accounts/hooks/useTimezones.mjs.map +1 -1
  103. package/dist/modules/accounts/hooks/useViaCep.mjs.map +1 -1
  104. package/dist/modules/accounts/services/account-token.service.mjs.map +1 -1
  105. package/dist/modules/accounts/services/account.service.mjs.map +1 -1
  106. package/dist/modules/auth/actions/validate-session.action.mjs.map +1 -1
  107. package/dist/modules/auth/hooks/login.hook.mjs.map +1 -1
  108. package/dist/modules/auth/hooks/logout.hook.mjs.map +1 -1
  109. package/dist/modules/auth/hooks/register.hook.mjs.map +1 -1
  110. package/dist/modules/auth/hooks/useManagementPermissions.mjs.map +1 -1
  111. package/dist/modules/auth/hooks/useUserQuery.mjs.map +1 -1
  112. package/dist/modules/auth/utils/assert-management-permission.mjs.map +1 -1
  113. package/dist/modules/auth/utils/assert-management-subscription.mjs.map +1 -1
  114. package/dist/modules/auth/utils/assert-paid-subscription.mjs.map +1 -1
  115. package/dist/modules/auth/utils/assert-subscription-addon.mjs.map +1 -1
  116. package/dist/modules/auth/utils/build-wl-override.mjs.map +1 -1
  117. package/dist/modules/cards/actions/create-card.action.mjs.map +1 -1
  118. package/dist/modules/cards/actions/delete-card.action.mjs.map +1 -1
  119. package/dist/modules/cards/actions/find-card-by-id.action.mjs.map +1 -1
  120. package/dist/modules/cards/actions/list-cards.action.mjs.map +1 -1
  121. package/dist/modules/cards/actions/set-default-card.action.mjs.map +1 -1
  122. package/dist/modules/cards/hooks/card-by-id.hook.mjs.map +1 -1
  123. package/dist/modules/cards/hooks/cards.hook.mjs.map +1 -1
  124. package/dist/modules/cards/hooks/create-card.hook.mjs.map +1 -1
  125. package/dist/modules/cards/hooks/delete-card.hook.mjs.map +1 -1
  126. package/dist/modules/cards/hooks/set-default-card.hook.mjs.map +1 -1
  127. package/dist/modules/cards/services/cards.service.mjs.map +1 -1
  128. package/dist/modules/cards/types.mjs.map +1 -1
  129. package/dist/modules/ia-credits/actions/list-ia-credits.action.mjs.map +1 -1
  130. package/dist/modules/ia-credits/hooks/ia-credits.hook.mjs.map +1 -1
  131. package/dist/modules/images/actions/process-image.action.mjs.map +1 -1
  132. package/dist/modules/images/constants/image.constants.mjs.map +1 -1
  133. package/dist/modules/images/hooks/use-image-upload.hook.mjs.map +1 -1
  134. package/dist/modules/images/services/image-processing.service.mjs.map +1 -1
  135. package/dist/modules/images/utils/base64.mjs.map +1 -1
  136. package/dist/modules/images/utils/compress-image.mjs.map +1 -1
  137. package/dist/modules/images/utils/crop-image.mjs.map +1 -1
  138. package/dist/modules/images/utils/validate-image.mjs.map +1 -1
  139. package/dist/modules/plans/actions/find-plan-by-id.action.mjs.map +1 -1
  140. package/dist/modules/plans/actions/list-plans.action.mjs.map +1 -1
  141. package/dist/modules/plans/hooks/list-plans.hook.mjs.map +1 -1
  142. package/dist/modules/plans/hooks/use-has-plan-addon.hook.mjs.map +1 -1
  143. package/dist/modules/plans/hooks/use-plan-by-id.hook.mjs.map +1 -1
  144. package/dist/modules/plans/services/plans.service.mjs.map +1 -1
  145. package/dist/modules/plans/types/plan.type.mjs.map +1 -1
  146. package/dist/modules/plans/utils/map-api-plan-to-ui.mjs.map +1 -1
  147. package/dist/modules/projects/actions/add-project-user.action.mjs.map +1 -1
  148. package/dist/modules/projects/actions/create-project.action.mjs.map +1 -1
  149. package/dist/modules/projects/actions/delete-project.action.mjs.map +1 -1
  150. package/dist/modules/projects/actions/find-project.action.mjs.map +1 -1
  151. package/dist/modules/projects/actions/list-all-account-users.action.mjs.map +1 -1
  152. package/dist/modules/projects/actions/list-available-users.action.mjs.map +1 -1
  153. package/dist/modules/projects/actions/list-project-users.action.mjs.map +1 -1
  154. package/dist/modules/projects/actions/list-projects.action.mjs.map +1 -1
  155. package/dist/modules/projects/actions/remove-project-user.action.mjs.map +1 -1
  156. package/dist/modules/projects/actions/update-project.action.mjs.map +1 -1
  157. package/dist/modules/projects/hooks/add-project-user.hook.mjs.map +1 -1
  158. package/dist/modules/projects/hooks/create-project.hook.mjs.map +1 -1
  159. package/dist/modules/projects/hooks/delete-project.hook.mjs.map +1 -1
  160. package/dist/modules/projects/hooks/find-project.hook.mjs.map +1 -1
  161. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
  162. package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
  163. package/dist/modules/projects/hooks/list-infinite-projects.hook.mjs.map +1 -1
  164. package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
  165. package/dist/modules/projects/hooks/list-projects.hook.mjs.map +1 -1
  166. package/dist/modules/projects/hooks/remove-project-user.hook.mjs.map +1 -1
  167. package/dist/modules/projects/hooks/update-project.hook.mjs.map +1 -1
  168. package/dist/modules/projects/services/projects.service.mjs.map +1 -1
  169. package/dist/modules/subscriptions/actions/calculate-subscription.action.mjs.map +1 -1
  170. package/dist/modules/subscriptions/actions/list-subscriptions.action.mjs.map +1 -1
  171. package/dist/modules/subscriptions/actions/update-subscription-plan.action.mjs.map +1 -1
  172. package/dist/modules/subscriptions/constants/query-keys.constants.mjs.map +1 -1
  173. package/dist/modules/subscriptions/hooks/calculate-subscription.hook.mjs.map +1 -1
  174. package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs.map +1 -1
  175. package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs.map +1 -1
  176. package/dist/modules/subscriptions/hooks/update-subscription-plan.hook.mjs.map +1 -1
  177. package/dist/modules/subscriptions/hooks/use-cancelled-subscription-guard.mjs.map +1 -1
  178. package/dist/modules/subscriptions/types/calculate-subscription.type.mjs.map +1 -1
  179. package/dist/modules/subscriptions/utils/build-plan-extras.mjs.map +1 -1
  180. package/dist/modules/subscriptions/utils/has-subscription-expired.mjs.map +1 -1
  181. package/dist/modules/subscriptions/utils/periodicity.mjs.map +1 -1
  182. package/dist/modules/subscriptions/utils/resolve-plan-extras-prices.mjs.map +1 -1
  183. package/dist/modules/users/action/find-user-by-id.action.mjs.map +1 -1
  184. package/dist/modules/users/action/list-messages.action.mjs.map +1 -1
  185. package/dist/modules/users/action/mark-all-messages-as-read.action.mjs.map +1 -1
  186. package/dist/modules/users/action/mark-message-as-read.action.mjs.map +1 -1
  187. package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
  188. package/dist/modules/users/services/messages.service.mjs.map +1 -1
  189. package/dist/modules/whitelabel/actions/find-whitelabel.action.mjs.map +1 -1
  190. package/dist/modules/whitelabel/actions/revalidate-whitelabel.action.mjs.map +1 -1
  191. package/dist/modules/whitelabel/utils/normalize-hostname.mjs.map +1 -1
  192. package/dist/providers/auth.provider.mjs.map +1 -1
  193. package/dist/providers/whitelabel.provider.mjs.map +1 -1
  194. package/dist/store/useBuyCreditsModal.mjs.map +1 -1
  195. package/dist/store/useDesktopSidebarStore.mjs.map +1 -1
  196. package/dist/store/useMdSidebarStore.mjs.map +1 -1
  197. package/dist/store/usePaidPlanRequiredModal.mjs.map +1 -1
  198. package/dist/utils/constants/br-states.mjs.map +1 -1
  199. package/dist/utils/countries.mjs.map +1 -1
  200. package/dist/utils/format/currency.mjs.map +1 -1
  201. package/dist/utils/safeServerAction.mjs.map +1 -1
  202. package/dist/utils/withAction.mjs.map +1 -1
  203. package/package.json +92 -92
  204. package/src/components/account/ConfigurationsMyAccountModal.tsx +161 -161
  205. package/src/components/account/ConfirmDeleteAccountModal.tsx +55 -55
  206. package/src/components/account/ConfirmGlobalPreferencesModal.tsx +66 -66
  207. package/src/components/account/DeleteAccountModal.tsx +130 -130
  208. package/src/components/account/DisableTwoFactorAuthModal.tsx +86 -86
  209. package/src/components/account/IsntPossibleDeleteAccountModal.tsx +49 -49
  210. package/src/components/account/TwoFactorAuthModal.tsx +215 -215
  211. package/src/components/account/hooks/useChangePhoneForm.tsx +107 -107
  212. package/src/components/account/hooks/useTwoFactorAuthForm.tsx +101 -101
  213. package/src/components/account/sections/ChangeEmailModal.tsx +227 -227
  214. package/src/components/account/sections/ChangePasswordSection.tsx +64 -64
  215. package/src/components/account/sections/ChangePhoneModal.tsx +247 -247
  216. package/src/components/account/sections/MyProfileSection.tsx +328 -328
  217. package/src/components/account/sections/PreferencesSection.tsx +248 -248
  218. package/src/components/account/sections/SecuritySection.tsx +46 -46
  219. package/src/components/account/sections/TokenSection.tsx +64 -64
  220. package/src/components/embeds/CrispEmbed.tsx +156 -156
  221. package/src/components/embeds/EmbedWidgets.tsx +50 -50
  222. package/src/components/embeds/FrillEmbed.tsx +129 -129
  223. package/src/components/layouts/AppMobileNavBar.tsx +80 -80
  224. package/src/components/layouts/AppNavBar.tsx +40 -40
  225. package/src/components/layouts/MdSideBarNavigation.tsx +56 -56
  226. package/src/components/layouts/NavBar.tsx +175 -175
  227. package/src/components/layouts/NotificationsPopover.tsx +118 -118
  228. package/src/components/layouts/ProfilePopover.tsx +176 -176
  229. package/src/components/layouts/SideBarNavigation.tsx +65 -65
  230. package/src/components/layouts/UsersSelectorPopover.tsx +234 -234
  231. package/src/components/layouts/WhitelabelCodes.tsx +59 -59
  232. package/src/components/modals/BuyCreditsModal.tsx +354 -354
  233. package/src/components/modals/PaidPlanRequiredModal.tsx +57 -57
  234. package/src/components/modals/cards/AddCardModal.tsx +265 -265
  235. package/src/components/modals/cards/CardFormFields.tsx +348 -348
  236. package/src/components/navigation/CancelledSubscriptionBanner.tsx +64 -64
  237. package/src/components/navigation/NavItemsContext.ts +20 -20
  238. package/src/components/navigation/ProjectSelectorPopover.tsx +178 -178
  239. package/src/components/navigation/shells/TabsMobileShell.tsx +74 -74
  240. package/src/components/navigation/subcomponents/BottomLinks.tsx +37 -37
  241. package/src/components/navigation/subcomponents/ProjectSelector.tsx +182 -182
  242. package/src/components/pages/NotFoundPage.tsx +67 -67
  243. package/src/components/pages/notifications/Notifications.tsx +187 -187
  244. package/src/components/ui/buttons/Button.tsx +62 -62
  245. package/src/components/ui/buttons/CancelButton.tsx +14 -14
  246. package/src/components/ui/buttons/CopyButton.tsx +54 -54
  247. package/src/components/ui/data-display/Accordion.tsx +81 -81
  248. package/src/components/ui/data-display/Badge.tsx +47 -47
  249. package/src/components/ui/data-display/Card.tsx +93 -93
  250. package/src/components/ui/data-display/CardBrandIcons.tsx +336 -336
  251. package/src/components/ui/data-display/CardItem.tsx +75 -75
  252. package/src/components/ui/data-display/Pagination.tsx +126 -126
  253. package/src/components/ui/data-display/PaymentInfoCard.tsx +192 -192
  254. package/src/components/ui/data-display/ScrollArea.tsx +59 -59
  255. package/src/components/ui/data-display/Separator.tsx +29 -29
  256. package/src/components/ui/data-display/Table.tsx +117 -117
  257. package/src/components/ui/data-display/Tabs.tsx +67 -67
  258. package/src/components/ui/feedback/CircularProgress.tsx +75 -75
  259. package/src/components/ui/feedback/DefaultCircularProgress.tsx +65 -65
  260. package/src/components/ui/feedback/LoadingOverlay.tsx +31 -31
  261. package/src/components/ui/feedback/Progress.tsx +40 -40
  262. package/src/components/ui/feedback/Skeleton.tsx +5 -5
  263. package/src/components/ui/feedback/Toast.tsx +104 -104
  264. package/src/components/ui/form/Calendar.tsx +228 -228
  265. package/src/components/ui/form/Checkbox.tsx +31 -31
  266. package/src/components/ui/form/ComboboxField.tsx +154 -154
  267. package/src/components/ui/form/DatePicker.tsx +98 -97
  268. package/src/components/ui/form/DateRangePicker.tsx +108 -108
  269. package/src/components/ui/form/FormField.tsx +133 -133
  270. package/src/components/ui/form/Input.tsx +20 -20
  271. package/src/components/ui/form/InputOtp.tsx +80 -80
  272. package/src/components/ui/form/PhoneInput.tsx +208 -208
  273. package/src/components/ui/form/RadioGroup.tsx +45 -45
  274. package/src/components/ui/form/Select.tsx +200 -200
  275. package/src/components/ui/form/Switch.tsx +32 -32
  276. package/src/components/ui/form/Textarea.tsx +19 -19
  277. package/src/components/ui/overlay/Command.tsx +185 -185
  278. package/src/components/ui/overlay/Dialog.tsx +153 -153
  279. package/src/components/ui/overlay/Popover.tsx +49 -49
  280. package/src/components/ui/overlay/Sheet.tsx +170 -170
  281. package/src/components/ui/overlay/Tooltip.tsx +62 -62
  282. package/src/components/widgets/ImageUpload/ImageCropModal.tsx +254 -254
  283. package/src/components/widgets/ImageUpload/ImageTooSmallModal.tsx +61 -61
  284. package/src/components/widgets/ImageUpload/ImageUpload.tsx +126 -126
  285. package/src/components/widgets/ImageUpload/index.ts +3 -3
  286. package/src/components/widgets/notifications/NotificationCard.tsx +73 -73
  287. package/src/hooks/copy-to-clipboard.hook.tsx +67 -67
  288. package/src/hooks/useAuthQueryKey.ts +32 -32
  289. package/src/index.ts +506 -506
  290. package/src/infra/utils/array.ts +54 -54
  291. package/src/infra/utils/date.ts +18 -18
  292. package/src/middleware.ts +4 -4
  293. package/src/modules/accounts/actions/account-management.action.ts +107 -107
  294. package/src/modules/accounts/actions/find-current-account.action.ts +9 -9
  295. package/src/modules/accounts/actions/get-account-token.action.ts +8 -8
  296. package/src/modules/accounts/actions/list-currencies.action.ts +8 -8
  297. package/src/modules/accounts/actions/list-timezones.action.ts +8 -8
  298. package/src/modules/accounts/hooks/current-account.hook.tsx +26 -26
  299. package/src/modules/accounts/hooks/use-account-token.hook.tsx +14 -14
  300. package/src/modules/accounts/hooks/useAccountManagement.ts +94 -94
  301. package/src/modules/accounts/hooks/useCurrencies.ts +18 -18
  302. package/src/modules/accounts/hooks/useTimezones.ts +18 -18
  303. package/src/modules/accounts/hooks/useViaCep.ts +25 -25
  304. package/src/modules/accounts/services/account-token.service.ts +52 -52
  305. package/src/modules/accounts/services/account.service.ts +239 -239
  306. package/src/modules/accounts/types.ts +225 -225
  307. package/src/modules/auth/actions/validate-session.action.ts +56 -56
  308. package/src/modules/auth/hooks/login.hook.tsx +13 -13
  309. package/src/modules/auth/hooks/logout.hook.tsx +11 -11
  310. package/src/modules/auth/hooks/register.hook.tsx +11 -11
  311. package/src/modules/auth/hooks/useManagementPermissions.ts +45 -45
  312. package/src/modules/auth/hooks/useUserQuery.ts +75 -75
  313. package/src/modules/auth/types/management-permission.type.ts +7 -7
  314. package/src/modules/auth/utils/assert-management-permission.ts +46 -46
  315. package/src/modules/auth/utils/assert-management-subscription.ts +35 -35
  316. package/src/modules/auth/utils/assert-paid-subscription.ts +43 -43
  317. package/src/modules/auth/utils/assert-subscription-addon.ts +42 -42
  318. package/src/modules/auth/utils/build-wl-override.ts +43 -43
  319. package/src/modules/cards/actions/create-card.action.ts +9 -9
  320. package/src/modules/cards/actions/delete-card.action.ts +8 -8
  321. package/src/modules/cards/actions/find-card-by-id.action.ts +8 -8
  322. package/src/modules/cards/actions/list-cards.action.ts +8 -8
  323. package/src/modules/cards/actions/set-default-card.action.ts +8 -8
  324. package/src/modules/cards/hooks/card-by-id.hook.ts +21 -21
  325. package/src/modules/cards/hooks/cards.hook.ts +23 -23
  326. package/src/modules/cards/hooks/create-card.hook.ts +30 -30
  327. package/src/modules/cards/hooks/delete-card.hook.ts +54 -54
  328. package/src/modules/cards/hooks/set-default-card.hook.ts +55 -55
  329. package/src/modules/cards/services/cards.service.ts +108 -108
  330. package/src/modules/cards/types.ts +42 -42
  331. package/src/modules/ia-credits/actions/list-ia-credits.action.ts +8 -8
  332. package/src/modules/ia-credits/hooks/ia-credits.hook.ts +99 -99
  333. package/src/modules/images/actions/process-image.action.ts +40 -40
  334. package/src/modules/images/constants/image.constants.ts +11 -11
  335. package/src/modules/images/hooks/use-image-upload.hook.ts +172 -172
  336. package/src/modules/images/services/image-processing.service.ts +75 -75
  337. package/src/modules/images/types/image.type.ts +54 -54
  338. package/src/modules/images/utils/base64.ts +26 -26
  339. package/src/modules/images/utils/compress-image.ts +20 -20
  340. package/src/modules/images/utils/crop-image.ts +51 -51
  341. package/src/modules/images/utils/validate-image.ts +71 -71
  342. package/src/modules/plans/actions/find-plan-by-id.action.ts +8 -8
  343. package/src/modules/plans/actions/list-plans.action.ts +17 -17
  344. package/src/modules/plans/hooks/list-plans.hook.ts +24 -24
  345. package/src/modules/plans/hooks/use-has-plan-addon.hook.ts +14 -14
  346. package/src/modules/plans/hooks/use-plan-by-id.hook.ts +38 -38
  347. package/src/modules/plans/services/plans.service.ts +133 -133
  348. package/src/modules/plans/types/plan.type.ts +67 -67
  349. package/src/modules/plans/utils/map-api-plan-to-ui.ts +98 -98
  350. package/src/modules/projects/actions/add-project-user.action.ts +9 -9
  351. package/src/modules/projects/actions/create-project.action.ts +9 -9
  352. package/src/modules/projects/actions/delete-project.action.ts +8 -8
  353. package/src/modules/projects/actions/find-project.action.ts +8 -8
  354. package/src/modules/projects/actions/list-all-account-users.action.ts +9 -9
  355. package/src/modules/projects/actions/list-available-users.action.ts +9 -9
  356. package/src/modules/projects/actions/list-project-users.action.ts +9 -9
  357. package/src/modules/projects/actions/list-projects.action.ts +16 -16
  358. package/src/modules/projects/actions/remove-project-user.action.ts +9 -9
  359. package/src/modules/projects/actions/update-project.action.ts +9 -9
  360. package/src/modules/projects/hooks/add-project-user.hook.ts +72 -72
  361. package/src/modules/projects/hooks/create-project.hook.ts +88 -88
  362. package/src/modules/projects/hooks/delete-project.hook.ts +58 -58
  363. package/src/modules/projects/hooks/find-project.hook.ts +18 -18
  364. package/src/modules/projects/hooks/list-all-account-users.hook.ts +39 -39
  365. package/src/modules/projects/hooks/list-available-users.hook.ts +38 -38
  366. package/src/modules/projects/hooks/list-infinite-projects.hook.ts +43 -43
  367. package/src/modules/projects/hooks/list-project-users.hook.ts +38 -38
  368. package/src/modules/projects/hooks/list-projects.hook.ts +23 -23
  369. package/src/modules/projects/hooks/remove-project-user.hook.ts +72 -72
  370. package/src/modules/projects/hooks/update-project.hook.ts +86 -86
  371. package/src/modules/projects/services/projects.service.ts +144 -144
  372. package/src/modules/subscriptions/actions/calculate-subscription.action.ts +9 -9
  373. package/src/modules/subscriptions/actions/list-subscriptions.action.ts +9 -9
  374. package/src/modules/subscriptions/actions/update-subscription-plan.action.ts +14 -14
  375. package/src/modules/subscriptions/constants/query-keys.constants.ts +3 -3
  376. package/src/modules/subscriptions/hooks/calculate-subscription.hook.ts +13 -13
  377. package/src/modules/subscriptions/hooks/find-active-subscription.hook.ts +18 -18
  378. package/src/modules/subscriptions/hooks/list-subscriptions.hook.ts +19 -19
  379. package/src/modules/subscriptions/hooks/update-subscription-plan.hook.ts +28 -28
  380. package/src/modules/subscriptions/hooks/use-cancelled-subscription-guard.ts +39 -39
  381. package/src/modules/subscriptions/types/billing-period.type.ts +1 -1
  382. package/src/modules/subscriptions/types/calculate-subscription.type.ts +113 -113
  383. package/src/modules/subscriptions/utils/build-plan-extras.ts +56 -56
  384. package/src/modules/subscriptions/utils/has-subscription-expired.ts +8 -8
  385. package/src/modules/subscriptions/utils/periodicity.ts +62 -62
  386. package/src/modules/subscriptions/utils/resolve-plan-extras-prices.ts +23 -23
  387. package/src/modules/users/action/find-user-by-id.action.ts +8 -8
  388. package/src/modules/users/action/list-messages.action.ts +26 -26
  389. package/src/modules/users/action/mark-all-messages-as-read.action.ts +8 -8
  390. package/src/modules/users/action/mark-message-as-read.action.ts +8 -8
  391. package/src/modules/users/hooks/messages.hook.ts +67 -67
  392. package/src/modules/users/services/messages.service.ts +49 -49
  393. package/src/modules/whitelabel/actions/find-whitelabel.action.ts +23 -23
  394. package/src/modules/whitelabel/actions/revalidate-whitelabel.action.ts +19 -19
  395. package/src/modules/whitelabel/schema.ts +84 -84
  396. package/src/modules/whitelabel/utils/normalize-hostname.ts +26 -26
  397. package/src/providers/auth.provider.tsx +162 -162
  398. package/src/providers/whitelabel.provider.tsx +59 -59
  399. package/src/store/useBuyCreditsModal.ts +21 -21
  400. package/src/store/useDesktopSidebarStore.ts +47 -47
  401. package/src/store/useMdSidebarStore.ts +34 -34
  402. package/src/store/usePaidPlanRequiredModal.ts +19 -19
  403. package/src/utils/constants/br-states.ts +29 -29
  404. package/src/utils/countries.ts +224 -224
  405. package/src/utils/format/currency.ts +15 -15
  406. package/src/utils/safeServerAction.ts +21 -21
  407. package/src/utils/withAction.ts +13 -13
@@ -1,254 +1,254 @@
1
- 'use client'
2
-
3
- import { useRef, useState } from 'react'
4
- import ReactCrop, {
5
- type Crop,
6
- centerCrop,
7
- makeAspectCrop,
8
- } from 'react-image-crop'
9
- import 'react-image-crop/dist/ReactCrop.css'
10
- import {
11
- Dialog,
12
- DialogContent,
13
- DialogFooter,
14
- DialogHeader,
15
- DialogTitle,
16
- } from '../../ui/overlay/Dialog'
17
- import { Button } from '../../ui/buttons/Button'
18
-
19
- // CSS customizado para grid pontilhado fino e círculo
20
- const baseCropStyles = `
21
- .custom-crop-area .ReactCrop__crop-selection {
22
- border: 2px solid white !important;
23
- box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.5) !important;
24
- }
25
-
26
- /* Grid de 9 quadrados - linhas pontilhadas finas */
27
- .custom-crop-area .ReactCrop__crop-selection .crop-grid {
28
- position: absolute;
29
- inset: 0;
30
- pointer-events: none;
31
- }
32
-
33
- .custom-crop-area .ReactCrop__crop-selection .crop-grid-line {
34
- position: absolute;
35
- background: repeating-linear-gradient(
36
- to right,
37
- rgba(255, 255, 255, 0.5) 0,
38
- rgba(255, 255, 255, 0.5) 4px,
39
- transparent 4px,
40
- transparent 8px
41
- );
42
- }
43
-
44
- .custom-crop-area .ReactCrop__crop-selection .crop-grid-line.horizontal {
45
- left: 0;
46
- right: 0;
47
- height: 1px;
48
- }
49
-
50
- .custom-crop-area .ReactCrop__crop-selection .crop-grid-line.vertical {
51
- top: 0;
52
- bottom: 0;
53
- width: 1px;
54
- background: repeating-linear-gradient(
55
- to bottom,
56
- rgba(255, 255, 255, 0.5) 0,
57
- rgba(255, 255, 255, 0.5) 4px,
58
- transparent 4px,
59
- transparent 8px
60
- );
61
- }
62
-
63
- .custom-crop-area .ReactCrop__crop-selection .crop-grid-line.h1 { top: 33.33%; }
64
- .custom-crop-area .ReactCrop__crop-selection .crop-grid-line.h2 { top: 66.66%; }
65
- .custom-crop-area .ReactCrop__crop-selection .crop-grid-line.v1 { left: 33.33%; }
66
- .custom-crop-area .ReactCrop__crop-selection .crop-grid-line.v2 { left: 66.66%; }
67
-
68
- /* Círculo inscrito */
69
- .custom-crop-area.with-circle .ReactCrop__crop-selection .crop-circle {
70
- position: absolute;
71
- inset: 0;
72
- border: 1px dashed rgba(255, 255, 255, 0.6);
73
- border-radius: 50%;
74
- pointer-events: none;
75
- }
76
-
77
- /* Bolinhas centrais nas bordas */
78
- .custom-crop-area .ReactCrop__crop-selection .crop-handle {
79
- position: absolute;
80
- width: 10px;
81
- height: 10px;
82
- background: white;
83
- border-radius: 50%;
84
- pointer-events: none;
85
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
86
- }
87
-
88
- .custom-crop-area .ReactCrop__crop-selection .crop-handle.top {
89
- top: -5px;
90
- left: 50%;
91
- transform: translateX(-50%);
92
- }
93
-
94
- .custom-crop-area .ReactCrop__crop-selection .crop-handle.bottom {
95
- bottom: -5px;
96
- left: 50%;
97
- transform: translateX(-50%);
98
- }
99
-
100
- .custom-crop-area .ReactCrop__crop-selection .crop-handle.left {
101
- left: -5px;
102
- top: 50%;
103
- transform: translateY(-50%);
104
- }
105
-
106
- .custom-crop-area .ReactCrop__crop-selection .crop-handle.right {
107
- right: -5px;
108
- top: 50%;
109
- transform: translateY(-50%);
110
- }
111
- `
112
-
113
- interface ImageCropModalProps {
114
- open: boolean
115
- onOpenChange: (open: boolean) => void
116
- imageSrc: string
117
- aspectRatio: number
118
- onConfirm: (image: HTMLImageElement, crop: Crop) => void
119
- onCancel?: () => void
120
- onImageLoad?: (naturalWidth: number, naturalHeight: number) => void
121
- showCircleGuide?: boolean
122
- minWidth?: number
123
- minHeight?: number
124
- }
125
-
126
- export function ImageCropModal({
127
- open,
128
- onOpenChange,
129
- imageSrc,
130
- aspectRatio,
131
- onConfirm,
132
- onCancel,
133
- onImageLoad: onImageLoadCallback,
134
- showCircleGuide,
135
- minWidth,
136
- minHeight,
137
- }: ImageCropModalProps) {
138
- const imgRef = useRef<HTMLImageElement>(null)
139
- const [crop, setCrop] = useState<Crop>()
140
- const [imageSize, setImageSize] = useState({ width: 0, height: 0 })
141
-
142
- const onImageLoad = (e: React.SyntheticEvent<HTMLImageElement>) => {
143
- const { naturalWidth, naturalHeight } = e.currentTarget
144
- setImageSize({ width: naturalWidth, height: naturalHeight })
145
-
146
- // Notifica o hook para verificar dimensões mínimas
147
- onImageLoadCallback?.(naturalWidth, naturalHeight)
148
-
149
- const initialCrop = centerCrop(
150
- makeAspectCrop(
151
- { unit: '%', width: 90 },
152
- aspectRatio,
153
- naturalWidth,
154
- naturalHeight
155
- ),
156
- naturalWidth,
157
- naturalHeight
158
- )
159
-
160
- setCrop(initialCrop)
161
- }
162
-
163
- // Calcula tamanho mínimo em porcentagem baseado nas dimensões mínimas em pixels
164
- const minCropWidth = minWidth && imageSize.width > 0
165
- ? Math.min((minWidth / imageSize.width) * 100, 100)
166
- : undefined
167
- const minCropHeight = minHeight && imageSize.height > 0
168
- ? Math.min((minHeight / imageSize.height) * 100, 100)
169
- : undefined
170
-
171
- const handleConfirm = () => {
172
- if (imgRef.current && crop) {
173
- onConfirm(imgRef.current, crop)
174
- }
175
- }
176
-
177
- const handleCancel = () => {
178
- onCancel?.()
179
- onOpenChange(false)
180
- }
181
-
182
- // Determina se deve mostrar círculo (aspect ratio 1:1 por padrão)
183
- const shouldShowCircle = showCircleGuide ?? aspectRatio === 1
184
-
185
- // Renderiza grid, círculo e bolinhas dentro da área de crop
186
- const renderSelectionAddon = () => (
187
- <>
188
- {/* Grid de 9 quadrados com linhas pontilhadas */}
189
- <div className="crop-grid">
190
- <div className="crop-grid-line horizontal h1" />
191
- <div className="crop-grid-line horizontal h2" />
192
- <div className="crop-grid-line vertical v1" />
193
- <div className="crop-grid-line vertical v2" />
194
- </div>
195
- {/* Círculo inscrito */}
196
- {shouldShowCircle && <div className="crop-circle" />}
197
- {/* Bolinhas centrais nas bordas */}
198
- <div className="crop-handle top" />
199
- <div className="crop-handle bottom" />
200
- <div className="crop-handle left" />
201
- <div className="crop-handle right" />
202
- </>
203
- )
204
-
205
- return (
206
- <Dialog open={open} onOpenChange={onOpenChange}>
207
- <style>{baseCropStyles}</style>
208
- <DialogContent
209
- className="w-full md:w-[650px]! lg:w-[650px]! max-w-[650px]! max-[650px]:w-[calc(100%-32px)] p-0 gap-0 z-[1003]!"
210
- overlayClassName="z-[1002]!"
211
- >
212
- <DialogHeader className="p-5">
213
- <DialogTitle className="text-center text-[16px]!">
214
- Ajustar imagem
215
- </DialogTitle>
216
- </DialogHeader>
217
-
218
- <div className="flex flex-col gap-4 px-5 pb-5">
219
- <div className="flex justify-center overflow-hidden rounded-lg">
220
- <ReactCrop
221
- crop={crop}
222
- onChange={(c) => setCrop(c)}
223
- aspect={aspectRatio}
224
- className={`max-h-[50vh] custom-crop-area ${shouldShowCircle ? 'with-circle' : ''}`}
225
- keepSelection
226
- minWidth={minCropWidth}
227
- minHeight={minCropHeight}
228
- renderSelectionAddon={renderSelectionAddon}
229
- >
230
- <img
231
- ref={imgRef}
232
- src={imageSrc}
233
- alt="Crop"
234
- onLoad={onImageLoad}
235
- className="max-h-[50vh] object-contain"
236
- />
237
- </ReactCrop>
238
- </div>
239
-
240
- <p className="paragraph-small-regular text-zinc-500 text-center">
241
- Arraste para ajustar a área de corte
242
- </p>
243
- </div>
244
-
245
- <DialogFooter className="flex-row! items-center justify-start! gap-3 p-5 border-t border-zinc-200">
246
- <Button onClick={handleConfirm}>Confirmar</Button>
247
- <Button variant="secondary" onClick={handleCancel}>
248
- Cancelar
249
- </Button>
250
- </DialogFooter>
251
- </DialogContent>
252
- </Dialog>
253
- )
254
- }
1
+ 'use client'
2
+
3
+ import { useRef, useState } from 'react'
4
+ import ReactCrop, {
5
+ type Crop,
6
+ centerCrop,
7
+ makeAspectCrop,
8
+ } from 'react-image-crop'
9
+ import 'react-image-crop/dist/ReactCrop.css'
10
+ import {
11
+ Dialog,
12
+ DialogContent,
13
+ DialogFooter,
14
+ DialogHeader,
15
+ DialogTitle,
16
+ } from '../../ui/overlay/Dialog'
17
+ import { Button } from '../../ui/buttons/Button'
18
+
19
+ // CSS customizado para grid pontilhado fino e círculo
20
+ const baseCropStyles = `
21
+ .custom-crop-area .ReactCrop__crop-selection {
22
+ border: 2px solid white !important;
23
+ box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.5) !important;
24
+ }
25
+
26
+ /* Grid de 9 quadrados - linhas pontilhadas finas */
27
+ .custom-crop-area .ReactCrop__crop-selection .crop-grid {
28
+ position: absolute;
29
+ inset: 0;
30
+ pointer-events: none;
31
+ }
32
+
33
+ .custom-crop-area .ReactCrop__crop-selection .crop-grid-line {
34
+ position: absolute;
35
+ background: repeating-linear-gradient(
36
+ to right,
37
+ rgba(255, 255, 255, 0.5) 0,
38
+ rgba(255, 255, 255, 0.5) 4px,
39
+ transparent 4px,
40
+ transparent 8px
41
+ );
42
+ }
43
+
44
+ .custom-crop-area .ReactCrop__crop-selection .crop-grid-line.horizontal {
45
+ left: 0;
46
+ right: 0;
47
+ height: 1px;
48
+ }
49
+
50
+ .custom-crop-area .ReactCrop__crop-selection .crop-grid-line.vertical {
51
+ top: 0;
52
+ bottom: 0;
53
+ width: 1px;
54
+ background: repeating-linear-gradient(
55
+ to bottom,
56
+ rgba(255, 255, 255, 0.5) 0,
57
+ rgba(255, 255, 255, 0.5) 4px,
58
+ transparent 4px,
59
+ transparent 8px
60
+ );
61
+ }
62
+
63
+ .custom-crop-area .ReactCrop__crop-selection .crop-grid-line.h1 { top: 33.33%; }
64
+ .custom-crop-area .ReactCrop__crop-selection .crop-grid-line.h2 { top: 66.66%; }
65
+ .custom-crop-area .ReactCrop__crop-selection .crop-grid-line.v1 { left: 33.33%; }
66
+ .custom-crop-area .ReactCrop__crop-selection .crop-grid-line.v2 { left: 66.66%; }
67
+
68
+ /* Círculo inscrito */
69
+ .custom-crop-area.with-circle .ReactCrop__crop-selection .crop-circle {
70
+ position: absolute;
71
+ inset: 0;
72
+ border: 1px dashed rgba(255, 255, 255, 0.6);
73
+ border-radius: 50%;
74
+ pointer-events: none;
75
+ }
76
+
77
+ /* Bolinhas centrais nas bordas */
78
+ .custom-crop-area .ReactCrop__crop-selection .crop-handle {
79
+ position: absolute;
80
+ width: 10px;
81
+ height: 10px;
82
+ background: white;
83
+ border-radius: 50%;
84
+ pointer-events: none;
85
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
86
+ }
87
+
88
+ .custom-crop-area .ReactCrop__crop-selection .crop-handle.top {
89
+ top: -5px;
90
+ left: 50%;
91
+ transform: translateX(-50%);
92
+ }
93
+
94
+ .custom-crop-area .ReactCrop__crop-selection .crop-handle.bottom {
95
+ bottom: -5px;
96
+ left: 50%;
97
+ transform: translateX(-50%);
98
+ }
99
+
100
+ .custom-crop-area .ReactCrop__crop-selection .crop-handle.left {
101
+ left: -5px;
102
+ top: 50%;
103
+ transform: translateY(-50%);
104
+ }
105
+
106
+ .custom-crop-area .ReactCrop__crop-selection .crop-handle.right {
107
+ right: -5px;
108
+ top: 50%;
109
+ transform: translateY(-50%);
110
+ }
111
+ `
112
+
113
+ interface ImageCropModalProps {
114
+ open: boolean
115
+ onOpenChange: (open: boolean) => void
116
+ imageSrc: string
117
+ aspectRatio: number
118
+ onConfirm: (image: HTMLImageElement, crop: Crop) => void
119
+ onCancel?: () => void
120
+ onImageLoad?: (naturalWidth: number, naturalHeight: number) => void
121
+ showCircleGuide?: boolean
122
+ minWidth?: number
123
+ minHeight?: number
124
+ }
125
+
126
+ export function ImageCropModal({
127
+ open,
128
+ onOpenChange,
129
+ imageSrc,
130
+ aspectRatio,
131
+ onConfirm,
132
+ onCancel,
133
+ onImageLoad: onImageLoadCallback,
134
+ showCircleGuide,
135
+ minWidth,
136
+ minHeight,
137
+ }: ImageCropModalProps) {
138
+ const imgRef = useRef<HTMLImageElement>(null)
139
+ const [crop, setCrop] = useState<Crop>()
140
+ const [imageSize, setImageSize] = useState({ width: 0, height: 0 })
141
+
142
+ const onImageLoad = (e: React.SyntheticEvent<HTMLImageElement>) => {
143
+ const { naturalWidth, naturalHeight } = e.currentTarget
144
+ setImageSize({ width: naturalWidth, height: naturalHeight })
145
+
146
+ // Notifica o hook para verificar dimensões mínimas
147
+ onImageLoadCallback?.(naturalWidth, naturalHeight)
148
+
149
+ const initialCrop = centerCrop(
150
+ makeAspectCrop(
151
+ { unit: '%', width: 90 },
152
+ aspectRatio,
153
+ naturalWidth,
154
+ naturalHeight
155
+ ),
156
+ naturalWidth,
157
+ naturalHeight
158
+ )
159
+
160
+ setCrop(initialCrop)
161
+ }
162
+
163
+ // Calcula tamanho mínimo em porcentagem baseado nas dimensões mínimas em pixels
164
+ const minCropWidth = minWidth && imageSize.width > 0
165
+ ? Math.min((minWidth / imageSize.width) * 100, 100)
166
+ : undefined
167
+ const minCropHeight = minHeight && imageSize.height > 0
168
+ ? Math.min((minHeight / imageSize.height) * 100, 100)
169
+ : undefined
170
+
171
+ const handleConfirm = () => {
172
+ if (imgRef.current && crop) {
173
+ onConfirm(imgRef.current, crop)
174
+ }
175
+ }
176
+
177
+ const handleCancel = () => {
178
+ onCancel?.()
179
+ onOpenChange(false)
180
+ }
181
+
182
+ // Determina se deve mostrar círculo (aspect ratio 1:1 por padrão)
183
+ const shouldShowCircle = showCircleGuide ?? aspectRatio === 1
184
+
185
+ // Renderiza grid, círculo e bolinhas dentro da área de crop
186
+ const renderSelectionAddon = () => (
187
+ <>
188
+ {/* Grid de 9 quadrados com linhas pontilhadas */}
189
+ <div className="crop-grid">
190
+ <div className="crop-grid-line horizontal h1" />
191
+ <div className="crop-grid-line horizontal h2" />
192
+ <div className="crop-grid-line vertical v1" />
193
+ <div className="crop-grid-line vertical v2" />
194
+ </div>
195
+ {/* Círculo inscrito */}
196
+ {shouldShowCircle && <div className="crop-circle" />}
197
+ {/* Bolinhas centrais nas bordas */}
198
+ <div className="crop-handle top" />
199
+ <div className="crop-handle bottom" />
200
+ <div className="crop-handle left" />
201
+ <div className="crop-handle right" />
202
+ </>
203
+ )
204
+
205
+ return (
206
+ <Dialog open={open} onOpenChange={onOpenChange}>
207
+ <style>{baseCropStyles}</style>
208
+ <DialogContent
209
+ className="w-full md:w-[650px]! lg:w-[650px]! max-w-[650px]! max-[650px]:w-[calc(100%-32px)] p-0 gap-0 z-[1003]!"
210
+ overlayClassName="z-[1002]!"
211
+ >
212
+ <DialogHeader className="p-5">
213
+ <DialogTitle className="text-center text-[16px]!">
214
+ Ajustar imagem
215
+ </DialogTitle>
216
+ </DialogHeader>
217
+
218
+ <div className="flex flex-col gap-4 px-5 pb-5">
219
+ <div className="flex justify-center overflow-hidden rounded-lg">
220
+ <ReactCrop
221
+ crop={crop}
222
+ onChange={(c) => setCrop(c)}
223
+ aspect={aspectRatio}
224
+ className={`max-h-[50vh] custom-crop-area ${shouldShowCircle ? 'with-circle' : ''}`}
225
+ keepSelection
226
+ minWidth={minCropWidth}
227
+ minHeight={minCropHeight}
228
+ renderSelectionAddon={renderSelectionAddon}
229
+ >
230
+ <img
231
+ ref={imgRef}
232
+ src={imageSrc}
233
+ alt="Crop"
234
+ onLoad={onImageLoad}
235
+ className="max-h-[50vh] object-contain"
236
+ />
237
+ </ReactCrop>
238
+ </div>
239
+
240
+ <p className="paragraph-small-regular text-zinc-500 text-center">
241
+ Arraste para ajustar a área de corte
242
+ </p>
243
+ </div>
244
+
245
+ <DialogFooter className="flex-row! items-center justify-start! gap-3 p-5 border-t border-zinc-200">
246
+ <Button onClick={handleConfirm}>Confirmar</Button>
247
+ <Button variant="secondary" onClick={handleCancel}>
248
+ Cancelar
249
+ </Button>
250
+ </DialogFooter>
251
+ </DialogContent>
252
+ </Dialog>
253
+ )
254
+ }
@@ -1,61 +1,61 @@
1
- 'use client'
2
-
3
- import {
4
- Dialog,
5
- DialogContent,
6
- DialogFooter,
7
- DialogHeader,
8
- DialogTitle,
9
- } from '../../ui/overlay/Dialog'
10
- import { Button } from '../../ui/buttons/Button'
11
-
12
- interface ImageTooSmallModalProps {
13
- open: boolean
14
- onOpenChange: (open: boolean) => void
15
- fileName: string
16
- minWidth: number
17
- minHeight: number
18
- onSelectAnother: () => void
19
- onCancel: () => void
20
- }
21
-
22
- export function ImageTooSmallModal({
23
- open,
24
- onOpenChange,
25
- fileName,
26
- minWidth,
27
- minHeight,
28
- onSelectAnother,
29
- onCancel,
30
- }: ImageTooSmallModalProps) {
31
- const dimensionText = `${minWidth}x${minHeight}px`
32
-
33
- return (
34
- <Dialog open={open} onOpenChange={onOpenChange}>
35
- <DialogContent
36
- className="w-full md:w-[480px]! lg:w-[480px]! max-w-[480px]! max-[480px]:w-[calc(100%-32px)] p-0 gap-0 z-[1003]!"
37
- overlayClassName="z-[1002]!"
38
- >
39
- <DialogHeader className="p-5">
40
- <DialogTitle className="text-center text-[16px]!">
41
- Foto menor que {dimensionText}
42
- </DialogTitle>
43
- </DialogHeader>
44
-
45
- <div className="px-5 pb-5">
46
- <p className="paragraph-small-regular text-zinc-600 text-center">
47
- O arquivo "{fileName}" é menor que {dimensionText}. Faça envio de
48
- uma imagem com pelo menos {dimensionText} para continuar.
49
- </p>
50
- </div>
51
-
52
- <DialogFooter className="flex-row! items-center justify-start! gap-3 p-5 border-t border-zinc-200">
53
- <Button onClick={onSelectAnother}>Enviar outra</Button>
54
- <Button variant="secondary" onClick={onCancel}>
55
- Cancelar
56
- </Button>
57
- </DialogFooter>
58
- </DialogContent>
59
- </Dialog>
60
- )
61
- }
1
+ 'use client'
2
+
3
+ import {
4
+ Dialog,
5
+ DialogContent,
6
+ DialogFooter,
7
+ DialogHeader,
8
+ DialogTitle,
9
+ } from '../../ui/overlay/Dialog'
10
+ import { Button } from '../../ui/buttons/Button'
11
+
12
+ interface ImageTooSmallModalProps {
13
+ open: boolean
14
+ onOpenChange: (open: boolean) => void
15
+ fileName: string
16
+ minWidth: number
17
+ minHeight: number
18
+ onSelectAnother: () => void
19
+ onCancel: () => void
20
+ }
21
+
22
+ export function ImageTooSmallModal({
23
+ open,
24
+ onOpenChange,
25
+ fileName,
26
+ minWidth,
27
+ minHeight,
28
+ onSelectAnother,
29
+ onCancel,
30
+ }: ImageTooSmallModalProps) {
31
+ const dimensionText = `${minWidth}x${minHeight}px`
32
+
33
+ return (
34
+ <Dialog open={open} onOpenChange={onOpenChange}>
35
+ <DialogContent
36
+ className="w-full md:w-[480px]! lg:w-[480px]! max-w-[480px]! max-[480px]:w-[calc(100%-32px)] p-0 gap-0 z-[1003]!"
37
+ overlayClassName="z-[1002]!"
38
+ >
39
+ <DialogHeader className="p-5">
40
+ <DialogTitle className="text-center text-[16px]!">
41
+ Foto menor que {dimensionText}
42
+ </DialogTitle>
43
+ </DialogHeader>
44
+
45
+ <div className="px-5 pb-5">
46
+ <p className="paragraph-small-regular text-zinc-600 text-center">
47
+ O arquivo "{fileName}" é menor que {dimensionText}. Faça envio de
48
+ uma imagem com pelo menos {dimensionText} para continuar.
49
+ </p>
50
+ </div>
51
+
52
+ <DialogFooter className="flex-row! items-center justify-start! gap-3 p-5 border-t border-zinc-200">
53
+ <Button onClick={onSelectAnother}>Enviar outra</Button>
54
+ <Button variant="secondary" onClick={onCancel}>
55
+ Cancelar
56
+ </Button>
57
+ </DialogFooter>
58
+ </DialogContent>
59
+ </Dialog>
60
+ )
61
+ }