@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
@@ -114,7 +114,10 @@ export interface LineItemsColumn<T> {
114
114
  * class, handlers. A `data-*` attribute is typed so `{ "data-tour": "rule-condition" }`
115
115
  * needs no cast.
116
116
  */
117
- export type LineItemsRowProps = Omit<HTMLAttributes<HTMLDivElement>, "children" | "dangerouslySetInnerHTML" | "role"> & {
117
+ export type LineItemsRowProps = Omit<
118
+ HTMLAttributes<HTMLDivElement>,
119
+ "children" | "dangerouslySetInnerHTML" | "role"
120
+ > & {
118
121
  [key: `data-${string}`]: string | number | boolean | undefined;
119
122
  };
120
123
 
@@ -289,7 +292,6 @@ export function LineItems<T>({
289
292
  const canRemove = Boolean(onRemove) && !disabled && items.length > minItems;
290
293
  const hasError = hasContent(error);
291
294
 
292
-
293
295
  // Focus after the list has re-rendered with the new rows — a layout effect, so the
294
296
  // caret is where it belongs before paint.
295
297
  useLayoutEffect(() => {
@@ -351,10 +353,7 @@ export function LineItems<T>({
351
353
  const headerCell = (column: LineItemsColumn<T>) => (
352
354
  <span
353
355
  key={column.key}
354
- className={cn(
355
- "min-w-0 truncate text-xs font-medium text-muted",
356
- column.align === "end" && "text-end",
357
- )}
356
+ className={cn("min-w-0 truncate text-xs font-medium text-muted", column.align === "end" && "text-end")}
358
357
  >
359
358
  {floats(column) ? null : column.header}
360
359
  </span>
@@ -548,10 +547,7 @@ export function LineItems<T>({
548
547
  )}
549
548
 
550
549
  {summary && (
551
- <div
552
- data-line-items-summary=""
553
- className="flex flex-wrap items-center gap-x-3 gap-y-1 text-sm text-primary"
554
- >
550
+ <div data-line-items-summary="" className="flex flex-wrap items-center gap-x-3 gap-y-1 text-sm text-primary">
555
551
  {/* With no value the line is a state of its own, and the label takes the
556
552
  tone — the only place left to carry it. */}
557
553
  <span
@@ -586,11 +582,7 @@ export function LineItems<T>({
586
582
  </div>
587
583
  )}
588
584
 
589
- {hasError && (
590
- <p className="text-caption leading-tight text-danger">
591
- {error}
592
- </p>
593
- )}
585
+ {hasError && <p className="text-caption leading-tight text-danger">{error}</p>}
594
586
 
595
587
  {onAdd && (
596
588
  <Button
@@ -159,14 +159,30 @@ export interface ListItemLinkProps {
159
159
  [key: `data-${string}`]: unknown;
160
160
  }
161
161
 
162
- const PAD: Record<
163
- ListDensity,
164
- { target: string; actions: string; leadingActions: string; gap: string; body: string }
165
- > = {
166
- compact: { target: "gap-2 px-2 py-1.5", actions: "pe-1.5", leadingActions: "ps-1.5", gap: "gap-0.5", body: "px-2 pb-1.5" },
167
- default: { target: "gap-3 px-3 py-2.5", actions: "pe-2", leadingActions: "ps-2", gap: "gap-1", body: "px-3 pb-2.5" },
168
- comfortable: { target: "gap-3 px-4 py-3", actions: "pe-3", leadingActions: "ps-3", gap: "gap-1", body: "px-4 pb-3" },
169
- };
162
+ const PAD: Record<ListDensity, { target: string; actions: string; leadingActions: string; gap: string; body: string }> =
163
+ {
164
+ compact: {
165
+ target: "gap-2 px-2 py-1.5",
166
+ actions: "pe-1.5",
167
+ leadingActions: "ps-1.5",
168
+ gap: "gap-0.5",
169
+ body: "px-2 pb-1.5",
170
+ },
171
+ default: {
172
+ target: "gap-3 px-3 py-2.5",
173
+ actions: "pe-2",
174
+ leadingActions: "ps-2",
175
+ gap: "gap-1",
176
+ body: "px-3 pb-2.5",
177
+ },
178
+ comfortable: {
179
+ target: "gap-3 px-4 py-3",
180
+ actions: "pe-3",
181
+ leadingActions: "ps-3",
182
+ gap: "gap-1",
183
+ body: "px-4 pb-3",
184
+ },
185
+ };
170
186
 
171
187
  /** {@link ListItemBaseProps.trailingTone}: a {@link TextTone}, or `inherit` — no
172
188
  * colour of the slot's own, so an element's colour (or the row's) stands. */
@@ -584,12 +600,7 @@ export function ListItem({
584
600
 
585
601
  const body = (
586
602
  <>
587
- {Icon && (
588
- <Icon
589
- className={cn("size-4 shrink-0 text-muted", align === "start" && "mt-0.5")}
590
- aria-hidden
591
- />
592
- )}
603
+ {Icon && <Icon className={cn("size-4 shrink-0 text-muted", align === "start" && "mt-0.5")} aria-hidden />}
593
604
  {leading}
594
605
  {/* With a trailing slot, a basis at Large: below it the trailing chip or figure
595
606
  wraps under the text (the target wraps, see `target`) rather than squeezing the
@@ -652,9 +663,8 @@ export function ListItem({
652
663
  {loading ? (
653
664
  <Spinner label={null} className="size-3.5 shrink-0" />
654
665
  ) : (
655
- external && href !== undefined && (
656
- <ExternalLink className="size-3.5 shrink-0 text-muted rtl:-scale-x-100" aria-hidden />
657
- )
666
+ external &&
667
+ href !== undefined && <ExternalLink className="size-3.5 shrink-0 text-muted rtl:-scale-x-100" aria-hidden />
658
668
  )}
659
669
  {mark}
660
670
  {expandable && (
@@ -703,9 +713,7 @@ export function ListItem({
703
713
  className: target,
704
714
  "aria-current": selected ? "true" : undefined,
705
715
  "aria-busy": loading || undefined,
706
- onClick: loading
707
- ? (e) => e.preventDefault()
708
- : (onClick as ListItemLinkProps["onClick"]),
716
+ onClick: loading ? (e) => e.preventDefault() : (onClick as ListItemLinkProps["onClick"]),
709
717
  onAuxClick,
710
718
  children: body,
711
719
  };
@@ -795,11 +803,7 @@ export function ListItem({
795
803
  stacked ? "flex-col" : "items-center",
796
804
  // See `renderRow`: the wrapper may be inline, the row is not.
797
805
  renderRow && "w-full",
798
- selected
799
- ? "border-brand bg-surface-2"
800
- : bordered
801
- ? "border-subtle"
802
- : "border-transparent",
806
+ selected ? "border-brand bg-surface-2" : bordered ? "border-subtle" : "border-transparent",
803
807
  !stacked && interactive && !inert && !selected && "hover:bg-hover",
804
808
  (disabled || locked) && "opacity-50",
805
809
  className,
@@ -181,8 +181,7 @@ export function useMeasuredRows(
181
181
  return { cells, setCells, rows, setRows, ready, problems, props };
182
182
  }
183
183
 
184
- export interface MeasuredGridProps
185
- extends Omit<ComponentPropsWithRef<"div">, "children" | "onChange"> {
184
+ export interface MeasuredGridProps extends Omit<ComponentPropsWithRef<"div">, "children" | "onChange"> {
186
185
  /** What the table is — shown above it, and the grid's accessible name. */
187
186
  label: string;
188
187
  /** A note under the table (which columns a layout expects, say). Also the grid's
@@ -393,9 +392,7 @@ function CellGrid({
393
392
  useEffect(() => {
394
393
  const target = pending.current;
395
394
  if (!target) return;
396
- const element = scrollRef.current?.querySelector<HTMLElement>(
397
- `[data-cell="${target.row}:${target.column}"]`,
398
- );
395
+ const element = scrollRef.current?.querySelector<HTMLElement>(`[data-cell="${target.row}:${target.column}"]`);
399
396
  if (!element) return;
400
397
  pending.current = null;
401
398
  // `preventScroll`: `reveal` already scrolled the row clear of the sticky header,
@@ -595,26 +592,12 @@ function CellGrid({
595
592
  #
596
593
  </div>
597
594
  {columns.map((column, index) => (
598
- <div
599
- key={index}
600
- role="columnheader"
601
- className="min-w-0 border-s border-subtle px-2 py-1 text-end"
602
- >
603
- <span className="block truncate font-medium text-primary">
604
- {column.label}
605
- </span>
606
- {column.unit && (
607
- <span className="block truncate text-micro text-muted">
608
- {column.unit}
609
- </span>
610
- )}
595
+ <div key={index} role="columnheader" className="min-w-0 border-s border-subtle px-2 py-1 text-end">
596
+ <span className="block truncate font-medium text-primary">{column.label}</span>
597
+ {column.unit && <span className="block truncate text-micro text-muted">{column.unit}</span>}
611
598
  </div>
612
599
  ))}
613
- <div
614
- role="columnheader"
615
- aria-label={labels.rowActions}
616
- className="border-s border-subtle"
617
- />
600
+ <div role="columnheader" aria-label={labels.rowActions} className="border-s border-subtle" />
618
601
  </div>
619
602
  </div>
620
603
  {/* Only the rows in the window are mounted — a swept linkage is thousands of
@@ -711,10 +694,7 @@ function CellGrid({
711
694
  </div>
712
695
  );
713
696
  })}
714
- <div
715
- role="gridcell"
716
- className="flex items-center justify-center border-s border-subtle"
717
- >
697
+ <div role="gridcell" className="flex items-center justify-center border-s border-subtle">
718
698
  <button
719
699
  type="button"
720
700
  data-cell={`${index}:${width}`}
@@ -776,9 +756,7 @@ function CellGrid({
776
756
  {/* bdi: an LTR label ("3 points") in an RTL grid would reorder to "points 3". */}
777
757
  <bdi>{labels.points(filled.length)}</bdi>
778
758
  </span>
779
- {problems > 0 && (
780
- <span className="text-caption text-danger">{labels.problems(problems)}</span>
781
- )}
759
+ {problems > 0 && <span className="text-caption text-danger">{labels.problems(problems)}</span>}
782
760
  <span className="ms-auto flex items-center gap-1 text-caption text-muted">
783
761
  <ClipboardPaste aria-hidden className="size-3.5" /> {labels.pasteHint}
784
762
  </span>
@@ -224,9 +224,7 @@ export function MenuItem({
224
224
  // dimmed") rather than greyed to the point some browsers stop exposing it.
225
225
  aria-disabled={disabled || undefined}
226
226
  onClick={
227
- disabled
228
- ? (e) => e.preventDefault()
229
- : (onClick as ((event: MouseEvent<HTMLButtonElement>) => void) | undefined)
227
+ disabled ? (e) => e.preventDefault() : (onClick as ((event: MouseEvent<HTMLButtonElement>) => void) | undefined)
230
228
  }
231
229
  className={look}
232
230
  >
@@ -6,14 +6,7 @@ import { hasContent } from "../lib/presence";
6
6
  import { FOCUS_RING, FOCUS_RING_WIDTH } from "./focus-ring";
7
7
  import { horizontalStep } from "../lib/direction";
8
8
  import { useAnnounce } from "../hooks/use-announce";
9
- import {
10
- addMonthsClamped,
11
- localeWeekStart,
12
- monthKey,
13
- parseIsoDate,
14
- sameYmd,
15
- toLocalIso,
16
- } from "../lib/dates";
9
+ import { addMonthsClamped, localeWeekStart, monthKey, parseIsoDate, sameYmd, toLocalIso } from "../lib/dates";
17
10
  import { useKitLabels, useKitLocale, useKitWeekStart, type LabelOverride } from "../i18n/kit-labels";
18
11
  import { DEFAULT_MINI_CALENDAR_LABELS } from "./mini-calendar-labels";
19
12
 
@@ -514,41 +507,39 @@ export function MiniCalendar({
514
507
  {monthLabel}
515
508
  </div>
516
509
  ) : (
517
- <div className={cn("flex items-center justify-between", lg ? "pb-2" : "pb-1")}>
518
- <button
519
- type="button"
520
- onClick={() => moveMonth(-1)}
521
- aria-label={labels.previousMonth}
522
- className="rounded p-1 text-muted hover:bg-hover"
523
- >
524
- {/* Mirrored in RTL: "previous" points to the reading START, which is right. */}
525
- <ChevronLeft className="size-4 rtl:-scale-x-100" aria-hidden />
526
- </button>
527
- {/* Named by this element rather than by a string of its own, and `aria-live`
510
+ <div className={cn("flex items-center justify-between", lg ? "pb-2" : "pb-1")}>
511
+ <button
512
+ type="button"
513
+ onClick={() => moveMonth(-1)}
514
+ aria-label={labels.previousMonth}
515
+ className="rounded p-1 text-muted hover:bg-hover"
516
+ >
517
+ {/* Mirrored in RTL: "previous" points to the reading START, which is right. */}
518
+ <ChevronLeft className="size-4 rtl:-scale-x-100" aria-hidden />
519
+ </button>
520
+ {/* Named by this element rather than by a string of its own, and `aria-live`
528
521
  so paging months says which month you have landed on — the caption is the
529
522
  only thing on screen that changes when the grid moves, and the user
530
523
  pressing the arrow is not inside the grid to hear the cells change. */}
531
- <div
532
- id={monthId}
533
- aria-live="polite"
534
- className={cn(
535
- "capitalize",
536
- lg
537
- ? "text-base font-semibold text-primary"
538
- : "text-xs font-medium text-secondary",
539
- )}
540
- >
541
- {monthLabel}
524
+ <div
525
+ id={monthId}
526
+ aria-live="polite"
527
+ className={cn(
528
+ "capitalize",
529
+ lg ? "text-base font-semibold text-primary" : "text-xs font-medium text-secondary",
530
+ )}
531
+ >
532
+ {monthLabel}
533
+ </div>
534
+ <button
535
+ type="button"
536
+ onClick={() => moveMonth(1)}
537
+ aria-label={labels.nextMonth}
538
+ className="rounded p-1 text-muted hover:bg-hover"
539
+ >
540
+ <ChevronRight className="size-4 rtl:-scale-x-100" aria-hidden />
541
+ </button>
542
542
  </div>
543
- <button
544
- type="button"
545
- onClick={() => moveMonth(1)}
546
- aria-label={labels.nextMonth}
547
- className="rounded p-1 text-muted hover:bg-hover"
548
- >
549
- <ChevronRight className="size-4 rtl:-scale-x-100" aria-hidden />
550
- </button>
551
- </div>
552
543
  )}
553
544
  <div
554
545
  ref={gridRef}
@@ -559,27 +550,18 @@ export function MiniCalendar({
559
550
  "grid",
560
551
  // The month view is RULED: a 1px gap over a border-coloured ground draws the
561
552
  // lines between the cells, the way a wall calendar does.
562
- lg
563
- ? "gap-px overflow-hidden rounded-lg border border-subtle bg-[var(--border)]"
564
- : "gap-y-0.5",
553
+ lg ? "gap-px overflow-hidden rounded-lg border border-subtle bg-[var(--border)]" : "gap-y-0.5",
565
554
  )}
566
555
  >
567
556
  <div
568
557
  role="row"
569
558
  className={cn(
570
559
  "grid grid-cols-7 text-center font-medium",
571
- lg
572
- ? "gap-px text-xs text-muted"
573
- : "text-micro uppercase text-placeholder",
560
+ lg ? "gap-px text-xs text-muted" : "text-micro uppercase text-placeholder",
574
561
  )}
575
562
  >
576
563
  {weekdayLabels.map((w, i) => (
577
- <div
578
- key={i}
579
- role="columnheader"
580
- aria-label={w.long}
581
- className={lg ? "bg-surface py-2" : "py-0.5"}
582
- >
564
+ <div key={i} role="columnheader" aria-label={w.long} className={lg ? "bg-surface py-2" : "py-0.5"}>
583
565
  {lg ? w.short : w.narrow}
584
566
  </div>
585
567
  ))}
@@ -592,13 +574,7 @@ export function MiniCalendar({
592
574
  // The padding cells still have to BE cells, or the rows are ragged and
593
575
  // a screen reader's "column 3" stops meaning Wednesday.
594
576
  if (!d) {
595
- return (
596
- <div
597
- key={di}
598
- role="gridcell"
599
- className={lg ? cn(LG_CELL_HEIGHT, "bg-surface-2") : "h-8"}
600
- />
601
- );
577
+ return <div key={di} role="gridcell" className={lg ? cn(LG_CELL_HEIGHT, "bg-surface-2") : "h-8"} />;
602
578
  }
603
579
  const iso = toLocalIso(d);
604
580
  const disabled = isDisabled(d);
@@ -678,8 +654,7 @@ export function MiniCalendar({
678
654
  // or the month breaks it. Only when both ends exist and differ — a lone
679
655
  // start is a dot, not a band of one. The month view tints whole cells
680
656
  // instead, so it has no band.
681
- const banded =
682
- !lg && hasBand && !disabled && (isStart || isEnd || isInRange);
657
+ const banded = !lg && hasBand && !disabled && (isStart || isEnd || isInRange);
683
658
  const lastOfMonth = d.getDate() === daysInMonth(d);
684
659
  const band = banded
685
660
  ? cn(
@@ -695,109 +670,104 @@ export function MiniCalendar({
695
670
  <div
696
671
  key={di}
697
672
  role="none"
698
- className={cn(
699
- "relative flex",
700
- lg ? "min-w-0" : "h-8 items-center justify-center",
701
- )}
702
- >
703
- {band && <span aria-hidden className={band} />}
704
- <button
705
- key={di}
706
- type="button"
707
- role="gridcell"
708
- data-iso={iso}
709
- // The roving tabindex: ONE tab stop for the whole month. Every day
710
- // being tabbable meant 31 stops between a date field and the next
711
- // control, which is the same reason the pattern exists.
712
- tabIndex={isActive ? 0 : -1}
713
- aria-label={labels.day(formatDay(d))}
714
- // The custom content is the day's DESCRIPTION: `aria-label` replaces
715
- // the button's text as its name, so without this link a screen
716
- // reader would hear the date and never the events drawn under it.
717
- aria-describedby={filled ? contentId : undefined}
718
- aria-selected={isSelected}
719
- aria-disabled={disabled || undefined}
720
- aria-current={isToday ? "date" : undefined}
721
- onClick={() => handleClick(d)}
722
- onKeyDown={onDayKeyDown}
723
- className={
724
- lg
725
- ? cn(
726
- "flex w-full min-w-0 flex-col items-stretch gap-1 overflow-hidden p-1.5 text-start text-xs transition-colors",
727
- LG_CELL_HEIGHT,
728
- FOCUS_RING,
729
- "focus-visible:ring-inset",
730
- disabled
731
- ? "cursor-not-allowed bg-surface text-placeholder"
732
- : isSelected
733
- ? "bg-brand-soft text-primary hover:bg-brand-soft-hover"
734
- : "bg-surface text-primary hover:bg-hover",
735
- )
736
- : cn(
737
- "relative size-8 rounded-full text-xs tabular-nums transition-colors",
738
- // A grid you can walk with the keyboard needs to show where the
739
- // keyboard IS. Inset because the cells sit half a pixel apart and
740
- // an outset ring would be drawn over by its neighbours; the
741
- // colour flips on the selected days for the reason the numpad's
742
- // "Done" key does — a --brand ring on a --brand fill is a ring
743
- // that exists only in the DOM.
744
- FOCUS_RING_WIDTH,
745
- "focus-visible:outline-none focus-visible:ring-inset",
746
- isStart || isEnd
747
- ? "focus-visible:ring-brand-contrast"
748
- : "focus-visible:ring-brand",
749
- disabled
750
- ? "cursor-not-allowed text-placeholder"
751
- // The two selected states are the BRAND, not a fixed sky: the endpoints
752
- // are the solid fill and the days between them its soft tint. Hardcoding
753
- // them left an app that changed `--brand` with a calendar in the old
754
- // colour (docs/module-audit-2026-09-22.md §theming). Both token pairs
755
- // flip light/dark themselves, so there is no `dark:` partner to carry —
756
- // one would override the token and bring the hardcoded hue back.
757
- : isStart || isEnd
758
- ? "bg-brand text-brand-contrast hover:bg-brand-hover"
759
- : isInRange
760
- ? "font-medium text-brand-muted hover:bg-brand-soft-hover"
761
- : "text-primary hover:bg-hover",
762
- isToday && !isStart && !isEnd && !isInRange && !disabled && "ring-1 ring-inset ring-strong",
763
- )
764
- }
673
+ className={cn("relative flex", lg ? "min-w-0" : "h-8 items-center justify-center")}
765
674
  >
766
- {lg ? (
767
- <>
768
- <span
769
- className={cn(
770
- "inline-flex size-6 shrink-0 items-center justify-center self-start rounded-full tabular-nums",
771
- isStart || isEnd
772
- ? "bg-brand font-semibold text-brand-contrast"
773
- : isToday && !disabled
774
- ? "font-semibold text-brand ring-1 ring-inset ring-brand"
775
- : isInRange && "font-medium text-brand-muted",
776
- )}
777
- >
778
- {label}
779
- </span>
780
- {filled && (
781
- <span id={contentId} className="flex min-w-0 flex-col gap-0.5">
782
- {content}
783
- </span>
784
- )}
785
- </>
786
- ) : (
787
- <>
788
- {label}
789
- {/* Under the number, inside the circle: room for a dot or two. */}
790
- {filled && (
675
+ {band && <span aria-hidden className={band} />}
676
+ <button
677
+ key={di}
678
+ type="button"
679
+ role="gridcell"
680
+ data-iso={iso}
681
+ // The roving tabindex: ONE tab stop for the whole month. Every day
682
+ // being tabbable meant 31 stops between a date field and the next
683
+ // control, which is the same reason the pattern exists.
684
+ tabIndex={isActive ? 0 : -1}
685
+ aria-label={labels.day(formatDay(d))}
686
+ // The custom content is the day's DESCRIPTION: `aria-label` replaces
687
+ // the button's text as its name, so without this link a screen
688
+ // reader would hear the date and never the events drawn under it.
689
+ aria-describedby={filled ? contentId : undefined}
690
+ aria-selected={isSelected}
691
+ aria-disabled={disabled || undefined}
692
+ aria-current={isToday ? "date" : undefined}
693
+ onClick={() => handleClick(d)}
694
+ onKeyDown={onDayKeyDown}
695
+ className={
696
+ lg
697
+ ? cn(
698
+ "flex w-full min-w-0 flex-col items-stretch gap-1 overflow-hidden p-1.5 text-start text-xs transition-colors",
699
+ LG_CELL_HEIGHT,
700
+ FOCUS_RING,
701
+ "focus-visible:ring-inset",
702
+ disabled
703
+ ? "cursor-not-allowed bg-surface text-placeholder"
704
+ : isSelected
705
+ ? "bg-brand-soft text-primary hover:bg-brand-soft-hover"
706
+ : "bg-surface text-primary hover:bg-hover",
707
+ )
708
+ : cn(
709
+ "relative size-8 rounded-full text-xs tabular-nums transition-colors",
710
+ // A grid you can walk with the keyboard needs to show where the
711
+ // keyboard IS. Inset because the cells sit half a pixel apart and
712
+ // an outset ring would be drawn over by its neighbours; the
713
+ // colour flips on the selected days for the reason the numpad's
714
+ // "Done" key does — a --brand ring on a --brand fill is a ring
715
+ // that exists only in the DOM.
716
+ FOCUS_RING_WIDTH,
717
+ "focus-visible:outline-none focus-visible:ring-inset",
718
+ isStart || isEnd ? "focus-visible:ring-brand-contrast" : "focus-visible:ring-brand",
719
+ disabled
720
+ ? "cursor-not-allowed text-placeholder"
721
+ : // The two selected states are the BRAND, not a fixed sky: the endpoints
722
+ // are the solid fill and the days between them its soft tint. Hardcoding
723
+ // them left an app that changed `--brand` with a calendar in the old
724
+ // colour (docs/module-audit-2026-09-22.md §theming). Both token pairs
725
+ // flip light/dark themselves, so there is no `dark:` partner to carry —
726
+ // one would override the token and bring the hardcoded hue back.
727
+ isStart || isEnd
728
+ ? "bg-brand text-brand-contrast hover:bg-brand-hover"
729
+ : isInRange
730
+ ? "font-medium text-brand-muted hover:bg-brand-soft-hover"
731
+ : "text-primary hover:bg-hover",
732
+ isToday && !isStart && !isEnd && !isInRange && !disabled && "ring-1 ring-inset ring-strong",
733
+ )
734
+ }
735
+ >
736
+ {lg ? (
737
+ <>
791
738
  <span
792
- id={contentId}
793
- className="pointer-events-none absolute inset-x-0 bottom-0.5 flex justify-center gap-px leading-none"
739
+ className={cn(
740
+ "inline-flex size-6 shrink-0 items-center justify-center self-start rounded-full tabular-nums",
741
+ isStart || isEnd
742
+ ? "bg-brand font-semibold text-brand-contrast"
743
+ : isToday && !disabled
744
+ ? "font-semibold text-brand ring-1 ring-inset ring-brand"
745
+ : isInRange && "font-medium text-brand-muted",
746
+ )}
794
747
  >
795
- {content}
748
+ {label}
796
749
  </span>
797
- )}
798
- </>
799
- )}
800
- </button>
750
+ {filled && (
751
+ <span id={contentId} className="flex min-w-0 flex-col gap-0.5">
752
+ {content}
753
+ </span>
754
+ )}
755
+ </>
756
+ ) : (
757
+ <>
758
+ {label}
759
+ {/* Under the number, inside the circle: room for a dot or two. */}
760
+ {filled && (
761
+ <span
762
+ id={contentId}
763
+ className="pointer-events-none absolute inset-x-0 bottom-0.5 flex justify-center gap-px leading-none"
764
+ >
765
+ {content}
766
+ </span>
767
+ )}
768
+ </>
769
+ )}
770
+ </button>
801
771
  </div>
802
772
  );
803
773
  })}
@@ -4,8 +4,10 @@ import { useMoneyDraft } from "./money-draft";
4
4
 
5
5
  type AmountInputProps = ComponentProps<typeof AmountInput>;
6
6
 
7
- export interface MoneyFieldProps
8
- extends Omit<AmountInputProps, "value" | "onChange" | "onCommit" | "negative" | "onNegativeChange" | "ref"> {
7
+ export interface MoneyFieldProps extends Omit<
8
+ AmountInputProps,
9
+ "value" | "onChange" | "onCommit" | "negative" | "onNegativeChange" | "ref"
10
+ > {
9
11
  /** The amount, or `null` for an empty field. */
10
12
  value: number | null;
11
13
  /**