@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
@@ -13,7 +13,14 @@ import { splitTriggerAria } from "./trigger-aria";
13
13
  import type { TriggerAria } from "./trigger-aria";
14
14
  import { useKitDateFormatter, useKitLabels, useKitLocale, type LabelOverride } from "../i18n/kit-labels";
15
15
  import { hasContent } from "../lib/presence";
16
- import { FieldBox, FieldLabelLine, LABEL_ABOVE_BOX, mergeRefs, useFieldMessages, type FieldHelpProps } from "./field-parts";
16
+ import {
17
+ FieldBox,
18
+ FieldLabelLine,
19
+ LABEL_ABOVE_BOX,
20
+ mergeRefs,
21
+ useFieldMessages,
22
+ type FieldHelpProps,
23
+ } from "./field-parts";
17
24
  import { DEFAULT_MONTH_PICKER_LABELS } from "./month-picker-labels";
18
25
 
19
26
  /**
@@ -381,10 +388,7 @@ function MonthFieldTrigger({
381
388
  "Septiembre De 2026". It wraps from Large up, as DatePicker's value does
382
389
  (`truncate-until-large`, text size §10.17; round 0.34 T1: the sweep read
383
390
  "Choose a mo…" at 360 px / Extra large). */}
384
- <span
385
- id={valueId}
386
- className={cn("truncate-until-large", !hasValue && "text-placeholder")}
387
- >
391
+ <span id={valueId} className={cn("truncate-until-large", !hasValue && "text-placeholder")}>
388
392
  {triggerText || " "}
389
393
  </span>
390
394
  </button>
@@ -425,8 +429,7 @@ function MonthGrid({
425
429
  currentKey: string;
426
430
  labels: MonthPickerLabels;
427
431
  }) {
428
- const outOfBounds = (key: string) =>
429
- Boolean((minKey && key < minKey) || (maxKey && key > maxKey));
432
+ const outOfBounds = (key: string) => Boolean((minKey && key < minKey) || (maxKey && key > maxKey));
430
433
 
431
434
  // The month holding the tab order, and with it the year on screen — one piece of
432
435
  // state, as in MiniCalendar, so the two cannot disagree. Opens on the value, or on
@@ -448,9 +451,7 @@ function MonthGrid({
448
451
  return Array.from({ length: 12 }, (_, i) => fmt.format(new Date(2000, i, 1)));
449
452
  }, [locale]);
450
453
  const longName = useMemo(() => new Intl.DateTimeFormat(locale, MONTH_NAME_FORMAT), [locale]);
451
- const yearCaption = new Intl.DateTimeFormat(locale, { year: "numeric" }).format(
452
- firstOf({ year, month: 1 }),
453
- );
454
+ const yearCaption = new Intl.DateTimeFormat(locale, { year: "numeric" }).format(firstOf({ year, month: 1 }));
454
455
 
455
456
  // A month whose cell must take focus after the next commit. Arrowing across a year
456
457
  // boundary re-labels the same twelve buttons, so the one to focus is a DIFFERENT
@@ -536,11 +537,7 @@ function MonthGrid({
536
537
  </button>
537
538
  {/* Names the grid, and `aria-live` so stepping a year says which one you are
538
539
  on — the user pressing the arrow is not inside the grid to hear it change. */}
539
- <div
540
- id={captionId}
541
- aria-live="polite"
542
- className="text-sm font-semibold tabular-nums text-primary"
543
- >
540
+ <div id={captionId} aria-live="polite" className="text-sm font-semibold tabular-nums text-primary">
544
541
  {yearCaption}
545
542
  </div>
546
543
  <button
@@ -585,9 +582,7 @@ function MonthGrid({
585
582
  FOCUS_RING_WIDTH,
586
583
  "focus-visible:outline-none focus-visible:ring-inset",
587
584
  // A --brand ring on a --brand fill exists only in the DOM.
588
- selected && !disabled
589
- ? "focus-visible:ring-brand-contrast"
590
- : "focus-visible:ring-brand",
585
+ selected && !disabled ? "focus-visible:ring-brand-contrast" : "focus-visible:ring-brand",
591
586
  disabled
592
587
  ? "cursor-not-allowed text-placeholder"
593
588
  : selected
@@ -776,9 +771,7 @@ function YearGrid({
776
771
  "rounded px-2 py-1.5 text-sm tabular-nums transition-colors",
777
772
  FOCUS_RING_WIDTH,
778
773
  "focus-visible:outline-none focus-visible:ring-inset",
779
- selected && !disabled
780
- ? "focus-visible:ring-brand-contrast"
781
- : "focus-visible:ring-brand",
774
+ selected && !disabled ? "focus-visible:ring-brand-contrast" : "focus-visible:ring-brand",
782
775
  disabled
783
776
  ? "cursor-not-allowed text-placeholder"
784
777
  : selected
@@ -3,19 +3,8 @@ import { X } from "lucide-react";
3
3
  import { cn } from "../lib/cn";
4
4
  import { FieldChevron, FIELD_TRIGGER, FIELD_FLOATING_PAD, FIELD_INVALID } from "./field-base";
5
5
  import { FieldLabel } from "./field-parts";
6
- import {
7
- ComboboxPanel,
8
- endHintRowProps,
9
- offersCreate,
10
- useComboboxCore,
11
- type ComboOption,
12
- } from "./combobox-core";
13
- import {
14
- DEFAULT_COMBOBOX_LABELS,
15
- DEFAULT_COMMON_LABELS,
16
- useKitLabels,
17
- useKitLocale,
18
- } from "../i18n/kit-labels";
6
+ import { ComboboxPanel, endHintRowProps, offersCreate, useComboboxCore, type ComboOption } from "./combobox-core";
7
+ import { DEFAULT_COMBOBOX_LABELS, DEFAULT_COMMON_LABELS, useKitLabels, useKitLocale } from "../i18n/kit-labels";
19
8
  import {
20
9
  assignRef,
21
10
  EndHintRow,
@@ -35,8 +24,7 @@ import { useCommitReason, type CommitScope } from "./write-lock";
35
24
  /** `onChange` is the kit's — "a selection was made", carrying values — rather
36
25
  * than the div's form event, so the DOM's spelling of it is omitted. */
37
26
  export interface MultiEntityComboboxProps<V extends string | number>
38
- extends Omit<ComponentPropsWithoutRef<"div">, "onChange">,
39
- FieldHelpProps {
27
+ extends Omit<ComponentPropsWithoutRef<"div">, "onChange">, FieldHelpProps {
40
28
  /** Selected ids. */
41
29
  value: V[];
42
30
  onChange: (value: V[]) => void;
@@ -210,17 +198,12 @@ export function MultiEntityCombobox<V extends string | number>(props: MultiEntit
210
198
  // natural fit for a summary, but in ja/zh it concatenates the names with nothing
211
199
  // between them at all.
212
200
  const locale = useKitLocale();
213
- const listFormat = useMemo(
214
- () => new Intl.ListFormat(locale, { type: "conjunction", style: "narrow" }),
215
- [locale],
216
- );
201
+ const listFormat = useMemo(() => new Intl.ListFormat(locale, { type: "conjunction", style: "narrow" }), [locale]);
217
202
  const summary = (() => {
218
203
  if (value.length === 0) return placeholder ?? "";
219
204
  if (itemLabel) return itemLabel(value.length);
220
205
  const chosen = value.map(resolve);
221
- return chosen.every(Boolean)
222
- ? listFormat.format(chosen.map((o) => o!.label))
223
- : labels.selectedCount(value.length);
206
+ return chosen.every(Boolean) ? listFormat.format(chosen.map((o) => o!.label)) : labels.selectedCount(value.length);
224
207
  })();
225
208
 
226
209
  // While locked the trigger sits in the reason's Tooltip, as on EntityCombobox.
@@ -282,10 +265,7 @@ export function MultiEntityCombobox<V extends string | number>(props: MultiEntit
282
265
  // A caller's own name wins over the composition: two fields labelled
283
266
  // "Account" on a transfer form are the from and the to, and only the
284
267
  // caller knows which is which.
285
- aria-label={
286
- ariaLabel ??
287
- (typeof label === "string" ? common.fieldValue(label, summary) : undefined)
288
- }
268
+ aria-label={ariaLabel ?? (typeof label === "string" ? common.fieldValue(label, summary) : undefined)}
289
269
  // Focusable while locked — see EntityCombobox.
290
270
  disabled={lock.locked ? undefined : disabled}
291
271
  aria-disabled={lock.locked || undefined}
@@ -47,8 +47,7 @@ export interface MultiSelectOption<V extends string | number = string | number>
47
47
  * inferred from `options` and `value`, so `onChange` hands back `number[]` for number
48
48
  * ids and `string[]` for string ones, and no call site casts. */
49
49
  export interface MultiSelectProps<V extends string | number = string | number>
50
- extends Omit<ComponentPropsWithoutRef<"div">, "onChange">,
51
- FieldHelpProps {
50
+ extends Omit<ComponentPropsWithoutRef<"div">, "onChange">, FieldHelpProps {
52
51
  options: MultiSelectOption<V>[];
53
52
  /** The chosen values — the select family's `value` (API-4). */
54
53
  value?: V[];
@@ -162,7 +161,8 @@ export function MultiSelect<V extends string | number = string | number>(props:
162
161
  const value = useMemo<V[]>(() => valueProp ?? [], [valueProp]);
163
162
  // The rows as the family's options — the hint is the sublabel, searched like the label.
164
163
  const comboOptions = useMemo(
165
- () => options.map((o): ComboOption<V> => ({ value: o.value, label: o.label, sublabel: o.hint, disabled: o.disabled })),
164
+ () =>
165
+ options.map((o): ComboOption<V> => ({ value: o.value, label: o.label, sublabel: o.hint, disabled: o.disabled })),
166
166
  [options],
167
167
  );
168
168
  // Back closes the open list, as it did on `useDropdown` (keksdose live #309).
@@ -213,9 +213,7 @@ export function MultiSelect<V extends string | number = string | number>(props:
213
213
  const valueSet = useMemo(() => new Set<V>(value), [value]);
214
214
  const allChecked = options.length > 0 && options.every((o) => valueSet.has(o.value));
215
215
  const selectedSummary =
216
- value.length === 0 || allChecked
217
- ? (labelsProp?.all ?? placeholder ?? text.all)
218
- : text.selectedCount(value.length);
216
+ value.length === 0 || allChecked ? (labelsProp?.all ?? placeholder ?? text.all) : text.selectedCount(value.length);
219
217
 
220
218
  const toggle = (o: ComboOption<V>) => {
221
219
  if (lock.locked) return;
@@ -256,9 +254,7 @@ export function MultiSelect<V extends string | number = string | number>(props:
256
254
  // siblings use, so a form row of pickers reads the same way throughout.
257
255
  // A caller's own name wins: two filters labelled "Accounts" on one screen have
258
256
  // to be told apart, and only the caller knows by what.
259
- aria-label={
260
- ariaLabel ?? (typeof label === "string" ? common.fieldValue(label, selectedSummary) : undefined)
261
- }
257
+ aria-label={ariaLabel ?? (typeof label === "string" ? common.fieldValue(label, selectedSummary) : undefined)}
262
258
  onClick={() => {
263
259
  if (!inert) setOpen((v) => !v);
264
260
  }}
@@ -31,7 +31,10 @@ export interface NavPillLinkProps {
31
31
  /** The `aria-current` token the current pill carries. */
32
32
  export type NavPillsCurrent = "page" | "step" | "location" | "true";
33
33
 
34
- export interface NavPillsProps<T extends string> extends Omit<ComponentPropsWithoutRef<"nav">, "children" | "onSelect"> {
34
+ export interface NavPillsProps<T extends string> extends Omit<
35
+ ComponentPropsWithoutRef<"nav">,
36
+ "children" | "onSelect"
37
+ > {
35
38
  items: NavPillItem<T>[];
36
39
  /** The pill that is current. `null` or a value not in `items`: none is. */
37
40
  current: T | null;
@@ -161,7 +164,12 @@ export function NavPills<T extends string>({
161
164
  ) : kit ? (
162
165
  <RenderedKitLink render={kit} props={props} />
163
166
  ) : (
164
- <a href={props.href} className={props.className} aria-current={props["aria-current"]} onClick={props.onClick}>
167
+ <a
168
+ href={props.href}
169
+ className={props.className}
170
+ aria-current={props["aria-current"]}
171
+ onClick={props.onClick}
172
+ >
165
173
  {props.children}
166
174
  </a>
167
175
  );
@@ -8,8 +8,10 @@ import { useKitLocale } from "../i18n/kit-labels";
8
8
 
9
9
  type NumberInputProps = ComponentProps<typeof NumberInput>;
10
10
 
11
- export interface NumberFieldProps
12
- extends Omit<NumberInputProps, "value" | "onChange" | "onCommit" | "suffix" | "invalid" | "error" | "locale"> {
11
+ export interface NumberFieldProps extends Omit<
12
+ NumberInputProps,
13
+ "value" | "onChange" | "onCommit" | "suffix" | "invalid" | "error" | "locale"
14
+ > {
13
15
  /** The committed number. `null` is "no value" — shown as an empty field. */
14
16
  value: number | null;
15
17
  /**
@@ -205,8 +207,7 @@ export function NumberField(props: NumberFieldProps) {
205
207
  // Live mode echoing back what it was just told: the draft already says it, in
206
208
  // the typist's own spelling ("1," or "12+5"), and reformatting would fight them.
207
209
  // Only a changed `value` qualifies — a new mark or `digits` still re-renders.
208
- const echo =
209
- onValueChange !== undefined && value === reported && seen.mark === mark && seen.digits === digits;
210
+ const echo = onValueChange !== undefined && value === reported && seen.mark === mark && seen.digits === digits;
210
211
  if (!echo) {
211
212
  setDraft(format(value));
212
213
  setCommitted(value);
@@ -263,17 +264,19 @@ export function NumberField(props: NumberFieldProps) {
263
264
  const required = ariaRequired === true || ariaRequired === "true";
264
265
 
265
266
  const labelWithUnit =
266
- unit !== undefined && unitPlacement === "label"
267
- ? label === undefined || label === ""
268
- ? unit
269
- : typeof label === "string" && typeof unit === "string"
270
- ? `${label} (${unit})`
271
- : (
272
- <>
273
- {label} ({unit})
274
- </>
275
- )
276
- : label;
267
+ unit !== undefined && unitPlacement === "label" ? (
268
+ label === undefined || label === "" ? (
269
+ unit
270
+ ) : typeof label === "string" && typeof unit === "string" ? (
271
+ `${label} (${unit})`
272
+ ) : (
273
+ <>
274
+ {label} ({unit})
275
+ </>
276
+ )
277
+ ) : (
278
+ label
279
+ );
277
280
 
278
281
  return (
279
282
  <NumberInput
@@ -2,13 +2,7 @@ import { useEffect, useId, useMemo, useRef } from "react";
2
2
  import type { KeyboardEvent, ReactNode, Ref } from "react";
3
3
  import { CalculatorButton, type CalculatorButtonLabels } from "./calculator";
4
4
  import { NumberPadSheet, type NumberPadSheetLabels } from "./numpad-sheet";
5
- import {
6
- FIELD_BASE,
7
- FIELD_DISPLAY,
8
- FIELD_INVALID,
9
- FLOATING_INPUT_CLASS,
10
- FloatingField,
11
- } from "./field-base";
5
+ import { FIELD_BASE, FIELD_DISPLAY, FIELD_INVALID, FLOATING_INPUT_CLASS, FloatingField } from "./field-base";
12
6
  // The data alone (0.35): not the picker, which this field does not render.
13
7
  import { CURRENCIES } from "../currencies";
14
8
  import { FieldCaption, LockedReason, mergeRefs, type DisabledReasonDisplay, type FieldHelpProps } from "./field-parts";
@@ -205,13 +199,7 @@ function decimalsOf(n: number): number {
205
199
  * binary noise goes: `0.1 × 3` is 0.30000000000000004, and `toFixed(1)` of it is
206
200
  * "0.3". Summing steps would accumulate that noise press by press instead.
207
201
  */
208
- export function stepNumber(
209
- current: number | null,
210
- count: number,
211
- step: number,
212
- min?: number,
213
- max?: number,
214
- ): number {
202
+ export function stepNumber(current: number | null, count: number, step: number, min?: number, max?: number): number {
215
203
  const clamp = (n: number) => Math.min(max ?? Infinity, Math.max(min ?? -Infinity, n));
216
204
  // Nothing to step from: land on the value nearest zero the bounds allow, rather
217
205
  // than on ±step — a room count with `min={1}` goes to 1, a rate to 0.
@@ -221,11 +209,7 @@ export function stepNumber(
221
209
  const nearest = Math.round(raw);
222
210
  // "On the grid" within float tolerance: (0.3 - 0) / 0.1 is 2.9999999999999996.
223
211
  const onGrid = Math.abs(raw - nearest) < 1e-9;
224
- const k = onGrid
225
- ? nearest + count
226
- : count > 0
227
- ? Math.ceil(raw) + count - 1
228
- : Math.floor(raw) + count + 1;
212
+ const k = onGrid ? nearest + count : count > 0 ? Math.ceil(raw) + count - 1 : Math.floor(raw) + count + 1;
229
213
  const places = Math.min(Math.max(decimalsOf(step), decimalsOf(origin)), 20);
230
214
  return clamp(Number((origin + k * step).toFixed(places)));
231
215
  }
@@ -6,11 +6,7 @@ import { cn } from "../lib/cn";
6
6
  import { FOCUS_RING } from "./focus-ring";
7
7
  import { useDismissLayer } from "../hooks/use-dismiss";
8
8
  import { evaluateExpression, formatResult, sanitizeLive } from "../lib/calc";
9
- import {
10
- DEFAULT_CALCULATOR_LABELS,
11
- useKitLabels,
12
- type CalculatorLabels,
13
- } from "../i18n/kit-labels";
9
+ import { DEFAULT_CALCULATOR_LABELS, useKitLabels, type CalculatorLabels } from "../i18n/kit-labels";
14
10
 
15
11
  /**
16
12
  * A full calculator keypad rendered as a bottom sheet — the mobile counterpart to
@@ -45,9 +41,7 @@ export interface NumberPadSheetLabels extends Partial<CalculatorLabels> {
45
41
  done?: string;
46
42
  }
47
43
 
48
- type PadKey =
49
- | { kind: "ins"; label: string; ins: string; accent?: boolean; name?: PadKeyName }
50
- | { kind: "back" };
44
+ type PadKey = { kind: "ins"; label: string; ins: string; accent?: boolean; name?: PadKeyName } | { kind: "back" };
51
45
 
52
46
  /** The {@link CalculatorLabels} key naming a non-digit key; digits are their glyph. */
53
47
  type PadKeyName = "plus" | "minus" | "times" | "divide" | "decimal";
@@ -222,14 +216,16 @@ export function NumberPadSheet({
222
216
  {/* Header display: which field + the running expression and live result, so
223
217
  the value stays visible even when the sheet covers the field. */}
224
218
  <div className="flex items-end justify-between gap-3 px-2 pb-2">
225
- {label != null && (
226
- <span className="truncate pb-1 text-xs font-medium text-money-neutral">{label}</span>
227
- )}
219
+ {label != null && <span className="truncate pb-1 text-xs font-medium text-money-neutral">{label}</span>}
228
220
  {/* At the logical end, opposite the label; the figures themselves stay
229
221
  left-to-right and right-aligned, like the desktop calculator's. */}
230
222
  <div className="ms-auto min-w-0">
231
- <div dir="ltr" className="truncate text-right font-mono text-lg leading-tight text-primary">{value || "0"}</div>
232
- <div dir="ltr" className="h-4 text-right font-mono text-xs text-money-neutral">{preview}</div>
223
+ <div dir="ltr" className="truncate text-right font-mono text-lg leading-tight text-primary">
224
+ {value || "0"}
225
+ </div>
226
+ <div dir="ltr" className="h-4 text-right font-mono text-xs text-money-neutral">
227
+ {preview}
228
+ </div>
233
229
  </div>
234
230
  </div>
235
231
 
@@ -2,13 +2,7 @@ import { useId, useState } from "react";
2
2
  import type { ChangeEvent, ClipboardEvent, FocusEvent, InputHTMLAttributes, ReactNode, Ref } from "react";
3
3
  import { cn } from "../lib/cn";
4
4
  import { EndHintRow, FieldCaption, useFieldError, useFieldHint, type FieldHelpProps } from "./field-parts";
5
- import {
6
- FIELD_BASE,
7
- FIELD_INVALID,
8
- FIELD_WRITABLE_LOOK,
9
- FLOATING_INPUT_CLASS,
10
- FloatingField,
11
- } from "./field-base";
5
+ import { FIELD_BASE, FIELD_INVALID, FIELD_WRITABLE_LOOK, FLOATING_INPUT_CLASS, FloatingField } from "./field-base";
12
6
 
13
7
  /**
14
8
  * The field for a verification code — the six digits an authenticator app shows, or the
@@ -57,10 +51,11 @@ import {
57
51
  * the error under that, both attached through `aria-describedby` after the caller's own.
58
52
  */
59
53
  export interface OneTimeCodeInputProps
60
- extends Omit<
61
- InputHTMLAttributes<HTMLInputElement>,
62
- "value" | "defaultValue" | "onChange" | "type" | "inputMode" | "autoComplete" | "maxLength" | "pattern"
63
- >,
54
+ extends
55
+ Omit<
56
+ InputHTMLAttributes<HTMLInputElement>,
57
+ "value" | "defaultValue" | "onChange" | "type" | "inputMode" | "autoComplete" | "maxLength" | "pattern"
58
+ >,
64
59
  FieldHelpProps {
65
60
  /** The digits so far — a string, so leading zeros survive. */
66
61
  value: string;
@@ -200,12 +200,7 @@ export function PageContents({
200
200
 
201
201
  if (variant === "disclosure") {
202
202
  return (
203
- <details
204
- className={cn(
205
- "group rounded-md border border-subtle bg-surface",
206
- className,
207
- )}
208
- >
203
+ <details className={cn("group rounded-md border border-subtle bg-surface", className)}>
209
204
  <summary className="flex cursor-pointer list-none items-center justify-between px-3 py-2 text-sm font-medium text-secondary [&::-webkit-details-marker]:hidden">
210
205
  {l.title}
211
206
  <ChevronDown
@@ -222,9 +217,7 @@ export function PageContents({
222
217
 
223
218
  return (
224
219
  <nav {...rest} aria-label={l.title} className={className}>
225
- <p className="mb-2 text-caption font-semibold uppercase tracking-wide text-muted">
226
- {l.title}
227
- </p>
220
+ <p className="mb-2 text-caption font-semibold uppercase tracking-wide text-muted">{l.title}</p>
228
221
  {list}
229
222
  </nav>
230
223
  );
@@ -39,8 +39,7 @@ export type PageHeaderMobileLayout = "stacked" | "inline";
39
39
  * their label onto three lines. `large:max-sm:`, the scaled phone width, so Normal and
40
40
  * every wider screen keep their row; `inline` is for actions known to fit, and stays.
41
41
  */
42
- const STACK_ACTIONS_AT_LARGE =
43
- "large:max-sm:flex-col large:max-sm:items-stretch large:max-sm:[&>*]:w-full";
42
+ const STACK_ACTIONS_AT_LARGE = "large:max-sm:flex-col large:max-sm:items-stretch large:max-sm:[&>*]:w-full";
44
43
 
45
44
  const ROW: Record<PageHeaderMobileLayout, string> = {
46
45
  stacked: "flex-col gap-3 sm:flex-row sm:items-start sm:justify-between sm:gap-4",
@@ -247,7 +246,9 @@ export function PageHeader({
247
246
  return (
248
247
  <div {...rest} className={cn("flex min-w-0 flex-col gap-2", className)}>
249
248
  {breadcrumbs != null && (
250
- <PageHeaderTrailContext.Provider value={titled ? TITLED : UNTITLED}>{breadcrumbs}</PageHeaderTrailContext.Provider>
249
+ <PageHeaderTrailContext.Provider value={titled ? TITLED : UNTITLED}>
250
+ {breadcrumbs}
251
+ </PageHeaderTrailContext.Provider>
251
252
  )}
252
253
  {/* With a second group, `inline` wraps so that group's full-width basis puts it
253
254
  on a row of its own on a phone (`stacked` is a column there already, and a
@@ -264,13 +265,7 @@ export function PageHeader({
264
265
  >
265
266
  <div ref={titleRef} className={cn("flex-1", keepsWords ? "min-w-min" : "min-w-0")}>
266
267
  {eyebrow != null && <p className={cn(SECTION_LABEL_CLASS.xs, "mb-1")}>{eyebrow}</p>}
267
- <Heading
268
- className={cn(
269
- truncateTitle ? "truncate-until-large" : "break-words",
270
- "text-primary",
271
- TITLE[size],
272
- )}
273
- >
268
+ <Heading className={cn(truncateTitle ? "truncate-until-large" : "break-words", "text-primary", TITLE[size])}>
274
269
  {title}
275
270
  </Heading>
276
271
  {description != null && <p className="mt-1 text-sm text-muted">{description}</p>}
@@ -18,6 +18,5 @@ export const DEFAULT_PASSWORD_STRENGTH_LABELS: PasswordStrengthLabels = {
18
18
  optional: (rule) => `${rule} (optional)`,
19
19
  met: "Met:",
20
20
  notMet: "Not met:",
21
- tooLong: (maxBytes) =>
22
- `At most ${maxBytes} characters (accents and emoji count for more than one).`,
21
+ tooLong: (maxBytes) => `At most ${maxBytes} characters (accents and emoji count for more than one).`,
23
22
  };
@@ -55,7 +55,10 @@ export interface PasswordScoreOptions {
55
55
  const DEFAULT_MIN_LENGTH = 8;
56
56
 
57
57
  /** The checklist's rules, evaluated. Pure; the order is the order they are shown in. */
58
- export function passwordRules(value: string, { minLength = DEFAULT_MIN_LENGTH }: PasswordScoreOptions = {}): PasswordRule[] {
58
+ export function passwordRules(
59
+ value: string,
60
+ { minLength = DEFAULT_MIN_LENGTH }: PasswordScoreOptions = {},
61
+ ): PasswordRule[] {
59
62
  return [
60
63
  // Code points, not UTF-16 units: an emoji is one character to the person typing it.
61
64
  { id: "length", met: [...value].length >= minLength, required: true },
@@ -208,10 +211,7 @@ export function PasswordStrengthMeter({
208
211
  {[1, 2, 3, 4].map((step) => (
209
212
  <div
210
213
  key={step}
211
- className={cn(
212
- "h-1 flex-1 rounded-full",
213
- step <= score ? FILL[score] : "bg-[var(--border)]",
214
- )}
214
+ className={cn("h-1 flex-1 rounded-full", step <= score ? FILL[score] : "bg-[var(--border)]")}
215
215
  />
216
216
  ))}
217
217
  </div>
@@ -223,10 +223,7 @@ export function PasswordStrengthMeter({
223
223
  <li
224
224
  key={r.id}
225
225
  // `relative`: the sr-only state needs a local containing block.
226
- className={cn(
227
- "relative",
228
- r.met ? "text-success" : "text-muted",
229
- )}
226
+ className={cn("relative", r.met ? "text-success" : "text-muted")}
230
227
  data-met={r.met}
231
228
  >
232
229
  <span className="sr-only">{r.met ? labels.met : labels.notMet} </span>
@@ -2,14 +2,7 @@ import { useState } from "react";
2
2
  import type { ChangeEvent, FocusEvent } from "react";
3
3
  import { useKitLabels, type LabelOverride } from "../i18n/kit-labels";
4
4
  import { cn } from "../lib/cn";
5
- import {
6
- PHONE_COUNTRIES,
7
- PHONE_DIAL_CODES,
8
- formatNationalPhone,
9
- formatPhone,
10
- isE164,
11
- parsePhone,
12
- } from "../lib/phone";
5
+ import { PHONE_COUNTRIES, PHONE_DIAL_CODES, formatNationalPhone, formatPhone, isE164, parsePhone } from "../lib/phone";
13
6
  import type { ParsedPhone, PhoneCountry, PhoneCountryCode } from "../lib/phone";
14
7
  import { useFieldMessages } from "./field-parts";
15
8
  import { Input, type InputProps } from "./input";
@@ -237,11 +230,7 @@ export function PhoneInput({
237
230
  const named = typeof label === "string" && label !== "";
238
231
 
239
232
  return (
240
- <div
241
- className={className}
242
- role={named ? "group" : undefined}
243
- aria-label={named ? label : undefined}
244
- >
233
+ <div className={className} role={named ? "group" : undefined} aria-label={named ? label : undefined}>
245
234
  {/* On a phone at Large the number takes a line of its own under the country (0.32.1,
246
235
  the 360 px Extra-large sweep; docs/text-size-harmonization.md §4 "nothing
247
236
  truncates"): the 7rem select is 168 px at 150 %, and on a 360 px phone it left
@@ -20,8 +20,7 @@ import { DEFAULT_PICKER_SHEET_LABELS, useKitLabels } from "../i18n/kit-labels";
20
20
  * tooltip string, and `onClose` is "the sheet was dismissed", not the DOM's
21
21
  * `<dialog>` close event. Everything else a caller can pass reaches the sheet.
22
22
  */
23
- export interface PickerSheetProps
24
- extends Omit<ComponentPropsWithoutRef<"div">, "title" | "onClose"> {
23
+ export interface PickerSheetProps extends Omit<ComponentPropsWithoutRef<"div">, "title" | "onClose"> {
25
24
  open: boolean;
26
25
  onClose: () => void;
27
26
  /** The field's own label — a sheet that fills the screen has to say what it is
@@ -270,9 +269,7 @@ export function PickerSheet({
270
269
  className={cn("fixed inset-0 z-50 flex flex-col bg-surface outline-none", className)}
271
270
  >
272
271
  <div className="flex items-center gap-2 border-b border-subtle px-3 py-2">
273
- <span className="min-w-0 flex-1 truncate text-sm font-semibold text-primary">
274
- {title}
275
- </span>
272
+ <span className="min-w-0 flex-1 truncate text-sm font-semibold text-primary">{title}</span>
276
273
  <button
277
274
  type="button"
278
275
  aria-label={labels.close}
@@ -210,8 +210,9 @@ export function PieChart({
210
210
  const { drawable, drawn, total, pieData } = useMemo(() => {
211
211
  const drawable = data
212
212
  .map((slice, i) => ({ slice, value: slice.value, color: slice.color ?? paletteFor(i) }))
213
- .filter((d): d is { slice: PieChartSlice; value: number; color: string } =>
214
- typeof d.value === "number" && Number.isFinite(d.value) && d.value > 0,
213
+ .filter(
214
+ (d): d is { slice: PieChartSlice; value: number; color: string } =>
215
+ typeof d.value === "number" && Number.isFinite(d.value) && d.value > 0,
215
216
  );
216
217
  const shown = drawable.filter((d) => !hidden.has(d.slice.key));
217
218
  const total = shown.reduce((acc, d) => acc + d.value, 0);
@@ -404,10 +405,7 @@ export function PieChart({
404
405
  }));
405
406
 
406
407
  const emptyBox = (
407
- <div
408
- className={cn("flex items-center justify-center text-sm text-muted", box.className)}
409
- style={box.style}
410
- >
408
+ <div className={cn("flex items-center justify-center text-sm text-muted", box.className)} style={box.style}>
411
409
  {empty ?? labels.empty}
412
410
  </div>
413
411
  );
@@ -439,9 +437,7 @@ export function PieChart({
439
437
  content={
440
438
  <Content
441
439
  hideLabel
442
- valueFormatter={(v) =>
443
- `${formatValue(v)} (${formatShare(total > 0 ? v / total : 0)})`
444
- }
440
+ valueFormatter={(v) => `${formatValue(v)} (${formatShare(total > 0 ? v / total : 0)})`}
445
441
  />
446
442
  }
447
443
  />
@@ -466,9 +462,7 @@ export function PieChart({
466
462
  {focusedSlice ? formatValue(focusedSlice.value) : (centerValue ?? formatValue(total))}
467
463
  </span>
468
464
  {focusedSlice && (
469
- <span className="text-xs tabular-nums text-muted">
470
- {formatShare(focusedSlice.share)}
471
- </span>
465
+ <span className="text-xs tabular-nums text-muted">{formatShare(focusedSlice.share)}</span>
472
466
  )}
473
467
  </div>
474
468
  )}
@@ -194,7 +194,8 @@ export function Popover({
194
194
  return (
195
195
  <>
196
196
  {trigger({ open, toggle, ref: triggerRef })}
197
- {open && pos &&
197
+ {open &&
198
+ pos &&
198
199
  createPortal(
199
200
  /* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions -- the
200
201
  dialog container, per the APG dialog pattern: `onKeyDown` is Escape-to-close for