@eifi1/ui-kit 0.26.0 → 0.27.1

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 (162) hide show
  1. package/README.md +15 -4
  2. package/dist/chart.d.ts +13 -9
  3. package/dist/components/account-chips.d.ts +1 -1
  4. package/dist/components/amount-input.d.ts +13 -9
  5. package/dist/components/button-group.d.ts +13 -9
  6. package/dist/components/calculator.d.ts +13 -9
  7. package/dist/components/confirm-dialog.d.ts +13 -9
  8. package/dist/components/copy-button.d.ts +10 -6
  9. package/dist/components/danger-confirm.d.ts +13 -9
  10. package/dist/components/data-table-cells.d.ts +1 -1
  11. package/dist/components/data-table-filter-popover.d.ts +1 -1
  12. package/dist/components/data-table-filters.d.ts +1 -1
  13. package/dist/components/data-table-labels.d.ts +1 -1
  14. package/dist/components/data-table-pagination.d.ts +1 -1
  15. package/dist/components/data-table.d.ts +1 -1
  16. package/dist/components/data-table.js.map +1 -1
  17. package/dist/components/facing-pair.d.ts +13 -9
  18. package/dist/components/file-button.d.ts +13 -9
  19. package/dist/components/file-dropzone.d.ts +13 -9
  20. package/dist/components/form-actions.d.ts +13 -9
  21. package/dist/components/iban-input.d.ts +13 -9
  22. package/dist/components/language-select.d.ts +13 -9
  23. package/dist/components/legal.d.ts +5 -2
  24. package/dist/components/legal.js +4 -10
  25. package/dist/components/legal.js.map +1 -1
  26. package/dist/components/money-field.d.ts +13 -9
  27. package/dist/components/number-field.d.ts +13 -9
  28. package/dist/components/number-input.d.ts +13 -9
  29. package/dist/components/numpad-sheet.d.ts +13 -9
  30. package/dist/components/phone-input.d.ts +13 -9
  31. package/dist/components/series-chart.d.ts +13 -9
  32. package/dist/components/settings-fields.d.ts +13 -9
  33. package/dist/components/share-card.d.ts +13 -9
  34. package/dist/components/text-link.d.ts +13 -9
  35. package/dist/components/time-input.d.ts +13 -9
  36. package/dist/components/ui.d.ts +10 -6
  37. package/dist/components/use-table-state.d.ts +1 -1
  38. package/dist/{data-table-labels-Cdn1QS2k.d.ts → data-table-labels-DUELeXpa.d.ts} +5 -0
  39. package/dist/data-table.d.ts +1 -1
  40. package/dist/feedback/feedback-attachment.d.ts +13 -9
  41. package/dist/feedback/feedback-attachment.js +3 -3
  42. package/dist/feedback/feedback-attachment.js.map +1 -1
  43. package/dist/feedback/feedback-capture.d.ts +71 -0
  44. package/dist/feedback/feedback-capture.js +194 -0
  45. package/dist/feedback/feedback-capture.js.map +1 -0
  46. package/dist/feedback/feedback-context.d.ts +71 -0
  47. package/dist/feedback/feedback-context.js +96 -0
  48. package/dist/feedback/feedback-context.js.map +1 -0
  49. package/dist/feedback/feedback-crash.d.ts +276 -0
  50. package/dist/feedback/feedback-crash.js +225 -0
  51. package/dist/feedback/feedback-crash.js.map +1 -0
  52. package/dist/feedback/feedback-dialog.d.ts +13 -9
  53. package/dist/feedback/feedback-dialog.js +5 -3
  54. package/dist/feedback/feedback-dialog.js.map +1 -1
  55. package/dist/feedback/feedback-inbox.d.ts +13 -9
  56. package/dist/feedback/feedback-inbox.js +89 -49
  57. package/dist/feedback/feedback-inbox.js.map +1 -1
  58. package/dist/feedback/feedback-labels.d.ts +71 -0
  59. package/dist/feedback/feedback-labels.js +48 -0
  60. package/dist/feedback/feedback-labels.js.map +1 -0
  61. package/dist/feedback/feedback-menu.d.ts +71 -0
  62. package/dist/feedback/feedback-menu.js +61 -0
  63. package/dist/feedback/feedback-menu.js.map +1 -0
  64. package/dist/feedback/feedback-record.d.ts +71 -0
  65. package/dist/feedback/feedback-record.js +104 -0
  66. package/dist/feedback/feedback-record.js.map +1 -0
  67. package/dist/feedback/feedback-row-detail.d.ts +71 -0
  68. package/dist/feedback/feedback-row-detail.js +437 -0
  69. package/dist/feedback/feedback-row-detail.js.map +1 -0
  70. package/dist/feedback/feedback-status-undo.d.ts +71 -0
  71. package/dist/feedback/feedback-status-undo.js +40 -0
  72. package/dist/feedback/feedback-status-undo.js.map +1 -0
  73. package/dist/feedback/feedback-submit.d.ts +182 -0
  74. package/dist/feedback/feedback-submit.js +101 -0
  75. package/dist/feedback/feedback-submit.js.map +1 -0
  76. package/dist/feedback/feedback-swipe.d.ts +152 -0
  77. package/dist/feedback/feedback-swipe.js +73 -0
  78. package/dist/feedback/feedback-swipe.js.map +1 -0
  79. package/dist/feedback/feedback-table.d.ts +71 -0
  80. package/dist/feedback/feedback-table.js +357 -0
  81. package/dist/feedback/feedback-table.js.map +1 -0
  82. package/dist/feedback/feedback-thread.d.ts +13 -9
  83. package/dist/feedback.d.ts +17 -9
  84. package/dist/feedback.js +11 -0
  85. package/dist/feedback.js.map +1 -1
  86. package/dist/hooks/use-file-drop.d.ts +13 -9
  87. package/dist/i18n/defaults.d.ts +13 -9
  88. package/dist/i18n/defaults.js +16 -0
  89. package/dist/i18n/defaults.js.map +1 -1
  90. package/dist/i18n/german.d.ts +13 -9
  91. package/dist/i18n/german.js +91 -5
  92. package/dist/i18n/german.js.map +1 -1
  93. package/dist/i18n/kit-labels.d.ts +7 -3
  94. package/dist/i18n/kit-labels.js.map +1 -1
  95. package/dist/i18n/languages.d.ts +13 -9
  96. package/dist/i18n/locales/de-CH.d.ts +13 -9
  97. package/dist/i18n/locales/en.d.ts +13 -9
  98. package/dist/i18n/locales/en.js +10 -1
  99. package/dist/i18n/locales/en.js.map +1 -1
  100. package/dist/i18n/locales/es.d.ts +13 -9
  101. package/dist/i18n/locales/es.js +89 -5
  102. package/dist/i18n/locales/es.js.map +1 -1
  103. package/dist/i18n/locales/fr.d.ts +13 -9
  104. package/dist/i18n/locales/fr.js +89 -5
  105. package/dist/i18n/locales/fr.js.map +1 -1
  106. package/dist/i18n/locales/hu.d.ts +13 -9
  107. package/dist/i18n/locales/hu.js +90 -5
  108. package/dist/i18n/locales/hu.js.map +1 -1
  109. package/dist/i18n/locales/it.d.ts +13 -9
  110. package/dist/i18n/locales/it.js +89 -5
  111. package/dist/i18n/locales/it.js.map +1 -1
  112. package/dist/i18n/locales/zh.d.ts +13 -9
  113. package/dist/i18n/locales/zh.js +89 -5
  114. package/dist/i18n/locales/zh.js.map +1 -1
  115. package/dist/i18n/review.d.ts +16 -11
  116. package/dist/i18n/review.js +11 -0
  117. package/dist/i18n/review.js.map +1 -1
  118. package/dist/i18n/swiss.js +3 -1
  119. package/dist/i18n/swiss.js.map +1 -1
  120. package/dist/index.d.ts +6 -2
  121. package/dist/index.js +11 -0
  122. package/dist/index.js.map +1 -1
  123. package/dist/{feedback-BXKH-ToU.d.ts → kit-labels-DQg82eHB.d.ts} +1275 -25
  124. package/dist/rhf/fields.d.ts +13 -9
  125. package/dist/rhf/form.d.ts +13 -9
  126. package/dist/rhf.d.ts +13 -9
  127. package/dist/shell/app-shell.d.ts +13 -9
  128. package/dist/shell/top-bar-brand.d.ts +13 -9
  129. package/dist/shell.d.ts +11 -11
  130. package/dist/wizard/stepper-nav.d.ts +13 -9
  131. package/dist/wizard.d.ts +13 -9
  132. package/package.json +6 -1
  133. package/src/components/data-table.tsx +5 -0
  134. package/src/components/legal.tsx +8 -7
  135. package/src/feedback/feedback-attachment.tsx +19 -3
  136. package/src/feedback/feedback-capture.ts +285 -0
  137. package/src/feedback/feedback-context.tsx +217 -0
  138. package/src/feedback/feedback-crash.ts +547 -0
  139. package/src/feedback/feedback-dialog.tsx +29 -6
  140. package/src/feedback/feedback-inbox.tsx +131 -27
  141. package/src/feedback/feedback-labels.ts +127 -0
  142. package/src/feedback/feedback-menu.tsx +132 -0
  143. package/src/feedback/feedback-record.ts +345 -0
  144. package/src/feedback/feedback-row-detail.tsx +825 -0
  145. package/src/feedback/feedback-status-undo.ts +111 -0
  146. package/src/feedback/feedback-submit.tsx +224 -0
  147. package/src/feedback/feedback-swipe.tsx +170 -0
  148. package/src/feedback/feedback-table.tsx +757 -0
  149. package/src/feedback.ts +13 -0
  150. package/src/i18n/defaults.ts +16 -0
  151. package/src/i18n/german.ts +98 -5
  152. package/src/i18n/kit-labels.tsx +20 -0
  153. package/src/i18n/locales/en.ts +15 -1
  154. package/src/i18n/locales/es.ts +96 -5
  155. package/src/i18n/locales/fr.ts +95 -5
  156. package/src/i18n/locales/hu.ts +94 -5
  157. package/src/i18n/locales/it.ts +97 -5
  158. package/src/i18n/locales/zh.ts +90 -5
  159. package/src/i18n/review.ts +14 -2
  160. package/src/i18n/swiss.ts +5 -1
  161. package/src/index.ts +13 -0
  162. package/tokens.css +4 -0
@@ -6,11 +6,8 @@ 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 '../feedback-BXKH-ToU.js';
10
- import './tooltip.js';
11
- import '../hooks/use-anchored-rect.js';
12
- import '../lib/clipping.js';
13
- import '../data-table-labels-Cdn1QS2k.js';
9
+ import '../kit-labels-DQg82eHB.js';
10
+ import '../data-table-labels-DUELeXpa.js';
14
11
  import './data-table-sort.js';
15
12
  import './swipeable-row.js';
16
13
  import './mini-calendar.js';
@@ -19,6 +16,9 @@ import './popover.js';
19
16
  import './chip.js';
20
17
  import 'lucide-react';
21
18
  import './field-sync.js';
19
+ import './tooltip.js';
20
+ import '../hooks/use-anchored-rect.js';
21
+ import '../lib/clipping.js';
22
22
  import '../wizard/types.js';
23
23
  import '../tour/tour.js';
24
24
  import '../search/command-palette.js';
@@ -38,19 +38,23 @@ import './dialog-frame.js';
38
38
  import './modal.js';
39
39
  import '../hooks/use-search-param-state.js';
40
40
  import './measured-grid.js';
41
- import './account-settings-labels.js';
41
+ import './user-avatar.js';
42
+ import './status-dot.js';
43
+ import './progress-bar.js';
44
+ import './signed-amount.js';
45
+ import '../shell/topbar-action-menu.js';
46
+ import './menu-item.js';
42
47
  import './floating-panel.js';
48
+ import '../hooks/use-authed-src.js';
49
+ import './account-settings-labels.js';
43
50
  import './bulk-action-bar.js';
44
51
  import './list.js';
45
- import './signed-amount.js';
46
52
  import './breadcrumbs.js';
47
53
  import './toast.js';
48
54
  import './description-list.js';
49
55
  import './line-items.js';
50
- import './progress-bar.js';
51
56
  import './error-boundary.js';
52
57
  import './authed-image.js';
53
- import '../hooks/use-authed-src.js';
54
58
  import './image-grid.js';
55
59
  import './lightbox.js';
56
60
  import './write-lock.js';
@@ -1,9 +1,6 @@
1
1
  import 'react';
2
- export { aa as DEFAULT_FILE_PICKER_LABELS, bq as FileButton, br as FileButtonProps, c$ as FilePickHandler, bt as FilePickerLabels, bu as FileRejection, bv as FileRejectionReason, bw as FileScreenOptions, cE as UseFilePickerOptions, cF as UseFilePickerReturn, d1 as formatAccept, d2 as judgePick, cJ as matchesAccept, d3 as screenFiles, d4 as summariseRejections, cR as useFilePicker } from '../feedback-BXKH-ToU.js';
3
- import './tooltip.js';
4
- import '../hooks/use-anchored-rect.js';
5
- import '../lib/clipping.js';
6
- import '../data-table-labels-Cdn1QS2k.js';
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';
3
+ import '../data-table-labels-DUELeXpa.js';
7
4
  import './data-table-sort.js';
8
5
  import './swipeable-row.js';
9
6
  import './mini-calendar.js';
@@ -12,6 +9,9 @@ import './popover.js';
12
9
  import './chip.js';
13
10
  import 'lucide-react';
14
11
  import './field-sync.js';
12
+ import './tooltip.js';
13
+ import '../hooks/use-anchored-rect.js';
14
+ import '../lib/clipping.js';
15
15
  import '../wizard/types.js';
16
16
  import '../tour/tour.js';
17
17
  import '../search/command-palette.js';
@@ -32,19 +32,23 @@ import './dialog-frame.js';
32
32
  import './modal.js';
33
33
  import '../hooks/use-search-param-state.js';
34
34
  import './measured-grid.js';
35
- import './account-settings-labels.js';
35
+ import './user-avatar.js';
36
+ import './status-dot.js';
37
+ import './progress-bar.js';
38
+ import './signed-amount.js';
39
+ import '../shell/topbar-action-menu.js';
40
+ import './menu-item.js';
36
41
  import './floating-panel.js';
42
+ import '../hooks/use-authed-src.js';
43
+ import './account-settings-labels.js';
37
44
  import './bulk-action-bar.js';
38
45
  import './list.js';
39
- import './signed-amount.js';
40
46
  import './breadcrumbs.js';
41
47
  import './toast.js';
42
48
  import './description-list.js';
43
49
  import './line-items.js';
44
- import './progress-bar.js';
45
50
  import './error-boundary.js';
46
51
  import './authed-image.js';
47
- import '../hooks/use-authed-src.js';
48
52
  import './image-grid.js';
49
53
  import './lightbox.js';
50
54
  import './write-lock.js';
@@ -1,10 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ComponentPropsWithoutRef, ReactNode } from 'react';
3
- import { bu as FileRejection, c$ as FilePickHandler, bt as FilePickerLabels } from '../feedback-BXKH-ToU.js';
4
- import './tooltip.js';
5
- import '../hooks/use-anchored-rect.js';
6
- import '../lib/clipping.js';
7
- import '../data-table-labels-Cdn1QS2k.js';
3
+ import { cS as FileRejection, ej as FilePickHandler, cR as FilePickerLabels } from '../kit-labels-DQg82eHB.js';
4
+ import '../data-table-labels-DUELeXpa.js';
8
5
  import './data-table-sort.js';
9
6
  import './swipeable-row.js';
10
7
  import './mini-calendar.js';
@@ -13,6 +10,9 @@ import './popover.js';
13
10
  import './chip.js';
14
11
  import 'lucide-react';
15
12
  import './field-sync.js';
13
+ import './tooltip.js';
14
+ import '../hooks/use-anchored-rect.js';
15
+ import '../lib/clipping.js';
16
16
  import '../wizard/types.js';
17
17
  import '../tour/tour.js';
18
18
  import '../search/command-palette.js';
@@ -33,19 +33,23 @@ import './dialog-frame.js';
33
33
  import './modal.js';
34
34
  import '../hooks/use-search-param-state.js';
35
35
  import './measured-grid.js';
36
- import './account-settings-labels.js';
36
+ import './user-avatar.js';
37
+ import './status-dot.js';
38
+ import './progress-bar.js';
39
+ import './signed-amount.js';
40
+ import '../shell/topbar-action-menu.js';
41
+ import './menu-item.js';
37
42
  import './floating-panel.js';
43
+ import '../hooks/use-authed-src.js';
44
+ import './account-settings-labels.js';
38
45
  import './bulk-action-bar.js';
39
46
  import './list.js';
40
- import './signed-amount.js';
41
47
  import './breadcrumbs.js';
42
48
  import './toast.js';
43
49
  import './description-list.js';
44
50
  import './line-items.js';
45
- import './progress-bar.js';
46
51
  import './error-boundary.js';
47
52
  import './authed-image.js';
48
- import '../hooks/use-authed-src.js';
49
53
  import './image-grid.js';
50
54
  import './lightbox.js';
51
55
  import './write-lock.js';
@@ -1,10 +1,7 @@
1
1
  import 'react';
2
2
  import 'lucide-react';
3
- export { ab as DEFAULT_FORM_ACTIONS_LABELS, bz as FormActions, bA as FormActionsAlign, bB as FormActionsDestructive, bC as FormActionsLabels, bD as FormActionsPlacement, bE as FormActionsProps, bF as FormActionsStickyWithin, bG as FormActionsSubmitProps, bH as FormActionsSubmitShortcut, c7 as ResponsiveFormActionsPlacement } from '../feedback-BXKH-ToU.js';
4
- import './tooltip.js';
5
- import '../hooks/use-anchored-rect.js';
6
- import '../lib/clipping.js';
7
- import '../data-table-labels-Cdn1QS2k.js';
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';
4
+ import '../data-table-labels-DUELeXpa.js';
8
5
  import './data-table-sort.js';
9
6
  import './swipeable-row.js';
10
7
  import './mini-calendar.js';
@@ -12,6 +9,9 @@ import './calendar-heatmap.js';
12
9
  import './popover.js';
13
10
  import './chip.js';
14
11
  import './field-sync.js';
12
+ import './tooltip.js';
13
+ import '../hooks/use-anchored-rect.js';
14
+ import '../lib/clipping.js';
15
15
  import '../wizard/types.js';
16
16
  import '../tour/tour.js';
17
17
  import '../search/command-palette.js';
@@ -32,19 +32,23 @@ import './dialog-frame.js';
32
32
  import './modal.js';
33
33
  import '../hooks/use-search-param-state.js';
34
34
  import './measured-grid.js';
35
- import './account-settings-labels.js';
35
+ import './user-avatar.js';
36
+ import './status-dot.js';
37
+ import './progress-bar.js';
38
+ import './signed-amount.js';
39
+ import '../shell/topbar-action-menu.js';
40
+ import './menu-item.js';
36
41
  import './floating-panel.js';
42
+ import '../hooks/use-authed-src.js';
43
+ import './account-settings-labels.js';
37
44
  import './bulk-action-bar.js';
38
45
  import './list.js';
39
- import './signed-amount.js';
40
46
  import './breadcrumbs.js';
41
47
  import './toast.js';
42
48
  import './description-list.js';
43
49
  import './line-items.js';
44
- import './progress-bar.js';
45
50
  import './error-boundary.js';
46
51
  import './authed-image.js';
47
- import '../hooks/use-authed-src.js';
48
52
  import './image-grid.js';
49
53
  import './lightbox.js';
50
54
  import './write-lock.js';
@@ -1,10 +1,7 @@
1
1
  import 'react';
2
2
  import '../lib/iban.js';
3
- export { ac as DEFAULT_IBAN_INPUT_LABELS, bI as IbanInput, bJ as IbanInputLabels, bK as IbanInputProps } from '../feedback-BXKH-ToU.js';
4
- import './tooltip.js';
5
- import '../hooks/use-anchored-rect.js';
6
- import '../lib/clipping.js';
7
- import '../data-table-labels-Cdn1QS2k.js';
3
+ export { cl as DEFAULT_IBAN_INPUT_LABELS, d4 as IbanInput, d5 as IbanInputLabels, d6 as IbanInputProps } from '../kit-labels-DQg82eHB.js';
4
+ import '../data-table-labels-DUELeXpa.js';
8
5
  import './data-table-sort.js';
9
6
  import './swipeable-row.js';
10
7
  import './mini-calendar.js';
@@ -13,6 +10,9 @@ import './popover.js';
13
10
  import './chip.js';
14
11
  import 'lucide-react';
15
12
  import './field-sync.js';
13
+ import './tooltip.js';
14
+ import '../hooks/use-anchored-rect.js';
15
+ import '../lib/clipping.js';
16
16
  import '../wizard/types.js';
17
17
  import '../tour/tour.js';
18
18
  import '../search/command-palette.js';
@@ -33,19 +33,23 @@ import './dialog-frame.js';
33
33
  import './modal.js';
34
34
  import '../hooks/use-search-param-state.js';
35
35
  import './measured-grid.js';
36
- import './account-settings-labels.js';
36
+ import './user-avatar.js';
37
+ import './status-dot.js';
38
+ import './progress-bar.js';
39
+ import './signed-amount.js';
40
+ import '../shell/topbar-action-menu.js';
41
+ import './menu-item.js';
37
42
  import './floating-panel.js';
43
+ import '../hooks/use-authed-src.js';
44
+ import './account-settings-labels.js';
38
45
  import './bulk-action-bar.js';
39
46
  import './list.js';
40
- import './signed-amount.js';
41
47
  import './breadcrumbs.js';
42
48
  import './toast.js';
43
49
  import './description-list.js';
44
50
  import './line-items.js';
45
- import './progress-bar.js';
46
51
  import './error-boundary.js';
47
52
  import './authed-image.js';
48
- import '../hooks/use-authed-src.js';
49
53
  import './image-grid.js';
50
54
  import './lightbox.js';
51
55
  import './write-lock.js';
@@ -1,16 +1,13 @@
1
1
  import * as react from 'react';
2
2
  import { KitLanguageCode, KitLanguage } from '../i18n/languages.js';
3
- import { c9 as SelectProps } from '../feedback-BXKH-ToU.js';
3
+ import { dy as SelectProps } from '../kit-labels-DQg82eHB.js';
4
4
  import '../shell/topbar-controls.js';
5
5
  import '../theme/palette-presets.js';
6
6
  import '../theme/chart-palette.js';
7
7
  import '../theme/theme-store.js';
8
8
  import 'zustand/middleware';
9
9
  import 'zustand';
10
- import './tooltip.js';
11
- import '../hooks/use-anchored-rect.js';
12
- import '../lib/clipping.js';
13
- import '../data-table-labels-Cdn1QS2k.js';
10
+ import '../data-table-labels-DUELeXpa.js';
14
11
  import './data-table-sort.js';
15
12
  import './swipeable-row.js';
16
13
  import './mini-calendar.js';
@@ -19,6 +16,9 @@ import './popover.js';
19
16
  import './chip.js';
20
17
  import 'lucide-react';
21
18
  import './field-sync.js';
19
+ import './tooltip.js';
20
+ import '../hooks/use-anchored-rect.js';
21
+ import '../lib/clipping.js';
22
22
  import '../wizard/types.js';
23
23
  import '../tour/tour.js';
24
24
  import '../search/command-palette.js';
@@ -39,19 +39,23 @@ import './dialog-frame.js';
39
39
  import './modal.js';
40
40
  import '../hooks/use-search-param-state.js';
41
41
  import './measured-grid.js';
42
- import './account-settings-labels.js';
42
+ import './user-avatar.js';
43
+ import './status-dot.js';
44
+ import './progress-bar.js';
45
+ import './signed-amount.js';
46
+ import '../shell/topbar-action-menu.js';
47
+ import './menu-item.js';
43
48
  import './floating-panel.js';
49
+ import '../hooks/use-authed-src.js';
50
+ import './account-settings-labels.js';
44
51
  import './bulk-action-bar.js';
45
52
  import './list.js';
46
- import './signed-amount.js';
47
53
  import './breadcrumbs.js';
48
54
  import './toast.js';
49
55
  import './description-list.js';
50
56
  import './line-items.js';
51
- import './progress-bar.js';
52
57
  import './error-boundary.js';
53
58
  import './authed-image.js';
54
- import '../hooks/use-authed-src.js';
55
59
  import './image-grid.js';
56
60
  import './lightbox.js';
57
61
  import './write-lock.js';
@@ -32,8 +32,11 @@ interface LegalLinksProps {
32
32
  /** The page being shown; its link is marked `aria-current="page"`. Usually the
33
33
  * router's pathname. */
34
34
  currentHref?: string;
35
- /** `false` renders the links without the `<nav>` — inside `AuthLayout`'s `footer`,
36
- * which wraps its footer in a `<nav>` named by `footerLabel` already. Default true. */
35
+ /** `false` renders the links without the `<nav>` landmark — inside `AuthLayout`'s
36
+ * `footer` or `TopBarActionMenu`'s `footer`, which are named `<nav>`s already. The row
37
+ * keeps its spacing and `className` either way (0.27.1: it used to return the bare
38
+ * links, so in a plain container — Kurvenschmiede's account-menu `<li>` — they ran
39
+ * together as "ImpressumDatenschutzerklärungNutz…" and overflowed). Default true. */
37
40
  nav?: boolean;
38
41
  labels?: Partial<LegalLabels>;
39
42
  className?: string;
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useKitLabels } from "../i18n/kit-labels.js";
4
4
  import { cn } from "../lib/cn.js";
5
5
  import { AlertBanner } from "./alert-banner.js";
@@ -10,15 +10,9 @@ const DEFAULT_LEGAL_LABELS = {
10
10
  function LegalLinks({ links, currentHref, nav = true, labels: labelsProp, className }) {
11
11
  const labels = useKitLabels("legal", DEFAULT_LEGAL_LABELS, labelsProp);
12
12
  const items = links.map((link) => /* @__PURE__ */ jsx(TextLink, { href: link.href, tone: "muted", current: link.href === currentHref, children: link.label }, link.href));
13
- if (!nav) return /* @__PURE__ */ jsx(Fragment, { children: items });
14
- return /* @__PURE__ */ jsx(
15
- "nav",
16
- {
17
- "aria-label": labels.navLabel,
18
- className: cn("flex flex-wrap gap-x-4 gap-y-1 text-xs", className),
19
- children: items
20
- }
21
- );
13
+ const rowClass = cn("flex flex-wrap gap-x-4 gap-y-1 text-xs", className);
14
+ if (!nav) return /* @__PURE__ */ jsx("div", { className: rowClass, children: items });
15
+ return /* @__PURE__ */ jsx("nav", { "aria-label": labels.navLabel, className: rowClass, children: items });
22
16
  }
23
17
  function LegalSection({ heading, body, children, id, headingAs: Heading = "h2" }) {
24
18
  return /* @__PURE__ */ jsxs("section", { id, className: "scroll-mt-20", children: [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/legal.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\n\nimport { useKitLabels } from \"../i18n/kit-labels\";\nimport { cn } from \"../lib/cn\";\nimport { AlertBanner } from \"./alert-banner\";\nimport { TextLink } from \"./text-link\";\n\n/**\n * The legal pages' shell — Imprint, Privacy Policy, Terms — for every app (Marcel,\n * 2026-10-02: every app has them; docs/i18n-harmonization.md H10).\n *\n * keksdose and kastlan each carried the same shell, written twice: a back link, the\n * title, a \"closed beta, not yet reviewed by a lawyer\" notice, sections of heading +\n * running text, and kastlan's row of links to the three pages with the current one\n * marked. Kurvenschmiede had none. The words stay in each app — they are the app's\n * legal statements, reviewed under the `legal` area of the translation review — and\n * only the shape moves here.\n *\n * A CONTENT COLUMN, not a page: keksdose shows its legal pages inside its public\n * landing header and footer, kastlan inside `AuthLayout` (`width=\"wide\" card={false}`,\n * no title of its own). Both put this inside their chrome; a page-owning layout would\n * have fought one of them.\n */\n\n// ── Labels ────────────────────────────────────────────────────────────────────\n\nexport interface LegalLabels {\n /** The accessible name of {@link LegalLinks}' `<nav>`. */\n navLabel: string;\n}\n\nexport const DEFAULT_LEGAL_LABELS: LegalLabels = {\n navLabel: \"Legal\",\n};\n\n// ── Links ─────────────────────────────────────────────────────────────────────\n\nexport interface LegalLink {\n href: string;\n /** \"Imprint\", \"Privacy Policy\", \"Terms\" — the app's words. */\n label: ReactNode;\n}\n\nexport interface LegalLinksProps {\n links: readonly LegalLink[];\n /** The page being shown; its link is marked `aria-current=\"page\"`. Usually the\n * router's pathname. */\n currentHref?: string;\n /** `false` renders the links without the `<nav>` — inside `AuthLayout`'s `footer`,\n * which wraps its footer in a `<nav>` named by `footerLabel` already. Default true. */\n nav?: boolean;\n labels?: Partial<LegalLabels>;\n className?: string;\n}\n\n/** The legal pages as a row of quiet links, the one you are on marked (kastlan's\n * `LegalLinks`). Wraps on a phone. */\nexport function LegalLinks({ links, currentHref, nav = true, labels: labelsProp, className }: LegalLinksProps) {\n const labels = useKitLabels(\"legal\", DEFAULT_LEGAL_LABELS, labelsProp);\n const items = links.map((link) => (\n <TextLink key={link.href} href={link.href} tone=\"muted\" current={link.href === currentHref}>\n {link.label}\n </TextLink>\n ));\n if (!nav) return <>{items}</>;\n return (\n <nav\n aria-label={labels.navLabel}\n className={cn(\"flex flex-wrap gap-x-4 gap-y-1 text-xs\", className)}\n >\n {items}\n </nav>\n );\n}\n\n// ── Section ───────────────────────────────────────────────────────────────────\n\nexport interface LegalSectionProps {\n heading: ReactNode;\n /** Running text. Line breaks in it are kept (`white-space: pre-line`), so a\n * translation can hold an address or a list as plain lines. */\n body?: string;\n /** Anything richer than plain text — links, a list — after `body`. */\n children?: ReactNode;\n /** The section's `id`, for a link to it from elsewhere (\"see §4\"). */\n id?: string;\n /** The heading's element. Default `h2`, under the layout's `h1`. */\n headingAs?: \"h2\" | \"h3\";\n}\n\nexport function LegalSection({ heading, body, children, id, headingAs: Heading = \"h2\" }: LegalSectionProps) {\n return (\n <section id={id} className=\"scroll-mt-20\">\n <Heading className=\"text-lg font-semibold text-[var(--text-primary)]\">{heading}</Heading>\n {body !== undefined && (\n <p className=\"mt-2 whitespace-pre-line text-sm leading-relaxed text-[var(--text-secondary)]\">{body}</p>\n )}\n {children !== undefined && (\n <div className=\"mt-2 text-sm leading-relaxed text-[var(--text-secondary)]\">{children}</div>\n )}\n </section>\n );\n}\n\n// ── Layout ────────────────────────────────────────────────────────────────────\n\nexport interface LegalLayoutProps {\n /** \"Imprint\", \"Privacy Policy\", \"Terms\". */\n title: ReactNode;\n /** Above the title — the app's \"← Back\" link (`<TextLink icon={ArrowLeft}>`), whose\n * target differs per app (keksdose's start page, kastlan's sign-in). */\n back?: ReactNode;\n /**\n * A notice under the title, as a warning banner with `role=\"note\"` — page furniture,\n * not an alert. Both apps say their legal texts await a lawyer's review; keksdose's\n * privacy page says something more precise than the others (its technical sections\n * describe running code), so the notice is per page, not per layout.\n */\n notice?: ReactNode;\n /** The sections — {@link LegalSection}s. */\n children: ReactNode;\n /** The three pages, linked at the end of the column with the current one marked.\n * Leave out when the page's chrome already shows them (kastlan's AuthLayout footer). */\n links?: readonly LegalLink[];\n currentHref?: string;\n /** Default `h1`: the page's heading. */\n headingAs?: \"h1\" | \"h2\";\n /** Extra classes on the column — `px-0 py-0` inside a chrome that pads already. */\n className?: string;\n labels?: Partial<LegalLabels>;\n}\n\nexport function LegalLayout({\n title,\n back,\n notice,\n children,\n links,\n currentHref,\n headingAs: Heading = \"h1\",\n className,\n labels,\n}: LegalLayoutProps) {\n return (\n <article className={cn(\"mx-auto w-full max-w-3xl px-4 py-12\", className)}>\n {back !== undefined && <div className=\"mb-4 text-sm\">{back}</div>}\n <Heading className=\"text-3xl font-bold tracking-tight text-[var(--text-primary)]\">{title}</Heading>\n {notice !== undefined && notice !== null && (\n <AlertBanner tone=\"warning\" role=\"note\" className=\"mt-4\">\n {notice}\n </AlertBanner>\n )}\n <div className=\"mt-8 space-y-8\">{children}</div>\n {links !== undefined && links.length > 0 && (\n <LegalLinks links={links} currentHref={currentHref} labels={labels} className=\"mt-12 border-t border-[var(--border)] pt-4\" />\n )}\n </article>\n );\n}\n"],"mappings":";AA4DI,SAIe,UAJf,KAgCA,YAhCA;AA1DJ,SAAS,oBAAoB;AAC7B,SAAS,UAAU;AACnB,SAAS,mBAAmB;AAC5B,SAAS,gBAAgB;AA0BlB,MAAM,uBAAoC;AAAA,EAC/C,UAAU;AACZ;AAwBO,SAAS,WAAW,EAAE,OAAO,aAAa,MAAM,MAAM,QAAQ,YAAY,UAAU,GAAoB;AAC7G,QAAM,SAAS,aAAa,SAAS,sBAAsB,UAAU;AACrE,QAAM,QAAQ,MAAM,IAAI,CAAC,SACvB,oBAAC,YAAyB,MAAM,KAAK,MAAM,MAAK,SAAQ,SAAS,KAAK,SAAS,aAC5E,eAAK,SADO,KAAK,IAEpB,CACD;AACD,MAAI,CAAC,IAAK,QAAO,gCAAG,iBAAM;AAC1B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAY,OAAO;AAAA,MACnB,WAAW,GAAG,0CAA0C,SAAS;AAAA,MAEhE;AAAA;AAAA,EACH;AAEJ;AAiBO,SAAS,aAAa,EAAE,SAAS,MAAM,UAAU,IAAI,WAAW,UAAU,KAAK,GAAsB;AAC1G,SACE,qBAAC,aAAQ,IAAQ,WAAU,gBACzB;AAAA,wBAAC,WAAQ,WAAU,oDAAoD,mBAAQ;AAAA,IAC9E,SAAS,UACR,oBAAC,OAAE,WAAU,iFAAiF,gBAAK;AAAA,IAEpG,aAAa,UACZ,oBAAC,SAAI,WAAU,6DAA6D,UAAS;AAAA,KAEzF;AAEJ;AA8BO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,UAAU;AAAA,EACrB;AAAA,EACA;AACF,GAAqB;AACnB,SACE,qBAAC,aAAQ,WAAW,GAAG,uCAAuC,SAAS,GACpE;AAAA,aAAS,UAAa,oBAAC,SAAI,WAAU,gBAAgB,gBAAK;AAAA,IAC3D,oBAAC,WAAQ,WAAU,gEAAgE,iBAAM;AAAA,IACxF,WAAW,UAAa,WAAW,QAClC,oBAAC,eAAY,MAAK,WAAU,MAAK,QAAO,WAAU,QAC/C,kBACH;AAAA,IAEF,oBAAC,SAAI,WAAU,kBAAkB,UAAS;AAAA,IACzC,UAAU,UAAa,MAAM,SAAS,KACrC,oBAAC,cAAW,OAAc,aAA0B,QAAgB,WAAU,8CAA6C;AAAA,KAE/H;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/legal.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\n\nimport { useKitLabels } from \"../i18n/kit-labels\";\nimport { cn } from \"../lib/cn\";\nimport { AlertBanner } from \"./alert-banner\";\nimport { TextLink } from \"./text-link\";\n\n/**\n * The legal pages' shell — Imprint, Privacy Policy, Terms — for every app (Marcel,\n * 2026-10-02: every app has them; docs/i18n-harmonization.md H10).\n *\n * keksdose and kastlan each carried the same shell, written twice: a back link, the\n * title, a \"closed beta, not yet reviewed by a lawyer\" notice, sections of heading +\n * running text, and kastlan's row of links to the three pages with the current one\n * marked. Kurvenschmiede had none. The words stay in each app — they are the app's\n * legal statements, reviewed under the `legal` area of the translation review — and\n * only the shape moves here.\n *\n * A CONTENT COLUMN, not a page: keksdose shows its legal pages inside its public\n * landing header and footer, kastlan inside `AuthLayout` (`width=\"wide\" card={false}`,\n * no title of its own). Both put this inside their chrome; a page-owning layout would\n * have fought one of them.\n */\n\n// ── Labels ────────────────────────────────────────────────────────────────────\n\nexport interface LegalLabels {\n /** The accessible name of {@link LegalLinks}' `<nav>`. */\n navLabel: string;\n}\n\nexport const DEFAULT_LEGAL_LABELS: LegalLabels = {\n navLabel: \"Legal\",\n};\n\n// ── Links ─────────────────────────────────────────────────────────────────────\n\nexport interface LegalLink {\n href: string;\n /** \"Imprint\", \"Privacy Policy\", \"Terms\" — the app's words. */\n label: ReactNode;\n}\n\nexport interface LegalLinksProps {\n links: readonly LegalLink[];\n /** The page being shown; its link is marked `aria-current=\"page\"`. Usually the\n * router's pathname. */\n currentHref?: string;\n /** `false` renders the links without the `<nav>` landmark — inside `AuthLayout`'s\n * `footer` or `TopBarActionMenu`'s `footer`, which are named `<nav>`s already. The row\n * keeps its spacing and `className` either way (0.27.1: it used to return the bare\n * links, so in a plain container — Kurvenschmiede's account-menu `<li>` — they ran\n * together as \"ImpressumDatenschutzerklärungNutz…\" and overflowed). Default true. */\n nav?: boolean;\n labels?: Partial<LegalLabels>;\n className?: string;\n}\n\n/** The legal pages as a row of quiet links, the one you are on marked (kastlan's\n * `LegalLinks`). Wraps on a phone. */\nexport function LegalLinks({ links, currentHref, nav = true, labels: labelsProp, className }: LegalLinksProps) {\n const labels = useKitLabels(\"legal\", DEFAULT_LEGAL_LABELS, labelsProp);\n const items = links.map((link) => (\n <TextLink key={link.href} href={link.href} tone=\"muted\" current={link.href === currentHref}>\n {link.label}\n </TextLink>\n ));\n const rowClass = cn(\"flex flex-wrap gap-x-4 gap-y-1 text-xs\", className);\n if (!nav) return <div className={rowClass}>{items}</div>;\n return (\n <nav aria-label={labels.navLabel} className={rowClass}>\n {items}\n </nav>\n );\n}\n\n// ── Section ───────────────────────────────────────────────────────────────────\n\nexport interface LegalSectionProps {\n heading: ReactNode;\n /** Running text. Line breaks in it are kept (`white-space: pre-line`), so a\n * translation can hold an address or a list as plain lines. */\n body?: string;\n /** Anything richer than plain text — links, a list — after `body`. */\n children?: ReactNode;\n /** The section's `id`, for a link to it from elsewhere (\"see §4\"). */\n id?: string;\n /** The heading's element. Default `h2`, under the layout's `h1`. */\n headingAs?: \"h2\" | \"h3\";\n}\n\nexport function LegalSection({ heading, body, children, id, headingAs: Heading = \"h2\" }: LegalSectionProps) {\n return (\n <section id={id} className=\"scroll-mt-20\">\n <Heading className=\"text-lg font-semibold text-[var(--text-primary)]\">{heading}</Heading>\n {body !== undefined && (\n <p className=\"mt-2 whitespace-pre-line text-sm leading-relaxed text-[var(--text-secondary)]\">{body}</p>\n )}\n {children !== undefined && (\n <div className=\"mt-2 text-sm leading-relaxed text-[var(--text-secondary)]\">{children}</div>\n )}\n </section>\n );\n}\n\n// ── Layout ────────────────────────────────────────────────────────────────────\n\nexport interface LegalLayoutProps {\n /** \"Imprint\", \"Privacy Policy\", \"Terms\". */\n title: ReactNode;\n /** Above the title — the app's \"← Back\" link (`<TextLink icon={ArrowLeft}>`), whose\n * target differs per app (keksdose's start page, kastlan's sign-in). */\n back?: ReactNode;\n /**\n * A notice under the title, as a warning banner with `role=\"note\"` — page furniture,\n * not an alert. Both apps say their legal texts await a lawyer's review; keksdose's\n * privacy page says something more precise than the others (its technical sections\n * describe running code), so the notice is per page, not per layout.\n */\n notice?: ReactNode;\n /** The sections — {@link LegalSection}s. */\n children: ReactNode;\n /** The three pages, linked at the end of the column with the current one marked.\n * Leave out when the page's chrome already shows them (kastlan's AuthLayout footer). */\n links?: readonly LegalLink[];\n currentHref?: string;\n /** Default `h1`: the page's heading. */\n headingAs?: \"h1\" | \"h2\";\n /** Extra classes on the column — `px-0 py-0` inside a chrome that pads already. */\n className?: string;\n labels?: Partial<LegalLabels>;\n}\n\nexport function LegalLayout({\n title,\n back,\n notice,\n children,\n links,\n currentHref,\n headingAs: Heading = \"h1\",\n className,\n labels,\n}: LegalLayoutProps) {\n return (\n <article className={cn(\"mx-auto w-full max-w-3xl px-4 py-12\", className)}>\n {back !== undefined && <div className=\"mb-4 text-sm\">{back}</div>}\n <Heading className=\"text-3xl font-bold tracking-tight text-[var(--text-primary)]\">{title}</Heading>\n {notice !== undefined && notice !== null && (\n <AlertBanner tone=\"warning\" role=\"note\" className=\"mt-4\">\n {notice}\n </AlertBanner>\n )}\n <div className=\"mt-8 space-y-8\">{children}</div>\n {links !== undefined && links.length > 0 && (\n <LegalLinks links={links} currentHref={currentHref} labels={labels} className=\"mt-12 border-t border-[var(--border)] pt-4\" />\n )}\n </article>\n );\n}\n"],"mappings":";AA+DI,cA8BA,YA9BA;AA7DJ,SAAS,oBAAoB;AAC7B,SAAS,UAAU;AACnB,SAAS,mBAAmB;AAC5B,SAAS,gBAAgB;AA0BlB,MAAM,uBAAoC;AAAA,EAC/C,UAAU;AACZ;AA2BO,SAAS,WAAW,EAAE,OAAO,aAAa,MAAM,MAAM,QAAQ,YAAY,UAAU,GAAoB;AAC7G,QAAM,SAAS,aAAa,SAAS,sBAAsB,UAAU;AACrE,QAAM,QAAQ,MAAM,IAAI,CAAC,SACvB,oBAAC,YAAyB,MAAM,KAAK,MAAM,MAAK,SAAQ,SAAS,KAAK,SAAS,aAC5E,eAAK,SADO,KAAK,IAEpB,CACD;AACD,QAAM,WAAW,GAAG,0CAA0C,SAAS;AACvE,MAAI,CAAC,IAAK,QAAO,oBAAC,SAAI,WAAW,UAAW,iBAAM;AAClD,SACE,oBAAC,SAAI,cAAY,OAAO,UAAU,WAAW,UAC1C,iBACH;AAEJ;AAiBO,SAAS,aAAa,EAAE,SAAS,MAAM,UAAU,IAAI,WAAW,UAAU,KAAK,GAAsB;AAC1G,SACE,qBAAC,aAAQ,IAAQ,WAAU,gBACzB;AAAA,wBAAC,WAAQ,WAAU,oDAAoD,mBAAQ;AAAA,IAC9E,SAAS,UACR,oBAAC,OAAE,WAAU,iFAAiF,gBAAK;AAAA,IAEpG,aAAa,UACZ,oBAAC,SAAI,WAAU,6DAA6D,UAAS;AAAA,KAEzF;AAEJ;AA8BO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,UAAU;AAAA,EACrB;AAAA,EACA;AACF,GAAqB;AACnB,SACE,qBAAC,aAAQ,WAAW,GAAG,uCAAuC,SAAS,GACpE;AAAA,aAAS,UAAa,oBAAC,SAAI,WAAU,gBAAgB,gBAAK;AAAA,IAC3D,oBAAC,WAAQ,WAAU,gEAAgE,iBAAM;AAAA,IACxF,WAAW,UAAa,WAAW,QAClC,oBAAC,eAAY,MAAK,WAAU,MAAK,QAAO,WAAU,QAC/C,kBACH;AAAA,IAEF,oBAAC,SAAI,WAAU,kBAAkB,UAAS;AAAA,IACzC,UAAU,UAAa,MAAM,SAAS,KACrC,oBAAC,cAAW,OAAc,aAA0B,QAAgB,WAAU,8CAA6C;AAAA,KAE/H;AAEJ;","names":[]}
@@ -2,11 +2,8 @@ import * as react from 'react';
2
2
  import { ComponentProps, Ref } from 'react';
3
3
  import { AmountInput } from './amount-input.js';
4
4
  import './calculator.js';
5
- import '../feedback-BXKH-ToU.js';
6
- import './tooltip.js';
7
- import '../hooks/use-anchored-rect.js';
8
- import '../lib/clipping.js';
9
- import '../data-table-labels-Cdn1QS2k.js';
5
+ import '../kit-labels-DQg82eHB.js';
6
+ import '../data-table-labels-DUELeXpa.js';
10
7
  import './data-table-sort.js';
11
8
  import './swipeable-row.js';
12
9
  import './mini-calendar.js';
@@ -15,6 +12,9 @@ import './popover.js';
15
12
  import './chip.js';
16
13
  import 'lucide-react';
17
14
  import './field-sync.js';
15
+ import './tooltip.js';
16
+ import '../hooks/use-anchored-rect.js';
17
+ import '../lib/clipping.js';
18
18
  import '../wizard/types.js';
19
19
  import '../tour/tour.js';
20
20
  import '../search/command-palette.js';
@@ -35,19 +35,23 @@ import './dialog-frame.js';
35
35
  import './modal.js';
36
36
  import '../hooks/use-search-param-state.js';
37
37
  import './measured-grid.js';
38
- import './account-settings-labels.js';
38
+ import './user-avatar.js';
39
+ import './status-dot.js';
40
+ import './progress-bar.js';
41
+ import './signed-amount.js';
42
+ import '../shell/topbar-action-menu.js';
43
+ import './menu-item.js';
39
44
  import './floating-panel.js';
45
+ import '../hooks/use-authed-src.js';
46
+ import './account-settings-labels.js';
40
47
  import './bulk-action-bar.js';
41
48
  import './list.js';
42
- import './signed-amount.js';
43
49
  import './breadcrumbs.js';
44
50
  import './toast.js';
45
51
  import './description-list.js';
46
52
  import './line-items.js';
47
- import './progress-bar.js';
48
53
  import './error-boundary.js';
49
54
  import './authed-image.js';
50
- import '../hooks/use-authed-src.js';
51
55
  import './image-grid.js';
52
56
  import './lightbox.js';
53
57
  import './write-lock.js';
@@ -2,11 +2,8 @@ import * as react from 'react';
2
2
  import { ComponentProps, ReactNode } from 'react';
3
3
  import { NumberInput } from './number-input.js';
4
4
  import './calculator.js';
5
- import '../feedback-BXKH-ToU.js';
6
- import './tooltip.js';
7
- import '../hooks/use-anchored-rect.js';
8
- import '../lib/clipping.js';
9
- import '../data-table-labels-Cdn1QS2k.js';
5
+ import '../kit-labels-DQg82eHB.js';
6
+ import '../data-table-labels-DUELeXpa.js';
10
7
  import './data-table-sort.js';
11
8
  import './swipeable-row.js';
12
9
  import './mini-calendar.js';
@@ -15,6 +12,9 @@ import './popover.js';
15
12
  import './chip.js';
16
13
  import 'lucide-react';
17
14
  import './field-sync.js';
15
+ import './tooltip.js';
16
+ import '../hooks/use-anchored-rect.js';
17
+ import '../lib/clipping.js';
18
18
  import '../wizard/types.js';
19
19
  import '../tour/tour.js';
20
20
  import '../search/command-palette.js';
@@ -35,19 +35,23 @@ import './dialog-frame.js';
35
35
  import './modal.js';
36
36
  import '../hooks/use-search-param-state.js';
37
37
  import './measured-grid.js';
38
- import './account-settings-labels.js';
38
+ import './user-avatar.js';
39
+ import './status-dot.js';
40
+ import './progress-bar.js';
41
+ import './signed-amount.js';
42
+ import '../shell/topbar-action-menu.js';
43
+ import './menu-item.js';
39
44
  import './floating-panel.js';
45
+ import '../hooks/use-authed-src.js';
46
+ import './account-settings-labels.js';
40
47
  import './bulk-action-bar.js';
41
48
  import './list.js';
42
- import './signed-amount.js';
43
49
  import './breadcrumbs.js';
44
50
  import './toast.js';
45
51
  import './description-list.js';
46
52
  import './line-items.js';
47
- import './progress-bar.js';
48
53
  import './error-boundary.js';
49
54
  import './authed-image.js';
50
- import '../hooks/use-authed-src.js';
51
55
  import './image-grid.js';
52
56
  import './lightbox.js';
53
57
  import './write-lock.js';
@@ -2,11 +2,8 @@ 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 '../feedback-BXKH-ToU.js';
6
- import './tooltip.js';
7
- import '../hooks/use-anchored-rect.js';
8
- import '../lib/clipping.js';
9
- import '../data-table-labels-Cdn1QS2k.js';
5
+ import '../kit-labels-DQg82eHB.js';
6
+ import '../data-table-labels-DUELeXpa.js';
10
7
  import './data-table-sort.js';
11
8
  import './swipeable-row.js';
12
9
  import './mini-calendar.js';
@@ -15,6 +12,9 @@ import './popover.js';
15
12
  import './chip.js';
16
13
  import 'lucide-react';
17
14
  import './field-sync.js';
15
+ import './tooltip.js';
16
+ import '../hooks/use-anchored-rect.js';
17
+ import '../lib/clipping.js';
18
18
  import '../wizard/types.js';
19
19
  import '../tour/tour.js';
20
20
  import '../search/command-palette.js';
@@ -35,19 +35,23 @@ import './dialog-frame.js';
35
35
  import './modal.js';
36
36
  import '../hooks/use-search-param-state.js';
37
37
  import './measured-grid.js';
38
- import './account-settings-labels.js';
38
+ import './user-avatar.js';
39
+ import './status-dot.js';
40
+ import './progress-bar.js';
41
+ import './signed-amount.js';
42
+ import '../shell/topbar-action-menu.js';
43
+ import './menu-item.js';
39
44
  import './floating-panel.js';
45
+ import '../hooks/use-authed-src.js';
46
+ import './account-settings-labels.js';
40
47
  import './bulk-action-bar.js';
41
48
  import './list.js';
42
- import './signed-amount.js';
43
49
  import './breadcrumbs.js';
44
50
  import './toast.js';
45
51
  import './description-list.js';
46
52
  import './line-items.js';
47
- import './progress-bar.js';
48
53
  import './error-boundary.js';
49
54
  import './authed-image.js';
50
- import '../hooks/use-authed-src.js';
51
55
  import './image-grid.js';
52
56
  import './lightbox.js';
53
57
  import './write-lock.js';
@@ -1,10 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode } from 'react';
3
- import { C as CalculatorLabels } from '../feedback-BXKH-ToU.js';
4
- import './tooltip.js';
5
- import '../hooks/use-anchored-rect.js';
6
- import '../lib/clipping.js';
7
- import '../data-table-labels-Cdn1QS2k.js';
3
+ import { bB as CalculatorLabels } from '../kit-labels-DQg82eHB.js';
4
+ import '../data-table-labels-DUELeXpa.js';
8
5
  import './data-table-sort.js';
9
6
  import './swipeable-row.js';
10
7
  import './mini-calendar.js';
@@ -13,6 +10,9 @@ import './popover.js';
13
10
  import './chip.js';
14
11
  import 'lucide-react';
15
12
  import './field-sync.js';
13
+ import './tooltip.js';
14
+ import '../hooks/use-anchored-rect.js';
15
+ import '../lib/clipping.js';
16
16
  import '../wizard/types.js';
17
17
  import '../tour/tour.js';
18
18
  import '../search/command-palette.js';
@@ -33,19 +33,23 @@ import './dialog-frame.js';
33
33
  import './modal.js';
34
34
  import '../hooks/use-search-param-state.js';
35
35
  import './measured-grid.js';
36
- import './account-settings-labels.js';
36
+ import './user-avatar.js';
37
+ import './status-dot.js';
38
+ import './progress-bar.js';
39
+ import './signed-amount.js';
40
+ import '../shell/topbar-action-menu.js';
41
+ import './menu-item.js';
37
42
  import './floating-panel.js';
43
+ import '../hooks/use-authed-src.js';
44
+ import './account-settings-labels.js';
38
45
  import './bulk-action-bar.js';
39
46
  import './list.js';
40
- import './signed-amount.js';
41
47
  import './breadcrumbs.js';
42
48
  import './toast.js';
43
49
  import './description-list.js';
44
50
  import './line-items.js';
45
- import './progress-bar.js';
46
51
  import './error-boundary.js';
47
52
  import './authed-image.js';
48
- import '../hooks/use-authed-src.js';
49
53
  import './image-grid.js';
50
54
  import './lightbox.js';
51
55
  import './write-lock.js';