@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
@@ -1,647 +0,0 @@
1
- import {
2
- Children,
3
- createContext,
4
- useCallback,
5
- useContext,
6
- useId,
7
- useLayoutEffect,
8
- useMemo,
9
- useRef,
10
- useState,
11
- } from "react";
12
- import type { ComponentPropsWithRef, ReactNode, Ref } from "react";
13
- import { cn } from "../lib/cn";
14
- import { useEdgeFade } from "../lib/strip-fade";
15
- import { assignRef } from "./field-parts";
16
- import { THIN_SCROLLBAR_CLASS, useScrollOverflow } from "./scroll-area";
17
-
18
- /** `none` (0.10.0): no cell padding at all — keksdose's VAT summary, a table set
19
- * inside a card's own padding whose columns are spaced by hand (`pl-2` on exactly the
20
- * columns that need it). Type stays at the body size, as `comfortable`. */
21
- export type TableDensity = "comfortable" | "compact" | "none";
22
- /** CSS `table-layout`. `auto` (the browser default) sizes columns to their content;
23
- * `fixed` takes widths from the first row and ignores the rest — keksdose's VAT
24
- * summary switches to it while editing so two inputs stop bidding against the
25
- * figures for room. */
26
- export type TableLayout = "auto" | "fixed";
27
- export type TableAlign = "start" | "center" | "end";
28
- /**
29
- * Vertical alignment of a cell's content (0.11.0). The defaults stay as they were — a
30
- * head cell sits on the `bottom` (a wrapped heading ends on the line above the
31
- * figures), a body cell at the `top` (a wrapped note starts level with its row). A
32
- * table whose cells are INPUTS wants `middle`: keksdose's VAT summary
33
- * (invoices/vat-summary.tsx) sets fields beside derived read-out figures in one row,
34
- * and a figure at the top of its cell sat above the middle of the field next to it —
35
- * so it writes `<tr className="align-middle">` over raw `<th>`/`<td>`, because the
36
- * kit's cells each stated `align-top` and a class on the row could not reach them.
37
- */
38
- export type TableVAlign = "top" | "middle" | "bottom";
39
- /** The head cell's type size: `xs` (the head's default) or `sm` (the body's). */
40
- export type TableHeaderCellSize = "xs" | "sm";
41
- /** The header cell's weight. Default `medium`. */
42
- export type TableHeaderCellWeight = "normal" | "medium" | "semibold";
43
-
44
- /**
45
- * What a {@link TableRow} is in a statement-style table (0.12.0): an ordinary `row`, a
46
- * `group` heading ("Current assets", a tinted full-width label row), a `subtotal` under
47
- * a group, or the `total` of the whole table. kastlan's balance sheet, income statement
48
- * and journal entry each spelled these as `className="font-medium"`, `"font-bold
49
- * border-t-2"` and `bg-muted/50` on the cell — three pages, three sets of classes for
50
- * the same four kinds of line.
51
- */
52
- export type TableRowVariant = "row" | "group" | "subtotal" | "total";
53
-
54
- interface TableContextValue {
55
- density: TableDensity;
56
- zebra: boolean;
57
- hover: boolean;
58
- rowDividers: boolean;
59
- captionId: string;
60
- registerCaption: () => () => void;
61
- }
62
-
63
- const TableContext = createContext<TableContextValue>({
64
- density: "comfortable",
65
- zebra: false,
66
- hover: false,
67
- rowDividers: true,
68
- captionId: "",
69
- registerCaption: () => () => {},
70
- });
71
-
72
- type TableSection = "head" | "body" | "foot";
73
-
74
- /** Which section a row sits in — zebra and hover apply to body rows only. `undefined`
75
- * outside the kit's section parts: a raw `<thead>` / `<tbody>`, which
76
- * {@link useSection} then reads off the DOM. */
77
- const SectionContext = createContext<TableSection | undefined>(undefined);
78
-
79
- const SECTION_OF_TAG: Record<string, TableSection> = { THEAD: "head", TBODY: "body", TFOOT: "foot" };
80
-
81
- /**
82
- * The section a row or cell sits in: the kit part's context where there is one, else the
83
- * nearest `<thead>` / `<tbody>` / `<tfoot>` in the DOM.
84
- *
85
- * keksdose's VAT summary writes a raw `<thead>` round kit cells in places, and a
86
- * `TableHeaderCell` there took itself for a BODY cell — `scope="row"`, body type — with
87
- * nothing on the page to say why. React cannot see an ancestor's tag, so the fallback
88
- * reads it after mount; a layout effect, so the corrected cell is what gets painted.
89
- */
90
- function useSection<E extends HTMLElement>(): [TableSection, ((el: E | null) => void) | undefined] {
91
- const fromContext = useContext(SectionContext);
92
- const [node, setNode] = useState<E | null>(null);
93
- const [detected, setDetected] = useState<TableSection | undefined>(undefined);
94
- useLayoutEffect(() => {
95
- if (fromContext !== undefined || !node) return;
96
- const section = node.closest("thead, tbody, tfoot");
97
- const found = section ? SECTION_OF_TAG[section.tagName] : undefined;
98
- // eslint-disable-next-line react-hooks/set-state-in-effect -- read off the DOM, which only exists after mount
99
- if (found !== detected) setDetected(found);
100
- }, [fromContext, node, detected]);
101
- // No ref at all under a kit section: holding the node would cost every row and cell
102
- // a second render on mount for an answer the context already gave.
103
- return [fromContext ?? detected ?? "body", fromContext === undefined ? setNode : undefined];
104
- }
105
-
106
- /**
107
- * One callback ref for the caller's `ref` and the part's own (0.16.0). Every part takes
108
- * a `ref` to its DOM element — React 19 hands it to a function component as a prop —
109
- * and the parts that hold the node themselves (the table, a row or a head cell reading
110
- * its section off the DOM) must still get it when the caller passes one too.
111
- */
112
- function useMergedRef<E>(own: ((el: E | null) => void) | { current: E | null } | undefined, ref: Ref<E> | undefined) {
113
- return useCallback(
114
- (node: E | null) => {
115
- assignRef(own as Ref<E> | undefined, node);
116
- assignRef(ref, node);
117
- },
118
- [own, ref],
119
- );
120
- }
121
-
122
- /** A {@link TableRow}'s `valign`, which its cells take unless they set their own. It
123
- * cannot be left to CSS inheritance: every cell states its own default alignment,
124
- * and a class on the cell beats one on the row. */
125
- const RowVAlignContext = createContext<TableVAlign | undefined>(undefined);
126
-
127
- const VALIGN: Record<TableVAlign, string> = {
128
- top: "align-top",
129
- middle: "align-middle",
130
- bottom: "align-bottom",
131
- };
132
-
133
- const HEADER_SIZE: Record<TableHeaderCellSize, string> = {
134
- xs: "text-xs",
135
- sm: "text-sm",
136
- };
137
-
138
- const HEADER_WEIGHT: Record<TableHeaderCellWeight, string> = {
139
- normal: "font-normal",
140
- medium: "font-medium",
141
- semibold: "font-semibold",
142
- };
143
-
144
- const CELL_PAD: Record<TableDensity, string> = {
145
- comfortable: "px-3 py-2",
146
- compact: "px-2 py-1",
147
- none: "p-0",
148
- };
149
-
150
- const ALIGN: Record<TableAlign, string> = {
151
- start: "text-start",
152
- center: "text-center",
153
- end: "text-end",
154
- };
155
-
156
- /**
157
- * The alignment a figure column wants: end-aligned (so the units line up under each
158
- * other in either reading direction) with tabular digits (so they line up at all).
159
- * Exported for a cell the kit did not render — a DataTable column, a `<td>` of the
160
- * app's own.
161
- */
162
- export const NUMERIC_CELL_CLASS = "text-end tabular-nums";
163
-
164
- /**
165
- * Every part's props are `ComponentPropsWithRef` (0.16.0), so `ref` reaches the DOM
166
- * element: keksdose scrolled a budget row into view through `useId` + `getElementById`
167
- * because `<TableRow ref>` did not type-check.
168
- */
169
- export interface TableProps extends ComponentPropsWithRef<"table"> {
170
- /** `compact` for a dense detail view (a ledger, a spec sheet). */
171
- density?: TableDensity;
172
- /** Tint every other body row. */
173
- zebra?: boolean;
174
- /** Tint the body row under the pointer. Off by default: a static table whose rows
175
- * light up promises a click that does nothing. With `zebra`, a tinted row hovers to
176
- * the card colour (0.33): the hover tint is too close to the well. */
177
- hover?: boolean;
178
- /** Classes for the overflow wrapper around the `<table>` (a max-height, a border). */
179
- wrapperClassName?: string;
180
- /** See {@link TableLayout}. Unset leaves the browser's `auto` and adds no class. */
181
- layout?: TableLayout;
182
- /**
183
- * A rounded border round the whole table (0.12.0) — for a table standing on the page
184
- * or in a dialog rather than inside a card. kastlan wraps six of them in
185
- * `<div className="rounded-md border">` by hand (payment allocation, the new-budget
186
- * lines, the meter readings, the deposit transactions, the unit values editor, the
187
- * maintenance detail), and a hand-made frame outside the scroll wrapper does not clip
188
- * the rows' tint to its corners.
189
- */
190
- framed?: boolean;
191
- /**
192
- * The rule between body rows. Default true. `false` for a small table whose rows are
193
- * spaced by their own content — keksdose's VAT summary, a block of three quiet
194
- * columns inside a card — which otherwise had to drop to raw `<tr>`s to lose it. One
195
- * row can still say otherwise with {@link TableRowProps.bordered}.
196
- */
197
- rowDividers?: boolean;
198
- /**
199
- * `"phone"`: below `sm` each body row becomes a block — its first cell the row's
200
- * title, every further cell under its column's header as a small label — and the
201
- * head row is visually hidden (still read by screen readers). For tables of PROSE,
202
- * not figures (lenkbank L5: a PID-terms table of three sentence columns wrapped into
203
- * two-word slivers at 390px and ran its third column off the screen). A table of
204
- * numbers should keep scrolling sideways, which is why this is opt-in. The labels
205
- * are the head row's cell texts, read from the DOM; a body cell spanning several
206
- * columns gets none.
207
- */
208
- stack?: "phone";
209
- /**
210
- * Fade out an edge of the scroll wrapper while columns are hidden behind it (0.25).
211
- *
212
- * A table wider than its box scrolls sideways inside the wrapper, and on a phone —
213
- * whose scrollbars are overlays that show only while you drag — nothing said there
214
- * was more: the last visible column simply ended at the edge, often mid-word. 0.24
215
- * drew a fade for ColumnRoleTable's preview (Kurvenschmiede: the fourth column's
216
- * role select sat off-screen with no hint) by wrapping this Table and reaching its
217
- * wrapper as the `<table>`'s `parentElement`; this is that fade as the Table's own,
218
- * so a table needs neither the reach-around nor a box of its own round it.
219
- *
220
- * It is the kit Tabs strip's fade, MEASURED rather than assumed: nothing is drawn
221
- * while the table fits, so a table that fits paints exactly as without the prop;
222
- * the end with columns behind it fades, and both ends once scrolled into the
223
- * middle; the ends are the reading direction's, so in RTL the hidden columns fade
224
- * on the left. It is a `mask-image` — no layout change, no background colour to
225
- * fade to, so it works on any surface in either theme — and never animated, so
226
- * there is nothing for reduced motion to turn off. The wrapper's own scrollbars
227
- * stay out of it (a fade on a classic scrollbar hid the very thing that says the
228
- * box scrolls).
229
- *
230
- * Focus that lands in a cell behind the fade — a link, a select, a checkbox — is
231
- * scrolled clear of it, cell and all where the cell fits; the browser's own scroll
232
- * stops at the edge, under the fade. And while the overflowing wrapper ITSELF holds
233
- * keyboard focus (it is a tab stop then, for arrow-key scrolling) the fade lifts, so
234
- * the focus outline round the box is drawn whole rather than faded out at its sides.
235
- *
236
- * The wrapper carries `data-overflow` — `"start"`, `"end"` or `"both"`, in
237
- * reading-direction terms, absent while it fits — for a caller's own affordance
238
- * (a scroll button) and for tests, which cannot read a mask.
239
- *
240
- * Off by default: it changes how every overflowing table looks.
241
- */
242
- edgeFade?: boolean;
243
- }
244
-
245
- /**
246
- * Below `sm` on a `stack="phone"` table: rows as blocks, the head visually hidden,
247
- * the first cell as a title, the others labelled by `data-label` (set by the table).
248
- */
249
- const STACK_PHONE_CLASSES = cn(
250
- "max-sm:block max-sm:[&_tbody]:block max-sm:[&_tfoot]:block",
251
- "max-sm:[&_thead]:sr-only",
252
- "max-sm:[&_tbody_tr]:block max-sm:[&_tbody_tr]:py-2 max-sm:[&_tfoot_tr]:block max-sm:[&_tfoot_tr]:py-2",
253
- "max-sm:[&_tbody_td]:block max-sm:[&_tbody_td]:px-0 max-sm:[&_tbody_td]:py-0.5 max-sm:[&_tbody_td]:text-start",
254
- "max-sm:[&_tfoot_td]:block max-sm:[&_tfoot_td]:px-0 max-sm:[&_tfoot_td]:py-0.5",
255
- "max-sm:[&_tbody_td:first-child]:font-medium",
256
- "max-sm:[&_td[data-label]]:before:block max-sm:[&_td[data-label]]:before:text-caption max-sm:[&_td[data-label]]:before:font-medium max-sm:[&_td[data-label]]:before:text-muted max-sm:[&_td[data-label]]:before:content-[attr(data-label)]",
257
- );
258
-
259
- /**
260
- * A plain, static HTML table in the kit's tokens — for the detail views that need
261
- * rows and columns and none of {@link DataTable}'s sorting, filtering or paging.
262
- *
263
- * kastlan renders about twenty of these on shadcn's Table parts; the part names here
264
- * are the same idea (`TableHead` is the `<thead>`, `TableHeaderCell` the `<th>`), so
265
- * the move is a rename rather than a rewrite.
266
- *
267
- * The table sits in an overflow-x wrapper, because a table cannot shrink below its
268
- * content and on a phone it would otherwise widen the page. While it overflows that
269
- * wrapper becomes a tab stop and a `role="region"` named by the `TableCaption` (or the
270
- * table's own `aria-label`), so a keyboard user can scroll it and a reader can say
271
- * what it is — the same contract as {@link ScrollArea}.
272
- *
273
- * Alignment is logical throughout (`text-start` / `text-end`), so a right-to-left
274
- * page gets its first column on the right without a class changing.
275
- */
276
- export function Table({
277
- density = "comfortable",
278
- zebra = false,
279
- hover = false,
280
- wrapperClassName,
281
- layout,
282
- framed = false,
283
- rowDividers = true,
284
- stack,
285
- edgeFade = false,
286
- className,
287
- "aria-label": ariaLabel,
288
- ref,
289
- ...rest
290
- }: TableProps) {
291
- const captionId = useId();
292
- const [captions, setCaptions] = useState(0);
293
- const wrapper = useRef<HTMLDivElement | null>(null);
294
- const overflowing = useScrollOverflow(wrapper);
295
- const fade = useEdgeFade(wrapper, edgeFade);
296
- const tableRef = useRef<HTMLTableElement | null>(null);
297
- const setTableRef = useMergedRef(tableRef, ref);
298
-
299
- // `stack="phone"`: label every body cell with its column's header text, and keep the
300
- // table's roles explicit — `display: block` on table parts drops their table
301
- // semantics in some engines. Re-run on any change to the rows, which the caller
302
- // renders and this component never sees.
303
- useLayoutEffect(() => {
304
- const table = tableRef.current;
305
- if (!stack || !table) return;
306
- const label = () => {
307
- const heads = Array.from(table.tHead?.rows[0]?.cells ?? []).map((cell) => cell.textContent?.trim() ?? "");
308
- table.setAttribute("role", "table");
309
- for (const row of Array.from(table.rows)) {
310
- row.setAttribute("role", "row");
311
- let column = 0;
312
- for (const cell of Array.from(row.cells)) {
313
- const span = cell.colSpan || 1;
314
- if (cell.tagName === "TH") cell.setAttribute("role", cell.closest("thead") ? "columnheader" : "rowheader");
315
- else cell.setAttribute("role", "cell");
316
- const text = span === 1 && column > 0 ? heads[column] : undefined;
317
- if (cell.tagName === "TD" && text) cell.setAttribute("data-label", text);
318
- else cell.removeAttribute("data-label");
319
- column += span;
320
- }
321
- }
322
- };
323
- label();
324
- const observer = typeof MutationObserver === "undefined" ? null : new MutationObserver(label);
325
- observer?.observe(table, { childList: true, subtree: true, characterData: true });
326
- return () => observer?.disconnect();
327
- }, [stack]);
328
-
329
- const ctx = useMemo<TableContextValue>(
330
- () => ({
331
- density,
332
- zebra,
333
- hover,
334
- rowDividers,
335
- captionId,
336
- registerCaption: () => {
337
- setCaptions((n) => n + 1);
338
- return () => setCaptions((n) => n - 1);
339
- },
340
- }),
341
- [density, zebra, hover, rowDividers, captionId],
342
- );
343
-
344
- const regionName = captions > 0 ? { "aria-labelledby": captionId } : ariaLabel ? { "aria-label": ariaLabel } : null;
345
-
346
- return (
347
- <TableContext.Provider value={ctx}>
348
- <div
349
- ref={wrapper}
350
- // Only a region when it scrolls AND has a name: a landmark for every short
351
- // table on a page would bury the real ones.
352
- role={overflowing && regionName ? "region" : undefined}
353
- {...(overflowing ? regionName : null)}
354
- tabIndex={overflowing ? 0 : undefined}
355
- data-overflowing={overflowing || undefined}
356
- data-clips=""
357
- data-framed={framed || undefined}
358
- // `edgeFade`: the mask, `data-overflow` and the focus handling; nothing while off.
359
- {...fade}
360
- className={cn(
361
- // `relative`: the containing block for an `sr-only` caption.
362
- "relative w-full overflow-x-auto",
363
- // On the scroll wrapper itself, so its clipping keeps the rows inside the
364
- // rounded corners.
365
- framed && "rounded-md border border-subtle",
366
- THIN_SCROLLBAR_CLASS,
367
- "focus-visible:outline-focus focus-visible:-outline-offset-2 focus-visible:outline-brand",
368
- wrapperClassName,
369
- )}
370
- >
371
- <table
372
- {...rest}
373
- ref={setTableRef}
374
- aria-label={ariaLabel}
375
- className={cn(
376
- "w-full caption-bottom border-collapse text-sm text-primary",
377
- density === "compact" && "text-xs",
378
- layout === "fixed" && "table-fixed",
379
- layout === "auto" && "table-auto",
380
- stack === "phone" && STACK_PHONE_CLASSES,
381
- className,
382
- )}
383
- />
384
- </div>
385
- </TableContext.Provider>
386
- );
387
- }
388
-
389
- export interface TableHeadProps extends ComponentPropsWithRef<"thead"> {
390
- /** The rule under the head. Default true; `false` for a quiet header over a small
391
- * table (keksdose's VAT summary wrote `className="border-b-0"` to lose it). */
392
- bordered?: boolean;
393
- }
394
-
395
- export function TableHead({ bordered = true, className, ...rest }: TableHeadProps) {
396
- return (
397
- <SectionContext.Provider value="head">
398
- <thead {...rest} className={cn(bordered && "border-b border-subtle", className)} />
399
- </SectionContext.Provider>
400
- );
401
- }
402
-
403
- export interface TableBodyProps extends ComponentPropsWithRef<"tbody"> {
404
- /**
405
- * Shown as ONE full-width row (a {@link TableEmpty}) when the body has no rows —
406
- * `children` that render nothing: an empty `.map`, a `false`, `null`. kastlan hand-
407
- * writes that row with a counted `colSpan` in unit-values-editor, the meeting agenda
408
- * and invitations tabs, the journal-entry and invoice detail pages, and a column
409
- * added later leaves every one of those counts one short.
410
- */
411
- empty?: ReactNode;
412
- }
413
-
414
- export function TableBody({ className, empty, children, ...rest }: TableBodyProps) {
415
- // `toArray` drops null/undefined/booleans and flattens arrays, so `[[], false]` —
416
- // an empty map beside a conditional row that is off — is no rows.
417
- const hasRows = Children.toArray(children).length > 0;
418
- return (
419
- <SectionContext.Provider value="body">
420
- <tbody {...rest} className={cn("[&>tr:last-child]:border-b-0", className)}>
421
- {hasRows || empty === undefined || empty === null || empty === false ? (
422
- children
423
- ) : (
424
- <TableEmpty>{empty}</TableEmpty>
425
- )}
426
- </tbody>
427
- </SectionContext.Provider>
428
- );
429
- }
430
-
431
- export interface TableEmptyProps extends Omit<ComponentPropsWithRef<"tr">, "children"> {
432
- children: ReactNode;
433
- /** Columns to span. Default: MEASURED — the widest row of the table it renders in,
434
- * counted after mount, so the row stays full width when a column is added. */
435
- colSpan?: number;
436
- /** Classes for the `<td>`. */
437
- cellClassName?: string;
438
- }
439
-
440
- /**
441
- * The "nothing here" row: one cell across every column, centred, muted. What
442
- * {@link TableBodyProps.empty} renders, and usable on its own for a body whose rows
443
- * are not its direct children.
444
- */
445
- export function TableEmpty({ children, colSpan, cellClassName, className, ...rest }: TableEmptyProps) {
446
- const { density } = useContext(TableContext);
447
- const cell = useRef<HTMLTableCellElement | null>(null);
448
- const [measured, setMeasured] = useState(1);
449
- // Every render, deliberately: a column can appear in the head without anything this
450
- // row depends on changing. It cannot loop — setting the same count is a bail-out.
451
- // eslint-disable-next-line react-hooks/exhaustive-deps
452
- useLayoutEffect(() => {
453
- if (colSpan !== undefined) return;
454
- const row = cell.current?.parentElement;
455
- const table = cell.current?.closest("table");
456
- if (!row || !table) return;
457
- let widest = 1;
458
- for (const r of Array.from(table.rows)) {
459
- if (r === row) continue;
460
- let n = 0;
461
- for (const c of Array.from(r.cells)) n += c.colSpan || 1;
462
- widest = Math.max(widest, n);
463
- }
464
- setMeasured(widest);
465
- });
466
- return (
467
- <tr {...rest} data-table-empty="" className={className}>
468
- <td
469
- ref={cell}
470
- colSpan={colSpan ?? measured}
471
- className={cn(
472
- // `none` keeps the message off the edges regardless: it is text, not a figure.
473
- density === "none" ? "py-2" : CELL_PAD[density],
474
- "text-center text-muted",
475
- cellClassName,
476
- )}
477
- >
478
- {children}
479
- </td>
480
- </tr>
481
- );
482
- }
483
-
484
- export type TableFootProps = ComponentPropsWithRef<"tfoot">;
485
-
486
- /** The totals row. Not in the brief, but every ledger view has one and a `<tfoot>`
487
- * is what tells a reader it is a total rather than one more row. */
488
- export function TableFoot({ className, ...rest }: TableFootProps) {
489
- return (
490
- <SectionContext.Provider value="foot">
491
- <tfoot {...rest} className={cn("border-t border-strong font-medium", className)} />
492
- </SectionContext.Provider>
493
- );
494
- }
495
-
496
- const ROW_VARIANT: Record<TableRowVariant, string | false> = {
497
- row: false,
498
- group: "bg-surface-2 font-semibold",
499
- subtotal: "font-medium",
500
- // A 2px rule over the 1px divider the row above draws on its bottom: collapsed
501
- // borders meet on one line, the wider wins, and the heavier rule is what says "sum".
502
- total: "border-t-2 border-t-strong font-semibold",
503
- };
504
-
505
- /** The deprecated HTML `valign` attribute is replaced by a class-backed one. */
506
- export interface TableRowProps extends ComponentPropsWithRef<"tr"> {
507
- /** Vertical alignment for every cell of the row that does not set its own. See
508
- * {@link TableVAlign}. Left out, each cell keeps its default. */
509
- valign?: TableVAlign;
510
- /** See {@link TableRowVariant}. Default `row`. Zebra and hover tint ordinary rows
511
- * only: a group heading or a total is not one more record. */
512
- variant?: TableRowVariant;
513
- /** The rule under this body row. Default: the table's `rowDividers`. */
514
- bordered?: boolean;
515
- }
516
-
517
- export function TableRow({ valign, variant = "row", bordered, className, ref: refProp, ...rest }: TableRowProps) {
518
- const { zebra, hover, rowDividers } = useContext(TableContext);
519
- const [section, sectionRef] = useSection<HTMLTableRowElement>();
520
- const ref = useMergedRef(sectionRef, refProp);
521
- const body = section === "body";
522
- const record = body && variant === "row";
523
- const row = (
524
- <tr
525
- ref={ref}
526
- {...rest}
527
- data-variant={variant === "row" ? undefined : variant}
528
- className={cn(
529
- body && (bordered ?? rowDividers) && "border-b border-subtle",
530
- record && zebra && "even:bg-surface-2",
531
- record && hover && "transition-colors hover:bg-hover",
532
- // A zebra row rests on the well, and `--bg-hover` sits only 1.00–1.02:1 from it
533
- // (0.33: the light well is the page colour): it hovers to the card instead, the
534
- // one fill that both steps 1.09–1.13:1 from the well and keeps every text role at
535
- // 4.5:1 (docs/colour-roles-harmonization.md §12.2). `even:hover:` outranks the
536
- // row's own `hover:`.
537
- record && zebra && hover && "even:hover:bg-surface",
538
- ROW_VARIANT[variant],
539
- // On the row as well, for a raw `<td>` of the caller's, which inherits it.
540
- valign && VALIGN[valign],
541
- className,
542
- )}
543
- />
544
- );
545
- return valign ? <RowVAlignContext.Provider value={valign}>{row}</RowVAlignContext.Provider> : row;
546
- }
547
-
548
- interface CellAlignProps {
549
- /** Shorthand for a figure column: end-aligned, tabular digits. */
550
- numeric?: boolean;
551
- /** Logical alignment. Default `start` (`end` when `numeric`). */
552
- align?: TableAlign;
553
- /** Vertical alignment. Default: the row's `valign`, else `bottom` for a head cell and
554
- * `top` for a body cell. See {@link TableVAlign}. */
555
- valign?: TableVAlign;
556
- }
557
-
558
- /** The deprecated HTML `align` and `valign` attributes are replaced by class-backed ones. */
559
- export interface TableHeaderCellProps extends Omit<ComponentPropsWithRef<"th">, "align" | "valign">, CellAlignProps {
560
- /**
561
- * Type size. Left out: `xs` in the head, the table's own size in the body — as
562
- * before. keksdose's VAT summary heads its columns at the body size and normal weight
563
- * (vat-summary.tsx:158–168, `font-normal` on each `<th>`), a quiet header over a
564
- * small table of figures, and could not say so without overriding classes.
565
- */
566
- size?: TableHeaderCellSize;
567
- /** Default `medium`. `normal` for the quiet header above; see {@link size}. */
568
- weight?: TableHeaderCellWeight;
569
- }
570
-
571
- /**
572
- * A `<th>`. `scope` defaults to `col` in the head and `row` in the body — a header
573
- * cell in a body row is the row's label ("Net rent" in a key-value table), and a
574
- * reader needs the scope to read it with each cell beside it.
575
- */
576
- export function TableHeaderCell({
577
- numeric = false,
578
- align,
579
- valign,
580
- size,
581
- weight = "medium",
582
- scope,
583
- className,
584
- ref: refProp,
585
- ...rest
586
- }: TableHeaderCellProps) {
587
- const { density } = useContext(TableContext);
588
- const [section, sectionRef] = useSection<HTMLTableCellElement>();
589
- const ref = useMergedRef(sectionRef, refProp);
590
- const rowVAlign = useContext(RowVAlignContext);
591
- const head = section === "head";
592
- const textSize = size ?? (head ? "xs" : undefined);
593
- return (
594
- <th
595
- ref={ref}
596
- {...rest}
597
- scope={scope ?? (section === "head" ? "col" : "row")}
598
- className={cn(
599
- CELL_PAD[density],
600
- ALIGN[align ?? (numeric ? "end" : "start")],
601
- numeric && "tabular-nums",
602
- VALIGN[valign ?? rowVAlign ?? (head ? "bottom" : "top")],
603
- HEADER_WEIGHT[weight],
604
- head ? "text-muted" : "text-secondary",
605
- textSize && HEADER_SIZE[textSize],
606
- className,
607
- )}
608
- />
609
- );
610
- }
611
-
612
- export interface TableCellProps extends Omit<ComponentPropsWithRef<"td">, "align" | "valign">, CellAlignProps {}
613
-
614
- export function TableCell({ numeric = false, align, valign, className, ...rest }: TableCellProps) {
615
- const { density } = useContext(TableContext);
616
- const rowVAlign = useContext(RowVAlignContext);
617
- return (
618
- <td
619
- {...rest}
620
- className={cn(
621
- CELL_PAD[density],
622
- VALIGN[valign ?? rowVAlign ?? "top"],
623
- ALIGN[align ?? (numeric ? "end" : "start")],
624
- numeric && "tabular-nums whitespace-nowrap",
625
- className,
626
- )}
627
- />
628
- );
629
- }
630
-
631
- export type TableCaptionProps = ComponentPropsWithRef<"caption">;
632
-
633
- /**
634
- * The table's title. Beneath the table by default (`caption-bottom`, the shadcn
635
- * convention kastlan's views already follow); `className="caption-top"` moves it.
636
- * `className="sr-only"` keeps it for readers only — the wrapper is `relative`, so
637
- * the hidden caption stays inside it.
638
- *
639
- * It also names the scroll region when the table overflows: it registers itself
640
- * with the {@link Table} so the wrapper points at an id that exists, and never at
641
- * one that does not.
642
- */
643
- export function TableCaption({ className, id, ...rest }: TableCaptionProps) {
644
- const { captionId, registerCaption } = useContext(TableContext);
645
- useLayoutEffect(() => (id ? undefined : registerCaption()), [id, registerCaption]);
646
- return <caption {...rest} id={id ?? captionId} className={cn("mt-2 text-start text-sm text-muted", className)} />;
647
- }
@@ -1,13 +0,0 @@
1
- // The English words of ./tabs, in a module with no component code: the English catalogue
2
- // (src/i18n/defaults.ts) imports them without the component, so `en` loads as one chunk
3
- // like the other languages (0.34, KS U8). ./tabs re-exports them. (In ui-labels.ts with the
4
- // field base's until 0.52, MOD-7.)
5
-
6
- import type { TabsLabels } from "./tabs";
7
-
8
- export const DEFAULT_TABS_LABELS: TabsLabels = {
9
- add: "Add tab",
10
- remove: (tab) => `Remove ${tab}`,
11
- more: "More tabs",
12
- previous: "Previous tabs",
13
- };