@eifi1/ui-kit 0.51.3 → 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 (780) hide show
  1. package/README.md +6 -6
  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 +5 -9
  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 +13 -11
  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 +7 -5
  106. package/dist/components/data-table-fit.js.map +1 -1
  107. package/dist/components/data-table-groups.js +3 -1
  108. package/dist/components/data-table-groups.js.map +1 -1
  109. package/dist/components/data-table-head.js +49 -57
  110. package/dist/components/data-table-head.js.map +1 -1
  111. package/dist/components/data-table-mobile.js +31 -44
  112. package/dist/components/data-table-mobile.js.map +1 -1
  113. package/dist/components/data-table-pagination.js.map +1 -1
  114. package/dist/components/data-table-row-actions.js +19 -16
  115. package/dist/components/data-table-row-actions.js.map +1 -1
  116. package/dist/components/data-table-row.js.map +1 -1
  117. package/dist/components/data-table-shared.js.map +1 -1
  118. package/dist/components/data-table-sort.js.map +1 -1
  119. package/dist/components/data-table-virtual.js +4 -1
  120. package/dist/components/data-table-virtual.js.map +1 -1
  121. package/dist/components/data-table.d.ts +8 -0
  122. package/dist/components/data-table.js +30 -39
  123. package/dist/components/data-table.js.map +1 -1
  124. package/dist/components/date-picker.js +1 -6
  125. package/dist/components/date-picker.js.map +1 -1
  126. package/dist/components/date-range-picker.js.map +1 -1
  127. package/dist/components/description-list.js +10 -10
  128. package/dist/components/description-list.js.map +1 -1
  129. package/dist/components/dialog-frame.js +9 -2
  130. package/dist/components/dialog-frame.js.map +1 -1
  131. package/dist/components/disclosure.js +17 -27
  132. package/dist/components/disclosure.js.map +1 -1
  133. package/dist/components/dropdown.js +25 -35
  134. package/dist/components/dropdown.js.map +1 -1
  135. package/dist/components/empty-state.js.map +1 -1
  136. package/dist/components/entity-combobox.js.map +1 -1
  137. package/dist/components/error-boundary.js.map +1 -1
  138. package/dist/components/field-base.js +5 -5
  139. package/dist/components/field-base.js.map +1 -1
  140. package/dist/components/field-parts.d.ts +1 -1
  141. package/dist/components/field-parts.js +10 -14
  142. package/dist/components/field-parts.js.map +1 -1
  143. package/dist/components/field-sync.js +8 -10
  144. package/dist/components/field-sync.js.map +1 -1
  145. package/dist/components/file-button.js.map +1 -1
  146. package/dist/components/file-dropzone.js.map +1 -1
  147. package/dist/components/floating-panel.js +4 -1
  148. package/dist/components/floating-panel.js.map +1 -1
  149. package/dist/components/focus-ring.js.map +1 -1
  150. package/dist/components/form-actions.js.map +1 -1
  151. package/dist/components/grouped-picker.js +11 -12
  152. package/dist/components/grouped-picker.js.map +1 -1
  153. package/dist/components/hover-menu.js +1 -4
  154. package/dist/components/hover-menu.js.map +1 -1
  155. package/dist/components/iban-input-labels.js.map +1 -1
  156. package/dist/components/icon-button.js +4 -1
  157. package/dist/components/icon-button.js.map +1 -1
  158. package/dist/components/icon-picker.js +6 -10
  159. package/dist/components/icon-picker.js.map +1 -1
  160. package/dist/components/image-grid.js +41 -50
  161. package/dist/components/image-grid.js.map +1 -1
  162. package/dist/components/inline-edit-field.js.map +1 -1
  163. package/dist/components/inline-entity-combobox.js +6 -12
  164. package/dist/components/inline-entity-combobox.js.map +1 -1
  165. package/dist/components/input.js +14 -2
  166. package/dist/components/input.js.map +1 -1
  167. package/dist/components/jump-calendar.js +1 -7
  168. package/dist/components/jump-calendar.js.map +1 -1
  169. package/dist/components/legal-labels.js +8 -2
  170. package/dist/components/legal-labels.js.map +1 -1
  171. package/dist/components/legal-page.d.ts +18 -1
  172. package/dist/components/legal-page.js +27 -2
  173. package/dist/components/legal-page.js.map +1 -1
  174. package/dist/components/legal.d.ts +40 -5
  175. package/dist/components/legal.js +41 -5
  176. package/dist/components/legal.js.map +1 -1
  177. package/dist/components/lightbox.js.map +1 -1
  178. package/dist/components/line-items.js +26 -36
  179. package/dist/components/line-items.js.map +1 -1
  180. package/dist/components/list-labels.js +3 -1
  181. package/dist/components/list-labels.js.map +1 -1
  182. package/dist/components/list.d.ts +18 -1
  183. package/dist/components/list.js +54 -13
  184. package/dist/components/list.js.map +1 -1
  185. package/dist/components/measured-grid.js +29 -53
  186. package/dist/components/measured-grid.js.map +1 -1
  187. package/dist/components/menu-item.js.map +1 -1
  188. package/dist/components/mini-calendar.js +13 -31
  189. package/dist/components/mini-calendar.js.map +1 -1
  190. package/dist/components/money-field.js.map +1 -1
  191. package/dist/components/month-picker.js +10 -21
  192. package/dist/components/month-picker.js.map +1 -1
  193. package/dist/components/multi-entity-combobox.js +3 -16
  194. package/dist/components/multi-entity-combobox.js.map +1 -1
  195. package/dist/components/multi-select.js.map +1 -1
  196. package/dist/components/nav-pills.js +10 -1
  197. package/dist/components/nav-pills.js.map +1 -1
  198. package/dist/components/number-field.js.map +1 -1
  199. package/dist/components/number-input.js +1 -7
  200. package/dist/components/number-input.js.map +1 -1
  201. package/dist/components/numpad-sheet.js +1 -4
  202. package/dist/components/numpad-sheet.js.map +1 -1
  203. package/dist/components/one-time-code-input.js +1 -7
  204. package/dist/components/one-time-code-input.js.map +1 -1
  205. package/dist/components/page-contents.js +13 -22
  206. package/dist/components/page-contents.js.map +1 -1
  207. package/dist/components/page-header.js +1 -11
  208. package/dist/components/page-header.js.map +1 -1
  209. package/dist/components/password-strength-labels.js.map +1 -1
  210. package/dist/components/password-strength.js +2 -8
  211. package/dist/components/password-strength.js.map +1 -1
  212. package/dist/components/phone-input.js +42 -57
  213. package/dist/components/phone-input.js.map +1 -1
  214. package/dist/components/picker-sheet.js.map +1 -1
  215. package/dist/components/pie-chart.js +1 -8
  216. package/dist/components/pie-chart.js.map +1 -1
  217. package/dist/components/popover.js.map +1 -1
  218. package/dist/components/progress-bar.js +16 -9
  219. package/dist/components/progress-bar.js.map +1 -1
  220. package/dist/components/qr-code.js +1 -8
  221. package/dist/components/qr-code.js.map +1 -1
  222. package/dist/components/row-actions.js +5 -1
  223. package/dist/components/row-actions.js.map +1 -1
  224. package/dist/components/search-field.js.map +1 -1
  225. package/dist/components/select.js +28 -38
  226. package/dist/components/select.js.map +1 -1
  227. package/dist/components/separator.js +1 -5
  228. package/dist/components/separator.js.map +1 -1
  229. package/dist/components/series-chart-axes.js +4 -1
  230. package/dist/components/series-chart-axes.js.map +1 -1
  231. package/dist/components/series-chart-budget.js.map +1 -1
  232. package/dist/components/series-chart-ticks.js.map +1 -1
  233. package/dist/components/series-chart.js +29 -45
  234. package/dist/components/series-chart.js.map +1 -1
  235. package/dist/components/settings-fields.js +21 -17
  236. package/dist/components/settings-fields.js.map +1 -1
  237. package/dist/components/share-card.js +4 -9
  238. package/dist/components/share-card.js.map +1 -1
  239. package/dist/components/sign-chip.js.map +1 -1
  240. package/dist/components/signature-pad.js +4 -13
  241. package/dist/components/signature-pad.js.map +1 -1
  242. package/dist/components/signed-amount.js +12 -5
  243. package/dist/components/signed-amount.js.map +1 -1
  244. package/dist/components/skeleton.js +2 -17
  245. package/dist/components/skeleton.js.map +1 -1
  246. package/dist/components/slider.js +13 -36
  247. package/dist/components/slider.js.map +1 -1
  248. package/dist/components/sparkline.js.map +1 -1
  249. package/dist/components/stat-tile.js +14 -10
  250. package/dist/components/stat-tile.js.map +1 -1
  251. package/dist/components/swatch-picker.js +14 -4
  252. package/dist/components/swatch-picker.js.map +1 -1
  253. package/dist/components/swipeable-row.d.ts +1 -1
  254. package/dist/components/swipeable-row.js +1 -8
  255. package/dist/components/swipeable-row.js.map +1 -1
  256. package/dist/components/table-skeleton.js +4 -1
  257. package/dist/components/table-skeleton.js.map +1 -1
  258. package/dist/components/table.js +12 -9
  259. package/dist/components/table.js.map +1 -1
  260. package/dist/components/tabs.js +5 -24
  261. package/dist/components/tabs.js.map +1 -1
  262. package/dist/components/text-link.js.map +1 -1
  263. package/dist/components/text.js.map +1 -1
  264. package/dist/components/tile-radio.js +1 -7
  265. package/dist/components/tile-radio.js.map +1 -1
  266. package/dist/components/time-input.js.map +1 -1
  267. package/dist/components/toast.js.map +1 -1
  268. package/dist/components/toggle-group.js +6 -1
  269. package/dist/components/toggle-group.js.map +1 -1
  270. package/dist/components/toggle-legend.js +2 -11
  271. package/dist/components/toggle-legend.js.map +1 -1
  272. package/dist/components/tooltip.js +2 -22
  273. package/dist/components/tooltip.js.map +1 -1
  274. package/dist/components/translation-review-editor.js +1 -4
  275. package/dist/components/translation-review-editor.js.map +1 -1
  276. package/dist/components/translation-review-parts.d.ts +1 -1
  277. package/dist/components/translation-review-parts.js +7 -1
  278. package/dist/components/translation-review-parts.js.map +1 -1
  279. package/dist/components/translation-review.js +18 -7
  280. package/dist/components/translation-review.js.map +1 -1
  281. package/dist/components/tree-view.js +14 -10
  282. package/dist/components/tree-view.js.map +1 -1
  283. package/dist/components/treemap.js +1 -13
  284. package/dist/components/treemap.js.map +1 -1
  285. package/dist/components/trigger-aria.js.map +1 -1
  286. package/dist/components/use-table-state.js +14 -11
  287. package/dist/components/use-table-state.js.map +1 -1
  288. package/dist/components/user-avatar.js +3 -26
  289. package/dist/components/user-avatar.js.map +1 -1
  290. package/dist/demo/demo-start.js +8 -4
  291. package/dist/demo/demo-start.js.map +1 -1
  292. package/dist/eslint/index.js +1 -1
  293. package/dist/feedback/feedback-attachment-labels.js.map +1 -1
  294. package/dist/feedback/feedback-attachment.js +1 -8
  295. package/dist/feedback/feedback-attachment.js.map +1 -1
  296. package/dist/feedback/feedback-capture.d.ts +1 -1
  297. package/dist/feedback/feedback-capture.js +3 -1
  298. package/dist/feedback/feedback-capture.js.map +1 -1
  299. package/dist/feedback/feedback-comment-thread.js +27 -13
  300. package/dist/feedback/feedback-comment-thread.js.map +1 -1
  301. package/dist/feedback/feedback-context.js +1 -4
  302. package/dist/feedback/feedback-context.js.map +1 -1
  303. package/dist/feedback/feedback-dialog.js.map +1 -1
  304. package/dist/feedback/feedback-inbox.js.map +1 -1
  305. package/dist/feedback/feedback-public-list.js +7 -1
  306. package/dist/feedback/feedback-public-list.js.map +1 -1
  307. package/dist/feedback/feedback-record.js +1 -5
  308. package/dist/feedback/feedback-record.js.map +1 -1
  309. package/dist/feedback/feedback-replies.js +25 -10
  310. package/dist/feedback/feedback-replies.js.map +1 -1
  311. package/dist/feedback/feedback-row-detail.js.map +1 -1
  312. package/dist/feedback/feedback-status-undo.js.map +1 -1
  313. package/dist/feedback/feedback-submit-dialog.js.map +1 -1
  314. package/dist/feedback/feedback-table.d.ts +3 -1
  315. package/dist/feedback/feedback-table.js +22 -5
  316. package/dist/feedback/feedback-table.js.map +1 -1
  317. package/dist/feedback/feedback-thread.js +2 -13
  318. package/dist/feedback/feedback-thread.js.map +1 -1
  319. package/dist/feedback/feedback-vocabulary.js.map +1 -1
  320. package/dist/feedback/feedback-vote-button.js.map +1 -1
  321. package/dist/hooks/use-anchored-rect.js.map +1 -1
  322. package/dist/hooks/use-document-title.js.map +1 -1
  323. package/dist/hooks/use-file-drop.js.map +1 -1
  324. package/dist/hooks/use-file-picker-labels.js.map +1 -1
  325. package/dist/hooks/use-file-picker.js.map +1 -1
  326. package/dist/hooks/use-focus-trap.js.map +1 -1
  327. package/dist/hooks/use-overlay-history.js +10 -5
  328. package/dist/hooks/use-overlay-history.js.map +1 -1
  329. package/dist/hooks/use-row-swipe.d.ts +1 -1
  330. package/dist/hooks/use-row-swipe.js +1 -6
  331. package/dist/hooks/use-row-swipe.js.map +1 -1
  332. package/dist/i18n/defaults.js +1 -4
  333. package/dist/i18n/defaults.js.map +1 -1
  334. package/dist/i18n/german.js +15 -4
  335. package/dist/i18n/german.js.map +1 -1
  336. package/dist/i18n/kit-labels.js +2 -8
  337. package/dist/i18n/kit-labels.js.map +1 -1
  338. package/dist/i18n/languages.js.map +1 -1
  339. package/dist/i18n/locales/en.js +19 -4
  340. package/dist/i18n/locales/en.js.map +2 -2
  341. package/dist/i18n/locales/es.js +15 -4
  342. package/dist/i18n/locales/es.js.map +1 -1
  343. package/dist/i18n/locales/fr.js +15 -4
  344. package/dist/i18n/locales/fr.js.map +1 -1
  345. package/dist/i18n/locales/hu.js +15 -4
  346. package/dist/i18n/locales/hu.js.map +1 -1
  347. package/dist/i18n/locales/it.js +15 -4
  348. package/dist/i18n/locales/it.js.map +1 -1
  349. package/dist/i18n/locales/zh.js +11 -3
  350. package/dist/i18n/locales/zh.js.map +1 -1
  351. package/dist/i18n/plurals.js.map +1 -1
  352. package/dist/i18n/review.js +15 -7
  353. package/dist/i18n/review.js.map +1 -1
  354. package/dist/i18n/shared-labels.js.map +1 -1
  355. package/dist/index.d.ts +17 -17
  356. package/dist/index.js +40 -23
  357. package/dist/index.js.map +1 -1
  358. package/dist/landing/access.js +1 -4
  359. package/dist/landing/access.js.map +1 -1
  360. package/dist/landing/landing-sections.js +35 -38
  361. package/dist/landing/landing-sections.js.map +1 -1
  362. package/dist/landing/page-seo.js.map +1 -1
  363. package/dist/lib/calc.js.map +1 -1
  364. package/dist/lib/clipboard-minus.js.map +1 -1
  365. package/dist/lib/dates.js.map +1 -1
  366. package/dist/lib/decimal-marks.js.map +1 -1
  367. package/dist/lib/device-settings.js +2 -1
  368. package/dist/lib/device-settings.js.map +1 -1
  369. package/dist/lib/direction.js.map +1 -1
  370. package/dist/lib/iban.js.map +1 -1
  371. package/dist/lib/logger.js +1 -5
  372. package/dist/lib/logger.js.map +1 -1
  373. package/dist/lib/person-name.js.map +1 -1
  374. package/dist/lib/phone.js.map +1 -1
  375. package/dist/lib/qr-encode.js +344 -8
  376. package/dist/lib/qr-encode.js.map +1 -1
  377. package/dist/lib/session-refresh.js.map +1 -1
  378. package/dist/lib/table-text.js +15 -3
  379. package/dist/lib/table-text.js.map +1 -1
  380. package/dist/lib/text-match.d.ts +20 -0
  381. package/dist/lib/text-match.js +11 -1
  382. package/dist/lib/text-match.js.map +1 -1
  383. package/dist/lib/translation-review.js.map +1 -1
  384. package/dist/notifications/notification-inbox.js +63 -44
  385. package/dist/notifications/notification-inbox.js.map +1 -1
  386. package/dist/notifications/notification-parts.js.map +1 -1
  387. package/dist/notifications/notification-types-setting.js.map +1 -1
  388. package/dist/notifications/notifications-labels.js.map +1 -1
  389. package/dist/notifications/push-device-setting.js +6 -1
  390. package/dist/notifications/push-device-setting.js.map +1 -1
  391. package/dist/notifications/push-devices-setting.js.map +1 -1
  392. package/dist/notifications/push-worker.js.map +1 -1
  393. package/dist/notifications/quiet-hours-setting.js.map +1 -1
  394. package/dist/notifications/use-push-device.js +4 -1
  395. package/dist/notifications/use-push-device.js.map +1 -1
  396. package/dist/offline/pwa-update-prompt.d.ts +1 -1
  397. package/dist/offline/pwa-update-prompt.js +7 -1
  398. package/dist/offline/pwa-update-prompt.js.map +1 -1
  399. package/dist/offline/query-persistence.js.map +1 -1
  400. package/dist/offline.d.ts +1 -1
  401. package/dist/offline.js +6 -1
  402. package/dist/offline.js.map +1 -1
  403. package/dist/pay/pay.css +8 -1
  404. package/dist/rhf/fields.d.ts +1 -2
  405. package/dist/rhf/fields.js +1 -10
  406. package/dist/rhf/fields.js.map +1 -1
  407. package/dist/rhf/form-core.js +1 -4
  408. package/dist/rhf/form-core.js.map +1 -1
  409. package/dist/rhf/line-items.js.map +1 -1
  410. package/dist/rhf/use-rhf-wizard-step.js.map +1 -1
  411. package/dist/search/command-palette.js +71 -62
  412. package/dist/search/command-palette.js.map +1 -1
  413. package/dist/search/global-search.js +34 -5
  414. package/dist/search/global-search.js.map +1 -1
  415. package/dist/search/search-index.js.map +1 -1
  416. package/dist/settings/device-reset-setting.js +1 -6
  417. package/dist/settings/device-reset-setting.js.map +1 -1
  418. package/dist/settings/settings-heading.js.map +1 -1
  419. package/dist/settings/settings-layout.js +9 -20
  420. package/dist/settings/settings-layout.js.map +1 -1
  421. package/dist/settings/use-settings-focus.d.ts +7 -0
  422. package/dist/settings/use-settings-focus.js +2 -0
  423. package/dist/settings/use-settings-focus.js.map +1 -1
  424. package/dist/settings/use-settings-route.js.map +1 -1
  425. package/dist/shell/app-shell.js +62 -31
  426. package/dist/shell/app-shell.js.map +1 -1
  427. package/dist/shell/auth-layout.js +1 -10
  428. package/dist/shell/auth-layout.js.map +1 -1
  429. package/dist/shell/dev-menu.d.ts +5 -0
  430. package/dist/shell/dev-menu.js +14 -7
  431. package/dist/shell/dev-menu.js.map +1 -1
  432. package/dist/shell/option-switcher-menu.js.map +1 -1
  433. package/dist/shell/sync-status-indicator.js +7 -6
  434. package/dist/shell/sync-status-indicator.js.map +1 -1
  435. package/dist/shell/top-bar-parts-labels.js.map +1 -1
  436. package/dist/shell/topbar-action-menu.d.ts +14 -1
  437. package/dist/shell/topbar-action-menu.js +85 -34
  438. package/dist/shell/topbar-action-menu.js.map +1 -1
  439. package/dist/shell/topbar-controls.js +1 -10
  440. package/dist/shell/topbar-controls.js.map +1 -1
  441. package/dist/shell/tour-menu.js +9 -1
  442. package/dist/shell/tour-menu.js.map +1 -1
  443. package/dist/shell.d.ts +1 -1
  444. package/dist/shell.js +2 -1
  445. package/dist/shell.js.map +1 -1
  446. package/dist/sync/db.js.map +1 -1
  447. package/dist/sync/engine.js +24 -6
  448. package/dist/sync/engine.js.map +1 -1
  449. package/dist/sync.d.ts +2 -2
  450. package/dist/sync.js +7 -1
  451. package/dist/sync.js.map +1 -1
  452. package/dist/testing/css-variables.js.map +1 -1
  453. package/dist/testing/index.d.ts +1 -1
  454. package/dist/testing/index.js +1 -3
  455. package/dist/testing/index.js.map +1 -1
  456. package/dist/testing/react.js.map +1 -1
  457. package/dist/testing/viewport.js +7 -4
  458. package/dist/testing/viewport.js.map +1 -1
  459. package/dist/theme/contrast-tokens.js +13 -2
  460. package/dist/theme/contrast-tokens.js.map +1 -1
  461. package/dist/theme/palette-derive.d.ts +1 -1
  462. package/dist/theme/palette-derive.js +18 -29
  463. package/dist/theme/palette-derive.js.map +1 -1
  464. package/dist/theme/palette-presets.js.map +1 -1
  465. package/dist/theme/palette-store.js.map +1 -1
  466. package/dist/theme/text-size.js.map +1 -1
  467. package/dist/theme/theme-store.js +1 -3
  468. package/dist/theme/theme-store.js.map +1 -1
  469. package/dist/tour/tour-catalogue.js.map +1 -1
  470. package/dist/tour/tour-dock.js +5 -1
  471. package/dist/tour/tour-dock.js.map +1 -1
  472. package/dist/tour/tour-engine.js +1 -4
  473. package/dist/tour/tour-engine.js.map +1 -1
  474. package/dist/tour/tour.js +21 -12
  475. package/dist/tour/tour.js.map +1 -1
  476. package/dist/tour/use-tour-progress.js.map +1 -1
  477. package/dist/tour/use-tour-url-sync.js.map +1 -1
  478. package/dist/wizard/stepper-nav.js +3 -24
  479. package/dist/wizard/stepper-nav.js.map +1 -1
  480. package/dist/wizard/types.js.map +1 -1
  481. package/dist/wizard/use-wizard.js +24 -28
  482. package/dist/wizard/use-wizard.js.map +1 -1
  483. package/dist/wizard/validation.js.map +1 -1
  484. package/dist/wizard/wizard-context.js.map +1 -1
  485. package/dist/wizard/wizard-step.d.ts +1 -1
  486. package/dist/wizard/wizard-step.js +1 -8
  487. package/dist/wizard/wizard-step.js.map +1 -1
  488. package/dist/wizard/wizard-summary.js.map +1 -1
  489. package/package.json +5 -2
  490. package/src/account/account-settings-labels.ts +1 -2
  491. package/src/account/account-settings.tsx +11 -17
  492. package/src/account/delete-account-setting.tsx +1 -6
  493. package/src/account/email-change-setting-labels.ts +1 -2
  494. package/src/account/email-change-setting.tsx +3 -1
  495. package/src/account/passkeys-setting.tsx +1 -3
  496. package/src/account/sessions-setting.tsx +4 -2
  497. package/src/admin/admin-action-confirm.tsx +4 -7
  498. package/src/admin/admin-action-log.tsx +29 -29
  499. package/src/admin/admin-area-labels.ts +4 -1
  500. package/src/admin/admin-overview.tsx +8 -2
  501. package/src/admin/admin-sections.tsx +3 -1
  502. package/src/admin/admin-tool-links.tsx +7 -1
  503. package/src/admin/invitations-panel.tsx +5 -11
  504. package/src/admin/mail-test-card.tsx +1 -2
  505. package/src/admin/reviewer-scope-editor.tsx +4 -9
  506. package/src/admin/role-select.tsx +4 -2
  507. package/src/admin/user-roster.tsx +2 -11
  508. package/src/auth/accept-invitation.tsx +1 -7
  509. package/src/auth/auth-errors.ts +1 -6
  510. package/src/auth/forgot-password-form.tsx +2 -7
  511. package/src/auth/register-form.tsx +7 -8
  512. package/src/auth/reset-password-form.tsx +2 -5
  513. package/src/auth/sign-in-form.tsx +15 -14
  514. package/src/auth/verify-email.tsx +2 -7
  515. package/src/billing/billing-banner.tsx +3 -7
  516. package/src/billing/billing-labels.ts +6 -4
  517. package/src/billing/checkout-processing.ts +0 -1
  518. package/src/billing/plan-card.tsx +9 -8
  519. package/src/billing/plan-limit-toast.tsx +1 -2
  520. package/src/billing/plan-limit.ts +1 -2
  521. package/src/billing/plan-price.ts +1 -4
  522. package/src/billing/plan-switch.tsx +1 -2
  523. package/src/billing/subscription-actions.tsx +5 -2
  524. package/src/components/account-chips.tsx +1 -7
  525. package/src/components/alert-banner.tsx +2 -8
  526. package/src/components/amount-input.tsx +206 -178
  527. package/src/components/authed-image.tsx +7 -4
  528. package/src/components/autocomplete.tsx +7 -9
  529. package/src/components/bulk-action-bar.tsx +2 -7
  530. package/src/components/button-group.tsx +1 -2
  531. package/src/components/button-look.ts +6 -17
  532. package/src/components/button.tsx +1 -4
  533. package/src/components/calculator.tsx +6 -9
  534. package/src/components/calendar-heatmap.tsx +5 -10
  535. package/src/components/card.tsx +9 -13
  536. package/src/components/chart-zoom-core.tsx +6 -33
  537. package/src/components/chart.tsx +8 -31
  538. package/src/components/checkbox-group.tsx +1 -4
  539. package/src/components/chip-input.tsx +6 -6
  540. package/src/components/chip.tsx +14 -26
  541. package/src/components/choice-card.tsx +4 -18
  542. package/src/components/column-mapper-labels.ts +3 -10
  543. package/src/components/column-mapper.tsx +33 -122
  544. package/src/components/combobox-core.tsx +17 -47
  545. package/src/components/combobox.tsx +2 -6
  546. package/src/components/confirm-dialog.tsx +1 -3
  547. package/src/components/copy-button.tsx +2 -4
  548. package/src/components/country-select.tsx +9 -21
  549. package/src/components/currency-option-list.tsx +16 -18
  550. package/src/components/currency-select.tsx +2 -7
  551. package/src/components/danger-confirm.tsx +8 -9
  552. package/src/components/data-table-cells.tsx +1 -2
  553. package/src/components/data-table-column-settings.tsx +1 -3
  554. package/src/components/data-table-filter-popover.tsx +5 -19
  555. package/src/components/data-table-filters.ts +1 -6
  556. package/src/components/data-table-fit.ts +7 -7
  557. package/src/components/data-table-groups.tsx +3 -1
  558. package/src/components/data-table-head.tsx +32 -46
  559. package/src/components/data-table-mobile.tsx +99 -108
  560. package/src/components/data-table-pagination.tsx +2 -6
  561. package/src/components/data-table-row-actions.tsx +25 -24
  562. package/src/components/data-table-row.tsx +16 -17
  563. package/src/components/data-table-shared.tsx +10 -16
  564. package/src/components/data-table-sort.ts +1 -2
  565. package/src/components/data-table-virtual.ts +9 -4
  566. package/src/components/data-table.tsx +497 -501
  567. package/src/components/date-picker.tsx +1 -7
  568. package/src/components/date-range-picker.tsx +3 -13
  569. package/src/components/description-list.tsx +7 -13
  570. package/src/components/dialog-frame.tsx +12 -3
  571. package/src/components/disclosure.tsx +8 -12
  572. package/src/components/dropdown.tsx +3 -11
  573. package/src/components/empty-state.tsx +1 -3
  574. package/src/components/entity-combobox.tsx +2 -6
  575. package/src/components/error-boundary.tsx +7 -7
  576. package/src/components/field-base.tsx +8 -14
  577. package/src/components/field-parts.tsx +12 -23
  578. package/src/components/field-sync.tsx +7 -11
  579. package/src/components/file-button.tsx +7 -3
  580. package/src/components/file-dropzone.tsx +7 -12
  581. package/src/components/floating-panel.tsx +44 -51
  582. package/src/components/focus-ring.ts +1 -2
  583. package/src/components/form-actions.tsx +1 -4
  584. package/src/components/grouped-picker.tsx +21 -16
  585. package/src/components/hover-menu.tsx +1 -4
  586. package/src/components/iban-input-labels.ts +1 -2
  587. package/src/components/icon-button.tsx +46 -48
  588. package/src/components/icon-picker.tsx +9 -20
  589. package/src/components/image-grid.tsx +1 -6
  590. package/src/components/inline-edit-field.tsx +1 -5
  591. package/src/components/inline-entity-combobox.tsx +11 -25
  592. package/src/components/input.tsx +14 -2
  593. package/src/components/jump-calendar.tsx +2 -6
  594. package/src/components/legal-labels.ts +8 -3
  595. package/src/components/legal-page.tsx +56 -6
  596. package/src/components/legal.tsx +83 -10
  597. package/src/components/lightbox.tsx +1 -3
  598. package/src/components/line-items.tsx +7 -15
  599. package/src/components/list-labels.ts +2 -0
  600. package/src/components/list.tsx +81 -27
  601. package/src/components/measured-grid.tsx +8 -30
  602. package/src/components/menu-item.tsx +1 -3
  603. package/src/components/mini-calendar.tsx +129 -159
  604. package/src/components/money-field.tsx +4 -2
  605. package/src/components/month-picker.tsx +14 -21
  606. package/src/components/multi-entity-combobox.tsx +6 -26
  607. package/src/components/multi-select.tsx +5 -9
  608. package/src/components/nav-pills.tsx +10 -2
  609. package/src/components/number-field.tsx +18 -15
  610. package/src/components/number-input.tsx +3 -19
  611. package/src/components/numpad-sheet.tsx +9 -13
  612. package/src/components/one-time-code-input.tsx +6 -11
  613. package/src/components/page-contents.tsx +2 -9
  614. package/src/components/page-header.tsx +5 -10
  615. package/src/components/password-strength-labels.ts +1 -2
  616. package/src/components/password-strength.tsx +6 -9
  617. package/src/components/phone-input.tsx +2 -13
  618. package/src/components/picker-sheet.tsx +2 -5
  619. package/src/components/pie-chart.tsx +6 -12
  620. package/src/components/popover.tsx +2 -1
  621. package/src/components/progress-bar.tsx +16 -25
  622. package/src/components/qr-code.tsx +2 -9
  623. package/src/components/row-actions.tsx +9 -1
  624. package/src/components/search-field.tsx +4 -5
  625. package/src/components/select.tsx +2 -10
  626. package/src/components/separator.tsx +1 -5
  627. package/src/components/series-chart-axes.ts +5 -5
  628. package/src/components/series-chart-budget.ts +1 -4
  629. package/src/components/series-chart-ticks.ts +1 -4
  630. package/src/components/series-chart.tsx +43 -83
  631. package/src/components/settings-fields.tsx +20 -15
  632. package/src/components/share-card.tsx +6 -14
  633. package/src/components/sign-chip.tsx +16 -16
  634. package/src/components/signature-pad.tsx +21 -13
  635. package/src/components/signed-amount.tsx +6 -14
  636. package/src/components/skeleton.tsx +2 -13
  637. package/src/components/slider.tsx +9 -20
  638. package/src/components/sparkline.tsx +2 -13
  639. package/src/components/stat-tile.tsx +13 -24
  640. package/src/components/swatch-picker.tsx +8 -3
  641. package/src/components/swipeable-row.tsx +2 -11
  642. package/src/components/table-skeleton.tsx +4 -1
  643. package/src/components/table.tsx +12 -8
  644. package/src/components/tabs.tsx +24 -39
  645. package/src/components/text-link.tsx +6 -6
  646. package/src/components/text.tsx +1 -2
  647. package/src/components/tile-radio.tsx +6 -19
  648. package/src/components/time-input.tsx +4 -5
  649. package/src/components/toast.tsx +3 -12
  650. package/src/components/toggle-group.tsx +9 -9
  651. package/src/components/toggle-legend.tsx +4 -16
  652. package/src/components/tooltip.tsx +9 -48
  653. package/src/components/translation-review-editor.tsx +4 -4
  654. package/src/components/translation-review-parts.tsx +7 -1
  655. package/src/components/translation-review.tsx +15 -16
  656. package/src/components/tree-view.tsx +17 -20
  657. package/src/components/treemap.tsx +3 -15
  658. package/src/components/trigger-aria.ts +1 -4
  659. package/src/components/use-table-state.ts +16 -17
  660. package/src/components/user-avatar.tsx +4 -21
  661. package/src/demo/demo-start.tsx +8 -4
  662. package/src/feedback/feedback-attachment-labels.ts +2 -1
  663. package/src/feedback/feedback-attachment.tsx +16 -29
  664. package/src/feedback/feedback-capture.ts +3 -1
  665. package/src/feedback/feedback-comment-thread.tsx +9 -6
  666. package/src/feedback/feedback-context.tsx +1 -4
  667. package/src/feedback/feedback-dialog.tsx +3 -4
  668. package/src/feedback/feedback-inbox.tsx +3 -9
  669. package/src/feedback/feedback-public-list.tsx +7 -1
  670. package/src/feedback/feedback-record.ts +6 -14
  671. package/src/feedback/feedback-replies.tsx +10 -5
  672. package/src/feedback/feedback-row-detail.tsx +2 -5
  673. package/src/feedback/feedback-status-undo.ts +1 -4
  674. package/src/feedback/feedback-submit-dialog.tsx +4 -4
  675. package/src/feedback/feedback-table.tsx +29 -9
  676. package/src/feedback/feedback-thread.tsx +4 -16
  677. package/src/feedback/feedback-vocabulary.ts +72 -82
  678. package/src/feedback/feedback-vote-button.tsx +9 -8
  679. package/src/hooks/use-anchored-rect.ts +1 -4
  680. package/src/hooks/use-document-title.ts +3 -1
  681. package/src/hooks/use-file-drop.ts +1 -3
  682. package/src/hooks/use-file-picker-labels.ts +1 -2
  683. package/src/hooks/use-file-picker.tsx +1 -5
  684. package/src/hooks/use-focus-trap.ts +1 -2
  685. package/src/hooks/use-overlay-history.ts +10 -5
  686. package/src/hooks/use-row-swipe.ts +1 -6
  687. package/src/i18n/defaults.ts +1 -4
  688. package/src/i18n/german.ts +42 -50
  689. package/src/i18n/kit-labels.tsx +5 -20
  690. package/src/i18n/languages.ts +2 -8
  691. package/src/i18n/locales/en.ts +15 -31
  692. package/src/i18n/locales/es.ts +44 -50
  693. package/src/i18n/locales/fr.ts +43 -52
  694. package/src/i18n/locales/hu.ts +35 -38
  695. package/src/i18n/locales/it.ts +44 -53
  696. package/src/i18n/locales/zh.ts +23 -33
  697. package/src/i18n/plurals.ts +4 -1
  698. package/src/i18n/review.ts +20 -7
  699. package/src/i18n/shared-labels.ts +1 -2
  700. package/src/index.ts +107 -32
  701. package/src/landing/access.ts +2 -7
  702. package/src/landing/landing-sections.tsx +14 -15
  703. package/src/landing/page-seo.ts +1 -3
  704. package/src/lib/calc.ts +4 -1
  705. package/src/lib/clipboard-minus.ts +4 -1
  706. package/src/lib/dates.ts +2 -10
  707. package/src/lib/decimal-marks.ts +1 -3
  708. package/src/lib/device-settings.ts +2 -1
  709. package/src/lib/direction.ts +1 -3
  710. package/src/lib/iban.ts +89 -9
  711. package/src/lib/logger.ts +1 -5
  712. package/src/lib/person-name.ts +1 -3
  713. package/src/lib/phone.ts +5 -8
  714. package/src/lib/qr-encode.ts +32 -8
  715. package/src/lib/session-refresh.ts +5 -6
  716. package/src/lib/table-text.ts +24 -6
  717. package/src/lib/text-match.ts +43 -1
  718. package/src/lib/translation-review.ts +1 -3
  719. package/src/notifications/notification-inbox.tsx +17 -4
  720. package/src/notifications/notification-parts.tsx +1 -2
  721. package/src/notifications/notification-types-setting.tsx +19 -18
  722. package/src/notifications/notifications-labels.ts +1 -2
  723. package/src/notifications/push-device-setting.tsx +7 -1
  724. package/src/notifications/push-devices-setting.tsx +7 -3
  725. package/src/notifications/push-worker.ts +10 -2
  726. package/src/notifications/quiet-hours-setting.tsx +4 -1
  727. package/src/notifications/use-push-device.ts +4 -1
  728. package/src/offline/pwa-update-prompt.tsx +7 -1
  729. package/src/offline/query-persistence.ts +9 -6
  730. package/src/offline.ts +6 -1
  731. package/src/rhf/fields.tsx +50 -19
  732. package/src/rhf/form-core.tsx +2 -6
  733. package/src/rhf/line-items.tsx +5 -7
  734. package/src/rhf/use-rhf-wizard-step.ts +3 -12
  735. package/src/search/command-palette.tsx +15 -23
  736. package/src/search/global-search.tsx +38 -8
  737. package/src/search/search-index.ts +5 -1
  738. package/src/settings/device-reset-setting.tsx +5 -8
  739. package/src/settings/settings-heading.tsx +3 -1
  740. package/src/settings/settings-layout.tsx +6 -13
  741. package/src/settings/use-settings-focus.ts +8 -0
  742. package/src/settings/use-settings-route.ts +4 -3
  743. package/src/shell/app-shell.tsx +48 -24
  744. package/src/shell/auth-layout.tsx +1 -6
  745. package/src/shell/dev-menu.tsx +18 -6
  746. package/src/shell/option-switcher-menu.tsx +1 -3
  747. package/src/shell/sync-status-indicator.tsx +14 -12
  748. package/src/shell/top-bar-parts-labels.ts +1 -3
  749. package/src/shell/topbar-action-menu.tsx +130 -45
  750. package/src/shell/topbar-controls.tsx +5 -19
  751. package/src/shell/tour-menu.tsx +9 -1
  752. package/src/shell.ts +1 -1
  753. package/src/sync/db.ts +5 -1
  754. package/src/sync/engine.ts +44 -12
  755. package/src/sync.ts +16 -2
  756. package/src/testing/css-variables.ts +1 -2
  757. package/src/testing/index.ts +1 -6
  758. package/src/testing/react.ts +1 -2
  759. package/src/testing/viewport.ts +9 -9
  760. package/src/theme/contrast-tokens.ts +13 -2
  761. package/src/theme/palette-derive.ts +24 -50
  762. package/src/theme/palette-presets.ts +0 -1
  763. package/src/theme/palette-store.ts +1 -4
  764. package/src/theme/text-size.ts +1 -1
  765. package/src/theme/theme-store.ts +2 -6
  766. package/src/tour/tour-catalogue.tsx +4 -2
  767. package/src/tour/tour-dock.ts +5 -1
  768. package/src/tour/tour-engine.ts +2 -6
  769. package/src/tour/tour.tsx +28 -12
  770. package/src/tour/use-tour-progress.ts +8 -2
  771. package/src/tour/use-tour-url-sync.ts +3 -1
  772. package/src/vite-env.d.ts +1 -4
  773. package/src/wizard/stepper-nav.tsx +10 -35
  774. package/src/wizard/types.ts +1 -4
  775. package/src/wizard/use-wizard.ts +28 -43
  776. package/src/wizard/validation.ts +1 -5
  777. package/src/wizard/wizard-context.tsx +2 -6
  778. package/src/wizard/wizard-step.tsx +1 -8
  779. package/src/wizard/wizard-summary.tsx +2 -6
  780. package/tokens.css +393 -152
@@ -286,7 +286,19 @@ export function RhfField<
286
286
 
287
287
  type OwnInputProps = Omit<
288
288
  InputProps,
289
- "name" | "value" | "defaultValue" | "onChange" | "onBlur" | "ref" | "label" | "error" | "invalid" | "className" | "disabled" | "required" | "inputClassName"
289
+ | "name"
290
+ | "value"
291
+ | "defaultValue"
292
+ | "onChange"
293
+ | "onBlur"
294
+ | "ref"
295
+ | "label"
296
+ | "error"
297
+ | "invalid"
298
+ | "className"
299
+ | "disabled"
300
+ | "required"
301
+ | "inputClassName"
290
302
  > & {
291
303
  /**
292
304
  * Classes for the `<input>` — `className` is the item's box (kastlan 42: a
@@ -344,7 +356,18 @@ export function RhfTextField<
344
356
 
345
357
  type OwnTextareaProps = Omit<
346
358
  TextareaProps,
347
- "name" | "value" | "defaultValue" | "onChange" | "onBlur" | "ref" | "label" | "error" | "invalid" | "className" | "disabled" | "required"
359
+ | "name"
360
+ | "value"
361
+ | "defaultValue"
362
+ | "onChange"
363
+ | "onBlur"
364
+ | "ref"
365
+ | "label"
366
+ | "error"
367
+ | "invalid"
368
+ | "className"
369
+ | "disabled"
370
+ | "required"
348
371
  > & {
349
372
  /** Classes for the `<textarea>`. */
350
373
  inputClassName?: string;
@@ -420,8 +443,23 @@ function toNumber(value: unknown, mark: "," | "."): number | null {
420
443
  * label, the hint, the item's `className`). Everything else of the field's passes
421
444
  * through (DUP-9, refactor audit 2026-10: a `Pick` allow-list dropped what the field
422
445
  * gained without a word). */
423
- type BoundByForm = "value" | "defaultValue" | "onChange" | "onBlur" | "ref" | "name" | "disabled" | "required"
424
- | "invalid" | "error" | "label" | "hint" | "className" | "aria-describedby" | "aria-invalid" | "aria-required";
446
+ type BoundByForm =
447
+ | "value"
448
+ | "defaultValue"
449
+ | "onChange"
450
+ | "onBlur"
451
+ | "ref"
452
+ | "name"
453
+ | "disabled"
454
+ | "required"
455
+ | "invalid"
456
+ | "error"
457
+ | "label"
458
+ | "hint"
459
+ | "className"
460
+ | "aria-describedby"
461
+ | "aria-invalid"
462
+ | "aria-required";
425
463
 
426
464
  export type RhfNumberFieldProps<
427
465
  TFieldValues extends FieldValues = FieldValues,
@@ -1009,12 +1047,7 @@ function RangeBody({
1009
1047
  {messages.map((message, i) => (
1010
1048
  // FormMessage's look and its rule: no `role="alert"` — read when focus reaches
1011
1049
  // the trigger, which names these in its description.
1012
- <p
1013
- key={message}
1014
- id={messageIds[i]}
1015
- data-slot="form-message"
1016
- className="text-caption leading-tight text-danger"
1017
- >
1050
+ <p key={message} id={messageIds[i]} data-slot="form-message" className="text-caption leading-tight text-danger">
1018
1051
  {message}
1019
1052
  </p>
1020
1053
  ))}
@@ -1565,13 +1598,14 @@ export type RhfCheckboxProps<
1565
1598
  TFieldValues extends FieldValues = FieldValues,
1566
1599
  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,
1567
1600
  TTransformed = TFieldValues,
1568
- > = // No `help` (0.36): a box has no label line — its label sits beside it, inside the
1601
+ > =
1602
+ // No `help` (0.36): a box has no label line — its label sits beside it, inside the
1569
1603
  // `<label>` a "?" cannot join — and Checkbox takes none.
1570
1604
  Omit<RhfFieldBaseProps<TFieldValues, TName, TTransformed>, "help"> &
1571
- // Checkbox's own — its lock (`commit`, `disabledReason`) among them, which a `Pick`
1572
- // list dropped until 0.34 (DUP-9) — less the box's state the form holds, and its
1573
- // `description`, which is the twin's `hint`.
1574
- Omit<CheckboxProps, BoundByForm | "checked" | "defaultChecked" | "onCheckedChange" | "description">;
1605
+ // Checkbox's own — its lock (`commit`, `disabledReason`) among them, which a `Pick`
1606
+ // list dropped until 0.34 (DUP-9) — less the box's state the form holds, and its
1607
+ // `description`, which is the twin's `hint`.
1608
+ Omit<CheckboxProps, BoundByForm | "checked" | "defaultChecked" | "onCheckedChange" | "description">;
1575
1609
 
1576
1610
  /**
1577
1611
  * The kit's {@link Checkbox}, label beside the box and `hint` under it (the
@@ -1652,10 +1686,7 @@ export type RhfToggleGroupProps<
1652
1686
  // The group's own (its `disabledReasonDisplay` was not on the `Pick` list this was
1653
1687
  // until 0.34, DUP-9), less what the form binds, the ids, and the label's placement:
1654
1688
  // the label is the form's, above.
1655
- Omit<
1656
- ToggleGroupBaseProps<T>,
1657
- BoundByForm | "id" | "aria-labelledby" | "labelPlacement" | "chromeClassName"
1658
- > & {
1689
+ Omit<ToggleGroupBaseProps<T>, BoundByForm | "id" | "aria-labelledby" | "labelPlacement" | "chromeClassName"> & {
1659
1690
  /** Classes for the group itself — `className` is the item's box. */
1660
1691
  groupClassName?: string;
1661
1692
  } & RhfToggleGroupMode<T>;
@@ -164,10 +164,7 @@ export function useFormField() {
164
164
  const state = getFieldState(field.name, formState);
165
165
  const formDescriptionId = `${item.id}-description`;
166
166
  const formMessageId = `${item.id}-message`;
167
- const describedBy = [
168
- item.mounted.description && formDescriptionId,
169
- item.mounted.message && formMessageId,
170
- ]
167
+ const describedBy = [item.mounted.description && formDescriptionId, item.mounted.message && formMessageId]
171
168
  .filter(Boolean)
172
169
  .join(" ");
173
170
  return {
@@ -195,8 +192,7 @@ export function FormItem({ className, ...rest }: FormItemProps) {
195
192
  message: false,
196
193
  });
197
194
  const mark = useCallback(
198
- (slot: Described, on: boolean) =>
199
- setMounted((prev) => (prev[slot] === on ? prev : { ...prev, [slot]: on })),
195
+ (slot: Described, on: boolean) => setMounted((prev) => (prev[slot] === on ? prev : { ...prev, [slot]: on })),
200
196
  [],
201
197
  );
202
198
  const value = useMemo(() => ({ id, mounted, mark }), [id, mounted, mark]);
@@ -49,15 +49,13 @@ import {
49
49
  } from "../components/line-items";
50
50
 
51
51
  /** A cell's context, with the row's path in the form. */
52
- export interface RhfLineItemCellContext<TItem, TArrayName extends string>
53
- extends LineItemCellContext<TItem> {
52
+ export interface RhfLineItemCellContext<TItem, TArrayName extends string> extends LineItemCellContext<TItem> {
54
53
  /** The row's path: `${name}.${index}` — bind the cell's field to
55
54
  * `` `${name}.amount` ``. */
56
55
  name: `${TArrayName}.${number}`;
57
56
  }
58
57
 
59
- export interface RhfLineItemsColumn<TItem, TArrayName extends string>
60
- extends Omit<LineItemsColumn<TItem>, "render"> {
58
+ export interface RhfLineItemsColumn<TItem, TArrayName extends string> extends Omit<LineItemsColumn<TItem>, "render"> {
61
59
  render: (ctx: RhfLineItemCellContext<TItem, TArrayName>) => ReactNode;
62
60
  }
63
61
 
@@ -66,9 +64,9 @@ export interface RhfLineItemsProps<
66
64
  TArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>,
67
65
  TTransformed = TFieldValues,
68
66
  > extends Omit<
69
- LineItemsProps<FieldArrayWithId<TFieldValues, TArrayName, "id">>,
70
- "items" | "columns" | "onAdd" | "onRemove" | "getKey"
71
- > {
67
+ LineItemsProps<FieldArrayWithId<TFieldValues, TArrayName, "id">>,
68
+ "items" | "columns" | "onAdd" | "onRemove" | "getKey"
69
+ > {
72
70
  name: TArrayName;
73
71
  /** `form.control`. Optional under `<Form {...form}>`. */
74
72
  control?: UseFieldArrayProps<TFieldValues, TArrayName, "id", TTransformed>["control"];
@@ -45,10 +45,7 @@ import { useCallback, useEffect, useRef } from "react";
45
45
  import type { FieldPath, FieldValues, UseFormReturn } from "react-hook-form";
46
46
  import { useOptionalWizardContext } from "../wizard/wizard-context";
47
47
 
48
- export type RhfWizardStepOptions<
49
- TFieldValues extends FieldValues,
50
- TTransformed = TFieldValues,
51
- > =
48
+ export type RhfWizardStepOptions<TFieldValues extends FieldValues, TTransformed = TFieldValues> =
52
49
  | {
53
50
  /** Validate only these fields — the step's share of a form that spans steps. */
54
51
  fields: readonly FieldPath<TFieldValues>[];
@@ -68,15 +65,9 @@ export type RhfWizardStepOptions<
68
65
  * Connects `form` to the wizard's step validation and returns the step's validator.
69
66
  * See the module note for the two modes.
70
67
  */
71
- export function useRhfWizardStep<
72
- TFieldValues extends FieldValues,
73
- TContext = unknown,
74
- TTransformed = TFieldValues,
75
- >(
68
+ export function useRhfWizardStep<TFieldValues extends FieldValues, TContext = unknown, TTransformed = TFieldValues>(
76
69
  form: UseFormReturn<TFieldValues, TContext, TTransformed>,
77
- options?:
78
- | RhfWizardStepOptions<TFieldValues, TTransformed>
79
- | ((values: TTransformed) => void),
70
+ options?: RhfWizardStepOptions<TFieldValues, TTransformed> | ((values: TTransformed) => void),
80
71
  ): () => Promise<boolean> {
81
72
  const opts = typeof options === "function" ? { onValid: options } : (options ?? {});
82
73
  const optsRef = useRef(opts);
@@ -227,8 +227,7 @@ export function CommandPalette({
227
227
  // go from a German name to an English "Search" on update — so a translated
228
228
  // placeholder keeps doing the job until a `dialog` is supplied.
229
229
  const dialogName =
230
- l.dialog ??
231
- (l.placeholder !== DEFAULT_COMMAND_PALETTE_LABELS.placeholder ? l.placeholder : DEFAULT_DIALOG_NAME);
230
+ l.dialog ?? (l.placeholder !== DEFAULT_COMMAND_PALETTE_LABELS.placeholder ? l.placeholder : DEFAULT_DIALOG_NAME);
232
231
  const [ownQuery, setOwnQuery] = useState("");
233
232
  const controlled = queryProp !== undefined;
234
233
  const query = controlled ? queryProp : ownQuery;
@@ -426,9 +425,7 @@ export function CommandPalette({
426
425
  data-fullscreen={isPhone || undefined}
427
426
  className={cn(
428
427
  "flex w-full flex-col overflow-hidden bg-surface outline-none",
429
- isPhone
430
- ? "h-full"
431
- : "max-h-[70vh] max-w-xl rounded-xl border border-subtle shadow-2xl",
428
+ isPhone ? "h-full" : "max-h-[70vh] max-w-xl rounded-xl border border-subtle shadow-2xl",
432
429
  )}
433
430
  // Full screen means edge to edge, so the notch, the home indicator and the
434
431
  // rounded corners are the panel's to keep clear of.
@@ -518,7 +515,13 @@ export function CommandPalette({
518
515
  the list markup in between is presentational so the listbox's children are
519
516
  groups and options only — as a plain <li>/<ul> tree a reader announced
520
517
  "list, 2 items" between options and never tied the heading to its rows. */}
521
- <ul id={listId} ref={listRef} role="listbox" aria-label={dialogName} className="min-h-0 flex-1 overflow-y-auto py-1">
518
+ <ul
519
+ id={listId}
520
+ ref={listRef}
521
+ role="listbox"
522
+ aria-label={dialogName}
523
+ className="min-h-0 flex-1 overflow-y-auto py-1"
524
+ >
522
525
  {groups.map(({ group, items }, groupIndex) => (
523
526
  <li key={group} role="presentation">
524
527
  <div
@@ -540,7 +543,9 @@ export function CommandPalette({
540
543
  comfortable ? "min-h-11 py-2.5" : "py-2",
541
544
  )}
542
545
  >
543
- {item.icon && <span className="flex size-4 shrink-0 items-center justify-center">{item.icon}</span>}
546
+ {item.icon && (
547
+ <span className="flex size-4 shrink-0 items-center justify-center">{item.icon}</span>
548
+ )}
544
549
  <span className="min-w-0 flex-1 truncate">{item.label}</span>
545
550
  </li>
546
551
  );
@@ -561,9 +566,7 @@ export function CommandPalette({
561
566
  className: cn(
562
567
  "flex w-full items-center gap-2.5 px-3 text-start",
563
568
  comfortable ? "min-h-11 py-2.5 text-base" : "py-2 text-sm",
564
- isActive
565
- ? "bg-active text-primary"
566
- : "text-secondary",
569
+ isActive ? "bg-active text-primary" : "text-secondary",
567
570
  ),
568
571
  };
569
572
  const inner = (
@@ -595,14 +598,7 @@ export function CommandPalette({
595
598
  // #451) — and the palette deliberately stays OPEN for
596
599
  // it: ⌘-clicking three results in a row is the reason to
597
600
  // want this, and closing after the first would undo it.
598
- if (
599
- e.button !== 0 ||
600
- e.metaKey ||
601
- e.ctrlKey ||
602
- e.shiftKey ||
603
- e.altKey
604
- )
605
- return;
601
+ if (e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;
606
602
  e.preventDefault();
607
603
  choose(item);
608
604
  }}
@@ -622,11 +618,7 @@ export function CommandPalette({
622
618
  ))}
623
619
  </ul>
624
620
 
625
- {l.hint && (
626
- <div className="border-t border-subtle px-3 py-1.5 text-caption text-placeholder">
627
- {l.hint}
628
- </div>
629
- )}
621
+ {l.hint && <div className="border-t border-subtle px-3 py-1.5 text-caption text-placeholder">{l.hint}</div>}
630
622
  </div>
631
623
  </div>,
632
624
  document.body,
@@ -206,9 +206,17 @@ const identity = (href: string) => href;
206
206
  function signature(entries: readonly SearchEntry[]): string {
207
207
  return entries
208
208
  .map((e) =>
209
- [e.id, e.title, (e.keywords ?? []).join("\u0003"), e.description, e.group, e.hint, e.href, e.weight, e.redact].join(
210
- "\u0001",
211
- ),
209
+ [
210
+ e.id,
211
+ e.title,
212
+ (e.keywords ?? []).join("\u0003"),
213
+ e.description,
214
+ e.group,
215
+ e.hint,
216
+ e.href,
217
+ e.weight,
218
+ e.redact,
219
+ ].join("\u0001"),
212
220
  )
213
221
  .join("\u0002");
214
222
  }
@@ -217,7 +225,9 @@ function signature(entries: readonly SearchEntry[]): string {
217
225
  * row that was clicked (and held focus) is gone. */
218
226
  function refocusField() {
219
227
  requestAnimationFrame(() => {
220
- const fields = document.querySelectorAll<HTMLInputElement>('[role="dialog"][aria-modal="true"] input[role="combobox"]');
228
+ const fields = document.querySelectorAll<HTMLInputElement>(
229
+ '[role="dialog"][aria-modal="true"] input[role="combobox"]',
230
+ );
221
231
  fields[fields.length - 1]?.focus();
222
232
  });
223
233
  }
@@ -458,8 +468,7 @@ function GlobalSearchImpl({
458
468
 
459
469
  if (!q) {
460
470
  const out: CommandItem[] = [];
461
- const groupOf = (entry: SearchEntry) =>
462
- suggestionsKeepGroups ? (entry.group ?? l.suggestions) : l.suggestions;
471
+ const groupOf = (entry: SearchEntry) => (suggestionsKeepGroups ? (entry.group ?? l.suggestions) : l.suggestions);
463
472
  suggestionList.forEach((s, i) => {
464
473
  if (typeof s === "string") {
465
474
  const entry = byId.get(s);
@@ -532,7 +541,26 @@ function GlobalSearchImpl({
532
541
  }
533
542
 
534
543
  return ordered(out);
535
- }, [q, suggestionList, suggestionsKeepGroups, byId, index, sourceList, sourceResults, order, groupLimit, toItem, l.suggestions, l.results, pl.loading, pl.error, setOpen, setQuery, noop, redactLabels]);
544
+ }, [
545
+ q,
546
+ suggestionList,
547
+ suggestionsKeepGroups,
548
+ byId,
549
+ index,
550
+ sourceList,
551
+ sourceResults,
552
+ order,
553
+ groupLimit,
554
+ toItem,
555
+ l.suggestions,
556
+ l.results,
557
+ pl.loading,
558
+ pl.error,
559
+ setOpen,
560
+ setQuery,
561
+ noop,
562
+ redactLabels,
563
+ ]);
536
564
  /* eslint-enable react-hooks/refs */
537
565
 
538
566
  // The palette re-runs its provider on a `revision` change, never on the provider's
@@ -577,7 +605,9 @@ function GlobalSearchImpl({
577
605
  >
578
606
  <Search
579
607
  className={triggerIconSize === undefined ? "size-4" : undefined}
580
- style={triggerIconSize === undefined ? undefined : { width: triggerIconSize, height: triggerIconSize }}
608
+ style={
609
+ triggerIconSize === undefined ? undefined : { width: triggerIconSize, height: triggerIconSize }
610
+ }
581
611
  />
582
612
  </button>
583
613
  </Tooltip>
@@ -158,7 +158,11 @@ function withinDistance(a: string, b: string, max: number): boolean {
158
158
 
159
159
  type WordKind = keyof typeof WORD_SCORE;
160
160
 
161
- function matchWord(q: string, word: string, opts: Required<Pick<SearchIndexOptions, "typoMinLength" | "infixMinLength">>): WordKind | null {
161
+ function matchWord(
162
+ q: string,
163
+ word: string,
164
+ opts: Required<Pick<SearchIndexOptions, "typoMinLength" | "infixMinLength">>,
165
+ ): WordKind | null {
162
166
  if (word === q) return "exact";
163
167
  if (word.startsWith(q)) return "prefix";
164
168
  if (q.length >= opts.infixMinLength && word.includes(q)) return "infix";
@@ -41,8 +41,10 @@ export { DEFAULT_DEVICE_RESET_LABELS };
41
41
  export const DEVICE_RESET_ANCHOR = "settings-device-reset";
42
42
 
43
43
  // `onReset` is the card's own: the DOM's form-reset handler never fires on a div.
44
- export interface DeviceResetSettingProps
45
- extends Omit<SettingsSectionProps, "anchor" | "title" | "description" | "children" | "onReset"> {
44
+ export interface DeviceResetSettingProps extends Omit<
45
+ SettingsSectionProps,
46
+ "anchor" | "title" | "description" | "children" | "onReset"
47
+ > {
46
48
  /** The app's sentence after the kit's description: what of its own goes back, and what
47
49
  * stays (keksdose: the date format, the feature set and the gestures go; presentation
48
50
  * mode and the home position stay). */
@@ -72,12 +74,7 @@ export interface DeviceResetSettingProps
72
74
  * `deviceReset`; `title` and `keywords` from these labels), last in its appearance group:
73
75
  * inside a `SettingsLayout`, `SettingsSection` throws in development without it.
74
76
  */
75
- export function DeviceResetSetting({
76
- description,
77
- labels: labelsProp,
78
- onReset,
79
- ...rest
80
- }: DeviceResetSettingProps) {
77
+ export function DeviceResetSetting({ description, labels: labelsProp, onReset, ...rest }: DeviceResetSettingProps) {
81
78
  const labels = useKitLabels("deviceReset", DEFAULT_DEVICE_RESET_LABELS, labelsProp);
82
79
  const confirm = useConfirm();
83
80
 
@@ -50,7 +50,9 @@ export function useSettingsHeadingLevel(): SettingsHeadingTag | null {
50
50
  export function SettingsCardTitle({ className, ...props }: ComponentPropsWithoutRef<"div">) {
51
51
  const level = useSettingsHeadingLevel();
52
52
  if (!level) return <div {...props} className={cn(CARD_TITLE_CLASS, className)} />;
53
- return <SettingsHeading as={level} tabIndex={-1} {...props} className={cn(CARD_TITLE_CLASS, "outline-none", className)} />;
53
+ return (
54
+ <SettingsHeading as={level} tabIndex={-1} {...props} className={cn(CARD_TITLE_CLASS, "outline-none", className)} />
55
+ );
54
56
  }
55
57
 
56
58
  /**
@@ -16,12 +16,7 @@ import { cn } from "../lib/cn";
16
16
  import { useKitLabels, type LabelOverride } from "../i18n/kit-labels";
17
17
  import { createSearchIndex } from "../search/search-index";
18
18
  import type { SearchEntry } from "../search/search-index";
19
- import {
20
- normalizeSettingsBase,
21
- settingsHref,
22
- settingsKeywords,
23
- visibleSettingsEntries,
24
- } from "./settings-catalogue";
19
+ import { normalizeSettingsBase, settingsHref, settingsKeywords, visibleSettingsEntries } from "./settings-catalogue";
25
20
  import type { SettingsEntry, SettingsGroup } from "./settings-catalogue";
26
21
  import { SettingsLayoutContext } from "./settings-context";
27
22
  import type { SettingsLayoutContextValue } from "./settings-context";
@@ -337,7 +332,10 @@ export function SettingsLayout<G extends string>({
337
332
  e.preventDefault();
338
333
  route.back();
339
334
  }}
340
- className={cn("-ms-1 inline-flex items-center gap-0.5 self-start rounded-md pe-1 text-sm font-medium text-muted hover:text-primary", FOCUS_RING)}
335
+ className={cn(
336
+ "-ms-1 inline-flex items-center gap-0.5 self-start rounded-md pe-1 text-sm font-medium text-muted hover:text-primary",
337
+ FOCUS_RING,
338
+ )}
341
339
  >
342
340
  <ChevronLeft aria-hidden className="size-4 rtl:-scale-x-100" />
343
341
  {pageTitle}
@@ -458,12 +456,7 @@ export function SettingsLayout<G extends string>({
458
456
  {searching ? (
459
457
  results
460
458
  ) : open ? (
461
- <div
462
- id={panelId}
463
- role="tabpanel"
464
- aria-labelledby={`${panelId}-tab`}
465
- className="space-y-4"
466
- >
459
+ <div id={panelId} role="tabpanel" aria-labelledby={`${panelId}-tab`} className="space-y-4">
467
460
  <PageHeader as="h2" size="sm" title={open.title} description={open.help} />
468
461
  {cards(open.id)}
469
462
  </div>
@@ -115,3 +115,11 @@ export function useSettingsFocus(anchor?: string | null): void {
115
115
  [],
116
116
  );
117
117
  }
118
+
119
+ /**
120
+ * {@link useSettingsFocus} under a name for any page (0.51.4, keksdose run 89): the hook
121
+ * was always allowed on an app's own pages (keksdose's /reports/matching lands
122
+ * `?focus=matching-unmatched` on a card), but its name said Settings at every such call
123
+ * site. The same function, so the two cannot drift; `useSettingsFocus` stays.
124
+ */
125
+ export const useFocusParam: typeof useSettingsFocus = useSettingsFocus;
@@ -70,7 +70,9 @@ export function settingsFromListState(): Record<string, true> {
70
70
  }
71
71
 
72
72
  function isFromList(state: unknown): boolean {
73
- return typeof state === "object" && state !== null && (state as Record<string, unknown>)[SETTINGS_FROM_LIST_STATE] === true;
73
+ return (
74
+ typeof state === "object" && state !== null && (state as Record<string, unknown>)[SETTINGS_FROM_LIST_STATE] === true
75
+ );
74
76
  }
75
77
 
76
78
  export interface SettingsLocation {
@@ -197,8 +199,7 @@ export function useSettingsRoute<G extends string>(options: UseSettingsRouteOpti
197
199
  return map;
198
200
  }, [entries]);
199
201
  const ids = visible.map((g) => g.id);
200
- const fallback =
201
- defaultGroup !== undefined && ids.includes(defaultGroup) ? defaultGroup : (ids[0] ?? null);
202
+ const fallback = defaultGroup !== undefined && ids.includes(defaultGroup) ? defaultGroup : (ids[0] ?? null);
202
203
 
203
204
  const { group, sub, redirect } = resolveSettingsLocation(location, {
204
205
  basePath: base,
@@ -1,4 +1,14 @@
1
- import { createContext, useCallback, useContext, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from "react";
1
+ import {
2
+ createContext,
3
+ useCallback,
4
+ useContext,
5
+ useEffect,
6
+ useId,
7
+ useLayoutEffect,
8
+ useMemo,
9
+ useRef,
10
+ useState,
11
+ } from "react";
2
12
  import type { ComponentPropsWithoutRef, ReactNode, Ref } from "react";
3
13
  import { createPortal } from "react-dom";
4
14
  import { Link, NavLink, matchPath, useHref, useLocation } from "react-router";
@@ -401,9 +411,7 @@ function useNavHeightVar(
401
411
  // the OUTERMOST shell, for what it portals to <body> (a sheet docking on the bar).
402
412
  // The DOM check backs up the context for a shell mounted in a separate React root.
403
413
  const global = !embedded && !shell?.parentElement?.closest("[data-app-shell]");
404
- const targets = [shell, global ? document.documentElement : null].filter(
405
- (el): el is HTMLElement => el !== null,
406
- );
414
+ const targets = [shell, global ? document.documentElement : null].filter((el): el is HTMLElement => el !== null);
407
415
  // `getBoundingClientRect().height`, rounded DOWN — not `offsetHeight`, and not
408
416
  // ceil. Measured on the running app at 406x816: the bar is **55.5px** tall, and
409
417
  // both `offsetHeight` and `Math.ceil` answer 56. That is why live #314 round four
@@ -484,8 +492,7 @@ export function AppShell({
484
492
  useNavDevWarnings(nav);
485
493
  // An embedded shell sharing the default key would overwrite the outer app's sidebar
486
494
  // preference with its own — so it persists only when given a key of its own.
487
- const collapseStorageKey =
488
- collapseStorageKeyProp ?? (embedded ? null : "appLayout.sidebarCollapsed");
495
+ const collapseStorageKey = collapseStorageKeyProp ?? (embedded ? null : "appLayout.sidebarCollapsed");
489
496
  // The three props are per-shell overrides of the provider's `appShell`; one left
490
497
  // undefined falls through to the provider rather than to English.
491
498
  const labels = useKitLabels("appShell", DEFAULT_APP_SHELL_LABELS, {
@@ -692,10 +699,7 @@ export function AppShell({
692
699
  group's `items` were simply unreachable below `md`. ONE measured box, so
693
700
  `--app-nav-h` covers both rows and whatever docks on the bar sits on the
694
701
  whole of it. */}
695
- <div
696
- ref={navRef}
697
- className="md:hidden fixed bottom-0 inset-x-0 z-30 border-t border-subtle bg-surface"
698
- >
702
+ <div ref={navRef} className="md:hidden fixed bottom-0 inset-x-0 z-30 border-t border-subtle bg-surface">
699
703
  {mobileSubNav && <MobileSubNav nav={nav} layout={mobileSubNavLayout} />}
700
704
  <nav
701
705
  data-tour="nav"
@@ -854,9 +858,7 @@ const mobileCellClass = (active: boolean) =>
854
858
  // label on two lines never leaves its neighbours a different shape.
855
859
  "relative flex h-full w-full flex-col items-center justify-start py-2 text-caption gap-0.5 transition-colors",
856
860
  "before:absolute before:content-[''] before:inset-x-4 before:top-0 before:h-0.5 before:rounded-full before:transition-colors",
857
- active
858
- ? "font-semibold text-brand before:bg-brand"
859
- : "text-muted before:bg-transparent",
861
+ active ? "font-semibold text-brand before:bg-brand" : "text-muted before:bg-transparent",
860
862
  );
861
863
 
862
864
  /**
@@ -939,7 +941,11 @@ function SheetLink({
939
941
  level === "entry"
940
942
  ? "flex min-h-11 items-center gap-3 rounded-md px-3 py-2 text-sm transition-colors"
941
943
  : "flex min-h-11 items-center gap-2.5 rounded-md px-2.5 py-1.5 text-sm transition-colors",
942
- isActive ? "bg-inverse text-inverse" : level === "entry" ? "text-primary hover:bg-hover" : "text-secondary hover:bg-hover",
944
+ isActive
945
+ ? "bg-inverse text-inverse"
946
+ : level === "entry"
947
+ ? "text-primary hover:bg-hover"
948
+ : "text-secondary hover:bg-hover",
943
949
  )
944
950
  }
945
951
  >
@@ -1001,7 +1007,14 @@ function MobileGroupCell({
1001
1007
  <ul className="space-y-1">
1002
1008
  {!ownPageListed && (
1003
1009
  <li>
1004
- <SheetLink to={item.to} end={item.end} icon={item.icon} label={labels.overview} onClick={close} level="entry" />
1010
+ <SheetLink
1011
+ to={item.to}
1012
+ end={item.end}
1013
+ icon={item.icon}
1014
+ label={labels.overview}
1015
+ onClick={close}
1016
+ level="entry"
1017
+ />
1005
1018
  </li>
1006
1019
  )}
1007
1020
  {pages.map((sub) => (
@@ -1090,12 +1103,26 @@ function MobileMoreCell({
1090
1103
  <ul className="space-y-1">
1091
1104
  {hidden.map((item) => (
1092
1105
  <li key={item.to}>
1093
- <SheetLink to={item.to} end={item.end} icon={item.icon} label={item.label} onClick={close} level="entry" />
1106
+ <SheetLink
1107
+ to={item.to}
1108
+ end={item.end}
1109
+ icon={item.icon}
1110
+ label={item.label}
1111
+ onClick={close}
1112
+ level="entry"
1113
+ />
1094
1114
  {!!item.items?.length && (
1095
1115
  <ul aria-label={item.label} className="ms-[1.3rem] mt-0.5 space-y-0.5 border-s border-subtle ps-2">
1096
1116
  {item.items.map((sub) => (
1097
1117
  <li key={sub.to}>
1098
- <SheetLink to={sub.to} end={sub.end} icon={sub.icon} label={sub.label} onClick={close} level="page" />
1118
+ <SheetLink
1119
+ to={sub.to}
1120
+ end={sub.end}
1121
+ icon={sub.icon}
1122
+ label={sub.label}
1123
+ onClick={close}
1124
+ level="page"
1125
+ />
1099
1126
  </li>
1100
1127
  ))}
1101
1128
  </ul>
@@ -1182,7 +1209,8 @@ function MobileSubNav({ nav, layout }: { nav: AppShellNavItem[]; layout: "wrap"
1182
1209
 
1183
1210
  /** `strong` is the current page; `trail` is the group that CONTAINS the current page
1184
1211
  * while the page itself is shown elsewhere (the inline list below it). */
1185
- const navLinkClass = (collapsed: boolean, forceActive: boolean, trail = false) =>
1212
+ const navLinkClass =
1213
+ (collapsed: boolean, forceActive: boolean, trail = false) =>
1186
1214
  ({ isActive }: { isActive: boolean }) =>
1187
1215
  `flex items-center gap-3 min-h-9 ${collapsed ? "justify-center px-2" : "px-3"} py-2 rounded-md text-sm transition-colors duration-150 ${
1188
1216
  isActive || (forceActive && !trail)
@@ -1390,9 +1418,7 @@ function SidebarGroup({
1390
1418
  className={({ isActive }) =>
1391
1419
  cn(
1392
1420
  "flex min-h-8 items-center gap-2.5 rounded-md px-2.5 py-1.5 text-sm transition-colors",
1393
- isActive
1394
- ? "bg-inverse text-inverse"
1395
- : "text-secondary hover:bg-hover",
1421
+ isActive ? "bg-inverse text-inverse" : "text-secondary hover:bg-hover",
1396
1422
  )
1397
1423
  }
1398
1424
  >
@@ -1528,9 +1554,7 @@ function SidebarFlyout({ item, children }: { item: AppShellNavItem; children: Re
1528
1554
  className={({ isActive }) =>
1529
1555
  cn(
1530
1556
  "flex items-center gap-2.5 px-3 py-2 text-sm",
1531
- isActive
1532
- ? "bg-active font-medium text-primary"
1533
- : "text-secondary hover:bg-hover",
1557
+ isActive ? "bg-active font-medium text-primary" : "text-secondary hover:bg-hover",
1534
1558
  )
1535
1559
  }
1536
1560
  >
@@ -125,12 +125,7 @@ export function AuthLayout({
125
125
  <div className="mb-2">{logo}</div>
126
126
  ))}
127
127
  {title != null && (
128
- <Heading
129
- className={cn(
130
- "font-semibold leading-tight text-primary",
131
- wide ? "text-2xl md:text-3xl" : "text-2xl",
132
- )}
133
- >
128
+ <Heading className={cn("font-semibold leading-tight text-primary", wide ? "text-2xl md:text-3xl" : "text-2xl")}>
134
129
  {title}
135
130
  </Heading>
136
131
  )}