@eifi1/ui-kit 0.51.4 → 0.51.6

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 (759) hide show
  1. package/README.md +5 -5
  2. package/dist/account/account-settings-labels.js.map +1 -1
  3. package/dist/account/account-settings.js +11 -9
  4. package/dist/account/account-settings.js.map +1 -1
  5. package/dist/account/delete-account-setting.js +56 -65
  6. package/dist/account/delete-account-setting.js.map +1 -1
  7. package/dist/account/email-change-setting-labels.js.map +1 -1
  8. package/dist/account/email-change-setting.js.map +1 -1
  9. package/dist/account/passkeys-setting.js.map +1 -1
  10. package/dist/account/sessions-setting.js.map +1 -1
  11. package/dist/admin/admin-action-confirm.js +1 -3
  12. package/dist/admin/admin-action-confirm.js.map +1 -1
  13. package/dist/admin/admin-action-log.js.map +1 -1
  14. package/dist/admin/admin-area-labels.js +4 -1
  15. package/dist/admin/admin-area-labels.js.map +1 -1
  16. package/dist/admin/admin-overview.js +19 -11
  17. package/dist/admin/admin-overview.js.map +1 -1
  18. package/dist/admin/admin-sections.js.map +1 -1
  19. package/dist/admin/admin-tool-links.d.ts +1 -1
  20. package/dist/admin/admin-tool-links.js +7 -1
  21. package/dist/admin/admin-tool-links.js.map +1 -1
  22. package/dist/admin/invitations-panel.js +2 -13
  23. package/dist/admin/invitations-panel.js.map +1 -1
  24. package/dist/admin/mail-test-card.js.map +1 -1
  25. package/dist/admin/reviewer-scope-editor.js +4 -11
  26. package/dist/admin/reviewer-scope-editor.js.map +1 -1
  27. package/dist/admin/role-select.js.map +1 -1
  28. package/dist/admin/user-roster.js +1 -9
  29. package/dist/admin/user-roster.js.map +1 -1
  30. package/dist/auth/accept-invitation.js.map +1 -1
  31. package/dist/auth/auth-errors.js.map +1 -1
  32. package/dist/auth/forgot-password-form.js +23 -31
  33. package/dist/auth/forgot-password-form.js.map +1 -1
  34. package/dist/auth/register-form.js.map +1 -1
  35. package/dist/auth/reset-password-form.js.map +1 -1
  36. package/dist/auth/sign-in-form.js +13 -5
  37. package/dist/auth/sign-in-form.js.map +1 -1
  38. package/dist/auth/verify-email.js +1 -8
  39. package/dist/auth/verify-email.js.map +1 -1
  40. package/dist/billing/billing-banner.js.map +1 -1
  41. package/dist/billing/billing-labels.js.map +1 -1
  42. package/dist/billing/checkout-processing.js.map +1 -1
  43. package/dist/billing/plan-card.js +91 -85
  44. package/dist/billing/plan-card.js.map +1 -1
  45. package/dist/billing/plan-limit-toast.js.map +1 -1
  46. package/dist/billing/plan-limit.js.map +1 -1
  47. package/dist/billing/plan-price.js.map +1 -1
  48. package/dist/billing/plan-switch.js.map +1 -1
  49. package/dist/billing/subscription-actions.js.map +1 -1
  50. package/dist/bin/eifi1-pay-page.mjs +6 -1
  51. package/dist/components/account-chips.js.map +1 -1
  52. package/dist/components/alert-banner.js +1 -5
  53. package/dist/components/alert-banner.js.map +1 -1
  54. package/dist/components/amount-input.js +29 -12
  55. package/dist/components/amount-input.js.map +1 -1
  56. package/dist/components/authed-image.js.map +1 -1
  57. package/dist/components/autocomplete.js.map +1 -1
  58. package/dist/components/bulk-action-bar.js +1 -4
  59. package/dist/components/bulk-action-bar.js.map +1 -1
  60. package/dist/components/button-group.js.map +1 -1
  61. package/dist/components/button-look.js.map +1 -1
  62. package/dist/components/button.js +1 -7
  63. package/dist/components/button.js.map +1 -1
  64. package/dist/components/calculator.js +5 -5
  65. package/dist/components/calculator.js.map +1 -1
  66. package/dist/components/calendar-heatmap.js +4 -10
  67. package/dist/components/calendar-heatmap.js.map +1 -1
  68. package/dist/components/card.js +1 -8
  69. package/dist/components/card.js.map +1 -1
  70. package/dist/components/chart-zoom-core.js +3 -17
  71. package/dist/components/chart-zoom-core.js.map +1 -1
  72. package/dist/components/chart.d.ts +1 -1
  73. package/dist/components/chart.js +4 -22
  74. package/dist/components/chart.js.map +1 -1
  75. package/dist/components/checkbox-group.js +1 -4
  76. package/dist/components/checkbox-group.js.map +1 -1
  77. package/dist/components/chip-input.js +4 -1
  78. package/dist/components/chip-input.js.map +1 -1
  79. package/dist/components/chip.js +10 -5
  80. package/dist/components/chip.js.map +1 -1
  81. package/dist/components/choice-card.js +58 -74
  82. package/dist/components/choice-card.js.map +1 -1
  83. package/dist/components/column-mapper-labels.js.map +1 -1
  84. package/dist/components/column-mapper.js +167 -227
  85. package/dist/components/column-mapper.js.map +1 -1
  86. package/dist/components/combobox-core.js +1 -4
  87. package/dist/components/combobox-core.js.map +1 -1
  88. package/dist/components/combobox.js +1 -4
  89. package/dist/components/combobox.js.map +1 -1
  90. package/dist/components/confirm-dialog.js.map +1 -1
  91. package/dist/components/copy-button.js.map +1 -1
  92. package/dist/components/country-select.d.ts +5 -4
  93. package/dist/components/country-select.js +3 -19
  94. package/dist/components/country-select.js.map +1 -1
  95. package/dist/components/currency-option-list.js +10 -8
  96. package/dist/components/currency-option-list.js.map +1 -1
  97. package/dist/components/currency-select.js +1 -6
  98. package/dist/components/currency-select.js.map +1 -1
  99. package/dist/components/danger-confirm.js.map +1 -1
  100. package/dist/components/data-table-cells.js.map +1 -1
  101. package/dist/components/data-table-column-settings.js.map +1 -1
  102. package/dist/components/data-table-filter-popover.js +2 -18
  103. package/dist/components/data-table-filter-popover.js.map +1 -1
  104. package/dist/components/data-table-filters.js.map +1 -1
  105. package/dist/components/data-table-fit.js.map +1 -1
  106. package/dist/components/data-table-groups.js +3 -1
  107. package/dist/components/data-table-groups.js.map +1 -1
  108. package/dist/components/data-table-head.js +44 -56
  109. package/dist/components/data-table-head.js.map +1 -1
  110. package/dist/components/data-table-mobile.js +31 -44
  111. package/dist/components/data-table-mobile.js.map +1 -1
  112. package/dist/components/data-table-pagination.js.map +1 -1
  113. package/dist/components/data-table-row-actions.js +19 -16
  114. package/dist/components/data-table-row-actions.js.map +1 -1
  115. package/dist/components/data-table-row.js.map +1 -1
  116. package/dist/components/data-table-shared.js.map +1 -1
  117. package/dist/components/data-table-sort.js.map +1 -1
  118. package/dist/components/data-table-virtual.js +4 -1
  119. package/dist/components/data-table-virtual.js.map +1 -1
  120. package/dist/components/data-table.js +30 -39
  121. package/dist/components/data-table.js.map +1 -1
  122. package/dist/components/date-picker.js +1 -6
  123. package/dist/components/date-picker.js.map +1 -1
  124. package/dist/components/date-range-picker.js.map +1 -1
  125. package/dist/components/description-list.js +10 -10
  126. package/dist/components/description-list.js.map +1 -1
  127. package/dist/components/dialog-frame.js +9 -2
  128. package/dist/components/dialog-frame.js.map +1 -1
  129. package/dist/components/disclosure.js +17 -27
  130. package/dist/components/disclosure.js.map +1 -1
  131. package/dist/components/dropdown.js +25 -35
  132. package/dist/components/dropdown.js.map +1 -1
  133. package/dist/components/empty-state.js.map +1 -1
  134. package/dist/components/entity-combobox.js.map +1 -1
  135. package/dist/components/error-boundary.js.map +1 -1
  136. package/dist/components/field-base.js +5 -5
  137. package/dist/components/field-base.js.map +1 -1
  138. package/dist/components/field-parts.d.ts +1 -1
  139. package/dist/components/field-parts.js +10 -14
  140. package/dist/components/field-parts.js.map +1 -1
  141. package/dist/components/field-sync.js +8 -10
  142. package/dist/components/field-sync.js.map +1 -1
  143. package/dist/components/file-button.js.map +1 -1
  144. package/dist/components/file-dropzone.js.map +1 -1
  145. package/dist/components/floating-panel.js +4 -1
  146. package/dist/components/floating-panel.js.map +1 -1
  147. package/dist/components/focus-ring.js.map +1 -1
  148. package/dist/components/form-actions.js.map +1 -1
  149. package/dist/components/grouped-picker.js +6 -8
  150. package/dist/components/grouped-picker.js.map +1 -1
  151. package/dist/components/hover-menu.js +1 -4
  152. package/dist/components/hover-menu.js.map +1 -1
  153. package/dist/components/iban-input-labels.js.map +1 -1
  154. package/dist/components/icon-button.js +4 -1
  155. package/dist/components/icon-button.js.map +1 -1
  156. package/dist/components/icon-picker.js +2 -7
  157. package/dist/components/icon-picker.js.map +1 -1
  158. package/dist/components/image-grid.js +41 -50
  159. package/dist/components/image-grid.js.map +1 -1
  160. package/dist/components/inline-edit-field.js.map +1 -1
  161. package/dist/components/inline-entity-combobox.js +2 -8
  162. package/dist/components/inline-entity-combobox.js.map +1 -1
  163. package/dist/components/input.js +14 -2
  164. package/dist/components/input.js.map +1 -1
  165. package/dist/components/jump-calendar.js +1 -7
  166. package/dist/components/jump-calendar.js.map +1 -1
  167. package/dist/components/legal-labels.js.map +1 -1
  168. package/dist/components/legal-page.js +14 -2
  169. package/dist/components/legal-page.js.map +1 -1
  170. package/dist/components/legal.js +12 -2
  171. package/dist/components/legal.js.map +1 -1
  172. package/dist/components/lightbox.js.map +1 -1
  173. package/dist/components/line-items.js +26 -36
  174. package/dist/components/line-items.js.map +1 -1
  175. package/dist/components/list.js +22 -10
  176. package/dist/components/list.js.map +1 -1
  177. package/dist/components/measured-grid.js +29 -53
  178. package/dist/components/measured-grid.js.map +1 -1
  179. package/dist/components/menu-item.js.map +1 -1
  180. package/dist/components/mini-calendar.js +13 -31
  181. package/dist/components/mini-calendar.js.map +1 -1
  182. package/dist/components/money-field.js.map +1 -1
  183. package/dist/components/month-picker.js +10 -21
  184. package/dist/components/month-picker.js.map +1 -1
  185. package/dist/components/multi-entity-combobox.js +3 -16
  186. package/dist/components/multi-entity-combobox.js.map +1 -1
  187. package/dist/components/multi-select.js.map +1 -1
  188. package/dist/components/nav-pills.js +10 -1
  189. package/dist/components/nav-pills.js.map +1 -1
  190. package/dist/components/number-field.js.map +1 -1
  191. package/dist/components/number-input.js +1 -7
  192. package/dist/components/number-input.js.map +1 -1
  193. package/dist/components/numpad-sheet.js +1 -4
  194. package/dist/components/numpad-sheet.js.map +1 -1
  195. package/dist/components/one-time-code-input.js +1 -7
  196. package/dist/components/one-time-code-input.js.map +1 -1
  197. package/dist/components/page-contents.js +13 -22
  198. package/dist/components/page-contents.js.map +1 -1
  199. package/dist/components/page-header.js +1 -11
  200. package/dist/components/page-header.js.map +1 -1
  201. package/dist/components/password-strength-labels.js.map +1 -1
  202. package/dist/components/password-strength.js +2 -8
  203. package/dist/components/password-strength.js.map +1 -1
  204. package/dist/components/phone-input.js +42 -57
  205. package/dist/components/phone-input.js.map +1 -1
  206. package/dist/components/picker-sheet.js.map +1 -1
  207. package/dist/components/pie-chart.js +1 -8
  208. package/dist/components/pie-chart.js.map +1 -1
  209. package/dist/components/popover.js.map +1 -1
  210. package/dist/components/progress-bar.js +16 -9
  211. package/dist/components/progress-bar.js.map +1 -1
  212. package/dist/components/qr-code.js +1 -8
  213. package/dist/components/qr-code.js.map +1 -1
  214. package/dist/components/row-actions.js +5 -1
  215. package/dist/components/row-actions.js.map +1 -1
  216. package/dist/components/search-field.js.map +1 -1
  217. package/dist/components/select.js +28 -38
  218. package/dist/components/select.js.map +1 -1
  219. package/dist/components/separator.js +1 -5
  220. package/dist/components/separator.js.map +1 -1
  221. package/dist/components/series-chart-axes.js +4 -1
  222. package/dist/components/series-chart-axes.js.map +1 -1
  223. package/dist/components/series-chart-budget.js.map +1 -1
  224. package/dist/components/series-chart-ticks.js.map +1 -1
  225. package/dist/components/series-chart.js +29 -45
  226. package/dist/components/series-chart.js.map +1 -1
  227. package/dist/components/settings-fields.js +21 -17
  228. package/dist/components/settings-fields.js.map +1 -1
  229. package/dist/components/share-card.js +4 -9
  230. package/dist/components/share-card.js.map +1 -1
  231. package/dist/components/sign-chip.js.map +1 -1
  232. package/dist/components/signature-pad.js +4 -13
  233. package/dist/components/signature-pad.js.map +1 -1
  234. package/dist/components/signed-amount.js +12 -5
  235. package/dist/components/signed-amount.js.map +1 -1
  236. package/dist/components/skeleton.js +2 -17
  237. package/dist/components/skeleton.js.map +1 -1
  238. package/dist/components/slider.js +13 -36
  239. package/dist/components/slider.js.map +1 -1
  240. package/dist/components/sparkline.js.map +1 -1
  241. package/dist/components/stat-tile.js +14 -10
  242. package/dist/components/stat-tile.js.map +1 -1
  243. package/dist/components/swatch-picker.js +14 -4
  244. package/dist/components/swatch-picker.js.map +1 -1
  245. package/dist/components/swipeable-row.d.ts +1 -1
  246. package/dist/components/swipeable-row.js +1 -8
  247. package/dist/components/swipeable-row.js.map +1 -1
  248. package/dist/components/table-skeleton.js +4 -1
  249. package/dist/components/table-skeleton.js.map +1 -1
  250. package/dist/components/table.js +12 -9
  251. package/dist/components/table.js.map +1 -1
  252. package/dist/components/tabs.js +5 -24
  253. package/dist/components/tabs.js.map +1 -1
  254. package/dist/components/text-link.js.map +1 -1
  255. package/dist/components/text.js.map +1 -1
  256. package/dist/components/tile-radio.js +1 -7
  257. package/dist/components/tile-radio.js.map +1 -1
  258. package/dist/components/time-input.js.map +1 -1
  259. package/dist/components/toast.js.map +1 -1
  260. package/dist/components/toggle-group.js +6 -1
  261. package/dist/components/toggle-group.js.map +1 -1
  262. package/dist/components/toggle-legend.js +2 -11
  263. package/dist/components/toggle-legend.js.map +1 -1
  264. package/dist/components/tooltip.js +2 -22
  265. package/dist/components/tooltip.js.map +1 -1
  266. package/dist/components/translation-review-editor.js +1 -4
  267. package/dist/components/translation-review-editor.js.map +1 -1
  268. package/dist/components/translation-review-parts.d.ts +1 -1
  269. package/dist/components/translation-review-parts.js +7 -1
  270. package/dist/components/translation-review-parts.js.map +1 -1
  271. package/dist/components/translation-review.js +18 -7
  272. package/dist/components/translation-review.js.map +1 -1
  273. package/dist/components/tree-view.js +14 -10
  274. package/dist/components/tree-view.js.map +1 -1
  275. package/dist/components/treemap.d.ts +24 -2
  276. package/dist/components/treemap.js +28 -4
  277. package/dist/components/treemap.js.map +1 -1
  278. package/dist/components/trigger-aria.js.map +1 -1
  279. package/dist/components/use-table-state.js +14 -11
  280. package/dist/components/use-table-state.js.map +1 -1
  281. package/dist/components/user-avatar.js +3 -26
  282. package/dist/components/user-avatar.js.map +1 -1
  283. package/dist/demo/demo-start.js +8 -4
  284. package/dist/demo/demo-start.js.map +1 -1
  285. package/dist/eslint/index.js +1 -1
  286. package/dist/feedback/feedback-attachment-labels.js.map +1 -1
  287. package/dist/feedback/feedback-attachment.js +1 -8
  288. package/dist/feedback/feedback-attachment.js.map +1 -1
  289. package/dist/feedback/feedback-capture.d.ts +1 -1
  290. package/dist/feedback/feedback-capture.js +3 -1
  291. package/dist/feedback/feedback-capture.js.map +1 -1
  292. package/dist/feedback/feedback-comment-thread.js +27 -13
  293. package/dist/feedback/feedback-comment-thread.js.map +1 -1
  294. package/dist/feedback/feedback-context.js +1 -4
  295. package/dist/feedback/feedback-context.js.map +1 -1
  296. package/dist/feedback/feedback-dialog.js.map +1 -1
  297. package/dist/feedback/feedback-inbox.js.map +1 -1
  298. package/dist/feedback/feedback-public-list.js +7 -1
  299. package/dist/feedback/feedback-public-list.js.map +1 -1
  300. package/dist/feedback/feedback-record.js +1 -5
  301. package/dist/feedback/feedback-record.js.map +1 -1
  302. package/dist/feedback/feedback-replies.js +25 -10
  303. package/dist/feedback/feedback-replies.js.map +1 -1
  304. package/dist/feedback/feedback-row-detail.js.map +1 -1
  305. package/dist/feedback/feedback-status-undo.js.map +1 -1
  306. package/dist/feedback/feedback-submit-dialog.js.map +1 -1
  307. package/dist/feedback/feedback-table.js +4 -1
  308. package/dist/feedback/feedback-table.js.map +1 -1
  309. package/dist/feedback/feedback-thread.js +2 -13
  310. package/dist/feedback/feedback-thread.js.map +1 -1
  311. package/dist/feedback/feedback-vocabulary.js.map +1 -1
  312. package/dist/feedback/feedback-vote-button.js.map +1 -1
  313. package/dist/hooks/use-anchored-rect.js.map +1 -1
  314. package/dist/hooks/use-document-title.js.map +1 -1
  315. package/dist/hooks/use-file-drop.js.map +1 -1
  316. package/dist/hooks/use-file-picker-labels.js.map +1 -1
  317. package/dist/hooks/use-file-picker.js.map +1 -1
  318. package/dist/hooks/use-focus-trap.js.map +1 -1
  319. package/dist/hooks/use-overlay-history.js +10 -5
  320. package/dist/hooks/use-overlay-history.js.map +1 -1
  321. package/dist/hooks/use-row-swipe.d.ts +1 -1
  322. package/dist/hooks/use-row-swipe.js +1 -6
  323. package/dist/hooks/use-row-swipe.js.map +1 -1
  324. package/dist/i18n/defaults.js +1 -4
  325. package/dist/i18n/defaults.js.map +1 -1
  326. package/dist/i18n/german.js +4 -1
  327. package/dist/i18n/german.js.map +1 -1
  328. package/dist/i18n/kit-labels.js +2 -8
  329. package/dist/i18n/kit-labels.js.map +1 -1
  330. package/dist/i18n/languages.js.map +1 -1
  331. package/dist/i18n/locales/en.js +4 -1
  332. package/dist/i18n/locales/en.js.map +2 -2
  333. package/dist/i18n/locales/es.js +4 -1
  334. package/dist/i18n/locales/es.js.map +1 -1
  335. package/dist/i18n/locales/fr.js +4 -1
  336. package/dist/i18n/locales/fr.js.map +1 -1
  337. package/dist/i18n/locales/hu.js +4 -1
  338. package/dist/i18n/locales/hu.js.map +1 -1
  339. package/dist/i18n/locales/it.js +4 -1
  340. package/dist/i18n/locales/it.js.map +1 -1
  341. package/dist/i18n/locales/zh.js.map +1 -1
  342. package/dist/i18n/plurals.js.map +1 -1
  343. package/dist/i18n/review.js +13 -7
  344. package/dist/i18n/review.js.map +1 -1
  345. package/dist/i18n/shared-labels.js.map +1 -1
  346. package/dist/index.d.ts +16 -16
  347. package/dist/index.js +40 -23
  348. package/dist/index.js.map +1 -1
  349. package/dist/landing/access.js +1 -4
  350. package/dist/landing/access.js.map +1 -1
  351. package/dist/landing/landing-sections.js +35 -38
  352. package/dist/landing/landing-sections.js.map +1 -1
  353. package/dist/landing/page-seo.js.map +1 -1
  354. package/dist/lib/calc.js.map +1 -1
  355. package/dist/lib/clipboard-minus.js.map +1 -1
  356. package/dist/lib/dates.js.map +1 -1
  357. package/dist/lib/decimal-marks.js.map +1 -1
  358. package/dist/lib/device-settings.js +2 -1
  359. package/dist/lib/device-settings.js.map +1 -1
  360. package/dist/lib/direction.js.map +1 -1
  361. package/dist/lib/iban.js.map +1 -1
  362. package/dist/lib/logger.js +1 -5
  363. package/dist/lib/logger.js.map +1 -1
  364. package/dist/lib/person-name.js.map +1 -1
  365. package/dist/lib/phone.js.map +1 -1
  366. package/dist/lib/qr-encode.js +344 -8
  367. package/dist/lib/qr-encode.js.map +1 -1
  368. package/dist/lib/session-refresh.js.map +1 -1
  369. package/dist/lib/table-text.js +15 -3
  370. package/dist/lib/table-text.js.map +1 -1
  371. package/dist/lib/text-match.d.ts +4 -0
  372. package/dist/lib/text-match.js.map +1 -1
  373. package/dist/lib/translation-review.js.map +1 -1
  374. package/dist/notifications/notification-inbox.js +63 -44
  375. package/dist/notifications/notification-inbox.js.map +1 -1
  376. package/dist/notifications/notification-parts.js.map +1 -1
  377. package/dist/notifications/notification-types-setting.js.map +1 -1
  378. package/dist/notifications/notifications-labels.js.map +1 -1
  379. package/dist/notifications/push-device-setting.js +6 -1
  380. package/dist/notifications/push-device-setting.js.map +1 -1
  381. package/dist/notifications/push-devices-setting.js.map +1 -1
  382. package/dist/notifications/push-worker.js.map +1 -1
  383. package/dist/notifications/quiet-hours-setting.js.map +1 -1
  384. package/dist/notifications/use-push-device.js +4 -1
  385. package/dist/notifications/use-push-device.js.map +1 -1
  386. package/dist/offline/pwa-update-prompt.d.ts +1 -1
  387. package/dist/offline/pwa-update-prompt.js +7 -1
  388. package/dist/offline/pwa-update-prompt.js.map +1 -1
  389. package/dist/offline/query-persistence.js.map +1 -1
  390. package/dist/offline.d.ts +1 -1
  391. package/dist/offline.js +6 -1
  392. package/dist/offline.js.map +1 -1
  393. package/dist/pay/pay.css +8 -1
  394. package/dist/rhf/fields.d.ts +1 -2
  395. package/dist/rhf/fields.js +1 -10
  396. package/dist/rhf/fields.js.map +1 -1
  397. package/dist/rhf/form-core.js +1 -4
  398. package/dist/rhf/form-core.js.map +1 -1
  399. package/dist/rhf/line-items.js.map +1 -1
  400. package/dist/rhf/use-rhf-wizard-step.js.map +1 -1
  401. package/dist/search/command-palette.js +71 -62
  402. package/dist/search/command-palette.js.map +1 -1
  403. package/dist/search/global-search.js +34 -5
  404. package/dist/search/global-search.js.map +1 -1
  405. package/dist/search/search-index.js.map +1 -1
  406. package/dist/settings/device-reset-setting.js +1 -6
  407. package/dist/settings/device-reset-setting.js.map +1 -1
  408. package/dist/settings/settings-heading.js.map +1 -1
  409. package/dist/settings/settings-layout.js +9 -20
  410. package/dist/settings/settings-layout.js.map +1 -1
  411. package/dist/settings/use-settings-route.js.map +1 -1
  412. package/dist/shell/app-shell.js +62 -31
  413. package/dist/shell/app-shell.js.map +1 -1
  414. package/dist/shell/auth-layout.js +1 -10
  415. package/dist/shell/auth-layout.js.map +1 -1
  416. package/dist/shell/dev-menu.js +12 -6
  417. package/dist/shell/dev-menu.js.map +1 -1
  418. package/dist/shell/option-switcher-menu.js.map +1 -1
  419. package/dist/shell/sync-status-indicator.js +7 -6
  420. package/dist/shell/sync-status-indicator.js.map +1 -1
  421. package/dist/shell/top-bar-parts-labels.js.map +1 -1
  422. package/dist/shell/topbar-action-menu.js.map +1 -1
  423. package/dist/shell/topbar-controls.js +1 -10
  424. package/dist/shell/topbar-controls.js.map +1 -1
  425. package/dist/shell/tour-menu.js +9 -1
  426. package/dist/shell/tour-menu.js.map +1 -1
  427. package/dist/sync/db.js.map +1 -1
  428. package/dist/sync/engine.js +24 -6
  429. package/dist/sync/engine.js.map +1 -1
  430. package/dist/sync.d.ts +2 -2
  431. package/dist/sync.js +7 -1
  432. package/dist/sync.js.map +1 -1
  433. package/dist/testing/css-variables.js.map +1 -1
  434. package/dist/testing/index.d.ts +1 -1
  435. package/dist/testing/index.js +1 -3
  436. package/dist/testing/index.js.map +1 -1
  437. package/dist/testing/react.js.map +1 -1
  438. package/dist/testing/viewport.js +7 -4
  439. package/dist/testing/viewport.js.map +1 -1
  440. package/dist/theme/contrast-tokens.js +13 -2
  441. package/dist/theme/contrast-tokens.js.map +1 -1
  442. package/dist/theme/contrast.d.ts +2 -2
  443. package/dist/theme/palette-derive.d.ts +1 -1
  444. package/dist/theme/palette-derive.js +18 -29
  445. package/dist/theme/palette-derive.js.map +1 -1
  446. package/dist/theme/palette-presets.js.map +1 -1
  447. package/dist/theme/palette-store.js.map +1 -1
  448. package/dist/theme/text-size.js.map +1 -1
  449. package/dist/theme/theme-store.js +1 -3
  450. package/dist/theme/theme-store.js.map +1 -1
  451. package/dist/tour/tour-catalogue.js.map +1 -1
  452. package/dist/tour/tour-dock.js +5 -1
  453. package/dist/tour/tour-dock.js.map +1 -1
  454. package/dist/tour/tour-engine.js +1 -4
  455. package/dist/tour/tour-engine.js.map +1 -1
  456. package/dist/tour/tour.js +21 -12
  457. package/dist/tour/tour.js.map +1 -1
  458. package/dist/tour/use-tour-progress.js.map +1 -1
  459. package/dist/tour/use-tour-url-sync.js.map +1 -1
  460. package/dist/wizard/stepper-nav.js +3 -24
  461. package/dist/wizard/stepper-nav.js.map +1 -1
  462. package/dist/wizard/types.js.map +1 -1
  463. package/dist/wizard/use-wizard.js +24 -28
  464. package/dist/wizard/use-wizard.js.map +1 -1
  465. package/dist/wizard/validation.js.map +1 -1
  466. package/dist/wizard/wizard-context.js.map +1 -1
  467. package/dist/wizard/wizard-step.d.ts +1 -1
  468. package/dist/wizard/wizard-step.js +1 -8
  469. package/dist/wizard/wizard-step.js.map +1 -1
  470. package/dist/wizard/wizard-summary.js.map +1 -1
  471. package/package.json +5 -2
  472. package/src/account/account-settings-labels.ts +1 -2
  473. package/src/account/account-settings.tsx +11 -17
  474. package/src/account/delete-account-setting.tsx +1 -6
  475. package/src/account/email-change-setting-labels.ts +1 -2
  476. package/src/account/email-change-setting.tsx +3 -1
  477. package/src/account/passkeys-setting.tsx +1 -3
  478. package/src/account/sessions-setting.tsx +4 -2
  479. package/src/admin/admin-action-confirm.tsx +4 -7
  480. package/src/admin/admin-action-log.tsx +29 -29
  481. package/src/admin/admin-area-labels.ts +4 -1
  482. package/src/admin/admin-overview.tsx +8 -2
  483. package/src/admin/admin-sections.tsx +3 -1
  484. package/src/admin/admin-tool-links.tsx +7 -1
  485. package/src/admin/invitations-panel.tsx +5 -11
  486. package/src/admin/mail-test-card.tsx +1 -2
  487. package/src/admin/reviewer-scope-editor.tsx +4 -9
  488. package/src/admin/role-select.tsx +4 -2
  489. package/src/admin/user-roster.tsx +2 -11
  490. package/src/auth/accept-invitation.tsx +1 -7
  491. package/src/auth/auth-errors.ts +1 -6
  492. package/src/auth/forgot-password-form.tsx +2 -7
  493. package/src/auth/register-form.tsx +7 -8
  494. package/src/auth/reset-password-form.tsx +2 -5
  495. package/src/auth/sign-in-form.tsx +15 -14
  496. package/src/auth/verify-email.tsx +2 -7
  497. package/src/billing/billing-banner.tsx +3 -7
  498. package/src/billing/billing-labels.ts +6 -4
  499. package/src/billing/checkout-processing.ts +0 -1
  500. package/src/billing/plan-card.tsx +9 -8
  501. package/src/billing/plan-limit-toast.tsx +1 -2
  502. package/src/billing/plan-limit.ts +1 -2
  503. package/src/billing/plan-price.ts +1 -4
  504. package/src/billing/plan-switch.tsx +1 -2
  505. package/src/billing/subscription-actions.tsx +5 -2
  506. package/src/components/account-chips.tsx +1 -7
  507. package/src/components/alert-banner.tsx +2 -8
  508. package/src/components/amount-input.tsx +206 -178
  509. package/src/components/authed-image.tsx +7 -4
  510. package/src/components/autocomplete.tsx +7 -9
  511. package/src/components/bulk-action-bar.tsx +2 -7
  512. package/src/components/button-group.tsx +1 -2
  513. package/src/components/button-look.ts +6 -17
  514. package/src/components/button.tsx +1 -4
  515. package/src/components/calculator.tsx +6 -9
  516. package/src/components/calendar-heatmap.tsx +5 -10
  517. package/src/components/card.tsx +9 -13
  518. package/src/components/chart-zoom-core.tsx +6 -33
  519. package/src/components/chart.tsx +8 -31
  520. package/src/components/checkbox-group.tsx +1 -4
  521. package/src/components/chip-input.tsx +6 -6
  522. package/src/components/chip.tsx +14 -26
  523. package/src/components/choice-card.tsx +4 -18
  524. package/src/components/column-mapper-labels.ts +3 -10
  525. package/src/components/column-mapper.tsx +33 -122
  526. package/src/components/combobox-core.tsx +12 -42
  527. package/src/components/combobox.tsx +2 -6
  528. package/src/components/confirm-dialog.tsx +1 -3
  529. package/src/components/copy-button.tsx +2 -4
  530. package/src/components/country-select.tsx +9 -21
  531. package/src/components/currency-option-list.tsx +13 -14
  532. package/src/components/currency-select.tsx +2 -7
  533. package/src/components/danger-confirm.tsx +8 -9
  534. package/src/components/data-table-cells.tsx +1 -2
  535. package/src/components/data-table-column-settings.tsx +1 -3
  536. package/src/components/data-table-filter-popover.tsx +5 -19
  537. package/src/components/data-table-filters.ts +1 -6
  538. package/src/components/data-table-fit.ts +1 -3
  539. package/src/components/data-table-groups.tsx +3 -1
  540. package/src/components/data-table-head.tsx +27 -45
  541. package/src/components/data-table-mobile.tsx +99 -108
  542. package/src/components/data-table-pagination.tsx +2 -6
  543. package/src/components/data-table-row-actions.tsx +25 -24
  544. package/src/components/data-table-row.tsx +16 -17
  545. package/src/components/data-table-shared.tsx +10 -16
  546. package/src/components/data-table-sort.ts +1 -2
  547. package/src/components/data-table-virtual.ts +9 -4
  548. package/src/components/data-table.tsx +489 -501
  549. package/src/components/date-picker.tsx +1 -7
  550. package/src/components/date-range-picker.tsx +3 -13
  551. package/src/components/description-list.tsx +7 -13
  552. package/src/components/dialog-frame.tsx +12 -3
  553. package/src/components/disclosure.tsx +8 -12
  554. package/src/components/dropdown.tsx +3 -11
  555. package/src/components/empty-state.tsx +1 -3
  556. package/src/components/entity-combobox.tsx +2 -6
  557. package/src/components/error-boundary.tsx +7 -7
  558. package/src/components/field-base.tsx +8 -14
  559. package/src/components/field-parts.tsx +12 -23
  560. package/src/components/field-sync.tsx +7 -11
  561. package/src/components/file-button.tsx +7 -3
  562. package/src/components/file-dropzone.tsx +7 -12
  563. package/src/components/floating-panel.tsx +44 -51
  564. package/src/components/focus-ring.ts +1 -2
  565. package/src/components/form-actions.tsx +1 -4
  566. package/src/components/grouped-picker.tsx +6 -8
  567. package/src/components/hover-menu.tsx +1 -4
  568. package/src/components/iban-input-labels.ts +1 -2
  569. package/src/components/icon-button.tsx +46 -48
  570. package/src/components/icon-picker.tsx +4 -17
  571. package/src/components/image-grid.tsx +1 -6
  572. package/src/components/inline-edit-field.tsx +1 -5
  573. package/src/components/inline-entity-combobox.tsx +6 -21
  574. package/src/components/input.tsx +14 -2
  575. package/src/components/jump-calendar.tsx +2 -6
  576. package/src/components/legal-labels.ts +1 -2
  577. package/src/components/legal-page.tsx +18 -7
  578. package/src/components/legal.tsx +14 -5
  579. package/src/components/lightbox.tsx +1 -3
  580. package/src/components/line-items.tsx +7 -15
  581. package/src/components/list.tsx +29 -25
  582. package/src/components/measured-grid.tsx +8 -30
  583. package/src/components/menu-item.tsx +1 -3
  584. package/src/components/mini-calendar.tsx +129 -159
  585. package/src/components/money-field.tsx +4 -2
  586. package/src/components/month-picker.tsx +14 -21
  587. package/src/components/multi-entity-combobox.tsx +6 -26
  588. package/src/components/multi-select.tsx +5 -9
  589. package/src/components/nav-pills.tsx +10 -2
  590. package/src/components/number-field.tsx +18 -15
  591. package/src/components/number-input.tsx +3 -19
  592. package/src/components/numpad-sheet.tsx +9 -13
  593. package/src/components/one-time-code-input.tsx +6 -11
  594. package/src/components/page-contents.tsx +2 -9
  595. package/src/components/page-header.tsx +5 -10
  596. package/src/components/password-strength-labels.ts +1 -2
  597. package/src/components/password-strength.tsx +6 -9
  598. package/src/components/phone-input.tsx +2 -13
  599. package/src/components/picker-sheet.tsx +2 -5
  600. package/src/components/pie-chart.tsx +6 -12
  601. package/src/components/popover.tsx +2 -1
  602. package/src/components/progress-bar.tsx +16 -25
  603. package/src/components/qr-code.tsx +2 -9
  604. package/src/components/row-actions.tsx +9 -1
  605. package/src/components/search-field.tsx +4 -5
  606. package/src/components/select.tsx +2 -10
  607. package/src/components/separator.tsx +1 -5
  608. package/src/components/series-chart-axes.ts +5 -5
  609. package/src/components/series-chart-budget.ts +1 -4
  610. package/src/components/series-chart-ticks.ts +1 -4
  611. package/src/components/series-chart.tsx +43 -83
  612. package/src/components/settings-fields.tsx +20 -15
  613. package/src/components/share-card.tsx +6 -14
  614. package/src/components/sign-chip.tsx +16 -16
  615. package/src/components/signature-pad.tsx +21 -13
  616. package/src/components/signed-amount.tsx +6 -14
  617. package/src/components/skeleton.tsx +2 -13
  618. package/src/components/slider.tsx +9 -20
  619. package/src/components/sparkline.tsx +2 -13
  620. package/src/components/stat-tile.tsx +13 -24
  621. package/src/components/swatch-picker.tsx +8 -3
  622. package/src/components/swipeable-row.tsx +2 -11
  623. package/src/components/table-skeleton.tsx +4 -1
  624. package/src/components/table.tsx +12 -8
  625. package/src/components/tabs.tsx +24 -39
  626. package/src/components/text-link.tsx +6 -6
  627. package/src/components/text.tsx +1 -2
  628. package/src/components/tile-radio.tsx +6 -19
  629. package/src/components/time-input.tsx +4 -5
  630. package/src/components/toast.tsx +3 -12
  631. package/src/components/toggle-group.tsx +9 -9
  632. package/src/components/toggle-legend.tsx +4 -16
  633. package/src/components/tooltip.tsx +9 -48
  634. package/src/components/translation-review-editor.tsx +4 -4
  635. package/src/components/translation-review-parts.tsx +7 -1
  636. package/src/components/translation-review.tsx +15 -16
  637. package/src/components/tree-view.tsx +17 -20
  638. package/src/components/treemap.tsx +59 -9
  639. package/src/components/trigger-aria.ts +1 -4
  640. package/src/components/use-table-state.ts +16 -17
  641. package/src/components/user-avatar.tsx +4 -21
  642. package/src/demo/demo-start.tsx +8 -4
  643. package/src/feedback/feedback-attachment-labels.ts +2 -1
  644. package/src/feedback/feedback-attachment.tsx +16 -29
  645. package/src/feedback/feedback-capture.ts +3 -1
  646. package/src/feedback/feedback-comment-thread.tsx +9 -6
  647. package/src/feedback/feedback-context.tsx +1 -4
  648. package/src/feedback/feedback-dialog.tsx +3 -4
  649. package/src/feedback/feedback-inbox.tsx +3 -9
  650. package/src/feedback/feedback-public-list.tsx +7 -1
  651. package/src/feedback/feedback-record.ts +6 -14
  652. package/src/feedback/feedback-replies.tsx +10 -5
  653. package/src/feedback/feedback-row-detail.tsx +2 -5
  654. package/src/feedback/feedback-status-undo.ts +1 -4
  655. package/src/feedback/feedback-submit-dialog.tsx +4 -4
  656. package/src/feedback/feedback-table.tsx +12 -8
  657. package/src/feedback/feedback-thread.tsx +4 -16
  658. package/src/feedback/feedback-vocabulary.ts +72 -82
  659. package/src/feedback/feedback-vote-button.tsx +9 -8
  660. package/src/hooks/use-anchored-rect.ts +1 -4
  661. package/src/hooks/use-document-title.ts +3 -1
  662. package/src/hooks/use-file-drop.ts +1 -3
  663. package/src/hooks/use-file-picker-labels.ts +1 -2
  664. package/src/hooks/use-file-picker.tsx +1 -5
  665. package/src/hooks/use-focus-trap.ts +1 -2
  666. package/src/hooks/use-overlay-history.ts +10 -5
  667. package/src/hooks/use-row-swipe.ts +1 -6
  668. package/src/i18n/defaults.ts +1 -4
  669. package/src/i18n/german.ts +33 -49
  670. package/src/i18n/kit-labels.tsx +5 -20
  671. package/src/i18n/languages.ts +2 -8
  672. package/src/i18n/locales/en.ts +11 -31
  673. package/src/i18n/locales/es.ts +35 -49
  674. package/src/i18n/locales/fr.ts +34 -51
  675. package/src/i18n/locales/hu.ts +26 -37
  676. package/src/i18n/locales/it.ts +35 -52
  677. package/src/i18n/locales/zh.ts +14 -32
  678. package/src/i18n/plurals.ts +4 -1
  679. package/src/i18n/review.ts +18 -7
  680. package/src/i18n/shared-labels.ts +1 -2
  681. package/src/index.ts +106 -32
  682. package/src/landing/access.ts +2 -7
  683. package/src/landing/landing-sections.tsx +14 -15
  684. package/src/landing/page-seo.ts +1 -3
  685. package/src/lib/calc.ts +4 -1
  686. package/src/lib/clipboard-minus.ts +4 -1
  687. package/src/lib/dates.ts +2 -10
  688. package/src/lib/decimal-marks.ts +1 -3
  689. package/src/lib/device-settings.ts +2 -1
  690. package/src/lib/direction.ts +1 -3
  691. package/src/lib/iban.ts +89 -9
  692. package/src/lib/logger.ts +1 -5
  693. package/src/lib/person-name.ts +1 -3
  694. package/src/lib/phone.ts +5 -8
  695. package/src/lib/qr-encode.ts +32 -8
  696. package/src/lib/session-refresh.ts +5 -6
  697. package/src/lib/table-text.ts +24 -6
  698. package/src/lib/text-match.ts +15 -3
  699. package/src/lib/translation-review.ts +1 -3
  700. package/src/notifications/notification-inbox.tsx +17 -4
  701. package/src/notifications/notification-parts.tsx +1 -2
  702. package/src/notifications/notification-types-setting.tsx +19 -18
  703. package/src/notifications/notifications-labels.ts +1 -2
  704. package/src/notifications/push-device-setting.tsx +7 -1
  705. package/src/notifications/push-devices-setting.tsx +7 -3
  706. package/src/notifications/push-worker.ts +10 -2
  707. package/src/notifications/quiet-hours-setting.tsx +4 -1
  708. package/src/notifications/use-push-device.ts +4 -1
  709. package/src/offline/pwa-update-prompt.tsx +7 -1
  710. package/src/offline/query-persistence.ts +9 -6
  711. package/src/offline.ts +6 -1
  712. package/src/rhf/fields.tsx +50 -19
  713. package/src/rhf/form-core.tsx +2 -6
  714. package/src/rhf/line-items.tsx +5 -7
  715. package/src/rhf/use-rhf-wizard-step.ts +3 -12
  716. package/src/search/command-palette.tsx +15 -23
  717. package/src/search/global-search.tsx +38 -8
  718. package/src/search/search-index.ts +5 -1
  719. package/src/settings/device-reset-setting.tsx +5 -8
  720. package/src/settings/settings-heading.tsx +3 -1
  721. package/src/settings/settings-layout.tsx +6 -13
  722. package/src/settings/use-settings-route.ts +4 -3
  723. package/src/shell/app-shell.tsx +48 -24
  724. package/src/shell/auth-layout.tsx +1 -6
  725. package/src/shell/dev-menu.tsx +12 -6
  726. package/src/shell/option-switcher-menu.tsx +1 -3
  727. package/src/shell/sync-status-indicator.tsx +14 -12
  728. package/src/shell/top-bar-parts-labels.ts +1 -3
  729. package/src/shell/topbar-action-menu.tsx +9 -8
  730. package/src/shell/topbar-controls.tsx +5 -19
  731. package/src/shell/tour-menu.tsx +9 -1
  732. package/src/sync/db.ts +5 -1
  733. package/src/sync/engine.ts +44 -12
  734. package/src/sync.ts +16 -2
  735. package/src/testing/css-variables.ts +1 -2
  736. package/src/testing/index.ts +1 -6
  737. package/src/testing/react.ts +1 -2
  738. package/src/testing/viewport.ts +9 -9
  739. package/src/theme/contrast-tokens.ts +13 -2
  740. package/src/theme/palette-derive.ts +24 -50
  741. package/src/theme/palette-presets.ts +0 -1
  742. package/src/theme/palette-store.ts +1 -4
  743. package/src/theme/text-size.ts +1 -1
  744. package/src/theme/theme-store.ts +2 -6
  745. package/src/tour/tour-catalogue.tsx +4 -2
  746. package/src/tour/tour-dock.ts +5 -1
  747. package/src/tour/tour-engine.ts +2 -6
  748. package/src/tour/tour.tsx +28 -12
  749. package/src/tour/use-tour-progress.ts +8 -2
  750. package/src/tour/use-tour-url-sync.ts +3 -1
  751. package/src/vite-env.d.ts +1 -4
  752. package/src/wizard/stepper-nav.tsx +10 -35
  753. package/src/wizard/types.ts +1 -4
  754. package/src/wizard/use-wizard.ts +28 -43
  755. package/src/wizard/validation.ts +1 -5
  756. package/src/wizard/wizard-context.tsx +2 -6
  757. package/src/wizard/wizard-step.tsx +1 -8
  758. package/src/wizard/wizard-summary.tsx +2 -6
  759. package/tokens.css +393 -152
@@ -76,7 +76,6 @@ export function usePromisePending() {
76
76
  return { pending, run };
77
77
  }
78
78
 
79
-
80
79
  /** The one word {@link CurrentPasswordInput} says on its own behalf — the
81
80
  * `dangerConfirm.password` label, shared with DangerConfirm's password field, so an
82
81
  * app translates "Password" once. */
@@ -153,7 +152,9 @@ export function CurrentPasswordInput({
153
152
  // text field, or into one the password manager offers a new password for.
154
153
  type="password"
155
154
  autoComplete="current-password"
156
- label={label === undefined ? (namedOtherwise ? undefined : labels.password) : hasContent(label) ? label : undefined}
155
+ label={
156
+ label === undefined ? (namedOtherwise ? undefined : labels.password) : hasContent(label) ? label : undefined
157
+ }
157
158
  readOnly={Boolean(busy) || readOnly}
158
159
  onChange={(e) => {
159
160
  onChange?.(e);
@@ -168,8 +169,10 @@ export function CurrentPasswordInput({
168
169
  * so the sentence "Type “X” to confirm" is translated once. */
169
170
  export type TypedConfirmFieldLabels = Pick<DangerConfirmLabels, "phrase" | "phrasePlaceholder">;
170
171
 
171
- export interface TypedConfirmFieldProps
172
- extends Omit<InputProps, "type" | "value" | "defaultValue" | "label" | "placeholder"> {
172
+ export interface TypedConfirmFieldProps extends Omit<
173
+ InputProps,
174
+ "type" | "value" | "defaultValue" | "label" | "placeholder"
175
+ > {
173
176
  /** The text to repeat — a word ("DELETE"), a name, an e-mail address. */
174
177
  target: string;
175
178
  /** How the typed text is compared with `target` — {@link TypedMatch}. Default
@@ -251,11 +254,7 @@ export function TypedConfirmField({
251
254
  const generated = useId();
252
255
  const fieldId = id ?? generated;
253
256
  const label =
254
- labelProp !== undefined
255
- ? labelProp
256
- : typeof labels.phrase === "function"
257
- ? labels.phrase(target)
258
- : labels.phrase;
257
+ labelProp !== undefined ? labelProp : typeof labels.phrase === "function" ? labels.phrase(target) : labels.phrase;
259
258
  const fromLabels =
260
259
  labels.phrasePlaceholder === undefined
261
260
  ? undefined
@@ -34,8 +34,7 @@ export interface BooleanMarkProps {
34
34
  export function BooleanMark({ value, falseAs = "cross", labels: labelsProp, className }: BooleanMarkProps) {
35
35
  const labels = useKitLabels("dataTable", DEFAULT_DATA_TABLE_LABELS, labelsProp);
36
36
  const state = value === true ? "true" : value === false ? "false" : "unset";
37
- const text =
38
- state === "true" ? labels.booleanTrue : state === "false" ? labels.booleanFalse : labels.booleanUnset;
37
+ const text = state === "true" ? labels.booleanTrue : state === "false" ? labels.booleanFalse : labels.booleanUnset;
39
38
  const Icon = state === "true" ? Check : state === "false" && falseAs === "cross" ? X : Minus;
40
39
  return (
41
40
  <span data-value={state} className={cn("inline-flex items-center align-middle", className)}>
@@ -80,9 +80,7 @@ export function ColumnSettingsPanel<T>({
80
80
  >
81
81
  <div className="flex w-56 flex-col border-s border-subtle p-2">
82
82
  <div className="mb-2 flex items-center justify-between gap-1">
83
- <div className="text-xs font-medium uppercase tracking-wide text-muted">
84
- {columnsCountLabel}
85
- </div>
83
+ <div className="text-xs font-medium uppercase tracking-wide text-muted">{columnsCountLabel}</div>
86
84
  <Tooltip label={labels.close} portal>
87
85
  <button
88
86
  type="button"
@@ -84,8 +84,7 @@ export function FilterPopover<T>({
84
84
  " " +
85
85
  // §10.1: a filter field is a field — 16 px on touch, or iOS zooms on focus.
86
86
  FIELD_TOUCH_TEXT;
87
- const buttonBase =
88
- "rounded border border-subtle bg-surface px-2 py-1 text-xs text-secondary hover:bg-hover";
87
+ const buttonBase = "rounded border border-subtle bg-surface px-2 py-1 text-xs text-secondary hover:bg-hover";
89
88
 
90
89
  const clearRow = (
91
90
  <div className="flex justify-end pt-1">
@@ -135,11 +134,7 @@ export function FilterPopover<T>({
135
134
  >
136
135
  {labels.selectAll}
137
136
  </button>
138
- <button
139
- type="button"
140
- onClick={() => onChange({ type: "select", values: [] })}
141
- className={buttonBase}
142
- >
137
+ <button type="button" onClick={() => onChange({ type: "select", values: [] })} className={buttonBase}>
143
138
  {labels.selectNone}
144
139
  </button>
145
140
  </div>
@@ -150,20 +145,13 @@ export function FilterPopover<T>({
150
145
  return (
151
146
  <li key={o.value}>
152
147
  <label className="flex cursor-pointer items-center gap-2 px-2 py-1.5 text-sm hover:bg-hover">
153
- <input
154
- type="checkbox"
155
- checked={checked}
156
- onChange={() => toggle(o.value)}
157
- className="size-3.5"
158
- />
148
+ <input type="checkbox" checked={checked} onChange={() => toggle(o.value)} className="size-3.5" />
159
149
  <span className="truncate">{o.label}</span>
160
150
  </label>
161
151
  </li>
162
152
  );
163
153
  })}
164
- {selectOptions.length === 0 && (
165
- <li className="px-2 py-2 text-sm text-muted">—</li>
166
- )}
154
+ {selectOptions.length === 0 && <li className="px-2 py-2 text-sm text-muted">—</li>}
167
155
  </ul>
168
156
  {clearRow}
169
157
  </div>
@@ -190,9 +178,7 @@ export function FilterPopover<T>({
190
178
  onClick={() => set(p.from, p.to)}
191
179
  className={cn(
192
180
  "block rounded px-2 py-1 text-start transition-colors sm:w-full",
193
- active
194
- ? "bg-brand-soft text-brand-muted"
195
- : "text-secondary hover:bg-hover",
181
+ active ? "bg-brand-soft text-brand-muted" : "text-secondary hover:bg-hover",
196
182
  )}
197
183
  >
198
184
  {labels.presets[p.key] ?? p.key}
@@ -79,12 +79,7 @@ function localDay(raw: string): string {
79
79
  * The text filter folds as every kit list does ({@link foldForSearch}, DUP-5): accents
80
80
  * off too, so "zurich" finds Zürich.
81
81
  */
82
- export function rowMatches<T>(
83
- col: DataTableColumn<T>,
84
- row: T,
85
- state: FilterValue,
86
- locale?: string,
87
- ): boolean {
82
+ export function rowMatches<T>(col: DataTableColumn<T>, row: T, state: FilterValue, locale?: string): boolean {
88
83
  const filter = resolveFilter(col);
89
84
  if (!filter) return true;
90
85
  switch (filter.type) {
@@ -144,9 +144,7 @@ export function useColumnFit<T>({
144
144
  if (!table || avail <= 0) return;
145
145
  const growTh = growKey ? headRefs.get(growKey) : undefined;
146
146
  const rem = parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;
147
- let need = growTh
148
- ? table.offsetWidth - growTh.offsetWidth + growMin * rem
149
- : table.offsetWidth;
147
+ let need = growTh ? table.offsetWidth - growTh.offsetWidth + growMin * rem : table.offsetWidth;
150
148
  if (!growTh && need <= avail + 0.5 && current.length > 0) {
151
149
  // A `w-full` table is at least the scroller's width, which says nothing about how
152
150
  // much room its content leaves: probe its content's width (what it takes once it
@@ -109,7 +109,9 @@ export function useGroupBandTops(
109
109
  const lead = leadEl ? leadEl.getBoundingClientRect().height : 0;
110
110
  if (bandEl) bandHeight = bandEl.getBoundingClientRect().height;
111
111
  const band = bandHeight;
112
- setTops((prev) => (prev[0] === head + lead && prev[1] === head + lead + band ? prev : [head + lead, head + lead + band]));
112
+ setTops((prev) =>
113
+ prev[0] === head + lead && prev[1] === head + lead + band ? prev : [head + lead, head + lead + band],
114
+ );
113
115
  };
114
116
  measure();
115
117
  if (typeof ResizeObserver === "undefined") return;
@@ -148,13 +148,7 @@ export function DataTableHead<T>({
148
148
  // exactly one sorted column, and the priority is carried by the
149
149
  // badge and by what the header button announces on press.
150
150
  aria-sort={
151
- sortable
152
- ? sortIdx === 0
153
- ? sorts[0].dir === "asc"
154
- ? "ascending"
155
- : "descending"
156
- : "none"
157
- : undefined
151
+ sortable ? (sortIdx === 0 ? (sorts[0].dir === "asc" ? "ascending" : "descending") : "none") : undefined
158
152
  }
159
153
  style={
160
154
  ownHead.style || pinnedHead || lockedWidths?.[col.key] !== undefined || growFloor
@@ -180,31 +174,19 @@ export function DataTableHead<T>({
180
174
  headClass,
181
175
  )}
182
176
  >
183
- <div
184
- className={cn(
185
- "flex items-center gap-1",
186
- isEndAligned && "flex-row-reverse",
187
- )}
188
- >
177
+ <div className={cn("flex items-center gap-1", isEndAligned && "flex-row-reverse")}>
189
178
  <Tooltip label={sortable && multiSort ? labels.sortHint : undefined} portal>
190
179
  <button
191
180
  type="button"
192
181
  onClick={(e) => sortable && toggleSort(col.key, e.shiftKey)}
193
182
  disabled={!sortable}
194
- className={cn(
195
- "flex items-center gap-1 text-start",
196
- sortable && "hover:text-primary",
197
- )}
183
+ className={cn("flex items-center gap-1 text-start", sortable && "hover:text-primary")}
198
184
  >
199
185
  <span>{col.header}</span>
200
- {sortable && (
201
- <Icon className={cn("size-3", active ? "opacity-100" : "opacity-40")} />
202
- )}
186
+ {sortable && <Icon className={cn("size-3", active ? "opacity-100" : "opacity-40")} />}
203
187
  {/* Priority badge, only meaningful with 2+ sort keys */}
204
188
  {active && sorts.length > 1 && (
205
- <span className="text-micro font-semibold leading-none text-brand">
206
- {sortIdx + 1}
207
- </span>
189
+ <span className="text-micro font-semibold leading-none text-brand">{sortIdx + 1}</span>
208
190
  )}
209
191
  </button>
210
192
  </Tooltip>
@@ -254,30 +236,30 @@ export function DataTableHead<T>({
254
236
  </div>
255
237
  {/* A `grow` column takes the rest: no width of its own to drag (0.48, KS N2). */}
256
238
  {resizable && !isTableOwnColumn(col.key) && !col.grow && (
257
- /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- a
239
+ /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- a
258
240
  pointer-only drag handle for a visual preference (column width); it is
259
241
  deliberately not a tab stop, and no content or action depends on it. */
260
- <span
261
- role="separator"
262
- aria-orientation="vertical"
263
- onPointerDown={(e) => startResize(e, col.key)}
264
- onPointerMove={moveResize}
265
- onPointerUp={(e) => finishResize(e, true)}
266
- onPointerCancel={(e) => finishResize(e, false)}
267
- onDoubleClick={(e) => {
268
- e.preventDefault();
269
- setWidths((w) => {
270
- const next = { ...w };
271
- delete next[col.key];
272
- return next;
273
- });
274
- }}
275
- // `touch-none`: without it the browser claims a finger drag for
276
- // scrolling before the first `pointermove` ever arrives.
277
- // `end-0` and a translate that flips with it: the handle sits on the column's
278
- // trailing edge, which is its left one in a right-to-left table.
279
- className="absolute end-0 top-0 z-10 h-full w-1.5 -translate-x-1/2 rtl:translate-x-1/2 cursor-col-resize select-none touch-none hover:bg-brand-soft-hover"
280
- />
242
+ <span
243
+ role="separator"
244
+ aria-orientation="vertical"
245
+ onPointerDown={(e) => startResize(e, col.key)}
246
+ onPointerMove={moveResize}
247
+ onPointerUp={(e) => finishResize(e, true)}
248
+ onPointerCancel={(e) => finishResize(e, false)}
249
+ onDoubleClick={(e) => {
250
+ e.preventDefault();
251
+ setWidths((w) => {
252
+ const next = { ...w };
253
+ delete next[col.key];
254
+ return next;
255
+ });
256
+ }}
257
+ // `touch-none`: without it the browser claims a finger drag for
258
+ // scrolling before the first `pointermove` ever arrives.
259
+ // `end-0` and a translate that flips with it: the handle sits on the column's
260
+ // trailing edge, which is its left one in a right-to-left table.
261
+ className="absolute end-0 top-0 z-10 h-full w-1.5 -translate-x-1/2 rtl:translate-x-1/2 cursor-col-resize select-none touch-none hover:bg-brand-soft-hover"
262
+ />
281
263
  )}
282
264
  </th>
283
265
  );
@@ -42,10 +42,7 @@ function dataAttrsOf(props: DataTableCellProps | undefined): Record<string, unkn
42
42
  }
43
43
 
44
44
  /** The logical sides onto the physical drag directions {@link SwipeableRow} takes. */
45
- function physicalSwipe(
46
- actions: MobileSwipeActions,
47
- dir: Direction,
48
- ): { left?: SwipeAction[]; right?: SwipeAction[] } {
45
+ function physicalSwipe(actions: MobileSwipeActions, dir: Direction): { left?: SwipeAction[]; right?: SwipeAction[] } {
49
46
  const rtl = dir === "rtl";
50
47
  return {
51
48
  left: (rtl ? actions.end : actions.start) ?? actions.left,
@@ -62,8 +59,7 @@ function physicalSwipe(
62
59
  * reaches the cells without the table knowing what they render; `large:`, so Normal
63
60
  * keeps every ellipsis it had.
64
61
  */
65
- const CARD_NO_TRUNCATE =
66
- "large:[&_.truncate]:whitespace-normal large:[&_.truncate]:[overflow-wrap:anywhere]";
62
+ const CARD_NO_TRUNCATE = "large:[&_.truncate]:whitespace-normal large:[&_.truncate]:[overflow-wrap:anywhere]";
67
63
 
68
64
  /**
69
65
  * Columns as label-above-value pairs: the phone card's fields at Large (§4), and the
@@ -89,14 +85,21 @@ export function StackedFields<T>({
89
85
  return (
90
86
  <dl
91
87
  data-card-fields="stacked"
92
- className={cn("relative flex min-w-0 flex-col", compact ? "gap-1.5 text-xs" : "gap-2.5 text-sm", CARD_NO_TRUNCATE)}
88
+ className={cn(
89
+ "relative flex min-w-0 flex-col",
90
+ compact ? "gap-1.5 text-xs" : "gap-2.5 text-sm",
91
+ CARD_NO_TRUNCATE,
92
+ )}
93
93
  >
94
94
  {fields.map(({ col, value }) => (
95
95
  <div key={col.key} className="min-w-0">
96
96
  <dt className="text-xs uppercase tracking-wide text-muted">{col.header}</dt>
97
97
  <dd
98
98
  {...dataAttrsOf(col.cellProps?.(row))}
99
- className={cn("mt-0.5 min-w-0 break-words text-secondary", liftOwnClicks && keepsOwnClicks(col) && LIFTED_FIELD)}
99
+ className={cn(
100
+ "mt-0.5 min-w-0 break-words text-secondary",
101
+ liftOwnClicks && keepsOwnClicks(col) && LIFTED_FIELD,
102
+ )}
100
103
  >
101
104
  {value}
102
105
  </dd>
@@ -543,7 +546,12 @@ export function MobileRow<T>({
543
546
  {statuses.length > 0 && (
544
547
  <div className="flex shrink-0 flex-wrap items-center justify-end gap-1">
545
548
  {statuses.map(({ col, value }) => (
546
- <span key={col.key} {...dataAttrsOf(col.cellProps?.(row))} data-card-status="" className="inline-flex">
549
+ <span
550
+ key={col.key}
551
+ {...dataAttrsOf(col.cellProps?.(row))}
552
+ data-card-status=""
553
+ className="inline-flex"
554
+ >
547
555
  <StatusChip value={value} />
548
556
  </span>
549
557
  ))}
@@ -555,27 +563,27 @@ export function MobileRow<T>({
555
563
  // §4: each label ABOVE its value at Large. Side by side, a label column
556
564
  // sized to the widest label leaves a value a sliver of a 240 px card.
557
565
  <StackedFields columns={mobileSecondaryColumns} row={row} compact={compact} liftOwnClicks={stretched} />
558
- ) : fields.length > 0 && (
559
- <dl
560
- className={cn(
561
- "grid grid-cols-[auto_1fr] gap-x-3",
562
- compact ? "gap-y-0.5 text-xs" : "gap-y-1 text-sm",
563
- )}
564
- >
565
- {fields.map(({ col, value }) => (
566
- <Fragment key={col.key}>
567
- <dt className="text-xs uppercase tracking-wide text-muted self-center">
568
- {col.header}
569
- </dt>
570
- <dd
571
- {...dataAttrsOf(col.cellProps?.(row))}
572
- className={cn("min-w-0 text-secondary self-center", stretched && keepsOwnClicks(col) && LIFTED_FIELD)}
573
- >
574
- {value}
575
- </dd>
576
- </Fragment>
577
- ))}
578
- </dl>
566
+ ) : (
567
+ fields.length > 0 && (
568
+ <dl
569
+ className={cn("grid grid-cols-[auto_1fr] gap-x-3", compact ? "gap-y-0.5 text-xs" : "gap-y-1 text-sm")}
570
+ >
571
+ {fields.map(({ col, value }) => (
572
+ <Fragment key={col.key}>
573
+ <dt className="text-xs uppercase tracking-wide text-muted self-center">{col.header}</dt>
574
+ <dd
575
+ {...dataAttrsOf(col.cellProps?.(row))}
576
+ className={cn(
577
+ "min-w-0 text-secondary self-center",
578
+ stretched && keepsOwnClicks(col) && LIFTED_FIELD,
579
+ )}
580
+ >
581
+ {value}
582
+ </dd>
583
+ </Fragment>
584
+ ))}
585
+ </dl>
586
+ )
579
587
  )}
580
588
  {/* The row's actions after the fields, at the card's end (0.49 KIT-7): its
581
589
  buttons keep their own clicks, and RowActions folds into "⋯" at Large. */}
@@ -595,22 +603,17 @@ export function MobileRow<T>({
595
603
  </>
596
604
  )}
597
605
  </div>
598
- {opensDetail && !selecting &&
606
+ {opensDetail &&
607
+ !selecting &&
599
608
  // `aria-hidden`: the row already announces itself as a button with
600
609
  // `aria-expanded`, so the icon would only add a second, wordless stop.
601
610
  (mobileExpandAsDialog ? (
602
611
  // Points INTO the sheet, which is the reading-forward direction.
603
- <ChevronRight
604
- aria-hidden
605
- className="size-4 shrink-0 text-placeholder rtl:-scale-x-100"
606
- />
612
+ <ChevronRight aria-hidden className="size-4 shrink-0 text-placeholder rtl:-scale-x-100" />
607
613
  ) : (
608
614
  <ChevronDown
609
615
  aria-hidden
610
- className={cn(
611
- "size-4 shrink-0 text-placeholder transition-transform",
612
- expanded && "rotate-180",
613
- )}
616
+ className={cn("size-4 shrink-0 text-placeholder transition-transform", expanded && "rotate-180")}
614
617
  />
615
618
  ))}
616
619
  </>
@@ -684,64 +687,64 @@ export function MobileRow<T>({
684
687
  {cardInner}
685
688
  </div>
686
689
  ) : interactive && href ? (
687
- // A card with a URL of its own is a LINK, not a div wearing role="button"
688
- // (feedback #451): the phone's long-press "open in new tab" and a screen
689
- // reader's link semantics both come free, and the fake role goes away.
690
- <RowLink
691
- href={href}
692
- {...press}
693
- onActivate={() => onRowClick!(row)}
694
- aria-expanded={opensRow ? expanded : undefined}
695
- className={cardClass}
696
- // Enter already activates a link natively, and that routes through
697
- // RowLink's own onClick — handling it here too would open the row twice.
698
- // Space is the only key left, and only so it opens the row instead of
699
- // scrolling the list.
700
- onKeyDown={(e) => {
701
- if (e.key !== " ") return;
702
- e.preventDefault();
703
- onRowClick!(row);
704
- }}
705
- >
706
- {cardInner}
707
- </RowLink>
708
- ) : (
709
- /* eslint-disable-next-line jsx-a11y/no-static-element-interactions -- the handlers are
690
+ // A card with a URL of its own is a LINK, not a div wearing role="button"
691
+ // (feedback #451): the phone's long-press "open in new tab" and a screen
692
+ // reader's link semantics both come free, and the fake role goes away.
693
+ <RowLink
694
+ href={href}
695
+ {...press}
696
+ onActivate={() => onRowClick!(row)}
697
+ aria-expanded={opensRow ? expanded : undefined}
698
+ className={cardClass}
699
+ // Enter already activates a link natively, and that routes through
700
+ // RowLink's own onClick — handling it here too would open the row twice.
701
+ // Space is the only key left, and only so it opens the row instead of
702
+ // scrolling the list.
703
+ onKeyDown={(e) => {
704
+ if (e.key !== " ") return;
705
+ e.preventDefault();
706
+ onRowClick!(row);
707
+ }}
708
+ >
709
+ {cardInner}
710
+ </RowLink>
711
+ ) : (
712
+ /* eslint-disable-next-line jsx-a11y/no-static-element-interactions -- the handlers are
710
713
  only attached when `interactive`, and then so are role="button", tabIndex 0 and the
711
714
  Enter/Space handler below; the rule cannot follow the conditional role. */
712
- <div
713
- {...press}
714
- role={interactive ? "button" : undefined}
715
- tabIndex={interactive ? 0 : undefined}
716
- onClick={
717
- interactive
718
- ? (e) => {
719
- if (fromOutside(e.target, e.currentTarget)) return;
720
- // A tap on a control in a cell (a select, a button) is that
721
- // control's, as on the desktop `<tr>` (keksdose live #428).
722
- if (fromOwnControl(e.target, e.currentTarget)) return;
715
+ <div
716
+ {...press}
717
+ role={interactive ? "button" : undefined}
718
+ tabIndex={interactive ? 0 : undefined}
719
+ onClick={
720
+ interactive
721
+ ? (e) => {
722
+ if (fromOutside(e.target, e.currentTarget)) return;
723
+ // A tap on a control in a cell (a select, a button) is that
724
+ // control's, as on the desktop `<tr>` (keksdose live #428).
725
+ if (fromOwnControl(e.target, e.currentTarget)) return;
726
+ onRowClick!(row);
727
+ }
728
+ : undefined
729
+ }
730
+ onKeyDown={
731
+ interactive
732
+ ? (e) => {
733
+ // A key press inside a nested control is that control's.
734
+ if (e.target !== e.currentTarget) return;
735
+ if (e.key === "Enter" || e.key === " ") {
736
+ e.preventDefault();
723
737
  onRowClick!(row);
724
738
  }
725
- : undefined
726
- }
727
- onKeyDown={
728
- interactive
729
- ? (e) => {
730
- // A key press inside a nested control is that control's.
731
- if (e.target !== e.currentTarget) return;
732
- if (e.key === "Enter" || e.key === " ") {
733
- e.preventDefault();
734
- onRowClick!(row);
735
- }
736
- }
737
- : undefined
738
- }
739
- aria-expanded={opensRow ? expanded : undefined}
740
- className={cardClass}
741
- >
742
- {cardInner}
743
- </div>
744
- );
739
+ }
740
+ : undefined
741
+ }
742
+ aria-expanded={opensRow ? expanded : undefined}
743
+ className={cardClass}
744
+ >
745
+ {cardInner}
746
+ </div>
747
+ );
745
748
  return (
746
749
  <li
747
750
  className={cn(tint)}
@@ -765,12 +768,7 @@ export function MobileRow<T>({
765
768
  body
766
769
  )}
767
770
  {expansion && !mobileExpandAsDialog && (
768
- <div
769
- className={cn(
770
- "bg-surface-2 border-t border-subtle",
771
- compact ? "px-3 py-2" : "px-4 py-3",
772
- )}
773
- >
771
+ <div className={cn("bg-surface-2 border-t border-subtle", compact ? "px-3 py-2" : "px-4 py-3")}>
774
772
  {expansion}
775
773
  </div>
776
774
  )}
@@ -952,11 +950,7 @@ export function MobileFilters<T>({
952
950
  )}
953
951
  </button>
954
952
  {activeCount > 0 && (
955
- <button
956
- type="button"
957
- onClick={onClearAll}
958
- className="text-xs text-muted hover:text-secondary"
959
- >
953
+ <button type="button" onClick={onClearAll} className="text-xs text-muted hover:text-secondary">
960
954
  {labels.clearAll}
961
955
  </button>
962
956
  )}
@@ -1015,10 +1009,7 @@ export function MobileFilters<T>({
1015
1009
  {active && <span className="size-1.5 rounded-full bg-brand" />}
1016
1010
  </span>
1017
1011
  <ChevronDown
1018
- className={cn(
1019
- "size-4 shrink-0 text-placeholder transition-transform",
1020
- isItemOpen && "rotate-180",
1021
- )}
1012
+ className={cn("size-4 shrink-0 text-placeholder transition-transform", isItemOpen && "rotate-180")}
1022
1013
  />
1023
1014
  </button>
1024
1015
  {isItemOpen && (
@@ -118,9 +118,7 @@ export function Pagination({
118
118
  {onPageSize && (
119
119
  <select
120
120
  value={pageSize === Infinity ? "all" : pageSize}
121
- onChange={(e) =>
122
- onPageSize(e.target.value === "all" ? Infinity : Number(e.target.value))
123
- }
121
+ onChange={(e) => onPageSize(e.target.value === "all" ? Infinity : Number(e.target.value))}
124
122
  className="rounded border border-subtle bg-surface px-1 py-0.5 text-xs"
125
123
  aria-label={labels.pageSize}
126
124
  >
@@ -165,9 +163,7 @@ export function Pagination({
165
163
  className={cn(
166
164
  "rounded",
167
165
  compact ? "min-w-6 px-1.5 py-0" : "min-w-7 px-2 py-0.5",
168
- it === page
169
- ? "bg-inverse text-inverse"
170
- : "hover:bg-hover",
166
+ it === page ? "bg-inverse text-inverse" : "hover:bg-hover",
171
167
  )}
172
168
  >
173
169
  {num.format(it + 1)}