@eifi1/ui-kit 0.53.0 → 0.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (902) hide show
  1. package/README.md +96 -82
  2. package/dist/account/delete-account-setting.d.ts +3 -2
  3. package/dist/account/delete-account-setting.js.map +1 -1
  4. package/dist/admin/plan-change.js +2 -2
  5. package/dist/admin/plan-change.js.map +1 -1
  6. package/dist/admin/user-roster.d.ts +6 -0
  7. package/dist/admin/user-roster.js +4 -0
  8. package/dist/admin/user-roster.js.map +1 -1
  9. package/dist/auth/auth-errors.d.ts +36 -0
  10. package/dist/auth/auth-errors.js +20 -0
  11. package/dist/auth/auth-errors.js.map +1 -1
  12. package/dist/billing/billing-labels.d.ts +26 -0
  13. package/dist/billing/billing-labels.js +9 -0
  14. package/dist/billing/billing-labels.js.map +1 -1
  15. package/dist/billing/subscription-standing.d.ts +61 -0
  16. package/dist/billing/subscription-standing.js +51 -0
  17. package/dist/billing/subscription-standing.js.map +1 -0
  18. package/dist/billing/usage-meter.d.ts +52 -0
  19. package/dist/billing/usage-meter.js +52 -0
  20. package/dist/billing/usage-meter.js.map +1 -0
  21. package/dist/chart.d.ts +1 -0
  22. package/dist/chart.js +4 -0
  23. package/dist/chart.js.map +1 -1
  24. package/dist/components/alert-banner.js +2 -3
  25. package/dist/components/alert-banner.js.map +1 -1
  26. package/dist/components/amount-input.d.ts +2 -1
  27. package/dist/components/amount-input.js +3 -15
  28. package/dist/components/amount-input.js.map +1 -1
  29. package/dist/components/autocomplete.js +2 -2
  30. package/dist/components/autocomplete.js.map +1 -1
  31. package/dist/components/bulk-action-bar.js +2 -1
  32. package/dist/components/bulk-action-bar.js.map +1 -1
  33. package/dist/components/button.d.ts +35 -1
  34. package/dist/components/button.js +5 -9
  35. package/dist/components/button.js.map +1 -1
  36. package/dist/components/calendar-heatmap.js +6 -4
  37. package/dist/components/calendar-heatmap.js.map +1 -1
  38. package/dist/components/camera-button.d.ts +89 -0
  39. package/dist/components/camera-button.js +122 -0
  40. package/dist/components/camera-button.js.map +1 -0
  41. package/dist/components/camera-capture.d.ts +66 -0
  42. package/dist/components/camera-capture.js +190 -0
  43. package/dist/components/camera-capture.js.map +1 -0
  44. package/dist/components/camera-labels.d.ts +20 -0
  45. package/dist/components/camera-labels.js +15 -0
  46. package/dist/components/camera-labels.js.map +1 -0
  47. package/dist/components/chart-edge.d.ts +9 -0
  48. package/dist/components/chart-edge.js +14 -3
  49. package/dist/components/chart-edge.js.map +1 -1
  50. package/dist/components/chart-zoom-core.js +34 -29
  51. package/dist/components/chart-zoom-core.js.map +1 -1
  52. package/dist/components/checkbox-group.js +1 -1
  53. package/dist/components/checkbox-group.js.map +1 -1
  54. package/dist/components/combobox-core.js +3 -2
  55. package/dist/components/combobox-core.js.map +1 -1
  56. package/dist/components/combobox.js +2 -2
  57. package/dist/components/combobox.js.map +1 -1
  58. package/dist/components/consent-again-notice-labels.d.ts +25 -0
  59. package/dist/components/consent-again-notice-labels.js +15 -0
  60. package/dist/components/consent-again-notice-labels.js.map +1 -0
  61. package/dist/components/consent-again-notice.d.ts +85 -0
  62. package/dist/components/consent-again-notice.js +94 -0
  63. package/dist/components/consent-again-notice.js.map +1 -0
  64. package/dist/components/country-select.js +2 -7
  65. package/dist/components/country-select.js.map +1 -1
  66. package/dist/components/currency-option-list.d.ts +2 -1
  67. package/dist/components/currency-option-list.js +10 -3
  68. package/dist/components/currency-option-list.js.map +1 -1
  69. package/dist/components/currency-select.d.ts +3 -1
  70. package/dist/components/currency-select.js +2 -2
  71. package/dist/components/currency-select.js.map +1 -1
  72. package/dist/components/danger-confirm.d.ts +22 -1
  73. package/dist/components/danger-confirm.js +52 -30
  74. package/dist/components/danger-confirm.js.map +1 -1
  75. package/dist/components/data-table-column-settings.js +2 -2
  76. package/dist/components/data-table-column-settings.js.map +1 -1
  77. package/dist/components/data-table-filter-popover.d.ts +2 -1
  78. package/dist/components/data-table-filter-popover.js +3 -2
  79. package/dist/components/data-table-filter-popover.js.map +1 -1
  80. package/dist/components/data-table-filters.d.ts +33 -3
  81. package/dist/components/data-table-filters.js +6 -4
  82. package/dist/components/data-table-filters.js.map +1 -1
  83. package/dist/components/data-table-fit.js.map +1 -1
  84. package/dist/components/data-table-virtual.js +13 -3
  85. package/dist/components/data-table-virtual.js.map +1 -1
  86. package/dist/components/date-field.js +2 -2
  87. package/dist/components/date-field.js.map +1 -1
  88. package/dist/components/date-picker.js +2 -2
  89. package/dist/components/date-picker.js.map +1 -1
  90. package/dist/components/date-range-picker.js +2 -6
  91. package/dist/components/date-range-picker.js.map +1 -1
  92. package/dist/components/dialog-frame.d.ts +5 -1
  93. package/dist/components/dialog-frame.js +6 -2
  94. package/dist/components/dialog-frame.js.map +1 -1
  95. package/dist/components/dropdown.js +7 -3
  96. package/dist/components/dropdown.js.map +1 -1
  97. package/dist/components/entity-combobox.js +2 -2
  98. package/dist/components/entity-combobox.js.map +1 -1
  99. package/dist/components/field-parts.d.ts +108 -6
  100. package/dist/components/field-parts.js +59 -6
  101. package/dist/components/field-parts.js.map +1 -1
  102. package/dist/components/field-suggestion-labels.d.ts +2 -0
  103. package/dist/components/field-suggestion-labels.js +10 -0
  104. package/dist/components/field-suggestion-labels.js.map +1 -0
  105. package/dist/components/field.js +1 -1
  106. package/dist/components/field.js.map +1 -1
  107. package/dist/components/file-button.d.ts +1 -1
  108. package/dist/components/file-button.js.map +1 -1
  109. package/dist/components/floating-panel.d.ts +7 -6
  110. package/dist/components/floating-panel.js +3 -17
  111. package/dist/components/floating-panel.js.map +1 -1
  112. package/dist/components/form-actions.d.ts +3 -2
  113. package/dist/components/form-actions.js.map +1 -1
  114. package/dist/components/hover-menu.js +3 -2
  115. package/dist/components/hover-menu.js.map +1 -1
  116. package/dist/components/icon-button.d.ts +23 -5
  117. package/dist/components/icon-button.js +6 -8
  118. package/dist/components/icon-button.js.map +1 -1
  119. package/dist/components/inline-confirm.js +2 -1
  120. package/dist/components/inline-confirm.js.map +1 -1
  121. package/dist/components/inline-entity-combobox.js +2 -2
  122. package/dist/components/inline-entity-combobox.js.map +1 -1
  123. package/dist/components/input.js +2 -2
  124. package/dist/components/input.js.map +1 -1
  125. package/dist/components/jump-calendar.js +3 -3
  126. package/dist/components/jump-calendar.js.map +1 -1
  127. package/dist/components/legal.d.ts +13 -1
  128. package/dist/components/legal.js +12 -0
  129. package/dist/components/legal.js.map +1 -1
  130. package/dist/components/legended-series-chart.d.ts +80 -0
  131. package/dist/components/legended-series-chart.js +70 -0
  132. package/dist/components/legended-series-chart.js.map +1 -0
  133. package/dist/components/lightbox.js +2 -1
  134. package/dist/components/lightbox.js.map +1 -1
  135. package/dist/components/mini-calendar.js +16 -7
  136. package/dist/components/mini-calendar.js.map +1 -1
  137. package/dist/components/modal.d.ts +48 -0
  138. package/dist/components/modal.js +26 -6
  139. package/dist/components/modal.js.map +1 -1
  140. package/dist/components/month-picker.d.ts +1 -1
  141. package/dist/components/month-picker.js +6 -6
  142. package/dist/components/month-picker.js.map +1 -1
  143. package/dist/components/multi-entity-combobox.js +2 -2
  144. package/dist/components/multi-entity-combobox.js.map +1 -1
  145. package/dist/components/multi-select.js +2 -6
  146. package/dist/components/multi-select.js.map +1 -1
  147. package/dist/components/number-input.js +2 -2
  148. package/dist/components/number-input.js.map +1 -1
  149. package/dist/components/page-header-layout.d.ts +18 -0
  150. package/dist/components/page-header-layout.js +23 -0
  151. package/dist/components/page-header-layout.js.map +1 -0
  152. package/dist/components/page-header-skeleton.d.ts +41 -0
  153. package/dist/components/page-header-skeleton.js +52 -0
  154. package/dist/components/page-header-skeleton.js.map +1 -0
  155. package/dist/components/page-header.js +4 -17
  156. package/dist/components/page-header.js.map +1 -1
  157. package/dist/components/popover.js +7 -2
  158. package/dist/components/popover.js.map +1 -1
  159. package/dist/components/release-notes-labels.d.ts +16 -0
  160. package/dist/components/release-notes-labels.js +18 -0
  161. package/dist/components/release-notes-labels.js.map +1 -0
  162. package/dist/components/release-notes.d.ts +65 -0
  163. package/dist/components/release-notes.js +65 -0
  164. package/dist/components/release-notes.js.map +1 -0
  165. package/dist/components/select.js +2 -2
  166. package/dist/components/select.js.map +1 -1
  167. package/dist/components/series-chart-labels.d.ts +9 -0
  168. package/dist/components/series-chart-labels.js +3 -1
  169. package/dist/components/series-chart-labels.js.map +1 -1
  170. package/dist/components/series-chart.d.ts +5 -0
  171. package/dist/components/series-chart.js +89 -36
  172. package/dist/components/series-chart.js.map +1 -1
  173. package/dist/components/stat-tile.d.ts +21 -2
  174. package/dist/components/stat-tile.js +4 -2
  175. package/dist/components/stat-tile.js.map +1 -1
  176. package/dist/components/toggle-group.js +3 -2
  177. package/dist/components/toggle-group.js.map +1 -1
  178. package/dist/components/treemap-layout.js.map +1 -1
  179. package/dist/components/treemap.d.ts +17 -15
  180. package/dist/components/treemap.js +167 -85
  181. package/dist/components/treemap.js.map +1 -1
  182. package/dist/currencies.d.ts +16 -2
  183. package/dist/currencies.js +2 -1
  184. package/dist/currencies.js.map +1 -1
  185. package/dist/eslint/index.js +1 -1
  186. package/dist/eslint/role-utilities.d.ts +2 -2
  187. package/dist/eslint/role-utilities.js.map +1 -1
  188. package/dist/feedback/feedback-context-labels.js +2 -1
  189. package/dist/feedback/feedback-context-labels.js.map +1 -1
  190. package/dist/feedback/feedback-context.d.ts +19 -3
  191. package/dist/feedback/feedback-context.js +12 -1
  192. package/dist/feedback/feedback-context.js.map +1 -1
  193. package/dist/feedback/feedback-diagnostics.d.ts +17 -0
  194. package/dist/feedback/feedback-diagnostics.js +27 -0
  195. package/dist/feedback/feedback-diagnostics.js.map +1 -0
  196. package/dist/feedback/feedback-dialog.d.ts +10 -0
  197. package/dist/feedback/feedback-dialog.js +6 -4
  198. package/dist/feedback/feedback-dialog.js.map +1 -1
  199. package/dist/feedback/feedback-inbox-page.d.ts +260 -0
  200. package/dist/feedback/feedback-inbox-page.js +207 -0
  201. package/dist/feedback/feedback-inbox-page.js.map +1 -0
  202. package/dist/feedback/feedback-record.d.ts +5 -0
  203. package/dist/feedback/feedback-record.js.map +1 -1
  204. package/dist/feedback/feedback-row-detail-labels.js +1 -0
  205. package/dist/feedback/feedback-row-detail-labels.js.map +1 -1
  206. package/dist/feedback/feedback-row-detail.d.ts +3 -0
  207. package/dist/feedback/feedback-row-detail.js +3 -0
  208. package/dist/feedback/feedback-row-detail.js.map +1 -1
  209. package/dist/feedback/feedback-submit-dialog.d.ts +5 -1
  210. package/dist/feedback/feedback-submit-dialog.js +15 -3
  211. package/dist/feedback/feedback-submit-dialog.js.map +1 -1
  212. package/dist/feedback/feedback-submit.d.ts +30 -2
  213. package/dist/feedback/feedback-submit.js +5 -2
  214. package/dist/feedback/feedback-submit.js.map +1 -1
  215. package/dist/feedback/feedback-vocabulary.js +2 -2
  216. package/dist/feedback/feedback-vocabulary.js.map +1 -1
  217. package/dist/feedback.d.ts +1 -0
  218. package/dist/feedback.js +6 -0
  219. package/dist/feedback.js.map +1 -1
  220. package/dist/hooks/use-debounce.d.ts +32 -5
  221. package/dist/hooks/use-debounce.js +6 -5
  222. package/dist/hooks/use-debounce.js.map +1 -1
  223. package/dist/hooks/use-file-picker.d.ts +3 -1
  224. package/dist/hooks/use-file-picker.js.map +1 -1
  225. package/dist/hooks/use-focus-trap.d.ts +19 -3
  226. package/dist/hooks/use-focus-trap.js +15 -5
  227. package/dist/hooks/use-focus-trap.js.map +1 -1
  228. package/dist/hooks/use-has-camera.d.ts +36 -0
  229. package/dist/hooks/use-has-camera.js +53 -0
  230. package/dist/hooks/use-has-camera.js.map +1 -0
  231. package/dist/hooks/use-hotkey.js +2 -1
  232. package/dist/hooks/use-hotkey.js.map +1 -1
  233. package/dist/hooks/use-overlay-history.d.ts +6 -1
  234. package/dist/hooks/use-overlay-history.js +10 -2
  235. package/dist/hooks/use-overlay-history.js.map +1 -1
  236. package/dist/i18n/defaults.js +11 -1
  237. package/dist/i18n/defaults.js.map +1 -1
  238. package/dist/i18n/german.js +78 -4
  239. package/dist/i18n/german.js.map +1 -1
  240. package/dist/i18n/kit-labels.d.ts +20 -0
  241. package/dist/i18n/kit-labels.js.map +1 -1
  242. package/dist/i18n/locales/en.js +95 -5
  243. package/dist/i18n/locales/en.js.map +3 -3
  244. package/dist/i18n/locales/es.js +74 -4
  245. package/dist/i18n/locales/es.js.map +1 -1
  246. package/dist/i18n/locales/fr.js +75 -3
  247. package/dist/i18n/locales/fr.js.map +1 -1
  248. package/dist/i18n/locales/hu.js +77 -4
  249. package/dist/i18n/locales/hu.js.map +1 -1
  250. package/dist/i18n/locales/it.js +77 -4
  251. package/dist/i18n/locales/it.js.map +1 -1
  252. package/dist/i18n/locales/zh.js +74 -4
  253. package/dist/i18n/locales/zh.js.map +1 -1
  254. package/dist/i18n/review.js +22 -1
  255. package/dist/i18n/review.js.map +1 -1
  256. package/dist/index.d.ts +27 -8
  257. package/dist/index.js +41 -2
  258. package/dist/index.js.map +1 -1
  259. package/dist/landing/landing-labels.d.ts +8 -0
  260. package/dist/landing/landing-labels.js +2 -1
  261. package/dist/landing/landing-labels.js.map +1 -1
  262. package/dist/lib/changelog.d.ts +130 -0
  263. package/dist/lib/changelog.js +137 -0
  264. package/dist/lib/changelog.js.map +1 -0
  265. package/dist/lib/clipboard-minus.js +2 -2
  266. package/dist/lib/clipboard-minus.js.map +1 -1
  267. package/dist/lib/dates.d.ts +36 -4
  268. package/dist/lib/dates.js +49 -13
  269. package/dist/lib/dates.js.map +1 -1
  270. package/dist/lib/editable-content.d.ts +33 -0
  271. package/dist/lib/editable-content.js +15 -0
  272. package/dist/lib/editable-content.js.map +1 -0
  273. package/dist/lib/focus-left.d.ts +47 -1
  274. package/dist/lib/focus-left.js +11 -2
  275. package/dist/lib/focus-left.js.map +1 -1
  276. package/dist/lib/format.d.ts +37 -2
  277. package/dist/lib/format.js +25 -1
  278. package/dist/lib/format.js.map +1 -1
  279. package/dist/lib/intl-cache.d.ts +4 -2
  280. package/dist/lib/intl-cache.js.map +1 -1
  281. package/dist/lib/server-wake.d.ts +49 -9
  282. package/dist/lib/server-wake.js +25 -14
  283. package/dist/lib/server-wake.js.map +1 -1
  284. package/dist/lib/session-refresh.d.ts +53 -0
  285. package/dist/lib/session-refresh.js +27 -1
  286. package/dist/lib/session-refresh.js.map +1 -1
  287. package/dist/lib/translation-review.d.ts +26 -0
  288. package/dist/lib/translation-review.js +14 -0
  289. package/dist/lib/translation-review.js.map +1 -1
  290. package/dist/rhf/fields.js +3 -3
  291. package/dist/rhf/fields.js.map +1 -1
  292. package/dist/shell/app-shell.d.ts +25 -1
  293. package/dist/shell/app-shell.js +3 -1
  294. package/dist/shell/app-shell.js.map +1 -1
  295. package/dist/shell/dev-menu.d.ts +3 -0
  296. package/dist/shell/dev-menu.js +4 -2
  297. package/dist/shell/dev-menu.js.map +1 -1
  298. package/dist/shell/held-changes-banner-labels.d.ts +23 -0
  299. package/dist/shell/held-changes-banner-labels.js +14 -0
  300. package/dist/shell/held-changes-banner-labels.js.map +1 -0
  301. package/dist/shell/held-changes-banner.d.ts +75 -0
  302. package/dist/shell/held-changes-banner.js +106 -0
  303. package/dist/shell/held-changes-banner.js.map +1 -0
  304. package/dist/shell/sync-status-indicator.d.ts +27 -12
  305. package/dist/shell/sync-status-indicator.js +13 -4
  306. package/dist/shell/sync-status-indicator.js.map +1 -1
  307. package/dist/shell/top-bar-parts-labels.d.ts +5 -0
  308. package/dist/shell/top-bar-parts-labels.js +3 -1
  309. package/dist/shell/top-bar-parts-labels.js.map +1 -1
  310. package/dist/shell.d.ts +2 -0
  311. package/dist/shell.js +3 -0
  312. package/dist/shell.js.map +1 -1
  313. package/dist/sync/engine.d.ts +11 -2
  314. package/dist/sync/engine.js +13 -5
  315. package/dist/sync/engine.js.map +1 -1
  316. package/dist/sync/hooks.d.ts +3 -2
  317. package/dist/sync/hooks.js +4 -2
  318. package/dist/sync/hooks.js.map +1 -1
  319. package/dist/testing/css-variables.generated.d.ts +2 -2
  320. package/dist/testing/css-variables.generated.js +1 -1
  321. package/dist/testing/css-variables.generated.js.map +1 -1
  322. package/dist/theme/chart-palette.d.ts +18 -0
  323. package/dist/theme/chart-palette.js +17 -1
  324. package/dist/theme/chart-palette.js.map +1 -1
  325. package/dist/theme/contrast-tokens.d.ts +3 -3
  326. package/dist/theme/contrast-tokens.js.map +1 -1
  327. package/dist/theme/contrast.d.ts +4 -4
  328. package/dist/theme/contrast.js.map +1 -1
  329. package/dist/tour/tour-overlay.js +2 -1
  330. package/dist/tour/tour-overlay.js.map +1 -1
  331. package/package.json +5 -9
  332. package/tokens.css +19 -54
  333. package/src/account/account-parts.ts +0 -47
  334. package/src/account/account-settings-labels.ts +0 -240
  335. package/src/account/account-settings.tsx +0 -698
  336. package/src/account/data-export-setting-labels.ts +0 -20
  337. package/src/account/data-export-setting.tsx +0 -200
  338. package/src/account/delete-account-setting-labels.ts +0 -33
  339. package/src/account/delete-account-setting.tsx +0 -341
  340. package/src/account/email-change-setting-labels.ts +0 -31
  341. package/src/account/email-change-setting.tsx +0 -443
  342. package/src/account/passkeys-setting.tsx +0 -445
  343. package/src/account/sessions-setting-labels.ts +0 -24
  344. package/src/account/sessions-setting.tsx +0 -283
  345. package/src/admin/admin-action-confirm-labels.ts +0 -19
  346. package/src/admin/admin-action-confirm.tsx +0 -509
  347. package/src/admin/admin-action-log-labels.ts +0 -83
  348. package/src/admin/admin-action-log.tsx +0 -464
  349. package/src/admin/admin-area-labels.ts +0 -114
  350. package/src/admin/admin-forbidden.tsx +0 -75
  351. package/src/admin/admin-overview.tsx +0 -258
  352. package/src/admin/admin-parts.ts +0 -68
  353. package/src/admin/admin-sections.tsx +0 -208
  354. package/src/admin/admin-tool-links.tsx +0 -90
  355. package/src/admin/invitations-panel-labels.ts +0 -31
  356. package/src/admin/invitations-panel.tsx +0 -516
  357. package/src/admin/mail-test-card-labels.ts +0 -19
  358. package/src/admin/mail-test-card.tsx +0 -189
  359. package/src/admin/plan-change-labels.ts +0 -5
  360. package/src/admin/plan-change.tsx +0 -474
  361. package/src/admin/reviewer-scope-editor-labels.ts +0 -16
  362. package/src/admin/reviewer-scope-editor.tsx +0 -224
  363. package/src/admin/role-select-labels.ts +0 -16
  364. package/src/admin/role-select.tsx +0 -282
  365. package/src/admin/transfer-ownership-dialog-labels.ts +0 -20
  366. package/src/admin/transfer-ownership-dialog.tsx +0 -162
  367. package/src/admin/user-roster-labels.ts +0 -17
  368. package/src/admin/user-roster.tsx +0 -559
  369. package/src/auth/accept-invitation-labels.ts +0 -21
  370. package/src/auth/accept-invitation.tsx +0 -210
  371. package/src/auth/auth-errors-labels.ts +0 -23
  372. package/src/auth/auth-errors.ts +0 -370
  373. package/src/auth/complete-name-dialog-labels.ts +0 -16
  374. package/src/auth/complete-name-dialog.tsx +0 -253
  375. package/src/auth/email-tag.ts +0 -75
  376. package/src/auth/forgot-password-form-labels.ts +0 -20
  377. package/src/auth/forgot-password-form.tsx +0 -221
  378. package/src/auth/form-rules.ts +0 -40
  379. package/src/auth/new-password-fields.tsx +0 -85
  380. package/src/auth/not-found-page-labels.ts +0 -12
  381. package/src/auth/not-found-page.tsx +0 -95
  382. package/src/auth/register-form-labels.ts +0 -31
  383. package/src/auth/register-form.tsx +0 -456
  384. package/src/auth/reset-password-form-labels.ts +0 -27
  385. package/src/auth/reset-password-form.tsx +0 -341
  386. package/src/auth/sign-in-form-labels.ts +0 -44
  387. package/src/auth/sign-in-form.tsx +0 -858
  388. package/src/auth/status-parts.tsx +0 -132
  389. package/src/auth/verify-email-labels.ts +0 -26
  390. package/src/auth/verify-email.tsx +0 -445
  391. package/src/billing/billing-banner.tsx +0 -258
  392. package/src/billing/billing-labels.ts +0 -381
  393. package/src/billing/billing-lock.ts +0 -108
  394. package/src/billing/billing-overview.ts +0 -157
  395. package/src/billing/billing-standing.ts +0 -80
  396. package/src/billing/cancel-request.ts +0 -97
  397. package/src/billing/cancel-subscription.tsx +0 -98
  398. package/src/billing/checkout-processing.ts +0 -394
  399. package/src/billing/checkout-return.ts +0 -90
  400. package/src/billing/pay-page.ts +0 -330
  401. package/src/billing/plan-card.tsx +0 -562
  402. package/src/billing/plan-change-labels.ts +0 -66
  403. package/src/billing/plan-limit-notice.tsx +0 -148
  404. package/src/billing/plan-limit-toast.tsx +0 -90
  405. package/src/billing/plan-limit.ts +0 -52
  406. package/src/billing/plan-price.ts +0 -98
  407. package/src/billing/plan-switch.tsx +0 -216
  408. package/src/billing/provider-page.ts +0 -84
  409. package/src/billing/subscription-actions.tsx +0 -247
  410. package/src/billing/subscription-status-chip.tsx +0 -95
  411. package/src/chart.ts +0 -103
  412. package/src/components/account-chips-labels.ts +0 -16
  413. package/src/components/account-chips.tsx +0 -474
  414. package/src/components/alert-banner.tsx +0 -670
  415. package/src/components/amount-input.tsx +0 -815
  416. package/src/components/appearance-labels.ts +0 -63
  417. package/src/components/authed-image-labels.ts +0 -11
  418. package/src/components/authed-image.tsx +0 -209
  419. package/src/components/autocomplete.tsx +0 -645
  420. package/src/components/breadcrumbs-labels.ts +0 -10
  421. package/src/components/breadcrumbs.tsx +0 -205
  422. package/src/components/bulk-action-bar-labels.ts +0 -11
  423. package/src/components/bulk-action-bar.tsx +0 -443
  424. package/src/components/button-group.tsx +0 -223
  425. package/src/components/button-look.ts +0 -256
  426. package/src/components/button.tsx +0 -339
  427. package/src/components/calculator.tsx +0 -341
  428. package/src/components/calendar-heatmap-labels.ts +0 -15
  429. package/src/components/calendar-heatmap.tsx +0 -594
  430. package/src/components/card.tsx +0 -377
  431. package/src/components/chart-edge.ts +0 -106
  432. package/src/components/chart-figure.tsx +0 -35
  433. package/src/components/chart-height.ts +0 -30
  434. package/src/components/chart-zoom-core.tsx +0 -627
  435. package/src/components/chart-zoom.tsx +0 -22
  436. package/src/components/chart.tsx +0 -554
  437. package/src/components/checkbox-group.tsx +0 -247
  438. package/src/components/checkbox.tsx +0 -346
  439. package/src/components/chip-input.tsx +0 -370
  440. package/src/components/chip-labels.ts +0 -13
  441. package/src/components/chip.tsx +0 -843
  442. package/src/components/choice-card.tsx +0 -544
  443. package/src/components/column-mapper-labels.ts +0 -38
  444. package/src/components/column-mapper.tsx +0 -655
  445. package/src/components/combobox-core.tsx +0 -1321
  446. package/src/components/combobox-suggestions.tsx +0 -131
  447. package/src/components/combobox.tsx +0 -716
  448. package/src/components/confirm-context.ts +0 -7
  449. package/src/components/confirm-dialog-labels.ts +0 -13
  450. package/src/components/confirm-dialog.tsx +0 -341
  451. package/src/components/copy-button-labels.ts +0 -13
  452. package/src/components/copy-button.tsx +0 -192
  453. package/src/components/country-select-labels.ts +0 -11
  454. package/src/components/country-select.tsx +0 -539
  455. package/src/components/currency-option-list.tsx +0 -180
  456. package/src/components/currency-select.tsx +0 -341
  457. package/src/components/danger-confirm-labels.ts +0 -20
  458. package/src/components/danger-confirm.tsx +0 -934
  459. package/src/components/data-table-cells.tsx +0 -118
  460. package/src/components/data-table-column-settings.tsx +0 -198
  461. package/src/components/data-table-filter-popover.tsx +0 -281
  462. package/src/components/data-table-filters.ts +0 -287
  463. package/src/components/data-table-fit.ts +0 -301
  464. package/src/components/data-table-groups.tsx +0 -288
  465. package/src/components/data-table-head.tsx +0 -280
  466. package/src/components/data-table-labels.ts +0 -198
  467. package/src/components/data-table-leading-row.tsx +0 -58
  468. package/src/components/data-table-mobile.tsx +0 -1117
  469. package/src/components/data-table-pagination.tsx +0 -202
  470. package/src/components/data-table-resize.ts +0 -188
  471. package/src/components/data-table-row-actions.tsx +0 -302
  472. package/src/components/data-table-row.tsx +0 -496
  473. package/src/components/data-table-selection.ts +0 -71
  474. package/src/components/data-table-shared.tsx +0 -287
  475. package/src/components/data-table-sort.ts +0 -163
  476. package/src/components/data-table-virtual.ts +0 -576
  477. package/src/components/data-table.tsx +0 -2598
  478. package/src/components/date-field.tsx +0 -684
  479. package/src/components/date-format-setting.tsx +0 -64
  480. package/src/components/date-picker.tsx +0 -404
  481. package/src/components/date-range-picker.tsx +0 -518
  482. package/src/components/description-list-labels.ts +0 -9
  483. package/src/components/description-list.tsx +0 -386
  484. package/src/components/dialog-frame-labels.ts +0 -7
  485. package/src/components/dialog-frame.tsx +0 -276
  486. package/src/components/disclosure.tsx +0 -476
  487. package/src/components/dropdown.tsx +0 -461
  488. package/src/components/empty-state.tsx +0 -136
  489. package/src/components/entity-combobox.tsx +0 -422
  490. package/src/components/error-boundary-labels.ts +0 -20
  491. package/src/components/error-boundary.tsx +0 -675
  492. package/src/components/facing-pair.ts +0 -93
  493. package/src/components/field-base-labels.ts +0 -20
  494. package/src/components/field-base.tsx +0 -656
  495. package/src/components/field-parts.tsx +0 -825
  496. package/src/components/field-strip.tsx +0 -129
  497. package/src/components/field.tsx +0 -206
  498. package/src/components/file-button.tsx +0 -295
  499. package/src/components/file-dropzone.tsx +0 -559
  500. package/src/components/floating-panel-labels.ts +0 -10
  501. package/src/components/floating-panel.tsx +0 -828
  502. package/src/components/focus-ring.ts +0 -16
  503. package/src/components/form-actions-labels.ts +0 -11
  504. package/src/components/form-actions.tsx +0 -578
  505. package/src/components/full-bleed-dialog.tsx +0 -294
  506. package/src/components/grouped-picker.tsx +0 -184
  507. package/src/components/help-popover.tsx +0 -117
  508. package/src/components/hover-menu.tsx +0 -343
  509. package/src/components/iban-input-labels.ts +0 -14
  510. package/src/components/iban-input.tsx +0 -236
  511. package/src/components/icon-button.tsx +0 -959
  512. package/src/components/icon-picker-labels.ts +0 -13
  513. package/src/components/icon-picker.tsx +0 -232
  514. package/src/components/image-grid-labels.ts +0 -11
  515. package/src/components/image-grid.tsx +0 -202
  516. package/src/components/inline-confirm.tsx +0 -116
  517. package/src/components/inline-edit-field-labels.ts +0 -11
  518. package/src/components/inline-edit-field.tsx +0 -552
  519. package/src/components/inline-entity-combobox.tsx +0 -849
  520. package/src/components/input.tsx +0 -394
  521. package/src/components/jump-calendar.tsx +0 -265
  522. package/src/components/language-select.tsx +0 -93
  523. package/src/components/legal-labels.ts +0 -105
  524. package/src/components/legal-page.tsx +0 -711
  525. package/src/components/legal.tsx +0 -668
  526. package/src/components/lightbox-labels.ts +0 -18
  527. package/src/components/lightbox.tsx +0 -399
  528. package/src/components/line-items-labels.ts +0 -14
  529. package/src/components/line-items.tsx +0 -602
  530. package/src/components/list-labels.ts +0 -12
  531. package/src/components/list.tsx +0 -870
  532. package/src/components/loading-state.tsx +0 -78
  533. package/src/components/measured-grid-labels.ts +0 -25
  534. package/src/components/measured-grid.tsx +0 -837
  535. package/src/components/menu-item.tsx +0 -241
  536. package/src/components/mini-calendar-labels.ts +0 -17
  537. package/src/components/mini-calendar.tsx +0 -789
  538. package/src/components/modal.tsx +0 -505
  539. package/src/components/money-draft.ts +0 -83
  540. package/src/components/money-field.tsx +0 -76
  541. package/src/components/month-grid.tsx +0 -229
  542. package/src/components/month-picker-labels.ts +0 -22
  543. package/src/components/month-picker.tsx +0 -1087
  544. package/src/components/multi-entity-combobox.tsx +0 -369
  545. package/src/components/multi-select.tsx +0 -376
  546. package/src/components/nav-pills.tsx +0 -198
  547. package/src/components/number-field.tsx +0 -327
  548. package/src/components/number-input.tsx +0 -558
  549. package/src/components/numeric-field.ts +0 -169
  550. package/src/components/numpad-sheet.tsx +0 -285
  551. package/src/components/one-time-code-input.tsx +0 -270
  552. package/src/components/page-contents-labels.ts +0 -9
  553. package/src/components/page-contents.tsx +0 -282
  554. package/src/components/page-header-context.ts +0 -8
  555. package/src/components/page-header.tsx +0 -298
  556. package/src/components/password-strength-labels.ts +0 -22
  557. package/src/components/password-strength.tsx +0 -241
  558. package/src/components/phone-input-labels.ts +0 -10
  559. package/src/components/phone-input.tsx +0 -282
  560. package/src/components/picker-sheet.tsx +0 -330
  561. package/src/components/pie-chart-labels.ts +0 -40
  562. package/src/components/pie-chart.tsx +0 -480
  563. package/src/components/popover-labels.ts +0 -14
  564. package/src/components/popover.tsx +0 -268
  565. package/src/components/progress-bar-labels.ts +0 -10
  566. package/src/components/progress-bar.tsx +0 -479
  567. package/src/components/qr-code.tsx +0 -76
  568. package/src/components/reauth-dialog-labels.ts +0 -13
  569. package/src/components/reauth-dialog.tsx +0 -265
  570. package/src/components/row-actions-labels.ts +0 -12
  571. package/src/components/row-actions.tsx +0 -795
  572. package/src/components/scroll-area.tsx +0 -123
  573. package/src/components/search-field.tsx +0 -192
  574. package/src/components/select.tsx +0 -294
  575. package/src/components/separator.tsx +0 -33
  576. package/src/components/series-chart-axes.ts +0 -342
  577. package/src/components/series-chart-budget.ts +0 -150
  578. package/src/components/series-chart-labels.ts +0 -33
  579. package/src/components/series-chart-thin.ts +0 -180
  580. package/src/components/series-chart-ticks.ts +0 -194
  581. package/src/components/series-chart.tsx +0 -1906
  582. package/src/components/server-wake-labels.ts +0 -11
  583. package/src/components/server-wake.tsx +0 -129
  584. package/src/components/settings-fields.tsx +0 -237
  585. package/src/components/share-card-labels.ts +0 -30
  586. package/src/components/share-card.tsx +0 -675
  587. package/src/components/signature-pad-labels.ts +0 -24
  588. package/src/components/signature-pad.tsx +0 -747
  589. package/src/components/signed-amount-labels.ts +0 -10
  590. package/src/components/signed-amount.tsx +0 -336
  591. package/src/components/skeleton.tsx +0 -80
  592. package/src/components/slider.tsx +0 -338
  593. package/src/components/sparkline-labels.ts +0 -14
  594. package/src/components/sparkline.tsx +0 -322
  595. package/src/components/spinner.tsx +0 -81
  596. package/src/components/stat-tile-labels.ts +0 -15
  597. package/src/components/stat-tile.tsx +0 -725
  598. package/src/components/status-dot.tsx +0 -170
  599. package/src/components/swatch-picker-labels.ts +0 -10
  600. package/src/components/swatch-picker.tsx +0 -283
  601. package/src/components/swipeable-row.tsx +0 -386
  602. package/src/components/switch.tsx +0 -273
  603. package/src/components/table-skeleton.tsx +0 -136
  604. package/src/components/table.tsx +0 -647
  605. package/src/components/tabs-labels.ts +0 -13
  606. package/src/components/tabs.tsx +0 -693
  607. package/src/components/text-link.tsx +0 -359
  608. package/src/components/text.tsx +0 -150
  609. package/src/components/textarea.tsx +0 -330
  610. package/src/components/tile-radio.tsx +0 -332
  611. package/src/components/time-input.tsx +0 -121
  612. package/src/components/toast-labels.ts +0 -12
  613. package/src/components/toast.tsx +0 -519
  614. package/src/components/toggle-group.tsx +0 -752
  615. package/src/components/toggle-legend.tsx +0 -394
  616. package/src/components/tooltip.tsx +0 -1149
  617. package/src/components/translation-review-editor.tsx +0 -290
  618. package/src/components/translation-review-labels.ts +0 -181
  619. package/src/components/translation-review-parts.tsx +0 -272
  620. package/src/components/translation-review.tsx +0 -1240
  621. package/src/components/tree-view.tsx +0 -589
  622. package/src/components/treemap-labels.ts +0 -47
  623. package/src/components/treemap-layout.ts +0 -210
  624. package/src/components/treemap.tsx +0 -1184
  625. package/src/components/trigger-aria.ts +0 -44
  626. package/src/components/use-anchor-dir.ts +0 -20
  627. package/src/components/use-mobile-reveal.ts +0 -62
  628. package/src/components/use-table-state.ts +0 -753
  629. package/src/components/user-avatar.tsx +0 -116
  630. package/src/components/wizard-stepper.tsx +0 -42
  631. package/src/components/write-lock-labels.ts +0 -10
  632. package/src/components/write-lock.tsx +0 -253
  633. package/src/currencies.ts +0 -70
  634. package/src/data-table.ts +0 -42
  635. package/src/demo/demo-banner.tsx +0 -153
  636. package/src/demo/demo-countdown.ts +0 -136
  637. package/src/demo/demo-ended.tsx +0 -90
  638. package/src/demo/demo-labels.ts +0 -78
  639. package/src/demo/demo-session.ts +0 -32
  640. package/src/demo/demo-start.tsx +0 -156
  641. package/src/eslint/index.ts +0 -161
  642. package/src/eslint/role-utilities.generated.ts +0 -146
  643. package/src/eslint/role-utilities.ts +0 -233
  644. package/src/feedback/feedback-attachment-download.tsx +0 -77
  645. package/src/feedback/feedback-attachment-labels.ts +0 -37
  646. package/src/feedback/feedback-attachment.tsx +0 -1239
  647. package/src/feedback/feedback-capture.ts +0 -287
  648. package/src/feedback/feedback-comment-thread.tsx +0 -353
  649. package/src/feedback/feedback-context-labels.ts +0 -10
  650. package/src/feedback/feedback-context.tsx +0 -213
  651. package/src/feedback/feedback-crash.ts +0 -547
  652. package/src/feedback/feedback-dialog-labels.ts +0 -29
  653. package/src/feedback/feedback-dialog.tsx +0 -440
  654. package/src/feedback/feedback-entry-file.tsx +0 -150
  655. package/src/feedback/feedback-inbox.tsx +0 -552
  656. package/src/feedback/feedback-labels.ts +0 -144
  657. package/src/feedback/feedback-menu-labels.ts +0 -12
  658. package/src/feedback/feedback-menu.tsx +0 -177
  659. package/src/feedback/feedback-mutation.ts +0 -20
  660. package/src/feedback/feedback-page-link.ts +0 -90
  661. package/src/feedback/feedback-public-labels.ts +0 -81
  662. package/src/feedback/feedback-public-list.tsx +0 -524
  663. package/src/feedback/feedback-public-switch.tsx +0 -102
  664. package/src/feedback/feedback-public-types.ts +0 -101
  665. package/src/feedback/feedback-record.ts +0 -423
  666. package/src/feedback/feedback-replies-context.ts +0 -9
  667. package/src/feedback/feedback-replies.tsx +0 -343
  668. package/src/feedback/feedback-rework-entry-chip.tsx +0 -18
  669. package/src/feedback/feedback-row-detail-labels.ts +0 -30
  670. package/src/feedback/feedback-row-detail.tsx +0 -858
  671. package/src/feedback/feedback-status-undo.ts +0 -109
  672. package/src/feedback/feedback-submit-dialog.tsx +0 -118
  673. package/src/feedback/feedback-submit.tsx +0 -237
  674. package/src/feedback/feedback-swipe.tsx +0 -192
  675. package/src/feedback/feedback-table-labels.ts +0 -27
  676. package/src/feedback/feedback-table.tsx +0 -912
  677. package/src/feedback/feedback-thread-labels.ts +0 -22
  678. package/src/feedback/feedback-thread-parts-labels.ts +0 -41
  679. package/src/feedback/feedback-thread.tsx +0 -905
  680. package/src/feedback/feedback-vocabulary.ts +0 -263
  681. package/src/feedback/feedback-vote-button.tsx +0 -124
  682. package/src/feedback.ts +0 -116
  683. package/src/hooks/use-anchored-panel.ts +0 -396
  684. package/src/hooks/use-anchored-rect.ts +0 -77
  685. package/src/hooks/use-announce.ts +0 -85
  686. package/src/hooks/use-authed-src.ts +0 -167
  687. package/src/hooks/use-body-scroll-lock.ts +0 -119
  688. package/src/hooks/use-breakpoint.ts +0 -133
  689. package/src/hooks/use-close-transition.ts +0 -107
  690. package/src/hooks/use-copy-to-clipboard.ts +0 -122
  691. package/src/hooks/use-debounce.ts +0 -114
  692. package/src/hooks/use-dismiss.ts +0 -371
  693. package/src/hooks/use-document-title.ts +0 -33
  694. package/src/hooks/use-file-drop.ts +0 -121
  695. package/src/hooks/use-file-picker-labels.ts +0 -28
  696. package/src/hooks/use-file-picker.tsx +0 -359
  697. package/src/hooks/use-focus-trap.ts +0 -199
  698. package/src/hooks/use-hotkey.ts +0 -189
  699. package/src/hooks/use-large-text.ts +0 -41
  700. package/src/hooks/use-long-press.ts +0 -140
  701. package/src/hooks/use-media-query.ts +0 -39
  702. package/src/hooks/use-mounted.ts +0 -39
  703. package/src/hooks/use-noindex.ts +0 -37
  704. package/src/hooks/use-overlay-history.ts +0 -714
  705. package/src/hooks/use-row-swipe.ts +0 -207
  706. package/src/hooks/use-search-param-state.ts +0 -434
  707. package/src/hooks/use-windowed-rows.ts +0 -225
  708. package/src/i18n/defaults.ts +0 -267
  709. package/src/i18n/german.ts +0 -2057
  710. package/src/i18n/kit-labels.tsx +0 -1003
  711. package/src/i18n/languages.ts +0 -349
  712. package/src/i18n/locales/de-CH.ts +0 -24
  713. package/src/i18n/locales/en.ts +0 -267
  714. package/src/i18n/locales/es.ts +0 -1997
  715. package/src/i18n/locales/fr.ts +0 -2035
  716. package/src/i18n/locales/hu.ts +0 -2002
  717. package/src/i18n/locales/it.ts +0 -2012
  718. package/src/i18n/locales/zh.ts +0 -1910
  719. package/src/i18n/plurals.ts +0 -86
  720. package/src/i18n/review.ts +0 -475
  721. package/src/i18n/shared-labels.ts +0 -138
  722. package/src/i18n/swiss.ts +0 -29
  723. package/src/index.ts +0 -1179
  724. package/src/landing/access.ts +0 -93
  725. package/src/landing/landing-actions.tsx +0 -97
  726. package/src/landing/landing-labels.ts +0 -59
  727. package/src/landing/landing-sections.tsx +0 -341
  728. package/src/landing/page-seo.ts +0 -261
  729. package/src/landing/public-header.tsx +0 -121
  730. package/src/landing/public-page.tsx +0 -106
  731. package/src/landing/routing.tsx +0 -225
  732. package/src/lib/broadcast.ts +0 -52
  733. package/src/lib/calc.ts +0 -323
  734. package/src/lib/chip-edge-snap.ts +0 -212
  735. package/src/lib/clipboard-minus.ts +0 -107
  736. package/src/lib/clipping.ts +0 -34
  737. package/src/lib/cn.ts +0 -28
  738. package/src/lib/column-mapping.ts +0 -234
  739. package/src/lib/countries.ts +0 -91
  740. package/src/lib/data-attributes.ts +0 -14
  741. package/src/lib/date-format.ts +0 -227
  742. package/src/lib/dates.ts +0 -266
  743. package/src/lib/day-format.ts +0 -96
  744. package/src/lib/decimal-marks.ts +0 -108
  745. package/src/lib/describe-failure.ts +0 -18
  746. package/src/lib/device-settings.ts +0 -147
  747. package/src/lib/direction.ts +0 -74
  748. package/src/lib/document-navigation.ts +0 -17
  749. package/src/lib/document-title.ts +0 -41
  750. package/src/lib/download.ts +0 -172
  751. package/src/lib/float-clearance.ts +0 -70
  752. package/src/lib/floating-stack.ts +0 -70
  753. package/src/lib/focus-left.ts +0 -156
  754. package/src/lib/format.ts +0 -522
  755. package/src/lib/http-status.ts +0 -38
  756. package/src/lib/iban.ts +0 -251
  757. package/src/lib/ime.ts +0 -24
  758. package/src/lib/intl-cache.ts +0 -25
  759. package/src/lib/iso-day.ts +0 -13
  760. package/src/lib/lazy-with-fallback.ts +0 -82
  761. package/src/lib/logger.ts +0 -69
  762. package/src/lib/minus.ts +0 -50
  763. package/src/lib/path-pattern.ts +0 -55
  764. package/src/lib/person-name.ts +0 -155
  765. package/src/lib/phone.ts +0 -208
  766. package/src/lib/plain-text.ts +0 -22
  767. package/src/lib/presence.ts +0 -18
  768. package/src/lib/qr-encode.ts +0 -444
  769. package/src/lib/quiet-focus.ts +0 -32
  770. package/src/lib/reduced-motion.ts +0 -22
  771. package/src/lib/refs.ts +0 -22
  772. package/src/lib/round.ts +0 -43
  773. package/src/lib/safe-storage.ts +0 -119
  774. package/src/lib/server-wake.ts +0 -315
  775. package/src/lib/session-refresh.ts +0 -472
  776. package/src/lib/share-format.ts +0 -18
  777. package/src/lib/status-tone.ts +0 -43
  778. package/src/lib/strip-fade.ts +0 -287
  779. package/src/lib/table-text.ts +0 -554
  780. package/src/lib/text-case.ts +0 -19
  781. package/src/lib/text-match.ts +0 -169
  782. package/src/lib/thenable.ts +0 -19
  783. package/src/lib/translation-review.ts +0 -717
  784. package/src/notifications/device-zone-report.ts +0 -67
  785. package/src/notifications/feedback-notification-types-labels.ts +0 -33
  786. package/src/notifications/feedback-notification-types.ts +0 -71
  787. package/src/notifications/notification-bell.tsx +0 -119
  788. package/src/notifications/notification-inbox.tsx +0 -309
  789. package/src/notifications/notification-parts.tsx +0 -81
  790. package/src/notifications/notification-types-setting.tsx +0 -406
  791. package/src/notifications/notification-types.ts +0 -89
  792. package/src/notifications/notifications-labels.ts +0 -287
  793. package/src/notifications/push-device-setting.tsx +0 -230
  794. package/src/notifications/push-devices-setting.tsx +0 -374
  795. package/src/notifications/push-worker.ts +0 -168
  796. package/src/notifications/quiet-hours-setting.tsx +0 -238
  797. package/src/notifications/unsubscribe-panel.tsx +0 -200
  798. package/src/notifications/use-push-device.ts +0 -448
  799. package/src/offline/local-first.ts +0 -100
  800. package/src/offline/pwa-update-prompt-labels.ts +0 -9
  801. package/src/offline/pwa-update-prompt.tsx +0 -78
  802. package/src/offline/query-persistence.ts +0 -391
  803. package/src/offline/service-worker-updates.ts +0 -81
  804. package/src/offline/shared-computer-labels.ts +0 -8
  805. package/src/offline/shared-computer.tsx +0 -87
  806. package/src/offline/sign-out-pending-dialog-labels.ts +0 -21
  807. package/src/offline/sign-out-pending-dialog.tsx +0 -135
  808. package/src/offline.ts +0 -37
  809. package/src/push-worker.ts +0 -25
  810. package/src/rhf/fields.tsx +0 -2187
  811. package/src/rhf/form-core.tsx +0 -324
  812. package/src/rhf/form.tsx +0 -12
  813. package/src/rhf/line-items.tsx +0 -135
  814. package/src/rhf/use-rhf-wizard-step.ts +0 -104
  815. package/src/rhf.ts +0 -21
  816. package/src/search/command-palette-labels.ts +0 -16
  817. package/src/search/command-palette.tsx +0 -624
  818. package/src/search/global-search-labels.ts +0 -13
  819. package/src/search/global-search.tsx +0 -660
  820. package/src/search/search-index.ts +0 -283
  821. package/src/search/use-command-key.ts +0 -23
  822. package/src/search.ts +0 -14
  823. package/src/settings/device-reset-setting-labels.ts +0 -20
  824. package/src/settings/device-reset-setting.tsx +0 -116
  825. package/src/settings/settings-card-classes.ts +0 -11
  826. package/src/settings/settings-catalogue.ts +0 -150
  827. package/src/settings/settings-context.ts +0 -33
  828. package/src/settings/settings-heading.tsx +0 -67
  829. package/src/settings/settings-labels.ts +0 -87
  830. package/src/settings/settings-layout.tsx +0 -471
  831. package/src/settings/settings-section.tsx +0 -108
  832. package/src/settings/use-account-appearance.ts +0 -148
  833. package/src/settings/use-account-language.ts +0 -146
  834. package/src/settings/use-settings-focus.ts +0 -128
  835. package/src/settings/use-settings-route.ts +0 -258
  836. package/src/shell/account-menu-language.tsx +0 -130
  837. package/src/shell/account-menu-text-size.tsx +0 -80
  838. package/src/shell/admin-menu.tsx +0 -183
  839. package/src/shell/app-shell-labels.ts +0 -11
  840. package/src/shell/app-shell.tsx +0 -1560
  841. package/src/shell/auth-layout.tsx +0 -186
  842. package/src/shell/company-switcher-labels.ts +0 -13
  843. package/src/shell/company-switcher.tsx +0 -136
  844. package/src/shell/dev-menu.tsx +0 -257
  845. package/src/shell/fill-height.tsx +0 -45
  846. package/src/shell/language-code.ts +0 -5
  847. package/src/shell/option-switcher-menu.tsx +0 -84
  848. package/src/shell/sync-status-indicator.tsx +0 -303
  849. package/src/shell/top-bar-actions.tsx +0 -87
  850. package/src/shell/top-bar-brand.tsx +0 -78
  851. package/src/shell/top-bar-parts-labels.ts +0 -148
  852. package/src/shell/top-bar.tsx +0 -40
  853. package/src/shell/topbar-action-menu.tsx +0 -567
  854. package/src/shell/topbar-controls.tsx +0 -269
  855. package/src/shell/tour-menu.tsx +0 -187
  856. package/src/shell.ts +0 -108
  857. package/src/sync/db.ts +0 -129
  858. package/src/sync/engine.ts +0 -1011
  859. package/src/sync/hooks.ts +0 -98
  860. package/src/sync/testing.ts +0 -73
  861. package/src/sync/wire.ts +0 -61
  862. package/src/sync.ts +0 -37
  863. package/src/table-text.ts +0 -8
  864. package/src/testing/css-variables.generated.ts +0 -112
  865. package/src/testing/css-variables.ts +0 -189
  866. package/src/testing/index.ts +0 -29
  867. package/src/testing/react.ts +0 -58
  868. package/src/testing/tour.ts +0 -41
  869. package/src/testing/viewport.ts +0 -357
  870. package/src/theme/chart-palette.ts +0 -232
  871. package/src/theme/color.ts +0 -272
  872. package/src/theme/contrast-tokens.ts +0 -268
  873. package/src/theme/contrast.ts +0 -250
  874. package/src/theme/palette-derive.ts +0 -825
  875. package/src/theme/palette-presets.ts +0 -544
  876. package/src/theme/palette-store.ts +0 -108
  877. package/src/theme/text-size.ts +0 -289
  878. package/src/theme/theme-store.ts +0 -157
  879. package/src/tour/tour-catalogue-labels.ts +0 -75
  880. package/src/tour/tour-catalogue.tsx +0 -335
  881. package/src/tour/tour-dock.ts +0 -134
  882. package/src/tour/tour-engine.ts +0 -37
  883. package/src/tour/tour-gates.ts +0 -218
  884. package/src/tour/tour-guide-button.tsx +0 -64
  885. package/src/tour/tour-guide-labels.ts +0 -15
  886. package/src/tour/tour-info.ts +0 -144
  887. package/src/tour/tour-labels.ts +0 -23
  888. package/src/tour/tour-overlay.tsx +0 -1170
  889. package/src/tour/tour.tsx +0 -750
  890. package/src/tour/use-tour-progress.ts +0 -671
  891. package/src/tour/use-tour-url-sync.ts +0 -266
  892. package/src/tour.ts +0 -21
  893. package/src/vite-env.d.ts +0 -23
  894. package/src/wizard/stepper-nav.tsx +0 -360
  895. package/src/wizard/types.ts +0 -275
  896. package/src/wizard/use-wizard.ts +0 -560
  897. package/src/wizard/validation.ts +0 -39
  898. package/src/wizard/wizard-context.tsx +0 -74
  899. package/src/wizard/wizard-labels.ts +0 -29
  900. package/src/wizard/wizard-step.tsx +0 -76
  901. package/src/wizard/wizard-summary.tsx +0 -84
  902. package/src/wizard.ts +0 -15
@@ -1,202 +0,0 @@
1
- import { useMemo } from "react";
2
- import { ChevronLeft, ChevronRight } from "lucide-react";
3
- import { cn } from "../lib/cn";
4
- import { DEFAULT_DATA_TABLE_LABELS, type DataTableLabels } from "./data-table-labels";
5
- import { useKitLabels, useKitLocale, type LabelOverride } from "../i18n/kit-labels";
6
- import { usePhoneLayout } from "../hooks/use-breakpoint";
7
- import { useLargeText } from "../hooks/use-large-text";
8
-
9
- export const PAGE_SIZE_OPTIONS = [10, 25, 50, 100, 200] as const;
10
-
11
- /** The page-size steps, with the current size slotted in when it is not one of them. */
12
- function sizeOptions(pageSize: number): number[] {
13
- const steps: number[] = [...PAGE_SIZE_OPTIONS];
14
- if (!Number.isFinite(pageSize) || steps.includes(pageSize)) return steps;
15
- return [...steps, pageSize].sort((a, b) => a - b);
16
- }
17
-
18
- interface PaginationProps {
19
- page: number;
20
- totalPages: number;
21
- pageSize: number;
22
- total: number;
23
- onPage: (p: number) => void;
24
- /** Omit when the page size is not the user's to change (a server that fixes it):
25
- * the select is then not rendered at all, rather than rendered and inert. */
26
- onPageSize?: (n: number) => void;
27
- /** Over `dataTable` from `<UiKitProvider labels>`, over the English defaults. */
28
- labels?: LabelOverride<DataTableLabels>;
29
- /** For the page numbers and page-size options; falls back to the provider's. */
30
- locale?: string;
31
- /** `"compact"` for a pager under a compact {@link DataTable} (lenkbank's in-card
32
- * tables): a slimmer footer and page buttons, so the pager is not the tallest row
33
- * of a table that was made compact on purpose. */
34
- density?: "comfortable" | "compact";
35
- }
36
-
37
- /**
38
- * How many page numbers flank the current one on the strip: ±2, and ±1 on a phone at
39
- * Large and Extra large (0.32.1, the 360 px Extra-large sweep; docs/text-size-
40
- * harmonization.md §4). At 150 % a number button is 42 px, and "‹ 1 2 3 … 494 ›" was
41
- * 312 px on a 360 px phone's 262; one neighbour fewer on each side saves two buttons.
42
- */
43
- const PAGE_WINDOW = 2;
44
- const PAGE_WINDOW_LARGE_PHONE = 1;
45
-
46
- /**
47
- * The strip's two parts (0.32.1, same sweep, §4 "nothing overflows"). The arrows keep
48
- * the ends; the numbers between them wrap, centred, when even the narrower window does
49
- * not fit — a middle page of a long list ("1 … 249 250 251 … 494") at Extra large, or at
50
- * Normal on a narrow phone, where the one-row strip ran past the screen. Where the
51
- * strip fits it is one row, as before.
52
- */
53
- const PAGE_STRIP = "flex min-w-0 max-w-full items-center gap-1";
54
- const PAGE_NUMBERS = "flex min-w-0 flex-wrap items-center justify-center gap-1";
55
-
56
- /**
57
- * The arrows at the ends of the strip are `aria-disabled`, not `disabled` (refactor audit
58
- * 2026-10-30, DSP-12): Next pressed onto the last page — or Previous onto the first —
59
- * is still the focused button, and a button that turns `disabled` drops the focus it
60
- * holds to `<body>`. JumpCalendar's arrows keep the same rule, and the table's
61
- * `isLoading` pager the same reason (`ServerPagination.isLoading`). Dimmed as before; a
62
- * press there does nothing.
63
- */
64
- const ARROW =
65
- "rounded hover:bg-hover aria-disabled:cursor-not-allowed aria-disabled:opacity-40 aria-disabled:hover:bg-transparent";
66
-
67
- /** Footer for {@link DataTable}: range summary, page-size select, and a
68
- * windowed page-number strip (first/last + ±2 around the current page, ±1 on a phone
69
- * at Large — see {@link PAGE_WINDOW}). */
70
- export function Pagination({
71
- page,
72
- totalPages,
73
- pageSize,
74
- total,
75
- onPage,
76
- onPageSize,
77
- labels: labelsProp,
78
- locale: localeProp,
79
- density = "comfortable",
80
- }: PaginationProps) {
81
- const compact = density === "compact";
82
- // prop > provider > English, like every other kit component. This defaulted straight
83
- // to the English object, so a standalone pager under a translated provider still
84
- // said "Rows per page" — only the pager INSIDE a DataTable was translated, because
85
- // the table resolved the provider's labels and handed them down.
86
- const labels = useKitLabels("dataTable", DEFAULT_DATA_TABLE_LABELS, labelsProp);
87
- const locale = useKitLocale(localeProp);
88
- // The bare numbers on the strip and in the select are text too: `String(n)` is
89
- // always ASCII digits, which is wrong for a locale that writes its own. The range
90
- // summary is not formatted here — `pageRange` / `rowCount` take NUMBERS so the
91
- // translation can format them itself, alongside the words around them.
92
- const num = useMemo(() => new Intl.NumberFormat(locale), [locale]);
93
- const large = useLargeText();
94
- const phone = usePhoneLayout();
95
- const radius = large && phone ? PAGE_WINDOW_LARGE_PHONE : PAGE_WINDOW;
96
- const visible = useMemo(() => {
97
- // Every page when that is no longer than the window would be (first, last, the
98
- // current one, its neighbours and two ellipses).
99
- if (totalPages <= 2 * radius + 3) return Array.from({ length: totalPages }, (_, i) => i);
100
- const set = new Set<number>([0, totalPages - 1, page]);
101
- for (let d = 1; d <= radius; d++) {
102
- if (page - d >= 0) set.add(page - d);
103
- if (page + d <= totalPages - 1) set.add(page + d);
104
- }
105
- return Array.from(set).sort((a, b) => a - b);
106
- }, [page, totalPages, radius]);
107
-
108
- const items: (number | "ellipsis")[] = [];
109
- visible.forEach((p, idx) => {
110
- if (idx > 0 && p - visible[idx - 1] > 1) items.push("ellipsis");
111
- items.push(p);
112
- });
113
-
114
- return (
115
- <div
116
- data-density={density}
117
- className={cn(
118
- "flex flex-wrap items-center justify-between gap-2 border-t border-subtle text-xs text-secondary",
119
- compact ? "px-2 py-1" : "px-3 py-2",
120
- )}
121
- >
122
- <div className="flex items-center gap-2">
123
- <span>
124
- {/* No rows is a count, not a range: the range read "1–0 / 0" (round 0.34 BUG-14). */}
125
- {pageSize === Infinity || total === 0
126
- ? labels.rowCount(total)
127
- : labels.pageRange(page * pageSize + 1, Math.min(total, (page + 1) * pageSize), total)}
128
- </span>
129
- {onPageSize && (
130
- <select
131
- value={pageSize === Infinity ? "all" : pageSize}
132
- onChange={(e) => onPageSize(e.target.value === "all" ? Infinity : Number(e.target.value))}
133
- className="rounded border border-subtle bg-surface px-1 py-0.5 text-xs"
134
- aria-label={labels.pageSize}
135
- >
136
- {/* A `defaultPageSize` that is not one of the steps (keksdose's 5) is offered
137
- too — a select whose value has no option shows its first one ("10"). */}
138
- {sizeOptions(pageSize).map((n) => (
139
- <option key={n} value={n}>
140
- {num.format(n)}
141
- </option>
142
- ))}
143
- <option value="all">{labels.pageSizeAll}</option>
144
- </select>
145
- )}
146
- </div>
147
- {pageSize !== Infinity && totalPages > 1 && (
148
- <div data-slot="page-strip" className={PAGE_STRIP}>
149
- <button
150
- type="button"
151
- onClick={() => {
152
- if (page > 0) onPage(page - 1);
153
- }}
154
- aria-disabled={page === 0 || undefined}
155
- className={cn(ARROW, compact ? "p-0.5" : "p-1")}
156
- aria-label={labels.prevPage}
157
- >
158
- {/* "Previous" points back along the line — left in LTR, right in RTL. */}
159
- <ChevronLeft className={cn("rtl:-scale-x-100", compact ? "size-3.5" : "size-4")} />
160
- </button>
161
- <div data-slot="page-numbers" className={PAGE_NUMBERS}>
162
- {items.map((it, i) =>
163
- it === "ellipsis" ? (
164
- <span key={`e${i}`} className="px-1 text-placeholder">
165
- …
166
- </span>
167
- ) : (
168
- <button
169
- key={it}
170
- type="button"
171
- onClick={() => onPage(it)}
172
- // Which page you are on is carried only by a background colour
173
- // otherwise, and the strip is a row of bare numbers with nothing
174
- // else to tell them apart.
175
- aria-current={it === page ? "page" : undefined}
176
- className={cn(
177
- "rounded",
178
- compact ? "min-w-6 px-1.5 py-0" : "min-w-7 px-2 py-0.5",
179
- it === page ? "bg-inverse text-inverse" : "hover:bg-hover",
180
- )}
181
- >
182
- {num.format(it + 1)}
183
- </button>
184
- ),
185
- )}
186
- </div>
187
- <button
188
- type="button"
189
- onClick={() => {
190
- if (page < totalPages - 1) onPage(page + 1);
191
- }}
192
- aria-disabled={page >= totalPages - 1 || undefined}
193
- className={cn(ARROW, compact ? "p-0.5" : "p-1")}
194
- aria-label={labels.nextPage}
195
- >
196
- <ChevronRight className={cn("rtl:-scale-x-100", compact ? "size-3.5" : "size-4")} />
197
- </button>
198
- </div>
199
- )}
200
- </div>
201
- );
202
- }
@@ -1,188 +0,0 @@
1
- import { useEffect, useRef } from "react";
2
- import type { Dispatch, SetStateAction } from "react";
3
- import { isRtl } from "../lib/direction";
4
- import type { DataTableColumn } from "./data-table";
5
-
6
- // DataTable's column resize and auto-size. Moved out of data-table.tsx whole (refactor
7
- // audit 2026-10, MOD-3 step 2): what it needs from the table is the header cells, the
8
- // widths and their setter, and which columns are shown — nothing else.
9
-
10
- /** A column resize in flight. Held in a ref rather than in state: the live width is
11
- * written straight onto the column's cells, so a drag costs zero renders and the
12
- * one `setWidths` happens when the pointer comes up. */
13
- interface Resize {
14
- key: string;
15
- pointerId: number;
16
- startX: number;
17
- startWidth: number;
18
- /** +1 when a drag to the right widens the column, -1 in a right-to-left table,
19
- * where the handle sits on the column's LEFT edge and widening is a drag left. */
20
- sign: 1 | -1;
21
- /** What React last rendered this column at, so a CANCELLED drag can put the header
22
- * back — React cannot, it never saw the inline width the drag wrote. */
23
- hadWidth: number | undefined;
24
- /** The header and the body cells under it, collected ONCE when the drag starts.
25
- * A `<th>` alone cannot shrink a column whose `<td>`s already carry a pinned
26
- * width — and nothing re-renders during a drag, so the list cannot go stale. */
27
- cells: HTMLElement[];
28
- width: number;
29
- /** A press with no drag in it is not a resize — the handle is also the
30
- * double-click target that CLEARS a width, and committing the header's current
31
- * size on the way past would pin every column the user ever brushed. */
32
- moved: boolean;
33
- }
34
-
35
- /**
36
- * The resize handles' pointer handlers, and the column panel's "Auto-size".
37
- *
38
- * Pointer events with capture, rather than a `mousemove`/`mouseup` pair on `window`.
39
- * Three defects in one eleven-line handler (audit 2026-09-22):
40
- *
41
- * * a `setWidths` per `mousemove` re-rendered every row of the table on every pixel
42
- * of the drag — on a 500-row table that is the whole body, sixty times a second;
43
- * * the two `window` listeners were added from inside an event handler, so nothing
44
- * removed them if the table unmounted mid-drag (the row beneath opens a route),
45
- * and `document.body.style` stayed at `user-select: none; cursor: col-resize` for
46
- * the rest of the session — the whole page unselectable, with the wrong cursor;
47
- * * `mousedown` is a mouse. Under a finger the handle did nothing at all.
48
- *
49
- * `setPointerCapture` answers all three: the handle itself receives every move and
50
- * the terminating `pointerup`/`pointercancel` wherever the pointer travels, so there
51
- * is nothing global to leak, and a touch drag works because a finger is a pointer.
52
- * The live width is written straight onto the column's own cells — the same three
53
- * properties the render sets, so the drag and the commit cannot disagree — and
54
- * `setWidths` is called once, when the drag ends.
55
- */
56
- export function useColumnResize<T>({
57
- headRefs,
58
- widths,
59
- setWidths,
60
- columns,
61
- hiddenCols,
62
- }: {
63
- /** The header cells by column key, as the `<th>`s' ref callbacks fill it. */
64
- headRefs: Map<string, HTMLTableCellElement>;
65
- /** The widths React renders the columns at. */
66
- widths: Record<string, number>;
67
- setWidths: Dispatch<SetStateAction<Record<string, number>>>;
68
- columns: readonly DataTableColumn<T>[];
69
- hiddenCols: Set<string>;
70
- }) {
71
- const resizing = useRef<Resize | null>(null);
72
-
73
- /** Every cell in one column, header first, totals row included. `data-col` rather than a cell index:
74
- * an expanded row holds a single `colSpan` cell, so the nth `<td>` of a row is
75
- * not reliably the nth column. */
76
- const columnCells = (key: string): HTMLElement[] => {
77
- const th = headRefs.get(key);
78
- if (!th) return [];
79
- const table = th.closest("table");
80
- if (!table) return [th];
81
- return [
82
- th,
83
- ...Array.from(table.querySelectorAll<HTMLElement>("tbody [data-col], tfoot [data-col]")).filter(
84
- (el) => el.dataset.col === key,
85
- ),
86
- ];
87
- };
88
-
89
- const applyLiveWidth = (cells: HTMLElement[], width: number | undefined) => {
90
- const px = width == null ? "" : `${width}px`;
91
- for (const el of cells) {
92
- el.style.width = px;
93
- el.style.minWidth = px;
94
- el.style.maxWidth = px;
95
- }
96
- };
97
-
98
- const releaseResizeChrome = (handle: Element, pointerId: number) => {
99
- document.body.style.userSelect = "";
100
- document.body.style.cursor = "";
101
- // Optional calls: jsdom implements neither, and the handlers sit on the handle
102
- // itself, so a run without capture behaves the same for anything that stays
103
- // inside the element.
104
- if (handle.hasPointerCapture?.(pointerId)) handle.releasePointerCapture?.(pointerId);
105
- };
106
-
107
- const startResize = (e: React.PointerEvent<HTMLElement>, key: string) => {
108
- // Secondary buttons open menus; only a primary press starts a drag.
109
- if (e.button !== 0) return;
110
- e.preventDefault();
111
- e.stopPropagation();
112
- const th = headRefs.get(key);
113
- const startWidth = th?.getBoundingClientRect().width ?? 100;
114
- resizing.current = {
115
- key,
116
- pointerId: e.pointerId,
117
- startX: e.clientX,
118
- startWidth,
119
- sign: isRtl(e.currentTarget) ? -1 : 1,
120
- hadWidth: widths[key],
121
- cells: columnCells(key),
122
- width: startWidth,
123
- moved: false,
124
- };
125
- e.currentTarget.setPointerCapture?.(e.pointerId);
126
- document.body.style.userSelect = "none";
127
- document.body.style.cursor = "col-resize";
128
- };
129
-
130
- const moveResize = (e: React.PointerEvent<HTMLElement>) => {
131
- const drag = resizing.current;
132
- if (!drag || drag.pointerId !== e.pointerId) return;
133
- drag.width = Math.max(40, Math.round(drag.startWidth + drag.sign * (e.clientX - drag.startX)));
134
- drag.moved = true;
135
- applyLiveWidth(drag.cells, drag.width);
136
- };
137
-
138
- const finishResize = (e: React.PointerEvent<HTMLElement>, commit: boolean) => {
139
- const drag = resizing.current;
140
- // Before the early return: the page gets its selection and its cursor back even
141
- // for a pointer we were not tracking.
142
- releaseResizeChrome(e.currentTarget, e.pointerId);
143
- if (!drag || drag.pointerId !== e.pointerId) return;
144
- resizing.current = null;
145
- if (commit && drag.moved) {
146
- setWidths((w) => ({ ...w, [drag.key]: drag.width }));
147
- return;
148
- }
149
- // Cancelled — the browser took the pointer for a system gesture — or the press
150
- // never became a drag. Either way the column goes back to the width React last
151
- // rendered it at, which nothing else can do: the inline width the drag wrote is
152
- // invisible to React, so a re-render with an unchanged `widths` would keep it.
153
- applyLiveWidth(drag.cells, drag.hadWidth);
154
- };
155
-
156
- // The last exit path. A table that unmounts mid-drag takes the handle, and with it
157
- // every handler above, out of the document — this is the only place left to hand the
158
- // page back its text selection and its cursor.
159
- useEffect(
160
- () => () => {
161
- if (!resizing.current) return;
162
- resizing.current = null;
163
- document.body.style.userSelect = "";
164
- document.body.style.cursor = "";
165
- },
166
- [],
167
- );
168
-
169
- const autoSizeAll = () => {
170
- // Clear widths so the table reflows to natural sizes, then snapshot each
171
- // column's width and write it back — except for the last visible column,
172
- // which is left unconstrained so it absorbs any remaining horizontal space.
173
- setWidths({});
174
- requestAnimationFrame(() => {
175
- const next: Record<string, number> = {};
176
- const cols = columns.filter((c) => !hiddenCols.has(c.key));
177
- cols.forEach((col, idx) => {
178
- // A `grow` column takes the rest by design: pinning it would undo that (0.48).
179
- if (idx === cols.length - 1 || col.grow) return;
180
- const th = headRefs.get(col.key);
181
- if (th) next[col.key] = Math.ceil(th.getBoundingClientRect().width);
182
- });
183
- setWidths(next);
184
- });
185
- };
186
-
187
- return { startResize, moveResize, finishResize, autoSizeAll };
188
- }
@@ -1,302 +0,0 @@
1
- import { isValidElement, useCallback, useMemo } from "react";
2
- import type { ReactNode } from "react";
3
- import { Pencil, Trash2 } from "lucide-react";
4
- import { RowActions, type RowAction, type RowActionTone } from "./row-actions";
5
- import type { SwipeAction } from "./swipeable-row";
6
- import type { DataTableLabels } from "./data-table-labels";
7
- import type {
8
- DataTableColumn,
9
- DataTableDensity,
10
- DataTableDesktopSwipeActions,
11
- DataTableProps,
12
- DataTableRowAction,
13
- MobileSwipeActions,
14
- } from "./data-table";
15
-
16
- // DataTable's per-row actions (`rowActions`): the actions column on a wide screen and
17
- // the swipes on a phone card. Moved out of data-table.tsx whole (refactor audit
18
- // 2026-10, MOD-3 step 1); internal — the public types stay in data-table.tsx.
19
-
20
- /** The actions column's key. Not a column a caller declares, so it is kept out of the
21
- * column-settings panel. */
22
- export const ROW_ACTIONS_KEY = "__rowActions";
23
-
24
- /** The key of the column derived from `mobileSwipeActions` (0.46, dev#598) — the
25
- * table's own too. */
26
- export const SWIPE_ACTIONS_KEY = "__swipeActions";
27
-
28
- /** A column the TABLE adds, not the caller: out of the column settings and the count,
29
- * never resized, never the totals row's header. */
30
- export function isTableOwnColumn(key: string): boolean {
31
- return key === ROW_ACTIONS_KEY || key === SWIPE_ACTIONS_KEY;
32
- }
33
-
34
- /**
35
- * An actions column's heading (0.46.1, keksdose dev#598 rework — Marcel: a VISIBLE
36
- * "Actions" heading on every table with an actions column): the caller's node, else the
37
- * word on screen; `false` is the pre-0.46.1 heading, a screen reader's name only.
38
- */
39
- export function actionsHeading(header: ReactNode | false | undefined, word: string): ReactNode {
40
- if (header === false) return <span className="sr-only">{word}</span>;
41
- return header ?? word;
42
- }
43
-
44
- /** A curtain's tone, as an icon button's (keksdose's `toneOf`): only the tones that MEAN
45
- * something on a quiet icon carry over; a status colour, a hue or an app's `paint` stays
46
- * on the curtain and reads muted. */
47
- function swipeTone(action: SwipeAction): RowActionTone {
48
- switch (action.tone) {
49
- case "danger":
50
- case "warning":
51
- case "info":
52
- return action.tone;
53
- default:
54
- return "muted";
55
- }
56
- }
57
-
58
- /**
59
- * A row's swipe plan as desktop row actions (dev#598) — what DataTable's
60
- * `desktopSwipeActions` column draws, for an app that builds its own actions column (or
61
- * a `RowActions` outside a table) from the same `mobileSwipeActions` plan, so the two
62
- * cannot drift (public since 0.46.1, keksdose N3).
63
- *
64
- * `end` then `start` — the physical `right` / `left` only where the logical side is
65
- * missing, as the card reads them — each action once, told apart by its `id`, else by its
66
- * label (two stages with one label would be one button twice). Each button runs the
67
- * swipe's own `onCommit` — with no confirmation of the kit's (`confirm: false`), as the
68
- * swipe has none; a swipe's `danger` / `warning` / `info` tone carries over, any
69
- * other reads `muted`. `options.omit` leaves an action out, `options.commit` gives it a
70
- * `CommitScope` (see {@link DataTableDesktopSwipeActions}). A `null` plan is `[]`.
71
- *
72
- * <RowActions actions={swipePlanRowActions(plan(row), row, { omit })} name={row.title} />
73
- */
74
- export function swipePlanRowActions<T>(
75
- plan: MobileSwipeActions | null | undefined,
76
- row: T,
77
- options: Pick<DataTableDesktopSwipeActions<T>, "omit" | "commit"> = {},
78
- ): RowAction[] {
79
- if (!plan) return [];
80
- const out: RowAction[] = [];
81
- const seen = new Set<string>();
82
- for (const action of [...(plan.end ?? plan.right ?? []), ...(plan.start ?? plan.left ?? [])]) {
83
- const key = action.id ?? action.label;
84
- if (seen.has(key)) continue;
85
- seen.add(key);
86
- if (options.omit?.(action, row)) continue;
87
- const commit = typeof options.commit === "function" ? options.commit(action, row) : options.commit;
88
- out.push({
89
- key,
90
- label: action.label,
91
- icon: isValidElement(action.icon) ? (
92
- action.icon
93
- ) : action.icon != null && action.icon !== false ? (
94
- <>{action.icon}</>
95
- ) : undefined,
96
- tone: swipeTone(action),
97
- commit,
98
- // A swipe commits without the kit asking (the plan's `onCommit` asks, as keksdose's
99
- // does), so its button does not ask twice (0.49 KIT-12); a danger one still sits in
100
- // the row's menu.
101
- confirm: false,
102
- onSelect: action.onCommit,
103
- });
104
- }
105
- return out;
106
- }
107
-
108
- interface ResolvedRowAction<T> {
109
- key: string;
110
- label: string;
111
- icon: ReactNode;
112
- tone: "default" | "danger";
113
- swipe: "start" | "end" | false;
114
- action: DataTableRowAction<T>;
115
- }
116
-
117
- function resolveRowAction<T>(
118
- action: DataTableRowAction<T>,
119
- index: number,
120
- labels: DataTableLabels,
121
- ): ResolvedRowAction<T> {
122
- const tone = action.tone ?? (action.kind === "delete" ? "danger" : "default");
123
- return {
124
- key: action.kind ?? `${index}:${action.label ?? ""}`,
125
- label: action.label ?? (action.kind === "edit" ? labels.edit : action.kind === "delete" ? labels.delete : ""),
126
- icon: action.icon ?? (action.kind === "edit" ? <Pencil /> : action.kind === "delete" ? <Trash2 /> : null),
127
- tone,
128
- swipe: action.swipe ?? (tone === "danger" ? "start" : "end"),
129
- action,
130
- };
131
- }
132
-
133
- /** Ask, then act. */
134
- async function runRowAction<T>(action: DataTableRowAction<T>, row: T): Promise<void> {
135
- if (action.confirm && !(await action.confirm(row))) return;
136
- action.onAction(row);
137
- }
138
-
139
- /** A resolved row action as {@link RowActions} takes it. Its `icon` is any node; a
140
- * non-element one (a string glyph) is wrapped, since RowAction wants an element. */
141
- function toRowAction<T>(a: ResolvedRowAction<T>, row: T): RowAction {
142
- return {
143
- key: a.key,
144
- label: a.label,
145
- icon: isValidElement(a.icon) ? a.icon : a.icon != null && a.icon !== false ? <>{a.icon}</> : undefined,
146
- tone: a.tone,
147
- disabledReason: a.action.disabledReason?.(row),
148
- // The table's own `confirm` asks in `runRowAction`; RowActions' default question
149
- // (0.49 KIT-12) is for a delete that brought none.
150
- confirm: a.action.confirm ? false : undefined,
151
- onSelect: () => void runRowAction(a.action, row),
152
- };
153
- }
154
-
155
- /**
156
- * The caller's columns with the actions column appended, and the same actions as a
157
- * phone card's swipes (`swipesFromActions`; DataTable uses it unless the caller passes
158
- * `mobileSwipeActions`). Without `rowActions` the columns come back as given.
159
- *
160
- * The actions column is appended to the caller's columns rather than drawn as a
161
- * second special case beside the selection column: it then gets the cell padding,
162
- * the widths and the phone rules (`mobileHidden`) every other column gets.
163
- */
164
- export function useRowActionColumn<T>({
165
- columns: columnsProp,
166
- rowActions,
167
- rowActionsHeader,
168
- rowName,
169
- labels,
170
- density,
171
- mobileSwipeActions,
172
- desktopSwipeActions,
173
- }: {
174
- columns: readonly DataTableColumn<T>[];
175
- rowActions: DataTableProps<T>["rowActions"];
176
- rowActionsHeader?: DataTableProps<T>["rowActionsHeader"];
177
- rowName: DataTableProps<T>["rowName"];
178
- labels: DataTableLabels;
179
- density: DataTableDensity;
180
- mobileSwipeActions?: DataTableProps<T>["mobileSwipeActions"];
181
- desktopSwipeActions?: DataTableProps<T>["desktopSwipeActions"];
182
- }): {
183
- columns: readonly DataTableColumn<T>[];
184
- swipesFromActions: (row: T) => MobileSwipeActions | null;
185
- } {
186
- const rowActionsFor = useCallback(
187
- (row: T): ResolvedRowAction<T>[] =>
188
- rowActions
189
- ? (typeof rowActions === "function" ? rowActions(row) : rowActions)
190
- .filter((a) => !a.hidden?.(row))
191
- .map((a, i) => resolveRowAction(a, i, labels))
192
- : [],
193
- [rowActions, labels],
194
- );
195
- // dev#598: the desktop half of the caller's swipes. On by default, except beside
196
- // `rowActions`, whose column already is the desktop's (and whose swipes these usually
197
- // are). The options object is often a fresh literal per render; its parts are the deps.
198
- const swipeOptions = typeof desktopSwipeActions === "object" ? desktopSwipeActions : undefined;
199
- const swipeColumnOn =
200
- !!mobileSwipeActions && (desktopSwipeActions === undefined ? !rowActions : desktopSwipeActions !== false);
201
- const swipeOmit = swipeOptions?.omit;
202
- const swipeName = swipeOptions?.name;
203
- const swipeCollapse = swipeOptions?.collapse;
204
- const swipeCommit = swipeOptions?.commit;
205
- const swipeHeader = swipeOptions?.header;
206
- const swipeColumn = useMemo<DataTableColumn<T> | null>(
207
- () =>
208
- swipeColumnOn
209
- ? {
210
- key: SWIPE_ACTIONS_KEY,
211
- header: actionsHeading(swipeHeader, labels.actions),
212
- cell: (row) => (
213
- <RowActions
214
- actions={swipePlanRowActions(mobileSwipeActions!(row), row, { omit: swipeOmit, commit: swipeCommit })}
215
- name={(swipeName ?? rowName)?.(row)}
216
- collapse={swipeCollapse}
217
- size={density === "compact" ? "2xs" : "xs"}
218
- // The last column's tooltips open toward the row's start.
219
- tooltipSide="start"
220
- labels={{ actions: labels.actions }}
221
- className="justify-end"
222
- />
223
- ),
224
- className: "w-px whitespace-nowrap text-end",
225
- // The heading over the buttons, at the row's end (0.46.1).
226
- headClassName: "w-px text-end",
227
- // On a phone the same actions are the card's swipes.
228
- mobileHidden: true,
229
- noRowLink: true,
230
- }
231
- : null,
232
- [
233
- swipeColumnOn,
234
- mobileSwipeActions,
235
- swipeOmit,
236
- swipeCommit,
237
- swipeName,
238
- rowName,
239
- swipeCollapse,
240
- swipeHeader,
241
- density,
242
- labels.actions,
243
- ],
244
- );
245
- const actionColumns = useMemo<readonly DataTableColumn<T>[]>(
246
- () =>
247
- rowActions
248
- ? [
249
- ...columnsProp,
250
- {
251
- key: ROW_ACTIONS_KEY,
252
- header: actionsHeading(rowActionsHeader, labels.actions),
253
- // Through RowActions (0.32, §10.8): the icons inline at Normal, one "⋯"
254
- // menu at Large once there are two — every label at once does not fit a
255
- // row. Each control stops its own click: the row's handler already skips
256
- // its controls, and this is for the caller who wraps the table in a
257
- // clickable element of their own.
258
- cell: (row) => (
259
- <RowActions
260
- actions={rowActionsFor(row).map((a) => toRowAction(a, row))}
261
- name={rowName?.(row)}
262
- size={density === "compact" ? "2xs" : "xs"}
263
- labels={{ actions: labels.actions }}
264
- className="justify-end"
265
- />
266
- ),
267
- className: "w-px whitespace-nowrap text-end",
268
- headClassName: "w-px text-end",
269
- // On a phone the same actions are the card's swipes.
270
- mobileHidden: true,
271
- noRowLink: true,
272
- },
273
- ]
274
- : columnsProp,
275
- [columnsProp, rowActions, rowActionsHeader, rowActionsFor, rowName, labels.actions, density],
276
- );
277
- const columns = useMemo(
278
- () => (swipeColumn ? [...actionColumns, swipeColumn] : actionColumns),
279
- [actionColumns, swipeColumn],
280
- );
281
- // A stable function (0.48.2): the phone cards compare it by identity.
282
- const swipesFromActions = useCallback(
283
- (row: T): MobileSwipeActions | null => {
284
- const swipes = rowActionsFor(row).filter((a) => a.swipe && !a.action.disabledReason?.(row));
285
- if (!swipes.length) return null;
286
- const toSwipe = (a: ResolvedRowAction<T>): SwipeAction => ({
287
- label: a.label,
288
- icon: a.icon,
289
- onCommit: () => void runRowAction(a.action, row),
290
- // The row action's tone, painted by SwipeableRow: its soft wash idle, its fill
291
- // and that fill's foreground armed (0.33).
292
- tone: a.tone === "danger" ? "danger" : "brand",
293
- });
294
- return {
295
- start: swipes.filter((a) => a.swipe === "start").map(toSwipe),
296
- end: swipes.filter((a) => a.swipe === "end").map(toSwipe),
297
- };
298
- },
299
- [rowActionsFor],
300
- );
301
- return { columns, swipesFromActions };
302
- }