@greatapps/common 1.1.673 → 1.1.675

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 (223) hide show
  1. package/dist/components/account/ConfigurationsMyAccountModal.mjs +6 -8
  2. package/dist/components/account/ConfigurationsMyAccountModal.mjs.map +1 -1
  3. package/dist/components/account/ConfirmDeleteAccountModal.mjs +19 -20
  4. package/dist/components/account/ConfirmDeleteAccountModal.mjs.map +1 -1
  5. package/dist/components/account/ConfirmGlobalPreferencesModal.mjs +11 -10
  6. package/dist/components/account/ConfirmGlobalPreferencesModal.mjs.map +1 -1
  7. package/dist/components/account/DeleteAccountModal.mjs +28 -34
  8. package/dist/components/account/DeleteAccountModal.mjs.map +1 -1
  9. package/dist/components/account/DisableTwoFactorAuthModal.mjs +5 -7
  10. package/dist/components/account/DisableTwoFactorAuthModal.mjs.map +1 -1
  11. package/dist/components/account/IsntPossibleDeleteAccountModal.mjs +9 -8
  12. package/dist/components/account/IsntPossibleDeleteAccountModal.mjs.map +1 -1
  13. package/dist/components/account/TwoFactorAuthModal.mjs +23 -22
  14. package/dist/components/account/TwoFactorAuthModal.mjs.map +1 -1
  15. package/dist/components/account/hooks/useChangeEmailForm.mjs +3 -5
  16. package/dist/components/account/hooks/useChangeEmailForm.mjs.map +1 -1
  17. package/dist/components/account/hooks/useChangePasswordForm.mjs +3 -26
  18. package/dist/components/account/hooks/useChangePasswordForm.mjs.map +1 -1
  19. package/dist/components/account/hooks/useChangePhoneForm.mjs +9 -18
  20. package/dist/components/account/hooks/useChangePhoneForm.mjs.map +1 -1
  21. package/dist/components/account/hooks/useDisableTwoFactorAuthForm.mjs +3 -26
  22. package/dist/components/account/hooks/useDisableTwoFactorAuthForm.mjs.map +1 -1
  23. package/dist/components/account/hooks/useOtpVerification.mjs +3 -19
  24. package/dist/components/account/hooks/useOtpVerification.mjs.map +1 -1
  25. package/dist/components/account/hooks/useTwoFactorAuthForm.mjs +4 -27
  26. package/dist/components/account/hooks/useTwoFactorAuthForm.mjs.map +1 -1
  27. package/dist/components/account/sections/ChangeEmailModal.mjs +28 -25
  28. package/dist/components/account/sections/ChangeEmailModal.mjs.map +1 -1
  29. package/dist/components/account/sections/ChangePasswordSection.mjs +6 -8
  30. package/dist/components/account/sections/ChangePasswordSection.mjs.map +1 -1
  31. package/dist/components/account/sections/ChangePhoneModal.mjs +27 -24
  32. package/dist/components/account/sections/ChangePhoneModal.mjs.map +1 -1
  33. package/dist/components/account/sections/MyProfileSection.mjs +22 -37
  34. package/dist/components/account/sections/MyProfileSection.mjs.map +1 -1
  35. package/dist/components/account/sections/PreferencesSection.mjs +24 -48
  36. package/dist/components/account/sections/PreferencesSection.mjs.map +1 -1
  37. package/dist/components/account/sections/SecuritySection.mjs +9 -11
  38. package/dist/components/account/sections/SecuritySection.mjs.map +1 -1
  39. package/dist/components/account/sections/TokenSection.mjs +8 -24
  40. package/dist/components/account/sections/TokenSection.mjs.map +1 -1
  41. package/dist/components/layouts/AppMobileNavBar.mjs +148 -2
  42. package/dist/components/layouts/AppMobileNavBar.mjs.map +1 -1
  43. package/dist/components/layouts/NavBar.mjs +3 -5
  44. package/dist/components/layouts/NavBar.mjs.map +1 -1
  45. package/dist/components/layouts/NotificationsPopover.mjs +3 -5
  46. package/dist/components/layouts/NotificationsPopover.mjs.map +1 -1
  47. package/dist/components/layouts/ProfilePopover.mjs +4 -6
  48. package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
  49. package/dist/components/layouts/UsersSelectorPopover.mjs +7 -9
  50. package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
  51. package/dist/components/modals/BuyCreditsModal.mjs +18 -17
  52. package/dist/components/modals/BuyCreditsModal.mjs.map +1 -1
  53. package/dist/components/modals/CreditsDisabledModal.mjs +4 -6
  54. package/dist/components/modals/CreditsDisabledModal.mjs.map +1 -1
  55. package/dist/components/modals/PaidPlanRequiredModal.mjs +3 -5
  56. package/dist/components/modals/PaidPlanRequiredModal.mjs.map +1 -1
  57. package/dist/components/modals/cards/AddCardModal.mjs +24 -27
  58. package/dist/components/modals/cards/AddCardModal.mjs.map +1 -1
  59. package/dist/components/modals/cards/CannotDeleteCardModal.mjs +7 -9
  60. package/dist/components/modals/cards/CannotDeleteCardModal.mjs.map +1 -1
  61. package/dist/components/modals/cards/CardFormFields.mjs +22 -25
  62. package/dist/components/modals/cards/CardFormFields.mjs.map +1 -1
  63. package/dist/components/modals/cards/DeleteCardModal.mjs +8 -10
  64. package/dist/components/modals/cards/DeleteCardModal.mjs.map +1 -1
  65. package/dist/components/navigation/CancelledSubscriptionBanner.mjs +2 -4
  66. package/dist/components/navigation/CancelledSubscriptionBanner.mjs.map +1 -1
  67. package/dist/components/navigation/OverdueInvoiceBanner.mjs +2 -4
  68. package/dist/components/navigation/OverdueInvoiceBanner.mjs.map +1 -1
  69. package/dist/components/navigation/PendingCancellationBanner.mjs +6 -4
  70. package/dist/components/navigation/PendingCancellationBanner.mjs.map +1 -1
  71. package/dist/components/navigation/ProjectSelectorPopover.mjs +6 -8
  72. package/dist/components/navigation/ProjectSelectorPopover.mjs.map +1 -1
  73. package/dist/components/navigation/UpcomingInvoiceBanner.mjs +6 -4
  74. package/dist/components/navigation/UpcomingInvoiceBanner.mjs.map +1 -1
  75. package/dist/components/navigation/subcomponents/BottomLinks.mjs +3 -5
  76. package/dist/components/navigation/subcomponents/BottomLinks.mjs.map +1 -1
  77. package/dist/components/navigation/subcomponents/CreditsCard.mjs +1 -3
  78. package/dist/components/navigation/subcomponents/CreditsCard.mjs.map +1 -1
  79. package/dist/components/navigation/subcomponents/PlanCard.mjs +1 -3
  80. package/dist/components/navigation/subcomponents/PlanCard.mjs.map +1 -1
  81. package/dist/components/navigation/subcomponents/ProjectSelector.mjs +3 -5
  82. package/dist/components/navigation/subcomponents/ProjectSelector.mjs.map +1 -1
  83. package/dist/components/pages/NotFoundPage.mjs +3 -5
  84. package/dist/components/pages/NotFoundPage.mjs.map +1 -1
  85. package/dist/components/pages/notifications/Notifications.mjs +10 -13
  86. package/dist/components/pages/notifications/Notifications.mjs.map +1 -1
  87. package/dist/components/ui/buttons/CopyButton.mjs +5 -9
  88. package/dist/components/ui/buttons/CopyButton.mjs.map +1 -1
  89. package/dist/components/ui/data-display/CardItem.mjs +5 -7
  90. package/dist/components/ui/data-display/CardItem.mjs.map +1 -1
  91. package/dist/components/ui/data-display/PaymentInfoCard.mjs +8 -10
  92. package/dist/components/ui/data-display/PaymentInfoCard.mjs.map +1 -1
  93. package/dist/components/ui/feedback/DefaultCircularProgress.mjs +1 -3
  94. package/dist/components/ui/feedback/DefaultCircularProgress.mjs.map +1 -1
  95. package/dist/components/ui/form/ComboboxField.mjs +6 -11
  96. package/dist/components/ui/form/ComboboxField.mjs.map +1 -1
  97. package/dist/components/ui/form/DatePicker.mjs +2 -5
  98. package/dist/components/ui/form/DatePicker.mjs.map +1 -1
  99. package/dist/components/ui/form/DateRangePicker.mjs +2 -5
  100. package/dist/components/ui/form/DateRangePicker.mjs.map +1 -1
  101. package/dist/components/ui/form/PhoneInput.mjs +3 -5
  102. package/dist/components/ui/form/PhoneInput.mjs.map +1 -1
  103. package/dist/components/ui/form/SelectField.mjs +3 -6
  104. package/dist/components/ui/form/SelectField.mjs.map +1 -1
  105. package/dist/components/widgets/ImageUpload/ImageCropModal.mjs +18 -11
  106. package/dist/components/widgets/ImageUpload/ImageCropModal.mjs.map +1 -1
  107. package/dist/components/widgets/ImageUpload/ImageTooSmallModal.mjs +15 -6
  108. package/dist/components/widgets/ImageUpload/ImageTooSmallModal.mjs.map +1 -1
  109. package/dist/index.mjs +2 -16
  110. package/dist/index.mjs.map +1 -1
  111. package/dist/modules/cards/hooks/handle-delete-card.hook.mjs +1 -2
  112. package/dist/modules/cards/hooks/handle-delete-card.hook.mjs.map +1 -1
  113. package/dist/modules/plans/types/plan.type.mjs +0 -3
  114. package/dist/modules/plans/types/plan.type.mjs.map +1 -1
  115. package/dist/modules/plans/utils/map-api-plan-to-ui.mjs +8 -15
  116. package/dist/modules/plans/utils/map-api-plan-to-ui.mjs.map +1 -1
  117. package/dist/providers/auth.provider.mjs +1 -9
  118. package/dist/providers/auth.provider.mjs.map +1 -1
  119. package/dist/server.mjs +0 -2
  120. package/dist/server.mjs.map +1 -1
  121. package/dist/utils/format/currency.mjs +4 -32
  122. package/dist/utils/format/currency.mjs.map +1 -1
  123. package/dist/utils/intl/locales.mjs +2 -3
  124. package/dist/utils/intl/locales.mjs.map +1 -1
  125. package/package.json +1 -7
  126. package/src/components/account/ConfigurationsMyAccountModal.tsx +6 -10
  127. package/src/components/account/ConfirmDeleteAccountModal.tsx +13 -22
  128. package/src/components/account/ConfirmGlobalPreferencesModal.tsx +10 -12
  129. package/src/components/account/DeleteAccountModal.tsx +24 -34
  130. package/src/components/account/DisableTwoFactorAuthModal.tsx +6 -11
  131. package/src/components/account/IsntPossibleDeleteAccountModal.tsx +6 -8
  132. package/src/components/account/TwoFactorAuthModal.tsx +29 -33
  133. package/src/components/account/hooks/useChangeEmailForm.tsx +3 -5
  134. package/src/components/account/hooks/useChangePasswordForm.tsx +6 -20
  135. package/src/components/account/hooks/useChangePhoneForm.tsx +10 -16
  136. package/src/components/account/hooks/useDisableTwoFactorAuthForm.tsx +6 -20
  137. package/src/components/account/hooks/useOtpVerification.tsx +4 -16
  138. package/src/components/account/hooks/useTwoFactorAuthForm.tsx +7 -21
  139. package/src/components/account/sections/ChangeEmailModal.tsx +21 -35
  140. package/src/components/account/sections/ChangePasswordSection.tsx +6 -10
  141. package/src/components/account/sections/ChangePhoneModal.tsx +22 -50
  142. package/src/components/account/sections/MyProfileSection.tsx +23 -37
  143. package/src/components/account/sections/PreferencesSection.tsx +25 -52
  144. package/src/components/account/sections/SecuritySection.tsx +10 -19
  145. package/src/components/account/sections/TokenSection.tsx +10 -22
  146. package/src/components/layouts/AppMobileNavBar.tsx +154 -1
  147. package/src/components/layouts/NavBar.tsx +3 -5
  148. package/src/components/layouts/NotificationsPopover.tsx +3 -5
  149. package/src/components/layouts/ProfilePopover.tsx +4 -6
  150. package/src/components/layouts/UsersSelectorPopover.tsx +7 -9
  151. package/src/components/modals/BuyCreditsModal.tsx +16 -18
  152. package/src/components/modals/CreditsDisabledModal.tsx +6 -6
  153. package/src/components/modals/PaidPlanRequiredModal.tsx +3 -5
  154. package/src/components/modals/cards/AddCardModal.tsx +27 -29
  155. package/src/components/modals/cards/CannotDeleteCardModal.tsx +8 -9
  156. package/src/components/modals/cards/CardFormFields.tsx +22 -25
  157. package/src/components/modals/cards/DeleteCardModal.tsx +8 -10
  158. package/src/components/navigation/CancelledSubscriptionBanner.tsx +2 -4
  159. package/src/components/navigation/OverdueInvoiceBanner.tsx +2 -4
  160. package/src/components/navigation/PendingCancellationBanner.tsx +2 -4
  161. package/src/components/navigation/ProjectSelectorPopover.tsx +6 -8
  162. package/src/components/navigation/UpcomingInvoiceBanner.tsx +2 -4
  163. package/src/components/navigation/subcomponents/BottomLinks.tsx +3 -5
  164. package/src/components/navigation/subcomponents/CreditsCard.tsx +1 -3
  165. package/src/components/navigation/subcomponents/PlanCard.tsx +1 -3
  166. package/src/components/navigation/subcomponents/ProjectSelector.tsx +3 -5
  167. package/src/components/pages/NotFoundPage.tsx +3 -5
  168. package/src/components/pages/notifications/Notifications.tsx +10 -13
  169. package/src/components/ui/buttons/CopyButton.tsx +5 -10
  170. package/src/components/ui/data-display/CardItem.tsx +5 -7
  171. package/src/components/ui/data-display/PaymentInfoCard.tsx +8 -10
  172. package/src/components/ui/feedback/DefaultCircularProgress.tsx +1 -3
  173. package/src/components/ui/form/ComboboxField.tsx +6 -11
  174. package/src/components/ui/form/DatePicker.tsx +2 -5
  175. package/src/components/ui/form/DateRangePicker.tsx +2 -5
  176. package/src/components/ui/form/PhoneInput.tsx +3 -5
  177. package/src/components/ui/form/SelectField.tsx +3 -6
  178. package/src/components/widgets/ImageUpload/ImageCropModal.tsx +11 -19
  179. package/src/components/widgets/ImageUpload/ImageTooSmallModal.tsx +5 -6
  180. package/src/index.ts +2 -12
  181. package/src/modules/cards/hooks/handle-delete-card.hook.ts +3 -8
  182. package/src/modules/plans/types/plan.type.ts +0 -3
  183. package/src/modules/plans/utils/map-api-plan-to-ui.ts +7 -30
  184. package/src/providers/auth.provider.tsx +1 -13
  185. package/src/server.ts +0 -2
  186. package/src/utils/format/currency.ts +7 -62
  187. package/src/utils/intl/locales.ts +2 -3
  188. package/dist/i18n/config.mjs +0 -13
  189. package/dist/i18n/config.mjs.map +0 -1
  190. package/dist/i18n/country-language.mjs +0 -74
  191. package/dist/i18n/country-language.mjs.map +0 -1
  192. package/dist/i18n/messages/en-us.mjs +0 -450
  193. package/dist/i18n/messages/en-us.mjs.map +0 -1
  194. package/dist/i18n/messages/es-es.mjs +0 -450
  195. package/dist/i18n/messages/es-es.mjs.map +0 -1
  196. package/dist/i18n/messages/index.mjs +0 -16
  197. package/dist/i18n/messages/index.mjs.map +0 -1
  198. package/dist/i18n/messages/pt-br.mjs +0 -463
  199. package/dist/i18n/messages/pt-br.mjs.map +0 -1
  200. package/dist/i18n/normalize.mjs +0 -12
  201. package/dist/i18n/normalize.mjs.map +0 -1
  202. package/dist/i18n/resolve-locale.mjs +0 -42
  203. package/dist/i18n/resolve-locale.mjs.map +0 -1
  204. package/dist/i18n.mjs +0 -14
  205. package/dist/i18n.mjs.map +0 -1
  206. package/dist/modules/accounts/hooks/use-currency-formatter.hook.mjs +0 -20
  207. package/dist/modules/accounts/hooks/use-currency-formatter.hook.mjs.map +0 -1
  208. package/dist/utils/intl/cookie-domain.mjs +0 -17
  209. package/dist/utils/intl/cookie-domain.mjs.map +0 -1
  210. package/dist/utils/intl/locale-cookie.mjs +0 -13
  211. package/dist/utils/intl/locale-cookie.mjs.map +0 -1
  212. package/src/i18n/config.ts +0 -17
  213. package/src/i18n/country-language.ts +0 -60
  214. package/src/i18n/messages/en-us.ts +0 -468
  215. package/src/i18n/messages/es-es.ts +0 -469
  216. package/src/i18n/messages/index.ts +0 -24
  217. package/src/i18n/messages/pt-br.ts +0 -492
  218. package/src/i18n/normalize.ts +0 -15
  219. package/src/i18n/resolve-locale.ts +0 -77
  220. package/src/i18n.ts +0 -10
  221. package/src/modules/accounts/hooks/use-currency-formatter.hook.tsx +0 -32
  222. package/src/utils/intl/cookie-domain.ts +0 -29
  223. package/src/utils/intl/locale-cookie.ts +0 -18
@@ -16,7 +16,6 @@ import {
16
16
  CardExpiryElement,
17
17
  CardNumberElement,
18
18
  } from "@stripe/react-stripe-js";
19
- import { useTranslations } from "next-intl";
20
19
 
21
20
  const stripeElementOptions = {
22
21
  style: {
@@ -92,7 +91,6 @@ export function CardFormFields({
92
91
  onStripeChange,
93
92
  stripeErrors,
94
93
  }: CardFormFieldsProps) {
95
- const translate = useTranslations();
96
94
  const {
97
95
  register,
98
96
  watch,
@@ -105,8 +103,8 @@ export function CardFormFields({
105
103
  return (
106
104
  <div className="flex flex-col gap-5">
107
105
  <FormField
108
- label={translate('common.cards.form.nameOnCard')}
109
- placeholder={translate('common.cards.form.typeHere')}
106
+ label="Nome impresso no cartão"
107
+ placeholder="Digite aqui"
110
108
  {...register("name")}
111
109
  error={!!errors.name}
112
110
  errorMessage={errors.name?.message}
@@ -114,7 +112,7 @@ export function CardFormFields({
114
112
 
115
113
  <div className="flex flex-col gap-1.5">
116
114
  <label className="paragraph-xsmall-semibold text-zinc-600">
117
- {translate('common.cards.form.cardNumber')}
115
+ Número do cartão
118
116
  </label>
119
117
  <div className="h-10 px-3 flex items-center w-full border border-zinc-200 rounded-lg bg-white transition-colors focus-within:border-zinc-400 relative">
120
118
  <div className="w-full">
@@ -136,7 +134,7 @@ export function CardFormFields({
136
134
  <div className="flex gap-4">
137
135
  <div className="flex-1 flex flex-col gap-1.5">
138
136
  <label className="paragraph-xsmall-semibold text-zinc-600">
139
- {translate('common.cards.form.cardExpiry')}
137
+ Data de validade
140
138
  </label>
141
139
  <div className="h-10 px-3 flex items-center w-full border border-zinc-200 rounded-lg bg-white transition-colors focus-within:border-zinc-400">
142
140
  <div className="w-full">
@@ -156,7 +154,7 @@ export function CardFormFields({
156
154
  </div>
157
155
 
158
156
  <div className="flex-1 flex flex-col gap-1.5">
159
- <label className="paragraph-xsmall-semibold text-zinc-600">{translate('common.cards.form.cardCvc')}</label>
157
+ <label className="paragraph-xsmall-semibold text-zinc-600">CVC</label>
160
158
  <div className="h-10 px-3 flex items-center w-full border border-zinc-200 rounded-lg bg-white transition-colors focus-within:border-zinc-400">
161
159
  <div className="w-full">
162
160
  <CardCvcElement
@@ -176,8 +174,8 @@ export function CardFormFields({
176
174
  </div>
177
175
 
178
176
  <SelectField
179
- label={translate('common.cards.form.country')}
180
- placeholder={translate('common.cards.form.select')}
177
+ label="País"
178
+ placeholder="Selecione"
181
179
  value={watch("country")}
182
180
  onChange={(value) => setValue("country", value as string)}
183
181
  options={COUNTRIES.map((c) => ({ value: c.iso, label: c.name }))}
@@ -185,8 +183,8 @@ export function CardFormFields({
185
183
 
186
184
  <div className="flex gap-4">
187
185
  <SelectField
188
- label={translate('common.cards.form.personType')}
189
- placeholder={translate('common.cards.form.select')}
186
+ label="Tipo de pessoa"
187
+ placeholder="Selecione"
190
188
  value={personType}
191
189
  onChange={(value) => {
192
190
  setValue("personType", value as "pf" | "pj");
@@ -194,15 +192,15 @@ export function CardFormFields({
194
192
  setValue("cnpj", "");
195
193
  }}
196
194
  options={[
197
- { value: "pf", label: translate('common.cards.form.personTypePf') },
198
- { value: "pj", label: translate('common.cards.form.personTypePj') },
195
+ { value: "pf", label: "Pessoa física" },
196
+ { value: "pj", label: "Pessoa jurídica" },
199
197
  ]}
200
198
  containerClassName="flex-1"
201
199
  />
202
200
  <div className="flex-1">
203
201
  {personType === "pj" ? (
204
202
  <FormField
205
- label={translate('common.cards.form.cnpj')}
203
+ label="CNPJ"
206
204
  placeholder="__.___.___/____-__"
207
205
  {...register("cnpj", {
208
206
  onChange: (e) => {
@@ -214,7 +212,7 @@ export function CardFormFields({
214
212
  />
215
213
  ) : (
216
214
  <FormField
217
- label={translate('common.cards.form.cpf')}
215
+ label="CPF"
218
216
  placeholder="___.___.___-__"
219
217
  {...register("cpf", {
220
218
  onChange: (e) => {
@@ -236,7 +234,6 @@ type BillingFormFieldsProps = {
236
234
  };
237
235
 
238
236
  export function BillingFormFields({ form }: BillingFormFieldsProps) {
239
- const translate = useTranslations();
240
237
  const {
241
238
  register,
242
239
  setValue,
@@ -267,15 +264,15 @@ export function BillingFormFields({ form }: BillingFormFieldsProps) {
267
264
  return (
268
265
  <div className="flex flex-col gap-5">
269
266
  <FormField
270
- label={translate('common.cards.form.fullName')}
271
- placeholder={translate('common.cards.form.typeHere')}
267
+ label="Nome completo"
268
+ placeholder="Digite aqui"
272
269
  {...register("fullName")}
273
270
  error={!!errors.fullName}
274
271
  errorMessage={errors.fullName?.message}
275
272
  />
276
273
 
277
274
  <FormField
278
- label={translate('common.cards.form.cep')}
275
+ label="CEP"
279
276
  placeholder="_____-___"
280
277
  {...register("cep", {
281
278
  onChange: (e) => handleCepChange(e.target.value),
@@ -287,7 +284,7 @@ export function BillingFormFields({ form }: BillingFormFieldsProps) {
287
284
  <div className="flex gap-4">
288
285
  <div className="flex-[4]">
289
286
  <FormField
290
- label={translate('common.cards.form.street')}
287
+ label="Endereço"
291
288
  placeholder=""
292
289
  {...register("street")}
293
290
  error={!!errors.street}
@@ -296,7 +293,7 @@ export function BillingFormFields({ form }: BillingFormFieldsProps) {
296
293
  </div>
297
294
  <div className="flex-[1]">
298
295
  <FormField
299
- label={translate('common.cards.form.streetNumber')}
296
+ label="Número"
300
297
  placeholder=""
301
298
  {...register("streetNumber")}
302
299
  error={!!errors.streetNumber}
@@ -308,7 +305,7 @@ export function BillingFormFields({ form }: BillingFormFieldsProps) {
308
305
  <div className="flex gap-4">
309
306
  <div className="flex-1">
310
307
  <FormField
311
- label={translate('common.cards.form.city')}
308
+ label="Cidade"
312
309
  placeholder=""
313
310
  {...register("city")}
314
311
  error={!!errors.city}
@@ -317,7 +314,7 @@ export function BillingFormFields({ form }: BillingFormFieldsProps) {
317
314
  </div>
318
315
  <div className="flex-1">
319
316
  <FormField
320
- label={translate('common.cards.form.state')}
317
+ label="UF"
321
318
  placeholder=""
322
319
  {...register("state")}
323
320
  error={!!errors.state}
@@ -328,14 +325,14 @@ export function BillingFormFields({ form }: BillingFormFieldsProps) {
328
325
 
329
326
  <div className="flex gap-4">
330
327
  <FormField
331
- label={translate('common.cards.form.neighborhood')}
328
+ label="Bairro"
332
329
  placeholder=""
333
330
  {...register("neighborhood")}
334
331
  error={!!errors.neighborhood}
335
332
  errorMessage={errors.neighborhood?.message}
336
333
  />
337
334
  <FormField
338
- label={translate('common.cards.form.complement')}
335
+ label="Complemento"
339
336
  optional
340
337
  placeholder=""
341
338
  {...register("complement")}
@@ -17,10 +17,8 @@ import { useModalManager } from '../../../store/useModalManager';
17
17
  import { useDeleteConfirmation } from '../../../modules/cards/hooks/delete-confirmation.hook';
18
18
  import { useDeleteCard } from '../../../modules/cards/hooks/delete-card.hook';
19
19
  import { useCards } from '../../../modules/cards/hooks/cards.hook';
20
- import { useTranslations } from 'next-intl';
21
20
 
22
21
  export function DeleteCardModal() {
23
- const translate = useTranslations();
24
22
  const { activeModal, modalData, closeModal } = useModalManager();
25
23
  const { form, isValidConfirmation, resetConfirmation } = useDeleteConfirmation();
26
24
  const deleteCard = useDeleteCard();
@@ -52,7 +50,7 @@ export function DeleteCardModal() {
52
50
  message={
53
51
  error instanceof Error
54
52
  ? error.message
55
- : translate('common.cards.delete.errorToast')
53
+ : 'Não foi possível excluir o cartão'
56
54
  }
57
55
  />
58
56
  ),
@@ -69,7 +67,7 @@ export function DeleteCardModal() {
69
67
  (t) => (
70
68
  <Toast
71
69
  variant="success"
72
- message={translate('common.cards.delete.successToast', { digits: cardLastDigits })}
70
+ message={`O cartão •••• ${cardLastDigits} foi excluído com sucesso`}
73
71
  toastId={t}
74
72
  />
75
73
  ),
@@ -87,10 +85,10 @@ export function DeleteCardModal() {
87
85
  </div>
88
86
  <div className="flex flex-col gap-2">
89
87
  <DialogTitle className="paragraph-medium-semibold text-zinc-950">
90
- {translate('common.cards.delete.title')}
88
+ Excluir cartão
91
89
  </DialogTitle>
92
90
  <DialogDescription className="paragraph-small-regular text-zinc-600">
93
- {translate('common.cards.delete.description')}{' '}
91
+ Deseja realmente excluir o cartão:{' '}
94
92
  <span className="font-semibold text-zinc-950">
95
93
  •••• {cardLastDigits}
96
94
  </span>
@@ -101,9 +99,9 @@ export function DeleteCardModal() {
101
99
 
102
100
  <div className="px-4 lg:px-5 py-5">
103
101
  <FormField
104
- label={translate('common.cards.delete.confirmLabel')}
102
+ label="Digite EXCLUIR abaixo"
105
103
  required
106
- placeholder={translate('common.cards.delete.confirmPlaceholder')}
104
+ placeholder="EXCLUIR"
107
105
  {...form.register('confirmText')}
108
106
  />
109
107
  </div>
@@ -115,7 +113,7 @@ export function DeleteCardModal() {
115
113
  loading={form.formState.isSubmitting}
116
114
  className="h-10!"
117
115
  >
118
- {form.formState.isSubmitting ? translate('common.cards.delete.deleting') : translate('common.actions.delete')}
116
+ {form.formState.isSubmitting ? 'Excluindo...' : 'Excluir'}
119
117
  </Button>
120
118
  <Button
121
119
  type="button"
@@ -124,7 +122,7 @@ export function DeleteCardModal() {
124
122
  onClick={handleClose}
125
123
  disabled={form.formState.isSubmitting}
126
124
  >
127
- {translate('common.actions.cancel')}
125
+ Cancelar
128
126
  </Button>
129
127
  </div>
130
128
  </form>
@@ -5,14 +5,12 @@ import { IconAlertOctagon, IconX } from '@tabler/icons-react';
5
5
  import { useActiveSubscription } from '../../modules/subscriptions/hooks/find-active-subscription.hook';
6
6
  import { toCalendarDate } from '../../infra/utils/date';
7
7
  import { getSubscriptionExpiryDate } from '../../modules/subscriptions/utils/get-subscription-expiry-date';
8
- import { useTranslations } from 'next-intl';
9
8
 
10
9
  interface CancelledSubscriptionBannerProps {
11
10
  onReactivate?: () => void;
12
11
  }
13
12
 
14
13
  export function CancelledSubscriptionBanner({ onReactivate }: CancelledSubscriptionBannerProps) {
15
- const translate = useTranslations();
16
14
  const { data: { data: [subscription] = [] } = {} } = useActiveSubscription();
17
15
  const [visible, setVisible] = useState(true);
18
16
  const [animated, setAnimated] = useState(false);
@@ -42,7 +40,7 @@ export function CancelledSubscriptionBanner({ onReactivate }: CancelledSubscript
42
40
  <div className="flex items-center gap-2 flex-1 w-full sm:w-auto">
43
41
  <IconAlertOctagon size={16} className="text-white shrink-0" />
44
42
  <span className="paragraph-xsmall-semibold text-white">
45
- {translate('common.navigation.banners.cancelled.message')}
43
+ Assinatura cancelada! Suas páginas foram retiradas do ar.
46
44
  </span>
47
45
  </div>
48
46
  <div className="flex items-center gap-1.5 w-full sm:w-auto justify-between sm:justify-start">
@@ -52,7 +50,7 @@ export function CancelledSubscriptionBanner({ onReactivate }: CancelledSubscript
52
50
  onClick={onReactivate}
53
51
  >
54
52
  <span className="paragraph-xsmall-semibold text-white underline">
55
- {translate('common.navigation.banners.cancelled.choosePlan')}
53
+ Escolher um novo plano
56
54
  </span>
57
55
  </button>
58
56
  <button type="button" className="cursor-pointer shrink-0" onClick={dismiss}>
@@ -2,14 +2,12 @@
2
2
 
3
3
  import { useState, useEffect, useCallback } from 'react';
4
4
  import { IconAlertTriangle, IconX } from '@tabler/icons-react';
5
- import { useTranslations } from 'next-intl';
6
5
 
7
6
  interface OverdueInvoiceBannerProps {
8
7
  onDetails?: () => void;
9
8
  }
10
9
 
11
10
  export function OverdueInvoiceBanner({ onDetails }: OverdueInvoiceBannerProps) {
12
- const translate = useTranslations();
13
11
  const [visible, setVisible] = useState(true);
14
12
  const [animated, setAnimated] = useState(false);
15
13
 
@@ -30,7 +28,7 @@ export function OverdueInvoiceBanner({ onDetails }: OverdueInvoiceBannerProps) {
30
28
  <div className="flex items-center gap-2 flex-1 w-full sm:w-auto">
31
29
  <IconAlertTriangle size={16} className="text-white shrink-0" />
32
30
  <span className="paragraph-xsmall-semibold text-white">
33
- {translate('common.navigation.banners.overdue.message')}
31
+ Sua assinatura está atrasada e suas páginas podem ser retiradas do ar a qualquer momento.
34
32
  </span>
35
33
  </div>
36
34
  <div className="flex items-center gap-1.5 w-full sm:w-auto justify-between sm:justify-start">
@@ -39,7 +37,7 @@ export function OverdueInvoiceBanner({ onDetails }: OverdueInvoiceBannerProps) {
39
37
  className="flex items-center justify-center p-1.5 cursor-pointer"
40
38
  onClick={onDetails}
41
39
  >
42
- <span className="paragraph-xsmall-semibold text-white underline">{translate('common.navigation.banners.overdue.details')}</span>
40
+ <span className="paragraph-xsmall-semibold text-white underline">Detalhes</span>
43
41
  </button>
44
42
  <button type="button" className="cursor-pointer shrink-0" onClick={dismiss}>
45
43
  <IconX size={18} className="text-orange-200" />
@@ -3,7 +3,6 @@
3
3
  import { useState, useEffect, useCallback } from 'react';
4
4
  import { IconAlertTriangle, IconX } from '@tabler/icons-react';
5
5
  import { formatShortDate } from '../../infra/utils/date';
6
- import { useTranslations } from 'next-intl';
7
6
 
8
7
  interface PendingCancellationBannerProps {
9
8
  limitDate?: Date | null;
@@ -14,7 +13,6 @@ export function PendingCancellationBanner({
14
13
  limitDate,
15
14
  onReactivate,
16
15
  }: PendingCancellationBannerProps) {
17
- const translate = useTranslations();
18
16
  const [visible, setVisible] = useState(true);
19
17
  const [animated, setAnimated] = useState(false);
20
18
 
@@ -37,7 +35,7 @@ export function PendingCancellationBanner({
37
35
  <div className="flex items-center gap-2 flex-1 w-full sm:w-auto">
38
36
  <IconAlertTriangle size={16} className="text-zinc-950 shrink-0" />
39
37
  <span className="paragraph-xsmall-semibold text-zinc-950">
40
- {translate('common.navigation.banners.pending.message', { limitDate: formattedLimitDate ?? '' })}
38
+ Sua assinatura foi cancelada, você possui até {formattedLimitDate} com suas páginas online.
41
39
  </span>
42
40
  </div>
43
41
  <div className="flex items-center gap-1.5 w-full sm:w-auto justify-between sm:justify-start">
@@ -47,7 +45,7 @@ export function PendingCancellationBanner({
47
45
  onClick={onReactivate}
48
46
  >
49
47
  <span className="paragraph-xsmall-semibold text-zinc-950 underline">
50
- {translate('common.navigation.banners.pending.reactivate')}
48
+ Reativar assinatura
51
49
  </span>
52
50
  </button>
53
51
  <button type="button" className="cursor-pointer shrink-0" onClick={dismiss}>
@@ -1,7 +1,6 @@
1
1
  'use client';
2
2
 
3
3
  import { Dispatch, RefObject, SetStateAction, UIEvent, useCallback } from 'react';
4
- import { useTranslations } from 'next-intl';
5
4
  import {
6
5
  Button,
7
6
  Command,
@@ -62,7 +61,6 @@ export function ProjectSelectorPopover({
62
61
  onSearchChange,
63
62
  children,
64
63
  }: ProjectSelectorPopoverProps) {
65
- const translate = useTranslations();
66
64
  const handleListScroll = useCallback((event: UIEvent<HTMLDivElement>) => {
67
65
  if (!hasNextPage || isFetchingNextPage || !onLoadMore) return;
68
66
 
@@ -98,10 +96,10 @@ export function ProjectSelectorPopover({
98
96
  >
99
97
  <div className="flex flex-col p-3 gap-2">
100
98
  <div className="flex items-center justify-between">
101
- <span className="paragraph-small-semibold">{translate('common.navigation.projectSelector.title')}</span>
99
+ <span className="paragraph-small-semibold">Projetos</span>
102
100
  </div>
103
101
  <Command className="gap-2" defaultValue=" " shouldFilter={!onSearchChange} value=" " onValueChange={() => {}}>
104
- <CommandInput placeholder={translate('common.navigation.projectSelector.searchPlaceholder')} value={search} onValueChange={onSearchChange} />
102
+ <CommandInput placeholder="Busque aqui" value={search} onValueChange={onSearchChange} />
105
103
  <CommandList
106
104
  className="custom-scrollbar paragraph-small-medium text-gray-600 max-h-[227px]"
107
105
  onScroll={handleListScroll}
@@ -117,14 +115,14 @@ export function ProjectSelectorPopover({
117
115
  <div className="flex flex-col items-center justify-center gap-2 h-full text-gray-400 py-4">
118
116
  <IconFolderOpen size={28} className="text-gray-300" />
119
117
  <span className="paragraph-small-medium text-center text-gray-500">
120
- {translate('common.navigation.projectSelector.emptyLine1')}
118
+ Nenhum projeto encontrado.
121
119
  <br />
122
- {translate('common.navigation.projectSelector.emptyLine2')}
120
+ Crie um projeto para começar.
123
121
  </span>
124
122
  </div>
125
123
  ) : (
126
124
  <>
127
- <CommandEmpty>{translate('common.navigation.projectSelector.noResults')}</CommandEmpty>
125
+ <CommandEmpty>Nenhum resultado encontrado.</CommandEmpty>
128
126
  {projects.map((project) => {
129
127
  const isSelected = selectedProject?.id === project.id;
130
128
  return (
@@ -169,7 +167,7 @@ export function ProjectSelectorPopover({
169
167
  className="h-10! paragraph-small-medium text-gray-600 hover:text-gray-950 hover:bg-zinc-50 w-full justify-center"
170
168
  onClick={onManageProjects}
171
169
  >
172
- {translate('common.navigation.projectSelector.manageProjects')}
170
+ Gerenciar projetos
173
171
  </Button>
174
172
  </>
175
173
  )}
@@ -3,7 +3,6 @@
3
3
  import { useState, useEffect, useCallback } from 'react';
4
4
  import { IconAlertTriangle, IconX } from '@tabler/icons-react';
5
5
  import { formatShortDate } from '../../infra/utils/date';
6
- import { useTranslations } from 'next-intl';
7
6
 
8
7
  interface UpcomingInvoiceBannerProps {
9
8
  dueDate?: Date | null;
@@ -11,7 +10,6 @@ interface UpcomingInvoiceBannerProps {
11
10
  }
12
11
 
13
12
  export function UpcomingInvoiceBanner({ dueDate, onDetails }: UpcomingInvoiceBannerProps) {
14
- const translate = useTranslations();
15
13
  const [visible, setVisible] = useState(true);
16
14
  const [animated, setAnimated] = useState(false);
17
15
 
@@ -34,7 +32,7 @@ export function UpcomingInvoiceBanner({ dueDate, onDetails }: UpcomingInvoiceBan
34
32
  <div className="flex items-center gap-2 flex-1 w-full sm:w-auto">
35
33
  <IconAlertTriangle size={16} className="text-zinc-950 shrink-0" />
36
34
  <span className="paragraph-xsmall-semibold text-zinc-950">
37
- {translate('common.navigation.banners.upcoming.message', { dueDate: formattedDueDate ?? '' })}
35
+ Fatura em aberto. Pague até {formattedDueDate} para evitar a suspensão das suas páginas.
38
36
  </span>
39
37
  </div>
40
38
  <div className="flex items-center gap-1.5 w-full sm:w-auto justify-between sm:justify-start">
@@ -43,7 +41,7 @@ export function UpcomingInvoiceBanner({ dueDate, onDetails }: UpcomingInvoiceBan
43
41
  className="flex items-center justify-center p-1.5 cursor-pointer"
44
42
  onClick={onDetails}
45
43
  >
46
- <span className="paragraph-xsmall-semibold text-zinc-950 underline">{translate('common.navigation.banners.upcoming.details')}</span>
44
+ <span className="paragraph-xsmall-semibold text-zinc-950 underline">Detalhes</span>
47
45
  </button>
48
46
  <button type="button" className="cursor-pointer shrink-0" onClick={dismiss}>
49
47
  <IconX size={18} className="text-zinc-700" />
@@ -2,7 +2,6 @@
2
2
 
3
3
  import { IconHelp, IconBulb, IconStar, type TablerIcon } from '@tabler/icons-react';
4
4
  import { useIsDefaultWhitelabel, useWhitelabel } from '../../../providers/whitelabel.provider';
5
- import { useTranslations } from 'next-intl';
6
5
 
7
6
  interface BottomLink {
8
7
  label: string;
@@ -18,7 +17,6 @@ function openFrillWidget() {
18
17
  }
19
18
 
20
19
  export function BottomLinks() {
21
- const translate = useTranslations();
22
20
  const { whitelabel } = useWhitelabel();
23
21
  const isMainWhitelabel = useIsDefaultWhitelabel();
24
22
 
@@ -28,7 +26,7 @@ export function BottomLinks() {
28
26
  ...(isMainWhitelabel
29
27
  ? [
30
28
  {
31
- label: translate('common.navigation.bottomLinks.news'),
29
+ label: 'Novidades',
32
30
  icon: IconStar,
33
31
  className: 'novidades',
34
32
  onClick: openFrillWidget,
@@ -36,14 +34,14 @@ export function BottomLinks() {
36
34
  ]
37
35
  : []),
38
36
  {
39
- label: translate('common.navigation.bottomLinks.helpCenter'),
37
+ label: 'Central de ajuda',
40
38
  icon: IconHelp,
41
39
  href: helpUrl,
42
40
  },
43
41
  ...(isMainWhitelabel
44
42
  ? [
45
43
  {
46
- label: translate('common.navigation.bottomLinks.sendSuggestions'),
44
+ label: 'Enviar sugestões',
47
45
  icon: IconBulb,
48
46
  href: 'https://ideias.greatpages.com.br/b/y0geg1ve/feature-ideas',
49
47
  },
@@ -2,7 +2,6 @@
2
2
 
3
3
  import { useAppNavigationContext } from '../AppNavigationContext';
4
4
  import { Progress } from '../../../index';
5
- import { useTranslations } from 'next-intl';
6
5
  import { useBuyCreditsModal } from '../../../store/useBuyCreditsModal';
7
6
  import { useCreditsDisabledModal } from '../../../store/useCreditsDisabledModal';
8
7
  import { useAuth } from '../../../providers/auth.provider';
@@ -14,7 +13,6 @@ export interface CreditsCardProps {
14
13
  }
15
14
 
16
15
  export function CreditsCard({ used, total, onClick }: CreditsCardProps) {
17
- const translate = useTranslations();
18
16
  const { breakpoint } = useAppNavigationContext();
19
17
  const { openModal } = useBuyCreditsModal();
20
18
  const { openModal: openDisabledModal } = useCreditsDisabledModal();
@@ -37,7 +35,7 @@ export function CreditsCard({ used, total, onClick }: CreditsCardProps) {
37
35
  onClick={handleClick}
38
36
  >
39
37
  <div className="flex items-center justify-between">
40
- <span className="paragraph-xsmall-semibold text-white">{translate('common.navigation.creditsCard.label')}</span>
38
+ <span className="paragraph-xsmall-semibold text-white">Créditos usados</span>
41
39
  <span className="paragraph-xsmall-medium text-white/50">{used} / {total}</span>
42
40
  </div>
43
41
  <Progress className="bg-white/10 h-[6px]" indicatorColor="bg-white" value={Math.round((used / total) * 100)} />
@@ -1,7 +1,6 @@
1
1
  'use client';
2
2
 
3
3
  import { Button, Progress } from '../../../index';
4
- import { useTranslations } from 'next-intl';
5
4
 
6
5
  export interface PlanCardProps {
7
6
  planName: string;
@@ -11,7 +10,6 @@ export interface PlanCardProps {
11
10
  }
12
11
 
13
12
  export function PlanCard({ planName, trialLabel, progressValue, onKnowPlans }: PlanCardProps) {
14
- const translate = useTranslations();
15
13
  return (
16
14
  <div className="flex flex-col rounded-md p-4 gap-4 bg-gray-50">
17
15
  <div className="flex flex-col gap-1">
@@ -24,7 +22,7 @@ export function PlanCard({ planName, trialLabel, progressValue, onKnowPlans }: P
24
22
  className="paragraph-small-semibold text-gray-950"
25
23
  onClick={onKnowPlans}
26
24
  >
27
- {translate('common.navigation.planCard.knowPlans')}
25
+ Conheça os planos
28
26
  </Button>
29
27
  </div>
30
28
  );
@@ -1,7 +1,6 @@
1
1
  'use client';
2
2
 
3
3
  import { useState, useRef, useEffect, useMemo, RefObject } from 'react';
4
- import { useTranslations } from 'next-intl';
5
4
  import { useMobileNavbarSheet } from '../../../store/useMobileNavbarSheet';
6
5
  import { useAppNavigationContext } from '../AppNavigationContext';
7
6
  import { ProjectSelectorPopover } from '../ProjectSelectorPopover';
@@ -31,7 +30,6 @@ export function ProjectSelector({
31
30
  onSelectProject,
32
31
  onManageProjects,
33
32
  }: ProjectSelectorProps) {
34
- const translate = useTranslations();
35
33
  const isMainWhitelabel = useIsDefaultWhitelabel();
36
34
  const { breakpoint } = useAppNavigationContext();
37
35
  const [isPopoverOpen, setIsPopoverOpen] = useState(false);
@@ -126,10 +124,10 @@ export function ProjectSelector({
126
124
  {activeSection === 'projects' && (
127
125
  <div className="flex flex-col p-3 gap-2 border border-gray-200 rounded-lg animate-in fade-in duration-400">
128
126
  <div className="flex items-center justify-between">
129
- <span className="paragraph-small-semibold">{translate('common.navigation.projectSelector.title')}</span>
127
+ <span className="paragraph-small-semibold">Projetos</span>
130
128
  </div>
131
129
  <Command className="gap-2" shouldFilter={false}>
132
- <CommandInput placeholder={translate('common.navigation.projectSelector.searchPlaceholder')} value={search} onValueChange={setSearch} />
130
+ <CommandInput placeholder="Busque aqui" value={search} onValueChange={setSearch} />
133
131
  <CommandList
134
132
  className="custom-scrollbar paragraph-small-medium text-gray-600 h-[227px]"
135
133
  onScroll={(event) => {
@@ -143,7 +141,7 @@ export function ProjectSelector({
143
141
  }
144
142
  }}
145
143
  >
146
- <CommandEmpty>{translate('common.navigation.projectSelector.noResults')}</CommandEmpty>
144
+ <CommandEmpty>Nenhum resultado encontrado.</CommandEmpty>
147
145
  {showListSkeleton ? (
148
146
  <>
149
147
  <ProjectItemSkeleton />
@@ -2,7 +2,6 @@
2
2
 
3
3
  import Image from "next/image";
4
4
  import { useEffect } from "react";
5
- import { useTranslations } from "next-intl";
6
5
  import { useRouter } from "next/navigation";
7
6
  import { useWhitelabel, useIsDefaultWhitelabel } from "../../providers/whitelabel.provider";
8
7
  import { Button } from "../ui/buttons/Button";
@@ -19,7 +18,6 @@ function GreatAppsLogo() {
19
18
  }
20
19
 
21
20
  export function NotFoundPage() {
22
- const translate = useTranslations();
23
21
  const router = useRouter();
24
22
 
25
23
  useEffect(() => {
@@ -49,11 +47,11 @@ export function NotFoundPage() {
49
47
  </div>
50
48
 
51
49
  <h1 className="max-w-[554px] px-6 font-[family-name:var(--font-outfit)] text-[32px] leading-[36px] font-semibold text-zinc-950 sm:px-0 sm:text-[56px] sm:leading-[56px]">
52
- {translate('common.notFound.title')}
50
+ Página não foi encontrada!
53
51
  </h1>
54
52
 
55
53
  <p className="max-w-[496px] px-6 paragraph-medium-medium text-zinc-950 sm:px-0">
56
- {translate('common.notFound.description')}
54
+ A página que você está procurando não existe. Verifique se digitou corretamente o link que está procurando.
57
55
  </p>
58
56
 
59
57
  <Button
@@ -67,7 +65,7 @@ export function NotFoundPage() {
67
65
  }
68
66
  }}
69
67
  >
70
- {translate('common.notFound.backToHome')}
68
+ Voltar para o início
71
69
  </Button>
72
70
  </div>
73
71
  </div>