@eifi1/ui-kit 0.54.0 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (847) hide show
  1. package/README.md +90 -76
  2. package/dist/admin/plan-change.js +2 -2
  3. package/dist/admin/plan-change.js.map +1 -1
  4. package/dist/admin/user-roster.d.ts +6 -0
  5. package/dist/admin/user-roster.js +4 -0
  6. package/dist/admin/user-roster.js.map +1 -1
  7. package/dist/billing/billing-labels.d.ts +26 -0
  8. package/dist/billing/billing-labels.js +9 -0
  9. package/dist/billing/billing-labels.js.map +1 -1
  10. package/dist/billing/subscription-standing.d.ts +61 -0
  11. package/dist/billing/subscription-standing.js +51 -0
  12. package/dist/billing/subscription-standing.js.map +1 -0
  13. package/dist/billing/usage-meter.d.ts +52 -0
  14. package/dist/billing/usage-meter.js +52 -0
  15. package/dist/billing/usage-meter.js.map +1 -0
  16. package/dist/chart.d.ts +1 -0
  17. package/dist/chart.js +4 -0
  18. package/dist/chart.js.map +1 -1
  19. package/dist/components/alert-banner.js +2 -3
  20. package/dist/components/alert-banner.js.map +1 -1
  21. package/dist/components/amount-input.js +3 -15
  22. package/dist/components/amount-input.js.map +1 -1
  23. package/dist/components/autocomplete.js +2 -2
  24. package/dist/components/autocomplete.js.map +1 -1
  25. package/dist/components/bulk-action-bar.js +2 -1
  26. package/dist/components/bulk-action-bar.js.map +1 -1
  27. package/dist/components/button.d.ts +35 -1
  28. package/dist/components/button.js +6 -9
  29. package/dist/components/button.js.map +1 -1
  30. package/dist/components/calendar-heatmap.js +2 -2
  31. package/dist/components/calendar-heatmap.js.map +1 -1
  32. package/dist/components/camera-button.d.ts +89 -0
  33. package/dist/components/camera-button.js +122 -0
  34. package/dist/components/camera-button.js.map +1 -0
  35. package/dist/components/camera-capture.d.ts +66 -0
  36. package/dist/components/camera-capture.js +190 -0
  37. package/dist/components/camera-capture.js.map +1 -0
  38. package/dist/components/camera-labels.d.ts +20 -0
  39. package/dist/components/camera-labels.js +15 -0
  40. package/dist/components/camera-labels.js.map +1 -0
  41. package/dist/components/chart-edge.d.ts +9 -0
  42. package/dist/components/chart-edge.js +14 -3
  43. package/dist/components/chart-edge.js.map +1 -1
  44. package/dist/components/chart-zoom-core.js +34 -29
  45. package/dist/components/chart-zoom-core.js.map +1 -1
  46. package/dist/components/checkbox-group.js +1 -1
  47. package/dist/components/checkbox-group.js.map +1 -1
  48. package/dist/components/combobox-core.js +3 -2
  49. package/dist/components/combobox-core.js.map +1 -1
  50. package/dist/components/combobox.js +2 -2
  51. package/dist/components/combobox.js.map +1 -1
  52. package/dist/components/consent-again-notice-labels.d.ts +25 -0
  53. package/dist/components/consent-again-notice-labels.js +15 -0
  54. package/dist/components/consent-again-notice-labels.js.map +1 -0
  55. package/dist/components/consent-again-notice.d.ts +85 -0
  56. package/dist/components/consent-again-notice.js +94 -0
  57. package/dist/components/consent-again-notice.js.map +1 -0
  58. package/dist/components/country-select.js +2 -7
  59. package/dist/components/country-select.js.map +1 -1
  60. package/dist/components/currency-select.js +2 -2
  61. package/dist/components/currency-select.js.map +1 -1
  62. package/dist/components/danger-confirm.js +2 -2
  63. package/dist/components/danger-confirm.js.map +1 -1
  64. package/dist/components/data-table-column-settings.js +2 -2
  65. package/dist/components/data-table-column-settings.js.map +1 -1
  66. package/dist/components/data-table-fit.js.map +1 -1
  67. package/dist/components/data-table-virtual.js +13 -3
  68. package/dist/components/data-table-virtual.js.map +1 -1
  69. package/dist/components/date-field.js +2 -2
  70. package/dist/components/date-field.js.map +1 -1
  71. package/dist/components/date-picker.js +2 -2
  72. package/dist/components/date-picker.js.map +1 -1
  73. package/dist/components/date-range-picker.js +2 -6
  74. package/dist/components/date-range-picker.js.map +1 -1
  75. package/dist/components/dialog-frame.d.ts +3 -1
  76. package/dist/components/dialog-frame.js.map +1 -1
  77. package/dist/components/dropdown.js +7 -3
  78. package/dist/components/dropdown.js.map +1 -1
  79. package/dist/components/entity-combobox.js +2 -2
  80. package/dist/components/entity-combobox.js.map +1 -1
  81. package/dist/components/field-parts.d.ts +108 -6
  82. package/dist/components/field-parts.js +59 -6
  83. package/dist/components/field-parts.js.map +1 -1
  84. package/dist/components/field-suggestion-labels.d.ts +2 -0
  85. package/dist/components/field-suggestion-labels.js +10 -0
  86. package/dist/components/field-suggestion-labels.js.map +1 -0
  87. package/dist/components/field.js +1 -1
  88. package/dist/components/field.js.map +1 -1
  89. package/dist/components/file-button.d.ts +1 -1
  90. package/dist/components/file-button.js.map +1 -1
  91. package/dist/components/floating-panel.d.ts +7 -6
  92. package/dist/components/floating-panel.js +3 -17
  93. package/dist/components/floating-panel.js.map +1 -1
  94. package/dist/components/form-actions.d.ts +3 -2
  95. package/dist/components/form-actions.js.map +1 -1
  96. package/dist/components/hover-menu.js +3 -2
  97. package/dist/components/hover-menu.js.map +1 -1
  98. package/dist/components/icon-button.d.ts +23 -5
  99. package/dist/components/icon-button.js +7 -8
  100. package/dist/components/icon-button.js.map +1 -1
  101. package/dist/components/inline-confirm.js +2 -1
  102. package/dist/components/inline-confirm.js.map +1 -1
  103. package/dist/components/inline-entity-combobox.js +2 -2
  104. package/dist/components/inline-entity-combobox.js.map +1 -1
  105. package/dist/components/input.js +2 -2
  106. package/dist/components/input.js.map +1 -1
  107. package/dist/components/jump-calendar.js +3 -3
  108. package/dist/components/jump-calendar.js.map +1 -1
  109. package/dist/components/legal.d.ts +13 -1
  110. package/dist/components/legal.js +12 -0
  111. package/dist/components/legal.js.map +1 -1
  112. package/dist/components/legended-series-chart.d.ts +83 -0
  113. package/dist/components/legended-series-chart.js +77 -0
  114. package/dist/components/legended-series-chart.js.map +1 -0
  115. package/dist/components/lightbox.js +2 -1
  116. package/dist/components/lightbox.js.map +1 -1
  117. package/dist/components/mini-calendar.js +13 -5
  118. package/dist/components/mini-calendar.js.map +1 -1
  119. package/dist/components/modal.d.ts +23 -2
  120. package/dist/components/modal.js +24 -6
  121. package/dist/components/modal.js.map +1 -1
  122. package/dist/components/month-picker.d.ts +1 -1
  123. package/dist/components/month-picker.js +6 -6
  124. package/dist/components/month-picker.js.map +1 -1
  125. package/dist/components/multi-entity-combobox.js +2 -2
  126. package/dist/components/multi-entity-combobox.js.map +1 -1
  127. package/dist/components/multi-select.js +2 -6
  128. package/dist/components/multi-select.js.map +1 -1
  129. package/dist/components/number-input.js +2 -2
  130. package/dist/components/number-input.js.map +1 -1
  131. package/dist/components/page-header-layout.d.ts +18 -0
  132. package/dist/components/page-header-layout.js +23 -0
  133. package/dist/components/page-header-layout.js.map +1 -0
  134. package/dist/components/page-header-skeleton.d.ts +41 -0
  135. package/dist/components/page-header-skeleton.js +52 -0
  136. package/dist/components/page-header-skeleton.js.map +1 -0
  137. package/dist/components/page-header.js +4 -17
  138. package/dist/components/page-header.js.map +1 -1
  139. package/dist/components/popover.js +7 -2
  140. package/dist/components/popover.js.map +1 -1
  141. package/dist/components/release-notes-labels.d.ts +16 -0
  142. package/dist/components/release-notes-labels.js +18 -0
  143. package/dist/components/release-notes-labels.js.map +1 -0
  144. package/dist/components/release-notes.d.ts +65 -0
  145. package/dist/components/release-notes.js +65 -0
  146. package/dist/components/release-notes.js.map +1 -0
  147. package/dist/components/select.js +2 -2
  148. package/dist/components/select.js.map +1 -1
  149. package/dist/components/series-chart-labels.d.ts +9 -0
  150. package/dist/components/series-chart-labels.js +3 -1
  151. package/dist/components/series-chart-labels.js.map +1 -1
  152. package/dist/components/series-chart.d.ts +5 -0
  153. package/dist/components/series-chart.js +89 -36
  154. package/dist/components/series-chart.js.map +1 -1
  155. package/dist/components/toggle-group.js +3 -2
  156. package/dist/components/toggle-group.js.map +1 -1
  157. package/dist/components/treemap-layout.js.map +1 -1
  158. package/dist/components/treemap.d.ts +17 -15
  159. package/dist/components/treemap.js +167 -85
  160. package/dist/components/treemap.js.map +1 -1
  161. package/dist/eslint/index.js +1 -1
  162. package/dist/eslint/role-utilities.d.ts +2 -2
  163. package/dist/eslint/role-utilities.js.map +1 -1
  164. package/dist/feedback/feedback-inbox-page.d.ts +260 -0
  165. package/dist/feedback/feedback-inbox-page.js +207 -0
  166. package/dist/feedback/feedback-inbox-page.js.map +1 -0
  167. package/dist/feedback/feedback-vocabulary.js +2 -2
  168. package/dist/feedback/feedback-vocabulary.js.map +1 -1
  169. package/dist/feedback.d.ts +1 -0
  170. package/dist/feedback.js +6 -0
  171. package/dist/feedback.js.map +1 -1
  172. package/dist/hooks/use-debounce.d.ts +32 -5
  173. package/dist/hooks/use-debounce.js +6 -5
  174. package/dist/hooks/use-debounce.js.map +1 -1
  175. package/dist/hooks/use-file-picker.d.ts +3 -1
  176. package/dist/hooks/use-file-picker.js.map +1 -1
  177. package/dist/hooks/use-focus-trap.d.ts +19 -3
  178. package/dist/hooks/use-focus-trap.js +15 -5
  179. package/dist/hooks/use-focus-trap.js.map +1 -1
  180. package/dist/hooks/use-has-camera.d.ts +36 -0
  181. package/dist/hooks/use-has-camera.js +53 -0
  182. package/dist/hooks/use-has-camera.js.map +1 -0
  183. package/dist/hooks/use-hotkey.js +1 -10
  184. package/dist/hooks/use-hotkey.js.map +1 -1
  185. package/dist/hooks/use-overlay-history.d.ts +6 -1
  186. package/dist/hooks/use-overlay-history.js +10 -2
  187. package/dist/hooks/use-overlay-history.js.map +1 -1
  188. package/dist/i18n/defaults.js +11 -1
  189. package/dist/i18n/defaults.js.map +1 -1
  190. package/dist/i18n/german.js +75 -3
  191. package/dist/i18n/german.js.map +1 -1
  192. package/dist/i18n/kit-labels.d.ts +20 -0
  193. package/dist/i18n/kit-labels.js.map +1 -1
  194. package/dist/i18n/locales/en.js +92 -4
  195. package/dist/i18n/locales/en.js.map +3 -3
  196. package/dist/i18n/locales/es.js +71 -3
  197. package/dist/i18n/locales/es.js.map +1 -1
  198. package/dist/i18n/locales/fr.js +72 -2
  199. package/dist/i18n/locales/fr.js.map +1 -1
  200. package/dist/i18n/locales/hu.js +74 -3
  201. package/dist/i18n/locales/hu.js.map +1 -1
  202. package/dist/i18n/locales/it.js +74 -3
  203. package/dist/i18n/locales/it.js.map +1 -1
  204. package/dist/i18n/locales/zh.js +71 -3
  205. package/dist/i18n/locales/zh.js.map +1 -1
  206. package/dist/i18n/review.js +22 -1
  207. package/dist/i18n/review.js.map +1 -1
  208. package/dist/index.d.ts +24 -5
  209. package/dist/index.js +35 -1
  210. package/dist/index.js.map +1 -1
  211. package/dist/landing/landing-labels.d.ts +8 -0
  212. package/dist/landing/landing-labels.js +2 -1
  213. package/dist/landing/landing-labels.js.map +1 -1
  214. package/dist/lib/changelog.d.ts +130 -0
  215. package/dist/lib/changelog.js +137 -0
  216. package/dist/lib/changelog.js.map +1 -0
  217. package/dist/lib/clipboard-minus.js +2 -2
  218. package/dist/lib/clipboard-minus.js.map +1 -1
  219. package/dist/lib/dates.d.ts +29 -3
  220. package/dist/lib/dates.js +41 -12
  221. package/dist/lib/dates.js.map +1 -1
  222. package/dist/lib/editable-content.d.ts +33 -0
  223. package/dist/lib/editable-content.js +15 -0
  224. package/dist/lib/editable-content.js.map +1 -0
  225. package/dist/lib/focus-left.d.ts +47 -1
  226. package/dist/lib/focus-left.js +11 -2
  227. package/dist/lib/focus-left.js.map +1 -1
  228. package/dist/lib/server-wake.d.ts +49 -9
  229. package/dist/lib/server-wake.js +25 -14
  230. package/dist/lib/server-wake.js.map +1 -1
  231. package/dist/lib/session-refresh.d.ts +53 -0
  232. package/dist/lib/session-refresh.js +27 -1
  233. package/dist/lib/session-refresh.js.map +1 -1
  234. package/dist/rhf/fields.js +3 -3
  235. package/dist/rhf/fields.js.map +1 -1
  236. package/dist/shell/app-shell.d.ts +25 -1
  237. package/dist/shell/app-shell.js +3 -1
  238. package/dist/shell/app-shell.js.map +1 -1
  239. package/dist/shell/dev-menu.d.ts +3 -0
  240. package/dist/shell/dev-menu.js +4 -2
  241. package/dist/shell/dev-menu.js.map +1 -1
  242. package/dist/shell/held-changes-banner-labels.d.ts +23 -0
  243. package/dist/shell/held-changes-banner-labels.js +14 -0
  244. package/dist/shell/held-changes-banner-labels.js.map +1 -0
  245. package/dist/shell/held-changes-banner.d.ts +75 -0
  246. package/dist/shell/held-changes-banner.js +106 -0
  247. package/dist/shell/held-changes-banner.js.map +1 -0
  248. package/dist/shell/sync-status-indicator.d.ts +27 -12
  249. package/dist/shell/sync-status-indicator.js +13 -4
  250. package/dist/shell/sync-status-indicator.js.map +1 -1
  251. package/dist/shell/top-bar-parts-labels.d.ts +5 -0
  252. package/dist/shell/top-bar-parts-labels.js +3 -1
  253. package/dist/shell/top-bar-parts-labels.js.map +1 -1
  254. package/dist/shell.d.ts +2 -0
  255. package/dist/shell.js +3 -0
  256. package/dist/shell.js.map +1 -1
  257. package/dist/sync/engine.d.ts +11 -2
  258. package/dist/sync/engine.js +13 -5
  259. package/dist/sync/engine.js.map +1 -1
  260. package/dist/sync/hooks.d.ts +3 -2
  261. package/dist/sync/hooks.js +4 -2
  262. package/dist/sync/hooks.js.map +1 -1
  263. package/dist/testing/css-variables.generated.d.ts +2 -2
  264. package/dist/testing/css-variables.generated.js +1 -1
  265. package/dist/testing/css-variables.generated.js.map +1 -1
  266. package/dist/theme/chart-palette.d.ts +18 -0
  267. package/dist/theme/chart-palette.js +17 -1
  268. package/dist/theme/chart-palette.js.map +1 -1
  269. package/dist/theme/contrast-tokens.d.ts +3 -3
  270. package/dist/theme/contrast-tokens.js.map +1 -1
  271. package/dist/theme/contrast.d.ts +4 -4
  272. package/dist/theme/contrast.js.map +1 -1
  273. package/dist/tour/tour-overlay.js +2 -1
  274. package/dist/tour/tour-overlay.js.map +1 -1
  275. package/package.json +9 -12
  276. package/tokens.css +19 -54
  277. package/src/account/account-parts.ts +0 -47
  278. package/src/account/account-settings-labels.ts +0 -240
  279. package/src/account/account-settings.tsx +0 -698
  280. package/src/account/data-export-setting-labels.ts +0 -20
  281. package/src/account/data-export-setting.tsx +0 -200
  282. package/src/account/delete-account-setting-labels.ts +0 -33
  283. package/src/account/delete-account-setting.tsx +0 -342
  284. package/src/account/email-change-setting-labels.ts +0 -31
  285. package/src/account/email-change-setting.tsx +0 -443
  286. package/src/account/passkeys-setting.tsx +0 -445
  287. package/src/account/sessions-setting-labels.ts +0 -24
  288. package/src/account/sessions-setting.tsx +0 -283
  289. package/src/admin/admin-action-confirm-labels.ts +0 -19
  290. package/src/admin/admin-action-confirm.tsx +0 -509
  291. package/src/admin/admin-action-log-labels.ts +0 -83
  292. package/src/admin/admin-action-log.tsx +0 -464
  293. package/src/admin/admin-area-labels.ts +0 -114
  294. package/src/admin/admin-forbidden.tsx +0 -75
  295. package/src/admin/admin-overview.tsx +0 -258
  296. package/src/admin/admin-parts.ts +0 -68
  297. package/src/admin/admin-sections.tsx +0 -208
  298. package/src/admin/admin-tool-links.tsx +0 -90
  299. package/src/admin/invitations-panel-labels.ts +0 -31
  300. package/src/admin/invitations-panel.tsx +0 -516
  301. package/src/admin/mail-test-card-labels.ts +0 -19
  302. package/src/admin/mail-test-card.tsx +0 -189
  303. package/src/admin/plan-change-labels.ts +0 -5
  304. package/src/admin/plan-change.tsx +0 -474
  305. package/src/admin/reviewer-scope-editor-labels.ts +0 -16
  306. package/src/admin/reviewer-scope-editor.tsx +0 -224
  307. package/src/admin/role-select-labels.ts +0 -16
  308. package/src/admin/role-select.tsx +0 -282
  309. package/src/admin/transfer-ownership-dialog-labels.ts +0 -20
  310. package/src/admin/transfer-ownership-dialog.tsx +0 -162
  311. package/src/admin/user-roster-labels.ts +0 -17
  312. package/src/admin/user-roster.tsx +0 -559
  313. package/src/auth/accept-invitation-labels.ts +0 -21
  314. package/src/auth/accept-invitation.tsx +0 -210
  315. package/src/auth/auth-errors-labels.ts +0 -23
  316. package/src/auth/auth-errors.ts +0 -439
  317. package/src/auth/complete-name-dialog-labels.ts +0 -16
  318. package/src/auth/complete-name-dialog.tsx +0 -253
  319. package/src/auth/email-tag.ts +0 -75
  320. package/src/auth/forgot-password-form-labels.ts +0 -20
  321. package/src/auth/forgot-password-form.tsx +0 -221
  322. package/src/auth/form-rules.ts +0 -40
  323. package/src/auth/new-password-fields.tsx +0 -85
  324. package/src/auth/not-found-page-labels.ts +0 -12
  325. package/src/auth/not-found-page.tsx +0 -95
  326. package/src/auth/register-form-labels.ts +0 -31
  327. package/src/auth/register-form.tsx +0 -456
  328. package/src/auth/reset-password-form-labels.ts +0 -27
  329. package/src/auth/reset-password-form.tsx +0 -341
  330. package/src/auth/sign-in-form-labels.ts +0 -44
  331. package/src/auth/sign-in-form.tsx +0 -858
  332. package/src/auth/status-parts.tsx +0 -132
  333. package/src/auth/verify-email-labels.ts +0 -26
  334. package/src/auth/verify-email.tsx +0 -445
  335. package/src/billing/billing-banner.tsx +0 -258
  336. package/src/billing/billing-labels.ts +0 -381
  337. package/src/billing/billing-lock.ts +0 -108
  338. package/src/billing/billing-overview.ts +0 -157
  339. package/src/billing/billing-standing.ts +0 -80
  340. package/src/billing/cancel-request.ts +0 -97
  341. package/src/billing/cancel-subscription.tsx +0 -98
  342. package/src/billing/checkout-processing.ts +0 -394
  343. package/src/billing/checkout-return.ts +0 -90
  344. package/src/billing/pay-page.ts +0 -330
  345. package/src/billing/plan-card.tsx +0 -562
  346. package/src/billing/plan-change-labels.ts +0 -66
  347. package/src/billing/plan-limit-notice.tsx +0 -148
  348. package/src/billing/plan-limit-toast.tsx +0 -90
  349. package/src/billing/plan-limit.ts +0 -52
  350. package/src/billing/plan-price.ts +0 -98
  351. package/src/billing/plan-switch.tsx +0 -216
  352. package/src/billing/provider-page.ts +0 -84
  353. package/src/billing/subscription-actions.tsx +0 -247
  354. package/src/billing/subscription-status-chip.tsx +0 -95
  355. package/src/chart.ts +0 -103
  356. package/src/components/account-chips-labels.ts +0 -16
  357. package/src/components/account-chips.tsx +0 -474
  358. package/src/components/alert-banner.tsx +0 -670
  359. package/src/components/amount-input.tsx +0 -816
  360. package/src/components/appearance-labels.ts +0 -63
  361. package/src/components/authed-image-labels.ts +0 -11
  362. package/src/components/authed-image.tsx +0 -209
  363. package/src/components/autocomplete.tsx +0 -645
  364. package/src/components/breadcrumbs-labels.ts +0 -10
  365. package/src/components/breadcrumbs.tsx +0 -205
  366. package/src/components/bulk-action-bar-labels.ts +0 -11
  367. package/src/components/bulk-action-bar.tsx +0 -443
  368. package/src/components/button-group.tsx +0 -223
  369. package/src/components/button-look.ts +0 -256
  370. package/src/components/button.tsx +0 -339
  371. package/src/components/calculator.tsx +0 -341
  372. package/src/components/calendar-heatmap-labels.ts +0 -15
  373. package/src/components/calendar-heatmap.tsx +0 -600
  374. package/src/components/card.tsx +0 -377
  375. package/src/components/chart-edge.ts +0 -106
  376. package/src/components/chart-figure.tsx +0 -35
  377. package/src/components/chart-height.ts +0 -30
  378. package/src/components/chart-zoom-core.tsx +0 -627
  379. package/src/components/chart-zoom.tsx +0 -22
  380. package/src/components/chart.tsx +0 -554
  381. package/src/components/checkbox-group.tsx +0 -247
  382. package/src/components/checkbox.tsx +0 -346
  383. package/src/components/chip-input.tsx +0 -370
  384. package/src/components/chip-labels.ts +0 -13
  385. package/src/components/chip.tsx +0 -843
  386. package/src/components/choice-card.tsx +0 -544
  387. package/src/components/column-mapper-labels.ts +0 -38
  388. package/src/components/column-mapper.tsx +0 -655
  389. package/src/components/combobox-core.tsx +0 -1321
  390. package/src/components/combobox-suggestions.tsx +0 -131
  391. package/src/components/combobox.tsx +0 -716
  392. package/src/components/confirm-context.ts +0 -7
  393. package/src/components/confirm-dialog-labels.ts +0 -13
  394. package/src/components/confirm-dialog.tsx +0 -341
  395. package/src/components/copy-button-labels.ts +0 -13
  396. package/src/components/copy-button.tsx +0 -192
  397. package/src/components/country-select-labels.ts +0 -11
  398. package/src/components/country-select.tsx +0 -539
  399. package/src/components/currency-option-list.tsx +0 -188
  400. package/src/components/currency-select.tsx +0 -343
  401. package/src/components/danger-confirm-labels.ts +0 -20
  402. package/src/components/danger-confirm.tsx +0 -987
  403. package/src/components/data-table-cells.tsx +0 -118
  404. package/src/components/data-table-column-settings.tsx +0 -198
  405. package/src/components/data-table-filter-popover.tsx +0 -289
  406. package/src/components/data-table-filters.ts +0 -315
  407. package/src/components/data-table-fit.ts +0 -301
  408. package/src/components/data-table-groups.tsx +0 -288
  409. package/src/components/data-table-head.tsx +0 -280
  410. package/src/components/data-table-labels.ts +0 -198
  411. package/src/components/data-table-leading-row.tsx +0 -58
  412. package/src/components/data-table-mobile.tsx +0 -1117
  413. package/src/components/data-table-pagination.tsx +0 -202
  414. package/src/components/data-table-resize.ts +0 -188
  415. package/src/components/data-table-row-actions.tsx +0 -302
  416. package/src/components/data-table-row.tsx +0 -496
  417. package/src/components/data-table-selection.ts +0 -71
  418. package/src/components/data-table-shared.tsx +0 -287
  419. package/src/components/data-table-sort.ts +0 -163
  420. package/src/components/data-table-virtual.ts +0 -576
  421. package/src/components/data-table.tsx +0 -2598
  422. package/src/components/date-field.tsx +0 -684
  423. package/src/components/date-format-setting.tsx +0 -64
  424. package/src/components/date-picker.tsx +0 -404
  425. package/src/components/date-range-picker.tsx +0 -518
  426. package/src/components/description-list-labels.ts +0 -9
  427. package/src/components/description-list.tsx +0 -386
  428. package/src/components/dialog-frame-labels.ts +0 -7
  429. package/src/components/dialog-frame.tsx +0 -284
  430. package/src/components/disclosure.tsx +0 -476
  431. package/src/components/dropdown.tsx +0 -461
  432. package/src/components/empty-state.tsx +0 -136
  433. package/src/components/entity-combobox.tsx +0 -422
  434. package/src/components/error-boundary-labels.ts +0 -20
  435. package/src/components/error-boundary.tsx +0 -675
  436. package/src/components/facing-pair.ts +0 -93
  437. package/src/components/field-base-labels.ts +0 -20
  438. package/src/components/field-base.tsx +0 -656
  439. package/src/components/field-parts.tsx +0 -825
  440. package/src/components/field-strip.tsx +0 -129
  441. package/src/components/field.tsx +0 -206
  442. package/src/components/file-button.tsx +0 -295
  443. package/src/components/file-dropzone.tsx +0 -559
  444. package/src/components/floating-panel-labels.ts +0 -10
  445. package/src/components/floating-panel.tsx +0 -828
  446. package/src/components/focus-ring.ts +0 -16
  447. package/src/components/form-actions-labels.ts +0 -11
  448. package/src/components/form-actions.tsx +0 -578
  449. package/src/components/full-bleed-dialog.tsx +0 -294
  450. package/src/components/grouped-picker.tsx +0 -184
  451. package/src/components/help-popover.tsx +0 -117
  452. package/src/components/hover-menu.tsx +0 -343
  453. package/src/components/iban-input-labels.ts +0 -14
  454. package/src/components/iban-input.tsx +0 -236
  455. package/src/components/icon-button.tsx +0 -959
  456. package/src/components/icon-picker-labels.ts +0 -13
  457. package/src/components/icon-picker.tsx +0 -232
  458. package/src/components/image-grid-labels.ts +0 -11
  459. package/src/components/image-grid.tsx +0 -202
  460. package/src/components/inline-confirm.tsx +0 -116
  461. package/src/components/inline-edit-field-labels.ts +0 -11
  462. package/src/components/inline-edit-field.tsx +0 -552
  463. package/src/components/inline-entity-combobox.tsx +0 -849
  464. package/src/components/input.tsx +0 -394
  465. package/src/components/jump-calendar.tsx +0 -265
  466. package/src/components/language-select.tsx +0 -93
  467. package/src/components/legal-labels.ts +0 -105
  468. package/src/components/legal-page.tsx +0 -711
  469. package/src/components/legal.tsx +0 -668
  470. package/src/components/lightbox-labels.ts +0 -18
  471. package/src/components/lightbox.tsx +0 -399
  472. package/src/components/line-items-labels.ts +0 -14
  473. package/src/components/line-items.tsx +0 -602
  474. package/src/components/list-labels.ts +0 -12
  475. package/src/components/list.tsx +0 -870
  476. package/src/components/loading-state.tsx +0 -78
  477. package/src/components/measured-grid-labels.ts +0 -25
  478. package/src/components/measured-grid.tsx +0 -837
  479. package/src/components/menu-item.tsx +0 -241
  480. package/src/components/mini-calendar-labels.ts +0 -17
  481. package/src/components/mini-calendar.tsx +0 -792
  482. package/src/components/modal.tsx +0 -534
  483. package/src/components/money-draft.ts +0 -83
  484. package/src/components/money-field.tsx +0 -76
  485. package/src/components/month-grid.tsx +0 -229
  486. package/src/components/month-picker-labels.ts +0 -22
  487. package/src/components/month-picker.tsx +0 -1087
  488. package/src/components/multi-entity-combobox.tsx +0 -369
  489. package/src/components/multi-select.tsx +0 -376
  490. package/src/components/nav-pills.tsx +0 -198
  491. package/src/components/number-field.tsx +0 -327
  492. package/src/components/number-input.tsx +0 -559
  493. package/src/components/numeric-field.ts +0 -169
  494. package/src/components/numpad-sheet.tsx +0 -285
  495. package/src/components/one-time-code-input.tsx +0 -270
  496. package/src/components/page-contents-labels.ts +0 -9
  497. package/src/components/page-contents.tsx +0 -282
  498. package/src/components/page-header-context.ts +0 -8
  499. package/src/components/page-header.tsx +0 -298
  500. package/src/components/password-strength-labels.ts +0 -22
  501. package/src/components/password-strength.tsx +0 -241
  502. package/src/components/phone-input-labels.ts +0 -10
  503. package/src/components/phone-input.tsx +0 -282
  504. package/src/components/picker-sheet.tsx +0 -330
  505. package/src/components/pie-chart-labels.ts +0 -40
  506. package/src/components/pie-chart.tsx +0 -480
  507. package/src/components/popover-labels.ts +0 -14
  508. package/src/components/popover.tsx +0 -268
  509. package/src/components/progress-bar-labels.ts +0 -10
  510. package/src/components/progress-bar.tsx +0 -479
  511. package/src/components/qr-code.tsx +0 -76
  512. package/src/components/reauth-dialog-labels.ts +0 -13
  513. package/src/components/reauth-dialog.tsx +0 -265
  514. package/src/components/row-actions-labels.ts +0 -12
  515. package/src/components/row-actions.tsx +0 -795
  516. package/src/components/scroll-area.tsx +0 -123
  517. package/src/components/search-field.tsx +0 -192
  518. package/src/components/select.tsx +0 -294
  519. package/src/components/separator.tsx +0 -33
  520. package/src/components/series-chart-axes.ts +0 -342
  521. package/src/components/series-chart-budget.ts +0 -150
  522. package/src/components/series-chart-labels.ts +0 -33
  523. package/src/components/series-chart-thin.ts +0 -180
  524. package/src/components/series-chart-ticks.ts +0 -194
  525. package/src/components/series-chart.tsx +0 -1906
  526. package/src/components/server-wake-labels.ts +0 -11
  527. package/src/components/server-wake.tsx +0 -129
  528. package/src/components/settings-fields.tsx +0 -237
  529. package/src/components/share-card-labels.ts +0 -30
  530. package/src/components/share-card.tsx +0 -675
  531. package/src/components/signature-pad-labels.ts +0 -24
  532. package/src/components/signature-pad.tsx +0 -747
  533. package/src/components/signed-amount-labels.ts +0 -10
  534. package/src/components/signed-amount.tsx +0 -336
  535. package/src/components/skeleton.tsx +0 -80
  536. package/src/components/slider.tsx +0 -338
  537. package/src/components/sparkline-labels.ts +0 -14
  538. package/src/components/sparkline.tsx +0 -322
  539. package/src/components/spinner.tsx +0 -81
  540. package/src/components/stat-tile-labels.ts +0 -15
  541. package/src/components/stat-tile.tsx +0 -754
  542. package/src/components/status-dot.tsx +0 -170
  543. package/src/components/swatch-picker-labels.ts +0 -10
  544. package/src/components/swatch-picker.tsx +0 -283
  545. package/src/components/swipeable-row.tsx +0 -386
  546. package/src/components/switch.tsx +0 -273
  547. package/src/components/table-skeleton.tsx +0 -136
  548. package/src/components/table.tsx +0 -647
  549. package/src/components/tabs-labels.ts +0 -13
  550. package/src/components/tabs.tsx +0 -693
  551. package/src/components/text-link.tsx +0 -359
  552. package/src/components/text.tsx +0 -150
  553. package/src/components/textarea.tsx +0 -330
  554. package/src/components/tile-radio.tsx +0 -332
  555. package/src/components/time-input.tsx +0 -121
  556. package/src/components/toast-labels.ts +0 -12
  557. package/src/components/toast.tsx +0 -519
  558. package/src/components/toggle-group.tsx +0 -752
  559. package/src/components/toggle-legend.tsx +0 -394
  560. package/src/components/tooltip.tsx +0 -1149
  561. package/src/components/translation-review-editor.tsx +0 -290
  562. package/src/components/translation-review-labels.ts +0 -181
  563. package/src/components/translation-review-parts.tsx +0 -272
  564. package/src/components/translation-review.tsx +0 -1240
  565. package/src/components/tree-view.tsx +0 -589
  566. package/src/components/treemap-labels.ts +0 -47
  567. package/src/components/treemap-layout.ts +0 -210
  568. package/src/components/treemap.tsx +0 -1184
  569. package/src/components/trigger-aria.ts +0 -44
  570. package/src/components/use-anchor-dir.ts +0 -20
  571. package/src/components/use-mobile-reveal.ts +0 -62
  572. package/src/components/use-table-state.ts +0 -753
  573. package/src/components/user-avatar.tsx +0 -116
  574. package/src/components/wizard-stepper.tsx +0 -42
  575. package/src/components/write-lock-labels.ts +0 -10
  576. package/src/components/write-lock.tsx +0 -253
  577. package/src/currencies.ts +0 -90
  578. package/src/data-table.ts +0 -42
  579. package/src/demo/demo-banner.tsx +0 -153
  580. package/src/demo/demo-countdown.ts +0 -136
  581. package/src/demo/demo-ended.tsx +0 -90
  582. package/src/demo/demo-labels.ts +0 -78
  583. package/src/demo/demo-session.ts +0 -32
  584. package/src/demo/demo-start.tsx +0 -156
  585. package/src/eslint/index.ts +0 -161
  586. package/src/eslint/role-utilities.generated.ts +0 -146
  587. package/src/eslint/role-utilities.ts +0 -233
  588. package/src/feedback/feedback-attachment-download.tsx +0 -77
  589. package/src/feedback/feedback-attachment-labels.ts +0 -37
  590. package/src/feedback/feedback-attachment.tsx +0 -1239
  591. package/src/feedback/feedback-capture.ts +0 -287
  592. package/src/feedback/feedback-comment-thread.tsx +0 -353
  593. package/src/feedback/feedback-context-labels.ts +0 -11
  594. package/src/feedback/feedback-context.tsx +0 -245
  595. package/src/feedback/feedback-crash.ts +0 -547
  596. package/src/feedback/feedback-diagnostics.tsx +0 -41
  597. package/src/feedback/feedback-dialog-labels.ts +0 -29
  598. package/src/feedback/feedback-dialog.tsx +0 -452
  599. package/src/feedback/feedback-entry-file.tsx +0 -150
  600. package/src/feedback/feedback-inbox.tsx +0 -552
  601. package/src/feedback/feedback-labels.ts +0 -144
  602. package/src/feedback/feedback-menu-labels.ts +0 -12
  603. package/src/feedback/feedback-menu.tsx +0 -177
  604. package/src/feedback/feedback-mutation.ts +0 -20
  605. package/src/feedback/feedback-page-link.ts +0 -90
  606. package/src/feedback/feedback-public-labels.ts +0 -81
  607. package/src/feedback/feedback-public-list.tsx +0 -524
  608. package/src/feedback/feedback-public-switch.tsx +0 -102
  609. package/src/feedback/feedback-public-types.ts +0 -101
  610. package/src/feedback/feedback-record.ts +0 -428
  611. package/src/feedback/feedback-replies-context.ts +0 -9
  612. package/src/feedback/feedback-replies.tsx +0 -343
  613. package/src/feedback/feedback-rework-entry-chip.tsx +0 -18
  614. package/src/feedback/feedback-row-detail-labels.ts +0 -31
  615. package/src/feedback/feedback-row-detail.tsx +0 -871
  616. package/src/feedback/feedback-status-undo.ts +0 -109
  617. package/src/feedback/feedback-submit-dialog.tsx +0 -131
  618. package/src/feedback/feedback-submit.tsx +0 -270
  619. package/src/feedback/feedback-swipe.tsx +0 -192
  620. package/src/feedback/feedback-table-labels.ts +0 -27
  621. package/src/feedback/feedback-table.tsx +0 -912
  622. package/src/feedback/feedback-thread-labels.ts +0 -22
  623. package/src/feedback/feedback-thread-parts-labels.ts +0 -41
  624. package/src/feedback/feedback-thread.tsx +0 -905
  625. package/src/feedback/feedback-vocabulary.ts +0 -263
  626. package/src/feedback/feedback-vote-button.tsx +0 -124
  627. package/src/feedback.ts +0 -116
  628. package/src/hooks/use-anchored-panel.ts +0 -396
  629. package/src/hooks/use-anchored-rect.ts +0 -77
  630. package/src/hooks/use-announce.ts +0 -85
  631. package/src/hooks/use-authed-src.ts +0 -167
  632. package/src/hooks/use-body-scroll-lock.ts +0 -119
  633. package/src/hooks/use-breakpoint.ts +0 -133
  634. package/src/hooks/use-close-transition.ts +0 -107
  635. package/src/hooks/use-copy-to-clipboard.ts +0 -122
  636. package/src/hooks/use-debounce.ts +0 -114
  637. package/src/hooks/use-dismiss.ts +0 -371
  638. package/src/hooks/use-document-title.ts +0 -33
  639. package/src/hooks/use-file-drop.ts +0 -121
  640. package/src/hooks/use-file-picker-labels.ts +0 -28
  641. package/src/hooks/use-file-picker.tsx +0 -359
  642. package/src/hooks/use-focus-trap.ts +0 -199
  643. package/src/hooks/use-hotkey.ts +0 -212
  644. package/src/hooks/use-large-text.ts +0 -41
  645. package/src/hooks/use-long-press.ts +0 -140
  646. package/src/hooks/use-media-query.ts +0 -39
  647. package/src/hooks/use-mounted.ts +0 -39
  648. package/src/hooks/use-noindex.ts +0 -37
  649. package/src/hooks/use-overlay-history.ts +0 -714
  650. package/src/hooks/use-row-swipe.ts +0 -207
  651. package/src/hooks/use-search-param-state.ts +0 -434
  652. package/src/hooks/use-windowed-rows.ts +0 -225
  653. package/src/i18n/defaults.ts +0 -267
  654. package/src/i18n/german.ts +0 -2059
  655. package/src/i18n/kit-labels.tsx +0 -1003
  656. package/src/i18n/languages.ts +0 -349
  657. package/src/i18n/locales/de-CH.ts +0 -24
  658. package/src/i18n/locales/en.ts +0 -267
  659. package/src/i18n/locales/es.ts +0 -1999
  660. package/src/i18n/locales/fr.ts +0 -2037
  661. package/src/i18n/locales/hu.ts +0 -2004
  662. package/src/i18n/locales/it.ts +0 -2014
  663. package/src/i18n/locales/zh.ts +0 -1912
  664. package/src/i18n/plurals.ts +0 -86
  665. package/src/i18n/review.ts +0 -475
  666. package/src/i18n/shared-labels.ts +0 -138
  667. package/src/i18n/swiss.ts +0 -29
  668. package/src/index.ts +0 -1191
  669. package/src/landing/access.ts +0 -93
  670. package/src/landing/landing-actions.tsx +0 -97
  671. package/src/landing/landing-labels.ts +0 -59
  672. package/src/landing/landing-sections.tsx +0 -341
  673. package/src/landing/page-seo.ts +0 -261
  674. package/src/landing/public-header.tsx +0 -121
  675. package/src/landing/public-page.tsx +0 -106
  676. package/src/landing/routing.tsx +0 -225
  677. package/src/lib/broadcast.ts +0 -52
  678. package/src/lib/calc.ts +0 -323
  679. package/src/lib/chip-edge-snap.ts +0 -212
  680. package/src/lib/clipboard-minus.ts +0 -107
  681. package/src/lib/clipping.ts +0 -34
  682. package/src/lib/cn.ts +0 -28
  683. package/src/lib/column-mapping.ts +0 -234
  684. package/src/lib/countries.ts +0 -91
  685. package/src/lib/data-attributes.ts +0 -14
  686. package/src/lib/date-format.ts +0 -227
  687. package/src/lib/dates.ts +0 -288
  688. package/src/lib/day-format.ts +0 -96
  689. package/src/lib/decimal-marks.ts +0 -108
  690. package/src/lib/describe-failure.ts +0 -18
  691. package/src/lib/device-settings.ts +0 -147
  692. package/src/lib/direction.ts +0 -74
  693. package/src/lib/document-navigation.ts +0 -17
  694. package/src/lib/document-title.ts +0 -41
  695. package/src/lib/download.ts +0 -172
  696. package/src/lib/float-clearance.ts +0 -70
  697. package/src/lib/floating-stack.ts +0 -70
  698. package/src/lib/focus-left.ts +0 -156
  699. package/src/lib/format.ts +0 -585
  700. package/src/lib/http-status.ts +0 -38
  701. package/src/lib/iban.ts +0 -251
  702. package/src/lib/ime.ts +0 -24
  703. package/src/lib/intl-cache.ts +0 -27
  704. package/src/lib/iso-day.ts +0 -13
  705. package/src/lib/lazy-with-fallback.ts +0 -82
  706. package/src/lib/logger.ts +0 -69
  707. package/src/lib/minus.ts +0 -50
  708. package/src/lib/path-pattern.ts +0 -55
  709. package/src/lib/person-name.ts +0 -155
  710. package/src/lib/phone.ts +0 -208
  711. package/src/lib/plain-text.ts +0 -22
  712. package/src/lib/presence.ts +0 -18
  713. package/src/lib/qr-encode.ts +0 -444
  714. package/src/lib/quiet-focus.ts +0 -32
  715. package/src/lib/reduced-motion.ts +0 -22
  716. package/src/lib/refs.ts +0 -22
  717. package/src/lib/round.ts +0 -43
  718. package/src/lib/safe-storage.ts +0 -119
  719. package/src/lib/server-wake.ts +0 -315
  720. package/src/lib/session-refresh.ts +0 -472
  721. package/src/lib/share-format.ts +0 -18
  722. package/src/lib/status-tone.ts +0 -43
  723. package/src/lib/strip-fade.ts +0 -287
  724. package/src/lib/table-text.ts +0 -554
  725. package/src/lib/text-case.ts +0 -19
  726. package/src/lib/text-match.ts +0 -169
  727. package/src/lib/thenable.ts +0 -19
  728. package/src/lib/translation-review.ts +0 -769
  729. package/src/notifications/device-zone-report.ts +0 -67
  730. package/src/notifications/feedback-notification-types-labels.ts +0 -33
  731. package/src/notifications/feedback-notification-types.ts +0 -71
  732. package/src/notifications/notification-bell.tsx +0 -119
  733. package/src/notifications/notification-inbox.tsx +0 -309
  734. package/src/notifications/notification-parts.tsx +0 -81
  735. package/src/notifications/notification-types-setting.tsx +0 -406
  736. package/src/notifications/notification-types.ts +0 -89
  737. package/src/notifications/notifications-labels.ts +0 -287
  738. package/src/notifications/push-device-setting.tsx +0 -230
  739. package/src/notifications/push-devices-setting.tsx +0 -374
  740. package/src/notifications/push-worker.ts +0 -168
  741. package/src/notifications/quiet-hours-setting.tsx +0 -238
  742. package/src/notifications/unsubscribe-panel.tsx +0 -200
  743. package/src/notifications/use-push-device.ts +0 -448
  744. package/src/offline/local-first.ts +0 -100
  745. package/src/offline/pwa-update-prompt-labels.ts +0 -9
  746. package/src/offline/pwa-update-prompt.tsx +0 -78
  747. package/src/offline/query-persistence.ts +0 -391
  748. package/src/offline/service-worker-updates.ts +0 -81
  749. package/src/offline/shared-computer-labels.ts +0 -8
  750. package/src/offline/shared-computer.tsx +0 -87
  751. package/src/offline/sign-out-pending-dialog-labels.ts +0 -21
  752. package/src/offline/sign-out-pending-dialog.tsx +0 -135
  753. package/src/offline.ts +0 -37
  754. package/src/push-worker.ts +0 -25
  755. package/src/rhf/fields.tsx +0 -2187
  756. package/src/rhf/form-core.tsx +0 -324
  757. package/src/rhf/form.tsx +0 -12
  758. package/src/rhf/line-items.tsx +0 -135
  759. package/src/rhf/use-rhf-wizard-step.ts +0 -104
  760. package/src/rhf.ts +0 -21
  761. package/src/search/command-palette-labels.ts +0 -16
  762. package/src/search/command-palette.tsx +0 -624
  763. package/src/search/global-search-labels.ts +0 -13
  764. package/src/search/global-search.tsx +0 -660
  765. package/src/search/search-index.ts +0 -283
  766. package/src/search/use-command-key.ts +0 -23
  767. package/src/search.ts +0 -14
  768. package/src/settings/device-reset-setting-labels.ts +0 -20
  769. package/src/settings/device-reset-setting.tsx +0 -116
  770. package/src/settings/settings-card-classes.ts +0 -11
  771. package/src/settings/settings-catalogue.ts +0 -150
  772. package/src/settings/settings-context.ts +0 -33
  773. package/src/settings/settings-heading.tsx +0 -67
  774. package/src/settings/settings-labels.ts +0 -87
  775. package/src/settings/settings-layout.tsx +0 -471
  776. package/src/settings/settings-section.tsx +0 -108
  777. package/src/settings/use-account-appearance.ts +0 -148
  778. package/src/settings/use-account-language.ts +0 -146
  779. package/src/settings/use-settings-focus.ts +0 -128
  780. package/src/settings/use-settings-route.ts +0 -258
  781. package/src/shell/account-menu-language.tsx +0 -130
  782. package/src/shell/account-menu-text-size.tsx +0 -80
  783. package/src/shell/admin-menu.tsx +0 -183
  784. package/src/shell/app-shell-labels.ts +0 -11
  785. package/src/shell/app-shell.tsx +0 -1560
  786. package/src/shell/auth-layout.tsx +0 -186
  787. package/src/shell/company-switcher-labels.ts +0 -13
  788. package/src/shell/company-switcher.tsx +0 -136
  789. package/src/shell/dev-menu.tsx +0 -257
  790. package/src/shell/fill-height.tsx +0 -45
  791. package/src/shell/language-code.ts +0 -5
  792. package/src/shell/option-switcher-menu.tsx +0 -84
  793. package/src/shell/sync-status-indicator.tsx +0 -303
  794. package/src/shell/top-bar-actions.tsx +0 -87
  795. package/src/shell/top-bar-brand.tsx +0 -78
  796. package/src/shell/top-bar-parts-labels.ts +0 -148
  797. package/src/shell/top-bar.tsx +0 -40
  798. package/src/shell/topbar-action-menu.tsx +0 -567
  799. package/src/shell/topbar-controls.tsx +0 -269
  800. package/src/shell/tour-menu.tsx +0 -187
  801. package/src/shell.ts +0 -108
  802. package/src/sync/db.ts +0 -129
  803. package/src/sync/engine.ts +0 -1011
  804. package/src/sync/hooks.ts +0 -98
  805. package/src/sync/testing.ts +0 -73
  806. package/src/sync/wire.ts +0 -61
  807. package/src/sync.ts +0 -37
  808. package/src/table-text.ts +0 -8
  809. package/src/testing/css-variables.generated.ts +0 -112
  810. package/src/testing/css-variables.ts +0 -189
  811. package/src/testing/index.ts +0 -29
  812. package/src/testing/react.ts +0 -58
  813. package/src/testing/tour.ts +0 -41
  814. package/src/testing/viewport.ts +0 -357
  815. package/src/theme/chart-palette.ts +0 -232
  816. package/src/theme/color.ts +0 -272
  817. package/src/theme/contrast-tokens.ts +0 -268
  818. package/src/theme/contrast.ts +0 -250
  819. package/src/theme/palette-derive.ts +0 -825
  820. package/src/theme/palette-presets.ts +0 -544
  821. package/src/theme/palette-store.ts +0 -108
  822. package/src/theme/text-size.ts +0 -289
  823. package/src/theme/theme-store.ts +0 -157
  824. package/src/tour/tour-catalogue-labels.ts +0 -75
  825. package/src/tour/tour-catalogue.tsx +0 -335
  826. package/src/tour/tour-dock.ts +0 -134
  827. package/src/tour/tour-engine.ts +0 -37
  828. package/src/tour/tour-gates.ts +0 -218
  829. package/src/tour/tour-guide-button.tsx +0 -64
  830. package/src/tour/tour-guide-labels.ts +0 -15
  831. package/src/tour/tour-info.ts +0 -144
  832. package/src/tour/tour-labels.ts +0 -23
  833. package/src/tour/tour-overlay.tsx +0 -1170
  834. package/src/tour/tour.tsx +0 -750
  835. package/src/tour/use-tour-progress.ts +0 -671
  836. package/src/tour/use-tour-url-sync.ts +0 -266
  837. package/src/tour.ts +0 -21
  838. package/src/vite-env.d.ts +0 -23
  839. package/src/wizard/stepper-nav.tsx +0 -360
  840. package/src/wizard/types.ts +0 -275
  841. package/src/wizard/use-wizard.ts +0 -560
  842. package/src/wizard/validation.ts +0 -39
  843. package/src/wizard/wizard-context.tsx +0 -74
  844. package/src/wizard/wizard-labels.ts +0 -29
  845. package/src/wizard/wizard-step.tsx +0 -76
  846. package/src/wizard/wizard-summary.tsx +0 -84
  847. package/src/wizard.ts +0 -15
@@ -1,479 +0,0 @@
1
- import { useId } from "react";
2
- import type { ComponentPropsWithoutRef, ReactNode, Ref } from "react";
3
- import { cn } from "../lib/cn";
4
- import { DEFAULT_COMMON_LABELS, useKitLabels, useKitLocale, type LabelOverride } from "../i18n/kit-labels";
5
- import { toneTextClass } from "./signed-amount";
6
- import type { TextTone } from "./signed-amount";
7
- import { DEFAULT_PROGRESS_BAR_LABELS } from "./progress-bar-labels";
8
- import { formatWithMinus } from "../lib/minus";
9
-
10
- /** The words a progress bar adds of its own. */
11
- export interface ProgressBarLabels {
12
- /** Shown after the value when `max={null}`: a quota with no ceiling. */
13
- unlimited: string;
14
- /** The `overage` line: how far past `max` the value is. `amount` is formatted. */
15
- overLimit: (amount: string) => string;
16
- }
17
-
18
- // Defined in ./progress-bar-labels, which holds no component code (0.34, KS U8).
19
- export { DEFAULT_PROGRESS_BAR_LABELS };
20
-
21
- /**
22
- * `income` / `expense` are the money pair (`--money-income` / `--money-expense`), the
23
- * names `Chip`, `StatTile` and `Sparkline` already use for them: a share bar of what
24
- * came in or went out is money, and painting it `success` / `warning` said "good" and
25
- * "careful" about a figure that is neither. keksdose's report meters (food-group-card,
26
- * drilldown-modal) sit beside amounts that are already in the money colours.
27
- */
28
- export type ProgressBarTone = "brand" | "neutral" | "success" | "warning" | "danger" | "info" | "income" | "expense";
29
- /**
30
- * Track heights: `sm` 4px, `slim` 6px, `md` 8px, `lg` 12px. `slim` is a word and not a
31
- * letter because the letters are taken in order — an `xs` at 6px would be THICKER than
32
- * `sm` — and renaming `sm` would move every bar already on it. 6px is the Slider's
33
- * track and keksdose's hand-drawn meters (`h-1.5`, landing-visuals), for a bar under a
34
- * line of text where 8px outweighs the text.
35
- */
36
- export type ProgressBarSize = "sm" | "slim" | "md" | "lg";
37
-
38
- const FILL: Record<ProgressBarTone, string> = {
39
- brand: "bg-brand",
40
- neutral: "bg-[var(--text-muted)]",
41
- success: "bg-success",
42
- warning: "bg-warning",
43
- danger: "bg-danger",
44
- info: "bg-info",
45
- income: "bg-money-income",
46
- expense: "bg-money-expense",
47
- };
48
-
49
- const TRACK_HEIGHT: Record<ProgressBarSize, string> = { sm: "h-1", slim: "h-1.5", md: "h-2", lg: "h-3" };
50
-
51
- // A segment with no tone of its own takes the next categorical chart colour, so a
52
- // stacked bar of unnamed parts is still a set of tellable parts rather than one fill.
53
- // Eight, cycled like `paletteFor` (0.49): `--chart-9` only repeats slot 1.
54
- const SERIES_FILL = [
55
- "bg-[var(--chart-1)]",
56
- "bg-[var(--chart-2)]",
57
- "bg-[var(--chart-3)]",
58
- "bg-[var(--chart-4)]",
59
- "bg-[var(--chart-5)]",
60
- "bg-[var(--chart-6)]",
61
- "bg-[var(--chart-7)]",
62
- "bg-[var(--chart-8)]",
63
- ];
64
-
65
- /** Each segment's fill classes: its own classes, else its tone, else (with no `color`)
66
- * the next chart colour. "Next" counts the UNCOLOURED segments only — a segment with
67
- * its own `className`/`tone`/`color` does not use up `--chart-1`, so an "Other" in grey
68
- * ahead of two plain parts leaves them `--chart-1` and `--chart-2`. */
69
- function segmentFills(segments: ProgressBarSegment[]): Array<string | undefined> {
70
- let next = 0;
71
- return segments.map((seg) => {
72
- if (seg.className) return seg.className;
73
- if (seg.tone) return FILL[seg.tone];
74
- return seg.color ? undefined : SERIES_FILL[next++ % SERIES_FILL.length];
75
- });
76
- }
77
-
78
- /** One part of a stacked bar. See {@link ProgressBarProps.segments}. */
79
- export interface ProgressBarSegment {
80
- /** Its size, on the bar's own `min`–`max` scale. */
81
- value: number;
82
- /** A kit tone. Left out (and no `color`/`className`), the next `--chart-N` colour. */
83
- tone?: ProgressBarTone;
84
- /** Any CSS colour (`var(--token)`), for a palette the tones do not cover. Wins over `tone`. */
85
- color?: string;
86
- /** Classes for the segment's fill — keksdose's `STEP_CLASS` ramp. Wins over `tone`. */
87
- className?: string;
88
- /** The part's name: said in the bar's `aria-valuetext` and shown in the legend. */
89
- label?: ReactNode;
90
- /** A stable React key, when `label` is not a string. */
91
- key?: string;
92
- /**
93
- * List it in the `legend` but leave it out of the bar — its value, its share of the
94
- * `aria-valuetext`, and the sum. keksdose's cut card (reports/cut-card:132) names
95
- * EVERY bucket under its bar, the empty ones included, while the bar draws only the
96
- * ones with a share: pass the empty buckets as `legendOnly` entries.
97
- */
98
- legendOnly?: boolean;
99
- }
100
-
101
- export interface ProgressBarProps extends Omit<ComponentPropsWithoutRef<"div">, "children" | "role"> {
102
- /**
103
- * `"span"` builds the bar from spans, for a place only phrasing content may go: inside
104
- * a button or a link (ListItem's `content`). The `legend` stays a list, so leave it off
105
- * there. Default `"div"`.
106
- */
107
- as?: "div" | "span";
108
- /** Where it stands. Leave it undefined for an INDETERMINATE bar — work is under way
109
- * and nobody knows how much is left (an import that reports no count). */
110
- value?: number;
111
- min?: number;
112
- /**
113
- * The top of the scale (default 100). `null` is a quota with NO ceiling — kastlan's
114
- * billing usage on an unlimited plan (usage-progress-bar:25): nothing to fill, so no
115
- * bar is drawn; the label row shows the value and "Unlimited" (`progressBar.unlimited`)
116
- * as plain text. `formatValue` is then called with `max` = `Infinity`; without it,
117
- * the value is a plain number in the kit's locale.
118
- */
119
- max?: number | null;
120
- /**
121
- * `progress` (default): a task moving toward completion — `role="progressbar"`.
122
- * `meter`: a share of a known whole that is not going anywhere (budget used, disk
123
- * space, one category's slice of spending) — `role="meter"`. keksdose's share bars
124
- * were progress bars to a screen reader, which reads "busy" into a figure that is
125
- * simply a figure. A meter is never indeterminate; a missing value reads as `min`.
126
- */
127
- variant?: "progress" | "meter";
128
- /** Visible label above the bar, and its accessible name. Without it, pass
129
- * `aria-label` (an indeterminate bar with neither is named `common.loading`). */
130
- label?: ReactNode;
131
- /** Show the value text at the end of the label row. */
132
- showValue?: boolean;
133
- /**
134
- * The value as words — both the visible `showValue` text and `aria-valuetext`.
135
- * Default: the fraction as a percentage in the kit's locale ("42 %" in French).
136
- * Pass one for anything that is not a percentage: `(v, max) => \`${v} of ${max} files\``.
137
- */
138
- formatValue?: (value: number, max: number, min: number) => string;
139
- tone?: ProgressBarTone;
140
- size?: ProgressBarSize;
141
- locale?: string;
142
- /**
143
- * Draw a METER OF PARTS: one bar, several fills side by side in order, a 2px gap
144
- * between them — keksdose's discretionary-spending bar (cut-card:133), a whole
145
- * split into the steps of a scale. Forces `variant="meter"`: parts of a whole are
146
- * never "busy". `aria-valuenow` is the sum; `aria-valuetext` names every part
147
- * ("Rent: 40%, Food: 25%"), each part's value through `formatValue` and joined in the
148
- * kit's locale — the words keksdose's hand-drawn bar had to hide from a reader
149
- * altogether, leaving the legend as the only way in. The sum is clamped to `max`,
150
- * and parts past it are cut off at the track's end.
151
- */
152
- segments?: ProgressBarSegment[];
153
- /** With `segments`: a list under the bar naming each part with its swatch and value
154
- * — the table view of the bar, in text tokens rather than the segment colour. */
155
- legend?: boolean;
156
- /**
157
- * What a legend row shows at its end, in place of the part's formatted value — which
158
- * it is handed, with the segment and its index. That value is the part's OWN, signed
159
- * and unclamped (`formatValue`, or a percentage of the scale): a part of −40 on a
160
- * 0–100 scale says "-40%" though the bar draws nothing for it. keksdose's cut card
161
- * shows the share AND a private outflow amount per bucket (cut-card:150), which one
162
- * figure could not:
163
- * `legendValue={(seg, share) => <>{share} <Amount … /></>}`.
164
- */
165
- legendValue?: (segment: ProgressBarSegment, formatted: string, index: number) => ReactNode;
166
- /**
167
- * The colour of each legend row's figure, as a {@link TextTone} — `toneTextClass`'s
168
- * palette, the money pair included. Default `"muted"`: the legend explains the bar and
169
- * should not outshout the headline above it. One tone for every row, or a function
170
- * per row. A tone and not the segment's own `tone`: keksdose's tax card fills its
171
- * three parts with one bucket's certainty ramp (`className`), while the FIGURES carry
172
- * the bucket's money direction — `legendTone="expense"` for the tax owed — which it
173
- * could only say before through `legendValue` and an app-side `Amount`. A function
174
- * returning `undefined` keeps that row muted. Applies to `legendValue`'s node too
175
- * (it inherits the colour unless it sets its own).
176
- */
177
- legendTone?: TextTone | ((segment: ProgressBarSegment, index: number) => TextTone | undefined);
178
- /** A muted line under the bar — the plan's reset date, "3 of 5 seats in use". It
179
- * describes the bar (`aria-describedby`). */
180
- hint?: ReactNode;
181
- /**
182
- * When `value` is past `max`, say by how much, in a danger-coloured line under the bar
183
- * (kastlan usage-progress-bar:46): `true` prints `progressBar.overLimit` with the
184
- * excess as a plain number; a function renders the line itself from the excess (a
185
- * currency, "2 seats"). The bar stays full at `max` either way — colour it with
186
- * `tone="danger"` if it should read as over. Ignored for `segments` and `max={null}`.
187
- */
188
- overage?: boolean | ((over: number) => ReactNode);
189
- /**
190
- * Tag every figure the bar PRINTS `data-private`, so the host's demo-mode rule blurs
191
- * it — the attribute `StatTile sensitive` and `Tooltip redact` carry: the `showValue`
192
- * text, each `legend` row's value (yours from `legendValue` too), the unlimited
193
- * figure and the `overage` line. The track, the swatches and the part names stay
194
- * readable — a blurred bar is no picture at all. Before this an app with a demo-mode
195
- * blur had to pass `legendValue` only to wrap the figure in a tagged span (keksdose).
196
- * The `aria-valuetext` is not touched: a screen reader is not a screen-share.
197
- */
198
- sensitive?: boolean;
199
- labels?: LabelOverride<ProgressBarLabels>;
200
- /** The element the rest of the props go on — the `progressbar` (or `meter`) itself,
201
- * the box round the figure for an unlimited one — a `div` or a `span` as `as` says,
202
- * hence `HTMLElement` (0.34, API-2, refactor audit 2026-10). */
203
- ref?: Ref<HTMLElement>;
204
- }
205
-
206
- /**
207
- * A horizontal bar that fills toward `max`.
208
- *
209
- * keksdose (import progress, budget share bars) and kastlan (upload and job
210
- * progress) each drew their own div-in-a-div. None had a role, so a reader heard
211
- * nothing at all; the share bars that did have one claimed to be progress.
212
- *
213
- * `aria-valuetext` is always set when there is a value: a bare `aria-valuenow="37"`
214
- * is read as "37" by some readers and "37 percent" by others, and neither is right
215
- * when `max` is 212 files.
216
- *
217
- * The indeterminate sweep stops under `prefers-reduced-motion`. It becomes a still,
218
- * half-strength bar across the whole track — still visibly "something is happening",
219
- * with nothing moving. The sweep is a Tailwind arbitrary `animate-[…]` rather than
220
- * tokens.css's `.animate-indeterminate` class because that one is UNLAYERED, and an
221
- * unlayered rule beats every layered utility, `motion-reduce:animate-none` included.
222
- */
223
- export function ProgressBar({
224
- value,
225
- min = 0,
226
- max: maxProp = 100,
227
- variant = "progress",
228
- label,
229
- showValue = false,
230
- formatValue,
231
- tone = "brand",
232
- size = "md",
233
- locale,
234
- segments,
235
- legend = false,
236
- legendValue,
237
- legendTone = "muted",
238
- hint,
239
- overage,
240
- sensitive = false,
241
- labels,
242
- className,
243
- as = "div",
244
- "aria-label": ariaLabel,
245
- "aria-labelledby": ariaLabelledBy,
246
- "aria-describedby": ariaDescribedBy,
247
- ref,
248
- ...rest
249
- }: ProgressBarProps) {
250
- // `as="span"`: the same bar from phrasing elements only, so it is valid inside a
251
- // <button> or <a> — ListItem's `content` puts a budget bar inside the row's target
252
- // (keksdose P2). Every span is made a block except those already laid out as flex.
253
- const Tag = as;
254
- // Either element's ref, as List types its `ul`/`ol` one.
255
- const tagRef = ref as Ref<HTMLDivElement & HTMLSpanElement> | undefined;
256
- const inlineClass = as === "span" ? "block [&_span:not(.flex):not(.inline-flex)]:block" : undefined;
257
- const common = useKitLabels("common", DEFAULT_COMMON_LABELS);
258
- const text = useKitLabels("progressBar", DEFAULT_PROGRESS_BAR_LABELS, labels);
259
- const kitLocale = useKitLocale(locale);
260
- const labelId = useId();
261
- const priv = sensitive ? "" : undefined;
262
- const hintId = useId();
263
- const hintNode =
264
- hint != null ? (
265
- <p id={hintId} data-part="hint" className="mt-1 text-xs text-muted">
266
- {hint}
267
- </p>
268
- ) : null;
269
-
270
- if (maxProp === null) {
271
- // No ceiling: no bar, no role — a meter with no maximum is not one. The value and
272
- // "Unlimited" are the content, so they are plain visible text.
273
- const shown =
274
- value === undefined || !Number.isFinite(value)
275
- ? undefined
276
- : formatValue
277
- ? formatValue(value, Infinity, min)
278
- : formatWithMinus(new Intl.NumberFormat(kitLocale), value);
279
- return (
280
- <Tag {...rest} ref={tagRef} className={cn("min-w-0", inlineClass, className)} data-state="unlimited">
281
- <Tag className="flex items-baseline gap-2 text-sm">
282
- {label != null && (
283
- <span id={labelId} className="min-w-0 text-secondary">
284
- {label}
285
- </span>
286
- )}
287
- <span data-part="unlimited" data-private={priv} className="ms-auto shrink-0 tabular-nums text-muted">
288
- {shown !== undefined && `${shown} · `}
289
- {text.unlimited}
290
- </span>
291
- </Tag>
292
- {hintNode}
293
- </Tag>
294
- );
295
- }
296
- const max = maxProp;
297
-
298
- const stacked = segments !== undefined;
299
- const meter = stacked || variant === "meter";
300
- const span = max - min;
301
- const partValue = (v: number) => (Number.isFinite(v) ? Math.max(0, v - min) : 0);
302
- // Colours are dealt over EVERY segment, legend-only ones included, so an entry keeps
303
- // its swatch whether or not it is in the bar this time.
304
- const fills = stacked ? segmentFills(segments) : [];
305
- const barParts = stacked ? segments.filter((seg) => !seg.legendOnly) : [];
306
- const partTotal = stacked ? min + barParts.reduce((sum, seg) => sum + partValue(seg.value), 0) : undefined;
307
- const format = (v: number) =>
308
- formatValue
309
- ? formatValue(v, max, min)
310
- : new Intl.NumberFormat(kitLocale, { style: "percent", maximumFractionDigits: 0 }).format(
311
- span <= 0 ? 0 : (Math.min(max, Math.max(min, v)) - min) / span,
312
- );
313
- // A PART is stated as its own value, sign and all — not as the slice of track it
314
- // draws. The bar cannot draw a negative part (a refund inside a month's spending) or
315
- // one past `max`, but the legend and the reader can still say it: before 0.16 a
316
- // −CHF 40 part read "0 %" in both, and keksdose had to pass `legendValue` just to get
317
- // the minus back. For a part inside `min`–`max` this is the same text as before.
318
- const formatPart = (v: number) => {
319
- if (!Number.isFinite(v)) return format(min);
320
- if (formatValue) return formatValue(v, max, min);
321
- // A part can be negative (a refund): U+2212, as everywhere (0.49, KIT-1).
322
- return formatWithMinus(
323
- new Intl.NumberFormat(kitLocale, { style: "percent", maximumFractionDigits: 0 }),
324
- span <= 0 ? 0 : (v - min) / span,
325
- );
326
- };
327
- const partTexts = stacked
328
- ? barParts.map((seg) => {
329
- const text = formatPart(seg.value);
330
- return typeof seg.label === "string" || typeof seg.label === "number"
331
- ? common.fieldValue(String(seg.label), text)
332
- : text;
333
- })
334
- : [];
335
- const current = partTotal ?? (value === undefined || !Number.isFinite(value) ? (meter ? min : undefined) : value);
336
- const indeterminate = current === undefined;
337
- const clamped = indeterminate ? undefined : Math.min(max, Math.max(min, current));
338
- const fraction = clamped === undefined || span <= 0 ? 0 : (clamped - min) / span;
339
-
340
- const valueText = clamped === undefined ? undefined : format(clamped);
341
- const ariaValueText =
342
- stacked && partTexts.length > 0
343
- ? new Intl.ListFormat(kitLocale, { style: "short", type: "unit" }).format(partTexts)
344
- : valueText;
345
-
346
- const over = overage && !stacked && value !== undefined && Number.isFinite(value) && value > max ? value - max : 0;
347
- const overageNode =
348
- over > 0 ? (
349
- <p id={`${hintId}-over`} data-part="overage" data-private={priv} className="mt-1 text-xs text-danger">
350
- {typeof overage === "function" ? overage(over) : text.overLimit(new Intl.NumberFormat(kitLocale).format(over))}
351
- </p>
352
- ) : null;
353
- const describedBy =
354
- [ariaDescribedBy, hintNode && hintId, overageNode && `${hintId}-over`].filter(Boolean).join(" ") || undefined;
355
-
356
- const labelledBy = ariaLabelledBy ?? (label != null ? labelId : undefined);
357
- const name = labelledBy ? undefined : (ariaLabel ?? (indeterminate ? common.loading : undefined));
358
-
359
- return (
360
- <Tag className={cn("min-w-0", inlineClass, className)} data-state={indeterminate ? "indeterminate" : "determinate"}>
361
- {(label != null || (showValue && valueText !== undefined)) && (
362
- <Tag className="mb-1 flex items-baseline gap-2 text-sm">
363
- {label != null && (
364
- <span id={labelId} className="min-w-0 text-secondary">
365
- {label}
366
- </span>
367
- )}
368
- {showValue && valueText !== undefined && (
369
- // Hidden: the same words are the bar's aria-valuetext, and reading them
370
- // twice in a row is noise.
371
- <span
372
- aria-hidden
373
- data-part="value"
374
- data-private={priv}
375
- className="ms-auto shrink-0 tabular-nums text-muted"
376
- >
377
- {valueText}
378
- </span>
379
- )}
380
- </Tag>
381
- )}
382
- <Tag
383
- {...rest}
384
- ref={tagRef}
385
- role={meter ? "meter" : "progressbar"}
386
- aria-label={name}
387
- aria-labelledby={labelledBy}
388
- aria-describedby={describedBy}
389
- aria-valuemin={indeterminate ? undefined : min}
390
- aria-valuemax={indeterminate ? undefined : max}
391
- aria-valuenow={clamped}
392
- aria-valuetext={ariaValueText}
393
- aria-busy={!meter && indeterminate ? true : undefined}
394
- // `relative` + `overflow-hidden`: the indeterminate segment is positioned in
395
- // here and must not paint past the rounded ends.
396
- className={cn("relative w-full overflow-hidden rounded-full bg-active", TRACK_HEIGHT[size])}
397
- >
398
- {stacked ? (
399
- // The parts in a flex row with a 2px gap, so two neighbouring steps of one
400
- // hue are parted by the track rather than by their difference in lightness.
401
- <Tag className="flex h-full w-full gap-0.5">
402
- {segments.map((seg, i) =>
403
- seg.legendOnly ? null : (
404
- <Tag
405
- key={seg.key ?? i}
406
- data-part="segment"
407
- className={cn(
408
- "h-full shrink-0 rounded-full transition-[width] duration-300 motion-reduce:transition-none",
409
- fills[i],
410
- )}
411
- style={{
412
- width: `${span <= 0 ? 0 : (partValue(seg.value) / span) * 100}%`,
413
- backgroundColor: seg.className ? undefined : seg.color,
414
- }}
415
- />
416
- ),
417
- )}
418
- </Tag>
419
- ) : indeterminate ? (
420
- <Tag
421
- data-part="fill"
422
- className={cn(
423
- // `left-0`, deliberately physical: the keyframes (tokens.css
424
- // `indeterminate-sweep`) translate along the physical x axis, and under
425
- // RTL the same keyframes are run in REVERSE — from the right edge back
426
- // to the left. A logical `start-0` would park the segment at the right
427
- // in RTL and the reversed sweep would then start off-screen.
428
- "absolute inset-y-0 left-0 w-1/3 rounded-full",
429
- "animate-[indeterminate-sweep_1.4s_ease-in-out_infinite] rtl:[animation-direction:reverse]",
430
- "motion-reduce:w-full motion-reduce:animate-none motion-reduce:opacity-50",
431
- FILL[tone],
432
- )}
433
- />
434
- ) : (
435
- <Tag
436
- data-part="fill"
437
- // Block flow starts at the inline start, so a plain width fills from the
438
- // right under `dir="rtl"` with nothing extra.
439
- className={cn(
440
- "h-full rounded-full transition-[width] duration-300 motion-reduce:transition-none",
441
- FILL[tone],
442
- )}
443
- style={{ width: `${fraction * 100}%` }}
444
- />
445
- )}
446
- </Tag>
447
- {stacked && legend && segments.length > 0 && (
448
- <ul className="mt-2 space-y-1 text-sm" data-part="legend">
449
- {segments.map((seg, i) => (
450
- <li key={seg.key ?? i} className="flex items-center gap-2">
451
- <span
452
- aria-hidden
453
- className={cn("size-2.5 shrink-0 rounded-sm", fills[i])}
454
- style={{ backgroundColor: seg.className ? undefined : seg.color }}
455
- />
456
- {seg.label != null && (
457
- // Wraps from Large up (text size §10.17, round 0.34 T1); the value
458
- // beside it keeps its width.
459
- <span className="min-w-0 flex-1 truncate-until-large text-secondary">{seg.label}</span>
460
- )}
461
- <span
462
- data-part="legend-value"
463
- data-private={priv}
464
- className={cn(
465
- "ms-auto shrink-0 text-xs tabular-nums",
466
- toneTextClass((typeof legendTone === "function" ? legendTone(seg, i) : legendTone) ?? "muted"),
467
- )}
468
- >
469
- {legendValue ? legendValue(seg, formatPart(seg.value), i) : formatPart(seg.value)}
470
- </span>
471
- </li>
472
- ))}
473
- </ul>
474
- )}
475
- {overageNode}
476
- {hintNode}
477
- </Tag>
478
- );
479
- }
@@ -1,76 +0,0 @@
1
- import { useMemo } from "react";
2
- import type { ComponentPropsWithRef } from "react";
3
- import { cn } from "../lib/cn";
4
- import { encodeQr } from "../lib/qr-encode";
5
- import type { QrErrorCorrection } from "../lib/qr-encode";
6
-
7
- export interface QrCodeProps extends Omit<ComponentPropsWithRef<"svg">, "children" | "viewBox"> {
8
- /** The text to encode (UTF-8) — an `otpauth://` URI, a URL, a pairing code. */
9
- value: string;
10
- /** The accessible name. Without it the code is decorative (`aria-hidden`): say what
11
- * it is for, not what it encodes — nobody wants a URI read out. */
12
- label?: string;
13
- /** Default `"M"`, raised automatically where the size allows it. */
14
- errorCorrection?: QrErrorCorrection;
15
- /** The quiet zone, in modules. The spec asks for 4; less reads worse. Default 4. */
16
- margin?: number;
17
- }
18
-
19
- /**
20
- * A QR code as one inline SVG — no canvas, no data URL, no dependency (see
21
- * `lib/qr-encode.ts` for why the encoder lives in the kit).
22
- *
23
- * Sized by CSS (`className="size-48"`); the SVG scales without blurring because every
24
- * module is a whole unit of the viewBox and `shape-rendering` is `crispEdges`.
25
- *
26
- * **Black on white, always — the one literal colour pair in the kit.** A camera looks
27
- * for the contrast between the modules and their quiet zone; on the dark theme a
28
- * surface-coloured background makes a code slow to acquire, and an inverted one is not
29
- * read at all by several authenticator apps. The quiet zone is part of the SVG, so the
30
- * code carries its own white border wherever it is placed.
31
- *
32
- * A value too long for any QR version (≈2.9 kB) renders nothing rather than throwing
33
- * in render.
34
- */
35
- export function QrCode({ value, label, errorCorrection = "M", margin = 4, className, ...rest }: QrCodeProps) {
36
- const path = useMemo(() => {
37
- try {
38
- const { modules, size } = encodeQr(value, { errorCorrection });
39
- // One path, one sub-path per horizontal run of dark modules: a few hundred
40
- // commands rather than one <rect> per module.
41
- let d = "";
42
- for (let y = 0; y < size; y++) {
43
- for (let x = 0; x < size;) {
44
- if (!modules[y][x]) {
45
- x++;
46
- continue;
47
- }
48
- let run = 1;
49
- while (x + run < size && modules[y][x + run]) run++;
50
- d += `M${x + margin} ${y + margin}h${run}v1h-${run}z`;
51
- x += run;
52
- }
53
- }
54
- return { d, extent: size + margin * 2 };
55
- } catch {
56
- return null;
57
- }
58
- }, [value, errorCorrection, margin]);
59
-
60
- if (!path) return null;
61
- return (
62
- <svg
63
- {...rest}
64
- xmlns="http://www.w3.org/2000/svg"
65
- viewBox={`0 0 ${path.extent} ${path.extent}`}
66
- shapeRendering="crispEdges"
67
- role={label ? "img" : undefined}
68
- aria-label={label}
69
- aria-hidden={label ? undefined : true}
70
- className={cn("block", className)}
71
- >
72
- <rect width={path.extent} height={path.extent} fill="#ffffff" />
73
- <path d={path.d} fill="#000000" />
74
- </svg>
75
- );
76
- }
@@ -1,13 +0,0 @@
1
- // The English words of ./reauth-dialog, in a module with no component code: the English
2
- // catalogue (src/i18n/defaults.ts) imports them without the component, so `en` loads as one
3
- // chunk like the other languages (0.34, KS U8). ./reauth-dialog re-exports them.
4
-
5
- import type { ReauthDialogLabels } from "./reauth-dialog";
6
-
7
- export const DEFAULT_REAUTH_DIALOG_LABELS: ReauthDialogLabels = {
8
- title: "Confirm it’s you",
9
- description: "Enter your current password to continue.",
10
- password: "Current password",
11
- submit: "Continue",
12
- cancel: "Cancel",
13
- };