@eifi1/ui-kit 0.29.0 → 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 (187) hide show
  1. package/README.md +26 -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/auth-errors.d.ts +85 -6
  42. package/dist/auth/auth-errors.js +62 -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 +17 -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 +61 -9
  54. package/dist/auth/sign-in-form.js +94 -13
  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 +16 -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 +12 -1
  64. package/dist/components/account-settings-labels.js +4 -1
  65. package/dist/components/account-settings-labels.js.map +1 -1
  66. package/dist/components/account-settings.d.ts +61 -6
  67. package/dist/components/account-settings.js +115 -15
  68. package/dist/components/account-settings.js.map +1 -1
  69. package/dist/components/amount-input.d.ts +17 -12
  70. package/dist/components/button-group.d.ts +17 -12
  71. package/dist/components/calculator.d.ts +17 -12
  72. package/dist/components/confirm-dialog.d.ts +17 -12
  73. package/dist/components/copy-button.d.ts +14 -9
  74. package/dist/components/danger-confirm.d.ts +17 -12
  75. package/dist/components/facing-pair.d.ts +17 -12
  76. package/dist/components/file-button.d.ts +17 -12
  77. package/dist/components/file-dropzone.d.ts +17 -12
  78. package/dist/components/form-actions.d.ts +17 -12
  79. package/dist/components/iban-input.d.ts +17 -12
  80. package/dist/components/language-select.d.ts +17 -12
  81. package/dist/components/legal-page.d.ts +17 -12
  82. package/dist/components/legal.d.ts +17 -12
  83. package/dist/components/money-field.d.ts +17 -12
  84. package/dist/components/number-field.d.ts +17 -12
  85. package/dist/components/number-input.d.ts +17 -12
  86. package/dist/components/numpad-sheet.d.ts +17 -12
  87. package/dist/components/phone-input.d.ts +17 -12
  88. package/dist/components/series-chart.d.ts +17 -12
  89. package/dist/components/settings-fields.d.ts +16 -11
  90. package/dist/components/share-card.d.ts +16 -11
  91. package/dist/components/text-link.d.ts +17 -12
  92. package/dist/components/time-input.d.ts +17 -12
  93. package/dist/components/ui.d.ts +13 -8
  94. package/dist/{register-form-V1OeNlMr.d.ts → delete-account-setting-CGVMckMw.d.ts} +6616 -5645
  95. package/dist/feedback/feedback-attachment.d.ts +17 -12
  96. package/dist/feedback/feedback-context.d.ts +17 -12
  97. package/dist/feedback/feedback-crash.d.ts +17 -12
  98. package/dist/feedback/feedback-dialog.d.ts +17 -12
  99. package/dist/feedback/feedback-inbox.d.ts +17 -12
  100. package/dist/feedback/feedback-labels.d.ts +17 -12
  101. package/dist/feedback/feedback-menu.d.ts +17 -12
  102. package/dist/feedback/feedback-record.d.ts +17 -12
  103. package/dist/feedback/feedback-row-detail.d.ts +17 -12
  104. package/dist/feedback/feedback-status-undo.d.ts +17 -12
  105. package/dist/feedback/feedback-submit.d.ts +17 -12
  106. package/dist/feedback/feedback-swipe.d.ts +17 -12
  107. package/dist/feedback/feedback-table.d.ts +14 -9
  108. package/dist/feedback/feedback-thread.d.ts +17 -12
  109. package/dist/feedback.d.ts +17 -12
  110. package/dist/hooks/use-anchored-panel.d.ts +6 -2
  111. package/dist/hooks/use-anchored-panel.js +2 -1
  112. package/dist/hooks/use-anchored-panel.js.map +1 -1
  113. package/dist/hooks/use-file-drop.d.ts +17 -12
  114. package/dist/i18n/defaults.d.ts +17 -12
  115. package/dist/i18n/defaults.js +22 -0
  116. package/dist/i18n/defaults.js.map +1 -1
  117. package/dist/i18n/german.d.ts +17 -12
  118. package/dist/i18n/german.js +215 -11
  119. package/dist/i18n/german.js.map +1 -1
  120. package/dist/i18n/kit-labels.d.ts +10 -5
  121. package/dist/i18n/kit-labels.js.map +1 -1
  122. package/dist/i18n/languages.d.ts +11 -6
  123. package/dist/i18n/locales/de-CH.d.ts +17 -12
  124. package/dist/i18n/locales/en.d.ts +17 -12
  125. package/dist/i18n/locales/es.d.ts +17 -12
  126. package/dist/i18n/locales/es.js +207 -9
  127. package/dist/i18n/locales/es.js.map +1 -1
  128. package/dist/i18n/locales/fr.d.ts +17 -12
  129. package/dist/i18n/locales/fr.js +209 -6
  130. package/dist/i18n/locales/fr.js.map +1 -1
  131. package/dist/i18n/locales/hu.d.ts +17 -12
  132. package/dist/i18n/locales/hu.js +207 -11
  133. package/dist/i18n/locales/hu.js.map +1 -1
  134. package/dist/i18n/locales/it.d.ts +17 -12
  135. package/dist/i18n/locales/it.js +209 -6
  136. package/dist/i18n/locales/it.js.map +1 -1
  137. package/dist/i18n/locales/zh.d.ts +17 -12
  138. package/dist/i18n/locales/zh.js +200 -6
  139. package/dist/i18n/locales/zh.js.map +1 -1
  140. package/dist/i18n/review.d.ts +17 -12
  141. package/dist/i18n/review.js +37 -1
  142. package/dist/i18n/review.js.map +1 -1
  143. package/dist/index.d.ts +8 -3
  144. package/dist/index.js +53 -0
  145. package/dist/index.js.map +1 -1
  146. package/dist/rhf/fields.d.ts +17 -12
  147. package/dist/rhf/form.d.ts +17 -12
  148. package/dist/rhf.d.ts +17 -12
  149. package/dist/shell/app-shell.d.ts +17 -12
  150. package/dist/shell/top-bar-brand.d.ts +17 -12
  151. package/dist/shell.d.ts +11 -6
  152. package/dist/wizard/stepper-nav.d.ts +17 -12
  153. package/dist/wizard.d.ts +17 -12
  154. package/package.json +1 -1
  155. package/src/account/account-parts.ts +67 -0
  156. package/src/account/data-export-setting.tsx +218 -0
  157. package/src/account/delete-account-setting.tsx +362 -0
  158. package/src/account/email-change-setting.tsx +457 -0
  159. package/src/account/sessions-setting.tsx +283 -0
  160. package/src/admin/admin-action-confirm.tsx +495 -0
  161. package/src/admin/admin-action-log.tsx +297 -0
  162. package/src/admin/admin-parts.ts +82 -0
  163. package/src/admin/invitations-panel.tsx +516 -0
  164. package/src/admin/reviewer-scope-editor.tsx +234 -0
  165. package/src/admin/role-select.tsx +286 -0
  166. package/src/admin/transfer-ownership-dialog.tsx +172 -0
  167. package/src/admin/user-roster.tsx +573 -0
  168. package/src/auth/auth-errors.ts +165 -8
  169. package/src/auth/forgot-password-form.tsx +21 -5
  170. package/src/auth/register-form.tsx +24 -6
  171. package/src/auth/reset-password-form.tsx +19 -5
  172. package/src/auth/sign-in-form.tsx +207 -35
  173. package/src/auth/verify-email.tsx +59 -8
  174. package/src/components/account-chips.tsx +64 -7
  175. package/src/components/account-settings-labels.ts +15 -1
  176. package/src/components/account-settings.tsx +199 -23
  177. package/src/hooks/use-anchored-panel.ts +14 -3
  178. package/src/i18n/defaults.ts +22 -0
  179. package/src/i18n/german.ts +241 -5
  180. package/src/i18n/kit-labels.tsx +33 -0
  181. package/src/i18n/locales/es.ts +230 -3
  182. package/src/i18n/locales/fr.ts +232 -0
  183. package/src/i18n/locales/hu.ts +224 -5
  184. package/src/i18n/locales/it.ts +230 -0
  185. package/src/i18n/locales/zh.ts +205 -0
  186. package/src/i18n/review.ts +36 -0
  187. package/src/index.ts +93 -0
@@ -3,6 +3,8 @@ import { formatFileSize } from "../kit-labels.js";
3
3
  function uiKitLabelsZh(numberLocale = "zh-CN") {
4
4
  const num = new Intl.NumberFormat(numberLocale);
5
5
  const n = (value) => num.format(value);
6
+ const wait = (seconds) => seconds < 60 ? `${n(Math.ceil(seconds))} \u79D2` : `${n(Math.ceil(seconds / 60))} \u5206\u949F`;
7
+ const rateLimited = (seconds) => !seconds || seconds <= 0 ? "\u5C1D\u8BD5\u6B21\u6570\u8FC7\u591A\uFF0C\u8BF7\u7A0D\u5019\u518D\u8BD5\u3002" : `\u5C1D\u8BD5\u6B21\u6570\u8FC7\u591A\uFF0C\u8BF7 ${wait(seconds)}\u540E\u91CD\u8BD5\u3002`;
6
8
  return {
7
9
  feedbackAttachment: {
8
10
  attachmentAdd: "\u6DFB\u52A0\u9644\u4EF6",
@@ -133,7 +135,10 @@ function uiKitLabelsZh(numberLocale = "zh-CN") {
133
135
  role: "\u89D2\u8272",
134
136
  memberSince: "\u6CE8\u518C\u65F6\u95F4",
135
137
  displayName: "\u663E\u793A\u540D\u79F0",
136
- save: "\u4FDD\u5B58"
138
+ save: "\u4FDD\u5B58",
139
+ firstName: "\u540D\u5B57",
140
+ lastName: "\u59D3\u6C0F",
141
+ nameRequired: "\u8BF7\u540C\u65F6\u586B\u5199\u540D\u5B57\u548C\u59D3\u6C0F\u3002"
137
142
  },
138
143
  password: {
139
144
  title: "\u4FEE\u6539\u5BC6\u7801",
@@ -665,7 +670,9 @@ function uiKitLabelsZh(numberLocale = "zh-CN") {
665
670
  invited: "\u5DF2\u9080\u8BF7",
666
671
  registered: "\u5DF2\u6CE8\u518C",
667
672
  unverified: "\u672A\u9A8C\u8BC1",
668
- passwordChange: "\u9700\u4FEE\u6539\u5BC6\u7801"
673
+ passwordChange: "\u9700\u4FEE\u6539\u5BC6\u7801",
674
+ deletion: "\u5DF2\u7533\u8BF7\u5220\u9664",
675
+ deletionOn: (date) => `\u5C06\u4E8E ${date} \u5220\u9664`
669
676
  },
670
677
  shareCard: {
671
678
  dialogTitle: "\u5171\u4EAB",
@@ -832,7 +839,14 @@ ${o.postalCode} ${o.city}\uFF0C${o.country}
832
839
  setPasswordSubmit: "\u8BBE\u7F6E\u5BC6\u7801\u5E76\u767B\u5F55",
833
840
  setPasswordFailed: "\u65E0\u6CD5\u8BBE\u7F6E\u5BC6\u7801\u3002",
834
841
  expired: "\u672C\u6B21\u767B\u5F55\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55\u3002",
835
- backToSignIn: "\u8FD4\u56DE\u767B\u5F55"
842
+ backToSignIn: "\u8FD4\u56DE\u767B\u5F55",
843
+ useRecoveryCode: "\u4F7F\u7528\u5907\u7528\u7801",
844
+ useAuthenticatorCode: "\u4F7F\u7528\u8EAB\u4EFD\u9A8C\u8BC1\u5668\u5E94\u7528",
845
+ recoveryCode: "\u5907\u7528\u7801",
846
+ recoveryIntro: "\u8BF7\u8F93\u5165\u60A8\u5728\u5F00\u542F\u53CC\u91CD\u9A8C\u8BC1\u65F6\u4FDD\u5B58\u7684\u5907\u7528\u7801\u4E4B\u4E00\u3002",
847
+ recoveryCodeHint: (length) => `\u5171 ${n(length)} \u4F4D\u5B57\u6BCD\u548C\u6570\u5B57\uFF0C\u8FDE\u5B57\u7B26\u548C\u7A7A\u683C\u4E0D\u5F71\u54CD\u3002`,
848
+ recoveryCodeInvalid: "\u6B64\u5907\u7528\u7801\u65E0\u6548\u6216\u5DF2\u88AB\u4F7F\u7528\u3002",
849
+ rateLimited
836
850
  },
837
851
  register: {
838
852
  firstName: "\u540D\u5B57",
@@ -853,7 +867,8 @@ ${o.postalCode} ${o.city}\uFF0C${o.country}
853
867
  registrationClosed: "\u65B0\u8D26\u6237\u4EC5\u9650\u53D7\u9080\u6CE8\u518C\u3002\u8BF7\u8054\u7CFB\u8FD0\u8425\u8005\uFF0C\u4E3A\u60A8\u7684\u7535\u5B50\u90AE\u7BB1\u5730\u5740\u53D1\u9001\u9080\u8BF7\u3002",
854
868
  invitationInvalid: "\u6B64\u9080\u8BF7\u94FE\u63A5\u65E0\u6548\u3002",
855
869
  invitationExpired: "\u6B64\u9080\u8BF7\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u7D22\u53D6\u65B0\u7684\u9080\u8BF7\u3002",
856
- failed: "\u6CE8\u518C\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002"
870
+ failed: "\u6CE8\u518C\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002",
871
+ rateLimited
857
872
  },
858
873
  completeName: {
859
874
  title: "\u5B8C\u5584\u60A8\u7684\u59D3\u540D",
@@ -872,7 +887,8 @@ ${o.postalCode} ${o.city}\uFF0C${o.country}
872
887
  sent: (email) => `\u5982\u679C ${email} \u6709\u8D26\u6237\uFF0C\u94FE\u63A5\u6B63\u5728\u53D1\u9001\u4E2D\u3002`,
873
888
  sentHint: "\u8BE5\u94FE\u63A5\u6709\u6548\u671F\u4E00\u5C0F\u65F6\uFF0C\u4E14\u4EC5\u53EF\u4F7F\u7528\u4E00\u6B21\u3002\u4E5F\u8BF7\u67E5\u770B\u5783\u573E\u90AE\u4EF6\u6587\u4EF6\u5939\u3002",
874
889
  backToSignIn: "\u8FD4\u56DE\u767B\u5F55",
875
- error: "\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002"
890
+ error: "\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5\u3002",
891
+ rateLimited
876
892
  },
877
893
  resetPassword: {
878
894
  title: "\u8BBE\u7F6E\u65B0\u5BC6\u7801",
@@ -889,7 +905,8 @@ ${o.postalCode} ${o.city}\uFF0C${o.country}
889
905
  requestNew: "\u7533\u8BF7\u65B0\u94FE\u63A5",
890
906
  success: "\u60A8\u7684\u5BC6\u7801\u5DF2\u4FEE\u6539\uFF0C\u73B0\u5728\u53EF\u4EE5\u7528\u5B83\u767B\u5F55\u4E86\u3002",
891
907
  sessionsEnded: "\u5DF2\u767B\u5F55\u7684\u8BBE\u5907\u5747\u5DF2\u9000\u51FA\u767B\u5F55\u2014\u2014\u60A8\u9700\u8981\u5728\u8FD9\u4E9B\u8BBE\u5907\u4E0A\u91CD\u65B0\u767B\u5F55\u3002",
892
- signIn: "\u524D\u5F80\u767B\u5F55"
908
+ signIn: "\u524D\u5F80\u767B\u5F55",
909
+ rateLimited
893
910
  },
894
911
  verifyEmail: {
895
912
  title: "\u786E\u8BA4\u60A8\u7684\u7535\u5B50\u90AE\u7BB1\u5730\u5740",
@@ -937,6 +954,183 @@ ${o.postalCode} ${o.city}\uFF0C${o.country}
937
954
  currentMark: "\uFF08\u5F53\u524D\uFF09",
938
955
  switching: "\u6B63\u5728\u5207\u6362\u516C\u53F8\u2026"
939
956
  },
957
+ // 0.30.0 — docs/user-admin-harmonization.md: Kurvenschmiede's reviewed Chinese for the
958
+ // admin words (停用、角色、审校者), transfer (移交), invitations and sessions;
959
+ // written fresh where it had no sentence.
960
+ emailChange: {
961
+ title: "\u7535\u5B50\u90AE\u7BB1\u5730\u5740",
962
+ current: "\u5F53\u524D\u5730\u5740",
963
+ newEmail: "\u65B0\u7535\u5B50\u90AE\u7BB1\u5730\u5740",
964
+ password: "\u5F53\u524D\u5BC6\u7801",
965
+ passwordHint: "\u60A8\u4F7F\u7528\u6B64\u5730\u5740\u767B\u5F55\uFF0C\u56E0\u6B64\u66F4\u6539\u5B83\u9700\u8981\u8F93\u5165\u5BC6\u7801\u3002",
966
+ emailTagUse: (address) => `\u4F7F\u7528 ${address}`,
967
+ emailTagHint: "\u8BB8\u591A\u90AE\u4EF6\u670D\u52A1\u5546\u4F1A\u628A\u53D1\u5F80 name+tag@\u2026 \u7684\u90AE\u4EF6\u6295\u9012\u5230\u540C\u4E00\u4E2A\u6536\u4EF6\u7BB1\uFF0C\u8FD9\u6837\u672C\u5E94\u7528\u53D1\u6765\u7684\u90AE\u4EF6\u4FBF\u4E8E\u7B5B\u9009\u548C\u8FFD\u6EAF\u3002\u8BF7\u5148\u786E\u8BA4\u60A8\u7684\u670D\u52A1\u5546\u652F\u6301\u8FD9\u4E00\u70B9\u518D\u4F7F\u7528\uFF1A\u4E4B\u540E\u60A8\u9700\u8981\u7528\u5E26\u6807\u7B7E\u7684\u5730\u5740\u767B\u5F55\u3002",
968
+ submit: "\u66F4\u6539\u7535\u5B50\u90AE\u7BB1\u5730\u5740",
969
+ sameAsCurrent: "\u8FD9\u5DF2\u7ECF\u662F\u60A8\u7684\u5730\u5740\u3002",
970
+ emailTaken: "\u8BE5\u7535\u5B50\u90AE\u7BB1\u5730\u5740\u5DF2\u6709\u8D26\u6237\u3002",
971
+ wrongPassword: "\u5BC6\u7801\u4E0D\u6B63\u786E\u3002",
972
+ pending: (newEmail) => `\u8BF7\u70B9\u51FB\u6211\u4EEC\u53D1\u9001\u5230 ${newEmail} \u7684\u94FE\u63A5\u8FDB\u884C\u786E\u8BA4\u3002`,
973
+ pendingHint: (currentEmail) => `\u5728\u6B64\u4E4B\u524D\uFF0C\u60A8\u4ECD\u4F7F\u7528 ${currentEmail} \u767B\u5F55\u3002\u4E5F\u8BF7\u67E5\u770B\u5783\u573E\u90AE\u4EF6\u6587\u4EF6\u5939\u3002`,
974
+ resend: "\u91CD\u65B0\u53D1\u9001\u94FE\u63A5",
975
+ resent: "\u94FE\u63A5\u5DF2\u91CD\u65B0\u53D1\u9001\u3002",
976
+ cancel: "\u53D6\u6D88\u66F4\u6539",
977
+ confirmed: (email) => `\u60A8\u7684\u7535\u5B50\u90AE\u7BB1\u5730\u5740\u73B0\u5728\u662F ${email}\u3002`,
978
+ passkeyNote: "\u60A8\u7684\u901A\u884C\u5BC6\u94A5\u4ECD\u53EF\u6B63\u5E38\u4F7F\u7528\u3002\u60A8\u7684\u8BBE\u5907\u53EF\u80FD\u4ECD\u4EE5\u65E7\u5730\u5740\u5217\u51FA\u5B83\u4EEC\u3002",
979
+ rateLimited,
980
+ failed: "\u64CD\u4F5C\u672A\u6210\u529F\uFF0C\u8BF7\u91CD\u8BD5\u3002"
981
+ },
982
+ sessions: {
983
+ title: "\u4F1A\u8BDD",
984
+ description: "\u5728\u4E0D\u518D\u4F7F\u7528\u6216\u4E0D\u4FE1\u4EFB\u7684\u8BBE\u5907\u4E0A\u767B\u5F55\u8FC7\uFF1F\u8BF7\u5728\u6240\u6709\u8BBE\u5907\u4E0A\u9000\u51FA\u767B\u5F55\u3002",
985
+ signOutEverywhere: "\u5728\u6240\u6709\u8BBE\u5907\u4E0A\u9000\u51FA\u767B\u5F55\u2026",
986
+ signOutEverywherePrompt: "\u8FD9\u5C06\u7ED3\u675F\u6240\u6709\u4F1A\u8BDD\uFF0C\u5305\u62EC\u5F53\u524D\u4F1A\u8BDD\uFF1A\u6B64\u8BBE\u5907\u4E5F\u4F1A\u9000\u51FA\u767B\u5F55\uFF0C\u60A8\u9700\u8981\u5728\u8FD9\u91CC\u91CD\u65B0\u767B\u5F55\u3002",
987
+ confirmSignOutEverywhere: "\u5728\u6240\u6709\u8BBE\u5907\u4E0A\u9000\u51FA\u767B\u5F55",
988
+ list: "\u60A8\u5DF2\u767B\u5F55\u7684\u8BBE\u5907",
989
+ loading: "\u6B63\u5728\u52A0\u8F7D\u4F1A\u8BDD\u2026",
990
+ empty: "\u6CA1\u6709\u53EF\u663E\u793A\u7684\u4F1A\u8BDD\u3002",
991
+ current: "\u6B64\u8BBE\u5907",
992
+ unknownDevice: "\u672A\u77E5\u8BBE\u5907",
993
+ lastActive: (when) => `\u4E0A\u6B21\u6D3B\u52A8\uFF1A${when}`,
994
+ ip: (address) => `IP\uFF1A${address}`,
995
+ revoke: "\u9000\u51FA\u767B\u5F55",
996
+ // Starts with `revoke`, the button's visible text, for voice control.
997
+ revokeItem: (device) => `\u9000\u51FA\u767B\u5F55\uFF1A${device}`,
998
+ failed: "\u64CD\u4F5C\u672A\u6210\u529F\uFF0C\u8BF7\u91CD\u8BD5\u3002"
999
+ },
1000
+ deleteAccount: {
1001
+ title: "\u5220\u9664\u8D26\u6237",
1002
+ afterDays: (days) => `\u60A8\u7684\u8D26\u6237\u5C06\u7ACB\u5373\u505C\u7528\uFF0C\u5E76\u5728 ${n(days)} \u5929\u540E\u88AB\u6C38\u4E45\u5220\u9664\u3002`,
1003
+ operator: "\u60A8\u7684\u8D26\u6237\u5C06\u7ACB\u5373\u505C\u7528\uFF0C\u4E4B\u540E\u7531\u8FD0\u8425\u8005\u5C06\u5176\u6C38\u4E45\u5220\u9664\u3002",
1004
+ arm: "\u5220\u9664\u8D26\u6237\u2026",
1005
+ prompt: "\u60A8\u5C06\u5728\u6240\u6709\u8BBE\u5907\u4E0A\u9000\u51FA\u767B\u5F55\uFF0C\u4E14\u65E0\u6CD5\u518D\u4F7F\u7528\u6B64\u8D26\u6237\u3002",
1006
+ handOver: (count) => `${n(count)} \u9879\u4ED6\u4EBA\u53EF\u89C1\u7684\u5185\u5BB9\u5C06\u79FB\u4EA4\u7ED9\u4E00\u4F4D\u7BA1\u7406\u5458\u3002`,
1007
+ confirm: "\u5220\u9664\u6211\u7684\u8D26\u6237",
1008
+ done: "\u60A8\u7684\u8D26\u6237\u5DF2\u505C\u7528\uFF0C\u6B63\u5728\u9000\u51FA\u767B\u5F55\u3002",
1009
+ wrongPassword: "\u5BC6\u7801\u4E0D\u6B63\u786E\u3002",
1010
+ confirmationMismatch: "\u8FD9\u4E0D\u662F\u60A8\u8D26\u6237\u7684\u5730\u5740\u3002",
1011
+ lastAdmin: "\u60A8\u662F\u6700\u540E\u4E00\u4F4D\u7BA1\u7406\u5458\u3002\u8BF7\u5148\u5C06\u5176\u4ED6\u4EBA\u8BBE\u4E3A\u7BA1\u7406\u5458\u3002",
1012
+ lastAdminOf: (companies) => `\u60A8\u662F ${companies} \u7684\u6700\u540E\u4E00\u4F4D\u7BA1\u7406\u5458\u3002\u8BF7\u5148\u5728\u90A3\u91CC\u5C06\u5176\u4ED6\u4EBA\u8BBE\u4E3A\u7BA1\u7406\u5458\u3002`,
1013
+ householdHasMembers: "\u60A8\u7684\u5BB6\u5EAD\u8FD8\u6709\u5176\u4ED6\u6210\u5458\uFF0C\u56E0\u6B64\u65E0\u6CD5\u5728\u6B64\u5220\u9664\u8D26\u6237\u3002\u8BF7\u8054\u7CFB\u8FD0\u8425\u8005\u3002",
1014
+ rateLimited,
1015
+ failed: "\u65E0\u6CD5\u5220\u9664\u60A8\u7684\u8D26\u6237\uFF0C\u8BF7\u91CD\u8BD5\u3002"
1016
+ },
1017
+ dataExport: {
1018
+ title: "\u5BFC\u51FA\u60A8\u7684\u6570\u636E",
1019
+ description: "\u4E0B\u8F7D\u60A8\u8D26\u6237\u6570\u636E\u7684\u526F\u672C\uFF08JSON \u6587\u4EF6\uFF09\u3002",
1020
+ download: "\u4E0B\u8F7D\u6211\u7684\u6570\u636E",
1021
+ started: "\u4E0B\u8F7D\u5DF2\u5F00\u59CB\u3002",
1022
+ saveAgain: "\u6CA1\u6709\u5F00\u59CB\uFF1F\u4FDD\u5B58\u6587\u4EF6",
1023
+ rateLimited: (seconds) => seconds && seconds > 0 ? `\u60A8\u521A\u521A\u5BFC\u51FA\u8FC7\u6570\u636E\uFF0C\u8BF7 ${wait(seconds)}\u540E\u91CD\u8BD5\u3002` : "\u60A8\u521A\u521A\u5BFC\u51FA\u8FC7\u6570\u636E\uFF0C\u8BF7\u4E00\u5206\u949F\u540E\u91CD\u8BD5\u3002",
1024
+ failed: "\u5BFC\u51FA\u5931\u8D25\uFF0C\u8BF7\u91CD\u8BD5\u3002"
1025
+ },
1026
+ userRoster: {
1027
+ name: "\u59D3\u540D",
1028
+ email: "\u7535\u5B50\u90AE\u7BB1",
1029
+ role: "\u89D2\u8272",
1030
+ state: "\u72B6\u6001",
1031
+ created: "\u521B\u5EFA\u65F6\u95F4",
1032
+ lastLogin: "\u6700\u540E\u767B\u5F55",
1033
+ never: "\u4ECE\u672A",
1034
+ actions: "\u64CD\u4F5C",
1035
+ actionsFor: (name) => `${name} \u7684\u64CD\u4F5C`
1036
+ },
1037
+ roleSelect: {
1038
+ label: "\u89D2\u8272",
1039
+ rolesLegend: "\u89D2\u8272",
1040
+ roleOf: (name) => `${name} \u7684\u89D2\u8272`,
1041
+ lockedLastAdmin: "\u6700\u540E\u4E00\u4F4D\u6D3B\u8DC3\u7BA1\u7406\u5458\u5FC5\u987B\u4FDD\u7559\u6B64\u89D2\u8272\u3002",
1042
+ lockedSelf: "\u60A8\u4E0D\u80FD\u66F4\u6539\u81EA\u5DF1\u7684\u89D2\u8272\u3002",
1043
+ notForLastAdmin: "\u4E0D\u9002\u7528\u4E8E\u6700\u540E\u4E00\u4F4D\u7BA1\u7406\u5458",
1044
+ notForSelf: "\u4E0D\u9002\u7528\u4E8E\u60A8\u81EA\u5DF1\u7684\u8D26\u6237",
1045
+ unavailable: (role, reason) => `${role}\uFF08${reason}\uFF09`
1046
+ },
1047
+ reviewerScope: {
1048
+ languages: "\u8BED\u8A00",
1049
+ hint: "\u52FE\u9009\u6B64\u4EBA\u8D1F\u8D23\u5BA1\u6821\u7684\u8BED\u8A00\u3002",
1050
+ none: "\u672A\u9009\u62E9\u8BED\u8A00\uFF1A\u4FDD\u5B58\u540E\u5C06\u53D6\u6D88\u5BA1\u6821\u8005\u89D2\u8272\u3002",
1051
+ areas: "\u4EC5\u9650",
1052
+ legalOnly: "\u4EC5\u6CD5\u5F8B\u9875\u9762",
1053
+ legalOnlyHint: "\u8FD0\u8425\u8005\u4FE1\u606F\u3001\u9690\u79C1\u653F\u7B56\u548C\u4F7F\u7528\u6761\u6B3E\u2014\u2014\u9002\u5408\u5F8B\u5E08\u800C\u975E\u6BCD\u8BED\u5BA1\u6821\u8005\u3002",
1054
+ failed: "\u65E0\u6CD5\u4FDD\u5B58\u5BA1\u6821\u8303\u56F4\uFF0C\u8BF7\u91CD\u8BD5\u3002"
1055
+ },
1056
+ adminAction: {
1057
+ confirm: "\u786E\u8BA4",
1058
+ cancel: "\u53D6\u6D88",
1059
+ close: "\u5173\u95ED",
1060
+ lastAdmin: "\u8FD9\u662F\u6700\u540E\u4E00\u4F4D\u6D3B\u8DC3\u7BA1\u7406\u5458\u3002\u8BF7\u5148\u5C06\u5176\u4ED6\u4EBA\u8BBE\u4E3A\u7BA1\u7406\u5458\u3002",
1061
+ self: "\u4E0D\u80FD\u5BF9\u60A8\u81EA\u5DF1\u7684\u8D26\u6237\u6267\u884C\u6B64\u64CD\u4F5C\u3002",
1062
+ confirmationMismatch: "\u8BE5\u5730\u5740\u4E0E\u6B64\u8D26\u6237\u4E0D\u7B26\u3002\u8BF7\u68C0\u67E5\u60A8\u5F53\u524D\u6240\u5728\u7684\u8D26\u6237\u3002",
1063
+ otherCompanies: "\u6B64\u8D26\u6237\u4E5F\u5C5E\u4E8E\u5176\u4ED6\u516C\u53F8\uFF0C\u56E0\u6B64\u53EA\u6709\u5E73\u53F0\u8FD0\u8425\u8005\u624D\u80FD\u6267\u884C\u6B64\u64CD\u4F5C\u3002\u60A8\u53EF\u4EE5\u6539\u4E3A\u5C06\u5176\u4ECE\u672C\u516C\u53F8\u79FB\u9664\u3002",
1064
+ removeFromCompany: "\u4ECE\u516C\u53F8\u79FB\u9664",
1065
+ failed: "\u64CD\u4F5C\u672A\u6210\u529F\uFF0C\u8BF7\u91CD\u8BD5\u3002"
1066
+ },
1067
+ adminActionLog: {
1068
+ title: "\u7BA1\u7406\u64CD\u4F5C",
1069
+ empty: "\u6682\u65E0\u7BA1\u7406\u64CD\u4F5C\u3002",
1070
+ loading: "\u52A0\u8F7D\u4E2D\u2026",
1071
+ by: (actor) => `\u64CD\u4F5C\u8005\uFF1A${actor}`,
1072
+ bySelf: "\u7528\u6237\u672C\u4EBA",
1073
+ automatic: "\u81EA\u52A8\u6267\u884C",
1074
+ erased: "\u5DF2\u5220\u9664\u7684\u8D26\u6237",
1075
+ filteredTo: (target) => `\u4EC5 ${target}`,
1076
+ showAll: "\u663E\u793A\u5168\u90E8\u64CD\u4F5C",
1077
+ filterBy: (target) => `\u4EC5\u663E\u793A\u9488\u5BF9 ${target} \u7684\u64CD\u4F5C`,
1078
+ actions: {
1079
+ deactivate: "\u5DF2\u505C\u7528",
1080
+ reactivate: "\u5DF2\u91CD\u65B0\u6FC0\u6D3B",
1081
+ role: "\u89D2\u8272\u5DF2\u66F4\u6539",
1082
+ membership_remove: "\u5DF2\u4ECE\u516C\u53F8\u79FB\u9664",
1083
+ password_change_require: "\u5DF2\u8981\u6C42\u8BBE\u7F6E\u65B0\u5BC6\u7801",
1084
+ password_change_withdraw: "\u5DF2\u64A4\u56DE\u65B0\u5BC6\u7801\u8981\u6C42",
1085
+ mail_verification: "\u5DF2\u53D1\u9001\u786E\u8BA4\u90AE\u4EF6",
1086
+ mail_reset: "\u5DF2\u53D1\u9001\u5BC6\u7801\u91CD\u7F6E\u90AE\u4EF6",
1087
+ reviewer: "\u5BA1\u6821\u8303\u56F4\u5DF2\u66F4\u6539",
1088
+ invite: "\u5DF2\u9080\u8BF7",
1089
+ invite_resend: "\u5DF2\u91CD\u65B0\u53D1\u9001\u9080\u8BF7",
1090
+ invite_revoke: "\u5DF2\u64A4\u56DE\u9080\u8BF7",
1091
+ transfer: "\u5DE5\u4F5C\u5DF2\u79FB\u4EA4",
1092
+ deletion_request: "\u5DF2\u7533\u8BF7\u5220\u9664",
1093
+ deletion_cancel: "\u5DF2\u53D6\u6D88\u5220\u9664",
1094
+ erase: "\u8D26\u6237\u5DF2\u6C38\u4E45\u5220\u9664"
1095
+ }
1096
+ },
1097
+ transferOwnership: {
1098
+ title: (name) => `\u79FB\u4EA4 ${name} \u7684\u5DE5\u4F5C`,
1099
+ body: "\u6B64\u8D26\u6237\u62E5\u6709\u7684\u5168\u90E8\u5185\u5BB9\u5C06\u4E00\u6B21\u6027\u8F6C\u79FB\u5230\u60A8\u9009\u62E9\u7684\u8D26\u6237\u3002",
1100
+ recipient: "\u79FB\u4EA4\u7ED9",
1101
+ choose: "\u9009\u62E9\u8D26\u6237\u2026",
1102
+ chooseFirst: "\u8BF7\u9009\u62E9\u63A5\u6536\u5DE5\u4F5C\u7684\u4EBA",
1103
+ confirm: "\u79FB\u4EA4",
1104
+ customer: "\u5BA2\u6237",
1105
+ deactivated: "\u5DF2\u505C\u7528",
1106
+ self: "\u540C\u4E00\u8D26\u6237",
1107
+ unavailable: (account, reason) => `${account}\uFF08${reason}\uFF09`,
1108
+ noCandidates: "\u6CA1\u6709\u5176\u4ED6\u8D26\u6237\u53EF\u4EE5\u63A5\u6536\u3002"
1109
+ },
1110
+ invitations: {
1111
+ email: "\u7535\u5B50\u90AE\u7BB1\u5730\u5740",
1112
+ invalidEmail: "\u8BF7\u8F93\u5165\u5B8C\u6574\u7684\u7535\u5B50\u90AE\u7BB1\u5730\u5740\u3002",
1113
+ role: "\u89D2\u8272",
1114
+ scope: "\u8303\u56F4",
1115
+ scopeNone: "\u65E0",
1116
+ language: "\u9080\u8BF7\u90AE\u4EF6\u8BED\u8A00",
1117
+ note: "\u5907\u6CE8",
1118
+ invite: "\u9080\u8BF7",
1119
+ listTitle: "\u9080\u8BF7",
1120
+ empty: "\u5C1A\u672A\u9080\u8BF7\u4EFB\u4F55\u4EBA\u3002",
1121
+ loading: "\u52A0\u8F7D\u4E2D\u2026",
1122
+ status: { open: "\u7B49\u5F85\u4E2D", accepted: "\u5DF2\u63A5\u53D7", expired: "\u5DF2\u8FC7\u671F", revoked: "\u5DF2\u64A4\u56DE" },
1123
+ sent: (date) => `\u53D1\u9001\u4E8E ${date}`,
1124
+ expires: (date) => `${date} \u5230\u671F`,
1125
+ invitedBy: (name) => `\u9080\u8BF7\u4EBA\uFF1A${name}`,
1126
+ resend: (email) => `\u5411 ${email} \u53D1\u9001\u65B0\u94FE\u63A5`,
1127
+ copyLink: "\u590D\u5236\u9080\u8BF7\u94FE\u63A5",
1128
+ revoke: (email) => `\u64A4\u56DE\u5BF9 ${email} \u7684\u9080\u8BF7`,
1129
+ consoleHint: "\u6B64\u670D\u52A1\u5668\u4E0D\u53D1\u9001\u90AE\u4EF6\u2014\u2014\u90AE\u4EF6\u4F1A\u5199\u5165\u670D\u52A1\u5668\u65E5\u5FD7\u3002\u8BF7\u5728\u8FD9\u91CC\u590D\u5236\u6BCF\u4E2A\u9080\u8BF7\u94FE\u63A5\u5E76\u81EA\u884C\u8F6C\u4EA4\uFF1A\u94FE\u63A5\u53EA\u663E\u793A\u4E00\u6B21\u3002",
1130
+ linkReady: (email) => `${email} \u7684\u9080\u8BF7\u94FE\u63A5\uFF0C\u4EC5\u663E\u793A\u8FD9\u4E00\u6B21\uFF1A`,
1131
+ notSent: (email) => `\u5DF2\u9080\u8BF7 ${email}\uFF0C\u4F46\u90AE\u4EF6\u672A\u80FD\u53D1\u9001\u3002\u8BF7\u91CD\u65B0\u53D1\u9001\u3002`,
1132
+ failed: "\u64CD\u4F5C\u672A\u6210\u529F\uFF0C\u8BF7\u91CD\u8BD5\u3002"
1133
+ },
940
1134
  characterCount: {
941
1135
  count: (used, max) => `\u5DF2\u8F93\u5165 ${n(used)}/${n(max)} \u4E2A\u5B57\u7B26`,
942
1136
  remaining: (left) => `\u8FD8\u53EF\u8F93\u5165 ${n(left)} \u4E2A\u5B57\u7B26`,