@eifi1/ui-kit 0.54.0 → 0.56.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 (847) hide show
  1. package/README.md +90 -76
  2. package/dist/admin/plan-change.js +2 -2
  3. package/dist/admin/plan-change.js.map +1 -1
  4. package/dist/admin/user-roster.d.ts +6 -0
  5. package/dist/admin/user-roster.js +4 -0
  6. package/dist/admin/user-roster.js.map +1 -1
  7. package/dist/billing/billing-labels.d.ts +26 -0
  8. package/dist/billing/billing-labels.js +9 -0
  9. package/dist/billing/billing-labels.js.map +1 -1
  10. package/dist/billing/subscription-standing.d.ts +61 -0
  11. package/dist/billing/subscription-standing.js +51 -0
  12. package/dist/billing/subscription-standing.js.map +1 -0
  13. package/dist/billing/usage-meter.d.ts +52 -0
  14. package/dist/billing/usage-meter.js +52 -0
  15. package/dist/billing/usage-meter.js.map +1 -0
  16. package/dist/chart.d.ts +1 -0
  17. package/dist/chart.js +4 -0
  18. package/dist/chart.js.map +1 -1
  19. package/dist/components/alert-banner.js +2 -3
  20. package/dist/components/alert-banner.js.map +1 -1
  21. package/dist/components/amount-input.js +3 -15
  22. package/dist/components/amount-input.js.map +1 -1
  23. package/dist/components/autocomplete.js +2 -2
  24. package/dist/components/autocomplete.js.map +1 -1
  25. package/dist/components/bulk-action-bar.js +2 -1
  26. package/dist/components/bulk-action-bar.js.map +1 -1
  27. package/dist/components/button.d.ts +35 -1
  28. package/dist/components/button.js +6 -9
  29. package/dist/components/button.js.map +1 -1
  30. package/dist/components/calendar-heatmap.js +2 -2
  31. package/dist/components/calendar-heatmap.js.map +1 -1
  32. package/dist/components/camera-button.d.ts +89 -0
  33. package/dist/components/camera-button.js +122 -0
  34. package/dist/components/camera-button.js.map +1 -0
  35. package/dist/components/camera-capture.d.ts +66 -0
  36. package/dist/components/camera-capture.js +190 -0
  37. package/dist/components/camera-capture.js.map +1 -0
  38. package/dist/components/camera-labels.d.ts +20 -0
  39. package/dist/components/camera-labels.js +15 -0
  40. package/dist/components/camera-labels.js.map +1 -0
  41. package/dist/components/chart-edge.d.ts +9 -0
  42. package/dist/components/chart-edge.js +14 -3
  43. package/dist/components/chart-edge.js.map +1 -1
  44. package/dist/components/chart-zoom-core.js +34 -29
  45. package/dist/components/chart-zoom-core.js.map +1 -1
  46. package/dist/components/checkbox-group.js +1 -1
  47. package/dist/components/checkbox-group.js.map +1 -1
  48. package/dist/components/combobox-core.js +3 -2
  49. package/dist/components/combobox-core.js.map +1 -1
  50. package/dist/components/combobox.js +2 -2
  51. package/dist/components/combobox.js.map +1 -1
  52. package/dist/components/consent-again-notice-labels.d.ts +25 -0
  53. package/dist/components/consent-again-notice-labels.js +15 -0
  54. package/dist/components/consent-again-notice-labels.js.map +1 -0
  55. package/dist/components/consent-again-notice.d.ts +85 -0
  56. package/dist/components/consent-again-notice.js +94 -0
  57. package/dist/components/consent-again-notice.js.map +1 -0
  58. package/dist/components/country-select.js +2 -7
  59. package/dist/components/country-select.js.map +1 -1
  60. package/dist/components/currency-select.js +2 -2
  61. package/dist/components/currency-select.js.map +1 -1
  62. package/dist/components/danger-confirm.js +2 -2
  63. package/dist/components/danger-confirm.js.map +1 -1
  64. package/dist/components/data-table-column-settings.js +2 -2
  65. package/dist/components/data-table-column-settings.js.map +1 -1
  66. package/dist/components/data-table-fit.js.map +1 -1
  67. package/dist/components/data-table-virtual.js +13 -3
  68. package/dist/components/data-table-virtual.js.map +1 -1
  69. package/dist/components/date-field.js +2 -2
  70. package/dist/components/date-field.js.map +1 -1
  71. package/dist/components/date-picker.js +2 -2
  72. package/dist/components/date-picker.js.map +1 -1
  73. package/dist/components/date-range-picker.js +2 -6
  74. package/dist/components/date-range-picker.js.map +1 -1
  75. package/dist/components/dialog-frame.d.ts +3 -1
  76. package/dist/components/dialog-frame.js.map +1 -1
  77. package/dist/components/dropdown.js +7 -3
  78. package/dist/components/dropdown.js.map +1 -1
  79. package/dist/components/entity-combobox.js +2 -2
  80. package/dist/components/entity-combobox.js.map +1 -1
  81. package/dist/components/field-parts.d.ts +108 -6
  82. package/dist/components/field-parts.js +59 -6
  83. package/dist/components/field-parts.js.map +1 -1
  84. package/dist/components/field-suggestion-labels.d.ts +2 -0
  85. package/dist/components/field-suggestion-labels.js +10 -0
  86. package/dist/components/field-suggestion-labels.js.map +1 -0
  87. package/dist/components/field.js +1 -1
  88. package/dist/components/field.js.map +1 -1
  89. package/dist/components/file-button.d.ts +1 -1
  90. package/dist/components/file-button.js.map +1 -1
  91. package/dist/components/floating-panel.d.ts +7 -6
  92. package/dist/components/floating-panel.js +3 -17
  93. package/dist/components/floating-panel.js.map +1 -1
  94. package/dist/components/form-actions.d.ts +3 -2
  95. package/dist/components/form-actions.js.map +1 -1
  96. package/dist/components/hover-menu.js +3 -2
  97. package/dist/components/hover-menu.js.map +1 -1
  98. package/dist/components/icon-button.d.ts +23 -5
  99. package/dist/components/icon-button.js +7 -8
  100. package/dist/components/icon-button.js.map +1 -1
  101. package/dist/components/inline-confirm.js +2 -1
  102. package/dist/components/inline-confirm.js.map +1 -1
  103. package/dist/components/inline-entity-combobox.js +2 -2
  104. package/dist/components/inline-entity-combobox.js.map +1 -1
  105. package/dist/components/input.js +2 -2
  106. package/dist/components/input.js.map +1 -1
  107. package/dist/components/jump-calendar.js +3 -3
  108. package/dist/components/jump-calendar.js.map +1 -1
  109. package/dist/components/legal.d.ts +13 -1
  110. package/dist/components/legal.js +12 -0
  111. package/dist/components/legal.js.map +1 -1
  112. package/dist/components/legended-series-chart.d.ts +83 -0
  113. package/dist/components/legended-series-chart.js +77 -0
  114. package/dist/components/legended-series-chart.js.map +1 -0
  115. package/dist/components/lightbox.js +2 -1
  116. package/dist/components/lightbox.js.map +1 -1
  117. package/dist/components/mini-calendar.js +13 -5
  118. package/dist/components/mini-calendar.js.map +1 -1
  119. package/dist/components/modal.d.ts +23 -2
  120. package/dist/components/modal.js +24 -6
  121. package/dist/components/modal.js.map +1 -1
  122. package/dist/components/month-picker.d.ts +1 -1
  123. package/dist/components/month-picker.js +6 -6
  124. package/dist/components/month-picker.js.map +1 -1
  125. package/dist/components/multi-entity-combobox.js +2 -2
  126. package/dist/components/multi-entity-combobox.js.map +1 -1
  127. package/dist/components/multi-select.js +2 -6
  128. package/dist/components/multi-select.js.map +1 -1
  129. package/dist/components/number-input.js +2 -2
  130. package/dist/components/number-input.js.map +1 -1
  131. package/dist/components/page-header-layout.d.ts +18 -0
  132. package/dist/components/page-header-layout.js +23 -0
  133. package/dist/components/page-header-layout.js.map +1 -0
  134. package/dist/components/page-header-skeleton.d.ts +41 -0
  135. package/dist/components/page-header-skeleton.js +52 -0
  136. package/dist/components/page-header-skeleton.js.map +1 -0
  137. package/dist/components/page-header.js +4 -17
  138. package/dist/components/page-header.js.map +1 -1
  139. package/dist/components/popover.js +7 -2
  140. package/dist/components/popover.js.map +1 -1
  141. package/dist/components/release-notes-labels.d.ts +16 -0
  142. package/dist/components/release-notes-labels.js +18 -0
  143. package/dist/components/release-notes-labels.js.map +1 -0
  144. package/dist/components/release-notes.d.ts +65 -0
  145. package/dist/components/release-notes.js +65 -0
  146. package/dist/components/release-notes.js.map +1 -0
  147. package/dist/components/select.js +2 -2
  148. package/dist/components/select.js.map +1 -1
  149. package/dist/components/series-chart-labels.d.ts +9 -0
  150. package/dist/components/series-chart-labels.js +3 -1
  151. package/dist/components/series-chart-labels.js.map +1 -1
  152. package/dist/components/series-chart.d.ts +5 -0
  153. package/dist/components/series-chart.js +89 -36
  154. package/dist/components/series-chart.js.map +1 -1
  155. package/dist/components/toggle-group.js +3 -2
  156. package/dist/components/toggle-group.js.map +1 -1
  157. package/dist/components/treemap-layout.js.map +1 -1
  158. package/dist/components/treemap.d.ts +17 -15
  159. package/dist/components/treemap.js +167 -85
  160. package/dist/components/treemap.js.map +1 -1
  161. package/dist/eslint/index.js +1 -1
  162. package/dist/eslint/role-utilities.d.ts +2 -2
  163. package/dist/eslint/role-utilities.js.map +1 -1
  164. package/dist/feedback/feedback-inbox-page.d.ts +260 -0
  165. package/dist/feedback/feedback-inbox-page.js +207 -0
  166. package/dist/feedback/feedback-inbox-page.js.map +1 -0
  167. package/dist/feedback/feedback-vocabulary.js +2 -2
  168. package/dist/feedback/feedback-vocabulary.js.map +1 -1
  169. package/dist/feedback.d.ts +1 -0
  170. package/dist/feedback.js +6 -0
  171. package/dist/feedback.js.map +1 -1
  172. package/dist/hooks/use-debounce.d.ts +32 -5
  173. package/dist/hooks/use-debounce.js +6 -5
  174. package/dist/hooks/use-debounce.js.map +1 -1
  175. package/dist/hooks/use-file-picker.d.ts +3 -1
  176. package/dist/hooks/use-file-picker.js.map +1 -1
  177. package/dist/hooks/use-focus-trap.d.ts +19 -3
  178. package/dist/hooks/use-focus-trap.js +15 -5
  179. package/dist/hooks/use-focus-trap.js.map +1 -1
  180. package/dist/hooks/use-has-camera.d.ts +36 -0
  181. package/dist/hooks/use-has-camera.js +53 -0
  182. package/dist/hooks/use-has-camera.js.map +1 -0
  183. package/dist/hooks/use-hotkey.js +1 -10
  184. package/dist/hooks/use-hotkey.js.map +1 -1
  185. package/dist/hooks/use-overlay-history.d.ts +6 -1
  186. package/dist/hooks/use-overlay-history.js +10 -2
  187. package/dist/hooks/use-overlay-history.js.map +1 -1
  188. package/dist/i18n/defaults.js +11 -1
  189. package/dist/i18n/defaults.js.map +1 -1
  190. package/dist/i18n/german.js +75 -3
  191. package/dist/i18n/german.js.map +1 -1
  192. package/dist/i18n/kit-labels.d.ts +20 -0
  193. package/dist/i18n/kit-labels.js.map +1 -1
  194. package/dist/i18n/locales/en.js +92 -4
  195. package/dist/i18n/locales/en.js.map +3 -3
  196. package/dist/i18n/locales/es.js +71 -3
  197. package/dist/i18n/locales/es.js.map +1 -1
  198. package/dist/i18n/locales/fr.js +72 -2
  199. package/dist/i18n/locales/fr.js.map +1 -1
  200. package/dist/i18n/locales/hu.js +74 -3
  201. package/dist/i18n/locales/hu.js.map +1 -1
  202. package/dist/i18n/locales/it.js +74 -3
  203. package/dist/i18n/locales/it.js.map +1 -1
  204. package/dist/i18n/locales/zh.js +71 -3
  205. package/dist/i18n/locales/zh.js.map +1 -1
  206. package/dist/i18n/review.js +22 -1
  207. package/dist/i18n/review.js.map +1 -1
  208. package/dist/index.d.ts +24 -5
  209. package/dist/index.js +35 -1
  210. package/dist/index.js.map +1 -1
  211. package/dist/landing/landing-labels.d.ts +8 -0
  212. package/dist/landing/landing-labels.js +2 -1
  213. package/dist/landing/landing-labels.js.map +1 -1
  214. package/dist/lib/changelog.d.ts +130 -0
  215. package/dist/lib/changelog.js +137 -0
  216. package/dist/lib/changelog.js.map +1 -0
  217. package/dist/lib/clipboard-minus.js +2 -2
  218. package/dist/lib/clipboard-minus.js.map +1 -1
  219. package/dist/lib/dates.d.ts +29 -3
  220. package/dist/lib/dates.js +41 -12
  221. package/dist/lib/dates.js.map +1 -1
  222. package/dist/lib/editable-content.d.ts +33 -0
  223. package/dist/lib/editable-content.js +15 -0
  224. package/dist/lib/editable-content.js.map +1 -0
  225. package/dist/lib/focus-left.d.ts +47 -1
  226. package/dist/lib/focus-left.js +11 -2
  227. package/dist/lib/focus-left.js.map +1 -1
  228. package/dist/lib/server-wake.d.ts +49 -9
  229. package/dist/lib/server-wake.js +25 -14
  230. package/dist/lib/server-wake.js.map +1 -1
  231. package/dist/lib/session-refresh.d.ts +53 -0
  232. package/dist/lib/session-refresh.js +27 -1
  233. package/dist/lib/session-refresh.js.map +1 -1
  234. package/dist/rhf/fields.js +3 -3
  235. package/dist/rhf/fields.js.map +1 -1
  236. package/dist/shell/app-shell.d.ts +25 -1
  237. package/dist/shell/app-shell.js +3 -1
  238. package/dist/shell/app-shell.js.map +1 -1
  239. package/dist/shell/dev-menu.d.ts +3 -0
  240. package/dist/shell/dev-menu.js +4 -2
  241. package/dist/shell/dev-menu.js.map +1 -1
  242. package/dist/shell/held-changes-banner-labels.d.ts +23 -0
  243. package/dist/shell/held-changes-banner-labels.js +14 -0
  244. package/dist/shell/held-changes-banner-labels.js.map +1 -0
  245. package/dist/shell/held-changes-banner.d.ts +75 -0
  246. package/dist/shell/held-changes-banner.js +106 -0
  247. package/dist/shell/held-changes-banner.js.map +1 -0
  248. package/dist/shell/sync-status-indicator.d.ts +27 -12
  249. package/dist/shell/sync-status-indicator.js +13 -4
  250. package/dist/shell/sync-status-indicator.js.map +1 -1
  251. package/dist/shell/top-bar-parts-labels.d.ts +5 -0
  252. package/dist/shell/top-bar-parts-labels.js +3 -1
  253. package/dist/shell/top-bar-parts-labels.js.map +1 -1
  254. package/dist/shell.d.ts +2 -0
  255. package/dist/shell.js +3 -0
  256. package/dist/shell.js.map +1 -1
  257. package/dist/sync/engine.d.ts +11 -2
  258. package/dist/sync/engine.js +13 -5
  259. package/dist/sync/engine.js.map +1 -1
  260. package/dist/sync/hooks.d.ts +3 -2
  261. package/dist/sync/hooks.js +4 -2
  262. package/dist/sync/hooks.js.map +1 -1
  263. package/dist/testing/css-variables.generated.d.ts +2 -2
  264. package/dist/testing/css-variables.generated.js +1 -1
  265. package/dist/testing/css-variables.generated.js.map +1 -1
  266. package/dist/theme/chart-palette.d.ts +18 -0
  267. package/dist/theme/chart-palette.js +17 -1
  268. package/dist/theme/chart-palette.js.map +1 -1
  269. package/dist/theme/contrast-tokens.d.ts +3 -3
  270. package/dist/theme/contrast-tokens.js.map +1 -1
  271. package/dist/theme/contrast.d.ts +4 -4
  272. package/dist/theme/contrast.js.map +1 -1
  273. package/dist/tour/tour-overlay.js +2 -1
  274. package/dist/tour/tour-overlay.js.map +1 -1
  275. package/package.json +9 -12
  276. package/tokens.css +19 -54
  277. package/src/account/account-parts.ts +0 -47
  278. package/src/account/account-settings-labels.ts +0 -240
  279. package/src/account/account-settings.tsx +0 -698
  280. package/src/account/data-export-setting-labels.ts +0 -20
  281. package/src/account/data-export-setting.tsx +0 -200
  282. package/src/account/delete-account-setting-labels.ts +0 -33
  283. package/src/account/delete-account-setting.tsx +0 -342
  284. package/src/account/email-change-setting-labels.ts +0 -31
  285. package/src/account/email-change-setting.tsx +0 -443
  286. package/src/account/passkeys-setting.tsx +0 -445
  287. package/src/account/sessions-setting-labels.ts +0 -24
  288. package/src/account/sessions-setting.tsx +0 -283
  289. package/src/admin/admin-action-confirm-labels.ts +0 -19
  290. package/src/admin/admin-action-confirm.tsx +0 -509
  291. package/src/admin/admin-action-log-labels.ts +0 -83
  292. package/src/admin/admin-action-log.tsx +0 -464
  293. package/src/admin/admin-area-labels.ts +0 -114
  294. package/src/admin/admin-forbidden.tsx +0 -75
  295. package/src/admin/admin-overview.tsx +0 -258
  296. package/src/admin/admin-parts.ts +0 -68
  297. package/src/admin/admin-sections.tsx +0 -208
  298. package/src/admin/admin-tool-links.tsx +0 -90
  299. package/src/admin/invitations-panel-labels.ts +0 -31
  300. package/src/admin/invitations-panel.tsx +0 -516
  301. package/src/admin/mail-test-card-labels.ts +0 -19
  302. package/src/admin/mail-test-card.tsx +0 -189
  303. package/src/admin/plan-change-labels.ts +0 -5
  304. package/src/admin/plan-change.tsx +0 -474
  305. package/src/admin/reviewer-scope-editor-labels.ts +0 -16
  306. package/src/admin/reviewer-scope-editor.tsx +0 -224
  307. package/src/admin/role-select-labels.ts +0 -16
  308. package/src/admin/role-select.tsx +0 -282
  309. package/src/admin/transfer-ownership-dialog-labels.ts +0 -20
  310. package/src/admin/transfer-ownership-dialog.tsx +0 -162
  311. package/src/admin/user-roster-labels.ts +0 -17
  312. package/src/admin/user-roster.tsx +0 -559
  313. package/src/auth/accept-invitation-labels.ts +0 -21
  314. package/src/auth/accept-invitation.tsx +0 -210
  315. package/src/auth/auth-errors-labels.ts +0 -23
  316. package/src/auth/auth-errors.ts +0 -439
  317. package/src/auth/complete-name-dialog-labels.ts +0 -16
  318. package/src/auth/complete-name-dialog.tsx +0 -253
  319. package/src/auth/email-tag.ts +0 -75
  320. package/src/auth/forgot-password-form-labels.ts +0 -20
  321. package/src/auth/forgot-password-form.tsx +0 -221
  322. package/src/auth/form-rules.ts +0 -40
  323. package/src/auth/new-password-fields.tsx +0 -85
  324. package/src/auth/not-found-page-labels.ts +0 -12
  325. package/src/auth/not-found-page.tsx +0 -95
  326. package/src/auth/register-form-labels.ts +0 -31
  327. package/src/auth/register-form.tsx +0 -456
  328. package/src/auth/reset-password-form-labels.ts +0 -27
  329. package/src/auth/reset-password-form.tsx +0 -341
  330. package/src/auth/sign-in-form-labels.ts +0 -44
  331. package/src/auth/sign-in-form.tsx +0 -858
  332. package/src/auth/status-parts.tsx +0 -132
  333. package/src/auth/verify-email-labels.ts +0 -26
  334. package/src/auth/verify-email.tsx +0 -445
  335. package/src/billing/billing-banner.tsx +0 -258
  336. package/src/billing/billing-labels.ts +0 -381
  337. package/src/billing/billing-lock.ts +0 -108
  338. package/src/billing/billing-overview.ts +0 -157
  339. package/src/billing/billing-standing.ts +0 -80
  340. package/src/billing/cancel-request.ts +0 -97
  341. package/src/billing/cancel-subscription.tsx +0 -98
  342. package/src/billing/checkout-processing.ts +0 -394
  343. package/src/billing/checkout-return.ts +0 -90
  344. package/src/billing/pay-page.ts +0 -330
  345. package/src/billing/plan-card.tsx +0 -562
  346. package/src/billing/plan-change-labels.ts +0 -66
  347. package/src/billing/plan-limit-notice.tsx +0 -148
  348. package/src/billing/plan-limit-toast.tsx +0 -90
  349. package/src/billing/plan-limit.ts +0 -52
  350. package/src/billing/plan-price.ts +0 -98
  351. package/src/billing/plan-switch.tsx +0 -216
  352. package/src/billing/provider-page.ts +0 -84
  353. package/src/billing/subscription-actions.tsx +0 -247
  354. package/src/billing/subscription-status-chip.tsx +0 -95
  355. package/src/chart.ts +0 -103
  356. package/src/components/account-chips-labels.ts +0 -16
  357. package/src/components/account-chips.tsx +0 -474
  358. package/src/components/alert-banner.tsx +0 -670
  359. package/src/components/amount-input.tsx +0 -816
  360. package/src/components/appearance-labels.ts +0 -63
  361. package/src/components/authed-image-labels.ts +0 -11
  362. package/src/components/authed-image.tsx +0 -209
  363. package/src/components/autocomplete.tsx +0 -645
  364. package/src/components/breadcrumbs-labels.ts +0 -10
  365. package/src/components/breadcrumbs.tsx +0 -205
  366. package/src/components/bulk-action-bar-labels.ts +0 -11
  367. package/src/components/bulk-action-bar.tsx +0 -443
  368. package/src/components/button-group.tsx +0 -223
  369. package/src/components/button-look.ts +0 -256
  370. package/src/components/button.tsx +0 -339
  371. package/src/components/calculator.tsx +0 -341
  372. package/src/components/calendar-heatmap-labels.ts +0 -15
  373. package/src/components/calendar-heatmap.tsx +0 -600
  374. package/src/components/card.tsx +0 -377
  375. package/src/components/chart-edge.ts +0 -106
  376. package/src/components/chart-figure.tsx +0 -35
  377. package/src/components/chart-height.ts +0 -30
  378. package/src/components/chart-zoom-core.tsx +0 -627
  379. package/src/components/chart-zoom.tsx +0 -22
  380. package/src/components/chart.tsx +0 -554
  381. package/src/components/checkbox-group.tsx +0 -247
  382. package/src/components/checkbox.tsx +0 -346
  383. package/src/components/chip-input.tsx +0 -370
  384. package/src/components/chip-labels.ts +0 -13
  385. package/src/components/chip.tsx +0 -843
  386. package/src/components/choice-card.tsx +0 -544
  387. package/src/components/column-mapper-labels.ts +0 -38
  388. package/src/components/column-mapper.tsx +0 -655
  389. package/src/components/combobox-core.tsx +0 -1321
  390. package/src/components/combobox-suggestions.tsx +0 -131
  391. package/src/components/combobox.tsx +0 -716
  392. package/src/components/confirm-context.ts +0 -7
  393. package/src/components/confirm-dialog-labels.ts +0 -13
  394. package/src/components/confirm-dialog.tsx +0 -341
  395. package/src/components/copy-button-labels.ts +0 -13
  396. package/src/components/copy-button.tsx +0 -192
  397. package/src/components/country-select-labels.ts +0 -11
  398. package/src/components/country-select.tsx +0 -539
  399. package/src/components/currency-option-list.tsx +0 -188
  400. package/src/components/currency-select.tsx +0 -343
  401. package/src/components/danger-confirm-labels.ts +0 -20
  402. package/src/components/danger-confirm.tsx +0 -987
  403. package/src/components/data-table-cells.tsx +0 -118
  404. package/src/components/data-table-column-settings.tsx +0 -198
  405. package/src/components/data-table-filter-popover.tsx +0 -289
  406. package/src/components/data-table-filters.ts +0 -315
  407. package/src/components/data-table-fit.ts +0 -301
  408. package/src/components/data-table-groups.tsx +0 -288
  409. package/src/components/data-table-head.tsx +0 -280
  410. package/src/components/data-table-labels.ts +0 -198
  411. package/src/components/data-table-leading-row.tsx +0 -58
  412. package/src/components/data-table-mobile.tsx +0 -1117
  413. package/src/components/data-table-pagination.tsx +0 -202
  414. package/src/components/data-table-resize.ts +0 -188
  415. package/src/components/data-table-row-actions.tsx +0 -302
  416. package/src/components/data-table-row.tsx +0 -496
  417. package/src/components/data-table-selection.ts +0 -71
  418. package/src/components/data-table-shared.tsx +0 -287
  419. package/src/components/data-table-sort.ts +0 -163
  420. package/src/components/data-table-virtual.ts +0 -576
  421. package/src/components/data-table.tsx +0 -2598
  422. package/src/components/date-field.tsx +0 -684
  423. package/src/components/date-format-setting.tsx +0 -64
  424. package/src/components/date-picker.tsx +0 -404
  425. package/src/components/date-range-picker.tsx +0 -518
  426. package/src/components/description-list-labels.ts +0 -9
  427. package/src/components/description-list.tsx +0 -386
  428. package/src/components/dialog-frame-labels.ts +0 -7
  429. package/src/components/dialog-frame.tsx +0 -284
  430. package/src/components/disclosure.tsx +0 -476
  431. package/src/components/dropdown.tsx +0 -461
  432. package/src/components/empty-state.tsx +0 -136
  433. package/src/components/entity-combobox.tsx +0 -422
  434. package/src/components/error-boundary-labels.ts +0 -20
  435. package/src/components/error-boundary.tsx +0 -675
  436. package/src/components/facing-pair.ts +0 -93
  437. package/src/components/field-base-labels.ts +0 -20
  438. package/src/components/field-base.tsx +0 -656
  439. package/src/components/field-parts.tsx +0 -825
  440. package/src/components/field-strip.tsx +0 -129
  441. package/src/components/field.tsx +0 -206
  442. package/src/components/file-button.tsx +0 -295
  443. package/src/components/file-dropzone.tsx +0 -559
  444. package/src/components/floating-panel-labels.ts +0 -10
  445. package/src/components/floating-panel.tsx +0 -828
  446. package/src/components/focus-ring.ts +0 -16
  447. package/src/components/form-actions-labels.ts +0 -11
  448. package/src/components/form-actions.tsx +0 -578
  449. package/src/components/full-bleed-dialog.tsx +0 -294
  450. package/src/components/grouped-picker.tsx +0 -184
  451. package/src/components/help-popover.tsx +0 -117
  452. package/src/components/hover-menu.tsx +0 -343
  453. package/src/components/iban-input-labels.ts +0 -14
  454. package/src/components/iban-input.tsx +0 -236
  455. package/src/components/icon-button.tsx +0 -959
  456. package/src/components/icon-picker-labels.ts +0 -13
  457. package/src/components/icon-picker.tsx +0 -232
  458. package/src/components/image-grid-labels.ts +0 -11
  459. package/src/components/image-grid.tsx +0 -202
  460. package/src/components/inline-confirm.tsx +0 -116
  461. package/src/components/inline-edit-field-labels.ts +0 -11
  462. package/src/components/inline-edit-field.tsx +0 -552
  463. package/src/components/inline-entity-combobox.tsx +0 -849
  464. package/src/components/input.tsx +0 -394
  465. package/src/components/jump-calendar.tsx +0 -265
  466. package/src/components/language-select.tsx +0 -93
  467. package/src/components/legal-labels.ts +0 -105
  468. package/src/components/legal-page.tsx +0 -711
  469. package/src/components/legal.tsx +0 -668
  470. package/src/components/lightbox-labels.ts +0 -18
  471. package/src/components/lightbox.tsx +0 -399
  472. package/src/components/line-items-labels.ts +0 -14
  473. package/src/components/line-items.tsx +0 -602
  474. package/src/components/list-labels.ts +0 -12
  475. package/src/components/list.tsx +0 -870
  476. package/src/components/loading-state.tsx +0 -78
  477. package/src/components/measured-grid-labels.ts +0 -25
  478. package/src/components/measured-grid.tsx +0 -837
  479. package/src/components/menu-item.tsx +0 -241
  480. package/src/components/mini-calendar-labels.ts +0 -17
  481. package/src/components/mini-calendar.tsx +0 -792
  482. package/src/components/modal.tsx +0 -534
  483. package/src/components/money-draft.ts +0 -83
  484. package/src/components/money-field.tsx +0 -76
  485. package/src/components/month-grid.tsx +0 -229
  486. package/src/components/month-picker-labels.ts +0 -22
  487. package/src/components/month-picker.tsx +0 -1087
  488. package/src/components/multi-entity-combobox.tsx +0 -369
  489. package/src/components/multi-select.tsx +0 -376
  490. package/src/components/nav-pills.tsx +0 -198
  491. package/src/components/number-field.tsx +0 -327
  492. package/src/components/number-input.tsx +0 -559
  493. package/src/components/numeric-field.ts +0 -169
  494. package/src/components/numpad-sheet.tsx +0 -285
  495. package/src/components/one-time-code-input.tsx +0 -270
  496. package/src/components/page-contents-labels.ts +0 -9
  497. package/src/components/page-contents.tsx +0 -282
  498. package/src/components/page-header-context.ts +0 -8
  499. package/src/components/page-header.tsx +0 -298
  500. package/src/components/password-strength-labels.ts +0 -22
  501. package/src/components/password-strength.tsx +0 -241
  502. package/src/components/phone-input-labels.ts +0 -10
  503. package/src/components/phone-input.tsx +0 -282
  504. package/src/components/picker-sheet.tsx +0 -330
  505. package/src/components/pie-chart-labels.ts +0 -40
  506. package/src/components/pie-chart.tsx +0 -480
  507. package/src/components/popover-labels.ts +0 -14
  508. package/src/components/popover.tsx +0 -268
  509. package/src/components/progress-bar-labels.ts +0 -10
  510. package/src/components/progress-bar.tsx +0 -479
  511. package/src/components/qr-code.tsx +0 -76
  512. package/src/components/reauth-dialog-labels.ts +0 -13
  513. package/src/components/reauth-dialog.tsx +0 -265
  514. package/src/components/row-actions-labels.ts +0 -12
  515. package/src/components/row-actions.tsx +0 -795
  516. package/src/components/scroll-area.tsx +0 -123
  517. package/src/components/search-field.tsx +0 -192
  518. package/src/components/select.tsx +0 -294
  519. package/src/components/separator.tsx +0 -33
  520. package/src/components/series-chart-axes.ts +0 -342
  521. package/src/components/series-chart-budget.ts +0 -150
  522. package/src/components/series-chart-labels.ts +0 -33
  523. package/src/components/series-chart-thin.ts +0 -180
  524. package/src/components/series-chart-ticks.ts +0 -194
  525. package/src/components/series-chart.tsx +0 -1906
  526. package/src/components/server-wake-labels.ts +0 -11
  527. package/src/components/server-wake.tsx +0 -129
  528. package/src/components/settings-fields.tsx +0 -237
  529. package/src/components/share-card-labels.ts +0 -30
  530. package/src/components/share-card.tsx +0 -675
  531. package/src/components/signature-pad-labels.ts +0 -24
  532. package/src/components/signature-pad.tsx +0 -747
  533. package/src/components/signed-amount-labels.ts +0 -10
  534. package/src/components/signed-amount.tsx +0 -336
  535. package/src/components/skeleton.tsx +0 -80
  536. package/src/components/slider.tsx +0 -338
  537. package/src/components/sparkline-labels.ts +0 -14
  538. package/src/components/sparkline.tsx +0 -322
  539. package/src/components/spinner.tsx +0 -81
  540. package/src/components/stat-tile-labels.ts +0 -15
  541. package/src/components/stat-tile.tsx +0 -754
  542. package/src/components/status-dot.tsx +0 -170
  543. package/src/components/swatch-picker-labels.ts +0 -10
  544. package/src/components/swatch-picker.tsx +0 -283
  545. package/src/components/swipeable-row.tsx +0 -386
  546. package/src/components/switch.tsx +0 -273
  547. package/src/components/table-skeleton.tsx +0 -136
  548. package/src/components/table.tsx +0 -647
  549. package/src/components/tabs-labels.ts +0 -13
  550. package/src/components/tabs.tsx +0 -693
  551. package/src/components/text-link.tsx +0 -359
  552. package/src/components/text.tsx +0 -150
  553. package/src/components/textarea.tsx +0 -330
  554. package/src/components/tile-radio.tsx +0 -332
  555. package/src/components/time-input.tsx +0 -121
  556. package/src/components/toast-labels.ts +0 -12
  557. package/src/components/toast.tsx +0 -519
  558. package/src/components/toggle-group.tsx +0 -752
  559. package/src/components/toggle-legend.tsx +0 -394
  560. package/src/components/tooltip.tsx +0 -1149
  561. package/src/components/translation-review-editor.tsx +0 -290
  562. package/src/components/translation-review-labels.ts +0 -181
  563. package/src/components/translation-review-parts.tsx +0 -272
  564. package/src/components/translation-review.tsx +0 -1240
  565. package/src/components/tree-view.tsx +0 -589
  566. package/src/components/treemap-labels.ts +0 -47
  567. package/src/components/treemap-layout.ts +0 -210
  568. package/src/components/treemap.tsx +0 -1184
  569. package/src/components/trigger-aria.ts +0 -44
  570. package/src/components/use-anchor-dir.ts +0 -20
  571. package/src/components/use-mobile-reveal.ts +0 -62
  572. package/src/components/use-table-state.ts +0 -753
  573. package/src/components/user-avatar.tsx +0 -116
  574. package/src/components/wizard-stepper.tsx +0 -42
  575. package/src/components/write-lock-labels.ts +0 -10
  576. package/src/components/write-lock.tsx +0 -253
  577. package/src/currencies.ts +0 -90
  578. package/src/data-table.ts +0 -42
  579. package/src/demo/demo-banner.tsx +0 -153
  580. package/src/demo/demo-countdown.ts +0 -136
  581. package/src/demo/demo-ended.tsx +0 -90
  582. package/src/demo/demo-labels.ts +0 -78
  583. package/src/demo/demo-session.ts +0 -32
  584. package/src/demo/demo-start.tsx +0 -156
  585. package/src/eslint/index.ts +0 -161
  586. package/src/eslint/role-utilities.generated.ts +0 -146
  587. package/src/eslint/role-utilities.ts +0 -233
  588. package/src/feedback/feedback-attachment-download.tsx +0 -77
  589. package/src/feedback/feedback-attachment-labels.ts +0 -37
  590. package/src/feedback/feedback-attachment.tsx +0 -1239
  591. package/src/feedback/feedback-capture.ts +0 -287
  592. package/src/feedback/feedback-comment-thread.tsx +0 -353
  593. package/src/feedback/feedback-context-labels.ts +0 -11
  594. package/src/feedback/feedback-context.tsx +0 -245
  595. package/src/feedback/feedback-crash.ts +0 -547
  596. package/src/feedback/feedback-diagnostics.tsx +0 -41
  597. package/src/feedback/feedback-dialog-labels.ts +0 -29
  598. package/src/feedback/feedback-dialog.tsx +0 -452
  599. package/src/feedback/feedback-entry-file.tsx +0 -150
  600. package/src/feedback/feedback-inbox.tsx +0 -552
  601. package/src/feedback/feedback-labels.ts +0 -144
  602. package/src/feedback/feedback-menu-labels.ts +0 -12
  603. package/src/feedback/feedback-menu.tsx +0 -177
  604. package/src/feedback/feedback-mutation.ts +0 -20
  605. package/src/feedback/feedback-page-link.ts +0 -90
  606. package/src/feedback/feedback-public-labels.ts +0 -81
  607. package/src/feedback/feedback-public-list.tsx +0 -524
  608. package/src/feedback/feedback-public-switch.tsx +0 -102
  609. package/src/feedback/feedback-public-types.ts +0 -101
  610. package/src/feedback/feedback-record.ts +0 -428
  611. package/src/feedback/feedback-replies-context.ts +0 -9
  612. package/src/feedback/feedback-replies.tsx +0 -343
  613. package/src/feedback/feedback-rework-entry-chip.tsx +0 -18
  614. package/src/feedback/feedback-row-detail-labels.ts +0 -31
  615. package/src/feedback/feedback-row-detail.tsx +0 -871
  616. package/src/feedback/feedback-status-undo.ts +0 -109
  617. package/src/feedback/feedback-submit-dialog.tsx +0 -131
  618. package/src/feedback/feedback-submit.tsx +0 -270
  619. package/src/feedback/feedback-swipe.tsx +0 -192
  620. package/src/feedback/feedback-table-labels.ts +0 -27
  621. package/src/feedback/feedback-table.tsx +0 -912
  622. package/src/feedback/feedback-thread-labels.ts +0 -22
  623. package/src/feedback/feedback-thread-parts-labels.ts +0 -41
  624. package/src/feedback/feedback-thread.tsx +0 -905
  625. package/src/feedback/feedback-vocabulary.ts +0 -263
  626. package/src/feedback/feedback-vote-button.tsx +0 -124
  627. package/src/feedback.ts +0 -116
  628. package/src/hooks/use-anchored-panel.ts +0 -396
  629. package/src/hooks/use-anchored-rect.ts +0 -77
  630. package/src/hooks/use-announce.ts +0 -85
  631. package/src/hooks/use-authed-src.ts +0 -167
  632. package/src/hooks/use-body-scroll-lock.ts +0 -119
  633. package/src/hooks/use-breakpoint.ts +0 -133
  634. package/src/hooks/use-close-transition.ts +0 -107
  635. package/src/hooks/use-copy-to-clipboard.ts +0 -122
  636. package/src/hooks/use-debounce.ts +0 -114
  637. package/src/hooks/use-dismiss.ts +0 -371
  638. package/src/hooks/use-document-title.ts +0 -33
  639. package/src/hooks/use-file-drop.ts +0 -121
  640. package/src/hooks/use-file-picker-labels.ts +0 -28
  641. package/src/hooks/use-file-picker.tsx +0 -359
  642. package/src/hooks/use-focus-trap.ts +0 -199
  643. package/src/hooks/use-hotkey.ts +0 -212
  644. package/src/hooks/use-large-text.ts +0 -41
  645. package/src/hooks/use-long-press.ts +0 -140
  646. package/src/hooks/use-media-query.ts +0 -39
  647. package/src/hooks/use-mounted.ts +0 -39
  648. package/src/hooks/use-noindex.ts +0 -37
  649. package/src/hooks/use-overlay-history.ts +0 -714
  650. package/src/hooks/use-row-swipe.ts +0 -207
  651. package/src/hooks/use-search-param-state.ts +0 -434
  652. package/src/hooks/use-windowed-rows.ts +0 -225
  653. package/src/i18n/defaults.ts +0 -267
  654. package/src/i18n/german.ts +0 -2059
  655. package/src/i18n/kit-labels.tsx +0 -1003
  656. package/src/i18n/languages.ts +0 -349
  657. package/src/i18n/locales/de-CH.ts +0 -24
  658. package/src/i18n/locales/en.ts +0 -267
  659. package/src/i18n/locales/es.ts +0 -1999
  660. package/src/i18n/locales/fr.ts +0 -2037
  661. package/src/i18n/locales/hu.ts +0 -2004
  662. package/src/i18n/locales/it.ts +0 -2014
  663. package/src/i18n/locales/zh.ts +0 -1912
  664. package/src/i18n/plurals.ts +0 -86
  665. package/src/i18n/review.ts +0 -475
  666. package/src/i18n/shared-labels.ts +0 -138
  667. package/src/i18n/swiss.ts +0 -29
  668. package/src/index.ts +0 -1191
  669. package/src/landing/access.ts +0 -93
  670. package/src/landing/landing-actions.tsx +0 -97
  671. package/src/landing/landing-labels.ts +0 -59
  672. package/src/landing/landing-sections.tsx +0 -341
  673. package/src/landing/page-seo.ts +0 -261
  674. package/src/landing/public-header.tsx +0 -121
  675. package/src/landing/public-page.tsx +0 -106
  676. package/src/landing/routing.tsx +0 -225
  677. package/src/lib/broadcast.ts +0 -52
  678. package/src/lib/calc.ts +0 -323
  679. package/src/lib/chip-edge-snap.ts +0 -212
  680. package/src/lib/clipboard-minus.ts +0 -107
  681. package/src/lib/clipping.ts +0 -34
  682. package/src/lib/cn.ts +0 -28
  683. package/src/lib/column-mapping.ts +0 -234
  684. package/src/lib/countries.ts +0 -91
  685. package/src/lib/data-attributes.ts +0 -14
  686. package/src/lib/date-format.ts +0 -227
  687. package/src/lib/dates.ts +0 -288
  688. package/src/lib/day-format.ts +0 -96
  689. package/src/lib/decimal-marks.ts +0 -108
  690. package/src/lib/describe-failure.ts +0 -18
  691. package/src/lib/device-settings.ts +0 -147
  692. package/src/lib/direction.ts +0 -74
  693. package/src/lib/document-navigation.ts +0 -17
  694. package/src/lib/document-title.ts +0 -41
  695. package/src/lib/download.ts +0 -172
  696. package/src/lib/float-clearance.ts +0 -70
  697. package/src/lib/floating-stack.ts +0 -70
  698. package/src/lib/focus-left.ts +0 -156
  699. package/src/lib/format.ts +0 -585
  700. package/src/lib/http-status.ts +0 -38
  701. package/src/lib/iban.ts +0 -251
  702. package/src/lib/ime.ts +0 -24
  703. package/src/lib/intl-cache.ts +0 -27
  704. package/src/lib/iso-day.ts +0 -13
  705. package/src/lib/lazy-with-fallback.ts +0 -82
  706. package/src/lib/logger.ts +0 -69
  707. package/src/lib/minus.ts +0 -50
  708. package/src/lib/path-pattern.ts +0 -55
  709. package/src/lib/person-name.ts +0 -155
  710. package/src/lib/phone.ts +0 -208
  711. package/src/lib/plain-text.ts +0 -22
  712. package/src/lib/presence.ts +0 -18
  713. package/src/lib/qr-encode.ts +0 -444
  714. package/src/lib/quiet-focus.ts +0 -32
  715. package/src/lib/reduced-motion.ts +0 -22
  716. package/src/lib/refs.ts +0 -22
  717. package/src/lib/round.ts +0 -43
  718. package/src/lib/safe-storage.ts +0 -119
  719. package/src/lib/server-wake.ts +0 -315
  720. package/src/lib/session-refresh.ts +0 -472
  721. package/src/lib/share-format.ts +0 -18
  722. package/src/lib/status-tone.ts +0 -43
  723. package/src/lib/strip-fade.ts +0 -287
  724. package/src/lib/table-text.ts +0 -554
  725. package/src/lib/text-case.ts +0 -19
  726. package/src/lib/text-match.ts +0 -169
  727. package/src/lib/thenable.ts +0 -19
  728. package/src/lib/translation-review.ts +0 -769
  729. package/src/notifications/device-zone-report.ts +0 -67
  730. package/src/notifications/feedback-notification-types-labels.ts +0 -33
  731. package/src/notifications/feedback-notification-types.ts +0 -71
  732. package/src/notifications/notification-bell.tsx +0 -119
  733. package/src/notifications/notification-inbox.tsx +0 -309
  734. package/src/notifications/notification-parts.tsx +0 -81
  735. package/src/notifications/notification-types-setting.tsx +0 -406
  736. package/src/notifications/notification-types.ts +0 -89
  737. package/src/notifications/notifications-labels.ts +0 -287
  738. package/src/notifications/push-device-setting.tsx +0 -230
  739. package/src/notifications/push-devices-setting.tsx +0 -374
  740. package/src/notifications/push-worker.ts +0 -168
  741. package/src/notifications/quiet-hours-setting.tsx +0 -238
  742. package/src/notifications/unsubscribe-panel.tsx +0 -200
  743. package/src/notifications/use-push-device.ts +0 -448
  744. package/src/offline/local-first.ts +0 -100
  745. package/src/offline/pwa-update-prompt-labels.ts +0 -9
  746. package/src/offline/pwa-update-prompt.tsx +0 -78
  747. package/src/offline/query-persistence.ts +0 -391
  748. package/src/offline/service-worker-updates.ts +0 -81
  749. package/src/offline/shared-computer-labels.ts +0 -8
  750. package/src/offline/shared-computer.tsx +0 -87
  751. package/src/offline/sign-out-pending-dialog-labels.ts +0 -21
  752. package/src/offline/sign-out-pending-dialog.tsx +0 -135
  753. package/src/offline.ts +0 -37
  754. package/src/push-worker.ts +0 -25
  755. package/src/rhf/fields.tsx +0 -2187
  756. package/src/rhf/form-core.tsx +0 -324
  757. package/src/rhf/form.tsx +0 -12
  758. package/src/rhf/line-items.tsx +0 -135
  759. package/src/rhf/use-rhf-wizard-step.ts +0 -104
  760. package/src/rhf.ts +0 -21
  761. package/src/search/command-palette-labels.ts +0 -16
  762. package/src/search/command-palette.tsx +0 -624
  763. package/src/search/global-search-labels.ts +0 -13
  764. package/src/search/global-search.tsx +0 -660
  765. package/src/search/search-index.ts +0 -283
  766. package/src/search/use-command-key.ts +0 -23
  767. package/src/search.ts +0 -14
  768. package/src/settings/device-reset-setting-labels.ts +0 -20
  769. package/src/settings/device-reset-setting.tsx +0 -116
  770. package/src/settings/settings-card-classes.ts +0 -11
  771. package/src/settings/settings-catalogue.ts +0 -150
  772. package/src/settings/settings-context.ts +0 -33
  773. package/src/settings/settings-heading.tsx +0 -67
  774. package/src/settings/settings-labels.ts +0 -87
  775. package/src/settings/settings-layout.tsx +0 -471
  776. package/src/settings/settings-section.tsx +0 -108
  777. package/src/settings/use-account-appearance.ts +0 -148
  778. package/src/settings/use-account-language.ts +0 -146
  779. package/src/settings/use-settings-focus.ts +0 -128
  780. package/src/settings/use-settings-route.ts +0 -258
  781. package/src/shell/account-menu-language.tsx +0 -130
  782. package/src/shell/account-menu-text-size.tsx +0 -80
  783. package/src/shell/admin-menu.tsx +0 -183
  784. package/src/shell/app-shell-labels.ts +0 -11
  785. package/src/shell/app-shell.tsx +0 -1560
  786. package/src/shell/auth-layout.tsx +0 -186
  787. package/src/shell/company-switcher-labels.ts +0 -13
  788. package/src/shell/company-switcher.tsx +0 -136
  789. package/src/shell/dev-menu.tsx +0 -257
  790. package/src/shell/fill-height.tsx +0 -45
  791. package/src/shell/language-code.ts +0 -5
  792. package/src/shell/option-switcher-menu.tsx +0 -84
  793. package/src/shell/sync-status-indicator.tsx +0 -303
  794. package/src/shell/top-bar-actions.tsx +0 -87
  795. package/src/shell/top-bar-brand.tsx +0 -78
  796. package/src/shell/top-bar-parts-labels.ts +0 -148
  797. package/src/shell/top-bar.tsx +0 -40
  798. package/src/shell/topbar-action-menu.tsx +0 -567
  799. package/src/shell/topbar-controls.tsx +0 -269
  800. package/src/shell/tour-menu.tsx +0 -187
  801. package/src/shell.ts +0 -108
  802. package/src/sync/db.ts +0 -129
  803. package/src/sync/engine.ts +0 -1011
  804. package/src/sync/hooks.ts +0 -98
  805. package/src/sync/testing.ts +0 -73
  806. package/src/sync/wire.ts +0 -61
  807. package/src/sync.ts +0 -37
  808. package/src/table-text.ts +0 -8
  809. package/src/testing/css-variables.generated.ts +0 -112
  810. package/src/testing/css-variables.ts +0 -189
  811. package/src/testing/index.ts +0 -29
  812. package/src/testing/react.ts +0 -58
  813. package/src/testing/tour.ts +0 -41
  814. package/src/testing/viewport.ts +0 -357
  815. package/src/theme/chart-palette.ts +0 -232
  816. package/src/theme/color.ts +0 -272
  817. package/src/theme/contrast-tokens.ts +0 -268
  818. package/src/theme/contrast.ts +0 -250
  819. package/src/theme/palette-derive.ts +0 -825
  820. package/src/theme/palette-presets.ts +0 -544
  821. package/src/theme/palette-store.ts +0 -108
  822. package/src/theme/text-size.ts +0 -289
  823. package/src/theme/theme-store.ts +0 -157
  824. package/src/tour/tour-catalogue-labels.ts +0 -75
  825. package/src/tour/tour-catalogue.tsx +0 -335
  826. package/src/tour/tour-dock.ts +0 -134
  827. package/src/tour/tour-engine.ts +0 -37
  828. package/src/tour/tour-gates.ts +0 -218
  829. package/src/tour/tour-guide-button.tsx +0 -64
  830. package/src/tour/tour-guide-labels.ts +0 -15
  831. package/src/tour/tour-info.ts +0 -144
  832. package/src/tour/tour-labels.ts +0 -23
  833. package/src/tour/tour-overlay.tsx +0 -1170
  834. package/src/tour/tour.tsx +0 -750
  835. package/src/tour/use-tour-progress.ts +0 -671
  836. package/src/tour/use-tour-url-sync.ts +0 -266
  837. package/src/tour.ts +0 -21
  838. package/src/vite-env.d.ts +0 -23
  839. package/src/wizard/stepper-nav.tsx +0 -360
  840. package/src/wizard/types.ts +0 -275
  841. package/src/wizard/use-wizard.ts +0 -560
  842. package/src/wizard/validation.ts +0 -39
  843. package/src/wizard/wizard-context.tsx +0 -74
  844. package/src/wizard/wizard-labels.ts +0 -29
  845. package/src/wizard/wizard-step.tsx +0 -76
  846. package/src/wizard/wizard-summary.tsx +0 -84
  847. package/src/wizard.ts +0 -15
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// @eifi1/ui-kit — shared design-system barrel.\n//\n// Domain-free UI + theme surface shared across apps (lead app: Keksdose). Consumers import\n// components/theme from \"@eifi1/ui-kit\" and the token stylesheet from \"@eifi1/ui-kit/tokens.css\".\n//\n// Grouped by folder. A subpath entry (chart, data-table, shell, feedback, wizard, tour,\n// search) is re-exported whole — `export * from \"./chart\"` — instead of its list typed out a\n// second time here: the two copies had drifted (refactor audit 2026-10, MOD-5). A name that\n// arrives twice that way is the same binding from the same module, which ESM does not count\n// as a clash.\n\n// ── lib ────────────────────────────────────────────────────────────────────\nexport * from \"./lib/calc\";\nexport { cn } from \"./lib/cn\";\nexport { logger, setStoreLog } from \"./lib/logger\";\n// Intl number / money / percent / date / relative-time formatting, and `useKitFormat()`\n// for the same bound to the provider's locale (kastlan's formatters.ts, English \"5m ago\").\nexport * from \"./lib/format\";\n// localStorage that never throws (Safari private mode, blocked site data). 0.52 (DUP-8,\n// refactor audit 2026-10-30): the remove, the sessionStorage pair and a JSON pair with a\n// shape check — 16 files in the apps wrap storage by hand, a few of them with no guard.\nexport {\n readStored,\n writeStored,\n removeStored,\n readSessionStored,\n writeSessionStored,\n readStoredJson,\n writeStoredJson,\n} from \"./lib/safe-storage\";\n// 0.52 (DUP-8): `prefers-reduced-motion`, asked at the moment of the motion (KS copied it).\nexport { prefersReducedMotion } from \"./lib/reduced-motion\";\n// Save a fetched Blob as a download, and read the name a Content-Disposition asks for\n// (`filename*` first) — 0.34, KS U5; the kit's own three downloads use them.\nexport { saveBlob, filenameFromDisposition } from \"./lib/download\";\n// The local-calendar ISO date helpers are the \"@eifi1/ui-kit/dates\" entry, standalone: none\n// of its names is in this barrel (public-surface.test.ts, STANDALONE).\n// One fold and one ranking for every list's search box (DUP-5), for an app's own lists;\n// and the pickers' every-word match (0.51.5), for an async `loadOptions` that filters itself.\nexport { foldForSearch, rankMatch, searchWords, matchesSearch } from \"./lib/text-match\";\nexport type { MatchRank } from \"./lib/text-match\";\n// 0.12.0: the QR encoder QrCode draws with — no dependency, see lib/qr-encode.ts.\nexport { encodeQr } from \"./lib/qr-encode\";\nexport type { QrEncodeOptions, QrErrorCorrection, QrMatrix } from \"./lib/qr-encode\";\n// 0.18: the cold-start notice keksdose built (#199), for every app: the framework-free\n// watchdog over the app's requests (the corner notice is components/server-wake).\nexport { createServerWake, serverWake, watchReadsAnd, attachServerWake, wrapFetch } from \"./lib/server-wake\";\nexport type {\n ServerWakeStage,\n ServerWakeFilter,\n ServerWakeOptions,\n ServerWakeRequest,\n ServerWakeWatcher,\n ServerWakeAxiosConfig,\n AxiosLikeInstance,\n} from \"./lib/server-wake\";\n// 0.34 (docs/auth-harmonization.md §11, round 0.34 C7): renewing a session — one refresh\n// per tab, a definitive failure ends the session once, a transient one keeps it.\nexport {\n createSessionRefresh,\n attachSessionRefresh,\n isTransientRefreshFailure,\n isSignedOutStep,\n} from \"./lib/session-refresh\";\nexport type {\n SessionRefresh,\n SessionRefreshOptions,\n SessionRenewal,\n SessionRefreshOutcome,\n} from \"./lib/session-refresh\";\n// 0.29.0 (docs/auth-harmonization.md): the person-name order of each language.\nexport { formatPersonName, personInitials } from \"./lib/person-name\";\nexport type { PersonName } from \"./lib/person-name\";\n// Translation review (0.19): one contract for kastlan's and keksdose's review pages — the\n// pure rows/status/placeholder logic here, the presentational page parts under components.\nexport {\n REVIEW_STATUSES,\n fromApiReview,\n toApiWrite,\n flattenStrings,\n keyNamespace,\n placeholderTokens,\n placeholderMismatch,\n reviewStatus,\n keyInArea,\n keyInAreas,\n // 0.28: the area a key is grouped under — `kit.legal.*` in `legal` (legal round §7.5).\n reviewAreaOf,\n translationRows,\n summariseRows,\n DEFAULT_TRANSLATION_REVIEW_FILTER,\n filterTranslationRows,\n reviewWrite,\n mergeReviews,\n dropReviews,\n // 0.54: a save or a reset of any size under server-kit's cap of 2000 (kastlan reuse\n // audit 2026-11-02, proposal 5).\n saveReviewsInChunks,\n clearReviewsInChunks,\n translationCorrections,\n // 0.25: grouping and the approvals' Undo (keksdose live #377).\n groupTranslationRows,\n unreviewedRows,\n reviewUndo,\n // 0.26: swipe bindings for an app's Settings → Interaction (keksdose #377 rework).\n TRANSLATION_REVIEW_SWIPE_ACTIONS,\n DEFAULT_TRANSLATION_REVIEW_SWIPE,\n translationReviewSwipePlan,\n} from \"./lib/translation-review\";\nexport type {\n TranslationVerdict,\n TranslationReview,\n TranslationReviewWrite,\n TranslationReviewKey,\n ReviewStatus,\n TranslationRow,\n ApiTranslationReview,\n ApiTranslationReviewsResponse,\n ApiTranslationReviewWrite,\n TranslationRowsInput,\n TranslationSummary,\n TranslationReviewFilter,\n TranslationCorrection,\n TranslationRowGroup,\n TranslationReviewUndo,\n TranslationReviewSwipeAction,\n TranslationReviewSwipeBinding,\n} from \"./lib/translation-review\";\n// 0.22.0, the inputs round: the country list and the IBAN and phone helpers that\n// CountrySelect, IbanInput and PhoneInput are built on.\nexport { COUNTRY_CODES, countryName } from \"./lib/countries\";\nexport { IBAN_LENGTHS, compactIban, formatIban, ibanCheckDigits, ibanProblem, isValidIban, isQrIban } from \"./lib/iban\";\nexport type { IbanKind, IbanProblem } from \"./lib/iban\";\nexport { PHONE_DIAL_CODES, PHONE_COUNTRIES, parsePhone, formatNationalPhone, formatPhone, isE164 } from \"./lib/phone\";\nexport type { PhoneCountryCode, PhoneCountry, ParsedPhone } from \"./lib/phone\";\n// 0.23.0: ColumnMapper's pure half (Kurvenschmiede's columns input, keksdose's import map).\nexport {\n assignColumnRole,\n guessMapping,\n missingRoles,\n readMappedTable,\n readTextFile,\n roleOfColumn,\n} from \"./lib/column-mapping\";\nexport type { ColumnMapperResult, ColumnMapping, ColumnRole } from \"./lib/column-mapping\";\n\n// ── hooks ────────────────────────────────────────────────────────────────────\nexport { useMediaQuery } from \"./hooks/use-media-query\";\nexport { useBodyScrollLock } from \"./hooks/use-body-scroll-lock\";\nexport { useAnchoredRect } from \"./hooks/use-anchored-rect\";\nexport type { AnchorRect } from \"./hooks/use-anchored-rect\";\nexport {\n useAnchoredPanel,\n anchoredPanelPlacement,\n useVisualViewport,\n readKeyboardInset,\n} from \"./hooks/use-anchored-panel\";\nexport type {\n AnchoredPanel,\n AnchoredPanelOptions,\n ViewportBox,\n KeyboardInsetOptions,\n} from \"./hooks/use-anchored-panel\";\nexport { useEscapeKey, useOutsideClick } from \"./hooks/use-dismiss\";\n// Focus containment for an overlay, and a live region for a change that moves no focus.\n// Both were extracted from the two components that already did them correctly (Modal and\n// CommandPalette) so the rest of the kit stops being the exception.\nexport { useFocusTrap } from \"./hooks/use-focus-trap\";\nexport type { FocusTrapOptions } from \"./hooks/use-focus-trap\";\nexport { useAnnounce } from \"./hooks/use-announce\";\nexport type { UseAnnounceReturn, UseAnnounceOptions, AnnounceRegionProps } from \"./hooks/use-announce\";\nexport { useOverlayHistory } from \"./hooks/use-overlay-history\";\nexport { useCloseTransition, OVERLAY_EXIT_MS } from \"./hooks/use-close-transition\";\nexport { useRowSwipe } from \"./hooks/use-row-swipe\";\n// 0.52 (DUP-8): DataTable's press-and-hold, which keksdose wrote first and still keeps.\nexport { useLongPress } from \"./hooks/use-long-press\";\nexport type { LongPressOptions, LongPressResult } from \"./hooks/use-long-press\";\n// 0.28: keksdose's noindex marker, for the legal and auth pages of every app.\nexport { useNoIndex } from \"./hooks/use-noindex\";\n// 0.49 KIT-9: the window's title from page, section and app, in the provider's format.\nexport { useDocumentTitle } from \"./hooks/use-document-title\";\n// 0.53: the 55 names no app reads left the entry points (deprecated in 0.52, refactor audit\n// 2026-10-30, API-4, decision 4) — here 0.49 KIT-1b's `asciiMinusInNumbers`, the copy\n// handler's rule, among them. Their modules keep the ones the kit itself uses.\nexport { DEFAULT_DOCUMENT_TITLE_FORMAT, formatDocumentTitle } from \"./lib/document-title\";\nexport type { DocumentTitleParts } from \"./lib/document-title\";\nexport type { SwipeStage, RowSwipeOptions, RowSwipeReturn } from \"./hooks/use-row-swipe\";\n// Any element as a file drop target, screened like FileButton (kastlan).\nexport { useFileDrop, dragHasFiles } from \"./hooks/use-file-drop\";\nexport type { UseFileDropOptions, UseFileDropReturn, FileDropProps } from \"./hooks/use-file-drop\";\n// kastlan's search boxes each carried a hand-rolled copy, two without the cleanup.\nexport { useDebounce, useDebouncedCallback } from \"./hooks/use-debounce\";\nexport type { DebouncedCallbackOptions, DebouncedFunction } from \"./hooks/use-debounce\";\n// One search param as state, the active tab in `?tab=`, and a dialog's open state in the\n// URL (Modal's `urlParam`) — kastlan's and keksdose's use-search-param-state, in the kit.\nexport { useSearchParamState, useTabParam, useDialogParam } from \"./hooks/use-search-param-state\";\nexport type { SearchParamStateOptions, DialogParam } from \"./hooks/use-search-param-state\";\n// 0.25: several keys, one navigation (keksdose live #378 — four setters in a row clobbered).\nexport { useSearchParamsState } from \"./hooks/use-search-param-state\";\nexport type { SearchParamField, SearchParamFields, SearchParamsUpdate } from \"./hooks/use-search-param-state\";\n// Copy that reports whether it worked — keksdose's copy buttons said \"Copied\" when it had not.\nexport { useCopyToClipboard, copyToClipboard } from \"./hooks/use-copy-to-clipboard\";\nexport type { CopyState, UseCopyToClipboardOptions, UseCopyToClipboardReturn } from \"./hooks/use-copy-to-clipboard\";\n// Keyboard shortcuts (\"Mod+K\", \"Ctrl+Shift+F\") that leave typing in fields alone.\nexport { useHotkey, parseHotkey, matchesHotkey } from \"./hooks/use-hotkey\";\nexport type { Hotkey, ParsedHotkey, UseHotkeyOptions } from \"./hooks/use-hotkey\";\n// A protected file as an object URL, fetched with the app's own auth (kastlan's AuthedImage).\nexport { useAuthedSrc } from \"./hooks/use-authed-src\";\nexport type { AuthedFetcher, AuthedSrcStatus, UseAuthedSrcOptions, UseAuthedSrcResult } from \"./hooks/use-authed-src\";\n// Row windowing for a long list (0.7.0, lenkbank's measured grid is built on it).\nexport { useWindowedRows, WINDOWED_ROW_INDEX } from \"./hooks/use-windowed-rows\";\nexport type { WindowedRows } from \"./hooks/use-windowed-rows\";\n// 0.32.0 (docs/text-size-harmonization.md): the breakpoints, and the hooks components read\n// the behaviours at Large from (§4, §10.7–10.9).\nexport {\n useBreakpoint,\n usePhoneLayout,\n breakpointQuery,\n BREAKPOINT_REM,\n remPx,\n useRemPx,\n} from \"./hooks/use-breakpoint\";\nexport type { Breakpoint, BreakpointVariant, RemLength } from \"./hooks/use-breakpoint\";\nexport { useLargeText, useCoarsePointer, useInlineFacts } from \"./hooks/use-large-text\";\n\n// ── theme / palettes ─────────────────────────────────────────────────────────\n// The chart palette (theme/chart-palette) comes with the chart kit, `./chart` below.\n// Colour maths (sRGB ↔ OKLCH, WCAG contrast, CVD simulation) and the palette deriver\n// that builds a whole, contrast-solved palette from one brand colour plus any colours\n// pinned by hand. `auditPalette` / `auditChartRamp` measure a palette rather than\n// trusting a comment about it.\nexport * from \"./theme/color\";\nexport * from \"./theme/palette-derive\";\nexport * from \"./theme/palette-presets\";\nexport * from \"./theme/theme-store\";\nexport * from \"./theme/palette-store\";\n// 0.32.0: text size and contrast (docs/text-size-harmonization.md).\nexport * from \"./theme/text-size\";\nexport * from \"./theme/contrast\";\n\n// ── i18n: one label tree, one optional provider ──────────────────────────────\n// `UiKitLabels` names every string the kit renders; `<UiKitProvider labels locale>`\n// hands a translation to every component below it. Precedence: a component's own\n// prop > the provider > the English default. See src/i18n/kit-labels.tsx.\nexport * from \"./i18n/kit-labels\";\nexport * from \"./i18n/defaults\";\n// The kit's words as `key → text` rows for an app's translation review (keksdose).\nexport { kitLabelStrings } from \"./i18n/review\";\nexport type { KitLabelStringsOptions } from \"./i18n/review\";\n// The seven languages, how an app resolves one, and the kit catalogue loader for it.\nexport * from \"./i18n/languages\";\n// CLDR plural categories for an app's i18next catalogue, filled from `_other`; and the\n// forms of an app's word a kit part picks from by count (0.33.1, `PlanColumnUsage.label`).\nexport { withAllPlurals } from \"./i18n/plurals\";\nexport type { PluralForms } from \"./i18n/plurals\";\n\n// ── components ───────────────────────────────────────────────────────────────\n// The kit's core controls, one module each since 0.34 (MOD-2, refactor audit 2026-10):\n// Button, IconButton, the field base, Input, Select, Textarea, Card, Spinner, EmptyState\n// and Tabs. Named, not `*`, for `button-look` and `field-base`: they also hold parts the\n// controls share, which are internal. The others are public whole.\nexport * from \"./components/button\";\nexport {\n buttonClasses,\n TOUCH_TARGET_LARGE,\n type ButtonClassesOptions,\n type ButtonSize,\n type ButtonTone,\n type ButtonVariant,\n} from \"./components/button-look\";\nexport * from \"./components/icon-button\";\nexport {\n FIELD_TOUCH_TEXT,\n FIELD_BASE,\n FIELD_WRITABLE_LOOK,\n FIELD_FLOATING_PAD,\n FIELD_INVALID,\n FLOATING_INPUT_CLASS,\n FIELD_DISPLAY,\n FIELD_TRIGGER,\n FieldChevron,\n FLOATING_LABEL_CLASS,\n FloatingField,\n Label,\n DEFAULT_PASSWORD_REVEAL_LABELS,\n DEFAULT_CHARACTER_COUNT_LABELS,\n type FieldChevronProps,\n type FloatingFieldProps,\n type LabelProps,\n type PasswordRevealLabels,\n type CharacterCountLabels,\n} from \"./components/field-base\";\nexport * from \"./components/input\";\nexport * from \"./components/select\";\nexport * from \"./components/textarea\";\nexport * from \"./components/card\";\nexport * from \"./components/spinner\";\nexport * from \"./components/empty-state\";\nexport * from \"./components/tabs\";\n// The static label lives in field-parts since 0.23 (it is what the field anatomy there\n// draws, and field-parts must not import the controls).\nexport { FieldLabel, FLOATING_LABEL_STATIC, FieldHint } from \"./components/field-parts\";\nexport type { FieldLabelProps, FieldHintProps } from \"./components/field-parts\";\n// The kit's focus frame (§5), in its own module so the parts the controls import\n// (field-parts, the choice controls) can draw it too.\nexport { FOCUS_RING, FOCUS_RING_WIDTH } from \"./components/focus-ring\";\n// No fact only in a tooltip (§4): the reason line and the compact region live in\n// field-parts, where the self-saving controls (Switch, Checkbox) reach them too.\nexport {\n CompactControls,\n DisabledReasonLine,\n DISABLED_REASON_LINE_CLASS,\n useDisabledReasonLine,\n} from \"./components/field-parts\";\nexport type { DisabledReasonDisplay } from \"./components/field-parts\";\n// The label-ABOVE field group (label, hint, error, required), inside wizards or out.\nexport * from \"./components/field\";\nexport * from \"./components/search-field\";\nexport * from \"./components/dropdown\";\nexport * from \"./components/popover\";\n// 0.34 (keksdose K3): paragraph-long help behind a \"?\", opened on a tap — FieldHint's\n// sibling for help rather than a fact (docs/text-size-harmonization.md §10.23).\nexport { HelpPopover } from \"./components/help-popover\";\nexport type { HelpPopoverProps } from \"./components/help-popover\";\nexport { SwipeableRow } from \"./components/swipeable-row\";\nexport type { SwipeAction, SwipePaint, SwipeTone, SwipeableRowProps } from \"./components/swipeable-row\";\nexport * from \"./components/calculator\";\nexport * from \"./components/numpad-sheet\";\nexport * from \"./components/number-input\";\nexport * from \"./components/currency-select\";\n// 0.35: each currency's flag-icons country. `CURRENCIES` and it are also the pure-data\n// entry \"@eifi1/ui-kit/currencies\", which imports nothing, for an app's build in Node.\nexport { CURRENCY_COUNTRIES } from \"./currencies\";\nexport * from \"./components/amount-input\";\nexport * from \"./components/money-field\";\nexport * from \"./components/combobox\";\nexport * from \"./components/picker-sheet\";\nexport * from \"./components/entity-combobox\";\nexport * from \"./components/multi-entity-combobox\";\nexport * from \"./components/multi-select\";\nexport * from \"./components/tooltip\";\nexport * from \"./components/user-avatar\";\nexport * from \"./components/settings-fields\";\nexport * from \"./components/month-picker\";\nexport * from \"./components/checkbox\";\nexport * from \"./components/switch\";\nexport * from \"./components/slider\";\nexport * from \"./components/time-input\";\nexport * from \"./components/number-field\";\nexport * from \"./components/sparkline\";\nexport * from \"./components/stat-tile\";\nexport * from \"./components/signature-pad\";\nexport * from \"./components/password-strength\";\nexport * from \"./components/page-contents\";\nexport * from \"./components/disclosure\";\nexport * from \"./components/dialog-frame\";\n// Named, not `*`: danger-confirm also holds the password field and pending hook that\n// ReauthDialog shares with it, which are kit-internal.\nexport {\n DangerConfirm,\n DEFAULT_DANGER_CONFIRM_LABELS,\n typedMatches,\n // 0.22.0: the typed-confirmation field on its own (keksdose K7) and the current-password\n // field kastlan wants for sign-in and re-authentication (kastlan 1).\n TypedConfirmField,\n CurrentPasswordInput,\n} from \"./components/danger-confirm\";\nexport type {\n DangerConfirmLabels,\n DangerConfirmProps,\n TypedMatch,\n DangerConsequence,\n TypedConfirmFieldProps,\n TypedConfirmFieldLabels,\n CurrentPasswordInputProps,\n CurrentPasswordInputLabels,\n // 0.23.0: onConfirm's second argument — the guards' values (keksdose G4b).\n DangerConfirmValues,\n} from \"./components/danger-confirm\";\n// 0.18: re-authentication before a sensitive action (Kurvenschmiede 4).\nexport { ReauthDialog, DEFAULT_REAUTH_DIALOG_LABELS } from \"./components/reauth-dialog\";\nexport type { ReauthDialogProps, ReauthDialogLabels } from \"./components/reauth-dialog\";\n// `useConfirm()` — the promise-based replacement for `window.confirm`, one host per app.\nexport * from \"./components/confirm-dialog\";\n// A non-modal corner panel and its round trigger (keksdose's assistant launcher).\nexport * from \"./components/floating-panel\";\n// The count / clear / actions bar a selection brings up (keksdose's three copies).\nexport * from \"./components/bulk-action-bar\";\nexport * from \"./components/swatch-picker\";\nexport * from \"./components/icon-picker\";\nexport * from \"./components/choice-card\";\nexport * from \"./components/autocomplete\";\nexport * from \"./components/measured-grid\";\n// Named, not `export *`: file-button.tsx also re-exports the screening helpers the\n// dropzone shares (hooks/use-file-picker since 0.34, MOD-8), which are internal.\nexport { FileButton, useFilePicker, matchesAccept, DEFAULT_FILE_PICKER_LABELS } from \"./components/file-button\";\nexport type {\n FileButtonProps,\n UseFilePickerOptions,\n UseFilePickerReturn,\n FilePickerLabels,\n FileRejection,\n FileRejectionReason,\n FileScreenOptions,\n} from \"./components/file-button\";\n// The chart kit, whole, from its subpath (`@eifi1/ui-kit/chart`, which names its parts):\n// the chart shell and its palette, the treemap, the series chart with its zoom, legend,\n// labels and facing-pair axes, the height every chart takes, and the pie chart.\nexport * from \"./chart\";\n// 0.12.0: the QR code TwoFactorSetting draws its otpauth URI with (encoder in\n// lib/qr-encode.ts — no dependency, see there).\nexport * from \"./components/qr-code\";\nexport * from \"./components/alert-banner\";\nexport * from \"./components/toggle-group\";\n// A wrapping set of links/buttons marked `aria-current` — Tabs-like looks, not tabs.\nexport * from \"./components/nav-pills\";\n// A pill carrying one VALUE — inert, a link, or a toggle, depending on which prop it is\n// given — and the list field built from it. Distinct from Button on purpose: a row of\n// buttons reads as \"choose an action\", a row of chips as \"here are the things\".\nexport * from \"./components/chip\";\n// 0.49.0 (KIT-8): five domain-free status kinds and their tones — Chip/StatusDot `status`.\nexport { statusTone, STATUS_KINDS } from \"./lib/status-tone\";\nexport type { StatusKind, StatusTone } from \"./lib/status-tone\";\n// ChipInput's own module since MOD-9: it renders Chip, so chip.tsx re-exports only its types.\nexport * from \"./components/chip-input\";\nexport * from \"./components/wizard-stepper\";\nexport * from \"./components/hover-menu\";\nexport * from \"./components/modal\";\nexport * from \"./components/full-bleed-dialog\";\nexport * from \"./components/grouped-picker\";\nexport * from \"./components/file-dropzone\";\nexport * from \"./components/mini-calendar\";\n// Named, not `*`: `heatmapLevel` is CalendarHeatmap's own since 0.53 (API-4).\nexport {\n CalendarHeatmap,\n DEFAULT_CALENDAR_HEATMAP_LABELS,\n heatmapWindowEnd,\n type CalendarHeatmapLabels,\n type CalendarHeatmapDatum,\n type CalendarHeatmapDay,\n type CalendarHeatmapProps,\n} from \"./components/calendar-heatmap\";\nexport * from \"./components/date-picker\";\nexport * from \"./components/tree-view\";\n// 0.8.0 layout and feedback primitives the apps hand-rolled or took from shadcn/Radix.\nexport * from \"./components/description-list\";\n// The Save / Cancel row forms and dialogs end in, and the editable line-item repeater\n// (journal lines, lease components, invoice positions). 0.12.0.\nexport * from \"./components/form-actions\";\n// 0.18: lock every opted-in commit under one provider, the reason in its tooltip\n// (Kurvenschmiede 2). `useCommitReason` stays internal.\n// 0.33: a lock says its source, and a control can be exempt from one\n// (docs/billing-harmonization.md §12.36): the kinds, the holds, `CommitScope`,\n// `COMMIT_EXCEPT_BILLING` and the pure `writeLockFor`.\nexport {\n WriteLockProvider,\n useWriteLock,\n writeLockFor,\n COMMIT_EXCEPT_BILLING,\n DEFAULT_WRITE_LOCK_LABELS,\n} from \"./components/write-lock\";\n// 0.46 (kastlan K4): the offline lock's scope and its source (the kind, `OFFLINE_LOCK`, left\n// the surface in 0.53: it is the string \"offline\").\nexport { COMMIT_EXCEPT_OFFLINE, useOfflineWriteLock } from \"./components/write-lock\";\nexport type {\n WriteLock,\n WriteLockLabels,\n WriteLockProviderProps,\n WriteLockKind,\n WriteLockHold,\n CommitScope,\n} from \"./components/write-lock\";\n// 0.18: the parts both apps' admin rosters repeat (Kurvenschmiede 6).\nexport {\n RoleChip,\n AccountStateChip,\n DateMark,\n dateColumn,\n DEFAULT_ACCOUNT_STATE_LABELS,\n ACCOUNT_STATE_TONES,\n} from \"./components/account-chips\";\nexport type {\n RoleChipProps,\n RoleDefinition,\n RoleVocabulary,\n AccountState,\n AccountStateLabels,\n AccountStateChipProps,\n DateMarkProps,\n DateColumnOptions,\n} from \"./components/account-chips\";\n// 0.42 (docs/admin-harmonization.md §2.1): the role in the account menu's header, a link\n// to the role's tool (`RoleDefinition.href`).\nexport { AccountRoleChip } from \"./components/account-chips\";\nexport type { AccountRoleChipProps } from \"./components/account-chips\";\n// 0.18: the cold-start notice keksdose built (#199), for every app: the corner notice\n// that explains the wait (its framework-free watchdog is lib/server-wake).\nexport { ServerWakeNotice, useServerWakeStage, DEFAULT_SERVER_WAKE_LABELS } from \"./components/server-wake\";\nexport type { ServerWakeLabels, ServerWakeNoticeProps } from \"./components/server-wake\";\n// 0.18: sharing — grantees, roles, pending grants, candidates (Kurvenschmiede 1).\nexport { ShareCard, ShareDialog, SharePanel, DEFAULT_SHARE_CARD_LABELS } from \"./components/share-card\";\nexport type {\n ShareCardProps,\n ShareDialogProps,\n SharePanelProps,\n ShareCardLabels,\n ShareRole,\n ShareGrantee,\n SharePendingGrant,\n ShareCandidate,\n ShareAddRequest,\n} from \"./components/share-card\";\nexport * from \"./components/line-items\";\nexport * from \"./components/progress-bar\";\n// Named: skeleton.tsx also holds SKELETON_CLASS, the look StatTile shares — internal.\nexport { Skeleton } from \"./components/skeleton\";\nexport type { SkeletonProps, SkeletonShape } from \"./components/skeleton\";\n// 0.48 (keksdose dev #628): the table/list loading preset, one status label.\nexport { TableSkeleton } from \"./components/table-skeleton\";\nexport type { TableSkeletonProps } from \"./components/table-skeleton\";\n// 0.12.0: a centred spinner with words, signed figures and deltas, a render-error fallback.\nexport * from \"./components/loading-state\";\nexport * from \"./components/signed-amount\";\nexport * from \"./components/error-boundary\";\nexport * from \"./components/copy-button\";\nexport { AuthedImage, DEFAULT_AUTHED_IMAGE_LABELS } from \"./components/authed-image\";\nexport type { AuthedImageProps, AuthedImageLabels } from \"./components/authed-image\";\n// Named, not `*`: `splitFileName` is ImageGrid's own since 0.53 (API-4).\nexport {\n ImageGrid,\n DEFAULT_IMAGE_GRID_LABELS,\n type ImageGridLabels,\n type ImageGridProps,\n} from \"./components/image-grid\";\nexport * from \"./components/lightbox\";\nexport * from \"./components/button-group\";\nexport * from \"./components/table\";\nexport * from \"./components/separator\";\n// Named: scroll-area.tsx also holds the overflow hook and scrollbar class Table shares.\nexport { ScrollArea } from \"./components/scroll-area\";\nexport type { ScrollAreaProps } from \"./components/scroll-area\";\n// 0.10.0 rows, menu rows, text primitives and page chrome the apps drew by hand.\nexport * from \"./components/list\";\nexport * from \"./components/menu-item\";\nexport * from \"./components/text\";\nexport * from \"./components/status-dot\";\nexport * from \"./components/page-header\";\nexport * from \"./components/breadcrumbs\";\n// The one inline link (kastlan's EntityLink / CellLink / legal and source links), through\n// `<UiKitProvider linkComponent>`. Named: the file also holds the kit's internal link picker.\nexport { TextLink } from \"./components/text-link\";\nexport type {\n TextLinkProps,\n TextLinkRenderProps,\n TextLinkTone,\n TextLinkUnderline,\n TextLinkCurrent,\n} from \"./components/text-link\";\n// The toast layer over sonner (an OPTIONAL peer, loaded lazily): `toast` mirrors sonner's\n// API so apps migrate by swapping the import; `<Toaster>` carries the placement, theme,\n// tones and z-index both apps had wired by hand.\nexport { toast, Toaster, DEFAULT_TOAST_LABELS } from \"./components/toast\";\nexport type {\n ToastId,\n ToastAction,\n ToastOptions,\n ToastPromiseOptions,\n ToastUndoOptions,\n ToastRedoOptions,\n ToastLabels,\n ToastPosition,\n ToastSwipeDirection,\n ToasterOffset,\n ToasterProps,\n} from \"./components/toast\";\n// Translation review (0.19): the presentational page parts (the pure logic is\n// lib/translation-review).\nexport {\n TranslationReviewPanel,\n TranslationReviewEditor,\n ReviewStatusChip,\n TranslationProgress,\n TranslationLocaleTabs,\n TranslationExportButton,\n REVIEW_STATUS_TONES,\n DEFAULT_TRANSLATION_REVIEW_LABELS,\n} from \"./components/translation-review\";\nexport type {\n TranslationReviewPanelProps,\n TranslationReviewEditorProps,\n ReviewStatusChipProps,\n TranslationProgressProps,\n TranslationLocaleTab,\n TranslationLocaleTabsProps,\n TranslationExportButtonProps,\n TranslationReviewLabels,\n TranslationReviewSaveInfo,\n TranslationReviewOrigin,\n TranslationReviewGroupBy,\n} from \"./components/translation-review\";\n// The legal pages' shell (0.19, H10): Imprint, Privacy Policy, Terms in every app.\n// 0.28 (docs/legal-harmonization.md): the shared wording, the page frame, the kit's\n// sections, the public footer and the terms checkbox.\nexport {\n LegalLayout,\n LegalSection,\n LegalLinks,\n LegalFooter,\n DEFAULT_LEGAL_LABELS,\n LEGAL_HREFS,\n legalOperatorText,\n useLegalLabels,\n} from \"./components/legal\";\nexport type {\n LegalLabels,\n LegalLink,\n LegalLinksProps,\n LegalSectionProps,\n LegalLayoutProps,\n LegalFooterProps,\n LegalOperator,\n LegalOperatorText,\n LegalPageKey,\n LegalInfoPageKey,\n LegalTextSectionLabels,\n LegalOperatorSectionLabels,\n LegalFramedSectionLabels,\n LegalDisclaimerSectionLabels,\n} from \"./components/legal\";\nexport { LegalPage, LegalKitSection, LegalAcceptCheckbox, LEGAL_SKELETON } from \"./components/legal-page\";\nexport type {\n LegalPageProps,\n LegalKitSectionProps,\n LegalKitSectionKey,\n LegalAcceptCheckboxProps,\n LegalSkeletonEntry,\n LegalSkeletonPage,\n LegalSectionOwner,\n LegalDisclaimerVariant,\n} from \"./components/legal-page\";\n// 0.32.0 (docs/text-size-harmonization.md): the appearance settings' words, and a row's\n// actions, one of the behaviours at Large (§4, §10.7–10.9).\nexport { DEFAULT_APPEARANCE_LABELS, useAppearanceLabels } from \"./components/appearance-labels\";\nexport type { AppearanceLabels } from \"./components/appearance-labels\";\n// 0.46 (keksdose's date format, lifted): the preference, its resolver and renderer, the\n// provider's formatter for it, and the settings field.\nexport {\n DATE_FORMAT_PREFERENCES,\n isDateFormatPreference,\n resolveDateFormat,\n formatDateWithPreference,\n // 0.52 (refactor audit 2026-10-30, DUP-2): a timestamp, the preference's date and the language's clock.\n formatDateTimeWithPreference,\n dateFormatSample,\n dateFormatterFor,\n} from \"./lib/date-format\";\nexport type { DateFormatPreference, DateFormatOptions, ResolvedDateFormat } from \"./lib/date-format\";\nexport { DateFormatSetting } from \"./components/date-format-setting\";\nexport type { DateFormatSettingProps } from \"./components/date-format-setting\";\nexport {\n RowActions,\n rowActionsColumn,\n DEFAULT_ROW_ACTIONS_LABELS,\n // 0.47.0 (keksdose N17): a hand-built table's actions heading and cell.\n RowActionsHead,\n ROW_ACTIONS_CELL_CLASS,\n} from \"./components/row-actions\";\nexport type {\n RowAction,\n RowActionList,\n RowActionsLabels,\n RowActionsProps,\n RowActionsCollapse,\n RowActionsSize,\n RowActionsColumnOptions,\n RowActionsHeadProps,\n RowActionTone,\n // 0.49 KIT-12: a danger action's confirmation words.\n RowActionConfirm,\n} from \"./components/row-actions\";\n// 0.22.0: the inputs round (kastlan's, keksdose's and Kurvenschmiede's audits).\nexport * from \"./components/checkbox-group\";\nexport * from \"./components/one-time-code-input\";\nexport * from \"./components/language-select\";\nexport * from \"./components/tile-radio\";\nexport * from \"./components/inline-edit-field\";\nexport * from \"./components/country-select\";\nexport * from \"./components/iban-input\";\nexport * from \"./components/phone-input\";\n// 0.23.0, the apps' 0.22 adoption round: the label strip over custom content (keksdose G8).\nexport * from \"./components/field-strip\";\n// Paste or drop a table, give each column a role (Kurvenschmiede's columns input,\n// keksdose's import map step). The lexer itself stays in `@eifi1/ui-kit/table-text`.\nexport * from \"./components/column-mapper\";\n\n// ── data-table suite ─────────────────────────────────────────────────────────\n// Whole, from its subpath (`@eifi1/ui-kit/data-table`, which names its parts): DataTable,\n// its sort, filters, pagination and cells, and a server table's state held by its owner,\n// URL-synced.\nexport * from \"./data-table\";\n\n// ── shell (composable app chrome) ────────────────────────────────────────────\n// Whole, from `@eifi1/ui-kit/shell`: the top bar and its controls, AppShell, the switchers\n// and AuthLayout, and (0.31.0) the router-aware parts of settings and landing —\n// SettingsLayout with its route, focus, section, context, heading and catalogue;\n// PublicHeader, RootEntry, RedirectIfAuthed and the last-visited page.\nexport * from \"./shell\";\n// 0.29.0 (docs/auth-harmonization.md): kastlan's company switcher.\nexport { CompanySwitcher, DEFAULT_COMPANY_SWITCHER_LABELS } from \"./shell/company-switcher\";\nexport type { CompanySwitcherProps, CompanySwitcherLabels, CompanySwitcherCompany } from \"./shell/company-switcher\";\n\n// ── feedback ─────────────────────────────────────────────────────────────────\n// The form somebody files a report with, and the parts an inbox is built from:\n// the status vocabulary both apps share value for value, the policy about what a\n// row may move to from where it stands, and the look of a status control, a\n// category badge and an opened report. The app still wires its own API, columns\n// and strings — see the note at the top of `feedback-inbox.tsx` for what is\n// deliberately left to it. Whole, from `@eifi1/ui-kit/feedback`, which also has 0.27.0's\n// harmonization (docs/feedback-harmonization.md): the record, menu, table, detail and\n// crash reporter.\nexport * from \"./feedback\";\n\n// ── multi-step wizard ────────────────────────────────────────────────────────\n// The engine (step machine, validators, collected data), the chrome around it\n// (indicator + nav bar + cancel confirm) and the review step it ends on.\n// `components/wizard-stepper` next door is a different, much smaller thing: a bare\n// step indicator for a two-step import flow, with no engine.\n//\n// `wizard-field` was removed here rather than kept as stock: it held a\n// `WizardField`/`WizardSelectField` pair that had never been rendered in any app — a\n// field group nothing was built from, which this comment used to advertise. A design\n// system may carry stock; untested stock nothing has ever rendered is not stock, it is\n// a liability with an export. The react-hook-form bridge to the Next gate\n// (`useRhfWizardStep`) is NOT here either: it left the barrel in 0.4.x so the barrel\n// imports no react-hook-form, and came back in 0.11 under `@eifi1/ui-kit/rhf`\n// (src/rhf.ts), where the optional peer is that subpath's alone.\n// Whole, from `@eifi1/ui-kit/wizard`.\nexport * from \"./wizard\";\n\n// ── guided tours ─────────────────────────────────────────────────────────────\nexport * from \"./tour\";\n\n// ── command palette / global search ──────────────────────────────────────────\n// The palette, its pure matcher and the ⌘K search on it. The list fold every search box\n// shares is lib/text-match, above.\nexport * from \"./search\";\n\n// ── auth ─────────────────────────────────────────────────────────────────────\n// 0.29.0 (docs/auth-harmonization.md): sign-in, sign-up and the signed-out pages — forms\n// that take callbacks and never send a request themselves. The person-name order of each\n// language is lib/person-name, kastlan's company switcher is in the shell section.\nexport { SignInForm, DEFAULT_SIGN_IN_LABELS } from \"./auth/sign-in-form\";\nexport type {\n SignInFormProps,\n SignInLabels,\n SignInAnswer,\n SignInStep,\n SignInAction,\n SignInCredentials,\n SignInCodeValues,\n SignInNewPasswordValues,\n} from \"./auth/sign-in-form\";\nexport { RegisterForm, DEFAULT_REGISTER_LABELS } from \"./auth/register-form\";\nexport type { RegisterFormProps, RegisterLabels, RegisterValues } from \"./auth/register-form\";\nexport { CompleteNameDialog, DEFAULT_COMPLETE_NAME_LABELS } from \"./auth/complete-name-dialog\";\nexport type { CompleteNameDialogProps, CompleteNameLabels, CompleteNameValues } from \"./auth/complete-name-dialog\";\nexport { taggedEmail } from \"./auth/email-tag\";\n// 0.54 (kastlan reuse audit 2026-11-02, proposal 4): `billingRefusalText`, a billing\n// refusal's words, which every app mapped from the code by hand.\nexport { isAuthError, authErrorCode, isBillingError, billingRefusalText } from \"./auth/auth-errors\";\nexport type { AuthErrorCode } from \"./auth/auth-errors\";\nexport { ForgotPasswordForm, DEFAULT_FORGOT_PASSWORD_LABELS } from \"./auth/forgot-password-form\";\nexport type { ForgotPasswordFormProps, ForgotPasswordLabels } from \"./auth/forgot-password-form\";\nexport { ResetPasswordForm, DEFAULT_RESET_PASSWORD_LABELS } from \"./auth/reset-password-form\";\nexport type {\n ResetPasswordFormProps,\n ResetPasswordLabels,\n ResetPasswordCheck,\n ResetPasswordValues,\n ResetPasswordResult,\n} from \"./auth/reset-password-form\";\nexport { VerifyEmailStatus, EmailVerificationBanner, DEFAULT_VERIFY_EMAIL_LABELS } from \"./auth/verify-email\";\nexport type {\n VerifyEmailStatusProps,\n EmailVerificationBannerProps,\n VerifyEmailLabels,\n VerifyEmailFailure,\n} from \"./auth/verify-email\";\nexport { NotFoundPage, DEFAULT_NOT_FOUND_LABELS } from \"./auth/not-found-page\";\nexport type { NotFoundPageProps, NotFoundLabels } from \"./auth/not-found-page\";\nexport { AcceptInvitation, DEFAULT_ACCEPT_INVITATION_LABELS } from \"./auth/accept-invitation\";\nexport type {\n AcceptInvitationProps,\n AcceptInvitationLabels,\n AcceptInvitationResult,\n AcceptInvitationFailure,\n} from \"./auth/accept-invitation\";\nexport type { AuthHeadingLevel } from \"./auth/status-parts\";\n// 0.30.0: a rate limit and its wait, and the codes the account, billing and demo calls\n// answer with.\nexport { isRateLimited, retryAfterSeconds } from \"./auth/auth-errors\";\nexport type {\n AccountErrorCode,\n BillingErrorCode,\n BillingRefusalTextOptions,\n DemoErrorCode,\n KitErrorCode,\n} from \"./auth/auth-errors\";\n\n// ── account ──────────────────────────────────────────────────────────────────\n// In account/ since 0.34, beside the other account cards (MOD-8, refactor audit 2026-10):\n// the profile, password and two-factor cards, and (0.12.0) the fourth account section,\n// the passkeys.\nexport * from \"./account/account-settings\";\nexport * from \"./account/passkeys-setting\";\n// 0.30.0 (docs/user-admin-harmonization.md): the account's own settings — email change,\n// sessions, deletion, export. Callbacks only; the confirmation level is the server's.\nexport { EmailChangeSetting, DEFAULT_EMAIL_CHANGE_LABELS } from \"./account/email-change-setting\";\nexport type {\n EmailChangeSettingProps,\n EmailChangeLabels,\n EmailChangeValues,\n EmailChangeAction,\n} from \"./account/email-change-setting\";\nexport { SessionsSetting, DEFAULT_SESSIONS_LABELS } from \"./account/sessions-setting\";\nexport type {\n SessionsSettingProps,\n SessionsLabels,\n SessionItem,\n SessionId,\n SessionsAction,\n} from \"./account/sessions-setting\";\nexport { DeleteAccountSetting, DEFAULT_DELETE_ACCOUNT_LABELS } from \"./account/delete-account-setting\";\nexport type {\n DeleteAccountSettingProps,\n DeleteAccountLabels,\n DeleteAccountValues,\n DeletionMode,\n DeleteAccountConsequence,\n} from \"./account/delete-account-setting\";\nexport { DataExportSetting, DEFAULT_DATA_EXPORT_LABELS } from \"./account/data-export-setting\";\nexport type { DataExportSettingProps, DataExportLabels, DataExportFile } from \"./account/data-export-setting\";\n\n// ── admin ────────────────────────────────────────────────────────────────────\n// 0.30.0 (docs/user-admin-harmonization.md): the admin user list and its actions, and the\n// invitations panel. Callbacks only; the confirmation level is the server's.\nexport {\n useUserRosterColumns,\n UserIdentityCell,\n UserRowActions,\n userRosterSort,\n USER_ROSTER_SORT_KEYS,\n DEFAULT_USER_ROSTER_LABELS,\n} from \"./admin/user-roster\";\nexport type {\n UserRosterRow,\n AdminUserStateFields,\n RosterState,\n UserRosterSortKey,\n UserRosterLabels,\n UserIdentityCellProps,\n UserRowAction,\n UserRowActionList,\n UserRowActionsProps,\n RoleEditing,\n UserRosterColumnsOptions,\n} from \"./admin/user-roster\";\nexport { RoleSelect, RolesEditor, DEFAULT_ROLE_SELECT_LABELS } from \"./admin/role-select\";\nexport type { RoleSelectProps, RolesEditorProps, RoleSelectLabels, RoleLock, RoleLockCode } from \"./admin/role-select\";\nexport { ReviewerScopeEditor, DEFAULT_REVIEWER_SCOPE_LABELS } from \"./admin/reviewer-scope-editor\";\nexport type {\n ReviewerScope,\n ReviewerScopeArea,\n ReviewerScopeLanguage,\n ReviewerScopeLabels,\n ReviewerScopeEditorProps,\n} from \"./admin/reviewer-scope-editor\";\nexport { AdminActionConfirm, DEFAULT_ADMIN_ACTION_LABELS } from \"./admin/admin-action-confirm\";\nexport type {\n AdminConfirmLevel,\n AdminActionConfirmValues,\n AdminActionTarget,\n AdminActionLabels,\n AdminActionConfirmProps,\n} from \"./admin/admin-action-confirm\";\nexport { AdminActionLog, ADMIN_ACTION_KINDS, DEFAULT_ADMIN_ACTION_LOG_LABELS } from \"./admin/admin-action-log\";\nexport type {\n AdminActionKind,\n AdminActionLogEntry,\n AdminActionLogLabels,\n AdminActionLogPaging,\n AdminActionLogProps,\n // 0.34 (docs/user-admin-harmonization.md §11): a log target that is not a person, and\n // the app's noun for its groups.\n AdminGroupTarget,\n AdminOtherTarget,\n AdminGroupNoun,\n} from \"./admin/admin-action-log\";\nexport { TransferOwnershipDialog, DEFAULT_TRANSFER_OWNERSHIP_LABELS } from \"./admin/transfer-ownership-dialog\";\nexport type {\n TransferCandidate,\n TransferUnavailable,\n TransferValues,\n TransferOwnershipLabels,\n TransferOwnershipDialogProps,\n} from \"./admin/transfer-ownership-dialog\";\nexport { InvitationsPanel, DEFAULT_INVITATIONS_LABELS } from \"./admin/invitations-panel\";\nexport type {\n InvitationStatus,\n InvitationRow,\n InvitationDraft,\n InvitationSentAnswer,\n InvitationScope,\n InvitationsLabels,\n InvitationsPanelProps,\n} from \"./admin/invitations-panel\";\nexport type { AdminPerson } from \"./admin/admin-parts\";\n// 0.42.0 (docs/admin-harmonization.md §3.1): the admin area's template — its words, the\n// shared sections and the catalogue helper, the 403 page, the overview and its tiles fed\n// by `GET /admin/attention`, and the Tools list. The menu row is `./shell`'s.\nexport { DEFAULT_ADMIN_AREA_LABELS, useAdminAreaLabels } from \"./admin/admin-area-labels\";\nexport type { AdminAreaLabels, AdminTileLabels, AdminSharedSection } from \"./admin/admin-area-labels\";\nexport { ADMIN_SECTIONS, adminSections } from \"./admin/admin-sections\";\nexport type { AdminSectionDefinition, AdminOwnSection, AdminSectionsOptions } from \"./admin/admin-sections\";\n// 0.43.0 (keksdose): the section order as ids, and the narrowed `leaveOut`.\nexport { adminSectionOrder } from \"./admin/admin-sections\";\nexport type { AdminSectionPlace, AdminSectionOrderOptions, AdminKeptSection } from \"./admin/admin-sections\";\nexport { AdminForbidden } from \"./admin/admin-forbidden\";\nexport type { AdminForbiddenProps } from \"./admin/admin-forbidden\";\nexport { AdminOverview, AttentionTile, adminWaitingCount } from \"./admin/admin-overview\";\nexport type {\n AdminAttention,\n AdminAttentionTile,\n AdminExtraTile,\n AdminOverviewProps,\n AttentionTileProps,\n // 0.46 (Kurvenschmiede 1): the feedback tiles with the kit's words.\n AdminFeedbackTile,\n AdminFeedbackTileKey,\n AdminOwnTile,\n} from \"./admin/admin-overview\";\nexport { AdminToolLinks } from \"./admin/admin-tool-links\";\nexport type { AdminToolLink, AdminToolLinksProps } from \"./admin/admin-tool-links\";\n// 0.45.0 (docs/admin-harmonization.md §9.2.4): \"Send a test mail to me\".\nexport { MailTestCard, DEFAULT_MAIL_TEST_CARD_LABELS, MAIL_TEST_ANCHOR } from \"./admin/mail-test-card\";\nexport type { MailTestCardProps, MailTestCardLabels, MailTestAnswer } from \"./admin/mail-test-card\";\n// 0.33.0: the operator's plan parts (docs/billing-harmonization.md §14.12).\nexport { usePlanColumn, PlanChangeConfirm, usePlanChangeResult, DEFAULT_PLAN_CHANGE_LABELS } from \"./admin/plan-change\";\nexport type {\n PlanChangeLabels,\n PlanColumnOptions,\n PlanColumnUsage,\n PlanChange,\n PlanChangeConfirmProps,\n PlanChangeOutcome,\n PlanChangeTone,\n PlanChangeLine,\n PlanChangeResultOptions,\n} from \"./admin/plan-change\";\n\n// ── billing ──────────────────────────────────────────────────────────────────\n// 0.32.0: plans, standing, banners, the limit notice (docs/billing-harmonization.md §7).\nexport { DEFAULT_BILLING_LABELS, useBillingLabels, SUBSCRIPTION_STATUSES } from \"./billing/billing-labels\";\nexport type { BillingLabels, SubscriptionStatus } from \"./billing/billing-labels\";\nexport { BILLING_INTERVALS, planPrice, minorToMajor, formatPlanPrice, billingCurrencyFor } from \"./billing/plan-price\";\nexport type {\n BillingInterval,\n BillingCurrency,\n PlanIntervalPrices,\n PlanPrices,\n PlanPriceAnswer,\n} from \"./billing/plan-price\";\nexport { PlanCard, PlanPicker, GrantWarningConfirm } from \"./billing/plan-card\";\nexport type {\n BillingPlan,\n PlanRelation,\n PlanCardProps,\n PlanPickerProps,\n PlanChoice,\n GrantWarningConfirmProps,\n} from \"./billing/plan-card\";\nexport { SubscriptionStatusChip, SUBSCRIPTION_STATUS_TONES } from \"./billing/subscription-status-chip\";\nexport type { SubscriptionStatusChipProps } from \"./billing/subscription-status-chip\";\nexport { BillingBanner } from \"./billing/billing-banner\";\nexport type { BillingBannerProps, BillingBannerKind } from \"./billing/billing-banner\";\nexport { PlanLimitNotice, planLimitMailto } from \"./billing/plan-limit-notice\";\nexport type { PlanLimitNoticeProps } from \"./billing/plan-limit-notice\";\nexport { isPlanLimit } from \"./billing/plan-limit\";\nexport type { PlanLimitRefusal } from \"./billing/plan-limit\";\n// 0.33.0: sources name their kind, the combined lock holds them all, and billing's is one\n// hook (docs/billing-harmonization.md §12.36).\nexport { combineWriteLocks, useBillingLockReason, useBillingWriteLock } from \"./billing/billing-lock\";\nexport type { WriteLockSource, CombinedWriteLock, BillingLockReasonOptions } from \"./billing/billing-lock\";\nexport { billingLockAt, isBillingReadOnly, billingDaysLeft } from \"./billing/billing-standing\";\nexport type { BillingStanding } from \"./billing/billing-standing\";\nexport { SubscriptionActions } from \"./billing/subscription-actions\";\nexport type { SubscriptionActionsProps } from \"./billing/subscription-actions\";\n// 0.33.0, billing's round 0.33 (docs/billing-harmonization.md §14):\n// the way back from a checkout and its \"processing\", router-agnostic (§14.4).\nexport {\n CHECKOUT_RETURN_PARAM,\n CHECKOUT_RETURN_VALUE,\n isCheckoutReturn,\n withoutCheckoutReturn,\n checkoutReturnUrl,\n} from \"./billing/checkout-return\";\nexport { checkoutFingerprint, noteCheckoutStarted, useCheckoutProcessing } from \"./billing/checkout-processing\";\nexport type { CheckoutOverview, CheckoutProcessingOptions } from \"./billing/checkout-processing\";\n// The link to the pay page and Paddle's locale (§14.4); the page itself ships as dist/pay/.\nexport { paddleLocale, payPageUrl } from \"./billing/pay-page\";\nexport type { PaddleEnvironment } from \"./billing/pay-page\";\n// 0.39 (§15.2.6): the apps every pay page serves, by their `billing_app` tag.\nexport { PAY_PAGE_APPS } from \"./billing/pay-page\";\nexport type { PayPageApp } from \"./billing/pay-page\";\n// The API's shapes the parts read, server-kit 0.7's (§4, §14.5), and the plan limit as\n// a toast (§14.11).\nexport type { BillingOverview, SubscriptionSource, PortalTarget, PortalRequest } from \"./billing/billing-overview\";\nexport { usePlanLimitToast } from \"./billing/plan-limit-toast\";\nexport type { PlanLimitToastOptions } from \"./billing/plan-limit-toast\";\n// 0.39 (§15.2.10): the payer's plan switch, its shapes, and what the payer pays.\nexport { PlanSwitchConfirm } from \"./billing/plan-switch\";\nexport type { PlanSwitchConfirmProps, PlanSwitchSide } from \"./billing/plan-switch\";\nexport type { PaidPrice, PlanSwitchRequest, PlanSwitchPreview } from \"./billing/billing-overview\";\n// 0.42 (§16): the portal for the buyer only, the in-app cancel, the permanent-grant warning.\nexport { isPermanentGrant } from \"./billing/billing-overview\";\nexport type { BillingPortalAccess } from \"./billing/billing-overview\";\nexport { CancelSubscriptionConfirm } from \"./billing/cancel-subscription\";\nexport type { CancelSubscriptionConfirmProps } from \"./billing/cancel-subscription\";\n// 0.43 (§17): the provider's portal in a new tab; the in-app cancel's follow-up.\nexport { openProviderPage } from \"./billing/provider-page\";\nexport type { OpenProviderPageOptions, ProviderPageWay } from \"./billing/provider-page\";\nexport { useCancelRequest } from \"./billing/cancel-request\";\nexport type { CancelRequest, CancelRequested, CancelRequestView } from \"./billing/cancel-request\";\n// The operator's plan parts (§14.12) are admin/plan-change, in the admin section.\n\n// ── settings ─────────────────────────────────────────────────────────────────\n// 0.31.0 (docs/settings-harmonization.md): the settings page and the admin page on one\n// shell. The router-aware layout with its\n// route and focus hooks, and the router-free section, context, heading level and catalogue,\n// come with `./shell` above (also `@eifi1/ui-kit/shell`).\nexport { DEFAULT_SETTINGS_LABELS, useSettingsLabels } from \"./settings/settings-labels\";\nexport type { SettingsLabels, SettingsGroupLabels, SettingsCoreGroup } from \"./settings/settings-labels\";\n// 0.36.0 (§11): \"Reset this device's settings\" — the registry the kit's stores, provider\n// and shell join on their own and an app adds its own device keys to, and the card, the\n// appearance group's last.\nexport { registerDeviceSetting, deviceSettings, resetDeviceSettings } from \"./lib/device-settings\";\nexport type { DeviceSetting, DeviceSettingKind } from \"./lib/device-settings\";\nexport { DeviceResetSetting, DEVICE_RESET_ANCHOR, DEFAULT_DEVICE_RESET_LABELS } from \"./settings/device-reset-setting\";\nexport type { DeviceResetSettingProps, DeviceResetLabels } from \"./settings/device-reset-setting\";\n// The language follows the account (§6.2); since 0.32 so do the text size and the\n// contrast (useAccountAppearance below, docs/text-size-harmonization.md §6).\nexport { useAccountLanguage, resolveAccountLanguage, matchOfferedLanguage } from \"./settings/use-account-language\";\nexport type {\n UseAccountLanguageOptions,\n AccountLanguage,\n AccountLanguageSource,\n ResolveAccountLanguageInput,\n ResolvedAccountLanguage,\n} from \"./settings/use-account-language\";\nexport { useAccountAppearance } from \"./settings/use-account-appearance\";\nexport type {\n AppearanceSource,\n AccountAppearanceFields,\n DeviceAppearance,\n AccountAppearancePatch,\n ResolvedAccountAppearance,\n UseAccountAppearanceOptions,\n AccountAppearance,\n} from \"./settings/use-account-appearance\";\n\n// ── notifications ────────────────────────────────────────────────────────────\n// 0.36.0 (docs/notifications-harmonization.md §4.2): the notification cards — the types\n// the server answers (the kit keeps no list of its own), quiet hours with the zone picker,\n// this device's push on its hook, the device list — and the signed-out unsubscribe page.\n// Each card takes the app's request functions; the kit makes no request itself.\nexport { DEFAULT_NOTIFICATIONS_LABELS } from \"./notifications/notifications-labels\";\nexport type { NotificationsLabels, NotificationRegionLabels } from \"./notifications/notifications-labels\";\nexport type {\n DigestCadence,\n NotificationSwitches,\n NotificationTypesValue,\n NotificationTypeEntry,\n NotificationTypeGroup,\n NotificationSettingsPatch,\n PushDeviceItem,\n NotificationChannel,\n} from \"./notifications/notification-types\";\nexport { NotificationTypesSetting } from \"./notifications/notification-types-setting\";\nexport type { NotificationTypesSettingProps } from \"./notifications/notification-types-setting\";\nexport { QuietHoursSetting } from \"./notifications/quiet-hours-setting\";\nexport type { QuietHoursSettingProps } from \"./notifications/quiet-hours-setting\";\n// 0.46 (docs/notifications-harmonization.md §10.1, §10.3): the inbox list, the bell and\n// the device-zone report (the account's zone is automatic only, amended 2026-10-20).\nexport { NotificationInbox, INBOX_BADGE_INTERVAL } from \"./notifications/notification-inbox\";\nexport type {\n NotificationInboxAction,\n NotificationInboxItem,\n NotificationInboxProps,\n} from \"./notifications/notification-inbox\";\nexport { NotificationBell } from \"./notifications/notification-bell\";\nexport type { NotificationBellProps } from \"./notifications/notification-bell\";\n// `deviceTimeZone` lives beside the report since 0.46.1 (keksdose N6; sign-up needs it).\nexport { useDeviceZoneReport, deviceTimeZone } from \"./notifications/device-zone-report\";\nexport type { DeviceZoneReportOptions } from \"./notifications/device-zone-report\";\nexport {\n usePushDevice,\n PUSH_SUBSCRIPTION_CHANGED,\n notifyPushSubscriptionChanged,\n pushSupported,\n PushDeviceError,\n // 0.52 (§10.6, refactor audit 2026-10-30 FLW-2): an explicit sign-out releases this device's push.\n releaseThisDevicePush,\n} from \"./notifications/use-push-device\";\nexport type {\n PushDevice,\n UsePushDeviceOptions,\n PushSubscriptionInput,\n PushPermission,\n PushDeviceErrorCode,\n} from \"./notifications/use-push-device\";\n// 0.46 (NT:1028): the service worker re-registers a rotated subscription. A worker imports\n// them from `@eifi1/ui-kit/push-worker` (§10.6 rule 5); the barrel keeps them too.\nexport {\n handlePushSubscriptionChange,\n resubscribeAfterChange,\n pushSubscriptionInput,\n} from \"./notifications/push-worker\";\nexport type {\n PushReplaceInput,\n PushSubscriptionChangeOptions,\n PushSubscriptionChangeEventLike,\n PushResubscribeOutcome,\n PushWorkerScope,\n} from \"./notifications/push-worker\";\nexport { PushDeviceSetting } from \"./notifications/push-device-setting\";\nexport type { PushDeviceSettingProps, PushDeviceAction } from \"./notifications/push-device-setting\";\nexport { PushDevicesSetting } from \"./notifications/push-devices-setting\";\nexport type { PushDevicesSettingProps } from \"./notifications/push-devices-setting\";\nexport { UnsubscribePanel, unsubscribeTokenType } from \"./notifications/unsubscribe-panel\";\nexport type { UnsubscribePanelProps } from \"./notifications/unsubscribe-panel\";\n// 0.38.0 (docs/feedback-harmonization.md §9.11): the two feedback types' setting words.\n// 0.46.1 (keksdose N9): `useFeedbackNotificationTypesLabels`, the words resolved, for `adminGroup`.\nexport {\n useFeedbackNotificationTypes,\n useFeedbackNotificationTypesLabels,\n DEFAULT_FEEDBACK_NOTIFICATION_TYPES_LABELS,\n} from \"./notifications/feedback-notification-types\";\nexport type {\n FeedbackNotificationTypeId,\n FeedbackNotificationTypesLabels,\n} from \"./notifications/feedback-notification-types\";\n\n// ── landing ──────────────────────────────────────────────────────────────────\n// 0.31.0 (docs/landing-demo-harmonization.md): the public landing page. Its router-aware parts — the header and the resume (RootEntry,\n// RedirectIfAuthed, the last-visited page) — come with `./shell` above.\nexport { DEFAULT_LANDING_LABELS, useLandingLabels } from \"./landing/landing-labels\";\nexport type { LandingLabels } from \"./landing/landing-labels\";\nexport { accessAction, useAccessAction } from \"./landing/access\";\nexport type { AccessChoice, AccessLink, AccessLabels } from \"./landing/access\";\nexport { LandingActions } from \"./landing/landing-actions\";\nexport type { LandingActionsProps, LandingSession } from \"./landing/landing-actions\";\nexport { Hero, FeatureRows, FeatureRow, TrustStrip, CtaBand, PublicFooter } from \"./landing/landing-sections\";\nexport type {\n HeroProps,\n FeatureRowsProps,\n FeatureRowProps,\n TrustItem,\n TrustStripProps,\n CtaBandProps,\n PublicFooterProps,\n} from \"./landing/landing-sections\";\nexport { usePageSeo, seoCopyProblems, metaContent } from \"./landing/page-seo\";\nexport type { PageSeo, SeoCopy, SeoCopyLimits, SeoCopyProblem, SeoCopyProblemCode } from \"./landing/page-seo\";\n// 0.51.0 (Marcel 2026-10-26): the frame of a public page that is not the landing or a legal page.\nexport { PublicPage } from \"./landing/public-page\";\nexport type { PublicPageProps } from \"./landing/public-page\";\n\n// ── demo ─────────────────────────────────────────────────────────────────────\n// 0.31.0 (docs/landing-demo-harmonization.md): the demo's start, banner, countdown and end.\nexport { DEFAULT_DEMO_LABELS, useDemoLabels } from \"./demo/demo-labels\";\nexport type { DemoLabels } from \"./demo/demo-labels\";\nexport { isDemoSession } from \"./demo/demo-session\";\nexport type { DemoModel, DemoSessionUser } from \"./demo/demo-session\";\nexport { useDemoCountdown } from \"./demo/demo-countdown\";\nexport type { DemoCountdown, DemoCountdownOptions, DemoExpiry } from \"./demo/demo-countdown\";\nexport { DemoStart } from \"./demo/demo-start\";\nexport type { DemoStartProps } from \"./demo/demo-start\";\nexport { DemoBanner } from \"./demo/demo-banner\";\nexport type { DemoBannerProps } from \"./demo/demo-banner\";\nexport { DemoEnded } from \"./demo/demo-ended\";\nexport type { DemoEndedProps } from \"./demo/demo-ended\";\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["// @eifi1/ui-kit — shared design-system barrel.\n//\n// Domain-free UI + theme surface shared across apps (lead app: Keksdose). Consumers import\n// components/theme from \"@eifi1/ui-kit\" and the token stylesheet from \"@eifi1/ui-kit/tokens.css\".\n//\n// Grouped by folder. A subpath entry (chart, data-table, shell, feedback, wizard, tour,\n// search) is re-exported whole — `export * from \"./chart\"` — instead of its list typed out a\n// second time here: the two copies had drifted (refactor audit 2026-10, MOD-5). A name that\n// arrives twice that way is the same binding from the same module, which ESM does not count\n// as a clash.\n\n// ── lib ────────────────────────────────────────────────────────────────────\nexport * from \"./lib/calc\";\nexport { cn } from \"./lib/cn\";\nexport { logger, setStoreLog } from \"./lib/logger\";\n// Intl number / money / percent / date / relative-time formatting, and `useKitFormat()`\n// for the same bound to the provider's locale (kastlan's formatters.ts, English \"5m ago\").\nexport * from \"./lib/format\";\n// localStorage that never throws (Safari private mode, blocked site data). 0.52 (DUP-8,\n// refactor audit 2026-10-30): the remove, the sessionStorage pair and a JSON pair with a\n// shape check — 16 files in the apps wrap storage by hand, a few of them with no guard.\nexport {\n readStored,\n writeStored,\n removeStored,\n readSessionStored,\n writeSessionStored,\n readStoredJson,\n writeStoredJson,\n} from \"./lib/safe-storage\";\n// 0.52 (DUP-8): `prefers-reduced-motion`, asked at the moment of the motion (KS copied it).\nexport { prefersReducedMotion } from \"./lib/reduced-motion\";\n// Save a fetched Blob as a download, and read the name a Content-Disposition asks for\n// (`filename*` first) — 0.34, KS U5; the kit's own three downloads use them.\nexport { saveBlob, filenameFromDisposition } from \"./lib/download\";\n// The local-calendar ISO date helpers are the \"@eifi1/ui-kit/dates\" entry, standalone: none\n// of its names is in this barrel (public-surface.test.ts, STANDALONE).\n// One fold and one ranking for every list's search box (DUP-5), for an app's own lists;\n// and the pickers' every-word match (0.51.5), for an async `loadOptions` that filters itself.\nexport { foldForSearch, rankMatch, searchWords, matchesSearch } from \"./lib/text-match\";\nexport type { MatchRank } from \"./lib/text-match\";\n// 0.12.0: the QR encoder QrCode draws with — no dependency, see lib/qr-encode.ts.\nexport { encodeQr } from \"./lib/qr-encode\";\nexport type { QrEncodeOptions, QrErrorCorrection, QrMatrix } from \"./lib/qr-encode\";\n// 0.18: the cold-start notice keksdose built (#199), for every app: the framework-free\n// watchdog over the app's requests (the corner notice is components/server-wake).\n// 0.55 (keksdose's 0.51 review N4): `ServerWakeToken`, what `start` returns for `end(token)`.\nexport { createServerWake, serverWake, watchReadsAnd, attachServerWake, wrapFetch } from \"./lib/server-wake\";\nexport type {\n ServerWakeStage,\n ServerWakeFilter,\n ServerWakeOptions,\n ServerWakeRequest,\n ServerWakeToken,\n ServerWakeWatcher,\n ServerWakeAxiosConfig,\n AxiosLikeInstance,\n} from \"./lib/server-wake\";\n// 0.34 (docs/auth-harmonization.md §11, round 0.34 C7): renewing a session — one refresh\n// per tab, a definitive failure ends the session once, a transient one keeps it.\n// 0.55 (kastlan reuse audit 2026-11-02, proposal 6): `watchSessionElsewhere`, the session\n// ending in another tab, or while the page sat in the back/forward cache.\nexport {\n createSessionRefresh,\n attachSessionRefresh,\n isTransientRefreshFailure,\n isSignedOutStep,\n watchSessionElsewhere,\n} from \"./lib/session-refresh\";\nexport type {\n SessionRefresh,\n SessionRefreshOptions,\n SessionRenewal,\n SessionRefreshOutcome,\n SessionElsewhereOptions,\n} from \"./lib/session-refresh\";\n// 0.55 (kastlan reuse audit 2026-11-02, proposal 1): one parser for the apps' release\n// notes — a CHANGELOG.md as releases, the sections keyed across both presets' headings,\n// each item without the generator's links, grouped by scope. Pure: no React.\nexport { parseChangelog, parseChangelogItem, changelogSectionKey, groupByScope } from \"./lib/changelog\";\nexport type {\n ChangelogRelease,\n ChangelogSection,\n ChangelogSectionKey,\n ChangelogItem,\n ChangelogScopeGroup,\n} from \"./lib/changelog\";\n// 0.55: the card on it — one release, its sections by key, the notes grouped by scope\n// (keksdose's release-notes.tsx and kastlan's changelog page).\nexport { ReleaseNotes, DEFAULT_RELEASE_NOTES_LABELS } from \"./components/release-notes\";\nexport type {\n ReleaseNotesProps,\n ReleaseNotesRelease,\n ReleaseNotesSection,\n ReleaseNotesLabels,\n} from \"./components/release-notes\";\n// 0.29.0 (docs/auth-harmonization.md): the person-name order of each language.\nexport { formatPersonName, personInitials } from \"./lib/person-name\";\nexport type { PersonName } from \"./lib/person-name\";\n// Translation review (0.19): one contract for kastlan's and keksdose's review pages — the\n// pure rows/status/placeholder logic here, the presentational page parts under components.\nexport {\n REVIEW_STATUSES,\n fromApiReview,\n toApiWrite,\n flattenStrings,\n keyNamespace,\n placeholderTokens,\n placeholderMismatch,\n reviewStatus,\n keyInArea,\n keyInAreas,\n // 0.28: the area a key is grouped under — `kit.legal.*` in `legal` (legal round §7.5).\n reviewAreaOf,\n translationRows,\n summariseRows,\n DEFAULT_TRANSLATION_REVIEW_FILTER,\n filterTranslationRows,\n reviewWrite,\n mergeReviews,\n dropReviews,\n // 0.54: a save or a reset of any size under server-kit's cap of 2000 (kastlan reuse\n // audit 2026-11-02, proposal 5).\n saveReviewsInChunks,\n clearReviewsInChunks,\n translationCorrections,\n // 0.25: grouping and the approvals' Undo (keksdose live #377).\n groupTranslationRows,\n unreviewedRows,\n reviewUndo,\n // 0.26: swipe bindings for an app's Settings → Interaction (keksdose #377 rework).\n TRANSLATION_REVIEW_SWIPE_ACTIONS,\n DEFAULT_TRANSLATION_REVIEW_SWIPE,\n translationReviewSwipePlan,\n} from \"./lib/translation-review\";\nexport type {\n TranslationVerdict,\n TranslationReview,\n TranslationReviewWrite,\n TranslationReviewKey,\n ReviewStatus,\n TranslationRow,\n ApiTranslationReview,\n ApiTranslationReviewsResponse,\n ApiTranslationReviewWrite,\n TranslationRowsInput,\n TranslationSummary,\n TranslationReviewFilter,\n TranslationCorrection,\n TranslationRowGroup,\n TranslationReviewUndo,\n TranslationReviewSwipeAction,\n TranslationReviewSwipeBinding,\n} from \"./lib/translation-review\";\n// 0.22.0, the inputs round: the country list and the IBAN and phone helpers that\n// CountrySelect, IbanInput and PhoneInput are built on.\nexport { COUNTRY_CODES, countryName } from \"./lib/countries\";\nexport { IBAN_LENGTHS, compactIban, formatIban, ibanCheckDigits, ibanProblem, isValidIban, isQrIban } from \"./lib/iban\";\nexport type { IbanKind, IbanProblem } from \"./lib/iban\";\nexport { PHONE_DIAL_CODES, PHONE_COUNTRIES, parsePhone, formatNationalPhone, formatPhone, isE164 } from \"./lib/phone\";\nexport type { PhoneCountryCode, PhoneCountry, ParsedPhone } from \"./lib/phone\";\n// 0.23.0: ColumnMapper's pure half (Kurvenschmiede's columns input, keksdose's import map).\nexport {\n assignColumnRole,\n guessMapping,\n missingRoles,\n readMappedTable,\n readTextFile,\n roleOfColumn,\n} from \"./lib/column-mapping\";\nexport type { ColumnMapperResult, ColumnMapping, ColumnRole } from \"./lib/column-mapping\";\n\n// ── hooks ────────────────────────────────────────────────────────────────────\nexport { useMediaQuery } from \"./hooks/use-media-query\";\nexport { useBodyScrollLock } from \"./hooks/use-body-scroll-lock\";\nexport { useAnchoredRect } from \"./hooks/use-anchored-rect\";\nexport type { AnchorRect } from \"./hooks/use-anchored-rect\";\nexport {\n useAnchoredPanel,\n anchoredPanelPlacement,\n useVisualViewport,\n readKeyboardInset,\n} from \"./hooks/use-anchored-panel\";\nexport type {\n AnchoredPanel,\n AnchoredPanelOptions,\n ViewportBox,\n KeyboardInsetOptions,\n} from \"./hooks/use-anchored-panel\";\nexport { useEscapeKey, useOutsideClick } from \"./hooks/use-dismiss\";\n// Focus containment for an overlay, and a live region for a change that moves no focus.\n// Both were extracted from the two components that already did them correctly (Modal and\n// CommandPalette) so the rest of the kit stops being the exception.\nexport { useFocusTrap } from \"./hooks/use-focus-trap\";\nexport type { FocusTrapOptions } from \"./hooks/use-focus-trap\";\nexport { useAnnounce } from \"./hooks/use-announce\";\nexport type { UseAnnounceReturn, UseAnnounceOptions, AnnounceRegionProps } from \"./hooks/use-announce\";\nexport { useOverlayHistory } from \"./hooks/use-overlay-history\";\nexport { useCloseTransition, OVERLAY_EXIT_MS } from \"./hooks/use-close-transition\";\nexport { useRowSwipe } from \"./hooks/use-row-swipe\";\n// 0.52 (DUP-8): DataTable's press-and-hold, which keksdose wrote first and still keeps.\nexport { useLongPress } from \"./hooks/use-long-press\";\nexport type { LongPressOptions, LongPressResult } from \"./hooks/use-long-press\";\n// 0.28: keksdose's noindex marker, for the legal and auth pages of every app.\nexport { useNoIndex } from \"./hooks/use-noindex\";\n// 0.49 KIT-9: the window's title from page, section and app, in the provider's format.\nexport { useDocumentTitle } from \"./hooks/use-document-title\";\n// 0.53: the 55 names no app reads left the entry points (deprecated in 0.52, refactor audit\n// 2026-10-30, API-4, decision 4) — here 0.49 KIT-1b's `asciiMinusInNumbers`, the copy\n// handler's rule, among them. Their modules keep the ones the kit itself uses.\nexport { DEFAULT_DOCUMENT_TITLE_FORMAT, formatDocumentTitle } from \"./lib/document-title\";\nexport type { DocumentTitleParts } from \"./lib/document-title\";\nexport type { SwipeStage, RowSwipeOptions, RowSwipeReturn } from \"./hooks/use-row-swipe\";\n// Any element as a file drop target, screened like FileButton (kastlan).\nexport { useFileDrop, dragHasFiles } from \"./hooks/use-file-drop\";\nexport type { UseFileDropOptions, UseFileDropReturn, FileDropProps } from \"./hooks/use-file-drop\";\n// kastlan's search boxes each carried a hand-rolled copy, two without the cleanup.\nexport { useDebounce, useDebouncedCallback } from \"./hooks/use-debounce\";\nexport type { DebounceOptions, DebouncedCallbackOptions, DebouncedFunction } from \"./hooks/use-debounce\";\n// One search param as state, the active tab in `?tab=`, and a dialog's open state in the\n// URL (Modal's `urlParam`) — kastlan's and keksdose's use-search-param-state, in the kit.\nexport { useSearchParamState, useTabParam, useDialogParam } from \"./hooks/use-search-param-state\";\nexport type { SearchParamStateOptions, DialogParam } from \"./hooks/use-search-param-state\";\n// 0.25: several keys, one navigation (keksdose live #378 — four setters in a row clobbered).\nexport { useSearchParamsState } from \"./hooks/use-search-param-state\";\nexport type { SearchParamField, SearchParamFields, SearchParamsUpdate } from \"./hooks/use-search-param-state\";\n// Copy that reports whether it worked — keksdose's copy buttons said \"Copied\" when it had not.\nexport { useCopyToClipboard, copyToClipboard } from \"./hooks/use-copy-to-clipboard\";\nexport type { CopyState, UseCopyToClipboardOptions, UseCopyToClipboardReturn } from \"./hooks/use-copy-to-clipboard\";\n// Keyboard shortcuts (\"Mod+K\", \"Ctrl+Shift+F\") that leave typing in fields alone.\nexport { useHotkey, parseHotkey, matchesHotkey } from \"./hooks/use-hotkey\";\nexport type { Hotkey, ParsedHotkey, UseHotkeyOptions } from \"./hooks/use-hotkey\";\n// A protected file as an object URL, fetched with the app's own auth (kastlan's AuthedImage).\nexport { useAuthedSrc } from \"./hooks/use-authed-src\";\nexport type { AuthedFetcher, AuthedSrcStatus, UseAuthedSrcOptions, UseAuthedSrcResult } from \"./hooks/use-authed-src\";\n// Row windowing for a long list (0.7.0, lenkbank's measured grid is built on it).\nexport { useWindowedRows, WINDOWED_ROW_INDEX } from \"./hooks/use-windowed-rows\";\nexport type { WindowedRows } from \"./hooks/use-windowed-rows\";\n// 0.32.0 (docs/text-size-harmonization.md): the breakpoints, and the hooks components read\n// the behaviours at Large from (§4, §10.7–10.9).\nexport {\n useBreakpoint,\n usePhoneLayout,\n breakpointQuery,\n BREAKPOINT_REM,\n remPx,\n useRemPx,\n} from \"./hooks/use-breakpoint\";\nexport type { Breakpoint, BreakpointVariant, RemLength } from \"./hooks/use-breakpoint\";\nexport { useLargeText, useCoarsePointer, useInlineFacts } from \"./hooks/use-large-text\";\n\n// ── theme / palettes ─────────────────────────────────────────────────────────\n// The chart palette (theme/chart-palette) comes with the chart kit, `./chart` below.\n// Colour maths (sRGB ↔ OKLCH, WCAG contrast, CVD simulation) and the palette deriver\n// that builds a whole, contrast-solved palette from one brand colour plus any colours\n// pinned by hand. `auditPalette` / `auditChartRamp` measure a palette rather than\n// trusting a comment about it.\nexport * from \"./theme/color\";\nexport * from \"./theme/palette-derive\";\nexport * from \"./theme/palette-presets\";\nexport * from \"./theme/theme-store\";\nexport * from \"./theme/palette-store\";\n// 0.32.0: text size and contrast (docs/text-size-harmonization.md).\nexport * from \"./theme/text-size\";\nexport * from \"./theme/contrast\";\n\n// ── i18n: one label tree, one optional provider ──────────────────────────────\n// `UiKitLabels` names every string the kit renders; `<UiKitProvider labels locale>`\n// hands a translation to every component below it. Precedence: a component's own\n// prop > the provider > the English default. See src/i18n/kit-labels.tsx.\nexport * from \"./i18n/kit-labels\";\nexport * from \"./i18n/defaults\";\n// The kit's words as `key → text` rows for an app's translation review (keksdose).\nexport { kitLabelStrings } from \"./i18n/review\";\nexport type { KitLabelStringsOptions } from \"./i18n/review\";\n// The seven languages, how an app resolves one, and the kit catalogue loader for it.\nexport * from \"./i18n/languages\";\n// CLDR plural categories for an app's i18next catalogue, filled from `_other`; and the\n// forms of an app's word a kit part picks from by count (0.33.1, `PlanColumnUsage.label`).\nexport { withAllPlurals } from \"./i18n/plurals\";\nexport type { PluralForms } from \"./i18n/plurals\";\n\n// ── components ───────────────────────────────────────────────────────────────\n// The kit's core controls, one module each since 0.34 (MOD-2, refactor audit 2026-10):\n// Button, IconButton, the field base, Input, Select, Textarea, Card, Spinner, EmptyState\n// and Tabs. Named, not `*`, for `button-look` and `field-base`: they also hold parts the\n// controls share, which are internal. The others are public whole.\nexport * from \"./components/button\";\nexport {\n buttonClasses,\n TOUCH_TARGET_LARGE,\n type ButtonClassesOptions,\n type ButtonSize,\n type ButtonTone,\n type ButtonVariant,\n} from \"./components/button-look\";\nexport * from \"./components/icon-button\";\nexport {\n FIELD_TOUCH_TEXT,\n FIELD_BASE,\n FIELD_WRITABLE_LOOK,\n FIELD_FLOATING_PAD,\n FIELD_INVALID,\n FLOATING_INPUT_CLASS,\n FIELD_DISPLAY,\n FIELD_TRIGGER,\n FieldChevron,\n FLOATING_LABEL_CLASS,\n FloatingField,\n Label,\n DEFAULT_PASSWORD_REVEAL_LABELS,\n DEFAULT_CHARACTER_COUNT_LABELS,\n type FieldChevronProps,\n type FloatingFieldProps,\n type LabelProps,\n type PasswordRevealLabels,\n type CharacterCountLabels,\n} from \"./components/field-base\";\nexport * from \"./components/input\";\nexport * from \"./components/select\";\nexport * from \"./components/textarea\";\nexport * from \"./components/card\";\nexport * from \"./components/spinner\";\nexport * from \"./components/empty-state\";\nexport * from \"./components/tabs\";\n// The static label lives in field-parts since 0.23 (it is what the field anatomy there\n// draws, and field-parts must not import the controls).\nexport { FieldLabel, FLOATING_LABEL_STATIC, FieldHint } from \"./components/field-parts\";\nexport type { FieldLabelProps, FieldHintProps } from \"./components/field-parts\";\n// 0.55 (keksdose dev #638): a field's \"suggested from\" caption, as its `hint`, with a clear.\nexport { FieldSuggestion, DEFAULT_FIELD_SUGGESTION_LABELS } from \"./components/field-parts\";\nexport type { FieldSuggestionProps, FieldSuggestionLabels } from \"./components/field-parts\";\n// The kit's focus frame (§5), in its own module so the parts the controls import\n// (field-parts, the choice controls) can draw it too.\nexport { FOCUS_RING, FOCUS_RING_WIDTH } from \"./components/focus-ring\";\n// No fact only in a tooltip (§4): the reason line and the compact region live in\n// field-parts, where the self-saving controls (Switch, Checkbox) reach them too.\nexport {\n CompactControls,\n DisabledReasonLine,\n DISABLED_REASON_LINE_CLASS,\n useDisabledReasonLine,\n} from \"./components/field-parts\";\nexport type { DisabledReasonDisplay } from \"./components/field-parts\";\n// The label-ABOVE field group (label, hint, error, required), inside wizards or out.\nexport * from \"./components/field\";\nexport * from \"./components/search-field\";\nexport * from \"./components/dropdown\";\nexport * from \"./components/popover\";\n// 0.34 (keksdose K3): paragraph-long help behind a \"?\", opened on a tap — FieldHint's\n// sibling for help rather than a fact (docs/text-size-harmonization.md §10.23).\nexport { HelpPopover } from \"./components/help-popover\";\nexport type { HelpPopoverProps } from \"./components/help-popover\";\nexport { SwipeableRow } from \"./components/swipeable-row\";\nexport type { SwipeAction, SwipePaint, SwipeTone, SwipeableRowProps } from \"./components/swipeable-row\";\nexport * from \"./components/calculator\";\nexport * from \"./components/numpad-sheet\";\nexport * from \"./components/number-input\";\nexport * from \"./components/currency-select\";\n// 0.35: each currency's flag-icons country. `CURRENCIES` and it are also the pure-data\n// entry \"@eifi1/ui-kit/currencies\", which imports nothing, for an app's build in Node.\nexport { CURRENCY_COUNTRIES } from \"./currencies\";\nexport * from \"./components/amount-input\";\nexport * from \"./components/money-field\";\nexport * from \"./components/combobox\";\nexport * from \"./components/picker-sheet\";\nexport * from \"./components/entity-combobox\";\nexport * from \"./components/multi-entity-combobox\";\nexport * from \"./components/multi-select\";\nexport * from \"./components/tooltip\";\nexport * from \"./components/user-avatar\";\nexport * from \"./components/settings-fields\";\nexport * from \"./components/month-picker\";\nexport * from \"./components/checkbox\";\nexport * from \"./components/switch\";\nexport * from \"./components/slider\";\nexport * from \"./components/time-input\";\nexport * from \"./components/number-field\";\nexport * from \"./components/sparkline\";\nexport * from \"./components/stat-tile\";\nexport * from \"./components/signature-pad\";\nexport * from \"./components/password-strength\";\nexport * from \"./components/page-contents\";\nexport * from \"./components/disclosure\";\nexport * from \"./components/dialog-frame\";\n// Named, not `*`: danger-confirm also holds the password field and pending hook that\n// ReauthDialog shares with it, which are kit-internal.\nexport {\n DangerConfirm,\n DEFAULT_DANGER_CONFIRM_LABELS,\n typedMatches,\n // 0.22.0: the typed-confirmation field on its own (keksdose K7) and the current-password\n // field kastlan wants for sign-in and re-authentication (kastlan 1).\n TypedConfirmField,\n CurrentPasswordInput,\n} from \"./components/danger-confirm\";\nexport type {\n DangerConfirmLabels,\n DangerConfirmProps,\n TypedMatch,\n DangerConsequence,\n TypedConfirmFieldProps,\n TypedConfirmFieldLabels,\n CurrentPasswordInputProps,\n CurrentPasswordInputLabels,\n // 0.23.0: onConfirm's second argument — the guards' values (keksdose G4b).\n DangerConfirmValues,\n} from \"./components/danger-confirm\";\n// 0.18: re-authentication before a sensitive action (Kurvenschmiede 4).\nexport { ReauthDialog, DEFAULT_REAUTH_DIALOG_LABELS } from \"./components/reauth-dialog\";\nexport type { ReauthDialogProps, ReauthDialogLabels } from \"./components/reauth-dialog\";\n// `useConfirm()` — the promise-based replacement for `window.confirm`, one host per app.\nexport * from \"./components/confirm-dialog\";\n// A non-modal corner panel and its round trigger (keksdose's assistant launcher).\nexport * from \"./components/floating-panel\";\n// The count / clear / actions bar a selection brings up (keksdose's three copies).\nexport * from \"./components/bulk-action-bar\";\nexport * from \"./components/swatch-picker\";\nexport * from \"./components/icon-picker\";\nexport * from \"./components/choice-card\";\nexport * from \"./components/autocomplete\";\nexport * from \"./components/measured-grid\";\n// Named, not `export *`: file-button.tsx also re-exports the screening helpers the\n// dropzone shares (hooks/use-file-picker since 0.34, MOD-8), which are internal.\nexport { FileButton, useFilePicker, matchesAccept, DEFAULT_FILE_PICKER_LABELS } from \"./components/file-button\";\nexport type {\n FileButtonProps,\n UseFilePickerOptions,\n UseFilePickerReturn,\n FilePickerLabels,\n FileRejection,\n FileRejectionReason,\n FileScreenOptions,\n} from \"./components/file-button\";\n// 0.55: the camera where there is one, the photo picker where there is none — keksdose's\n// useHasCamera and in-page viewfinder, for kastlan's handover photos (reuse audit\n// 2026-11-02, proposal 8).\nexport { useHasCamera } from \"./hooks/use-has-camera\";\nexport { CameraButton } from \"./components/camera-button\";\nexport type { CameraButtonProps } from \"./components/camera-button\";\nexport { CameraCapture, DEFAULT_CAMERA_LABELS } from \"./components/camera-capture\";\nexport type { CameraCaptureProps, CameraFacing, CameraLabels } from \"./components/camera-capture\";\n// The chart kit, whole, from its subpath (`@eifi1/ui-kit/chart`, which names its parts):\n// the chart shell and its palette, the treemap, the series chart with its zoom, legend,\n// labels and facing-pair axes, the height every chart takes, and the pie chart.\nexport * from \"./chart\";\n// 0.12.0: the QR code TwoFactorSetting draws its otpauth URI with (encoder in\n// lib/qr-encode.ts — no dependency, see there).\nexport * from \"./components/qr-code\";\nexport * from \"./components/alert-banner\";\nexport * from \"./components/toggle-group\";\n// A wrapping set of links/buttons marked `aria-current` — Tabs-like looks, not tabs.\nexport * from \"./components/nav-pills\";\n// A pill carrying one VALUE — inert, a link, or a toggle, depending on which prop it is\n// given — and the list field built from it. Distinct from Button on purpose: a row of\n// buttons reads as \"choose an action\", a row of chips as \"here are the things\".\nexport * from \"./components/chip\";\n// 0.49.0 (KIT-8): five domain-free status kinds and their tones — Chip/StatusDot `status`.\nexport { statusTone, STATUS_KINDS } from \"./lib/status-tone\";\nexport type { StatusKind, StatusTone } from \"./lib/status-tone\";\n// ChipInput's own module since MOD-9: it renders Chip, so chip.tsx re-exports only its types.\nexport * from \"./components/chip-input\";\nexport * from \"./components/wizard-stepper\";\nexport * from \"./components/hover-menu\";\nexport * from \"./components/modal\";\nexport * from \"./components/full-bleed-dialog\";\nexport * from \"./components/grouped-picker\";\nexport * from \"./components/file-dropzone\";\nexport * from \"./components/mini-calendar\";\n// Named, not `*`: `heatmapLevel` is CalendarHeatmap's own since 0.53 (API-4).\nexport {\n CalendarHeatmap,\n DEFAULT_CALENDAR_HEATMAP_LABELS,\n heatmapWindowEnd,\n type CalendarHeatmapLabels,\n type CalendarHeatmapDatum,\n type CalendarHeatmapDay,\n type CalendarHeatmapProps,\n} from \"./components/calendar-heatmap\";\nexport * from \"./components/date-picker\";\nexport * from \"./components/tree-view\";\n// 0.8.0 layout and feedback primitives the apps hand-rolled or took from shadcn/Radix.\nexport * from \"./components/description-list\";\n// The Save / Cancel row forms and dialogs end in, and the editable line-item repeater\n// (journal lines, lease components, invoice positions). 0.12.0.\nexport * from \"./components/form-actions\";\n// 0.18: lock every opted-in commit under one provider, the reason in its tooltip\n// (Kurvenschmiede 2). `useCommitReason` stays internal.\n// 0.33: a lock says its source, and a control can be exempt from one\n// (docs/billing-harmonization.md §12.36): the kinds, the holds, `CommitScope`,\n// `COMMIT_EXCEPT_BILLING` and the pure `writeLockFor`.\nexport {\n WriteLockProvider,\n useWriteLock,\n writeLockFor,\n COMMIT_EXCEPT_BILLING,\n DEFAULT_WRITE_LOCK_LABELS,\n} from \"./components/write-lock\";\n// 0.46 (kastlan K4): the offline lock's scope and its source (the kind, `OFFLINE_LOCK`, left\n// the surface in 0.53: it is the string \"offline\").\nexport { COMMIT_EXCEPT_OFFLINE, useOfflineWriteLock } from \"./components/write-lock\";\nexport type {\n WriteLock,\n WriteLockLabels,\n WriteLockProviderProps,\n WriteLockKind,\n WriteLockHold,\n CommitScope,\n} from \"./components/write-lock\";\n// 0.18: the parts both apps' admin rosters repeat (Kurvenschmiede 6).\nexport {\n RoleChip,\n AccountStateChip,\n DateMark,\n dateColumn,\n DEFAULT_ACCOUNT_STATE_LABELS,\n ACCOUNT_STATE_TONES,\n} from \"./components/account-chips\";\nexport type {\n RoleChipProps,\n RoleDefinition,\n RoleVocabulary,\n AccountState,\n AccountStateLabels,\n AccountStateChipProps,\n DateMarkProps,\n DateColumnOptions,\n} from \"./components/account-chips\";\n// 0.42 (docs/admin-harmonization.md §2.1): the role in the account menu's header, a link\n// to the role's tool (`RoleDefinition.href`).\nexport { AccountRoleChip } from \"./components/account-chips\";\nexport type { AccountRoleChipProps } from \"./components/account-chips\";\n// 0.18: the cold-start notice keksdose built (#199), for every app: the corner notice\n// that explains the wait (its framework-free watchdog is lib/server-wake).\nexport { ServerWakeNotice, useServerWakeStage, DEFAULT_SERVER_WAKE_LABELS } from \"./components/server-wake\";\nexport type { ServerWakeLabels, ServerWakeNoticeProps } from \"./components/server-wake\";\n// 0.18: sharing — grantees, roles, pending grants, candidates (Kurvenschmiede 1).\nexport { ShareCard, ShareDialog, SharePanel, DEFAULT_SHARE_CARD_LABELS } from \"./components/share-card\";\nexport type {\n ShareCardProps,\n ShareDialogProps,\n SharePanelProps,\n ShareCardLabels,\n ShareRole,\n ShareGrantee,\n SharePendingGrant,\n ShareCandidate,\n ShareAddRequest,\n} from \"./components/share-card\";\nexport * from \"./components/line-items\";\nexport * from \"./components/progress-bar\";\n// Named: skeleton.tsx also holds SKELETON_CLASS, the look StatTile shares — internal.\nexport { Skeleton } from \"./components/skeleton\";\nexport type { SkeletonProps, SkeletonShape } from \"./components/skeleton\";\n// 0.48 (keksdose dev #628): the table/list loading preset, one status label.\nexport { TableSkeleton } from \"./components/table-skeleton\";\nexport type { TableSkeletonProps } from \"./components/table-skeleton\";\n// 0.55 (keksdose's page outline, app/page-skeleton.tsx): PageHeader's outline at its own metrics.\nexport { PageHeaderSkeleton } from \"./components/page-header-skeleton\";\nexport type { PageHeaderSkeletonProps } from \"./components/page-header-skeleton\";\n// 0.12.0: a centred spinner with words, signed figures and deltas, a render-error fallback.\nexport * from \"./components/loading-state\";\nexport * from \"./components/signed-amount\";\nexport * from \"./components/error-boundary\";\nexport * from \"./components/copy-button\";\nexport { AuthedImage, DEFAULT_AUTHED_IMAGE_LABELS } from \"./components/authed-image\";\nexport type { AuthedImageProps, AuthedImageLabels } from \"./components/authed-image\";\n// Named, not `*`: `splitFileName` is ImageGrid's own since 0.53 (API-4).\nexport {\n ImageGrid,\n DEFAULT_IMAGE_GRID_LABELS,\n type ImageGridLabels,\n type ImageGridProps,\n} from \"./components/image-grid\";\nexport * from \"./components/lightbox\";\nexport * from \"./components/button-group\";\nexport * from \"./components/table\";\nexport * from \"./components/separator\";\n// Named: scroll-area.tsx also holds the overflow hook and scrollbar class Table shares.\nexport { ScrollArea } from \"./components/scroll-area\";\nexport type { ScrollAreaProps } from \"./components/scroll-area\";\n// 0.10.0 rows, menu rows, text primitives and page chrome the apps drew by hand.\nexport * from \"./components/list\";\nexport * from \"./components/menu-item\";\nexport * from \"./components/text\";\nexport * from \"./components/status-dot\";\nexport * from \"./components/page-header\";\nexport * from \"./components/breadcrumbs\";\n// The one inline link (kastlan's EntityLink / CellLink / legal and source links), through\n// `<UiKitProvider linkComponent>`. Named: the file also holds the kit's internal link picker.\nexport { TextLink } from \"./components/text-link\";\nexport type {\n TextLinkProps,\n TextLinkRenderProps,\n TextLinkTone,\n TextLinkUnderline,\n TextLinkCurrent,\n} from \"./components/text-link\";\n// The toast layer over sonner (an OPTIONAL peer, loaded lazily): `toast` mirrors sonner's\n// API so apps migrate by swapping the import; `<Toaster>` carries the placement, theme,\n// tones and z-index both apps had wired by hand.\nexport { toast, Toaster, DEFAULT_TOAST_LABELS } from \"./components/toast\";\nexport type {\n ToastId,\n ToastAction,\n ToastOptions,\n ToastPromiseOptions,\n ToastUndoOptions,\n ToastRedoOptions,\n ToastLabels,\n ToastPosition,\n ToastSwipeDirection,\n ToasterOffset,\n ToasterProps,\n} from \"./components/toast\";\n// Translation review (0.19): the presentational page parts (the pure logic is\n// lib/translation-review).\nexport {\n TranslationReviewPanel,\n TranslationReviewEditor,\n ReviewStatusChip,\n TranslationProgress,\n TranslationLocaleTabs,\n TranslationExportButton,\n REVIEW_STATUS_TONES,\n DEFAULT_TRANSLATION_REVIEW_LABELS,\n} from \"./components/translation-review\";\nexport type {\n TranslationReviewPanelProps,\n TranslationReviewEditorProps,\n ReviewStatusChipProps,\n TranslationProgressProps,\n TranslationLocaleTab,\n TranslationLocaleTabsProps,\n TranslationExportButtonProps,\n TranslationReviewLabels,\n TranslationReviewSaveInfo,\n TranslationReviewOrigin,\n TranslationReviewGroupBy,\n} from \"./components/translation-review\";\n// The legal pages' shell (0.19, H10): Imprint, Privacy Policy, Terms in every app.\n// 0.28 (docs/legal-harmonization.md): the shared wording, the page frame, the kit's\n// sections, the public footer and the terms checkbox.\nexport {\n LegalLayout,\n LegalSection,\n LegalLinks,\n LegalFooter,\n DEFAULT_LEGAL_LABELS,\n LEGAL_HREFS,\n legalOperatorText,\n useLegalLabels,\n} from \"./components/legal\";\nexport type {\n LegalLabels,\n LegalLink,\n LegalLinksProps,\n LegalSectionProps,\n LegalLayoutProps,\n LegalFooterProps,\n LegalOperator,\n LegalOperatorText,\n LegalPageKey,\n LegalInfoPageKey,\n LegalTextSectionLabels,\n LegalOperatorSectionLabels,\n LegalFramedSectionLabels,\n LegalDisclaimerSectionLabels,\n} from \"./components/legal\";\nexport { LegalPage, LegalKitSection, LegalAcceptCheckbox, LEGAL_SKELETON } from \"./components/legal-page\";\nexport type {\n LegalPageProps,\n LegalKitSectionProps,\n LegalKitSectionKey,\n LegalAcceptCheckboxProps,\n LegalSkeletonEntry,\n LegalSkeletonPage,\n LegalSectionOwner,\n LegalDisclaimerVariant,\n} from \"./components/legal-page\";\n// 0.55 (keksdose's price pool, consent-again-notice.tsx): a consent asked again after its\n// text changed — the card where it stays, the banner where it waits; the subject is the app's.\nexport { ConsentAgainNotice, DEFAULT_CONSENT_AGAIN_LABELS } from \"./components/consent-again-notice\";\nexport type {\n ConsentAgainNoticeProps,\n ConsentAgainCardProps,\n ConsentAgainBannerProps,\n ConsentAgainLabels,\n} from \"./components/consent-again-notice\";\n// 0.32.0 (docs/text-size-harmonization.md): the appearance settings' words, and a row's\n// actions, one of the behaviours at Large (§4, §10.7–10.9).\nexport { DEFAULT_APPEARANCE_LABELS, useAppearanceLabels } from \"./components/appearance-labels\";\nexport type { AppearanceLabels } from \"./components/appearance-labels\";\n// 0.46 (keksdose's date format, lifted): the preference, its resolver and renderer, the\n// provider's formatter for it, and the settings field.\nexport {\n DATE_FORMAT_PREFERENCES,\n isDateFormatPreference,\n resolveDateFormat,\n formatDateWithPreference,\n // 0.52 (refactor audit 2026-10-30, DUP-2): a timestamp, the preference's date and the language's clock.\n formatDateTimeWithPreference,\n dateFormatSample,\n dateFormatterFor,\n} from \"./lib/date-format\";\nexport type { DateFormatPreference, DateFormatOptions, ResolvedDateFormat } from \"./lib/date-format\";\nexport { DateFormatSetting } from \"./components/date-format-setting\";\nexport type { DateFormatSettingProps } from \"./components/date-format-setting\";\nexport {\n RowActions,\n rowActionsColumn,\n DEFAULT_ROW_ACTIONS_LABELS,\n // 0.47.0 (keksdose N17): a hand-built table's actions heading and cell.\n RowActionsHead,\n ROW_ACTIONS_CELL_CLASS,\n} from \"./components/row-actions\";\nexport type {\n RowAction,\n RowActionList,\n RowActionsLabels,\n RowActionsProps,\n RowActionsCollapse,\n RowActionsSize,\n RowActionsColumnOptions,\n RowActionsHeadProps,\n RowActionTone,\n // 0.49 KIT-12: a danger action's confirmation words.\n RowActionConfirm,\n} from \"./components/row-actions\";\n// 0.22.0: the inputs round (kastlan's, keksdose's and Kurvenschmiede's audits).\nexport * from \"./components/checkbox-group\";\nexport * from \"./components/one-time-code-input\";\nexport * from \"./components/language-select\";\nexport * from \"./components/tile-radio\";\nexport * from \"./components/inline-edit-field\";\nexport * from \"./components/country-select\";\nexport * from \"./components/iban-input\";\nexport * from \"./components/phone-input\";\n// 0.23.0, the apps' 0.22 adoption round: the label strip over custom content (keksdose G8).\nexport * from \"./components/field-strip\";\n// Paste or drop a table, give each column a role (Kurvenschmiede's columns input,\n// keksdose's import map step). The lexer itself stays in `@eifi1/ui-kit/table-text`.\nexport * from \"./components/column-mapper\";\n\n// ── data-table suite ─────────────────────────────────────────────────────────\n// Whole, from its subpath (`@eifi1/ui-kit/data-table`, which names its parts): DataTable,\n// its sort, filters, pagination and cells, and a server table's state held by its owner,\n// URL-synced.\nexport * from \"./data-table\";\n\n// ── shell (composable app chrome) ────────────────────────────────────────────\n// Whole, from `@eifi1/ui-kit/shell`: the top bar and its controls, AppShell, the switchers\n// and AuthLayout, and (0.31.0) the router-aware parts of settings and landing —\n// SettingsLayout with its route, focus, section, context, heading and catalogue;\n// PublicHeader, RootEntry, RedirectIfAuthed and the last-visited page.\nexport * from \"./shell\";\n// 0.29.0 (docs/auth-harmonization.md): kastlan's company switcher.\nexport { CompanySwitcher, DEFAULT_COMPANY_SWITCHER_LABELS } from \"./shell/company-switcher\";\nexport type { CompanySwitcherProps, CompanySwitcherLabels, CompanySwitcherCompany } from \"./shell/company-switcher\";\n\n// ── feedback ─────────────────────────────────────────────────────────────────\n// The form somebody files a report with, and the parts an inbox is built from:\n// the status vocabulary both apps share value for value, the policy about what a\n// row may move to from where it stands, and the look of a status control, a\n// category badge and an opened report. The app still wires its own API, columns\n// and strings — see the note at the top of `feedback-inbox.tsx` for what is\n// deliberately left to it. Whole, from `@eifi1/ui-kit/feedback`, which also has 0.27.0's\n// harmonization (docs/feedback-harmonization.md): the record, menu, table, detail and\n// crash reporter.\nexport * from \"./feedback\";\n\n// ── multi-step wizard ────────────────────────────────────────────────────────\n// The engine (step machine, validators, collected data), the chrome around it\n// (indicator + nav bar + cancel confirm) and the review step it ends on.\n// `components/wizard-stepper` next door is a different, much smaller thing: a bare\n// step indicator for a two-step import flow, with no engine.\n//\n// `wizard-field` was removed here rather than kept as stock: it held a\n// `WizardField`/`WizardSelectField` pair that had never been rendered in any app — a\n// field group nothing was built from, which this comment used to advertise. A design\n// system may carry stock; untested stock nothing has ever rendered is not stock, it is\n// a liability with an export. The react-hook-form bridge to the Next gate\n// (`useRhfWizardStep`) is NOT here either: it left the barrel in 0.4.x so the barrel\n// imports no react-hook-form, and came back in 0.11 under `@eifi1/ui-kit/rhf`\n// (src/rhf.ts), where the optional peer is that subpath's alone.\n// Whole, from `@eifi1/ui-kit/wizard`.\nexport * from \"./wizard\";\n\n// ── guided tours ─────────────────────────────────────────────────────────────\nexport * from \"./tour\";\n\n// ── command palette / global search ──────────────────────────────────────────\n// The palette, its pure matcher and the ⌘K search on it. The list fold every search box\n// shares is lib/text-match, above.\nexport * from \"./search\";\n\n// ── auth ─────────────────────────────────────────────────────────────────────\n// 0.29.0 (docs/auth-harmonization.md): sign-in, sign-up and the signed-out pages — forms\n// that take callbacks and never send a request themselves. The person-name order of each\n// language is lib/person-name, kastlan's company switcher is in the shell section.\nexport { SignInForm, DEFAULT_SIGN_IN_LABELS } from \"./auth/sign-in-form\";\nexport type {\n SignInFormProps,\n SignInLabels,\n SignInAnswer,\n SignInStep,\n SignInAction,\n SignInCredentials,\n SignInCodeValues,\n SignInNewPasswordValues,\n} from \"./auth/sign-in-form\";\nexport { RegisterForm, DEFAULT_REGISTER_LABELS } from \"./auth/register-form\";\nexport type { RegisterFormProps, RegisterLabels, RegisterValues } from \"./auth/register-form\";\nexport { CompleteNameDialog, DEFAULT_COMPLETE_NAME_LABELS } from \"./auth/complete-name-dialog\";\nexport type { CompleteNameDialogProps, CompleteNameLabels, CompleteNameValues } from \"./auth/complete-name-dialog\";\nexport { taggedEmail } from \"./auth/email-tag\";\n// 0.54 (kastlan reuse audit 2026-11-02, proposal 4): `billingRefusalText`, a billing\n// refusal's words, which every app mapped from the code by hand.\nexport { isAuthError, authErrorCode, isBillingError, billingRefusalText } from \"./auth/auth-errors\";\nexport type { AuthErrorCode } from \"./auth/auth-errors\";\nexport { ForgotPasswordForm, DEFAULT_FORGOT_PASSWORD_LABELS } from \"./auth/forgot-password-form\";\nexport type { ForgotPasswordFormProps, ForgotPasswordLabels } from \"./auth/forgot-password-form\";\nexport { ResetPasswordForm, DEFAULT_RESET_PASSWORD_LABELS } from \"./auth/reset-password-form\";\nexport type {\n ResetPasswordFormProps,\n ResetPasswordLabels,\n ResetPasswordCheck,\n ResetPasswordValues,\n ResetPasswordResult,\n} from \"./auth/reset-password-form\";\nexport { VerifyEmailStatus, EmailVerificationBanner, DEFAULT_VERIFY_EMAIL_LABELS } from \"./auth/verify-email\";\nexport type {\n VerifyEmailStatusProps,\n EmailVerificationBannerProps,\n VerifyEmailLabels,\n VerifyEmailFailure,\n} from \"./auth/verify-email\";\nexport { NotFoundPage, DEFAULT_NOT_FOUND_LABELS } from \"./auth/not-found-page\";\nexport type { NotFoundPageProps, NotFoundLabels } from \"./auth/not-found-page\";\nexport { AcceptInvitation, DEFAULT_ACCEPT_INVITATION_LABELS } from \"./auth/accept-invitation\";\nexport type {\n AcceptInvitationProps,\n AcceptInvitationLabels,\n AcceptInvitationResult,\n AcceptInvitationFailure,\n} from \"./auth/accept-invitation\";\nexport type { AuthHeadingLevel } from \"./auth/status-parts\";\n// 0.30.0: a rate limit and its wait, and the codes the account, billing and demo calls\n// answer with.\nexport { isRateLimited, retryAfterSeconds } from \"./auth/auth-errors\";\nexport type {\n AccountErrorCode,\n BillingErrorCode,\n BillingRefusalTextOptions,\n DemoErrorCode,\n KitErrorCode,\n} from \"./auth/auth-errors\";\n\n// ── account ──────────────────────────────────────────────────────────────────\n// In account/ since 0.34, beside the other account cards (MOD-8, refactor audit 2026-10):\n// the profile, password and two-factor cards, and (0.12.0) the fourth account section,\n// the passkeys.\nexport * from \"./account/account-settings\";\nexport * from \"./account/passkeys-setting\";\n// 0.30.0 (docs/user-admin-harmonization.md): the account's own settings — email change,\n// sessions, deletion, export. Callbacks only; the confirmation level is the server's.\nexport { EmailChangeSetting, DEFAULT_EMAIL_CHANGE_LABELS } from \"./account/email-change-setting\";\nexport type {\n EmailChangeSettingProps,\n EmailChangeLabels,\n EmailChangeValues,\n EmailChangeAction,\n} from \"./account/email-change-setting\";\nexport { SessionsSetting, DEFAULT_SESSIONS_LABELS } from \"./account/sessions-setting\";\nexport type {\n SessionsSettingProps,\n SessionsLabels,\n SessionItem,\n SessionId,\n SessionsAction,\n} from \"./account/sessions-setting\";\nexport { DeleteAccountSetting, DEFAULT_DELETE_ACCOUNT_LABELS } from \"./account/delete-account-setting\";\nexport type {\n DeleteAccountSettingProps,\n DeleteAccountLabels,\n DeleteAccountValues,\n DeletionMode,\n DeleteAccountConsequence,\n} from \"./account/delete-account-setting\";\nexport { DataExportSetting, DEFAULT_DATA_EXPORT_LABELS } from \"./account/data-export-setting\";\nexport type { DataExportSettingProps, DataExportLabels, DataExportFile } from \"./account/data-export-setting\";\n\n// ── admin ────────────────────────────────────────────────────────────────────\n// 0.30.0 (docs/user-admin-harmonization.md): the admin user list and its actions, and the\n// invitations panel. Callbacks only; the confirmation level is the server's.\nexport {\n useUserRosterColumns,\n UserIdentityCell,\n UserRowActions,\n userRosterSort,\n USER_ROSTER_SORT_KEYS,\n USER_ROSTER_PAGE_SIZE,\n USER_ROSTER_MAX_PAGE_SIZE,\n DEFAULT_USER_ROSTER_LABELS,\n} from \"./admin/user-roster\";\nexport type {\n UserRosterRow,\n AdminUserStateFields,\n RosterState,\n UserRosterSortKey,\n UserRosterLabels,\n UserIdentityCellProps,\n UserRowAction,\n UserRowActionList,\n UserRowActionsProps,\n RoleEditing,\n UserRosterColumnsOptions,\n} from \"./admin/user-roster\";\nexport { RoleSelect, RolesEditor, DEFAULT_ROLE_SELECT_LABELS } from \"./admin/role-select\";\nexport type { RoleSelectProps, RolesEditorProps, RoleSelectLabels, RoleLock, RoleLockCode } from \"./admin/role-select\";\nexport { ReviewerScopeEditor, DEFAULT_REVIEWER_SCOPE_LABELS } from \"./admin/reviewer-scope-editor\";\nexport type {\n ReviewerScope,\n ReviewerScopeArea,\n ReviewerScopeLanguage,\n ReviewerScopeLabels,\n ReviewerScopeEditorProps,\n} from \"./admin/reviewer-scope-editor\";\nexport { AdminActionConfirm, DEFAULT_ADMIN_ACTION_LABELS } from \"./admin/admin-action-confirm\";\nexport type {\n AdminConfirmLevel,\n AdminActionConfirmValues,\n AdminActionTarget,\n AdminActionLabels,\n AdminActionConfirmProps,\n} from \"./admin/admin-action-confirm\";\nexport { AdminActionLog, ADMIN_ACTION_KINDS, DEFAULT_ADMIN_ACTION_LOG_LABELS } from \"./admin/admin-action-log\";\nexport type {\n AdminActionKind,\n AdminActionLogEntry,\n AdminActionLogLabels,\n AdminActionLogPaging,\n AdminActionLogProps,\n // 0.34 (docs/user-admin-harmonization.md §11): a log target that is not a person, and\n // the app's noun for its groups.\n AdminGroupTarget,\n AdminOtherTarget,\n AdminGroupNoun,\n} from \"./admin/admin-action-log\";\nexport { TransferOwnershipDialog, DEFAULT_TRANSFER_OWNERSHIP_LABELS } from \"./admin/transfer-ownership-dialog\";\nexport type {\n TransferCandidate,\n TransferUnavailable,\n TransferValues,\n TransferOwnershipLabels,\n TransferOwnershipDialogProps,\n} from \"./admin/transfer-ownership-dialog\";\nexport { InvitationsPanel, DEFAULT_INVITATIONS_LABELS } from \"./admin/invitations-panel\";\nexport type {\n InvitationStatus,\n InvitationRow,\n InvitationDraft,\n InvitationSentAnswer,\n InvitationScope,\n InvitationsLabels,\n InvitationsPanelProps,\n} from \"./admin/invitations-panel\";\nexport type { AdminPerson } from \"./admin/admin-parts\";\n// 0.42.0 (docs/admin-harmonization.md §3.1): the admin area's template — its words, the\n// shared sections and the catalogue helper, the 403 page, the overview and its tiles fed\n// by `GET /admin/attention`, and the Tools list. The menu row is `./shell`'s.\nexport { DEFAULT_ADMIN_AREA_LABELS, useAdminAreaLabels } from \"./admin/admin-area-labels\";\nexport type { AdminAreaLabels, AdminTileLabels, AdminSharedSection } from \"./admin/admin-area-labels\";\nexport { ADMIN_SECTIONS, adminSections } from \"./admin/admin-sections\";\nexport type { AdminSectionDefinition, AdminOwnSection, AdminSectionsOptions } from \"./admin/admin-sections\";\n// 0.43.0 (keksdose): the section order as ids, and the narrowed `leaveOut`.\nexport { adminSectionOrder } from \"./admin/admin-sections\";\nexport type { AdminSectionPlace, AdminSectionOrderOptions, AdminKeptSection } from \"./admin/admin-sections\";\nexport { AdminForbidden } from \"./admin/admin-forbidden\";\nexport type { AdminForbiddenProps } from \"./admin/admin-forbidden\";\nexport { AdminOverview, AttentionTile, adminWaitingCount } from \"./admin/admin-overview\";\nexport type {\n AdminAttention,\n AdminAttentionTile,\n AdminExtraTile,\n AdminOverviewProps,\n AttentionTileProps,\n // 0.46 (Kurvenschmiede 1): the feedback tiles with the kit's words.\n AdminFeedbackTile,\n AdminFeedbackTileKey,\n AdminOwnTile,\n} from \"./admin/admin-overview\";\nexport { AdminToolLinks } from \"./admin/admin-tool-links\";\nexport type { AdminToolLink, AdminToolLinksProps } from \"./admin/admin-tool-links\";\n// 0.45.0 (docs/admin-harmonization.md §9.2.4): \"Send a test mail to me\".\nexport { MailTestCard, DEFAULT_MAIL_TEST_CARD_LABELS, MAIL_TEST_ANCHOR } from \"./admin/mail-test-card\";\nexport type { MailTestCardProps, MailTestCardLabels, MailTestAnswer } from \"./admin/mail-test-card\";\n// 0.33.0: the operator's plan parts (docs/billing-harmonization.md §14.12).\nexport { usePlanColumn, PlanChangeConfirm, usePlanChangeResult, DEFAULT_PLAN_CHANGE_LABELS } from \"./admin/plan-change\";\nexport type {\n PlanChangeLabels,\n PlanColumnOptions,\n PlanColumnUsage,\n PlanChange,\n PlanChangeConfirmProps,\n PlanChangeOutcome,\n PlanChangeTone,\n PlanChangeLine,\n PlanChangeResultOptions,\n} from \"./admin/plan-change\";\n\n// ── billing ──────────────────────────────────────────────────────────────────\n// 0.32.0: plans, standing, banners, the limit notice (docs/billing-harmonization.md §7).\nexport { DEFAULT_BILLING_LABELS, useBillingLabels, SUBSCRIPTION_STATUSES } from \"./billing/billing-labels\";\nexport type { BillingLabels, SubscriptionStatus } from \"./billing/billing-labels\";\nexport { BILLING_INTERVALS, planPrice, minorToMajor, formatPlanPrice, billingCurrencyFor } from \"./billing/plan-price\";\nexport type {\n BillingInterval,\n BillingCurrency,\n PlanIntervalPrices,\n PlanPrices,\n PlanPriceAnswer,\n} from \"./billing/plan-price\";\nexport { PlanCard, PlanPicker, GrantWarningConfirm } from \"./billing/plan-card\";\nexport type {\n BillingPlan,\n PlanRelation,\n PlanCardProps,\n PlanPickerProps,\n PlanChoice,\n GrantWarningConfirmProps,\n} from \"./billing/plan-card\";\nexport { SubscriptionStatusChip, SUBSCRIPTION_STATUS_TONES } from \"./billing/subscription-status-chip\";\nexport type { SubscriptionStatusChipProps } from \"./billing/subscription-status-chip\";\nexport { BillingBanner } from \"./billing/billing-banner\";\nexport type { BillingBannerProps, BillingBannerKind } from \"./billing/billing-banner\";\nexport { PlanLimitNotice, planLimitMailto } from \"./billing/plan-limit-notice\";\nexport type { PlanLimitNoticeProps } from \"./billing/plan-limit-notice\";\nexport { isPlanLimit } from \"./billing/plan-limit\";\nexport type { PlanLimitRefusal } from \"./billing/plan-limit\";\n// 0.33.0: sources name their kind, the combined lock holds them all, and billing's is one\n// hook (docs/billing-harmonization.md §12.36).\nexport { combineWriteLocks, useBillingLockReason, useBillingWriteLock } from \"./billing/billing-lock\";\nexport type { WriteLockSource, CombinedWriteLock, BillingLockReasonOptions } from \"./billing/billing-lock\";\nexport { billingLockAt, isBillingReadOnly, billingDaysLeft } from \"./billing/billing-standing\";\nexport type { BillingStanding } from \"./billing/billing-standing\";\nexport { SubscriptionActions } from \"./billing/subscription-actions\";\nexport type { SubscriptionActionsProps } from \"./billing/subscription-actions\";\n// 0.33.0, billing's round 0.33 (docs/billing-harmonization.md §14):\n// the way back from a checkout and its \"processing\", router-agnostic (§14.4).\nexport {\n CHECKOUT_RETURN_PARAM,\n CHECKOUT_RETURN_VALUE,\n isCheckoutReturn,\n withoutCheckoutReturn,\n checkoutReturnUrl,\n} from \"./billing/checkout-return\";\nexport { checkoutFingerprint, noteCheckoutStarted, useCheckoutProcessing } from \"./billing/checkout-processing\";\nexport type { CheckoutOverview, CheckoutProcessingOptions } from \"./billing/checkout-processing\";\n// The link to the pay page and Paddle's locale (§14.4); the page itself ships as dist/pay/.\nexport { paddleLocale, payPageUrl } from \"./billing/pay-page\";\nexport type { PaddleEnvironment } from \"./billing/pay-page\";\n// 0.39 (§15.2.6): the apps every pay page serves, by their `billing_app` tag.\nexport { PAY_PAGE_APPS } from \"./billing/pay-page\";\nexport type { PayPageApp } from \"./billing/pay-page\";\n// The API's shapes the parts read, server-kit 0.7's (§4, §14.5), and the plan limit as\n// a toast (§14.11).\nexport type { BillingOverview, SubscriptionSource, PortalTarget, PortalRequest } from \"./billing/billing-overview\";\nexport { usePlanLimitToast } from \"./billing/plan-limit-toast\";\nexport type { PlanLimitToastOptions } from \"./billing/plan-limit-toast\";\n// 0.39 (§15.2.10): the payer's plan switch, its shapes, and what the payer pays.\nexport { PlanSwitchConfirm } from \"./billing/plan-switch\";\nexport type { PlanSwitchConfirmProps, PlanSwitchSide } from \"./billing/plan-switch\";\nexport type { PaidPrice, PlanSwitchRequest, PlanSwitchPreview } from \"./billing/billing-overview\";\n// 0.42 (§16): the portal for the buyer only, the in-app cancel, the permanent-grant warning.\nexport { isPermanentGrant } from \"./billing/billing-overview\";\nexport type { BillingPortalAccess } from \"./billing/billing-overview\";\nexport { CancelSubscriptionConfirm } from \"./billing/cancel-subscription\";\nexport type { CancelSubscriptionConfirmProps } from \"./billing/cancel-subscription\";\n// 0.43 (§17): the provider's portal in a new tab; the in-app cancel's follow-up.\nexport { openProviderPage } from \"./billing/provider-page\";\nexport type { OpenProviderPageOptions, ProviderPageWay } from \"./billing/provider-page\";\nexport { useCancelRequest } from \"./billing/cancel-request\";\nexport type { CancelRequest, CancelRequested, CancelRequestView } from \"./billing/cancel-request\";\n// 0.55 (§7, Marcel 2026-11-04; kastlan reuse audit 2026-11-02, proposal 3): the\n// subscription's standing in one line, and what is used of each limit.\nexport { SubscriptionStanding, subscriptionStanding } from \"./billing/subscription-standing\";\nexport type { SubscriptionStandingOverview, SubscriptionStandingProps } from \"./billing/subscription-standing\";\nexport { UsageMeter } from \"./billing/usage-meter\";\nexport type { UsageMeterProps } from \"./billing/usage-meter\";\n// The operator's plan parts (§14.12) are admin/plan-change, in the admin section.\n\n// ── settings ─────────────────────────────────────────────────────────────────\n// 0.31.0 (docs/settings-harmonization.md): the settings page and the admin page on one\n// shell. The router-aware layout with its\n// route and focus hooks, and the router-free section, context, heading level and catalogue,\n// come with `./shell` above (also `@eifi1/ui-kit/shell`).\nexport { DEFAULT_SETTINGS_LABELS, useSettingsLabels } from \"./settings/settings-labels\";\nexport type { SettingsLabels, SettingsGroupLabels, SettingsCoreGroup } from \"./settings/settings-labels\";\n// 0.36.0 (§11): \"Reset this device's settings\" — the registry the kit's stores, provider\n// and shell join on their own and an app adds its own device keys to, and the card, the\n// appearance group's last.\nexport { registerDeviceSetting, deviceSettings, resetDeviceSettings } from \"./lib/device-settings\";\nexport type { DeviceSetting, DeviceSettingKind } from \"./lib/device-settings\";\nexport { DeviceResetSetting, DEVICE_RESET_ANCHOR, DEFAULT_DEVICE_RESET_LABELS } from \"./settings/device-reset-setting\";\nexport type { DeviceResetSettingProps, DeviceResetLabels } from \"./settings/device-reset-setting\";\n// The language follows the account (§6.2); since 0.32 so do the text size and the\n// contrast (useAccountAppearance below, docs/text-size-harmonization.md §6).\nexport { useAccountLanguage, resolveAccountLanguage, matchOfferedLanguage } from \"./settings/use-account-language\";\nexport type {\n UseAccountLanguageOptions,\n AccountLanguage,\n AccountLanguageSource,\n ResolveAccountLanguageInput,\n ResolvedAccountLanguage,\n} from \"./settings/use-account-language\";\nexport { useAccountAppearance } from \"./settings/use-account-appearance\";\nexport type {\n AppearanceSource,\n AccountAppearanceFields,\n DeviceAppearance,\n AccountAppearancePatch,\n ResolvedAccountAppearance,\n UseAccountAppearanceOptions,\n AccountAppearance,\n} from \"./settings/use-account-appearance\";\n\n// ── notifications ────────────────────────────────────────────────────────────\n// 0.36.0 (docs/notifications-harmonization.md §4.2): the notification cards — the types\n// the server answers (the kit keeps no list of its own), quiet hours with the zone picker,\n// this device's push on its hook, the device list — and the signed-out unsubscribe page.\n// Each card takes the app's request functions; the kit makes no request itself.\nexport { DEFAULT_NOTIFICATIONS_LABELS } from \"./notifications/notifications-labels\";\nexport type { NotificationsLabels, NotificationRegionLabels } from \"./notifications/notifications-labels\";\nexport type {\n DigestCadence,\n NotificationSwitches,\n NotificationTypesValue,\n NotificationTypeEntry,\n NotificationTypeGroup,\n NotificationSettingsPatch,\n PushDeviceItem,\n NotificationChannel,\n} from \"./notifications/notification-types\";\nexport { NotificationTypesSetting } from \"./notifications/notification-types-setting\";\nexport type { NotificationTypesSettingProps } from \"./notifications/notification-types-setting\";\nexport { QuietHoursSetting } from \"./notifications/quiet-hours-setting\";\nexport type { QuietHoursSettingProps } from \"./notifications/quiet-hours-setting\";\n// 0.46 (docs/notifications-harmonization.md §10.1, §10.3): the inbox list, the bell and\n// the device-zone report (the account's zone is automatic only, amended 2026-10-20).\nexport { NotificationInbox, INBOX_BADGE_INTERVAL } from \"./notifications/notification-inbox\";\nexport type {\n NotificationInboxAction,\n NotificationInboxItem,\n NotificationInboxProps,\n} from \"./notifications/notification-inbox\";\nexport { NotificationBell } from \"./notifications/notification-bell\";\nexport type { NotificationBellProps } from \"./notifications/notification-bell\";\n// `deviceTimeZone` lives beside the report since 0.46.1 (keksdose N6; sign-up needs it).\nexport { useDeviceZoneReport, deviceTimeZone } from \"./notifications/device-zone-report\";\nexport type { DeviceZoneReportOptions } from \"./notifications/device-zone-report\";\nexport {\n usePushDevice,\n PUSH_SUBSCRIPTION_CHANGED,\n notifyPushSubscriptionChanged,\n pushSupported,\n PushDeviceError,\n // 0.52 (§10.6, refactor audit 2026-10-30 FLW-2): an explicit sign-out releases this device's push.\n releaseThisDevicePush,\n} from \"./notifications/use-push-device\";\nexport type {\n PushDevice,\n UsePushDeviceOptions,\n PushSubscriptionInput,\n PushPermission,\n PushDeviceErrorCode,\n} from \"./notifications/use-push-device\";\n// 0.46 (NT:1028): the service worker re-registers a rotated subscription. A worker imports\n// them from `@eifi1/ui-kit/push-worker` (§10.6 rule 5); the barrel keeps them too.\nexport {\n handlePushSubscriptionChange,\n resubscribeAfterChange,\n pushSubscriptionInput,\n} from \"./notifications/push-worker\";\nexport type {\n PushReplaceInput,\n PushSubscriptionChangeOptions,\n PushSubscriptionChangeEventLike,\n PushResubscribeOutcome,\n PushWorkerScope,\n} from \"./notifications/push-worker\";\nexport { PushDeviceSetting } from \"./notifications/push-device-setting\";\nexport type { PushDeviceSettingProps, PushDeviceAction } from \"./notifications/push-device-setting\";\nexport { PushDevicesSetting } from \"./notifications/push-devices-setting\";\nexport type { PushDevicesSettingProps } from \"./notifications/push-devices-setting\";\nexport { UnsubscribePanel, unsubscribeTokenType } from \"./notifications/unsubscribe-panel\";\nexport type { UnsubscribePanelProps } from \"./notifications/unsubscribe-panel\";\n// 0.38.0 (docs/feedback-harmonization.md §9.11): the two feedback types' setting words.\n// 0.46.1 (keksdose N9): `useFeedbackNotificationTypesLabels`, the words resolved, for `adminGroup`.\nexport {\n useFeedbackNotificationTypes,\n useFeedbackNotificationTypesLabels,\n DEFAULT_FEEDBACK_NOTIFICATION_TYPES_LABELS,\n} from \"./notifications/feedback-notification-types\";\nexport type {\n FeedbackNotificationTypeId,\n FeedbackNotificationTypesLabels,\n} from \"./notifications/feedback-notification-types\";\n\n// ── landing ──────────────────────────────────────────────────────────────────\n// 0.31.0 (docs/landing-demo-harmonization.md): the public landing page. Its router-aware parts — the header and the resume (RootEntry,\n// RedirectIfAuthed, the last-visited page) — come with `./shell` above.\nexport { DEFAULT_LANDING_LABELS, useLandingLabels } from \"./landing/landing-labels\";\nexport type { LandingLabels } from \"./landing/landing-labels\";\nexport { accessAction, useAccessAction } from \"./landing/access\";\nexport type { AccessChoice, AccessLink, AccessLabels } from \"./landing/access\";\nexport { LandingActions } from \"./landing/landing-actions\";\nexport type { LandingActionsProps, LandingSession } from \"./landing/landing-actions\";\nexport { Hero, FeatureRows, FeatureRow, TrustStrip, CtaBand, PublicFooter } from \"./landing/landing-sections\";\nexport type {\n HeroProps,\n FeatureRowsProps,\n FeatureRowProps,\n TrustItem,\n TrustStripProps,\n CtaBandProps,\n PublicFooterProps,\n} from \"./landing/landing-sections\";\nexport { usePageSeo, seoCopyProblems, metaContent } from \"./landing/page-seo\";\nexport type { PageSeo, SeoCopy, SeoCopyLimits, SeoCopyProblem, SeoCopyProblemCode } from \"./landing/page-seo\";\n// 0.51.0 (Marcel 2026-10-26): the frame of a public page that is not the landing or a legal page.\nexport { PublicPage } from \"./landing/public-page\";\nexport type { PublicPageProps } from \"./landing/public-page\";\n\n// ── demo ─────────────────────────────────────────────────────────────────────\n// 0.31.0 (docs/landing-demo-harmonization.md): the demo's start, banner, countdown and end.\nexport { DEFAULT_DEMO_LABELS, useDemoLabels } from \"./demo/demo-labels\";\nexport type { DemoLabels } from \"./demo/demo-labels\";\nexport { isDemoSession } from \"./demo/demo-session\";\nexport type { DemoModel, DemoSessionUser } from \"./demo/demo-session\";\nexport { useDemoCountdown } from \"./demo/demo-countdown\";\nexport type { DemoCountdown, DemoCountdownOptions, DemoExpiry } from \"./demo/demo-countdown\";\nexport { DemoStart } from \"./demo/demo-start\";\nexport type { DemoStartProps } from \"./demo/demo-start\";\nexport { DemoBanner } from \"./demo/demo-banner\";\nexport type { DemoBannerProps } from \"./demo/demo-banner\";\nexport { DemoEnded } from \"./demo/demo-ended\";\nexport type { DemoEndedProps } from \"./demo/demo-ended\";\n"],"mappings":"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","names":[]}
@@ -36,6 +36,14 @@ export interface LandingLabels {
36
36
  /** Asked only where the app says so (`askCompany`, kastlan). */
37
37
  accessCompany: string;
38
38
  accessUse: string;
39
+ /**
40
+ * 0.55: the accessible name of the public footer's row of the app's OTHER public pages
41
+ * (`siteLinks` on `LegalFooter` / `PublicFooter`: the changelog, a status page, the
42
+ * docs), so its links are not announced as the legal ones. Here and not in `legal`: it
43
+ * names a landmark, it is no legal wording. Optional, as every key added to a namespace
44
+ * an app may annotate: left out, the provider's, then English.
45
+ */
46
+ siteNavLabel?: string;
39
47
  }
40
48
  export declare const DEFAULT_LANDING_LABELS: LandingLabels;
41
49
  /** The `landing` namespace, resolved: English, then the provider, then `labels`. */
@@ -11,7 +11,8 @@ const DEFAULT_LANDING_LABELS = {
11
11
  accessSubject: (app) => app ? `Access to ${app}` : "Access request",
12
12
  accessName: "Name:",
13
13
  accessCompany: "Company:",
14
- accessUse: "What would you use it for:"
14
+ accessUse: "What would you use it for:",
15
+ siteNavLabel: "More pages"
15
16
  };
16
17
  function useLandingLabels(labels) {
17
18
  return useKitLabels("landing", DEFAULT_LANDING_LABELS, labels);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/landing/landing-labels.ts"],"sourcesContent":["import { useKitLabels, type LabelOverride } from \"../i18n/kit-labels\";\n\n/**\n * The kit's words on the public landing page (docs/landing-demo-harmonization.md §4.1,\n * §4.2) — the `landing` namespace of `<UiKitProvider labels>`.\n *\n * Only the GENERIC words are the kit's: the actions every app's header, hero and CTA band\n * share, the \"Beta\" badge, and the template of the request-access mail. The marketing\n * copy (the hero's title, the feature rows, the trust strip, the tagline) is each app's,\n * in every language it ships (§4.1 \"Words\").\n *\n * The demo parts and `SignInForm` read the access words from here too, so \"Request\n * access\" and its mail are said the same way on the landing, the sign-in page, the demo\n * start, the banner and the end page.\n */\nexport interface LandingLabels {\n /** The header's secondary action without a session; also the demo banner's and the\n * end page's way to an existing account. */\n signIn: string;\n /** The access action of an invitation-only app: a mail to support (§2.2, §4.2). */\n requestAccess: string;\n /** The access action once an app opens registration (`{kind: \"register\"}`, §4.2). */\n getStarted: string;\n /** The hero's and the CTA band's second action without a session. */\n tryDemo: string;\n /** The one action for a real session: into the app, at the resume target. */\n openApp: string;\n /** The secondary action for a demo session: back into the live demo. */\n continueDemo: string;\n /** The hero's optional badge. */\n beta: string;\n /** The request mail's subject, given the app's name (`access.app`): \"Access to\n * Kastlan\". `undefined` when the app named none. */\n accessSubject: (app?: string) => string;\n /** The request mail's body, one prompt per line; the sender writes after each. */\n accessName: string;\n /** Asked only where the app says so (`askCompany`, kastlan). */\n accessCompany: string;\n accessUse: string;\n}\n\nexport const DEFAULT_LANDING_LABELS: LandingLabels = {\n signIn: \"Sign in\",\n requestAccess: \"Request access\",\n getStarted: \"Get started\",\n tryDemo: \"Try the demo\",\n openApp: \"Open app\",\n continueDemo: \"Continue the demo\",\n beta: \"Beta\",\n accessSubject: (app) => (app ? `Access to ${app}` : \"Access request\"),\n accessName: \"Name:\",\n accessCompany: \"Company:\",\n accessUse: \"What would you use it for:\",\n};\n\n/** The `landing` namespace, resolved: English, then the provider, then `labels`. */\nexport function useLandingLabels(labels?: LabelOverride<LandingLabels>): LandingLabels {\n return useKitLabels(\"landing\", DEFAULT_LANDING_LABELS, labels);\n}\n"],"mappings":";AAAA,SAAS,oBAAwC;AAyC1C,MAAM,yBAAwC;AAAA,EACnD,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,SAAS;AAAA,EACT,cAAc;AAAA,EACd,MAAM;AAAA,EACN,eAAe,CAAC,QAAS,MAAM,aAAa,GAAG,KAAK;AAAA,EACpD,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,WAAW;AACb;AAGO,SAAS,iBAAiB,QAAsD;AACrF,SAAO,aAAa,WAAW,wBAAwB,MAAM;AAC/D;","names":[]}
1
+ {"version":3,"sources":["../../src/landing/landing-labels.ts"],"sourcesContent":["import { useKitLabels, type LabelOverride } from \"../i18n/kit-labels\";\n\n/**\n * The kit's words on the public landing page (docs/landing-demo-harmonization.md §4.1,\n * §4.2) — the `landing` namespace of `<UiKitProvider labels>`.\n *\n * Only the GENERIC words are the kit's: the actions every app's header, hero and CTA band\n * share, the \"Beta\" badge, and the template of the request-access mail. The marketing\n * copy (the hero's title, the feature rows, the trust strip, the tagline) is each app's,\n * in every language it ships (§4.1 \"Words\").\n *\n * The demo parts and `SignInForm` read the access words from here too, so \"Request\n * access\" and its mail are said the same way on the landing, the sign-in page, the demo\n * start, the banner and the end page.\n */\nexport interface LandingLabels {\n /** The header's secondary action without a session; also the demo banner's and the\n * end page's way to an existing account. */\n signIn: string;\n /** The access action of an invitation-only app: a mail to support (§2.2, §4.2). */\n requestAccess: string;\n /** The access action once an app opens registration (`{kind: \"register\"}`, §4.2). */\n getStarted: string;\n /** The hero's and the CTA band's second action without a session. */\n tryDemo: string;\n /** The one action for a real session: into the app, at the resume target. */\n openApp: string;\n /** The secondary action for a demo session: back into the live demo. */\n continueDemo: string;\n /** The hero's optional badge. */\n beta: string;\n /** The request mail's subject, given the app's name (`access.app`): \"Access to\n * Kastlan\". `undefined` when the app named none. */\n accessSubject: (app?: string) => string;\n /** The request mail's body, one prompt per line; the sender writes after each. */\n accessName: string;\n /** Asked only where the app says so (`askCompany`, kastlan). */\n accessCompany: string;\n accessUse: string;\n /**\n * 0.55: the accessible name of the public footer's row of the app's OTHER public pages\n * (`siteLinks` on `LegalFooter` / `PublicFooter`: the changelog, a status page, the\n * docs), so its links are not announced as the legal ones. Here and not in `legal`: it\n * names a landmark, it is no legal wording. Optional, as every key added to a namespace\n * an app may annotate: left out, the provider's, then English.\n */\n siteNavLabel?: string;\n}\n\nexport const DEFAULT_LANDING_LABELS: LandingLabels = {\n signIn: \"Sign in\",\n requestAccess: \"Request access\",\n getStarted: \"Get started\",\n tryDemo: \"Try the demo\",\n openApp: \"Open app\",\n continueDemo: \"Continue the demo\",\n beta: \"Beta\",\n accessSubject: (app) => (app ? `Access to ${app}` : \"Access request\"),\n accessName: \"Name:\",\n accessCompany: \"Company:\",\n accessUse: \"What would you use it for:\",\n siteNavLabel: \"More pages\",\n};\n\n/** The `landing` namespace, resolved: English, then the provider, then `labels`. */\nexport function useLandingLabels(labels?: LabelOverride<LandingLabels>): LandingLabels {\n return useKitLabels(\"landing\", DEFAULT_LANDING_LABELS, labels);\n}\n"],"mappings":";AAAA,SAAS,oBAAwC;AAiD1C,MAAM,yBAAwC;AAAA,EACnD,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,SAAS;AAAA,EACT,cAAc;AAAA,EACd,MAAM;AAAA,EACN,eAAe,CAAC,QAAS,MAAM,aAAa,GAAG,KAAK;AAAA,EACpD,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,WAAW;AAAA,EACX,cAAc;AAChB;AAGO,SAAS,iBAAiB,QAAsD;AACrF,SAAO,aAAa,WAAW,wBAAwB,MAAM;AAC/D;","names":[]}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Reading a generated changelog for a person (kastlan reuse audit 2026-11-02, proposal 1).
3
+ *
4
+ * All four repositories write CHANGELOG.md with `commit-and-tag-version`, and two apps
5
+ * show it: keksdose on its changelog page and in the what's-new dialog (its backend
6
+ * splits the file into releases, `changelog-format.ts` reads each bullet), kastlan on its
7
+ * changelog page (`parse-changelog.ts`). kastlan's parser read the compare link's "(" as
8
+ * the release date, so every release showed a GitHub URL, and left `**scope:**` and
9
+ * `, closes [#12](…)` in the text. It fixed that with keksdose's rules (kastlan 153248c),
10
+ * and those rules are here once, with what the four files still asked of them:
11
+ *
12
+ * ```
13
+ * ## [0.13.9](https://github.com/…/compare/v0.13.8...v0.13.9) (2026-10-20)
14
+ *
15
+ * ### Added
16
+ *
17
+ * * **admin:** a company rename logs both names again ([8f698eb](https://…/commit/8f698eb…)), closes [#12](…)
18
+ * ```
19
+ *
20
+ * reads as `{ version: "0.13.9", date: "2026-10-20", sections: [{ title: "Added", key:
21
+ * "added", items: [{ scope: "admin", text: "a company rename logs both names again" }] }] }`.
22
+ *
23
+ * - **Every heading shape the tool writes**: `## [x.y.z](compare) (date)`, the `###` it
24
+ * writes for a patch under the default template, and `## x.y.z (date)` without a link
25
+ * (the first release, which has nothing to compare with). The compare link is skipped
26
+ * before the date is read, and a date is `YYYY-MM-DD` or nothing. The hand-written
27
+ * shapes before a repository adopted the tool read too: `## [0.2.0] - 2026-04-10`,
28
+ * `## [0.6.1] — 2026-09-24`.
29
+ * - **One key per kind of section**, whichever names the repository's `.versionrc`
30
+ * gives it: "Added", "Fixed", "Changed" (the kit's, kastlan's, Kurvenschmiede's) and
31
+ * "Features", "Bug Fixes", "Performance Improvements" (the default preset's; keksdose
32
+ * writes "Performance") are the same three ({@link changelogSectionKey}).
33
+ * - **An item is its sentence**: the scope comes out as a value, the commit link and the
34
+ * trailing references go, and the rest of the markdown is resolved
35
+ * ({@link parseChangelogItem}).
36
+ * - **An item is all its lines**: a breaking change's note that runs on over several
37
+ * lines is one item, where both apps' parsers kept its first line ("…the beta
38
+ * allow-list and profile routes are").
39
+ *
40
+ * Pure string work, no React: the page that shows it is the app's.
41
+ */
42
+ /**
43
+ * What a section's heading means, whichever preset named it. `null` from
44
+ * {@link changelogSectionKey} for a heading no preset writes ("Known", say): show its own
45
+ * title then, rather than hide it behind a missing translation.
46
+ */
47
+ export type ChangelogSectionKey = "breaking" | "added" | "changed" | "fixed" | "deprecated" | "removed" | "security" | "reverted";
48
+ /** One bullet: its conventional-commit scope and its sentence. */
49
+ export interface ChangelogItem {
50
+ /** `**admin:**` → `"admin"`; `null` for a bullet with no scope. */
51
+ scope: string | null;
52
+ /** The sentence, without the commit link, the trailing references or any markdown. */
53
+ text: string;
54
+ }
55
+ /** One `###` section of a release. */
56
+ export interface ChangelogSection {
57
+ /** The heading as written: "Added", "Bug Fixes", "⚠ BREAKING CHANGES". */
58
+ title: string;
59
+ /** {@link changelogSectionKey} of the title. */
60
+ key: ChangelogSectionKey | null;
61
+ /** Never empty: a section whose bullets all read as nothing is left out. */
62
+ items: ChangelogItem[];
63
+ }
64
+ /** One release, as the file lists them: newest first. */
65
+ export interface ChangelogRelease {
66
+ /** `"0.13.9"`, without brackets. */
67
+ version: string;
68
+ /** The release day, `YYYY-MM-DD`, or `null` when the heading carries none. */
69
+ date: string | null;
70
+ sections: ChangelogSection[];
71
+ /** The prose between the heading and the first section, as written; `null` when there
72
+ * is none. A hand-written release can carry its notes here alone. */
73
+ body: string | null;
74
+ }
75
+ /** The items of one scope, from {@link groupByScope}. */
76
+ export interface ChangelogScopeGroup {
77
+ scope: string | null;
78
+ texts: string[];
79
+ }
80
+ /**
81
+ * One bullet, without its `* `, as its scope and its sentence:
82
+ * `**admin:** a rename ([8f698eb](…)), closes [#12](…)` → `{ scope: "admin", text: "a
83
+ * rename" }`. keksdose's rules (`changelog-format.ts`), which kastlan copied, with three
84
+ * corrections the four files asked for: every reference clause goes, not the last alone;
85
+ * a scope needs its colon; and a code span that opens with a dot keeps the space before
86
+ * it.
87
+ *
88
+ * The commit link and the trailing references go BEFORE the general link rule, which
89
+ * would unwrap them into bare hashes and issue numbers. Then emphasis and code spans are
90
+ * resolved, and what the removals left is repaired: a space before punctuation that ends a
91
+ * clause (not the one before a code span's `.mutate`), doubled spaces, and the comma that
92
+ * introduced ", closes …".
93
+ */
94
+ export declare function parseChangelogItem(line: string): ChangelogItem;
95
+ /**
96
+ * Items grouped by scope, in the order each scope first appears, with exact repeats
97
+ * dropped (keksdose's `groupByScope`). A feature that lands over several commits gets a
98
+ * bullet per commit; the same sentence twice goes, and two different sentences both stay —
99
+ * whether they mean the same is not a regex's call. Takes raw bullets (keksdose's
100
+ * backend sends them) or parsed items; an item that reads as nothing is left out.
101
+ */
102
+ export declare function groupByScope(items: readonly (string | ChangelogItem)[]): ChangelogScopeGroup[];
103
+ /**
104
+ * The key of a section's heading, for the app's own words: "Added" and "Features" are
105
+ * `"added"`, "Fixed" and "Bug Fixes" `"fixed"`, "Changed", "Performance Improvements" and
106
+ * keksdose's "Performance" `"changed"`, "⚠ BREAKING CHANGES" `"breaking"`, "Reverts"
107
+ * `"reverted"`; Keep a Changelog's "Deprecated", "Removed" and "Security" are their own.
108
+ * Case and a leading "⚠" don't count, nor a qualifier after a dash or in parentheses
109
+ * ("Fixed — layout", "Deprecated (removed in 0.35)"). `null` for any other heading.
110
+ */
111
+ export declare function changelogSectionKey(title: string): ChangelogSectionKey | null;
112
+ /**
113
+ * A CHANGELOG.md as its releases, in the file's order (newest first).
114
+ *
115
+ * What counts as what, line by line:
116
+ *
117
+ * - a `##` or `###` heading with a version starts a release (see the module note for the
118
+ * shapes); any other `#` or `##` heading ends it, so an "Unreleased" block or the
119
+ * file's title is no release's;
120
+ * - inside a release, any other `###` heading starts a section, keyed by
121
+ * {@link changelogSectionKey};
122
+ * - a bullet at the start of the line is an item of its section. The lines straight
123
+ * after it continue it, indented or not, as a breaking change's note runs on; a blank
124
+ * line, a heading, a nested bullet or a code fence ends it. Nested bullets, prose
125
+ * inside a section and fenced code (where a `- ` line is a diff) are no item;
126
+ * - before the first section, the prose is the release's {@link ChangelogRelease.body}.
127
+ *
128
+ * A section whose items all read as nothing is left out, as kastlan's parser did.
129
+ */
130
+ export declare function parseChangelog(markdown: string): ChangelogRelease[];