@greatapps/common 1.1.670 → 1.1.672
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.
- package/dist/components/layouts/NavBar.mjs +5 -3
- package/dist/components/layouts/NavBar.mjs.map +1 -1
- package/dist/components/layouts/NotificationsPopover.mjs +5 -3
- package/dist/components/layouts/NotificationsPopover.mjs.map +1 -1
- package/dist/components/layouts/ProfilePopover.mjs +6 -4
- package/dist/components/layouts/ProfilePopover.mjs.map +1 -1
- package/dist/components/layouts/UsersSelectorPopover.mjs +9 -7
- package/dist/components/layouts/UsersSelectorPopover.mjs.map +1 -1
- package/dist/components/modals/BuyCreditsModal.mjs +17 -18
- package/dist/components/modals/BuyCreditsModal.mjs.map +1 -1
- package/dist/components/modals/CreditsDisabledModal.mjs +6 -4
- package/dist/components/modals/CreditsDisabledModal.mjs.map +1 -1
- package/dist/components/modals/PaidPlanRequiredModal.mjs +5 -3
- package/dist/components/modals/PaidPlanRequiredModal.mjs.map +1 -1
- package/dist/components/modals/cards/AddCardModal.mjs +27 -24
- package/dist/components/modals/cards/AddCardModal.mjs.map +1 -1
- package/dist/components/modals/cards/CannotDeleteCardModal.mjs +9 -7
- package/dist/components/modals/cards/CannotDeleteCardModal.mjs.map +1 -1
- package/dist/components/modals/cards/CardFormFields.mjs +25 -22
- package/dist/components/modals/cards/CardFormFields.mjs.map +1 -1
- package/dist/components/modals/cards/DeleteCardModal.mjs +10 -8
- package/dist/components/modals/cards/DeleteCardModal.mjs.map +1 -1
- package/dist/components/navigation/CancelledSubscriptionBanner.mjs +4 -2
- package/dist/components/navigation/CancelledSubscriptionBanner.mjs.map +1 -1
- package/dist/components/navigation/OverdueInvoiceBanner.mjs +4 -2
- package/dist/components/navigation/OverdueInvoiceBanner.mjs.map +1 -1
- package/dist/components/navigation/PendingCancellationBanner.mjs +4 -6
- package/dist/components/navigation/PendingCancellationBanner.mjs.map +1 -1
- package/dist/components/navigation/ProjectSelectorPopover.mjs +8 -6
- package/dist/components/navigation/ProjectSelectorPopover.mjs.map +1 -1
- package/dist/components/navigation/UpcomingInvoiceBanner.mjs +4 -6
- package/dist/components/navigation/UpcomingInvoiceBanner.mjs.map +1 -1
- package/dist/components/navigation/subcomponents/BottomLinks.mjs +5 -3
- package/dist/components/navigation/subcomponents/BottomLinks.mjs.map +1 -1
- package/dist/components/navigation/subcomponents/CreditsCard.mjs +3 -1
- package/dist/components/navigation/subcomponents/CreditsCard.mjs.map +1 -1
- package/dist/components/navigation/subcomponents/PlanCard.mjs +3 -1
- package/dist/components/navigation/subcomponents/PlanCard.mjs.map +1 -1
- package/dist/components/navigation/subcomponents/ProjectSelector.mjs +5 -3
- package/dist/components/navigation/subcomponents/ProjectSelector.mjs.map +1 -1
- package/dist/components/pages/NotFoundPage.mjs +5 -3
- package/dist/components/pages/NotFoundPage.mjs.map +1 -1
- package/dist/components/pages/notifications/Notifications.mjs +13 -10
- package/dist/components/pages/notifications/Notifications.mjs.map +1 -1
- package/dist/components/ui/buttons/CopyButton.mjs +9 -5
- package/dist/components/ui/buttons/CopyButton.mjs.map +1 -1
- package/dist/components/ui/data-display/CardItem.mjs +7 -5
- package/dist/components/ui/data-display/CardItem.mjs.map +1 -1
- package/dist/components/ui/data-display/PaymentInfoCard.mjs +10 -8
- package/dist/components/ui/data-display/PaymentInfoCard.mjs.map +1 -1
- package/dist/components/ui/feedback/DefaultCircularProgress.mjs +3 -1
- package/dist/components/ui/feedback/DefaultCircularProgress.mjs.map +1 -1
- package/dist/components/ui/form/ComboboxField.mjs +11 -6
- package/dist/components/ui/form/ComboboxField.mjs.map +1 -1
- package/dist/components/ui/form/DatePicker.mjs +5 -2
- package/dist/components/ui/form/DatePicker.mjs.map +1 -1
- package/dist/components/ui/form/DateRangePicker.mjs +5 -2
- package/dist/components/ui/form/DateRangePicker.mjs.map +1 -1
- package/dist/components/ui/form/PhoneInput.mjs +5 -3
- package/dist/components/ui/form/PhoneInput.mjs.map +1 -1
- package/dist/components/ui/form/SelectField.mjs +6 -3
- package/dist/components/ui/form/SelectField.mjs.map +1 -1
- package/dist/components/widgets/ImageUpload/ImageCropModal.mjs +11 -18
- package/dist/components/widgets/ImageUpload/ImageCropModal.mjs.map +1 -1
- package/dist/components/widgets/ImageUpload/ImageTooSmallModal.mjs +6 -15
- package/dist/components/widgets/ImageUpload/ImageTooSmallModal.mjs.map +1 -1
- package/dist/i18n/messages/en-us.mjs +231 -0
- package/dist/i18n/messages/en-us.mjs.map +1 -1
- package/dist/i18n/messages/es-es.mjs +231 -0
- package/dist/i18n/messages/es-es.mjs.map +1 -1
- package/dist/i18n/messages/pt-br.mjs +239 -0
- package/dist/i18n/messages/pt-br.mjs.map +1 -1
- package/dist/index.mjs +5 -1
- package/dist/index.mjs.map +1 -1
- package/dist/modules/cards/hooks/handle-delete-card.hook.mjs +2 -1
- package/dist/modules/cards/hooks/handle-delete-card.hook.mjs.map +1 -1
- package/dist/modules/plans/utils/map-api-plan-to-ui.mjs +7 -2
- package/dist/modules/plans/utils/map-api-plan-to-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/src/components/layouts/NavBar.tsx +5 -3
- package/src/components/layouts/NotificationsPopover.tsx +5 -3
- package/src/components/layouts/ProfilePopover.tsx +6 -4
- package/src/components/layouts/UsersSelectorPopover.tsx +9 -7
- package/src/components/modals/BuyCreditsModal.tsx +18 -16
- package/src/components/modals/CreditsDisabledModal.tsx +6 -6
- package/src/components/modals/PaidPlanRequiredModal.tsx +5 -3
- package/src/components/modals/cards/AddCardModal.tsx +29 -27
- package/src/components/modals/cards/CannotDeleteCardModal.tsx +9 -8
- package/src/components/modals/cards/CardFormFields.tsx +25 -22
- package/src/components/modals/cards/DeleteCardModal.tsx +10 -8
- package/src/components/navigation/CancelledSubscriptionBanner.tsx +4 -2
- package/src/components/navigation/OverdueInvoiceBanner.tsx +4 -2
- package/src/components/navigation/PendingCancellationBanner.tsx +4 -2
- package/src/components/navigation/ProjectSelectorPopover.tsx +8 -6
- package/src/components/navigation/UpcomingInvoiceBanner.tsx +4 -2
- package/src/components/navigation/subcomponents/BottomLinks.tsx +5 -3
- package/src/components/navigation/subcomponents/CreditsCard.tsx +3 -1
- package/src/components/navigation/subcomponents/PlanCard.tsx +3 -1
- package/src/components/navigation/subcomponents/ProjectSelector.tsx +5 -3
- package/src/components/pages/NotFoundPage.tsx +5 -3
- package/src/components/pages/notifications/Notifications.tsx +13 -10
- package/src/components/ui/buttons/CopyButton.tsx +10 -5
- package/src/components/ui/data-display/CardItem.tsx +7 -5
- package/src/components/ui/data-display/PaymentInfoCard.tsx +10 -8
- package/src/components/ui/feedback/DefaultCircularProgress.tsx +3 -1
- package/src/components/ui/form/ComboboxField.tsx +11 -6
- package/src/components/ui/form/DatePicker.tsx +5 -2
- package/src/components/ui/form/DateRangePicker.tsx +5 -2
- package/src/components/ui/form/PhoneInput.tsx +5 -3
- package/src/components/ui/form/SelectField.tsx +6 -3
- package/src/components/widgets/ImageUpload/ImageCropModal.tsx +19 -11
- package/src/components/widgets/ImageUpload/ImageTooSmallModal.tsx +6 -5
- package/src/i18n/messages/en-us.ts +234 -0
- package/src/i18n/messages/es-es.ts +234 -0
- package/src/i18n/messages/pt-br.ts +248 -0
- package/src/index.ts +4 -1
- package/src/modules/cards/hooks/handle-delete-card.hook.ts +8 -3
- package/src/modules/plans/utils/map-api-plan-to-ui.ts +19 -1
|
@@ -225,6 +225,240 @@ const messages = {
|
|
|
225
225
|
},
|
|
226
226
|
},
|
|
227
227
|
|
|
228
|
+
credits: {
|
|
229
|
+
buy: {
|
|
230
|
+
title: 'Comprar créditos de IA',
|
|
231
|
+
externalTitle: 'Créditos de IA',
|
|
232
|
+
externalDescription: 'Para adquirir créditos de IA, acceda a su área de suscripción.',
|
|
233
|
+
externalButton: 'Ir al área de suscripción',
|
|
234
|
+
creditsOptionLabel: '{credits} créditos de IA',
|
|
235
|
+
creditsOptionDisplayValue: '{credits} créditos de IA',
|
|
236
|
+
paymentOnConfirm: 'El pago se procesará en el momento de la confirmación.',
|
|
237
|
+
nextInvoiceChanges: 'Los cambios entrarán en vigor a partir de su próxima factura.',
|
|
238
|
+
defaultPrice: 'Estándar',
|
|
239
|
+
immediateCharge: 'Cargo inmediato',
|
|
240
|
+
totalPlanValue: 'Valor total del plan',
|
|
241
|
+
confirmAndPay: 'Confirmar y pagar',
|
|
242
|
+
creditsChangedToast: 'Créditos de IA cambiados a {credits}',
|
|
243
|
+
},
|
|
244
|
+
disabled: {
|
|
245
|
+
title: 'Compra de créditos no disponible',
|
|
246
|
+
descriptionLine1: 'Solo los administradores y propietarios pueden comprar créditos de IA.',
|
|
247
|
+
descriptionLine2:
|
|
248
|
+
'Pida a un administrador o propietario de la cuenta que adquiera más créditos.',
|
|
249
|
+
understood: 'Entendido',
|
|
250
|
+
},
|
|
251
|
+
paidPlanRequired: {
|
|
252
|
+
defaultTitle: 'Función disponible en planes de pago',
|
|
253
|
+
defaultDescription: 'Para acceder a esta función, actualice a un plan de pago',
|
|
254
|
+
knowPlans: 'Ver planes',
|
|
255
|
+
},
|
|
256
|
+
},
|
|
257
|
+
|
|
258
|
+
cards: {
|
|
259
|
+
add: {
|
|
260
|
+
stepBilling: 'Facturación',
|
|
261
|
+
stepCard: 'Tarjeta',
|
|
262
|
+
externalTitle: 'Gestión de tarjetas no disponible',
|
|
263
|
+
externalDescription: 'Accede a tu área de suscripción para gestionar tus métodos de pago.',
|
|
264
|
+
externalButton: 'Acceder al área de suscripción',
|
|
265
|
+
title: 'Añadir tarjeta',
|
|
266
|
+
billingHeading: 'Añade tu información de facturación',
|
|
267
|
+
cardHeading: 'Añade la información de tu tarjeta',
|
|
268
|
+
authenticating: 'Autenticando...',
|
|
269
|
+
submitting: 'Añadiendo tarjeta...',
|
|
270
|
+
submit: 'Añadir tarjeta',
|
|
271
|
+
errorInitAuth: 'No se pudo iniciar la autenticación de la tarjeta, intenta de nuevo.',
|
|
272
|
+
errorAuth: 'Falló la autenticación de la tarjeta.',
|
|
273
|
+
errorAuthStatus: 'Autenticación no completada (estado: {status}).',
|
|
274
|
+
statusUnknown: 'desconocido',
|
|
275
|
+
successToast: 'Tarjeta añadida correctamente.',
|
|
276
|
+
errorSave: 'No se pudo guardar tu nueva tarjeta, intenta de nuevo.',
|
|
277
|
+
},
|
|
278
|
+
form: {
|
|
279
|
+
nameOnCard: 'Nombre impreso en la tarjeta',
|
|
280
|
+
typeHere: 'Escribe aquí',
|
|
281
|
+
cardNumber: 'Número de tarjeta',
|
|
282
|
+
cardExpiry: 'Fecha de vencimiento',
|
|
283
|
+
cardCvc: 'CVC',
|
|
284
|
+
country: 'País',
|
|
285
|
+
select: 'Selecciona',
|
|
286
|
+
personType: 'Tipo de persona',
|
|
287
|
+
personTypePf: 'Persona física',
|
|
288
|
+
personTypePj: 'Persona jurídica',
|
|
289
|
+
cpf: 'CPF',
|
|
290
|
+
cnpj: 'CNPJ',
|
|
291
|
+
fullName: 'Nombre completo',
|
|
292
|
+
cep: 'CEP',
|
|
293
|
+
street: 'Dirección',
|
|
294
|
+
streetNumber: 'Número',
|
|
295
|
+
city: 'Ciudad',
|
|
296
|
+
state: 'UF',
|
|
297
|
+
neighborhood: 'Barrio',
|
|
298
|
+
complement: 'Complemento',
|
|
299
|
+
cardNumberRequired: 'El número de tarjeta es obligatorio',
|
|
300
|
+
cardExpiryRequired: 'La fecha de vencimiento es obligatoria',
|
|
301
|
+
cardCvcRequired: 'El código de seguridad es obligatorio',
|
|
302
|
+
},
|
|
303
|
+
delete: {
|
|
304
|
+
title: 'Eliminar tarjeta',
|
|
305
|
+
description: 'Realmente deseas eliminar la tarjeta:',
|
|
306
|
+
confirmLabel: 'Escribe ELIMINAR a continuación',
|
|
307
|
+
confirmPlaceholder: 'ELIMINAR',
|
|
308
|
+
deleting: 'Eliminando...',
|
|
309
|
+
successToast: 'La tarjeta •••• {digits} se eliminó correctamente',
|
|
310
|
+
errorToast: 'No se pudo eliminar la tarjeta',
|
|
311
|
+
},
|
|
312
|
+
cannotDelete: {
|
|
313
|
+
title: 'No se puede eliminar esta tarjeta',
|
|
314
|
+
description: 'Esta tarjeta está en uso y tiene una suscripción activa vinculada. Selecciona otra tarjeta como predeterminada o añade una nueva.',
|
|
315
|
+
selectDefault: 'Selecciona una tarjeta como predeterminada:',
|
|
316
|
+
addNewCard: 'Añadir nueva tarjeta',
|
|
317
|
+
errorUpdateCard: 'Error al actualizar la tarjeta de la suscripción',
|
|
318
|
+
},
|
|
319
|
+
item: {
|
|
320
|
+
defaultBadge: 'Predeterminada',
|
|
321
|
+
makeDefault: 'Establecer como predeterminada',
|
|
322
|
+
setDefaultSuccess: 'Tarjeta establecida como predeterminada',
|
|
323
|
+
setDefaultError: 'Error al establecer la tarjeta predeterminada',
|
|
324
|
+
},
|
|
325
|
+
paymentInfo: {
|
|
326
|
+
email: 'Correo electrónico',
|
|
327
|
+
payment: 'Pago',
|
|
328
|
+
addCard: 'Añadir tarjeta',
|
|
329
|
+
selectPaymentMethod: 'Selecciona el método de pago',
|
|
330
|
+
manageCards: 'Gestionar tarjetas',
|
|
331
|
+
newPaymentMethod: 'Nuevo método de pago',
|
|
332
|
+
},
|
|
333
|
+
},
|
|
334
|
+
navigation: {
|
|
335
|
+
banners: {
|
|
336
|
+
cancelled: {
|
|
337
|
+
message: '¡Suscripción cancelada! Tus páginas han sido retiradas del aire.',
|
|
338
|
+
choosePlan: 'Elige un nuevo plan',
|
|
339
|
+
},
|
|
340
|
+
overdue: {
|
|
341
|
+
message: 'Tu suscripción está vencida y tus páginas pueden ser retiradas del aire en cualquier momento.',
|
|
342
|
+
details: 'Detalles',
|
|
343
|
+
},
|
|
344
|
+
pending: {
|
|
345
|
+
message: 'Tu suscripción ha sido cancelada, tienes hasta {limitDate} con tus páginas en línea.',
|
|
346
|
+
reactivate: 'Reactivar suscripción',
|
|
347
|
+
},
|
|
348
|
+
upcoming: {
|
|
349
|
+
message: 'Factura pendiente. Paga antes del {dueDate} para evitar la suspensión de tus páginas.',
|
|
350
|
+
details: 'Detalles',
|
|
351
|
+
},
|
|
352
|
+
},
|
|
353
|
+
projectSelector: {
|
|
354
|
+
title: 'Proyectos',
|
|
355
|
+
searchPlaceholder: 'Busca aquí',
|
|
356
|
+
emptyLine1: 'No se encontró ningún proyecto.',
|
|
357
|
+
emptyLine2: 'Crea un proyecto para comenzar.',
|
|
358
|
+
noResults: 'No se encontraron resultados.',
|
|
359
|
+
manageProjects: 'Gestionar proyectos',
|
|
360
|
+
},
|
|
361
|
+
bottomLinks: {
|
|
362
|
+
news: 'Novedades',
|
|
363
|
+
helpCenter: 'Centro de ayuda',
|
|
364
|
+
sendSuggestions: 'Enviar sugerencias',
|
|
365
|
+
},
|
|
366
|
+
creditsCard: {
|
|
367
|
+
label: 'Créditos utilizados',
|
|
368
|
+
},
|
|
369
|
+
planCard: {
|
|
370
|
+
knowPlans: 'Conoce nuestros planes',
|
|
371
|
+
},
|
|
372
|
+
},
|
|
373
|
+
forms: {
|
|
374
|
+
combobox: {
|
|
375
|
+
placeholder: 'Selecciona una opción',
|
|
376
|
+
searchPlaceholder: 'Buscar...',
|
|
377
|
+
emptyMessage: 'No se encontró ninguna opción.',
|
|
378
|
+
},
|
|
379
|
+
datePicker: {
|
|
380
|
+
placeholder: 'Selecciona la fecha',
|
|
381
|
+
},
|
|
382
|
+
dateRangePicker: {
|
|
383
|
+
placeholder: 'Selecciona el período',
|
|
384
|
+
},
|
|
385
|
+
phoneInput: {
|
|
386
|
+
optional: '(Opcional)',
|
|
387
|
+
searchPlaceholder: 'Buscar país...',
|
|
388
|
+
emptyMessage: 'No se encontró ningún país',
|
|
389
|
+
},
|
|
390
|
+
select: {
|
|
391
|
+
placeholder: 'Selecciona una opción',
|
|
392
|
+
optional: '(Opcional)',
|
|
393
|
+
},
|
|
394
|
+
copyButton: {
|
|
395
|
+
tooltipDefault: 'Copiar enlace',
|
|
396
|
+
successDefault: 'Enlace copiado',
|
|
397
|
+
errorMessage: 'No se pudo copiar el enlace',
|
|
398
|
+
},
|
|
399
|
+
circularProgress: {
|
|
400
|
+
ariaLabel: 'Progreso de exportación',
|
|
401
|
+
},
|
|
402
|
+
},
|
|
403
|
+
imageUpload: {
|
|
404
|
+
cropTitle: 'Ajustar imagen',
|
|
405
|
+
cropHint: 'Arrastra para ajustar el área de recorte',
|
|
406
|
+
cropAlt: 'Crop',
|
|
407
|
+
tooSmallTitleWithDimension: 'Foto menor que {dimensionText}',
|
|
408
|
+
tooSmallTitleGeneric: 'Foto muy pequeña',
|
|
409
|
+
tooSmallBodyFileWithDimension: 'El archivo "{fileName}" es menor que {dimensionText}. Sube una imagen de al menos {dimensionText} para continuar.',
|
|
410
|
+
tooSmallBodyFileGeneric: 'El archivo "{fileName}" es menor que el tamaño mínimo requerido. Sube una imagen más grande para continuar.',
|
|
411
|
+
tooSmallBodyNoFileWithDimension: 'La imagen seleccionada es menor que {dimensionText}. Sube una imagen de al menos {dimensionText} para continuar.',
|
|
412
|
+
tooSmallBodyNoFileGeneric: 'La imagen seleccionada es menor que el tamaño mínimo requerido. Sube una imagen más grande para continuar.',
|
|
413
|
+
sendAnother: 'Enviar otra',
|
|
414
|
+
},
|
|
415
|
+
notifications: {
|
|
416
|
+
page: {
|
|
417
|
+
title: 'Notificaciones',
|
|
418
|
+
subtitle: 'Mantén el control total sobre tus páginas, experiencias y conversiones.',
|
|
419
|
+
markAllReadDesktop: 'Marcar todo como leído',
|
|
420
|
+
markAllReadMobile: 'Marcar como leído',
|
|
421
|
+
tabAll: 'Todas las notificaciones',
|
|
422
|
+
tabUnread: 'No leídas',
|
|
423
|
+
details: 'Detalles',
|
|
424
|
+
empty: 'No se encontró ninguna notificación.',
|
|
425
|
+
markAllSuccess: 'Todas las notificaciones se marcaron como leídas',
|
|
426
|
+
markAllError: 'Error al marcar notificaciones como leídas',
|
|
427
|
+
},
|
|
428
|
+
popover: {
|
|
429
|
+
title: 'Últimas notificaciones',
|
|
430
|
+
empty: 'Sin notificaciones por ahora',
|
|
431
|
+
viewAll: 'Todas las notificaciones',
|
|
432
|
+
},
|
|
433
|
+
},
|
|
434
|
+
layout: {
|
|
435
|
+
navbar: {
|
|
436
|
+
expandMenu: 'Expandir menú',
|
|
437
|
+
greatPages: 'GreatPages',
|
|
438
|
+
pages: 'Páginas',
|
|
439
|
+
},
|
|
440
|
+
profile: {
|
|
441
|
+
usedCredits: 'Créditos utilizados',
|
|
442
|
+
loggingOut: 'Cerrando tu sesión...',
|
|
443
|
+
logout: 'Cerrar sesión',
|
|
444
|
+
},
|
|
445
|
+
usersSelector: {
|
|
446
|
+
title: 'Usuarios',
|
|
447
|
+
add: 'Añadir',
|
|
448
|
+
searchPlaceholder: 'Busca aquí',
|
|
449
|
+
empty: 'No se encontró ningún usuario.',
|
|
450
|
+
noResults: 'No se encontraron resultados.',
|
|
451
|
+
addToProject: 'Añadir al proyecto',
|
|
452
|
+
removeFromProject: 'Eliminar del proyecto',
|
|
453
|
+
manageTeam: 'Gestionar equipo',
|
|
454
|
+
},
|
|
455
|
+
},
|
|
456
|
+
notFound: {
|
|
457
|
+
title: '¡Página no encontrada!',
|
|
458
|
+
description: 'La página que buscas no existe. Verifica que hayas escrito correctamente el enlace que buscas.',
|
|
459
|
+
backToHome: 'Volver al inicio',
|
|
460
|
+
},
|
|
461
|
+
|
|
228
462
|
languages: {
|
|
229
463
|
'pt-br': 'Portugués (Brasil)',
|
|
230
464
|
'en-us': 'Inglés (EE. UU.)',
|
|
@@ -233,12 +233,260 @@ const messages = {
|
|
|
233
233
|
},
|
|
234
234
|
},
|
|
235
235
|
|
|
236
|
+
// Modais de créditos de IA.
|
|
237
|
+
credits: {
|
|
238
|
+
buy: {
|
|
239
|
+
title: 'Comprar créditos de IA',
|
|
240
|
+
externalTitle: 'Créditos de IA',
|
|
241
|
+
externalDescription: 'Para adquirir créditos de IA, acesse sua área de assinatura.',
|
|
242
|
+
externalButton: 'Acessar área de assinatura',
|
|
243
|
+
creditsOptionLabel: '{credits} créditos de IA',
|
|
244
|
+
creditsOptionDisplayValue: '{credits} créditos de IA',
|
|
245
|
+
paymentOnConfirm: 'O pagamento será processado no momento da confirmação.',
|
|
246
|
+
nextInvoiceChanges: 'As alterações entrarão em vigor a partir da sua próxima fatura.',
|
|
247
|
+
defaultPrice: 'Padrão',
|
|
248
|
+
immediateCharge: 'Cobrança imediata',
|
|
249
|
+
totalPlanValue: 'Valor total do plano',
|
|
250
|
+
confirmAndPay: 'Confirmar e pagar',
|
|
251
|
+
creditsChangedToast: 'Créditos de IA alterados para {credits}',
|
|
252
|
+
},
|
|
253
|
+
disabled: {
|
|
254
|
+
title: 'Compra de créditos indisponível',
|
|
255
|
+
descriptionLine1: 'Apenas administradores e proprietários podem comprar créditos de IA.',
|
|
256
|
+
descriptionLine2:
|
|
257
|
+
'Peça a um administrador ou proprietário da conta para adquirir mais créditos.',
|
|
258
|
+
understood: 'Entendi',
|
|
259
|
+
},
|
|
260
|
+
paidPlanRequired: {
|
|
261
|
+
defaultTitle: 'Recurso disponível em planos pagos',
|
|
262
|
+
defaultDescription: 'Para acessar este recurso, faça upgrade para um plano pago',
|
|
263
|
+
knowPlans: 'Conhecer planos',
|
|
264
|
+
},
|
|
265
|
+
},
|
|
266
|
+
|
|
267
|
+
// Cartões: adicionar, formulário, excluir, não-pode-excluir, item, info de pagamento.
|
|
268
|
+
cards: {
|
|
269
|
+
add: {
|
|
270
|
+
stepBilling: 'Cobrança',
|
|
271
|
+
stepCard: 'Cartão',
|
|
272
|
+
externalTitle: 'Gerenciamento de cartões indisponível',
|
|
273
|
+
externalDescription: 'Acesse sua área de assinatura para gerenciar formas de pagamento.',
|
|
274
|
+
externalButton: 'Acessar área de assinatura',
|
|
275
|
+
title: 'Adicionar cartão',
|
|
276
|
+
billingHeading: 'Adicione suas informações de cobrança',
|
|
277
|
+
cardHeading: 'Adicione informações do seu cartão',
|
|
278
|
+
authenticating: 'Autenticando...',
|
|
279
|
+
submitting: 'Adicionando cartão...',
|
|
280
|
+
submit: 'Adicionar cartão',
|
|
281
|
+
errorInitAuth: 'Não foi possível iniciar a autenticação do cartão, tente novamente.',
|
|
282
|
+
errorAuth: 'Falha na autenticação do cartão.',
|
|
283
|
+
errorAuthStatus: 'Autenticação não concluída (status: {status}).',
|
|
284
|
+
statusUnknown: 'desconhecido',
|
|
285
|
+
successToast: 'Cartão adicionado com sucesso.',
|
|
286
|
+
errorSave: 'Não foi possível salvar o seu novo cartão, tente novamente.',
|
|
287
|
+
},
|
|
288
|
+
form: {
|
|
289
|
+
nameOnCard: 'Nome impresso no cartão',
|
|
290
|
+
typeHere: 'Digite aqui',
|
|
291
|
+
cardNumber: 'Número do cartão',
|
|
292
|
+
cardExpiry: 'Data de validade',
|
|
293
|
+
cardCvc: 'CVC',
|
|
294
|
+
country: 'País',
|
|
295
|
+
select: 'Selecione',
|
|
296
|
+
personType: 'Tipo de pessoa',
|
|
297
|
+
personTypePf: 'Pessoa física',
|
|
298
|
+
personTypePj: 'Pessoa jurídica',
|
|
299
|
+
cpf: 'CPF',
|
|
300
|
+
cnpj: 'CNPJ',
|
|
301
|
+
fullName: 'Nome completo',
|
|
302
|
+
cep: 'CEP',
|
|
303
|
+
street: 'Endereço',
|
|
304
|
+
streetNumber: 'Número',
|
|
305
|
+
city: 'Cidade',
|
|
306
|
+
state: 'UF',
|
|
307
|
+
neighborhood: 'Bairro',
|
|
308
|
+
complement: 'Complemento',
|
|
309
|
+
cardNumberRequired: 'Número do cartão é obrigatório',
|
|
310
|
+
cardExpiryRequired: 'Data de validade é obrigatória',
|
|
311
|
+
cardCvcRequired: 'Código de segurança é obrigatório',
|
|
312
|
+
},
|
|
313
|
+
delete: {
|
|
314
|
+
title: 'Excluir cartão',
|
|
315
|
+
description: 'Deseja realmente excluir o cartão:',
|
|
316
|
+
confirmLabel: 'Digite EXCLUIR abaixo',
|
|
317
|
+
confirmPlaceholder: 'EXCLUIR',
|
|
318
|
+
deleting: 'Excluindo...',
|
|
319
|
+
successToast: 'O cartão •••• {digits} foi excluído com sucesso',
|
|
320
|
+
errorToast: 'Não foi possível excluir o cartão',
|
|
321
|
+
},
|
|
322
|
+
cannotDelete: {
|
|
323
|
+
title: 'Não é possível excluir este cartão',
|
|
324
|
+
description: 'Este cartão está em uso e tem uma assinatura ativa vinculada a ele. Selecione outro cartão como padrão ou adicione um novo.',
|
|
325
|
+
selectDefault: 'Selecione um cartão como padrão:',
|
|
326
|
+
addNewCard: 'Adicionar novo cartão',
|
|
327
|
+
errorUpdateCard: 'Erro ao atualizar cartão da assinatura',
|
|
328
|
+
},
|
|
329
|
+
item: {
|
|
330
|
+
defaultBadge: 'Padrão',
|
|
331
|
+
makeDefault: 'Tornar padrão',
|
|
332
|
+
setDefaultSuccess: 'Cartão definido como padrão',
|
|
333
|
+
setDefaultError: 'Erro ao definir cartão padrão',
|
|
334
|
+
},
|
|
335
|
+
paymentInfo: {
|
|
336
|
+
email: 'E-mail',
|
|
337
|
+
payment: 'Pagamento',
|
|
338
|
+
addCard: 'Adicionar cartão',
|
|
339
|
+
selectPaymentMethod: 'Selecione a forma de pagamento',
|
|
340
|
+
manageCards: 'Gerenciar cartões',
|
|
341
|
+
newPaymentMethod: 'Nova forma de pagamento',
|
|
342
|
+
},
|
|
343
|
+
},
|
|
344
|
+
|
|
345
|
+
// Componentes de navegação: banners de assinatura, seletor de projeto, links de rodapé, créditos, plano.
|
|
346
|
+
navigation: {
|
|
347
|
+
banners: {
|
|
348
|
+
cancelled: {
|
|
349
|
+
message: 'Assinatura cancelada! Suas páginas foram retiradas do ar.',
|
|
350
|
+
choosePlan: 'Escolher um novo plano',
|
|
351
|
+
},
|
|
352
|
+
overdue: {
|
|
353
|
+
message: 'Sua assinatura está atrasada e suas páginas podem ser retiradas do ar a qualquer momento.',
|
|
354
|
+
details: 'Detalhes',
|
|
355
|
+
},
|
|
356
|
+
pending: {
|
|
357
|
+
message: 'Sua assinatura foi cancelada, você possui até {limitDate} com suas páginas online.',
|
|
358
|
+
reactivate: 'Reativar assinatura',
|
|
359
|
+
},
|
|
360
|
+
upcoming: {
|
|
361
|
+
message: 'Fatura em aberto. Pague até {dueDate} para evitar a suspensão das suas páginas.',
|
|
362
|
+
details: 'Detalhes',
|
|
363
|
+
},
|
|
364
|
+
},
|
|
365
|
+
projectSelector: {
|
|
366
|
+
title: 'Projetos',
|
|
367
|
+
searchPlaceholder: 'Busque aqui',
|
|
368
|
+
emptyLine1: 'Nenhum projeto encontrado.',
|
|
369
|
+
emptyLine2: 'Crie um projeto para começar.',
|
|
370
|
+
noResults: 'Nenhum resultado encontrado.',
|
|
371
|
+
manageProjects: 'Gerenciar projetos',
|
|
372
|
+
},
|
|
373
|
+
bottomLinks: {
|
|
374
|
+
news: 'Novidades',
|
|
375
|
+
helpCenter: 'Central de ajuda',
|
|
376
|
+
sendSuggestions: 'Enviar sugestões',
|
|
377
|
+
},
|
|
378
|
+
creditsCard: {
|
|
379
|
+
label: 'Créditos usados',
|
|
380
|
+
},
|
|
381
|
+
planCard: {
|
|
382
|
+
knowPlans: 'Conheça os planos',
|
|
383
|
+
},
|
|
384
|
+
},
|
|
385
|
+
|
|
236
386
|
// Nomes dos idiomas exibidos no seletor.
|
|
237
387
|
languages: {
|
|
238
388
|
'pt-br': 'Português (Brasil)',
|
|
239
389
|
'en-us': 'Inglês (EUA)',
|
|
240
390
|
'es-es': 'Espanhol',
|
|
241
391
|
},
|
|
392
|
+
|
|
393
|
+
// Componentes de formulário e entrada.
|
|
394
|
+
forms: {
|
|
395
|
+
combobox: {
|
|
396
|
+
placeholder: 'Selecione uma opção',
|
|
397
|
+
searchPlaceholder: 'Buscar...',
|
|
398
|
+
emptyMessage: 'Nenhuma opção encontrada.',
|
|
399
|
+
},
|
|
400
|
+
datePicker: {
|
|
401
|
+
placeholder: 'Selecione a data',
|
|
402
|
+
},
|
|
403
|
+
dateRangePicker: {
|
|
404
|
+
placeholder: 'Selecione o período',
|
|
405
|
+
},
|
|
406
|
+
phoneInput: {
|
|
407
|
+
optional: '(Opcional)',
|
|
408
|
+
searchPlaceholder: 'Buscar país...',
|
|
409
|
+
emptyMessage: 'Nenhum país encontrado',
|
|
410
|
+
},
|
|
411
|
+
select: {
|
|
412
|
+
placeholder: 'Selecione uma opção',
|
|
413
|
+
optional: '(Opcional)',
|
|
414
|
+
},
|
|
415
|
+
copyButton: {
|
|
416
|
+
tooltipDefault: 'Copiar link',
|
|
417
|
+
successDefault: 'Link copiado',
|
|
418
|
+
errorMessage: 'Não foi possível copiar o link',
|
|
419
|
+
},
|
|
420
|
+
circularProgress: {
|
|
421
|
+
ariaLabel: 'Progresso de exportação',
|
|
422
|
+
},
|
|
423
|
+
},
|
|
424
|
+
|
|
425
|
+
// Componentes: ImageCropModal, ImageTooSmallModal.
|
|
426
|
+
imageUpload: {
|
|
427
|
+
cropTitle: 'Ajustar imagem',
|
|
428
|
+
cropHint: 'Arraste para ajustar a área de corte',
|
|
429
|
+
cropAlt: 'Crop',
|
|
430
|
+
tooSmallTitleWithDimension: 'Foto menor que {dimensionText}',
|
|
431
|
+
tooSmallTitleGeneric: 'Foto muito pequena',
|
|
432
|
+
tooSmallBodyFileWithDimension: 'O arquivo "{fileName}" é menor que {dimensionText}. Faça envio de uma imagem com pelo menos {dimensionText} para continuar.',
|
|
433
|
+
tooSmallBodyFileGeneric: 'O arquivo "{fileName}" é menor que o tamanho mínimo exigido. Faça envio de uma imagem maior para continuar.',
|
|
434
|
+
tooSmallBodyNoFileWithDimension: 'A imagem selecionada é menor que {dimensionText}. Faça envio de uma imagem com pelo menos {dimensionText} para continuar.',
|
|
435
|
+
tooSmallBodyNoFileGeneric: 'A imagem selecionada é menor que o tamanho mínimo exigido. Faça envio de uma imagem maior para continuar.',
|
|
436
|
+
sendAnother: 'Enviar outra',
|
|
437
|
+
},
|
|
438
|
+
|
|
439
|
+
// Componentes: NotificationPageContent (Notifications.tsx), NotificationsPopover.tsx.
|
|
440
|
+
notifications: {
|
|
441
|
+
page: {
|
|
442
|
+
title: 'Notificações',
|
|
443
|
+
subtitle: 'Tenha controle total sobre páginas, experiências e conversões.',
|
|
444
|
+
markAllReadDesktop: 'Marcar todos como lidos',
|
|
445
|
+
markAllReadMobile: 'Marcar como lidos',
|
|
446
|
+
tabAll: 'Todas as notificações',
|
|
447
|
+
tabUnread: 'Não lidas',
|
|
448
|
+
details: 'Detalhes',
|
|
449
|
+
empty: 'Nenhuma notificação encontrada.',
|
|
450
|
+
markAllSuccess: 'Todas as notificações foram marcadas como lidas',
|
|
451
|
+
markAllError: 'Erro ao marcar notificações como lidas',
|
|
452
|
+
},
|
|
453
|
+
popover: {
|
|
454
|
+
title: 'Últimas notificações',
|
|
455
|
+
empty: 'Sem notificações por enquanto',
|
|
456
|
+
viewAll: 'Todas as notificações',
|
|
457
|
+
},
|
|
458
|
+
},
|
|
459
|
+
|
|
460
|
+
// Componentes: NavBar.tsx, ProfilePopover.tsx, UsersSelectorPopover.tsx.
|
|
461
|
+
layout: {
|
|
462
|
+
navbar: {
|
|
463
|
+
expandMenu: 'Expandir menu',
|
|
464
|
+
greatPages: 'GreatPages',
|
|
465
|
+
pages: 'Páginas',
|
|
466
|
+
},
|
|
467
|
+
profile: {
|
|
468
|
+
usedCredits: 'Créditos usados',
|
|
469
|
+
loggingOut: 'Saindo da sua conta...',
|
|
470
|
+
logout: 'Sair',
|
|
471
|
+
},
|
|
472
|
+
usersSelector: {
|
|
473
|
+
title: 'Usuários',
|
|
474
|
+
add: 'Adicionar',
|
|
475
|
+
searchPlaceholder: 'Busque aqui',
|
|
476
|
+
empty: 'Nenhum usuário encontrado.',
|
|
477
|
+
noResults: 'Nenhum resultado encontrado.',
|
|
478
|
+
addToProject: 'Adicionar ao projeto',
|
|
479
|
+
removeFromProject: 'Remover do projeto',
|
|
480
|
+
manageTeam: 'Gerenciar equipe',
|
|
481
|
+
},
|
|
482
|
+
},
|
|
483
|
+
|
|
484
|
+
// Componente: NotFoundPage.tsx.
|
|
485
|
+
notFound: {
|
|
486
|
+
title: 'Página não foi encontrada!',
|
|
487
|
+
description: 'A página que você está procurando não existe. Verifique se digitou corretamente o link que está procurando.',
|
|
488
|
+
backToHome: 'Voltar para o início',
|
|
489
|
+
},
|
|
242
490
|
} as const;
|
|
243
491
|
|
|
244
492
|
export default messages;
|
package/src/index.ts
CHANGED
|
@@ -137,7 +137,10 @@ export type {
|
|
|
137
137
|
PlanTooltips,
|
|
138
138
|
} from "./modules/plans/types/plan.type";
|
|
139
139
|
export { PlanSchema, PlanItemSchema } from "./modules/plans/types/plan.type";
|
|
140
|
-
export {
|
|
140
|
+
export {
|
|
141
|
+
mapApiPlanToUiPlan,
|
|
142
|
+
mapApiPlanToUiPlanForCurrency,
|
|
143
|
+
} from "./modules/plans/utils/map-api-plan-to-ui";
|
|
141
144
|
export type { PlanBillingPeriod } from "./modules/plans/utils/map-api-plan-to-ui";
|
|
142
145
|
export {
|
|
143
146
|
usePlans,
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { useCallback } from 'react';
|
|
4
4
|
import { useModalManager } from '../../../store/useModalManager';
|
|
5
5
|
import { useActiveSubscription } from '../../subscriptions/hooks/find-active-subscription.hook';
|
|
6
|
+
import { hasSubscriptionExpired } from '../../subscriptions/utils/has-subscription-expired';
|
|
6
7
|
import type { Card } from '../types';
|
|
7
8
|
|
|
8
9
|
type UseHandleDeleteCardOptions = {
|
|
@@ -18,11 +19,15 @@ export function useHandleDeleteCard({
|
|
|
18
19
|
|
|
19
20
|
return useCallback(
|
|
20
21
|
(card: Card) => {
|
|
22
|
+
// Só bloqueia a exclusão quando o cartão é o método de pagamento de uma
|
|
23
|
+
// assinatura REALMENTE ativa (mesma definição de ConfigurationsMyAccountModal).
|
|
24
|
+
// Se a assinatura foi cancelada ou já expirou, ela não está mais ativa —
|
|
25
|
+
// pula a verificação e segue direto pra exclusão do cartão.
|
|
21
26
|
const isCardLinkedToSubscription =
|
|
22
27
|
!!activeSubscription &&
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
28
|
+
activeSubscription.active === true &&
|
|
29
|
+
!activeSubscription.date_cancellation &&
|
|
30
|
+
!hasSubscriptionExpired(activeSubscription.date_due) &&
|
|
26
31
|
card.id.toString() === activeSubscription.id_card?.toString();
|
|
27
32
|
|
|
28
33
|
if (isCardLinkedToSubscription) {
|
|
@@ -58,7 +58,7 @@ function computePricingByPeriod(apiPlan: Plan, currency: CurrencyCode): PlanPric
|
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
function buildUiPlan(plan: Plan, currency: CurrencyCode): UiPlan {
|
|
62
62
|
const popular = plan.id === 2 || plan.id_plan === 2;
|
|
63
63
|
const buttonVariant = popular ? "brand" : "default";
|
|
64
64
|
|
|
@@ -101,3 +101,21 @@ export function mapApiPlanToUiPlan(plan: Plan, currency: CurrencyCode = "brl"):
|
|
|
101
101
|
items: plan.items,
|
|
102
102
|
};
|
|
103
103
|
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Mapeia um plano da API para UiPlan em BRL.
|
|
107
|
+
* Assinatura de 1 argumento — seguro em `plans.map(mapApiPlanToUiPlan)`.
|
|
108
|
+
*/
|
|
109
|
+
export function mapApiPlanToUiPlan(plan: Plan): UiPlan {
|
|
110
|
+
return buildUiPlan(plan, "brl");
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Variante currency-aware: a moeda vem do gateway da conta (getCurrencyForGateway).
|
|
115
|
+
* Fábrica para uso ergonômico em `.map`: `plans.map(mapApiPlanToUiPlanForCurrency(currency))`.
|
|
116
|
+
* Mantida separada de mapApiPlanToUiPlan para não quebrar callers que passam a fn direto pro `.map`.
|
|
117
|
+
*/
|
|
118
|
+
export const mapApiPlanToUiPlanForCurrency =
|
|
119
|
+
(currency: CurrencyCode) =>
|
|
120
|
+
(plan: Plan): UiPlan =>
|
|
121
|
+
buildUiPlan(plan, currency);
|