@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,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
- }