@eifi1/ui-kit 0.29.0 → 0.31.0

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 (307) hide show
  1. package/README.md +65 -6
  2. package/dist/account/account-parts.d.ts +21 -0
  3. package/dist/account/account-parts.js +40 -0
  4. package/dist/account/account-parts.js.map +1 -0
  5. package/dist/account/data-export-setting.d.ts +73 -0
  6. package/dist/account/data-export-setting.js +114 -0
  7. package/dist/account/data-export-setting.js.map +1 -0
  8. package/dist/account/delete-account-setting.d.ts +95 -0
  9. package/dist/account/delete-account-setting.js +200 -0
  10. package/dist/account/delete-account-setting.js.map +1 -0
  11. package/dist/account/email-change-setting.d.ts +136 -0
  12. package/dist/account/email-change-setting.js +278 -0
  13. package/dist/account/email-change-setting.js.map +1 -0
  14. package/dist/account/sessions-setting.d.ts +110 -0
  15. package/dist/account/sessions-setting.js +147 -0
  16. package/dist/account/sessions-setting.js.map +1 -0
  17. package/dist/admin/admin-action-confirm.d.ts +95 -0
  18. package/dist/admin/admin-action-confirm.js +276 -0
  19. package/dist/admin/admin-action-confirm.js.map +1 -0
  20. package/dist/admin/admin-action-log.d.ts +105 -0
  21. package/dist/admin/admin-action-log.js +153 -0
  22. package/dist/admin/admin-action-log.js.map +1 -0
  23. package/dist/admin/admin-parts.d.ts +40 -0
  24. package/dist/admin/admin-parts.js +45 -0
  25. package/dist/admin/admin-parts.js.map +1 -0
  26. package/dist/admin/invitations-panel.d.ts +95 -0
  27. package/dist/admin/invitations-panel.js +290 -0
  28. package/dist/admin/invitations-panel.js.map +1 -0
  29. package/dist/admin/reviewer-scope-editor.d.ts +95 -0
  30. package/dist/admin/reviewer-scope-editor.js +134 -0
  31. package/dist/admin/reviewer-scope-editor.js.map +1 -0
  32. package/dist/admin/role-select.d.ts +95 -0
  33. package/dist/admin/role-select.js +128 -0
  34. package/dist/admin/role-select.js.map +1 -0
  35. package/dist/admin/transfer-ownership-dialog.d.ts +95 -0
  36. package/dist/admin/transfer-ownership-dialog.js +83 -0
  37. package/dist/admin/transfer-ownership-dialog.js.map +1 -0
  38. package/dist/admin/user-roster.d.ts +95 -0
  39. package/dist/admin/user-roster.js +285 -0
  40. package/dist/admin/user-roster.js.map +1 -0
  41. package/dist/auth/auth-errors.d.ts +103 -6
  42. package/dist/auth/auth-errors.js +68 -2
  43. package/dist/auth/auth-errors.js.map +1 -1
  44. package/dist/auth/forgot-password-form.d.ts +10 -3
  45. package/dist/auth/forgot-password-form.js +6 -3
  46. package/dist/auth/forgot-password-form.js.map +1 -1
  47. package/dist/auth/register-form.d.ts +21 -12
  48. package/dist/auth/register-form.js +6 -4
  49. package/dist/auth/register-form.js.map +1 -1
  50. package/dist/auth/reset-password-form.d.ts +10 -3
  51. package/dist/auth/reset-password-form.js +6 -3
  52. package/dist/auth/reset-password-form.js.map +1 -1
  53. package/dist/auth/sign-in-form.d.ts +75 -9
  54. package/dist/auth/sign-in-form.js +105 -15
  55. package/dist/auth/sign-in-form.js.map +1 -1
  56. package/dist/auth/verify-email.d.ts +7 -2
  57. package/dist/auth/verify-email.js +44 -8
  58. package/dist/auth/verify-email.js.map +1 -1
  59. package/dist/chart.d.ts +20 -11
  60. package/dist/components/account-chips.d.ts +47 -7
  61. package/dist/components/account-chips.js +19 -3
  62. package/dist/components/account-chips.js.map +1 -1
  63. package/dist/components/account-settings-labels.d.ts +24 -1
  64. package/dist/components/account-settings-labels.js +6 -2
  65. package/dist/components/account-settings-labels.js.map +1 -1
  66. package/dist/components/account-settings.d.ts +69 -8
  67. package/dist/components/account-settings.js +133 -25
  68. package/dist/components/account-settings.js.map +1 -1
  69. package/dist/components/amount-input.d.ts +21 -12
  70. package/dist/components/button-group.d.ts +21 -12
  71. package/dist/components/calculator.d.ts +21 -12
  72. package/dist/components/confirm-dialog.d.ts +21 -12
  73. package/dist/components/copy-button.d.ts +18 -9
  74. package/dist/components/danger-confirm.d.ts +21 -12
  75. package/dist/components/data-table.js +8 -1
  76. package/dist/components/data-table.js.map +1 -1
  77. package/dist/components/date-picker.js +9 -4
  78. package/dist/components/date-picker.js.map +1 -1
  79. package/dist/components/facing-pair.d.ts +21 -12
  80. package/dist/components/file-button.d.ts +21 -12
  81. package/dist/components/file-dropzone.d.ts +21 -12
  82. package/dist/components/form-actions.d.ts +21 -12
  83. package/dist/components/iban-input.d.ts +21 -12
  84. package/dist/components/language-select.d.ts +21 -12
  85. package/dist/components/legal-page.d.ts +21 -12
  86. package/dist/components/legal.d.ts +21 -12
  87. package/dist/components/money-field.d.ts +21 -12
  88. package/dist/components/number-field.d.ts +21 -12
  89. package/dist/components/number-input.d.ts +21 -12
  90. package/dist/components/numpad-sheet.d.ts +21 -12
  91. package/dist/components/passkeys-setting.js +2 -1
  92. package/dist/components/passkeys-setting.js.map +1 -1
  93. package/dist/components/phone-input.d.ts +21 -12
  94. package/dist/components/series-chart.d.ts +21 -12
  95. package/dist/components/settings-fields.d.ts +55 -13
  96. package/dist/components/settings-fields.js +20 -1
  97. package/dist/components/settings-fields.js.map +1 -1
  98. package/dist/components/share-card.d.ts +20 -11
  99. package/dist/components/text-link.d.ts +21 -12
  100. package/dist/components/time-input.d.ts +21 -12
  101. package/dist/components/ui.d.ts +17 -8
  102. package/dist/{register-form-V1OeNlMr.d.ts → delete-account-setting-DCFS5Vof.d.ts} +6612 -5612
  103. package/dist/demo/demo-banner.d.ts +51 -0
  104. package/dist/demo/demo-banner.js +97 -0
  105. package/dist/demo/demo-banner.js.map +1 -0
  106. package/dist/demo/demo-countdown.d.ts +58 -0
  107. package/dist/demo/demo-countdown.js +79 -0
  108. package/dist/demo/demo-countdown.js.map +1 -0
  109. package/dist/demo/demo-ended.d.ts +45 -0
  110. package/dist/demo/demo-ended.js +42 -0
  111. package/dist/demo/demo-ended.js.map +1 -0
  112. package/dist/demo/demo-labels.d.ts +53 -0
  113. package/dist/demo/demo-labels.js +29 -0
  114. package/dist/demo/demo-labels.js.map +1 -0
  115. package/dist/demo/demo-session.d.ts +30 -0
  116. package/dist/demo/demo-session.js +8 -0
  117. package/dist/demo/demo-session.js.map +1 -0
  118. package/dist/demo/demo-start.d.ts +54 -0
  119. package/dist/demo/demo-start.js +68 -0
  120. package/dist/demo/demo-start.js.map +1 -0
  121. package/dist/feedback/feedback-attachment.d.ts +21 -12
  122. package/dist/feedback/feedback-context.d.ts +21 -12
  123. package/dist/feedback/feedback-crash.d.ts +21 -12
  124. package/dist/feedback/feedback-dialog.d.ts +21 -12
  125. package/dist/feedback/feedback-inbox.d.ts +21 -12
  126. package/dist/feedback/feedback-inbox.js +12 -2
  127. package/dist/feedback/feedback-inbox.js.map +1 -1
  128. package/dist/feedback/feedback-labels.d.ts +21 -12
  129. package/dist/feedback/feedback-labels.js +1 -0
  130. package/dist/feedback/feedback-labels.js.map +1 -1
  131. package/dist/feedback/feedback-menu.d.ts +21 -12
  132. package/dist/feedback/feedback-record.d.ts +21 -12
  133. package/dist/feedback/feedback-record.js +2 -0
  134. package/dist/feedback/feedback-record.js.map +1 -1
  135. package/dist/feedback/feedback-row-detail.d.ts +21 -12
  136. package/dist/feedback/feedback-row-detail.js +7 -0
  137. package/dist/feedback/feedback-row-detail.js.map +1 -1
  138. package/dist/feedback/feedback-status-undo.d.ts +21 -12
  139. package/dist/feedback/feedback-submit.d.ts +21 -12
  140. package/dist/feedback/feedback-swipe.d.ts +22 -13
  141. package/dist/feedback/feedback-swipe.js.map +1 -1
  142. package/dist/feedback/feedback-table.d.ts +18 -9
  143. package/dist/feedback/feedback-thread.d.ts +21 -12
  144. package/dist/feedback.d.ts +21 -12
  145. package/dist/hooks/use-anchored-panel.d.ts +6 -2
  146. package/dist/hooks/use-anchored-panel.js +2 -1
  147. package/dist/hooks/use-anchored-panel.js.map +1 -1
  148. package/dist/hooks/use-file-drop.d.ts +21 -12
  149. package/dist/i18n/defaults.d.ts +21 -12
  150. package/dist/i18n/defaults.js +28 -0
  151. package/dist/i18n/defaults.js.map +1 -1
  152. package/dist/i18n/german.d.ts +21 -12
  153. package/dist/i18n/german.js +298 -12
  154. package/dist/i18n/german.js.map +1 -1
  155. package/dist/i18n/kit-labels.d.ts +14 -5
  156. package/dist/i18n/kit-labels.js.map +1 -1
  157. package/dist/i18n/languages.d.ts +15 -6
  158. package/dist/i18n/locales/de-CH.d.ts +21 -12
  159. package/dist/i18n/locales/en.d.ts +21 -12
  160. package/dist/i18n/locales/es.d.ts +21 -12
  161. package/dist/i18n/locales/es.js +287 -10
  162. package/dist/i18n/locales/es.js.map +1 -1
  163. package/dist/i18n/locales/fr.d.ts +21 -12
  164. package/dist/i18n/locales/fr.js +290 -7
  165. package/dist/i18n/locales/fr.js.map +1 -1
  166. package/dist/i18n/locales/hu.d.ts +21 -12
  167. package/dist/i18n/locales/hu.js +288 -12
  168. package/dist/i18n/locales/hu.js.map +1 -1
  169. package/dist/i18n/locales/it.d.ts +21 -12
  170. package/dist/i18n/locales/it.js +289 -7
  171. package/dist/i18n/locales/it.js.map +1 -1
  172. package/dist/i18n/locales/zh.d.ts +21 -12
  173. package/dist/i18n/locales/zh.js +279 -7
  174. package/dist/i18n/locales/zh.js.map +1 -1
  175. package/dist/i18n/review.d.ts +21 -12
  176. package/dist/i18n/review.js +50 -1
  177. package/dist/i18n/review.js.map +1 -1
  178. package/dist/index.d.ts +31 -4
  179. package/dist/index.js +148 -0
  180. package/dist/index.js.map +1 -1
  181. package/dist/landing/access.d.ts +48 -0
  182. package/dist/landing/access.js +38 -0
  183. package/dist/landing/access.js.map +1 -0
  184. package/dist/landing/landing-actions.d.ts +138 -0
  185. package/dist/landing/landing-actions.js +39 -0
  186. package/dist/landing/landing-actions.js.map +1 -0
  187. package/dist/landing/landing-labels.d.ts +43 -0
  188. package/dist/landing/landing-labels.js +23 -0
  189. package/dist/landing/landing-labels.js.map +1 -0
  190. package/dist/landing/landing-sections.d.ts +218 -0
  191. package/dist/landing/landing-sections.js +167 -0
  192. package/dist/landing/landing-sections.js.map +1 -0
  193. package/dist/landing/page-seo.d.ts +99 -0
  194. package/dist/landing/page-seo.js +121 -0
  195. package/dist/landing/page-seo.js.map +1 -0
  196. package/dist/landing/public-header.d.ts +148 -0
  197. package/dist/landing/public-header.js +49 -0
  198. package/dist/landing/public-header.js.map +1 -0
  199. package/dist/landing/routing.d.ts +218 -0
  200. package/dist/landing/routing.js +81 -0
  201. package/dist/landing/routing.js.map +1 -0
  202. package/dist/rhf/fields.d.ts +21 -12
  203. package/dist/rhf/form.d.ts +21 -12
  204. package/dist/rhf.d.ts +21 -12
  205. package/dist/settings/settings-catalogue.d.ts +84 -0
  206. package/dist/settings/settings-catalogue.js +47 -0
  207. package/dist/settings/settings-catalogue.js.map +1 -0
  208. package/dist/settings/settings-context.d.ts +31 -0
  209. package/dist/settings/settings-context.js +11 -0
  210. package/dist/settings/settings-context.js.map +1 -0
  211. package/dist/settings/settings-heading.d.ts +50 -0
  212. package/dist/settings/settings-heading.js +27 -0
  213. package/dist/settings/settings-heading.js.map +1 -0
  214. package/dist/settings/settings-labels.d.ts +41 -0
  215. package/dist/settings/settings-labels.js +38 -0
  216. package/dist/settings/settings-labels.js.map +1 -0
  217. package/dist/settings/settings-layout.d.ts +77 -0
  218. package/dist/settings/settings-layout.js +242 -0
  219. package/dist/settings/settings-layout.js.map +1 -0
  220. package/dist/settings/settings-section.d.ts +133 -0
  221. package/dist/settings/settings-section.js +63 -0
  222. package/dist/settings/settings-section.js.map +1 -0
  223. package/dist/settings/use-account-language.d.ts +83 -0
  224. package/dist/settings/use-account-language.js +62 -0
  225. package/dist/settings/use-account-language.js.map +1 -0
  226. package/dist/settings/use-settings-focus.d.ts +34 -0
  227. package/dist/settings/use-settings-focus.js +77 -0
  228. package/dist/settings/use-settings-focus.js.map +1 -0
  229. package/dist/settings/use-settings-route.d.ts +118 -0
  230. package/dist/settings/use-settings-route.js +120 -0
  231. package/dist/settings/use-settings-route.js.map +1 -0
  232. package/dist/shell/app-shell.d.ts +27 -12
  233. package/dist/shell/app-shell.js +3 -2
  234. package/dist/shell/app-shell.js.map +1 -1
  235. package/dist/shell/top-bar-brand.d.ts +21 -12
  236. package/dist/shell.d.ts +25 -6
  237. package/dist/shell.js +56 -0
  238. package/dist/shell.js.map +1 -1
  239. package/dist/wizard/stepper-nav.d.ts +21 -12
  240. package/dist/wizard.d.ts +21 -12
  241. package/package.json +2 -1
  242. package/src/account/account-parts.ts +67 -0
  243. package/src/account/data-export-setting.tsx +219 -0
  244. package/src/account/delete-account-setting.tsx +363 -0
  245. package/src/account/email-change-setting.tsx +454 -0
  246. package/src/account/sessions-setting.tsx +284 -0
  247. package/src/admin/admin-action-confirm.tsx +495 -0
  248. package/src/admin/admin-action-log.tsx +297 -0
  249. package/src/admin/admin-parts.ts +82 -0
  250. package/src/admin/invitations-panel.tsx +523 -0
  251. package/src/admin/reviewer-scope-editor.tsx +234 -0
  252. package/src/admin/role-select.tsx +286 -0
  253. package/src/admin/transfer-ownership-dialog.tsx +172 -0
  254. package/src/admin/user-roster.tsx +573 -0
  255. package/src/auth/auth-errors.ts +196 -8
  256. package/src/auth/forgot-password-form.tsx +21 -5
  257. package/src/auth/register-form.tsx +24 -6
  258. package/src/auth/reset-password-form.tsx +19 -5
  259. package/src/auth/sign-in-form.tsx +241 -38
  260. package/src/auth/verify-email.tsx +59 -8
  261. package/src/components/account-chips.tsx +64 -7
  262. package/src/components/account-settings-labels.ts +28 -1
  263. package/src/components/account-settings.tsx +231 -34
  264. package/src/components/data-table.tsx +8 -0
  265. package/src/components/date-picker.tsx +9 -4
  266. package/src/components/passkeys-setting.tsx +2 -1
  267. package/src/components/settings-fields.tsx +50 -1
  268. package/src/demo/demo-banner.tsx +159 -0
  269. package/src/demo/demo-countdown.ts +141 -0
  270. package/src/demo/demo-ended.tsx +89 -0
  271. package/src/demo/demo-labels.ts +78 -0
  272. package/src/demo/demo-session.ts +32 -0
  273. package/src/demo/demo-start.tsx +150 -0
  274. package/src/feedback/feedback-inbox.tsx +21 -8
  275. package/src/feedback/feedback-labels.ts +2 -1
  276. package/src/feedback/feedback-record.ts +10 -7
  277. package/src/feedback/feedback-row-detail.tsx +28 -4
  278. package/src/feedback/feedback-swipe.tsx +1 -1
  279. package/src/hooks/use-anchored-panel.ts +14 -3
  280. package/src/i18n/defaults.ts +28 -0
  281. package/src/i18n/german.ts +327 -5
  282. package/src/i18n/kit-labels.tsx +42 -0
  283. package/src/i18n/locales/es.ts +313 -3
  284. package/src/i18n/locales/fr.ts +316 -0
  285. package/src/i18n/locales/hu.ts +308 -5
  286. package/src/i18n/locales/it.ts +313 -0
  287. package/src/i18n/locales/zh.ts +286 -0
  288. package/src/i18n/review.ts +49 -0
  289. package/src/index.ts +184 -0
  290. package/src/landing/access.ts +97 -0
  291. package/src/landing/landing-actions.tsx +92 -0
  292. package/src/landing/landing-labels.ts +59 -0
  293. package/src/landing/landing-sections.tsx +337 -0
  294. package/src/landing/page-seo.ts +251 -0
  295. package/src/landing/public-header.tsx +120 -0
  296. package/src/landing/routing.tsx +209 -0
  297. package/src/settings/settings-catalogue.ts +132 -0
  298. package/src/settings/settings-context.ts +33 -0
  299. package/src/settings/settings-heading.tsx +65 -0
  300. package/src/settings/settings-labels.ts +75 -0
  301. package/src/settings/settings-layout.tsx +379 -0
  302. package/src/settings/settings-section.tsx +108 -0
  303. package/src/settings/use-account-language.ts +146 -0
  304. package/src/settings/use-settings-focus.ts +120 -0
  305. package/src/settings/use-settings-route.ts +258 -0
  306. package/src/shell/app-shell.tsx +10 -2
  307. package/src/shell.ts +45 -0
@@ -14,6 +14,15 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
14
14
  const num = new Intl.NumberFormat(numberLocale);
15
15
  const n = (value: number) => num.format(value);
16
16
  const plural = (count: number, one: string, many: string) => (count < 2 ? one : many);
17
+ // 0.30.0 — a throttled request (HTTP 429), as `englishRateLimited` in
18
+ // src/auth/auth-errors.ts: no wait → "un instant", under a minute → seconds, else
19
+ // minutes rounded up. kastlan's reviewed "auth.throttled" is the sentence without one.
20
+ const wait = (seconds: number) =>
21
+ seconds < 60 ? `${n(Math.ceil(seconds))}\u00a0s` : `${n(Math.ceil(seconds / 60))}\u00a0min`;
22
+ const rateLimited = (seconds?: number) =>
23
+ !seconds || seconds <= 0
24
+ ? "Trop de tentatives. Veuillez patienter un instant, puis réessayer."
25
+ : `Trop de tentatives. Réessayez dans ${wait(seconds)}.`;
17
26
 
18
27
  return {
19
28
  feedbackAttachment: {
@@ -61,6 +70,7 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
61
70
  // 0.27.0. "Retour" for feedback, as `feedbackDialog`; "reprise" for rework.
62
71
  feedbackStatus: {
63
72
  OPEN: "Ouvert",
73
+ READY: "Prêt à implémenter",
64
74
  IN_PROGRESS: "En cours",
65
75
  IN_EVALUATION: "En évaluation",
66
76
  NEEDS_LIVE_TEST: "À tester en production",
@@ -120,6 +130,7 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
120
130
  phoneActions: "Actions sur les retours",
121
131
  },
122
132
  feedbackDetail: {
133
+ subject: "Objet",
123
134
  body: "Description",
124
135
  edit: "Modifier",
125
136
  editDescription: "Modifier la description",
@@ -152,6 +163,9 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
152
163
  memberSince: "Membre depuis",
153
164
  displayName: "Nom affiché",
154
165
  save: "Enregistrer",
166
+ firstName: "Prénom",
167
+ lastName: "Nom",
168
+ nameRequired: "Saisissez un prénom et un nom.",
155
169
  },
156
170
  password: {
157
171
  title: "Changer le mot de passe",
@@ -177,6 +191,8 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
177
191
  qrAlt: "Code QR pour votre application d’authentification",
178
192
  secretHint: "Impossible de le scanner\u202f? Saisissez plutôt cette clé dans l’application\u00a0:",
179
193
  copySecret: "Copier la clé",
194
+ // 0.31.0: the card's title; the state ("Activée") stands beside it.
195
+ title: "Authentification à deux facteurs",
180
196
  },
181
197
  passkeys: {
182
198
  title: "Clés d’accès",
@@ -715,6 +731,8 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
715
731
  registered: "Inscrit",
716
732
  unverified: "Non vérifié",
717
733
  passwordChange: "Doit changer de mot de passe",
734
+ deletion: "Suppression demandée",
735
+ deletionOn: (date) => `Suppression le ${date}`,
718
736
  },
719
737
  shareCard: {
720
738
  dialogTitle: "Partager",
@@ -884,6 +902,19 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
884
902
  setPasswordFailed: "Le mot de passe n’a pas pu être défini.",
885
903
  expired: "Cette connexion a expiré. Veuillez vous reconnecter.",
886
904
  backToSignIn: "Retour à la connexion",
905
+ // kastlan's backup-code words ("code de secours" — not keksdose's "code de
906
+ // récupération", which is the key of its end-to-end encryption).
907
+ useRecoveryCode: "Utiliser un code de secours",
908
+ useAuthenticatorCode: "Utiliser votre application d’authentification",
909
+ recoveryCode: "Code de secours",
910
+ recoveryIntro:
911
+ "Saisissez l’un des codes de secours que vous avez enregistrés en activant l’authentification à deux facteurs.",
912
+ recoveryCodeHint: (length) =>
913
+ `${n(length)} lettres et chiffres. Les tirets et les espaces ne comptent pas.`,
914
+ recoveryCodeInvalid: "Ce code de secours n’est pas valable ou a déjà été utilisé.",
915
+ rateLimited,
916
+ // 0.31.0: the same words as `landing.requestAccess`.
917
+ requestAccess: "Demander l’accès",
887
918
  },
888
919
  register: {
889
920
  firstName: "Prénom",
@@ -907,6 +938,7 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
907
938
  invitationInvalid: "Ce lien d’invitation n’est pas valide.",
908
939
  invitationExpired: "Cette invitation a expiré. Demandez-en une nouvelle.",
909
940
  failed: "Échec de l’inscription. Veuillez réessayer.",
941
+ rateLimited,
910
942
  },
911
943
  completeName: {
912
944
  title: "Complétez votre nom",
@@ -929,6 +961,7 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
929
961
  "Le lien est valable une heure et ne fonctionne qu’une seule fois. Vérifiez aussi votre dossier de courrier indésirable.",
930
962
  backToSignIn: "Retour à la connexion",
931
963
  error: "La demande a échoué. Veuillez réessayer plus tard.",
964
+ rateLimited,
932
965
  },
933
966
  resetPassword: {
934
967
  title: "Choisir un nouveau mot de passe",
@@ -947,6 +980,7 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
947
980
  success: "Votre mot de passe a été changé. Vous pouvez vous connecter avec dès maintenant.",
948
981
  sessionsEnded: "Les appareils connectés ont été déconnectés — vous devrez vous y reconnecter.",
949
982
  signIn: "Aller à la connexion",
983
+ rateLimited,
950
984
  },
951
985
  verifyEmail: {
952
986
  title: "Confirmez votre adresse e-mail",
@@ -996,6 +1030,210 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
996
1030
  currentMark: "(actuelle)",
997
1031
  switching: "Changement d’entreprise…",
998
1032
  },
1033
+ // 0.30.0 — docs/user-admin-harmonization.md: keksdose's reviewed French for the admin
1034
+ // words (admin.users.*), Kurvenschmiede's for transfer, invitations and sessions,
1035
+ // kastlan's for the company, the throttle and "Se déconnecter partout"; written fresh
1036
+ // where no app had the sentence. Phrased so that no sentence about the reader needs
1037
+ // a gender ("déconnecté·e").
1038
+ emailChange: {
1039
+ title: "Adresse e-mail",
1040
+ current: "Adresse actuelle",
1041
+ newEmail: "Nouvelle adresse e-mail",
1042
+ password: "Mot de passe actuel",
1043
+ passwordHint: "Votre adresse sert à vous connecter, c’est pourquoi la changer demande votre mot de passe.",
1044
+ emailTagUse: (address) => `Utiliser ${address}`,
1045
+ emailTagHint:
1046
+ "Beaucoup de fournisseurs livrent nom+tag@… dans la même boîte, ce qui rend le courrier de cette application filtrable et traçable. Vérifiez que le vôtre le fait avant de vous y fier\u00a0: vous vous connecteriez avec l’adresse marquée.",
1047
+ submit: "Changer d’adresse e-mail",
1048
+ sameAsCurrent: "C’est déjà votre adresse.",
1049
+ emailTaken: "Un compte existe déjà avec cette adresse e-mail.",
1050
+ wrongPassword: "Le mot de passe est incorrect.",
1051
+ pending: (newEmail) => `Confirmez le lien que nous avons envoyé à ${newEmail}.`,
1052
+ pendingHint: (currentEmail) =>
1053
+ `D’ici là, vous continuez à vous connecter avec ${currentEmail}. Vérifiez aussi votre dossier de courrier indésirable.`,
1054
+ resend: "Renvoyer le lien",
1055
+ resent: "Nous avons renvoyé le lien.",
1056
+ cancel: "Annuler le changement",
1057
+ confirmed: (email) => `Votre adresse e-mail est désormais ${email}.`,
1058
+ passkeyNote:
1059
+ "Vos clés d’accès continuent de fonctionner. Votre appareil peut encore les afficher sous votre ancienne adresse.",
1060
+ rateLimited,
1061
+ failed: "Cela n’a pas fonctionné. Veuillez réessayer.",
1062
+ },
1063
+ sessions: {
1064
+ title: "Sessions",
1065
+ description:
1066
+ "Une session ouverte sur un appareil que vous n’utilisez plus, ou auquel vous ne vous fiez pas\u202f? Déconnectez-vous partout.",
1067
+ signOutEverywhere: "Se déconnecter partout…",
1068
+ signOutEverywherePrompt:
1069
+ "Toutes les sessions prennent fin, y compris celle-ci\u00a0: cet appareil sera déconnecté lui aussi, et il faudra vous reconnecter ici.",
1070
+ confirmSignOutEverywhere: "Se déconnecter partout",
1071
+ list: "Vos sessions ouvertes",
1072
+ loading: "Chargement des sessions…",
1073
+ empty: "Aucune session à afficher.",
1074
+ current: "Cet appareil",
1075
+ unknownDevice: "Appareil inconnu",
1076
+ // A colon: `when` is either "il y a 3 heures" or a date.
1077
+ lastActive: (when) => `Dernière activité\u00a0: ${when}`,
1078
+ ip: (address) => `IP ${address}`,
1079
+ revoke: "Déconnecter",
1080
+ // Starts with `revoke`, the button's visible text, for voice control.
1081
+ revokeItem: (device) => `Déconnecter ${device}`,
1082
+ failed: "Cela n’a pas fonctionné. Veuillez réessayer.",
1083
+ },
1084
+ deleteAccount: {
1085
+ title: "Supprimer le compte",
1086
+ afterDays: (days) =>
1087
+ `Votre compte est désactivé immédiatement et effacé définitivement ${n(days)} ${plural(days, "jour", "jours")} plus tard.`,
1088
+ operator: "Votre compte est désactivé immédiatement, puis l’exploitant l’effacera définitivement.",
1089
+ arm: "Supprimer le compte…",
1090
+ prompt: "Toutes vos sessions prendront fin, sur tous les appareils, et votre compte ne pourra plus être utilisé.",
1091
+ handOver: (count) =>
1092
+ count < 2
1093
+ ? `${n(count)} élément visible par d’autres passera à un administrateur.`
1094
+ : `${n(count)} éléments visibles par d’autres passeront à un administrateur.`,
1095
+ confirm: "Supprimer mon compte",
1096
+ done: "Votre compte est désactivé. Déconnexion en cours.",
1097
+ wrongPassword: "Le mot de passe est incorrect.",
1098
+ confirmationMismatch: "Ce n’est pas l’adresse de votre compte.",
1099
+ lastAdmin:
1100
+ "Votre compte est le dernier compte administrateur. Nommez d’abord quelqu’un d’autre administrateur.",
1101
+ lastAdminOf: (companies) =>
1102
+ `Votre compte est le dernier compte administrateur de ${companies}. Nommez-y d’abord quelqu’un d’autre administrateur.`,
1103
+ // keksdose's "ménage".
1104
+ householdHasMembers:
1105
+ "Votre ménage a d’autres membres, le compte ne peut donc pas être supprimé ici. Veuillez écrire à l’exploitant.",
1106
+ rateLimited,
1107
+ failed: "Votre compte n’a pas pu être supprimé. Veuillez réessayer.",
1108
+ },
1109
+ dataExport: {
1110
+ title: "Exporter vos données",
1111
+ description: "Téléchargez une copie des données de votre compte sous forme de fichier JSON.",
1112
+ download: "Télécharger mes données",
1113
+ started: "Votre téléchargement a commencé.",
1114
+ saveAgain: "Rien ne s’est passé\u202f? Enregistrer le fichier",
1115
+ rateLimited: (seconds) =>
1116
+ seconds && seconds > 0
1117
+ ? `Vous venez d’exporter vos données. Réessayez dans ${wait(seconds)}.`
1118
+ : "Vous venez d’exporter vos données. Veuillez réessayer dans une minute.",
1119
+ failed: "L’export a échoué. Veuillez réessayer.",
1120
+ },
1121
+ userRoster: {
1122
+ name: "Nom",
1123
+ email: "E-mail",
1124
+ role: "Rôle",
1125
+ state: "État",
1126
+ created: "Créé le",
1127
+ lastLogin: "Dernière connexion",
1128
+ never: "Jamais",
1129
+ actions: "Actions",
1130
+ actionsFor: (name) => `Actions pour ${name}`,
1131
+ },
1132
+ roleSelect: {
1133
+ label: "Rôle",
1134
+ rolesLegend: "Rôles",
1135
+ roleOf: (name) => `Rôle de ${name}`,
1136
+ lockedLastAdmin: "Le dernier compte administrateur actif garde ce rôle.",
1137
+ lockedSelf: "Vous ne pouvez pas changer votre propre rôle.",
1138
+ notForLastAdmin: "pas pour le dernier administrateur",
1139
+ notForSelf: "pas pour votre propre compte",
1140
+ unavailable: (role, reason) => `${role} (${reason})`,
1141
+ },
1142
+ reviewerScope: {
1143
+ languages: "Langues",
1144
+ hint: "Cochez les langues que cette personne relit.",
1145
+ none: "Aucune langue\u00a0: enregistrer retire le rôle de relecteur.",
1146
+ areas: "Limiter à",
1147
+ legalOnly: "Uniquement les pages légales",
1148
+ legalOnlyHint:
1149
+ "Mentions légales, politique de confidentialité et conditions d’utilisation\u00a0: pour un juriste plutôt que pour un locuteur natif.",
1150
+ failed: "Le rôle de relecteur n’a pas pu être enregistré. Veuillez réessayer.",
1151
+ },
1152
+ adminAction: {
1153
+ confirm: "Confirmer",
1154
+ cancel: "Annuler",
1155
+ close: "Fermer",
1156
+ lastAdmin:
1157
+ "C’est le dernier compte administrateur actif. Nommez d’abord quelqu’un d’autre administrateur.",
1158
+ self: "Vous ne pouvez pas faire cela sur votre propre compte.",
1159
+ confirmationMismatch:
1160
+ "L’adresse ne correspond pas à ce compte. Vérifiez sur quel compte vous êtes.",
1161
+ otherCompanies:
1162
+ "Ce compte appartient aussi à d’autres entreprises, seul l’exploitant de la plateforme peut donc faire cela. Vous pouvez plutôt le retirer de cette entreprise.",
1163
+ removeFromCompany: "Retirer de l’entreprise",
1164
+ failed: "Cela n’a pas fonctionné. Veuillez réessayer.",
1165
+ },
1166
+ adminActionLog: {
1167
+ title: "Actions d’administration",
1168
+ empty: "Aucune action d’administration pour l’instant.",
1169
+ loading: "Chargement…",
1170
+ by: (actor) => `par ${actor}`,
1171
+ bySelf: "par la personne elle-même",
1172
+ automatic: "automatiquement",
1173
+ erased: "un compte effacé",
1174
+ filteredTo: (target) => `Uniquement ${target}`,
1175
+ showAll: "Afficher toutes les actions",
1176
+ filterBy: (target) => `Afficher uniquement les actions concernant ${target}`,
1177
+ // Agreeing with "compte" (masculine), like `accountState`.
1178
+ actions: {
1179
+ deactivate: "Désactivé",
1180
+ reactivate: "Réactivé",
1181
+ role: "Rôle modifié",
1182
+ membership_remove: "Retiré de l’entreprise",
1183
+ password_change_require: "Nouveau mot de passe exigé",
1184
+ password_change_withdraw: "Exigence de mot de passe retirée",
1185
+ mail_verification: "E-mail de confirmation envoyé",
1186
+ mail_reset: "E-mail de réinitialisation du mot de passe envoyé",
1187
+ reviewer: "Périmètre de relecture modifié",
1188
+ invite: "Invité",
1189
+ invite_resend: "Invitation renvoyée",
1190
+ invite_revoke: "Invitation révoquée",
1191
+ transfer: "Travail transmis",
1192
+ deletion_request: "Suppression demandée",
1193
+ deletion_cancel: "Suppression annulée",
1194
+ erase: "Compte effacé",
1195
+ },
1196
+ },
1197
+ transferOwnership: {
1198
+ title: (name) => `Transmettre le travail de ${name}`,
1199
+ body: "Tout ce que possède ce compte passe au compte choisi, en une seule étape.",
1200
+ recipient: "Le transmettre à",
1201
+ choose: "Choisissez un compte…",
1202
+ chooseFirst: "Choisissez qui reçoit le travail",
1203
+ confirm: "Transmettre",
1204
+ customer: "client",
1205
+ deactivated: "désactivé",
1206
+ self: "le même compte",
1207
+ unavailable: (account, reason) => `${account} (${reason})`,
1208
+ noCandidates: "Aucun autre compte ne peut le recevoir.",
1209
+ },
1210
+ invitations: {
1211
+ email: "Adresse e-mail",
1212
+ invalidEmail: "Saisissez une adresse e-mail complète.",
1213
+ role: "Rôle",
1214
+ scope: "Portée",
1215
+ scopeNone: "Aucune",
1216
+ language: "Langue de l’invitation",
1217
+ note: "Note",
1218
+ invite: "Inviter",
1219
+ listTitle: "Invitations",
1220
+ empty: "Personne n’a encore été invité.",
1221
+ loading: "Chargement…",
1222
+ // Agreeing with "invitation" (feminine).
1223
+ status: { open: "Ouverte", accepted: "Acceptée", expired: "Expirée", revoked: "Révoquée" },
1224
+ sent: (date) => `Envoyée le ${date}`,
1225
+ // kastlan's "Valable jusqu’au".
1226
+ expires: (date) => `Valable jusqu’au ${date}`,
1227
+ invitedBy: (name) => `par ${name}`,
1228
+ resend: (email) => `Envoyer un nouveau lien à ${email}`,
1229
+ copyLink: "Copier le lien d’invitation",
1230
+ revoke: (email) => `Révoquer l’invitation de ${email}`,
1231
+ consoleHint:
1232
+ "Ce serveur n’envoie pas d’e-mails — ils sont écrits dans le journal du serveur. Copiez ici chaque lien d’invitation et transmettez-le vous-même\u00a0: il n’est affiché qu’une seule fois.",
1233
+ linkReady: (email) => `Le lien d’invitation pour ${email}, affiché cette seule fois\u00a0:`,
1234
+ notSent: (email) => `${email} est invité, mais l’e-mail n’a pas pu être envoyé. Renvoyez-le.`,
1235
+ failed: "Cela n’a pas fonctionné. Veuillez réessayer.",
1236
+ },
999
1237
  characterCount: {
1000
1238
  count: (used, max) => `${n(used)} sur ${n(max)} ${plural(max, "caractère", "caractères")}`,
1001
1239
  remaining: (left) => `${n(left)} ${plural(left, "caractère restant", "caractères restants")}`,
@@ -1126,6 +1364,84 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
1126
1364
  ? `Approuver le texte non relu de «\u202f${group}\u202f»\u202f?`
1127
1365
  : `Approuver les ${n(count)} textes non relus de «\u202f${group}\u202f», y compris ceux qui ne sont pas à l’écran\u202f?`,
1128
1366
  },
1367
+ // 0.31.0 — docs/settings-harmonization.md §4.3 and docs/landing-demo-harmonization.md
1368
+ // §4–§5: the settings shell, the landing page's generic words and the demo. The help
1369
+ // lines name things as `accountSettings`, `sessions` and `dataExport` do, and no
1370
+ // sentence about the reader needs a gender ("informé·e").
1371
+ settings: {
1372
+ title: "Paramètres",
1373
+ search: "Rechercher dans les paramètres",
1374
+ searchPlaceholder: "Rechercher dans les paramètres…",
1375
+ results: "Paramètres correspondants",
1376
+ noMatches: (query) => `Aucun paramètre ne correspond à «\u202f${query}\u202f».`,
1377
+ // As `commandPalette.clear`.
1378
+ clearSearch: "Effacer la recherche",
1379
+ back: "Retour aux paramètres",
1380
+ sections: "Sections des paramètres",
1381
+ matchCount: (count) => `${n(count)} ${plural(count, "résultat", "résultats")}`,
1382
+ groups: {
1383
+ appearance: {
1384
+ title: "Apparence",
1385
+ help: "Langue, thème et apparence de l’application sur cet appareil.",
1386
+ },
1387
+ account: {
1388
+ title: "Compte",
1389
+ help: "Votre profil et votre adresse e-mail.",
1390
+ },
1391
+ security: {
1392
+ title: "Sécurité",
1393
+ help: "Comment vous vous connectez\u00a0: mot de passe, codes 2FA, clés d’accès et sessions.",
1394
+ },
1395
+ notifications: {
1396
+ title: "Notifications",
1397
+ help: "Quelles notifications vous recevez, quand et sur quels appareils.",
1398
+ },
1399
+ data: {
1400
+ title: "Données",
1401
+ help: "Exportez ce qui vous appartient, ou supprimez-le avec votre compte.",
1402
+ },
1403
+ },
1404
+ },
1405
+ landing: {
1406
+ signIn: "Se connecter",
1407
+ requestAccess: "Demander l’accès",
1408
+ getStarted: "Commencer",
1409
+ tryDemo: "Essayer la démo",
1410
+ openApp: "Ouvrir l’application",
1411
+ continueDemo: "Continuer la démo",
1412
+ // As `legal.notice` ("Bêta fermée").
1413
+ beta: "Bêta",
1414
+ // Plain text: a mail's subject and body lines, never HTML. The no-break space
1415
+ // before the colon, as everywhere in this catalogue.
1416
+ accessSubject: (app) => (app ? `Accès à ${app}` : "Demande d’accès"),
1417
+ accessName: "Nom\u00a0:",
1418
+ accessCompany: "Entreprise\u00a0:",
1419
+ accessUse: "Utilisation prévue\u00a0:",
1420
+ },
1421
+ demo: {
1422
+ starting: "Démarrage de la démo…",
1423
+ rateLimited: (minutes) =>
1424
+ minutes
1425
+ ? `Trop de démos depuis ce réseau. Réessayez dans ${n(minutes)}\u00a0min.`
1426
+ : "Trop de démos depuis ce réseau. Réessayez plus tard.",
1427
+ capacity: "La démo est complète pour le moment. Réessayez plus tard.",
1428
+ unavailable: "La démo n’est pas disponible pour le moment.",
1429
+ failed: "La démo n’a pas pu être lancée. Veuillez réessayer.",
1430
+ // As `legal.backHome`.
1431
+ backToStart: "Retour à l’accueil",
1432
+ hoursLeft: (hours, minutes) => `Démo · il reste ${n(hours)}\u00a0h ${n(minutes)}\u00a0min`,
1433
+ minutesLeft: (minutes) => `Démo · il reste ${n(minutes)}\u00a0min`,
1434
+ badge: "Démo",
1435
+ readOnly: "Vous consultez des données d’exemple. Aucune modification n’est possible.",
1436
+ sandbox: "Ce que vous créez vous-même est supprimé à la fin de la démo.",
1437
+ details: "Détails de la démo",
1438
+ writeLocked: "Impossible dans la démo.",
1439
+ endedTitle: "La démo est terminée",
1440
+ endedReadOnly: "Les données d’exemple sont réinitialisées régulièrement.",
1441
+ endedSandbox:
1442
+ "Les données d’exemple sont réinitialisées régulièrement\u202f; ce que vous avez créé dans la démo est supprimé.",
1443
+ restart: "Lancer une nouvelle démo",
1444
+ },
1129
1445
  };
1130
1446
  }
1131
1447