@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
@@ -138,10 +138,8 @@ const TILE_BASE =
138
138
  FOCUS_RING +
139
139
  " focus-visible:ring-offset-2 focus-visible:ring-offset-surface " +
140
140
  "disabled:cursor-not-allowed disabled:opacity-50";
141
- const TILE_IDLE =
142
- "border-subtle bg-surface hover:border-strong hover:bg-hover";
143
- const TILE_SELECTED =
144
- "border-[var(--text-primary)] bg-surface ring-1 ring-[var(--text-primary)]";
141
+ const TILE_IDLE = "border-subtle bg-surface hover:border-strong hover:bg-hover";
142
+ const TILE_SELECTED = "border-[var(--text-primary)] bg-surface ring-1 ring-[var(--text-primary)]";
145
143
  /** A locked tile: the disabled look without `disabled` — dimmed, a not-allowed cursor. */
146
144
  const TILE_LOCKED = "cursor-not-allowed opacity-50";
147
145
  /** …and no hover offer on an idle one, which cannot be chosen. Not on the selected
@@ -180,15 +178,11 @@ export function TileRadioGroup<T extends string>({
180
178
  const noteId = useId();
181
179
  const reasonId = useId();
182
180
  const s = TILE_SIZE[size];
183
- const checkedIndex =
184
- checked === undefined ? -1 : items.findIndex((it) => it.key === checked);
181
+ const checkedIndex = checked === undefined ? -1 : items.findIndex((it) => it.key === checked);
185
182
  // The ONE tab stop: the checked tile, else the first that can be reached — the APG
186
183
  // rule, so Tab into a group with nothing checked still lands somewhere. A locked
187
184
  // tile is reachable: landing on it is how its reason is read.
188
- const tabStop =
189
- checkedIndex >= 0 && !isOff(items[checkedIndex])
190
- ? checkedIndex
191
- : items.findIndex((it) => !isOff(it));
185
+ const tabStop = checkedIndex >= 0 && !isOff(items[checkedIndex]) ? checkedIndex : items.findIndex((it) => !isOff(it));
192
186
 
193
187
  const onKeyDown = (e: KeyboardEvent<HTMLButtonElement>, index: number) => {
194
188
  // Left and right are VISUAL directions: in a right-to-left page the row runs the
@@ -269,19 +263,12 @@ export function TileRadioGroup<T extends string>({
269
263
  tileClassName?.(item, selected),
270
264
  )}
271
265
  >
272
- {item.key === null ? (
273
- <Ban aria-hidden className={cn(s.glyph, "text-muted")} />
274
- ) : (
275
- renderTile(item, selected)
276
- )}
266
+ {item.key === null ? <Ban aria-hidden className={cn(s.glyph, "text-muted")} /> : renderTile(item, selected)}
277
267
  {item.note && (
278
268
  <>
279
269
  {/* A dot rather than a dimmed tile: dimming reads as "disabled", and a
280
270
  tile with a note is entirely available. */}
281
- <span
282
- aria-hidden
283
- className="absolute end-0.5 top-0.5 size-1.5 rounded-full bg-[var(--text-muted)]"
284
- />
271
+ <span aria-hidden className="absolute end-0.5 top-0.5 size-1.5 rounded-full bg-[var(--text-muted)]" />
285
272
  {/* `hidden` still serves as a description: aria-describedby reads
286
273
  hidden text, which is what keeps it out of the layout. */}
287
274
  <span id={`${noteId}-${i}`} hidden>
@@ -35,11 +35,10 @@ import { cn } from "../lib/cn";
35
35
  * at the site"), a {@link FieldHint} rides the label line. `showCount` is typed out — a
36
36
  * time has no length worth counting.
37
37
  */
38
- export interface TimeInputProps
39
- extends Omit<
40
- InputProps,
41
- "type" | "value" | "defaultValue" | "min" | "max" | "step" | "variant" | "showCount" | "countLabels"
42
- > {
38
+ export interface TimeInputProps extends Omit<
39
+ InputProps,
40
+ "type" | "value" | "defaultValue" | "min" | "max" | "step" | "variant" | "showCount" | "countLabels"
41
+ > {
43
42
  /** `"HH:mm"` (or `"HH:mm:ss"` with a sub-minute `step`); `""` is "no time". */
44
43
  value: string;
45
44
  /** The normalised value on every change the browser reports — which for a time
@@ -140,8 +140,7 @@ const privately = (node: ReactNode) => <span data-private="">{node}</span>;
140
140
  * whitespace-free class token.
141
141
  */
142
142
  const ID_CLASS = "kit-toast-id-";
143
- const idClass = (id: ToastId) =>
144
- `${ID_CLASS}${typeof id === "number" ? "n" : "s"}-${encodeURIComponent(String(id))}`;
143
+ const idClass = (id: ToastId) => `${ID_CLASS}${typeof id === "number" ? "n" : "s"}-${encodeURIComponent(String(id))}`;
145
144
 
146
145
  /** The id {@link idClass} stamped on a toast element, or null for a toast the kit did
147
146
  * not make (an app still calling sonner directly). */
@@ -284,13 +283,7 @@ export const toast = Object.assign(
284
283
 
285
284
  /* ── The Toaster ─────────────────────────────────────────────────────────── */
286
285
 
287
- export type ToastPosition =
288
- | "top-left"
289
- | "top-center"
290
- | "top-right"
291
- | "bottom-left"
292
- | "bottom-center"
293
- | "bottom-right";
286
+ export type ToastPosition = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
294
287
 
295
288
  export type ToastSwipeDirection = "top" | "right" | "bottom" | "left";
296
289
 
@@ -381,9 +374,7 @@ const ALL_DIRECTIONS: ToastSwipeDirection[] = ["top", "right", "bottom", "left"]
381
374
 
382
375
  /** Light or dark, as the `.dark` class on `<html>` says right now. */
383
376
  function readDocumentTheme(): "light" | "dark" {
384
- return typeof document !== "undefined" && document.documentElement.classList.contains("dark")
385
- ? "dark"
386
- : "light";
377
+ return typeof document !== "undefined" && document.documentElement.classList.contains("dark") ? "dark" : "light";
387
378
  }
388
379
 
389
380
  function subscribeDocumentTheme(onChange: () => void): () => void {
@@ -37,8 +37,7 @@ export interface ToggleOption<T extends string> {
37
37
  * worse than one that does not compile.
38
38
  */
39
39
  export interface ToggleGroupBaseProps<T extends string>
40
- extends Omit<ComponentPropsWithoutRef<"div">, "onChange" | "children">,
41
- FieldHelpProps {
40
+ extends Omit<ComponentPropsWithoutRef<"div">, "onChange" | "children">, FieldHelpProps {
42
41
  options: ToggleOption<T>[];
43
42
  className?: string;
44
43
  /** Applied to every option button (e.g. to tune height/rounding to match
@@ -354,9 +353,7 @@ export interface ToggleGroupClearableProps<T extends string> extends ToggleGroup
354
353
 
355
354
  /** `allowEmpty` picks the shape, so `onChange` is typed `(T) => void` unless the group
356
355
  * can actually emit `null` — no existing caller has a `null` to handle. */
357
- export type ToggleGroupProps<T extends string> =
358
- | ToggleGroupRequiredProps<T>
359
- | ToggleGroupClearableProps<T>;
356
+ export type ToggleGroupProps<T extends string> = ToggleGroupRequiredProps<T> | ToggleGroupClearableProps<T>;
360
357
 
361
358
  /**
362
359
  * Overloaded rather than typed by the union alone (keksdose, "Gaps found adopting
@@ -542,9 +539,7 @@ export function ToggleGroup<T extends string>(props: ToggleGroupProps<T>): React
542
539
  field && CHROME_SEGMENT[size],
543
540
  // In the strip placement: a 22px group under a 20px strip — STRIP_SEGMENT.
544
541
  strip && STRIP_SEGMENT[size],
545
- active
546
- ? "bg-inverse text-inverse"
547
- : "text-secondary hover:bg-hover",
542
+ active ? "bg-inverse text-inverse" : "text-secondary hover:bg-hover",
548
543
  // No hover fill on a group that cannot be changed — a segment that
549
544
  // lights up under the pointer is an offer, and there is none here. Not on
550
545
  // the chosen segment: its fill IS its state, and its inverse text would
@@ -578,7 +573,12 @@ export function ToggleGroup<T extends string>(props: ToggleGroupProps<T>): React
578
573
  aria-labelledby={labelled && ariaLabelAttr === undefined ? labelId : rest["aria-labelledby"]}
579
574
  aria-invalid={hasError || rest["aria-invalid"] || undefined}
580
575
  aria-describedby={
581
- [rest["aria-describedby"], hintAsCaption !== undefined && hintCaptionId, hasCaption && captionId, hasError && errorId]
576
+ [
577
+ rest["aria-describedby"],
578
+ hintAsCaption !== undefined && hintCaptionId,
579
+ hasCaption && captionId,
580
+ hasError && errorId,
581
+ ]
582
582
  .filter(Boolean)
583
583
  .join(" ") || undefined
584
584
  }
@@ -26,13 +26,7 @@ import { DEFAULT_SERIES_CHART_LABELS, type SeriesChartLabels } from "./series-ch
26
26
  * Kept here, beside the legend's own mark, and read by `SeriesChart` from here — so
27
27
  * the key under a chart and the lines on it cannot disagree.
28
28
  */
29
- export const STROKE_PATTERNS: readonly (string | undefined)[] = [
30
- undefined,
31
- "5 4",
32
- "1 3",
33
- "9 3 2 3",
34
- "9 3 2 3 2 3",
35
- ];
29
+ export const STROKE_PATTERNS: readonly (string | undefined)[] = [undefined, "5 4", "1 3", "9 3 2 3", "9 3 2 3 2 3"];
36
30
 
37
31
  /** The dash array for the nth pattern, wrapping past the fifth. */
38
32
  export function strokeDash(order: number): string | undefined {
@@ -79,8 +73,7 @@ export function toggleHidden(hidden: ReadonlySet<string>, key: string): Readonly
79
73
  * A caller that places its legend itself and wants it kept beside the chart at every
80
74
  * size overrides with `large:col-auto large:basis-auto`.
81
75
  */
82
- const UNDER_THE_CHART_AT_LARGE =
83
- "large:order-last large:col-span-full large:basis-full large:[*:has(>&)]:flex-wrap";
76
+ const UNDER_THE_CHART_AT_LARGE = "large:order-last large:col-span-full large:basis-full large:[*:has(>&)]:flex-wrap";
84
77
 
85
78
  /** A vertical legend's entries from Large up: across, wrapping — it is under the chart
86
79
  * now (see {@link UNDER_THE_CHART_AT_LARGE}), where a column of entries would be a
@@ -284,10 +277,7 @@ export function StaticLegend({
284
277
  {entries.map((entry) => (
285
278
  <Item
286
279
  key={entry.key}
287
- className={cn(
288
- "flex items-center gap-1.5 text-caption text-secondary",
289
- entry.align === "end" && "ms-auto",
290
- )}
280
+ className={cn("flex items-center gap-1.5 text-caption text-secondary", entry.align === "end" && "ms-auto")}
291
281
  >
292
282
  <LegendMark entry={entry} off={false} />
293
283
  {entry.label}
@@ -335,9 +325,7 @@ export function LegendColumn({ children, className }: { children: ReactNode; cla
335
325
  export function LegendGroup({ title, children }: { title: ReactNode; children: ReactNode }) {
336
326
  return (
337
327
  <div className="flex min-w-0 flex-col items-start gap-1">
338
- <span className="text-micro font-semibold uppercase tracking-wide text-muted">
339
- {title}
340
- </span>
328
+ <span className="text-micro font-semibold uppercase tracking-wide text-muted">{title}</span>
341
329
  <div className="flex flex-col items-start gap-y-0.5">{children}</div>
342
330
  </div>
343
331
  );
@@ -382,14 +382,7 @@ export function Tooltip({
382
382
  if (isEmptyLabel(label)) return <>{children}</>;
383
383
  if (portal === true) {
384
384
  return (
385
- <PortalTooltip
386
- label={label}
387
- side={side}
388
- className={className}
389
- redact={redact}
390
- tap={tap}
391
- {...rest}
392
- >
385
+ <PortalTooltip label={label} side={side} className={className} redact={redact} tap={tap} {...rest}>
393
386
  {children}
394
387
  </PortalTooltip>
395
388
  );
@@ -413,7 +406,6 @@ export function Tooltip({
413
406
  );
414
407
  }
415
408
 
416
-
417
409
  /** The pointer handlers a caller may hand {@link Tooltip} that the trigger also needs:
418
410
  * both run, the trigger's first. (The mouse and focus handlers are the trigger's alone,
419
411
  * as they have always been.) */
@@ -731,9 +723,7 @@ function InPlaceTooltip({
731
723
  {/* In place the bubble is always there to point at; portalled or lazy, only while up. */}
732
724
  {describedBy(children, clipped || lazy ? (open ? id : undefined) : dismissed ? undefined : id)}
733
725
  {clipped ? (
734
- open && (
735
- <PortalBubble triggerRef={triggerRef} id={id} label={label} side={side} dir={dir} redact={redact} />
736
- )
726
+ open && <PortalBubble triggerRef={triggerRef} id={id} label={label} side={side} dir={dir} redact={redact} />
737
727
  ) : lazy ? (
738
728
  // keksdose F6: the in-place slot and classes, the portalled lifetime. Mounted only
739
729
  // while up, so it is visible whenever it exists.
@@ -795,11 +785,7 @@ function describedBy(children: ReactNode, id: string | undefined): ReactNode {
795
785
  * it has nothing to say — `""`, `null`, `undefined`, `false` from a `&&` guard. A
796
786
  * numeric `0` is a real label and stays one. */
797
787
  function isEmptyLabel(label: ReactNode): boolean {
798
- return (
799
- label == null ||
800
- label === false ||
801
- (typeof label === "string" && label.trim() === "")
802
- );
788
+ return label == null || label === false || (typeof label === "string" && label.trim() === "");
803
789
  }
804
790
 
805
791
  const TOOLTIP_GAP = 4;
@@ -878,10 +864,7 @@ function useViewportClamp(
878
864
  // new label, side or direction — is not measured yet, and renders clipped until it is.
879
865
  const [placement, setPlacement] = useState<Placement>(UNPLACED);
880
866
  const measured =
881
- placement.for !== null &&
882
- placement.for.side === side &&
883
- placement.for.label === label &&
884
- placement.for.dir === dir;
867
+ placement.for !== null && placement.for.side === side && placement.for.label === label && placement.for.dir === dir;
885
868
  useLayoutEffect(() => {
886
869
  const el = bubbleRef.current;
887
870
  if (!active || !el) {
@@ -939,10 +922,7 @@ const portalTransformBySide: Record<PhysicalSide, string> = {
939
922
 
940
923
  /** Anchor point (viewport px) for the tooltip on the given side of `r`. Paired
941
924
  * with {@link portalTransformBySide}, which shifts the box onto that point. */
942
- function tooltipAnchor(
943
- r: AnchorRect,
944
- side: PhysicalSide,
945
- ): { left: number; top: number } {
925
+ function tooltipAnchor(r: AnchorRect, side: PhysicalSide): { left: number; top: number } {
946
926
  switch (side) {
947
927
  case "right":
948
928
  return { left: r.right + TOOLTIP_GAP, top: r.top + r.height / 2 };
@@ -980,12 +960,7 @@ const opposite: Record<PhysicalSide, PhysicalSide> = {
980
960
  };
981
961
 
982
962
  /** Whether the bubble clears the viewport edge on `side` of the trigger. */
983
- function roomOn(
984
- r: AnchorRect,
985
- side: PhysicalSide,
986
- size: TooltipSize,
987
- viewport: TooltipViewport,
988
- ): boolean {
963
+ function roomOn(r: AnchorRect, side: PhysicalSide, size: TooltipSize, viewport: TooltipViewport): boolean {
989
964
  switch (side) {
990
965
  case "left":
991
966
  return r.left - TOOLTIP_GAP - size.width >= TOOLTIP_MARGIN;
@@ -1045,10 +1020,7 @@ export function placeTooltip(
1045
1020
  size: TooltipSize,
1046
1021
  viewport: TooltipViewport,
1047
1022
  ): TooltipPlacement {
1048
- const chosen =
1049
- roomOn(r, side, size, viewport) || !roomOn(r, opposite[side], size, viewport)
1050
- ? side
1051
- : opposite[side];
1023
+ const chosen = roomOn(r, side, size, viewport) || !roomOn(r, opposite[side], size, viewport) ? side : opposite[side];
1052
1024
  const point = tooltipAnchor(r, chosen);
1053
1025
  const box =
1054
1026
  chosen === "left"
@@ -1065,16 +1037,7 @@ export function placeTooltip(
1065
1037
  };
1066
1038
  }
1067
1039
 
1068
- function PortalTooltip({
1069
- label,
1070
- side,
1071
- className,
1072
- redact,
1073
- tap,
1074
- children,
1075
- ref,
1076
- ...rest
1077
- }: TooltipVariantProps) {
1040
+ function PortalTooltip({ label, side, className, redact, tap, children, ref, ...rest }: TooltipVariantProps) {
1078
1041
  const { triggerRef, setTrigger } = useTriggerRef(ref);
1079
1042
  // The trigger's reading direction, read when the bubble is asked for (an event, not a
1080
1043
  // render): it resolves `start` / `end`, and the portalled bubble — which has left the
@@ -1103,9 +1066,7 @@ function PortalTooltip({
1103
1066
  >
1104
1067
  {describedBy(children, open ? id : undefined)}
1105
1068
  </span>
1106
- {open && (
1107
- <PortalBubble triggerRef={triggerRef} id={id} label={label} side={side} dir={dir} redact={redact} />
1108
- )}
1069
+ {open && <PortalBubble triggerRef={triggerRef} id={id} label={label} side={side} dir={dir} redact={redact} />}
1109
1070
  </>
1110
1071
  );
1111
1072
  }
@@ -147,9 +147,7 @@ export function TranslationReviewEditor({
147
147
  const trimmedNote = note.trim() || null;
148
148
  // Approving says the text is right as it stands: there is no wording to suggest.
149
149
  const sent = verdict === "APPROVED" ? null : suggestion.trim() || null;
150
- void run(verdict === "APPROVED" ? "approve" : "flag", () =>
151
- onSave(reviewWrite(row, verdict, trimmedNote, sent)),
152
- );
150
+ void run(verdict === "APPROVED" ? "approve" : "flag", () => onSave(reviewWrite(row, verdict, trimmedNote, sent)));
153
151
  };
154
152
 
155
153
  return (
@@ -212,7 +210,9 @@ export function TranslationReviewEditor({
212
210
  {/* Read-only: what the reviewer said, as text — the fields are for saying it. */}
213
211
  {!editable && review?.verdict === "NEEDS_CHANGE" && (review.suggestion || review.note) && (
214
212
  <div className="space-y-2">
215
- {review.suggestion && <Then label={missing ? labels.translation : labels.suggestion} text={review.suggestion} />}
213
+ {review.suggestion && (
214
+ <Then label={missing ? labels.translation : labels.suggestion} text={review.suggestion} />
215
+ )}
216
216
  {review.note && <Then label={labels.note} text={review.note} />}
217
217
  </div>
218
218
  )}
@@ -173,7 +173,13 @@ export interface TranslationLocaleTabsProps {
173
173
  * strip's caret saying it goes on (`overflowCue`). Nothing for a single locale:
174
174
  * a strip with one tab is a heading that looks clickable.
175
175
  */
176
- export function TranslationLocaleTabs({ locales, active, onChange, className, labels: labelsProp }: TranslationLocaleTabsProps) {
176
+ export function TranslationLocaleTabs({
177
+ locales,
178
+ active,
179
+ onChange,
180
+ className,
181
+ labels: labelsProp,
182
+ }: TranslationLocaleTabsProps) {
177
183
  const labels = useKitLabels("translationReview", DEFAULT_TRANSLATION_REVIEW_LABELS, labelsProp);
178
184
  if (locales.length < 2) return null;
179
185
  return (
@@ -324,7 +324,6 @@ export interface TranslationReviewPanelProps {
324
324
  labels?: LabelOverride<TranslationReviewLabels>;
325
325
  }
326
326
 
327
-
328
327
  /**
329
328
  * How many rows the groups may render at once on a wide screen before they start folded
330
329
  * ({@link TranslationReviewPanelProps.defaultGroupsOpen}): two of the default 50-row pages.
@@ -432,7 +431,10 @@ function TextCell({ row, labels, clamp }: { row: TranslationRow; labels: Transla
432
431
  return row.text === "" ? (
433
432
  <span className="italic text-muted">{labels.missingText}</span>
434
433
  ) : (
435
- <span lang={row.locale} className={cn("whitespace-pre-line break-words", clamp && "line-clamp-3 large:line-clamp-none")}>
434
+ <span
435
+ lang={row.locale}
436
+ className={cn("whitespace-pre-line break-words", clamp && "line-clamp-3 large:line-clamp-none")}
437
+ >
436
438
  {row.text}
437
439
  </span>
438
440
  );
@@ -670,7 +672,12 @@ export function TranslationReviewPanel({
670
672
  ): Promise<boolean> => {
671
673
  if (!onSave || targets.length === 0) return false;
672
674
  const save = onSave;
673
- const ok = await run(key, () => save(targets.map((r) => reviewWrite(r, "APPROVED")), { origin, toasted: undoOn }));
675
+ const ok = await run(key, () =>
676
+ save(
677
+ targets.map((r) => reviewWrite(r, "APPROVED")),
678
+ { origin, toasted: undoOn },
679
+ ),
680
+ );
674
681
  if (ok && undoOn) sayDone(targets, description);
675
682
  return ok;
676
683
  };
@@ -764,9 +771,7 @@ export function TranslationReviewPanel({
764
771
  {
765
772
  key: "reference",
766
773
  header: referenceLabel,
767
- cell: (r) => (
768
- <span className="line-clamp-3 whitespace-pre-line break-words text-secondary">{r.reference}</span>
769
- ),
774
+ cell: (r) => <span className="line-clamp-3 whitespace-pre-line break-words text-secondary">{r.reference}</span>,
770
775
  mobileHidden: true,
771
776
  },
772
777
  {
@@ -805,11 +810,9 @@ export function TranslationReviewPanel({
805
810
  name: (r) => r.key,
806
811
  tooltipSide: "start",
807
812
  actions: (r) =>
808
- translationReviewSwipePlan(
809
- { end: ["approve", ...(binding.end ?? []), ...(binding.start ?? [])] },
810
- r,
811
- { canClear: onClear !== undefined },
812
- ).end.map((id): RowAction => {
813
+ translationReviewSwipePlan({ end: ["approve", ...(binding.end ?? []), ...(binding.start ?? [])] }, r, {
814
+ canClear: onClear !== undefined,
815
+ }).end.map((id): RowAction => {
813
816
  const swipe = swipeAction(r, id);
814
817
  // `edit` only opens the editor, whose own Save is the commit.
815
818
  const writes = id !== "edit";
@@ -1230,11 +1233,7 @@ export function TranslationReviewPanel({
1230
1233
  </BulkActionBar>
1231
1234
  )}
1232
1235
 
1233
- {groups && groups.length > 0 ? (
1234
- <div className="space-y-3">{groups.map(groupSection)}</div>
1235
- ) : (
1236
- table(visible)
1237
- )}
1236
+ {groups && groups.length > 0 ? <div className="space-y-3">{groups.map(groupSection)}</div> : table(visible)}
1238
1237
  </div>
1239
1238
  );
1240
1239
  }
@@ -153,9 +153,7 @@ export function TreeRow({
153
153
  style={{ paddingInlineStart: ROW_PAD + depth * indent, ...style }}
154
154
  className={cn(
155
155
  "relative flex min-h-8 items-center gap-1.5 rounded pe-2 text-sm",
156
- selected
157
- ? "bg-active font-medium text-primary"
158
- : "text-secondary",
156
+ selected ? "bg-active font-medium text-primary" : "text-secondary",
159
157
  className,
160
158
  )}
161
159
  >
@@ -183,12 +181,18 @@ export function TreeRow({
183
181
  e.stopPropagation();
184
182
  onToggle();
185
183
  }}
186
- className={cn("flex size-4 shrink-0 items-center justify-center rounded text-muted outline-none hover:text-primary", FOCUS_RING)}
184
+ className={cn(
185
+ "flex size-4 shrink-0 items-center justify-center rounded text-muted outline-none hover:text-primary",
186
+ FOCUS_RING,
187
+ )}
187
188
  >
188
189
  {chevron}
189
190
  </button>
190
191
  ) : expandable ? (
191
- <span data-tree-toggle="" className="flex size-4 shrink-0 cursor-pointer items-center justify-center text-muted">
192
+ <span
193
+ data-tree-toggle=""
194
+ className="flex size-4 shrink-0 cursor-pointer items-center justify-center text-muted"
195
+ >
192
196
  {chevron}
193
197
  </span>
194
198
  ) : (
@@ -203,9 +207,7 @@ export function TreeRow({
203
207
  {label}
204
208
  </span>
205
209
  {trailing !== undefined && trailing !== null && (
206
- <span className="ms-auto flex shrink-0 items-center gap-1 text-xs tabular-nums text-muted">
207
- {trailing}
208
- </span>
210
+ <span className="ms-auto flex shrink-0 items-center gap-1 text-xs tabular-nums text-muted">{trailing}</span>
209
211
  )}
210
212
  </>
211
213
  )}
@@ -215,8 +217,10 @@ export function TreeRow({
215
217
 
216
218
  /* ── TreeView ────────────────────────────────────────────────────────────── */
217
219
 
218
- export interface TreeViewProps<T = unknown>
219
- extends Omit<ComponentPropsWithRef<"ul">, "onSelect" | "children" | "defaultValue"> {
220
+ export interface TreeViewProps<T = unknown> extends Omit<
221
+ ComponentPropsWithRef<"ul">,
222
+ "onSelect" | "children" | "defaultValue"
223
+ > {
220
224
  items: readonly TreeNode<T>[];
221
225
  /** Open nodes, controlled. */
222
226
  expanded?: readonly string[];
@@ -285,14 +289,8 @@ export function TreeView<T = unknown>({
285
289
  onClick,
286
290
  ...rest
287
291
  }: TreeViewProps<T>) {
288
- const [expandedList, setExpandedOwn] = useControllable<readonly string[]>(
289
- expandedProp,
290
- defaultExpanded ?? [],
291
- );
292
- const [selected, setSelectedOwn] = useControllable<string | null>(
293
- selectedProp,
294
- defaultSelected ?? null,
295
- );
292
+ const [expandedList, setExpandedOwn] = useControllable<readonly string[]>(expandedProp, defaultExpanded ?? []);
293
+ const [selected, setSelectedOwn] = useControllable<string | null>(selectedProp, defaultSelected ?? null);
296
294
  const expandedSet = useMemo(() => new Set(expandedList), [expandedList]);
297
295
  const [loading, setLoading] = useState<ReadonlySet<string>>(() => new Set());
298
296
  const [focusedId, setFocusedId] = useState<string | null>(null);
@@ -327,8 +325,7 @@ export function TreeView<T = unknown>({
327
325
  while (cur && !visibleIds.has(cur)) cur = byId.get(cur)?.parentId ?? null;
328
326
  return cur;
329
327
  };
330
- const tabbable =
331
- nearestVisible(focusedId) ?? nearestVisible(selected) ?? visible[0]?.node.id ?? null;
328
+ const tabbable = nearestVisible(focusedId) ?? nearestVisible(selected) ?? visible[0]?.node.id ?? null;
332
329
 
333
330
  useEffect(() => {
334
331
  const id = pendingFocus.current;
@@ -279,8 +279,7 @@ export function TreemapCell({
279
279
  // 29px down and an 11px glyph hangs ~2px below it, so 36 leaves the same ~5px under
280
280
  // the note that the label keeps under itself at the 20px floor.
281
281
  const rawNote = id != null && nodeNote ? nodeNote(id) : undefined;
282
- const note =
283
- label != null && rawNote != null && ph >= 36 * scale ? fitLabel(rawNote, pw, noteSize) : null;
282
+ const note = label != null && rawNote != null && ph >= 36 * scale ? fitLabel(rawNote, pw, noteSize) : null;
284
283
  // The label's START edge, 6px in from the tile's. The tiles themselves are laid out
285
284
  // physically (the plot is not mirrored, see `ChartContainer`) and the chart's SVG is
286
285
  // pinned `ltr`, so the direction is set on each <text> explicitly: `start` is then
@@ -312,16 +311,7 @@ export function TreemapCell({
312
311
  >
313
312
  {/* The 2px gutter is the card showing through, not a white grid — on a dark
314
313
  surface white lines glare harder than the tiles. */}
315
- <rect
316
- x={px}
317
- y={py}
318
- width={pw}
319
- height={ph}
320
- fill={tileFill}
321
- stroke="var(--bg-surface)"
322
- strokeWidth={2}
323
- rx={3}
324
- />
314
+ <rect x={px} y={py} width={pw} height={ph} fill={tileFill} stroke="var(--bg-surface)" strokeWidth={2} rx={3} />
325
315
  {edge && pw > 3 && ph > 3 && (
326
316
  <rect
327
317
  data-edge=""
@@ -481,9 +471,7 @@ export function Treemap({
481
471
  dataKey="size"
482
472
  fill="var(--chart-1)"
483
473
  isAnimationActive={false}
484
- content={
485
- <TreemapCell onNodeClick={onNodeClick} redactNames={redactNames} nodeNote={nodeNote} dir={dir} />
486
- }
474
+ content={<TreemapCell onNodeClick={onNodeClick} redactNames={redactNames} nodeNote={nodeNote} dir={dir} />}
487
475
  >
488
476
  <ChartTooltip content={<Content hideLabel valueFormatter={format} />} />
489
477
  </RechartsTreemap>
@@ -20,9 +20,7 @@ export interface TriggerAria {
20
20
  }
21
21
 
22
22
  /** Split a field's props into what its trigger takes and what its wrapper takes. */
23
- export function splitTriggerAria<T extends TriggerAria>(
24
- props: T,
25
- ): [TriggerAria, Omit<T, keyof TriggerAria>] {
23
+ export function splitTriggerAria<T extends TriggerAria>(props: T): [TriggerAria, Omit<T, keyof TriggerAria>] {
26
24
  const {
27
25
  id,
28
26
  "aria-label": label,
@@ -44,4 +42,3 @@ export function splitTriggerAria<T extends TriggerAria>(
44
42
  rest,
45
43
  ];
46
44
  }
47
-
@@ -4,12 +4,7 @@ import * as ReactRouter from "react-router";
4
4
  import { useLocation, useSearchParams } from "react-router";
5
5
  import { useKitTableStorageKeyPrefix } from "../i18n/kit-labels";
6
6
  import { readStored, writeStored } from "../lib/safe-storage";
7
- import {
8
- decodeFilterValue,
9
- encodeFilterValue,
10
- isFilterActive,
11
- resolveFilter,
12
- } from "./data-table-filters";
7
+ import { decodeFilterValue, encodeFilterValue, isFilterActive, resolveFilter } from "./data-table-filters";
13
8
  import { decodeSorts, encodeSorts, normalizeSorts, type SortState } from "./data-table-sort";
14
9
  import type { DataTableColumn, FilterState, ServerPagination } from "./data-table";
15
10
 
@@ -254,9 +249,7 @@ function urlSignature<T>(
254
249
  }
255
250
  parts.push(`${keys.sort}=${encodeSorts(sorts)}`);
256
251
  parts.push(
257
- `${keys.pageSize}=${
258
- pageSize === Infinity ? "all" : pageSize === defaultPageSize ? "" : String(pageSize)
259
- }`,
252
+ `${keys.pageSize}=${pageSize === Infinity ? "all" : pageSize === defaultPageSize ? "" : String(pageSize)}`,
260
253
  );
261
254
  parts.push(`${keys.page}=${page > 0 ? String(page + 1) : ""}`);
262
255
  return parts.join("&");
@@ -360,10 +353,7 @@ export function useTableState<T>({
360
353
  const [urlInitial] = useState<TableUrlState>(() =>
361
354
  urlSync ? readTableUrlState(searchParams, columns, urlPrefix) : {},
362
355
  );
363
- const initial = useMemo(
364
- () => loadPersisted(storageKey, storageKeyPrefix),
365
- [storageKey, storageKeyPrefix],
366
- );
356
+ const initial = useMemo(() => loadPersisted(storageKey, storageKeyPrefix), [storageKey, storageKeyPrefix]);
367
357
  const [internalSorts, setInternalSorts] = useState<SortState[]>(() =>
368
358
  urlInitial.sorts !== undefined ? urlInitial.sorts : normalizeSorts(initial.sort),
369
359
  );
@@ -482,9 +472,7 @@ export function useTableState<T>({
482
472
  }, [storageKey, storageKeyPrefix, persisted]);
483
473
 
484
474
  const lastUrl = useRef<string | null>(null);
485
- const urlSig = urlSync
486
- ? urlSignature(columns, sorts, filters, pageSize, page, defaultPageSize, keys)
487
- : "";
475
+ const urlSig = urlSync ? urlSignature(columns, sorts, filters, pageSize, page, defaultPageSize, keys) : "";
488
476
  useEffect(() => {
489
477
  if (!urlSync) return;
490
478
  if (lastUrl.current === urlSig) return;
@@ -492,7 +480,18 @@ export function useTableState<T>({
492
480
  // `columns` is deliberately not a dependency and does not need to be: the
493
481
  // signature above is computed from it, so a column set that would produce a
494
482
  // different address produces a different signature first.
495
- writeUrlState(setSearchParams, columns, sorts, filters, pageSize, page, defaultPageSize, undefined, locationState, keys);
483
+ writeUrlState(
484
+ setSearchParams,
485
+ columns,
486
+ sorts,
487
+ filters,
488
+ pageSize,
489
+ page,
490
+ defaultPageSize,
491
+ undefined,
492
+ locationState,
493
+ keys,
494
+ );
496
495
  // eslint-disable-next-line react-hooks/exhaustive-deps
497
496
  }, [urlSync, urlSig]);
498
497