@eifi1/ui-kit 0.46.1 → 0.48.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 (216) hide show
  1. package/README.md +8 -6
  2. package/dist/admin/admin-sections.d.ts +8 -0
  3. package/dist/admin/admin-sections.js +2 -1
  4. package/dist/admin/admin-sections.js.map +1 -1
  5. package/dist/auth/verify-email.d.ts +9 -1
  6. package/dist/auth/verify-email.js +22 -13
  7. package/dist/auth/verify-email.js.map +1 -1
  8. package/dist/components/alert-banner.d.ts +29 -1
  9. package/dist/components/alert-banner.js +84 -7
  10. package/dist/components/alert-banner.js.map +1 -1
  11. package/dist/components/button-look.d.ts +4 -0
  12. package/dist/components/button-look.js +2 -0
  13. package/dist/components/button-look.js.map +1 -1
  14. package/dist/components/combobox-core.js +5 -1
  15. package/dist/components/combobox-core.js.map +1 -1
  16. package/dist/components/data-table-column-settings.d.ts +6 -1
  17. package/dist/components/data-table-column-settings.js +12 -2
  18. package/dist/components/data-table-column-settings.js.map +1 -1
  19. package/dist/components/data-table-fit.d.ts +44 -0
  20. package/dist/components/data-table-fit.js +103 -0
  21. package/dist/components/data-table-fit.js.map +1 -0
  22. package/dist/components/data-table-groups.d.ts +95 -0
  23. package/dist/components/data-table-groups.js +165 -0
  24. package/dist/components/data-table-groups.js.map +1 -0
  25. package/dist/components/data-table-head.js +3 -1
  26. package/dist/components/data-table-head.js.map +1 -1
  27. package/dist/components/data-table-labels.d.ts +7 -0
  28. package/dist/components/data-table-labels.js +3 -0
  29. package/dist/components/data-table-labels.js.map +1 -1
  30. package/dist/components/data-table-leading-row.d.ts +17 -0
  31. package/dist/components/data-table-leading-row.js +41 -0
  32. package/dist/components/data-table-leading-row.js.map +1 -0
  33. package/dist/components/data-table-resize.js +1 -1
  34. package/dist/components/data-table-resize.js.map +1 -1
  35. package/dist/components/data-table.d.ts +78 -2
  36. package/dist/components/data-table.js +355 -247
  37. package/dist/components/data-table.js.map +1 -1
  38. package/dist/components/disclosure.d.ts +3 -1
  39. package/dist/components/disclosure.js +10 -4
  40. package/dist/components/disclosure.js.map +1 -1
  41. package/dist/components/dropdown.js +8 -1
  42. package/dist/components/dropdown.js.map +1 -1
  43. package/dist/components/floating-panel.d.ts +14 -1
  44. package/dist/components/floating-panel.js +7 -2
  45. package/dist/components/floating-panel.js.map +1 -1
  46. package/dist/components/hover-menu.js +5 -1
  47. package/dist/components/hover-menu.js.map +1 -1
  48. package/dist/components/icon-button.js +2 -1
  49. package/dist/components/icon-button.js.map +1 -1
  50. package/dist/components/popover.js +5 -1
  51. package/dist/components/popover.js.map +1 -1
  52. package/dist/components/row-actions.d.ts +25 -0
  53. package/dist/components/row-actions.js +13 -3
  54. package/dist/components/row-actions.js.map +1 -1
  55. package/dist/components/table-skeleton.d.ts +35 -0
  56. package/dist/components/table-skeleton.js +75 -0
  57. package/dist/components/table-skeleton.js.map +1 -0
  58. package/dist/components/tabs.d.ts +22 -16
  59. package/dist/components/tabs.js +47 -31
  60. package/dist/components/tabs.js.map +1 -1
  61. package/dist/components/ui-labels.js +1 -1
  62. package/dist/components/ui-labels.js.map +1 -1
  63. package/dist/components/use-table-state.d.ts +8 -7
  64. package/dist/components/use-table-state.js +37 -3
  65. package/dist/components/use-table-state.js.map +1 -1
  66. package/dist/data-table.d.ts +1 -0
  67. package/dist/data-table.js.map +1 -1
  68. package/dist/eslint/index.js +1 -1
  69. package/dist/feedback/feedback-attachment-download.d.ts +19 -0
  70. package/dist/feedback/feedback-attachment-download.js +59 -0
  71. package/dist/feedback/feedback-attachment-download.js.map +1 -0
  72. package/dist/feedback/feedback-comment-thread.d.ts +17 -6
  73. package/dist/feedback/feedback-comment-thread.js +21 -2
  74. package/dist/feedback/feedback-comment-thread.js.map +1 -1
  75. package/dist/feedback/feedback-entry-file.d.ts +61 -0
  76. package/dist/feedback/feedback-entry-file.js +76 -0
  77. package/dist/feedback/feedback-entry-file.js.map +1 -0
  78. package/dist/feedback/feedback-public-list.d.ts +18 -5
  79. package/dist/feedback/feedback-public-list.js +8 -0
  80. package/dist/feedback/feedback-public-list.js.map +1 -1
  81. package/dist/feedback/feedback-public-types.d.ts +7 -2
  82. package/dist/feedback/feedback-replies.d.ts +26 -9
  83. package/dist/feedback/feedback-replies.js +20 -10
  84. package/dist/feedback/feedback-replies.js.map +1 -1
  85. package/dist/feedback/feedback-row-detail-labels.js +0 -1
  86. package/dist/feedback/feedback-row-detail-labels.js.map +1 -1
  87. package/dist/feedback/feedback-row-detail.d.ts +23 -10
  88. package/dist/feedback/feedback-row-detail.js +10 -54
  89. package/dist/feedback/feedback-row-detail.js.map +1 -1
  90. package/dist/feedback/feedback-table.d.ts +5 -0
  91. package/dist/feedback/feedback-table.js +30 -7
  92. package/dist/feedback/feedback-table.js.map +1 -1
  93. package/dist/feedback.d.ts +1 -0
  94. package/dist/feedback.js +1 -0
  95. package/dist/feedback.js.map +1 -1
  96. package/dist/hooks/use-dismiss.d.ts +30 -1
  97. package/dist/hooks/use-dismiss.js +30 -2
  98. package/dist/hooks/use-dismiss.js.map +1 -1
  99. package/dist/i18n/german.js +7 -7
  100. package/dist/i18n/german.js.map +1 -1
  101. package/dist/i18n/kit-labels.d.ts +4 -0
  102. package/dist/i18n/kit-labels.js.map +1 -1
  103. package/dist/i18n/locales/en.js +7 -7
  104. package/dist/i18n/locales/en.js.map +2 -2
  105. package/dist/i18n/locales/es.js +7 -7
  106. package/dist/i18n/locales/es.js.map +1 -1
  107. package/dist/i18n/locales/fr.js +7 -7
  108. package/dist/i18n/locales/fr.js.map +1 -1
  109. package/dist/i18n/locales/hu.js +7 -7
  110. package/dist/i18n/locales/hu.js.map +1 -1
  111. package/dist/i18n/locales/it.js +7 -7
  112. package/dist/i18n/locales/it.js.map +1 -1
  113. package/dist/i18n/locales/zh.js +7 -7
  114. package/dist/i18n/locales/zh.js.map +1 -1
  115. package/dist/i18n/review.js +0 -1
  116. package/dist/i18n/review.js.map +1 -1
  117. package/dist/i18n/shared-labels.js +3 -1
  118. package/dist/i18n/shared-labels.js.map +1 -1
  119. package/dist/index.d.ts +4 -4
  120. package/dist/index.js +13 -4
  121. package/dist/index.js.map +1 -1
  122. package/dist/lib/float-clearance.d.ts +8 -0
  123. package/dist/lib/float-clearance.js +29 -0
  124. package/dist/lib/float-clearance.js.map +1 -0
  125. package/dist/notifications/device-zone-report.d.ts +1 -1
  126. package/dist/notifications/device-zone-report.js.map +1 -1
  127. package/dist/notifications/notification-types.d.ts +0 -3
  128. package/dist/notifications/notifications-labels.d.ts +2 -15
  129. package/dist/notifications/notifications-labels.js +0 -4
  130. package/dist/notifications/notifications-labels.js.map +1 -1
  131. package/dist/notifications/quiet-hours-setting.d.ts +3 -8
  132. package/dist/notifications/quiet-hours-setting.js +8 -3
  133. package/dist/notifications/quiet-hours-setting.js.map +1 -1
  134. package/dist/settings/settings-catalogue.d.ts +10 -0
  135. package/dist/settings/settings-catalogue.js.map +1 -1
  136. package/dist/settings/settings-layout.js +10 -3
  137. package/dist/settings/settings-layout.js.map +1 -1
  138. package/dist/shell/app-shell.d.ts +5 -0
  139. package/dist/shell/app-shell.js +5 -3
  140. package/dist/shell/app-shell.js.map +1 -1
  141. package/dist/shell/option-switcher-menu.d.ts +2 -0
  142. package/dist/shell/option-switcher-menu.js +6 -2
  143. package/dist/shell/option-switcher-menu.js.map +1 -1
  144. package/dist/shell/topbar-action-menu.js +2 -1
  145. package/dist/shell/topbar-action-menu.js.map +1 -1
  146. package/dist/shell/topbar-controls.js +5 -3
  147. package/dist/shell/topbar-controls.js.map +1 -1
  148. package/dist/theme/theme-store.d.ts +4 -4
  149. package/dist/theme/theme-store.js +1 -0
  150. package/dist/theme/theme-store.js.map +1 -1
  151. package/dist/tour/tour.js +1 -0
  152. package/dist/tour/tour.js.map +1 -1
  153. package/package.json +2 -2
  154. package/src/admin/admin-sections.tsx +8 -0
  155. package/src/auth/verify-email.tsx +34 -9
  156. package/src/components/alert-banner.tsx +131 -7
  157. package/src/components/button-look.ts +6 -0
  158. package/src/components/combobox-core.tsx +7 -1
  159. package/src/components/data-table-column-settings.tsx +23 -2
  160. package/src/components/data-table-fit.ts +187 -0
  161. package/src/components/data-table-groups.tsx +275 -0
  162. package/src/components/data-table-head.tsx +4 -1
  163. package/src/components/data-table-labels.ts +13 -0
  164. package/src/components/data-table-leading-row.tsx +55 -0
  165. package/src/components/data-table-resize.ts +2 -1
  166. package/src/components/data-table.tsx +274 -45
  167. package/src/components/disclosure.tsx +22 -5
  168. package/src/components/dropdown.tsx +11 -1
  169. package/src/components/floating-panel.tsx +24 -1
  170. package/src/components/hover-menu.tsx +6 -1
  171. package/src/components/icon-button.tsx +3 -3
  172. package/src/components/popover.tsx +7 -1
  173. package/src/components/row-actions.tsx +42 -3
  174. package/src/components/table-skeleton.tsx +133 -0
  175. package/src/components/tabs.tsx +102 -50
  176. package/src/components/ui-labels.ts +1 -1
  177. package/src/components/use-table-state.ts +54 -3
  178. package/src/data-table.ts +2 -0
  179. package/src/feedback/feedback-attachment-download.tsx +77 -0
  180. package/src/feedback/feedback-comment-thread.tsx +42 -7
  181. package/src/feedback/feedback-entry-file.tsx +150 -0
  182. package/src/feedback/feedback-public-list.tsx +25 -4
  183. package/src/feedback/feedback-public-types.ts +7 -2
  184. package/src/feedback/feedback-replies.tsx +46 -19
  185. package/src/feedback/feedback-row-detail-labels.ts +0 -1
  186. package/src/feedback/feedback-row-detail.tsx +35 -86
  187. package/src/feedback/feedback-table.tsx +33 -1
  188. package/src/feedback.ts +1 -0
  189. package/src/hooks/use-dismiss.ts +65 -3
  190. package/src/i18n/german.ts +6 -6
  191. package/src/i18n/kit-labels.tsx +4 -0
  192. package/src/i18n/locales/es.ts +6 -6
  193. package/src/i18n/locales/fr.ts +6 -6
  194. package/src/i18n/locales/hu.ts +6 -6
  195. package/src/i18n/locales/it.ts +6 -6
  196. package/src/i18n/locales/zh.ts +6 -6
  197. package/src/i18n/review.ts +0 -1
  198. package/src/i18n/shared-labels.ts +2 -0
  199. package/src/index.ts +13 -3
  200. package/src/lib/float-clearance.ts +54 -0
  201. package/src/notifications/device-zone-report.ts +1 -1
  202. package/src/notifications/notification-types.ts +0 -3
  203. package/src/notifications/notifications-labels.ts +2 -19
  204. package/src/notifications/quiet-hours-setting.tsx +16 -11
  205. package/src/settings/settings-catalogue.ts +10 -0
  206. package/src/settings/settings-layout.tsx +18 -4
  207. package/src/shell/app-shell.tsx +17 -3
  208. package/src/shell/option-switcher-menu.tsx +16 -4
  209. package/src/shell/topbar-action-menu.tsx +22 -10
  210. package/src/shell/topbar-controls.tsx +18 -12
  211. package/src/theme/theme-store.ts +13 -5
  212. package/src/tour/tour.tsx +5 -0
  213. package/dist/notifications/time-zone-select.d.ts +0 -54
  214. package/dist/notifications/time-zone-select.js +0 -71
  215. package/dist/notifications/time-zone-select.js.map +0 -1
  216. package/src/notifications/time-zone-select.tsx +0 -125
@@ -261,7 +261,6 @@ const KIT_LABEL_SAMPLES = {
261
261
  "notifications.quietDescription": [[false], [true], [false, true], [true, true]],
262
262
  "notifications.quietZone": [["{{zone}}"]],
263
263
  "notifications.bellUnread": one,
264
- "notifications.deviceZone": [["{{zone}}"]],
265
264
  "notifications.iosInstall": [["{{app}}"]],
266
265
  "notifications.testSent": one,
267
266
  "notifications.explainerBody": [["{{app}}"]],
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i18n/review.ts"],"sourcesContent":["import { legalOperatorText } from \"../components/legal\";\nimport type { LegalOperator, LegalOperatorText } from \"../components/legal\";\nimport type { UiKitLabels } from \"./kit-labels\";\n\n/**\n * The kit's words as a flat `key → text` list, for an app's translation review.\n *\n * keksdose reviews its own locale bundles on its /translations page — one verdict per\n * locale and key, stored with the text the reviewer saw, so a later change re-opens it.\n * The kit's words appear on the same screens but live in TypeScript, not in the app's\n * bundles, and 143 of them are functions (`(count) => \"3 results\"`; 0.28.0, every one\n * listed in {@link KIT_LABEL_SAMPLES}), which a bundle flattener skips. This turns a\n * label tree into rows that page can join on.\n *\n * - A string label is one row under its dot path: `common.close`. An array of words\n * (weekday names) is one row per entry: `miniCalendar.weekdays.0`.\n * - A function label is called with fixed samples. Text arguments are i18next-style\n * placeholders (`{{name}}`), so a translation that drops one is caught by the same\n * placeholder check the app runs on its own strings. Counts are real numbers, twice\n * where the wording may depend on them — 1 and 3 — so a reviewer sees singular and\n * plural. The key names the sample: `combobox.resultCount(1)`,\n * `shareCard.removeConfirm(name)`, `serverWake.waking()`.\n * - The legal sections that name the operator (0.28) take one object; its sample is a\n * placeholder per field and the key calls it `operator`:\n * `legal.sections.privacy.controller.body(operator)`. Pass the app's operator in\n * `options` and those rows read the real sentence — same keys — so the lawyer\n * reviewing the `legal` area reads what the page says:\n *\n * kitLabelStrings(UI_KIT_LABELS_DE_CH, { operator: OPERATOR, locale: \"de-CH\" })\n *\n * Keys depend only on the samples, never on the locale, so the rows of `de-CH` and of the\n * English reference line up key by key. Pass exactly the tree the app hands\n * `UiKitProvider` — its overrides included — and review what users see:\n *\n * kitLabelStrings(UI_KIT_LABELS_DE_CH) // the rows for de-CH\n * kitLabelStrings(DEFAULT_UI_KIT_LABELS) // the English reference\n *\n * A label that throws on its sample becomes a row starting with \"⚠\", so one broken\n * override shows up on the page instead of taking the page down.\n */\nexport function kitLabelStrings(labels: UiKitLabels, options: KitLabelStringsOptions = {}): Record<string, string> {\n const out: Record<string, string> = {};\n const operator = options.operator && legalOperatorText(options.operator, options.locale);\n const walk = (node: unknown, path: string) => {\n if (typeof node === \"string\") {\n out[path] = node;\n } else if (typeof node === \"function\") {\n for (const args of KIT_LABEL_SAMPLES[path] ?? [[]]) {\n // The key is the SAMPLE's (`…body(operator)`), whatever the label is called with,\n // so rows with and without the app's operator join on the same keys.\n const called = operator ? args.map((arg) => (arg === LEGAL_OPERATOR_SAMPLE ? operator : arg)) : args;\n out[`${path}(${args.map(sampleName).filter((a) => a !== \"\").join(\", \")})`] = render(\n node as (...args: unknown[]) => unknown,\n called,\n );\n }\n } else if (node !== null && typeof node === \"object\") {\n for (const [key, value] of Object.entries(node)) walk(value, path ? `${path}.${key}` : key);\n }\n };\n walk(labels, \"\");\n return out;\n}\n\nexport interface KitLabelStringsOptions {\n /**\n * The app's operator (0.28): the legal sections that name it — the imprint's operator\n * and contact, the controller, the privacy contact, the governing law — are rendered\n * with the real values instead of `{{name}}`-style placeholders, so a reviewer (the\n * lawyer, under the `legal` area) reads the sentence the page shows. The keys do not\n * change: `legal.sections.impressum.operator.body(operator)` either way.\n */\n operator?: LegalOperator;\n /** The language the operator's country is named in — the locale these rows are\n * for (\"de-CH\" → \"Schweiz\"). Default English. */\n locale?: string;\n}\n\nfunction render(label: (...args: unknown[]) => unknown, args: readonly unknown[]): string {\n try {\n return String(label(...args));\n } catch (error) {\n return `⚠ ${error instanceof Error ? error.message : String(error)}`;\n }\n}\n\n/** How a sample argument is written in the key: a placeholder by its name, a number as\n * itself, an empty string as `\"\"`, a missing optional argument not at all. */\nfunction sampleName(arg: unknown): string {\n if (arg === undefined) return \"\";\n if (arg === LEGAL_OPERATOR_SAMPLE) return \"operator\";\n if (typeof arg === \"string\") return /^\\{\\{(\\w+)\\}\\}$/.exec(arg)?.[1] ?? JSON.stringify(arg);\n return String(arg);\n}\n\nconst one = [[1], [3]] as const;\n\n/**\n * The legal sections' operator (0.28) as placeholders, one per field — so a translation\n * that drops the city or the email is caught by the same check as a dropped `{{name}}`\n * anywhere else. Named `operator` in the key; {@link kitLabelStrings}' `operator` option\n * swaps the app's real values in for it.\n */\nconst LEGAL_OPERATOR_SAMPLE: LegalOperatorText = Object.freeze({\n name: \"{{name}}\",\n postalCode: \"{{postalCode}}\",\n city: \"{{city}}\",\n region: \"{{region}}\",\n country: \"{{country}}\",\n email: \"{{email}}\",\n bindingLanguage: \"{{bindingLanguage}}\",\n});\nconst operatorSample = [[LEGAL_OPERATOR_SAMPLE]] as const;\n\n/**\n * The sample arguments of every function label in {@link UiKitLabels}, by dot path.\n * `src/i18n/__tests__/review.test.ts` fails when a function label has no entry here, so\n * a new one cannot ship un-reviewable.\n */\nexport const KIT_LABEL_SAMPLES: Readonly<Record<string, readonly (readonly unknown[])[]>> = {\n \"common.fieldValue\": [[\"{{field}}\", \"{{value}}\"]],\n \"common.aboutField\": [[\"{{field}}\"]],\n \"dataTable.filterResults\": [\n [1, 1],\n [3, 12],\n ],\n \"dataTable.sortedAscending\": [[\"{{column}}\"]],\n \"dataTable.sortedDescending\": [[\"{{column}}\"]],\n \"dataTable.sortCleared\": [[\"{{column}}\"]],\n \"dataTable.pageChanged\": [[2, 5]],\n \"dataTable.pageRange\": [[1, 25, 1240]],\n \"dataTable.rowCount\": [[1], [1240]],\n \"dataTable.columnsCount\": [[3, 8]],\n \"dataTable.filterColumn\": [\n [\"{{column}}\", false],\n [\"{{column}}\", true],\n ],\n \"miniCalendar.day\": [[\"{{date}}\"]],\n \"miniCalendar.startSelected\": [[\"{{date}}\"]],\n \"miniCalendar.rangeSelected\": [[\"{{from}}\", \"{{to}}\"]],\n \"calendarHeatmap.day\": [[\"{{date}}\", \"{{value}}\"]],\n \"calendarHeatmap.truncated\": one,\n \"monthPicker.month\": [[\"{{monthYear}}\"]],\n \"combobox.create\": [[\"{{query}}\"]],\n \"combobox.selectedCount\": one,\n \"combobox.resultCount\": one,\n \"combobox.minChars\": one,\n \"multiSelect.selectedCount\": one,\n \"chipInput.added\": [[\"{{value}}\"]],\n \"chipInput.removed\": [[\"{{value}}\"]],\n \"chipInput.atLimit\": one,\n \"chipInput.duplicate\": [[\"{{value}}\"]],\n \"tabs.remove\": [[\"{{tab}}\"]],\n \"appShell.toggleGroup\": [[\"{{group}}\"]],\n \"topBar.role\": [[\"{{role}}\"]],\n \"file.size\": [[2_500_000]],\n \"wizard.step\": [[2, 4]],\n \"tour.step\": [[2, 4]],\n \"globalSearch.shortcut\": [[\"{{keys}}\"]],\n \"pieChart.slice\": [[\"{{label}}\", \"{{value}}\", \"{{percent}}\"]],\n \"sparkline.rising\": [[\"{{first}}\", \"{{last}}\"]],\n \"sparkline.falling\": [[\"{{first}}\", \"{{last}}\"]],\n \"sparkline.flat\": [[\"{{value}}\"]],\n \"sparkline.single\": [[\"{{value}}\"]],\n \"sparkline.named\": [[\"{{name}}\", \"{{summary}}\"]],\n \"statTile.increase\": [[\"{{amount}}\"]],\n \"statTile.decrease\": [[\"{{amount}}\"]],\n \"statTile.better\": [[\"{{change}}\"]],\n \"statTile.worse\": [[\"{{change}}\"]],\n \"signaturePad.viewTyped\": [[\"{{name}}\"]],\n \"passwordStrength.announcement\": [[\"{{level}}\"]],\n \"passwordStrength.ruleLength\": [[12]],\n \"passwordStrength.optional\": [[\"{{rule}}\"]],\n \"passwordStrength.tooLong\": [[72]],\n \"dangerConfirm.phrase\": [[\"{{phrase}}\"]],\n \"dangerConfirm.needsPhrase\": [[\"{{phrase}}\"]],\n \"iconPicker.resultCount\": one,\n \"filePicker.rejectedType\": [[\"{{name}}\"]],\n \"filePicker.rejectedTypeOnly\": [[\"{{accept}}\", \"{{name}}\"]],\n \"filePicker.rejectedSize\": [[\"{{name}}\", \"{{maxSize}}\"]],\n \"filePicker.rejectedCount\": [\n [\"{{name}}\", 1],\n [\"{{name}}\", 3],\n ],\n \"filePicker.rejectedInvalid\": [[\"{{name}}\"]],\n \"filePicker.rejectedMany\": one,\n \"filePicker.rejectedPick\": one,\n \"filePicker.selected\": [\n [1, \"{{firstName}}\"],\n [3, \"{{firstName}}\"],\n ],\n \"filePicker.remove\": [[\"{{name}}\"]],\n \"filePicker.removed\": [[\"{{name}}\"]],\n \"filePicker.hint\": [[\"{{accept}}\"], [\"\"]],\n \"measuredGrid.removeRow\": [[3]],\n \"measuredGrid.cell\": [[\"{{column}}\", 3]],\n \"measuredGrid.lineError\": [[3]],\n \"measuredGrid.points\": one,\n \"measuredGrid.problems\": one,\n \"feedbackAttachment.attachmentRemoveFile\": [[\"{{name}}\"]],\n \"feedbackAttachment.attachmentLimit\": one,\n \"feedbackAttachment.attachmentUploadFailed\": [[\"{{name}}\"]],\n \"feedbackComposer.sendHint\": [[\"{{modifier}}\"]],\n \"feedbackDialog.submitHint\": [[true], [false]],\n \"feedbackToast.attachmentTooMany\": one,\n \"feedbackToast.statusChanged\": [[\"{{status}}\", \"{{title}}\"]],\n \"feedbackToast.statusRestored\": [[\"{{status}}\", \"{{title}}\"]],\n \"feedbackPage.userFallback\": [[42]],\n // A real value, not a placeholder: the chip upper-cases what it is given, and\n // \"{{ENVIRONMENT}}\" would read as a placeholder of that name.\n \"feedbackPage.environment\": [[\"dev\"]],\n \"feedbackPage.reworkChip\": one,\n \"feedbackDetail.download\": [[\"{{name}}\"]],\n \"feedbackDetail.resolvedAt\": [[\"{{date}}\"]],\n \"feedbackPublic.total\": one,\n \"feedbackPublic.comments\": one,\n \"feedbackPublic.votes\": one,\n \"feedbackPublic.filedBy\": [[\"{{name}}\"]],\n \"feedbackPublic.page\": [[3]],\n \"accountSettings.passkeys.renameItem\": [[\"{{name}}\"]],\n \"accountSettings.passkeys.renameField\": [[\"{{name}}\"]],\n \"accountSettings.passkeys.deleteItem\": [[\"{{name}}\"]],\n \"accountSettings.passkeys.deleteConfirm\": [[\"{{name}}\"]],\n \"accountSettings.passkeys.created\": [[\"{{date}}\"]],\n \"accountSettings.passkeys.lastUsed\": [[\"{{date}}\"]],\n \"confirmDialog.typed\": [[\"{{text}}\"]],\n \"floatingPanel.badge\": one,\n \"bulkActionBar.selected\": one,\n \"form.submitShortcut\": [[true], [false]],\n \"lineItems.remove\": [[3]],\n \"lineItems.confirmRemove\": [[3]],\n \"lineItems.row\": [[3]],\n \"lineItems.cell\": [[\"{{column}}\", 3]],\n \"progressBar.overLimit\": [[\"{{amount}}\"]],\n \"signedAmount.positive\": [[\"{{amount}}\"]],\n \"signedAmount.negative\": [[\"{{amount}}\"]],\n \"errorBoundary.reportedAs\": [[\"{{reference}}\"]],\n \"authedImage.failedImage\": [[\"{{alt}}\"]],\n \"imageGrid.item\": [[2, 5]],\n \"imageGrid.actions\": [[\"{{name}}\"]],\n \"lightbox.counter\": [[2, 5]],\n \"lightbox.position\": [[2, 5]],\n \"shareCard.roleOf\": [[\"{{name}}\"]],\n \"shareCard.teamHint\": [[\"{{name}}\"]],\n \"shareCard.removeConfirm\": [[\"{{name}}\"]],\n \"shareCard.revokePendingConfirm\": [[\"{{name}}\"]],\n \"serverWake.waking\": [[\"{{appName}}\"], [undefined]],\n \"translationReview.filterCount\": [\n [\"{{status}}\", 1],\n [\"{{status}}\", 3],\n ],\n \"translationReview.placeholdersOnly\": one,\n \"translationReview.progress\": [\n [1, 1],\n [3, 12],\n ],\n \"translationReview.localeProgress\": [[3, 12]],\n \"translationReview.placeholderMismatch\": [[\"{{reference}}\", \"{{text}}\"]],\n \"translationReview.lastApproved\": [[\"{{name}}\", \"{{date}}\"]],\n \"translationReview.lastFlagged\": [[\"{{name}}\", \"{{date}}\"]],\n \"translationReview.scope\": [[\"{{areas}}\"]],\n \"translationReview.exportCorrections\": [[0], [1], [3]],\n \"translationReview.approvedToast\": one,\n \"translationReview.clearedToast\": one,\n \"translationReview.groupCount\": [\n [1, 12],\n [3, 12],\n ],\n \"translationReview.approveGroup\": one,\n \"translationReview.confirmGroup\": [\n [1, \"{{group}}\"],\n [3, \"{{group}}\"],\n ],\n \"characterCount.count\": [[12, 80]],\n \"characterCount.remaining\": one,\n \"inlineEdit.edit\": [[\"{{label}}\"]],\n \"ibanInput.country\": [[\"{{code}}\"]],\n \"ibanInput.length\": [[20, 21]],\n \"signChip.direction\": [[\"{{current}}\", \"{{next}}\"]],\n \"signChip.switchTo\": [[\"{{next}}\"]],\n \"rowActions.actionsFor\": [[\"{{name}}\"]],\n \"columnMapper.readError\": [[\"{{name}}\"]],\n \"columnMapper.summary\": [\n [1, 1],\n [3, 12],\n ],\n \"columnMapper.unreadCount\": one,\n \"columnMapper.unreadLine\": [[3]],\n \"columnMapper.unreadMore\": one,\n \"columnMapper.columnN\": [[3]],\n \"columnMapper.roleOf\": [[\"{{column}}\"]],\n \"columnMapper.requiredRole\": [[\"{{role}}\"]],\n \"columnMapper.requiredRoleShort\": [[\"{{role}}\"]],\n \"columnMapper.previewOf\": [\n [1, 12],\n [10, 250],\n ],\n \"columnMapper.oneOf\": [[\"{{roles}}\"]],\n \"columnMapper.missing\": [[\"{{roles}}\"]],\n \"legal.sections.impressum.operator.body\": operatorSample,\n \"legal.sections.impressum.contact.body\": operatorSample,\n \"legal.sections.privacy.controller.body\": operatorSample,\n \"legal.sections.privacy.contact.body\": operatorSample,\n \"legal.sections.terms.law.body\": operatorSample,\n // 0.28.1: the binding language, named in the reader's language.\n \"legal.sections.terms.language.body\": operatorSample,\n \"legal.translation.note\": operatorSample,\n \"legal.translation.show\": operatorSample,\n // 0.29.0: the sign-in and sign-up parts (docs/auth-harmonization.md).\n \"signIn.tagHint\": [[\"{{taggedAddress}}\"]],\n \"register.emailTagUse\": [[\"{{address}}\"]],\n \"forgotPassword.sent\": [[\"{{email}}\"]],\n \"resetPassword.intro\": [[\"{{email}}\"]],\n \"verifyEmail.resendIn\": [[30]],\n \"acceptInvitation.joined\": [[\"{{name}}\"]],\n \"companySwitcher.current\": [[\"{{name}}\"]],\n // 0.30.0: the user administration and the account's own settings\n // (docs/user-admin-harmonization.md). `rateLimited` with and without a wait.\n \"signIn.recoveryCodeHint\": [[16]],\n \"signIn.rateLimited\": [[], [30], [300]],\n \"register.rateLimited\": [[], [30], [300]],\n \"forgotPassword.rateLimited\": [[], [30], [300]],\n \"resetPassword.rateLimited\": [[], [30], [300]],\n \"verifyEmail.rateLimited\": [[], [30], [300]],\n \"emailChange.emailTagUse\": [[\"{{address}}\"]],\n \"emailChange.pending\": [[\"{{newEmail}}\"]],\n \"emailChange.pendingHint\": [[\"{{currentEmail}}\"]],\n \"emailChange.confirmed\": [[\"{{email}}\"]],\n \"emailChange.rateLimited\": [[], [30], [300]],\n \"sessions.lastActive\": [[\"{{when}}\"]],\n \"sessions.ip\": [[\"{{address}}\"]],\n \"sessions.revokeItem\": [[\"{{device}}\"]],\n \"notifications.quietDescription\": [[false], [true], [false, true], [true, true]],\n \"notifications.quietZone\": [[\"{{zone}}\"]],\n \"notifications.bellUnread\": one,\n \"notifications.deviceZone\": [[\"{{zone}}\"]],\n \"notifications.iosInstall\": [[\"{{app}}\"]],\n \"notifications.testSent\": one,\n \"notifications.explainerBody\": [[\"{{app}}\"]],\n \"notifications.added\": [[\"{{date}}\"]],\n \"notifications.lastDelivery\": [[\"{{date}}\"]],\n \"notifications.failures\": one,\n \"notifications.removeItem\": [[\"{{device}}\"]],\n \"notifications.unsubscribeAbout\": [[\"{{type}}\"]],\n \"notifications.stopAll\": [[\"{{app}}\"]],\n \"notifications.stoppedAll\": [[\"{{app}}\"]],\n \"deleteAccount.afterDays\": [[1], [30]],\n \"deleteAccount.handOver\": [[1], [3]],\n \"deleteAccount.lastAdminOf\": [[\"{{companies}}\"]],\n \"deleteAccount.rateLimited\": [[], [30], [300]],\n \"dataExport.rateLimited\": [[], [30], [300]],\n \"userRoster.actionsFor\": [[\"{{name}}\"]],\n \"roleSelect.roleOf\": [[\"{{name}}\"]],\n \"roleSelect.unavailable\": [[\"{{role}}\", \"{{reason}}\"]],\n \"adminActionLog.by\": [[\"{{actor}}\"]],\n \"adminActionLog.filteredTo\": [[\"{{target}}\"]],\n \"adminActionLog.filterBy\": [[\"{{target}}\"]],\n // 0.45.0 (admin §9.4): a company rename that logged both names.\n \"adminActionLog.renamedFromTo\": [[\"{{from}}\", \"{{to}}\"]],\n \"transferOwnership.title\": [[\"{{name}}\"]],\n \"transferOwnership.unavailable\": [[\"{{account}}\", \"{{reason}}\"]],\n \"invitations.sent\": [[\"{{date}}\"]],\n \"invitations.expires\": [[\"{{date}}\"]],\n \"invitations.invitedBy\": [[\"{{name}}\"]],\n \"invitations.resend\": [[\"{{email}}\"]],\n \"invitations.revoke\": [[\"{{email}}\"]],\n \"invitations.linkReady\": [[\"{{email}}\"]],\n \"invitations.notSent\": [[\"{{email}}\"]],\n \"accountState.deletionOn\": [[\"{{date}}\"]],\n // 0.31.0: the settings shell, the landing page and the demo\n // (docs/settings-harmonization.md, docs/landing-demo-harmonization.md). An optional\n // argument both given and left out: the subject without an app name, the refusal\n // without a `Retry-After`.\n \"settings.noMatches\": [[\"{{query}}\"]],\n \"settings.matchCount\": one,\n \"landing.accessSubject\": [[\"{{app}}\"], [undefined]],\n \"demo.rateLimited\": [[], [1], [3]],\n \"demo.hoursLeft\": [\n [1, 1],\n [3, 12],\n ],\n \"demo.minutesLeft\": one,\n // 0.32.0: the subscription parts (docs/billing-harmonization.md §7). A trial or a grant\n // ending today, tomorrow and in five days; the guest's notice with and without the\n // item's name.\n \"billing.choose\": [[\"{{plan}}\"]],\n \"billing.upgrade\": [[\"{{plan}}\"]],\n \"billing.downgrade\": [[\"{{plan}}\"]],\n \"billing.trialEnding\": [[0], [1], [5]],\n \"billing.grantEnding\": [[0], [1], [5]],\n \"billing.guestReadOnly\": [[\"{{item}}\"], [undefined]],\n \"billing.usage\": [[\"{{used}}\", \"{{limit}}\"]],\n \"billing.contactSubject\": [[\"{{dimension}}\"]],\n \"billing.waitingChanges\": one,\n // 0.33.0: the limit's figure line (§14.11) and the operator's plan parts (§14.12).\n \"billing.limitUsageLine\": [[\"{{dimension}}\", \"{{used}}\", \"{{limit}}\"]],\n // 0.39: PlanSwitchConfirm's two lines with figures (§15.2.10).\n \"billing.switchFromTo\": [[\"{{from}}\", \"{{to}}\"]],\n \"billing.switchNextCharge\": [[\"{{date}}\"]],\n // 0.42 (§16): the buyer's name, or none once they are gone; the cancel's period end.\n \"billing.buyerHolds\": [[\"{{buyer}}\"], [undefined]],\n \"billing.paymentFailedAskBuyer\": [[\"{{buyer}}\"], [undefined]],\n \"billing.cancelConfirmBody\": [[\"{{date}}\"]],\n \"billing.portalOpensNewTab\": [[\"{{provider}}\", \"{{app}}\"], [\"{{provider}}\", undefined]],\n \"planChange.current\": [[\"{{plan}}\"]],\n \"planChange.changed\": [[\"{{from}}\", \"{{to}}\"]],\n \"planChange.set\": [[\"{{to}}\"]],\n \"planChange.untilDone\": [[\"{{date}}\"]],\n \"planChange.usageOf\": [[\"{{used}}\", \"{{limit}}\", \"{{dimension}}\"]],\n // 0.42.0 (docs/admin-harmonization.md §3.1): the menu row's count, the 403 page's app,\n // the users tile's new accounts.\n \"adminArea.waiting\": one,\n // 0.45.0 (admin §9.3.4): an IconButton's name with its waiting count.\n \"adminArea.waitingLabel\": [[\"{{label}}\", 1], [\"{{label}}\", 3]],\n // 0.45.0 (admin §9.2.4): the test mail's transport, masked address and limiter.\n \"mailTestCard.transport\": [[\"{{backend}}\"]],\n \"mailTestCard.sent\": [[\"{{address}}\"]],\n \"mailTestCard.rateLimited\": [[], [30], [300]],\n \"adminArea.forbiddenBody\": [[\"{{app}}\"]],\n \"adminArea.tiles.usersNew\": one,\n // 0.42.0 (docs/top-bar-harmonization.md §3.1): the sync indicator's counts, its time, the\n // state joined to its hint or to the app's scope; the dev plan and the role to go back to.\n \"topBarParts.sync.blocked\": one,\n \"topBarParts.sync.pending\": one,\n \"topBarParts.sync.syncedAt\": [[\"{{time}}\"]],\n \"topBarParts.sync.withHint\": [[\"{{state}}\", \"{{hint}}\"]],\n \"topBarParts.sync.scoped\": [[\"{{scope}}\", \"{{state}}\"]],\n \"topBarParts.sync.waitingShort\": one,\n \"topBarParts.dev.plan\": [[\"{{plan}}\"]],\n \"topBarParts.dev.backTo\": [[\"{{role}}\"]],\n // 0.43.0 (docs/tours-harmonization.md §3, §8): the tours page's counts, its group\n // option, the completion day and a reset's day and reason.\n \"tourCatalogue.groupAll\": one,\n \"tourCatalogue.groupOption\": [[\"{{group}}\", 1], [\"{{group}}\", 3]],\n \"tourCatalogue.stateAll\": one,\n \"tourCatalogue.stateTodo\": one,\n \"tourCatalogue.stateDone\": one,\n \"tourCatalogue.showing\": [[3, 16]],\n \"tourCatalogue.resetOn\": [[\"{{date}}\", \"{{reason}}\"]],\n \"tourCatalogue.points\": one,\n \"tourCatalogue.steps\": one,\n \"tourCatalogue.duration\": one,\n \"tourCatalogue.completedOn\": [[\"{{date}}\"]],\n // 0.45.0 (docs/local-first-harmonization.md §1.6): the sign-out question's count, in\n // both word sets.\n \"signOutPending.lost\": one,\n \"signOutPending.kept\": one,\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/i18n/review.ts"],"sourcesContent":["import { legalOperatorText } from \"../components/legal\";\nimport type { LegalOperator, LegalOperatorText } from \"../components/legal\";\nimport type { UiKitLabels } from \"./kit-labels\";\n\n/**\n * The kit's words as a flat `key → text` list, for an app's translation review.\n *\n * keksdose reviews its own locale bundles on its /translations page — one verdict per\n * locale and key, stored with the text the reviewer saw, so a later change re-opens it.\n * The kit's words appear on the same screens but live in TypeScript, not in the app's\n * bundles, and 143 of them are functions (`(count) => \"3 results\"`; 0.28.0, every one\n * listed in {@link KIT_LABEL_SAMPLES}), which a bundle flattener skips. This turns a\n * label tree into rows that page can join on.\n *\n * - A string label is one row under its dot path: `common.close`. An array of words\n * (weekday names) is one row per entry: `miniCalendar.weekdays.0`.\n * - A function label is called with fixed samples. Text arguments are i18next-style\n * placeholders (`{{name}}`), so a translation that drops one is caught by the same\n * placeholder check the app runs on its own strings. Counts are real numbers, twice\n * where the wording may depend on them — 1 and 3 — so a reviewer sees singular and\n * plural. The key names the sample: `combobox.resultCount(1)`,\n * `shareCard.removeConfirm(name)`, `serverWake.waking()`.\n * - The legal sections that name the operator (0.28) take one object; its sample is a\n * placeholder per field and the key calls it `operator`:\n * `legal.sections.privacy.controller.body(operator)`. Pass the app's operator in\n * `options` and those rows read the real sentence — same keys — so the lawyer\n * reviewing the `legal` area reads what the page says:\n *\n * kitLabelStrings(UI_KIT_LABELS_DE_CH, { operator: OPERATOR, locale: \"de-CH\" })\n *\n * Keys depend only on the samples, never on the locale, so the rows of `de-CH` and of the\n * English reference line up key by key. Pass exactly the tree the app hands\n * `UiKitProvider` — its overrides included — and review what users see:\n *\n * kitLabelStrings(UI_KIT_LABELS_DE_CH) // the rows for de-CH\n * kitLabelStrings(DEFAULT_UI_KIT_LABELS) // the English reference\n *\n * A label that throws on its sample becomes a row starting with \"⚠\", so one broken\n * override shows up on the page instead of taking the page down.\n */\nexport function kitLabelStrings(labels: UiKitLabels, options: KitLabelStringsOptions = {}): Record<string, string> {\n const out: Record<string, string> = {};\n const operator = options.operator && legalOperatorText(options.operator, options.locale);\n const walk = (node: unknown, path: string) => {\n if (typeof node === \"string\") {\n out[path] = node;\n } else if (typeof node === \"function\") {\n for (const args of KIT_LABEL_SAMPLES[path] ?? [[]]) {\n // The key is the SAMPLE's (`…body(operator)`), whatever the label is called with,\n // so rows with and without the app's operator join on the same keys.\n const called = operator ? args.map((arg) => (arg === LEGAL_OPERATOR_SAMPLE ? operator : arg)) : args;\n out[`${path}(${args.map(sampleName).filter((a) => a !== \"\").join(\", \")})`] = render(\n node as (...args: unknown[]) => unknown,\n called,\n );\n }\n } else if (node !== null && typeof node === \"object\") {\n for (const [key, value] of Object.entries(node)) walk(value, path ? `${path}.${key}` : key);\n }\n };\n walk(labels, \"\");\n return out;\n}\n\nexport interface KitLabelStringsOptions {\n /**\n * The app's operator (0.28): the legal sections that name it — the imprint's operator\n * and contact, the controller, the privacy contact, the governing law — are rendered\n * with the real values instead of `{{name}}`-style placeholders, so a reviewer (the\n * lawyer, under the `legal` area) reads the sentence the page shows. The keys do not\n * change: `legal.sections.impressum.operator.body(operator)` either way.\n */\n operator?: LegalOperator;\n /** The language the operator's country is named in — the locale these rows are\n * for (\"de-CH\" → \"Schweiz\"). Default English. */\n locale?: string;\n}\n\nfunction render(label: (...args: unknown[]) => unknown, args: readonly unknown[]): string {\n try {\n return String(label(...args));\n } catch (error) {\n return `⚠ ${error instanceof Error ? error.message : String(error)}`;\n }\n}\n\n/** How a sample argument is written in the key: a placeholder by its name, a number as\n * itself, an empty string as `\"\"`, a missing optional argument not at all. */\nfunction sampleName(arg: unknown): string {\n if (arg === undefined) return \"\";\n if (arg === LEGAL_OPERATOR_SAMPLE) return \"operator\";\n if (typeof arg === \"string\") return /^\\{\\{(\\w+)\\}\\}$/.exec(arg)?.[1] ?? JSON.stringify(arg);\n return String(arg);\n}\n\nconst one = [[1], [3]] as const;\n\n/**\n * The legal sections' operator (0.28) as placeholders, one per field — so a translation\n * that drops the city or the email is caught by the same check as a dropped `{{name}}`\n * anywhere else. Named `operator` in the key; {@link kitLabelStrings}' `operator` option\n * swaps the app's real values in for it.\n */\nconst LEGAL_OPERATOR_SAMPLE: LegalOperatorText = Object.freeze({\n name: \"{{name}}\",\n postalCode: \"{{postalCode}}\",\n city: \"{{city}}\",\n region: \"{{region}}\",\n country: \"{{country}}\",\n email: \"{{email}}\",\n bindingLanguage: \"{{bindingLanguage}}\",\n});\nconst operatorSample = [[LEGAL_OPERATOR_SAMPLE]] as const;\n\n/**\n * The sample arguments of every function label in {@link UiKitLabels}, by dot path.\n * `src/i18n/__tests__/review.test.ts` fails when a function label has no entry here, so\n * a new one cannot ship un-reviewable.\n */\nexport const KIT_LABEL_SAMPLES: Readonly<Record<string, readonly (readonly unknown[])[]>> = {\n \"common.fieldValue\": [[\"{{field}}\", \"{{value}}\"]],\n \"common.aboutField\": [[\"{{field}}\"]],\n \"dataTable.filterResults\": [\n [1, 1],\n [3, 12],\n ],\n \"dataTable.sortedAscending\": [[\"{{column}}\"]],\n \"dataTable.sortedDescending\": [[\"{{column}}\"]],\n \"dataTable.sortCleared\": [[\"{{column}}\"]],\n \"dataTable.pageChanged\": [[2, 5]],\n \"dataTable.pageRange\": [[1, 25, 1240]],\n \"dataTable.rowCount\": [[1], [1240]],\n \"dataTable.columnsCount\": [[3, 8]],\n \"dataTable.filterColumn\": [\n [\"{{column}}\", false],\n [\"{{column}}\", true],\n ],\n \"miniCalendar.day\": [[\"{{date}}\"]],\n \"miniCalendar.startSelected\": [[\"{{date}}\"]],\n \"miniCalendar.rangeSelected\": [[\"{{from}}\", \"{{to}}\"]],\n \"calendarHeatmap.day\": [[\"{{date}}\", \"{{value}}\"]],\n \"calendarHeatmap.truncated\": one,\n \"monthPicker.month\": [[\"{{monthYear}}\"]],\n \"combobox.create\": [[\"{{query}}\"]],\n \"combobox.selectedCount\": one,\n \"combobox.resultCount\": one,\n \"combobox.minChars\": one,\n \"multiSelect.selectedCount\": one,\n \"chipInput.added\": [[\"{{value}}\"]],\n \"chipInput.removed\": [[\"{{value}}\"]],\n \"chipInput.atLimit\": one,\n \"chipInput.duplicate\": [[\"{{value}}\"]],\n \"tabs.remove\": [[\"{{tab}}\"]],\n \"appShell.toggleGroup\": [[\"{{group}}\"]],\n \"topBar.role\": [[\"{{role}}\"]],\n \"file.size\": [[2_500_000]],\n \"wizard.step\": [[2, 4]],\n \"tour.step\": [[2, 4]],\n \"globalSearch.shortcut\": [[\"{{keys}}\"]],\n \"pieChart.slice\": [[\"{{label}}\", \"{{value}}\", \"{{percent}}\"]],\n \"sparkline.rising\": [[\"{{first}}\", \"{{last}}\"]],\n \"sparkline.falling\": [[\"{{first}}\", \"{{last}}\"]],\n \"sparkline.flat\": [[\"{{value}}\"]],\n \"sparkline.single\": [[\"{{value}}\"]],\n \"sparkline.named\": [[\"{{name}}\", \"{{summary}}\"]],\n \"statTile.increase\": [[\"{{amount}}\"]],\n \"statTile.decrease\": [[\"{{amount}}\"]],\n \"statTile.better\": [[\"{{change}}\"]],\n \"statTile.worse\": [[\"{{change}}\"]],\n \"signaturePad.viewTyped\": [[\"{{name}}\"]],\n \"passwordStrength.announcement\": [[\"{{level}}\"]],\n \"passwordStrength.ruleLength\": [[12]],\n \"passwordStrength.optional\": [[\"{{rule}}\"]],\n \"passwordStrength.tooLong\": [[72]],\n \"dangerConfirm.phrase\": [[\"{{phrase}}\"]],\n \"dangerConfirm.needsPhrase\": [[\"{{phrase}}\"]],\n \"iconPicker.resultCount\": one,\n \"filePicker.rejectedType\": [[\"{{name}}\"]],\n \"filePicker.rejectedTypeOnly\": [[\"{{accept}}\", \"{{name}}\"]],\n \"filePicker.rejectedSize\": [[\"{{name}}\", \"{{maxSize}}\"]],\n \"filePicker.rejectedCount\": [\n [\"{{name}}\", 1],\n [\"{{name}}\", 3],\n ],\n \"filePicker.rejectedInvalid\": [[\"{{name}}\"]],\n \"filePicker.rejectedMany\": one,\n \"filePicker.rejectedPick\": one,\n \"filePicker.selected\": [\n [1, \"{{firstName}}\"],\n [3, \"{{firstName}}\"],\n ],\n \"filePicker.remove\": [[\"{{name}}\"]],\n \"filePicker.removed\": [[\"{{name}}\"]],\n \"filePicker.hint\": [[\"{{accept}}\"], [\"\"]],\n \"measuredGrid.removeRow\": [[3]],\n \"measuredGrid.cell\": [[\"{{column}}\", 3]],\n \"measuredGrid.lineError\": [[3]],\n \"measuredGrid.points\": one,\n \"measuredGrid.problems\": one,\n \"feedbackAttachment.attachmentRemoveFile\": [[\"{{name}}\"]],\n \"feedbackAttachment.attachmentLimit\": one,\n \"feedbackAttachment.attachmentUploadFailed\": [[\"{{name}}\"]],\n \"feedbackComposer.sendHint\": [[\"{{modifier}}\"]],\n \"feedbackDialog.submitHint\": [[true], [false]],\n \"feedbackToast.attachmentTooMany\": one,\n \"feedbackToast.statusChanged\": [[\"{{status}}\", \"{{title}}\"]],\n \"feedbackToast.statusRestored\": [[\"{{status}}\", \"{{title}}\"]],\n \"feedbackPage.userFallback\": [[42]],\n // A real value, not a placeholder: the chip upper-cases what it is given, and\n // \"{{ENVIRONMENT}}\" would read as a placeholder of that name.\n \"feedbackPage.environment\": [[\"dev\"]],\n \"feedbackPage.reworkChip\": one,\n \"feedbackDetail.download\": [[\"{{name}}\"]],\n \"feedbackDetail.resolvedAt\": [[\"{{date}}\"]],\n \"feedbackPublic.total\": one,\n \"feedbackPublic.comments\": one,\n \"feedbackPublic.votes\": one,\n \"feedbackPublic.filedBy\": [[\"{{name}}\"]],\n \"feedbackPublic.page\": [[3]],\n \"accountSettings.passkeys.renameItem\": [[\"{{name}}\"]],\n \"accountSettings.passkeys.renameField\": [[\"{{name}}\"]],\n \"accountSettings.passkeys.deleteItem\": [[\"{{name}}\"]],\n \"accountSettings.passkeys.deleteConfirm\": [[\"{{name}}\"]],\n \"accountSettings.passkeys.created\": [[\"{{date}}\"]],\n \"accountSettings.passkeys.lastUsed\": [[\"{{date}}\"]],\n \"confirmDialog.typed\": [[\"{{text}}\"]],\n \"floatingPanel.badge\": one,\n \"bulkActionBar.selected\": one,\n \"form.submitShortcut\": [[true], [false]],\n \"lineItems.remove\": [[3]],\n \"lineItems.confirmRemove\": [[3]],\n \"lineItems.row\": [[3]],\n \"lineItems.cell\": [[\"{{column}}\", 3]],\n \"progressBar.overLimit\": [[\"{{amount}}\"]],\n \"signedAmount.positive\": [[\"{{amount}}\"]],\n \"signedAmount.negative\": [[\"{{amount}}\"]],\n \"errorBoundary.reportedAs\": [[\"{{reference}}\"]],\n \"authedImage.failedImage\": [[\"{{alt}}\"]],\n \"imageGrid.item\": [[2, 5]],\n \"imageGrid.actions\": [[\"{{name}}\"]],\n \"lightbox.counter\": [[2, 5]],\n \"lightbox.position\": [[2, 5]],\n \"shareCard.roleOf\": [[\"{{name}}\"]],\n \"shareCard.teamHint\": [[\"{{name}}\"]],\n \"shareCard.removeConfirm\": [[\"{{name}}\"]],\n \"shareCard.revokePendingConfirm\": [[\"{{name}}\"]],\n \"serverWake.waking\": [[\"{{appName}}\"], [undefined]],\n \"translationReview.filterCount\": [\n [\"{{status}}\", 1],\n [\"{{status}}\", 3],\n ],\n \"translationReview.placeholdersOnly\": one,\n \"translationReview.progress\": [\n [1, 1],\n [3, 12],\n ],\n \"translationReview.localeProgress\": [[3, 12]],\n \"translationReview.placeholderMismatch\": [[\"{{reference}}\", \"{{text}}\"]],\n \"translationReview.lastApproved\": [[\"{{name}}\", \"{{date}}\"]],\n \"translationReview.lastFlagged\": [[\"{{name}}\", \"{{date}}\"]],\n \"translationReview.scope\": [[\"{{areas}}\"]],\n \"translationReview.exportCorrections\": [[0], [1], [3]],\n \"translationReview.approvedToast\": one,\n \"translationReview.clearedToast\": one,\n \"translationReview.groupCount\": [\n [1, 12],\n [3, 12],\n ],\n \"translationReview.approveGroup\": one,\n \"translationReview.confirmGroup\": [\n [1, \"{{group}}\"],\n [3, \"{{group}}\"],\n ],\n \"characterCount.count\": [[12, 80]],\n \"characterCount.remaining\": one,\n \"inlineEdit.edit\": [[\"{{label}}\"]],\n \"ibanInput.country\": [[\"{{code}}\"]],\n \"ibanInput.length\": [[20, 21]],\n \"signChip.direction\": [[\"{{current}}\", \"{{next}}\"]],\n \"signChip.switchTo\": [[\"{{next}}\"]],\n \"rowActions.actionsFor\": [[\"{{name}}\"]],\n \"columnMapper.readError\": [[\"{{name}}\"]],\n \"columnMapper.summary\": [\n [1, 1],\n [3, 12],\n ],\n \"columnMapper.unreadCount\": one,\n \"columnMapper.unreadLine\": [[3]],\n \"columnMapper.unreadMore\": one,\n \"columnMapper.columnN\": [[3]],\n \"columnMapper.roleOf\": [[\"{{column}}\"]],\n \"columnMapper.requiredRole\": [[\"{{role}}\"]],\n \"columnMapper.requiredRoleShort\": [[\"{{role}}\"]],\n \"columnMapper.previewOf\": [\n [1, 12],\n [10, 250],\n ],\n \"columnMapper.oneOf\": [[\"{{roles}}\"]],\n \"columnMapper.missing\": [[\"{{roles}}\"]],\n \"legal.sections.impressum.operator.body\": operatorSample,\n \"legal.sections.impressum.contact.body\": operatorSample,\n \"legal.sections.privacy.controller.body\": operatorSample,\n \"legal.sections.privacy.contact.body\": operatorSample,\n \"legal.sections.terms.law.body\": operatorSample,\n // 0.28.1: the binding language, named in the reader's language.\n \"legal.sections.terms.language.body\": operatorSample,\n \"legal.translation.note\": operatorSample,\n \"legal.translation.show\": operatorSample,\n // 0.29.0: the sign-in and sign-up parts (docs/auth-harmonization.md).\n \"signIn.tagHint\": [[\"{{taggedAddress}}\"]],\n \"register.emailTagUse\": [[\"{{address}}\"]],\n \"forgotPassword.sent\": [[\"{{email}}\"]],\n \"resetPassword.intro\": [[\"{{email}}\"]],\n \"verifyEmail.resendIn\": [[30]],\n \"acceptInvitation.joined\": [[\"{{name}}\"]],\n \"companySwitcher.current\": [[\"{{name}}\"]],\n // 0.30.0: the user administration and the account's own settings\n // (docs/user-admin-harmonization.md). `rateLimited` with and without a wait.\n \"signIn.recoveryCodeHint\": [[16]],\n \"signIn.rateLimited\": [[], [30], [300]],\n \"register.rateLimited\": [[], [30], [300]],\n \"forgotPassword.rateLimited\": [[], [30], [300]],\n \"resetPassword.rateLimited\": [[], [30], [300]],\n \"verifyEmail.rateLimited\": [[], [30], [300]],\n \"emailChange.emailTagUse\": [[\"{{address}}\"]],\n \"emailChange.pending\": [[\"{{newEmail}}\"]],\n \"emailChange.pendingHint\": [[\"{{currentEmail}}\"]],\n \"emailChange.confirmed\": [[\"{{email}}\"]],\n \"emailChange.rateLimited\": [[], [30], [300]],\n \"sessions.lastActive\": [[\"{{when}}\"]],\n \"sessions.ip\": [[\"{{address}}\"]],\n \"sessions.revokeItem\": [[\"{{device}}\"]],\n \"notifications.quietDescription\": [[false], [true], [false, true], [true, true]],\n \"notifications.quietZone\": [[\"{{zone}}\"]],\n \"notifications.bellUnread\": one,\n \"notifications.iosInstall\": [[\"{{app}}\"]],\n \"notifications.testSent\": one,\n \"notifications.explainerBody\": [[\"{{app}}\"]],\n \"notifications.added\": [[\"{{date}}\"]],\n \"notifications.lastDelivery\": [[\"{{date}}\"]],\n \"notifications.failures\": one,\n \"notifications.removeItem\": [[\"{{device}}\"]],\n \"notifications.unsubscribeAbout\": [[\"{{type}}\"]],\n \"notifications.stopAll\": [[\"{{app}}\"]],\n \"notifications.stoppedAll\": [[\"{{app}}\"]],\n \"deleteAccount.afterDays\": [[1], [30]],\n \"deleteAccount.handOver\": [[1], [3]],\n \"deleteAccount.lastAdminOf\": [[\"{{companies}}\"]],\n \"deleteAccount.rateLimited\": [[], [30], [300]],\n \"dataExport.rateLimited\": [[], [30], [300]],\n \"userRoster.actionsFor\": [[\"{{name}}\"]],\n \"roleSelect.roleOf\": [[\"{{name}}\"]],\n \"roleSelect.unavailable\": [[\"{{role}}\", \"{{reason}}\"]],\n \"adminActionLog.by\": [[\"{{actor}}\"]],\n \"adminActionLog.filteredTo\": [[\"{{target}}\"]],\n \"adminActionLog.filterBy\": [[\"{{target}}\"]],\n // 0.45.0 (admin §9.4): a company rename that logged both names.\n \"adminActionLog.renamedFromTo\": [[\"{{from}}\", \"{{to}}\"]],\n \"transferOwnership.title\": [[\"{{name}}\"]],\n \"transferOwnership.unavailable\": [[\"{{account}}\", \"{{reason}}\"]],\n \"invitations.sent\": [[\"{{date}}\"]],\n \"invitations.expires\": [[\"{{date}}\"]],\n \"invitations.invitedBy\": [[\"{{name}}\"]],\n \"invitations.resend\": [[\"{{email}}\"]],\n \"invitations.revoke\": [[\"{{email}}\"]],\n \"invitations.linkReady\": [[\"{{email}}\"]],\n \"invitations.notSent\": [[\"{{email}}\"]],\n \"accountState.deletionOn\": [[\"{{date}}\"]],\n // 0.31.0: the settings shell, the landing page and the demo\n // (docs/settings-harmonization.md, docs/landing-demo-harmonization.md). An optional\n // argument both given and left out: the subject without an app name, the refusal\n // without a `Retry-After`.\n \"settings.noMatches\": [[\"{{query}}\"]],\n \"settings.matchCount\": one,\n \"landing.accessSubject\": [[\"{{app}}\"], [undefined]],\n \"demo.rateLimited\": [[], [1], [3]],\n \"demo.hoursLeft\": [\n [1, 1],\n [3, 12],\n ],\n \"demo.minutesLeft\": one,\n // 0.32.0: the subscription parts (docs/billing-harmonization.md §7). A trial or a grant\n // ending today, tomorrow and in five days; the guest's notice with and without the\n // item's name.\n \"billing.choose\": [[\"{{plan}}\"]],\n \"billing.upgrade\": [[\"{{plan}}\"]],\n \"billing.downgrade\": [[\"{{plan}}\"]],\n \"billing.trialEnding\": [[0], [1], [5]],\n \"billing.grantEnding\": [[0], [1], [5]],\n \"billing.guestReadOnly\": [[\"{{item}}\"], [undefined]],\n \"billing.usage\": [[\"{{used}}\", \"{{limit}}\"]],\n \"billing.contactSubject\": [[\"{{dimension}}\"]],\n \"billing.waitingChanges\": one,\n // 0.33.0: the limit's figure line (§14.11) and the operator's plan parts (§14.12).\n \"billing.limitUsageLine\": [[\"{{dimension}}\", \"{{used}}\", \"{{limit}}\"]],\n // 0.39: PlanSwitchConfirm's two lines with figures (§15.2.10).\n \"billing.switchFromTo\": [[\"{{from}}\", \"{{to}}\"]],\n \"billing.switchNextCharge\": [[\"{{date}}\"]],\n // 0.42 (§16): the buyer's name, or none once they are gone; the cancel's period end.\n \"billing.buyerHolds\": [[\"{{buyer}}\"], [undefined]],\n \"billing.paymentFailedAskBuyer\": [[\"{{buyer}}\"], [undefined]],\n \"billing.cancelConfirmBody\": [[\"{{date}}\"]],\n \"billing.portalOpensNewTab\": [[\"{{provider}}\", \"{{app}}\"], [\"{{provider}}\", undefined]],\n \"planChange.current\": [[\"{{plan}}\"]],\n \"planChange.changed\": [[\"{{from}}\", \"{{to}}\"]],\n \"planChange.set\": [[\"{{to}}\"]],\n \"planChange.untilDone\": [[\"{{date}}\"]],\n \"planChange.usageOf\": [[\"{{used}}\", \"{{limit}}\", \"{{dimension}}\"]],\n // 0.42.0 (docs/admin-harmonization.md §3.1): the menu row's count, the 403 page's app,\n // the users tile's new accounts.\n \"adminArea.waiting\": one,\n // 0.45.0 (admin §9.3.4): an IconButton's name with its waiting count.\n \"adminArea.waitingLabel\": [[\"{{label}}\", 1], [\"{{label}}\", 3]],\n // 0.45.0 (admin §9.2.4): the test mail's transport, masked address and limiter.\n \"mailTestCard.transport\": [[\"{{backend}}\"]],\n \"mailTestCard.sent\": [[\"{{address}}\"]],\n \"mailTestCard.rateLimited\": [[], [30], [300]],\n \"adminArea.forbiddenBody\": [[\"{{app}}\"]],\n \"adminArea.tiles.usersNew\": one,\n // 0.42.0 (docs/top-bar-harmonization.md §3.1): the sync indicator's counts, its time, the\n // state joined to its hint or to the app's scope; the dev plan and the role to go back to.\n \"topBarParts.sync.blocked\": one,\n \"topBarParts.sync.pending\": one,\n \"topBarParts.sync.syncedAt\": [[\"{{time}}\"]],\n \"topBarParts.sync.withHint\": [[\"{{state}}\", \"{{hint}}\"]],\n \"topBarParts.sync.scoped\": [[\"{{scope}}\", \"{{state}}\"]],\n \"topBarParts.sync.waitingShort\": one,\n \"topBarParts.dev.plan\": [[\"{{plan}}\"]],\n \"topBarParts.dev.backTo\": [[\"{{role}}\"]],\n // 0.43.0 (docs/tours-harmonization.md §3, §8): the tours page's counts, its group\n // option, the completion day and a reset's day and reason.\n \"tourCatalogue.groupAll\": one,\n \"tourCatalogue.groupOption\": [[\"{{group}}\", 1], [\"{{group}}\", 3]],\n \"tourCatalogue.stateAll\": one,\n \"tourCatalogue.stateTodo\": one,\n \"tourCatalogue.stateDone\": one,\n \"tourCatalogue.showing\": [[3, 16]],\n \"tourCatalogue.resetOn\": [[\"{{date}}\", \"{{reason}}\"]],\n \"tourCatalogue.points\": one,\n \"tourCatalogue.steps\": one,\n \"tourCatalogue.duration\": one,\n \"tourCatalogue.completedOn\": [[\"{{date}}\"]],\n // 0.45.0 (docs/local-first-harmonization.md §1.6): the sign-out question's count, in\n // both word sets.\n \"signOutPending.lost\": one,\n \"signOutPending.kept\": one,\n};\n"],"mappings":"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","names":[]}
@@ -15,7 +15,9 @@ const DEFAULT_COMMON_LABELS = {
15
15
  dismiss: "Dismiss",
16
16
  opensInNewTab: "opens in a new tab",
17
17
  aboutField: (field) => `About \u201C${field}\u201D`,
18
- help: "Help"
18
+ help: "Help",
19
+ showMore: "More",
20
+ showLess: "Less"
19
21
  };
20
22
  const DEFAULT_DATE_PICKER_LABELS = {
21
23
  panel: "Choose a date",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i18n/shared-labels.ts"],"sourcesContent":["// The English words of the eleven namespaces the provider types itself (./kit-labels),\n// in a module with no provider code: the English catalogue (./defaults) imports them\n// without the React context, as it imports every component's `*-labels.ts`, and\n// ./kit-labels re-exports them under the same names. Until 0.34 they were the rule's\n// exceptions, written in the provider (round 0.34, DOC-6's sev-1 note).\n//\n// Here rather than beside their components: the provider re-exports them, and the\n// catalogues reach the provider, so a module outside `i18n/` would put component\n// directories into every catalogue's graph (`npm run check:graph` refuses that).\n\nimport type {\n AppShellLabels,\n CalculatorLabels,\n ComboboxLabels,\n CommonLabels,\n CurrencyLabels,\n DatePickerLabels,\n FileLabels,\n MultiSelectLabels,\n PickerSheetLabels,\n SwipeableRowLabels,\n TopBarLabels,\n} from \"./kit-labels\";\n\nexport const DEFAULT_COMMON_LABELS: CommonLabels = {\n close: \"Close\",\n clear: \"Clear\",\n search: \"Search\",\n done: \"Done\",\n cancel: \"Cancel\",\n save: \"Save\",\n back: \"Back\",\n next: \"Next\",\n remove: \"Remove\",\n loading: \"Loading…\",\n noResults: \"No results\",\n fieldValue: (field, value) => `${field}: ${value}`,\n dismiss: \"Dismiss\",\n opensInNewTab: \"opens in a new tab\",\n aboutField: (field) => `About “${field}”`,\n help: \"Help\",\n};\n\nexport const DEFAULT_DATE_PICKER_LABELS: DatePickerLabels = {\n panel: \"Choose a date\",\n rangePanel: \"Choose a date range\",\n clear: \"Clear\",\n previousDay: \"Previous day\",\n nextDay: \"Next day\",\n today: \"Today\",\n apply: \"Apply\",\n cancel: \"Cancel\",\n presets: \"Quick ranges\",\n};\n\nexport const DEFAULT_COMBOBOX_LABELS: ComboboxLabels = {\n search: \"Search\",\n noResults: \"No results\",\n clear: \"Clear\",\n loading: \"Loading…\",\n create: (query) => `Create “${query}”`,\n selectedCount: (count) => `${count} selected`,\n loadError: \"Couldn’t load results\",\n resultCount: (count) => (count === 1 ? \"1 result\" : `${count} results`),\n minChars: (count) =>\n count === 1 ? \"Type at least 1 character\" : `Type at least ${count} characters`,\n};\n\nexport const DEFAULT_MULTI_SELECT_LABELS: MultiSelectLabels = {\n search: \"Search\",\n selectAll: \"Select all\",\n clear: \"Clear\",\n all: \"All\",\n selectedCount: (count) => String(count),\n};\n\nexport const DEFAULT_CALCULATOR_LABELS: CalculatorLabels = {\n open: \"Open calculator\",\n panel: \"Calculator\",\n calculation: \"Calculation\",\n backspace: \"Backspace\",\n clear: \"Clear\",\n equals: \"Equals\",\n done: \"Done\",\n plus: \"Plus\",\n minus: \"Minus\",\n times: \"Times\",\n divide: \"Divide\",\n decimal: \"Decimal point\",\n};\n\nexport const DEFAULT_CURRENCY_LABELS: CurrencyLabels = {\n currency: \"Currency\",\n search: \"Search currency\",\n};\n\nexport const DEFAULT_APP_SHELL_LABELS: AppShellLabels = {\n collapse: \"Collapse sidebar\",\n expand: \"Expand sidebar\",\n toggleGroup: (groupLabel) => `${groupLabel}: pages`,\n};\n\nexport const DEFAULT_TOP_BAR_LABELS: TopBarLabels = {\n theme: \"Toggle theme\",\n palette: \"Appearance preset\",\n language: \"Language\",\n switchRole: \"Switch role\",\n role: (value) => `Role: ${value}`,\n};\n\nexport const DEFAULT_PICKER_SHEET_LABELS: PickerSheetLabels = { close: \"Close\", done: \"Done\" };\n\nexport const DEFAULT_SWIPEABLE_ROW_LABELS: SwipeableRowLabels = { actions: \"Row actions\" };\n\n/** Formats with the locale the provider was given (see {@link useKitFileLabels}).\n * This static default has no locale to hand and falls back to the runtime's. */\nexport const DEFAULT_FILE_LABELS: FileLabels = {\n size: (bytes) => formatFileSize(bytes),\n};\n\n/** \"12 kB\", \"3.4 MB\" — `Intl`'s unit formatting, so the digits, the decimal mark and\n * the unit's spelling all follow `locale`. */\nexport function formatFileSize(bytes: number, locale?: string): string {\n const units = [\"byte\", \"kilobyte\", \"megabyte\", \"gigabyte\"] as const;\n let value = bytes;\n let i = 0;\n while (value >= 1000 && i < units.length - 1) {\n value /= 1000;\n i += 1;\n }\n return new Intl.NumberFormat(locale, {\n style: \"unit\",\n unit: units[i],\n unitDisplay: i === 0 ? \"long\" : \"short\",\n maximumFractionDigits: value < 10 && i > 0 ? 1 : 0,\n }).format(value);\n}\n"],"mappings":";AAwBO,MAAM,wBAAsC;AAAA,EACjD,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,YAAY,CAAC,OAAO,UAAU,GAAG,KAAK,KAAK,KAAK;AAAA,EAChD,SAAS;AAAA,EACT,eAAe;AAAA,EACf,YAAY,CAAC,UAAU,eAAU,KAAK;AAAA,EACtC,MAAM;AACR;AAEO,MAAM,6BAA+C;AAAA,EAC1D,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,aAAa;AAAA,EACb,SAAS;AAAA,EACT,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AACX;AAEO,MAAM,0BAA0C;AAAA,EACrD,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ,CAAC,UAAU,gBAAW,KAAK;AAAA,EACnC,eAAe,CAAC,UAAU,GAAG,KAAK;AAAA,EAClC,WAAW;AAAA,EACX,aAAa,CAAC,UAAW,UAAU,IAAI,aAAa,GAAG,KAAK;AAAA,EAC5D,UAAU,CAAC,UACT,UAAU,IAAI,8BAA8B,iBAAiB,KAAK;AACtE;AAEO,MAAM,8BAAiD;AAAA,EAC5D,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,OAAO;AAAA,EACP,KAAK;AAAA,EACL,eAAe,CAAC,UAAU,OAAO,KAAK;AACxC;AAEO,MAAM,4BAA8C;AAAA,EACzD,MAAM;AAAA,EACN,OAAO;AAAA,EACP,aAAa;AAAA,EACb,WAAW;AAAA,EACX,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AACX;AAEO,MAAM,0BAA0C;AAAA,EACrD,UAAU;AAAA,EACV,QAAQ;AACV;AAEO,MAAM,2BAA2C;AAAA,EACtD,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,aAAa,CAAC,eAAe,GAAG,UAAU;AAC5C;AAEO,MAAM,yBAAuC;AAAA,EAClD,OAAO;AAAA,EACP,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,MAAM,CAAC,UAAU,SAAS,KAAK;AACjC;AAEO,MAAM,8BAAiD,EAAE,OAAO,SAAS,MAAM,OAAO;AAEtF,MAAM,+BAAmD,EAAE,SAAS,cAAc;AAIlF,MAAM,sBAAkC;AAAA,EAC7C,MAAM,CAAC,UAAU,eAAe,KAAK;AACvC;AAIO,SAAS,eAAe,OAAe,QAAyB;AACrE,QAAM,QAAQ,CAAC,QAAQ,YAAY,YAAY,UAAU;AACzD,MAAI,QAAQ;AACZ,MAAI,IAAI;AACR,SAAO,SAAS,OAAQ,IAAI,MAAM,SAAS,GAAG;AAC5C,aAAS;AACT,SAAK;AAAA,EACP;AACA,SAAO,IAAI,KAAK,aAAa,QAAQ;AAAA,IACnC,OAAO;AAAA,IACP,MAAM,MAAM,CAAC;AAAA,IACb,aAAa,MAAM,IAAI,SAAS;AAAA,IAChC,uBAAuB,QAAQ,MAAM,IAAI,IAAI,IAAI;AAAA,EACnD,CAAC,EAAE,OAAO,KAAK;AACjB;","names":[]}
1
+ {"version":3,"sources":["../../src/i18n/shared-labels.ts"],"sourcesContent":["// The English words of the eleven namespaces the provider types itself (./kit-labels),\n// in a module with no provider code: the English catalogue (./defaults) imports them\n// without the React context, as it imports every component's `*-labels.ts`, and\n// ./kit-labels re-exports them under the same names. Until 0.34 they were the rule's\n// exceptions, written in the provider (round 0.34, DOC-6's sev-1 note).\n//\n// Here rather than beside their components: the provider re-exports them, and the\n// catalogues reach the provider, so a module outside `i18n/` would put component\n// directories into every catalogue's graph (`npm run check:graph` refuses that).\n\nimport type {\n AppShellLabels,\n CalculatorLabels,\n ComboboxLabels,\n CommonLabels,\n CurrencyLabels,\n DatePickerLabels,\n FileLabels,\n MultiSelectLabels,\n PickerSheetLabels,\n SwipeableRowLabels,\n TopBarLabels,\n} from \"./kit-labels\";\n\nexport const DEFAULT_COMMON_LABELS: CommonLabels = {\n close: \"Close\",\n clear: \"Clear\",\n search: \"Search\",\n done: \"Done\",\n cancel: \"Cancel\",\n save: \"Save\",\n back: \"Back\",\n next: \"Next\",\n remove: \"Remove\",\n loading: \"Loading…\",\n noResults: \"No results\",\n fieldValue: (field, value) => `${field}: ${value}`,\n dismiss: \"Dismiss\",\n opensInNewTab: \"opens in a new tab\",\n aboutField: (field) => `About “${field}”`,\n help: \"Help\",\n showMore: \"More\",\n showLess: \"Less\",\n};\n\nexport const DEFAULT_DATE_PICKER_LABELS: DatePickerLabels = {\n panel: \"Choose a date\",\n rangePanel: \"Choose a date range\",\n clear: \"Clear\",\n previousDay: \"Previous day\",\n nextDay: \"Next day\",\n today: \"Today\",\n apply: \"Apply\",\n cancel: \"Cancel\",\n presets: \"Quick ranges\",\n};\n\nexport const DEFAULT_COMBOBOX_LABELS: ComboboxLabels = {\n search: \"Search\",\n noResults: \"No results\",\n clear: \"Clear\",\n loading: \"Loading…\",\n create: (query) => `Create “${query}”`,\n selectedCount: (count) => `${count} selected`,\n loadError: \"Couldn’t load results\",\n resultCount: (count) => (count === 1 ? \"1 result\" : `${count} results`),\n minChars: (count) =>\n count === 1 ? \"Type at least 1 character\" : `Type at least ${count} characters`,\n};\n\nexport const DEFAULT_MULTI_SELECT_LABELS: MultiSelectLabels = {\n search: \"Search\",\n selectAll: \"Select all\",\n clear: \"Clear\",\n all: \"All\",\n selectedCount: (count) => String(count),\n};\n\nexport const DEFAULT_CALCULATOR_LABELS: CalculatorLabels = {\n open: \"Open calculator\",\n panel: \"Calculator\",\n calculation: \"Calculation\",\n backspace: \"Backspace\",\n clear: \"Clear\",\n equals: \"Equals\",\n done: \"Done\",\n plus: \"Plus\",\n minus: \"Minus\",\n times: \"Times\",\n divide: \"Divide\",\n decimal: \"Decimal point\",\n};\n\nexport const DEFAULT_CURRENCY_LABELS: CurrencyLabels = {\n currency: \"Currency\",\n search: \"Search currency\",\n};\n\nexport const DEFAULT_APP_SHELL_LABELS: AppShellLabels = {\n collapse: \"Collapse sidebar\",\n expand: \"Expand sidebar\",\n toggleGroup: (groupLabel) => `${groupLabel}: pages`,\n};\n\nexport const DEFAULT_TOP_BAR_LABELS: TopBarLabels = {\n theme: \"Toggle theme\",\n palette: \"Appearance preset\",\n language: \"Language\",\n switchRole: \"Switch role\",\n role: (value) => `Role: ${value}`,\n};\n\nexport const DEFAULT_PICKER_SHEET_LABELS: PickerSheetLabels = { close: \"Close\", done: \"Done\" };\n\nexport const DEFAULT_SWIPEABLE_ROW_LABELS: SwipeableRowLabels = { actions: \"Row actions\" };\n\n/** Formats with the locale the provider was given (see {@link useKitFileLabels}).\n * This static default has no locale to hand and falls back to the runtime's. */\nexport const DEFAULT_FILE_LABELS: FileLabels = {\n size: (bytes) => formatFileSize(bytes),\n};\n\n/** \"12 kB\", \"3.4 MB\" — `Intl`'s unit formatting, so the digits, the decimal mark and\n * the unit's spelling all follow `locale`. */\nexport function formatFileSize(bytes: number, locale?: string): string {\n const units = [\"byte\", \"kilobyte\", \"megabyte\", \"gigabyte\"] as const;\n let value = bytes;\n let i = 0;\n while (value >= 1000 && i < units.length - 1) {\n value /= 1000;\n i += 1;\n }\n return new Intl.NumberFormat(locale, {\n style: \"unit\",\n unit: units[i],\n unitDisplay: i === 0 ? \"long\" : \"short\",\n maximumFractionDigits: value < 10 && i > 0 ? 1 : 0,\n }).format(value);\n}\n"],"mappings":";AAwBO,MAAM,wBAAsC;AAAA,EACjD,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,WAAW;AAAA,EACX,YAAY,CAAC,OAAO,UAAU,GAAG,KAAK,KAAK,KAAK;AAAA,EAChD,SAAS;AAAA,EACT,eAAe;AAAA,EACf,YAAY,CAAC,UAAU,eAAU,KAAK;AAAA,EACtC,MAAM;AAAA,EACN,UAAU;AAAA,EACV,UAAU;AACZ;AAEO,MAAM,6BAA+C;AAAA,EAC1D,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,OAAO;AAAA,EACP,aAAa;AAAA,EACb,SAAS;AAAA,EACT,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AACX;AAEO,MAAM,0BAA0C;AAAA,EACrD,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ,CAAC,UAAU,gBAAW,KAAK;AAAA,EACnC,eAAe,CAAC,UAAU,GAAG,KAAK;AAAA,EAClC,WAAW;AAAA,EACX,aAAa,CAAC,UAAW,UAAU,IAAI,aAAa,GAAG,KAAK;AAAA,EAC5D,UAAU,CAAC,UACT,UAAU,IAAI,8BAA8B,iBAAiB,KAAK;AACtE;AAEO,MAAM,8BAAiD;AAAA,EAC5D,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,OAAO;AAAA,EACP,KAAK;AAAA,EACL,eAAe,CAAC,UAAU,OAAO,KAAK;AACxC;AAEO,MAAM,4BAA8C;AAAA,EACzD,MAAM;AAAA,EACN,OAAO;AAAA,EACP,aAAa;AAAA,EACb,WAAW;AAAA,EACX,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,SAAS;AACX;AAEO,MAAM,0BAA0C;AAAA,EACrD,UAAU;AAAA,EACV,QAAQ;AACV;AAEO,MAAM,2BAA2C;AAAA,EACtD,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,aAAa,CAAC,eAAe,GAAG,UAAU;AAC5C;AAEO,MAAM,yBAAuC;AAAA,EAClD,OAAO;AAAA,EACP,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,MAAM,CAAC,UAAU,SAAS,KAAK;AACjC;AAEO,MAAM,8BAAiD,EAAE,OAAO,SAAS,MAAM,OAAO;AAEtF,MAAM,+BAAmD,EAAE,SAAS,cAAc;AAIlF,MAAM,sBAAkC;AAAA,EAC7C,MAAM,CAAC,UAAU,eAAe,KAAK;AACvC;AAIO,SAAS,eAAe,OAAe,QAAyB;AACrE,QAAM,QAAQ,CAAC,QAAQ,YAAY,YAAY,UAAU;AACzD,MAAI,QAAQ;AACZ,MAAI,IAAI;AACR,SAAO,SAAS,OAAQ,IAAI,MAAM,SAAS,GAAG;AAC5C,aAAS;AACT,SAAK;AAAA,EACP;AACA,SAAO,IAAI,KAAK,aAAa,QAAQ;AAAA,IACnC,OAAO;AAAA,IACP,MAAM,MAAM,CAAC;AAAA,IACb,aAAa,MAAM,IAAI,SAAS;AAAA,IAChC,uBAAuB,QAAQ,MAAM,IAAI,IAAI,IAAI;AAAA,EACnD,CAAC,EAAE,OAAO,KAAK;AACjB;","names":[]}
package/dist/index.d.ts CHANGED
@@ -174,6 +174,8 @@ export * from "./components/line-items.js";
174
174
  export * from "./components/progress-bar.js";
175
175
  export { Skeleton } from "./components/skeleton.js";
176
176
  export type { SkeletonProps, SkeletonShape } from "./components/skeleton.js";
177
+ export { TableSkeleton } from "./components/table-skeleton.js";
178
+ export type { TableSkeletonProps } from "./components/table-skeleton.js";
177
179
  export * from "./components/loading-state.js";
178
180
  export * from "./components/signed-amount.js";
179
181
  export * from "./components/error-boundary.js";
@@ -209,8 +211,8 @@ export { DATE_FORMAT_PREFERENCES, isDateFormatPreference, resolveDateFormat, for
209
211
  export type { DateFormatPreference, DateFormatOptions, ResolvedDateFormat } from "./lib/date-format.js";
210
212
  export { DateFormatSetting } from "./components/date-format-setting.js";
211
213
  export type { DateFormatSettingProps } from "./components/date-format-setting.js";
212
- export { RowActions, rowActionsColumn, DEFAULT_ROW_ACTIONS_LABELS } from "./components/row-actions.js";
213
- export type { RowAction, RowActionList, RowActionsLabels, RowActionsProps, RowActionsCollapse, RowActionsSize, RowActionsColumnOptions, RowActionTone, } from "./components/row-actions.js";
214
+ export { RowActions, rowActionsColumn, DEFAULT_ROW_ACTIONS_LABELS, RowActionsHead, ROW_ACTIONS_CELL_CLASS, ROW_ACTIONS_HEAD_CLASS, } from "./components/row-actions.js";
215
+ export type { RowAction, RowActionList, RowActionsLabels, RowActionsProps, RowActionsCollapse, RowActionsSize, RowActionsColumnOptions, RowActionsHeadProps, RowActionTone, } from "./components/row-actions.js";
214
216
  export * from "./components/checkbox-group.js";
215
217
  export * from "./components/one-time-code-input.js";
216
218
  export * from "./components/language-select.js";
@@ -351,8 +353,6 @@ export { NotificationTypesSetting } from "./notifications/notification-types-set
351
353
  export type { NotificationTypesSettingProps } from "./notifications/notification-types-setting.js";
352
354
  export { QuietHoursSetting } from "./notifications/quiet-hours-setting.js";
353
355
  export type { QuietHoursSettingProps } from "./notifications/quiet-hours-setting.js";
354
- export { TimeZoneSelect, timeZoneOptions } from "./notifications/time-zone-select.js";
355
- export type { TimeZoneSelectProps } from "./notifications/time-zone-select.js";
356
356
  export { NotificationInbox, INBOX_BADGE_INTERVAL } from "./notifications/notification-inbox.js";
357
357
  export type { NotificationInboxAction, NotificationInboxItem, NotificationInboxProps, } from "./notifications/notification-inbox.js";
358
358
  export { NotificationBell } from "./notifications/notification-bell.js";
package/dist/index.js CHANGED
@@ -219,6 +219,7 @@ import { ShareCard, ShareDialog, SharePanel, DEFAULT_SHARE_CARD_LABELS } from ".
219
219
  export * from "./components/line-items.js";
220
220
  export * from "./components/progress-bar.js";
221
221
  import { Skeleton } from "./components/skeleton.js";
222
+ import { TableSkeleton } from "./components/table-skeleton.js";
222
223
  export * from "./components/loading-state.js";
223
224
  export * from "./components/signed-amount.js";
224
225
  export * from "./components/error-boundary.js";
@@ -276,7 +277,14 @@ import {
276
277
  dateFormatterFor
277
278
  } from "./lib/date-format.js";
278
279
  import { DateFormatSetting } from "./components/date-format-setting.js";
279
- import { RowActions, rowActionsColumn, DEFAULT_ROW_ACTIONS_LABELS } from "./components/row-actions.js";
280
+ import {
281
+ RowActions,
282
+ rowActionsColumn,
283
+ DEFAULT_ROW_ACTIONS_LABELS,
284
+ RowActionsHead,
285
+ ROW_ACTIONS_CELL_CLASS,
286
+ ROW_ACTIONS_HEAD_CLASS
287
+ } from "./components/row-actions.js";
280
288
  export * from "./components/checkbox-group.js";
281
289
  export * from "./components/one-time-code-input.js";
282
290
  export * from "./components/language-select.js";
@@ -376,7 +384,6 @@ import { useAccountAppearance, resolveAccountAppearance } from "./settings/use-a
376
384
  import { DEFAULT_NOTIFICATIONS_LABELS } from "./notifications/notifications-labels.js";
377
385
  import { NotificationTypesSetting } from "./notifications/notification-types-setting.js";
378
386
  import { QuietHoursSetting } from "./notifications/quiet-hours-setting.js";
379
- import { TimeZoneSelect, timeZoneOptions } from "./notifications/time-zone-select.js";
380
387
  import { NotificationInbox, INBOX_BADGE_INTERVAL } from "./notifications/notification-inbox.js";
381
388
  import { NotificationBell } from "./notifications/notification-bell.js";
382
389
  import { useDeviceZoneReport, deviceTimeZone } from "./notifications/device-zone-report.js";
@@ -567,6 +574,8 @@ export {
567
574
  QuietHoursSetting,
568
575
  REVIEW_STATUSES,
569
576
  REVIEW_STATUS_TONES,
577
+ ROW_ACTIONS_CELL_CLASS,
578
+ ROW_ACTIONS_HEAD_CLASS,
570
579
  ReauthDialog,
571
580
  RegisterForm,
572
581
  ResetPasswordForm,
@@ -576,6 +585,7 @@ export {
576
585
  RoleSelect,
577
586
  RolesEditor,
578
587
  RowActions,
588
+ RowActionsHead,
579
589
  SUBSCRIPTION_STATUSES,
580
590
  SUBSCRIPTION_STATUS_TONES,
581
591
  ScrollArea,
@@ -594,8 +604,8 @@ export {
594
604
  TOAST_ACTION_DURATION,
595
605
  TOUCH_TARGET_LARGE,
596
606
  TRANSLATION_REVIEW_SWIPE_ACTIONS,
607
+ TableSkeleton,
597
608
  TextLink,
598
- TimeZoneSelect,
599
609
  Toaster,
600
610
  TransferOwnershipDialog,
601
611
  TranslationExportButton,
@@ -735,7 +745,6 @@ export {
735
745
  setStoreLog,
736
746
  summariseRows,
737
747
  taggedEmail,
738
- timeZoneOptions,
739
748
  toApiWrite,
740
749
  toast,
741
750
  translationCorrections,