@eifi1/ui-kit 0.28.1 → 0.30.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 (228) hide show
  1. package/README.md +44 -4
  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 +113 -0
  7. package/dist/account/data-export-setting.js.map +1 -0
  8. package/dist/account/delete-account-setting.d.ts +91 -0
  9. package/dist/account/delete-account-setting.js +199 -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 +277 -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 +146 -0
  16. package/dist/account/sessions-setting.js.map +1 -0
  17. package/dist/admin/admin-action-confirm.d.ts +91 -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 +91 -0
  27. package/dist/admin/invitations-panel.js +289 -0
  28. package/dist/admin/invitations-panel.js.map +1 -0
  29. package/dist/admin/reviewer-scope-editor.d.ts +91 -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 +91 -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 +91 -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 +91 -0
  39. package/dist/admin/user-roster.js +285 -0
  40. package/dist/admin/user-roster.js.map +1 -0
  41. package/dist/auth/accept-invitation.d.ts +90 -0
  42. package/dist/auth/accept-invitation.js +117 -0
  43. package/dist/auth/accept-invitation.js.map +1 -0
  44. package/dist/auth/auth-errors.d.ts +139 -0
  45. package/dist/auth/auth-errors.js +92 -0
  46. package/dist/auth/auth-errors.js.map +1 -0
  47. package/dist/auth/complete-name-dialog.d.ts +71 -0
  48. package/dist/auth/complete-name-dialog.js +168 -0
  49. package/dist/auth/complete-name-dialog.js.map +1 -0
  50. package/dist/auth/email-tag.d.ts +60 -0
  51. package/dist/auth/email-tag.js +23 -0
  52. package/dist/auth/email-tag.js.map +1 -0
  53. package/dist/auth/forgot-password-form.d.ts +86 -0
  54. package/dist/auth/forgot-password-form.js +123 -0
  55. package/dist/auth/forgot-password-form.js.map +1 -0
  56. package/dist/auth/form-rules.d.ts +27 -0
  57. package/dist/auth/form-rules.js +23 -0
  58. package/dist/auth/form-rules.js.map +1 -0
  59. package/dist/auth/new-password-fields.d.ts +38 -0
  60. package/dist/auth/new-password-fields.js +54 -0
  61. package/dist/auth/new-password-fields.js.map +1 -0
  62. package/dist/auth/not-found-page.d.ts +57 -0
  63. package/dist/auth/not-found-page.js +40 -0
  64. package/dist/auth/not-found-page.js.map +1 -0
  65. package/dist/auth/register-form.d.ts +91 -0
  66. package/dist/auth/register-form.js +270 -0
  67. package/dist/auth/register-form.js.map +1 -0
  68. package/dist/auth/reset-password-form.d.ts +131 -0
  69. package/dist/auth/reset-password-form.js +167 -0
  70. package/dist/auth/reset-password-form.js.map +1 -0
  71. package/dist/auth/sign-in-form.d.ts +295 -0
  72. package/dist/auth/sign-in-form.js +426 -0
  73. package/dist/auth/sign-in-form.js.map +1 -0
  74. package/dist/auth/status-parts.d.ts +78 -0
  75. package/dist/auth/status-parts.js +83 -0
  76. package/dist/auth/status-parts.js.map +1 -0
  77. package/dist/auth/verify-email.d.ts +126 -0
  78. package/dist/auth/verify-email.js +243 -0
  79. package/dist/auth/verify-email.js.map +1 -0
  80. package/dist/chart.d.ts +25 -5
  81. package/dist/components/account-chips.d.ts +47 -7
  82. package/dist/components/account-chips.js +19 -3
  83. package/dist/components/account-chips.js.map +1 -1
  84. package/dist/components/account-settings-labels.d.ts +12 -1
  85. package/dist/components/account-settings-labels.js +4 -1
  86. package/dist/components/account-settings-labels.js.map +1 -1
  87. package/dist/components/account-settings.d.ts +61 -6
  88. package/dist/components/account-settings.js +115 -15
  89. package/dist/components/account-settings.js.map +1 -1
  90. package/dist/components/amount-input.d.ts +26 -5
  91. package/dist/components/button-group.d.ts +26 -5
  92. package/dist/components/calculator.d.ts +26 -5
  93. package/dist/components/confirm-dialog.d.ts +26 -5
  94. package/dist/components/copy-button.d.ts +23 -2
  95. package/dist/components/danger-confirm.d.ts +26 -5
  96. package/dist/components/facing-pair.d.ts +26 -5
  97. package/dist/components/file-button.d.ts +26 -5
  98. package/dist/components/file-dropzone.d.ts +26 -5
  99. package/dist/components/form-actions.d.ts +26 -5
  100. package/dist/components/iban-input.d.ts +26 -5
  101. package/dist/components/language-select.d.ts +26 -12
  102. package/dist/components/legal-page.d.ts +26 -5
  103. package/dist/components/legal.d.ts +26 -5
  104. package/dist/components/money-field.d.ts +26 -5
  105. package/dist/components/number-field.d.ts +26 -5
  106. package/dist/components/number-input.d.ts +26 -5
  107. package/dist/components/numpad-sheet.d.ts +26 -5
  108. package/dist/components/phone-input.d.ts +26 -5
  109. package/dist/components/series-chart.d.ts +26 -5
  110. package/dist/components/settings-fields.d.ts +25 -7
  111. package/dist/components/share-card.d.ts +25 -4
  112. package/dist/components/text-link.d.ts +26 -5
  113. package/dist/components/time-input.d.ts +26 -5
  114. package/dist/components/ui.d.ts +23 -2
  115. package/dist/components/user-avatar.d.ts +16 -2
  116. package/dist/components/user-avatar.js +7 -3
  117. package/dist/components/user-avatar.js.map +1 -1
  118. package/dist/{kit-labels-Du0uHBq4.d.ts → delete-account-setting-CGVMckMw.d.ts} +6654 -5302
  119. package/dist/feedback/feedback-attachment.d.ts +26 -5
  120. package/dist/feedback/feedback-context.d.ts +26 -5
  121. package/dist/feedback/feedback-crash.d.ts +26 -5
  122. package/dist/feedback/feedback-dialog.d.ts +26 -5
  123. package/dist/feedback/feedback-inbox.d.ts +26 -5
  124. package/dist/feedback/feedback-labels.d.ts +26 -5
  125. package/dist/feedback/feedback-menu.d.ts +26 -5
  126. package/dist/feedback/feedback-record.d.ts +26 -5
  127. package/dist/feedback/feedback-row-detail.d.ts +26 -5
  128. package/dist/feedback/feedback-status-undo.d.ts +26 -5
  129. package/dist/feedback/feedback-submit.d.ts +26 -5
  130. package/dist/feedback/feedback-swipe.d.ts +26 -5
  131. package/dist/feedback/feedback-table.d.ts +23 -2
  132. package/dist/feedback/feedback-thread.d.ts +26 -5
  133. package/dist/feedback.d.ts +26 -5
  134. package/dist/hooks/use-anchored-panel.d.ts +6 -2
  135. package/dist/hooks/use-anchored-panel.js +2 -1
  136. package/dist/hooks/use-anchored-panel.js.map +1 -1
  137. package/dist/hooks/use-file-drop.d.ts +26 -5
  138. package/dist/i18n/defaults.d.ts +26 -5
  139. package/dist/i18n/defaults.js +40 -0
  140. package/dist/i18n/defaults.js.map +1 -1
  141. package/dist/i18n/german.d.ts +26 -5
  142. package/dist/i18n/german.js +343 -2
  143. package/dist/i18n/german.js.map +1 -1
  144. package/dist/i18n/kit-labels.d.ts +23 -2
  145. package/dist/i18n/kit-labels.js.map +1 -1
  146. package/dist/i18n/languages.d.ts +21 -204
  147. package/dist/i18n/locales/de-CH.d.ts +26 -5
  148. package/dist/i18n/locales/en.d.ts +26 -5
  149. package/dist/i18n/locales/es.d.ts +26 -5
  150. package/dist/i18n/locales/es.js +337 -3
  151. package/dist/i18n/locales/es.js.map +1 -1
  152. package/dist/i18n/locales/fr.d.ts +26 -5
  153. package/dist/i18n/locales/fr.js +344 -2
  154. package/dist/i18n/locales/fr.js.map +1 -1
  155. package/dist/i18n/locales/hu.d.ts +26 -5
  156. package/dist/i18n/locales/hu.js +337 -3
  157. package/dist/i18n/locales/hu.js.map +1 -1
  158. package/dist/i18n/locales/it.d.ts +26 -5
  159. package/dist/i18n/locales/it.js +342 -2
  160. package/dist/i18n/locales/it.js.map +1 -1
  161. package/dist/i18n/locales/zh.d.ts +26 -5
  162. package/dist/i18n/locales/zh.js +333 -2
  163. package/dist/i18n/locales/zh.js.map +1 -1
  164. package/dist/i18n/review.d.ts +26 -5
  165. package/dist/i18n/review.js +45 -1
  166. package/dist/i18n/review.js.map +1 -1
  167. package/dist/index.d.ts +19 -3
  168. package/dist/index.js +89 -0
  169. package/dist/index.js.map +1 -1
  170. package/dist/lib/person-name.d.ts +69 -0
  171. package/dist/lib/person-name.js +65 -0
  172. package/dist/lib/person-name.js.map +1 -0
  173. package/dist/rhf/fields.d.ts +26 -5
  174. package/dist/rhf/form.d.ts +26 -5
  175. package/dist/rhf.d.ts +26 -5
  176. package/dist/shell/app-shell.d.ts +26 -5
  177. package/dist/shell/company-switcher.d.ts +59 -0
  178. package/dist/shell/company-switcher.js +85 -0
  179. package/dist/shell/company-switcher.js.map +1 -0
  180. package/dist/shell/top-bar-brand.d.ts +26 -5
  181. package/dist/shell/topbar-action-menu.d.ts +1 -0
  182. package/dist/shell.d.ts +20 -5
  183. package/dist/wizard/stepper-nav.d.ts +26 -5
  184. package/dist/wizard.d.ts +26 -5
  185. package/package.json +1 -1
  186. package/src/account/account-parts.ts +67 -0
  187. package/src/account/data-export-setting.tsx +218 -0
  188. package/src/account/delete-account-setting.tsx +362 -0
  189. package/src/account/email-change-setting.tsx +457 -0
  190. package/src/account/sessions-setting.tsx +283 -0
  191. package/src/admin/admin-action-confirm.tsx +495 -0
  192. package/src/admin/admin-action-log.tsx +297 -0
  193. package/src/admin/admin-parts.ts +82 -0
  194. package/src/admin/invitations-panel.tsx +516 -0
  195. package/src/admin/reviewer-scope-editor.tsx +234 -0
  196. package/src/admin/role-select.tsx +286 -0
  197. package/src/admin/transfer-ownership-dialog.tsx +172 -0
  198. package/src/admin/user-roster.tsx +573 -0
  199. package/src/auth/accept-invitation.tsx +227 -0
  200. package/src/auth/auth-errors.ts +262 -0
  201. package/src/auth/complete-name-dialog.tsx +253 -0
  202. package/src/auth/email-tag.ts +75 -0
  203. package/src/auth/forgot-password-form.tsx +229 -0
  204. package/src/auth/form-rules.ts +40 -0
  205. package/src/auth/new-password-fields.tsx +85 -0
  206. package/src/auth/not-found-page.tsx +98 -0
  207. package/src/auth/register-form.tsx +477 -0
  208. package/src/auth/reset-password-form.tsx +351 -0
  209. package/src/auth/sign-in-form.tsx +859 -0
  210. package/src/auth/status-parts.tsx +138 -0
  211. package/src/auth/verify-email.tsx +409 -0
  212. package/src/components/account-chips.tsx +64 -7
  213. package/src/components/account-settings-labels.ts +15 -1
  214. package/src/components/account-settings.tsx +199 -23
  215. package/src/components/user-avatar.tsx +22 -4
  216. package/src/hooks/use-anchored-panel.ts +14 -3
  217. package/src/i18n/defaults.ts +40 -0
  218. package/src/i18n/german.ts +379 -0
  219. package/src/i18n/kit-labels.tsx +60 -0
  220. package/src/i18n/locales/es.ts +371 -1
  221. package/src/i18n/locales/fr.ts +379 -0
  222. package/src/i18n/locales/hu.ts +366 -1
  223. package/src/i18n/locales/it.ts +373 -0
  224. package/src/i18n/locales/zh.ts +343 -0
  225. package/src/i18n/review.ts +44 -0
  226. package/src/index.ts +146 -0
  227. package/src/lib/person-name.ts +157 -0
  228. package/src/shell/company-switcher.tsx +140 -0
@@ -4,6 +4,8 @@ function uiKitLabelsIt(numberLocale = "it-IT") {
4
4
  const num = new Intl.NumberFormat(numberLocale);
5
5
  const n = (value) => num.format(value);
6
6
  const plural = (count, one, many) => count === 1 ? one : many;
7
+ const wait = (seconds) => seconds < 60 ? `${n(Math.ceil(seconds))} s` : `${n(Math.ceil(seconds / 60))} min`;
8
+ const rateLimited = (seconds) => !seconds || seconds <= 0 ? "Troppi tentativi. Attenda un momento e riprovi." : `Troppi tentativi. Riprovi tra ${wait(seconds)}.`;
7
9
  return {
8
10
  feedbackAttachment: {
9
11
  attachmentAdd: "Aggiungi allegato",
@@ -134,7 +136,10 @@ function uiKitLabelsIt(numberLocale = "it-IT") {
134
136
  role: "Ruolo",
135
137
  memberSince: "Membro dal",
136
138
  displayName: "Nome visualizzato",
137
- save: "Salva"
139
+ save: "Salva",
140
+ firstName: "Nome",
141
+ lastName: "Cognome",
142
+ nameRequired: "Inserisca sia il nome sia il cognome."
138
143
  },
139
144
  password: {
140
145
  title: "Cambia password",
@@ -670,7 +675,9 @@ function uiKitLabelsIt(numberLocale = "it-IT") {
670
675
  invited: "Invitato",
671
676
  registered: "Registrato",
672
677
  unverified: "Non verificato",
673
- passwordChange: "Deve cambiare la password"
678
+ passwordChange: "Deve cambiare la password",
679
+ deletion: "Eliminazione richiesta",
680
+ deletionOn: (date) => `Eliminazione il ${date}`
674
681
  },
675
682
  shareCard: {
676
683
  dialogTitle: "Condividi",
@@ -808,6 +815,339 @@ L\u2019indirizzo postale completo viene fornito su richiesta agli interessati e
808
815
  }
809
816
  }
810
817
  },
818
+ // 0.29.0 — docs/auth-harmonization.md: keksdose's reviewed Italian (auth.*,
819
+ // verify_email, error.not_found_*, budget_share.join_*), kastlan's for the names and
820
+ // the 2FA prompt; written fresh where neither app had the sentence. Formal, "Lei" and
821
+ // "Suo" capitalised; headings addressed formally ("Scelga", not keksdose's "Scegli").
822
+ signIn: {
823
+ email: "Email",
824
+ password: "Password",
825
+ submit: "Accedi",
826
+ passkey: "Accedi con una passkey",
827
+ forgotPassword: "Password dimenticata?",
828
+ noAccount: "Non ha ancora un account?",
829
+ register: "Crea account",
830
+ invalidCredentials: "L\u2019indirizzo email o la password non sono corretti.",
831
+ failed: "Accesso non riuscito. Riprovi.",
832
+ passkeyFailed: "Accesso con passkey non riuscito.",
833
+ deactivatedHint: "Account disattivato? Scriva a {contact}.",
834
+ // "Account creato con…" rather than "Si è registrato con…", which needs a gender.
835
+ tagHint: (taggedAddress) => `Account creato con ${taggedAddress}? Usi quell\u2019indirizzo.`,
836
+ twoFactorTitle: "Autenticazione a due fattori",
837
+ twoFactorIntro: "Inserisca il codice mostrato dalla Sua app di autenticazione.",
838
+ code: "Codice 2FA",
839
+ verify: "Verifica",
840
+ codeInvalid: "Codice 2FA non valido.",
841
+ setPasswordTitle: "Scelga una nuova password",
842
+ setPasswordIntro: "Per questo account \xE8 stata richiesta una nuova password. Ne scelga una e acceder\xE0 subito.",
843
+ newPassword: "Nuova password",
844
+ confirmPassword: "Ripeti la nuova password",
845
+ passwordMismatch: "Le password non coincidono.",
846
+ setPasswordSubmit: "Imposta la password e accedi",
847
+ setPasswordFailed: "Impossibile impostare la password.",
848
+ expired: "Questo accesso \xE8 scaduto. Acceda di nuovo.",
849
+ backToSignIn: "Torna all\u2019accesso",
850
+ // kastlan's backup-code words ("codice di riserva" — not keksdose's "codice di
851
+ // recupero", which is the key of its end-to-end encryption).
852
+ useRecoveryCode: "Usa un codice di riserva",
853
+ useAuthenticatorCode: "Usa la Sua app di autenticazione",
854
+ recoveryCode: "Codice di riserva",
855
+ recoveryIntro: "Inserisca uno dei codici di riserva che ha salvato quando ha attivato l\u2019autenticazione a due fattori.",
856
+ recoveryCodeHint: (length) => `${n(length)} lettere e cifre. Trattini e spazi non contano.`,
857
+ recoveryCodeInvalid: "Questo codice di riserva non \xE8 valido o \xE8 gi\xE0 stato usato.",
858
+ rateLimited
859
+ },
860
+ register: {
861
+ firstName: "Nome",
862
+ lastName: "Cognome",
863
+ email: "Email",
864
+ emailTagUse: (address) => `Usa ${address}`,
865
+ emailTagHint: "Molti provider recapitano nome+tag@\u2026 nella stessa casella, cos\xEC la posta di questa app \xE8 filtrabile e riconoscibile. Verifichi che il Suo lo faccia prima di farci affidamento: accederebbe con l\u2019indirizzo con il tag.",
866
+ invitedEmailHint: "L\u2019indirizzo a cui \xE8 stato inviato il Suo invito.",
867
+ invitedTagNote: "L\u2019indirizzo con il tag riceve una propria email di conferma.",
868
+ password: "Password",
869
+ confirmPassword: "Ripeti la password",
870
+ passwordMismatch: "Le password non coincidono.",
871
+ language: "Lingua",
872
+ submit: "Crea account",
873
+ haveAccount: "Ha gi\xE0 un account?",
874
+ signIn: "Accedi",
875
+ emailTaken: "Esiste gi\xE0 un account con questo indirizzo email.",
876
+ registrationClosed: "I nuovi account si creano solo su invito. Chieda al gestore di invitare il Suo indirizzo email.",
877
+ invitationInvalid: "Questo link di invito non \xE8 valido.",
878
+ invitationExpired: "Questo invito \xE8 scaduto. Ne chieda uno nuovo.",
879
+ failed: "Registrazione non riuscita. Riprovi.",
880
+ rateLimited
881
+ },
882
+ completeName: {
883
+ title: "Completi il Suo nome",
884
+ description: "Nome e cognome ora vengono richiesti separatamente. Controlli quanto \xE8 gi\xE0 compilato e aggiunga ci\xF2 che manca.",
885
+ firstName: "Nome",
886
+ lastName: "Cognome",
887
+ save: "Salva",
888
+ later: "Pi\xF9 tardi",
889
+ failed: "Impossibile salvare il Suo nome. Riprovi."
890
+ },
891
+ forgotPassword: {
892
+ title: "Password dimenticata",
893
+ intro: "Inserisca l\u2019indirizzo email del Suo account. Le invieremo un link per scegliere una nuova password.",
894
+ email: "Email",
895
+ submit: "Invia il link",
896
+ sent: (email) => `Se esiste un account per ${email}, il link \xE8 in arrivo.`,
897
+ sentHint: "Il link \xE8 valido per un\u2019ora e funziona una sola volta. Controlli anche la cartella spam.",
898
+ backToSignIn: "Torna all\u2019accesso",
899
+ error: "Richiesta non riuscita. Riprovi pi\xF9 tardi.",
900
+ rateLimited
901
+ },
902
+ resetPassword: {
903
+ title: "Scelga una nuova password",
904
+ checking: "Verifica del link\u2026",
905
+ intro: (email) => `Sta impostando una nuova password per ${email}.`,
906
+ newPassword: "Nuova password",
907
+ confirmPassword: "Ripeti la nuova password",
908
+ mismatch: "Le password non coincidono.",
909
+ submit: "Salva password",
910
+ failed: "Impossibile cambiare la password.",
911
+ noToken: "Questo link \xE8 incompleto.",
912
+ invalid: "Questo link non \xE8 valido o \xE8 scaduto.",
913
+ invalidHint: "I link sono validi per un\u2019ora e funzionano una sola volta. Ne richieda semplicemente uno nuovo.",
914
+ requestNew: "Richiedi un nuovo link",
915
+ success: "La Sua password \xE8 stata cambiata. Ora pu\xF2 accedere con quella.",
916
+ sessionsEnded: "I dispositivi connessi sono stati disconnessi: l\xEC dovr\xE0 accedere di nuovo.",
917
+ signIn: "Vai all\u2019accesso",
918
+ rateLimited
919
+ },
920
+ verifyEmail: {
921
+ title: "Confermi il Suo indirizzo email",
922
+ verifying: "Conferma in corso\u2026",
923
+ verified: "Il Suo indirizzo email \xE8 confermato.",
924
+ continue: "Continua",
925
+ invalid: "Questo link di conferma non \xE8 valido",
926
+ expired: "Questo link di conferma \xE8 scaduto",
927
+ noToken: "A questo link manca il token di conferma.",
928
+ invalidHint: "Il link potrebbe essere scaduto o gi\xE0 stato usato.",
929
+ requestInApp: "Pu\xF2 richiederne uno nuovo dall\u2019app.",
930
+ requestHere: "Pu\xF2 richiederne uno nuovo qui.",
931
+ resend: "Invia di nuovo",
932
+ resendIn: (seconds) => `Invia di nuovo tra ${n(seconds)} s`,
933
+ resent: "Email di conferma inviata",
934
+ resendError: "Impossibile inviare l\u2019email di conferma",
935
+ banner: "Confermi il Suo indirizzo email.",
936
+ dismiss: "Non ora"
937
+ },
938
+ notFound: {
939
+ title: "Pagina non trovata",
940
+ body: "Questo indirizzo non esiste (pi\xF9). Forse \xE8 un errore di battitura, oppure la pagina \xE8 stata spostata.",
941
+ home: "Vai alla pagina iniziale",
942
+ app: "Torna all\u2019app"
943
+ },
944
+ acceptInvitation: {
945
+ title: "Accetta l\u2019invito",
946
+ accepting: "Adesione in corso\u2026",
947
+ accepted: "Invito accettato.",
948
+ // "Ora fa parte di…" rather than "Si è unito/a a…", which needs a gender.
949
+ joined: (name) => `Ora fa parte di ${name}.`,
950
+ continue: "Continua",
951
+ invalid: "Impossibile unirsi con questo link",
952
+ expired: "Questo invito \xE8 scaduto",
953
+ noToken: "A questo link manca il token di invito.",
954
+ askAgain: "Chieda a chi ha inviato l\u2019invito di mandarne uno nuovo.",
955
+ signInFirst: "Acceda per accettare questo invito",
956
+ signInHint: "Usi l\u2019account a cui \xE8 stato inviato l\u2019invito.",
957
+ signIn: "Accedi",
958
+ register: "Crea account"
959
+ },
960
+ companySwitcher: {
961
+ switchCompany: "Cambia azienda",
962
+ heading: "Aziende",
963
+ current: (name) => `Azienda: ${name}`,
964
+ currentMark: "(attuale)",
965
+ switching: "Cambio azienda in corso\u2026"
966
+ },
967
+ // 0.30.0 — docs/user-admin-harmonization.md: keksdose's reviewed Italian for the admin
968
+ // words (admin.users.*), Kurvenschmiede's for transfer, invitations and sessions,
969
+ // kastlan's for the company, the throttle and "Esci ovunque"; written fresh where no
970
+ // app had the sentence. "Lei", and phrased so that no sentence about the reader needs
971
+ // a gender ("disconnesso/a").
972
+ emailChange: {
973
+ title: "Indirizzo email",
974
+ current: "Indirizzo attuale",
975
+ newEmail: "Nuovo indirizzo email",
976
+ password: "Password attuale",
977
+ passwordHint: "Accede con il Suo indirizzo, quindi per cambiarlo serve la password.",
978
+ emailTagUse: (address) => `Usa ${address}`,
979
+ emailTagHint: "Molti provider recapitano nome+tag@\u2026 nella stessa casella, cos\xEC la posta di questa app \xE8 filtrabile e riconoscibile. Verifichi che il Suo lo faccia prima di farci affidamento: accederebbe con l\u2019indirizzo con il tag.",
980
+ submit: "Cambia indirizzo email",
981
+ sameAsCurrent: "Questo \xE8 gi\xE0 il Suo indirizzo.",
982
+ emailTaken: "Esiste gi\xE0 un account con questo indirizzo email.",
983
+ wrongPassword: "La password non \xE8 corretta.",
984
+ pending: (newEmail) => `Confermi il link che abbiamo inviato a ${newEmail}.`,
985
+ pendingHint: (currentEmail) => `Fino ad allora continua ad accedere con ${currentEmail}. Controlli anche la cartella spam.`,
986
+ resend: "Invia di nuovo il link",
987
+ resent: "Abbiamo inviato di nuovo il link.",
988
+ cancel: "Annulla la modifica",
989
+ confirmed: (email) => `Il Suo indirizzo email ora \xE8 ${email}.`,
990
+ passkeyNote: "Le Sue passkey continuano a funzionare. Il Suo dispositivo potrebbe ancora mostrarle con il vecchio indirizzo.",
991
+ rateLimited,
992
+ failed: "Non ha funzionato. Riprovi."
993
+ },
994
+ sessions: {
995
+ title: "Sessioni",
996
+ description: "Ha effettuato l\u2019accesso su un dispositivo che non usa pi\xF9 o di cui non si fida? Esca ovunque.",
997
+ signOutEverywhere: "Esci ovunque\u2026",
998
+ signOutEverywherePrompt: "Tutte le sessioni terminano, compresa questa: anche questo dispositivo verr\xE0 disconnesso e dovr\xE0 accedere di nuovo da qui.",
999
+ confirmSignOutEverywhere: "Esci ovunque",
1000
+ list: "Dove ha effettuato l\u2019accesso",
1001
+ loading: "Caricamento delle sessioni\u2026",
1002
+ empty: "Nessuna sessione da mostrare.",
1003
+ current: "Questo dispositivo",
1004
+ unknownDevice: "Dispositivo sconosciuto",
1005
+ // A colon: `when` is either "3 ore fa" or a date.
1006
+ lastActive: (when) => `Ultima attivit\xE0: ${when}`,
1007
+ ip: (address) => `IP ${address}`,
1008
+ revoke: "Disconnetti",
1009
+ // Starts with `revoke`, the button's visible text, for voice control.
1010
+ revokeItem: (device) => `Disconnetti ${device}`,
1011
+ failed: "Non ha funzionato. Riprovi."
1012
+ },
1013
+ deleteAccount: {
1014
+ title: "Elimina account",
1015
+ afterDays: (days) => `Il Suo account viene disattivato subito ed eliminato definitivamente ${n(days)} ${plural(days, "giorno", "giorni")} dopo.`,
1016
+ operator: "Il Suo account viene disattivato subito, poi il gestore lo eliminer\xE0 definitivamente.",
1017
+ arm: "Elimina account\u2026",
1018
+ prompt: "Tutte le Sue sessioni terminano, su ogni dispositivo, e il Suo account non potr\xE0 pi\xF9 essere usato.",
1019
+ handOver: (count) => count === 1 ? "1 elemento visibile ad altri passer\xE0 a un amministratore." : `${n(count)} elementi visibili ad altri passeranno a un amministratore.`,
1020
+ confirm: "Elimina il mio account",
1021
+ done: "Il Suo account \xE8 disattivato. Disconnessione in corso.",
1022
+ wrongPassword: "La password non \xE8 corretta.",
1023
+ confirmationMismatch: "Questo non \xE8 l\u2019indirizzo del Suo account.",
1024
+ lastAdmin: "Il Suo \xE8 l\u2019ultimo account amministratore. Renda prima amministratore qualcun altro.",
1025
+ lastAdminOf: (companies) => `Il Suo \xE8 l\u2019ultimo account amministratore di ${companies}. L\xEC renda prima amministratore qualcun altro.`,
1026
+ // keksdose's "famiglia".
1027
+ householdHasMembers: "La Sua famiglia ha altri membri, quindi l\u2019account non pu\xF2 essere eliminato qui. Scriva al gestore.",
1028
+ rateLimited,
1029
+ failed: "Impossibile eliminare il Suo account. Riprovi."
1030
+ },
1031
+ dataExport: {
1032
+ title: "Esporta i Suoi dati",
1033
+ description: "Scarichi una copia dei dati del Suo account come file JSON.",
1034
+ download: "Scarica i miei dati",
1035
+ started: "Il download \xE8 iniziato.",
1036
+ saveAgain: "Non \xE8 partito? Salva il file",
1037
+ rateLimited: (seconds) => seconds && seconds > 0 ? `Ha appena esportato i Suoi dati. Riprovi tra ${wait(seconds)}.` : "Ha appena esportato i Suoi dati. Riprovi tra un minuto.",
1038
+ failed: "Esportazione non riuscita. Riprovi."
1039
+ },
1040
+ userRoster: {
1041
+ name: "Nome",
1042
+ email: "Email",
1043
+ role: "Ruolo",
1044
+ state: "Stato",
1045
+ created: "Creato il",
1046
+ lastLogin: "Ultimo accesso",
1047
+ never: "Mai",
1048
+ actions: "Azioni",
1049
+ actionsFor: (name) => `Azioni per ${name}`
1050
+ },
1051
+ roleSelect: {
1052
+ label: "Ruolo",
1053
+ rolesLegend: "Ruoli",
1054
+ roleOf: (name) => `Ruolo di ${name}`,
1055
+ lockedLastAdmin: "L\u2019ultimo account amministratore attivo mantiene questo ruolo.",
1056
+ lockedSelf: "Non pu\xF2 cambiare il Suo ruolo.",
1057
+ notForLastAdmin: "non per l\u2019ultimo amministratore",
1058
+ notForSelf: "non per il Suo account",
1059
+ unavailable: (role, reason) => `${role} (${reason})`
1060
+ },
1061
+ reviewerScope: {
1062
+ languages: "Lingue",
1063
+ hint: "Spunti le lingue che questa persona rivede.",
1064
+ none: "Nessuna lingua: salvando si toglie il ruolo di revisore.",
1065
+ areas: "Limita a",
1066
+ legalOnly: "Solo le pagine legali",
1067
+ legalOnlyHint: "Impressum, informativa sulla privacy e condizioni d\u2019uso: per un giurista pi\xF9 che per un madrelingua.",
1068
+ failed: "Impossibile salvare il ruolo di revisore. Riprovi."
1069
+ },
1070
+ adminAction: {
1071
+ confirm: "Conferma",
1072
+ cancel: "Annulla",
1073
+ close: "Chiudi",
1074
+ lastAdmin: "Questo \xE8 l\u2019ultimo account amministratore attivo. Renda prima amministratore qualcun altro.",
1075
+ self: "Non pu\xF2 farlo sul Suo account.",
1076
+ confirmationMismatch: "L\u2019indirizzo non corrisponde a questo account. Controlli su quale account si trova.",
1077
+ otherCompanies: "Questo account appartiene anche ad altre aziende, quindi solo il gestore della piattaforma pu\xF2 farlo. Pu\xF2 invece rimuoverlo da questa azienda.",
1078
+ removeFromCompany: "Rimuovi dall\u2019azienda",
1079
+ failed: "Non ha funzionato. Riprovi."
1080
+ },
1081
+ adminActionLog: {
1082
+ title: "Azioni di amministrazione",
1083
+ empty: "Ancora nessuna azione di amministrazione.",
1084
+ loading: "Caricamento\u2026",
1085
+ by: (actor) => `da ${actor}`,
1086
+ bySelf: "dall\u2019utente stesso",
1087
+ automatic: "automaticamente",
1088
+ erased: "un account cancellato",
1089
+ filteredTo: (target) => `Solo ${target}`,
1090
+ showAll: "Mostra tutte le azioni",
1091
+ filterBy: (target) => `Mostra solo le azioni su ${target}`,
1092
+ // Agreeing with "account" (masculine), like `accountState`.
1093
+ actions: {
1094
+ deactivate: "Disattivato",
1095
+ reactivate: "Riattivato",
1096
+ role: "Ruolo cambiato",
1097
+ membership_remove: "Rimosso dall\u2019azienda",
1098
+ password_change_require: "Nuova password richiesta",
1099
+ password_change_withdraw: "Richiesta di nuova password ritirata",
1100
+ mail_verification: "Email di conferma inviata",
1101
+ mail_reset: "Email di reimpostazione password inviata",
1102
+ reviewer: "Ambito di revisione cambiato",
1103
+ invite: "Invitato",
1104
+ invite_resend: "Invito inviato di nuovo",
1105
+ invite_revoke: "Invito ritirato",
1106
+ transfer: "Lavoro passato ad altri",
1107
+ deletion_request: "Eliminazione richiesta",
1108
+ deletion_cancel: "Eliminazione annullata",
1109
+ erase: "Account cancellato"
1110
+ }
1111
+ },
1112
+ transferOwnership: {
1113
+ title: (name) => `Passa il lavoro di ${name}`,
1114
+ body: "Tutto ci\xF2 che possiede questo account passa all\u2019account scelto, in un solo passo.",
1115
+ recipient: "Passalo a",
1116
+ choose: "Scelga un account\u2026",
1117
+ chooseFirst: "Scelga chi riceve il lavoro",
1118
+ confirm: "Passa il lavoro",
1119
+ customer: "cliente",
1120
+ deactivated: "disattivato",
1121
+ self: "lo stesso account",
1122
+ unavailable: (account, reason) => `${account} (${reason})`,
1123
+ noCandidates: "Nessun altro account pu\xF2 riceverlo."
1124
+ },
1125
+ invitations: {
1126
+ email: "Indirizzo email",
1127
+ invalidEmail: "Inserisca un indirizzo email completo.",
1128
+ role: "Ruolo",
1129
+ scope: "Ambito",
1130
+ scopeNone: "Nessuno",
1131
+ language: "Lingua dell\u2019invito",
1132
+ note: "Nota",
1133
+ invite: "Invita",
1134
+ listTitle: "Inviti",
1135
+ empty: "Non \xE8 ancora stato invitato nessuno.",
1136
+ loading: "Caricamento\u2026",
1137
+ // Agreeing with "invito" (masculine).
1138
+ status: { open: "Aperto", accepted: "Accettato", expired: "Scaduto", revoked: "Ritirato" },
1139
+ sent: (date) => `Inviato il ${date}`,
1140
+ // kastlan's "Valido fino al".
1141
+ expires: (date) => `Valido fino al ${date}`,
1142
+ invitedBy: (name) => `da ${name}`,
1143
+ resend: (email) => `Invia a ${email} un nuovo link`,
1144
+ copyLink: "Copia link di invito",
1145
+ revoke: (email) => `Ritira l\u2019invito per ${email}`,
1146
+ consoleHint: "Questo server non invia email: vengono scritte nel log del server. Copi qui ogni link di invito e lo inoltri Lei stesso: viene mostrato una sola volta.",
1147
+ linkReady: (email) => `Il link di invito per ${email}, mostrato solo questa volta:`,
1148
+ notSent: (email) => `${email} \xE8 invitato, ma non \xE8 stato possibile inviare l\u2019email. La reinvii.`,
1149
+ failed: "Non ha funzionato. Riprovi."
1150
+ },
811
1151
  characterCount: {
812
1152
  count: (used, max) => `${n(used)} di ${n(max)} ${plural(max, "carattere", "caratteri")}`,
813
1153
  remaining: (left) => left === 1 ? "Resta 1 carattere" : `Restano ${n(left)} caratteri`,