@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
@@ -16,9 +16,7 @@ export type Direction = "ltr" | "rtl";
16
16
  /** The effective direction at `el`: its nearest `[dir]` ancestor (or itself), else the
17
17
  * document's, else LTR. Attribute-based on purpose — jsdom computes no `direction`. */
18
18
  export function dirOf(el: Element | null | undefined): Direction {
19
- const source =
20
- el?.closest("[dir]") ??
21
- (typeof document !== "undefined" ? document.documentElement : null);
19
+ const source = el?.closest("[dir]") ?? (typeof document !== "undefined" ? document.documentElement : null);
22
20
  return source?.getAttribute("dir") === "rtl" ? "rtl" : "ltr";
23
21
  }
24
22
 
package/src/lib/iban.ts CHANGED
@@ -30,15 +30,95 @@
30
30
  * under FR) are covered by that code, as the registry lists them.
31
31
  */
32
32
  export const IBAN_LENGTHS: Readonly<Record<string, number>> = Object.freeze({
33
- AD: 24, AE: 23, AL: 28, AT: 20, AZ: 28, BA: 20, BE: 16, BG: 22, BH: 22, BI: 27,
34
- BR: 29, BY: 28, CH: 21, CR: 22, CY: 28, CZ: 24, DE: 22, DJ: 27, DK: 18, DO: 28,
35
- EE: 20, EG: 29, ES: 24, FI: 18, FK: 18, FO: 18, FR: 27, GB: 22, GE: 22, GI: 23,
36
- GL: 18, GR: 27, GT: 28, HN: 28, HR: 21, HU: 28, IE: 22, IL: 23, IQ: 23, IS: 26,
37
- IT: 27, JO: 30, KW: 30, KZ: 20, LB: 28, LC: 32, LI: 21, LT: 20, LU: 20, LV: 21,
38
- LY: 25, MC: 27, MD: 24, ME: 22, MK: 19, MN: 20, MR: 27, MT: 31, MU: 30, NI: 28,
39
- NL: 18, NO: 15, OM: 23, PK: 24, PL: 28, PS: 29, PT: 25, QA: 29, RO: 24, RS: 22,
40
- RU: 33, SA: 24, SC: 31, SD: 18, SE: 24, SI: 19, SK: 24, SM: 27, SO: 23, ST: 25,
41
- SV: 28, TL: 23, TN: 24, TR: 26, UA: 29, VA: 22, VG: 24, XK: 20, YE: 30,
33
+ AD: 24,
34
+ AE: 23,
35
+ AL: 28,
36
+ AT: 20,
37
+ AZ: 28,
38
+ BA: 20,
39
+ BE: 16,
40
+ BG: 22,
41
+ BH: 22,
42
+ BI: 27,
43
+ BR: 29,
44
+ BY: 28,
45
+ CH: 21,
46
+ CR: 22,
47
+ CY: 28,
48
+ CZ: 24,
49
+ DE: 22,
50
+ DJ: 27,
51
+ DK: 18,
52
+ DO: 28,
53
+ EE: 20,
54
+ EG: 29,
55
+ ES: 24,
56
+ FI: 18,
57
+ FK: 18,
58
+ FO: 18,
59
+ FR: 27,
60
+ GB: 22,
61
+ GE: 22,
62
+ GI: 23,
63
+ GL: 18,
64
+ GR: 27,
65
+ GT: 28,
66
+ HN: 28,
67
+ HR: 21,
68
+ HU: 28,
69
+ IE: 22,
70
+ IL: 23,
71
+ IQ: 23,
72
+ IS: 26,
73
+ IT: 27,
74
+ JO: 30,
75
+ KW: 30,
76
+ KZ: 20,
77
+ LB: 28,
78
+ LC: 32,
79
+ LI: 21,
80
+ LT: 20,
81
+ LU: 20,
82
+ LV: 21,
83
+ LY: 25,
84
+ MC: 27,
85
+ MD: 24,
86
+ ME: 22,
87
+ MK: 19,
88
+ MN: 20,
89
+ MR: 27,
90
+ MT: 31,
91
+ MU: 30,
92
+ NI: 28,
93
+ NL: 18,
94
+ NO: 15,
95
+ OM: 23,
96
+ PK: 24,
97
+ PL: 28,
98
+ PS: 29,
99
+ PT: 25,
100
+ QA: 29,
101
+ RO: 24,
102
+ RS: 22,
103
+ RU: 33,
104
+ SA: 24,
105
+ SC: 31,
106
+ SD: 18,
107
+ SE: 24,
108
+ SI: 19,
109
+ SK: 24,
110
+ SM: 27,
111
+ SO: 23,
112
+ ST: 25,
113
+ SV: 28,
114
+ TL: 23,
115
+ TN: 24,
116
+ TR: 26,
117
+ UA: 29,
118
+ VA: 22,
119
+ VG: 24,
120
+ XK: 20,
121
+ YE: 30,
42
122
  });
43
123
 
44
124
  /**
package/src/lib/logger.ts CHANGED
@@ -60,11 +60,7 @@ const loggerImpl: LoggerImpl = (f, name) => (set, get, store) => {
60
60
  const prev = get();
61
61
  (set as (...a: unknown[]) => void)(...args);
62
62
  if (storeLog) {
63
- console.debug(
64
- `%c[store${name ? `:${name}` : ""}]`,
65
- "color:#0d9488",
66
- { prev, next: get() },
67
- );
63
+ console.debug(`%c[store${name ? `:${name}` : ""}]`, "color:#0d9488", { prev, next: get() });
68
64
  }
69
65
  }) as typeof set;
70
66
  return f(loggedSet, get, store);
@@ -147,9 +147,7 @@ export function personInitials(name: PersonName, locale?: string): string {
147
147
  if (!first || !last) {
148
148
  const words = (first || last).split(/\s+/);
149
149
  const initials =
150
- words.length >= 2
151
- ? firstGrapheme(words[0]!) + firstGrapheme(words[1]!)
152
- : [...words[0]!].slice(0, 2).join("");
150
+ words.length >= 2 ? firstGrapheme(words[0]!) + firstGrapheme(words[1]!) : [...words[0]!].slice(0, 2).join("");
153
151
  return upper(initials, locale);
154
152
  }
155
153
  const pair = order === "family-first" ? [last, first] : [first, last];
package/src/lib/phone.ts CHANGED
@@ -82,13 +82,7 @@ const RULES: Record<PhoneCountryCode, CountryRule> = {
82
82
  min: 6,
83
83
  max: 13,
84
84
  group: (n) =>
85
- /^15/.test(n)
86
- ? cut(n, [4])
87
- : /^1[67]/.test(n)
88
- ? cut(n, [3])
89
- : /^(30|40|69|89)/.test(n)
90
- ? cut(n, [2])
91
- : [n],
85
+ /^15/.test(n) ? cut(n, [4]) : /^1[67]/.test(n) ? cut(n, [3]) : /^(30|40|69|89)/.test(n) ? cut(n, [2]) : [n],
92
86
  },
93
87
  // Vienna is "1"; mobile numbers start 6xx; other area codes vary, so one block.
94
88
  AT: {
@@ -169,7 +163,10 @@ export function parsePhone(input: string, country: PhoneCountry = "CH"): ParsedP
169
163
  }
170
164
  if (international) {
171
165
  // "+41 (0)21 …": the bracketed trunk prefix written for callers inside the country.
172
- digits = text.replace(/\(\s*0\s*\)/g, "").replace(/\D/g, "").replace(/^00/, "");
166
+ digits = text
167
+ .replace(/\(\s*0\s*\)/g, "")
168
+ .replace(/\D/g, "")
169
+ .replace(/^00/, "");
173
170
  if (digits.startsWith("0")) return null;
174
171
  const known = BY_DIAL.find((c) => digits.startsWith(RULES[c].dial));
175
172
  if (known) {
@@ -48,16 +48,40 @@ const FORMAT_BITS: Record<QrErrorCorrection, number> = { L: 1, M: 0, Q: 3, H: 2
48
48
 
49
49
  // Index 0 is padding; rows are L, M, Q, H.
50
50
  const ECC_CODEWORDS_PER_BLOCK: readonly (readonly number[])[] = [
51
- [-1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],
52
- [-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28],
53
- [-1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],
54
- [-1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],
51
+ [
52
+ -1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30,
53
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
54
+ ],
55
+ [
56
+ -1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28,
57
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
58
+ ],
59
+ [
60
+ -1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30,
61
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
62
+ ],
63
+ [
64
+ -1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30,
65
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
66
+ ],
55
67
  ];
56
68
  const NUM_ERROR_CORRECTION_BLOCKS: readonly (readonly number[])[] = [
57
- [-1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25],
58
- [-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49],
59
- [-1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43, 45, 48, 51, 53, 56, 59, 62, 65, 68],
60
- [-1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 63, 66, 70, 74, 77, 81],
69
+ [
70
+ -1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19,
71
+ 19, 20, 21, 22, 24, 25,
72
+ ],
73
+ [
74
+ -1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31,
75
+ 33, 35, 37, 38, 40, 43, 45, 47, 49,
76
+ ],
77
+ [
78
+ -1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43,
79
+ 45, 48, 51, 53, 56, 59, 62, 65, 68,
80
+ ],
81
+ [
82
+ -1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48,
83
+ 51, 54, 57, 60, 63, 66, 70, 74, 77, 81,
84
+ ],
61
85
  ];
62
86
 
63
87
  /** Encode `text` (as UTF-8 bytes). Throws a `RangeError` past version 40's capacity. */
@@ -110,10 +110,7 @@ export interface SessionRefreshOptions<R extends SessionRenewal> {
110
110
  * | `"changed"` | the session changed while it ran | nothing; read the app's own state |
111
111
  */
112
112
  export type SessionRefreshOutcome<R extends SessionRenewal = SessionRenewal> =
113
- | { result: "renewed"; renewal: R }
114
- | { result: "ended" }
115
- | { result: "transient" }
116
- | { result: "changed" };
113
+ { result: "renewed"; renewal: R } | { result: "ended" } | { result: "transient" } | { result: "changed" };
117
114
 
118
115
  /** The flight {@link createSessionRefresh} makes; {@link attachSessionRefresh} hooks it
119
116
  * to an axios instance. */
@@ -339,8 +336,10 @@ interface SessionRefreshAxiosConfig extends ServerWakeAxiosConfig {
339
336
  * the replay. `axios.create()`'s result fits it as is. `NoInfer`, because axios's
340
337
  * `request` takes the WIDER `AxiosRequestConfig`: inferred from there, the config type
341
338
  * no longer fits the interceptors, which hand out `InternalAxiosRequestConfig`. */
342
- interface SessionRefreshInstance<C extends SessionRefreshAxiosConfig, R extends { config: C }>
343
- extends AxiosLikeInstance<C, R> {
339
+ interface SessionRefreshInstance<
340
+ C extends SessionRefreshAxiosConfig,
341
+ R extends { config: C },
342
+ > extends AxiosLikeInstance<C, R> {
344
343
  request(config: NoInfer<C>): Promise<unknown>;
345
344
  }
346
345
 
@@ -198,8 +198,7 @@ export const cellNumber = (cell: string) => Number(cell.replace(",", "."));
198
198
 
199
199
  /** Whether one cell holds a number yet. An empty cell is not one — it is a hole
200
200
  * in the measurement, which is a different thing from a zero. */
201
- export const isCellNumber = (cell: string) =>
202
- cell.trim() !== "" && !Number.isNaN(cellNumber(cell));
201
+ export const isCellNumber = (cell: string) => cell.trim() !== "" && !Number.isNaN(cellNumber(cell));
203
202
 
204
203
  /**
205
204
  * The one separator and the one decimal mark a whole file is read with.
@@ -368,7 +367,15 @@ export interface TextTable {
368
367
  export function parseTextTable(text: string, options: ParseTextTableOptions = {}): TextTable {
369
368
  const content = textLines(text);
370
369
  if (!content.length) {
371
- return { header: null, rows: [], lines: [], width: 0, separator: options.separator ?? ",", decimalComma: false, unread: [] };
370
+ return {
371
+ header: null,
372
+ rows: [],
373
+ lines: [],
374
+ width: 0,
375
+ separator: options.separator ?? ",",
376
+ decimalComma: false,
377
+ unread: [],
378
+ };
372
379
  }
373
380
  const separator = options.separator ?? votedSeparator(content);
374
381
  const decimalComma =
@@ -389,7 +396,12 @@ export function parseTextTable(text: string, options: ParseTextTableOptions = {}
389
396
  const unread: TableLine[] = split.slice(0, first).map(({ entry }) => entry);
390
397
  const body = split.slice(first);
391
398
  const fitting = body.filter(({ cells }) => cells.length === width);
392
- const header = options.header ?? looksLikeHeader(fitting[0].cells, fitting.slice(1, 21).map(({ cells }) => cells));
399
+ const header =
400
+ options.header ??
401
+ looksLikeHeader(
402
+ fitting[0].cells,
403
+ fitting.slice(1, 21).map(({ cells }) => cells),
404
+ );
393
405
 
394
406
  const rows: string[][] = [];
395
407
  const lines: TableLine[] = [];
@@ -464,7 +476,11 @@ const withoutQuoted = (line: string) => line.replace(/"(?:[^"]|"")*"/g, '""');
464
476
  * A run of whitespace is one separator and makes no empty cells.
465
477
  */
466
478
  function cellsOf(line: string, separator: TableSeparator): string[] {
467
- if (separator === " ") return line.split(/\s+/).filter((field) => field !== "").map(unquote);
479
+ if (separator === " ")
480
+ return line
481
+ .split(/\s+/)
482
+ .filter((field) => field !== "")
483
+ .map(unquote);
468
484
  const cells: string[] = [];
469
485
  let cell = "";
470
486
  let quoted = false;
@@ -499,7 +515,9 @@ function cellsOf(line: string, separator: TableSeparator): string[] {
499
515
 
500
516
  /** A whitespace-separated field with its quotes off. */
501
517
  function unquote(field: string): string {
502
- return field.length >= 2 && field.startsWith('"') && field.endsWith('"') ? field.slice(1, -1).replace(/""/g, '"') : field;
518
+ return field.length >= 2 && field.startsWith('"') && field.endsWith('"')
519
+ ? field.slice(1, -1).replace(/""/g, '"')
520
+ : field;
503
521
  }
504
522
 
505
523
  /** The column count most lines share; a tie goes to the wider table. */
@@ -26,7 +26,49 @@ export function foldForSearch(text: string, locale?: string): string {
26
26
  } catch {
27
27
  lower = text.toLocaleLowerCase();
28
28
  }
29
- return lower.normalize("NFD").replace(/\p{M}+/gu, "").replace(/ß/g, "ss");
29
+ return lower
30
+ .normalize("NFD")
31
+ .replace(/\p{M}+/gu, "")
32
+ .replace(/ß/g, "ss");
33
+ }
34
+
35
+ /**
36
+ * A picker's query as its words, each folded (0.51.4, keksdose's /prices shop picker):
37
+ * "Migros Zürich" → `["migros", "zurich"]`. An empty or blank query has no words.
38
+ */
39
+ export function searchWords(query: string, locale?: string): string[] {
40
+ return foldForSearch(query, locale)
41
+ .split(/\s+/)
42
+ .filter((word) => word !== "");
43
+ }
44
+
45
+ /**
46
+ * Whether a row matches a picker's query: EVERY word appears in at least one of the row's
47
+ * texts — "migros 8004" finds a row named "Migros · 8004 Zürich", and a row whose chain is
48
+ * its group and whose place is its label (pass both). Until 0.51.4 the whole query had to
49
+ * be ONE substring of one text, so two words found nothing unless they stood side by side
50
+ * in that order. One word matches exactly as before, and so does the old query when it
51
+ * was a substring. No words match everything.
52
+ *
53
+ * `words` from {@link searchWords}; `texts` as they are (folded here), `undefined` skipped.
54
+ *
55
+ * Exported since 0.51.5 for an app's own async source: a picker shows `loadOptions`'
56
+ * rows as they come, so a source that narrows on the client filters with this, the same
57
+ * rule the kit applies to `options` (keksdose's shop picker past its first hundred shops).
58
+ */
59
+ export function matchesSearch(
60
+ words: readonly string[],
61
+ texts: readonly (string | undefined)[],
62
+ locale?: string,
63
+ ): boolean {
64
+ if (words.length === 0) return true;
65
+ // One haystack per row; a word holds no whitespace, so it cannot match across the
66
+ // newline between two texts.
67
+ const hay = texts
68
+ .filter((t): t is string => t !== undefined)
69
+ .map((t) => foldForSearch(t, locale))
70
+ .join("\n");
71
+ return words.every((word) => hay.includes(word));
30
72
  }
31
73
 
32
74
  /** {@link rankMatch}'s answer: lower is better, `-1` is no match. */
@@ -275,9 +275,7 @@ export function reviewStatus(
275
275
  * copies of it apply the same rule.
276
276
  */
277
277
  export function keyInArea(key: string, area: string): boolean {
278
- return (
279
- key === area || key.startsWith(`${area}.`) || key.startsWith(`${area}:`) || key.startsWith(`kit.${area}.`)
280
- );
278
+ return key === area || key.startsWith(`${area}.`) || key.startsWith(`${area}:`) || key.startsWith(`kit.${area}.`);
281
279
  }
282
280
 
283
281
  /**
@@ -47,8 +47,10 @@ export interface NotificationInboxItem<Id extends string | number = string | num
47
47
  * "Mark all as read", or "Clear all". */
48
48
  export type NotificationInboxAction = "read" | "readAll" | "clear";
49
49
 
50
- export interface NotificationInboxProps<Id extends string | number = string | number>
51
- extends Omit<ComponentPropsWithRef<"div">, "children" | "title"> {
50
+ export interface NotificationInboxProps<Id extends string | number = string | number> extends Omit<
51
+ ComponentPropsWithRef<"div">,
52
+ "children" | "title"
53
+ > {
52
54
  /** The rows, newest first; `undefined` while the first page loads. */
53
55
  items: readonly NotificationInboxItem<Id>[] | undefined;
54
56
  /** Every unread row of the account (`unread_count`), not only this page's. */
@@ -242,7 +244,11 @@ export function NotificationInbox<Id extends string | number = string | number>(
242
244
  } else {
243
245
  body = (
244
246
  // Named by the heading — except while "Clear all" asks, when the heading is away.
245
- <List className="p-1" aria-labelledby={asking ? undefined : headingId} aria-label={asking ? labels.inboxTitle : undefined}>
247
+ <List
248
+ className="p-1"
249
+ aria-labelledby={asking ? undefined : headingId}
250
+ aria-label={asking ? labels.inboxTitle : undefined}
251
+ >
246
252
  {items.map((item) => {
247
253
  const row = {
248
254
  title: item.title,
@@ -288,7 +294,14 @@ export function NotificationInbox<Id extends string | number = string | number>(
288
294
  })}
289
295
  {hasMore && onLoadMore && (
290
296
  <li className="px-2 py-1">
291
- <Button type="button" size="sm" variant="ghost" pending={loadingMore} onClick={onLoadMore} className="w-full">
297
+ <Button
298
+ type="button"
299
+ size="sm"
300
+ variant="ghost"
301
+ pending={loadingMore}
302
+ onClick={onLoadMore}
303
+ className="w-full"
304
+ >
292
305
  {labels.showMore}
293
306
  </Button>
294
307
  </li>
@@ -68,8 +68,7 @@ export function useWriteOverlay<V>(source: unknown): WriteOverlay<V> {
68
68
  has: (key: string) => entries.has(key),
69
69
  get: (key: string) => entries.get(key)?.value,
70
70
  pending: (key: string) => entries.get(key)?.running === true,
71
- set: (key: string, value: V) =>
72
- setEntries((current) => new Map(current).set(key, { value, running: true })),
71
+ set: (key: string, value: V) => setEntries((current) => new Map(current).set(key, { value, running: true })),
73
72
  settle: (key: string, ok: boolean) =>
74
73
  setEntries((current) => {
75
74
  const entry = current.get(key);
@@ -34,8 +34,10 @@ function devChecks(): boolean {
34
34
  return Boolean(import.meta.env?.DEV);
35
35
  }
36
36
 
37
- export interface NotificationTypesSettingProps<Id extends string = string>
38
- extends Omit<ComponentPropsWithRef<"div">, "children" | "onChange"> {
37
+ export interface NotificationTypesSettingProps<Id extends string = string> extends Omit<
38
+ ComponentPropsWithRef<"div">,
39
+ "children" | "onChange"
40
+ > {
39
41
  /** The app's words for its types, in its order. Where an app types its ids. */
40
42
  types: readonly NotificationTypeEntry<Id>[];
41
43
  /** The `GET`'s `types` (§3.2); `undefined` while the first load runs. */
@@ -217,7 +219,8 @@ export function NotificationTypesSetting<Id extends string = string>({
217
219
  email: labels.channelEmail,
218
220
  };
219
221
  /** The columns on a wide screen: every channel some several-channel row offers. */
220
- const drawnRows = value && !loading ? rowsOf(groups ? groups.flatMap((group) => group.types) : types.map((entry) => entry.id)) : [];
222
+ const drawnRows =
223
+ value && !loading ? rowsOf(groups ? groups.flatMap((group) => group.types) : types.map((entry) => entry.id)) : [];
221
224
  const multi = drawnRows.filter((row) => channelsOf(row.switches).length > 1);
222
225
  const columns = CHANNELS.filter((channel) => multi.some((row) => channelsOf(row.switches).includes(channel)));
223
226
  const columnHeadings =
@@ -357,26 +360,24 @@ export function NotificationTypesSetting<Id extends string = string>({
357
360
  if (loading || value === undefined) {
358
361
  body = <Skeleton lines={3} label={labels.typesLoading} />;
359
362
  } else if (groups) {
360
- const drawn = groups
361
- .map((group) => ({ group, rows: rowsOf(group.types) }))
362
- .filter(({ rows }) => rows.length > 0);
363
+ const drawn = groups.map((group) => ({ group, rows: rowsOf(group.types) })).filter(({ rows }) => rows.length > 0);
363
364
  body =
364
365
  drawn.length === 0 ? (
365
366
  <p className={CARD_DESCRIPTION_CLASS}>{labels.typesEmpty}</p>
366
367
  ) : (
367
368
  <>
368
- {columnHeadings}
369
- {drawn.map(({ group, rows }) => {
370
- const headingId = `${groupId}-${group.id}`;
371
- return (
372
- <div key={group.id} role="group" aria-labelledby={headingId} className="space-y-3">
373
- <SectionLabel as="div" size="xs" id={headingId}>
374
- {group.label}
375
- </SectionLabel>
376
- {rows.map(renderRow)}
377
- </div>
378
- );
379
- })}
369
+ {columnHeadings}
370
+ {drawn.map(({ group, rows }) => {
371
+ const headingId = `${groupId}-${group.id}`;
372
+ return (
373
+ <div key={group.id} role="group" aria-labelledby={headingId} className="space-y-3">
374
+ <SectionLabel as="div" size="xs" id={headingId}>
375
+ {group.label}
376
+ </SectionLabel>
377
+ {rows.map(renderRow)}
378
+ </div>
379
+ );
380
+ })}
380
381
  </>
381
382
  );
382
383
  } else {
@@ -245,8 +245,7 @@ export const DEFAULT_NOTIFICATIONS_LABELS: NotificationsLabels = {
245
245
  added: (date) => `Added ${date}`,
246
246
  lastDelivery: (date) => `Last delivery ${date}`,
247
247
  noDelivery: "No delivery yet",
248
- failures: (count) =>
249
- count === 1 ? "1 failed delivery in a row" : `${count} failed deliveries in a row`,
248
+ failures: (count) => (count === 1 ? "1 failed delivery in a row" : `${count} failed deliveries in a row`),
250
249
  remove: "Remove",
251
250
  removeItem: (device) => `Remove ${device}`,
252
251
  removePrompt: "Stop sending notifications to this device?",
@@ -101,7 +101,13 @@ export function PushDeviceSetting({
101
101
  (ok): Outcome => (ok ? null : { tone: "danger", text: labels.enableFailed }),
102
102
  labels.enableFailed,
103
103
  );
104
- const disable = () => run("disable", () => push.disable(), () => null, labels.failed);
104
+ const disable = () =>
105
+ run(
106
+ "disable",
107
+ () => push.disable(),
108
+ () => null,
109
+ labels.failed,
110
+ );
105
111
  const test = () =>
106
112
  run(
107
113
  "test",
@@ -55,8 +55,10 @@ export function describeUserAgent(ua: string | null): string | null {
55
55
  return [browser, os].filter(Boolean).join(" · ");
56
56
  }
57
57
 
58
- export interface PushDevicesSettingProps<Id extends string | number = string>
59
- extends Omit<ComponentPropsWithRef<"div">, "children"> {
58
+ export interface PushDevicesSettingProps<Id extends string | number = string> extends Omit<
59
+ ComponentPropsWithRef<"div">,
60
+ "children"
61
+ > {
60
62
  /** `GET /notifications/devices`, oldest first; `undefined` while the first load runs. */
61
63
  devices: readonly PushDeviceItem<Id>[] | undefined;
62
64
  loading?: boolean;
@@ -371,7 +373,9 @@ function DeviceRow<Id extends string | number>({
371
373
  {" · "}
372
374
  {lastDelivery ? labels.lastDelivery(lastDelivery) : labels.noDelivery}
373
375
  </div>
374
- {device.failure_count > 0 && <div className="text-xs text-warning">{labels.failures(device.failure_count)}</div>}
376
+ {device.failure_count > 0 && (
377
+ <div className="text-xs text-warning">{labels.failures(device.failure_count)}</div>
378
+ )}
375
379
  </div>
376
380
  <Button
377
381
  ref={removeRef}
@@ -133,9 +133,17 @@ export async function resubscribeAfterChange(
133
133
 
134
134
  /** The parts of a `ServiceWorkerGlobalScope` this needs. */
135
135
  export interface PushWorkerScope {
136
- addEventListener: (type: "pushsubscriptionchange", listener: (event: PushSubscriptionChangeEventLike) => void) => void;
136
+ addEventListener: (
137
+ type: "pushsubscriptionchange",
138
+ listener: (event: PushSubscriptionChangeEventLike) => void,
139
+ ) => void;
137
140
  registration: { pushManager: PushManager };
138
- clients?: { matchAll: (options?: { type?: "window"; includeUncontrolled?: boolean }) => Promise<readonly { postMessage: (message: unknown) => void }[]> };
141
+ clients?: {
142
+ matchAll: (options?: {
143
+ type?: "window";
144
+ includeUncontrolled?: boolean;
145
+ }) => Promise<readonly { postMessage: (message: unknown) => void }[]>;
146
+ };
139
147
  }
140
148
 
141
149
  /**
@@ -25,7 +25,10 @@ function zoneName(zone: string, regions: NotificationRegionLabels): string {
25
25
  const named = Object.prototype.hasOwnProperty.call(regions, region)
26
26
  ? regions[region as keyof NotificationRegionLabels]
27
27
  : region;
28
- return `${named} / ${zone.slice(slash + 1).replace(/_/g, " ").replace(/\//g, " / ")}`;
28
+ return `${named} / ${zone
29
+ .slice(slash + 1)
30
+ .replace(/_/g, " ")
31
+ .replace(/\//g, " / ")}`;
29
32
  }
30
33
 
31
34
  export interface QuietHoursSettingProps extends Omit<ComponentPropsWithRef<"div">, "children" | "onChange"> {
@@ -307,7 +307,10 @@ export function usePushDevice(options: UsePushDeviceOptions): PushDevice {
307
307
  within(
308
308
  (async () =>
309
309
  (reuse ? await registration.pushManager.getSubscription() : null) ??
310
- (await registration.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey: keyBytes(key) })))(),
310
+ (await registration.pushManager.subscribe({
311
+ userVisibleOnly: true,
312
+ applicationServerKey: keyBytes(key),
313
+ })))(),
311
314
  PUSH_TIMEOUT_MS,
312
315
  "push_timeout",
313
316
  );
@@ -39,7 +39,13 @@ export interface PwaUpdatePromptProps {
39
39
  /** The toast's id: one prompt at a time, replaced in place. */
40
40
  const PWA_UPDATE_TOAST_ID = "pwa-update";
41
41
 
42
- export function PwaUpdatePrompt({ needRefresh, onReload, onDismiss, hold = false, labels: labelsProp }: PwaUpdatePromptProps) {
42
+ export function PwaUpdatePrompt({
43
+ needRefresh,
44
+ onReload,
45
+ onDismiss,
46
+ hold = false,
47
+ labels: labelsProp,
48
+ }: PwaUpdatePromptProps) {
43
49
  const labels = useKitLabels("pwaUpdate", DEFAULT_PWA_UPDATE_PROMPT_LABELS, labelsProp);
44
50
  // The callbacks are read at click time, so a new function each render does not
45
51
  // re-raise the toast.
@@ -292,12 +292,15 @@ export function createQueryPersistence({
292
292
  timestamp,
293
293
  buster: stored,
294
294
  clientState: {
295
- mutations: persistMutations && Array.isArray(clientState.mutations)
296
- ? clientState.mutations.filter(
297
- (m) => !carriesScrubbed((m as { state?: { variables?: unknown } } | null)?.state?.variables),
298
- )
299
- : [],
300
- queries: clientState.queries.map(restorable).filter((q) => q !== null) as PersistedClient["clientState"]["queries"],
295
+ mutations:
296
+ persistMutations && Array.isArray(clientState.mutations)
297
+ ? clientState.mutations.filter(
298
+ (m) => !carriesScrubbed((m as { state?: { variables?: unknown } } | null)?.state?.variables),
299
+ )
300
+ : [],
301
+ queries: clientState.queries
302
+ .map(restorable)
303
+ .filter((q) => q !== null) as PersistedClient["clientState"]["queries"],
301
304
  },
302
305
  };
303
306
  } catch {
package/src/offline.ts CHANGED
@@ -6,7 +6,12 @@
6
6
  // `@tanstack/react-query-persist-client`, `@tanstack/query-async-storage-persister` and
7
7
  // `idb-keyval` — optional peers for that reason. NOT re-exported from the main barrel, which
8
8
  // would make them everyone's install; the packaging contract test holds that line.
9
- export { createQueryPersistence, DEFAULT_SCRUB_FIELDS, isCacheSafe, removeStaleQueryCopies } from "./offline/query-persistence";
9
+ export {
10
+ createQueryPersistence,
11
+ DEFAULT_SCRUB_FIELDS,
12
+ isCacheSafe,
13
+ removeStaleQueryCopies,
14
+ } from "./offline/query-persistence";
10
15
  export type {
11
16
  QueryPersistence,
12
17
  QueryPersistenceOptions,