@eifi1/ui-kit 0.53.0 → 0.55.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 (902) hide show
  1. package/README.md +96 -82
  2. package/dist/account/delete-account-setting.d.ts +3 -2
  3. package/dist/account/delete-account-setting.js.map +1 -1
  4. package/dist/admin/plan-change.js +2 -2
  5. package/dist/admin/plan-change.js.map +1 -1
  6. package/dist/admin/user-roster.d.ts +6 -0
  7. package/dist/admin/user-roster.js +4 -0
  8. package/dist/admin/user-roster.js.map +1 -1
  9. package/dist/auth/auth-errors.d.ts +36 -0
  10. package/dist/auth/auth-errors.js +20 -0
  11. package/dist/auth/auth-errors.js.map +1 -1
  12. package/dist/billing/billing-labels.d.ts +26 -0
  13. package/dist/billing/billing-labels.js +9 -0
  14. package/dist/billing/billing-labels.js.map +1 -1
  15. package/dist/billing/subscription-standing.d.ts +61 -0
  16. package/dist/billing/subscription-standing.js +51 -0
  17. package/dist/billing/subscription-standing.js.map +1 -0
  18. package/dist/billing/usage-meter.d.ts +52 -0
  19. package/dist/billing/usage-meter.js +52 -0
  20. package/dist/billing/usage-meter.js.map +1 -0
  21. package/dist/chart.d.ts +1 -0
  22. package/dist/chart.js +4 -0
  23. package/dist/chart.js.map +1 -1
  24. package/dist/components/alert-banner.js +2 -3
  25. package/dist/components/alert-banner.js.map +1 -1
  26. package/dist/components/amount-input.d.ts +2 -1
  27. package/dist/components/amount-input.js +3 -15
  28. package/dist/components/amount-input.js.map +1 -1
  29. package/dist/components/autocomplete.js +2 -2
  30. package/dist/components/autocomplete.js.map +1 -1
  31. package/dist/components/bulk-action-bar.js +2 -1
  32. package/dist/components/bulk-action-bar.js.map +1 -1
  33. package/dist/components/button.d.ts +35 -1
  34. package/dist/components/button.js +5 -9
  35. package/dist/components/button.js.map +1 -1
  36. package/dist/components/calendar-heatmap.js +6 -4
  37. package/dist/components/calendar-heatmap.js.map +1 -1
  38. package/dist/components/camera-button.d.ts +89 -0
  39. package/dist/components/camera-button.js +122 -0
  40. package/dist/components/camera-button.js.map +1 -0
  41. package/dist/components/camera-capture.d.ts +66 -0
  42. package/dist/components/camera-capture.js +190 -0
  43. package/dist/components/camera-capture.js.map +1 -0
  44. package/dist/components/camera-labels.d.ts +20 -0
  45. package/dist/components/camera-labels.js +15 -0
  46. package/dist/components/camera-labels.js.map +1 -0
  47. package/dist/components/chart-edge.d.ts +9 -0
  48. package/dist/components/chart-edge.js +14 -3
  49. package/dist/components/chart-edge.js.map +1 -1
  50. package/dist/components/chart-zoom-core.js +34 -29
  51. package/dist/components/chart-zoom-core.js.map +1 -1
  52. package/dist/components/checkbox-group.js +1 -1
  53. package/dist/components/checkbox-group.js.map +1 -1
  54. package/dist/components/combobox-core.js +3 -2
  55. package/dist/components/combobox-core.js.map +1 -1
  56. package/dist/components/combobox.js +2 -2
  57. package/dist/components/combobox.js.map +1 -1
  58. package/dist/components/consent-again-notice-labels.d.ts +25 -0
  59. package/dist/components/consent-again-notice-labels.js +15 -0
  60. package/dist/components/consent-again-notice-labels.js.map +1 -0
  61. package/dist/components/consent-again-notice.d.ts +85 -0
  62. package/dist/components/consent-again-notice.js +94 -0
  63. package/dist/components/consent-again-notice.js.map +1 -0
  64. package/dist/components/country-select.js +2 -7
  65. package/dist/components/country-select.js.map +1 -1
  66. package/dist/components/currency-option-list.d.ts +2 -1
  67. package/dist/components/currency-option-list.js +10 -3
  68. package/dist/components/currency-option-list.js.map +1 -1
  69. package/dist/components/currency-select.d.ts +3 -1
  70. package/dist/components/currency-select.js +2 -2
  71. package/dist/components/currency-select.js.map +1 -1
  72. package/dist/components/danger-confirm.d.ts +22 -1
  73. package/dist/components/danger-confirm.js +52 -30
  74. package/dist/components/danger-confirm.js.map +1 -1
  75. package/dist/components/data-table-column-settings.js +2 -2
  76. package/dist/components/data-table-column-settings.js.map +1 -1
  77. package/dist/components/data-table-filter-popover.d.ts +2 -1
  78. package/dist/components/data-table-filter-popover.js +3 -2
  79. package/dist/components/data-table-filter-popover.js.map +1 -1
  80. package/dist/components/data-table-filters.d.ts +33 -3
  81. package/dist/components/data-table-filters.js +6 -4
  82. package/dist/components/data-table-filters.js.map +1 -1
  83. package/dist/components/data-table-fit.js.map +1 -1
  84. package/dist/components/data-table-virtual.js +13 -3
  85. package/dist/components/data-table-virtual.js.map +1 -1
  86. package/dist/components/date-field.js +2 -2
  87. package/dist/components/date-field.js.map +1 -1
  88. package/dist/components/date-picker.js +2 -2
  89. package/dist/components/date-picker.js.map +1 -1
  90. package/dist/components/date-range-picker.js +2 -6
  91. package/dist/components/date-range-picker.js.map +1 -1
  92. package/dist/components/dialog-frame.d.ts +5 -1
  93. package/dist/components/dialog-frame.js +6 -2
  94. package/dist/components/dialog-frame.js.map +1 -1
  95. package/dist/components/dropdown.js +7 -3
  96. package/dist/components/dropdown.js.map +1 -1
  97. package/dist/components/entity-combobox.js +2 -2
  98. package/dist/components/entity-combobox.js.map +1 -1
  99. package/dist/components/field-parts.d.ts +108 -6
  100. package/dist/components/field-parts.js +59 -6
  101. package/dist/components/field-parts.js.map +1 -1
  102. package/dist/components/field-suggestion-labels.d.ts +2 -0
  103. package/dist/components/field-suggestion-labels.js +10 -0
  104. package/dist/components/field-suggestion-labels.js.map +1 -0
  105. package/dist/components/field.js +1 -1
  106. package/dist/components/field.js.map +1 -1
  107. package/dist/components/file-button.d.ts +1 -1
  108. package/dist/components/file-button.js.map +1 -1
  109. package/dist/components/floating-panel.d.ts +7 -6
  110. package/dist/components/floating-panel.js +3 -17
  111. package/dist/components/floating-panel.js.map +1 -1
  112. package/dist/components/form-actions.d.ts +3 -2
  113. package/dist/components/form-actions.js.map +1 -1
  114. package/dist/components/hover-menu.js +3 -2
  115. package/dist/components/hover-menu.js.map +1 -1
  116. package/dist/components/icon-button.d.ts +23 -5
  117. package/dist/components/icon-button.js +6 -8
  118. package/dist/components/icon-button.js.map +1 -1
  119. package/dist/components/inline-confirm.js +2 -1
  120. package/dist/components/inline-confirm.js.map +1 -1
  121. package/dist/components/inline-entity-combobox.js +2 -2
  122. package/dist/components/inline-entity-combobox.js.map +1 -1
  123. package/dist/components/input.js +2 -2
  124. package/dist/components/input.js.map +1 -1
  125. package/dist/components/jump-calendar.js +3 -3
  126. package/dist/components/jump-calendar.js.map +1 -1
  127. package/dist/components/legal.d.ts +13 -1
  128. package/dist/components/legal.js +12 -0
  129. package/dist/components/legal.js.map +1 -1
  130. package/dist/components/legended-series-chart.d.ts +80 -0
  131. package/dist/components/legended-series-chart.js +70 -0
  132. package/dist/components/legended-series-chart.js.map +1 -0
  133. package/dist/components/lightbox.js +2 -1
  134. package/dist/components/lightbox.js.map +1 -1
  135. package/dist/components/mini-calendar.js +16 -7
  136. package/dist/components/mini-calendar.js.map +1 -1
  137. package/dist/components/modal.d.ts +48 -0
  138. package/dist/components/modal.js +26 -6
  139. package/dist/components/modal.js.map +1 -1
  140. package/dist/components/month-picker.d.ts +1 -1
  141. package/dist/components/month-picker.js +6 -6
  142. package/dist/components/month-picker.js.map +1 -1
  143. package/dist/components/multi-entity-combobox.js +2 -2
  144. package/dist/components/multi-entity-combobox.js.map +1 -1
  145. package/dist/components/multi-select.js +2 -6
  146. package/dist/components/multi-select.js.map +1 -1
  147. package/dist/components/number-input.js +2 -2
  148. package/dist/components/number-input.js.map +1 -1
  149. package/dist/components/page-header-layout.d.ts +18 -0
  150. package/dist/components/page-header-layout.js +23 -0
  151. package/dist/components/page-header-layout.js.map +1 -0
  152. package/dist/components/page-header-skeleton.d.ts +41 -0
  153. package/dist/components/page-header-skeleton.js +52 -0
  154. package/dist/components/page-header-skeleton.js.map +1 -0
  155. package/dist/components/page-header.js +4 -17
  156. package/dist/components/page-header.js.map +1 -1
  157. package/dist/components/popover.js +7 -2
  158. package/dist/components/popover.js.map +1 -1
  159. package/dist/components/release-notes-labels.d.ts +16 -0
  160. package/dist/components/release-notes-labels.js +18 -0
  161. package/dist/components/release-notes-labels.js.map +1 -0
  162. package/dist/components/release-notes.d.ts +65 -0
  163. package/dist/components/release-notes.js +65 -0
  164. package/dist/components/release-notes.js.map +1 -0
  165. package/dist/components/select.js +2 -2
  166. package/dist/components/select.js.map +1 -1
  167. package/dist/components/series-chart-labels.d.ts +9 -0
  168. package/dist/components/series-chart-labels.js +3 -1
  169. package/dist/components/series-chart-labels.js.map +1 -1
  170. package/dist/components/series-chart.d.ts +5 -0
  171. package/dist/components/series-chart.js +89 -36
  172. package/dist/components/series-chart.js.map +1 -1
  173. package/dist/components/stat-tile.d.ts +21 -2
  174. package/dist/components/stat-tile.js +4 -2
  175. package/dist/components/stat-tile.js.map +1 -1
  176. package/dist/components/toggle-group.js +3 -2
  177. package/dist/components/toggle-group.js.map +1 -1
  178. package/dist/components/treemap-layout.js.map +1 -1
  179. package/dist/components/treemap.d.ts +17 -15
  180. package/dist/components/treemap.js +167 -85
  181. package/dist/components/treemap.js.map +1 -1
  182. package/dist/currencies.d.ts +16 -2
  183. package/dist/currencies.js +2 -1
  184. package/dist/currencies.js.map +1 -1
  185. package/dist/eslint/index.js +1 -1
  186. package/dist/eslint/role-utilities.d.ts +2 -2
  187. package/dist/eslint/role-utilities.js.map +1 -1
  188. package/dist/feedback/feedback-context-labels.js +2 -1
  189. package/dist/feedback/feedback-context-labels.js.map +1 -1
  190. package/dist/feedback/feedback-context.d.ts +19 -3
  191. package/dist/feedback/feedback-context.js +12 -1
  192. package/dist/feedback/feedback-context.js.map +1 -1
  193. package/dist/feedback/feedback-diagnostics.d.ts +17 -0
  194. package/dist/feedback/feedback-diagnostics.js +27 -0
  195. package/dist/feedback/feedback-diagnostics.js.map +1 -0
  196. package/dist/feedback/feedback-dialog.d.ts +10 -0
  197. package/dist/feedback/feedback-dialog.js +6 -4
  198. package/dist/feedback/feedback-dialog.js.map +1 -1
  199. package/dist/feedback/feedback-inbox-page.d.ts +260 -0
  200. package/dist/feedback/feedback-inbox-page.js +207 -0
  201. package/dist/feedback/feedback-inbox-page.js.map +1 -0
  202. package/dist/feedback/feedback-record.d.ts +5 -0
  203. package/dist/feedback/feedback-record.js.map +1 -1
  204. package/dist/feedback/feedback-row-detail-labels.js +1 -0
  205. package/dist/feedback/feedback-row-detail-labels.js.map +1 -1
  206. package/dist/feedback/feedback-row-detail.d.ts +3 -0
  207. package/dist/feedback/feedback-row-detail.js +3 -0
  208. package/dist/feedback/feedback-row-detail.js.map +1 -1
  209. package/dist/feedback/feedback-submit-dialog.d.ts +5 -1
  210. package/dist/feedback/feedback-submit-dialog.js +15 -3
  211. package/dist/feedback/feedback-submit-dialog.js.map +1 -1
  212. package/dist/feedback/feedback-submit.d.ts +30 -2
  213. package/dist/feedback/feedback-submit.js +5 -2
  214. package/dist/feedback/feedback-submit.js.map +1 -1
  215. package/dist/feedback/feedback-vocabulary.js +2 -2
  216. package/dist/feedback/feedback-vocabulary.js.map +1 -1
  217. package/dist/feedback.d.ts +1 -0
  218. package/dist/feedback.js +6 -0
  219. package/dist/feedback.js.map +1 -1
  220. package/dist/hooks/use-debounce.d.ts +32 -5
  221. package/dist/hooks/use-debounce.js +6 -5
  222. package/dist/hooks/use-debounce.js.map +1 -1
  223. package/dist/hooks/use-file-picker.d.ts +3 -1
  224. package/dist/hooks/use-file-picker.js.map +1 -1
  225. package/dist/hooks/use-focus-trap.d.ts +19 -3
  226. package/dist/hooks/use-focus-trap.js +15 -5
  227. package/dist/hooks/use-focus-trap.js.map +1 -1
  228. package/dist/hooks/use-has-camera.d.ts +36 -0
  229. package/dist/hooks/use-has-camera.js +53 -0
  230. package/dist/hooks/use-has-camera.js.map +1 -0
  231. package/dist/hooks/use-hotkey.js +2 -1
  232. package/dist/hooks/use-hotkey.js.map +1 -1
  233. package/dist/hooks/use-overlay-history.d.ts +6 -1
  234. package/dist/hooks/use-overlay-history.js +10 -2
  235. package/dist/hooks/use-overlay-history.js.map +1 -1
  236. package/dist/i18n/defaults.js +11 -1
  237. package/dist/i18n/defaults.js.map +1 -1
  238. package/dist/i18n/german.js +78 -4
  239. package/dist/i18n/german.js.map +1 -1
  240. package/dist/i18n/kit-labels.d.ts +20 -0
  241. package/dist/i18n/kit-labels.js.map +1 -1
  242. package/dist/i18n/locales/en.js +95 -5
  243. package/dist/i18n/locales/en.js.map +3 -3
  244. package/dist/i18n/locales/es.js +74 -4
  245. package/dist/i18n/locales/es.js.map +1 -1
  246. package/dist/i18n/locales/fr.js +75 -3
  247. package/dist/i18n/locales/fr.js.map +1 -1
  248. package/dist/i18n/locales/hu.js +77 -4
  249. package/dist/i18n/locales/hu.js.map +1 -1
  250. package/dist/i18n/locales/it.js +77 -4
  251. package/dist/i18n/locales/it.js.map +1 -1
  252. package/dist/i18n/locales/zh.js +74 -4
  253. package/dist/i18n/locales/zh.js.map +1 -1
  254. package/dist/i18n/review.js +22 -1
  255. package/dist/i18n/review.js.map +1 -1
  256. package/dist/index.d.ts +27 -8
  257. package/dist/index.js +41 -2
  258. package/dist/index.js.map +1 -1
  259. package/dist/landing/landing-labels.d.ts +8 -0
  260. package/dist/landing/landing-labels.js +2 -1
  261. package/dist/landing/landing-labels.js.map +1 -1
  262. package/dist/lib/changelog.d.ts +130 -0
  263. package/dist/lib/changelog.js +137 -0
  264. package/dist/lib/changelog.js.map +1 -0
  265. package/dist/lib/clipboard-minus.js +2 -2
  266. package/dist/lib/clipboard-minus.js.map +1 -1
  267. package/dist/lib/dates.d.ts +36 -4
  268. package/dist/lib/dates.js +49 -13
  269. package/dist/lib/dates.js.map +1 -1
  270. package/dist/lib/editable-content.d.ts +33 -0
  271. package/dist/lib/editable-content.js +15 -0
  272. package/dist/lib/editable-content.js.map +1 -0
  273. package/dist/lib/focus-left.d.ts +47 -1
  274. package/dist/lib/focus-left.js +11 -2
  275. package/dist/lib/focus-left.js.map +1 -1
  276. package/dist/lib/format.d.ts +37 -2
  277. package/dist/lib/format.js +25 -1
  278. package/dist/lib/format.js.map +1 -1
  279. package/dist/lib/intl-cache.d.ts +4 -2
  280. package/dist/lib/intl-cache.js.map +1 -1
  281. package/dist/lib/server-wake.d.ts +49 -9
  282. package/dist/lib/server-wake.js +25 -14
  283. package/dist/lib/server-wake.js.map +1 -1
  284. package/dist/lib/session-refresh.d.ts +53 -0
  285. package/dist/lib/session-refresh.js +27 -1
  286. package/dist/lib/session-refresh.js.map +1 -1
  287. package/dist/lib/translation-review.d.ts +26 -0
  288. package/dist/lib/translation-review.js +14 -0
  289. package/dist/lib/translation-review.js.map +1 -1
  290. package/dist/rhf/fields.js +3 -3
  291. package/dist/rhf/fields.js.map +1 -1
  292. package/dist/shell/app-shell.d.ts +25 -1
  293. package/dist/shell/app-shell.js +3 -1
  294. package/dist/shell/app-shell.js.map +1 -1
  295. package/dist/shell/dev-menu.d.ts +3 -0
  296. package/dist/shell/dev-menu.js +4 -2
  297. package/dist/shell/dev-menu.js.map +1 -1
  298. package/dist/shell/held-changes-banner-labels.d.ts +23 -0
  299. package/dist/shell/held-changes-banner-labels.js +14 -0
  300. package/dist/shell/held-changes-banner-labels.js.map +1 -0
  301. package/dist/shell/held-changes-banner.d.ts +75 -0
  302. package/dist/shell/held-changes-banner.js +106 -0
  303. package/dist/shell/held-changes-banner.js.map +1 -0
  304. package/dist/shell/sync-status-indicator.d.ts +27 -12
  305. package/dist/shell/sync-status-indicator.js +13 -4
  306. package/dist/shell/sync-status-indicator.js.map +1 -1
  307. package/dist/shell/top-bar-parts-labels.d.ts +5 -0
  308. package/dist/shell/top-bar-parts-labels.js +3 -1
  309. package/dist/shell/top-bar-parts-labels.js.map +1 -1
  310. package/dist/shell.d.ts +2 -0
  311. package/dist/shell.js +3 -0
  312. package/dist/shell.js.map +1 -1
  313. package/dist/sync/engine.d.ts +11 -2
  314. package/dist/sync/engine.js +13 -5
  315. package/dist/sync/engine.js.map +1 -1
  316. package/dist/sync/hooks.d.ts +3 -2
  317. package/dist/sync/hooks.js +4 -2
  318. package/dist/sync/hooks.js.map +1 -1
  319. package/dist/testing/css-variables.generated.d.ts +2 -2
  320. package/dist/testing/css-variables.generated.js +1 -1
  321. package/dist/testing/css-variables.generated.js.map +1 -1
  322. package/dist/theme/chart-palette.d.ts +18 -0
  323. package/dist/theme/chart-palette.js +17 -1
  324. package/dist/theme/chart-palette.js.map +1 -1
  325. package/dist/theme/contrast-tokens.d.ts +3 -3
  326. package/dist/theme/contrast-tokens.js.map +1 -1
  327. package/dist/theme/contrast.d.ts +4 -4
  328. package/dist/theme/contrast.js.map +1 -1
  329. package/dist/tour/tour-overlay.js +2 -1
  330. package/dist/tour/tour-overlay.js.map +1 -1
  331. package/package.json +5 -9
  332. package/tokens.css +19 -54
  333. package/src/account/account-parts.ts +0 -47
  334. package/src/account/account-settings-labels.ts +0 -240
  335. package/src/account/account-settings.tsx +0 -698
  336. package/src/account/data-export-setting-labels.ts +0 -20
  337. package/src/account/data-export-setting.tsx +0 -200
  338. package/src/account/delete-account-setting-labels.ts +0 -33
  339. package/src/account/delete-account-setting.tsx +0 -341
  340. package/src/account/email-change-setting-labels.ts +0 -31
  341. package/src/account/email-change-setting.tsx +0 -443
  342. package/src/account/passkeys-setting.tsx +0 -445
  343. package/src/account/sessions-setting-labels.ts +0 -24
  344. package/src/account/sessions-setting.tsx +0 -283
  345. package/src/admin/admin-action-confirm-labels.ts +0 -19
  346. package/src/admin/admin-action-confirm.tsx +0 -509
  347. package/src/admin/admin-action-log-labels.ts +0 -83
  348. package/src/admin/admin-action-log.tsx +0 -464
  349. package/src/admin/admin-area-labels.ts +0 -114
  350. package/src/admin/admin-forbidden.tsx +0 -75
  351. package/src/admin/admin-overview.tsx +0 -258
  352. package/src/admin/admin-parts.ts +0 -68
  353. package/src/admin/admin-sections.tsx +0 -208
  354. package/src/admin/admin-tool-links.tsx +0 -90
  355. package/src/admin/invitations-panel-labels.ts +0 -31
  356. package/src/admin/invitations-panel.tsx +0 -516
  357. package/src/admin/mail-test-card-labels.ts +0 -19
  358. package/src/admin/mail-test-card.tsx +0 -189
  359. package/src/admin/plan-change-labels.ts +0 -5
  360. package/src/admin/plan-change.tsx +0 -474
  361. package/src/admin/reviewer-scope-editor-labels.ts +0 -16
  362. package/src/admin/reviewer-scope-editor.tsx +0 -224
  363. package/src/admin/role-select-labels.ts +0 -16
  364. package/src/admin/role-select.tsx +0 -282
  365. package/src/admin/transfer-ownership-dialog-labels.ts +0 -20
  366. package/src/admin/transfer-ownership-dialog.tsx +0 -162
  367. package/src/admin/user-roster-labels.ts +0 -17
  368. package/src/admin/user-roster.tsx +0 -559
  369. package/src/auth/accept-invitation-labels.ts +0 -21
  370. package/src/auth/accept-invitation.tsx +0 -210
  371. package/src/auth/auth-errors-labels.ts +0 -23
  372. package/src/auth/auth-errors.ts +0 -370
  373. package/src/auth/complete-name-dialog-labels.ts +0 -16
  374. package/src/auth/complete-name-dialog.tsx +0 -253
  375. package/src/auth/email-tag.ts +0 -75
  376. package/src/auth/forgot-password-form-labels.ts +0 -20
  377. package/src/auth/forgot-password-form.tsx +0 -221
  378. package/src/auth/form-rules.ts +0 -40
  379. package/src/auth/new-password-fields.tsx +0 -85
  380. package/src/auth/not-found-page-labels.ts +0 -12
  381. package/src/auth/not-found-page.tsx +0 -95
  382. package/src/auth/register-form-labels.ts +0 -31
  383. package/src/auth/register-form.tsx +0 -456
  384. package/src/auth/reset-password-form-labels.ts +0 -27
  385. package/src/auth/reset-password-form.tsx +0 -341
  386. package/src/auth/sign-in-form-labels.ts +0 -44
  387. package/src/auth/sign-in-form.tsx +0 -858
  388. package/src/auth/status-parts.tsx +0 -132
  389. package/src/auth/verify-email-labels.ts +0 -26
  390. package/src/auth/verify-email.tsx +0 -445
  391. package/src/billing/billing-banner.tsx +0 -258
  392. package/src/billing/billing-labels.ts +0 -381
  393. package/src/billing/billing-lock.ts +0 -108
  394. package/src/billing/billing-overview.ts +0 -157
  395. package/src/billing/billing-standing.ts +0 -80
  396. package/src/billing/cancel-request.ts +0 -97
  397. package/src/billing/cancel-subscription.tsx +0 -98
  398. package/src/billing/checkout-processing.ts +0 -394
  399. package/src/billing/checkout-return.ts +0 -90
  400. package/src/billing/pay-page.ts +0 -330
  401. package/src/billing/plan-card.tsx +0 -562
  402. package/src/billing/plan-change-labels.ts +0 -66
  403. package/src/billing/plan-limit-notice.tsx +0 -148
  404. package/src/billing/plan-limit-toast.tsx +0 -90
  405. package/src/billing/plan-limit.ts +0 -52
  406. package/src/billing/plan-price.ts +0 -98
  407. package/src/billing/plan-switch.tsx +0 -216
  408. package/src/billing/provider-page.ts +0 -84
  409. package/src/billing/subscription-actions.tsx +0 -247
  410. package/src/billing/subscription-status-chip.tsx +0 -95
  411. package/src/chart.ts +0 -103
  412. package/src/components/account-chips-labels.ts +0 -16
  413. package/src/components/account-chips.tsx +0 -474
  414. package/src/components/alert-banner.tsx +0 -670
  415. package/src/components/amount-input.tsx +0 -815
  416. package/src/components/appearance-labels.ts +0 -63
  417. package/src/components/authed-image-labels.ts +0 -11
  418. package/src/components/authed-image.tsx +0 -209
  419. package/src/components/autocomplete.tsx +0 -645
  420. package/src/components/breadcrumbs-labels.ts +0 -10
  421. package/src/components/breadcrumbs.tsx +0 -205
  422. package/src/components/bulk-action-bar-labels.ts +0 -11
  423. package/src/components/bulk-action-bar.tsx +0 -443
  424. package/src/components/button-group.tsx +0 -223
  425. package/src/components/button-look.ts +0 -256
  426. package/src/components/button.tsx +0 -339
  427. package/src/components/calculator.tsx +0 -341
  428. package/src/components/calendar-heatmap-labels.ts +0 -15
  429. package/src/components/calendar-heatmap.tsx +0 -594
  430. package/src/components/card.tsx +0 -377
  431. package/src/components/chart-edge.ts +0 -106
  432. package/src/components/chart-figure.tsx +0 -35
  433. package/src/components/chart-height.ts +0 -30
  434. package/src/components/chart-zoom-core.tsx +0 -627
  435. package/src/components/chart-zoom.tsx +0 -22
  436. package/src/components/chart.tsx +0 -554
  437. package/src/components/checkbox-group.tsx +0 -247
  438. package/src/components/checkbox.tsx +0 -346
  439. package/src/components/chip-input.tsx +0 -370
  440. package/src/components/chip-labels.ts +0 -13
  441. package/src/components/chip.tsx +0 -843
  442. package/src/components/choice-card.tsx +0 -544
  443. package/src/components/column-mapper-labels.ts +0 -38
  444. package/src/components/column-mapper.tsx +0 -655
  445. package/src/components/combobox-core.tsx +0 -1321
  446. package/src/components/combobox-suggestions.tsx +0 -131
  447. package/src/components/combobox.tsx +0 -716
  448. package/src/components/confirm-context.ts +0 -7
  449. package/src/components/confirm-dialog-labels.ts +0 -13
  450. package/src/components/confirm-dialog.tsx +0 -341
  451. package/src/components/copy-button-labels.ts +0 -13
  452. package/src/components/copy-button.tsx +0 -192
  453. package/src/components/country-select-labels.ts +0 -11
  454. package/src/components/country-select.tsx +0 -539
  455. package/src/components/currency-option-list.tsx +0 -180
  456. package/src/components/currency-select.tsx +0 -341
  457. package/src/components/danger-confirm-labels.ts +0 -20
  458. package/src/components/danger-confirm.tsx +0 -934
  459. package/src/components/data-table-cells.tsx +0 -118
  460. package/src/components/data-table-column-settings.tsx +0 -198
  461. package/src/components/data-table-filter-popover.tsx +0 -281
  462. package/src/components/data-table-filters.ts +0 -287
  463. package/src/components/data-table-fit.ts +0 -301
  464. package/src/components/data-table-groups.tsx +0 -288
  465. package/src/components/data-table-head.tsx +0 -280
  466. package/src/components/data-table-labels.ts +0 -198
  467. package/src/components/data-table-leading-row.tsx +0 -58
  468. package/src/components/data-table-mobile.tsx +0 -1117
  469. package/src/components/data-table-pagination.tsx +0 -202
  470. package/src/components/data-table-resize.ts +0 -188
  471. package/src/components/data-table-row-actions.tsx +0 -302
  472. package/src/components/data-table-row.tsx +0 -496
  473. package/src/components/data-table-selection.ts +0 -71
  474. package/src/components/data-table-shared.tsx +0 -287
  475. package/src/components/data-table-sort.ts +0 -163
  476. package/src/components/data-table-virtual.ts +0 -576
  477. package/src/components/data-table.tsx +0 -2598
  478. package/src/components/date-field.tsx +0 -684
  479. package/src/components/date-format-setting.tsx +0 -64
  480. package/src/components/date-picker.tsx +0 -404
  481. package/src/components/date-range-picker.tsx +0 -518
  482. package/src/components/description-list-labels.ts +0 -9
  483. package/src/components/description-list.tsx +0 -386
  484. package/src/components/dialog-frame-labels.ts +0 -7
  485. package/src/components/dialog-frame.tsx +0 -276
  486. package/src/components/disclosure.tsx +0 -476
  487. package/src/components/dropdown.tsx +0 -461
  488. package/src/components/empty-state.tsx +0 -136
  489. package/src/components/entity-combobox.tsx +0 -422
  490. package/src/components/error-boundary-labels.ts +0 -20
  491. package/src/components/error-boundary.tsx +0 -675
  492. package/src/components/facing-pair.ts +0 -93
  493. package/src/components/field-base-labels.ts +0 -20
  494. package/src/components/field-base.tsx +0 -656
  495. package/src/components/field-parts.tsx +0 -825
  496. package/src/components/field-strip.tsx +0 -129
  497. package/src/components/field.tsx +0 -206
  498. package/src/components/file-button.tsx +0 -295
  499. package/src/components/file-dropzone.tsx +0 -559
  500. package/src/components/floating-panel-labels.ts +0 -10
  501. package/src/components/floating-panel.tsx +0 -828
  502. package/src/components/focus-ring.ts +0 -16
  503. package/src/components/form-actions-labels.ts +0 -11
  504. package/src/components/form-actions.tsx +0 -578
  505. package/src/components/full-bleed-dialog.tsx +0 -294
  506. package/src/components/grouped-picker.tsx +0 -184
  507. package/src/components/help-popover.tsx +0 -117
  508. package/src/components/hover-menu.tsx +0 -343
  509. package/src/components/iban-input-labels.ts +0 -14
  510. package/src/components/iban-input.tsx +0 -236
  511. package/src/components/icon-button.tsx +0 -959
  512. package/src/components/icon-picker-labels.ts +0 -13
  513. package/src/components/icon-picker.tsx +0 -232
  514. package/src/components/image-grid-labels.ts +0 -11
  515. package/src/components/image-grid.tsx +0 -202
  516. package/src/components/inline-confirm.tsx +0 -116
  517. package/src/components/inline-edit-field-labels.ts +0 -11
  518. package/src/components/inline-edit-field.tsx +0 -552
  519. package/src/components/inline-entity-combobox.tsx +0 -849
  520. package/src/components/input.tsx +0 -394
  521. package/src/components/jump-calendar.tsx +0 -265
  522. package/src/components/language-select.tsx +0 -93
  523. package/src/components/legal-labels.ts +0 -105
  524. package/src/components/legal-page.tsx +0 -711
  525. package/src/components/legal.tsx +0 -668
  526. package/src/components/lightbox-labels.ts +0 -18
  527. package/src/components/lightbox.tsx +0 -399
  528. package/src/components/line-items-labels.ts +0 -14
  529. package/src/components/line-items.tsx +0 -602
  530. package/src/components/list-labels.ts +0 -12
  531. package/src/components/list.tsx +0 -870
  532. package/src/components/loading-state.tsx +0 -78
  533. package/src/components/measured-grid-labels.ts +0 -25
  534. package/src/components/measured-grid.tsx +0 -837
  535. package/src/components/menu-item.tsx +0 -241
  536. package/src/components/mini-calendar-labels.ts +0 -17
  537. package/src/components/mini-calendar.tsx +0 -789
  538. package/src/components/modal.tsx +0 -505
  539. package/src/components/money-draft.ts +0 -83
  540. package/src/components/money-field.tsx +0 -76
  541. package/src/components/month-grid.tsx +0 -229
  542. package/src/components/month-picker-labels.ts +0 -22
  543. package/src/components/month-picker.tsx +0 -1087
  544. package/src/components/multi-entity-combobox.tsx +0 -369
  545. package/src/components/multi-select.tsx +0 -376
  546. package/src/components/nav-pills.tsx +0 -198
  547. package/src/components/number-field.tsx +0 -327
  548. package/src/components/number-input.tsx +0 -558
  549. package/src/components/numeric-field.ts +0 -169
  550. package/src/components/numpad-sheet.tsx +0 -285
  551. package/src/components/one-time-code-input.tsx +0 -270
  552. package/src/components/page-contents-labels.ts +0 -9
  553. package/src/components/page-contents.tsx +0 -282
  554. package/src/components/page-header-context.ts +0 -8
  555. package/src/components/page-header.tsx +0 -298
  556. package/src/components/password-strength-labels.ts +0 -22
  557. package/src/components/password-strength.tsx +0 -241
  558. package/src/components/phone-input-labels.ts +0 -10
  559. package/src/components/phone-input.tsx +0 -282
  560. package/src/components/picker-sheet.tsx +0 -330
  561. package/src/components/pie-chart-labels.ts +0 -40
  562. package/src/components/pie-chart.tsx +0 -480
  563. package/src/components/popover-labels.ts +0 -14
  564. package/src/components/popover.tsx +0 -268
  565. package/src/components/progress-bar-labels.ts +0 -10
  566. package/src/components/progress-bar.tsx +0 -479
  567. package/src/components/qr-code.tsx +0 -76
  568. package/src/components/reauth-dialog-labels.ts +0 -13
  569. package/src/components/reauth-dialog.tsx +0 -265
  570. package/src/components/row-actions-labels.ts +0 -12
  571. package/src/components/row-actions.tsx +0 -795
  572. package/src/components/scroll-area.tsx +0 -123
  573. package/src/components/search-field.tsx +0 -192
  574. package/src/components/select.tsx +0 -294
  575. package/src/components/separator.tsx +0 -33
  576. package/src/components/series-chart-axes.ts +0 -342
  577. package/src/components/series-chart-budget.ts +0 -150
  578. package/src/components/series-chart-labels.ts +0 -33
  579. package/src/components/series-chart-thin.ts +0 -180
  580. package/src/components/series-chart-ticks.ts +0 -194
  581. package/src/components/series-chart.tsx +0 -1906
  582. package/src/components/server-wake-labels.ts +0 -11
  583. package/src/components/server-wake.tsx +0 -129
  584. package/src/components/settings-fields.tsx +0 -237
  585. package/src/components/share-card-labels.ts +0 -30
  586. package/src/components/share-card.tsx +0 -675
  587. package/src/components/signature-pad-labels.ts +0 -24
  588. package/src/components/signature-pad.tsx +0 -747
  589. package/src/components/signed-amount-labels.ts +0 -10
  590. package/src/components/signed-amount.tsx +0 -336
  591. package/src/components/skeleton.tsx +0 -80
  592. package/src/components/slider.tsx +0 -338
  593. package/src/components/sparkline-labels.ts +0 -14
  594. package/src/components/sparkline.tsx +0 -322
  595. package/src/components/spinner.tsx +0 -81
  596. package/src/components/stat-tile-labels.ts +0 -15
  597. package/src/components/stat-tile.tsx +0 -725
  598. package/src/components/status-dot.tsx +0 -170
  599. package/src/components/swatch-picker-labels.ts +0 -10
  600. package/src/components/swatch-picker.tsx +0 -283
  601. package/src/components/swipeable-row.tsx +0 -386
  602. package/src/components/switch.tsx +0 -273
  603. package/src/components/table-skeleton.tsx +0 -136
  604. package/src/components/table.tsx +0 -647
  605. package/src/components/tabs-labels.ts +0 -13
  606. package/src/components/tabs.tsx +0 -693
  607. package/src/components/text-link.tsx +0 -359
  608. package/src/components/text.tsx +0 -150
  609. package/src/components/textarea.tsx +0 -330
  610. package/src/components/tile-radio.tsx +0 -332
  611. package/src/components/time-input.tsx +0 -121
  612. package/src/components/toast-labels.ts +0 -12
  613. package/src/components/toast.tsx +0 -519
  614. package/src/components/toggle-group.tsx +0 -752
  615. package/src/components/toggle-legend.tsx +0 -394
  616. package/src/components/tooltip.tsx +0 -1149
  617. package/src/components/translation-review-editor.tsx +0 -290
  618. package/src/components/translation-review-labels.ts +0 -181
  619. package/src/components/translation-review-parts.tsx +0 -272
  620. package/src/components/translation-review.tsx +0 -1240
  621. package/src/components/tree-view.tsx +0 -589
  622. package/src/components/treemap-labels.ts +0 -47
  623. package/src/components/treemap-layout.ts +0 -210
  624. package/src/components/treemap.tsx +0 -1184
  625. package/src/components/trigger-aria.ts +0 -44
  626. package/src/components/use-anchor-dir.ts +0 -20
  627. package/src/components/use-mobile-reveal.ts +0 -62
  628. package/src/components/use-table-state.ts +0 -753
  629. package/src/components/user-avatar.tsx +0 -116
  630. package/src/components/wizard-stepper.tsx +0 -42
  631. package/src/components/write-lock-labels.ts +0 -10
  632. package/src/components/write-lock.tsx +0 -253
  633. package/src/currencies.ts +0 -70
  634. package/src/data-table.ts +0 -42
  635. package/src/demo/demo-banner.tsx +0 -153
  636. package/src/demo/demo-countdown.ts +0 -136
  637. package/src/demo/demo-ended.tsx +0 -90
  638. package/src/demo/demo-labels.ts +0 -78
  639. package/src/demo/demo-session.ts +0 -32
  640. package/src/demo/demo-start.tsx +0 -156
  641. package/src/eslint/index.ts +0 -161
  642. package/src/eslint/role-utilities.generated.ts +0 -146
  643. package/src/eslint/role-utilities.ts +0 -233
  644. package/src/feedback/feedback-attachment-download.tsx +0 -77
  645. package/src/feedback/feedback-attachment-labels.ts +0 -37
  646. package/src/feedback/feedback-attachment.tsx +0 -1239
  647. package/src/feedback/feedback-capture.ts +0 -287
  648. package/src/feedback/feedback-comment-thread.tsx +0 -353
  649. package/src/feedback/feedback-context-labels.ts +0 -10
  650. package/src/feedback/feedback-context.tsx +0 -213
  651. package/src/feedback/feedback-crash.ts +0 -547
  652. package/src/feedback/feedback-dialog-labels.ts +0 -29
  653. package/src/feedback/feedback-dialog.tsx +0 -440
  654. package/src/feedback/feedback-entry-file.tsx +0 -150
  655. package/src/feedback/feedback-inbox.tsx +0 -552
  656. package/src/feedback/feedback-labels.ts +0 -144
  657. package/src/feedback/feedback-menu-labels.ts +0 -12
  658. package/src/feedback/feedback-menu.tsx +0 -177
  659. package/src/feedback/feedback-mutation.ts +0 -20
  660. package/src/feedback/feedback-page-link.ts +0 -90
  661. package/src/feedback/feedback-public-labels.ts +0 -81
  662. package/src/feedback/feedback-public-list.tsx +0 -524
  663. package/src/feedback/feedback-public-switch.tsx +0 -102
  664. package/src/feedback/feedback-public-types.ts +0 -101
  665. package/src/feedback/feedback-record.ts +0 -423
  666. package/src/feedback/feedback-replies-context.ts +0 -9
  667. package/src/feedback/feedback-replies.tsx +0 -343
  668. package/src/feedback/feedback-rework-entry-chip.tsx +0 -18
  669. package/src/feedback/feedback-row-detail-labels.ts +0 -30
  670. package/src/feedback/feedback-row-detail.tsx +0 -858
  671. package/src/feedback/feedback-status-undo.ts +0 -109
  672. package/src/feedback/feedback-submit-dialog.tsx +0 -118
  673. package/src/feedback/feedback-submit.tsx +0 -237
  674. package/src/feedback/feedback-swipe.tsx +0 -192
  675. package/src/feedback/feedback-table-labels.ts +0 -27
  676. package/src/feedback/feedback-table.tsx +0 -912
  677. package/src/feedback/feedback-thread-labels.ts +0 -22
  678. package/src/feedback/feedback-thread-parts-labels.ts +0 -41
  679. package/src/feedback/feedback-thread.tsx +0 -905
  680. package/src/feedback/feedback-vocabulary.ts +0 -263
  681. package/src/feedback/feedback-vote-button.tsx +0 -124
  682. package/src/feedback.ts +0 -116
  683. package/src/hooks/use-anchored-panel.ts +0 -396
  684. package/src/hooks/use-anchored-rect.ts +0 -77
  685. package/src/hooks/use-announce.ts +0 -85
  686. package/src/hooks/use-authed-src.ts +0 -167
  687. package/src/hooks/use-body-scroll-lock.ts +0 -119
  688. package/src/hooks/use-breakpoint.ts +0 -133
  689. package/src/hooks/use-close-transition.ts +0 -107
  690. package/src/hooks/use-copy-to-clipboard.ts +0 -122
  691. package/src/hooks/use-debounce.ts +0 -114
  692. package/src/hooks/use-dismiss.ts +0 -371
  693. package/src/hooks/use-document-title.ts +0 -33
  694. package/src/hooks/use-file-drop.ts +0 -121
  695. package/src/hooks/use-file-picker-labels.ts +0 -28
  696. package/src/hooks/use-file-picker.tsx +0 -359
  697. package/src/hooks/use-focus-trap.ts +0 -199
  698. package/src/hooks/use-hotkey.ts +0 -189
  699. package/src/hooks/use-large-text.ts +0 -41
  700. package/src/hooks/use-long-press.ts +0 -140
  701. package/src/hooks/use-media-query.ts +0 -39
  702. package/src/hooks/use-mounted.ts +0 -39
  703. package/src/hooks/use-noindex.ts +0 -37
  704. package/src/hooks/use-overlay-history.ts +0 -714
  705. package/src/hooks/use-row-swipe.ts +0 -207
  706. package/src/hooks/use-search-param-state.ts +0 -434
  707. package/src/hooks/use-windowed-rows.ts +0 -225
  708. package/src/i18n/defaults.ts +0 -267
  709. package/src/i18n/german.ts +0 -2057
  710. package/src/i18n/kit-labels.tsx +0 -1003
  711. package/src/i18n/languages.ts +0 -349
  712. package/src/i18n/locales/de-CH.ts +0 -24
  713. package/src/i18n/locales/en.ts +0 -267
  714. package/src/i18n/locales/es.ts +0 -1997
  715. package/src/i18n/locales/fr.ts +0 -2035
  716. package/src/i18n/locales/hu.ts +0 -2002
  717. package/src/i18n/locales/it.ts +0 -2012
  718. package/src/i18n/locales/zh.ts +0 -1910
  719. package/src/i18n/plurals.ts +0 -86
  720. package/src/i18n/review.ts +0 -475
  721. package/src/i18n/shared-labels.ts +0 -138
  722. package/src/i18n/swiss.ts +0 -29
  723. package/src/index.ts +0 -1179
  724. package/src/landing/access.ts +0 -93
  725. package/src/landing/landing-actions.tsx +0 -97
  726. package/src/landing/landing-labels.ts +0 -59
  727. package/src/landing/landing-sections.tsx +0 -341
  728. package/src/landing/page-seo.ts +0 -261
  729. package/src/landing/public-header.tsx +0 -121
  730. package/src/landing/public-page.tsx +0 -106
  731. package/src/landing/routing.tsx +0 -225
  732. package/src/lib/broadcast.ts +0 -52
  733. package/src/lib/calc.ts +0 -323
  734. package/src/lib/chip-edge-snap.ts +0 -212
  735. package/src/lib/clipboard-minus.ts +0 -107
  736. package/src/lib/clipping.ts +0 -34
  737. package/src/lib/cn.ts +0 -28
  738. package/src/lib/column-mapping.ts +0 -234
  739. package/src/lib/countries.ts +0 -91
  740. package/src/lib/data-attributes.ts +0 -14
  741. package/src/lib/date-format.ts +0 -227
  742. package/src/lib/dates.ts +0 -266
  743. package/src/lib/day-format.ts +0 -96
  744. package/src/lib/decimal-marks.ts +0 -108
  745. package/src/lib/describe-failure.ts +0 -18
  746. package/src/lib/device-settings.ts +0 -147
  747. package/src/lib/direction.ts +0 -74
  748. package/src/lib/document-navigation.ts +0 -17
  749. package/src/lib/document-title.ts +0 -41
  750. package/src/lib/download.ts +0 -172
  751. package/src/lib/float-clearance.ts +0 -70
  752. package/src/lib/floating-stack.ts +0 -70
  753. package/src/lib/focus-left.ts +0 -156
  754. package/src/lib/format.ts +0 -522
  755. package/src/lib/http-status.ts +0 -38
  756. package/src/lib/iban.ts +0 -251
  757. package/src/lib/ime.ts +0 -24
  758. package/src/lib/intl-cache.ts +0 -25
  759. package/src/lib/iso-day.ts +0 -13
  760. package/src/lib/lazy-with-fallback.ts +0 -82
  761. package/src/lib/logger.ts +0 -69
  762. package/src/lib/minus.ts +0 -50
  763. package/src/lib/path-pattern.ts +0 -55
  764. package/src/lib/person-name.ts +0 -155
  765. package/src/lib/phone.ts +0 -208
  766. package/src/lib/plain-text.ts +0 -22
  767. package/src/lib/presence.ts +0 -18
  768. package/src/lib/qr-encode.ts +0 -444
  769. package/src/lib/quiet-focus.ts +0 -32
  770. package/src/lib/reduced-motion.ts +0 -22
  771. package/src/lib/refs.ts +0 -22
  772. package/src/lib/round.ts +0 -43
  773. package/src/lib/safe-storage.ts +0 -119
  774. package/src/lib/server-wake.ts +0 -315
  775. package/src/lib/session-refresh.ts +0 -472
  776. package/src/lib/share-format.ts +0 -18
  777. package/src/lib/status-tone.ts +0 -43
  778. package/src/lib/strip-fade.ts +0 -287
  779. package/src/lib/table-text.ts +0 -554
  780. package/src/lib/text-case.ts +0 -19
  781. package/src/lib/text-match.ts +0 -169
  782. package/src/lib/thenable.ts +0 -19
  783. package/src/lib/translation-review.ts +0 -717
  784. package/src/notifications/device-zone-report.ts +0 -67
  785. package/src/notifications/feedback-notification-types-labels.ts +0 -33
  786. package/src/notifications/feedback-notification-types.ts +0 -71
  787. package/src/notifications/notification-bell.tsx +0 -119
  788. package/src/notifications/notification-inbox.tsx +0 -309
  789. package/src/notifications/notification-parts.tsx +0 -81
  790. package/src/notifications/notification-types-setting.tsx +0 -406
  791. package/src/notifications/notification-types.ts +0 -89
  792. package/src/notifications/notifications-labels.ts +0 -287
  793. package/src/notifications/push-device-setting.tsx +0 -230
  794. package/src/notifications/push-devices-setting.tsx +0 -374
  795. package/src/notifications/push-worker.ts +0 -168
  796. package/src/notifications/quiet-hours-setting.tsx +0 -238
  797. package/src/notifications/unsubscribe-panel.tsx +0 -200
  798. package/src/notifications/use-push-device.ts +0 -448
  799. package/src/offline/local-first.ts +0 -100
  800. package/src/offline/pwa-update-prompt-labels.ts +0 -9
  801. package/src/offline/pwa-update-prompt.tsx +0 -78
  802. package/src/offline/query-persistence.ts +0 -391
  803. package/src/offline/service-worker-updates.ts +0 -81
  804. package/src/offline/shared-computer-labels.ts +0 -8
  805. package/src/offline/shared-computer.tsx +0 -87
  806. package/src/offline/sign-out-pending-dialog-labels.ts +0 -21
  807. package/src/offline/sign-out-pending-dialog.tsx +0 -135
  808. package/src/offline.ts +0 -37
  809. package/src/push-worker.ts +0 -25
  810. package/src/rhf/fields.tsx +0 -2187
  811. package/src/rhf/form-core.tsx +0 -324
  812. package/src/rhf/form.tsx +0 -12
  813. package/src/rhf/line-items.tsx +0 -135
  814. package/src/rhf/use-rhf-wizard-step.ts +0 -104
  815. package/src/rhf.ts +0 -21
  816. package/src/search/command-palette-labels.ts +0 -16
  817. package/src/search/command-palette.tsx +0 -624
  818. package/src/search/global-search-labels.ts +0 -13
  819. package/src/search/global-search.tsx +0 -660
  820. package/src/search/search-index.ts +0 -283
  821. package/src/search/use-command-key.ts +0 -23
  822. package/src/search.ts +0 -14
  823. package/src/settings/device-reset-setting-labels.ts +0 -20
  824. package/src/settings/device-reset-setting.tsx +0 -116
  825. package/src/settings/settings-card-classes.ts +0 -11
  826. package/src/settings/settings-catalogue.ts +0 -150
  827. package/src/settings/settings-context.ts +0 -33
  828. package/src/settings/settings-heading.tsx +0 -67
  829. package/src/settings/settings-labels.ts +0 -87
  830. package/src/settings/settings-layout.tsx +0 -471
  831. package/src/settings/settings-section.tsx +0 -108
  832. package/src/settings/use-account-appearance.ts +0 -148
  833. package/src/settings/use-account-language.ts +0 -146
  834. package/src/settings/use-settings-focus.ts +0 -128
  835. package/src/settings/use-settings-route.ts +0 -258
  836. package/src/shell/account-menu-language.tsx +0 -130
  837. package/src/shell/account-menu-text-size.tsx +0 -80
  838. package/src/shell/admin-menu.tsx +0 -183
  839. package/src/shell/app-shell-labels.ts +0 -11
  840. package/src/shell/app-shell.tsx +0 -1560
  841. package/src/shell/auth-layout.tsx +0 -186
  842. package/src/shell/company-switcher-labels.ts +0 -13
  843. package/src/shell/company-switcher.tsx +0 -136
  844. package/src/shell/dev-menu.tsx +0 -257
  845. package/src/shell/fill-height.tsx +0 -45
  846. package/src/shell/language-code.ts +0 -5
  847. package/src/shell/option-switcher-menu.tsx +0 -84
  848. package/src/shell/sync-status-indicator.tsx +0 -303
  849. package/src/shell/top-bar-actions.tsx +0 -87
  850. package/src/shell/top-bar-brand.tsx +0 -78
  851. package/src/shell/top-bar-parts-labels.ts +0 -148
  852. package/src/shell/top-bar.tsx +0 -40
  853. package/src/shell/topbar-action-menu.tsx +0 -567
  854. package/src/shell/topbar-controls.tsx +0 -269
  855. package/src/shell/tour-menu.tsx +0 -187
  856. package/src/shell.ts +0 -108
  857. package/src/sync/db.ts +0 -129
  858. package/src/sync/engine.ts +0 -1011
  859. package/src/sync/hooks.ts +0 -98
  860. package/src/sync/testing.ts +0 -73
  861. package/src/sync/wire.ts +0 -61
  862. package/src/sync.ts +0 -37
  863. package/src/table-text.ts +0 -8
  864. package/src/testing/css-variables.generated.ts +0 -112
  865. package/src/testing/css-variables.ts +0 -189
  866. package/src/testing/index.ts +0 -29
  867. package/src/testing/react.ts +0 -58
  868. package/src/testing/tour.ts +0 -41
  869. package/src/testing/viewport.ts +0 -357
  870. package/src/theme/chart-palette.ts +0 -232
  871. package/src/theme/color.ts +0 -272
  872. package/src/theme/contrast-tokens.ts +0 -268
  873. package/src/theme/contrast.ts +0 -250
  874. package/src/theme/palette-derive.ts +0 -825
  875. package/src/theme/palette-presets.ts +0 -544
  876. package/src/theme/palette-store.ts +0 -108
  877. package/src/theme/text-size.ts +0 -289
  878. package/src/theme/theme-store.ts +0 -157
  879. package/src/tour/tour-catalogue-labels.ts +0 -75
  880. package/src/tour/tour-catalogue.tsx +0 -335
  881. package/src/tour/tour-dock.ts +0 -134
  882. package/src/tour/tour-engine.ts +0 -37
  883. package/src/tour/tour-gates.ts +0 -218
  884. package/src/tour/tour-guide-button.tsx +0 -64
  885. package/src/tour/tour-guide-labels.ts +0 -15
  886. package/src/tour/tour-info.ts +0 -144
  887. package/src/tour/tour-labels.ts +0 -23
  888. package/src/tour/tour-overlay.tsx +0 -1170
  889. package/src/tour/tour.tsx +0 -750
  890. package/src/tour/use-tour-progress.ts +0 -671
  891. package/src/tour/use-tour-url-sync.ts +0 -266
  892. package/src/tour.ts +0 -21
  893. package/src/vite-env.d.ts +0 -23
  894. package/src/wizard/stepper-nav.tsx +0 -360
  895. package/src/wizard/types.ts +0 -275
  896. package/src/wizard/use-wizard.ts +0 -560
  897. package/src/wizard/validation.ts +0 -39
  898. package/src/wizard/wizard-context.tsx +0 -74
  899. package/src/wizard/wizard-labels.ts +0 -29
  900. package/src/wizard/wizard-step.tsx +0 -76
  901. package/src/wizard/wizard-summary.tsx +0 -84
  902. 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
- };