@eifi1/ui-kit 0.44.0 → 0.46.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 (285) hide show
  1. package/README.md +29 -14
  2. package/dist/admin/admin-action-log-labels.js +9 -0
  3. package/dist/admin/admin-action-log-labels.js.map +1 -1
  4. package/dist/admin/admin-action-log.d.ts +18 -1
  5. package/dist/admin/admin-action-log.js +25 -16
  6. package/dist/admin/admin-action-log.js.map +1 -1
  7. package/dist/admin/admin-area-labels.d.ts +15 -0
  8. package/dist/admin/admin-area-labels.js +6 -1
  9. package/dist/admin/admin-area-labels.js.map +1 -1
  10. package/dist/admin/admin-overview.d.ts +16 -1
  11. package/dist/admin/admin-overview.js +12 -1
  12. package/dist/admin/admin-overview.js.map +1 -1
  13. package/dist/admin/mail-test-card-labels.d.ts +3 -0
  14. package/dist/admin/mail-test-card-labels.js +17 -0
  15. package/dist/admin/mail-test-card-labels.js.map +1 -0
  16. package/dist/admin/mail-test-card.d.ts +75 -0
  17. package/dist/admin/mail-test-card.js +82 -0
  18. package/dist/admin/mail-test-card.js.map +1 -0
  19. package/dist/components/appearance-labels.d.ts +10 -0
  20. package/dist/components/appearance-labels.js +6 -1
  21. package/dist/components/appearance-labels.js.map +1 -1
  22. package/dist/components/data-table-column-settings.js +2 -2
  23. package/dist/components/data-table-column-settings.js.map +1 -1
  24. package/dist/components/data-table-head.js +2 -2
  25. package/dist/components/data-table-head.js.map +1 -1
  26. package/dist/components/data-table-mobile.js +17 -2
  27. package/dist/components/data-table-mobile.js.map +1 -1
  28. package/dist/components/data-table-row-actions.d.ts +18 -2
  29. package/dist/components/data-table-row-actions.js +86 -2
  30. package/dist/components/data-table-row-actions.js.map +1 -1
  31. package/dist/components/data-table-shared.d.ts +2 -0
  32. package/dist/components/data-table-shared.js +17 -2
  33. package/dist/components/data-table-shared.js.map +1 -1
  34. package/dist/components/data-table.d.ts +43 -2
  35. package/dist/components/data-table.js +10 -10
  36. package/dist/components/data-table.js.map +1 -1
  37. package/dist/components/date-format-setting.d.ts +29 -0
  38. package/dist/components/date-format-setting.js +36 -0
  39. package/dist/components/date-format-setting.js.map +1 -0
  40. package/dist/components/swipeable-row.d.ts +8 -0
  41. package/dist/components/swipeable-row.js.map +1 -1
  42. package/dist/components/tabs.d.ts +3 -2
  43. package/dist/components/tabs.js +1 -1
  44. package/dist/components/tabs.js.map +1 -1
  45. package/dist/components/translation-review-editor.js +1 -0
  46. package/dist/components/translation-review-editor.js.map +1 -1
  47. package/dist/components/translation-review-labels.d.ts +5 -0
  48. package/dist/components/translation-review-labels.js +2 -0
  49. package/dist/components/translation-review-labels.js.map +1 -1
  50. package/dist/components/translation-review.d.ts +18 -8
  51. package/dist/components/translation-review.js +64 -7
  52. package/dist/components/translation-review.js.map +1 -1
  53. package/dist/components/write-lock-labels.js +2 -1
  54. package/dist/components/write-lock-labels.js.map +1 -1
  55. package/dist/components/write-lock.d.ts +33 -3
  56. package/dist/components/write-lock.js +9 -0
  57. package/dist/components/write-lock.js.map +1 -1
  58. package/dist/data-table.d.ts +1 -1
  59. package/dist/data-table.js.map +1 -1
  60. package/dist/eslint/index.js +1 -1
  61. package/dist/feedback/feedback-row-detail.d.ts +4 -2
  62. package/dist/feedback/feedback-row-detail.js +17 -26
  63. package/dist/feedback/feedback-row-detail.js.map +1 -1
  64. package/dist/feedback/feedback-swipe.d.ts +18 -0
  65. package/dist/feedback/feedback-swipe.js +10 -1
  66. package/dist/feedback/feedback-swipe.js.map +1 -1
  67. package/dist/i18n/defaults.js +9 -1
  68. package/dist/i18n/defaults.js.map +1 -1
  69. package/dist/i18n/german.js +81 -5
  70. package/dist/i18n/german.js.map +1 -1
  71. package/dist/i18n/kit-labels.d.ts +25 -1
  72. package/dist/i18n/kit-labels.js +8 -2
  73. package/dist/i18n/kit-labels.js.map +1 -1
  74. package/dist/i18n/locales/en.js +97 -7
  75. package/dist/i18n/locales/en.js.map +3 -3
  76. package/dist/i18n/locales/es.js +81 -5
  77. package/dist/i18n/locales/es.js.map +1 -1
  78. package/dist/i18n/locales/fr.js +81 -5
  79. package/dist/i18n/locales/fr.js.map +1 -1
  80. package/dist/i18n/locales/hu.js +81 -5
  81. package/dist/i18n/locales/hu.js.map +1 -1
  82. package/dist/i18n/locales/it.js +81 -5
  83. package/dist/i18n/locales/it.js.map +1 -1
  84. package/dist/i18n/locales/zh.js +81 -5
  85. package/dist/i18n/locales/zh.js.map +1 -1
  86. package/dist/i18n/review.js +16 -2
  87. package/dist/i18n/review.js.map +1 -1
  88. package/dist/index.d.ts +17 -2
  89. package/dist/index.js +40 -0
  90. package/dist/index.js.map +1 -1
  91. package/dist/lib/date-format.d.ts +81 -0
  92. package/dist/lib/date-format.js +56 -0
  93. package/dist/lib/date-format.js.map +1 -0
  94. package/dist/lib/format.d.ts +5 -1
  95. package/dist/lib/format.js +11 -5
  96. package/dist/lib/format.js.map +1 -1
  97. package/dist/notifications/device-zone-report.d.ts +27 -0
  98. package/dist/notifications/device-zone-report.js +24 -0
  99. package/dist/notifications/device-zone-report.js.map +1 -0
  100. package/dist/notifications/feedback-notification-types-labels.d.ts +7 -1
  101. package/dist/notifications/feedback-notification-types-labels.js +4 -1
  102. package/dist/notifications/feedback-notification-types-labels.js.map +1 -1
  103. package/dist/notifications/feedback-notification-types.d.ts +11 -5
  104. package/dist/notifications/feedback-notification-types.js +2 -1
  105. package/dist/notifications/feedback-notification-types.js.map +1 -1
  106. package/dist/notifications/notification-bell.d.ts +33 -0
  107. package/dist/notifications/notification-bell.js +74 -0
  108. package/dist/notifications/notification-bell.js.map +1 -0
  109. package/dist/notifications/notification-inbox.d.ts +77 -0
  110. package/dist/notifications/notification-inbox.js +206 -0
  111. package/dist/notifications/notification-inbox.js.map +1 -0
  112. package/dist/notifications/notification-types-setting.d.ts +6 -4
  113. package/dist/notifications/notification-types-setting.js +103 -45
  114. package/dist/notifications/notification-types-setting.js.map +1 -1
  115. package/dist/notifications/notification-types.d.ts +19 -7
  116. package/dist/notifications/notifications-labels.d.ts +41 -7
  117. package/dist/notifications/notifications-labels.js +18 -1
  118. package/dist/notifications/notifications-labels.js.map +1 -1
  119. package/dist/notifications/push-devices-setting.d.ts +20 -3
  120. package/dist/notifications/push-devices-setting.js +93 -33
  121. package/dist/notifications/push-devices-setting.js.map +1 -1
  122. package/dist/notifications/push-worker.d.ts +108 -0
  123. package/dist/notifications/push-worker.js +62 -0
  124. package/dist/notifications/push-worker.js.map +1 -0
  125. package/dist/notifications/quiet-hours-setting.d.ts +29 -17
  126. package/dist/notifications/quiet-hours-setting.js +9 -41
  127. package/dist/notifications/quiet-hours-setting.js.map +1 -1
  128. package/dist/notifications/time-zone-select.d.ts +5 -2
  129. package/dist/notifications/time-zone-select.js.map +1 -1
  130. package/dist/notifications/use-push-device.d.ts +4 -17
  131. package/dist/notifications/use-push-device.js +7 -15
  132. package/dist/notifications/use-push-device.js.map +1 -1
  133. package/dist/offline/local-first.d.ts +33 -0
  134. package/dist/offline/local-first.js +39 -0
  135. package/dist/offline/local-first.js.map +1 -0
  136. package/dist/offline/pwa-update-prompt-labels.d.ts +2 -0
  137. package/dist/offline/pwa-update-prompt-labels.js +9 -0
  138. package/dist/offline/pwa-update-prompt-labels.js.map +1 -0
  139. package/dist/offline/pwa-update-prompt.d.ts +32 -0
  140. package/dist/offline/pwa-update-prompt.js +36 -0
  141. package/dist/offline/pwa-update-prompt.js.map +1 -0
  142. package/dist/offline/query-persistence.d.ts +125 -0
  143. package/dist/offline/query-persistence.js +183 -0
  144. package/dist/offline/query-persistence.js.map +1 -0
  145. package/dist/offline/service-worker-updates.d.ts +46 -0
  146. package/dist/offline/service-worker-updates.js +39 -0
  147. package/dist/offline/service-worker-updates.js.map +1 -0
  148. package/dist/offline/shared-computer-labels.d.ts +2 -0
  149. package/dist/offline/shared-computer-labels.js +9 -0
  150. package/dist/offline/shared-computer-labels.js.map +1 -0
  151. package/dist/offline/shared-computer.d.ts +44 -0
  152. package/dist/offline/shared-computer.js +51 -0
  153. package/dist/offline/shared-computer.js.map +1 -0
  154. package/dist/offline/sign-out-pending-dialog-labels.d.ts +2 -0
  155. package/dist/offline/sign-out-pending-dialog-labels.js +14 -0
  156. package/dist/offline/sign-out-pending-dialog-labels.js.map +1 -0
  157. package/dist/offline/sign-out-pending-dialog.d.ts +58 -0
  158. package/dist/offline/sign-out-pending-dialog.js +66 -0
  159. package/dist/offline/sign-out-pending-dialog.js.map +1 -0
  160. package/dist/offline.d.ts +11 -0
  161. package/dist/offline.js +33 -0
  162. package/dist/offline.js.map +1 -0
  163. package/dist/push-worker.d.ts +2 -0
  164. package/dist/push-worker.js +14 -0
  165. package/dist/push-worker.js.map +1 -0
  166. package/dist/shell/account-menu-text-size.d.ts +33 -0
  167. package/dist/shell/account-menu-text-size.js +51 -0
  168. package/dist/shell/account-menu-text-size.js.map +1 -0
  169. package/dist/shell/admin-menu.d.ts +24 -0
  170. package/dist/shell/admin-menu.js +12 -3
  171. package/dist/shell/admin-menu.js.map +1 -1
  172. package/dist/shell/top-bar-actions.d.ts +6 -2
  173. package/dist/shell/top-bar-actions.js +1 -0
  174. package/dist/shell/top-bar-actions.js.map +1 -1
  175. package/dist/shell.d.ts +4 -0
  176. package/dist/shell.js +4 -0
  177. package/dist/shell.js.map +1 -1
  178. package/dist/sync/db.d.ts +76 -0
  179. package/dist/sync/db.js +24 -0
  180. package/dist/sync/db.js.map +1 -0
  181. package/dist/sync/engine.d.ts +124 -0
  182. package/dist/sync/engine.js +474 -0
  183. package/dist/sync/engine.js.map +1 -0
  184. package/dist/sync/hooks.d.ts +30 -0
  185. package/dist/sync/hooks.js +67 -0
  186. package/dist/sync/hooks.js.map +1 -0
  187. package/dist/sync/testing.d.ts +28 -0
  188. package/dist/sync/testing.js +41 -0
  189. package/dist/sync/testing.js.map +1 -0
  190. package/dist/sync/wire.d.ts +50 -0
  191. package/dist/sync/wire.js +2 -0
  192. package/dist/sync/wire.js.map +1 -0
  193. package/dist/sync.d.ts +7 -0
  194. package/dist/sync.js +22 -0
  195. package/dist/sync.js.map +1 -0
  196. package/dist/tour/tour-catalogue.d.ts +7 -1
  197. package/dist/tour/tour-catalogue.js.map +1 -1
  198. package/dist/tour/tour-labels.js +1 -0
  199. package/dist/tour/tour-labels.js.map +1 -1
  200. package/dist/tour/tour.d.ts +30 -0
  201. package/dist/tour/tour.js +54 -8
  202. package/dist/tour/tour.js.map +1 -1
  203. package/dist/tour/use-tour-progress.d.ts +99 -1
  204. package/dist/tour/use-tour-progress.js +228 -12
  205. package/dist/tour/use-tour-progress.js.map +1 -1
  206. package/dist/tour.d.ts +2 -0
  207. package/dist/tour.js +2 -0
  208. package/dist/tour.js.map +1 -1
  209. package/package.json +43 -1
  210. package/src/admin/admin-action-log-labels.ts +9 -0
  211. package/src/admin/admin-action-log.tsx +41 -5
  212. package/src/admin/admin-area-labels.ts +20 -0
  213. package/src/admin/admin-overview.tsx +37 -2
  214. package/src/admin/mail-test-card-labels.ts +19 -0
  215. package/src/admin/mail-test-card.tsx +190 -0
  216. package/src/components/appearance-labels.ts +16 -0
  217. package/src/components/data-table-column-settings.tsx +2 -2
  218. package/src/components/data-table-head.tsx +2 -2
  219. package/src/components/data-table-mobile.tsx +26 -3
  220. package/src/components/data-table-row-actions.tsx +118 -2
  221. package/src/components/data-table-shared.tsx +39 -3
  222. package/src/components/data-table.tsx +52 -21
  223. package/src/components/date-format-setting.tsx +64 -0
  224. package/src/components/swipeable-row.tsx +8 -0
  225. package/src/components/tabs.tsx +4 -3
  226. package/src/components/translation-review-editor.tsx +2 -0
  227. package/src/components/translation-review-labels.ts +7 -0
  228. package/src/components/translation-review.tsx +102 -14
  229. package/src/components/write-lock-labels.ts +1 -0
  230. package/src/components/write-lock.tsx +36 -3
  231. package/src/data-table.ts +1 -0
  232. package/src/feedback/feedback-row-detail.tsx +18 -23
  233. package/src/feedback/feedback-swipe.tsx +28 -1
  234. package/src/i18n/defaults.ts +8 -0
  235. package/src/i18n/german.ts +90 -4
  236. package/src/i18n/kit-labels.tsx +31 -1
  237. package/src/i18n/locales/en.ts +13 -0
  238. package/src/i18n/locales/es.ts +90 -4
  239. package/src/i18n/locales/fr.ts +90 -4
  240. package/src/i18n/locales/hu.ts +86 -4
  241. package/src/i18n/locales/it.ts +90 -4
  242. package/src/i18n/locales/zh.ts +84 -2
  243. package/src/i18n/review.ts +15 -1
  244. package/src/index.ts +45 -0
  245. package/src/lib/date-format.ts +151 -0
  246. package/src/lib/format.ts +23 -6
  247. package/src/notifications/device-zone-report.ts +54 -0
  248. package/src/notifications/feedback-notification-types-labels.ts +10 -1
  249. package/src/notifications/feedback-notification-types.ts +12 -5
  250. package/src/notifications/notification-bell.tsx +116 -0
  251. package/src/notifications/notification-inbox.tsx +304 -0
  252. package/src/notifications/notification-types-setting.tsx +151 -55
  253. package/src/notifications/notification-types.ts +20 -8
  254. package/src/notifications/notifications-labels.ts +69 -11
  255. package/src/notifications/push-devices-setting.tsx +123 -34
  256. package/src/notifications/push-worker.ts +160 -0
  257. package/src/notifications/quiet-hours-setting.tsx +41 -58
  258. package/src/notifications/time-zone-select.tsx +5 -2
  259. package/src/notifications/use-push-device.ts +20 -33
  260. package/src/offline/local-first.ts +76 -0
  261. package/src/offline/pwa-update-prompt-labels.ts +9 -0
  262. package/src/offline/pwa-update-prompt.tsx +72 -0
  263. package/src/offline/query-persistence.ts +356 -0
  264. package/src/offline/service-worker-updates.ts +81 -0
  265. package/src/offline/shared-computer-labels.ts +8 -0
  266. package/src/offline/shared-computer.tsx +87 -0
  267. package/src/offline/sign-out-pending-dialog-labels.ts +21 -0
  268. package/src/offline/sign-out-pending-dialog.tsx +135 -0
  269. package/src/offline.ts +32 -0
  270. package/src/push-worker.ts +25 -0
  271. package/src/shell/account-menu-text-size.tsx +77 -0
  272. package/src/shell/admin-menu.tsx +40 -3
  273. package/src/shell/top-bar-actions.tsx +6 -1
  274. package/src/shell.ts +7 -0
  275. package/src/sync/db.ts +103 -0
  276. package/src/sync/engine.ts +699 -0
  277. package/src/sync/hooks.ts +93 -0
  278. package/src/sync/testing.ts +73 -0
  279. package/src/sync/wire.ts +61 -0
  280. package/src/sync.ts +29 -0
  281. package/src/tour/tour-catalogue.tsx +7 -1
  282. package/src/tour/tour-labels.ts +1 -0
  283. package/src/tour/tour.tsx +105 -9
  284. package/src/tour/use-tour-progress.ts +378 -12
  285. package/src/tour.ts +3 -0
@@ -114,7 +114,10 @@ function uiKitLabelsZh(numberLocale = "zh-CN") {
114
114
  answered: "\u60A8\u7684\u53CD\u9988\u6536\u5230\u7684\u56DE\u590D",
115
115
  answeredDescription: "\u5F53\u60A8\u63D0\u4EA4\u6216\u8BC4\u8BBA\u8FC7\u7684\u53CD\u9988\u6536\u5230\u56DE\u590D\u65F6\u3002",
116
116
  comment: "\u60A8\u5173\u6CE8\u7684\u53CD\u9988\u4E2D\u7684\u8BC4\u8BBA",
117
- commentDescription: "\u5F53\u6709\u4EBA\u8BC4\u8BBA\u60A8\u63D0\u4EA4\u6216\u8BC4\u8BBA\u8FC7\u7684\u53CD\u9988\u65F6\u3002"
117
+ commentDescription: "\u5F53\u6709\u4EBA\u8BC4\u8BBA\u60A8\u63D0\u4EA4\u6216\u8BC4\u8BBA\u8FC7\u7684\u53CD\u9988\u65F6\u3002",
118
+ received: "\u65B0\u53CD\u9988\u548C\u8FD4\u5DE5",
119
+ receivedDescription: "\u5F53\u6709\u4EBA\u63D0\u4EA4\u53CD\u9988\u6216\u9000\u56DE\u53CD\u9988\u65F6\u3002",
120
+ adminGroup: "\u7BA1\u7406\u5458"
118
121
  },
119
122
  feedbackContext: {
120
123
  user: "\u7528\u6237",
@@ -568,6 +571,8 @@ function uiKitLabelsZh(numberLocale = "zh-CN") {
568
571
  skip: "\u8DF3\u8FC7",
569
572
  done: "\u5B8C\u6210",
570
573
  awaitClickHint: "\u70B9\u51FB\u9AD8\u4EAE\u7684\u5143\u7D20\u4EE5\u7EE7\u7EED",
574
+ awaitInputHint: "\u5728\u9AD8\u4EAE\u7684\u5B57\u6BB5\u4E2D\u8F93\u5165\u4E00\u4E2A\u503C\u4EE5\u7EE7\u7EED",
575
+ // 0.46: TourStep.awaitInput (keksdose live #436).
571
576
  step: (current, total) => `${n(current)} / ${n(total)}`
572
577
  },
573
578
  // 0.43.0 — docs/tours-harmonization.md §3, §8: the tours page.
@@ -773,7 +778,8 @@ function uiKitLabelsZh(numberLocale = "zh-CN") {
773
778
  openInNewTab: "\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00"
774
779
  },
775
780
  writeLock: {
776
- reason: "\u4EC5\u53EF\u67E5\u770B\uFF0C\u65E0\u6CD5\u4FEE\u6539\u3002"
781
+ reason: "\u4EC5\u53EF\u67E5\u770B\uFF0C\u65E0\u6CD5\u4FEE\u6539\u3002",
782
+ offline: "\u9700\u8981\u7F51\u7EDC\u8FDE\u63A5\u3002"
777
783
  },
778
784
  accountState: {
779
785
  active: "\u5DF2\u542F\u7528",
@@ -1101,6 +1107,9 @@ ${o.postalCode} ${o.city}\uFF0C${o.country}
1101
1107
  typesTitle: "\u901A\u77E5\u6211\u4EE5\u4E0B\u5185\u5BB9",
1102
1108
  typesDescription: "\u9009\u62E9\u8981\u63A5\u6536\u54EA\u4E9B\u901A\u77E5\uFF0C\u4EE5\u53CA\u63A5\u6536\u65B9\u5F0F\u3002",
1103
1109
  byEmail: "\u901A\u8FC7\u7535\u5B50\u90AE\u4EF6",
1110
+ channelApp: "\u5E94\u7528\u5185",
1111
+ channelPush: "\u63A8\u9001",
1112
+ channelEmail: "\u7535\u5B50\u90AE\u4EF6",
1104
1113
  emailUnverified: "\u8BF7\u5148\u786E\u8BA4\u60A8\u7684\u90AE\u7BB1\u5730\u5740\uFF0C\u624D\u80FD\u6536\u5230\u8FD9\u4E9B\u90AE\u4EF6\u3002",
1105
1114
  digestCadence: "\u9891\u7387",
1106
1115
  digestWeekly: "\u6BCF\u5468",
@@ -1108,7 +1117,8 @@ ${o.postalCode} ${o.city}\uFF0C${o.country}
1108
1117
  typesLoading: "\u6B63\u5728\u52A0\u8F7D\u901A\u77E5\u8BBE\u7F6E\u2026",
1109
1118
  typesEmpty: "\u6B64\u8D26\u6237\u6CA1\u6709\u53EF\u7528\u7684\u901A\u77E5\u3002",
1110
1119
  quietTitle: "\u514D\u6253\u6270\u65F6\u6BB5",
1111
- quietDescription: (inbox) => inbox ? "\u6B64\u65F6\u6BB5\u5185\u4E0D\u53D1\u9001\u63A8\u9001\u901A\u77E5\u3002\u901A\u77E5\u4ECD\u4F1A\u8FDB\u5165\u60A8\u7684\u6536\u4EF6\u7BB1\u3002" : "\u6B64\u65F6\u6BB5\u5185\u4E0D\u53D1\u9001\u63A8\u9001\u901A\u77E5\u3002",
1120
+ quietDescription: (inbox, held) => held ? inbox ? "\u6B64\u65F6\u6BB5\u5185\u63A8\u9001\u901A\u77E5\u4F1A\u7B49\u5F85\uFF0C\u5E76\u5728\u65F6\u6BB5\u7ED3\u675F\u65F6\u9001\u8FBE\u3002\u901A\u77E5\u4F1A\u7ACB\u5373\u8FDB\u5165\u60A8\u7684\u6536\u4EF6\u7BB1\u3002" : "\u6B64\u65F6\u6BB5\u5185\u63A8\u9001\u901A\u77E5\u4F1A\u7B49\u5F85\uFF0C\u5E76\u5728\u65F6\u6BB5\u7ED3\u675F\u65F6\u9001\u8FBE\u3002" : inbox ? "\u6B64\u65F6\u6BB5\u5185\u4E0D\u53D1\u9001\u63A8\u9001\u901A\u77E5\u3002\u901A\u77E5\u4ECD\u4F1A\u8FDB\u5165\u60A8\u7684\u6536\u4EF6\u7BB1\u3002" : "\u6B64\u65F6\u6BB5\u5185\u4E0D\u53D1\u9001\u63A8\u9001\u901A\u77E5\u3002",
1121
+ quietZone: (zone) => `\u6309\u60A8\u7684\u65F6\u533A\uFF08${zone}\uFF09\uFF0C\u968F\u60A8\u6700\u8FD1\u4F7F\u7528\u7684\u8BBE\u5907\u800C\u5B9A\u3002`,
1112
1122
  quietFrom: "\u4ECE",
1113
1123
  quietUntil: "\u5230",
1114
1124
  quietIncomplete: "\u8BF7\u540C\u65F6\u8BBE\u7F6E\u5F00\u59CB\u548C\u7ED3\u675F\u65F6\u95F4\u3002\u4E24\u8005\u90FD\u8BBE\u7F6E\u540E\uFF0C\u514D\u6253\u6270\u65F6\u6BB5\u624D\u4F1A\u751F\u6548\u3002",
@@ -1163,6 +1173,19 @@ ${o.postalCode} ${o.city}\uFF0C${o.country}
1163
1173
  // Starts with `remove`, the button's visible text, for voice control.
1164
1174
  removeItem: (device) => `\u79FB\u9664\uFF1A${device}`,
1165
1175
  removePrompt: "\u505C\u6B62\u5411\u6B64\u8BBE\u5907\u53D1\u9001\u901A\u77E5\uFF1F",
1176
+ deviceTypes: "\u6B64\u8BBE\u5907\u4E0A\u7684\u7C7B\u578B",
1177
+ deviceTypesDescription: "\u5173\u95ED\u67D0\u4E2A\u7C7B\u578B\uFF0C\u5373\u53EF\u4EC5\u5728\u6B64\u8BBE\u5907\u4E0A\u5C06\u5176\u9759\u97F3\u3002",
1178
+ deviceTypesEmpty: "\u6CA1\u6709\u5F00\u542F\u63A8\u9001\u901A\u77E5\u7684\u7C7B\u578B\u3002",
1179
+ inboxTitle: "\u6536\u4EF6\u7BB1",
1180
+ inboxLoading: "\u6B63\u5728\u52A0\u8F7D\u901A\u77E5\u2026",
1181
+ inboxEmpty: "\u6CA1\u6709\u65B0\u901A\u77E5\u3002",
1182
+ markAllRead: "\u5168\u90E8\u6807\u4E3A\u5DF2\u8BFB",
1183
+ clearAll: "\u5168\u90E8\u6E05\u9664",
1184
+ clearPrompt: "\u5220\u9664\u6536\u4EF6\u7BB1\u4E2D\u7684\u6240\u6709\u901A\u77E5\uFF1F",
1185
+ showMore: "\u663E\u793A\u66F4\u591A",
1186
+ bellLabel: "\u901A\u77E5",
1187
+ bellUnread: (count) => `${n(count)} \u6761\u672A\u8BFB`,
1188
+ allNotifications: "\u6240\u6709\u901A\u77E5",
1166
1189
  unsubscribeTitle: "\u7535\u5B50\u90AE\u4EF6\u901A\u77E5",
1167
1190
  unsubscribeAbout: (type) => `\u60A8\u4F1A\u6536\u5230\u6709\u5173\u4EE5\u4E0B\u5185\u5BB9\u7684\u90AE\u4EF6\uFF1A${type}\u3002`,
1168
1191
  unsubscribeGeneric: "\u60A8\u4F1A\u6536\u5230\u901A\u77E5\u90AE\u4EF6\u3002",
@@ -1292,11 +1315,14 @@ ${o.postalCode} ${o.city}\uFF0C${o.country}
1292
1315
  },
1293
1316
  // 0.34 (§11.5): whole phrases per noun. `team` is Kurvenschmiede's "团队"; `company`
1294
1317
  // keeps `actions.membership_remove`'s string.
1318
+ renamedFromTo: (from, to) => `\u4ECE ${from} \u6539\u4E3A ${to}`,
1295
1319
  groupActions: {
1296
1320
  group: {
1297
1321
  group_create: "\u7FA4\u7EC4\u5DF2\u521B\u5EFA",
1298
1322
  group_rename: "\u7FA4\u7EC4\u5DF2\u91CD\u547D\u540D",
1299
1323
  group_delete: "\u7FA4\u7EC4\u5DF2\u5220\u9664",
1324
+ group_deactivate: "\u7FA4\u7EC4\u5DF2\u505C\u7528",
1325
+ group_reactivate: "\u7FA4\u7EC4\u5DF2\u91CD\u65B0\u6FC0\u6D3B",
1300
1326
  membership_add: "\u5DF2\u6DFB\u52A0\u5230\u7FA4\u7EC4",
1301
1327
  membership_role: "\u7FA4\u7EC4\u4E2D\u7684\u89D2\u8272\u5DF2\u66F4\u6539",
1302
1328
  membership_remove: "\u5DF2\u4ECE\u7FA4\u7EC4\u79FB\u9664",
@@ -1306,6 +1332,8 @@ ${o.postalCode} ${o.city}\uFF0C${o.country}
1306
1332
  group_create: "\u56E2\u961F\u5DF2\u521B\u5EFA",
1307
1333
  group_rename: "\u56E2\u961F\u5DF2\u91CD\u547D\u540D",
1308
1334
  group_delete: "\u56E2\u961F\u5DF2\u5220\u9664",
1335
+ group_deactivate: "\u56E2\u961F\u5DF2\u505C\u7528",
1336
+ group_reactivate: "\u56E2\u961F\u5DF2\u91CD\u65B0\u6FC0\u6D3B",
1309
1337
  membership_add: "\u5DF2\u6DFB\u52A0\u5230\u56E2\u961F",
1310
1338
  membership_role: "\u56E2\u961F\u4E2D\u7684\u89D2\u8272\u5DF2\u66F4\u6539",
1311
1339
  membership_remove: "\u5DF2\u4ECE\u56E2\u961F\u79FB\u9664",
@@ -1315,6 +1343,8 @@ ${o.postalCode} ${o.city}\uFF0C${o.country}
1315
1343
  group_create: "\u516C\u53F8\u5DF2\u521B\u5EFA",
1316
1344
  group_rename: "\u516C\u53F8\u5DF2\u91CD\u547D\u540D",
1317
1345
  group_delete: "\u516C\u53F8\u5DF2\u5220\u9664",
1346
+ group_deactivate: "\u516C\u53F8\u5DF2\u505C\u7528",
1347
+ group_reactivate: "\u516C\u53F8\u5DF2\u91CD\u65B0\u6FC0\u6D3B",
1318
1348
  membership_add: "\u5DF2\u6DFB\u52A0\u5230\u516C\u53F8",
1319
1349
  membership_role: "\u516C\u53F8\u4E2D\u7684\u89D2\u8272\u5DF2\u66F4\u6539",
1320
1350
  membership_remove: "\u5DF2\u4ECE\u516C\u53F8\u79FB\u9664",
@@ -1324,6 +1354,8 @@ ${o.postalCode} ${o.city}\uFF0C${o.country}
1324
1354
  group_create: "\u9884\u7B97\u5DF2\u521B\u5EFA",
1325
1355
  group_rename: "\u9884\u7B97\u5DF2\u91CD\u547D\u540D",
1326
1356
  group_delete: "\u9884\u7B97\u5DF2\u5220\u9664",
1357
+ group_deactivate: "\u9884\u7B97\u5DF2\u505C\u7528",
1358
+ group_reactivate: "\u9884\u7B97\u5DF2\u91CD\u65B0\u6FC0\u6D3B",
1327
1359
  membership_add: "\u5DF2\u6DFB\u52A0\u5230\u9884\u7B97",
1328
1360
  membership_role: "\u9884\u7B97\u4E2D\u7684\u89D2\u8272\u5DF2\u66F4\u6539",
1329
1361
  membership_remove: "\u5DF2\u4ECE\u9884\u7B97\u79FB\u9664",
@@ -1456,6 +1488,8 @@ ${o.postalCode} ${o.city}\uFF0C${o.country}
1456
1488
  approve: "\u901A\u8FC7",
1457
1489
  flag: "\u9700\u8981\u4FEE\u6539",
1458
1490
  suggest: "\u5EFA\u8BAE\u8BD1\u6587",
1491
+ flagRow: "\u6807\u8BB0\u4E3A\u9700\u4FEE\u6539\u2026",
1492
+ suggestRow: "\u6DFB\u52A0\u8BD1\u6587\u2026",
1459
1493
  reset: "\u6807\u8BB0\u4E3A\u672A\u5BA1\u6821",
1460
1494
  cancel: "\u53D6\u6D88",
1461
1495
  approveSelected: "\u901A\u8FC7\u6240\u9009\u9879",
@@ -1682,7 +1716,14 @@ ${o.postalCode} ${o.city}\uFF0C${o.country}
1682
1716
  contrast: "\u5BF9\u6BD4\u5EA6",
1683
1717
  contrastHelp: "\u589E\u5F3A\u5BF9\u6BD4\u5EA6\u4F1A\u52A0\u6DF1\u6D45\u8272\u6587\u5B57\u548C\u7EBF\u6761\uFF0C\u5E76\u52A0\u7C97\u7126\u70B9\u6846\u3002\u201C\u8DDF\u968F\u7CFB\u7EDF\u201D\u6CBF\u7528\u6B64\u8BBE\u5907\u7684\u8BBE\u7F6E\u3002",
1684
1718
  contrastModes: { system: "\u8DDF\u968F\u7CFB\u7EDF", standard: "\u6807\u51C6", more: "\u589E\u5F3A" },
1685
- saveFailed: "\u65E0\u6CD5\u4FDD\u5B58\u5230\u60A8\u7684\u8D26\u6237\u3002\u6B64\u8BBE\u5907\u4E0A\u4ECD\u7136\u751F\u6548\u3002"
1719
+ saveFailed: "\u65E0\u6CD5\u4FDD\u5B58\u5230\u60A8\u7684\u8D26\u6237\u3002\u6B64\u8BBE\u5907\u4E0A\u4ECD\u7136\u751F\u6548\u3002",
1720
+ // 0.46: DateFormatSetting (keksdose's words where it has them).
1721
+ dateFormat: "\u65E5\u671F\u683C\u5F0F",
1722
+ dateFormatHelp: "\u6574\u4E2A\u5E94\u7528\u4E2D\u65E5\u671F\u7684\u4E66\u5199\u65B9\u5F0F\u3002\u4E0E\u754C\u9762\u8BED\u8A00\u65E0\u5173\uFF0C\u56E0\u6B64\u60A8\u53EF\u4EE5\u7528\u82F1\u6587\u9605\u8BFB\u5E94\u7528\uFF0C\u540C\u65F6\u4ECD\u770B\u5230\u5FB7\u5F0F\u65E5\u671F\u3002",
1723
+ dateFormatAuto: "\u8DDF\u968F\u8BED\u8A00",
1724
+ // 0.46: AccountMenuTextSize (keksdose live #426).
1725
+ textSmaller: "\u7F29\u5C0F\u6587\u5B57",
1726
+ textLarger: "\u653E\u5927\u6587\u5B57"
1686
1727
  },
1687
1728
  // 0.36.0 — docs/settings-harmonization.md §11.3: resetting this device's settings, the
1688
1729
  // last card of "外观".
@@ -1705,9 +1746,21 @@ ${o.postalCode} ${o.city}\uFF0C${o.country}
1705
1746
  moreTitle: "\u66F4\u591A\u9875\u9762"
1706
1747
  },
1707
1748
  // 0.42.0 — docs/admin-harmonization.md §3.1: the admin area's shared words.
1749
+ mailTestCard: {
1750
+ title: "\u6D4B\u8BD5\u90AE\u4EF6",
1751
+ description: "\u901A\u8FC7\u672C\u5B89\u88C5\u53D1\u9001\u6240\u6709\u90AE\u4EF6\u6240\u7528\u7684\u4F20\u8F93\u65B9\u5F0F\uFF0C\u5411\u60A8\u81EA\u5DF1\u7684\u5730\u5740\u53D1\u9001\u4E00\u5C01\u90AE\u4EF6\u3002",
1752
+ transport: (backend) => `\u4F20\u8F93\u65B9\u5F0F\uFF1A${backend}`,
1753
+ action: "\u7ED9\u6211\u53D1\u9001\u6D4B\u8BD5\u90AE\u4EF6",
1754
+ sent: (address) => `\u5DF2\u53D1\u9001\u81F3 ${address}\u3002\u8BF7\u67E5\u770B\u6536\u4EF6\u7BB1\u3002`,
1755
+ console: "\u63A7\u5236\u53F0\u4F20\u8F93\u53EA\u8BB0\u5F55\u90AE\u4EF6\uFF0C\u672A\u53D1\u9001\u4EFB\u4F55\u90AE\u4EF6\u3002",
1756
+ failed: "\u65E0\u6CD5\u53D1\u9001\u3002\u670D\u52A1\u5668\u65E5\u5FD7\u4E2D\u6709\u670D\u52A1\u5546\u7684\u56DE\u590D\u3002",
1757
+ rateLimited,
1758
+ keywords: "\u6D4B\u8BD5\u90AE\u4EF6 \u90AE\u4EF6 \u7535\u5B50\u90AE\u4EF6 \u4F20\u8F93 smtp resend \u63A7\u5236\u53F0 \u53D1\u9001 \u6295\u9012"
1759
+ },
1708
1760
  adminArea: {
1709
1761
  title: "\u7BA1\u7406",
1710
1762
  waiting: (count) => `${n(count)} \u9879\u5F85\u5904\u7406`,
1763
+ waitingLabel: (label, count) => `${label}\uFF0C${n(count)} \u9879\u5F85\u5904\u7406`,
1711
1764
  forbiddenTitle: "\u4EC5\u9650\u7BA1\u7406\u5458",
1712
1765
  forbiddenBody: (appName) => `\u7BA1\u7406\u5458\u5728\u8FD9\u91CC\u7BA1\u7406 ${appName}\u3002\u60A8\u7684\u8D26\u6237\u65E0\u6CD5\u6253\u5F00\u6B64\u9875\u9762\u3002`,
1713
1766
  forbiddenHome: "\u524D\u5F80\u9996\u9875",
@@ -1724,7 +1777,11 @@ ${o.postalCode} ${o.city}\uFF0C${o.country}
1724
1777
  deletionRequests: "\u5220\u9664\u8BF7\u6C42",
1725
1778
  invitationsPending: "\u5F85\u63A5\u53D7\u7684\u9080\u8BF7",
1726
1779
  users: "\u7528\u6237",
1727
- usersNew: (count) => `\u8FD1 7 \u5929\u65B0\u589E ${n(count)} \u4EBA`
1780
+ usersNew: (count) => `\u8FD1 7 \u5929\u65B0\u589E ${n(count)} \u4EBA`,
1781
+ awaitingVerdict: "\u5F85\u786E\u8BA4",
1782
+ awaitingVerdictHint: "\u5DF2\u7B54\u590D\uFF0C\u7B49\u5F85\u60A8\u6216\u62A5\u544A\u4EBA\u786E\u8BA4\u5DF2\u89E3\u51B3",
1783
+ releasedForWork: "\u5F85\u5904\u7406",
1784
+ releasedForWorkHint: "\u5DF2\u5C31\u7EEA\u3001\u5DF2\u8981\u6C42\u8FD4\u5DE5\u6216\u8FDB\u884C\u4E2D"
1728
1785
  },
1729
1786
  overviewError: "\u65E0\u6CD5\u52A0\u8F7D\u6982\u89C8\u3002",
1730
1787
  retry: "\u91CD\u8BD5",
@@ -1772,6 +1829,25 @@ ${o.postalCode} ${o.city}\uFF0C${o.country}
1772
1829
  backTo: (role) => `\u8FD4\u56DE ${role}`,
1773
1830
  billingOff: "\u672C\u5730\u5DF2\u5173\u95ED\u8BA1\u8D39\uFF1A\u5207\u6362\u5957\u9910\u4E0D\u4F1A\u6539\u53D8\u4EFB\u4F55\u5185\u5BB9"
1774
1831
  }
1832
+ },
1833
+ // 0.45.0 — docs/local-first-harmonization.md §1.6 (`@eifi1/ui-kit/offline`): keksdose's
1834
+ // reviewed words (nav.logout_queued_*, pwa.*) where it has the language.
1835
+ signOutPending: {
1836
+ title: "\u90E8\u5206\u4FEE\u6539\u5C1A\u672A\u4FDD\u5B58\u5230\u670D\u52A1\u5668",
1837
+ lost: (count) => `${n(count)} \u9879\u4FEE\u6539\u4ECD\u5728\u7B49\u5F85\u540C\u6B65\u3002\u9000\u51FA\u767B\u5F55\u4F1A\u6E05\u9664\u6B64\u8BBE\u5907\u4E0A\u7684\u526F\u672C\uFF0C\u800C\u8FD9\u662F\u552F\u4E00\u7684\u526F\u672C\u3002`,
1838
+ kept: (count) => `${n(count)} \u9879\u4FEE\u6539\u4ECD\u5728\u7B49\u5F85\u540C\u6B65\u3002\u5B83\u4EEC\u4F1A\u4E3A\u60A8\u4FDD\u7559\u5728\u6B64\u8BBE\u5907\u4E0A\uFF0C\u5E76\u5728\u60A8\u4E0B\u6B21\u5728\u6B64\u767B\u5F55\u65F6\u540C\u6B65\u3002`,
1839
+ syncNow: "\u7ACB\u5373\u540C\u6B65",
1840
+ signOutAnyway: "\u4ECD\u7136\u9000\u51FA\u767B\u5F55",
1841
+ discardWaiting: "\u653E\u5F03\u7B49\u5F85\u4E2D\u7684\u4FEE\u6539",
1842
+ cancel: "\u53D6\u6D88"
1843
+ },
1844
+ pwaUpdate: {
1845
+ updateAvailable: "\u6709\u65B0\u7248\u672C\u53EF\u7528\u3002",
1846
+ reload: "\u91CD\u65B0\u52A0\u8F7D"
1847
+ },
1848
+ sharedComputer: {
1849
+ label: "\u8FD9\u662F\u4E00\u53F0\u5171\u7528\u7535\u8111",
1850
+ hint: "\u6B64\u8BBE\u5907\u4E0A\u4E0D\u4F1A\u4FDD\u7559\u60A8\u7684\u6570\u636E\u526F\u672C\u3002\u9875\u9762\u5C06\u53EA\u80FD\u5728\u8054\u7F51\u65F6\u6253\u5F00\u3002"
1775
1851
  }
1776
1852
  };
1777
1853
  }