@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,795 +0,0 @@
1
- import { isValidElement, useContext } from "react";
2
- import type { KeyboardEvent, MouseEvent, ReactElement, ReactNode } from "react";
3
- import { MoreHorizontal } from "lucide-react";
4
- import type { LucideIcon } from "lucide-react";
5
- import { cn } from "../lib/cn";
6
- import { hasContent } from "../lib/presence";
7
- import { useLargeText } from "../hooks/use-large-text";
8
- import { useKitLabels, type LabelOverride } from "../i18n/kit-labels";
9
- import { Popover } from "./popover";
10
- import { Button } from "./button";
11
- import { CompactControls } from "./field-parts";
12
- import { IconButton } from "./icon-button";
13
- import { useCommitReason, type CommitScope } from "./write-lock";
14
- import type { IconButtonGlyphSize, IconButtonSize } from "./icon-button";
15
- import type { TooltipSide } from "./tooltip";
16
- import type { DataTableColumn } from "./data-table";
17
- import { TableHeaderCell, type TableHeaderCellProps } from "./table";
18
- import { DEFAULT_ROW_ACTIONS_LABELS } from "./row-actions-labels";
19
- import { ConfirmContext } from "./confirm-context";
20
- import { ConfirmProvider } from "./confirm-dialog";
21
-
22
- /**
23
- * A row's actions — inline icons at Normal, one "⋯" menu at Large and above
24
- * (docs/text-size-harmonization.md §10.8).
25
- *
26
- * At Large an IconButton shows its label as text (§4). In a dense row — a register's
27
- * action column, a list row's end — every label at once does not fit: Kurvenschmiede
28
- * has 44 IconButtons in rows, kastlan 119. So a row's actions collapse instead, into
29
- * the menu the user roster has used since 0.31 (`UserRowActions`, now built on this):
30
- * one "⋯" button, and a menu with each action's icon AND words, where a locked one stays
31
- * listed and says why.
32
- *
33
- * The data is the roster's `UserRowActionList`, generalised: entries, and `false` /
34
- * `null` for the ones a condition left out (`row.locked || {…}`).
35
- *
36
- * Destructive actions belong in the menu (0.49 KIT-12): a `tone: "danger"` action goes
37
- * into the "⋯" menu while the others stay inline (`dangerPlacement`), and choosing it
38
- * opens a `ConfirmDialog` before `onSelect` runs (`confirm`; `false` to opt out). A
39
- * delete is then never a bin icon in every row, one stray tap from gone.
40
- *
41
- * 0.33 (§10.16): an action carries its state at both sizes — a toggle (`pressed`), a
42
- * disclosure (`expanded`, `controls`), a tone, a tour anchor (`dataTour`) — so a row
43
- * with an "on" share button or a tour step no longer keeps hand-rolled IconButtons at
44
- * Normal and this only at Large (keksdose k15).
45
- */
46
-
47
- /** An action's colour: IconButton's tone inline; in the menu the glyph takes it and the
48
- * words keep the text colour, except `danger`, whose words are the danger text. */
49
- export type RowActionTone = "default" | "muted" | "info" | "warning" | "danger";
50
-
51
- /** One action of a row. */
52
- export interface RowAction {
53
- /** React key. Default: the label. */
54
- key?: string;
55
- /** The action's name: the inline icon's name and tooltip, the menu entry's words. */
56
- label: string;
57
- /**
58
- * Runs it. The kit sends nothing — it calls this, after a `tone: "danger"` action's
59
- * confirmation (see {@link confirm}). Optional only beside `href`; an action has one or
60
- * the other (or both: `onSelect` then runs as the link is followed).
61
- */
62
- onSelect?: () => void;
63
- /**
64
- * 0.49 KIT-12: ask before `onSelect`. A `tone: "danger"` action asks by default — a
65
- * `ConfirmDialog` (the provider's `useConfirm`, else one of its own) titled with the
66
- * action and the row's name, "Delete “Ada Example”?", the consequence under it
67
- * (`rowActions.confirmBody`), the action's label on the danger button and focus on
68
- * Cancel. Pass the words to say more, or `false` when the app confirms in `onSelect`
69
- * itself or offers an undo instead. Any other tone asks only when given one. Not for
70
- * an `href` action: a link only navigates.
71
- */
72
- confirm?: boolean | RowActionConfirm;
73
- /**
74
- * The action NAVIGATES — an edit page, a mail to compose (0.32.1, kastlan's 0.32
75
- * report): a real link inline and in the menu, so open in a new tab, a middle click
76
- * and the URL on hover work, which `onSelect` + `navigate` lost. The kit's link rule
77
- * applies ({@link Button}'s `href`): in-app through the provider's `linkComponent`, an
78
- * external or `#anchor` one a plain `<a>`, `mailto:` included.
79
- *
80
- * A link cannot carry a reason or a spinner, so an action with a `disabledReason`
81
- * (or under a write lock, with `commit`) or `pending` stays a button and says why.
82
- */
83
- href?: string;
84
- /** With `href`: leaves the app — a new tab, and a screen reader is told so. */
85
- external?: boolean;
86
- /**
87
- * The glyph: a Lucide icon (`Pencil`), or an element (`<Pencil />`, an app's own
88
- * svg) — DataTable's `rowActions` hand their `icon` node through. Inline, an action
89
- * without one is a small text button; in the menu it is the words alone.
90
- */
91
- icon?: LucideIcon | ReactElement;
92
- /**
93
- * `danger` for delete, revoke, erase: the quiet red of IconButton's `tone="danger"`
94
- * inline, the danger text tone in the menu. `muted` (an open or add that should not
95
- * compete), `info` (a notice-worthy, harmless action: keksdose's reconcile) and
96
- * `warning` (a flag that wants attention): IconButton's tone inline; in the menu the
97
- * glyph takes it and the words keep the text colour, so `muted` looks like `default`
98
- * there (0.33).
99
- */
100
- tone?: RowActionTone;
101
- /** Why it is not available for this row. It stays listed, focusable, and says so — an
102
- * action that silently vanished would leave the reader looking for it. */
103
- disabledReason?: ReactNode;
104
- /**
105
- * This action COMMITS — it saves, sends, deletes: under a locked
106
- * {@link WriteLockProvider} it is refused with the lock's reason, as {@link Button}'s
107
- * `commit` is, inline and in the menu alike. No provider, or an unlocked one: no effect.
108
- */
109
- commit?: CommitScope;
110
- /**
111
- * In flight — the request it started has not answered. Inline, the icon turns into
112
- * IconButton's spinner (`pending`); collapsed, the "⋯" button does, since the menu
113
- * closed when the action was chosen. Either way nothing in the row can be pressed again
114
- * until it settles: the "⋯" opens no menu while busy.
115
- */
116
- pending?: boolean;
117
- /**
118
- * Not available for a moment, with nothing to explain — another action of the list
119
- * is in flight (an admin panel's `busy`). The plain `disabled`; a lasting refusal is a
120
- * `disabledReason`, which says why.
121
- */
122
- disabled?: boolean;
123
- /** Leave it out for this row. */
124
- hidden?: boolean;
125
- /**
126
- * A toggle (0.33): `aria-pressed` and IconButton's "on" look inline, `aria-pressed` on
127
- * the menu entry. Keep the label the same in both states ("Share budget"): the pressed
128
- * state already says whether it is on. Not on an `href` action — a link is not a
129
- * toggle — nor with `expanded`.
130
- */
131
- pressed?: boolean;
132
- /**
133
- * Opens or closes something IN THE PAGE (0.33) — a share card under the row, an
134
- * add-category row: `aria-expanded`, inline and on the menu entry. Not with `pressed`:
135
- * a disclosure says open, not on. Not on an `href` action.
136
- */
137
- expanded?: boolean;
138
- /** The `id` of what `expanded` opens: `aria-controls`, inline and on the menu entry. */
139
- controls?: string;
140
- /**
141
- * A tour anchor (0.33, §10.18): `data-tour` on ONE element per action at a time.
142
- * Inline, on the action's own control (the IconButton, the small text button, the
143
- * link). Collapsed, on an `aria-hidden` box laid over the "⋯" button — `[data-tour=x]`
144
- * resolves to a box the size of the "⋯", whose `data-slot="row-actions"` box holds the
145
- * button, two anchored actions in one row don't fight over one attribute, and a tap
146
- * still reaches the button. Never on the entry in the open menu: the kit's tour takes
147
- * the first visible match and the menu is portalled after the row, so a copy there
148
- * would never be found, only make the selector match twice. The kit's name for it, as
149
- * `AppShellNavItem.dataTour`.
150
- */
151
- dataTour?: string;
152
- }
153
-
154
- /** The words of a {@link RowAction.confirm}; each defaults as described there. */
155
- export interface RowActionConfirm {
156
- title?: ReactNode;
157
- body?: ReactNode;
158
- confirmLabel?: ReactNode;
159
- }
160
-
161
- /** What a row's actions may be: entries, and `false` / `null` / `undefined` for the ones
162
- * a condition left out. */
163
- export type RowActionList = readonly (RowAction | false | null | undefined)[];
164
-
165
- export interface RowActionsLabels {
166
- /** The menu button's name when the row has no name of its own; also the actions
167
- * column's (hidden) header in {@link rowActionsColumn}. */
168
- actions: string;
169
- /** The menu button's name, given the row's: "Actions for Ada Example". */
170
- actionsFor: (name: string) => string;
171
- /** 0.49 KIT-12: a danger action's confirmation title, given the action's label and the
172
- * row's name when it has one: "Delete “Ada Example”?", "Delete?". */
173
- confirmTitle: (action: string, name?: string) => string;
174
- /** 0.49 KIT-12: the line under it — "This cannot be undone." */
175
- confirmBody: string;
176
- }
177
-
178
- // Defined in ./row-actions-labels, which holds no component code (0.34, KS U8).
179
- export { DEFAULT_ROW_ACTIONS_LABELS };
180
-
181
- /**
182
- * - `"auto"` (default): the icons inline at Normal; the "⋯" menu at Large and Extra
183
- * large once there are two or more (§10.8). A single action stays inline at every
184
- * size, with its label as text at Large — one label fits a row, and a menu of one is
185
- * a detour.
186
- * - `"menu"`: the menu at every size — the roster's choice, whose actions grow (§2.4
187
- * there) and do not fit a phone card as a strip.
188
- * - `"inline"`: the icons at every size — for a row the app knows has room; at Large
189
- * each then shows its label (IconButton's `labelVisible`).
190
- */
191
- export type RowActionsCollapse = "auto" | "menu" | "inline";
192
-
193
- /** The sizes a row action comes in: IconButton's row steps. `2xs` is DataTable's
194
- * compact density. At Large every one is at least a 48 px target (IconButton). */
195
- export type RowActionsSize = Extract<IconButtonSize, "md" | "sm" | "xs" | "2xs">;
196
-
197
- export interface RowActionsProps {
198
- actions: RowActionList;
199
- /**
200
- * 0.49 KIT-12: where `tone: "danger"` actions go while the others are inline. `"menu"`
201
- * (default): into the row's "⋯" menu, so a delete is never one stray tap in every
202
- * row — the other actions stay icons beside it. `"inline"`: an icon like the rest.
203
- * `collapse="inline"` keeps every action inline, `collapse="menu"` every one in the menu.
204
- */
205
- dangerPlacement?: "menu" | "inline";
206
- /** The row's name, for the menu button's name — "Actions for Ada Example". Without it
207
- * (or `null`, as API fields often are) the button is "Actions". */
208
- name?: string | null;
209
- /** When the actions collapse into the menu — see {@link RowActionsCollapse}. */
210
- collapse?: RowActionsCollapse;
211
- /** The inline icons' and the "⋯" button's size. Default `xs`, a list row's action. */
212
- size?: RowActionsSize;
213
- /** The menu's width. Default `"15rem"`, in rem so it grows with the words (§3.2). */
214
- menuWidth?: `${number}rem`;
215
- /** On the wrapper: the inline strip, or the box round the "⋯" button. */
216
- className?: string;
217
- /** The inline glyphs' size, IconButton's `glyphSize` — e.g. 14 in a dense header strip
218
- * (keksdose's category group header). The "⋯" button keeps its box's own. */
219
- glyphSize?: IconButtonGlyphSize;
220
- /** The inline tooltips' side, IconButton's `tooltipSide` — `"start"` for a table's last
221
- * column, so a bubble does not run off the row's end. Per row: every inline action. */
222
- tooltipSide?: TooltipSide;
223
- labels?: LabelOverride<RowActionsLabels>;
224
- }
225
-
226
- function visibleActions(actions: RowActionList): RowAction[] {
227
- return actions.filter((a): a is RowAction => Boolean(a) && !(a as RowAction).hidden);
228
- }
229
-
230
- /** An action's glyph as a node: a component is rendered, an element is used as is. */
231
- function glyphOf(icon: RowAction["icon"]): ReactNode {
232
- if (icon === undefined) return null;
233
- if (isValidElement(icon)) return icon;
234
- const Icon = icon as LucideIcon;
235
- return <Icon />;
236
- }
237
-
238
- /** The menu glyph's tint per tone (0.33): the words keep the text colour, so the glyph
239
- * carries `info` and `warning` — IconButton's toned colours. `danger` colours the words
240
- * through Button's tone, and `muted` is the default look in a menu. */
241
- const MENU_GLYPH_TONE: Partial<Record<RowActionTone, string>> = {
242
- info: "text-info",
243
- warning: "text-warning",
244
- };
245
-
246
- /** The state an action's control says, inline and in the menu alike: `aria-expanded` and
247
- * `aria-controls` for a disclosure (a toggle's `aria-pressed` goes through the button's
248
- * own `pressed`, which also draws the "on" look). */
249
- function stateAttrs(action: RowAction) {
250
- return {
251
- "aria-expanded": action.expanded,
252
- "aria-controls": action.expanded === undefined ? undefined : action.controls,
253
- };
254
- }
255
-
256
- /** An action's tone on its inline control, for a caller's CSS and a test: `data-tone`,
257
- * left off for the default look. */
258
- function toneAttr(tone: RowActionTone | undefined) {
259
- return { "data-tone": tone === undefined || tone === "default" ? undefined : tone };
260
- }
261
-
262
- /**
263
- * A row's actions, inline or as a "⋯" menu — see {@link RowActionsCollapse}. Every
264
- * control stops its click (and the Enter/Space it stands for) from reaching the row, so
265
- * a clickable row or a DataTable `rowLink` does not open as well; in a DataTable column
266
- * also set `noRowLink: true` and `role: "actions"`, as {@link rowActionsColumn} does.
267
- *
268
- * Inline, the icons sit in a {@link CompactControls} region at Normal: their labels
269
- * stay the names and the tooltips, and a locked one keeps its reason in the tooltip — a
270
- * line under one icon of a row would break the row. In the menu a locked action's
271
- * reason is a line under its words at Large and on touch (Button's
272
- * `disabledReasonDisplay`).
273
- *
274
- * The menu is portalled, so a table's scroller cannot clip it; Escape and an outside
275
- * press close it, and focus goes back to the "⋯" button, which is where a confirmation
276
- * dialog then returns it.
277
- */
278
- export function RowActions(props: RowActionsProps) {
279
- const outer = useContext(ConfirmContext);
280
- // A danger action asks first (0.49 KIT-12). Under the app's ConfirmProvider through
281
- // it; without one, through a provider of this row's own — only when there is
282
- // something to ask, so a plain row adds nothing.
283
- if (outer === null && visibleActions(props.actions).some(asksFirst)) {
284
- return (
285
- <ConfirmProvider>
286
- <RowActionsBody {...props} />
287
- </ConfirmProvider>
288
- );
289
- }
290
- return <RowActionsBody {...props} />;
291
- }
292
-
293
- /** Whether choosing `action` opens a confirmation first: a danger action unless it says
294
- * `confirm: false`, any other when it passes one; never a link. */
295
- function asksFirst(action: RowAction): boolean {
296
- if (action.href !== undefined || action.confirm === false) return false;
297
- return action.confirm !== undefined || action.tone === "danger";
298
- }
299
-
300
- /** `action.onSelect`, after its confirmation when it {@link asksFirst}. */
301
- function useRunAction(name: string | null | undefined, labels: RowActionsLabels) {
302
- const confirm = useContext(ConfirmContext);
303
- return (action: RowAction) => {
304
- if (!asksFirst(action) || confirm === null) {
305
- action.onSelect?.();
306
- return;
307
- }
308
- const words = typeof action.confirm === "object" ? action.confirm : {};
309
- void confirm({
310
- title: words.title ?? labels.confirmTitle(action.label, name ?? undefined),
311
- body: words.body ?? labels.confirmBody,
312
- confirmLabel: words.confirmLabel ?? action.label,
313
- tone: "danger",
314
- commit: action.commit,
315
- }).then((ok) => {
316
- if (ok) action.onSelect?.();
317
- });
318
- };
319
- }
320
-
321
- function RowActionsBody({
322
- actions,
323
- name,
324
- collapse = "auto",
325
- dangerPlacement = "menu",
326
- size = "xs",
327
- menuWidth = "15rem",
328
- className,
329
- glyphSize,
330
- tooltipSide,
331
- labels: labelsProp,
332
- }: RowActionsProps) {
333
- const labels = useKitLabels("rowActions", DEFAULT_ROW_ACTIONS_LABELS, labelsProp);
334
- const large = useLargeText();
335
- const run = useRunAction(name, labels);
336
- const entries = visibleActions(actions);
337
- if (entries.length === 0) return null;
338
- const asMenu = collapse === "menu" || (collapse === "auto" && large && entries.length > 1);
339
- // Inline, a danger action still goes into the "⋯" menu (KIT-12) unless the app keeps it
340
- // inline: the other actions stay icons, the menu holds the destructive ones.
341
- const toMenu = (action: RowAction) =>
342
- asMenu || (collapse === "auto" && dangerPlacement === "menu" && action.tone === "danger");
343
- const inline = entries.filter((action) => !toMenu(action));
344
- const menu = entries.filter(toMenu);
345
- const title = name ? labels.actionsFor(name) : labels.actions;
346
- const menuButton = menu.length > 0 && (
347
- <RowActionsMenu
348
- entries={menu}
349
- title={title}
350
- size={size}
351
- menuWidth={menuWidth}
352
- run={run}
353
- className={inline.length === 0 ? className : undefined}
354
- />
355
- );
356
- if (inline.length === 0) return menuButton || null;
357
- const strip = (
358
- <div data-slot="row-actions" className={cn("inline-flex items-center gap-0.5", className)}>
359
- {inline.map((action) => (
360
- <InlineAction
361
- key={action.key ?? action.label}
362
- action={action}
363
- size={size}
364
- glyphSize={glyphSize}
365
- tooltipSide={tooltipSide}
366
- run={run}
367
- />
368
- ))}
369
- {menuButton}
370
- </div>
371
- );
372
- // Compact at Normal (no room for a reason line in a row); at Large an inline action
373
- // is the app's choice ("inline") or the row's only one, and shows its words.
374
- return large ? strip : <CompactControls>{strip}</CompactControls>;
375
- }
376
-
377
- /** The "⋯" button and its menu of `entries`. */
378
- function RowActionsMenu({
379
- entries,
380
- title,
381
- size,
382
- menuWidth,
383
- run,
384
- className,
385
- }: {
386
- entries: RowAction[];
387
- title: string;
388
- size: RowActionsSize;
389
- menuWidth: `${number}rem`;
390
- run: (action: RowAction) => void;
391
- className?: string;
392
- }) {
393
- // The menu closed when the action was chosen, so what is in flight shows on "⋯".
394
- const busy = entries.some((action) => action.pending);
395
- const anchored = entries.filter((action) => action.dataTour);
396
- return (
397
- // The "⋯" in a box of its own, the inline strip's slot: the tour anchors of the
398
- // collapsed actions lie over the button in it (see `dataTour`), and `className`
399
- // places the box as it places the strip.
400
- <div data-slot="row-actions" className={cn("relative inline-flex", className)}>
401
- <Popover
402
- width={menuWidth}
403
- aria-label={title}
404
- className="p-1"
405
- trigger={({ open, toggle, ref }) => (
406
- <IconButton
407
- ref={ref}
408
- size={size}
409
- label={title}
410
- // "⋯" is read by everyone as "more actions"; the menu it opens is the words.
411
- labelVisible={false}
412
- aria-haspopup="dialog"
413
- aria-expanded={open}
414
- pending={busy}
415
- stopPropagation
416
- onClick={toggle}
417
- >
418
- <MoreHorizontal />
419
- </IconButton>
420
- )}
421
- // React carries an event out of a portal along the COMPONENT tree, so a click in
422
- // the menu reached a clickable row or a DataTable `onRowClick` the menu was opened
423
- // from, though the panel is nowhere near it in the page — only the "⋯" trigger
424
- // stopped its own (keksdose's 0.32 report). Stopped on the PANEL itself, its padding
425
- // and border included (0.32.2: 0.32.1 stopped it on an inner box, and a click on
426
- // the panel's `p-1` still went through): clicks, and the Enter / Space a row also
427
- // listens for. Escape goes on, to the popover's own handler that closes it.
428
- onClick={stopClick}
429
- onKeyDown={stopActivationKeys}
430
- >
431
- {(close) => (
432
- <ul data-slot="row-actions-menu" className="space-y-0.5">
433
- {entries.map((action) => (
434
- <li key={action.key ?? action.label}>
435
- <MenuAction action={action} close={close} run={run} />
436
- </li>
437
- ))}
438
- </ul>
439
- )}
440
- </Popover>
441
- {anchored.map((action) => (
442
- // The More cell's TourAnchor: decoration over the button, which keeps every tap.
443
- <span
444
- key={action.key ?? action.label}
445
- aria-hidden
446
- data-tour={action.dataTour}
447
- className="pointer-events-none absolute inset-0"
448
- />
449
- ))}
450
- </div>
451
- );
452
- }
453
-
454
- function stopClick(e: MouseEvent) {
455
- e.stopPropagation();
456
- }
457
-
458
- function stopActivationKeys(e: KeyboardEvent) {
459
- if (e.key === "Enter" || e.key === " ") e.stopPropagation();
460
- }
461
-
462
- /**
463
- * The `href` an action renders as a link with, or `undefined` for a button: a link
464
- * cannot carry a reason or a spinner (Button's link form has neither), so a refused
465
- * action — its own `disabledReason`, or a write lock on a `commit` — and a pending one
466
- * stay buttons and say so.
467
- */
468
- function useActionHref(action: RowAction): string | undefined {
469
- const reason = useCommitReason(action.commit, action.disabledReason);
470
- const refused = hasContent(reason);
471
- return action.href !== undefined && !action.pending && !refused ? action.href : undefined;
472
- }
473
-
474
- /** One entry of the "⋯" menu: the words, as a link for an `href`, else a button. */
475
- function MenuAction({
476
- action,
477
- close,
478
- run,
479
- }: {
480
- action: RowAction;
481
- close: () => void;
482
- run: (action: RowAction) => void;
483
- }) {
484
- const href = useActionHref(action);
485
- const glyph = glyphOf(action.icon);
486
- const glyphTone = action.tone === undefined ? undefined : MENU_GLYPH_TONE[action.tone];
487
- const words = (
488
- <>
489
- {glyph && (
490
- <span
491
- aria-hidden
492
- data-tone={glyphTone ? action.tone : undefined}
493
- className={cn("flex shrink-0 [&_svg]:size-4", glyphTone)}
494
- >
495
- {glyph}
496
- </span>
497
- )}
498
- {action.label}
499
- </>
500
- );
501
- const tone = action.tone === "danger" ? "danger" : undefined;
502
- const select = () => {
503
- close();
504
- run(action);
505
- };
506
- if (href !== undefined) {
507
- return (
508
- <Button
509
- href={href}
510
- external={action.external}
511
- variant="ghost"
512
- size="sm"
513
- stretch
514
- tone={tone}
515
- disabled={action.disabled}
516
- className="w-full justify-start text-start"
517
- onClick={select}
518
- >
519
- {words}
520
- </Button>
521
- );
522
- }
523
- return (
524
- <Button
525
- {...stateAttrs(action)}
526
- type="button"
527
- variant="ghost"
528
- size="sm"
529
- stretch
530
- tone={tone}
531
- pressed={action.pressed}
532
- disabledReason={action.disabledReason}
533
- commit={action.commit}
534
- pending={action.pending}
535
- disabled={action.disabled}
536
- className="w-full justify-start text-start"
537
- onClick={select}
538
- >
539
- {words}
540
- </Button>
541
- );
542
- }
543
-
544
- /** One inline action: an IconButton with its icon, else a small text button — each a
545
- * link for an `href` (see {@link useActionHref}). The control carries the action's
546
- * state, its tone and its tour anchor. */
547
- function InlineAction({
548
- action,
549
- size,
550
- glyphSize,
551
- tooltipSide,
552
- run,
553
- }: {
554
- action: RowAction;
555
- size: RowActionsSize;
556
- glyphSize?: IconButtonGlyphSize;
557
- tooltipSide?: TooltipSide;
558
- run: (action: RowAction) => void;
559
- }) {
560
- const href = useActionHref(action);
561
- const glyph = glyphOf(action.icon);
562
- const iconTone = action.tone === "default" ? undefined : action.tone;
563
- // A text button has Button's two tones; `info` and `warning` are a glyph's colours.
564
- const textTone = action.tone === "danger" || action.tone === "muted" ? action.tone : undefined;
565
- const marks = { "data-tour": action.dataTour, ...toneAttr(action.tone) };
566
- if (glyph) {
567
- if (href !== undefined) {
568
- return (
569
- <IconButton
570
- {...marks}
571
- href={href}
572
- external={action.external}
573
- size={size}
574
- glyphSize={glyphSize}
575
- label={action.label}
576
- tooltipSide={tooltipSide}
577
- tone={iconTone}
578
- disabled={action.disabled}
579
- stopPropagation
580
- onClick={() => action.onSelect?.()}
581
- >
582
- {glyph}
583
- </IconButton>
584
- );
585
- }
586
- return (
587
- <IconButton
588
- {...marks}
589
- {...stateAttrs(action)}
590
- size={size}
591
- glyphSize={glyphSize}
592
- label={action.label}
593
- tooltipSide={tooltipSide}
594
- tone={iconTone}
595
- pressed={action.pressed}
596
- disabledReason={action.disabledReason}
597
- commit={action.commit}
598
- pending={action.pending}
599
- disabled={action.disabled}
600
- stopPropagation
601
- onClick={() => run(action)}
602
- >
603
- {glyph}
604
- </IconButton>
605
- );
606
- }
607
- // A row listening for clicks must not open as well (IconButton's stopPropagation).
608
- const stop = {
609
- onClick: (e: MouseEvent) => {
610
- e.stopPropagation();
611
- run(action);
612
- },
613
- onKeyDown: (e: KeyboardEvent) => {
614
- if (e.key === "Enter" || e.key === " ") e.stopPropagation();
615
- },
616
- };
617
- if (href !== undefined) {
618
- return (
619
- <Button
620
- {...marks}
621
- href={href}
622
- external={action.external}
623
- variant="ghost"
624
- size="sm"
625
- tone={textTone}
626
- disabled={action.disabled}
627
- {...stop}
628
- >
629
- {action.label}
630
- </Button>
631
- );
632
- }
633
- return (
634
- <Button
635
- {...marks}
636
- {...stateAttrs(action)}
637
- type="button"
638
- variant="ghost"
639
- size="sm"
640
- tone={textTone}
641
- pressed={action.pressed}
642
- disabledReason={action.disabledReason}
643
- commit={action.commit}
644
- pending={action.pending}
645
- disabled={action.disabled}
646
- {...stop}
647
- >
648
- {action.label}
649
- </Button>
650
- );
651
- }
652
-
653
- /** The actions column's heading, in the provider's words: on screen since 0.46.1 (keksdose
654
- * dev#598 rework), a screen reader's name only with `hidden`. */
655
- function RowActionsHeader({
656
- text,
657
- labels,
658
- hidden,
659
- }: {
660
- text?: string;
661
- labels?: LabelOverride<RowActionsLabels>;
662
- hidden?: boolean;
663
- }) {
664
- const resolved = useKitLabels("rowActions", DEFAULT_ROW_ACTIONS_LABELS, labels);
665
- const word = text ?? resolved.actions;
666
- return hidden ? <span className="sr-only">{word}</span> : <>{word}</>;
667
- }
668
-
669
- /** The actions cell's classes — `rowActionsColumn`'s `className`: the column hugs its
670
- * buttons, on one line, at the row's end. A hand-built table's `<TableCell>` takes them
671
- * around its {@link RowActions} (0.47, keksdose N17). */
672
- export const ROW_ACTIONS_CELL_CLASS = "w-px whitespace-nowrap text-end";
673
- /** The actions heading's classes — `rowActionsColumn`'s `headClassName`, which
674
- * {@link RowActionsHead} draws: hugging, end-aligned over the buttons (0.47, N17). */
675
- export const ROW_ACTIONS_HEAD_CLASS = "w-px text-end";
676
-
677
- export interface RowActionsHeadProps extends Omit<TableHeaderCellProps, "children"> {
678
- /** The heading. Default: the provider's `rowActions.actions` ("Actions"). */
679
- children?: ReactNode;
680
- /** Named for a screen reader only — `rowActionsColumn`'s `header: false`. */
681
- hideLabel?: boolean;
682
- labels?: LabelOverride<RowActionsLabels>;
683
- }
684
-
685
- /**
686
- * A hand-built table's actions heading (0.47, keksdose N17): the `<th>` `rowActionsColumn`
687
- * gives a DataTable — "Actions" on screen in the provider's words, end-aligned over the
688
- * buttons, hugging them. Pair it with `<TableCell className={ROW_ACTIONS_CELL_CLASS}>`
689
- * around each row's {@link RowActions}. Every other `TableHeaderCell` prop passes on
690
- * (`size`, the app's `className`, merged last).
691
- *
692
- * <RowActionsHead size="sm" className={TH} />
693
- */
694
- export function RowActionsHead({ children, hideLabel, labels, className, ...rest }: RowActionsHeadProps) {
695
- return (
696
- <TableHeaderCell align="end" {...rest} className={cn(ROW_ACTIONS_HEAD_CLASS, className)}>
697
- {typeof children === "string" || children == null ? (
698
- <RowActionsHeader text={children ?? undefined} labels={labels} hidden={hideLabel} />
699
- ) : (
700
- children
701
- )}
702
- </TableHeaderCell>
703
- );
704
- }
705
-
706
- export interface RowActionsColumnOptions<T> {
707
- /** The column's key. Default `"actions"`. */
708
- key?: string;
709
- /** The row's actions — `false` / `null` for the ones a condition leaves out. */
710
- actions: (row: T) => RowActionList;
711
- /** The row's name, for the "⋯" button's name ("Actions for Ada Example"). `null` and
712
- * `undefined` both mean "Actions". */
713
- name?: (row: T) => string | null | undefined;
714
- collapse?: RowActionsCollapse;
715
- /** Default `xs`. */
716
- size?: RowActionsSize;
717
- /** See {@link RowActionsProps.glyphSize}. */
718
- glyphSize?: IconButtonGlyphSize;
719
- /** See {@link RowActionsProps.tooltipSide} — `"start"` in a table's last column. */
720
- tooltipSide?: TooltipSide;
721
- /**
722
- * The column's name as plain text — the column-settings checklist and the phone
723
- * card's label read it (`DataTableColumn.headerText`). Pass the app's own word; left
724
- * out, the heading shows the provider's `rowActions.actions` and the plain-text
725
- * places fall back to the column's `key`.
726
- */
727
- headerText?: string;
728
- /**
729
- * The heading (0.46.1, keksdose dev#598 rework — Marcel: a VISIBLE "Actions" heading on
730
- * every table with an actions column). Default: `headerText`, else the provider's
731
- * `rowActions.actions` ("Actions"), shown, end-aligned over the buttons. A node
732
- * replaces it; `false` keeps the pre-0.46.1 heading, named for a screen reader only.
733
- */
734
- header?: ReactNode | false;
735
- labels?: LabelOverride<RowActionsLabels>;
736
- /** Anything else for the column (`mobileHidden`, `cellProps`, another `role`…), merged last. */
737
- column?: Partial<DataTableColumn<T>>;
738
- }
739
-
740
- /**
741
- * A DataTable column of {@link RowActions} — an app's action column in one line
742
- * (§10.8): inline icons at Normal, the "⋯" menu at Large with two or more actions.
743
- *
744
- * columns={[...columns, rowActionsColumn({ actions: (r) => [...], name: (r) => r.name })]}
745
- *
746
- * The heading says "Actions" on screen (0.46.1; `header` changes or hides it), the
747
- * column hugs its content at the row's end, and `noRowLink` keeps a `rowHref` anchor off it, so the
748
- * buttons keep their own clicks. It is `role: "actions"` (0.49 KIT-7): DataTable's default
749
- * phone card draws it after its three fields, at the card's end, and never counts it as
750
- * one of them. Set `column: { mobileHidden: true }` to drop it there (with
751
- * `mobileDetailsInRow` it then shows in the opened row instead).
752
- */
753
- export function rowActionsColumn<T>({
754
- key = "actions",
755
- actions,
756
- name,
757
- collapse,
758
- size,
759
- glyphSize,
760
- tooltipSide,
761
- headerText,
762
- header,
763
- labels,
764
- column,
765
- }: RowActionsColumnOptions<T>): DataTableColumn<T> {
766
- return {
767
- key,
768
- header:
769
- header === false || header == null ? (
770
- <RowActionsHeader text={headerText} labels={labels} hidden={header === false} />
771
- ) : (
772
- header
773
- ),
774
- headerText,
775
- cell: (row) => (
776
- <RowActions
777
- actions={actions(row)}
778
- name={name?.(row)}
779
- collapse={collapse}
780
- size={size}
781
- glyphSize={glyphSize}
782
- tooltipSide={tooltipSide}
783
- labels={labels}
784
- />
785
- ),
786
- className: ROW_ACTIONS_CELL_CLASS,
787
- // The heading over the buttons, at the row's end (0.46.1); a hand-built table's
788
- // `RowActionsHead` (0.47).
789
- headClassName: ROW_ACTIONS_HEAD_CLASS,
790
- noRowLink: true,
791
- // After the phone card's fields, never one of them (0.49 KIT-7).
792
- role: "actions",
793
- ...column,
794
- };
795
- }