@eifi1/ui-kit 0.51.7 → 0.52.0

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 (746) hide show
  1. package/README.md +141 -23
  2. package/dist/account/account-parts.d.ts +10 -8
  3. package/dist/account/account-parts.js +1 -18
  4. package/dist/account/account-parts.js.map +1 -1
  5. package/dist/account/data-export-setting-labels.js +1 -1
  6. package/dist/account/data-export-setting-labels.js.map +1 -1
  7. package/dist/account/delete-account-setting-labels.js +1 -1
  8. package/dist/account/delete-account-setting-labels.js.map +1 -1
  9. package/dist/account/email-change-setting-labels.js +1 -1
  10. package/dist/account/email-change-setting-labels.js.map +1 -1
  11. package/dist/account/passkeys-setting.d.ts +9 -2
  12. package/dist/account/passkeys-setting.js +41 -29
  13. package/dist/account/passkeys-setting.js.map +1 -1
  14. package/dist/account/sessions-setting.d.ts +3 -2
  15. package/dist/account/sessions-setting.js +10 -8
  16. package/dist/account/sessions-setting.js.map +1 -1
  17. package/dist/admin/admin-action-confirm.js +1 -3
  18. package/dist/admin/admin-action-confirm.js.map +1 -1
  19. package/dist/admin/admin-parts.d.ts +6 -3
  20. package/dist/admin/admin-parts.js +6 -21
  21. package/dist/admin/admin-parts.js.map +1 -1
  22. package/dist/admin/mail-test-card-labels.js +1 -1
  23. package/dist/admin/mail-test-card-labels.js.map +1 -1
  24. package/dist/admin/plan-change-labels.d.ts +2 -2
  25. package/dist/admin/plan-change-labels.js +1 -17
  26. package/dist/admin/plan-change-labels.js.map +1 -1
  27. package/dist/admin/plan-change.d.ts +3 -42
  28. package/dist/admin/plan-change.js +1 -1
  29. package/dist/admin/plan-change.js.map +1 -1
  30. package/dist/admin/reviewer-scope-editor.js +3 -3
  31. package/dist/admin/reviewer-scope-editor.js.map +1 -1
  32. package/dist/auth/auth-errors-labels.d.ts +11 -0
  33. package/dist/auth/auth-errors-labels.js +13 -0
  34. package/dist/auth/auth-errors-labels.js.map +1 -0
  35. package/dist/auth/auth-errors.d.ts +7 -23
  36. package/dist/auth/auth-errors.js +2 -15
  37. package/dist/auth/auth-errors.js.map +1 -1
  38. package/dist/auth/complete-name-dialog.js +2 -1
  39. package/dist/auth/complete-name-dialog.js.map +1 -1
  40. package/dist/auth/forgot-password-form-labels.js +1 -1
  41. package/dist/auth/forgot-password-form-labels.js.map +1 -1
  42. package/dist/auth/forgot-password-form.js +7 -2
  43. package/dist/auth/forgot-password-form.js.map +1 -1
  44. package/dist/auth/register-form-labels.js +1 -1
  45. package/dist/auth/register-form-labels.js.map +1 -1
  46. package/dist/auth/reset-password-form-labels.js +1 -1
  47. package/dist/auth/reset-password-form-labels.js.map +1 -1
  48. package/dist/auth/reset-password-form.js +5 -1
  49. package/dist/auth/reset-password-form.js.map +1 -1
  50. package/dist/auth/sign-in-form-labels.js +1 -1
  51. package/dist/auth/sign-in-form-labels.js.map +1 -1
  52. package/dist/auth/status-parts.d.ts +0 -3
  53. package/dist/auth/status-parts.js +0 -4
  54. package/dist/auth/status-parts.js.map +1 -1
  55. package/dist/auth/verify-email-labels.js +1 -1
  56. package/dist/auth/verify-email-labels.js.map +1 -1
  57. package/dist/auth/verify-email.js +7 -2
  58. package/dist/auth/verify-email.js.map +1 -1
  59. package/dist/billing/cancel-subscription.d.ts +20 -8
  60. package/dist/billing/cancel-subscription.js +7 -5
  61. package/dist/billing/cancel-subscription.js.map +1 -1
  62. package/dist/billing/dialog-close.d.ts +29 -0
  63. package/dist/billing/dialog-close.js +8 -0
  64. package/dist/billing/dialog-close.js.map +1 -0
  65. package/dist/billing/plan-card.d.ts +14 -4
  66. package/dist/billing/plan-card.js +15 -8
  67. package/dist/billing/plan-card.js.map +1 -1
  68. package/dist/billing/plan-change-labels.d.ts +42 -0
  69. package/dist/billing/plan-change-labels.js +22 -0
  70. package/dist/billing/plan-change-labels.js.map +1 -0
  71. package/dist/billing/plan-switch.d.ts +19 -7
  72. package/dist/billing/plan-switch.js +8 -4
  73. package/dist/billing/plan-switch.js.map +1 -1
  74. package/dist/chart.d.ts +12 -0
  75. package/dist/chart.js +16 -1
  76. package/dist/chart.js.map +1 -1
  77. package/dist/components/account-chips.d.ts +5 -5
  78. package/dist/components/account-chips.js +11 -13
  79. package/dist/components/account-chips.js.map +1 -1
  80. package/dist/components/alert-banner.d.ts +16 -5
  81. package/dist/components/alert-banner.js +46 -1
  82. package/dist/components/alert-banner.js.map +1 -1
  83. package/dist/components/amount-input.d.ts +13 -0
  84. package/dist/components/amount-input.js +1 -0
  85. package/dist/components/amount-input.js.map +1 -1
  86. package/dist/components/autocomplete.js +57 -65
  87. package/dist/components/autocomplete.js.map +1 -1
  88. package/dist/components/bulk-action-bar.d.ts +12 -2
  89. package/dist/components/bulk-action-bar.js +65 -21
  90. package/dist/components/bulk-action-bar.js.map +1 -1
  91. package/dist/components/button-look.d.ts +5 -5
  92. package/dist/components/button-look.js.map +1 -1
  93. package/dist/components/button.d.ts +2 -2
  94. package/dist/components/button.js.map +1 -1
  95. package/dist/components/chart-edge.d.ts +16 -0
  96. package/dist/components/chart-edge.js +14 -1
  97. package/dist/components/chart-edge.js.map +1 -1
  98. package/dist/components/chart-figure.d.ts +13 -0
  99. package/dist/components/chart-figure.js +15 -0
  100. package/dist/components/chart-figure.js.map +1 -0
  101. package/dist/components/chart-zoom-core.js +1 -4
  102. package/dist/components/chart-zoom-core.js.map +1 -1
  103. package/dist/components/chart.d.ts +8 -1
  104. package/dist/components/chart.js +19 -10
  105. package/dist/components/chart.js.map +1 -1
  106. package/dist/components/combobox-core.d.ts +111 -2
  107. package/dist/components/combobox-core.js +148 -42
  108. package/dist/components/combobox-core.js.map +1 -1
  109. package/dist/components/combobox.d.ts +1 -1
  110. package/dist/components/combobox.js +141 -130
  111. package/dist/components/combobox.js.map +1 -1
  112. package/dist/components/copy-button.d.ts +6 -5
  113. package/dist/components/copy-button.js +5 -3
  114. package/dist/components/copy-button.js.map +1 -1
  115. package/dist/components/country-select.js +2 -2
  116. package/dist/components/country-select.js.map +1 -1
  117. package/dist/components/data-table-column-settings.d.ts +1 -1
  118. package/dist/components/data-table-column-settings.js +33 -7
  119. package/dist/components/data-table-column-settings.js.map +1 -1
  120. package/dist/components/data-table-filters.d.ts +4 -2
  121. package/dist/components/data-table-filters.js +2 -2
  122. package/dist/components/data-table-filters.js.map +1 -1
  123. package/dist/components/data-table-fit.d.ts +6 -4
  124. package/dist/components/data-table-fit.js +4 -1
  125. package/dist/components/data-table-fit.js.map +1 -1
  126. package/dist/components/data-table-groups.d.ts +1 -1
  127. package/dist/components/data-table-groups.js.map +1 -1
  128. package/dist/components/data-table-head.d.ts +1 -1
  129. package/dist/components/data-table-head.js +15 -12
  130. package/dist/components/data-table-head.js.map +1 -1
  131. package/dist/components/data-table-mobile.d.ts +12 -7
  132. package/dist/components/data-table-mobile.js +43 -30
  133. package/dist/components/data-table-mobile.js.map +1 -1
  134. package/dist/components/data-table-pagination.js +11 -6
  135. package/dist/components/data-table-pagination.js.map +1 -1
  136. package/dist/components/data-table-resize.d.ts +1 -1
  137. package/dist/components/data-table-resize.js.map +1 -1
  138. package/dist/components/data-table-row-actions.d.ts +2 -2
  139. package/dist/components/data-table-row-actions.js.map +1 -1
  140. package/dist/components/data-table-row.d.ts +6 -2
  141. package/dist/components/data-table-row.js +17 -10
  142. package/dist/components/data-table-row.js.map +1 -1
  143. package/dist/components/data-table-selection.d.ts +1 -1
  144. package/dist/components/data-table-selection.js.map +1 -1
  145. package/dist/components/data-table-shared.d.ts +10 -2
  146. package/dist/components/data-table-shared.js +18 -0
  147. package/dist/components/data-table-shared.js.map +1 -1
  148. package/dist/components/data-table-sort.d.ts +21 -2
  149. package/dist/components/data-table-sort.js +24 -0
  150. package/dist/components/data-table-sort.js.map +1 -1
  151. package/dist/components/data-table-virtual.d.ts +1 -1
  152. package/dist/components/data-table-virtual.js +18 -6
  153. package/dist/components/data-table-virtual.js.map +1 -1
  154. package/dist/components/data-table.d.ts +13 -4
  155. package/dist/components/data-table.js +139 -36
  156. package/dist/components/data-table.js.map +1 -1
  157. package/dist/components/date-field.d.ts +24 -2
  158. package/dist/components/date-field.js +33 -8
  159. package/dist/components/date-field.js.map +1 -1
  160. package/dist/components/date-picker.d.ts +15 -2
  161. package/dist/components/date-picker.js +55 -26
  162. package/dist/components/date-picker.js.map +1 -1
  163. package/dist/components/date-range-picker.d.ts +47 -20
  164. package/dist/components/date-range-picker.js +23 -7
  165. package/dist/components/date-range-picker.js.map +1 -1
  166. package/dist/components/error-boundary.js +37 -30
  167. package/dist/components/error-boundary.js.map +1 -1
  168. package/dist/components/{ui-labels.d.ts → field-base-labels.d.ts} +0 -2
  169. package/dist/components/{ui-labels.js → field-base-labels.js} +2 -9
  170. package/dist/components/field-base-labels.js.map +1 -0
  171. package/dist/components/field-base.d.ts +4 -3
  172. package/dist/components/field-base.js +3 -3
  173. package/dist/components/field-base.js.map +1 -1
  174. package/dist/components/field-sync-labels.d.ts +1 -0
  175. package/dist/components/field-sync-labels.js.map +1 -1
  176. package/dist/components/field-sync.d.ts +23 -1
  177. package/dist/components/field-sync.js.map +1 -1
  178. package/dist/components/form-actions.js +11 -5
  179. package/dist/components/form-actions.js.map +1 -1
  180. package/dist/components/hover-menu.d.ts +3 -0
  181. package/dist/components/hover-menu.js +5 -3
  182. package/dist/components/hover-menu.js.map +1 -1
  183. package/dist/components/icon-button.js +14 -9
  184. package/dist/components/icon-button.js.map +1 -1
  185. package/dist/components/inline-confirm.d.ts +43 -0
  186. package/dist/components/inline-confirm.js +67 -0
  187. package/dist/components/inline-confirm.js.map +1 -0
  188. package/dist/components/inline-entity-combobox.d.ts +4 -3
  189. package/dist/components/inline-entity-combobox.js +148 -140
  190. package/dist/components/inline-entity-combobox.js.map +1 -1
  191. package/dist/components/input.js +1 -1
  192. package/dist/components/input.js.map +1 -1
  193. package/dist/components/jump-calendar.js +28 -112
  194. package/dist/components/jump-calendar.js.map +1 -1
  195. package/dist/components/legal-page.d.ts +3 -1
  196. package/dist/components/legal-page.js +3 -2
  197. package/dist/components/legal-page.js.map +1 -1
  198. package/dist/components/legal.d.ts +4 -2
  199. package/dist/components/legal.js.map +1 -1
  200. package/dist/components/lightbox.d.ts +2 -2
  201. package/dist/components/lightbox.js +17 -6
  202. package/dist/components/lightbox.js.map +1 -1
  203. package/dist/components/list.d.ts +6 -2
  204. package/dist/components/list.js +3 -2
  205. package/dist/components/list.js.map +1 -1
  206. package/dist/components/measured-grid.d.ts +1 -1
  207. package/dist/components/measured-grid.js +2 -1
  208. package/dist/components/measured-grid.js.map +1 -1
  209. package/dist/components/mini-calendar.js +3 -5
  210. package/dist/components/mini-calendar.js.map +1 -1
  211. package/dist/components/modal.js +3 -1
  212. package/dist/components/modal.js.map +1 -1
  213. package/dist/components/month-grid.d.ts +55 -0
  214. package/dist/components/month-grid.js +148 -0
  215. package/dist/components/month-grid.js.map +1 -0
  216. package/dist/components/month-picker.d.ts +36 -4
  217. package/dist/components/month-picker.js +123 -146
  218. package/dist/components/month-picker.js.map +1 -1
  219. package/dist/components/multi-select.d.ts +2 -2
  220. package/dist/components/multi-select.js +11 -6
  221. package/dist/components/multi-select.js.map +1 -1
  222. package/dist/components/picker-sheet.js +2 -1
  223. package/dist/components/picker-sheet.js.map +1 -1
  224. package/dist/components/pie-chart-labels.d.ts +7 -0
  225. package/dist/components/pie-chart-labels.js +1 -0
  226. package/dist/components/pie-chart-labels.js.map +1 -1
  227. package/dist/components/pie-chart.d.ts +5 -3
  228. package/dist/components/pie-chart.js +7 -22
  229. package/dist/components/pie-chart.js.map +1 -1
  230. package/dist/components/popover.d.ts +3 -0
  231. package/dist/components/popover.js +7 -1
  232. package/dist/components/popover.js.map +1 -1
  233. package/dist/components/row-actions.js +2 -1
  234. package/dist/components/row-actions.js.map +1 -1
  235. package/dist/components/section-nav.d.ts +7 -0
  236. package/dist/components/section-nav.js.map +1 -1
  237. package/dist/components/series-chart-axes.d.ts +3 -3
  238. package/dist/components/series-chart-axes.js.map +1 -1
  239. package/dist/components/series-chart-labels.d.ts +7 -4
  240. package/dist/components/series-chart-labels.js.map +1 -1
  241. package/dist/components/series-chart.d.ts +31 -7
  242. package/dist/components/series-chart.js +72 -29
  243. package/dist/components/series-chart.js.map +1 -1
  244. package/dist/components/share-card.js +3 -3
  245. package/dist/components/share-card.js.map +1 -1
  246. package/dist/components/sign-chip-labels.d.ts +1 -0
  247. package/dist/components/sign-chip-labels.js.map +1 -1
  248. package/dist/components/sign-chip.d.ts +10 -1
  249. package/dist/components/sign-chip.js.map +1 -1
  250. package/dist/components/tabs-labels.d.ts +2 -0
  251. package/dist/components/tabs-labels.js +11 -0
  252. package/dist/components/tabs-labels.js.map +1 -0
  253. package/dist/components/tabs.d.ts +1 -1
  254. package/dist/components/tabs.js +1 -1
  255. package/dist/components/tabs.js.map +1 -1
  256. package/dist/components/toggle-legend.d.ts +2 -2
  257. package/dist/components/toggle-legend.js +6 -6
  258. package/dist/components/toggle-legend.js.map +1 -1
  259. package/dist/components/translation-review-editor.d.ts +4 -2
  260. package/dist/components/translation-review-editor.js +2 -3
  261. package/dist/components/translation-review-editor.js.map +1 -1
  262. package/dist/components/translation-review.d.ts +2 -1
  263. package/dist/components/translation-review.js +2 -2
  264. package/dist/components/translation-review.js.map +1 -1
  265. package/dist/components/treemap-labels.d.ts +26 -0
  266. package/dist/components/treemap-labels.js +10 -0
  267. package/dist/components/treemap-labels.js.map +1 -0
  268. package/dist/components/treemap-layout.d.ts +62 -0
  269. package/dist/components/treemap-layout.js +126 -0
  270. package/dist/components/treemap-layout.js.map +1 -0
  271. package/dist/components/treemap.d.ts +140 -17
  272. package/dist/components/treemap.js +324 -97
  273. package/dist/components/treemap.js.map +1 -1
  274. package/dist/components/use-table-state.d.ts +5 -5
  275. package/dist/components/use-table-state.js +4 -1
  276. package/dist/components/use-table-state.js.map +1 -1
  277. package/dist/data-table.d.ts +6 -2
  278. package/dist/data-table.js +7 -2
  279. package/dist/data-table.js.map +1 -1
  280. package/dist/eslint/index.js +1 -1
  281. package/dist/eslint/role-utilities.d.ts +36 -7
  282. package/dist/eslint/role-utilities.js +42 -9
  283. package/dist/eslint/role-utilities.js.map +1 -1
  284. package/dist/feedback/feedback-dialog.d.ts +25 -16
  285. package/dist/feedback/feedback-dialog.js +6 -2
  286. package/dist/feedback/feedback-dialog.js.map +1 -1
  287. package/dist/feedback/feedback-mutation.d.ts +30 -0
  288. package/dist/feedback/feedback-mutation.js +16 -0
  289. package/dist/feedback/feedback-mutation.js.map +1 -0
  290. package/dist/feedback/feedback-page-link.d.ts +53 -0
  291. package/dist/feedback/feedback-page-link.js +37 -0
  292. package/dist/feedback/feedback-page-link.js.map +1 -0
  293. package/dist/feedback/feedback-public-list.d.ts +12 -3
  294. package/dist/feedback/feedback-public-list.js +2 -1
  295. package/dist/feedback/feedback-public-list.js.map +1 -1
  296. package/dist/feedback/feedback-replies.d.ts +3 -1
  297. package/dist/feedback/feedback-replies.js +5 -4
  298. package/dist/feedback/feedback-replies.js.map +1 -1
  299. package/dist/feedback/feedback-row-detail-labels.js +5 -0
  300. package/dist/feedback/feedback-row-detail-labels.js.map +1 -1
  301. package/dist/feedback/feedback-row-detail.d.ts +64 -28
  302. package/dist/feedback/feedback-row-detail.js +30 -28
  303. package/dist/feedback/feedback-row-detail.js.map +1 -1
  304. package/dist/feedback/feedback-status-undo.d.ts +30 -11
  305. package/dist/feedback/feedback-status-undo.js +10 -15
  306. package/dist/feedback/feedback-status-undo.js.map +1 -1
  307. package/dist/feedback/feedback-submit-dialog.d.ts +1 -1
  308. package/dist/feedback/feedback-submit-dialog.js +1 -1
  309. package/dist/feedback/feedback-submit-dialog.js.map +1 -1
  310. package/dist/feedback/feedback-submit.js +9 -3
  311. package/dist/feedback/feedback-submit.js.map +1 -1
  312. package/dist/feedback/feedback-swipe.d.ts +1 -1
  313. package/dist/feedback/feedback-swipe.js.map +1 -1
  314. package/dist/feedback/feedback-table.d.ts +21 -9
  315. package/dist/feedback/feedback-table.js +45 -25
  316. package/dist/feedback/feedback-table.js.map +1 -1
  317. package/dist/feedback/feedback-thread-labels.d.ts +2 -2
  318. package/dist/feedback/feedback-thread-labels.js.map +1 -1
  319. package/dist/feedback/feedback-thread.d.ts +24 -23
  320. package/dist/feedback/feedback-thread.js +2 -1
  321. package/dist/feedback/feedback-thread.js.map +1 -1
  322. package/dist/feedback.d.ts +34 -0
  323. package/dist/feedback.js +42 -0
  324. package/dist/feedback.js.map +1 -1
  325. package/dist/hooks/use-focus-trap.d.ts +35 -0
  326. package/dist/hooks/use-focus-trap.js +6 -4
  327. package/dist/hooks/use-focus-trap.js.map +1 -1
  328. package/dist/hooks/use-hotkey.d.ts +5 -2
  329. package/dist/hooks/use-hotkey.js +5 -4
  330. package/dist/hooks/use-hotkey.js.map +1 -1
  331. package/dist/hooks/use-long-press.d.ts +7 -4
  332. package/dist/hooks/use-long-press.js +3 -0
  333. package/dist/hooks/use-long-press.js.map +1 -1
  334. package/dist/hooks/use-media-query.js +12 -4
  335. package/dist/hooks/use-media-query.js.map +1 -1
  336. package/dist/hooks/use-mounted.d.ts +22 -0
  337. package/dist/hooks/use-mounted.js +24 -0
  338. package/dist/hooks/use-mounted.js.map +1 -0
  339. package/dist/hooks/use-overlay-history.js +19 -3
  340. package/dist/hooks/use-overlay-history.js.map +1 -1
  341. package/dist/i18n/defaults.js +4 -5
  342. package/dist/i18n/defaults.js.map +1 -1
  343. package/dist/i18n/german.js +7 -1
  344. package/dist/i18n/german.js.map +1 -1
  345. package/dist/i18n/kit-labels.d.ts +9 -2
  346. package/dist/i18n/kit-labels.js.map +1 -1
  347. package/dist/i18n/locales/en.js +20 -41
  348. package/dist/i18n/locales/en.js.map +3 -3
  349. package/dist/i18n/locales/es.js +7 -1
  350. package/dist/i18n/locales/es.js.map +1 -1
  351. package/dist/i18n/locales/fr.js +20 -10
  352. package/dist/i18n/locales/fr.js.map +1 -1
  353. package/dist/i18n/locales/hu.js +9 -1
  354. package/dist/i18n/locales/hu.js.map +1 -1
  355. package/dist/i18n/locales/it.js +7 -1
  356. package/dist/i18n/locales/it.js.map +1 -1
  357. package/dist/i18n/locales/zh.js +8 -1
  358. package/dist/i18n/locales/zh.js.map +1 -1
  359. package/dist/i18n/review.js +5 -0
  360. package/dist/i18n/review.js.map +1 -1
  361. package/dist/index.d.ts +64 -17
  362. package/dist/index.js +77 -12
  363. package/dist/index.js.map +1 -1
  364. package/dist/landing/routing.d.ts +3 -1
  365. package/dist/landing/routing.js +4 -7
  366. package/dist/landing/routing.js.map +1 -1
  367. package/dist/lib/broadcast.d.ts +17 -0
  368. package/dist/lib/broadcast.js +30 -0
  369. package/dist/lib/broadcast.js.map +1 -0
  370. package/dist/lib/date-format.d.ts +37 -2
  371. package/dist/lib/date-format.js +34 -8
  372. package/dist/lib/date-format.js.map +1 -1
  373. package/dist/lib/day-format.d.ts +46 -0
  374. package/dist/lib/day-format.js +46 -0
  375. package/dist/lib/day-format.js.map +1 -0
  376. package/dist/lib/describe-failure.d.ts +14 -0
  377. package/dist/lib/describe-failure.js +9 -0
  378. package/dist/lib/describe-failure.js.map +1 -0
  379. package/dist/lib/direction.d.ts +16 -0
  380. package/dist/lib/direction.js +9 -1
  381. package/dist/lib/direction.js.map +1 -1
  382. package/dist/lib/focus-left.d.ts +63 -0
  383. package/dist/lib/focus-left.js +67 -0
  384. package/dist/lib/focus-left.js.map +1 -0
  385. package/dist/lib/format.js +5 -14
  386. package/dist/lib/format.js.map +1 -1
  387. package/dist/lib/http-status.d.ts +24 -0
  388. package/dist/lib/http-status.js +14 -0
  389. package/dist/lib/http-status.js.map +1 -0
  390. package/dist/lib/intl-cache.d.ts +14 -0
  391. package/dist/lib/intl-cache.js +15 -0
  392. package/dist/lib/intl-cache.js.map +1 -0
  393. package/dist/lib/isin.d.ts +10 -0
  394. package/dist/lib/isin.js.map +1 -1
  395. package/dist/lib/iso-day.d.ts +11 -0
  396. package/dist/lib/iso-day.js +8 -0
  397. package/dist/lib/iso-day.js.map +1 -0
  398. package/dist/lib/lazy-with-fallback.d.ts +31 -0
  399. package/dist/lib/lazy-with-fallback.js +40 -0
  400. package/dist/lib/lazy-with-fallback.js.map +1 -0
  401. package/dist/lib/path-pattern.d.ts +34 -0
  402. package/dist/lib/path-pattern.js +24 -0
  403. package/dist/lib/path-pattern.js.map +1 -0
  404. package/dist/lib/reduced-motion.d.ts +2 -1
  405. package/dist/lib/reduced-motion.js.map +1 -1
  406. package/dist/lib/round.d.ts +2 -1
  407. package/dist/lib/round.js +2 -1
  408. package/dist/lib/round.js.map +1 -1
  409. package/dist/lib/safe-storage.d.ts +24 -5
  410. package/dist/lib/safe-storage.js +27 -2
  411. package/dist/lib/safe-storage.js.map +1 -1
  412. package/dist/lib/session-refresh.js +1 -1
  413. package/dist/lib/session-refresh.js.map +1 -1
  414. package/dist/lib/share-format.d.ts +13 -0
  415. package/dist/lib/share-format.js +10 -0
  416. package/dist/lib/share-format.js.map +1 -0
  417. package/dist/lib/text-case.d.ts +17 -0
  418. package/dist/lib/text-case.js +8 -0
  419. package/dist/lib/text-case.js.map +1 -0
  420. package/dist/lib/text-match.d.ts +29 -0
  421. package/dist/lib/text-match.js +20 -2
  422. package/dist/lib/text-match.js.map +1 -1
  423. package/dist/lib/thenable.d.ts +13 -0
  424. package/dist/lib/thenable.js +8 -0
  425. package/dist/lib/thenable.js.map +1 -0
  426. package/dist/lib/translation-review.d.ts +7 -2
  427. package/dist/lib/translation-review.js +4 -4
  428. package/dist/lib/translation-review.js.map +1 -1
  429. package/dist/notifications/device-zone-report.js +1 -1
  430. package/dist/notifications/device-zone-report.js.map +1 -1
  431. package/dist/notifications/notification-bell.d.ts +2 -1
  432. package/dist/notifications/notification-bell.js +3 -3
  433. package/dist/notifications/notification-bell.js.map +1 -1
  434. package/dist/notifications/notification-inbox.d.ts +10 -6
  435. package/dist/notifications/notification-inbox.js +26 -48
  436. package/dist/notifications/notification-inbox.js.map +1 -1
  437. package/dist/notifications/notification-parts.d.ts +3 -2
  438. package/dist/notifications/notification-parts.js +1 -3
  439. package/dist/notifications/notification-parts.js.map +1 -1
  440. package/dist/notifications/notification-types-setting.js +1 -1
  441. package/dist/notifications/notification-types-setting.js.map +1 -1
  442. package/dist/notifications/notifications-labels.d.ts +6 -0
  443. package/dist/notifications/notifications-labels.js +1 -0
  444. package/dist/notifications/notifications-labels.js.map +1 -1
  445. package/dist/notifications/push-device-setting.js +1 -1
  446. package/dist/notifications/push-device-setting.js.map +1 -1
  447. package/dist/notifications/push-devices-setting.d.ts +2 -1
  448. package/dist/notifications/push-devices-setting.js +27 -49
  449. package/dist/notifications/push-devices-setting.js.map +1 -1
  450. package/dist/notifications/quiet-hours-setting.d.ts +10 -3
  451. package/dist/notifications/quiet-hours-setting.js +65 -26
  452. package/dist/notifications/quiet-hours-setting.js.map +1 -1
  453. package/dist/notifications/unsubscribe-panel.js +4 -7
  454. package/dist/notifications/unsubscribe-panel.js.map +1 -1
  455. package/dist/notifications/use-push-device.d.ts +39 -1
  456. package/dist/notifications/use-push-device.js +28 -7
  457. package/dist/notifications/use-push-device.js.map +1 -1
  458. package/dist/offline/query-persistence.d.ts +3 -1
  459. package/dist/offline/query-persistence.js +19 -2
  460. package/dist/offline/query-persistence.js.map +1 -1
  461. package/dist/rhf/fields.d.ts +11 -4
  462. package/dist/rhf/fields.js.map +1 -1
  463. package/dist/search/command-palette.js +1 -1
  464. package/dist/search/command-palette.js.map +1 -1
  465. package/dist/search/global-search.js +19 -9
  466. package/dist/search/global-search.js.map +1 -1
  467. package/dist/search/use-command-key.d.ts +12 -1
  468. package/dist/search/use-command-key.js +3 -12
  469. package/dist/search/use-command-key.js.map +1 -1
  470. package/dist/search.d.ts +7 -0
  471. package/dist/search.js +10 -0
  472. package/dist/search.js.map +1 -1
  473. package/dist/settings/use-settings-focus.js +1 -0
  474. package/dist/settings/use-settings-focus.js.map +1 -1
  475. package/dist/shell/account-menu-language.d.ts +21 -5
  476. package/dist/shell/account-menu-language.js +3 -1
  477. package/dist/shell/account-menu-language.js.map +1 -1
  478. package/dist/shell/account-menu-text-size.d.ts +26 -9
  479. package/dist/shell/account-menu-text-size.js +3 -2
  480. package/dist/shell/account-menu-text-size.js.map +1 -1
  481. package/dist/shell/dev-menu.js +5 -18
  482. package/dist/shell/dev-menu.js.map +1 -1
  483. package/dist/shell/role-switcher.d.ts +7 -0
  484. package/dist/shell/role-switcher.js.map +1 -1
  485. package/dist/shell/top-bar-actions.d.ts +1 -1
  486. package/dist/shell/top-bar-actions.js.map +1 -1
  487. package/dist/shell/top-bar-parts-labels.d.ts +0 -2
  488. package/dist/shell/top-bar-parts-labels.js +0 -1
  489. package/dist/shell/top-bar-parts-labels.js.map +1 -1
  490. package/dist/shell.d.ts +27 -8
  491. package/dist/shell.js +28 -7
  492. package/dist/shell.js.map +1 -1
  493. package/dist/sync/engine.d.ts +30 -4
  494. package/dist/sync/engine.js +172 -52
  495. package/dist/sync/engine.js.map +1 -1
  496. package/dist/sync.d.ts +6 -2
  497. package/dist/sync.js +6 -1
  498. package/dist/sync.js.map +1 -1
  499. package/dist/testing/css-variables.js +3 -8
  500. package/dist/testing/css-variables.js.map +1 -1
  501. package/dist/theme/contrast.d.ts +2 -1
  502. package/dist/theme/contrast.js +3 -8
  503. package/dist/theme/contrast.js.map +1 -1
  504. package/dist/theme/palette-store.js +6 -6
  505. package/dist/theme/palette-store.js.map +1 -1
  506. package/dist/theme/text-size.js +3 -8
  507. package/dist/theme/text-size.js.map +1 -1
  508. package/dist/theme/theme-store.js +3 -6
  509. package/dist/theme/theme-store.js.map +1 -1
  510. package/dist/tour/tour-catalogue.d.ts +7 -4
  511. package/dist/tour/tour-catalogue.js +12 -10
  512. package/dist/tour/tour-catalogue.js.map +1 -1
  513. package/dist/tour/tour-dock.d.ts +0 -2
  514. package/dist/tour/tour-dock.js +0 -2
  515. package/dist/tour/tour-dock.js.map +1 -1
  516. package/dist/tour/tour-gates.d.ts +4 -0
  517. package/dist/tour/tour-gates.js +14 -0
  518. package/dist/tour/tour-gates.js.map +1 -1
  519. package/dist/tour/tour-overlay.d.ts +27 -0
  520. package/dist/tour/tour-overlay.js +741 -0
  521. package/dist/tour/tour-overlay.js.map +1 -0
  522. package/dist/tour/tour.d.ts +13 -3
  523. package/dist/tour/tour.js +59 -781
  524. package/dist/tour/tour.js.map +1 -1
  525. package/dist/tour/use-tour-progress.js +1 -1
  526. package/dist/tour/use-tour-progress.js.map +1 -1
  527. package/dist/wizard/stepper-nav.d.ts +5 -1
  528. package/dist/wizard/stepper-nav.js.map +1 -1
  529. package/dist/wizard/types.d.ts +6 -2
  530. package/dist/wizard/types.js.map +1 -1
  531. package/dist/wizard/use-wizard.d.ts +3 -1
  532. package/dist/wizard/use-wizard.js.map +1 -1
  533. package/dist/wizard/validation.d.ts +3 -1
  534. package/dist/wizard/validation.js.map +1 -1
  535. package/package.json +10 -6
  536. package/src/account/account-parts.ts +5 -25
  537. package/src/account/data-export-setting-labels.ts +1 -1
  538. package/src/account/delete-account-setting-labels.ts +1 -1
  539. package/src/account/email-change-setting-labels.ts +1 -1
  540. package/src/account/passkeys-setting.tsx +60 -38
  541. package/src/account/sessions-setting.tsx +18 -12
  542. package/src/admin/admin-action-confirm.tsx +1 -5
  543. package/src/admin/admin-parts.ts +11 -25
  544. package/src/admin/mail-test-card-labels.ts +1 -1
  545. package/src/admin/plan-change-labels.ts +5 -23
  546. package/src/admin/plan-change.tsx +7 -44
  547. package/src/admin/reviewer-scope-editor.tsx +3 -3
  548. package/src/auth/auth-errors-labels.ts +23 -0
  549. package/src/auth/auth-errors.ts +11 -38
  550. package/src/auth/complete-name-dialog.tsx +4 -1
  551. package/src/auth/forgot-password-form-labels.ts +1 -1
  552. package/src/auth/forgot-password-form.tsx +11 -6
  553. package/src/auth/register-form-labels.ts +1 -1
  554. package/src/auth/reset-password-form-labels.ts +1 -1
  555. package/src/auth/reset-password-form.tsx +8 -4
  556. package/src/auth/sign-in-form-labels.ts +1 -1
  557. package/src/auth/status-parts.tsx +0 -6
  558. package/src/auth/verify-email-labels.ts +1 -1
  559. package/src/auth/verify-email.tsx +11 -6
  560. package/src/billing/cancel-subscription.tsx +26 -12
  561. package/src/billing/dialog-close.ts +34 -0
  562. package/src/billing/plan-card.tsx +36 -11
  563. package/src/billing/plan-change-labels.ts +66 -0
  564. package/src/billing/plan-switch.tsx +26 -12
  565. package/src/chart.ts +21 -3
  566. package/src/components/account-chips.tsx +20 -23
  567. package/src/components/alert-banner.tsx +82 -5
  568. package/src/components/amount-input.tsx +18 -7
  569. package/src/components/autocomplete.tsx +64 -70
  570. package/src/components/bulk-action-bar.tsx +70 -2
  571. package/src/components/button-look.ts +5 -5
  572. package/src/components/button.tsx +2 -2
  573. package/src/components/chart-edge.ts +34 -1
  574. package/src/components/chart-figure.tsx +35 -0
  575. package/src/components/chart-zoom-core.tsx +6 -5
  576. package/src/components/chart.tsx +26 -5
  577. package/src/components/combobox-core.tsx +293 -62
  578. package/src/components/combobox.tsx +183 -153
  579. package/src/components/copy-button.tsx +34 -23
  580. package/src/components/country-select.tsx +16 -11
  581. package/src/components/data-table-column-settings.tsx +52 -10
  582. package/src/components/data-table-filters.ts +6 -4
  583. package/src/components/data-table-fit.ts +19 -5
  584. package/src/components/data-table-groups.tsx +1 -1
  585. package/src/components/data-table-head.tsx +32 -22
  586. package/src/components/data-table-mobile.tsx +61 -26
  587. package/src/components/data-table-pagination.tsx +21 -6
  588. package/src/components/data-table-resize.ts +1 -1
  589. package/src/components/data-table-row-actions.tsx +3 -3
  590. package/src/components/data-table-row.tsx +25 -14
  591. package/src/components/data-table-selection.ts +1 -1
  592. package/src/components/data-table-shared.tsx +33 -1
  593. package/src/components/data-table-sort.ts +57 -2
  594. package/src/components/data-table-virtual.ts +32 -8
  595. package/src/components/data-table.tsx +239 -68
  596. package/src/components/date-field.tsx +65 -8
  597. package/src/components/date-picker.tsx +125 -48
  598. package/src/components/date-range-picker.tsx +82 -31
  599. package/src/components/error-boundary.tsx +53 -39
  600. package/src/components/field-base-labels.ts +20 -0
  601. package/src/components/field-base.tsx +13 -7
  602. package/src/components/field-sync-labels.ts +1 -0
  603. package/src/components/field-sync.tsx +23 -1
  604. package/src/components/form-actions.tsx +20 -5
  605. package/src/components/hover-menu.tsx +18 -8
  606. package/src/components/icon-button.tsx +14 -9
  607. package/src/components/inline-confirm.tsx +116 -0
  608. package/src/components/inline-entity-combobox.tsx +197 -153
  609. package/src/components/input.tsx +1 -1
  610. package/src/components/jump-calendar.tsx +30 -146
  611. package/src/components/legal-page.tsx +10 -7
  612. package/src/components/legal.tsx +4 -2
  613. package/src/components/lightbox.tsx +21 -8
  614. package/src/components/list.tsx +10 -4
  615. package/src/components/measured-grid.tsx +8 -4
  616. package/src/components/mini-calendar.tsx +6 -5
  617. package/src/components/modal.tsx +6 -1
  618. package/src/components/month-grid.tsx +229 -0
  619. package/src/components/month-picker.tsx +192 -200
  620. package/src/components/multi-select.tsx +21 -9
  621. package/src/components/picker-sheet.tsx +12 -9
  622. package/src/components/pie-chart-labels.ts +8 -0
  623. package/src/components/pie-chart.tsx +22 -28
  624. package/src/components/popover.tsx +18 -1
  625. package/src/components/row-actions.tsx +2 -1
  626. package/src/components/section-nav.tsx +7 -0
  627. package/src/components/series-chart-axes.ts +3 -3
  628. package/src/components/series-chart-labels.ts +7 -4
  629. package/src/components/series-chart.tsx +178 -69
  630. package/src/components/share-card.tsx +6 -6
  631. package/src/components/sign-chip-labels.ts +1 -0
  632. package/src/components/sign-chip.tsx +10 -1
  633. package/src/components/tabs-labels.ts +13 -0
  634. package/src/components/tabs.tsx +2 -2
  635. package/src/components/toggle-legend.tsx +16 -11
  636. package/src/components/translation-review-editor.tsx +6 -5
  637. package/src/components/translation-review.tsx +4 -3
  638. package/src/components/treemap-labels.ts +39 -0
  639. package/src/components/treemap-layout.ts +210 -0
  640. package/src/components/treemap.tsx +722 -133
  641. package/src/components/use-table-state.ts +12 -9
  642. package/src/data-table.ts +9 -2
  643. package/src/eslint/role-utilities.ts +97 -19
  644. package/src/feedback/feedback-dialog.tsx +30 -19
  645. package/src/feedback/feedback-mutation.ts +41 -0
  646. package/src/feedback/feedback-page-link.ts +90 -0
  647. package/src/feedback/feedback-public-list.tsx +17 -5
  648. package/src/feedback/feedback-replies.tsx +13 -6
  649. package/src/feedback/feedback-row-detail-labels.ts +5 -0
  650. package/src/feedback/feedback-row-detail.tsx +103 -67
  651. package/src/feedback/feedback-status-undo.ts +41 -27
  652. package/src/feedback/feedback-submit-dialog.tsx +2 -2
  653. package/src/feedback/feedback-submit.tsx +21 -7
  654. package/src/feedback/feedback-swipe.tsx +1 -1
  655. package/src/feedback/feedback-table.tsx +86 -38
  656. package/src/feedback/feedback-thread-labels.ts +2 -2
  657. package/src/feedback/feedback-thread.tsx +27 -25
  658. package/src/feedback.ts +42 -0
  659. package/src/hooks/use-focus-trap.ts +8 -24
  660. package/src/hooks/use-hotkey.ts +24 -7
  661. package/src/hooks/use-long-press.ts +16 -2
  662. package/src/hooks/use-media-query.ts +20 -4
  663. package/src/hooks/use-mounted.ts +39 -0
  664. package/src/hooks/use-overlay-history.ts +32 -3
  665. package/src/i18n/defaults.ts +4 -5
  666. package/src/i18n/german.ts +8 -2
  667. package/src/i18n/kit-labels.tsx +9 -2
  668. package/src/i18n/locales/es.ts +8 -2
  669. package/src/i18n/locales/fr.ts +21 -13
  670. package/src/i18n/locales/hu.ts +10 -2
  671. package/src/i18n/locales/it.ts +8 -2
  672. package/src/i18n/locales/zh.ts +9 -2
  673. package/src/i18n/review.ts +5 -0
  674. package/src/index.ts +103 -13
  675. package/src/landing/routing.tsx +14 -10
  676. package/src/lib/broadcast.ts +52 -0
  677. package/src/lib/date-format.ts +89 -13
  678. package/src/lib/day-format.ts +96 -0
  679. package/src/lib/describe-failure.ts +18 -0
  680. package/src/lib/direction.ts +39 -0
  681. package/src/lib/focus-left.ts +156 -0
  682. package/src/lib/format.ts +5 -17
  683. package/src/lib/http-status.ts +38 -0
  684. package/src/lib/intl-cache.ts +25 -0
  685. package/src/lib/isin.ts +10 -0
  686. package/src/lib/iso-day.ts +13 -0
  687. package/src/lib/lazy-with-fallback.ts +82 -0
  688. package/src/lib/path-pattern.ts +55 -0
  689. package/src/lib/reduced-motion.ts +2 -1
  690. package/src/lib/round.ts +7 -2
  691. package/src/lib/safe-storage.ts +48 -6
  692. package/src/lib/session-refresh.ts +1 -1
  693. package/src/lib/share-format.ts +18 -0
  694. package/src/lib/text-case.ts +19 -0
  695. package/src/lib/text-match.ts +57 -2
  696. package/src/lib/thenable.ts +19 -0
  697. package/src/lib/translation-review.ts +13 -5
  698. package/src/notifications/device-zone-report.ts +1 -1
  699. package/src/notifications/notification-bell.tsx +7 -4
  700. package/src/notifications/notification-inbox.tsx +40 -58
  701. package/src/notifications/notification-parts.tsx +3 -4
  702. package/src/notifications/notification-types-setting.tsx +1 -1
  703. package/src/notifications/notifications-labels.ts +7 -0
  704. package/src/notifications/push-device-setting.tsx +1 -1
  705. package/src/notifications/push-devices-setting.tsx +30 -55
  706. package/src/notifications/quiet-hours-setting.tsx +93 -31
  707. package/src/notifications/unsubscribe-panel.tsx +4 -7
  708. package/src/notifications/use-push-device.ts +76 -10
  709. package/src/offline/query-persistence.ts +35 -3
  710. package/src/rhf/fields.tsx +11 -4
  711. package/src/search/command-palette.tsx +2 -4
  712. package/src/search/global-search.tsx +36 -15
  713. package/src/search/use-command-key.ts +13 -12
  714. package/src/search.ts +9 -0
  715. package/src/settings/use-settings-focus.ts +3 -0
  716. package/src/shell/account-menu-language.tsx +27 -5
  717. package/src/shell/account-menu-text-size.tsx +32 -10
  718. package/src/shell/dev-menu.tsx +7 -21
  719. package/src/shell/role-switcher.tsx +7 -0
  720. package/src/shell/top-bar-actions.tsx +1 -1
  721. package/src/shell/top-bar-parts-labels.ts +0 -3
  722. package/src/shell.ts +40 -9
  723. package/src/sync/engine.ts +339 -61
  724. package/src/sync.ts +8 -1
  725. package/src/testing/css-variables.ts +8 -9
  726. package/src/theme/contrast.ts +8 -9
  727. package/src/theme/palette-store.ts +9 -9
  728. package/src/theme/text-size.ts +6 -8
  729. package/src/theme/theme-store.ts +7 -9
  730. package/src/tour/tour-catalogue.tsx +26 -15
  731. package/src/tour/tour-dock.ts +0 -2
  732. package/src/tour/tour-gates.ts +23 -0
  733. package/src/tour/tour-overlay.tsx +1170 -0
  734. package/src/tour/tour.tsx +108 -1202
  735. package/src/tour/use-tour-progress.ts +1 -1
  736. package/src/wizard/stepper-nav.tsx +3 -1
  737. package/src/wizard/types.ts +11 -2
  738. package/src/wizard/use-wizard.ts +2 -1
  739. package/src/wizard/validation.ts +8 -2
  740. package/tokens.css +2 -1
  741. package/dist/components/ui-labels.js.map +0 -1
  742. package/dist/shell/dev-switchers.d.ts +0 -6
  743. package/dist/shell/dev-switchers.js +0 -12
  744. package/dist/shell/dev-switchers.js.map +0 -1
  745. package/src/components/ui-labels.ts +0 -24
  746. package/src/shell/dev-switchers.tsx +0 -18
@@ -85,6 +85,10 @@ const KIT_LABEL_SAMPLES = {
85
85
  "tour.backToStep": [["{{title}}"]],
86
86
  "globalSearch.shortcut": [["{{keys}}"]],
87
87
  "pieChart.slice": [["{{label}}", "{{value}}", "{{percent}}"]],
88
+ "pieChart.sliceShare": [["{{label}}", "{{percent}}"]],
89
+ "treemap.tile": [["{{name}}", "{{value}}", "{{share}}"]],
90
+ "treemap.group": [["{{name}}", "{{value}}", "{{share}}"]],
91
+ "treemap.inGroup": [["{{name}}", "{{group}}"]],
88
92
  "sparkline.rising": [["{{first}}", "{{last}}"]],
89
93
  "sparkline.falling": [["{{first}}", "{{last}}"]],
90
94
  "sparkline.flat": [["{{value}}"]],
@@ -275,6 +279,7 @@ const KIT_LABEL_SAMPLES = {
275
279
  "notifications.unsubscribeAbout": [["{{type}}"]],
276
280
  "notifications.stopAll": [["{{app}}"]],
277
281
  "notifications.stoppedAll": [["{{app}}"]],
282
+ "notifications.stoppedHint": [["{{accountMail}}", "{{turnBackOn}}"]],
278
283
  "deleteAccount.afterDays": [[1], [30]],
279
284
  "deleteAccount.handOver": [[1], [3]],
280
285
  "deleteAccount.lastAdminOf": [["{{companies}}"]],
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/i18n/review.ts"],"sourcesContent":["import { legalOperatorText } from \"../components/legal\";\nimport type { LegalOperator, LegalOperatorText } from \"../components/legal\";\nimport type { UiKitLabels } from \"./kit-labels\";\n\n/**\n * The kit's words as a flat `key → text` list, for an app's translation review.\n *\n * keksdose reviews its own locale bundles on its /translations page — one verdict per\n * locale and key, stored with the text the reviewer saw, so a later change re-opens it.\n * The kit's words appear on the same screens but live in TypeScript, not in the app's\n * bundles, and 143 of them are functions (`(count) => \"3 results\"`; 0.28.0, every one\n * listed in {@link KIT_LABEL_SAMPLES}), which a bundle flattener skips. This turns a\n * label tree into rows that page can join on.\n *\n * - A string label is one row under its dot path: `common.close`. An array of words\n * (weekday names) is one row per entry: `miniCalendar.weekdays.0`.\n * - A function label is called with fixed samples. Text arguments are i18next-style\n * placeholders (`{{name}}`), so a translation that drops one is caught by the same\n * placeholder check the app runs on its own strings. Counts are real numbers, twice\n * where the wording may depend on them — 1 and 3 — so a reviewer sees singular and\n * plural. The key names the sample: `combobox.resultCount(1)`,\n * `shareCard.removeConfirm(name)`, `serverWake.waking()`.\n * - The legal sections that name the operator (0.28) take one object; its sample is a\n * placeholder per field and the key calls it `operator`:\n * `legal.sections.privacy.controller.body(operator)`. Pass the app's operator in\n * `options` and those rows read the real sentence — same keys — so the lawyer\n * reviewing the `legal` area reads what the page says:\n *\n * kitLabelStrings(UI_KIT_LABELS_DE_CH, { operator: OPERATOR, locale: \"de-CH\" })\n *\n * Keys depend only on the samples, never on the locale, so the rows of `de-CH` and of the\n * English reference line up key by key. Pass exactly the tree the app hands\n * `UiKitProvider` — its overrides included — and review what users see:\n *\n * kitLabelStrings(UI_KIT_LABELS_DE_CH) // the rows for de-CH\n * kitLabelStrings(DEFAULT_UI_KIT_LABELS) // the English reference\n *\n * A label that throws on its sample becomes a row starting with \"⚠\", so one broken\n * override shows up on the page instead of taking the page down.\n */\nexport function kitLabelStrings(labels: UiKitLabels, options: KitLabelStringsOptions = {}): Record<string, string> {\n const out: Record<string, string> = {};\n const operator = options.operator && legalOperatorText(options.operator, options.locale);\n const walk = (node: unknown, path: string) => {\n if (typeof node === \"string\") {\n out[path] = node;\n } else if (typeof node === \"function\") {\n for (const args of KIT_LABEL_SAMPLES[path] ?? [[]]) {\n // The key is the SAMPLE's (`…body(operator)`), whatever the label is called with,\n // so rows with and without the app's operator join on the same keys.\n const called = operator ? args.map((arg) => (arg === LEGAL_OPERATOR_SAMPLE ? operator : arg)) : args;\n out[\n `${path}(${args\n .map(sampleName)\n .filter((a) => a !== \"\")\n .join(\", \")})`\n ] = render(node as (...args: unknown[]) => unknown, called);\n }\n } else if (node !== null && typeof node === \"object\") {\n for (const [key, value] of Object.entries(node)) walk(value, path ? `${path}.${key}` : key);\n }\n };\n walk(labels, \"\");\n return out;\n}\n\nexport interface KitLabelStringsOptions {\n /**\n * The app's operator (0.28): the legal sections that name it — the imprint's operator\n * and contact, the controller, the privacy contact, the governing law — are rendered\n * with the real values instead of `{{name}}`-style placeholders, so a reviewer (the\n * lawyer, under the `legal` area) reads the sentence the page shows. The keys do not\n * change: `legal.sections.impressum.operator.body(operator)` either way.\n */\n operator?: LegalOperator;\n /** The language the operator's country is named in — the locale these rows are\n * for (\"de-CH\" → \"Schweiz\"). Default English. */\n locale?: string;\n}\n\nfunction render(label: (...args: unknown[]) => unknown, args: readonly unknown[]): string {\n try {\n return String(label(...args));\n } catch (error) {\n return `⚠ ${error instanceof Error ? error.message : String(error)}`;\n }\n}\n\n/** How a sample argument is written in the key: a placeholder by its name, a number as\n * itself, an empty string as `\"\"`, a missing optional argument not at all. */\nfunction sampleName(arg: unknown): string {\n if (arg === undefined) return \"\";\n if (arg === LEGAL_OPERATOR_SAMPLE) return \"operator\";\n if (typeof arg === \"string\") return /^\\{\\{(\\w+)\\}\\}$/.exec(arg)?.[1] ?? JSON.stringify(arg);\n return String(arg);\n}\n\nconst one = [[1], [3]] as const;\n\n/**\n * The legal sections' operator (0.28) as placeholders, one per field — so a translation\n * that drops the city or the email is caught by the same check as a dropped `{{name}}`\n * anywhere else. Named `operator` in the key; {@link kitLabelStrings}' `operator` option\n * swaps the app's real values in for it.\n */\nconst LEGAL_OPERATOR_SAMPLE: LegalOperatorText = Object.freeze({\n name: \"{{name}}\",\n postalCode: \"{{postalCode}}\",\n city: \"{{city}}\",\n region: \"{{region}}\",\n country: \"{{country}}\",\n email: \"{{email}}\",\n bindingLanguage: \"{{bindingLanguage}}\",\n});\nconst operatorSample = [[LEGAL_OPERATOR_SAMPLE]] as const;\n\n/**\n * The sample arguments of every function label in {@link UiKitLabels}, by dot path.\n * `src/i18n/__tests__/review.test.ts` fails when a function label has no entry here, so\n * a new one cannot ship un-reviewable.\n */\nexport const KIT_LABEL_SAMPLES: Readonly<Record<string, readonly (readonly unknown[])[]>> = {\n \"common.fieldValue\": [[\"{{field}}\", \"{{value}}\"]],\n \"common.aboutField\": [[\"{{field}}\"]],\n \"dataTable.filterResults\": [\n [1, 1],\n [3, 12],\n ],\n \"dataTable.sortedAscending\": [[\"{{column}}\"]],\n \"dataTable.sortedDescending\": [[\"{{column}}\"]],\n \"dataTable.sortCleared\": [[\"{{column}}\"]],\n \"dataTable.pageChanged\": [[2, 5]],\n \"dataTable.pageRange\": [[1, 25, 1240]],\n \"dataTable.rowCount\": [[1], [1240]],\n \"dataTable.columnsCount\": [[3, 8]],\n \"dataTable.filterColumn\": [\n [\"{{column}}\", false],\n [\"{{column}}\", true],\n ],\n \"miniCalendar.day\": [[\"{{date}}\"]],\n \"miniCalendar.startSelected\": [[\"{{date}}\"]],\n \"miniCalendar.rangeSelected\": [[\"{{from}}\", \"{{to}}\"]],\n \"calendarHeatmap.day\": [[\"{{date}}\", \"{{value}}\"]],\n \"calendarHeatmap.truncated\": one,\n \"monthPicker.month\": [[\"{{monthYear}}\"]],\n \"combobox.create\": [[\"{{query}}\"]],\n \"combobox.selectedCount\": one,\n \"combobox.resultCount\": one,\n \"combobox.minChars\": one,\n \"multiSelect.selectedCount\": one,\n \"chipInput.added\": [[\"{{value}}\"]],\n \"chipInput.removed\": [[\"{{value}}\"]],\n \"chipInput.atLimit\": one,\n \"chipInput.duplicate\": [[\"{{value}}\"]],\n \"tabs.remove\": [[\"{{tab}}\"]],\n \"appShell.toggleGroup\": [[\"{{group}}\"]],\n \"topBar.role\": [[\"{{role}}\"]],\n \"topBar.languageCurrent\": [[\"{{name}}\"]],\n \"file.size\": [[2_500_000]],\n \"wizard.step\": [[2, 4]],\n \"tour.step\": [[2, 4]],\n \"tour.backToStep\": [[\"{{title}}\"]],\n \"globalSearch.shortcut\": [[\"{{keys}}\"]],\n \"pieChart.slice\": [[\"{{label}}\", \"{{value}}\", \"{{percent}}\"]],\n \"sparkline.rising\": [[\"{{first}}\", \"{{last}}\"]],\n \"sparkline.falling\": [[\"{{first}}\", \"{{last}}\"]],\n \"sparkline.flat\": [[\"{{value}}\"]],\n \"sparkline.single\": [[\"{{value}}\"]],\n \"sparkline.named\": [[\"{{name}}\", \"{{summary}}\"]],\n \"statTile.increase\": [[\"{{amount}}\"]],\n \"statTile.decrease\": [[\"{{amount}}\"]],\n \"statTile.better\": [[\"{{change}}\"]],\n \"statTile.worse\": [[\"{{change}}\"]],\n \"signaturePad.viewTyped\": [[\"{{name}}\"]],\n \"passwordStrength.announcement\": [[\"{{level}}\"]],\n \"passwordStrength.ruleLength\": [[12]],\n \"passwordStrength.optional\": [[\"{{rule}}\"]],\n \"passwordStrength.tooLong\": [[72]],\n \"dangerConfirm.phrase\": [[\"{{phrase}}\"]],\n \"dangerConfirm.needsPhrase\": [[\"{{phrase}}\"]],\n \"iconPicker.resultCount\": one,\n \"filePicker.rejectedType\": [[\"{{name}}\"]],\n \"filePicker.rejectedTypeOnly\": [[\"{{accept}}\", \"{{name}}\"]],\n \"filePicker.rejectedSize\": [[\"{{name}}\", \"{{maxSize}}\"]],\n \"filePicker.rejectedCount\": [\n [\"{{name}}\", 1],\n [\"{{name}}\", 3],\n ],\n \"filePicker.rejectedInvalid\": [[\"{{name}}\"]],\n \"filePicker.rejectedMany\": one,\n \"filePicker.rejectedPick\": one,\n \"filePicker.selected\": [\n [1, \"{{firstName}}\"],\n [3, \"{{firstName}}\"],\n ],\n \"filePicker.remove\": [[\"{{name}}\"]],\n \"filePicker.removed\": [[\"{{name}}\"]],\n \"filePicker.hint\": [[\"{{accept}}\"], [\"\"]],\n \"measuredGrid.removeRow\": [[3]],\n \"measuredGrid.cell\": [[\"{{column}}\", 3]],\n \"measuredGrid.lineError\": [[3]],\n \"measuredGrid.points\": one,\n \"measuredGrid.problems\": one,\n \"feedbackAttachment.attachmentRemoveFile\": [[\"{{name}}\"]],\n \"feedbackAttachment.attachmentLimit\": one,\n \"feedbackAttachment.attachmentUploadFailed\": [[\"{{name}}\"]],\n \"feedbackComposer.sendHint\": [[\"{{modifier}}\"]],\n \"feedbackDialog.submitHint\": [[true], [false]],\n \"feedbackToast.attachmentTooMany\": one,\n \"feedbackToast.statusChanged\": [[\"{{status}}\", \"{{title}}\"]],\n \"feedbackToast.statusRestored\": [[\"{{status}}\", \"{{title}}\"]],\n \"feedbackPage.userFallback\": [[42]],\n // A real value, not a placeholder: the chip upper-cases what it is given, and\n // \"{{ENVIRONMENT}}\" would read as a placeholder of that name.\n \"feedbackPage.environment\": [[\"dev\"]],\n \"feedbackPage.reworkChip\": one,\n \"feedbackDetail.download\": [[\"{{name}}\"]],\n \"feedbackDetail.resolvedAt\": [[\"{{date}}\"]],\n \"feedbackPublic.total\": one,\n \"feedbackPublic.comments\": one,\n \"feedbackPublic.votes\": one,\n \"feedbackPublic.filedBy\": [[\"{{name}}\"]],\n \"feedbackPublic.page\": [[3]],\n \"accountSettings.passkeys.renameItem\": [[\"{{name}}\"]],\n \"accountSettings.passkeys.renameField\": [[\"{{name}}\"]],\n \"accountSettings.passkeys.deleteItem\": [[\"{{name}}\"]],\n \"accountSettings.passkeys.deleteConfirm\": [[\"{{name}}\"]],\n \"accountSettings.passkeys.created\": [[\"{{date}}\"]],\n \"accountSettings.passkeys.lastUsed\": [[\"{{date}}\"]],\n \"confirmDialog.typed\": [[\"{{text}}\"]],\n \"floatingPanel.badge\": one,\n \"bulkActionBar.selected\": one,\n \"form.submitShortcut\": [[true], [false]],\n \"lineItems.remove\": [[3]],\n \"lineItems.confirmRemove\": [[3]],\n \"lineItems.row\": [[3]],\n \"lineItems.cell\": [[\"{{column}}\", 3]],\n \"progressBar.overLimit\": [[\"{{amount}}\"]],\n \"signedAmount.positive\": [[\"{{amount}}\"]],\n \"signedAmount.negative\": [[\"{{amount}}\"]],\n \"errorBoundary.reportedAs\": [[\"{{reference}}\"]],\n \"authedImage.failedImage\": [[\"{{alt}}\"]],\n \"imageGrid.item\": [[2, 5]],\n \"imageGrid.actions\": [[\"{{name}}\"]],\n \"lightbox.counter\": [[2, 5]],\n \"lightbox.position\": [[2, 5]],\n \"shareCard.roleOf\": [[\"{{name}}\"]],\n \"shareCard.teamHint\": [[\"{{name}}\"]],\n \"shareCard.removeConfirm\": [[\"{{name}}\"]],\n \"shareCard.revokePendingConfirm\": [[\"{{name}}\"]],\n \"serverWake.waking\": [[\"{{appName}}\"], [undefined]],\n \"translationReview.filterCount\": [\n [\"{{status}}\", 1],\n [\"{{status}}\", 3],\n ],\n \"translationReview.placeholdersOnly\": one,\n \"translationReview.progress\": [\n [1, 1],\n [3, 12],\n ],\n \"translationReview.localeProgress\": [[3, 12]],\n \"translationReview.placeholderMismatch\": [[\"{{reference}}\", \"{{text}}\"]],\n \"translationReview.lastApproved\": [[\"{{name}}\", \"{{date}}\"]],\n \"translationReview.lastFlagged\": [[\"{{name}}\", \"{{date}}\"]],\n \"translationReview.scope\": [[\"{{areas}}\"]],\n \"translationReview.exportCorrections\": [[0], [1], [3]],\n \"translationReview.approvedToast\": one,\n \"translationReview.clearedToast\": one,\n \"translationReview.groupCount\": [\n [1, 12],\n [3, 12],\n ],\n \"translationReview.approveGroup\": one,\n \"translationReview.confirmGroup\": [\n [1, \"{{group}}\"],\n [3, \"{{group}}\"],\n ],\n \"characterCount.count\": [[12, 80]],\n \"characterCount.remaining\": one,\n \"inlineEdit.edit\": [[\"{{label}}\"]],\n \"ibanInput.country\": [[\"{{code}}\"]],\n \"ibanInput.length\": [[20, 21]],\n \"signChip.direction\": [[\"{{current}}\", \"{{next}}\"]],\n \"signChip.switchTo\": [[\"{{next}}\"]],\n \"rowActions.actionsFor\": [[\"{{name}}\"]],\n \"rowActions.confirmTitle\": [[\"{{action}}\", \"{{name}}\"], [\"{{action}}\"]],\n \"columnMapper.readError\": [[\"{{name}}\"]],\n \"columnMapper.summary\": [\n [1, 1],\n [3, 12],\n ],\n \"columnMapper.unreadCount\": one,\n \"columnMapper.unreadLine\": [[3]],\n \"columnMapper.unreadMore\": one,\n \"columnMapper.columnN\": [[3]],\n \"columnMapper.roleOf\": [[\"{{column}}\"]],\n \"columnMapper.requiredRole\": [[\"{{role}}\"]],\n \"columnMapper.requiredRoleShort\": [[\"{{role}}\"]],\n \"columnMapper.previewOf\": [\n [1, 12],\n [10, 250],\n ],\n \"columnMapper.oneOf\": [[\"{{roles}}\"]],\n \"columnMapper.missing\": [[\"{{roles}}\"]],\n \"legal.sections.impressum.operator.body\": operatorSample,\n \"legal.sections.impressum.contact.body\": operatorSample,\n \"legal.sections.privacy.controller.body\": operatorSample,\n \"legal.sections.privacy.contact.body\": operatorSample,\n \"legal.sections.terms.law.body\": operatorSample,\n // 0.28.1: the binding language, named in the reader's language.\n \"legal.sections.terms.language.body\": operatorSample,\n \"legal.translation.note\": operatorSample,\n \"legal.translation.show\": operatorSample,\n // 0.51.3: the as-of line, with the date already written out.\n \"legal.updated\": [[\"{{date}}\"]],\n // 0.51.4: a limited list's \"Show all (n)\", with the whole list's count.\n \"list.showAll\": [[12], [1240]],\n // 0.29.0: the sign-in and sign-up parts (docs/auth-harmonization.md).\n \"signIn.tagHint\": [[\"{{taggedAddress}}\"]],\n \"register.emailTagUse\": [[\"{{address}}\"]],\n \"forgotPassword.sent\": [[\"{{email}}\"]],\n \"resetPassword.intro\": [[\"{{email}}\"]],\n \"verifyEmail.resendIn\": [[30]],\n \"acceptInvitation.joined\": [[\"{{name}}\"]],\n \"companySwitcher.current\": [[\"{{name}}\"]],\n // 0.30.0: the user administration and the account's own settings\n // (docs/user-admin-harmonization.md). `rateLimited` with and without a wait.\n \"signIn.recoveryCodeHint\": [[16]],\n \"signIn.rateLimited\": [[], [30], [300]],\n \"register.rateLimited\": [[], [30], [300]],\n \"forgotPassword.rateLimited\": [[], [30], [300]],\n \"resetPassword.rateLimited\": [[], [30], [300]],\n \"verifyEmail.rateLimited\": [[], [30], [300]],\n \"emailChange.emailTagUse\": [[\"{{address}}\"]],\n \"emailChange.pending\": [[\"{{newEmail}}\"]],\n \"emailChange.pendingHint\": [[\"{{currentEmail}}\"]],\n \"emailChange.confirmed\": [[\"{{email}}\"]],\n \"emailChange.rateLimited\": [[], [30], [300]],\n \"sessions.lastActive\": [[\"{{when}}\"]],\n \"sessions.ip\": [[\"{{address}}\"]],\n \"sessions.revokeItem\": [[\"{{device}}\"]],\n \"notifications.quietDescription\": [[false], [true], [false, true], [true, true]],\n \"notifications.quietZone\": [[\"{{zone}}\"]],\n \"notifications.bellUnread\": one,\n \"notifications.iosInstall\": [[\"{{app}}\"]],\n \"notifications.testSent\": one,\n \"notifications.explainerBody\": [[\"{{app}}\"]],\n \"notifications.added\": [[\"{{date}}\"]],\n \"notifications.lastDelivery\": [[\"{{date}}\"]],\n \"notifications.failures\": one,\n \"notifications.removeItem\": [[\"{{device}}\"]],\n \"notifications.unsubscribeAbout\": [[\"{{type}}\"]],\n \"notifications.stopAll\": [[\"{{app}}\"]],\n \"notifications.stoppedAll\": [[\"{{app}}\"]],\n \"deleteAccount.afterDays\": [[1], [30]],\n \"deleteAccount.handOver\": [[1], [3]],\n \"deleteAccount.lastAdminOf\": [[\"{{companies}}\"]],\n \"deleteAccount.rateLimited\": [[], [30], [300]],\n \"dataExport.rateLimited\": [[], [30], [300]],\n \"userRoster.actionsFor\": [[\"{{name}}\"]],\n \"roleSelect.roleOf\": [[\"{{name}}\"]],\n \"roleSelect.unavailable\": [[\"{{role}}\", \"{{reason}}\"]],\n \"adminActionLog.by\": [[\"{{actor}}\"]],\n \"adminActionLog.filteredTo\": [[\"{{target}}\"]],\n \"adminActionLog.filterBy\": [[\"{{target}}\"]],\n // 0.45.0 (admin §9.4): a company rename that logged both names.\n \"adminActionLog.renamedFromTo\": [[\"{{from}}\", \"{{to}}\"]],\n \"transferOwnership.title\": [[\"{{name}}\"]],\n \"transferOwnership.unavailable\": [[\"{{account}}\", \"{{reason}}\"]],\n \"invitations.sent\": [[\"{{date}}\"]],\n \"invitations.expires\": [[\"{{date}}\"]],\n \"invitations.invitedBy\": [[\"{{name}}\"]],\n \"invitations.resend\": [[\"{{email}}\"]],\n \"invitations.revoke\": [[\"{{email}}\"]],\n \"invitations.linkReady\": [[\"{{email}}\"]],\n \"invitations.notSent\": [[\"{{email}}\"]],\n \"accountState.deletionOn\": [[\"{{date}}\"]],\n // 0.31.0: the settings shell, the landing page and the demo\n // (docs/settings-harmonization.md, docs/landing-demo-harmonization.md). An optional\n // argument both given and left out: the subject without an app name, the refusal\n // without a `Retry-After`.\n \"settings.noMatches\": [[\"{{query}}\"]],\n \"settings.matchCount\": one,\n \"landing.accessSubject\": [[\"{{app}}\"], [undefined]],\n \"demo.rateLimited\": [[], [1], [3]],\n \"demo.hoursLeft\": [\n [1, 1],\n [3, 12],\n ],\n \"demo.minutesLeft\": one,\n // 0.32.0: the subscription parts (docs/billing-harmonization.md §7). A trial or a grant\n // ending today, tomorrow and in five days; the guest's notice with and without the\n // item's name.\n \"billing.choose\": [[\"{{plan}}\"]],\n \"billing.upgrade\": [[\"{{plan}}\"]],\n \"billing.downgrade\": [[\"{{plan}}\"]],\n \"billing.trialEnding\": [[0], [1], [5]],\n \"billing.grantEnding\": [[0], [1], [5]],\n \"billing.guestReadOnly\": [[\"{{item}}\"], [undefined]],\n \"billing.usage\": [[\"{{used}}\", \"{{limit}}\"]],\n \"billing.contactSubject\": [[\"{{dimension}}\"]],\n \"billing.waitingChanges\": one,\n // 0.33.0: the limit's figure line (§14.11) and the operator's plan parts (§14.12).\n \"billing.limitUsageLine\": [[\"{{dimension}}\", \"{{used}}\", \"{{limit}}\"]],\n // 0.39: PlanSwitchConfirm's two lines with figures (§15.2.10).\n \"billing.switchFromTo\": [[\"{{from}}\", \"{{to}}\"]],\n \"billing.switchNextCharge\": [[\"{{date}}\"]],\n // 0.42 (§16): the buyer's name, or none once they are gone; the cancel's period end.\n \"billing.buyerHolds\": [[\"{{buyer}}\"], [undefined]],\n \"billing.paymentFailedAskBuyer\": [[\"{{buyer}}\"], [undefined]],\n \"billing.cancelConfirmBody\": [[\"{{date}}\"]],\n \"billing.portalOpensNewTab\": [\n [\"{{provider}}\", \"{{app}}\"],\n [\"{{provider}}\", undefined],\n ],\n \"planChange.current\": [[\"{{plan}}\"]],\n \"planChange.changed\": [[\"{{from}}\", \"{{to}}\"]],\n \"planChange.set\": [[\"{{to}}\"]],\n \"planChange.untilDone\": [[\"{{date}}\"]],\n \"planChange.usageOf\": [[\"{{used}}\", \"{{limit}}\", \"{{dimension}}\"]],\n // 0.42.0 (docs/admin-harmonization.md §3.1): the menu row's count, the 403 page's app,\n // the users tile's new accounts.\n \"adminArea.waiting\": one,\n // 0.45.0 (admin §9.3.4): an IconButton's name with its waiting count.\n \"adminArea.waitingLabel\": [\n [\"{{label}}\", 1],\n [\"{{label}}\", 3],\n ],\n // 0.45.0 (admin §9.2.4): the test mail's transport, masked address and limiter.\n \"mailTestCard.transport\": [[\"{{backend}}\"]],\n \"mailTestCard.sent\": [[\"{{address}}\"]],\n \"mailTestCard.rateLimited\": [[], [30], [300]],\n \"adminArea.forbiddenBody\": [[\"{{app}}\"]],\n \"adminArea.tiles.usersNew\": one,\n // 0.42.0 (docs/top-bar-harmonization.md §3.1): the sync indicator's counts, its time, the\n // state joined to its hint or to the app's scope; the dev plan and the role to go back to.\n \"topBarParts.sync.blocked\": one,\n \"topBarParts.sync.pending\": one,\n \"topBarParts.sync.syncedAt\": [[\"{{time}}\"]],\n \"topBarParts.sync.withHint\": [[\"{{state}}\", \"{{hint}}\"]],\n \"topBarParts.sync.scoped\": [[\"{{scope}}\", \"{{state}}\"]],\n \"topBarParts.sync.waitingShort\": one,\n \"topBarParts.dev.plan\": [[\"{{plan}}\"]],\n \"topBarParts.dev.backTo\": [[\"{{role}}\"]],\n // 0.43.0 (docs/tours-harmonization.md §3, §8): the tours page's counts, its group\n // option, the completion day and a reset's day and reason.\n \"tourCatalogue.groupAll\": one,\n \"tourCatalogue.groupOption\": [\n [\"{{group}}\", 1],\n [\"{{group}}\", 3],\n ],\n \"tourCatalogue.stateAll\": one,\n \"tourCatalogue.stateTodo\": one,\n \"tourCatalogue.stateDone\": one,\n \"tourCatalogue.showing\": [[3, 16]],\n \"tourCatalogue.resetOn\": [[\"{{date}}\", \"{{reason}}\"]],\n \"tourCatalogue.points\": one,\n \"tourCatalogue.steps\": one,\n \"tourCatalogue.duration\": one,\n \"tourCatalogue.completedOn\": [[\"{{date}}\"]],\n // 0.45.0 (docs/local-first-harmonization.md §1.6): the sign-out question's count, in\n // both word sets.\n \"signOutPending.lost\": one,\n \"signOutPending.kept\": one,\n};\n"],"mappings":";AAAA,SAAS,yBAAyB;AAwC3B,SAAS,gBAAgB,QAAqB,UAAkC,CAAC,GAA2B;AACjH,QAAM,MAA8B,CAAC;AACrC,QAAM,WAAW,QAAQ,YAAY,kBAAkB,QAAQ,UAAU,QAAQ,MAAM;AACvF,QAAM,OAAO,CAAC,MAAe,SAAiB;AAC5C,QAAI,OAAO,SAAS,UAAU;AAC5B,UAAI,IAAI,IAAI;AAAA,IACd,WAAW,OAAO,SAAS,YAAY;AACrC,iBAAW,QAAQ,kBAAkB,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG;AAGlD,cAAM,SAAS,WAAW,KAAK,IAAI,CAAC,QAAS,QAAQ,wBAAwB,WAAW,GAAI,IAAI;AAChG,YACE,GAAG,IAAI,IAAI,KACR,IAAI,UAAU,EACd,OAAO,CAAC,MAAM,MAAM,EAAE,EACtB,KAAK,IAAI,CAAC,GACf,IAAI,OAAO,MAAyC,MAAM;AAAA,MAC5D;AAAA,IACF,WAAW,SAAS,QAAQ,OAAO,SAAS,UAAU;AACpD,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,IAAI,EAAG,MAAK,OAAO,OAAO,GAAG,IAAI,IAAI,GAAG,KAAK,GAAG;AAAA,IAC5F;AAAA,EACF;AACA,OAAK,QAAQ,EAAE;AACf,SAAO;AACT;AAgBA,SAAS,OAAO,OAAwC,MAAkC;AACxF,MAAI;AACF,WAAO,OAAO,MAAM,GAAG,IAAI,CAAC;AAAA,EAC9B,SAAS,OAAO;AACd,WAAO,UAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,EACpE;AACF;AAIA,SAAS,WAAW,KAAsB;AACxC,MAAI,QAAQ,OAAW,QAAO;AAC9B,MAAI,QAAQ,sBAAuB,QAAO;AAC1C,MAAI,OAAO,QAAQ,SAAU,QAAO,kBAAkB,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,UAAU,GAAG;AAC1F,SAAO,OAAO,GAAG;AACnB;AAEA,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAQrB,MAAM,wBAA2C,OAAO,OAAO;AAAA,EAC7D,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,iBAAiB;AACnB,CAAC;AACD,MAAM,iBAAiB,CAAC,CAAC,qBAAqB,CAAC;AAOxC,MAAM,oBAA+E;AAAA,EAC1F,qBAAqB,CAAC,CAAC,aAAa,WAAW,CAAC;AAAA,EAChD,qBAAqB,CAAC,CAAC,WAAW,CAAC;AAAA,EACnC,2BAA2B;AAAA,IACzB,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,EAAE;AAAA,EACR;AAAA,EACA,6BAA6B,CAAC,CAAC,YAAY,CAAC;AAAA,EAC5C,8BAA8B,CAAC,CAAC,YAAY,CAAC;AAAA,EAC7C,yBAAyB,CAAC,CAAC,YAAY,CAAC;AAAA,EACxC,yBAAyB,CAAC,CAAC,GAAG,CAAC,CAAC;AAAA,EAChC,uBAAuB,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC;AAAA,EACrC,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AAAA,EAClC,0BAA0B,CAAC,CAAC,GAAG,CAAC,CAAC;AAAA,EACjC,0BAA0B;AAAA,IACxB,CAAC,cAAc,KAAK;AAAA,IACpB,CAAC,cAAc,IAAI;AAAA,EACrB;AAAA,EACA,oBAAoB,CAAC,CAAC,UAAU,CAAC;AAAA,EACjC,8BAA8B,CAAC,CAAC,UAAU,CAAC;AAAA,EAC3C,8BAA8B,CAAC,CAAC,YAAY,QAAQ,CAAC;AAAA,EACrD,uBAAuB,CAAC,CAAC,YAAY,WAAW,CAAC;AAAA,EACjD,6BAA6B;AAAA,EAC7B,qBAAqB,CAAC,CAAC,eAAe,CAAC;AAAA,EACvC,mBAAmB,CAAC,CAAC,WAAW,CAAC;AAAA,EACjC,0BAA0B;AAAA,EAC1B,wBAAwB;AAAA,EACxB,qBAAqB;AAAA,EACrB,6BAA6B;AAAA,EAC7B,mBAAmB,CAAC,CAAC,WAAW,CAAC;AAAA,EACjC,qBAAqB,CAAC,CAAC,WAAW,CAAC;AAAA,EACnC,qBAAqB;AAAA,EACrB,uBAAuB,CAAC,CAAC,WAAW,CAAC;AAAA,EACrC,eAAe,CAAC,CAAC,SAAS,CAAC;AAAA,EAC3B,wBAAwB,CAAC,CAAC,WAAW,CAAC;AAAA,EACtC,eAAe,CAAC,CAAC,UAAU,CAAC;AAAA,EAC5B,0BAA0B,CAAC,CAAC,UAAU,CAAC;AAAA,EACvC,aAAa,CAAC,CAAC,IAAS,CAAC;AAAA,EACzB,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC;AAAA,EACtB,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC;AAAA,EACpB,mBAAmB,CAAC,CAAC,WAAW,CAAC;AAAA,EACjC,yBAAyB,CAAC,CAAC,UAAU,CAAC;AAAA,EACtC,kBAAkB,CAAC,CAAC,aAAa,aAAa,aAAa,CAAC;AAAA,EAC5D,oBAAoB,CAAC,CAAC,aAAa,UAAU,CAAC;AAAA,EAC9C,qBAAqB,CAAC,CAAC,aAAa,UAAU,CAAC;AAAA,EAC/C,kBAAkB,CAAC,CAAC,WAAW,CAAC;AAAA,EAChC,oBAAoB,CAAC,CAAC,WAAW,CAAC;AAAA,EAClC,mBAAmB,CAAC,CAAC,YAAY,aAAa,CAAC;AAAA,EAC/C,qBAAqB,CAAC,CAAC,YAAY,CAAC;AAAA,EACpC,qBAAqB,CAAC,CAAC,YAAY,CAAC;AAAA,EACpC,mBAAmB,CAAC,CAAC,YAAY,CAAC;AAAA,EAClC,kBAAkB,CAAC,CAAC,YAAY,CAAC;AAAA,EACjC,0BAA0B,CAAC,CAAC,UAAU,CAAC;AAAA,EACvC,iCAAiC,CAAC,CAAC,WAAW,CAAC;AAAA,EAC/C,+BAA+B,CAAC,CAAC,EAAE,CAAC;AAAA,EACpC,6BAA6B,CAAC,CAAC,UAAU,CAAC;AAAA,EAC1C,4BAA4B,CAAC,CAAC,EAAE,CAAC;AAAA,EACjC,wBAAwB,CAAC,CAAC,YAAY,CAAC;AAAA,EACvC,6BAA6B,CAAC,CAAC,YAAY,CAAC;AAAA,EAC5C,0BAA0B;AAAA,EAC1B,2BAA2B,CAAC,CAAC,UAAU,CAAC;AAAA,EACxC,+BAA+B,CAAC,CAAC,cAAc,UAAU,CAAC;AAAA,EAC1D,2BAA2B,CAAC,CAAC,YAAY,aAAa,CAAC;AAAA,EACvD,4BAA4B;AAAA,IAC1B,CAAC,YAAY,CAAC;AAAA,IACd,CAAC,YAAY,CAAC;AAAA,EAChB;AAAA,EACA,8BAA8B,CAAC,CAAC,UAAU,CAAC;AAAA,EAC3C,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,uBAAuB;AAAA,IACrB,CAAC,GAAG,eAAe;AAAA,IACnB,CAAC,GAAG,eAAe;AAAA,EACrB;AAAA,EACA,qBAAqB,CAAC,CAAC,UAAU,CAAC;AAAA,EAClC,sBAAsB,CAAC,CAAC,UAAU,CAAC;AAAA,EACnC,mBAAmB,CAAC,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;AAAA,EACxC,0BAA0B,CAAC,CAAC,CAAC,CAAC;AAAA,EAC9B,qBAAqB,CAAC,CAAC,cAAc,CAAC,CAAC;AAAA,EACvC,0BAA0B,CAAC,CAAC,CAAC,CAAC;AAAA,EAC9B,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,2CAA2C,CAAC,CAAC,UAAU,CAAC;AAAA,EACxD,sCAAsC;AAAA,EACtC,6CAA6C,CAAC,CAAC,UAAU,CAAC;AAAA,EAC1D,6BAA6B,CAAC,CAAC,cAAc,CAAC;AAAA,EAC9C,6BAA6B,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC;AAAA,EAC7C,mCAAmC;AAAA,EACnC,+BAA+B,CAAC,CAAC,cAAc,WAAW,CAAC;AAAA,EAC3D,gCAAgC,CAAC,CAAC,cAAc,WAAW,CAAC;AAAA,EAC5D,6BAA6B,CAAC,CAAC,EAAE,CAAC;AAAA;AAAA;AAAA,EAGlC,4BAA4B,CAAC,CAAC,KAAK,CAAC;AAAA,EACpC,2BAA2B;AAAA,EAC3B,2BAA2B,CAAC,CAAC,UAAU,CAAC;AAAA,EACxC,6BAA6B,CAAC,CAAC,UAAU,CAAC;AAAA,EAC1C,wBAAwB;AAAA,EACxB,2BAA2B;AAAA,EAC3B,wBAAwB;AAAA,EACxB,0BAA0B,CAAC,CAAC,UAAU,CAAC;AAAA,EACvC,uBAAuB,CAAC,CAAC,CAAC,CAAC;AAAA,EAC3B,uCAAuC,CAAC,CAAC,UAAU,CAAC;AAAA,EACpD,wCAAwC,CAAC,CAAC,UAAU,CAAC;AAAA,EACrD,uCAAuC,CAAC,CAAC,UAAU,CAAC;AAAA,EACpD,0CAA0C,CAAC,CAAC,UAAU,CAAC;AAAA,EACvD,oCAAoC,CAAC,CAAC,UAAU,CAAC;AAAA,EACjD,qCAAqC,CAAC,CAAC,UAAU,CAAC;AAAA,EAClD,uBAAuB,CAAC,CAAC,UAAU,CAAC;AAAA,EACpC,uBAAuB;AAAA,EACvB,0BAA0B;AAAA,EAC1B,uBAAuB,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC;AAAA,EACvC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAAA,EACxB,2BAA2B,CAAC,CAAC,CAAC,CAAC;AAAA,EAC/B,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAAA,EACrB,kBAAkB,CAAC,CAAC,cAAc,CAAC,CAAC;AAAA,EACpC,yBAAyB,CAAC,CAAC,YAAY,CAAC;AAAA,EACxC,yBAAyB,CAAC,CAAC,YAAY,CAAC;AAAA,EACxC,yBAAyB,CAAC,CAAC,YAAY,CAAC;AAAA,EACxC,4BAA4B,CAAC,CAAC,eAAe,CAAC;AAAA,EAC9C,2BAA2B,CAAC,CAAC,SAAS,CAAC;AAAA,EACvC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC;AAAA,EACzB,qBAAqB,CAAC,CAAC,UAAU,CAAC;AAAA,EAClC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC;AAAA,EAC3B,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC;AAAA,EAC5B,oBAAoB,CAAC,CAAC,UAAU,CAAC;AAAA,EACjC,sBAAsB,CAAC,CAAC,UAAU,CAAC;AAAA,EACnC,2BAA2B,CAAC,CAAC,UAAU,CAAC;AAAA,EACxC,kCAAkC,CAAC,CAAC,UAAU,CAAC;AAAA,EAC/C,qBAAqB,CAAC,CAAC,aAAa,GAAG,CAAC,MAAS,CAAC;AAAA,EAClD,iCAAiC;AAAA,IAC/B,CAAC,cAAc,CAAC;AAAA,IAChB,CAAC,cAAc,CAAC;AAAA,EAClB;AAAA,EACA,sCAAsC;AAAA,EACtC,8BAA8B;AAAA,IAC5B,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,EAAE;AAAA,EACR;AAAA,EACA,oCAAoC,CAAC,CAAC,GAAG,EAAE,CAAC;AAAA,EAC5C,yCAAyC,CAAC,CAAC,iBAAiB,UAAU,CAAC;AAAA,EACvE,kCAAkC,CAAC,CAAC,YAAY,UAAU,CAAC;AAAA,EAC3D,iCAAiC,CAAC,CAAC,YAAY,UAAU,CAAC;AAAA,EAC1D,2BAA2B,CAAC,CAAC,WAAW,CAAC;AAAA,EACzC,uCAAuC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,EACrD,mCAAmC;AAAA,EACnC,kCAAkC;AAAA,EAClC,gCAAgC;AAAA,IAC9B,CAAC,GAAG,EAAE;AAAA,IACN,CAAC,GAAG,EAAE;AAAA,EACR;AAAA,EACA,kCAAkC;AAAA,EAClC,kCAAkC;AAAA,IAChC,CAAC,GAAG,WAAW;AAAA,IACf,CAAC,GAAG,WAAW;AAAA,EACjB;AAAA,EACA,wBAAwB,CAAC,CAAC,IAAI,EAAE,CAAC;AAAA,EACjC,4BAA4B;AAAA,EAC5B,mBAAmB,CAAC,CAAC,WAAW,CAAC;AAAA,EACjC,qBAAqB,CAAC,CAAC,UAAU,CAAC;AAAA,EAClC,oBAAoB,CAAC,CAAC,IAAI,EAAE,CAAC;AAAA,EAC7B,sBAAsB,CAAC,CAAC,eAAe,UAAU,CAAC;AAAA,EAClD,qBAAqB,CAAC,CAAC,UAAU,CAAC;AAAA,EAClC,yBAAyB,CAAC,CAAC,UAAU,CAAC;AAAA,EACtC,2BAA2B,CAAC,CAAC,cAAc,UAAU,GAAG,CAAC,YAAY,CAAC;AAAA,EACtE,0BAA0B,CAAC,CAAC,UAAU,CAAC;AAAA,EACvC,wBAAwB;AAAA,IACtB,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,EAAE;AAAA,EACR;AAAA,EACA,4BAA4B;AAAA,EAC5B,2BAA2B,CAAC,CAAC,CAAC,CAAC;AAAA,EAC/B,2BAA2B;AAAA,EAC3B,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAAA,EAC5B,uBAAuB,CAAC,CAAC,YAAY,CAAC;AAAA,EACtC,6BAA6B,CAAC,CAAC,UAAU,CAAC;AAAA,EAC1C,kCAAkC,CAAC,CAAC,UAAU,CAAC;AAAA,EAC/C,0BAA0B;AAAA,IACxB,CAAC,GAAG,EAAE;AAAA,IACN,CAAC,IAAI,GAAG;AAAA,EACV;AAAA,EACA,sBAAsB,CAAC,CAAC,WAAW,CAAC;AAAA,EACpC,wBAAwB,CAAC,CAAC,WAAW,CAAC;AAAA,EACtC,0CAA0C;AAAA,EAC1C,yCAAyC;AAAA,EACzC,0CAA0C;AAAA,EAC1C,uCAAuC;AAAA,EACvC,iCAAiC;AAAA;AAAA,EAEjC,sCAAsC;AAAA,EACtC,0BAA0B;AAAA,EAC1B,0BAA0B;AAAA;AAAA,EAE1B,iBAAiB,CAAC,CAAC,UAAU,CAAC;AAAA;AAAA,EAE9B,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC;AAAA;AAAA,EAE7B,kBAAkB,CAAC,CAAC,mBAAmB,CAAC;AAAA,EACxC,wBAAwB,CAAC,CAAC,aAAa,CAAC;AAAA,EACxC,uBAAuB,CAAC,CAAC,WAAW,CAAC;AAAA,EACrC,uBAAuB,CAAC,CAAC,WAAW,CAAC;AAAA,EACrC,wBAAwB,CAAC,CAAC,EAAE,CAAC;AAAA,EAC7B,2BAA2B,CAAC,CAAC,UAAU,CAAC;AAAA,EACxC,2BAA2B,CAAC,CAAC,UAAU,CAAC;AAAA;AAAA;AAAA,EAGxC,2BAA2B,CAAC,CAAC,EAAE,CAAC;AAAA,EAChC,sBAAsB,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;AAAA,EACtC,wBAAwB,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;AAAA,EACxC,8BAA8B,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;AAAA,EAC9C,6BAA6B,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;AAAA,EAC7C,2BAA2B,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;AAAA,EAC3C,2BAA2B,CAAC,CAAC,aAAa,CAAC;AAAA,EAC3C,uBAAuB,CAAC,CAAC,cAAc,CAAC;AAAA,EACxC,2BAA2B,CAAC,CAAC,kBAAkB,CAAC;AAAA,EAChD,yBAAyB,CAAC,CAAC,WAAW,CAAC;AAAA,EACvC,2BAA2B,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;AAAA,EAC3C,uBAAuB,CAAC,CAAC,UAAU,CAAC;AAAA,EACpC,eAAe,CAAC,CAAC,aAAa,CAAC;AAAA,EAC/B,uBAAuB,CAAC,CAAC,YAAY,CAAC;AAAA,EACtC,kCAAkC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC;AAAA,EAC/E,2BAA2B,CAAC,CAAC,UAAU,CAAC;AAAA,EACxC,4BAA4B;AAAA,EAC5B,4BAA4B,CAAC,CAAC,SAAS,CAAC;AAAA,EACxC,0BAA0B;AAAA,EAC1B,+BAA+B,CAAC,CAAC,SAAS,CAAC;AAAA,EAC3C,uBAAuB,CAAC,CAAC,UAAU,CAAC;AAAA,EACpC,8BAA8B,CAAC,CAAC,UAAU,CAAC;AAAA,EAC3C,0BAA0B;AAAA,EAC1B,4BAA4B,CAAC,CAAC,YAAY,CAAC;AAAA,EAC3C,kCAAkC,CAAC,CAAC,UAAU,CAAC;AAAA,EAC/C,yBAAyB,CAAC,CAAC,SAAS,CAAC;AAAA,EACrC,4BAA4B,CAAC,CAAC,SAAS,CAAC;AAAA,EACxC,2BAA2B,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;AAAA,EACrC,0BAA0B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,EACnC,6BAA6B,CAAC,CAAC,eAAe,CAAC;AAAA,EAC/C,6BAA6B,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;AAAA,EAC7C,0BAA0B,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;AAAA,EAC1C,yBAAyB,CAAC,CAAC,UAAU,CAAC;AAAA,EACtC,qBAAqB,CAAC,CAAC,UAAU,CAAC;AAAA,EAClC,0BAA0B,CAAC,CAAC,YAAY,YAAY,CAAC;AAAA,EACrD,qBAAqB,CAAC,CAAC,WAAW,CAAC;AAAA,EACnC,6BAA6B,CAAC,CAAC,YAAY,CAAC;AAAA,EAC5C,2BAA2B,CAAC,CAAC,YAAY,CAAC;AAAA;AAAA,EAE1C,gCAAgC,CAAC,CAAC,YAAY,QAAQ,CAAC;AAAA,EACvD,2BAA2B,CAAC,CAAC,UAAU,CAAC;AAAA,EACxC,iCAAiC,CAAC,CAAC,eAAe,YAAY,CAAC;AAAA,EAC/D,oBAAoB,CAAC,CAAC,UAAU,CAAC;AAAA,EACjC,uBAAuB,CAAC,CAAC,UAAU,CAAC;AAAA,EACpC,yBAAyB,CAAC,CAAC,UAAU,CAAC;AAAA,EACtC,sBAAsB,CAAC,CAAC,WAAW,CAAC;AAAA,EACpC,sBAAsB,CAAC,CAAC,WAAW,CAAC;AAAA,EACpC,yBAAyB,CAAC,CAAC,WAAW,CAAC;AAAA,EACvC,uBAAuB,CAAC,CAAC,WAAW,CAAC;AAAA,EACrC,2BAA2B,CAAC,CAAC,UAAU,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKxC,sBAAsB,CAAC,CAAC,WAAW,CAAC;AAAA,EACpC,uBAAuB;AAAA,EACvB,yBAAyB,CAAC,CAAC,SAAS,GAAG,CAAC,MAAS,CAAC;AAAA,EAClD,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,EACjC,kBAAkB;AAAA,IAChB,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,EAAE;AAAA,EACR;AAAA,EACA,oBAAoB;AAAA;AAAA;AAAA;AAAA,EAIpB,kBAAkB,CAAC,CAAC,UAAU,CAAC;AAAA,EAC/B,mBAAmB,CAAC,CAAC,UAAU,CAAC;AAAA,EAChC,qBAAqB,CAAC,CAAC,UAAU,CAAC;AAAA,EAClC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,EACrC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAAA,EACrC,yBAAyB,CAAC,CAAC,UAAU,GAAG,CAAC,MAAS,CAAC;AAAA,EACnD,iBAAiB,CAAC,CAAC,YAAY,WAAW,CAAC;AAAA,EAC3C,0BAA0B,CAAC,CAAC,eAAe,CAAC;AAAA,EAC5C,0BAA0B;AAAA;AAAA,EAE1B,0BAA0B,CAAC,CAAC,iBAAiB,YAAY,WAAW,CAAC;AAAA;AAAA,EAErE,wBAAwB,CAAC,CAAC,YAAY,QAAQ,CAAC;AAAA,EAC/C,4BAA4B,CAAC,CAAC,UAAU,CAAC;AAAA;AAAA,EAEzC,sBAAsB,CAAC,CAAC,WAAW,GAAG,CAAC,MAAS,CAAC;AAAA,EACjD,iCAAiC,CAAC,CAAC,WAAW,GAAG,CAAC,MAAS,CAAC;AAAA,EAC5D,6BAA6B,CAAC,CAAC,UAAU,CAAC;AAAA,EAC1C,6BAA6B;AAAA,IAC3B,CAAC,gBAAgB,SAAS;AAAA,IAC1B,CAAC,gBAAgB,MAAS;AAAA,EAC5B;AAAA,EACA,sBAAsB,CAAC,CAAC,UAAU,CAAC;AAAA,EACnC,sBAAsB,CAAC,CAAC,YAAY,QAAQ,CAAC;AAAA,EAC7C,kBAAkB,CAAC,CAAC,QAAQ,CAAC;AAAA,EAC7B,wBAAwB,CAAC,CAAC,UAAU,CAAC;AAAA,EACrC,sBAAsB,CAAC,CAAC,YAAY,aAAa,eAAe,CAAC;AAAA;AAAA;AAAA,EAGjE,qBAAqB;AAAA;AAAA,EAErB,0BAA0B;AAAA,IACxB,CAAC,aAAa,CAAC;AAAA,IACf,CAAC,aAAa,CAAC;AAAA,EACjB;AAAA;AAAA,EAEA,0BAA0B,CAAC,CAAC,aAAa,CAAC;AAAA,EAC1C,qBAAqB,CAAC,CAAC,aAAa,CAAC;AAAA,EACrC,4BAA4B,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;AAAA,EAC5C,2BAA2B,CAAC,CAAC,SAAS,CAAC;AAAA,EACvC,4BAA4B;AAAA;AAAA;AAAA,EAG5B,4BAA4B;AAAA,EAC5B,4BAA4B;AAAA,EAC5B,6BAA6B,CAAC,CAAC,UAAU,CAAC;AAAA,EAC1C,6BAA6B,CAAC,CAAC,aAAa,UAAU,CAAC;AAAA,EACvD,2BAA2B,CAAC,CAAC,aAAa,WAAW,CAAC;AAAA,EACtD,iCAAiC;AAAA,EACjC,wBAAwB,CAAC,CAAC,UAAU,CAAC;AAAA,EACrC,0BAA0B,CAAC,CAAC,UAAU,CAAC;AAAA;AAAA;AAAA,EAGvC,0BAA0B;AAAA,EAC1B,6BAA6B;AAAA,IAC3B,CAAC,aAAa,CAAC;AAAA,IACf,CAAC,aAAa,CAAC;AAAA,EACjB;AAAA,EACA,0BAA0B;AAAA,EAC1B,2BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,yBAAyB,CAAC,CAAC,GAAG,EAAE,CAAC;AAAA,EACjC,yBAAyB,CAAC,CAAC,YAAY,YAAY,CAAC;AAAA,EACpD,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,0BAA0B;AAAA,EAC1B,6BAA6B,CAAC,CAAC,UAAU,CAAC;AAAA;AAAA;AAAA,EAG1C,uBAAuB;AAAA,EACvB,uBAAuB;AACzB;","names":[]}
1
+ {"version":3,"sources":["../../src/i18n/review.ts"],"sourcesContent":["import { legalOperatorText } from \"../components/legal\";\nimport type { LegalOperator, LegalOperatorText } from \"../components/legal\";\nimport type { UiKitLabels } from \"./kit-labels\";\n\n/**\n * The kit's words as a flat `key → text` list, for an app's translation review.\n *\n * keksdose reviews its own locale bundles on its /translations page — one verdict per\n * locale and key, stored with the text the reviewer saw, so a later change re-opens it.\n * The kit's words appear on the same screens but live in TypeScript, not in the app's\n * bundles, and 143 of them are functions (`(count) => \"3 results\"`; 0.28.0, every one\n * listed in {@link KIT_LABEL_SAMPLES}), which a bundle flattener skips. This turns a\n * label tree into rows that page can join on.\n *\n * - A string label is one row under its dot path: `common.close`. An array of words\n * (weekday names) is one row per entry: `miniCalendar.weekdays.0`.\n * - A function label is called with fixed samples. Text arguments are i18next-style\n * placeholders (`{{name}}`), so a translation that drops one is caught by the same\n * placeholder check the app runs on its own strings. Counts are real numbers, twice\n * where the wording may depend on them — 1 and 3 — so a reviewer sees singular and\n * plural. The key names the sample: `combobox.resultCount(1)`,\n * `shareCard.removeConfirm(name)`, `serverWake.waking()`.\n * - The legal sections that name the operator (0.28) take one object; its sample is a\n * placeholder per field and the key calls it `operator`:\n * `legal.sections.privacy.controller.body(operator)`. Pass the app's operator in\n * `options` and those rows read the real sentence — same keys — so the lawyer\n * reviewing the `legal` area reads what the page says:\n *\n * kitLabelStrings(UI_KIT_LABELS_DE_CH, { operator: OPERATOR, locale: \"de-CH\" })\n *\n * Keys depend only on the samples, never on the locale, so the rows of `de-CH` and of the\n * English reference line up key by key. Pass exactly the tree the app hands\n * `UiKitProvider` — its overrides included — and review what users see:\n *\n * kitLabelStrings(UI_KIT_LABELS_DE_CH) // the rows for de-CH\n * kitLabelStrings(DEFAULT_UI_KIT_LABELS) // the English reference\n *\n * A label that throws on its sample becomes a row starting with \"⚠\", so one broken\n * override shows up on the page instead of taking the page down.\n */\nexport function kitLabelStrings(labels: UiKitLabels, options: KitLabelStringsOptions = {}): Record<string, string> {\n const out: Record<string, string> = {};\n const operator = options.operator && legalOperatorText(options.operator, options.locale);\n const walk = (node: unknown, path: string) => {\n if (typeof node === \"string\") {\n out[path] = node;\n } else if (typeof node === \"function\") {\n for (const args of KIT_LABEL_SAMPLES[path] ?? [[]]) {\n // The key is the SAMPLE's (`…body(operator)`), whatever the label is called with,\n // so rows with and without the app's operator join on the same keys.\n const called = operator ? args.map((arg) => (arg === LEGAL_OPERATOR_SAMPLE ? operator : arg)) : args;\n out[\n `${path}(${args\n .map(sampleName)\n .filter((a) => a !== \"\")\n .join(\", \")})`\n ] = render(node as (...args: unknown[]) => unknown, called);\n }\n } else if (node !== null && typeof node === \"object\") {\n for (const [key, value] of Object.entries(node)) walk(value, path ? `${path}.${key}` : key);\n }\n };\n walk(labels, \"\");\n return out;\n}\n\nexport interface KitLabelStringsOptions {\n /**\n * The app's operator (0.28): the legal sections that name it — the imprint's operator\n * and contact, the controller, the privacy contact, the governing law — are rendered\n * with the real values instead of `{{name}}`-style placeholders, so a reviewer (the\n * lawyer, under the `legal` area) reads the sentence the page shows. The keys do not\n * change: `legal.sections.impressum.operator.body(operator)` either way.\n */\n operator?: LegalOperator;\n /** The language the operator's country is named in — the locale these rows are\n * for (\"de-CH\" → \"Schweiz\"). Default English. */\n locale?: string;\n}\n\nfunction render(label: (...args: unknown[]) => unknown, args: readonly unknown[]): string {\n try {\n return String(label(...args));\n } catch (error) {\n return `⚠ ${error instanceof Error ? error.message : String(error)}`;\n }\n}\n\n/** How a sample argument is written in the key: a placeholder by its name, a number as\n * itself, an empty string as `\"\"`, a missing optional argument not at all. */\nfunction sampleName(arg: unknown): string {\n if (arg === undefined) return \"\";\n if (arg === LEGAL_OPERATOR_SAMPLE) return \"operator\";\n if (typeof arg === \"string\") return /^\\{\\{(\\w+)\\}\\}$/.exec(arg)?.[1] ?? JSON.stringify(arg);\n return String(arg);\n}\n\nconst one = [[1], [3]] as const;\n\n/**\n * The legal sections' operator (0.28) as placeholders, one per field — so a translation\n * that drops the city or the email is caught by the same check as a dropped `{{name}}`\n * anywhere else. Named `operator` in the key; {@link kitLabelStrings}' `operator` option\n * swaps the app's real values in for it.\n */\nconst LEGAL_OPERATOR_SAMPLE: LegalOperatorText = Object.freeze({\n name: \"{{name}}\",\n postalCode: \"{{postalCode}}\",\n city: \"{{city}}\",\n region: \"{{region}}\",\n country: \"{{country}}\",\n email: \"{{email}}\",\n bindingLanguage: \"{{bindingLanguage}}\",\n});\nconst operatorSample = [[LEGAL_OPERATOR_SAMPLE]] as const;\n\n/**\n * The sample arguments of every function label in {@link UiKitLabels}, by dot path.\n * `src/i18n/__tests__/review.test.ts` fails when a function label has no entry here, so\n * a new one cannot ship un-reviewable.\n */\nexport const KIT_LABEL_SAMPLES: Readonly<Record<string, readonly (readonly unknown[])[]>> = {\n \"common.fieldValue\": [[\"{{field}}\", \"{{value}}\"]],\n \"common.aboutField\": [[\"{{field}}\"]],\n \"dataTable.filterResults\": [\n [1, 1],\n [3, 12],\n ],\n \"dataTable.sortedAscending\": [[\"{{column}}\"]],\n \"dataTable.sortedDescending\": [[\"{{column}}\"]],\n \"dataTable.sortCleared\": [[\"{{column}}\"]],\n \"dataTable.pageChanged\": [[2, 5]],\n \"dataTable.pageRange\": [[1, 25, 1240]],\n \"dataTable.rowCount\": [[1], [1240]],\n \"dataTable.columnsCount\": [[3, 8]],\n \"dataTable.filterColumn\": [\n [\"{{column}}\", false],\n [\"{{column}}\", true],\n ],\n \"miniCalendar.day\": [[\"{{date}}\"]],\n \"miniCalendar.startSelected\": [[\"{{date}}\"]],\n \"miniCalendar.rangeSelected\": [[\"{{from}}\", \"{{to}}\"]],\n \"calendarHeatmap.day\": [[\"{{date}}\", \"{{value}}\"]],\n \"calendarHeatmap.truncated\": one,\n \"monthPicker.month\": [[\"{{monthYear}}\"]],\n \"combobox.create\": [[\"{{query}}\"]],\n \"combobox.selectedCount\": one,\n \"combobox.resultCount\": one,\n \"combobox.minChars\": one,\n \"multiSelect.selectedCount\": one,\n \"chipInput.added\": [[\"{{value}}\"]],\n \"chipInput.removed\": [[\"{{value}}\"]],\n \"chipInput.atLimit\": one,\n \"chipInput.duplicate\": [[\"{{value}}\"]],\n \"tabs.remove\": [[\"{{tab}}\"]],\n \"appShell.toggleGroup\": [[\"{{group}}\"]],\n \"topBar.role\": [[\"{{role}}\"]],\n \"topBar.languageCurrent\": [[\"{{name}}\"]],\n \"file.size\": [[2_500_000]],\n \"wizard.step\": [[2, 4]],\n \"tour.step\": [[2, 4]],\n \"tour.backToStep\": [[\"{{title}}\"]],\n \"globalSearch.shortcut\": [[\"{{keys}}\"]],\n \"pieChart.slice\": [[\"{{label}}\", \"{{value}}\", \"{{percent}}\"]],\n \"pieChart.sliceShare\": [[\"{{label}}\", \"{{percent}}\"]],\n \"treemap.tile\": [[\"{{name}}\", \"{{value}}\", \"{{share}}\"]],\n \"treemap.group\": [[\"{{name}}\", \"{{value}}\", \"{{share}}\"]],\n \"treemap.inGroup\": [[\"{{name}}\", \"{{group}}\"]],\n \"sparkline.rising\": [[\"{{first}}\", \"{{last}}\"]],\n \"sparkline.falling\": [[\"{{first}}\", \"{{last}}\"]],\n \"sparkline.flat\": [[\"{{value}}\"]],\n \"sparkline.single\": [[\"{{value}}\"]],\n \"sparkline.named\": [[\"{{name}}\", \"{{summary}}\"]],\n \"statTile.increase\": [[\"{{amount}}\"]],\n \"statTile.decrease\": [[\"{{amount}}\"]],\n \"statTile.better\": [[\"{{change}}\"]],\n \"statTile.worse\": [[\"{{change}}\"]],\n \"signaturePad.viewTyped\": [[\"{{name}}\"]],\n \"passwordStrength.announcement\": [[\"{{level}}\"]],\n \"passwordStrength.ruleLength\": [[12]],\n \"passwordStrength.optional\": [[\"{{rule}}\"]],\n \"passwordStrength.tooLong\": [[72]],\n \"dangerConfirm.phrase\": [[\"{{phrase}}\"]],\n \"dangerConfirm.needsPhrase\": [[\"{{phrase}}\"]],\n \"iconPicker.resultCount\": one,\n \"filePicker.rejectedType\": [[\"{{name}}\"]],\n \"filePicker.rejectedTypeOnly\": [[\"{{accept}}\", \"{{name}}\"]],\n \"filePicker.rejectedSize\": [[\"{{name}}\", \"{{maxSize}}\"]],\n \"filePicker.rejectedCount\": [\n [\"{{name}}\", 1],\n [\"{{name}}\", 3],\n ],\n \"filePicker.rejectedInvalid\": [[\"{{name}}\"]],\n \"filePicker.rejectedMany\": one,\n \"filePicker.rejectedPick\": one,\n \"filePicker.selected\": [\n [1, \"{{firstName}}\"],\n [3, \"{{firstName}}\"],\n ],\n \"filePicker.remove\": [[\"{{name}}\"]],\n \"filePicker.removed\": [[\"{{name}}\"]],\n \"filePicker.hint\": [[\"{{accept}}\"], [\"\"]],\n \"measuredGrid.removeRow\": [[3]],\n \"measuredGrid.cell\": [[\"{{column}}\", 3]],\n \"measuredGrid.lineError\": [[3]],\n \"measuredGrid.points\": one,\n \"measuredGrid.problems\": one,\n \"feedbackAttachment.attachmentRemoveFile\": [[\"{{name}}\"]],\n \"feedbackAttachment.attachmentLimit\": one,\n \"feedbackAttachment.attachmentUploadFailed\": [[\"{{name}}\"]],\n \"feedbackComposer.sendHint\": [[\"{{modifier}}\"]],\n \"feedbackDialog.submitHint\": [[true], [false]],\n \"feedbackToast.attachmentTooMany\": one,\n \"feedbackToast.statusChanged\": [[\"{{status}}\", \"{{title}}\"]],\n \"feedbackToast.statusRestored\": [[\"{{status}}\", \"{{title}}\"]],\n \"feedbackPage.userFallback\": [[42]],\n // A real value, not a placeholder: the chip upper-cases what it is given, and\n // \"{{ENVIRONMENT}}\" would read as a placeholder of that name.\n \"feedbackPage.environment\": [[\"dev\"]],\n \"feedbackPage.reworkChip\": one,\n \"feedbackDetail.download\": [[\"{{name}}\"]],\n \"feedbackDetail.resolvedAt\": [[\"{{date}}\"]],\n \"feedbackPublic.total\": one,\n \"feedbackPublic.comments\": one,\n \"feedbackPublic.votes\": one,\n \"feedbackPublic.filedBy\": [[\"{{name}}\"]],\n \"feedbackPublic.page\": [[3]],\n \"accountSettings.passkeys.renameItem\": [[\"{{name}}\"]],\n \"accountSettings.passkeys.renameField\": [[\"{{name}}\"]],\n \"accountSettings.passkeys.deleteItem\": [[\"{{name}}\"]],\n \"accountSettings.passkeys.deleteConfirm\": [[\"{{name}}\"]],\n \"accountSettings.passkeys.created\": [[\"{{date}}\"]],\n \"accountSettings.passkeys.lastUsed\": [[\"{{date}}\"]],\n \"confirmDialog.typed\": [[\"{{text}}\"]],\n \"floatingPanel.badge\": one,\n \"bulkActionBar.selected\": one,\n \"form.submitShortcut\": [[true], [false]],\n \"lineItems.remove\": [[3]],\n \"lineItems.confirmRemove\": [[3]],\n \"lineItems.row\": [[3]],\n \"lineItems.cell\": [[\"{{column}}\", 3]],\n \"progressBar.overLimit\": [[\"{{amount}}\"]],\n \"signedAmount.positive\": [[\"{{amount}}\"]],\n \"signedAmount.negative\": [[\"{{amount}}\"]],\n \"errorBoundary.reportedAs\": [[\"{{reference}}\"]],\n \"authedImage.failedImage\": [[\"{{alt}}\"]],\n \"imageGrid.item\": [[2, 5]],\n \"imageGrid.actions\": [[\"{{name}}\"]],\n \"lightbox.counter\": [[2, 5]],\n \"lightbox.position\": [[2, 5]],\n \"shareCard.roleOf\": [[\"{{name}}\"]],\n \"shareCard.teamHint\": [[\"{{name}}\"]],\n \"shareCard.removeConfirm\": [[\"{{name}}\"]],\n \"shareCard.revokePendingConfirm\": [[\"{{name}}\"]],\n \"serverWake.waking\": [[\"{{appName}}\"], [undefined]],\n \"translationReview.filterCount\": [\n [\"{{status}}\", 1],\n [\"{{status}}\", 3],\n ],\n \"translationReview.placeholdersOnly\": one,\n \"translationReview.progress\": [\n [1, 1],\n [3, 12],\n ],\n \"translationReview.localeProgress\": [[3, 12]],\n \"translationReview.placeholderMismatch\": [[\"{{reference}}\", \"{{text}}\"]],\n \"translationReview.lastApproved\": [[\"{{name}}\", \"{{date}}\"]],\n \"translationReview.lastFlagged\": [[\"{{name}}\", \"{{date}}\"]],\n \"translationReview.scope\": [[\"{{areas}}\"]],\n \"translationReview.exportCorrections\": [[0], [1], [3]],\n \"translationReview.approvedToast\": one,\n \"translationReview.clearedToast\": one,\n \"translationReview.groupCount\": [\n [1, 12],\n [3, 12],\n ],\n \"translationReview.approveGroup\": one,\n \"translationReview.confirmGroup\": [\n [1, \"{{group}}\"],\n [3, \"{{group}}\"],\n ],\n \"characterCount.count\": [[12, 80]],\n \"characterCount.remaining\": one,\n \"inlineEdit.edit\": [[\"{{label}}\"]],\n \"ibanInput.country\": [[\"{{code}}\"]],\n \"ibanInput.length\": [[20, 21]],\n \"signChip.direction\": [[\"{{current}}\", \"{{next}}\"]],\n \"signChip.switchTo\": [[\"{{next}}\"]],\n \"rowActions.actionsFor\": [[\"{{name}}\"]],\n \"rowActions.confirmTitle\": [[\"{{action}}\", \"{{name}}\"], [\"{{action}}\"]],\n \"columnMapper.readError\": [[\"{{name}}\"]],\n \"columnMapper.summary\": [\n [1, 1],\n [3, 12],\n ],\n \"columnMapper.unreadCount\": one,\n \"columnMapper.unreadLine\": [[3]],\n \"columnMapper.unreadMore\": one,\n \"columnMapper.columnN\": [[3]],\n \"columnMapper.roleOf\": [[\"{{column}}\"]],\n \"columnMapper.requiredRole\": [[\"{{role}}\"]],\n \"columnMapper.requiredRoleShort\": [[\"{{role}}\"]],\n \"columnMapper.previewOf\": [\n [1, 12],\n [10, 250],\n ],\n \"columnMapper.oneOf\": [[\"{{roles}}\"]],\n \"columnMapper.missing\": [[\"{{roles}}\"]],\n \"legal.sections.impressum.operator.body\": operatorSample,\n \"legal.sections.impressum.contact.body\": operatorSample,\n \"legal.sections.privacy.controller.body\": operatorSample,\n \"legal.sections.privacy.contact.body\": operatorSample,\n \"legal.sections.terms.law.body\": operatorSample,\n // 0.28.1: the binding language, named in the reader's language.\n \"legal.sections.terms.language.body\": operatorSample,\n \"legal.translation.note\": operatorSample,\n \"legal.translation.show\": operatorSample,\n // 0.51.3: the as-of line, with the date already written out.\n \"legal.updated\": [[\"{{date}}\"]],\n // 0.51.4: a limited list's \"Show all (n)\", with the whole list's count.\n \"list.showAll\": [[12], [1240]],\n // 0.29.0: the sign-in and sign-up parts (docs/auth-harmonization.md).\n \"signIn.tagHint\": [[\"{{taggedAddress}}\"]],\n \"register.emailTagUse\": [[\"{{address}}\"]],\n \"forgotPassword.sent\": [[\"{{email}}\"]],\n \"resetPassword.intro\": [[\"{{email}}\"]],\n \"verifyEmail.resendIn\": [[30]],\n \"acceptInvitation.joined\": [[\"{{name}}\"]],\n \"companySwitcher.current\": [[\"{{name}}\"]],\n // 0.30.0: the user administration and the account's own settings\n // (docs/user-admin-harmonization.md). `rateLimited` with and without a wait.\n \"signIn.recoveryCodeHint\": [[16]],\n \"signIn.rateLimited\": [[], [30], [300]],\n \"register.rateLimited\": [[], [30], [300]],\n \"forgotPassword.rateLimited\": [[], [30], [300]],\n \"resetPassword.rateLimited\": [[], [30], [300]],\n \"verifyEmail.rateLimited\": [[], [30], [300]],\n \"emailChange.emailTagUse\": [[\"{{address}}\"]],\n \"emailChange.pending\": [[\"{{newEmail}}\"]],\n \"emailChange.pendingHint\": [[\"{{currentEmail}}\"]],\n \"emailChange.confirmed\": [[\"{{email}}\"]],\n \"emailChange.rateLimited\": [[], [30], [300]],\n \"sessions.lastActive\": [[\"{{when}}\"]],\n \"sessions.ip\": [[\"{{address}}\"]],\n \"sessions.revokeItem\": [[\"{{device}}\"]],\n \"notifications.quietDescription\": [[false], [true], [false, true], [true, true]],\n \"notifications.quietZone\": [[\"{{zone}}\"]],\n \"notifications.bellUnread\": one,\n \"notifications.iosInstall\": [[\"{{app}}\"]],\n \"notifications.testSent\": one,\n \"notifications.explainerBody\": [[\"{{app}}\"]],\n \"notifications.added\": [[\"{{date}}\"]],\n \"notifications.lastDelivery\": [[\"{{date}}\"]],\n \"notifications.failures\": one,\n \"notifications.removeItem\": [[\"{{device}}\"]],\n \"notifications.unsubscribeAbout\": [[\"{{type}}\"]],\n \"notifications.stopAll\": [[\"{{app}}\"]],\n \"notifications.stoppedAll\": [[\"{{app}}\"]],\n \"notifications.stoppedHint\": [[\"{{accountMail}}\", \"{{turnBackOn}}\"]],\n \"deleteAccount.afterDays\": [[1], [30]],\n \"deleteAccount.handOver\": [[1], [3]],\n \"deleteAccount.lastAdminOf\": [[\"{{companies}}\"]],\n \"deleteAccount.rateLimited\": [[], [30], [300]],\n \"dataExport.rateLimited\": [[], [30], [300]],\n \"userRoster.actionsFor\": [[\"{{name}}\"]],\n \"roleSelect.roleOf\": [[\"{{name}}\"]],\n \"roleSelect.unavailable\": [[\"{{role}}\", \"{{reason}}\"]],\n \"adminActionLog.by\": [[\"{{actor}}\"]],\n \"adminActionLog.filteredTo\": [[\"{{target}}\"]],\n \"adminActionLog.filterBy\": [[\"{{target}}\"]],\n // 0.45.0 (admin §9.4): a company rename that logged both names.\n \"adminActionLog.renamedFromTo\": [[\"{{from}}\", \"{{to}}\"]],\n \"transferOwnership.title\": [[\"{{name}}\"]],\n \"transferOwnership.unavailable\": [[\"{{account}}\", \"{{reason}}\"]],\n \"invitations.sent\": [[\"{{date}}\"]],\n \"invitations.expires\": [[\"{{date}}\"]],\n \"invitations.invitedBy\": [[\"{{name}}\"]],\n \"invitations.resend\": [[\"{{email}}\"]],\n \"invitations.revoke\": [[\"{{email}}\"]],\n \"invitations.linkReady\": [[\"{{email}}\"]],\n \"invitations.notSent\": [[\"{{email}}\"]],\n \"accountState.deletionOn\": [[\"{{date}}\"]],\n // 0.31.0: the settings shell, the landing page and the demo\n // (docs/settings-harmonization.md, docs/landing-demo-harmonization.md). An optional\n // argument both given and left out: the subject without an app name, the refusal\n // without a `Retry-After`.\n \"settings.noMatches\": [[\"{{query}}\"]],\n \"settings.matchCount\": one,\n \"landing.accessSubject\": [[\"{{app}}\"], [undefined]],\n \"demo.rateLimited\": [[], [1], [3]],\n \"demo.hoursLeft\": [\n [1, 1],\n [3, 12],\n ],\n \"demo.minutesLeft\": one,\n // 0.32.0: the subscription parts (docs/billing-harmonization.md §7). A trial or a grant\n // ending today, tomorrow and in five days; the guest's notice with and without the\n // item's name.\n \"billing.choose\": [[\"{{plan}}\"]],\n \"billing.upgrade\": [[\"{{plan}}\"]],\n \"billing.downgrade\": [[\"{{plan}}\"]],\n \"billing.trialEnding\": [[0], [1], [5]],\n \"billing.grantEnding\": [[0], [1], [5]],\n \"billing.guestReadOnly\": [[\"{{item}}\"], [undefined]],\n \"billing.usage\": [[\"{{used}}\", \"{{limit}}\"]],\n \"billing.contactSubject\": [[\"{{dimension}}\"]],\n \"billing.waitingChanges\": one,\n // 0.33.0: the limit's figure line (§14.11) and the operator's plan parts (§14.12).\n \"billing.limitUsageLine\": [[\"{{dimension}}\", \"{{used}}\", \"{{limit}}\"]],\n // 0.39: PlanSwitchConfirm's two lines with figures (§15.2.10).\n \"billing.switchFromTo\": [[\"{{from}}\", \"{{to}}\"]],\n \"billing.switchNextCharge\": [[\"{{date}}\"]],\n // 0.42 (§16): the buyer's name, or none once they are gone; the cancel's period end.\n \"billing.buyerHolds\": [[\"{{buyer}}\"], [undefined]],\n \"billing.paymentFailedAskBuyer\": [[\"{{buyer}}\"], [undefined]],\n \"billing.cancelConfirmBody\": [[\"{{date}}\"]],\n \"billing.portalOpensNewTab\": [\n [\"{{provider}}\", \"{{app}}\"],\n [\"{{provider}}\", undefined],\n ],\n \"planChange.current\": [[\"{{plan}}\"]],\n \"planChange.changed\": [[\"{{from}}\", \"{{to}}\"]],\n \"planChange.set\": [[\"{{to}}\"]],\n \"planChange.untilDone\": [[\"{{date}}\"]],\n \"planChange.usageOf\": [[\"{{used}}\", \"{{limit}}\", \"{{dimension}}\"]],\n // 0.42.0 (docs/admin-harmonization.md §3.1): the menu row's count, the 403 page's app,\n // the users tile's new accounts.\n \"adminArea.waiting\": one,\n // 0.45.0 (admin §9.3.4): an IconButton's name with its waiting count.\n \"adminArea.waitingLabel\": [\n [\"{{label}}\", 1],\n [\"{{label}}\", 3],\n ],\n // 0.45.0 (admin §9.2.4): the test mail's transport, masked address and limiter.\n \"mailTestCard.transport\": [[\"{{backend}}\"]],\n \"mailTestCard.sent\": [[\"{{address}}\"]],\n \"mailTestCard.rateLimited\": [[], [30], [300]],\n \"adminArea.forbiddenBody\": [[\"{{app}}\"]],\n \"adminArea.tiles.usersNew\": one,\n // 0.42.0 (docs/top-bar-harmonization.md §3.1): the sync indicator's counts, its time, the\n // state joined to its hint or to the app's scope; the dev plan and the role to go back to.\n \"topBarParts.sync.blocked\": one,\n \"topBarParts.sync.pending\": one,\n \"topBarParts.sync.syncedAt\": [[\"{{time}}\"]],\n \"topBarParts.sync.withHint\": [[\"{{state}}\", \"{{hint}}\"]],\n \"topBarParts.sync.scoped\": [[\"{{scope}}\", \"{{state}}\"]],\n \"topBarParts.sync.waitingShort\": one,\n \"topBarParts.dev.plan\": [[\"{{plan}}\"]],\n \"topBarParts.dev.backTo\": [[\"{{role}}\"]],\n // 0.43.0 (docs/tours-harmonization.md §3, §8): the tours page's counts, its group\n // option, the completion day and a reset's day and reason.\n \"tourCatalogue.groupAll\": one,\n \"tourCatalogue.groupOption\": [\n [\"{{group}}\", 1],\n [\"{{group}}\", 3],\n ],\n \"tourCatalogue.stateAll\": one,\n \"tourCatalogue.stateTodo\": one,\n \"tourCatalogue.stateDone\": one,\n \"tourCatalogue.showing\": [[3, 16]],\n \"tourCatalogue.resetOn\": [[\"{{date}}\", \"{{reason}}\"]],\n \"tourCatalogue.points\": one,\n \"tourCatalogue.steps\": one,\n \"tourCatalogue.duration\": one,\n \"tourCatalogue.completedOn\": [[\"{{date}}\"]],\n // 0.45.0 (docs/local-first-harmonization.md §1.6): the sign-out question's count, in\n // both word sets.\n \"signOutPending.lost\": one,\n \"signOutPending.kept\": one,\n};\n"],"mappings":"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","names":[]}
package/dist/index.d.ts CHANGED
@@ -2,7 +2,8 @@ export * from "./lib/calc.js";
2
2
  export { cn } from "./lib/cn.js";
3
3
  export { logger, setStoreLog } from "./lib/logger.js";
4
4
  export * from "./lib/format.js";
5
- export { readStored, writeStored } from "./lib/safe-storage.js";
5
+ export { readStored, writeStored, removeStored, readSessionStored, writeSessionStored, readStoredJson, writeStoredJson, } from "./lib/safe-storage.js";
6
+ export { prefersReducedMotion } from "./lib/reduced-motion.js";
6
7
  export { saveBlob, filenameFromDisposition } from "./lib/download.js";
7
8
  export { foldForSearch, rankMatch, searchWords, matchesSearch } from "./lib/text-match.js";
8
9
  export type { MatchRank } from "./lib/text-match.js";
@@ -38,9 +39,13 @@ export type { UseAnnounceReturn, UseAnnounceOptions, AnnounceRegionProps } from
38
39
  export { useOverlayHistory } from "./hooks/use-overlay-history.js";
39
40
  export { useCloseTransition, OVERLAY_EXIT_MS } from "./hooks/use-close-transition.js";
40
41
  export { useRowSwipe } from "./hooks/use-row-swipe.js";
42
+ export { useLongPress } from "./hooks/use-long-press.js";
43
+ export type { LongPressOptions, LongPressResult } from "./hooks/use-long-press.js";
41
44
  export { useNoIndex } from "./hooks/use-noindex.js";
42
45
  export { useDocumentTitle } from "./hooks/use-document-title.js";
43
- export { asciiMinusInNumbers } from "./lib/clipboard-minus.js";
46
+ export {
47
+ /** @deprecated 0.52 — a formatter's `minus: "ascii"`, where the figure is made (API-4); removed in 0.53 */
48
+ asciiMinusInNumbers, } from "./lib/clipboard-minus.js";
44
49
  export { DEFAULT_DOCUMENT_TITLE_FORMAT, formatDocumentTitle } from "./lib/document-title.js";
45
50
  export type { DocumentTitleParts } from "./lib/document-title.js";
46
51
  export type { SwipeStage, RowSwipeOptions, RowSwipeReturn } from "./hooks/use-row-swipe.js";
@@ -162,12 +167,17 @@ export * from "./components/grouped-picker.js";
162
167
  export * from "./components/file-dropzone.js";
163
168
  export * from "./components/mini-calendar.js";
164
169
  export * from "./components/calendar-heatmap.js";
170
+ export {
171
+ /** @deprecated 0.52 — `CalendarHeatmap`, which steps its cells with it (API-4); removed in 0.53 */
172
+ heatmapLevel, } from "./components/calendar-heatmap.js";
165
173
  export * from "./components/date-picker.js";
166
174
  export * from "./components/tree-view.js";
167
175
  export * from "./components/description-list.js";
168
176
  export * from "./components/form-actions.js";
169
177
  export { WriteLockProvider, useWriteLock, writeLockFor, COMMIT_EXCEPT_BILLING, DEFAULT_WRITE_LOCK_LABELS, } from "./components/write-lock.js";
170
- export { OFFLINE_LOCK, COMMIT_EXCEPT_OFFLINE, useOfflineWriteLock } from "./components/write-lock.js";
178
+ export {
179
+ /** @deprecated 0.52 — the kind itself, `"offline"`, which `useOfflineWriteLock` holds (API-4); removed in 0.53 */
180
+ OFFLINE_LOCK, COMMIT_EXCEPT_OFFLINE, useOfflineWriteLock, } from "./components/write-lock.js";
171
181
  export type { WriteLock, WriteLockLabels, WriteLockProviderProps, WriteLockKind, WriteLockHold, CommitScope, } from "./components/write-lock.js";
172
182
  export { RoleChip, AccountStateChip, DateMark, dateColumn, DEFAULT_ACCOUNT_STATE_LABELS, ACCOUNT_STATE_TONES, } from "./components/account-chips.js";
173
183
  export type { RoleChipProps, RoleDefinition, RoleVocabulary, AccountState, AccountStateLabels, AccountStateChipProps, DateMarkProps, DateColumnOptions, } from "./components/account-chips.js";
@@ -190,6 +200,9 @@ export * from "./components/copy-button.js";
190
200
  export { AuthedImage, DEFAULT_AUTHED_IMAGE_LABELS } from "./components/authed-image.js";
191
201
  export type { AuthedImageProps, AuthedImageLabels } from "./components/authed-image.js";
192
202
  export * from "./components/image-grid.js";
203
+ export {
204
+ /** @deprecated 0.52 — `ImageGrid`, which shortens its file names with it (API-4); removed in 0.53 */
205
+ splitFileName, } from "./components/image-grid.js";
193
206
  export * from "./components/lightbox.js";
194
207
  export * from "./components/button-group.js";
195
208
  export * from "./components/table.js";
@@ -204,7 +217,13 @@ export * from "./components/page-header.js";
204
217
  export * from "./components/breadcrumbs.js";
205
218
  export { TextLink } from "./components/text-link.js";
206
219
  export type { TextLinkProps, TextLinkRenderProps, TextLinkTone, TextLinkUnderline, TextLinkCurrent, } from "./components/text-link.js";
207
- export { toast, Toaster, DEFAULT_TOAST_LABELS, TOAST_ACTION_DURATION, TOASTER_OFFSET_TOP, TOASTER_OFFSET_BOTTOM, } from "./components/toast.js";
220
+ export { toast, Toaster, DEFAULT_TOAST_LABELS,
221
+ /** @deprecated 0.52 — `toast()`, which times a toast with an action by it (API-4); removed in 0.53 */
222
+ TOAST_ACTION_DURATION,
223
+ /** @deprecated 0.52 — `<Toaster>`, whose default `offset` it is (API-4); removed in 0.53 */
224
+ TOASTER_OFFSET_TOP,
225
+ /** @deprecated 0.52 — `<Toaster>`, whose default `offset` it is (API-4); removed in 0.53 */
226
+ TOASTER_OFFSET_BOTTOM, } from "./components/toast.js";
208
227
  export type { ToastId, ToastAction, ToastOptions, ToastPromiseOptions, ToastUndoOptions, ToastRedoOptions, ToastLabels, ToastPosition, ToastSwipeDirection, ToasterOffset, ToasterProps, } from "./components/toast.js";
209
228
  export { TranslationReviewPanel, TranslationReviewEditor, ReviewStatusChip, TranslationProgress, TranslationLocaleTabs, TranslationExportButton, REVIEW_STATUS_TONES, DEFAULT_TRANSLATION_REVIEW_LABELS, } from "./components/translation-review.js";
210
229
  export type { TranslationReviewPanelProps, TranslationReviewEditorProps, ReviewStatusChipProps, TranslationProgressProps, TranslationLocaleTab, TranslationLocaleTabsProps, TranslationExportButtonProps, TranslationReviewLabels, TranslationReviewSaveInfo, TranslationReviewOrigin, TranslationReviewGroupBy, } from "./components/translation-review.js";
@@ -214,11 +233,13 @@ export { LegalPage, LegalKitSection, LegalAcceptCheckbox, LEGAL_SKELETON } from
214
233
  export type { LegalPageProps, LegalKitSectionProps, LegalKitSectionKey, LegalAcceptCheckboxProps, LegalSkeletonEntry, LegalSkeletonPage, LegalSectionOwner, LegalDisclaimerVariant, } from "./components/legal-page.js";
215
234
  export { DEFAULT_APPEARANCE_LABELS, useAppearanceLabels } from "./components/appearance-labels.js";
216
235
  export type { AppearanceLabels } from "./components/appearance-labels.js";
217
- export { DATE_FORMAT_PREFERENCES, isDateFormatPreference, resolveDateFormat, formatDateWithPreference, dateFormatSample, dateFormatterFor, } from "./lib/date-format.js";
236
+ export { DATE_FORMAT_PREFERENCES, isDateFormatPreference, resolveDateFormat, formatDateWithPreference, formatDateTimeWithPreference, dateFormatSample, dateFormatterFor, } from "./lib/date-format.js";
218
237
  export type { DateFormatPreference, DateFormatOptions, ResolvedDateFormat } from "./lib/date-format.js";
219
238
  export { DateFormatSetting } from "./components/date-format-setting.js";
220
239
  export type { DateFormatSettingProps } from "./components/date-format-setting.js";
221
- export { RowActions, rowActionsColumn, DEFAULT_ROW_ACTIONS_LABELS, RowActionsHead, ROW_ACTIONS_CELL_CLASS, ROW_ACTIONS_HEAD_CLASS, } from "./components/row-actions.js";
240
+ export { RowActions, rowActionsColumn, DEFAULT_ROW_ACTIONS_LABELS, RowActionsHead, ROW_ACTIONS_CELL_CLASS,
241
+ /** @deprecated 0.52 — `RowActionsHead`, which draws it (API-4); removed in 0.53 */
242
+ ROW_ACTIONS_HEAD_CLASS, } from "./components/row-actions.js";
222
243
  export type { RowAction, RowActionList, RowActionsLabels, RowActionsProps, RowActionsCollapse, RowActionsSize, RowActionsColumnOptions, RowActionsHeadProps, RowActionTone, RowActionConfirm, } from "./components/row-actions.js";
223
244
  export * from "./components/checkbox-group.js";
224
245
  export * from "./components/one-time-code-input.js";
@@ -271,7 +292,11 @@ export { DeleteAccountSetting, DEFAULT_DELETE_ACCOUNT_LABELS } from "./account/d
271
292
  export type { DeleteAccountSettingProps, DeleteAccountLabels, DeleteAccountValues, DeletionMode, DeleteAccountConsequence, } from "./account/delete-account-setting.js";
272
293
  export { DataExportSetting, DEFAULT_DATA_EXPORT_LABELS } from "./account/data-export-setting.js";
273
294
  export type { DataExportSettingProps, DataExportLabels, DataExportFile } from "./account/data-export-setting.js";
274
- export { userRosterColumns, useUserRosterColumns, UserIdentityCell, UserRowActions, adminUserStates, userRosterSort, USER_ROSTER_SORT_KEYS, DEFAULT_USER_ROSTER_LABELS, } from "./admin/user-roster.js";
295
+ export {
296
+ /** @deprecated 0.52 — `useUserRosterColumns`, the same columns in the provider's words (API-4); removed in 0.53 */
297
+ userRosterColumns, useUserRosterColumns, UserIdentityCell, UserRowActions,
298
+ /** @deprecated 0.52 — `useUserRosterColumns`, whose state cell reads it (API-4); removed in 0.53 */
299
+ adminUserStates, userRosterSort, USER_ROSTER_SORT_KEYS, DEFAULT_USER_ROSTER_LABELS, } from "./admin/user-roster.js";
275
300
  export type { UserRosterRow, AdminUserStateFields, RosterState, UserRosterSortKey, UserRosterLabels, UserIdentityCellProps, UserRowAction, UserRowActionList, UserRowActionsProps, RoleEditing, UserRosterColumnsOptions, } from "./admin/user-roster.js";
276
301
  export { RoleSelect, RolesEditor, DEFAULT_ROLE_SELECT_LABELS } from "./admin/role-select.js";
277
302
  export type { RoleSelectProps, RolesEditorProps, RoleSelectLabels, RoleLock, RoleLockCode } from "./admin/role-select.js";
@@ -294,19 +319,27 @@ export { adminSectionOrder } from "./admin/admin-sections.js";
294
319
  export type { AdminSectionPlace, AdminSectionOrderOptions, AdminKeptSection } from "./admin/admin-sections.js";
295
320
  export { AdminForbidden } from "./admin/admin-forbidden.js";
296
321
  export type { AdminForbiddenProps } from "./admin/admin-forbidden.js";
297
- export { AdminOverview, AttentionTile, adminWaitingCount, DEFAULT_ADMIN_ATTENTION_HREFS } from "./admin/admin-overview.js";
322
+ export { AdminOverview, AttentionTile, adminWaitingCount,
323
+ /** @deprecated 0.52 — `AdminOverview`, which links its tiles there unless told otherwise (API-4); removed in 0.53 */
324
+ DEFAULT_ADMIN_ATTENTION_HREFS, } from "./admin/admin-overview.js";
298
325
  export type { AdminAttention, AdminAttentionTile, AdminExtraTile, AdminOverviewProps, AttentionTileProps, AdminFeedbackTile, AdminFeedbackTileKey, AdminOwnTile, } from "./admin/admin-overview.js";
299
326
  export { AdminToolLinks } from "./admin/admin-tool-links.js";
300
327
  export type { AdminToolLink, AdminToolLinksProps } from "./admin/admin-tool-links.js";
301
- export { MailTestCard, DEFAULT_MAIL_TEST_CARD_LABELS, MAIL_TEST_ANCHOR, maskMailAddress } from "./admin/mail-test-card.js";
328
+ export { MailTestCard, DEFAULT_MAIL_TEST_CARD_LABELS, MAIL_TEST_ANCHOR,
329
+ /** @deprecated 0.52 — `MailTestCard`, which masks the address itself (API-4); removed in 0.53 */
330
+ maskMailAddress, } from "./admin/mail-test-card.js";
302
331
  export type { MailTestCardProps, MailTestCardLabels, MailTestAnswer } from "./admin/mail-test-card.js";
303
- export { planColumn, usePlanColumn, PlanChangeConfirm, usePlanChangeResult, DEFAULT_PLAN_CHANGE_LABELS, } from "./admin/plan-change.js";
332
+ export {
333
+ /** @deprecated 0.52 — `usePlanColumn`, the same column in the provider's words (API-4); removed in 0.53 */
334
+ planColumn, usePlanColumn, PlanChangeConfirm, usePlanChangeResult, DEFAULT_PLAN_CHANGE_LABELS, } from "./admin/plan-change.js";
304
335
  export type { PlanChangeLabels, PlanColumnOptions, PlanColumnUsage, PlanChange, PlanChangeConfirmProps, PlanChangeOutcome, PlanChangeTone, PlanChangeLine, PlanChangeResultOptions, } from "./admin/plan-change.js";
305
336
  export { DEFAULT_BILLING_LABELS, useBillingLabels, SUBSCRIPTION_STATUSES } from "./billing/billing-labels.js";
306
337
  export type { BillingLabels, SubscriptionStatus } from "./billing/billing-labels.js";
307
338
  export { BILLING_INTERVALS, planPrice, minorToMajor, formatPlanPrice, billingCurrencyFor } from "./billing/plan-price.js";
308
339
  export type { BillingInterval, BillingCurrency, PlanIntervalPrices, PlanPrices, PlanPriceAnswer, } from "./billing/plan-price.js";
309
- export { PlanCard, PlanPicker, GrantWarningConfirm, planRelation } from "./billing/plan-card.js";
340
+ export { PlanCard, PlanPicker, GrantWarningConfirm,
341
+ /** @deprecated 0.52 — `PlanPicker`, which marks each card's relation itself (API-4); removed in 0.53 */
342
+ planRelation, } from "./billing/plan-card.js";
310
343
  export type { BillingPlan, PlanRelation, PlanCardProps, PlanPickerProps, PlanChoice, GrantWarningConfirmProps, } from "./billing/plan-card.js";
311
344
  export { SubscriptionStatusChip, SUBSCRIPTION_STATUS_TONES } from "./billing/subscription-status-chip.js";
312
345
  export type { SubscriptionStatusChipProps } from "./billing/subscription-status-chip.js";
@@ -323,9 +356,13 @@ export type { BillingStanding } from "./billing/billing-standing.js";
323
356
  export { SubscriptionActions } from "./billing/subscription-actions.js";
324
357
  export type { SubscriptionActionsProps } from "./billing/subscription-actions.js";
325
358
  export { CHECKOUT_RETURN_PARAM, CHECKOUT_RETURN_VALUE, isCheckoutReturn, withoutCheckoutReturn, checkoutReturnUrl, } from "./billing/checkout-return.js";
326
- export { checkoutFingerprint, checkoutLanded, noteCheckoutStarted, useCheckoutProcessing, } from "./billing/checkout-processing.js";
359
+ export { checkoutFingerprint,
360
+ /** @deprecated 0.52 — `useCheckoutProcessing`, which asks it (API-4); removed in 0.53 */
361
+ checkoutLanded, noteCheckoutStarted, useCheckoutProcessing, } from "./billing/checkout-processing.js";
327
362
  export type { CheckoutOverview, CheckoutProcessingOptions } from "./billing/checkout-processing.js";
328
- export { PAY_PAGE_LANG_PARAM, paddleLocale, payPageUrl } from "./billing/pay-page.js";
363
+ export {
364
+ /** @deprecated 0.52 — `payPageUrl`, which writes it (API-4); removed in 0.53 */
365
+ PAY_PAGE_LANG_PARAM, paddleLocale, payPageUrl, } from "./billing/pay-page.js";
329
366
  export type { PaddleEnvironment } from "./billing/pay-page.js";
330
367
  export { PAY_PAGE_APPS } from "./billing/pay-page.js";
331
368
  export type { PayPageApp } from "./billing/pay-page.js";
@@ -351,7 +388,9 @@ export { DeviceResetSetting, DEVICE_RESET_ANCHOR, DEFAULT_DEVICE_RESET_LABELS }
351
388
  export type { DeviceResetSettingProps, DeviceResetLabels } from "./settings/device-reset-setting.js";
352
389
  export { useAccountLanguage, resolveAccountLanguage, matchOfferedLanguage } from "./settings/use-account-language.js";
353
390
  export type { UseAccountLanguageOptions, AccountLanguage, AccountLanguageSource, ResolveAccountLanguageInput, ResolvedAccountLanguage, } from "./settings/use-account-language.js";
354
- export { useAccountAppearance, resolveAccountAppearance } from "./settings/use-account-appearance.js";
391
+ export { useAccountAppearance,
392
+ /** @deprecated 0.52 — `useAccountAppearance`, which resolves the same three values (API-4); removed in 0.53 */
393
+ resolveAccountAppearance, } from "./settings/use-account-appearance.js";
355
394
  export type { AppearanceSource, AccountAppearanceFields, DeviceAppearance, AccountAppearancePatch, ResolvedAccountAppearance, UseAccountAppearanceOptions, AccountAppearance, } from "./settings/use-account-appearance.js";
356
395
  export { DEFAULT_NOTIFICATIONS_LABELS } from "./notifications/notifications-labels.js";
357
396
  export type { NotificationsLabels, NotificationRegionLabels } from "./notifications/notifications-labels.js";
@@ -366,13 +405,15 @@ export { NotificationBell } from "./notifications/notification-bell.js";
366
405
  export type { NotificationBellProps } from "./notifications/notification-bell.js";
367
406
  export { useDeviceZoneReport, deviceTimeZone } from "./notifications/device-zone-report.js";
368
407
  export type { DeviceZoneReportOptions } from "./notifications/device-zone-report.js";
369
- export { usePushDevice, PUSH_SUBSCRIPTION_CHANGED, notifyPushSubscriptionChanged, pushSupported, PushDeviceError, } from "./notifications/use-push-device.js";
408
+ export { usePushDevice, PUSH_SUBSCRIPTION_CHANGED, notifyPushSubscriptionChanged, pushSupported, PushDeviceError, releaseThisDevicePush, } from "./notifications/use-push-device.js";
370
409
  export type { PushDevice, UsePushDeviceOptions, PushSubscriptionInput, PushPermission, PushDeviceErrorCode, } from "./notifications/use-push-device.js";
371
410
  export { handlePushSubscriptionChange, resubscribeAfterChange, pushSubscriptionInput, } from "./notifications/push-worker.js";
372
411
  export type { PushReplaceInput, PushSubscriptionChangeOptions, PushSubscriptionChangeEventLike, PushResubscribeOutcome, PushWorkerScope, } from "./notifications/push-worker.js";
373
412
  export { PushDeviceSetting } from "./notifications/push-device-setting.js";
374
413
  export type { PushDeviceSettingProps, PushDeviceAction } from "./notifications/push-device-setting.js";
375
- export { PushDevicesSetting, describeUserAgent } from "./notifications/push-devices-setting.js";
414
+ export { PushDevicesSetting,
415
+ /** @deprecated 0.52 — `PushDevicesSetting`, which names each device with it (API-4); removed in 0.53 */
416
+ describeUserAgent, } from "./notifications/push-devices-setting.js";
376
417
  export type { PushDevicesSettingProps } from "./notifications/push-devices-setting.js";
377
418
  export { UnsubscribePanel, unsubscribeTokenType } from "./notifications/unsubscribe-panel.js";
378
419
  export type { UnsubscribePanelProps } from "./notifications/unsubscribe-panel.js";
@@ -394,7 +435,13 @@ export { DEFAULT_DEMO_LABELS, useDemoLabels } from "./demo/demo-labels.js";
394
435
  export type { DemoLabels } from "./demo/demo-labels.js";
395
436
  export { isDemoSession } from "./demo/demo-session.js";
396
437
  export type { DemoModel, DemoSessionUser } from "./demo/demo-session.js";
397
- export { useDemoCountdown, demoCountdown, DEMO_WARNING_MINUTES, DEMO_MINUTES_ONLY } from "./demo/demo-countdown.js";
438
+ export { useDemoCountdown,
439
+ /** @deprecated 0.52 — `useDemoCountdown`, the same countdown; its `now` option for a test (API-4); removed in 0.53 */
440
+ demoCountdown,
441
+ /** @deprecated 0.52 — `useDemoCountdown`, whose `warning` turns on then (API-4); removed in 0.53 */
442
+ DEMO_WARNING_MINUTES,
443
+ /** @deprecated 0.52 — `useDemoCountdown`, whose `lastHour` turns on then (API-4); removed in 0.53 */
444
+ DEMO_MINUTES_ONLY, } from "./demo/demo-countdown.js";
398
445
  export type { DemoCountdown, DemoCountdownOptions, DemoExpiry } from "./demo/demo-countdown.js";
399
446
  export { DemoStart } from "./demo/demo-start.js";
400
447
  export type { DemoStartProps } from "./demo/demo-start.js";
package/dist/index.js CHANGED
@@ -3,7 +3,16 @@ export * from "./lib/calc.js";
3
3
  import { cn } from "./lib/cn.js";
4
4
  import { logger, setStoreLog } from "./lib/logger.js";
5
5
  export * from "./lib/format.js";
6
- import { readStored, writeStored } from "./lib/safe-storage.js";
6
+ import {
7
+ readStored,
8
+ writeStored,
9
+ removeStored,
10
+ readSessionStored,
11
+ writeSessionStored,
12
+ readStoredJson,
13
+ writeStoredJson
14
+ } from "./lib/safe-storage.js";
15
+ import { prefersReducedMotion } from "./lib/reduced-motion.js";
7
16
  import { saveBlob, filenameFromDisposition } from "./lib/download.js";
8
17
  import { foldForSearch, rankMatch, searchWords, matchesSearch } from "./lib/text-match.js";
9
18
  import { encodeQr } from "./lib/qr-encode.js";
@@ -69,9 +78,12 @@ import { useAnnounce } from "./hooks/use-announce.js";
69
78
  import { useOverlayHistory } from "./hooks/use-overlay-history.js";
70
79
  import { useCloseTransition, OVERLAY_EXIT_MS } from "./hooks/use-close-transition.js";
71
80
  import { useRowSwipe } from "./hooks/use-row-swipe.js";
81
+ import { useLongPress } from "./hooks/use-long-press.js";
72
82
  import { useNoIndex } from "./hooks/use-noindex.js";
73
83
  import { useDocumentTitle } from "./hooks/use-document-title.js";
74
- import { asciiMinusInNumbers } from "./lib/clipboard-minus.js";
84
+ import {
85
+ asciiMinusInNumbers
86
+ } from "./lib/clipboard-minus.js";
75
87
  import { DEFAULT_DOCUMENT_TITLE_FORMAT, formatDocumentTitle } from "./lib/document-title.js";
76
88
  import { useFileDrop, dragHasFiles } from "./hooks/use-file-drop.js";
77
89
  import { useDebounce, useDebouncedCallback } from "./hooks/use-debounce.js";
@@ -208,6 +220,9 @@ export * from "./components/grouped-picker.js";
208
220
  export * from "./components/file-dropzone.js";
209
221
  export * from "./components/mini-calendar.js";
210
222
  export * from "./components/calendar-heatmap.js";
223
+ import {
224
+ heatmapLevel
225
+ } from "./components/calendar-heatmap.js";
211
226
  export * from "./components/date-picker.js";
212
227
  export * from "./components/tree-view.js";
213
228
  export * from "./components/description-list.js";
@@ -219,7 +234,11 @@ import {
219
234
  COMMIT_EXCEPT_BILLING,
220
235
  DEFAULT_WRITE_LOCK_LABELS
221
236
  } from "./components/write-lock.js";
222
- import { OFFLINE_LOCK, COMMIT_EXCEPT_OFFLINE, useOfflineWriteLock } from "./components/write-lock.js";
237
+ import {
238
+ OFFLINE_LOCK,
239
+ COMMIT_EXCEPT_OFFLINE,
240
+ useOfflineWriteLock
241
+ } from "./components/write-lock.js";
223
242
  import {
224
243
  RoleChip,
225
244
  AccountStateChip,
@@ -241,6 +260,9 @@ export * from "./components/error-boundary.js";
241
260
  export * from "./components/copy-button.js";
242
261
  import { AuthedImage, DEFAULT_AUTHED_IMAGE_LABELS } from "./components/authed-image.js";
243
262
  export * from "./components/image-grid.js";
263
+ import {
264
+ splitFileName
265
+ } from "./components/image-grid.js";
244
266
  export * from "./components/lightbox.js";
245
267
  export * from "./components/button-group.js";
246
268
  export * from "./components/table.js";
@@ -288,6 +310,7 @@ import {
288
310
  isDateFormatPreference,
289
311
  resolveDateFormat,
290
312
  formatDateWithPreference,
313
+ formatDateTimeWithPreference,
291
314
  dateFormatSample,
292
315
  dateFormatterFor
293
316
  } from "./lib/date-format.js";
@@ -355,9 +378,19 @@ import { DEFAULT_ADMIN_AREA_LABELS, useAdminAreaLabels } from "./admin/admin-are
355
378
  import { ADMIN_SECTIONS, adminSections } from "./admin/admin-sections.js";
356
379
  import { adminSectionOrder } from "./admin/admin-sections.js";
357
380
  import { AdminForbidden } from "./admin/admin-forbidden.js";
358
- import { AdminOverview, AttentionTile, adminWaitingCount, DEFAULT_ADMIN_ATTENTION_HREFS } from "./admin/admin-overview.js";
381
+ import {
382
+ AdminOverview,
383
+ AttentionTile,
384
+ adminWaitingCount,
385
+ DEFAULT_ADMIN_ATTENTION_HREFS
386
+ } from "./admin/admin-overview.js";
359
387
  import { AdminToolLinks } from "./admin/admin-tool-links.js";
360
- import { MailTestCard, DEFAULT_MAIL_TEST_CARD_LABELS, MAIL_TEST_ANCHOR, maskMailAddress } from "./admin/mail-test-card.js";
388
+ import {
389
+ MailTestCard,
390
+ DEFAULT_MAIL_TEST_CARD_LABELS,
391
+ MAIL_TEST_ANCHOR,
392
+ maskMailAddress
393
+ } from "./admin/mail-test-card.js";
361
394
  import {
362
395
  planColumn,
363
396
  usePlanColumn,
@@ -367,7 +400,12 @@ import {
367
400
  } from "./admin/plan-change.js";
368
401
  import { DEFAULT_BILLING_LABELS, useBillingLabels, SUBSCRIPTION_STATUSES } from "./billing/billing-labels.js";
369
402
  import { BILLING_INTERVALS, planPrice, minorToMajor, formatPlanPrice, billingCurrencyFor } from "./billing/plan-price.js";
370
- import { PlanCard, PlanPicker, GrantWarningConfirm, planRelation } from "./billing/plan-card.js";
403
+ import {
404
+ PlanCard,
405
+ PlanPicker,
406
+ GrantWarningConfirm,
407
+ planRelation
408
+ } from "./billing/plan-card.js";
371
409
  import { SubscriptionStatusChip, SUBSCRIPTION_STATUS_TONES } from "./billing/subscription-status-chip.js";
372
410
  import { BillingBanner } from "./billing/billing-banner.js";
373
411
  import { PlanLimitNotice, planLimitMailto } from "./billing/plan-limit-notice.js";
@@ -388,7 +426,11 @@ import {
388
426
  noteCheckoutStarted,
389
427
  useCheckoutProcessing
390
428
  } from "./billing/checkout-processing.js";
391
- import { PAY_PAGE_LANG_PARAM, paddleLocale, payPageUrl } from "./billing/pay-page.js";
429
+ import {
430
+ PAY_PAGE_LANG_PARAM,
431
+ paddleLocale,
432
+ payPageUrl
433
+ } from "./billing/pay-page.js";
392
434
  import { PAY_PAGE_APPS } from "./billing/pay-page.js";
393
435
  import { usePlanLimitToast } from "./billing/plan-limit-toast.js";
394
436
  import { PlanSwitchConfirm } from "./billing/plan-switch.js";
@@ -400,7 +442,10 @@ import { DEFAULT_SETTINGS_LABELS, useSettingsLabels } from "./settings/settings-
400
442
  import { registerDeviceSetting, deviceSettings, resetDeviceSettings } from "./lib/device-settings.js";
401
443
  import { DeviceResetSetting, DEVICE_RESET_ANCHOR, DEFAULT_DEVICE_RESET_LABELS } from "./settings/device-reset-setting.js";
402
444
  import { useAccountLanguage, resolveAccountLanguage, matchOfferedLanguage } from "./settings/use-account-language.js";
403
- import { useAccountAppearance, resolveAccountAppearance } from "./settings/use-account-appearance.js";
445
+ import {
446
+ useAccountAppearance,
447
+ resolveAccountAppearance
448
+ } from "./settings/use-account-appearance.js";
404
449
  import { DEFAULT_NOTIFICATIONS_LABELS } from "./notifications/notifications-labels.js";
405
450
  import { NotificationTypesSetting } from "./notifications/notification-types-setting.js";
406
451
  import { QuietHoursSetting } from "./notifications/quiet-hours-setting.js";
@@ -412,7 +457,8 @@ import {
412
457
  PUSH_SUBSCRIPTION_CHANGED,
413
458
  notifyPushSubscriptionChanged,
414
459
  pushSupported,
415
- PushDeviceError
460
+ PushDeviceError,
461
+ releaseThisDevicePush
416
462
  } from "./notifications/use-push-device.js";
417
463
  import {
418
464
  handlePushSubscriptionChange,
@@ -420,7 +466,10 @@ import {
420
466
  pushSubscriptionInput
421
467
  } from "./notifications/push-worker.js";
422
468
  import { PushDeviceSetting } from "./notifications/push-device-setting.js";
423
- import { PushDevicesSetting, describeUserAgent } from "./notifications/push-devices-setting.js";
469
+ import {
470
+ PushDevicesSetting,
471
+ describeUserAgent
472
+ } from "./notifications/push-devices-setting.js";
424
473
  import { UnsubscribePanel, unsubscribeTokenType } from "./notifications/unsubscribe-panel.js";
425
474
  import {
426
475
  useFeedbackNotificationTypes,
@@ -435,7 +484,12 @@ import { usePageSeo, seoCopyProblems, metaContent } from "./landing/page-seo.js"
435
484
  import { PublicPage } from "./landing/public-page.js";
436
485
  import { DEFAULT_DEMO_LABELS, useDemoLabels } from "./demo/demo-labels.js";
437
486
  import { isDemoSession } from "./demo/demo-session.js";
438
- import { useDemoCountdown, demoCountdown, DEMO_WARNING_MINUTES, DEMO_MINUTES_ONLY } from "./demo/demo-countdown.js";
487
+ import {
488
+ useDemoCountdown,
489
+ demoCountdown,
490
+ DEMO_WARNING_MINUTES,
491
+ DEMO_MINUTES_ONLY
492
+ } from "./demo/demo-countdown.js";
439
493
  import { DemoStart } from "./demo/demo-start.js";
440
494
  import { DemoBanner } from "./demo/demo-banner.js";
441
495
  import { DemoEnded } from "./demo/demo-ended.js";
@@ -686,6 +740,7 @@ export {
686
740
  filterTranslationRows,
687
741
  flattenStrings,
688
742
  foldForSearch,
743
+ formatDateTimeWithPreference,
689
744
  formatDateWithPreference,
690
745
  formatDocumentTitle,
691
746
  formatIban,
@@ -698,6 +753,7 @@ export {
698
753
  groupTranslationRows,
699
754
  guessMapping,
700
755
  handlePushSubscriptionChange,
756
+ heatmapLevel,
701
757
  ibanCheckDigits,
702
758
  ibanProblem,
703
759
  isAuthError,
@@ -745,15 +801,20 @@ export {
745
801
  planLimitMailto,
746
802
  planPrice,
747
803
  planRelation,
804
+ prefersReducedMotion,
748
805
  pushSubscriptionInput,
749
806
  pushSupported,
750
807
  rankMatch,
751
808
  readKeyboardInset,
752
809
  readMappedTable,
810
+ readSessionStored,
753
811
  readStored,
812
+ readStoredJson,
754
813
  readTextFile,
755
814
  registerDeviceSetting,
815
+ releaseThisDevicePush,
756
816
  remPx,
817
+ removeStored,
757
818
  resetDeviceSettings,
758
819
  resolveAccountAppearance,
759
820
  resolveAccountLanguage,
@@ -771,6 +832,7 @@ export {
771
832
  seoCopyProblems,
772
833
  serverWake,
773
834
  setStoreLog,
835
+ splitFileName,
774
836
  statusTone,
775
837
  summariseRows,
776
838
  taggedEmail,
@@ -820,6 +882,7 @@ export {
820
882
  useLandingLabels,
821
883
  useLargeText,
822
884
  useLegalLabels,
885
+ useLongPress,
823
886
  useMediaQuery,
824
887
  useNoIndex,
825
888
  useOfflineWriteLock,
@@ -849,6 +912,8 @@ export {
849
912
  withoutCheckoutReturn,
850
913
  wrapFetch,
851
914
  writeLockFor,
852
- writeStored
915
+ writeSessionStored,
916
+ writeStored,
917
+ writeStoredJson
853
918
  };
854
919
  //# sourceMappingURL=index.js.map