@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,7 +0,0 @@
1
- import { createContext } from "react";
2
- import type { ConfirmFn } from "./confirm-dialog";
3
-
4
- /** The nearest `ConfirmProvider`'s `confirm`, or `null`. Internal: its own module so a
5
- * part that may sit outside a provider (`RowActions`, 0.49 KIT-12) can ask without
6
- * `useConfirm()`'s throw, and without adding a name to the barrel. */
7
- export const ConfirmContext = createContext<ConfirmFn | null>(null);
@@ -1,13 +0,0 @@
1
- // The English words of ./confirm-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). ./confirm-dialog re-exports them.
4
-
5
- import type { ConfirmDialogLabels } from "./confirm-dialog";
6
-
7
- /** `satisfies` rather than a type annotation, so `.typed` stays known-callable for a
8
- * caller composing its own label from it. */
9
- export const DEFAULT_CONFIRM_DIALOG_LABELS = {
10
- confirm: "Confirm",
11
- cancel: "Cancel",
12
- typed: (text: string) => `Type “${text}” to confirm`,
13
- } satisfies ConfirmDialogLabels;
@@ -1,341 +0,0 @@
1
- import { useCallback, useContext, useEffect, useRef, useState } from "react";
2
- import type { ReactNode } from "react";
3
-
4
- import { useKitLabels } from "../i18n/kit-labels";
5
- import { TypedConfirmField, typedMatches } from "./danger-confirm";
6
- import type { TypedMatch } from "./danger-confirm";
7
- import { DialogFrame } from "./dialog-frame";
8
- import { Button } from "./button";
9
- import { useWriteLock, writeLockFor, type CommitScope } from "./write-lock";
10
- import { DEFAULT_CONFIRM_DIALOG_LABELS } from "./confirm-dialog-labels";
11
- import { ConfirmContext } from "./confirm-context";
12
-
13
- /**
14
- * The `confirmDialog` namespace of `<UiKitProvider labels>`: the two buttons' fallback
15
- * text. A call that knows what it is confirming says so per call (`confirmLabel:
16
- * "Delete budget"`), which is what the dialog is for — these are for the rest.
17
- */
18
- export interface ConfirmDialogLabels {
19
- confirm: string;
20
- cancel: string;
21
- /**
22
- * 0.18: label of the field a `requireTyped` confirm shows. A FUNCTION of the text to
23
- * type by default — where the address sits in the sentence moves with the language —
24
- * or a finished STRING. A call's own `typedLabel` wins over it.
25
- *
26
- * Required, like every key of a namespace: the shipped catalogues
27
- * (`@eifi1/ui-kit/i18n/<code>`) translate it, and an app's own full catalogue should
28
- * hear about the new string from the compiler rather than show it in English.
29
- */
30
- typed: string | ((text: string) => string);
31
- }
32
-
33
- // Defined in ./confirm-dialog-labels, which holds no component code (0.34, KS U8).
34
- export { DEFAULT_CONFIRM_DIALOG_LABELS };
35
-
36
- export type ConfirmTone = "danger" | "warning" | "neutral";
37
-
38
- export interface ConfirmOptions {
39
- /** The question, and the dialog's accessible name. */
40
- title: ReactNode;
41
- /** The smaller line under it — the consequence. Wired to `aria-describedby`. */
42
- body?: ReactNode;
43
- /** Default: `confirmDialog.confirm` from the provider, else "Confirm". */
44
- confirmLabel?: ReactNode;
45
- /** Default: `confirmDialog.cancel` from the provider, else "Cancel". */
46
- cancelLabel?: ReactNode;
47
- /**
48
- * `"danger"` for what cannot be undone (a delete): the confirm is the destructive
49
- * button and focus starts on CANCEL. `"warning"` and `"neutral"` (default) start on
50
- * the confirm. See {@link ConfirmProvider} for why the two differ.
51
- */
52
- tone?: ConfirmTone;
53
- /**
54
- * 0.18: make the user TYPE this before confirm is enabled — the target account's
55
- * e-mail address, a budget's name. For the action whose risk is not "did you mean
56
- * it" but "is this the right row": an admin who deactivates somebody has already
57
- * proven who THEY are (they passed the admin gate); typing the address is what
58
- * proves they read which account they are on. Both keksdose (`TYPE_EMAIL`) and
59
- * Kurvenschmiede (`TypedConfirm`) built this beside `useConfirm` because it had no
60
- * field.
61
- *
62
- * The dialog then shows one text field under the body and focuses it (whatever the
63
- * tone: a reflexive Enter cannot confirm a field that does not match yet). Confirm
64
- * stays disabled until the text matches; Enter in the field confirms once it does.
65
- * The answer is still `true` / `false` — the text matched what you passed, so send
66
- * that to the server if it asks for the address too, not the user's spelling.
67
- */
68
- requireTyped?: string;
69
- /** Label of that field. Default: `confirmDialog.typed` — `Type “a@b.c” to confirm`. */
70
- typedLabel?: string;
71
- /**
72
- * How the typed text is compared. Default `"caseless"`: surrounding spaces and case
73
- * ignored, the rule both apps applied to an address. `"trim"` keeps case, `"exact"`
74
- * keeps spaces too — for a phrase like "DELETE" whose contract is "exactly this".
75
- */
76
- typedMatch?: TypedMatch;
77
- /**
78
- * 0.31.1: the confirm button COMMITS, as `Button`'s `commit` does. Under a locked
79
- * `WriteLockProvider` — read where `useConfirm` was called, not where the one dialog
80
- * host sits — it is `aria-disabled` with the lock's reason, so a read-only page (a
81
- * demo, a viewer's budget) can't confirm a delete through a dialog. One prop for the
82
- * many confirm sites an app has (kastlan's 0.31 adoption counted ~23).
83
- *
84
- * 0.33: a {@link CommitScope} — `confirm({ commit: COMMIT_EXCEPT_BILLING })` for a
85
- * confirm a lapsed plan still allows (removing access, the account's own settings;
86
- * docs/billing-harmonization.md §12.36).
87
- */
88
- commit?: CommitScope;
89
- }
90
-
91
- export type ConfirmFn = (options: ConfirmOptions) => Promise<boolean>;
92
-
93
- /**
94
- * `const confirm = useConfirm()` → `if (!(await confirm({ title }))) return`.
95
- *
96
- * The returned function is STABLE for the life of the provider, so it can sit in an
97
- * effect's or a `useCallback`'s dependency list without re-running it.
98
- *
99
- * Throws outside a {@link ConfirmProvider}, rather than falling back to
100
- * `window.confirm`: a silent fallback is exactly the native dialog the three apps are
101
- * migrating away from, and it would look like the migration had worked.
102
- */
103
- export function useConfirm(): ConfirmFn {
104
- const confirm = useContext(ConfirmContext);
105
- if (!confirm) {
106
- throw new Error("useConfirm() must be called below a <ConfirmProvider>.");
107
- }
108
- // The lock of the CALLER's place: the dialog host usually sits above the app's
109
- // `WriteLockProvider`, so it could not read the lock itself. Each call's own `commit`
110
- // scope is applied to it when the call runs (`writeLockFor`, §12.36).
111
- const lock = useWriteLock();
112
- return useCallback(
113
- (options: ConfirmOptions) => {
114
- const scoped = writeLockFor(lock, options.commit);
115
- return confirm(scoped.locked ? ({ ...options, lockReason: scoped.reason } as ConfirmOptions) : options);
116
- },
117
- [confirm, lock],
118
- );
119
- }
120
-
121
- interface Request extends ConfirmOptions {
122
- id: number;
123
- resolve: (answer: boolean) => void;
124
- /** Set by {@link useConfirm} for a `commit` confirm under a locked provider. */
125
- lockReason?: ReactNode;
126
- }
127
-
128
- export interface ConfirmProviderProps {
129
- children: ReactNode;
130
- }
131
-
132
- /**
133
- * The host for {@link useConfirm}: ONE confirm dialog for the whole app, rendered on
134
- * {@link DialogFrame}, answering a promise.
135
- *
136
- * Asked for by all three apps at once — keksdose has 20+ `window.confirm` calls,
137
- * kastlan 7, lenkbank 1. The native dialog cannot be translated past its OK/Cancel
138
- * (those are the BROWSER's language, not the app's), cannot say which button is the
139
- * destructive one, and on an installed PWA it prints the origin over the question.
140
- * A promise is what lets each of those call sites change by one `await`:
141
- *
142
- * if (!window.confirm(t("budget.delete_confirm"))) return;
143
- * // becomes
144
- * if (!(await confirm({ title: t("budget.delete_confirm"), tone: "danger" }))) return;
145
- *
146
- * ## Its own provider, not part of `UiKitProvider`
147
- *
148
- * `UiKitProvider` renders nothing: it is strings and a locale, it is optional, and it
149
- * NESTS (an inner one re-labels one table). A dialog host inside it would mount a host
150
- * per nested provider, and a component under the inner one would open a second dialog
151
- * layer of its own. So the host is its own component, mounted once — inside the
152
- * `UiKitProvider` whose strings it should speak, which is also the order the labels
153
- * need.
154
- *
155
- * ## Focus
156
- *
157
- * On CANCEL for `tone: "danger"`, on CONFIRM otherwise. A confirm is often answered by
158
- * a reflexive Enter — the key that pressed the Delete button in the first place may
159
- * still be down — and for an action that cannot be undone that reflex must land on the
160
- * harmless answer; `DangerConfirm` makes the same call ("never to the destructive
161
- * button itself"). For everything else the confirm is the expected answer and Enter
162
- * accepting it is what `window.confirm` taught users, which the migrating call sites'
163
- * users already rely on. Focus returns to whatever opened it, through `Modal`'s trap.
164
- *
165
- * ## Escape, the backdrop, Back and Cancel all answer `false`
166
- *
167
- * Only the confirm button answers `true`. Anything that merely dismisses is a no.
168
- *
169
- * ## A second `confirm` while one is open QUEUES
170
- *
171
- * It is shown when the first is answered, and each call gets its own answer. The
172
- * alternative — answering the open one `false` to make room — would answer a question
173
- * the user never answered: a background prompt ("your session is about to expire")
174
- * would cancel the delete they were reading. `false` has to mean "the user said no".
175
- * A double-click cannot queue two of the same: the first click opens the modal
176
- * synchronously (a discrete event's update is flushed before the next one), so the
177
- * second lands on the open dialog rather than on the button — at worst on its
178
- * backdrop, which answers `false`, the safe way to be wrong.
179
- *
180
- * Unmounting the provider answers everything still pending `false`, so no caller's
181
- * `await` hangs forever.
182
- *
183
- * ## keksdose's synchronous call (transaction-swipe-plan.ts)
184
- *
185
- * `buildTxSwipeActions` is synchronous, but its `window.confirm` sits inside the
186
- * action THUNK (`confirmed(key, run)` returns `() => { if (confirm(…)) run() }`), and a
187
- * thunk may be async without its caller knowing. So the plan builder stays
188
- * synchronous; it takes the confirm as an argument and the thunk awaits it:
189
- *
190
- * // mobile-transaction-list.tsx
191
- * const confirm = useConfirm();
192
- * buildTxSwipeActions({ tx, …, confirm });
193
- *
194
- * // transaction-swipe-plan.ts
195
- * const confirmed = (messageKey: string, run: () => void) => () => {
196
- * void confirm({ title: t(messageKey), tone: "danger" }).then((ok) => ok && run());
197
- * };
198
- *
199
- * Its test then passes `confirm: vi.fn(async () => false)` instead of stubbing the
200
- * global, and asserts after an `await` (the mutation now runs a microtask later). The
201
- * row snaps back when the swipe commits, before the answer — which is right: the
202
- * dialog, not the half-swiped row, is where the question now is.
203
- */
204
- export function ConfirmProvider({ children }: ConfirmProviderProps) {
205
- const [queue, setQueue] = useState<Request[]>([]);
206
- const nextId = useRef(0);
207
- // Every unanswered request, including the ones not yet in state — the unmount
208
- // cleanup below must reach a request made in the same tick it unmounts.
209
- const pending = useRef(new Set<Request>());
210
-
211
- const confirm = useCallback<ConfirmFn>(
212
- (options) =>
213
- new Promise<boolean>((resolve) => {
214
- const request: Request = { ...options, id: ++nextId.current, resolve };
215
- pending.current.add(request);
216
- setQueue((q) => [...q, request]);
217
- }),
218
- [],
219
- );
220
-
221
- useEffect(() => {
222
- const open = pending.current;
223
- return () => {
224
- for (const r of open) r.resolve(false);
225
- open.clear();
226
- };
227
- }, []);
228
-
229
- const answer = useCallback((request: Request, value: boolean) => {
230
- if (!pending.current.delete(request)) return;
231
- request.resolve(value);
232
- setQueue((q) => q.filter((r) => r !== request));
233
- }, []);
234
-
235
- const current = queue[0];
236
- return (
237
- <ConfirmContext.Provider value={confirm}>
238
- {children}
239
- {current && (
240
- // Keyed per request, so a queued one gets a fresh Modal: the first one's trap
241
- // hands focus back to the page, and the next one's captures that as its own
242
- // restore target instead of a button that has just been unmounted.
243
- <ConfirmDialogView key={current.id} request={current} onAnswer={answer} />
244
- )}
245
- </ConfirmContext.Provider>
246
- );
247
- }
248
-
249
- function ConfirmDialogView({
250
- request,
251
- onAnswer,
252
- }: {
253
- request: Request;
254
- onAnswer: (request: Request, value: boolean) => void;
255
- }) {
256
- const labels = useKitLabels("confirmDialog", DEFAULT_CONFIRM_DIALOG_LABELS);
257
- const tone = request.tone ?? "neutral";
258
- const confirmRef = useRef<HTMLButtonElement>(null);
259
- const cancelRef = useRef<HTMLButtonElement>(null);
260
- // Set by the confirm button, read once the panel has finished lowering. Everything
261
- // else that ends in `onClose` — Escape, the backdrop, Back, Cancel — leaves it false.
262
- const accepted = useRef(false);
263
- const typedRef = useRef<HTMLInputElement>(null);
264
- const [typed, setTyped] = useState("");
265
- const target = request.requireTyped;
266
- const matches = target === undefined || typedMatches(typed, target, request.typedMatch ?? "caseless");
267
-
268
- // In THIS component's effect, which runs after `Modal`'s own (a parent's effects run
269
- // after its children's). `Modal` engages its focus trap on the panel first — and
270
- // records the page's focused element as the restore target — and only then does
271
- // focus move to the button. Focusing it from inside the panel would run first and
272
- // make the button the restore target. A typed confirm starts in its field: typing is
273
- // the one thing the dialog is waiting for.
274
- useEffect(() => {
275
- (target !== undefined ? typedRef : tone === "danger" ? cancelRef : confirmRef).current?.focus();
276
- }, [tone, target]);
277
-
278
- const typedLabel =
279
- target === undefined
280
- ? ""
281
- : (request.typedLabel ?? (typeof labels.typed === "string" ? labels.typed : labels.typed(target)));
282
-
283
- return (
284
- <DialogFrame
285
- title={request.title}
286
- description={request.body}
287
- onClose={() => onAnswer(request, accepted.current)}
288
- // A confirmation interrupts to ask a question that must be answered.
289
- role="alertdialog"
290
- data-confirm-tone={tone}
291
- actions={(close) => (
292
- <>
293
- <Button ref={cancelRef} type="button" variant="ghost" onClick={close}>
294
- {request.cancelLabel ?? labels.cancel}
295
- </Button>
296
- <Button
297
- ref={confirmRef}
298
- type="button"
299
- variant={tone === "danger" ? "danger" : "default"}
300
- disabled={!matches}
301
- disabledReason={request.lockReason}
302
- onClick={() => {
303
- accepted.current = true;
304
- close();
305
- }}
306
- >
307
- {request.confirmLabel ?? labels.confirm}
308
- </Button>
309
- </>
310
- )}
311
- >
312
- {/* The field, when there is one, is the body; a plain confirm keeps having none. */}
313
- {target !== undefined && (
314
- <form
315
- noValidate
316
- onSubmit={(e) => {
317
- e.preventDefault();
318
- // Through the button, so Enter and a click are one path — and a disabled
319
- // (not yet matching) confirm ignores the click.
320
- confirmRef.current?.click();
321
- }}
322
- >
323
- {/* The kit's one typed-confirmation field (0.23), DangerConfirm's too: the
324
- keyboard told to leave the text alone, `data-matched` on the input. The
325
- label is this namespace's (`confirmDialog.typed`), and `placeholder=""`
326
- keeps out the `dangerConfirm.phrasePlaceholder` a provider may set for
327
- the tile — this field never had one. */}
328
- <TypedConfirmField
329
- ref={typedRef}
330
- target={target}
331
- match={request.typedMatch ?? "caseless"}
332
- label={typedLabel}
333
- placeholder=""
334
- value={typed}
335
- onValueChange={setTyped}
336
- />
337
- </form>
338
- )}
339
- </DialogFrame>
340
- );
341
- }
@@ -1,13 +0,0 @@
1
- // The English words of ./copy-button, 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). ./copy-button re-exports them.
4
-
5
- import type { CopyButtonLabels } from "./copy-button";
6
-
7
- export const DEFAULT_COPY_BUTTON_LABELS: CopyButtonLabels = {
8
- copy: "Copy",
9
- copied: "Copied",
10
- failed: "Couldn’t copy",
11
- copiedAnnouncement: "Copied to clipboard",
12
- failedAnnouncement: "Couldn’t copy to the clipboard",
13
- };
@@ -1,192 +0,0 @@
1
- import type { ButtonHTMLAttributes, Ref } from "react";
2
- import { Check, Copy, X } from "lucide-react";
3
- import { cn } from "../lib/cn";
4
- import { useKitLabels, type LabelOverride } from "../i18n/kit-labels";
5
- import { useAnnounce } from "../hooks/use-announce";
6
- import { useCopyToClipboard } from "../hooks/use-copy-to-clipboard";
7
- import type { CopyState } from "../hooks/use-copy-to-clipboard";
8
- import { Button } from "./button";
9
- import { IconButton } from "./icon-button";
10
- import type { ButtonSize, ButtonTone, ButtonVariant } from "./button-look";
11
- import type { IconButtonSize, IconButtonTone } from "./icon-button";
12
- import type { TooltipSide } from "./tooltip";
13
- import { DEFAULT_COPY_BUTTON_LABELS } from "./copy-button-labels";
14
-
15
- /** The words a copy button says. The visible three are short on purpose (they
16
- * replace the button's own text in the `label` variant); the two announcements
17
- * are the sentences a screen reader hears, since the button's focus never moves. */
18
- export interface CopyButtonLabels {
19
- copy: string;
20
- copied: string;
21
- failed: string;
22
- copiedAnnouncement: string;
23
- failedAnnouncement: string;
24
- }
25
-
26
- // Defined in ./copy-button-labels, which holds no component code (0.34, KS U8).
27
- export { DEFAULT_COPY_BUTTON_LABELS };
28
-
29
- export interface CopyButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children" | "onClick"> {
30
- /** What to copy. A function is read at click time — for a value that is expensive
31
- * to build (a CSV of the table) or that changes under the button. */
32
- text: string | (() => string);
33
- /** `icon` (default): a square icon button whose glyph and colour show the result — its
34
- * words in a bubble, and from Large up beside the glyph, as every labelled IconButton
35
- * shows them. `label`: a text button whose words change to the result. */
36
- variant?: "icon" | "label";
37
- /** The idle accessible name — and, in the `label` variant, the visible text:
38
- * "Copy IBAN" says WHAT is copied, which a row of three copy icons needs. Default
39
- * `copyButton.copy`. */
40
- label?: string;
41
- /** The button's own look. Default: `ghost` for the icon, `secondary` for the label. */
42
- buttonVariant?: ButtonVariant;
43
- /** The icon variant's IconButton size (default `sm`). The `label` variant takes a
44
- * Button size, `sm` or `md` — passed only when given, so an existing label button
45
- * keeps its look (keksdose budget-share-card and jobs-panel wanted the compact one). */
46
- size?: IconButtonSize | ButtonSize;
47
- /** The icon variant's IconButton tone (e.g. `muted`, so a row of copy icons is no
48
- * heavier than the row's other actions); in the `label` variant a Button tone,
49
- * which applies to `link` / `ghost`. The copied / failed colour still wins. */
50
- tone?: IconButtonTone | ButtonTone;
51
- /** Keep the click and Enter/Space from reaching a clickable row around the button,
52
- * as IconButton's own `stopPropagation` does (keksdose feedback-page, users-panel). */
53
- stopPropagation?: boolean;
54
- /** Icon variant only: where the result tooltip opens. */
55
- tooltipSide?: TooltipSide;
56
- /** Pass through to the tooltip. Left unset, the Tooltip decides on its own — it
57
- * portals inside a clipping container (a DataTable's `data-clips` scroller). */
58
- tooltipPortal?: boolean;
59
- /** ms until the button returns to idle. Default 2000. */
60
- resetAfter?: number;
61
- /** Called with the real outcome once the copy settles. */
62
- onCopied?: (ok: boolean) => void;
63
- labels?: LabelOverride<CopyButtonLabels>;
64
- /** The `<button>` in either variant — the {@link IconButton}'s or the {@link Button}'s,
65
- * never the tooltip's wrapper round it (0.35, round 0.35 R4, the follow-up to API-2).
66
- * It rides the rest of the props on to that kit button, whose own ref it is. */
67
- ref?: Ref<HTMLButtonElement>;
68
- }
69
-
70
- const ICONS: Record<CopyState, typeof Copy> = { idle: Copy, copied: Check, failed: X };
71
-
72
- /**
73
- * A button that copies a value and tells the truth about whether it did.
74
- *
75
- * keksdose asked for it after two of its own copy buttons said "Copied" on a build
76
- * where the copy had failed (no Clipboard API over plain http). This one takes its
77
- * state from {@link useCopyToClipboard}, which reads the result, and has a `failed`
78
- * state that looks and sounds different from success.
79
- *
80
- * The result is spoken through {@link useAnnounce}: activating the button moves no
81
- * focus, so without a live region a screen-reader user hears nothing at all. A
82
- * failure goes through an ASSERTIVE region and a success through a polite one — the
83
- * failure is the news that changes what they do next.
84
- *
85
- * The icon variant keeps the SAME accessible name in every state, and the same words on
86
- * screen. A button renaming itself under the focus is announced inconsistently across
87
- * readers; the live region is the channel that is actually heard.
88
- */
89
- export function CopyButton({
90
- text,
91
- variant = "icon",
92
- label,
93
- buttonVariant,
94
- size,
95
- tone,
96
- stopPropagation,
97
- tooltipSide = "top",
98
- tooltipPortal,
99
- resetAfter = 2000,
100
- onCopied,
101
- labels,
102
- className,
103
- disabled,
104
- ...rest
105
- }: CopyButtonProps) {
106
- const words = useKitLabels("copyButton", DEFAULT_COPY_BUTTON_LABELS, labels);
107
- const { state, copy } = useCopyToClipboard({ resetAfter });
108
- const polite = useAnnounce();
109
- const assertive = useAnnounce({ politeness: "assertive" });
110
-
111
- const idleText = label ?? words.copy;
112
- const stateText = state === "copied" ? words.copied : state === "failed" ? words.failed : idleText;
113
- const Icon = ICONS[state];
114
- const iconTone = state === "copied" ? "text-success" : state === "failed" ? "text-danger" : undefined;
115
-
116
- const onClick = async () => {
117
- const ok = await copy(typeof text === "function" ? text() : text);
118
- if (ok) polite.announce(words.copiedAnnouncement);
119
- else assertive.announce(words.failedAnnouncement);
120
- onCopied?.(ok);
121
- };
122
-
123
- const regions = (
124
- <>
125
- <span {...polite.regionProps} />
126
- <span {...assertive.regionProps} />
127
- </>
128
- );
129
-
130
- if (variant === "label") {
131
- return (
132
- <>
133
- <Button
134
- type="button"
135
- {...rest}
136
- disabled={disabled}
137
- variant={buttonVariant ?? "secondary"}
138
- size={size === "sm" || size === "md" ? size : undefined}
139
- tone={tone === "default" || tone === "muted" || tone === "danger" ? tone : undefined}
140
- data-state={state}
141
- onClick={(e) => {
142
- if (stopPropagation) e.stopPropagation();
143
- void onClick();
144
- }}
145
- onKeyDown={(e) => {
146
- if (stopPropagation && (e.key === "Enter" || e.key === " ")) e.stopPropagation();
147
- rest.onKeyDown?.(e);
148
- }}
149
- className={className}
150
- >
151
- <Icon aria-hidden className={cn("size-4 shrink-0", iconTone)} />
152
- {stateText}
153
- </Button>
154
- {regions}
155
- </>
156
- );
157
- }
158
-
159
- // IconButton names itself (0.52, refactor audit 2026-10-30, DSP-21): `label` is the
160
- // bubble — and the text beside the glyph at Large, as on every labelled IconButton —
161
- // and `aria-label` keeps the name steady. A Tooltip of our own round it cloned
162
- // `aria-describedby` onto the button, which then read "Copy, button, Copy".
163
- //
164
- // The idle words, in every state (0.52 code review, deep, charts, finding 8). As the
165
- // state, "Copied" stood at Large beside the glyph of a button named "Copy IBAN": the pill
166
- // changed width on every copy, and the words on screen were not in the name a voice
167
- // user says to press it (WCAG 2.5.3, label in name). The glyph and its colour show the
168
- // result, and the live regions say it.
169
- return (
170
- <>
171
- <IconButton
172
- type="button"
173
- {...rest}
174
- disabled={disabled}
175
- label={idleText}
176
- aria-label={idleText}
177
- tooltipSide={tooltipSide}
178
- tooltipPortal={tooltipPortal}
179
- variant={buttonVariant ?? "ghost"}
180
- size={(size ?? "sm") as IconButtonSize}
181
- tone={tone as IconButtonTone | undefined}
182
- stopPropagation={stopPropagation}
183
- data-state={state}
184
- onClick={() => void onClick()}
185
- className={cn(iconTone, className)}
186
- >
187
- <Icon aria-hidden />
188
- </IconButton>
189
- {regions}
190
- </>
191
- );
192
- }
@@ -1,11 +0,0 @@
1
- // The English words of ./country-select, 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). ./country-select re-exports them.
4
-
5
- import type { CountrySelectLabels } from "./country-select";
6
-
7
- export const DEFAULT_COUNTRY_SELECT_LABELS: CountrySelectLabels = {
8
- country: "Country",
9
- search: "Search country",
10
- others: "Other countries",
11
- };