@strapi-community/plugin-better-auth-dashboard 1.0.0-beta.1 → 1.0.0-beta.2

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 (45) hide show
  1. package/dist/admin/Avatar-CdT7eBCh.js +39 -0
  2. package/dist/admin/Avatar-zlMTAZh3.mjs +40 -0
  3. package/dist/admin/{Root-2FMy-qQg.mjs → Root-CgVBJuoM.mjs} +12 -4
  4. package/dist/admin/{Root-DDi0mtve.js → Root-CsiOnzlB.js} +12 -4
  5. package/dist/admin/cs-C_jSgeON.js +416 -0
  6. package/dist/admin/cs-wtnknvBC.mjs +416 -0
  7. package/dist/admin/de-Cg5HyoCY.js +416 -0
  8. package/dist/admin/de-DnnVdUxk.mjs +416 -0
  9. package/dist/admin/en-B3utEgMT.mjs +416 -0
  10. package/dist/admin/en-Cz1IJEvp.js +416 -0
  11. package/dist/admin/es-CGA0Tslt.js +416 -0
  12. package/dist/admin/es-RoCEriJL.mjs +416 -0
  13. package/dist/admin/fr-Ca74t21t.js +416 -0
  14. package/dist/admin/fr-CtmuSfiQ.mjs +416 -0
  15. package/dist/admin/{index-BHfYu0uA.js → index-BCBu-0nr.js} +65 -10
  16. package/dist/admin/{index-D9CiI8Yr.mjs → index-BI2WIsds.mjs} +73 -18
  17. package/dist/admin/index-CPSoAbZt.js +2321 -0
  18. package/dist/admin/index-D9ttdrT3.js +2716 -0
  19. package/dist/admin/index-DQdn5s8q.js +1184 -0
  20. package/dist/admin/index-DvfwvCj0.mjs +1182 -0
  21. package/dist/admin/index-VyHXoQ6p.mjs +2321 -0
  22. package/dist/admin/index-gFqHlMLP.mjs +2716 -0
  23. package/dist/admin/index.js +1 -1
  24. package/dist/admin/index.mjs +1 -1
  25. package/dist/admin/it-BAB9hDdp.mjs +416 -0
  26. package/dist/admin/it-dYT2_ERV.js +416 -0
  27. package/dist/admin/nl-CVqSbUU9.js +416 -0
  28. package/dist/admin/nl-CYv26PHv.mjs +416 -0
  29. package/dist/admin/pl-Bc0cS2mD.mjs +416 -0
  30. package/dist/admin/pl-HYF4BxRv.js +416 -0
  31. package/dist/admin/pt-DDUGyLtb.js +416 -0
  32. package/dist/admin/pt-DZyyK3EG.mjs +416 -0
  33. package/dist/admin/{useModelSchema-CqOTI7P1.js → useModelSchema-BogQah8f.js} +309 -287
  34. package/dist/admin/{useModelSchema-B2tmzlwQ.mjs → useModelSchema-C6bxNjW4.mjs} +320 -298
  35. package/dist/server/index.js +15 -15
  36. package/dist/server/index.mjs +15 -15
  37. package/package.json +4 -4
  38. package/dist/admin/Avatar-Cvk89aMx.js +0 -67
  39. package/dist/admin/Avatar-DNczJU0i.mjs +0 -66
  40. package/dist/admin/index-BQi_BUi6.mjs +0 -1968
  41. package/dist/admin/index-BV-4M_Fp.js +0 -1970
  42. package/dist/admin/index-CANDPUGD.mjs +0 -1215
  43. package/dist/admin/index-CqR8WpOa.js +0 -1217
  44. package/dist/admin/index-D6ktNZcj.js +0 -1685
  45. package/dist/admin/index-DszX3ibA.mjs +0 -1683
@@ -0,0 +1,416 @@
1
+ const fr = {
2
+ "common.errors.contentTypeNotFound": "Type de contenu {uid} introuvable",
3
+ "common.errors.loadConfig": "Échec du chargement de la configuration",
4
+ "common.errors.loadUsers": "Échec du chargement des utilisateurs",
5
+ "common.page.title": "Authentification",
6
+ "components.confirmDialog.cancel": "Annuler",
7
+ "components.confirmDialog.confirm": "Confirmer",
8
+ "components.dynamicField.customFields": "Champs personnalisés",
9
+ "components.mediaPickerField.browse": "Parcourir",
10
+ "components.nav.header": "Authentification",
11
+ "components.pluginIcon.title": "Logo Better Auth",
12
+ "components.relationField.remove": "Retirer",
13
+ "components.relationField.searchPlaceholder": "Rechercher…",
14
+ "components.sheet.closeLabel": "Fermer le panneau",
15
+ "components.userCombobox.label": "Utilisateur",
16
+ "components.userCombobox.placeholder": "Rechercher par e-mail ou nom…",
17
+ "organizations.common.cancel": "Annuler",
18
+ "organizations.common.close": "Fermer",
19
+ "organizations.common.createOrganization": "Créer une organisation",
20
+ "organizations.common.created": "Créé le",
21
+ "organizations.common.delete": "Supprimer",
22
+ "organizations.common.deleteFailed": "Échec de la suppression",
23
+ "organizations.common.deleteOrganization": "Supprimer l’organisation",
24
+ "organizations.common.details": "Détails",
25
+ "organizations.common.errorOccurred": "Une erreur est survenue",
26
+ "organizations.common.failed": "Échec",
27
+ "organizations.common.loading": "Chargement…",
28
+ "organizations.common.logo.hint": "Facultatif — URL d’une image accessible publiquement",
29
+ "organizations.common.logo.label": "URL du logo",
30
+ "organizations.common.logo.placeholder": "https://example.com/logo.png",
31
+ "organizations.common.members": "Membres",
32
+ "organizations.common.name": "Nom",
33
+ "organizations.common.remove": "Retirer",
34
+ "organizations.common.role": "Rôle",
35
+ "organizations.common.roles.admin": "Administrateur",
36
+ "organizations.common.roles.member": "Membre",
37
+ "organizations.common.roles.owner": "Propriétaire",
38
+ "organizations.common.slug": "Slug",
39
+ "organizations.common.slugHint": "Utilisé dans les URL",
40
+ "organizations.create.defaultTeam.name.label": "Nom de l’équipe par défaut",
41
+ "organizations.create.defaultTeam.name.placeholder": "Laisser vide pour utiliser la valeur par défaut du système",
42
+ "organizations.create.defaultTeam.skip": "Ne pas créer d’équipe par défaut",
43
+ "organizations.create.defaultTeam.skipHint": "Les membres pourront être ajoutés manuellement aux équipes une fois l’organisation créée.",
44
+ "organizations.create.defaultTeam.title": "Équipe par défaut",
45
+ "organizations.create.error.createFailed": "Échec de la création",
46
+ "organizations.create.name.placeholder": "Acme Corp",
47
+ "organizations.create.notification.error": "Échec de la création de l’organisation",
48
+ "organizations.create.notification.success": "Organisation créée avec succès",
49
+ "organizations.create.owner.hint": "L’utilisateur qui possédera et gérera cette organisation",
50
+ "organizations.create.owner.label": "Propriétaire",
51
+ "organizations.create.slug.placeholder": "acme-corp",
52
+ "organizations.detail.discard": "Annuler les modifications",
53
+ "organizations.detail.error.documentId": "Impossible de déterminer le documentId de l’organisation",
54
+ "organizations.detail.error.loadOrg": "Échec du chargement de l’organisation",
55
+ "organizations.detail.error.loadTitle": "Échec du chargement de l’organisation",
56
+ "organizations.detail.fallbackTitle": "Organisation",
57
+ "organizations.detail.invitations.cancel": "Annuler l’invitation",
58
+ "organizations.detail.invitations.confirmCancel.message": "Êtes-vous sûr de vouloir annuler cette invitation ? Le lien d’invitation ne fonctionnera plus.",
59
+ "organizations.detail.invitations.email.label": "Adresse e-mail",
60
+ "organizations.detail.invitations.email.placeholder": "user@example.com",
61
+ "organizations.detail.invitations.emailRole": "{email} · rôle : {role}",
62
+ "organizations.detail.invitations.empty": "Aucune invitation pour le moment.",
63
+ "organizations.detail.invitations.expires": "Expire le {date}",
64
+ "organizations.detail.invitations.invite": "Inviter un membre par e-mail",
65
+ "organizations.detail.invitations.notification.cancelError": "Échec de l’annulation",
66
+ "organizations.detail.invitations.notification.cancelled": "Invitation annulée",
67
+ "organizations.detail.invitations.notification.inviteError": "Échec de l’invitation",
68
+ "organizations.detail.invitations.notification.resendError": "Échec du renvoi",
69
+ "organizations.detail.invitations.notification.resent": "Invitation renvoyée",
70
+ "organizations.detail.invitations.notification.sent": "Invitation envoyée",
71
+ "organizations.detail.invitations.resend": "Renvoyer",
72
+ "organizations.detail.invitations.roleLabel": "Rôle de l’invité",
73
+ "organizations.detail.invitations.send": "Envoyer l’invitation",
74
+ "organizations.detail.invitations.status.accepted": "acceptée",
75
+ "organizations.detail.invitations.status.canceled": "annulée",
76
+ "organizations.detail.invitations.status.pending": "en attente",
77
+ "organizations.detail.invitations.status.rejected": "refusée",
78
+ "organizations.detail.members.add": "Ajouter un membre",
79
+ "organizations.detail.members.confirmRemove.message": "Êtes-vous sûr de vouloir retirer ce membre de l’organisation ?",
80
+ "organizations.detail.members.empty": "Aucun membre pour le moment.",
81
+ "organizations.detail.members.error.addFailed": "Échec de l’ajout du membre",
82
+ "organizations.detail.members.notification.addError": "Échec de l’ajout du membre",
83
+ "organizations.detail.members.notification.added": "Membre ajouté",
84
+ "organizations.detail.members.notification.removeError": "Échec du retrait du membre",
85
+ "organizations.detail.members.notification.removed": "Membre retiré",
86
+ "organizations.detail.members.notification.roleUpdateError": "Échec de la mise à jour du rôle",
87
+ "organizations.detail.members.notification.roleUpdated": "Rôle mis à jour",
88
+ "organizations.detail.members.remove": "Retirer le membre",
89
+ "organizations.detail.members.roleLabel": "Rôle du membre",
90
+ "organizations.detail.members.unknown": "Inconnu",
91
+ "organizations.detail.members.user": "Utilisateur",
92
+ "organizations.detail.meta.id": "ID de l’organisation",
93
+ "organizations.detail.notification.updateError": "Échec de la mise à jour",
94
+ "organizations.detail.notification.updated": "Organisation mise à jour avec succès",
95
+ "organizations.detail.save": "Enregistrer les modifications",
96
+ "organizations.detail.sso.confirmDelete.message": "Êtes-vous sûr de vouloir supprimer ce fournisseur SSO ? Les membres qui l’utilisent devront s’authentifier autrement.",
97
+ "organizations.detail.sso.delete": "Supprimer le fournisseur SSO",
98
+ "organizations.detail.sso.empty": "Aucun fournisseur SSO configuré.",
99
+ "organizations.detail.sso.issuer": "Émetteur : {issuer}",
100
+ "organizations.detail.sso.notification.deleteError": "Échec de la suppression du fournisseur SSO",
101
+ "organizations.detail.sso.notification.deleted": "Fournisseur SSO supprimé",
102
+ "organizations.detail.sso.title": "Fournisseurs SSO",
103
+ "organizations.detail.tabs.invitations": "Invitations ({count})",
104
+ "organizations.detail.tabs.members": "Membres ({count})",
105
+ "organizations.detail.tabs.sso": "SSO ({count})",
106
+ "organizations.detail.tabs.teams": "Équipes ({count})",
107
+ "organizations.detail.teams.addMember": "Ajouter un membre à l’équipe",
108
+ "organizations.detail.teams.addMemberSubmit": "Ajouter",
109
+ "organizations.detail.teams.confirmDelete.message": "Êtes-vous sûr de vouloir supprimer cette équipe ? Tous ses membres seront retirés. Cette action est irréversible.",
110
+ "organizations.detail.teams.confirmRemoveMember.message": "Êtes-vous sûr de vouloir retirer ce membre de l’équipe ?",
111
+ "organizations.detail.teams.create": "Créer une équipe",
112
+ "organizations.detail.teams.createSubmit": "Créer",
113
+ "organizations.detail.teams.delete": "Supprimer l’équipe",
114
+ "organizations.detail.teams.empty": "Aucune équipe pour le moment.",
115
+ "organizations.detail.teams.error.createFailed": "Échec de la création de l’équipe",
116
+ "organizations.detail.teams.memberCount": "{count, plural, =-1 {— membres} one {# membre} many {# membres} other {# membres}}",
117
+ "organizations.detail.teams.membersEmpty": "Aucun membre dans cette équipe.",
118
+ "organizations.detail.teams.name.label": "Nom de l’équipe",
119
+ "organizations.detail.teams.name.placeholder": "ex. Ingénierie",
120
+ "organizations.detail.teams.notification.createError": "Échec de la création de l’équipe",
121
+ "organizations.detail.teams.notification.created": "Équipe créée",
122
+ "organizations.detail.teams.notification.deleteError": "Échec de la suppression de l’équipe",
123
+ "organizations.detail.teams.notification.deleted": "Équipe supprimée",
124
+ "organizations.detail.teams.removeMember": "Retirer de l’équipe",
125
+ "organizations.list.confirmDelete.message": "Êtes-vous sûr de vouloir supprimer cette organisation ? Tous les membres et équipes seront supprimés. Cette action est irréversible.",
126
+ "organizations.list.confirmDeleteMany.confirm": "Tout supprimer",
127
+ "organizations.list.confirmDeleteMany.message": "Êtes-vous sûr de vouloir supprimer {count, plural, one {# organisation} many {# organisations} other {# organisations}} ? Cette action est irréversible.",
128
+ "organizations.list.confirmDeleteMany.title": "Supprimer {count, plural, one {# organisation} many {# organisations} other {# organisations}}",
129
+ "organizations.list.deleteSelected": "Supprimer la sélection ({count})",
130
+ "organizations.list.empty.default": "Aucune organisation trouvée",
131
+ "organizations.list.empty.search": "Aucune organisation ne correspond à « {search} »",
132
+ "organizations.list.error.load": "Échec du chargement des organisations",
133
+ "organizations.list.error.title": "Erreur",
134
+ "organizations.list.header.subtitle": "{total} au total",
135
+ "organizations.list.header.title": "Organisations",
136
+ "organizations.list.loading": "Chargement des organisations…",
137
+ "organizations.list.notification.deleteError": "Échec de la suppression de l’organisation",
138
+ "organizations.list.notification.deleteManyError": "Échec de la suppression des organisations",
139
+ "organizations.list.notification.deleted": "Organisation supprimée",
140
+ "organizations.list.notification.deletedMany": "{count, plural, one {# organisation supprimée} many {# organisations supprimées} other {# organisations supprimées}}",
141
+ "organizations.list.pagination.next": "Suivant",
142
+ "organizations.list.pagination.previous": "Précédent",
143
+ "organizations.list.search.clear": "Effacer",
144
+ "organizations.list.search.label": "Rechercher des organisations",
145
+ "organizations.list.search.placeholder": "Rechercher des organisations…",
146
+ "organizations.list.table.actions": "Actions",
147
+ "organizations.list.table.edit": "Modifier l’organisation",
148
+ "organizations.list.table.selectAll": "Tout sélectionner",
149
+ "organizations.list.table.selectRow": "Sélectionner {name}",
150
+ "overview.activeUsers.daily": "Actifs par jour",
151
+ "overview.activeUsers.monthly": "Actifs par mois",
152
+ "overview.activeUsers.weekly": "Actifs par semaine",
153
+ "overview.common.failed": "Échec",
154
+ "overview.common.loading": "Chargement…",
155
+ "overview.feed.label": "Flux",
156
+ "overview.feed.noActivity": "Aucune activité récente",
157
+ "overview.feed.noUsers": "Aucun utilisateur pour le moment",
158
+ "overview.feed.recentSignUps": "Inscriptions récentes",
159
+ "overview.feed.recentlyActive": "Actifs récemment",
160
+ "overview.growth.chartLabel": "Graphique de croissance des utilisateurs",
161
+ "overview.growth.empty": "Aucune donnée de croissance pour cette période",
162
+ "overview.growth.hoverDetails": "{label} · {total} au total · +{new} nouveaux · {active} actifs",
163
+ "overview.growth.hoverHint": "Survolez le graphique pour inspecter un point de données",
164
+ "overview.growth.series.active": "Actifs",
165
+ "overview.growth.series.new": "Nouveaux",
166
+ "overview.growth.series.total": "Total",
167
+ "overview.growth.title": "Croissance des utilisateurs",
168
+ "overview.header.title": "Vue d’ensemble",
169
+ "overview.period.daily": "Quotidien",
170
+ "overview.period.label": "Période",
171
+ "overview.period.monthly": "Mensuel",
172
+ "overview.period.weekly": "Hebdomadaire",
173
+ "overview.relTime.days": "{count} j",
174
+ "overview.relTime.hours": "{count} h",
175
+ "overview.relTime.justNow": "à l’instant",
176
+ "overview.relTime.minutes": "{count} min",
177
+ "overview.retention.empty": "Aucune donnée de rétention pour cette période",
178
+ "overview.retention.hoverDetails": "Cohorte {label} · {cohortSize} utilisateurs · actifs {activeStart} – {activeEnd}",
179
+ "overview.retention.hoverHint": "Survolez une ligne pour voir les détails de la cohorte",
180
+ "overview.retention.title": "Rétention par cohorte",
181
+ "overview.sections.growth": "Croissance",
182
+ "overview.sections.metrics": "Indicateurs",
183
+ "overview.sections.retentionActivity": "Rétention et activité",
184
+ "overview.stats.dailySignUps": "Inscriptions quotidiennes",
185
+ "overview.stats.monthlySignUps": "Inscriptions mensuelles",
186
+ "overview.stats.organizations": "Organisations",
187
+ "overview.stats.totalUsers": "Total des utilisateurs",
188
+ "overview.stats.weeklySignUps": "Inscriptions hebdomadaires",
189
+ "plugin.name": "Tableau de bord Auth",
190
+ "sessions.alert.close": "Fermer",
191
+ "sessions.alert.generic": "Une erreur est survenue",
192
+ "sessions.alert.title": "Erreur",
193
+ "sessions.common.revokeFailed": "Échec de la révocation",
194
+ "sessions.common.revokeSession": "Révoquer la session",
195
+ "sessions.common.revokeSessionsForUsers": "Révoquer les sessions de {count, plural, one {# utilisateur} many {# utilisateurs} other {# utilisateurs}}",
196
+ "sessions.common.sessions": "Sessions",
197
+ "sessions.empty": "Aucune session active",
198
+ "sessions.errors.loadFailed": "Échec du chargement des sessions",
199
+ "sessions.header.subtitle": "{count, plural, one {# utilisateur} many {# utilisateurs} other {# utilisateurs}} avec des sessions actives",
200
+ "sessions.header.subtitleEmpty": "Sessions actives de tous les utilisateurs",
201
+ "sessions.loading": "Chargement des sessions…",
202
+ "sessions.pagination.next": "Suivant",
203
+ "sessions.pagination.previous": "Précédent",
204
+ "sessions.revokeMany.confirm": "Tout révoquer",
205
+ "sessions.revokeMany.message": "Êtes-vous sûr de vouloir révoquer toutes les sessions de {count, plural, one {# utilisateur} many {# utilisateurs} other {# utilisateurs}} ? Ils seront déconnectés de tous leurs appareils.",
206
+ "sessions.revokeSession.confirm": "Révoquer",
207
+ "sessions.revokeSession.message": "Êtes-vous sûr de vouloir révoquer cette session ? L’utilisateur sera déconnecté sur cet appareil.",
208
+ "sessions.session.dates": "Créée le {createdAt} · Expire le {expiresAt}",
209
+ "sessions.table.selectAll": "Sélectionner tous les utilisateurs",
210
+ "sessions.table.selectUser": "Sélectionner {name}",
211
+ "sessions.table.sessionCount": "{count, plural, one {# session} many {# sessions} other {# sessions}}",
212
+ "sessions.table.userSessions": "Utilisateur / Sessions",
213
+ "settings.general": "Général",
214
+ "settings.organizations": "Gestion des organisations",
215
+ "settings.overview": "Vue d’ensemble",
216
+ "settings.users": "Gestion des utilisateurs",
217
+ "userDetail.backupCodesModal.description": "Chaque code ne peut être utilisé qu’une seule fois. Conservez-les en lieu sûr.",
218
+ "userDetail.ban.apply.duration.hint": "Laisser vide pour un bannissement définitif",
219
+ "userDetail.ban.apply.duration.label": "Durée (jours)",
220
+ "userDetail.ban.apply.duration.placeholder": "ex. 30",
221
+ "userDetail.ban.apply.preview.expires": "Expire le {date}",
222
+ "userDetail.ban.apply.preview.permanent": "Bannissement définitif",
223
+ "userDetail.ban.apply.reason.hint": "Facultatif — sera affiché à l’utilisateur",
224
+ "userDetail.ban.apply.reason.label": "Motif",
225
+ "userDetail.ban.apply.reason.placeholder": "ex. Non-respect des conditions d’utilisation",
226
+ "userDetail.ban.apply.title": "Appliquer un bannissement",
227
+ "userDetail.ban.status.current": "Cet utilisateur est actuellement banni",
228
+ "userDetail.ban.status.expires": "Expire le : {date}",
229
+ "userDetail.ban.status.permanent": "Durée : définitive",
230
+ "userDetail.ban.status.reason": "Motif : {reason}",
231
+ "userDetail.ban.status.title": "Statut du bannissement",
232
+ "userDetail.common.backupCodes": "Codes de secours",
233
+ "userDetail.common.banFailed": "Échec du bannissement",
234
+ "userDetail.common.banUser": "Bannir l’utilisateur",
235
+ "userDetail.common.callbackUrlMissing": "Définissez `email_callback_url` dans la configuration du plugin better-auth-dashboard pour activer cette action.",
236
+ "userDetail.common.close": "Fermer",
237
+ "userDetail.common.disableTwoFactor": "Désactiver la 2FA",
238
+ "userDetail.common.disableTwoFactorFailed": "Échec de la désactivation de la 2FA",
239
+ "userDetail.common.disableTwoFactorTitle": "Désactiver l’authentification à deux facteurs",
240
+ "userDetail.common.enableTwoFactorFailed": "Échec de l’activation de la 2FA",
241
+ "userDetail.common.failed": "Échec",
242
+ "userDetail.common.generateBackupCodesFailed": "Échec de la génération des codes de secours",
243
+ "userDetail.common.liftBan": "Lever le bannissement",
244
+ "userDetail.common.loadBackupCodesFailed": "Échec du chargement des codes de secours",
245
+ "userDetail.common.loadTotpUriFailed": "Échec du chargement de l’URI TOTP",
246
+ "userDetail.common.loadUserFailed": "Échec du chargement de l’utilisateur",
247
+ "userDetail.common.passwordUpdateFailed": "Échec de la mise à jour du mot de passe",
248
+ "userDetail.common.refresh": "Actualiser",
249
+ "userDetail.common.regenerate": "Régénérer",
250
+ "userDetail.common.revokeAll": "Tout révoquer",
251
+ "userDetail.common.revokeAllSessions": "Révoquer toutes les sessions",
252
+ "userDetail.common.revokeFailed": "Échec de la révocation",
253
+ "userDetail.common.revokeSession": "Révoquer la session",
254
+ "userDetail.common.secretKey": "Clé secrète",
255
+ "userDetail.common.sendEmailFailed": "Échec de l’envoi de l’e-mail",
256
+ "userDetail.common.totpAuthenticator": "Authentificateur TOTP",
257
+ "userDetail.common.totpUri": "URI TOTP",
258
+ "userDetail.common.unbanFailed": "Échec de la levée du bannissement",
259
+ "userDetail.common.unlink": "Dissocier",
260
+ "userDetail.common.unlinkFailed": "Échec de la dissociation du compte",
261
+ "userDetail.common.updateFailed": "Échec de la mise à jour",
262
+ "userDetail.common.view": "Afficher",
263
+ "userDetail.confirm.ban.message": "Êtes-vous sûr de vouloir bannir cet utilisateur ? Il ne pourra plus se connecter.",
264
+ "userDetail.confirm.ban.messageWithReason": "Bannir cet utilisateur pour le motif suivant : « {reason} » ? Il ne pourra plus se connecter.",
265
+ "userDetail.confirm.disableTwoFactor.message": "Êtes-vous sûr de vouloir désactiver la 2FA pour cet utilisateur ? Il n’aura plus besoin d’un second facteur pour se connecter.",
266
+ "userDetail.confirm.regenerateBackupCodes.message": "Tous les codes de secours existants seront invalidés. Les nouveaux codes ne seront affichés qu’une seule fois après leur génération. Êtes-vous sûr ?",
267
+ "userDetail.confirm.regenerateBackupCodes.title": "Régénérer les codes de secours",
268
+ "userDetail.confirm.revokeAll.message": "Êtes-vous sûr de vouloir révoquer toutes les sessions de cet utilisateur ? Il sera déconnecté de tous ses appareils.",
269
+ "userDetail.confirm.revokeSession.confirm": "Révoquer",
270
+ "userDetail.confirm.revokeSession.message": "Êtes-vous sûr de vouloir révoquer cette session ? L’utilisateur sera déconnecté sur cet appareil.",
271
+ "userDetail.confirm.unban.message": "Êtes-vous sûr de vouloir lever le bannissement de cet utilisateur ? Il pourra de nouveau se connecter.",
272
+ "userDetail.confirm.unlink.message": "Êtes-vous sûr de vouloir dissocier le fournisseur « {provider} » de cet utilisateur ?",
273
+ "userDetail.confirm.unlink.title": "Dissocier le compte",
274
+ "userDetail.errors.documentIdMissing": "Impossible de déterminer le documentId de l’utilisateur",
275
+ "userDetail.errors.generic": "Une erreur est survenue",
276
+ "userDetail.footer.discard": "Annuler les modifications",
277
+ "userDetail.footer.save": "Enregistrer les modifications",
278
+ "userDetail.header.banned": "Banni",
279
+ "userDetail.header.fallbackName": "Utilisateur",
280
+ "userDetail.loadingUser": "Chargement de l’utilisateur…",
281
+ "userDetail.notifications.accountUnlinked": "Compte dissocié",
282
+ "userDetail.notifications.allSessionsRevoked": "Toutes les sessions ont été révoquées",
283
+ "userDetail.notifications.backupCodesGenerated": "Nouveaux codes de secours générés",
284
+ "userDetail.notifications.banned": "L’utilisateur a été banni",
285
+ "userDetail.notifications.passwordUpdated": "Mot de passe mis à jour avec succès",
286
+ "userDetail.notifications.resetPasswordSent": "E-mail de réinitialisation du mot de passe envoyé",
287
+ "userDetail.notifications.revokeAllError": "Échec de la révocation des sessions",
288
+ "userDetail.notifications.revokeSessionError": "Échec de la révocation de la session",
289
+ "userDetail.notifications.sessionRevoked": "Session révoquée",
290
+ "userDetail.notifications.twoFactorDisabled": "Authentification à deux facteurs désactivée",
291
+ "userDetail.notifications.twoFactorEnabled": "Authentification à deux facteurs activée",
292
+ "userDetail.notifications.unbanned": "Le bannissement a été levé",
293
+ "userDetail.notifications.updated": "Utilisateur mis à jour avec succès",
294
+ "userDetail.notifications.verificationSent": "E-mail de vérification envoyé",
295
+ "userDetail.organizations.empty": "N’est membre d’aucune organisation.",
296
+ "userDetail.organizations.loading": "Chargement…",
297
+ "userDetail.organizations.memberships": "Adhésions",
298
+ "userDetail.organizations.teams": "{count, plural, one {# équipe} many {# équipes} other {# équipes}}",
299
+ "userDetail.profile.avatar.hint": "Facultatif — URL d’une image accessible publiquement",
300
+ "userDetail.profile.avatar.label": "URL de l’avatar",
301
+ "userDetail.profile.avatar.placeholder": "https://example.com/avatar.png",
302
+ "userDetail.profile.created": "Créé le",
303
+ "userDetail.profile.details": "Détails",
304
+ "userDetail.profile.email": "Adresse e-mail",
305
+ "userDetail.profile.emailActions.callbackUrlHint": "Définissez `email_callback_url` dans la configuration du plugin better-auth-dashboard pour activer ces actions.",
306
+ "userDetail.profile.emailActions.sendReset": "Envoyer la réinitialisation du mot de passe",
307
+ "userDetail.profile.emailActions.sendVerification": "Envoyer l’e-mail de vérification",
308
+ "userDetail.profile.emailActions.title": "Actions e-mail",
309
+ "userDetail.profile.fullName": "Nom complet",
310
+ "userDetail.profile.lastUpdated": "Dernière mise à jour",
311
+ "userDetail.profile.markVerified": "Marquer l’e-mail comme vérifié",
312
+ "userDetail.profile.personalInfo": "Informations personnelles",
313
+ "userDetail.profile.userId": "ID utilisateur",
314
+ "userDetail.security.linkedAccounts.empty": "Aucun compte OAuth associé.",
315
+ "userDetail.security.linkedAccounts.title": "Comptes associés",
316
+ "userDetail.security.password.hint": "L’utilisateur pourra se connecter avec ce nouveau mot de passe",
317
+ "userDetail.security.password.label": "Nouveau mot de passe",
318
+ "userDetail.security.password.placeholder": "Saisissez un mot de passe robuste…",
319
+ "userDetail.security.password.submit": "Définir le mot de passe",
320
+ "userDetail.security.password.title": "Mot de passe",
321
+ "userDetail.security.twoFactor.backupCodes.description": "Afficher ou régénérer les codes de récupération de l’utilisateur.",
322
+ "userDetail.security.twoFactor.disable.description": "L’utilisateur n’aura plus besoin d’un second facteur pour se connecter.",
323
+ "userDetail.security.twoFactor.enable.description": "Ajoutez une couche de sécurité supplémentaire à ce compte.",
324
+ "userDetail.security.twoFactor.enable.submit": "Activer la 2FA",
325
+ "userDetail.security.twoFactor.enable.title": "Activer l’authentification à deux facteurs",
326
+ "userDetail.security.twoFactor.setup.instructions": "Scannez l’URI TOTP avec une application d’authentification, ou saisissez la clé secrète manuellement.",
327
+ "userDetail.security.twoFactor.status.disabled": "Non activée",
328
+ "userDetail.security.twoFactor.status.enabled": "Activée",
329
+ "userDetail.security.twoFactor.title": "Authentification à deux facteurs",
330
+ "userDetail.security.twoFactor.totp.description": "Afficher l’URI et le secret de l’application d’authentification de cet utilisateur.",
331
+ "userDetail.sessions.active": "Sessions actives",
332
+ "userDetail.sessions.empty": "Aucune session active.",
333
+ "userDetail.sessions.loading": "Chargement des sessions…",
334
+ "userDetail.sessions.management": "Gestion des sessions",
335
+ "userDetail.sessions.revokeAll.description": "Déconnecte immédiatement l’utilisateur de tous ses appareils.",
336
+ "userDetail.sessions.timestamps": "Créée le {createdAt} · Expire le {expiresAt}",
337
+ "userDetail.tabs.ban": "Bannissement",
338
+ "userDetail.tabs.organizations": "Organisations",
339
+ "userDetail.tabs.profile": "Profil",
340
+ "userDetail.tabs.security": "Sécurité",
341
+ "userDetail.tabs.sessions": "Sessions",
342
+ "userDetail.totpModal.description": "Partagez ces informations avec l’utilisateur pour configurer son application d’authentification.",
343
+ "users.config.close": "Fermer",
344
+ "users.config.errorTitle": "Erreur lors du chargement de la configuration",
345
+ "users.config.loading": "Chargement de la configuration utilisateur…",
346
+ "users.create.cancel": "Annuler",
347
+ "users.create.errors.createFailed": "Échec de la création",
348
+ "users.create.fields.email.label": "Adresse e-mail",
349
+ "users.create.fields.email.placeholder": "jane@example.com",
350
+ "users.create.fields.emailVerified": "Marquer l’e-mail comme déjà vérifié",
351
+ "users.create.fields.emailVerifiedHint": "L’utilisateur pourra se connecter immédiatement sans vérifier son e-mail.",
352
+ "users.create.fields.generatePassword": "Générer un mot de passe aléatoire",
353
+ "users.create.fields.image.hint": "Facultatif — URL d’une image accessible publiquement",
354
+ "users.create.fields.image.label": "URL de l’avatar",
355
+ "users.create.fields.image.placeholder": "https://example.com/avatar.png",
356
+ "users.create.fields.name.label": "Nom complet",
357
+ "users.create.fields.name.placeholder": "Jane Smith",
358
+ "users.create.fields.password.label": "Mot de passe",
359
+ "users.create.fields.password.placeholder": "Laisser vide pour un compte sans mot de passe",
360
+ "users.create.fields.sendVerificationEmail": "Envoyer un e-mail de vérification à l’utilisateur",
361
+ "users.create.notifications.error": "Échec de la création de l’utilisateur",
362
+ "users.create.notifications.success": "Utilisateur créé avec succès",
363
+ "users.create.sections.emailVerification": "Vérification de l’e-mail",
364
+ "users.create.sections.password": "Mot de passe",
365
+ "users.create.sections.personal": "Informations personnelles",
366
+ "users.create.submit": "Créer l’utilisateur",
367
+ "users.create.title": "Créer un utilisateur",
368
+ "users.list.actions.banSelected": "Bannir la sélection ({count})",
369
+ "users.list.actions.deleteSelected": "Supprimer la sélection ({count})",
370
+ "users.list.alert.close": "Fermer",
371
+ "users.list.alert.error": "Erreur",
372
+ "users.list.confirmBanMany.confirm": "Tout bannir",
373
+ "users.list.confirmBanMany.message": "Êtes-vous sûr de vouloir bannir {count, plural, one {# utilisateur} many {# utilisateurs} other {# utilisateurs}} ? Ils ne pourront plus se connecter.",
374
+ "users.list.confirmBanMany.title": "Bannir {count, plural, one {# utilisateur} many {# utilisateurs} other {# utilisateurs}}",
375
+ "users.list.confirmDelete.confirm": "Supprimer",
376
+ "users.list.confirmDelete.message": "Êtes-vous sûr de vouloir supprimer cet utilisateur ? Cette action est irréversible.",
377
+ "users.list.confirmDelete.title": "Supprimer l’utilisateur",
378
+ "users.list.confirmDeleteMany.confirm": "Tout supprimer",
379
+ "users.list.confirmDeleteMany.message": "Êtes-vous sûr de vouloir supprimer {count, plural, one {# utilisateur} many {# utilisateurs} other {# utilisateurs}} ? Cette action est irréversible.",
380
+ "users.list.confirmDeleteMany.title": "Supprimer {count, plural, one {# utilisateur} many {# utilisateurs} other {# utilisateurs}}",
381
+ "users.list.empty.default": "Aucun utilisateur trouvé",
382
+ "users.list.empty.search": "Aucun utilisateur ne correspond à « {search} »",
383
+ "users.list.errors.banFailed": "Échec du bannissement",
384
+ "users.list.errors.deleteFailed": "Échec de la suppression",
385
+ "users.list.header.create": "Créer un utilisateur",
386
+ "users.list.header.subtitle": "{total} au total",
387
+ "users.list.header.subtitleWithOnline": "{total} au total · {online} en ligne",
388
+ "users.list.header.title": "Utilisateurs",
389
+ "users.list.loading": "Chargement des utilisateurs…",
390
+ "users.list.notifications.banManyError": "Échec du bannissement des utilisateurs",
391
+ "users.list.notifications.bannedMany": "{count, plural, one {# utilisateur banni} many {# utilisateurs bannis} other {# utilisateurs bannis}}",
392
+ "users.list.notifications.deleteError": "Échec de la suppression de l’utilisateur",
393
+ "users.list.notifications.deleteManyError": "Échec de la suppression des utilisateurs",
394
+ "users.list.notifications.deleted": "Utilisateur supprimé",
395
+ "users.list.notifications.deletedMany": "{count, plural, one {# utilisateur supprimé} many {# utilisateurs supprimés} other {# utilisateurs supprimés}}",
396
+ "users.list.pagination.next": "Suivant",
397
+ "users.list.pagination.previous": "Précédent",
398
+ "users.list.search.clear": "Effacer",
399
+ "users.list.search.label": "Rechercher des utilisateurs",
400
+ "users.list.search.placeholder": "Rechercher par e-mail…",
401
+ "users.list.status.banned": "Banni",
402
+ "users.list.status.unverified": "Non vérifié",
403
+ "users.list.status.verified": "Vérifié",
404
+ "users.list.table.deleteUser": "Supprimer l’utilisateur",
405
+ "users.list.table.editUser": "Modifier l’utilisateur",
406
+ "users.list.table.headers.actions": "Actions",
407
+ "users.list.table.headers.created": "Créé le",
408
+ "users.list.table.headers.email": "E-mail",
409
+ "users.list.table.headers.name": "Nom",
410
+ "users.list.table.headers.status": "Statut",
411
+ "users.list.table.selectAll": "Tout sélectionner",
412
+ "users.list.table.selectRow": "Sélectionner {name}"
413
+ };
414
+ export {
415
+ fr as default
416
+ };
@@ -1,10 +1,29 @@
1
1
  "use strict";
2
2
  const jsxRuntime = require("react/jsx-runtime");
3
+ const reactIntl = require("react-intl");
3
4
  const reactQuery = require("react-query");
4
5
  const client$2 = require("@better-auth/infra/client");
5
6
  const client$1 = require("better-auth/client");
6
7
  const admin = require("@strapi/strapi/admin");
7
8
  const react = require("react");
9
+ const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
10
+ const v = glob[path];
11
+ if (v) {
12
+ return typeof v === "function" ? v() : Promise.resolve(v);
13
+ }
14
+ return new Promise((_, reject) => {
15
+ (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
16
+ reject.bind(
17
+ null,
18
+ new Error(
19
+ "Unknown variable dynamic import: " + path + (path.split("/").length !== segs ? ". Note that variables only represent file names one level deep." : "")
20
+ )
21
+ )
22
+ );
23
+ });
24
+ };
25
+ const PLUGIN_ID = "better-auth-dashboard";
26
+ const getTranslation = (id) => `${PLUGIN_ID}.${id}`;
8
27
  const PluginIcon = ({
9
28
  size = 16,
10
29
  background = "transparent",
@@ -15,6 +34,7 @@ const PluginIcon = ({
15
34
  flipVertical = false,
16
35
  padding = 0
17
36
  }) => {
37
+ const { formatMessage } = reactIntl.useIntl();
18
38
  const transforms = [];
19
39
  if (rotation !== 0) transforms.push(`rotate(${rotation}deg)`);
20
40
  if (flipHorizontal) transforms.push("scaleX(-1)");
@@ -37,7 +57,10 @@ const PluginIcon = ({
37
57
  backgroundColor: background !== "transparent" ? background : void 0
38
58
  },
39
59
  children: [
40
- /* @__PURE__ */ jsxRuntime.jsx("title", { children: "Better Auth Logo" }),
60
+ /* @__PURE__ */ jsxRuntime.jsx("title", { children: formatMessage({
61
+ id: getTranslation("components.pluginIcon.title"),
62
+ defaultMessage: "Better Auth Logo"
63
+ }) }),
41
64
  /* @__PURE__ */ jsxRuntime.jsx(
42
65
  "path",
43
66
  {
@@ -49,7 +72,6 @@ const PluginIcon = ({
49
72
  }
50
73
  );
51
74
  };
52
- const PLUGIN_ID = "better-auth-dashboard";
53
75
  const PERMISSIONS = {
54
76
  overview: [{ action: `plugin::${PLUGIN_ID}.overview.read`, subject: null }],
55
77
  user: [
@@ -153,20 +175,34 @@ const client = client$1.createAuthClient({
153
175
  client$1.InferPlugin()
154
176
  ],
155
177
  fetchOptions: {
156
- headers: getAuthHeaders()
178
+ onRequest: ({ headers }) => {
179
+ const token = getToken();
180
+ if (token) {
181
+ headers.set("Authorization", `Bearer ${token}`);
182
+ } else {
183
+ headers.delete("Authorization");
184
+ }
185
+ }
157
186
  }
158
187
  });
159
- async function getDashConfig() {
188
+ const loadConfigError = {
189
+ id: getTranslation("common.errors.loadConfig"),
190
+ defaultMessage: "Failed to load config"
191
+ };
192
+ async function getDashConfig(formatMessage) {
160
193
  const result = await client.dash.config();
161
194
  if (result.error) {
162
- throw new Error(result.error.message ?? "Failed to load config");
195
+ throw new Error(
196
+ result.error.message ?? (formatMessage ? formatMessage(loadConfigError) : loadConfigError.defaultMessage)
197
+ );
163
198
  }
164
199
  return result.data;
165
200
  }
166
201
  function useDashConfig() {
202
+ const { formatMessage } = reactIntl.useIntl();
167
203
  return reactQuery.useQuery({
168
204
  queryKey: ["dash-config"],
169
- queryFn: getDashConfig,
205
+ queryFn: () => getDashConfig(formatMessage),
170
206
  staleTime: 5 * 60 * 1e3
171
207
  });
172
208
  }
@@ -314,6 +350,12 @@ function getEditViewSidePanels(model) {
314
350
  return p.model === model;
315
351
  });
316
352
  }
353
+ const prefixPluginTranslations = (translations) => Object.fromEntries(
354
+ Object.entries(translations).map(([key, value]) => [
355
+ `${PLUGIN_ID}.${key}`,
356
+ value
357
+ ])
358
+ );
317
359
  function captureApp(app) {
318
360
  window.__betterAuthDashApp = app;
319
361
  }
@@ -336,7 +378,7 @@ const plugin = {
336
378
  id: `${PLUGIN_ID}.plugin.name`,
337
379
  defaultMessage: "Auth Dashboard"
338
380
  },
339
- Component: async () => Promise.resolve().then(() => require("./Root-DDi0mtve.js")),
381
+ Component: async () => Promise.resolve().then(() => require("./Root-CsiOnzlB.js")),
340
382
  permissions: [
341
383
  ...PERMISSIONS.overview,
342
384
  ...PERMISSIONS.user,
@@ -360,7 +402,7 @@ const plugin = {
360
402
  defaultMessage: "Overview"
361
403
  },
362
404
  to: "/overview",
363
- Component: () => Promise.resolve().then(() => require("./index-CqR8WpOa.js")),
405
+ Component: () => Promise.resolve().then(() => require("./index-DQdn5s8q.js")),
364
406
  permissions: PERMISSIONS.overview
365
407
  });
366
408
  dash.addDashLink("general", {
@@ -370,7 +412,7 @@ const plugin = {
370
412
  defaultMessage: "User Management"
371
413
  },
372
414
  to: "/users",
373
- Component: () => Promise.resolve().then(() => require("./index-BV-4M_Fp.js")),
415
+ Component: () => Promise.resolve().then(() => require("./index-D9ttdrT3.js")),
374
416
  permissions: PERMISSIONS.user
375
417
  });
376
418
  dash.addDashLink("general", {
@@ -380,10 +422,22 @@ const plugin = {
380
422
  defaultMessage: "Organization Management"
381
423
  },
382
424
  to: "/organizations",
383
- Component: () => Promise.resolve().then(() => require("./index-D6ktNZcj.js")),
425
+ Component: () => Promise.resolve().then(() => require("./index-CPSoAbZt.js")),
384
426
  permissions: PERMISSIONS.organization,
385
427
  isAvailable: async () => hasPlugin(await getDashConfig(), "organization")
386
428
  });
429
+ },
430
+ async registerTrads({ locales }) {
431
+ return Promise.all(
432
+ locales.map(async (locale) => {
433
+ try {
434
+ const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/cs.json": () => Promise.resolve().then(() => require("./cs-C_jSgeON.js")), "./translations/de.json": () => Promise.resolve().then(() => require("./de-Cg5HyoCY.js")), "./translations/en.json": () => Promise.resolve().then(() => require("./en-Cz1IJEvp.js")), "./translations/es.json": () => Promise.resolve().then(() => require("./es-CGA0Tslt.js")), "./translations/fr.json": () => Promise.resolve().then(() => require("./fr-Ca74t21t.js")), "./translations/it.json": () => Promise.resolve().then(() => require("./it-dYT2_ERV.js")), "./translations/nl.json": () => Promise.resolve().then(() => require("./nl-CVqSbUU9.js")), "./translations/pl.json": () => Promise.resolve().then(() => require("./pl-HYF4BxRv.js")), "./translations/pt.json": () => Promise.resolve().then(() => require("./pt-DDUGyLtb.js")) }), `./translations/${locale}.json`, 3);
435
+ return { data: prefixPluginTranslations(data), locale };
436
+ } catch {
437
+ return { data: {}, locale };
438
+ }
439
+ })
440
+ );
387
441
  }
388
442
  };
389
443
  exports.DASH_LINK_AVAILABILITY_STALE_TIME = DASH_LINK_AVAILABILITY_STALE_TIME;
@@ -395,6 +449,7 @@ exports.getDashLinkAvailabilityQueryKey = getDashLinkAvailabilityQueryKey;
395
449
  exports.getDashLinks = getDashLinks;
396
450
  exports.getEditViewSidePanels = getEditViewSidePanels;
397
451
  exports.getMediaLibraryComponent = getMediaLibraryComponent;
452
+ exports.getTranslation = getTranslation;
398
453
  exports.hasPlugin = hasPlugin;
399
454
  exports.plugin = plugin;
400
455
  exports.resolveDashLinkAvailability = resolveDashLinkAvailability;