@eifi1/ui-kit 0.35.0 → 0.36.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.
- package/README.md +35 -5
- package/dist/admin/role-select.d.ts +3 -2
- package/dist/admin/role-select.js +2 -0
- package/dist/admin/role-select.js.map +1 -1
- package/dist/components/amount-input.d.ts +2 -2
- package/dist/components/amount-input.js.map +1 -1
- package/dist/components/autocomplete.d.ts +2 -2
- package/dist/components/autocomplete.js +2 -1
- package/dist/components/autocomplete.js.map +1 -1
- package/dist/components/button-look.d.ts +1 -1
- package/dist/components/button-look.js +9 -4
- package/dist/components/button-look.js.map +1 -1
- package/dist/components/checkbox-group.d.ts +5 -2
- package/dist/components/checkbox-group.js +15 -4
- package/dist/components/checkbox-group.js.map +1 -1
- package/dist/components/column-mapper.d.ts +5 -3
- package/dist/components/column-mapper.js +2 -0
- package/dist/components/column-mapper.js.map +1 -1
- package/dist/components/combobox.d.ts +2 -2
- package/dist/components/combobox.js +2 -1
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/country-select.d.ts +3 -3
- package/dist/components/country-select.js +3 -0
- package/dist/components/country-select.js.map +1 -1
- package/dist/components/currency-select.d.ts +3 -2
- package/dist/components/currency-select.js +10 -1
- package/dist/components/currency-select.js.map +1 -1
- package/dist/components/date-field.d.ts +2 -1
- package/dist/components/date-field.js.map +1 -1
- package/dist/components/date-picker.js +3 -0
- package/dist/components/date-picker.js.map +1 -1
- package/dist/components/date-range-picker.js +3 -0
- package/dist/components/date-range-picker.js.map +1 -1
- package/dist/components/entity-combobox.d.ts +2 -2
- package/dist/components/entity-combobox.js +2 -1
- package/dist/components/entity-combobox.js.map +1 -1
- package/dist/components/field-parts.d.ts +66 -11
- package/dist/components/field-parts.js +32 -10
- package/dist/components/field-parts.js.map +1 -1
- package/dist/components/field-strip.d.ts +3 -2
- package/dist/components/field-strip.js +2 -1
- package/dist/components/field-strip.js.map +1 -1
- package/dist/components/field.d.ts +3 -2
- package/dist/components/field.js +24 -15
- package/dist/components/field.js.map +1 -1
- package/dist/components/help-popover.d.ts +9 -7
- package/dist/components/help-popover.js.map +1 -1
- package/dist/components/icon-picker.d.ts +3 -2
- package/dist/components/icon-picker.js +3 -0
- package/dist/components/icon-picker.js.map +1 -1
- package/dist/components/inline-entity-combobox.d.ts +2 -2
- package/dist/components/inline-entity-combobox.js +2 -1
- package/dist/components/inline-entity-combobox.js.map +1 -1
- package/dist/components/input.d.ts +2 -2
- package/dist/components/input.js +2 -1
- package/dist/components/input.js.map +1 -1
- package/dist/components/month-picker.d.ts +2 -1
- package/dist/components/month-picker.js +8 -1
- package/dist/components/month-picker.js.map +1 -1
- package/dist/components/multi-entity-combobox.d.ts +2 -2
- package/dist/components/multi-entity-combobox.js +2 -1
- package/dist/components/multi-entity-combobox.js.map +1 -1
- package/dist/components/multi-select.d.ts +2 -2
- package/dist/components/multi-select.js +3 -0
- package/dist/components/multi-select.js.map +1 -1
- package/dist/components/number-input.d.ts +2 -2
- package/dist/components/number-input.js.map +1 -1
- package/dist/components/numeric-field.d.ts +5 -2
- package/dist/components/numeric-field.js +4 -1
- package/dist/components/numeric-field.js.map +1 -1
- package/dist/components/one-time-code-input.d.ts +2 -1
- package/dist/components/one-time-code-input.js +2 -1
- package/dist/components/one-time-code-input.js.map +1 -1
- package/dist/components/phone-input.d.ts +1 -1
- package/dist/components/phone-input.js +4 -0
- package/dist/components/phone-input.js.map +1 -1
- package/dist/components/popover.js +1 -1
- package/dist/components/popover.js.map +1 -1
- package/dist/components/select.d.ts +4 -3
- package/dist/components/select.js +2 -1
- package/dist/components/select.js.map +1 -1
- package/dist/components/slider.d.ts +3 -2
- package/dist/components/slider.js +7 -1
- package/dist/components/slider.js.map +1 -1
- package/dist/components/stat-tile.js +2 -11
- package/dist/components/stat-tile.js.map +1 -1
- package/dist/components/swatch-picker.d.ts +3 -2
- package/dist/components/swatch-picker.js +3 -0
- package/dist/components/swatch-picker.js.map +1 -1
- package/dist/components/text-link.js +3 -1
- package/dist/components/text-link.js.map +1 -1
- package/dist/components/textarea.d.ts +2 -1
- package/dist/components/textarea.js +9 -3
- package/dist/components/textarea.js.map +1 -1
- package/dist/components/toggle-group.d.ts +2 -2
- package/dist/components/toggle-group.js +7 -3
- package/dist/components/toggle-group.js.map +1 -1
- package/dist/eslint/index.js +1 -1
- package/dist/i18n/defaults.js +5 -1
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/german.js +97 -1
- package/dist/i18n/german.js.map +1 -1
- package/dist/i18n/kit-labels.d.ts +15 -0
- package/dist/i18n/kit-labels.js +21 -1
- package/dist/i18n/kit-labels.js.map +1 -1
- package/dist/i18n/locales/en.js +103 -2
- package/dist/i18n/locales/en.js.map +3 -3
- package/dist/i18n/locales/es.js +95 -1
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.js +96 -1
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.js +95 -1
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.js +96 -1
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.js +95 -1
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/review.js +13 -0
- package/dist/i18n/review.js.map +1 -1
- package/dist/i18n/shared-labels.js +3 -1
- package/dist/i18n/shared-labels.js.map +1 -1
- package/dist/index.d.ts +21 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/device-settings.d.ts +72 -0
- package/dist/lib/device-settings.js +64 -0
- package/dist/lib/device-settings.js.map +1 -0
- package/dist/lib/plain-text.d.ts +11 -0
- package/dist/lib/plain-text.js +16 -0
- package/dist/lib/plain-text.js.map +1 -0
- package/dist/lib/safe-storage.d.ts +6 -0
- package/dist/lib/safe-storage.js +11 -0
- package/dist/lib/safe-storage.js.map +1 -1
- package/dist/notifications/notification-parts.d.ts +39 -0
- package/dist/notifications/notification-parts.js +47 -0
- package/dist/notifications/notification-parts.js.map +1 -0
- package/dist/notifications/notification-types-setting.d.ts +62 -0
- package/dist/notifications/notification-types-setting.js +192 -0
- package/dist/notifications/notification-types-setting.js.map +1 -0
- package/dist/notifications/notification-types.d.ts +75 -0
- package/dist/notifications/notification-types.js +2 -0
- package/dist/notifications/notification-types.js.map +1 -0
- package/dist/notifications/notifications-labels.d.ts +131 -0
- package/dist/notifications/notifications-labels.js +83 -0
- package/dist/notifications/notifications-labels.js.map +1 -0
- package/dist/notifications/push-device-setting.d.ts +37 -0
- package/dist/notifications/push-device-setting.js +164 -0
- package/dist/notifications/push-device-setting.js.map +1 -0
- package/dist/notifications/push-devices-setting.d.ts +44 -0
- package/dist/notifications/push-devices-setting.js +203 -0
- package/dist/notifications/push-devices-setting.js.map +1 -0
- package/dist/notifications/quiet-hours-setting.d.ts +47 -0
- package/dist/notifications/quiet-hours-setting.js +131 -0
- package/dist/notifications/quiet-hours-setting.js.map +1 -0
- package/dist/notifications/time-zone-select.d.ts +50 -0
- package/dist/notifications/time-zone-select.js +76 -0
- package/dist/notifications/time-zone-select.js.map +1 -0
- package/dist/notifications/unsubscribe-panel.d.ts +53 -0
- package/dist/notifications/unsubscribe-panel.js +139 -0
- package/dist/notifications/unsubscribe-panel.js.map +1 -0
- package/dist/notifications/use-push-device.d.ts +122 -0
- package/dist/notifications/use-push-device.js +230 -0
- package/dist/notifications/use-push-device.js.map +1 -0
- package/dist/rhf/fields.d.ts +26 -19
- package/dist/rhf/fields.js +51 -22
- package/dist/rhf/fields.js.map +1 -1
- package/dist/settings/device-reset-setting-labels.d.ts +3 -0
- package/dist/settings/device-reset-setting-labels.js +15 -0
- package/dist/settings/device-reset-setting-labels.js.map +1 -0
- package/dist/settings/device-reset-setting.d.ts +58 -0
- package/dist/settings/device-reset-setting.js +51 -0
- package/dist/settings/device-reset-setting.js.map +1 -0
- package/dist/shell/app-shell.js +5 -0
- package/dist/shell/app-shell.js.map +1 -1
- package/dist/theme/contrast-tokens.d.ts +42 -4
- package/dist/theme/contrast-tokens.js +56 -9
- package/dist/theme/contrast-tokens.js.map +1 -1
- package/dist/theme/contrast.d.ts +4 -2
- package/dist/theme/contrast.js +13 -0
- package/dist/theme/contrast.js.map +1 -1
- package/dist/theme/palette-derive.d.ts +15 -1
- package/dist/theme/palette-derive.js +37 -8
- package/dist/theme/palette-derive.js.map +1 -1
- package/dist/theme/palette-presets.d.ts +2 -1
- package/dist/theme/palette-presets.js +5 -5
- package/dist/theme/palette-presets.js.map +1 -1
- package/dist/theme/palette-store.js +6 -0
- package/dist/theme/palette-store.js.map +1 -1
- package/dist/theme/text-size.js +6 -0
- package/dist/theme/text-size.js.map +1 -1
- package/dist/theme/theme-store.js +6 -0
- package/dist/theme/theme-store.js.map +1 -1
- package/package.json +1 -1
- package/src/admin/role-select.tsx +4 -1
- package/src/components/amount-input.tsx +2 -1
- package/src/components/autocomplete.tsx +5 -2
- package/src/components/button-look.ts +15 -5
- package/src/components/checkbox-group.tsx +22 -4
- package/src/components/column-mapper.tsx +6 -2
- package/src/components/combobox.tsx +5 -2
- package/src/components/country-select.tsx +6 -1
- package/src/components/currency-select.tsx +12 -3
- package/src/components/date-field.tsx +2 -2
- package/src/components/date-picker.tsx +3 -0
- package/src/components/date-range-picker.tsx +3 -0
- package/src/components/entity-combobox.tsx +5 -2
- package/src/components/field-parts.tsx +107 -19
- package/src/components/field-strip.tsx +4 -3
- package/src/components/field.tsx +28 -15
- package/src/components/help-popover.tsx +9 -7
- package/src/components/icon-picker.tsx +8 -3
- package/src/components/inline-entity-combobox.tsx +5 -2
- package/src/components/input.tsx +4 -2
- package/src/components/month-picker.tsx +10 -3
- package/src/components/multi-entity-combobox.tsx +5 -2
- package/src/components/multi-select.tsx +6 -1
- package/src/components/number-input.tsx +2 -2
- package/src/components/numeric-field.ts +10 -2
- package/src/components/one-time-code-input.tsx +5 -3
- package/src/components/phone-input.tsx +4 -0
- package/src/components/popover.tsx +3 -1
- package/src/components/select.tsx +6 -3
- package/src/components/slider.tsx +10 -3
- package/src/components/stat-tile.tsx +3 -18
- package/src/components/swatch-picker.tsx +9 -4
- package/src/components/text-link.tsx +3 -1
- package/src/components/textarea.tsx +11 -4
- package/src/components/toggle-group.tsx +21 -5
- package/src/i18n/defaults.ts +4 -0
- package/src/i18n/german.ts +113 -0
- package/src/i18n/kit-labels.tsx +51 -1
- package/src/i18n/locales/en.ts +6 -0
- package/src/i18n/locales/es.ts +106 -0
- package/src/i18n/locales/fr.ts +106 -0
- package/src/i18n/locales/hu.ts +104 -0
- package/src/i18n/locales/it.ts +105 -0
- package/src/i18n/locales/zh.ts +96 -0
- package/src/i18n/review.ts +13 -0
- package/src/i18n/shared-labels.ts +2 -0
- package/src/index.ts +50 -0
- package/src/lib/device-settings.ts +146 -0
- package/src/lib/plain-text.ts +22 -0
- package/src/lib/safe-storage.ts +16 -0
- package/src/notifications/notification-parts.tsx +83 -0
- package/src/notifications/notification-types-setting.tsx +309 -0
- package/src/notifications/notification-types.ts +80 -0
- package/src/notifications/notifications-labels.ts +238 -0
- package/src/notifications/push-device-setting.tsx +224 -0
- package/src/notifications/push-devices-setting.tsx +306 -0
- package/src/notifications/quiet-hours-setting.tsx +185 -0
- package/src/notifications/time-zone-select.tsx +126 -0
- package/src/notifications/unsubscribe-panel.tsx +203 -0
- package/src/notifications/use-push-device.ts +392 -0
- package/src/rhf/fields.tsx +77 -29
- package/src/settings/device-reset-setting-labels.ts +20 -0
- package/src/settings/device-reset-setting.tsx +119 -0
- package/src/shell/app-shell.tsx +8 -0
- package/src/theme/contrast-tokens.ts +106 -12
- package/src/theme/contrast.ts +30 -4
- package/src/theme/palette-derive.ts +68 -7
- package/src/theme/palette-presets.ts +9 -6
- package/src/theme/palette-store.ts +12 -0
- package/src/theme/text-size.ts +8 -0
- package/src/theme/theme-store.ts +10 -0
- package/tokens.css +38 -4
package/dist/i18n/review.js.map
CHANGED
|
@@ -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 \"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 \"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 \"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 \"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 \"planChange.current\": [[\"{{plan}}\"]],\n \"planChange.changed\": [[\"{{from}}\", \"{{to}}\"]],\n \"planChange.set\": [[\"{{to}}\"]],\n \"planChange.untilDone\": [[\"{{date}}\"]],\n \"planChange.usageOf\": [[\"{{used}}\", \"{{limit}}\", \"{{dimension}}\"]],\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 \"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]],\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 \"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 \"planChange.current\": [[\"{{plan}}\"]],\n \"planChange.changed\": [[\"{{from}}\", \"{{to}}\"]],\n \"planChange.set\": [[\"{{to}}\"]],\n \"planChange.untilDone\": [[\"{{date}}\"]],\n \"planChange.usageOf\": [[\"{{used}}\", \"{{limit}}\", \"{{dimension}}\"]],\n};\n"],"mappings":"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","names":[]}
|
|
@@ -13,7 +13,9 @@ const DEFAULT_COMMON_LABELS = {
|
|
|
13
13
|
noResults: "No results",
|
|
14
14
|
fieldValue: (field, value) => `${field}: ${value}`,
|
|
15
15
|
dismiss: "Dismiss",
|
|
16
|
-
opensInNewTab: "opens in a new tab"
|
|
16
|
+
opensInNewTab: "opens in a new tab",
|
|
17
|
+
aboutField: (field) => `About ${field}`,
|
|
18
|
+
help: "Help"
|
|
17
19
|
};
|
|
18
20
|
const DEFAULT_DATE_PICKER_LABELS = {
|
|
19
21
|
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};\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\" };\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;
|
|
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\" };\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,SAAS,KAAK;AAAA,EACrC,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,QAAQ;AAExE,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
|
@@ -302,10 +302,31 @@ export { usePlanLimitToast } from "./billing/plan-limit-toast.js";
|
|
|
302
302
|
export type { PlanLimitToastOptions } from "./billing/plan-limit-toast.js";
|
|
303
303
|
export { DEFAULT_SETTINGS_LABELS, useSettingsLabels } from "./settings/settings-labels.js";
|
|
304
304
|
export type { SettingsLabels, SettingsGroupLabels, SettingsCoreGroup } from "./settings/settings-labels.js";
|
|
305
|
+
export { registerDeviceSetting, deviceSettings, resetDeviceSettings } from "./lib/device-settings.js";
|
|
306
|
+
export type { DeviceSetting, DeviceSettingKind } from "./lib/device-settings.js";
|
|
307
|
+
export { DeviceResetSetting, DEVICE_RESET_ANCHOR, DEFAULT_DEVICE_RESET_LABELS } from "./settings/device-reset-setting.js";
|
|
308
|
+
export type { DeviceResetSettingProps, DeviceResetLabels } from "./settings/device-reset-setting.js";
|
|
305
309
|
export { useAccountLanguage, resolveAccountLanguage, matchOfferedLanguage } from "./settings/use-account-language.js";
|
|
306
310
|
export type { UseAccountLanguageOptions, AccountLanguage, AccountLanguageSource, ResolveAccountLanguageInput, ResolvedAccountLanguage, } from "./settings/use-account-language.js";
|
|
307
311
|
export { useAccountAppearance, resolveAccountAppearance } from "./settings/use-account-appearance.js";
|
|
308
312
|
export type { AppearanceSource, AccountAppearanceFields, DeviceAppearance, AccountAppearancePatch, ResolvedAccountAppearance, UseAccountAppearanceOptions, AccountAppearance, } from "./settings/use-account-appearance.js";
|
|
313
|
+
export { DEFAULT_NOTIFICATIONS_LABELS } from "./notifications/notifications-labels.js";
|
|
314
|
+
export type { NotificationsLabels, NotificationRegionLabels } from "./notifications/notifications-labels.js";
|
|
315
|
+
export type { DigestCadence, NotificationSwitches, NotificationTypesValue, NotificationTypeEntry, NotificationTypeGroup, NotificationSettingsPatch, PushDeviceItem, } from "./notifications/notification-types.js";
|
|
316
|
+
export { NotificationTypesSetting } from "./notifications/notification-types-setting.js";
|
|
317
|
+
export type { NotificationTypesSettingProps } from "./notifications/notification-types-setting.js";
|
|
318
|
+
export { QuietHoursSetting } from "./notifications/quiet-hours-setting.js";
|
|
319
|
+
export type { QuietHoursSettingProps } from "./notifications/quiet-hours-setting.js";
|
|
320
|
+
export { TimeZoneSelect, timeZoneOptions, deviceTimeZone } from "./notifications/time-zone-select.js";
|
|
321
|
+
export type { TimeZoneSelectProps } from "./notifications/time-zone-select.js";
|
|
322
|
+
export { usePushDevice, PUSH_SUBSCRIPTION_CHANGED, notifyPushSubscriptionChanged, pushSupported, PushDeviceError, } from "./notifications/use-push-device.js";
|
|
323
|
+
export type { PushDevice, UsePushDeviceOptions, PushSubscriptionInput, PushPermission, PushDeviceErrorCode, } from "./notifications/use-push-device.js";
|
|
324
|
+
export { PushDeviceSetting } from "./notifications/push-device-setting.js";
|
|
325
|
+
export type { PushDeviceSettingProps, PushDeviceAction } from "./notifications/push-device-setting.js";
|
|
326
|
+
export { PushDevicesSetting, describeUserAgent } from "./notifications/push-devices-setting.js";
|
|
327
|
+
export type { PushDevicesSettingProps } from "./notifications/push-devices-setting.js";
|
|
328
|
+
export { UnsubscribePanel, unsubscribeTokenType } from "./notifications/unsubscribe-panel.js";
|
|
329
|
+
export type { UnsubscribePanelProps } from "./notifications/unsubscribe-panel.js";
|
|
309
330
|
export { DEFAULT_LANDING_LABELS, useLandingLabels } from "./landing/landing-labels.js";
|
|
310
331
|
export type { LandingLabels } from "./landing/landing-labels.js";
|
|
311
332
|
export { accessAction, useAccessAction } from "./landing/access.js";
|
package/dist/index.js
CHANGED
|
@@ -345,8 +345,24 @@ import { checkoutFingerprint, checkoutLanded, noteCheckoutStarted, useCheckoutPr
|
|
|
345
345
|
import { PAY_PAGE_LANG_PARAM, paddleLocale, payPageUrl } from "./billing/pay-page.js";
|
|
346
346
|
import { usePlanLimitToast } from "./billing/plan-limit-toast.js";
|
|
347
347
|
import { DEFAULT_SETTINGS_LABELS, useSettingsLabels } from "./settings/settings-labels.js";
|
|
348
|
+
import { registerDeviceSetting, deviceSettings, resetDeviceSettings } from "./lib/device-settings.js";
|
|
349
|
+
import { DeviceResetSetting, DEVICE_RESET_ANCHOR, DEFAULT_DEVICE_RESET_LABELS } from "./settings/device-reset-setting.js";
|
|
348
350
|
import { useAccountLanguage, resolveAccountLanguage, matchOfferedLanguage } from "./settings/use-account-language.js";
|
|
349
351
|
import { useAccountAppearance, resolveAccountAppearance } from "./settings/use-account-appearance.js";
|
|
352
|
+
import { DEFAULT_NOTIFICATIONS_LABELS } from "./notifications/notifications-labels.js";
|
|
353
|
+
import { NotificationTypesSetting } from "./notifications/notification-types-setting.js";
|
|
354
|
+
import { QuietHoursSetting } from "./notifications/quiet-hours-setting.js";
|
|
355
|
+
import { TimeZoneSelect, timeZoneOptions, deviceTimeZone } from "./notifications/time-zone-select.js";
|
|
356
|
+
import {
|
|
357
|
+
usePushDevice,
|
|
358
|
+
PUSH_SUBSCRIPTION_CHANGED,
|
|
359
|
+
notifyPushSubscriptionChanged,
|
|
360
|
+
pushSupported,
|
|
361
|
+
PushDeviceError
|
|
362
|
+
} from "./notifications/use-push-device.js";
|
|
363
|
+
import { PushDeviceSetting } from "./notifications/push-device-setting.js";
|
|
364
|
+
import { PushDevicesSetting, describeUserAgent } from "./notifications/push-devices-setting.js";
|
|
365
|
+
import { UnsubscribePanel, unsubscribeTokenType } from "./notifications/unsubscribe-panel.js";
|
|
350
366
|
import { DEFAULT_LANDING_LABELS, useLandingLabels } from "./landing/landing-labels.js";
|
|
351
367
|
import { accessAction, useAccessAction } from "./landing/access.js";
|
|
352
368
|
import { LandingActions } from "./landing/landing-actions.js";
|
|
@@ -393,12 +409,14 @@ export {
|
|
|
393
409
|
DEFAULT_DATA_EXPORT_LABELS,
|
|
394
410
|
DEFAULT_DELETE_ACCOUNT_LABELS,
|
|
395
411
|
DEFAULT_DEMO_LABELS,
|
|
412
|
+
DEFAULT_DEVICE_RESET_LABELS,
|
|
396
413
|
DEFAULT_EMAIL_CHANGE_LABELS,
|
|
397
414
|
DEFAULT_FILE_PICKER_LABELS,
|
|
398
415
|
DEFAULT_FORGOT_PASSWORD_LABELS,
|
|
399
416
|
DEFAULT_INVITATIONS_LABELS,
|
|
400
417
|
DEFAULT_LANDING_LABELS,
|
|
401
418
|
DEFAULT_LEGAL_LABELS,
|
|
419
|
+
DEFAULT_NOTIFICATIONS_LABELS,
|
|
402
420
|
DEFAULT_NOT_FOUND_LABELS,
|
|
403
421
|
DEFAULT_PASSWORD_REVEAL_LABELS,
|
|
404
422
|
DEFAULT_PLAN_CHANGE_LABELS,
|
|
@@ -423,6 +441,7 @@ export {
|
|
|
423
441
|
DEFAULT_WRITE_LOCK_LABELS,
|
|
424
442
|
DEMO_MINUTES_ONLY,
|
|
425
443
|
DEMO_WARNING_MINUTES,
|
|
444
|
+
DEVICE_RESET_ANCHOR,
|
|
426
445
|
DISABLED_REASON_LINE_CLASS,
|
|
427
446
|
DangerConfirm,
|
|
428
447
|
DataExportSetting,
|
|
@@ -431,6 +450,7 @@ export {
|
|
|
431
450
|
DemoBanner,
|
|
432
451
|
DemoEnded,
|
|
433
452
|
DemoStart,
|
|
453
|
+
DeviceResetSetting,
|
|
434
454
|
DisabledReasonLine,
|
|
435
455
|
EmailChangeSetting,
|
|
436
456
|
EmailVerificationBanner,
|
|
@@ -470,15 +490,21 @@ export {
|
|
|
470
490
|
LegalPage,
|
|
471
491
|
LegalSection,
|
|
472
492
|
NotFoundPage,
|
|
493
|
+
NotificationTypesSetting,
|
|
473
494
|
OVERLAY_EXIT_MS,
|
|
474
495
|
PAY_PAGE_LANG_PARAM,
|
|
475
496
|
PHONE_COUNTRIES,
|
|
476
497
|
PHONE_DIAL_CODES,
|
|
498
|
+
PUSH_SUBSCRIPTION_CHANGED,
|
|
477
499
|
PlanCard,
|
|
478
500
|
PlanChangeConfirm,
|
|
479
501
|
PlanLimitNotice,
|
|
480
502
|
PlanPicker,
|
|
481
503
|
PublicFooter,
|
|
504
|
+
PushDeviceError,
|
|
505
|
+
PushDeviceSetting,
|
|
506
|
+
PushDevicesSetting,
|
|
507
|
+
QuietHoursSetting,
|
|
482
508
|
REVIEW_STATUSES,
|
|
483
509
|
REVIEW_STATUS_TONES,
|
|
484
510
|
ReauthDialog,
|
|
@@ -509,6 +535,7 @@ export {
|
|
|
509
535
|
TOUCH_TARGET_LARGE,
|
|
510
536
|
TRANSLATION_REVIEW_SWIPE_ACTIONS,
|
|
511
537
|
TextLink,
|
|
538
|
+
TimeZoneSelect,
|
|
512
539
|
Toaster,
|
|
513
540
|
TransferOwnershipDialog,
|
|
514
541
|
TranslationExportButton,
|
|
@@ -519,6 +546,7 @@ export {
|
|
|
519
546
|
TrustStrip,
|
|
520
547
|
TypedConfirmField,
|
|
521
548
|
USER_ROSTER_SORT_KEYS,
|
|
549
|
+
UnsubscribePanel,
|
|
522
550
|
UserIdentityCell,
|
|
523
551
|
UserRowActions,
|
|
524
552
|
VerifyEmailStatus,
|
|
@@ -548,6 +576,9 @@ export {
|
|
|
548
576
|
createSessionRefresh,
|
|
549
577
|
dateColumn,
|
|
550
578
|
demoCountdown,
|
|
579
|
+
describeUserAgent,
|
|
580
|
+
deviceSettings,
|
|
581
|
+
deviceTimeZone,
|
|
551
582
|
dragHasFiles,
|
|
552
583
|
dropReviews,
|
|
553
584
|
encodeQr,
|
|
@@ -594,6 +625,7 @@ export {
|
|
|
594
625
|
minorToMajor,
|
|
595
626
|
missingRoles,
|
|
596
627
|
noteCheckoutStarted,
|
|
628
|
+
notifyPushSubscriptionChanged,
|
|
597
629
|
paddleLocale,
|
|
598
630
|
parseHotkey,
|
|
599
631
|
parsePhone,
|
|
@@ -605,12 +637,15 @@ export {
|
|
|
605
637
|
planLimitMailto,
|
|
606
638
|
planPrice,
|
|
607
639
|
planRelation,
|
|
640
|
+
pushSupported,
|
|
608
641
|
rankMatch,
|
|
609
642
|
readKeyboardInset,
|
|
610
643
|
readMappedTable,
|
|
611
644
|
readStored,
|
|
612
645
|
readTextFile,
|
|
646
|
+
registerDeviceSetting,
|
|
613
647
|
remPx,
|
|
648
|
+
resetDeviceSettings,
|
|
614
649
|
resolveAccountAppearance,
|
|
615
650
|
resolveAccountLanguage,
|
|
616
651
|
retryAfterSeconds,
|
|
@@ -626,6 +661,7 @@ export {
|
|
|
626
661
|
setStoreLog,
|
|
627
662
|
summariseRows,
|
|
628
663
|
taggedEmail,
|
|
664
|
+
timeZoneOptions,
|
|
629
665
|
toApiWrite,
|
|
630
666
|
toast,
|
|
631
667
|
translationCorrections,
|
|
@@ -633,6 +669,7 @@ export {
|
|
|
633
669
|
translationRows,
|
|
634
670
|
typedMatches,
|
|
635
671
|
unreviewedRows,
|
|
672
|
+
unsubscribeTokenType,
|
|
636
673
|
useAccessAction,
|
|
637
674
|
useAccountAppearance,
|
|
638
675
|
useAccountLanguage,
|
|
@@ -674,6 +711,7 @@ export {
|
|
|
674
711
|
usePlanChangeResult,
|
|
675
712
|
usePlanColumn,
|
|
676
713
|
usePlanLimitToast,
|
|
714
|
+
usePushDevice,
|
|
677
715
|
useRemPx,
|
|
678
716
|
useRowSwipe,
|
|
679
717
|
useSearchParamState,
|