@eifi1/ui-kit 0.54.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 (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 +5 -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 +6 -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 +80 -0
  113. package/dist/components/legended-series-chart.js +70 -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 +5 -9
  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,377 +0,0 @@
1
- import { createContext, useContext } from "react";
2
- import type { ComponentPropsWithoutRef, ComponentPropsWithRef, ReactNode, Ref } from "react";
3
- import { cn } from "../lib/cn";
4
-
5
- /**
6
- * A `div`'s props, `ref` included since 0.34 — and the same for every Card part (API-2,
7
- * refactor audit 2026-10, Skeleton's 0.33.1 change). They always reached the element;
8
- * `ComponentPropsWithoutRef` only kept `ref` out of the type, so keksdose wrapped a Card in
9
- * a `<div ref>` to scroll it into view (admin-actions-panel).
10
- */
11
- export interface CardProps extends ComponentPropsWithRef<"div"> {
12
- children: ReactNode;
13
- /**
14
- * When true, drop the card chrome (border, rounded corners, shadow) on mobile so the
15
- * card spans edge-to-edge. Chrome reappears at the `md` breakpoint. Use for primary
16
- * content cards on data pages; leave off for centered dialog/panel cards.
17
- */
18
- flush?: boolean;
19
- /**
20
- * `inset`: a panel INSIDE a card rather than a card on the page — the raised
21
- * `--bg-surface-2`, a small radius, `p-3` of its own and no border or shadow, since
22
- * it is already sitting on the card that has them. Lenkbank's results blocks and
23
- * corner panels write this by hand (`rounded-md bg-surface-2 p-3`) under a Card of
24
- * their own. Unlike the default card it carries its padding, because every one of
25
- * those copies wanted the same one; a caller's `p-*` still wins. `flush` is ignored:
26
- * an inset panel never runs edge to edge.
27
- */
28
- variant?: "default" | "inset" | "outline";
29
- /**
30
- * The card's own padding: `none`, `sm` (`p-3`) or `md` (`p-4`).
31
- *
32
- * `outline` is the bordered box with no shadow — a row or a block INSIDE a section
33
- * rather than a card on the page: kastlan's rent breakdown rows
34
- * (tenancy/components/breakdown-row.tsx, `rounded-lg border p-4`) and the meters
35
- * list's inline add row (meters/components/meter-add-row.tsx). It takes `md` by
36
- * default, as every one of those copies does; `sm` is the dense row.
37
- *
38
- * Left out, the default card keeps no padding (its CardHeader / CardContent own the
39
- * rhythm) and `inset` keeps its `p-3`; passing it sets theirs too. A caller's `p-*`
40
- * in `className` still wins.
41
- *
42
- * Whenever the card carries a padding — this prop, or the `inset` / `outline` one —
43
- * CardHeader, CardContent and CardFooter drop their own `px-6` / `pt-6` / `pb-6`, so
44
- * the card's padding is the only one. Before 0.16 they kept it regardless and a
45
- * `padding="md"` card with parts was padded twice (40px a side); keksdose's settings
46
- * cards zeroed all three parts by hand (`<CardHeader className="p-0">`). A padding set
47
- * only through `className` cannot be seen from the parts: use the prop.
48
- */
49
- padding?: "none" | "sm" | "md";
50
- /**
51
- * A card that is a WARNING (or other status) as a whole: the border in the tone's
52
- * `-border` colour and the {@link CardTitle} in the tone's text colour. kastlan's
53
- * dunning summary (invoice-detail-page.tsx:231-235) writes both by hand —
54
- * `border-[var(--warning-border)]` on the Card, `text-[var(--warning)]` on the title
55
- * — and the next status card would copy the pair (`outline` takes it the same way).
56
- * An `inset` panel has no border, so it takes the tone's quiet `-bg` fill instead.
57
- * `data-tone` is set for a caller's own
58
- * selectors.
59
- */
60
- tone?: CardTone;
61
- /**
62
- * How loud the `tone` frame is. `"strong"`: a 2px border in the tone's strong
63
- * colour — `--danger-border-strong` for `danger`, `--warning-border-strong` for
64
- * `warning` (0.33: amber-600 in dark, where `--warning` stood 13:1 off the card and
65
- * shouted; docs/colour-roles-harmonization.md §5.2), the tone's own text colour
66
- * (`--info`, `--success`) for the two with no `-border-strong` token of their own.
67
- * For the one tile on a page that guards something destructive or security-relevant:
68
- * keksdose's password / delete-account tile (shared/components/password-danger-card.tsx)
69
- * wrote `toneFrameClass(tone)` over the Card by hand for the 2px rule, and `p-[15px]`
70
- * under it so the content did not move. Here the extra pixel comes off the padding the
71
- * same way (`padding` or the variant's own), so a strong card's content sits exactly
72
- * where a soft one's does.
73
- *
74
- * Default `"soft"`: the 1px `-border` it has always been. No effect without `tone`,
75
- * nor on `inset`, which has no border to make louder (its tone is a fill).
76
- */
77
- toneStrength?: "soft" | "strong";
78
- /**
79
- * Wash the card in the tone's quiet `-bg` surface as well as framing it. A toned
80
- * card is a border and a title colour, at either strength — the wash belongs to
81
- * `AlertBanner`, the message, not to a card that holds a form — so it stays
82
- * off by default. Some tiles want both: keksdose's password / delete-account tile
83
- * was `toneFrameClass(tone)` (border AND wash) before 0.16, and after moving to
84
- * `toneStrength="strong"` it re-added `bg-[var(--danger-bg)]` by hand. The wash is
85
- * layered OVER the card's own `--bg-surface` (as AlertBanner's `elevated` does), so
86
- * the dark theme's translucent tints stay a card, not a hole to the page below.
87
- *
88
- * No effect without `tone`, nor on `inset`, whose tone is already the fill.
89
- */
90
- toneFill?: boolean;
91
- /**
92
- * The parts' type scale. `"compact"`: CardTitle `text-sm font-medium`,
93
- * CardDescription `text-xs` and the CardHeader's title-to-description gap
94
- * `gap-0.5` — the small settings / admin card. keksdose wrote those three classes by
95
- * hand on ~25 cards. Set here, they reach the parts through context; a class on a
96
- * part still wins, and a Card nested inside starts again from its own density.
97
- *
98
- * Default `"comfortable"`: the parts as they have always been.
99
- */
100
- density?: CardDensity;
101
- }
102
-
103
- export type CardDensity = "comfortable" | "compact";
104
-
105
- export type CardTone = "warning" | "danger" | "info" | "success";
106
-
107
- // The title is reached through its `data-slot`, so the tone needs no context and a
108
- // caller's `className` on CardTitle still wins (it is on the element itself).
109
- const CARD_TONES: Record<CardTone, { border: string; fill: string; title: string }> = {
110
- warning: {
111
- border: "border-warning",
112
- fill: "bg-warning-soft",
113
- title: "[&_[data-slot=card-title]]:text-warning",
114
- },
115
- danger: {
116
- border: "border-danger",
117
- fill: "bg-danger-soft",
118
- title: "[&_[data-slot=card-title]]:text-danger",
119
- },
120
- info: {
121
- border: "border-info",
122
- fill: "bg-info-soft",
123
- title: "[&_[data-slot=card-title]]:text-info",
124
- },
125
- success: {
126
- border: "border-success",
127
- fill: "bg-success-soft",
128
- title: "[&_[data-slot=card-title]]:text-success",
129
- },
130
- };
131
-
132
- const CARD_PADDING: Record<NonNullable<CardProps["padding"]>, string> = {
133
- none: "p-0",
134
- sm: "p-3",
135
- md: "p-4",
136
- };
137
-
138
- // The same padding one pixel short, for a 2px `toneStrength="strong"` frame: the
139
- // border grows inwards by that pixel, so the content stays where the 1px card had it.
140
- // `calc(rem − 1px)` (0.32, §3.2): the padding grows with the text like `p-3` / `p-4`,
141
- // the border does not — a fixed 11 / 15 px stopped matching them at 125 %, and toggling
142
- // the tone shifted the content.
143
- const CARD_PADDING_STRONG: Record<NonNullable<CardProps["padding"]>, string> = {
144
- none: "p-0",
145
- sm: "p-[calc(0.75rem-1px)]",
146
- md: "p-[calc(1rem-1px)]",
147
- };
148
-
149
- // The wash as a background IMAGE over the card's opaque `--bg-surface` — see
150
- // `toneFill`. A plain `bg-danger-soft` would REPLACE the surface, and the dark
151
- // theme's washes are a translucent tint.
152
- const CARD_TONE_WASH: Record<CardTone, string> = {
153
- warning: "bg-[image:linear-gradient(var(--warning-bg),var(--warning-bg))]",
154
- danger: "bg-[image:linear-gradient(var(--danger-bg),var(--danger-bg))]",
155
- info: "bg-[image:linear-gradient(var(--info-bg),var(--info-bg))]",
156
- success: "bg-[image:linear-gradient(var(--success-bg),var(--success-bg))]",
157
- };
158
-
159
- const CARD_TONES_STRONG: Record<CardTone, string> = {
160
- warning: "border-2 border-warning-strong",
161
- danger: "border-2 border-danger-strong",
162
- info: "border-2 border-[var(--info)]",
163
- success: "border-2 border-[var(--success)]",
164
- };
165
-
166
- /**
167
- * Whether the {@link Card} round the parts carries the padding itself — so CardHeader,
168
- * CardContent and CardFooter must not add theirs on top. `false` (no Card, or a default
169
- * card with no `padding`) keeps the parts' own `px-6` rhythm, as it always was.
170
- */
171
- const CardPaddedContext = createContext(false);
172
-
173
- /** The {@link CardProps.density} of the nearest Card — the parts' type scale. */
174
- const CardDensityContext = createContext<CardDensity>("comfortable");
175
-
176
- export function Card({
177
- className,
178
- children,
179
- flush,
180
- variant = "default",
181
- tone,
182
- toneStrength = "soft",
183
- toneFill = false,
184
- density = "comfortable",
185
- padding,
186
- ...rest
187
- }: CardProps) {
188
- const toned = tone ? CARD_TONES[tone] : undefined;
189
- // An outline card is bordered like the default one, so a tone recolours its border.
190
- const bordered = variant !== "inset";
191
- const strong = toned !== undefined && bordered && toneStrength === "strong";
192
- // The padding the card itself carries: the prop, else the variant's own (`inset`
193
- // p-3, `outline` p-4). A default card with no prop carries none — its parts do.
194
- const ownPadding = padding ?? (variant === "inset" ? "sm" : variant === "outline" ? "md" : undefined);
195
- return (
196
- <div
197
- data-tone={tone}
198
- data-tone-strength={strong ? "strong" : undefined}
199
- data-density={density === "compact" ? "compact" : undefined}
200
- {...rest}
201
- className={cn(
202
- variant === "inset"
203
- ? "rounded-md bg-surface-2 p-3"
204
- : variant === "outline"
205
- ? // No shadow and no `flush`: it sits on a surface that already has both.
206
- "rounded-lg border border-subtle bg-surface p-4"
207
- : cn(
208
- // Surface + border are theme tokens so the palette switcher (feedback
209
- // #307) can re-skin every card; a caller's own bg-*/border-* override
210
- // still wins via tailwind-merge.
211
- "bg-surface",
212
- flush
213
- ? "border-y border-subtle md:rounded-lg md:border md:shadow-sm"
214
- : "rounded-lg border border-subtle shadow-sm",
215
- ),
216
- toned && (bordered ? toned.border : toned.fill),
217
- strong && tone && CARD_TONES_STRONG[tone],
218
- toneFill && bordered && tone && CARD_TONE_WASH[tone],
219
- toned?.title,
220
- ownPadding && (strong ? CARD_PADDING_STRONG : CARD_PADDING)[ownPadding],
221
- className,
222
- )}
223
- >
224
- <CardPaddedContext.Provider value={ownPadding !== undefined}>
225
- <CardDensityContext.Provider value={density}>{children}</CardDensityContext.Provider>
226
- </CardPaddedContext.Provider>
227
- </div>
228
- );
229
- }
230
-
231
- // Composed shadcn-style Card sub-parts. A default `Card` with no `padding` stays
232
- // padding-less, so these own the padding/rhythm (`px-6`, the header's `pt-6`, the
233
- // last part's `pb-6`). A Card that carries a padding of its own — the `padding` prop,
234
- // or `inset` / `outline`, which have one built in — tells them so through context and
235
- // they add none on top (see CardPaddedContext). Token-driven so they re-skin with the
236
- // palette. Use CardHeader → CardTitle/CardDescription (+ optional CardAction,
237
- // top-right) → CardContent → CardFooter.
238
- /** The sub-parts add nothing to a `<div>`'s props — they are the SAME element with a
239
- * `data-slot` and a padding rhythm — so most names are aliases rather than an empty
240
- * interface pretending to be more. They exist so a consumer's own wrapper can say
241
- * `CardHeaderProps` instead of `ComponentProps<typeof CardHeader>`. */
242
- export interface CardHeaderProps extends ComponentPropsWithRef<"div"> {
243
- /**
244
- * Below the `sm` breakpoint, put the {@link CardAction} UNDER the title and
245
- * description instead of beside them. For an action that is wider than an icon —
246
- * a "Set up two-factor" button, a checkbox and a filter — which, kept in the
247
- * top-end column on a 390px phone, squeezed the title into a ribbon two words wide
248
- * (keksdose's settings cards). Off by default at Normal: an icon action (the wizard
249
- * summary's pencil) is narrow enough to stay beside the title at every width.
250
- *
251
- * Unset, it stacks at Large and Extra large only (0.32.1, the 360 px Extra-large
252
- * sweep; docs/text-size-harmonization.md §4): there an IconButton shows its label as
253
- * text, so the "icon" action is a word-wide pill, and "Refresh sessions" beside
254
- * "Sessions" ran 47 px past a 360 px phone. `false` keeps the action beside the title
255
- * at every size, for an action the caller knows stays narrow (`labelVisible={false}`).
256
- */
257
- stackAction?: boolean;
258
- }
259
- export type CardTitleLevel = "div" | "h2" | "h3" | "h4";
260
- export interface CardTitleProps extends ComponentPropsWithoutRef<"div"> {
261
- /**
262
- * The element the title is: `"div"` (default) or a heading level. Five of keksdose's
263
- * settings cards nested their own `<h2>` / `<h3>` INSIDE CardTitle to put the card in
264
- * the page's outline — a heading in a div that looks like a heading. The heading
265
- * takes the title's look unchanged (the reset leaves `h2`–`h4` at inherited size and
266
- * weight), so only the outline changes.
267
- */
268
- as?: CardTitleLevel;
269
- /** The title's element — a `div` or the heading `as` names, hence `HTMLElement`. */
270
- ref?: Ref<HTMLElement>;
271
- }
272
- export type CardDescriptionProps = ComponentPropsWithRef<"div">;
273
- export type CardActionProps = ComponentPropsWithRef<"div">;
274
- export type CardContentProps = ComponentPropsWithRef<"div">;
275
- export type CardFooterProps = ComponentPropsWithRef<"div">;
276
-
277
- /** {@link CardHeaderProps.stackAction}: one column under `sm`, and the action back into
278
- * the flow (DOM order, so after the description when it is written after it), at the
279
- * start edge. The descendant selector outranks CardAction's own placement classes. */
280
- const CARD_STACK_ACTION =
281
- "max-sm:grid-cols-1 max-sm:[&>[data-slot=card-action]]:col-start-1 max-sm:[&>[data-slot=card-action]]:row-span-1 max-sm:[&>[data-slot=card-action]]:row-start-auto max-sm:[&>[data-slot=card-action]]:justify-self-start";
282
- /** The same at Large and Extra large only — `stackAction` unset (see its note). A
283
- * `large:` class over the scaled `max-sm`, so it costs no render and is right on the
284
- * first paint. */
285
- const CARD_STACK_ACTION_AT_LARGE =
286
- "large:max-sm:grid-cols-1 large:max-sm:[&>[data-slot=card-action]]:col-start-1 large:max-sm:[&>[data-slot=card-action]]:row-span-1 large:max-sm:[&>[data-slot=card-action]]:row-start-auto large:max-sm:[&>[data-slot=card-action]]:justify-self-start";
287
-
288
- export function CardHeader({ className, stackAction, ...props }: CardHeaderProps) {
289
- const padded = useContext(CardPaddedContext);
290
- const compact = useContext(CardDensityContext) === "compact";
291
- return (
292
- <div
293
- data-slot="card-header"
294
- className={cn(
295
- // Grid (not flex) so CardAction can occupy a top-right column; with no
296
- // action it collapses to one column and title/description stack.
297
- //
298
- // The two-column switch sets a VARIABLE, not `grid-template-columns`. As
299
- // `has-data-[slot=card-action]:grid-cols-[1fr_auto]` it was two classes of
300
- // specificity (the class plus the attribute inside `:has()`), and a caller's
301
- // `max-sm:grid-cols-1` — one class inside a media query — lost to it at every
302
- // width, so the action could never be stacked on a phone from outside. Now the
303
- // property itself is set by a plain one-class utility that any `grid-cols-*`
304
- // variant of the caller's outranks by coming later in the sheet; the `:has()`
305
- // rule only picks the value. The base `1fr` resets the variable so a header
306
- // never inherits an ancestor header's two columns.
307
- "grid auto-rows-min items-start gap-1.5 [--card-header-cols:1fr] has-data-[slot=card-action]:[--card-header-cols:1fr_auto] grid-cols-[var(--card-header-cols,1fr)]",
308
- padded ? "px-0 pt-0" : "px-6 pt-6",
309
- compact && "gap-0.5",
310
- stackAction === true && CARD_STACK_ACTION,
311
- stackAction === undefined && CARD_STACK_ACTION_AT_LARGE,
312
- className,
313
- )}
314
- {...props}
315
- />
316
- );
317
- }
318
-
319
- export function CardTitle({ className, as: Tag = "div", ref, ...props }: CardTitleProps) {
320
- const compact = useContext(CardDensityContext) === "compact";
321
- return (
322
- <Tag
323
- ref={ref as Ref<HTMLDivElement & HTMLHeadingElement>}
324
- data-slot="card-title"
325
- // Compact is `leading-snug`, not `leading-none`: there the title sits on a
326
- // 12px description `gap-0.5` below, and a line box exactly the cap height left
327
- // the hint hugging the title's descenders (every keksdose admin card added
328
- // `leading-normal` by hand). Comfortable keeps `leading-none` — its 14px
329
- // description is `gap-1.5` away and has always read right.
330
- className={cn(compact ? "text-sm font-medium leading-snug" : "font-semibold leading-none", className)}
331
- {...props}
332
- />
333
- );
334
- }
335
-
336
- export function CardDescription({ className, ...props }: CardDescriptionProps) {
337
- const compact = useContext(CardDensityContext) === "compact";
338
- return (
339
- <div
340
- data-slot="card-description"
341
- // `--text-muted`, the kit's secondary-line colour (StatTile's description, the
342
- // field captions). It was `--money-neutral`, a MONEY token that happened to be
343
- // a similar grey — and a palette that re-tunes the money colours moved every
344
- // card's description with them.
345
- className={cn(compact ? "text-xs" : "text-sm", "text-muted", className)}
346
- {...props}
347
- />
348
- );
349
- }
350
-
351
- export function CardAction({ className, ...props }: CardActionProps) {
352
- return (
353
- <div
354
- data-slot="card-action"
355
- className={cn("col-start-2 row-start-1 row-span-2 self-start justify-self-end", className)}
356
- {...props}
357
- />
358
- );
359
- }
360
-
361
- export function CardContent({ className, ...props }: CardContentProps) {
362
- const padded = useContext(CardPaddedContext);
363
- // `last:pb-6`, not a plain `pb-6`: CardHeader owns the top padding and CardFooter
364
- // owns the bottom one, so a card WITHOUT a footer had nothing closing it off and
365
- // its last field sat flush against the card edge (kastlan feedback: the language
366
- // input touching the card bottom on /profile). Scoping to `:last-child` fixes that
367
- // case and leaves a footered card's rhythm exactly as it was. Inside a padded Card
368
- // the card closes itself off, so there is nothing to add.
369
- return <div data-slot="card-content" className={cn(!padded && "px-6 last:pb-6", className)} {...props} />;
370
- }
371
-
372
- export function CardFooter({ className, ...props }: CardFooterProps) {
373
- const padded = useContext(CardPaddedContext);
374
- return (
375
- <div data-slot="card-footer" className={cn("flex items-center", !padded && "px-6 pb-6", className)} {...props} />
376
- );
377
- }
@@ -1,106 +0,0 @@
1
- // The live side of `chartEdge` (theme/chart-palette.ts): which colours a FILLED mark is
2
- // painted with and which grounds it sits on, read off <html> as the page resolves them —
3
- // so the 1px ink edge follows a theme toggle and a palette switch without the chart
4
- // knowing either store. And WHETHER a mark gets one: `useEdgesInForce`, the contrast
5
- // setting's switch. Shared by SeriesChart (bars, areas) and Treemap (tiles).
6
- import { useCallback, useSyncExternalStore } from "react";
7
- import { chartEdge } from "../theme/chart-palette";
8
- import { parseHex } from "../theme/color";
9
-
10
- /** The tokens a theme or palette change can move, read as ONE string so
11
- * `useSyncExternalStore` compares a primitive (a fresh array would never be equal). */
12
- const WATCHED = [
13
- "--bg-surface",
14
- "--bg-page",
15
- ...Array.from({ length: 9 }, (_, i) => `--chart-${i + 1}`),
16
- "--chart-ink",
17
- "--chart-muted",
18
- "--money-income",
19
- "--money-expense",
20
- "--money-net",
21
- "--money-neutral",
22
- "--brand",
23
- ];
24
-
25
- function readWatched(): string {
26
- const style = getComputedStyle(document.documentElement);
27
- return WATCHED.map((name) => style.getPropertyValue(name).trim()).join(",");
28
- }
29
-
30
- function subscribe(onChange: () => void): () => void {
31
- const observer = new MutationObserver(onChange);
32
- observer.observe(document.documentElement, {
33
- attributes: true,
34
- attributeFilter: ["class", "style", "data-theme", "data-contrast"],
35
- });
36
- return () => observer.disconnect();
37
- }
38
-
39
- /** Server render: nothing measured, so no edge — the client adds it on hydration. */
40
- const SERVER = "";
41
-
42
- const BARE_VAR = /^var\(\s*(--[A-Za-z0-9_-]+)\s*\)$/;
43
-
44
- /** A colour as the page resolves it: a hex as it is, a bare `var(--token)` read off
45
- * <html>, anything else (a `color-mix()`, a var with a fallback) null. */
46
- export function resolveChartColor(color: string, style: Pick<CSSStyleDeclaration, "getPropertyValue">): string | null {
47
- const trimmed = color.trim();
48
- if (parseHex(trimmed)) return trimmed;
49
- const m = BARE_VAR.exec(trimmed);
50
- if (!m) return null;
51
- const value = style.getPropertyValue(m[1]).trim();
52
- return parseHex(value) ? value : null;
53
- }
54
-
55
- /**
56
- * `(fill) => edge`: the ink stroke a filled mark in `fill` needs on this page, or
57
- * `undefined` — only for a colour under 3:1 against the card or the page (WCAG 1.4.11).
58
- * `fill` may be a hex or a bare `var(--chart-N)` / `var(--money-…)`; anything it cannot
59
- * measure gets no edge.
60
- */
61
- export function useChartEdge(): (fill: string | undefined) => string | undefined {
62
- const snapshot = useSyncExternalStore(subscribe, readWatched, () => SERVER);
63
- return useCallback(
64
- (fill: string | undefined) => {
65
- if (!fill || snapshot === SERVER || typeof document === "undefined") return undefined;
66
- const style = getComputedStyle(document.documentElement);
67
- const hex = resolveChartColor(fill, style);
68
- if (!hex) return undefined;
69
- const surfaces = ["--bg-surface", "--bg-page"].map((n) => style.getPropertyValue(n).trim());
70
- return chartEdge(hex, surfaces);
71
- },
72
- [snapshot],
73
- );
74
- }
75
-
76
- /**
77
- * How filled marks are parted — see `TreemapProps.edges` (0.51.6, keksdose dev #642).
78
- * `"auto"`: `"uniform"` at Standard contrast, `"contrast"` while More contrast is in force.
79
- */
80
- export type ChartEdges = "auto" | "uniform" | "contrast";
81
-
82
- // `<html data-contrast>`, followed live: what `"auto"` keys on. Read here rather than
83
- // through theme/contrast, whose store would come into the chart entry with it.
84
- function subscribeContrast(onChange: () => void): () => void {
85
- if (typeof MutationObserver === "undefined" || typeof document === "undefined") return () => {};
86
- const observer = new MutationObserver(onChange);
87
- observer.observe(document.documentElement, { attributes: true, attributeFilter: ["data-contrast"] });
88
- return () => observer.disconnect();
89
- }
90
- const readMoreContrast = () =>
91
- typeof document !== "undefined" && document.documentElement.getAttribute("data-contrast") === "more";
92
-
93
- /**
94
- * The edges a filled mark draws: `"auto"` resolved against the contrast in force, live.
95
- *
96
- * Under `"contrast"` a mark whose hue is under 3:1 against the ground gets the 1px ink
97
- * edge ({@link useChartEdge}); under `"uniform"` none does. The tiles took this rule in
98
- * 0.51.6 (#642: "The borders do not look nice when changing from tile to tile"), and
99
- * SeriesChart's bars and areas in 0.52 (refactor audit 2026-10-30, DSP-18, Marcel's
100
- * decision 3): at Standard contrast the edge fell on 5 of 8 hues in light, and in dark on
101
- * chart-5 and chart-7 alone — the same unevenness, in a bar chart.
102
- */
103
- export function useEdgesInForce(edges: ChartEdges = "auto"): "uniform" | "contrast" {
104
- const more = useSyncExternalStore(subscribeContrast, readMoreContrast, () => false);
105
- return edges === "auto" ? (more ? "contrast" : "uniform") : edges;
106
- }
@@ -1,35 +0,0 @@
1
- // A chart's accessible description — internal, not exported from the barrel.
2
- //
3
- // A chart is a `role="figure"` named by its `aria-label` and described by a sentence of
4
- // what it shows (0.52, refactor audit 2026-10-30, DSP-5). SeriesChart and Treemap each
5
- // built the `hidden` sentence and the `aria-describedby` that points at it, and already
6
- // differed: Treemap kept a caller's own ids, SeriesChart had none to keep. Both put the
7
- // sentence AFTER the figure, as its sibling, so the chart stopped being its parent's last
8
- // child and a stack's `space-y-*` or `divide-y` gave it a margin or a rule underneath (0.52
9
- // code review, deep, charts, findings 7 and 14). One copy now, rendered inside the root.
10
- import { useId, type ReactNode } from "react";
11
-
12
- export interface FigureDescription {
13
- /** The root's `aria-describedby`: the caller's own ids, then the description's. */
14
- describedBy: string | undefined;
15
- /** The description, to render INSIDE the root; `null` when there is none. */
16
- node: ReactNode;
17
- }
18
-
19
- /**
20
- * The description of a figure, and the `aria-describedby` that reads it — after the
21
- * caller's own ids (`describedBy`), which it keeps. The sentence is `hidden`: it is read
22
- * through the reference, never a second time in browse mode, and takes no room.
23
- */
24
- export function useFigureDescription(description: string | undefined, describedBy?: string): FigureDescription {
25
- const id = useId();
26
- if (!description) return { describedBy, node: null };
27
- return {
28
- describedBy: describedBy ? `${describedBy} ${id}` : id,
29
- node: (
30
- <span id={id} hidden>
31
- {description}
32
- </span>
33
- ),
34
- };
35
- }
@@ -1,30 +0,0 @@
1
- import type { CSSProperties } from "react";
2
-
3
- /**
4
- * A chart's height as the kit's charts take it (docs/text-size-harmonization.md §10.10):
5
- *
6
- * - a CSS length — `"20rem"`, `"min(20rem, 60dvh)"`, `"clamp(14rem, 40vh, 28rem)"` —
7
- * set inline, so a height can grow with the text size AND stop at the screen: scaled
8
- * px would make a 480 px chart 720 px at Extra large, more than a phone shows;
9
- * - a Tailwind class (`"h-72"`, `"h-64 md:h-80"`), as before;
10
- * - a number of px, set inline, as before — kept for the callers that hold their height
11
- * as a number, but it does not follow the text size.
12
- */
13
- export type ChartHeight = string | number;
14
-
15
- /** A number with an optional unit, or one of the CSS functions a length is written with.
16
- * A Tailwind class never starts with a digit or `min(`, so the two cannot be confused. */
17
- const CSS_LENGTH = /^(?:[-+]?(?:\d+\.?\d*|\.\d+)(?:%|[a-z]+)?|(?:min|max|clamp|calc|var)\(.*\))$/i;
18
-
19
- /** Whether a string `height` is a CSS length rather than a class. */
20
- export function isCssLength(value: string): boolean {
21
- return CSS_LENGTH.test(value.trim());
22
- }
23
-
24
- /** The class or the inline style a {@link ChartHeight} becomes — one of the two, or
25
- * neither for `undefined`. */
26
- export function chartHeightProps(height: ChartHeight | undefined): { className?: string; style?: CSSProperties } {
27
- if (height === undefined) return {};
28
- if (typeof height === "number") return { style: { height } };
29
- return isCssLength(height) ? { style: { height: height.trim() } } : { className: height };
30
- }