@eifi1/ui-kit 0.27.0 → 0.28.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 (109) hide show
  1. package/README.md +7 -5
  2. package/dist/chart.d.ts +1 -2
  3. package/dist/components/amount-input.d.ts +1 -2
  4. package/dist/components/button-group.d.ts +1 -2
  5. package/dist/components/calculator.d.ts +1 -2
  6. package/dist/components/confirm-dialog.d.ts +1 -2
  7. package/dist/components/copy-button.d.ts +1 -2
  8. package/dist/components/danger-confirm.d.ts +1 -2
  9. package/dist/components/facing-pair.d.ts +1 -2
  10. package/dist/components/file-button.d.ts +1 -2
  11. package/dist/components/file-dropzone.d.ts +1 -2
  12. package/dist/components/form-actions.d.ts +1 -2
  13. package/dist/components/iban-input.d.ts +1 -2
  14. package/dist/components/language-select.d.ts +1 -2
  15. package/dist/components/legal-page.d.ts +261 -0
  16. package/dist/components/legal-page.js +253 -0
  17. package/dist/components/legal-page.js.map +1 -0
  18. package/dist/components/legal.d.ts +70 -84
  19. package/dist/components/legal.js +190 -19
  20. package/dist/components/legal.js.map +1 -1
  21. package/dist/components/money-field.d.ts +1 -2
  22. package/dist/components/number-field.d.ts +1 -2
  23. package/dist/components/number-input.d.ts +1 -2
  24. package/dist/components/numpad-sheet.d.ts +1 -2
  25. package/dist/components/phone-input.d.ts +1 -2
  26. package/dist/components/series-chart.d.ts +1 -2
  27. package/dist/components/settings-fields.d.ts +1 -2
  28. package/dist/components/share-card.d.ts +1 -2
  29. package/dist/components/text-link.d.ts +1 -2
  30. package/dist/components/time-input.d.ts +1 -2
  31. package/dist/components/translation-review.d.ts +2 -1
  32. package/dist/components/translation-review.js.map +1 -1
  33. package/dist/components/ui.d.ts +1 -2
  34. package/dist/feedback/feedback-attachment.d.ts +1 -2
  35. package/dist/feedback/feedback-context.d.ts +1 -2
  36. package/dist/feedback/feedback-crash.d.ts +1 -2
  37. package/dist/feedback/feedback-dialog.d.ts +1 -2
  38. package/dist/feedback/feedback-inbox.d.ts +1 -2
  39. package/dist/feedback/feedback-labels.d.ts +1 -2
  40. package/dist/feedback/feedback-menu.d.ts +1 -2
  41. package/dist/feedback/feedback-record.d.ts +1 -2
  42. package/dist/feedback/feedback-row-detail.d.ts +1 -2
  43. package/dist/feedback/feedback-status-undo.d.ts +1 -2
  44. package/dist/feedback/feedback-submit.d.ts +1 -2
  45. package/dist/feedback/feedback-swipe.d.ts +1 -2
  46. package/dist/feedback/feedback-table.d.ts +1 -2
  47. package/dist/feedback/feedback-thread.d.ts +1 -2
  48. package/dist/feedback.d.ts +1 -2
  49. package/dist/hooks/use-file-drop.d.ts +1 -2
  50. package/dist/hooks/use-noindex.d.ts +26 -0
  51. package/dist/hooks/use-noindex.js +18 -0
  52. package/dist/hooks/use-noindex.js.map +1 -0
  53. package/dist/i18n/defaults.d.ts +1 -2
  54. package/dist/i18n/german.d.ts +1 -2
  55. package/dist/i18n/german.js +87 -1
  56. package/dist/i18n/german.js.map +1 -1
  57. package/dist/i18n/kit-labels.d.ts +1 -2
  58. package/dist/i18n/kit-labels.js.map +1 -1
  59. package/dist/i18n/languages.d.ts +1 -2
  60. package/dist/i18n/locales/de-CH.d.ts +1 -2
  61. package/dist/i18n/locales/en.d.ts +1 -2
  62. package/dist/i18n/locales/es.d.ts +1 -2
  63. package/dist/i18n/locales/es.js +87 -1
  64. package/dist/i18n/locales/es.js.map +1 -1
  65. package/dist/i18n/locales/fr.d.ts +1 -2
  66. package/dist/i18n/locales/fr.js +89 -1
  67. package/dist/i18n/locales/fr.js.map +1 -1
  68. package/dist/i18n/locales/hu.d.ts +1 -2
  69. package/dist/i18n/locales/hu.js +90 -1
  70. package/dist/i18n/locales/hu.js.map +1 -1
  71. package/dist/i18n/locales/it.d.ts +1 -2
  72. package/dist/i18n/locales/it.js +90 -1
  73. package/dist/i18n/locales/it.js.map +1 -1
  74. package/dist/i18n/locales/zh.d.ts +1 -2
  75. package/dist/i18n/locales/zh.js +87 -1
  76. package/dist/i18n/locales/zh.js.map +1 -1
  77. package/dist/i18n/review.d.ts +24 -5
  78. package/dist/i18n/review.js +24 -3
  79. package/dist/i18n/review.js.map +1 -1
  80. package/dist/index.d.ts +5 -4
  81. package/dist/index.js +11 -1
  82. package/dist/index.js.map +1 -1
  83. package/dist/{kit-labels-DQg82eHB.d.ts → kit-labels-SBN0biPl.d.ts} +305 -3
  84. package/dist/lib/translation-review.d.ts +26 -3
  85. package/dist/lib/translation-review.js +10 -2
  86. package/dist/lib/translation-review.js.map +1 -1
  87. package/dist/rhf/fields.d.ts +1 -2
  88. package/dist/rhf/form.d.ts +1 -2
  89. package/dist/rhf.d.ts +1 -2
  90. package/dist/shell/app-shell.d.ts +1 -2
  91. package/dist/shell/top-bar-brand.d.ts +1 -2
  92. package/dist/shell.d.ts +1 -2
  93. package/dist/wizard/stepper-nav.d.ts +1 -2
  94. package/dist/wizard.d.ts +1 -2
  95. package/package.json +1 -1
  96. package/src/components/legal-page.tsx +566 -0
  97. package/src/components/legal.tsx +458 -49
  98. package/src/components/translation-review.tsx +2 -1
  99. package/src/hooks/use-noindex.ts +37 -0
  100. package/src/i18n/german.ts +81 -0
  101. package/src/i18n/kit-labels.tsx +4 -1
  102. package/src/i18n/locales/es.ts +81 -0
  103. package/src/i18n/locales/fr.ts +83 -0
  104. package/src/i18n/locales/hu.ts +84 -0
  105. package/src/i18n/locales/it.ts +84 -0
  106. package/src/i18n/locales/zh.ts +81 -0
  107. package/src/i18n/review.ts +56 -3
  108. package/src/index.ts +32 -2
  109. package/src/lib/translation-review.ts +43 -4
package/README.md CHANGED
@@ -382,14 +382,14 @@ columns, strings and permissions (see the note at the top of `src/feedback/feedb
382
382
 
383
383
  <!-- BEGIN GENERATED: exports — node scripts/gen-export-inventory.mjs -->
384
384
 
385
- **1392 names from 204 modules** — 658 values and 734 types. _Italic_ is a type-only export.
385
+ **1414 names from 206 modules** — 665 values and 749 types. _Italic_ is a type-only export.
386
386
 
387
387
  Generated from `dist/index.d.ts` by `node scripts/gen-export-inventory.mjs`; the count
388
388
  is pinned by `src/__tests__/public-surface.test.ts`. Do not edit between the markers.
389
389
 
390
390
  | Entry point | Names |
391
391
  |---|---|
392
- | `@eifi1/ui-kit` | 1392 |
392
+ | `@eifi1/ui-kit` | 1414 |
393
393
  | `@eifi1/ui-kit/chart` | 104 |
394
394
  | `@eifi1/ui-kit/shell` | 24 |
395
395
  | `@eifi1/ui-kit/data-table` | 51 |
@@ -415,7 +415,7 @@ re-slicing of it, never a second API.
415
415
  | `lib/safe-storage` | `readStored`, `writeStored` |
416
416
  | `lib/qr-encode` | `encodeQr`, _`QrEncodeOptions`_, _`QrErrorCorrection`_, _`QrMatrix`_ |
417
417
  | `lib/server-wake` | `attachServerWake`, `createServerWake`, `serverWake`, `watchReadsAnd`, `wrapFetch`, _`AxiosLikeInstance`_, _`ServerWakeAxiosConfig`_, _`ServerWakeFilter`_, _`ServerWakeOptions`_, _`ServerWakeRequest`_, _`ServerWakeStage`_, _`ServerWakeWatcher`_ |
418
- | `lib/translation-review` | `DEFAULT_TRANSLATION_REVIEW_FILTER`, `DEFAULT_TRANSLATION_REVIEW_SWIPE`, `dropReviews`, `filterTranslationRows`, `flattenStrings`, `fromApiReview`, `groupTranslationRows`, `keyInArea`, `keyInAreas`, `keyNamespace`, `mergeReviews`, `placeholderMismatch`, `placeholderTokens`, `REVIEW_STATUSES`, `reviewStatus`, `reviewUndo`, `reviewWrite`, `summariseRows`, `toApiWrite`, `TRANSLATION_REVIEW_SWIPE_ACTIONS`, `translationCorrections`, `translationReviewSwipePlan`, `translationRows`, `unreviewedRows`, _`ApiTranslationReview`_, _`ApiTranslationReviewWrite`_, _`ReviewStatus`_, _`TranslationCorrection`_, _`TranslationReview`_, _`TranslationReviewFilter`_, _`TranslationReviewKey`_, _`TranslationReviewSwipeAction`_, _`TranslationReviewSwipeBinding`_, _`TranslationReviewUndo`_, _`TranslationReviewWrite`_, _`TranslationRow`_, _`TranslationRowGroup`_, _`TranslationRowsInput`_, _`TranslationSummary`_, _`TranslationVerdict`_ |
418
+ | `lib/translation-review` | `DEFAULT_TRANSLATION_REVIEW_FILTER`, `DEFAULT_TRANSLATION_REVIEW_SWIPE`, `dropReviews`, `filterTranslationRows`, `flattenStrings`, `fromApiReview`, `groupTranslationRows`, `keyInArea`, `keyInAreas`, `keyNamespace`, `mergeReviews`, `placeholderMismatch`, `placeholderTokens`, `REVIEW_STATUSES`, `reviewAreaOf`, `reviewStatus`, `reviewUndo`, `reviewWrite`, `summariseRows`, `toApiWrite`, `TRANSLATION_REVIEW_SWIPE_ACTIONS`, `translationCorrections`, `translationReviewSwipePlan`, `translationRows`, `unreviewedRows`, _`ApiTranslationReview`_, _`ApiTranslationReviewWrite`_, _`ReviewStatus`_, _`TranslationCorrection`_, _`TranslationReview`_, _`TranslationReviewFilter`_, _`TranslationReviewKey`_, _`TranslationReviewSwipeAction`_, _`TranslationReviewSwipeBinding`_, _`TranslationReviewUndo`_, _`TranslationReviewWrite`_, _`TranslationRow`_, _`TranslationRowGroup`_, _`TranslationRowsInput`_, _`TranslationSummary`_, _`TranslationVerdict`_ |
419
419
  | `lib/countries` | `COUNTRY_CODES`, `countryName` |
420
420
  | `lib/iban` | `compactIban`, `formatIban`, `IBAN_LENGTHS`, `ibanCheckDigits`, `ibanProblem`, `isQrIban`, `isValidIban`, _`IbanKind`_, _`IbanProblem`_ |
421
421
  | `lib/isin` | `formatIsin`, `isinCheckDigit`, `isValidIsin` |
@@ -437,6 +437,7 @@ re-slicing of it, never a second API.
437
437
  | `hooks/use-overlay-history` | `useOverlayHistory` |
438
438
  | `hooks/use-close-transition` | `OVERLAY_EXIT_MS`, `useCloseTransition` |
439
439
  | `hooks/use-row-swipe` | `useRowSwipe`, _`RowSwipeOptions`_, _`RowSwipeReturn`_, _`SwipeStage`_ |
440
+ | `hooks/use-noindex` | `useNoIndex` |
440
441
  | `hooks/use-file-drop` | `dragHasFiles`, `useFileDrop`, _`FileDropProps`_, _`UseFileDropOptions`_, _`UseFileDropReturn`_ |
441
442
  | `hooks/use-debounce` | `useDebounce`, `useDebouncedCallback`, _`DebouncedCallbackOptions`_, _`DebouncedFunction`_ |
442
443
  | `hooks/use-search-param-state` | `useDialogParam`, `useSearchParamsState`, `useSearchParamState`, `useTabParam`, _`DialogParam`_, _`SearchParamField`_, _`SearchParamFields`_, _`SearchParamStateOptions`_, _`SearchParamsUpdate`_ |
@@ -462,7 +463,7 @@ re-slicing of it, never a second API.
462
463
  |---|---|
463
464
  | `i18n/kit-labels` | `DEFAULT_APP_SHELL_LABELS`, `DEFAULT_CALCULATOR_LABELS`, `DEFAULT_COMBOBOX_LABELS`, `DEFAULT_COMMON_LABELS`, `DEFAULT_CURRENCY_LABELS`, `DEFAULT_DATE_PICKER_LABELS`, `DEFAULT_FILE_LABELS`, `DEFAULT_MULTI_SELECT_LABELS`, `DEFAULT_PICKER_SHEET_LABELS`, `DEFAULT_SWIPEABLE_ROW_LABELS`, `DEFAULT_TOP_BAR_LABELS`, `formatFileSize`, `missingKitLabels`, `UiKitProvider`, `useKitChartTooltipPlacement`, `useKitDateFormatter`, `useKitFileLabels`, `useKitLabelOverrides`, `useKitLabels`, `useKitLink`, `useKitLocale`, `useKitWeekStart`, _`AppShellLabels`_, _`CalculatorLabels`_, _`ChartTooltipPlacement`_, _`ComboboxLabels`_, _`CommonLabels`_, _`CurrencyLabels`_, _`DatePickerLabels`_, _`FileLabels`_, _`KitDateFormatContext`_, _`KitDateFormatter`_, _`KitLinkComponent`_, _`KitLinkProps`_, _`LabelOverride`_, _`MultiSelectLabels`_, _`PickerSheetLabels`_, _`SwipeableRowLabels`_, _`TopBarLabels`_, _`UiKitLabelOverrides`_, _`UiKitLabels`_, _`UiKitProviderProps`_ |
464
465
  | `i18n/defaults` | `DEFAULT_UI_KIT_LABELS` |
465
- | `i18n/review` | `kitLabelStrings` |
466
+ | `i18n/review` | `kitLabelStrings`, _`KitLabelStringsOptions`_ |
466
467
  | `i18n/languages` | `formatLocaleOf`, `KIT_LANGUAGES`, `languageOptions`, `loadUiKitLabels`, `peekUiKitLabels`, `resolveLanguage`, `useUiKitLabels`, _`KitLanguage`_, _`KitLanguageCode`_ |
467
468
  | `i18n/plurals` | `withAllPlurals` |
468
469
 
@@ -477,6 +478,7 @@ re-slicing of it, never a second API.
477
478
  | `components/file-button` | `DEFAULT_FILE_PICKER_LABELS`, `FileButton`, `matchesAccept`, `useFilePicker`, _`FileButtonProps`_, _`FilePickerLabels`_, _`FileRejection`_, _`FileRejectionReason`_, _`FileScreenOptions`_, _`UseFilePickerOptions`_, _`UseFilePickerReturn`_ |
478
479
  | `components/form-actions` | `DEFAULT_FORM_ACTIONS_LABELS`, `FormActions`, _`FormActionsAlign`_, _`FormActionsDestructive`_, _`FormActionsLabels`_, _`FormActionsPlacement`_, _`FormActionsProps`_, _`FormActionsStickyWithin`_, _`FormActionsSubmitProps`_, _`FormActionsSubmitShortcut`_, _`ResponsiveFormActionsPlacement`_ |
479
480
  | `components/iban-input` | `DEFAULT_IBAN_INPUT_LABELS`, `IbanInput`, _`IbanInputLabels`_, _`IbanInputProps`_ |
481
+ | `components/legal` | `DEFAULT_LEGAL_LABELS`, `LegalFooter`, `LegalLayout`, `LegalLinks`, `LegalSection`, _`LegalFooterProps`_, _`LegalFramedSectionLabels`_, _`LegalLabels`_, _`LegalLayoutProps`_, _`LegalLink`_, _`LegalLinksProps`_, _`LegalOperator`_, _`LegalOperatorSectionLabels`_, _`LegalOperatorText`_, _`LegalPageKey`_, _`LegalSectionProps`_, _`LegalTextSectionLabels`_ |
480
482
  | `components/phone-input` | `DEFAULT_PHONE_INPUT_LABELS`, `PhoneInput`, _`PhoneInputLabels`_, _`PhoneInputProps`_ |
481
483
  | `components/share-card` | `DEFAULT_SHARE_CARD_LABELS`, `ShareCard`, `ShareDialog`, `SharePanel`, _`ShareAddRequest`_, _`ShareCandidate`_, _`ShareCardLabels`_, _`ShareCardProps`_, _`ShareDialogProps`_, _`ShareGrantee`_, _`SharePanelProps`_, _`SharePendingGrant`_, _`ShareRole`_ |
482
484
  | `components/field` | `Field`, _`FieldControlProps`_, _`FieldLabelVisibility`_, _`FieldProps`_, _`FieldRenderMeta`_ |
@@ -580,7 +582,7 @@ re-slicing of it, never a second API.
580
582
  | `components/data-table-filter-popover` | `FilterPopover` |
581
583
  | `components/data-table-cells` | `booleanColumn`, `BooleanMark`, _`BooleanColumnOptions`_, _`BooleanMarkProps`_ |
582
584
  | `components/translation-review` | `TranslationReviewPanel`, _`TranslationReviewGroupBy`_, _`TranslationReviewOrigin`_, _`TranslationReviewPanelProps`_, _`TranslationReviewSaveInfo`_ |
583
- | `components/legal` | `DEFAULT_LEGAL_LABELS`, `LegalLayout`, `LegalLinks`, `LegalSection`, _`LegalLabels`_, _`LegalLayoutProps`_, _`LegalLink`_, _`LegalLinksProps`_, _`LegalSectionProps`_ |
585
+ | `components/legal-page` | `LEGAL_SKELETON`, `LegalAcceptCheckbox`, `LegalKitSection`, `LegalPage`, _`LegalAcceptCheckboxProps`_, _`LegalKitSectionKey`_, _`LegalKitSectionProps`_, _`LegalPageProps`_, _`LegalSectionOwner`_, _`LegalSkeletonEntry`_, _`LegalSkeletonPage`_ |
584
586
  | `components/checkbox-group` | `CheckboxGroup`, _`CheckboxGroupLegendVisibility`_, _`CheckboxGroupOption`_, _`CheckboxGroupProps`_ |
585
587
  | `components/one-time-code-input` | `OneTimeCodeInput`, _`OneTimeCodeInputProps`_ |
586
588
  | `components/language-select` | `LanguageSelect`, _`LanguageSelectProps`_ |
package/dist/chart.d.ts CHANGED
@@ -13,7 +13,7 @@ export { TimeTickUnit } from './components/series-chart-ticks.js';
13
13
  import 'recharts';
14
14
  import 'react';
15
15
  import './lib/direction.js';
16
- import './kit-labels-DQg82eHB.js';
16
+ import './kit-labels-SBN0biPl.js';
17
17
  import './data-table-labels-DUELeXpa.js';
18
18
  import './components/data-table-sort.js';
19
19
  import './components/swipeable-row.js';
@@ -64,7 +64,6 @@ import './components/authed-image.js';
64
64
  import './components/image-grid.js';
65
65
  import './components/lightbox.js';
66
66
  import './components/write-lock.js';
67
- import './components/legal.js';
68
67
  import './components/account-chips.js';
69
68
  import './lib/format.js';
70
69
  import './components/reauth-dialog.js';
@@ -2,7 +2,7 @@ import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
3
  import { CalculatorButtonLabels } from './calculator.js';
4
4
  import { NumberPadSheetLabels } from './numpad-sheet.js';
5
- import '../kit-labels-DQg82eHB.js';
5
+ import '../kit-labels-SBN0biPl.js';
6
6
  import '../data-table-labels-DUELeXpa.js';
7
7
  import './data-table-sort.js';
8
8
  import './swipeable-row.js';
@@ -55,7 +55,6 @@ import './authed-image.js';
55
55
  import './image-grid.js';
56
56
  import './lightbox.js';
57
57
  import './write-lock.js';
58
- import './legal.js';
59
58
  import './account-chips.js';
60
59
  import '../lib/format.js';
61
60
  import './reauth-dialog.js';
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ComponentPropsWithoutRef, ReactNode, Ref, MouseEvent, ReactElement } from 'react';
3
- import { bA as ButtonVariant, by as ButtonSize } from '../kit-labels-DQg82eHB.js';
3
+ import { bA as ButtonVariant, by as ButtonSize } from '../kit-labels-SBN0biPl.js';
4
4
  import '../data-table-labels-DUELeXpa.js';
5
5
  import './data-table-sort.js';
6
6
  import './swipeable-row.js';
@@ -53,7 +53,6 @@ import './authed-image.js';
53
53
  import './image-grid.js';
54
54
  import './lightbox.js';
55
55
  import './write-lock.js';
56
- import './legal.js';
57
56
  import './account-chips.js';
58
57
  import '../lib/format.js';
59
58
  import './reauth-dialog.js';
@@ -1,5 +1,5 @@
1
1
  import * as react from 'react';
2
- import { bB as CalculatorLabels } from '../kit-labels-DQg82eHB.js';
2
+ import { bB as CalculatorLabels } from '../kit-labels-SBN0biPl.js';
3
3
  import '../data-table-labels-DUELeXpa.js';
4
4
  import './data-table-sort.js';
5
5
  import './swipeable-row.js';
@@ -52,7 +52,6 @@ import './authed-image.js';
52
52
  import './image-grid.js';
53
53
  import './lightbox.js';
54
54
  import './write-lock.js';
55
- import './legal.js';
56
55
  import './account-chips.js';
57
56
  import '../lib/format.js';
58
57
  import './reauth-dialog.js';
@@ -1,5 +1,5 @@
1
1
  import 'react';
2
- export { bX as ConfirmDialogLabels, bY as ConfirmFn, bZ as ConfirmOptions, b_ as ConfirmProvider, b$ as ConfirmProviderProps, c0 as ConfirmTone, cd as DEFAULT_CONFIRM_DIALOG_LABELS, e9 as useConfirm } from '../kit-labels-DQg82eHB.js';
2
+ export { bX as ConfirmDialogLabels, bY as ConfirmFn, bZ as ConfirmOptions, b_ as ConfirmProvider, b$ as ConfirmProviderProps, c0 as ConfirmTone, cd as DEFAULT_CONFIRM_DIALOG_LABELS, eq as useConfirm } from '../kit-labels-SBN0biPl.js';
3
3
  import '../data-table-labels-DUELeXpa.js';
4
4
  import './data-table-sort.js';
5
5
  import './swipeable-row.js';
@@ -52,7 +52,6 @@ import './authed-image.js';
52
52
  import './image-grid.js';
53
53
  import './lightbox.js';
54
54
  import './write-lock.js';
55
- import './legal.js';
56
55
  import './account-chips.js';
57
56
  import '../lib/format.js';
58
57
  import './reauth-dialog.js';
@@ -1,5 +1,5 @@
1
1
  import 'react';
2
- export { c1 as CopyButton, c2 as CopyButtonLabels, c3 as CopyButtonProps, ce as DEFAULT_COPY_BUTTON_LABELS } from '../kit-labels-DQg82eHB.js';
2
+ export { c1 as CopyButton, c2 as CopyButtonLabels, c3 as CopyButtonProps, ce as DEFAULT_COPY_BUTTON_LABELS } from '../kit-labels-SBN0biPl.js';
3
3
  import './tooltip.js';
4
4
  import '../data-table-labels-DUELeXpa.js';
5
5
  import './data-table-sort.js';
@@ -52,7 +52,6 @@ import './authed-image.js';
52
52
  import './image-grid.js';
53
53
  import './lightbox.js';
54
54
  import './write-lock.js';
55
- import './legal.js';
56
55
  import './account-chips.js';
57
56
  import '../lib/format.js';
58
57
  import './reauth-dialog.js';
@@ -1,5 +1,5 @@
1
1
  import 'react';
2
- export { c5 as CurrentPasswordInput, c6 as CurrentPasswordInputLabels, c7 as CurrentPasswordInputProps, cg as DEFAULT_DANGER_CONFIRM_LABELS, cu as DangerConfirm, cv as DangerConfirmLabels, cw as DangerConfirmProps, cx as DangerConfirmValues, cy as DangerConsequence, dV as TypedConfirmField, dW as TypedConfirmFieldLabels, dX as TypedConfirmFieldProps, dY as TypedMatch, e8 as typedMatches, ek as usePromisePending } from '../kit-labels-DQg82eHB.js';
2
+ export { c5 as CurrentPasswordInput, c6 as CurrentPasswordInputLabels, c7 as CurrentPasswordInputProps, cg as DEFAULT_DANGER_CONFIRM_LABELS, cv as DangerConfirm, cw as DangerConfirmLabels, cx as DangerConfirmProps, cy as DangerConfirmValues, cz as DangerConsequence, ea as TypedConfirmField, eb as TypedConfirmFieldLabels, ec as TypedConfirmFieldProps, ed as TypedMatch, ep as typedMatches, eB as usePromisePending } from '../kit-labels-SBN0biPl.js';
3
3
  import '../data-table-labels-DUELeXpa.js';
4
4
  import './data-table-sort.js';
5
5
  import './swipeable-row.js';
@@ -52,7 +52,6 @@ import './authed-image.js';
52
52
  import './image-grid.js';
53
53
  import './lightbox.js';
54
54
  import './write-lock.js';
55
- import './legal.js';
56
55
  import './account-chips.js';
57
56
  import '../lib/format.js';
58
57
  import './reauth-dialog.js';
@@ -6,7 +6,7 @@ import './series-chart-labels.js';
6
6
  import './toggle-legend.js';
7
7
  import './series-chart-ticks.js';
8
8
  import './series-chart-budget.js';
9
- import '../kit-labels-DQg82eHB.js';
9
+ import '../kit-labels-SBN0biPl.js';
10
10
  import '../data-table-labels-DUELeXpa.js';
11
11
  import './data-table-sort.js';
12
12
  import './swipeable-row.js';
@@ -58,7 +58,6 @@ import './authed-image.js';
58
58
  import './image-grid.js';
59
59
  import './lightbox.js';
60
60
  import './write-lock.js';
61
- import './legal.js';
62
61
  import './account-chips.js';
63
62
  import '../lib/format.js';
64
63
  import './reauth-dialog.js';
@@ -1,5 +1,5 @@
1
1
  import 'react';
2
- export { cj as DEFAULT_FILE_PICKER_LABELS, cO as FileButton, cP as FileButtonProps, ej as FilePickHandler, cR as FilePickerLabels, cS as FileRejection, cT as FileRejectionReason, cU as FileScreenOptions, e1 as UseFilePickerOptions, e2 as UseFilePickerReturn, el as formatAccept, em as judgePick, e5 as matchesAccept, en as screenFiles, eo as summariseRejections, ea as useFilePicker } from '../kit-labels-DQg82eHB.js';
2
+ export { cj as DEFAULT_FILE_PICKER_LABELS, cP as FileButton, cQ as FileButtonProps, eA as FilePickHandler, cS as FilePickerLabels, cT as FileRejection, cU as FileRejectionReason, cV as FileScreenOptions, ei as UseFilePickerOptions, ej as UseFilePickerReturn, eC as formatAccept, eD as judgePick, em as matchesAccept, eE as screenFiles, eF as summariseRejections, er as useFilePicker } from '../kit-labels-SBN0biPl.js';
3
3
  import '../data-table-labels-DUELeXpa.js';
4
4
  import './data-table-sort.js';
5
5
  import './swipeable-row.js';
@@ -52,7 +52,6 @@ import './authed-image.js';
52
52
  import './image-grid.js';
53
53
  import './lightbox.js';
54
54
  import './write-lock.js';
55
- import './legal.js';
56
55
  import './account-chips.js';
57
56
  import '../lib/format.js';
58
57
  import './reauth-dialog.js';
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { ComponentPropsWithoutRef, ReactNode } from 'react';
3
- import { cS as FileRejection, ej as FilePickHandler, cR as FilePickerLabels } from '../kit-labels-DQg82eHB.js';
3
+ import { cT as FileRejection, eA as FilePickHandler, cS as FilePickerLabels } from '../kit-labels-SBN0biPl.js';
4
4
  import '../data-table-labels-DUELeXpa.js';
5
5
  import './data-table-sort.js';
6
6
  import './swipeable-row.js';
@@ -53,7 +53,6 @@ import './authed-image.js';
53
53
  import './image-grid.js';
54
54
  import './lightbox.js';
55
55
  import './write-lock.js';
56
- import './legal.js';
57
56
  import './account-chips.js';
58
57
  import '../lib/format.js';
59
58
  import './reauth-dialog.js';
@@ -1,6 +1,6 @@
1
1
  import 'react';
2
2
  import 'lucide-react';
3
- export { ck as DEFAULT_FORM_ACTIONS_LABELS, cX as FormActions, cY as FormActionsAlign, cZ as FormActionsDestructive, c_ as FormActionsLabels, c$ as FormActionsPlacement, d0 as FormActionsProps, d1 as FormActionsStickyWithin, d2 as FormActionsSubmitProps, d3 as FormActionsSubmitShortcut, dw as ResponsiveFormActionsPlacement } from '../kit-labels-DQg82eHB.js';
3
+ export { ck as DEFAULT_FORM_ACTIONS_LABELS, cY as FormActions, cZ as FormActionsAlign, c_ as FormActionsDestructive, c$ as FormActionsLabels, d0 as FormActionsPlacement, d1 as FormActionsProps, d2 as FormActionsStickyWithin, d3 as FormActionsSubmitProps, d4 as FormActionsSubmitShortcut, dN as ResponsiveFormActionsPlacement } from '../kit-labels-SBN0biPl.js';
4
4
  import '../data-table-labels-DUELeXpa.js';
5
5
  import './data-table-sort.js';
6
6
  import './swipeable-row.js';
@@ -52,7 +52,6 @@ import './authed-image.js';
52
52
  import './image-grid.js';
53
53
  import './lightbox.js';
54
54
  import './write-lock.js';
55
- import './legal.js';
56
55
  import './account-chips.js';
57
56
  import '../lib/format.js';
58
57
  import './reauth-dialog.js';
@@ -1,6 +1,6 @@
1
1
  import 'react';
2
2
  import '../lib/iban.js';
3
- export { cl as DEFAULT_IBAN_INPUT_LABELS, d4 as IbanInput, d5 as IbanInputLabels, d6 as IbanInputProps } from '../kit-labels-DQg82eHB.js';
3
+ export { cl as DEFAULT_IBAN_INPUT_LABELS, d5 as IbanInput, d6 as IbanInputLabels, d7 as IbanInputProps } from '../kit-labels-SBN0biPl.js';
4
4
  import '../data-table-labels-DUELeXpa.js';
5
5
  import './data-table-sort.js';
6
6
  import './swipeable-row.js';
@@ -53,7 +53,6 @@ import './authed-image.js';
53
53
  import './image-grid.js';
54
54
  import './lightbox.js';
55
55
  import './write-lock.js';
56
- import './legal.js';
57
56
  import './account-chips.js';
58
57
  import '../lib/format.js';
59
58
  import './reauth-dialog.js';
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
2
  import { KitLanguageCode, KitLanguage } from '../i18n/languages.js';
3
- import { dy as SelectProps } from '../kit-labels-DQg82eHB.js';
3
+ import { dP as SelectProps } from '../kit-labels-SBN0biPl.js';
4
4
  import '../shell/topbar-controls.js';
5
5
  import '../theme/palette-presets.js';
6
6
  import '../theme/chart-palette.js';
@@ -59,7 +59,6 @@ import './authed-image.js';
59
59
  import './image-grid.js';
60
60
  import './lightbox.js';
61
61
  import './write-lock.js';
62
- import './legal.js';
63
62
  import './account-chips.js';
64
63
  import '../lib/format.js';
65
64
  import './reauth-dialog.js';
@@ -0,0 +1,261 @@
1
+ import * as react from 'react';
2
+ import { Ref, ReactNode } from 'react';
3
+ import { dC as LegalPageKey, dn as LabelOverride, dt as LegalLabels, dz as LegalOperator } from '../kit-labels-SBN0biPl.js';
4
+ import { CheckboxProps } from './checkbox.js';
5
+ import '../data-table-labels-DUELeXpa.js';
6
+ import './data-table-sort.js';
7
+ import './swipeable-row.js';
8
+ import './mini-calendar.js';
9
+ import './calendar-heatmap.js';
10
+ import './popover.js';
11
+ import './chip.js';
12
+ import 'lucide-react';
13
+ import './field-sync.js';
14
+ import './tooltip.js';
15
+ import '../hooks/use-anchored-rect.js';
16
+ import '../lib/clipping.js';
17
+ import '../wizard/types.js';
18
+ import '../tour/tour.js';
19
+ import '../search/command-palette.js';
20
+ import '../search/global-search.js';
21
+ import '../search/search-index.js';
22
+ import './month-picker.js';
23
+ import './page-contents.js';
24
+ import './series-chart-labels.js';
25
+ import './pie-chart-labels.js';
26
+ import './sparkline.js';
27
+ import './stat-tile.js';
28
+ import './signature-pad.js';
29
+ import './password-strength.js';
30
+ import './swatch-picker.js';
31
+ import './tile-radio.js';
32
+ import './icon-picker.js';
33
+ import './dialog-frame.js';
34
+ import './modal.js';
35
+ import '../hooks/use-search-param-state.js';
36
+ import './measured-grid.js';
37
+ import './user-avatar.js';
38
+ import './status-dot.js';
39
+ import './progress-bar.js';
40
+ import './signed-amount.js';
41
+ import '../shell/topbar-action-menu.js';
42
+ import './menu-item.js';
43
+ import './floating-panel.js';
44
+ import '../hooks/use-authed-src.js';
45
+ import './account-settings-labels.js';
46
+ import './bulk-action-bar.js';
47
+ import './list.js';
48
+ import './breadcrumbs.js';
49
+ import './toast.js';
50
+ import './description-list.js';
51
+ import './line-items.js';
52
+ import './error-boundary.js';
53
+ import './authed-image.js';
54
+ import './image-grid.js';
55
+ import './lightbox.js';
56
+ import './write-lock.js';
57
+ import './account-chips.js';
58
+ import '../lib/format.js';
59
+ import './reauth-dialog.js';
60
+ import './server-wake.js';
61
+ import '../lib/server-wake.js';
62
+ import './translation-review-labels.js';
63
+ import '../lib/translation-review.js';
64
+ import './country-select.js';
65
+ import './inline-edit-field.js';
66
+ import '../lib/iban.js';
67
+ import '../lib/phone.js';
68
+ import './sign-chip.js';
69
+ import './column-mapper.js';
70
+ import '../lib/column-mapping.js';
71
+ import '../lib/table-text.js';
72
+ import './field-parts.js';
73
+
74
+ /**
75
+ * The legal pages' frame and the kit's own sections — docs/legal-harmonization.md §3
76
+ * and §4, the 0.28 round. The labels, the column, `LegalSection`, the links and the
77
+ * footer are in `./legal`.
78
+ */
79
+ /** Who writes a section: the kit's wording, the app's own, or the kit's wording with an
80
+ * app paragraph in a fixed slot. */
81
+ type LegalSectionOwner = "kit" | "app" | "kit+app";
82
+ interface LegalSkeletonEntry {
83
+ /** The section key — its `id` and its catalogue key. `"*"` is the slot where the
84
+ * app's own sections go (zero or more: keksdose's `credits`, `price_pool`, …). */
85
+ key: string;
86
+ owner: LegalSectionOwner;
87
+ }
88
+ interface LegalSkeletonPage {
89
+ /** Whether the page numbers its sections ("3. Legal basis"). The imprint does not. */
90
+ numbered: boolean;
91
+ /** The sections in their order. */
92
+ sections: readonly LegalSkeletonEntry[];
93
+ }
94
+ /**
95
+ * The section order every app's legal pages follow (§4.2), as data — so an app's test
96
+ * can assert that its pages do, and so the order lives in one place, not in three apps'
97
+ * reading of a table. `LegalPage` reads `numbered` from it.
98
+ *
99
+ * An app's test, given the section ids its page rendered in order:
100
+ *
101
+ * const fixed = LEGAL_SKELETON.privacy.sections.map((s) => s.key).filter((k) => k !== "*");
102
+ * expect(ids.filter((id) => fixed.includes(id))).toEqual(fixed);
103
+ *
104
+ * Every fixed key is there, in the skeleton's order; the ids that are not in it are the
105
+ * app's own sections, which belong where `"*"` stands.
106
+ */
107
+ declare const LEGAL_SKELETON: Readonly<Record<LegalPageKey, LegalSkeletonPage>>;
108
+ /** The sections the kit writes (§4.3), on whichever page they sit. `contact` is on two
109
+ * pages, with two texts; the page decides which. */
110
+ type LegalKitSectionKey = "operator" | "contact" | "disclaimer" | "controller" | "legal_basis" | "browser" | "rights" | "warranty" | "liability" | "changes" | "law";
111
+ interface LegalKitSectionBase {
112
+ /** Default: the enclosing {@link LegalPage}'s page — needed outside one, and for
113
+ * `contact` only (it is on two pages). */
114
+ page?: LegalPageKey;
115
+ /** Default: the enclosing {@link LegalPage}'s operator — needed outside one, by the
116
+ * sections that name it (operator, both contacts, controller, law). */
117
+ operator?: LegalOperator;
118
+ /** Default: one level below the page's title (`h2` under an `h1`). */
119
+ headingAs?: "h2" | "h3";
120
+ labels?: LabelOverride<LegalLabels>;
121
+ }
122
+ /**
123
+ * One of the kit's sections, by key. `children` is the app's paragraph where §4.2 says
124
+ * "kit + app" — and only there, which the type holds an app to: the other sections'
125
+ * wording is identical in every app, and an app that needs to say more says it in a
126
+ * section of its own. `browser` takes the app's list of what it keeps, as `entries`.
127
+ */
128
+ type LegalKitSectionProps = LegalKitSectionBase & ({
129
+ section: "browser";
130
+ /** What this app keeps in the browser, one entry per item — rendered as a `<ul>`
131
+ * between the kit's two sentences. The app's words, in every language it serves. */
132
+ entries: readonly string[];
133
+ /** After the kit's text: what sign-out removes beyond the tokens, what stays. */
134
+ children?: ReactNode;
135
+ } | {
136
+ section: "legal_basis" | "rights";
137
+ entries?: never;
138
+ /** `legal_basis`: after the kit's paragraph (consent, where an app relies on
139
+ * it). `rights`: between the list of rights and the supervisory authorities
140
+ * (how to export, how to delete). A plain string keeps its line breaks and has
141
+ * its `{ref:key}` tokens resolved. */
142
+ children?: ReactNode;
143
+ } | {
144
+ section: Exclude<LegalKitSectionKey, "browser" | "legal_basis" | "rights">;
145
+ entries?: never;
146
+ children?: never;
147
+ });
148
+ /**
149
+ * One of the kit's sections (§4.3) — `<LegalKitSection section="warranty" />` — with its
150
+ * heading, its `id` (the key: `/terms#warranty`) and, on a numbered page, its number.
151
+ *
152
+ * The words are the kit's, in the `legal` labels, filled in with the operator; an app
153
+ * adds only what §4.2 gives it a slot for. Inside a {@link LegalPage} the page and the
154
+ * operator come from it, so a page reads as its section list:
155
+ *
156
+ * <LegalPage page="privacy" operator={OPERATOR}>
157
+ * <LegalKitSection section="controller" />
158
+ * <LegalSection key="data" heading={t("legal.privacy.data.title")} body={…} />
159
+ * <LegalKitSection section="legal_basis">{t("legal.privacy.legal_basis.app")}</LegalKitSection>
160
+ * …
161
+ * </LegalPage>
162
+ *
163
+ * A key that is not one of the page's kit sections throws, naming the ones that are: it
164
+ * is a typo in code, not a state a user can reach.
165
+ */
166
+ declare function LegalKitSection(props: LegalKitSectionProps): react.JSX.Element;
167
+ interface LegalPageProps {
168
+ /** Which page: the title, the default notice, whether the sections are numbered. */
169
+ page: LegalPageKey;
170
+ /** Who runs the app — the values the kit's sections name. The same in every app's
171
+ * three pages; the kit holds none (§5). */
172
+ operator: LegalOperator;
173
+ /**
174
+ * The sections, in reading order: {@link LegalKitSection}s and {@link LegalSection}s.
175
+ *
176
+ * They must be DIRECT children — or inside fragments, or in an array
177
+ * (`SECTIONS.map(…)`). The page reads them before they render, to know every
178
+ * section's number in advance: that is what lets a `{ref:key}` point forward
179
+ * (keksdose's section 2 refers to section 10). A section wrapped in a component of the
180
+ * app's own is invisible to that walk and renders unnumbered, with no key.
181
+ */
182
+ children: ReactNode;
183
+ /** The app's public header — the one a signed-out visitor already sees (keksdose's
184
+ * `LandingHeader`, Kurvenschmiede's `AppTopBar` without the shell). */
185
+ header?: ReactNode;
186
+ /** Default: `<LegalFooter />` with this page marked. `null` for none. */
187
+ footer?: ReactNode;
188
+ /** The back link's target. Default `/`, which takes a signed-in user into the app and
189
+ * a signed-out one to the landing or sign-in page. */
190
+ homeHref?: string;
191
+ /** Default: the kit's beta notice on the imprint and the terms, its privacy notice on
192
+ * the privacy policy (§3.2). `null` for none. */
193
+ notice?: ReactNode;
194
+ /** The language the operator's country is named in. Default: the `<UiKitProvider
195
+ * locale>`, else English. */
196
+ locale?: string;
197
+ /** The title's element. Default `h1`; `h2` for a page shown inside another (a
198
+ * preview), whose sections then take `h3`. */
199
+ headingAs?: "h1" | "h2";
200
+ /** `false` draws the column as a `<div>` instead of `<main>` — for a page embedded in
201
+ * one that has its own `<main>`. Default true. */
202
+ landmark?: boolean;
203
+ /** Default true: {@link useNoIndex}. `false` only where the page is not the page — a
204
+ * preview inside another page. */
205
+ noIndex?: boolean;
206
+ /** On the outermost element (a full-height column). */
207
+ className?: string;
208
+ /** The `legal` labels for this page and everything in it — sections, footer,
209
+ * checkbox — on top of the provider's. */
210
+ labels?: LabelOverride<LegalLabels>;
211
+ }
212
+ /**
213
+ * A legal page — Imprint, Privacy Policy or Terms — in the frame every app uses (§3.2):
214
+ * the app's public header, the kit's column (back link, title, notice, sections) and the
215
+ * public footer. keksdose's `features/legal/legal-layout.tsx`, the reference: its
216
+ * `LegalPage` drew exactly this around the kit's `LegalLayout`, and kastlan and
217
+ * Kurvenschmiede each drew a different frame (an auth card, the signed-in app shell).
218
+ * Signed-in users see the same frame: the pages are public and outside the app shell.
219
+ *
220
+ * What it adds to the column:
221
+ * - the title, from `legal.titles`, and "← Back to home" pointing at `homeHref`;
222
+ * - the default notice per page — the beta notice, or the privacy notice on the privacy
223
+ * policy, whose technical sections describe running code (§3.2, §7.3);
224
+ * - numbers: the privacy and terms sections are "N. Title" in render order, the
225
+ * imprint's are not (§4.1). The titles in the catalogues carry no number, so a
226
+ * section added in the middle renumbers the rest instead of leaving them wrong;
227
+ * - ids: every section's `id` is its key (`/privacy#rights`), which keeps
228
+ * Kurvenschmiede's deep links working;
229
+ * - `{ref:key}` in a section's text becomes that section's number, linked — forward
230
+ * references included, since the page knows the order before any section renders
231
+ * (see `children` for what that asks of the tree);
232
+ * - `useNoIndex()`.
233
+ */
234
+ declare function LegalPage({ page, operator, children, header, footer, homeHref, notice, locale: localeProp, headingAs, landmark, noIndex, className, labels: labelsProp, }: LegalPageProps): react.JSX.Element;
235
+ interface LegalAcceptCheckboxProps extends Omit<CheckboxProps, "label" | "checked" | "onCheckedChange" | "required"> {
236
+ checked: boolean;
237
+ onCheckedChange: (checked: boolean) => void;
238
+ /** Default `/terms`. */
239
+ termsHref?: string;
240
+ /** Default `/privacy`. */
241
+ privacyHref?: string;
242
+ labels?: LabelOverride<LegalLabels>;
243
+ ref?: Ref<HTMLInputElement>;
244
+ }
245
+ /**
246
+ * The register page's "I accept the [Terms of Service] and the [Privacy Policy]" (§3.4):
247
+ * keksdose's checkbox (features/auth/register-page.tsx), for every app.
248
+ *
249
+ * A REQUIRED kit `Checkbox` — not a Switch: a form answer that waits for the submit
250
+ * button. The app keeps its submit disabled while it is unticked, so there is never a
251
+ * failed attempt and no `error` to show. Nothing is sent to the backend: no stored
252
+ * version, no re-acceptance (Marcel, §2.4).
253
+ *
254
+ * The label is ONE template, `legal.accept`, so a language puts the links where its
255
+ * grammar needs them, articles included — fr "J’accepte les {terms} et la {privacy}",
256
+ * it "Accetto le {terms} e l’{privacy}" with no space after the elided article. The link
257
+ * texts are the page titles (`legal.titles`), as on the pages themselves.
258
+ */
259
+ declare function LegalAcceptCheckbox({ checked, onCheckedChange, termsHref, privacyHref, labels: labelsProp, ref, ...rest }: LegalAcceptCheckboxProps): react.JSX.Element;
260
+
261
+ export { LEGAL_SKELETON, LegalAcceptCheckbox, type LegalAcceptCheckboxProps, LegalKitSection, type LegalKitSectionKey, type LegalKitSectionProps, LegalPage, type LegalPageProps, type LegalSectionOwner, type LegalSkeletonEntry, type LegalSkeletonPage };