@eifi1/ui-kit 0.51.4 → 0.51.5

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 (757) hide show
  1. package/README.md +3 -3
  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.js +1 -13
  276. package/dist/components/treemap.js.map +1 -1
  277. package/dist/components/trigger-aria.js.map +1 -1
  278. package/dist/components/use-table-state.js +14 -11
  279. package/dist/components/use-table-state.js.map +1 -1
  280. package/dist/components/user-avatar.js +3 -26
  281. package/dist/components/user-avatar.js.map +1 -1
  282. package/dist/demo/demo-start.js +8 -4
  283. package/dist/demo/demo-start.js.map +1 -1
  284. package/dist/eslint/index.js +1 -1
  285. package/dist/feedback/feedback-attachment-labels.js.map +1 -1
  286. package/dist/feedback/feedback-attachment.js +1 -8
  287. package/dist/feedback/feedback-attachment.js.map +1 -1
  288. package/dist/feedback/feedback-capture.d.ts +1 -1
  289. package/dist/feedback/feedback-capture.js +3 -1
  290. package/dist/feedback/feedback-capture.js.map +1 -1
  291. package/dist/feedback/feedback-comment-thread.js +27 -13
  292. package/dist/feedback/feedback-comment-thread.js.map +1 -1
  293. package/dist/feedback/feedback-context.js +1 -4
  294. package/dist/feedback/feedback-context.js.map +1 -1
  295. package/dist/feedback/feedback-dialog.js.map +1 -1
  296. package/dist/feedback/feedback-inbox.js.map +1 -1
  297. package/dist/feedback/feedback-public-list.js +7 -1
  298. package/dist/feedback/feedback-public-list.js.map +1 -1
  299. package/dist/feedback/feedback-record.js +1 -5
  300. package/dist/feedback/feedback-record.js.map +1 -1
  301. package/dist/feedback/feedback-replies.js +25 -10
  302. package/dist/feedback/feedback-replies.js.map +1 -1
  303. package/dist/feedback/feedback-row-detail.js.map +1 -1
  304. package/dist/feedback/feedback-status-undo.js.map +1 -1
  305. package/dist/feedback/feedback-submit-dialog.js.map +1 -1
  306. package/dist/feedback/feedback-table.js +4 -1
  307. package/dist/feedback/feedback-table.js.map +1 -1
  308. package/dist/feedback/feedback-thread.js +2 -13
  309. package/dist/feedback/feedback-thread.js.map +1 -1
  310. package/dist/feedback/feedback-vocabulary.js.map +1 -1
  311. package/dist/feedback/feedback-vote-button.js.map +1 -1
  312. package/dist/hooks/use-anchored-rect.js.map +1 -1
  313. package/dist/hooks/use-document-title.js.map +1 -1
  314. package/dist/hooks/use-file-drop.js.map +1 -1
  315. package/dist/hooks/use-file-picker-labels.js.map +1 -1
  316. package/dist/hooks/use-file-picker.js.map +1 -1
  317. package/dist/hooks/use-focus-trap.js.map +1 -1
  318. package/dist/hooks/use-overlay-history.js +10 -5
  319. package/dist/hooks/use-overlay-history.js.map +1 -1
  320. package/dist/hooks/use-row-swipe.d.ts +1 -1
  321. package/dist/hooks/use-row-swipe.js +1 -6
  322. package/dist/hooks/use-row-swipe.js.map +1 -1
  323. package/dist/i18n/defaults.js +1 -4
  324. package/dist/i18n/defaults.js.map +1 -1
  325. package/dist/i18n/german.js +4 -1
  326. package/dist/i18n/german.js.map +1 -1
  327. package/dist/i18n/kit-labels.js +2 -8
  328. package/dist/i18n/kit-labels.js.map +1 -1
  329. package/dist/i18n/languages.js.map +1 -1
  330. package/dist/i18n/locales/en.js +4 -1
  331. package/dist/i18n/locales/en.js.map +2 -2
  332. package/dist/i18n/locales/es.js +4 -1
  333. package/dist/i18n/locales/es.js.map +1 -1
  334. package/dist/i18n/locales/fr.js +4 -1
  335. package/dist/i18n/locales/fr.js.map +1 -1
  336. package/dist/i18n/locales/hu.js +4 -1
  337. package/dist/i18n/locales/hu.js.map +1 -1
  338. package/dist/i18n/locales/it.js +4 -1
  339. package/dist/i18n/locales/it.js.map +1 -1
  340. package/dist/i18n/locales/zh.js.map +1 -1
  341. package/dist/i18n/plurals.js.map +1 -1
  342. package/dist/i18n/review.js +13 -7
  343. package/dist/i18n/review.js.map +1 -1
  344. package/dist/i18n/shared-labels.js.map +1 -1
  345. package/dist/index.d.ts +16 -16
  346. package/dist/index.js +40 -23
  347. package/dist/index.js.map +1 -1
  348. package/dist/landing/access.js +1 -4
  349. package/dist/landing/access.js.map +1 -1
  350. package/dist/landing/landing-sections.js +35 -38
  351. package/dist/landing/landing-sections.js.map +1 -1
  352. package/dist/landing/page-seo.js.map +1 -1
  353. package/dist/lib/calc.js.map +1 -1
  354. package/dist/lib/clipboard-minus.js.map +1 -1
  355. package/dist/lib/dates.js.map +1 -1
  356. package/dist/lib/decimal-marks.js.map +1 -1
  357. package/dist/lib/device-settings.js +2 -1
  358. package/dist/lib/device-settings.js.map +1 -1
  359. package/dist/lib/direction.js.map +1 -1
  360. package/dist/lib/iban.js.map +1 -1
  361. package/dist/lib/logger.js +1 -5
  362. package/dist/lib/logger.js.map +1 -1
  363. package/dist/lib/person-name.js.map +1 -1
  364. package/dist/lib/phone.js.map +1 -1
  365. package/dist/lib/qr-encode.js +344 -8
  366. package/dist/lib/qr-encode.js.map +1 -1
  367. package/dist/lib/session-refresh.js.map +1 -1
  368. package/dist/lib/table-text.js +15 -3
  369. package/dist/lib/table-text.js.map +1 -1
  370. package/dist/lib/text-match.d.ts +4 -0
  371. package/dist/lib/text-match.js.map +1 -1
  372. package/dist/lib/translation-review.js.map +1 -1
  373. package/dist/notifications/notification-inbox.js +63 -44
  374. package/dist/notifications/notification-inbox.js.map +1 -1
  375. package/dist/notifications/notification-parts.js.map +1 -1
  376. package/dist/notifications/notification-types-setting.js.map +1 -1
  377. package/dist/notifications/notifications-labels.js.map +1 -1
  378. package/dist/notifications/push-device-setting.js +6 -1
  379. package/dist/notifications/push-device-setting.js.map +1 -1
  380. package/dist/notifications/push-devices-setting.js.map +1 -1
  381. package/dist/notifications/push-worker.js.map +1 -1
  382. package/dist/notifications/quiet-hours-setting.js.map +1 -1
  383. package/dist/notifications/use-push-device.js +4 -1
  384. package/dist/notifications/use-push-device.js.map +1 -1
  385. package/dist/offline/pwa-update-prompt.d.ts +1 -1
  386. package/dist/offline/pwa-update-prompt.js +7 -1
  387. package/dist/offline/pwa-update-prompt.js.map +1 -1
  388. package/dist/offline/query-persistence.js.map +1 -1
  389. package/dist/offline.d.ts +1 -1
  390. package/dist/offline.js +6 -1
  391. package/dist/offline.js.map +1 -1
  392. package/dist/pay/pay.css +8 -1
  393. package/dist/rhf/fields.d.ts +1 -2
  394. package/dist/rhf/fields.js +1 -10
  395. package/dist/rhf/fields.js.map +1 -1
  396. package/dist/rhf/form-core.js +1 -4
  397. package/dist/rhf/form-core.js.map +1 -1
  398. package/dist/rhf/line-items.js.map +1 -1
  399. package/dist/rhf/use-rhf-wizard-step.js.map +1 -1
  400. package/dist/search/command-palette.js +71 -62
  401. package/dist/search/command-palette.js.map +1 -1
  402. package/dist/search/global-search.js +34 -5
  403. package/dist/search/global-search.js.map +1 -1
  404. package/dist/search/search-index.js.map +1 -1
  405. package/dist/settings/device-reset-setting.js +1 -6
  406. package/dist/settings/device-reset-setting.js.map +1 -1
  407. package/dist/settings/settings-heading.js.map +1 -1
  408. package/dist/settings/settings-layout.js +9 -20
  409. package/dist/settings/settings-layout.js.map +1 -1
  410. package/dist/settings/use-settings-route.js.map +1 -1
  411. package/dist/shell/app-shell.js +62 -31
  412. package/dist/shell/app-shell.js.map +1 -1
  413. package/dist/shell/auth-layout.js +1 -10
  414. package/dist/shell/auth-layout.js.map +1 -1
  415. package/dist/shell/dev-menu.js +12 -6
  416. package/dist/shell/dev-menu.js.map +1 -1
  417. package/dist/shell/option-switcher-menu.js.map +1 -1
  418. package/dist/shell/sync-status-indicator.js +7 -6
  419. package/dist/shell/sync-status-indicator.js.map +1 -1
  420. package/dist/shell/top-bar-parts-labels.js.map +1 -1
  421. package/dist/shell/topbar-action-menu.js.map +1 -1
  422. package/dist/shell/topbar-controls.js +1 -10
  423. package/dist/shell/topbar-controls.js.map +1 -1
  424. package/dist/shell/tour-menu.js +9 -1
  425. package/dist/shell/tour-menu.js.map +1 -1
  426. package/dist/sync/db.js.map +1 -1
  427. package/dist/sync/engine.js +24 -6
  428. package/dist/sync/engine.js.map +1 -1
  429. package/dist/sync.d.ts +2 -2
  430. package/dist/sync.js +7 -1
  431. package/dist/sync.js.map +1 -1
  432. package/dist/testing/css-variables.js.map +1 -1
  433. package/dist/testing/index.d.ts +1 -1
  434. package/dist/testing/index.js +1 -3
  435. package/dist/testing/index.js.map +1 -1
  436. package/dist/testing/react.js.map +1 -1
  437. package/dist/testing/viewport.js +7 -4
  438. package/dist/testing/viewport.js.map +1 -1
  439. package/dist/theme/contrast-tokens.js +13 -2
  440. package/dist/theme/contrast-tokens.js.map +1 -1
  441. package/dist/theme/palette-derive.d.ts +1 -1
  442. package/dist/theme/palette-derive.js +18 -29
  443. package/dist/theme/palette-derive.js.map +1 -1
  444. package/dist/theme/palette-presets.js.map +1 -1
  445. package/dist/theme/palette-store.js.map +1 -1
  446. package/dist/theme/text-size.js.map +1 -1
  447. package/dist/theme/theme-store.js +1 -3
  448. package/dist/theme/theme-store.js.map +1 -1
  449. package/dist/tour/tour-catalogue.js.map +1 -1
  450. package/dist/tour/tour-dock.js +5 -1
  451. package/dist/tour/tour-dock.js.map +1 -1
  452. package/dist/tour/tour-engine.js +1 -4
  453. package/dist/tour/tour-engine.js.map +1 -1
  454. package/dist/tour/tour.js +21 -12
  455. package/dist/tour/tour.js.map +1 -1
  456. package/dist/tour/use-tour-progress.js.map +1 -1
  457. package/dist/tour/use-tour-url-sync.js.map +1 -1
  458. package/dist/wizard/stepper-nav.js +3 -24
  459. package/dist/wizard/stepper-nav.js.map +1 -1
  460. package/dist/wizard/types.js.map +1 -1
  461. package/dist/wizard/use-wizard.js +24 -28
  462. package/dist/wizard/use-wizard.js.map +1 -1
  463. package/dist/wizard/validation.js.map +1 -1
  464. package/dist/wizard/wizard-context.js.map +1 -1
  465. package/dist/wizard/wizard-step.d.ts +1 -1
  466. package/dist/wizard/wizard-step.js +1 -8
  467. package/dist/wizard/wizard-step.js.map +1 -1
  468. package/dist/wizard/wizard-summary.js.map +1 -1
  469. package/package.json +5 -2
  470. package/src/account/account-settings-labels.ts +1 -2
  471. package/src/account/account-settings.tsx +11 -17
  472. package/src/account/delete-account-setting.tsx +1 -6
  473. package/src/account/email-change-setting-labels.ts +1 -2
  474. package/src/account/email-change-setting.tsx +3 -1
  475. package/src/account/passkeys-setting.tsx +1 -3
  476. package/src/account/sessions-setting.tsx +4 -2
  477. package/src/admin/admin-action-confirm.tsx +4 -7
  478. package/src/admin/admin-action-log.tsx +29 -29
  479. package/src/admin/admin-area-labels.ts +4 -1
  480. package/src/admin/admin-overview.tsx +8 -2
  481. package/src/admin/admin-sections.tsx +3 -1
  482. package/src/admin/admin-tool-links.tsx +7 -1
  483. package/src/admin/invitations-panel.tsx +5 -11
  484. package/src/admin/mail-test-card.tsx +1 -2
  485. package/src/admin/reviewer-scope-editor.tsx +4 -9
  486. package/src/admin/role-select.tsx +4 -2
  487. package/src/admin/user-roster.tsx +2 -11
  488. package/src/auth/accept-invitation.tsx +1 -7
  489. package/src/auth/auth-errors.ts +1 -6
  490. package/src/auth/forgot-password-form.tsx +2 -7
  491. package/src/auth/register-form.tsx +7 -8
  492. package/src/auth/reset-password-form.tsx +2 -5
  493. package/src/auth/sign-in-form.tsx +15 -14
  494. package/src/auth/verify-email.tsx +2 -7
  495. package/src/billing/billing-banner.tsx +3 -7
  496. package/src/billing/billing-labels.ts +6 -4
  497. package/src/billing/checkout-processing.ts +0 -1
  498. package/src/billing/plan-card.tsx +9 -8
  499. package/src/billing/plan-limit-toast.tsx +1 -2
  500. package/src/billing/plan-limit.ts +1 -2
  501. package/src/billing/plan-price.ts +1 -4
  502. package/src/billing/plan-switch.tsx +1 -2
  503. package/src/billing/subscription-actions.tsx +5 -2
  504. package/src/components/account-chips.tsx +1 -7
  505. package/src/components/alert-banner.tsx +2 -8
  506. package/src/components/amount-input.tsx +206 -178
  507. package/src/components/authed-image.tsx +7 -4
  508. package/src/components/autocomplete.tsx +7 -9
  509. package/src/components/bulk-action-bar.tsx +2 -7
  510. package/src/components/button-group.tsx +1 -2
  511. package/src/components/button-look.ts +6 -17
  512. package/src/components/button.tsx +1 -4
  513. package/src/components/calculator.tsx +6 -9
  514. package/src/components/calendar-heatmap.tsx +5 -10
  515. package/src/components/card.tsx +9 -13
  516. package/src/components/chart-zoom-core.tsx +6 -33
  517. package/src/components/chart.tsx +8 -31
  518. package/src/components/checkbox-group.tsx +1 -4
  519. package/src/components/chip-input.tsx +6 -6
  520. package/src/components/chip.tsx +14 -26
  521. package/src/components/choice-card.tsx +4 -18
  522. package/src/components/column-mapper-labels.ts +3 -10
  523. package/src/components/column-mapper.tsx +33 -122
  524. package/src/components/combobox-core.tsx +12 -42
  525. package/src/components/combobox.tsx +2 -6
  526. package/src/components/confirm-dialog.tsx +1 -3
  527. package/src/components/copy-button.tsx +2 -4
  528. package/src/components/country-select.tsx +9 -21
  529. package/src/components/currency-option-list.tsx +13 -14
  530. package/src/components/currency-select.tsx +2 -7
  531. package/src/components/danger-confirm.tsx +8 -9
  532. package/src/components/data-table-cells.tsx +1 -2
  533. package/src/components/data-table-column-settings.tsx +1 -3
  534. package/src/components/data-table-filter-popover.tsx +5 -19
  535. package/src/components/data-table-filters.ts +1 -6
  536. package/src/components/data-table-fit.ts +1 -3
  537. package/src/components/data-table-groups.tsx +3 -1
  538. package/src/components/data-table-head.tsx +27 -45
  539. package/src/components/data-table-mobile.tsx +99 -108
  540. package/src/components/data-table-pagination.tsx +2 -6
  541. package/src/components/data-table-row-actions.tsx +25 -24
  542. package/src/components/data-table-row.tsx +16 -17
  543. package/src/components/data-table-shared.tsx +10 -16
  544. package/src/components/data-table-sort.ts +1 -2
  545. package/src/components/data-table-virtual.ts +9 -4
  546. package/src/components/data-table.tsx +489 -501
  547. package/src/components/date-picker.tsx +1 -7
  548. package/src/components/date-range-picker.tsx +3 -13
  549. package/src/components/description-list.tsx +7 -13
  550. package/src/components/dialog-frame.tsx +12 -3
  551. package/src/components/disclosure.tsx +8 -12
  552. package/src/components/dropdown.tsx +3 -11
  553. package/src/components/empty-state.tsx +1 -3
  554. package/src/components/entity-combobox.tsx +2 -6
  555. package/src/components/error-boundary.tsx +7 -7
  556. package/src/components/field-base.tsx +8 -14
  557. package/src/components/field-parts.tsx +12 -23
  558. package/src/components/field-sync.tsx +7 -11
  559. package/src/components/file-button.tsx +7 -3
  560. package/src/components/file-dropzone.tsx +7 -12
  561. package/src/components/floating-panel.tsx +44 -51
  562. package/src/components/focus-ring.ts +1 -2
  563. package/src/components/form-actions.tsx +1 -4
  564. package/src/components/grouped-picker.tsx +6 -8
  565. package/src/components/hover-menu.tsx +1 -4
  566. package/src/components/iban-input-labels.ts +1 -2
  567. package/src/components/icon-button.tsx +46 -48
  568. package/src/components/icon-picker.tsx +4 -17
  569. package/src/components/image-grid.tsx +1 -6
  570. package/src/components/inline-edit-field.tsx +1 -5
  571. package/src/components/inline-entity-combobox.tsx +6 -21
  572. package/src/components/input.tsx +14 -2
  573. package/src/components/jump-calendar.tsx +2 -6
  574. package/src/components/legal-labels.ts +1 -2
  575. package/src/components/legal-page.tsx +18 -7
  576. package/src/components/legal.tsx +14 -5
  577. package/src/components/lightbox.tsx +1 -3
  578. package/src/components/line-items.tsx +7 -15
  579. package/src/components/list.tsx +29 -25
  580. package/src/components/measured-grid.tsx +8 -30
  581. package/src/components/menu-item.tsx +1 -3
  582. package/src/components/mini-calendar.tsx +129 -159
  583. package/src/components/money-field.tsx +4 -2
  584. package/src/components/month-picker.tsx +14 -21
  585. package/src/components/multi-entity-combobox.tsx +6 -26
  586. package/src/components/multi-select.tsx +5 -9
  587. package/src/components/nav-pills.tsx +10 -2
  588. package/src/components/number-field.tsx +18 -15
  589. package/src/components/number-input.tsx +3 -19
  590. package/src/components/numpad-sheet.tsx +9 -13
  591. package/src/components/one-time-code-input.tsx +6 -11
  592. package/src/components/page-contents.tsx +2 -9
  593. package/src/components/page-header.tsx +5 -10
  594. package/src/components/password-strength-labels.ts +1 -2
  595. package/src/components/password-strength.tsx +6 -9
  596. package/src/components/phone-input.tsx +2 -13
  597. package/src/components/picker-sheet.tsx +2 -5
  598. package/src/components/pie-chart.tsx +6 -12
  599. package/src/components/popover.tsx +2 -1
  600. package/src/components/progress-bar.tsx +16 -25
  601. package/src/components/qr-code.tsx +2 -9
  602. package/src/components/row-actions.tsx +9 -1
  603. package/src/components/search-field.tsx +4 -5
  604. package/src/components/select.tsx +2 -10
  605. package/src/components/separator.tsx +1 -5
  606. package/src/components/series-chart-axes.ts +5 -5
  607. package/src/components/series-chart-budget.ts +1 -4
  608. package/src/components/series-chart-ticks.ts +1 -4
  609. package/src/components/series-chart.tsx +43 -83
  610. package/src/components/settings-fields.tsx +20 -15
  611. package/src/components/share-card.tsx +6 -14
  612. package/src/components/sign-chip.tsx +16 -16
  613. package/src/components/signature-pad.tsx +21 -13
  614. package/src/components/signed-amount.tsx +6 -14
  615. package/src/components/skeleton.tsx +2 -13
  616. package/src/components/slider.tsx +9 -20
  617. package/src/components/sparkline.tsx +2 -13
  618. package/src/components/stat-tile.tsx +13 -24
  619. package/src/components/swatch-picker.tsx +8 -3
  620. package/src/components/swipeable-row.tsx +2 -11
  621. package/src/components/table-skeleton.tsx +4 -1
  622. package/src/components/table.tsx +12 -8
  623. package/src/components/tabs.tsx +24 -39
  624. package/src/components/text-link.tsx +6 -6
  625. package/src/components/text.tsx +1 -2
  626. package/src/components/tile-radio.tsx +6 -19
  627. package/src/components/time-input.tsx +4 -5
  628. package/src/components/toast.tsx +3 -12
  629. package/src/components/toggle-group.tsx +9 -9
  630. package/src/components/toggle-legend.tsx +4 -16
  631. package/src/components/tooltip.tsx +9 -48
  632. package/src/components/translation-review-editor.tsx +4 -4
  633. package/src/components/translation-review-parts.tsx +7 -1
  634. package/src/components/translation-review.tsx +15 -16
  635. package/src/components/tree-view.tsx +17 -20
  636. package/src/components/treemap.tsx +3 -15
  637. package/src/components/trigger-aria.ts +1 -4
  638. package/src/components/use-table-state.ts +16 -17
  639. package/src/components/user-avatar.tsx +4 -21
  640. package/src/demo/demo-start.tsx +8 -4
  641. package/src/feedback/feedback-attachment-labels.ts +2 -1
  642. package/src/feedback/feedback-attachment.tsx +16 -29
  643. package/src/feedback/feedback-capture.ts +3 -1
  644. package/src/feedback/feedback-comment-thread.tsx +9 -6
  645. package/src/feedback/feedback-context.tsx +1 -4
  646. package/src/feedback/feedback-dialog.tsx +3 -4
  647. package/src/feedback/feedback-inbox.tsx +3 -9
  648. package/src/feedback/feedback-public-list.tsx +7 -1
  649. package/src/feedback/feedback-record.ts +6 -14
  650. package/src/feedback/feedback-replies.tsx +10 -5
  651. package/src/feedback/feedback-row-detail.tsx +2 -5
  652. package/src/feedback/feedback-status-undo.ts +1 -4
  653. package/src/feedback/feedback-submit-dialog.tsx +4 -4
  654. package/src/feedback/feedback-table.tsx +12 -8
  655. package/src/feedback/feedback-thread.tsx +4 -16
  656. package/src/feedback/feedback-vocabulary.ts +72 -82
  657. package/src/feedback/feedback-vote-button.tsx +9 -8
  658. package/src/hooks/use-anchored-rect.ts +1 -4
  659. package/src/hooks/use-document-title.ts +3 -1
  660. package/src/hooks/use-file-drop.ts +1 -3
  661. package/src/hooks/use-file-picker-labels.ts +1 -2
  662. package/src/hooks/use-file-picker.tsx +1 -5
  663. package/src/hooks/use-focus-trap.ts +1 -2
  664. package/src/hooks/use-overlay-history.ts +10 -5
  665. package/src/hooks/use-row-swipe.ts +1 -6
  666. package/src/i18n/defaults.ts +1 -4
  667. package/src/i18n/german.ts +33 -49
  668. package/src/i18n/kit-labels.tsx +5 -20
  669. package/src/i18n/languages.ts +2 -8
  670. package/src/i18n/locales/en.ts +11 -31
  671. package/src/i18n/locales/es.ts +35 -49
  672. package/src/i18n/locales/fr.ts +34 -51
  673. package/src/i18n/locales/hu.ts +26 -37
  674. package/src/i18n/locales/it.ts +35 -52
  675. package/src/i18n/locales/zh.ts +14 -32
  676. package/src/i18n/plurals.ts +4 -1
  677. package/src/i18n/review.ts +18 -7
  678. package/src/i18n/shared-labels.ts +1 -2
  679. package/src/index.ts +106 -32
  680. package/src/landing/access.ts +2 -7
  681. package/src/landing/landing-sections.tsx +14 -15
  682. package/src/landing/page-seo.ts +1 -3
  683. package/src/lib/calc.ts +4 -1
  684. package/src/lib/clipboard-minus.ts +4 -1
  685. package/src/lib/dates.ts +2 -10
  686. package/src/lib/decimal-marks.ts +1 -3
  687. package/src/lib/device-settings.ts +2 -1
  688. package/src/lib/direction.ts +1 -3
  689. package/src/lib/iban.ts +89 -9
  690. package/src/lib/logger.ts +1 -5
  691. package/src/lib/person-name.ts +1 -3
  692. package/src/lib/phone.ts +5 -8
  693. package/src/lib/qr-encode.ts +32 -8
  694. package/src/lib/session-refresh.ts +5 -6
  695. package/src/lib/table-text.ts +24 -6
  696. package/src/lib/text-match.ts +15 -3
  697. package/src/lib/translation-review.ts +1 -3
  698. package/src/notifications/notification-inbox.tsx +17 -4
  699. package/src/notifications/notification-parts.tsx +1 -2
  700. package/src/notifications/notification-types-setting.tsx +19 -18
  701. package/src/notifications/notifications-labels.ts +1 -2
  702. package/src/notifications/push-device-setting.tsx +7 -1
  703. package/src/notifications/push-devices-setting.tsx +7 -3
  704. package/src/notifications/push-worker.ts +10 -2
  705. package/src/notifications/quiet-hours-setting.tsx +4 -1
  706. package/src/notifications/use-push-device.ts +4 -1
  707. package/src/offline/pwa-update-prompt.tsx +7 -1
  708. package/src/offline/query-persistence.ts +9 -6
  709. package/src/offline.ts +6 -1
  710. package/src/rhf/fields.tsx +50 -19
  711. package/src/rhf/form-core.tsx +2 -6
  712. package/src/rhf/line-items.tsx +5 -7
  713. package/src/rhf/use-rhf-wizard-step.ts +3 -12
  714. package/src/search/command-palette.tsx +15 -23
  715. package/src/search/global-search.tsx +38 -8
  716. package/src/search/search-index.ts +5 -1
  717. package/src/settings/device-reset-setting.tsx +5 -8
  718. package/src/settings/settings-heading.tsx +3 -1
  719. package/src/settings/settings-layout.tsx +6 -13
  720. package/src/settings/use-settings-route.ts +4 -3
  721. package/src/shell/app-shell.tsx +48 -24
  722. package/src/shell/auth-layout.tsx +1 -6
  723. package/src/shell/dev-menu.tsx +12 -6
  724. package/src/shell/option-switcher-menu.tsx +1 -3
  725. package/src/shell/sync-status-indicator.tsx +14 -12
  726. package/src/shell/top-bar-parts-labels.ts +1 -3
  727. package/src/shell/topbar-action-menu.tsx +9 -8
  728. package/src/shell/topbar-controls.tsx +5 -19
  729. package/src/shell/tour-menu.tsx +9 -1
  730. package/src/sync/db.ts +5 -1
  731. package/src/sync/engine.ts +44 -12
  732. package/src/sync.ts +16 -2
  733. package/src/testing/css-variables.ts +1 -2
  734. package/src/testing/index.ts +1 -6
  735. package/src/testing/react.ts +1 -2
  736. package/src/testing/viewport.ts +9 -9
  737. package/src/theme/contrast-tokens.ts +13 -2
  738. package/src/theme/palette-derive.ts +24 -50
  739. package/src/theme/palette-presets.ts +0 -1
  740. package/src/theme/palette-store.ts +1 -4
  741. package/src/theme/text-size.ts +1 -1
  742. package/src/theme/theme-store.ts +2 -6
  743. package/src/tour/tour-catalogue.tsx +4 -2
  744. package/src/tour/tour-dock.ts +5 -1
  745. package/src/tour/tour-engine.ts +2 -6
  746. package/src/tour/tour.tsx +28 -12
  747. package/src/tour/use-tour-progress.ts +8 -2
  748. package/src/tour/use-tour-url-sync.ts +3 -1
  749. package/src/vite-env.d.ts +1 -4
  750. package/src/wizard/stepper-nav.tsx +10 -35
  751. package/src/wizard/types.ts +1 -4
  752. package/src/wizard/use-wizard.ts +28 -43
  753. package/src/wizard/validation.ts +1 -5
  754. package/src/wizard/wizard-context.tsx +2 -6
  755. package/src/wizard/wizard-step.tsx +1 -8
  756. package/src/wizard/wizard-summary.tsx +2 -6
  757. package/tokens.css +393 -152
@@ -25,15 +25,7 @@ export { DEFAULT_PROGRESS_BAR_LABELS };
25
25
  * "careful" about a figure that is neither. keksdose's report meters (food-group-card,
26
26
  * drilldown-modal) sit beside amounts that are already in the money colours.
27
27
  */
28
- export type ProgressBarTone =
29
- | "brand"
30
- | "neutral"
31
- | "success"
32
- | "warning"
33
- | "danger"
34
- | "info"
35
- | "income"
36
- | "expense";
28
+ export type ProgressBarTone = "brand" | "neutral" | "success" | "warning" | "danger" | "info" | "income" | "expense";
37
29
  /**
38
30
  * Track heights: `sm` 4px, `slim` 6px, `md` 8px, `lg` 12px. `slim` is a word and not a
39
31
  * letter because the letters are taken in order — an `xs` at 6px would be THICKER than
@@ -340,8 +332,7 @@ export function ProgressBar({
340
332
  : text;
341
333
  })
342
334
  : [];
343
- const current =
344
- partTotal ?? (value === undefined || !Number.isFinite(value) ? (meter ? min : undefined) : value);
335
+ const current = partTotal ?? (value === undefined || !Number.isFinite(value) ? (meter ? min : undefined) : value);
345
336
  const indeterminate = current === undefined;
346
337
  const clamped = indeterminate ? undefined : Math.min(max, Math.max(min, current));
347
338
  const fraction = clamped === undefined || span <= 0 ? 0 : (clamped - min) / span;
@@ -352,14 +343,11 @@ export function ProgressBar({
352
343
  ? new Intl.ListFormat(kitLocale, { style: "short", type: "unit" }).format(partTexts)
353
344
  : valueText;
354
345
 
355
- const over =
356
- overage && !stacked && value !== undefined && Number.isFinite(value) && value > max ? value - max : 0;
346
+ const over = overage && !stacked && value !== undefined && Number.isFinite(value) && value > max ? value - max : 0;
357
347
  const overageNode =
358
348
  over > 0 ? (
359
349
  <p id={`${hintId}-over`} data-part="overage" data-private={priv} className="mt-1 text-xs text-danger">
360
- {typeof overage === "function"
361
- ? overage(over)
362
- : text.overLimit(new Intl.NumberFormat(kitLocale).format(over))}
350
+ {typeof overage === "function" ? overage(over) : text.overLimit(new Intl.NumberFormat(kitLocale).format(over))}
363
351
  </p>
364
352
  ) : null;
365
353
  const describedBy =
@@ -380,7 +368,12 @@ export function ProgressBar({
380
368
  {showValue && valueText !== undefined && (
381
369
  // Hidden: the same words are the bar's aria-valuetext, and reading them
382
370
  // twice in a row is noise.
383
- <span aria-hidden data-part="value" data-private={priv} className="ms-auto shrink-0 tabular-nums text-muted">
371
+ <span
372
+ aria-hidden
373
+ data-part="value"
374
+ data-private={priv}
375
+ className="ms-auto shrink-0 tabular-nums text-muted"
376
+ >
384
377
  {valueText}
385
378
  </span>
386
379
  )}
@@ -443,7 +436,10 @@ export function ProgressBar({
443
436
  data-part="fill"
444
437
  // Block flow starts at the inline start, so a plain width fills from the
445
438
  // right under `dir="rtl"` with nothing extra.
446
- className={cn("h-full rounded-full transition-[width] duration-300 motion-reduce:transition-none", FILL[tone])}
439
+ className={cn(
440
+ "h-full rounded-full transition-[width] duration-300 motion-reduce:transition-none",
441
+ FILL[tone],
442
+ )}
447
443
  style={{ width: `${fraction * 100}%` }}
448
444
  />
449
445
  )}
@@ -454,10 +450,7 @@ export function ProgressBar({
454
450
  <li key={seg.key ?? i} className="flex items-center gap-2">
455
451
  <span
456
452
  aria-hidden
457
- className={cn(
458
- "size-2.5 shrink-0 rounded-sm",
459
- fills[i],
460
- )}
453
+ className={cn("size-2.5 shrink-0 rounded-sm", fills[i])}
461
454
  style={{ backgroundColor: seg.className ? undefined : seg.color }}
462
455
  />
463
456
  {seg.label != null && (
@@ -470,9 +463,7 @@ export function ProgressBar({
470
463
  data-private={priv}
471
464
  className={cn(
472
465
  "ms-auto shrink-0 text-xs tabular-nums",
473
- toneTextClass(
474
- (typeof legendTone === "function" ? legendTone(seg, i) : legendTone) ?? "muted",
475
- ),
466
+ toneTextClass((typeof legendTone === "function" ? legendTone(seg, i) : legendTone) ?? "muted"),
476
467
  )}
477
468
  >
478
469
  {legendValue ? legendValue(seg, formatPart(seg.value), i) : formatPart(seg.value)}
@@ -32,14 +32,7 @@ export interface QrCodeProps extends Omit<ComponentPropsWithRef<"svg">, "childre
32
32
  * A value too long for any QR version (≈2.9 kB) renders nothing rather than throwing
33
33
  * in render.
34
34
  */
35
- export function QrCode({
36
- value,
37
- label,
38
- errorCorrection = "M",
39
- margin = 4,
40
- className,
41
- ...rest
42
- }: QrCodeProps) {
35
+ export function QrCode({ value, label, errorCorrection = "M", margin = 4, className, ...rest }: QrCodeProps) {
43
36
  const path = useMemo(() => {
44
37
  try {
45
38
  const { modules, size } = encodeQr(value, { errorCorrection });
@@ -47,7 +40,7 @@ export function QrCode({
47
40
  // commands rather than one <rect> per module.
48
41
  let d = "";
49
42
  for (let y = 0; y < size; y++) {
50
- for (let x = 0; x < size; ) {
43
+ for (let x = 0; x < size;) {
51
44
  if (!modules[y][x]) {
52
45
  x++;
53
46
  continue;
@@ -471,7 +471,15 @@ function useActionHref(action: RowAction): string | undefined {
471
471
  }
472
472
 
473
473
  /** One entry of the "⋯" menu: the words, as a link for an `href`, else a button. */
474
- function MenuAction({ action, close, run }: { action: RowAction; close: () => void; run: (action: RowAction) => void }) {
474
+ function MenuAction({
475
+ action,
476
+ close,
477
+ run,
478
+ }: {
479
+ action: RowAction;
480
+ close: () => void;
481
+ run: (action: RowAction) => void;
482
+ }) {
475
483
  const href = useActionHref(action);
476
484
  const glyph = glyphOf(action.icon);
477
485
  const glyphTone = action.tone === undefined ? undefined : MENU_GLYPH_TONE[action.tone];
@@ -6,11 +6,10 @@ import { FIELD_BASE, FIELD_TOUCH_TEXT } from "./field-base";
6
6
  import { mergeRefs } from "./field-parts";
7
7
  import { DEFAULT_COMMON_LABELS, useKitLabels } from "../i18n/kit-labels";
8
8
 
9
- interface SearchFieldOwnProps
10
- extends Omit<
11
- InputHTMLAttributes<HTMLInputElement>,
12
- "value" | "onChange" | "type" | "aria-label"
13
- > {
9
+ interface SearchFieldOwnProps extends Omit<
10
+ InputHTMLAttributes<HTMLInputElement>,
11
+ "value" | "onChange" | "type" | "aria-label"
12
+ > {
14
13
  value: string;
15
14
  /** The typed text. Emitted as a plain string, not an event: every caller of the
16
15
  * four this replaced wanted the string, and one of them held it in a URL param
@@ -157,9 +157,7 @@ export function Select(props: SelectProps) {
157
157
  // account type became read-only and still looked exactly like a picker). A locked
158
158
  // one has no menu either.
159
159
  const chevron =
160
- rest.disabled || listBox || locked ? null : (
161
- <FieldChevron className={small ? "end-1.5 size-3.5" : undefined} />
162
- );
160
+ rest.disabled || listBox || locked ? null : <FieldChevron className={small ? "end-1.5 size-3.5" : undefined} />;
163
161
  // `pe-9` is the room the chevron takes; a list box has none to make room for.
164
162
  //
165
163
  // A list box's height is `size` rows plus its padding, but its rows are clipped at
@@ -263,13 +261,7 @@ export function Select(props: SelectProps) {
263
261
  return (
264
262
  <FieldGroup errorEl={below} reserve={reserve}>
265
263
  {withReason(
266
- <FloatingField
267
- className={boxClass}
268
- htmlFor={fieldId}
269
- label={label}
270
- staticLabel
271
- hint={hint}
272
- >
264
+ <FloatingField className={boxClass} htmlFor={fieldId} label={label} staticLabel hint={hint}>
273
265
  <select
274
266
  ref={ref}
275
267
  id={fieldId}
@@ -27,11 +27,7 @@ export function Separator({ orientation = "horizontal", decorative = false, clas
27
27
  role={decorative ? "none" : "separator"}
28
28
  aria-orientation={!decorative && vertical ? "vertical" : undefined}
29
29
  data-orientation={orientation}
30
- className={cn(
31
- "shrink-0 bg-[var(--border)]",
32
- vertical ? "w-px self-stretch" : "h-px w-full",
33
- className,
34
- )}
30
+ className={cn("shrink-0 bg-[var(--border)]", vertical ? "w-px self-stretch" : "h-px w-full", className)}
35
31
  />
36
32
  );
37
33
  }
@@ -59,7 +59,10 @@ export function tiltedTickBand(labels: readonly string[], angle: number, scale =
59
59
  const rad = (Math.abs(angle) * Math.PI) / 180;
60
60
  const longest = Math.max(0, ...labels.map((label) => label.length)) * TICK_CHAR_WIDTH * scale;
61
61
  const band = Math.sin(rad) * longest + Math.cos(rad) * TICK_LINE_HEIGHT * scale + TICK_GAP;
62
- return Math.min(Math.round(MAX_TILTED_TICK_BAND * scale), Math.max(Math.ceil(LEVEL_TICK_BAND * scale), Math.ceil(band)));
62
+ return Math.min(
63
+ Math.round(MAX_TILTED_TICK_BAND * scale),
64
+ Math.max(Math.ceil(LEVEL_TICK_BAND * scale), Math.ceil(band)),
65
+ );
63
66
  }
64
67
 
65
68
  /** The width the ticks of a y axis get when a caller does not say, in px at Normal. */
@@ -201,10 +204,7 @@ export function anchoredBand(extent: readonly [number, number] | undefined): [nu
201
204
  * it in its neighbour's colour on each click. Resolving the colours on the full list
202
205
  * and filtering after keeps each series in the colour its legend entry shows.
203
206
  */
204
- export function visibleSeries(
205
- series: readonly SeriesChartSeries[],
206
- hidden: ReadonlySet<string>,
207
- ): SeriesChartSeries[] {
207
+ export function visibleSeries(series: readonly SeriesChartSeries[], hidden: ReadonlySet<string>): SeriesChartSeries[] {
208
208
  return series
209
209
  .map((entry, index) => ({ ...entry, color: entry.color ?? paletteFor(index) }))
210
210
  .filter((entry) => !hidden.has(entry.key));
@@ -59,10 +59,7 @@ const sideOf = (axis: BudgetAxis) => axis.orientation ?? "left";
59
59
  * stays), then the rest in declaration order, until the cap. Per side, that is simply the
60
60
  * first `left` left-hand axes and the first `right` right-hand ones.
61
61
  */
62
- export function budgetedAxes(
63
- axes: readonly BudgetAxis[],
64
- budget: SeriesChartAxisBudget | undefined,
65
- ): string[] {
62
+ export function budgetedAxes(axes: readonly BudgetAxis[], budget: SeriesChartAxisBudget | undefined): string[] {
66
63
  if (budget === undefined) return [];
67
64
  const visible = axes.filter((axis) => !axis.hide);
68
65
  if (typeof budget === "number") {
@@ -90,10 +90,7 @@ export function integerTicks(
90
90
  * third to ninth month. A tick belongs on every whole slot inside it, and on nothing in
91
91
  * between: there is no month 2.5. Recharts' `minTickGap` thins them where they crowd.
92
92
  */
93
- export function categoryTicks(
94
- domain: readonly [number, number] | undefined,
95
- count: number,
96
- ): number[] | undefined {
93
+ export function categoryTicks(domain: readonly [number, number] | undefined, count: number): number[] | undefined {
97
94
  if (!domain || !(count > 0)) return undefined;
98
95
  const first = Math.max(0, Math.ceil(domain[0] - 1e-6));
99
96
  const last = Math.min(count - 1, Math.floor(domain[1] + 1e-6));
@@ -67,7 +67,14 @@ import {
67
67
  } from "./chart-zoom-core";
68
68
  import { STEP_DASH, strokeDash, type LegendEntry } from "./toggle-legend";
69
69
  import { DEFAULT_SERIES_CHART_LABELS, type SeriesChartLabels } from "./series-chart-labels";
70
- import { categoryTicks, integerTicks, niceTicks, tickTarget, timeTicksWithUnit, type TimeTickUnit } from "./series-chart-ticks";
70
+ import {
71
+ categoryTicks,
72
+ integerTicks,
73
+ niceTicks,
74
+ tickTarget,
75
+ timeTicksWithUnit,
76
+ type TimeTickUnit,
77
+ } from "./series-chart-ticks";
71
78
  // The tick module stays internal; the one type of it a public prop names is re-exported.
72
79
  export type { TimeTickUnit } from "./series-chart-ticks";
73
80
  import { autoAxisBudget, axisUnit, budgetedAxes, type SeriesChartAxisBudget } from "./series-chart-budget";
@@ -233,9 +240,7 @@ export type SeriesChartXValue = number | string | Date;
233
240
 
234
241
  /** Ticks a caller decides — a list, or a function of the domain on show, so a zoom
235
242
  * window gets ticks from the same rule instead of none. */
236
- export type SeriesChartTickValues<T> =
237
- | readonly T[]
238
- | ((domain: [number, number]) => readonly T[] | undefined);
243
+ export type SeriesChartTickValues<T> = readonly T[] | ((domain: [number, number]) => readonly T[] | undefined);
239
244
 
240
245
  interface SeriesChartAxisShape {
241
246
  id: string;
@@ -312,8 +317,7 @@ interface SeriesChartAxisShape {
312
317
  * pair, whose neighbour already said it). A HIDDEN axis scales its lines and draws
313
318
  * nothing, so there is nowhere for a title to go.
314
319
  */
315
- export type SeriesChartAxis = SeriesChartAxisShape &
316
- ({ title: string; hide?: false } | { title?: string; hide: true });
320
+ export type SeriesChartAxis = SeriesChartAxisShape & ({ title: string; hide?: false } | { title?: string; hide: true });
317
321
 
318
322
  /**
319
323
  * What a tick or the tooltip heading of the abscissa is handed besides its position —
@@ -408,7 +412,6 @@ export interface SeriesChartX {
408
412
  /** Where the tooltip goes — see {@link SeriesChartTooltip.placement}. */
409
413
  export type SeriesChartTooltipPlacement = ChartTooltipPlacement;
410
414
 
411
-
412
415
  /**
413
416
  * The placement a chart actually uses: its own, else the provider's, else `"cursor"`;
414
417
  * `"auto"` is `"above"` on a phone (`phone`: below `sm`) and `"cursor"` from `sm` up.
@@ -479,15 +482,7 @@ export interface SeriesChartSpan {
479
482
  /** The colours a reference or a marker can take by name — the kit's semantic tokens,
480
483
  * so a threshold reads the same on every chart and flips with the theme. */
481
484
  export type SeriesChartTone =
482
- | "muted"
483
- | "brand"
484
- | "income"
485
- | "expense"
486
- | "net"
487
- | "success"
488
- | "warning"
489
- | "danger"
490
- | "info";
485
+ "muted" | "brand" | "income" | "expense" | "net" | "success" | "warning" | "danger" | "info";
491
486
 
492
487
  const TONE_COLOR: Record<SeriesChartTone, string> = {
493
488
  muted: "var(--text-muted)",
@@ -806,9 +801,7 @@ interface PointStop {
806
801
  function focusedBarShape(index: number) {
807
802
  return function FocusedBar(props: BarShapeProps) {
808
803
  const focused = props.originalDataIndex === index;
809
- return (
810
- <Rectangle {...props} {...(focused ? { stroke: "var(--text-primary)", strokeWidth: 2 } : {})} />
811
- );
804
+ return <Rectangle {...props} {...(focused ? { stroke: "var(--text-primary)", strokeWidth: 2 } : {})} />;
812
805
  };
813
806
  }
814
807
 
@@ -826,13 +819,7 @@ const REFERENCE_LABEL_SIZE = 10;
826
819
  * the card — "over the c" on a phone. The width is measured once drawn; the first
827
820
  * frame (and a DOM without layout) uses a 0.6em-per-character estimate, which errs wide.
828
821
  */
829
- function MarkerLabel({
830
- viewBox,
831
- value,
832
- }: {
833
- viewBox?: { x?: number; y?: number; width?: number };
834
- value?: ReactNode;
835
- }) {
822
+ function MarkerLabel({ viewBox, value }: { viewBox?: { x?: number; y?: number; width?: number }; value?: ReactNode }) {
836
823
  const plot = usePlotArea();
837
824
  const ref = useRef<SVGTextElement>(null);
838
825
  const [measured, setMeasured] = useState<number>();
@@ -1060,12 +1047,7 @@ function SeriesPlot({
1060
1047
  ? []
1061
1048
  : budgetedAxes(
1062
1049
  afterCap,
1063
- autoAxisBudget(
1064
- afterCap,
1065
- width,
1066
- (axis) => axisBandWidth(axis.width, Boolean(axis.title), scale),
1067
- scale,
1068
- ),
1050
+ autoAxisBudget(afterCap, width, (axis) => axisBandWidth(axis.width, Boolean(axis.title), scale), scale),
1069
1051
  );
1070
1052
  const budgeted = [...capped, ...auto];
1071
1053
  const budgetKey = budgeted.join("\n");
@@ -1108,15 +1090,8 @@ function SeriesPlot({
1108
1090
  // the moment a legend entry was switched off.
1109
1091
  if (!model.source.length || !series.length) {
1110
1092
  return (
1111
- <div
1112
- className={cn("flex w-full items-center justify-center px-2 text-center", heightClass)}
1113
- style={heightStyle}
1114
- >
1115
- {empty !== undefined ? (
1116
- empty
1117
- ) : (
1118
- <p className="text-xs text-muted">{labels.empty}</p>
1119
- )}
1093
+ <div className={cn("flex w-full items-center justify-center px-2 text-center", heightClass)} style={heightStyle}>
1094
+ {empty !== undefined ? empty : <p className="text-xs text-muted">{labels.empty}</p>}
1120
1095
  </div>
1121
1096
  );
1122
1097
  }
@@ -1137,9 +1112,7 @@ function SeriesPlot({
1137
1112
  const drawnAxes = budgeted.length
1138
1113
  ? axes.map((axis) => (budgeted.includes(axis.id) ? { ...axis, hide: true as const } : axis))
1139
1114
  : axes;
1140
- const lostUnit = new Map(
1141
- axes.filter((axis) => budgeted.includes(axis.id)).map((axis) => [axis.id, axisUnit(axis)]),
1142
- );
1115
+ const lostUnit = new Map(axes.filter((axis) => budgeted.includes(axis.id)).map((axis) => [axis.id, axisUnit(axis)]));
1143
1116
  const config: ChartConfig = Object.fromEntries(
1144
1117
  series.map((entry, index) => [
1145
1118
  entry.key,
@@ -1185,14 +1158,11 @@ function SeriesPlot({
1185
1158
  (model.kind === "category"
1186
1159
  ? [-0.5, rows.length - 0.5]
1187
1160
  : padBand(
1188
- ...(extend(
1189
- undefined,
1190
- [
1191
- ...allPlotted.map((row) => finite(row[xKey])),
1192
- ...xRefs.map((ref) => xPos(ref.value)),
1193
- ...(markers ?? []).map((marker) => xPos(marker.x)),
1194
- ],
1195
- ) ?? [Infinity, -Infinity]),
1161
+ ...(extend(undefined, [
1162
+ ...allPlotted.map((row) => finite(row[xKey])),
1163
+ ...xRefs.map((ref) => xPos(ref.value)),
1164
+ ...(markers ?? []).map((marker) => xPos(marker.x)),
1165
+ ]) ?? [Infinity, -Infinity]),
1196
1166
  ));
1197
1167
 
1198
1168
  const timeUnit = model.kind === "time" ? timeTicksWithUnit(fittedX, ticksAim) : undefined;
@@ -1222,11 +1192,7 @@ function SeriesPlot({
1222
1192
  ...(timeUnit?.unit === "hour" ? { timeStyle: "short" } : {}),
1223
1193
  });
1224
1194
  const categoryText = (value: SeriesChartXValue) =>
1225
- value instanceof Date
1226
- ? dateFormat.format(value)
1227
- : typeof value === "number"
1228
- ? number(value)
1229
- : String(value ?? "");
1195
+ value instanceof Date ? dateFormat.format(value) : typeof value === "number" ? number(value) : String(value ?? "");
1230
1196
  const tickAt = (position: number): SeriesChartXTick => ({
1231
1197
  value: model.valueAt(position),
1232
1198
  ...(model.kind === "category" ? { index: Math.round(position) } : {}),
@@ -1240,13 +1206,15 @@ function SeriesPlot({
1240
1206
  : number(position);
1241
1207
  const format = x.format ?? defaultFormat;
1242
1208
  const xFormat = (position: number) => format(position, tickAt(position));
1243
- const label =
1244
- x.label ??
1245
- (model.kind === "time" ? (position: number) => dateFormat.format(position) : format);
1209
+ const label = x.label ?? (model.kind === "time" ? (position: number) => dateFormat.format(position) : format);
1246
1210
  const xLabel = (position: number) => label(position, tickAt(position));
1247
1211
 
1248
1212
  const tickAngle = x.ticks === false ? 0 : (x.tickAngle ?? 0);
1249
- const tickBand = tiltedTickBand((xTicks ?? []).map((tick) => xFormat(tick)), tickAngle, scale);
1213
+ const tickBand = tiltedTickBand(
1214
+ (xTicks ?? []).map((tick) => xFormat(tick)),
1215
+ tickAngle,
1216
+ scale,
1217
+ );
1250
1218
 
1251
1219
  const source: ZoomFitSource = {
1252
1220
  rows: allPlotted,
@@ -1257,9 +1225,7 @@ function SeriesPlot({
1257
1225
  // An axis a bar or an area stands on is read from zero (see `includeZero`).
1258
1226
  const anchored = (axis: SeriesChartAxis) =>
1259
1227
  axis.includeZero ??
1260
- series.some(
1261
- (entry) => (entry.axis ?? DEFAULT_Y_AXIS) === axis.id && (entry.type ?? "line") !== "line",
1262
- );
1228
+ series.some((entry) => (entry.axis ?? DEFAULT_Y_AXIS) === axis.id && (entry.type ?? "line") !== "line");
1263
1229
  // Whole-number ticks on an axis whose values are all whole — see
1264
1230
  // `SeriesChartAxis.integerTicks`. A stack of whole layers sums to a whole number, so
1265
1231
  // the layers are enough to look at.
@@ -1317,7 +1283,9 @@ function SeriesPlot({
1317
1283
  const [low, high] = fittedX ?? [-Infinity, Infinity];
1318
1284
  const placed = plotted
1319
1285
  .map((row, index) => ({ index, at: model.kind === "category" ? index : finite(row[xKey]) }))
1320
- .filter((slot): slot is { index: number; at: number } => slot.at !== undefined && slot.at >= low && slot.at <= high)
1286
+ .filter(
1287
+ (slot): slot is { index: number; at: number } => slot.at !== undefined && slot.at >= low && slot.at <= high,
1288
+ )
1321
1289
  .sort((a, b) => a.at - b.at);
1322
1290
  placed.forEach(({ index, at }, k) => {
1323
1291
  const from = k > 0 ? (placed[k - 1].at + at) / 2 : low;
@@ -1449,28 +1417,19 @@ function SeriesPlot({
1449
1417
  // other tick, keeping the last, gives 4 8 12 — still an even ruler.
1450
1418
  interval="equidistantPreserveEnd"
1451
1419
  tick={x.ticks === false ? false : undefined}
1452
- {...(tickAngle
1453
- ? { angle: tickAngle, textAnchor: tickAngle < 0 ? "end" : "start" }
1454
- : {})}
1420
+ {...(tickAngle ? { angle: tickAngle, textAnchor: tickAngle < 0 ? "end" : "start" } : {})}
1455
1421
  // With neither ticks nor title there is nothing to reserve the band for, and
1456
1422
  // recharts' own 30 px would leave a gap under every chart of a stack.
1457
1423
  height={x.ticks === false && !x.title ? 4 : tickBand}
1458
1424
  tickFormatter={(value: number) => xFormat(Number(value))}
1459
1425
  >
1460
1426
  {x.title && (
1461
- <Label
1462
- value={x.title}
1463
- position="insideBottom"
1464
- offset={-grow(12)}
1465
- className="fill-muted text-caption"
1466
- />
1427
+ <Label value={x.title} position="insideBottom" offset={-grow(12)} className="fill-muted text-caption" />
1467
1428
  )}
1468
1429
  </XAxis>
1469
1430
  {drawnAxes.map((axis) => {
1470
1431
  const domain = fittedY(axis);
1471
- const zoomed = anchored(axis)
1472
- ? zoom?.xDomain !== undefined
1473
- : zoom?.yDomains[axis.id] !== undefined;
1432
+ const zoomed = anchored(axis) ? zoom?.xDomain !== undefined : zoom?.yDomains[axis.id] !== undefined;
1474
1433
  return (
1475
1434
  <YAxis
1476
1435
  key={axis.id}
@@ -1577,7 +1536,12 @@ function SeriesPlot({
1577
1536
  radius={entry.stack === undefined ? BAR_RADIUS : 0}
1578
1537
  // Read off the row rather than recharts' `value`: in a stack that is the
1579
1538
  // layer's running top, which a hole has too — and a hole gets no stub.
1580
- {...(stub ? { minPointSize: (_value: unknown, index: number) => (finite(plotted[index]?.[entry.key]) === undefined ? 0 : stub) } : {})}
1539
+ {...(stub
1540
+ ? {
1541
+ minPointSize: (_value: unknown, index: number) =>
1542
+ finite(plotted[index]?.[entry.key]) === undefined ? 0 : stub,
1543
+ }
1544
+ : {})}
1581
1545
  // Only the focused stop's series swaps its shape, and only for as long
1582
1546
  // as it has focus: every other bar keeps recharts' own.
1583
1547
  {...(focusedStop?.key === entry.key ? { shape: focusedBarShape(focusedStop.index) } : {})}
@@ -1692,11 +1656,7 @@ function SeriesPlot({
1692
1656
  stroke="var(--bg-surface)"
1693
1657
  strokeWidth={1.5}
1694
1658
  ifOverflow="discard"
1695
- label={
1696
- marker.label
1697
- ? { value: marker.label, position: "top", content: <MarkerLabel /> }
1698
- : undefined
1699
- }
1659
+ label={marker.label ? { value: marker.label, position: "top", content: <MarkerLabel /> } : undefined}
1700
1660
  />
1701
1661
  );
1702
1662
  })}
@@ -34,8 +34,7 @@ import type { KitLanguageCode } from "../i18n/languages";
34
34
  * The `Select` half of {@link ThemeSettingProps}; until 0.34 it carried that name, which
35
35
  * left the toggle out of the type the component is documented by (API-9).
36
36
  */
37
- export interface ThemeSettingSelectProps
38
- extends Omit<SelectProps, "value" | "onChange" | "children"> {
37
+ export interface ThemeSettingSelectProps extends Omit<SelectProps, "value" | "onChange" | "children"> {
39
38
  /** The `Select` (default). See {@link ThemeSettingToggleProps} for `"toggle"`. */
40
39
  variant?: "select";
41
40
  value: ThemePreference;
@@ -63,8 +62,7 @@ export interface ThemeSettingSelectProps
63
62
  * system-dark device a control bound to the mode shows "dark" and cannot say "follow the
64
63
  * system" (keksdose's control, §8).
65
64
  */
66
- export interface ThemeSettingToggleProps
67
- extends Omit<ToggleGroupBaseProps<ThemePreference>, "options" | "label"> {
65
+ export interface ThemeSettingToggleProps extends Omit<ToggleGroupBaseProps<ThemePreference>, "options" | "label"> {
68
66
  variant: "toggle";
69
67
  value: ThemePreference;
70
68
  onChange: (value: ThemePreference) => void;
@@ -106,13 +104,7 @@ export function ThemeSetting(props: ThemeSettingProps) {
106
104
  }
107
105
  const { variant: _variant, value, onChange, label, optionLabels, id, ...rest } = props;
108
106
  return (
109
- <Select
110
- {...rest}
111
- id={id}
112
- label={label}
113
- value={value}
114
- onChange={(e) => onChange(e.target.value as ThemePreference)}
115
- >
107
+ <Select {...rest} id={id} label={label} value={value} onChange={(e) => onChange(e.target.value as ThemePreference)}>
116
108
  <option value="system">{optionLabels.system}</option>
117
109
  <option value="light">{optionLabels.light}</option>
118
110
  <option value="dark">{optionLabels.dark}</option>
@@ -122,8 +114,7 @@ export function ThemeSetting(props: ThemeSettingProps) {
122
114
 
123
115
  /** See {@link ThemeSettingSelectProps}: a `Select`'s props with the value and the change
124
116
  * handler re-typed to the language CODE the caller stores. */
125
- export interface LanguageSettingProps
126
- extends Omit<SelectProps, "value" | "onChange" | "children" | "multiple"> {
117
+ export interface LanguageSettingProps extends Omit<SelectProps, "value" | "onChange" | "children" | "multiple"> {
127
118
  /** The reader's language: one of the rows' codes — or any tag, shown as the row it
128
119
  * resolves to ({@link LanguageSelect}'s rule). */
129
120
  value: string;
@@ -190,7 +181,14 @@ export type TextSizeSettingProps = AppearanceToggleProps<TextSize>;
190
181
  * phone the group has 240 px, and "Extra large" cut to "Extra l…" would be the one
191
182
  * setting that cannot read its own value.
192
183
  */
193
- export function TextSizeSetting({ value, onChange, label, labels: labelsProp, overflow = "wrap", ...rest }: TextSizeSettingProps) {
184
+ export function TextSizeSetting({
185
+ value,
186
+ onChange,
187
+ label,
188
+ labels: labelsProp,
189
+ overflow = "wrap",
190
+ ...rest
191
+ }: TextSizeSettingProps) {
194
192
  const labels = useAppearanceLabels(labelsProp);
195
193
  const named = label !== undefined && label !== null && label !== false;
196
194
  return (
@@ -215,7 +213,14 @@ export type ContrastSettingProps = AppearanceToggleProps<ContrastMode>;
215
213
  * "More" and could not say "follow the device" (the theme's lesson, §8 of the settings
216
214
  * contract). `useAccountAppearance().contrast` is that mode.
217
215
  */
218
- export function ContrastSetting({ value, onChange, label, labels: labelsProp, overflow = "wrap", ...rest }: ContrastSettingProps) {
216
+ export function ContrastSetting({
217
+ value,
218
+ onChange,
219
+ label,
220
+ labels: labelsProp,
221
+ overflow = "wrap",
222
+ ...rest
223
+ }: ContrastSettingProps) {
219
224
  const labels = useAppearanceLabels(labelsProp);
220
225
  const named = label !== undefined && label !== null && label !== false;
221
226
  return (
@@ -385,10 +385,7 @@ export function SharePanel({
385
385
  {canAdd && (
386
386
  <div className="space-y-2">
387
387
  <div
388
- className={cn(
389
- "grid grid-cols-1 gap-2",
390
- choosable && "sm:grid-cols-[minmax(0,1fr)_auto] sm:items-start",
391
- )}
388
+ className={cn("grid grid-cols-1 gap-2", choosable && "sm:grid-cols-[minmax(0,1fr)_auto] sm:items-start")}
392
389
  >
393
390
  <Autocomplete<string>
394
391
  label={addWithoutEmail ? labels.emailOptional : labels.email}
@@ -434,9 +431,7 @@ export function SharePanel({
434
431
  value={newRole}
435
432
  onChange={setNewRole}
436
433
  disabled={busy !== null}
437
- caption={
438
- roles.some((r) => r.description) ? (key: string) => roleOf(key)?.description : undefined
439
- }
434
+ caption={roles.some((r) => r.description) ? (key: string) => roleOf(key)?.description : undefined}
440
435
  // Level with the floating field beside it, as the two apps do by hand.
441
436
  optionClassName="sm:min-h-10"
442
437
  />
@@ -520,7 +515,8 @@ export function SharePanel({
520
515
  if (next === g.role) return;
521
516
  // A raise under a lock that allows only lowerings: refused,
522
517
  // and the tooltip round the choice says why.
523
- if (roleLock.raise !== undefined && roles.findIndex((r) => r.key === next) > rank) return;
518
+ if (roleLock.raise !== undefined && roles.findIndex((r) => r.key === next) > rank)
519
+ return;
524
520
  void run(`role:${g.id}`, () => onRoleChange(g, next));
525
521
  }}
526
522
  />
@@ -570,10 +566,7 @@ export function SharePanel({
570
566
  <div className="min-w-0 flex-1 basis-40">
571
567
  <div
572
568
  data-private={p.email ? true : undefined}
573
- className={cn(
574
- "truncate-until-large text-sm",
575
- p.email ? "text-primary" : "text-muted",
576
- )}
569
+ className={cn("truncate-until-large text-sm", p.email ? "text-primary" : "text-muted")}
577
570
  >
578
571
  {name}
579
572
  </div>
@@ -648,8 +641,7 @@ export function ShareCard({ title, variant = "outline", className, ...panel }: S
648
641
  }
649
642
 
650
643
  export interface ShareDialogProps
651
- extends SharePanelProps,
652
- Pick<DialogFrameProps, "open" | "onClose" | "size" | "className"> {
644
+ extends SharePanelProps, Pick<DialogFrameProps, "open" | "onClose" | "size" | "className"> {
653
645
  /** The heading. Default {@link ShareCardLabels.dialogTitle}. */
654
646
  title?: ReactNode;
655
647
  /** Under the heading — what is being shared (Kurvenschmiede passes its name). */