@eifi1/ui-kit 0.51.7 → 0.53.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 (775) hide show
  1. package/README.md +178 -67
  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 +10 -7
  60. package/dist/billing/cancel-subscription.js +6 -6
  61. package/dist/billing/cancel-subscription.js.map +1 -1
  62. package/dist/billing/plan-card.d.ts +5 -3
  63. package/dist/billing/plan-card.js +7 -8
  64. package/dist/billing/plan-card.js.map +1 -1
  65. package/dist/billing/plan-change-labels.d.ts +42 -0
  66. package/dist/billing/plan-change-labels.js +22 -0
  67. package/dist/billing/plan-change-labels.js.map +1 -0
  68. package/dist/billing/plan-switch.d.ts +9 -6
  69. package/dist/billing/plan-switch.js +7 -5
  70. package/dist/billing/plan-switch.js.map +1 -1
  71. package/dist/chart.d.ts +4 -3
  72. package/dist/chart.js +72 -4
  73. package/dist/chart.js.map +1 -1
  74. package/dist/components/account-chips.d.ts +5 -5
  75. package/dist/components/account-chips.js +11 -13
  76. package/dist/components/account-chips.js.map +1 -1
  77. package/dist/components/alert-banner.d.ts +16 -5
  78. package/dist/components/alert-banner.js +46 -1
  79. package/dist/components/alert-banner.js.map +1 -1
  80. package/dist/components/amount-input.d.ts +13 -0
  81. package/dist/components/amount-input.js +1 -0
  82. package/dist/components/amount-input.js.map +1 -1
  83. package/dist/components/autocomplete.js +57 -65
  84. package/dist/components/autocomplete.js.map +1 -1
  85. package/dist/components/bulk-action-bar.d.ts +12 -2
  86. package/dist/components/bulk-action-bar.js +65 -21
  87. package/dist/components/bulk-action-bar.js.map +1 -1
  88. package/dist/components/button-look.d.ts +5 -5
  89. package/dist/components/button-look.js.map +1 -1
  90. package/dist/components/button.d.ts +2 -2
  91. package/dist/components/button.js.map +1 -1
  92. package/dist/components/chart-edge.d.ts +16 -0
  93. package/dist/components/chart-edge.js +14 -1
  94. package/dist/components/chart-edge.js.map +1 -1
  95. package/dist/components/chart-figure.d.ts +13 -0
  96. package/dist/components/chart-figure.js +15 -0
  97. package/dist/components/chart-figure.js.map +1 -0
  98. package/dist/components/chart-zoom-core.js +1 -4
  99. package/dist/components/chart-zoom-core.js.map +1 -1
  100. package/dist/components/chart.d.ts +8 -1
  101. package/dist/components/chart.js +19 -10
  102. package/dist/components/chart.js.map +1 -1
  103. package/dist/components/combobox-core.d.ts +111 -2
  104. package/dist/components/combobox-core.js +148 -42
  105. package/dist/components/combobox-core.js.map +1 -1
  106. package/dist/components/combobox.d.ts +1 -1
  107. package/dist/components/combobox.js +141 -130
  108. package/dist/components/combobox.js.map +1 -1
  109. package/dist/components/copy-button.d.ts +6 -5
  110. package/dist/components/copy-button.js +5 -3
  111. package/dist/components/copy-button.js.map +1 -1
  112. package/dist/components/country-select.js +2 -2
  113. package/dist/components/country-select.js.map +1 -1
  114. package/dist/components/data-table-column-settings.d.ts +1 -1
  115. package/dist/components/data-table-column-settings.js +33 -7
  116. package/dist/components/data-table-column-settings.js.map +1 -1
  117. package/dist/components/data-table-filters.d.ts +4 -2
  118. package/dist/components/data-table-filters.js +2 -2
  119. package/dist/components/data-table-filters.js.map +1 -1
  120. package/dist/components/data-table-fit.d.ts +6 -4
  121. package/dist/components/data-table-fit.js +4 -1
  122. package/dist/components/data-table-fit.js.map +1 -1
  123. package/dist/components/data-table-groups.d.ts +1 -1
  124. package/dist/components/data-table-groups.js.map +1 -1
  125. package/dist/components/data-table-head.d.ts +1 -1
  126. package/dist/components/data-table-head.js +15 -12
  127. package/dist/components/data-table-head.js.map +1 -1
  128. package/dist/components/data-table-mobile.d.ts +12 -7
  129. package/dist/components/data-table-mobile.js +43 -30
  130. package/dist/components/data-table-mobile.js.map +1 -1
  131. package/dist/components/data-table-pagination.js +11 -6
  132. package/dist/components/data-table-pagination.js.map +1 -1
  133. package/dist/components/data-table-resize.d.ts +1 -1
  134. package/dist/components/data-table-resize.js.map +1 -1
  135. package/dist/components/data-table-row-actions.d.ts +2 -2
  136. package/dist/components/data-table-row-actions.js.map +1 -1
  137. package/dist/components/data-table-row.d.ts +6 -2
  138. package/dist/components/data-table-row.js +17 -10
  139. package/dist/components/data-table-row.js.map +1 -1
  140. package/dist/components/data-table-selection.d.ts +1 -1
  141. package/dist/components/data-table-selection.js.map +1 -1
  142. package/dist/components/data-table-shared.d.ts +10 -2
  143. package/dist/components/data-table-shared.js +18 -0
  144. package/dist/components/data-table-shared.js.map +1 -1
  145. package/dist/components/data-table-sort.d.ts +21 -2
  146. package/dist/components/data-table-sort.js +24 -0
  147. package/dist/components/data-table-sort.js.map +1 -1
  148. package/dist/components/data-table-virtual.d.ts +1 -1
  149. package/dist/components/data-table-virtual.js +18 -6
  150. package/dist/components/data-table-virtual.js.map +1 -1
  151. package/dist/components/data-table.d.ts +13 -4
  152. package/dist/components/data-table.js +139 -36
  153. package/dist/components/data-table.js.map +1 -1
  154. package/dist/components/date-field.d.ts +25 -3
  155. package/dist/components/date-field.js +33 -8
  156. package/dist/components/date-field.js.map +1 -1
  157. package/dist/components/date-picker.d.ts +16 -3
  158. package/dist/components/date-picker.js +55 -26
  159. package/dist/components/date-picker.js.map +1 -1
  160. package/dist/components/date-range-picker.d.ts +38 -24
  161. package/dist/components/date-range-picker.js +23 -7
  162. package/dist/components/date-range-picker.js.map +1 -1
  163. package/dist/components/error-boundary.js +37 -30
  164. package/dist/components/error-boundary.js.map +1 -1
  165. package/dist/components/{ui-labels.d.ts → field-base-labels.d.ts} +0 -2
  166. package/dist/components/{ui-labels.js → field-base-labels.js} +2 -9
  167. package/dist/components/field-base-labels.js.map +1 -0
  168. package/dist/components/field-base.d.ts +4 -3
  169. package/dist/components/field-base.js +3 -3
  170. package/dist/components/field-base.js.map +1 -1
  171. package/dist/components/form-actions.js +11 -5
  172. package/dist/components/form-actions.js.map +1 -1
  173. package/dist/components/hover-menu.d.ts +3 -0
  174. package/dist/components/hover-menu.js +5 -3
  175. package/dist/components/hover-menu.js.map +1 -1
  176. package/dist/components/icon-button.js +14 -9
  177. package/dist/components/icon-button.js.map +1 -1
  178. package/dist/components/inline-confirm.d.ts +43 -0
  179. package/dist/components/inline-confirm.js +67 -0
  180. package/dist/components/inline-confirm.js.map +1 -0
  181. package/dist/components/inline-entity-combobox.d.ts +4 -3
  182. package/dist/components/inline-entity-combobox.js +148 -140
  183. package/dist/components/inline-entity-combobox.js.map +1 -1
  184. package/dist/components/input.js +1 -1
  185. package/dist/components/input.js.map +1 -1
  186. package/dist/components/jump-calendar.js +28 -112
  187. package/dist/components/jump-calendar.js.map +1 -1
  188. package/dist/components/legal-page.d.ts +3 -1
  189. package/dist/components/legal-page.js +3 -2
  190. package/dist/components/legal-page.js.map +1 -1
  191. package/dist/components/legal.d.ts +4 -2
  192. package/dist/components/legal.js.map +1 -1
  193. package/dist/components/lightbox.d.ts +2 -2
  194. package/dist/components/lightbox.js +17 -6
  195. package/dist/components/lightbox.js.map +1 -1
  196. package/dist/components/list.d.ts +6 -2
  197. package/dist/components/list.js +3 -2
  198. package/dist/components/list.js.map +1 -1
  199. package/dist/components/measured-grid.d.ts +1 -1
  200. package/dist/components/measured-grid.js +2 -1
  201. package/dist/components/measured-grid.js.map +1 -1
  202. package/dist/components/mini-calendar.js +3 -5
  203. package/dist/components/mini-calendar.js.map +1 -1
  204. package/dist/components/modal.js +3 -1
  205. package/dist/components/modal.js.map +1 -1
  206. package/dist/components/month-grid.d.ts +55 -0
  207. package/dist/components/month-grid.js +148 -0
  208. package/dist/components/month-grid.js.map +1 -0
  209. package/dist/components/month-picker.d.ts +36 -4
  210. package/dist/components/month-picker.js +123 -146
  211. package/dist/components/month-picker.js.map +1 -1
  212. package/dist/components/multi-select.d.ts +2 -2
  213. package/dist/components/multi-select.js +11 -6
  214. package/dist/components/multi-select.js.map +1 -1
  215. package/dist/components/nav-pills.d.ts +1 -1
  216. package/dist/components/nav-pills.js.map +1 -1
  217. package/dist/components/picker-sheet.js +2 -1
  218. package/dist/components/picker-sheet.js.map +1 -1
  219. package/dist/components/pie-chart-labels.d.ts +7 -0
  220. package/dist/components/pie-chart-labels.js +1 -0
  221. package/dist/components/pie-chart-labels.js.map +1 -1
  222. package/dist/components/pie-chart.d.ts +5 -3
  223. package/dist/components/pie-chart.js +7 -22
  224. package/dist/components/pie-chart.js.map +1 -1
  225. package/dist/components/popover.d.ts +3 -0
  226. package/dist/components/popover.js +7 -1
  227. package/dist/components/popover.js.map +1 -1
  228. package/dist/components/row-actions.js +2 -1
  229. package/dist/components/row-actions.js.map +1 -1
  230. package/dist/components/series-chart-axes.d.ts +4 -4
  231. package/dist/components/series-chart-axes.js.map +1 -1
  232. package/dist/components/series-chart-labels.d.ts +7 -4
  233. package/dist/components/series-chart-labels.js.map +1 -1
  234. package/dist/components/series-chart.d.ts +92 -23
  235. package/dist/components/series-chart.js +74 -30
  236. package/dist/components/series-chart.js.map +1 -1
  237. package/dist/components/share-card.js +3 -3
  238. package/dist/components/share-card.js.map +1 -1
  239. package/dist/components/tabs-labels.d.ts +2 -0
  240. package/dist/components/tabs-labels.js +11 -0
  241. package/dist/components/tabs-labels.js.map +1 -0
  242. package/dist/components/tabs.d.ts +1 -1
  243. package/dist/components/tabs.js +1 -1
  244. package/dist/components/tabs.js.map +1 -1
  245. package/dist/components/toggle-legend.d.ts +2 -2
  246. package/dist/components/toggle-legend.js +6 -6
  247. package/dist/components/toggle-legend.js.map +1 -1
  248. package/dist/components/translation-review-editor.d.ts +4 -2
  249. package/dist/components/translation-review-editor.js +2 -3
  250. package/dist/components/translation-review-editor.js.map +1 -1
  251. package/dist/components/translation-review.d.ts +2 -1
  252. package/dist/components/translation-review.js +2 -2
  253. package/dist/components/translation-review.js.map +1 -1
  254. package/dist/components/treemap-labels.d.ts +31 -0
  255. package/dist/components/treemap-labels.js +10 -0
  256. package/dist/components/treemap-labels.js.map +1 -0
  257. package/dist/components/treemap-layout.d.ts +62 -0
  258. package/dist/components/treemap-layout.js +126 -0
  259. package/dist/components/treemap-layout.js.map +1 -0
  260. package/dist/components/treemap.d.ts +167 -19
  261. package/dist/components/treemap.js +340 -100
  262. package/dist/components/treemap.js.map +1 -1
  263. package/dist/components/use-table-state.d.ts +5 -5
  264. package/dist/components/use-table-state.js +4 -1
  265. package/dist/components/use-table-state.js.map +1 -1
  266. package/dist/data-table.d.ts +1 -2
  267. package/dist/data-table.js +1 -4
  268. package/dist/data-table.js.map +1 -1
  269. package/dist/demo/demo-countdown.d.ts +0 -5
  270. package/dist/demo/demo-countdown.js +0 -4
  271. package/dist/demo/demo-countdown.js.map +1 -1
  272. package/dist/eslint/index.js +1 -1
  273. package/dist/eslint/role-utilities.d.ts +36 -7
  274. package/dist/eslint/role-utilities.js +42 -9
  275. package/dist/eslint/role-utilities.js.map +1 -1
  276. package/dist/feedback/feedback-dialog.d.ts +25 -16
  277. package/dist/feedback/feedback-dialog.js +6 -2
  278. package/dist/feedback/feedback-dialog.js.map +1 -1
  279. package/dist/feedback/feedback-mutation.d.ts +18 -0
  280. package/dist/feedback/feedback-mutation.js +8 -0
  281. package/dist/feedback/feedback-mutation.js.map +1 -0
  282. package/dist/feedback/feedback-page-link.d.ts +53 -0
  283. package/dist/feedback/feedback-page-link.js +37 -0
  284. package/dist/feedback/feedback-page-link.js.map +1 -0
  285. package/dist/feedback/feedback-public-list.d.ts +8 -4
  286. package/dist/feedback/feedback-public-list.js +2 -2
  287. package/dist/feedback/feedback-public-list.js.map +1 -1
  288. package/dist/feedback/feedback-replies.d.ts +3 -1
  289. package/dist/feedback/feedback-replies.js +5 -4
  290. package/dist/feedback/feedback-replies.js.map +1 -1
  291. package/dist/feedback/feedback-row-detail-labels.js +0 -3
  292. package/dist/feedback/feedback-row-detail-labels.js.map +1 -1
  293. package/dist/feedback/feedback-row-detail.d.ts +33 -44
  294. package/dist/feedback/feedback-row-detail.js +28 -34
  295. package/dist/feedback/feedback-row-detail.js.map +1 -1
  296. package/dist/feedback/feedback-status-undo.d.ts +17 -14
  297. package/dist/feedback/feedback-status-undo.js +10 -15
  298. package/dist/feedback/feedback-status-undo.js.map +1 -1
  299. package/dist/feedback/feedback-submit-dialog.d.ts +1 -1
  300. package/dist/feedback/feedback-submit-dialog.js +1 -1
  301. package/dist/feedback/feedback-submit-dialog.js.map +1 -1
  302. package/dist/feedback/feedback-submit.js +9 -3
  303. package/dist/feedback/feedback-submit.js.map +1 -1
  304. package/dist/feedback/feedback-swipe.d.ts +1 -1
  305. package/dist/feedback/feedback-swipe.js.map +1 -1
  306. package/dist/feedback/feedback-table.d.ts +21 -9
  307. package/dist/feedback/feedback-table.js +45 -25
  308. package/dist/feedback/feedback-table.js.map +1 -1
  309. package/dist/feedback/feedback-thread-labels.d.ts +2 -2
  310. package/dist/feedback/feedback-thread-labels.js.map +1 -1
  311. package/dist/feedback/feedback-thread.d.ts +15 -23
  312. package/dist/feedback/feedback-thread.js +2 -1
  313. package/dist/feedback/feedback-thread.js.map +1 -1
  314. package/dist/feedback.d.ts +6 -6
  315. package/dist/feedback.js +90 -6
  316. package/dist/feedback.js.map +1 -1
  317. package/dist/hooks/use-focus-trap.d.ts +35 -0
  318. package/dist/hooks/use-focus-trap.js +6 -4
  319. package/dist/hooks/use-focus-trap.js.map +1 -1
  320. package/dist/hooks/use-hotkey.d.ts +5 -2
  321. package/dist/hooks/use-hotkey.js +5 -4
  322. package/dist/hooks/use-hotkey.js.map +1 -1
  323. package/dist/hooks/use-long-press.d.ts +7 -4
  324. package/dist/hooks/use-long-press.js +3 -0
  325. package/dist/hooks/use-long-press.js.map +1 -1
  326. package/dist/hooks/use-media-query.js +12 -4
  327. package/dist/hooks/use-media-query.js.map +1 -1
  328. package/dist/hooks/use-mounted.d.ts +22 -0
  329. package/dist/hooks/use-mounted.js +24 -0
  330. package/dist/hooks/use-mounted.js.map +1 -0
  331. package/dist/hooks/use-overlay-history.js +19 -3
  332. package/dist/hooks/use-overlay-history.js.map +1 -1
  333. package/dist/i18n/defaults.js +4 -9
  334. package/dist/i18n/defaults.js.map +1 -1
  335. package/dist/i18n/german.js +7 -18
  336. package/dist/i18n/german.js.map +1 -1
  337. package/dist/i18n/kit-labels.d.ts +9 -11
  338. package/dist/i18n/kit-labels.js.map +1 -1
  339. package/dist/i18n/locales/en.js +15 -64
  340. package/dist/i18n/locales/en.js.map +3 -3
  341. package/dist/i18n/locales/es.js +7 -18
  342. package/dist/i18n/locales/es.js.map +1 -1
  343. package/dist/i18n/locales/fr.js +20 -27
  344. package/dist/i18n/locales/fr.js.map +1 -1
  345. package/dist/i18n/locales/hu.js +9 -18
  346. package/dist/i18n/locales/hu.js.map +1 -1
  347. package/dist/i18n/locales/it.js +7 -19
  348. package/dist/i18n/locales/it.js.map +1 -1
  349. package/dist/i18n/locales/zh.js +8 -18
  350. package/dist/i18n/locales/zh.js.map +1 -1
  351. package/dist/i18n/review.js +12 -2
  352. package/dist/i18n/review.js.map +1 -1
  353. package/dist/i18n/shared-labels.js +0 -1
  354. package/dist/i18n/shared-labels.js.map +1 -1
  355. package/dist/index.d.ts +21 -23
  356. package/dist/index.js +50 -65
  357. package/dist/index.js.map +1 -1
  358. package/dist/landing/routing.d.ts +3 -1
  359. package/dist/landing/routing.js +4 -7
  360. package/dist/landing/routing.js.map +1 -1
  361. package/dist/lib/broadcast.d.ts +17 -0
  362. package/dist/lib/broadcast.js +30 -0
  363. package/dist/lib/broadcast.js.map +1 -0
  364. package/dist/lib/date-format.d.ts +37 -2
  365. package/dist/lib/date-format.js +34 -8
  366. package/dist/lib/date-format.js.map +1 -1
  367. package/dist/lib/day-format.d.ts +46 -0
  368. package/dist/lib/day-format.js +46 -0
  369. package/dist/lib/day-format.js.map +1 -0
  370. package/dist/lib/describe-failure.d.ts +14 -0
  371. package/dist/lib/describe-failure.js +9 -0
  372. package/dist/lib/describe-failure.js.map +1 -0
  373. package/dist/lib/direction.d.ts +16 -0
  374. package/dist/lib/direction.js +9 -1
  375. package/dist/lib/direction.js.map +1 -1
  376. package/dist/lib/focus-left.d.ts +63 -0
  377. package/dist/lib/focus-left.js +67 -0
  378. package/dist/lib/focus-left.js.map +1 -0
  379. package/dist/lib/format.js +5 -14
  380. package/dist/lib/format.js.map +1 -1
  381. package/dist/lib/http-status.d.ts +24 -0
  382. package/dist/lib/http-status.js +14 -0
  383. package/dist/lib/http-status.js.map +1 -0
  384. package/dist/lib/intl-cache.d.ts +14 -0
  385. package/dist/lib/intl-cache.js +15 -0
  386. package/dist/lib/intl-cache.js.map +1 -0
  387. package/dist/lib/iso-day.d.ts +11 -0
  388. package/dist/lib/iso-day.js +8 -0
  389. package/dist/lib/iso-day.js.map +1 -0
  390. package/dist/lib/lazy-with-fallback.d.ts +31 -0
  391. package/dist/lib/lazy-with-fallback.js +40 -0
  392. package/dist/lib/lazy-with-fallback.js.map +1 -0
  393. package/dist/lib/path-pattern.d.ts +34 -0
  394. package/dist/lib/path-pattern.js +24 -0
  395. package/dist/lib/path-pattern.js.map +1 -0
  396. package/dist/lib/reduced-motion.d.ts +2 -1
  397. package/dist/lib/reduced-motion.js.map +1 -1
  398. package/dist/lib/round.d.ts +2 -1
  399. package/dist/lib/round.js +2 -1
  400. package/dist/lib/round.js.map +1 -1
  401. package/dist/lib/safe-storage.d.ts +24 -5
  402. package/dist/lib/safe-storage.js +27 -2
  403. package/dist/lib/safe-storage.js.map +1 -1
  404. package/dist/lib/session-refresh.js +1 -1
  405. package/dist/lib/session-refresh.js.map +1 -1
  406. package/dist/lib/share-format.d.ts +13 -0
  407. package/dist/lib/share-format.js +10 -0
  408. package/dist/lib/share-format.js.map +1 -0
  409. package/dist/lib/text-case.d.ts +17 -0
  410. package/dist/lib/text-case.js +8 -0
  411. package/dist/lib/text-case.js.map +1 -0
  412. package/dist/lib/text-match.d.ts +29 -0
  413. package/dist/lib/text-match.js +20 -2
  414. package/dist/lib/text-match.js.map +1 -1
  415. package/dist/lib/thenable.d.ts +13 -0
  416. package/dist/lib/thenable.js +8 -0
  417. package/dist/lib/thenable.js.map +1 -0
  418. package/dist/lib/translation-review.d.ts +7 -2
  419. package/dist/lib/translation-review.js +4 -4
  420. package/dist/lib/translation-review.js.map +1 -1
  421. package/dist/notifications/device-zone-report.js +1 -1
  422. package/dist/notifications/device-zone-report.js.map +1 -1
  423. package/dist/notifications/notification-bell.d.ts +2 -1
  424. package/dist/notifications/notification-bell.js +3 -3
  425. package/dist/notifications/notification-bell.js.map +1 -1
  426. package/dist/notifications/notification-inbox.d.ts +10 -6
  427. package/dist/notifications/notification-inbox.js +26 -48
  428. package/dist/notifications/notification-inbox.js.map +1 -1
  429. package/dist/notifications/notification-parts.d.ts +3 -2
  430. package/dist/notifications/notification-parts.js +1 -3
  431. package/dist/notifications/notification-parts.js.map +1 -1
  432. package/dist/notifications/notification-types-setting.js +1 -1
  433. package/dist/notifications/notification-types-setting.js.map +1 -1
  434. package/dist/notifications/notifications-labels.d.ts +6 -0
  435. package/dist/notifications/notifications-labels.js +1 -0
  436. package/dist/notifications/notifications-labels.js.map +1 -1
  437. package/dist/notifications/push-device-setting.js +1 -1
  438. package/dist/notifications/push-device-setting.js.map +1 -1
  439. package/dist/notifications/push-devices-setting.d.ts +2 -1
  440. package/dist/notifications/push-devices-setting.js +27 -49
  441. package/dist/notifications/push-devices-setting.js.map +1 -1
  442. package/dist/notifications/quiet-hours-setting.d.ts +10 -3
  443. package/dist/notifications/quiet-hours-setting.js +65 -26
  444. package/dist/notifications/quiet-hours-setting.js.map +1 -1
  445. package/dist/notifications/unsubscribe-panel.js +4 -7
  446. package/dist/notifications/unsubscribe-panel.js.map +1 -1
  447. package/dist/notifications/use-push-device.d.ts +39 -1
  448. package/dist/notifications/use-push-device.js +28 -7
  449. package/dist/notifications/use-push-device.js.map +1 -1
  450. package/dist/offline/query-persistence.d.ts +3 -1
  451. package/dist/offline/query-persistence.js +19 -2
  452. package/dist/offline/query-persistence.js.map +1 -1
  453. package/dist/rhf/fields.d.ts +11 -4
  454. package/dist/rhf/fields.js.map +1 -1
  455. package/dist/search/command-palette.js +1 -1
  456. package/dist/search/command-palette.js.map +1 -1
  457. package/dist/search/global-search.js +19 -9
  458. package/dist/search/global-search.js.map +1 -1
  459. package/dist/search/search-index.d.ts +0 -6
  460. package/dist/search/search-index.js +0 -4
  461. package/dist/search/search-index.js.map +1 -1
  462. package/dist/search/use-command-key.d.ts +12 -1
  463. package/dist/search/use-command-key.js +3 -12
  464. package/dist/search/use-command-key.js.map +1 -1
  465. package/dist/search.d.ts +1 -1
  466. package/dist/search.js +6 -1
  467. package/dist/search.js.map +1 -1
  468. package/dist/settings/use-settings-focus.js +1 -0
  469. package/dist/settings/use-settings-focus.js.map +1 -1
  470. package/dist/shell/account-menu-language.d.ts +5 -3
  471. package/dist/shell/account-menu-language.js +2 -2
  472. package/dist/shell/account-menu-language.js.map +1 -1
  473. package/dist/shell/account-menu-text-size.d.ts +9 -6
  474. package/dist/shell/account-menu-text-size.js +2 -2
  475. package/dist/shell/account-menu-text-size.js.map +1 -1
  476. package/dist/shell/app-shell.d.ts +0 -10
  477. package/dist/shell/app-shell.js +1 -7
  478. package/dist/shell/app-shell.js.map +1 -1
  479. package/dist/shell/company-switcher.d.ts +1 -1
  480. package/dist/shell/company-switcher.js.map +1 -1
  481. package/dist/shell/dev-menu.d.ts +1 -1
  482. package/dist/shell/dev-menu.js +5 -18
  483. package/dist/shell/dev-menu.js.map +1 -1
  484. package/dist/shell/top-bar-actions.d.ts +1 -1
  485. package/dist/shell/top-bar-actions.js.map +1 -1
  486. package/dist/shell/top-bar-parts-labels.d.ts +1 -3
  487. package/dist/shell/top-bar-parts-labels.js +0 -1
  488. package/dist/shell/top-bar-parts-labels.js.map +1 -1
  489. package/dist/shell.d.ts +7 -10
  490. package/dist/shell.js +14 -23
  491. package/dist/shell.js.map +1 -1
  492. package/dist/sync/engine.d.ts +30 -4
  493. package/dist/sync/engine.js +172 -52
  494. package/dist/sync/engine.js.map +1 -1
  495. package/dist/sync.d.ts +2 -2
  496. package/dist/sync.js +2 -10
  497. package/dist/sync.js.map +1 -1
  498. package/dist/testing/css-variables.js +3 -8
  499. package/dist/testing/css-variables.js.map +1 -1
  500. package/dist/theme/chart-palette.d.ts +0 -5
  501. package/dist/theme/chart-palette.js +0 -2
  502. package/dist/theme/chart-palette.js.map +1 -1
  503. package/dist/theme/contrast.d.ts +2 -1
  504. package/dist/theme/contrast.js +3 -8
  505. package/dist/theme/contrast.js.map +1 -1
  506. package/dist/theme/palette-store.js +6 -6
  507. package/dist/theme/palette-store.js.map +1 -1
  508. package/dist/theme/text-size.js +3 -8
  509. package/dist/theme/text-size.js.map +1 -1
  510. package/dist/theme/theme-store.js +3 -6
  511. package/dist/theme/theme-store.js.map +1 -1
  512. package/dist/tour/tour-catalogue.d.ts +7 -4
  513. package/dist/tour/tour-catalogue.js +12 -10
  514. package/dist/tour/tour-catalogue.js.map +1 -1
  515. package/dist/tour/tour-dock.d.ts +0 -2
  516. package/dist/tour/tour-dock.js +0 -2
  517. package/dist/tour/tour-dock.js.map +1 -1
  518. package/dist/tour/tour-gates.d.ts +4 -0
  519. package/dist/tour/tour-gates.js +14 -0
  520. package/dist/tour/tour-gates.js.map +1 -1
  521. package/dist/tour/tour-overlay.d.ts +27 -0
  522. package/dist/tour/tour-overlay.js +741 -0
  523. package/dist/tour/tour-overlay.js.map +1 -0
  524. package/dist/tour/tour.d.ts +13 -3
  525. package/dist/tour/tour.js +59 -781
  526. package/dist/tour/tour.js.map +1 -1
  527. package/dist/tour/use-tour-progress.js +1 -1
  528. package/dist/tour/use-tour-progress.js.map +1 -1
  529. package/dist/wizard/stepper-nav.d.ts +5 -1
  530. package/dist/wizard/stepper-nav.js.map +1 -1
  531. package/dist/wizard/types.d.ts +6 -2
  532. package/dist/wizard/types.js.map +1 -1
  533. package/dist/wizard/use-wizard.d.ts +3 -1
  534. package/dist/wizard/use-wizard.js.map +1 -1
  535. package/dist/wizard/validation.d.ts +3 -1
  536. package/dist/wizard/validation.js.map +1 -1
  537. package/package.json +10 -6
  538. package/src/account/account-parts.ts +5 -25
  539. package/src/account/data-export-setting-labels.ts +1 -1
  540. package/src/account/delete-account-setting-labels.ts +1 -1
  541. package/src/account/email-change-setting-labels.ts +1 -1
  542. package/src/account/passkeys-setting.tsx +60 -38
  543. package/src/account/sessions-setting.tsx +18 -12
  544. package/src/admin/admin-action-confirm.tsx +1 -5
  545. package/src/admin/admin-parts.ts +11 -25
  546. package/src/admin/mail-test-card-labels.ts +1 -1
  547. package/src/admin/plan-change-labels.ts +5 -23
  548. package/src/admin/plan-change.tsx +7 -44
  549. package/src/admin/reviewer-scope-editor.tsx +3 -3
  550. package/src/auth/auth-errors-labels.ts +23 -0
  551. package/src/auth/auth-errors.ts +11 -38
  552. package/src/auth/complete-name-dialog.tsx +4 -1
  553. package/src/auth/forgot-password-form-labels.ts +1 -1
  554. package/src/auth/forgot-password-form.tsx +11 -6
  555. package/src/auth/register-form-labels.ts +1 -1
  556. package/src/auth/reset-password-form-labels.ts +1 -1
  557. package/src/auth/reset-password-form.tsx +8 -4
  558. package/src/auth/sign-in-form-labels.ts +1 -1
  559. package/src/auth/status-parts.tsx +0 -6
  560. package/src/auth/verify-email-labels.ts +1 -1
  561. package/src/auth/verify-email.tsx +11 -6
  562. package/src/billing/cancel-subscription.tsx +15 -12
  563. package/src/billing/plan-card.tsx +18 -10
  564. package/src/billing/plan-change-labels.ts +66 -0
  565. package/src/billing/plan-switch.tsx +15 -12
  566. package/src/chart.ts +73 -6
  567. package/src/components/account-chips.tsx +20 -23
  568. package/src/components/alert-banner.tsx +82 -5
  569. package/src/components/amount-input.tsx +18 -7
  570. package/src/components/autocomplete.tsx +64 -70
  571. package/src/components/bulk-action-bar.tsx +70 -2
  572. package/src/components/button-look.ts +5 -5
  573. package/src/components/button.tsx +2 -2
  574. package/src/components/chart-edge.ts +34 -1
  575. package/src/components/chart-figure.tsx +35 -0
  576. package/src/components/chart-zoom-core.tsx +6 -5
  577. package/src/components/chart.tsx +26 -5
  578. package/src/components/combobox-core.tsx +293 -62
  579. package/src/components/combobox.tsx +183 -153
  580. package/src/components/copy-button.tsx +34 -23
  581. package/src/components/country-select.tsx +16 -11
  582. package/src/components/data-table-column-settings.tsx +52 -10
  583. package/src/components/data-table-filters.ts +6 -4
  584. package/src/components/data-table-fit.ts +19 -5
  585. package/src/components/data-table-groups.tsx +1 -1
  586. package/src/components/data-table-head.tsx +32 -22
  587. package/src/components/data-table-mobile.tsx +61 -26
  588. package/src/components/data-table-pagination.tsx +21 -6
  589. package/src/components/data-table-resize.ts +1 -1
  590. package/src/components/data-table-row-actions.tsx +3 -3
  591. package/src/components/data-table-row.tsx +25 -14
  592. package/src/components/data-table-selection.ts +1 -1
  593. package/src/components/data-table-shared.tsx +33 -1
  594. package/src/components/data-table-sort.ts +57 -2
  595. package/src/components/data-table-virtual.ts +32 -8
  596. package/src/components/data-table.tsx +239 -68
  597. package/src/components/date-field.tsx +66 -9
  598. package/src/components/date-picker.tsx +125 -49
  599. package/src/components/date-range-picker.tsx +71 -36
  600. package/src/components/error-boundary.tsx +53 -39
  601. package/src/components/field-base-labels.ts +20 -0
  602. package/src/components/field-base.tsx +13 -7
  603. package/src/components/form-actions.tsx +20 -5
  604. package/src/components/hover-menu.tsx +18 -8
  605. package/src/components/icon-button.tsx +14 -9
  606. package/src/components/inline-confirm.tsx +116 -0
  607. package/src/components/inline-entity-combobox.tsx +197 -153
  608. package/src/components/input.tsx +1 -1
  609. package/src/components/jump-calendar.tsx +30 -146
  610. package/src/components/legal-page.tsx +10 -7
  611. package/src/components/legal.tsx +4 -2
  612. package/src/components/lightbox.tsx +21 -8
  613. package/src/components/list.tsx +10 -4
  614. package/src/components/measured-grid.tsx +8 -4
  615. package/src/components/mini-calendar.tsx +6 -5
  616. package/src/components/modal.tsx +6 -1
  617. package/src/components/month-grid.tsx +229 -0
  618. package/src/components/month-picker.tsx +192 -200
  619. package/src/components/multi-select.tsx +21 -9
  620. package/src/components/nav-pills.tsx +1 -1
  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/series-chart-axes.ts +9 -4
  627. package/src/components/series-chart-labels.ts +7 -4
  628. package/src/components/series-chart.tsx +253 -87
  629. package/src/components/share-card.tsx +6 -6
  630. package/src/components/tabs-labels.ts +13 -0
  631. package/src/components/tabs.tsx +2 -2
  632. package/src/components/toggle-legend.tsx +16 -11
  633. package/src/components/translation-review-editor.tsx +6 -5
  634. package/src/components/translation-review.tsx +4 -3
  635. package/src/components/treemap-labels.ts +47 -0
  636. package/src/components/treemap-layout.ts +210 -0
  637. package/src/components/treemap.tsx +780 -138
  638. package/src/components/use-table-state.ts +12 -9
  639. package/src/data-table.ts +1 -4
  640. package/src/demo/demo-countdown.ts +3 -8
  641. package/src/eslint/role-utilities.ts +97 -19
  642. package/src/feedback/feedback-dialog.tsx +30 -19
  643. package/src/feedback/feedback-mutation.ts +20 -0
  644. package/src/feedback/feedback-page-link.ts +90 -0
  645. package/src/feedback/feedback-public-list.tsx +13 -7
  646. package/src/feedback/feedback-replies.tsx +13 -6
  647. package/src/feedback/feedback-row-detail-labels.ts +0 -3
  648. package/src/feedback/feedback-row-detail.tsx +70 -84
  649. package/src/feedback/feedback-status-undo.ts +28 -28
  650. package/src/feedback/feedback-submit-dialog.tsx +2 -2
  651. package/src/feedback/feedback-submit.tsx +21 -7
  652. package/src/feedback/feedback-swipe.tsx +1 -1
  653. package/src/feedback/feedback-table.tsx +86 -38
  654. package/src/feedback/feedback-thread-labels.ts +2 -2
  655. package/src/feedback/feedback-thread.tsx +18 -26
  656. package/src/feedback.ts +89 -6
  657. package/src/hooks/use-focus-trap.ts +8 -24
  658. package/src/hooks/use-hotkey.ts +24 -7
  659. package/src/hooks/use-long-press.ts +16 -2
  660. package/src/hooks/use-media-query.ts +20 -4
  661. package/src/hooks/use-mounted.ts +39 -0
  662. package/src/hooks/use-overlay-history.ts +32 -3
  663. package/src/i18n/defaults.ts +4 -9
  664. package/src/i18n/german.ts +8 -19
  665. package/src/i18n/kit-labels.tsx +9 -11
  666. package/src/i18n/locales/es.ts +8 -19
  667. package/src/i18n/locales/fr.ts +21 -30
  668. package/src/i18n/locales/hu.ts +10 -19
  669. package/src/i18n/locales/it.ts +8 -20
  670. package/src/i18n/locales/zh.ts +9 -19
  671. package/src/i18n/review.ts +12 -2
  672. package/src/i18n/shared-labels.ts +0 -1
  673. package/src/index.ts +57 -49
  674. package/src/landing/routing.tsx +14 -10
  675. package/src/lib/broadcast.ts +52 -0
  676. package/src/lib/date-format.ts +89 -13
  677. package/src/lib/day-format.ts +96 -0
  678. package/src/lib/describe-failure.ts +18 -0
  679. package/src/lib/direction.ts +39 -0
  680. package/src/lib/focus-left.ts +156 -0
  681. package/src/lib/format.ts +5 -17
  682. package/src/lib/http-status.ts +38 -0
  683. package/src/lib/intl-cache.ts +25 -0
  684. package/src/lib/iso-day.ts +13 -0
  685. package/src/lib/lazy-with-fallback.ts +82 -0
  686. package/src/lib/path-pattern.ts +55 -0
  687. package/src/lib/reduced-motion.ts +2 -1
  688. package/src/lib/round.ts +7 -2
  689. package/src/lib/safe-storage.ts +48 -6
  690. package/src/lib/session-refresh.ts +1 -1
  691. package/src/lib/share-format.ts +18 -0
  692. package/src/lib/text-case.ts +19 -0
  693. package/src/lib/text-match.ts +57 -2
  694. package/src/lib/thenable.ts +19 -0
  695. package/src/lib/translation-review.ts +13 -5
  696. package/src/notifications/device-zone-report.ts +1 -1
  697. package/src/notifications/notification-bell.tsx +7 -4
  698. package/src/notifications/notification-inbox.tsx +40 -58
  699. package/src/notifications/notification-parts.tsx +3 -4
  700. package/src/notifications/notification-types-setting.tsx +1 -1
  701. package/src/notifications/notifications-labels.ts +7 -0
  702. package/src/notifications/push-device-setting.tsx +1 -1
  703. package/src/notifications/push-devices-setting.tsx +30 -55
  704. package/src/notifications/quiet-hours-setting.tsx +93 -31
  705. package/src/notifications/unsubscribe-panel.tsx +4 -7
  706. package/src/notifications/use-push-device.ts +76 -10
  707. package/src/offline/query-persistence.ts +35 -3
  708. package/src/rhf/fields.tsx +11 -4
  709. package/src/search/command-palette.tsx +2 -4
  710. package/src/search/global-search.tsx +36 -15
  711. package/src/search/search-index.ts +0 -15
  712. package/src/search/use-command-key.ts +13 -12
  713. package/src/search.ts +10 -1
  714. package/src/settings/use-settings-focus.ts +3 -0
  715. package/src/shell/account-menu-language.tsx +6 -4
  716. package/src/shell/account-menu-text-size.tsx +10 -7
  717. package/src/shell/app-shell.tsx +0 -13
  718. package/src/shell/company-switcher.tsx +1 -1
  719. package/src/shell/dev-menu.tsx +8 -22
  720. package/src/shell/top-bar-actions.tsx +1 -1
  721. package/src/shell/top-bar-parts-labels.ts +1 -4
  722. package/src/shell.ts +21 -17
  723. package/src/sync/engine.ts +339 -61
  724. package/src/sync.ts +2 -8
  725. package/src/testing/css-variables.ts +8 -9
  726. package/src/theme/chart-palette.ts +0 -2
  727. package/src/theme/contrast.ts +8 -9
  728. package/src/theme/palette-store.ts +9 -9
  729. package/src/theme/text-size.ts +6 -8
  730. package/src/theme/theme-store.ts +7 -9
  731. package/src/tour/tour-catalogue.tsx +26 -15
  732. package/src/tour/tour-dock.ts +0 -2
  733. package/src/tour/tour-gates.ts +23 -0
  734. package/src/tour/tour-overlay.tsx +1170 -0
  735. package/src/tour/tour.tsx +108 -1202
  736. package/src/tour/use-tour-progress.ts +1 -1
  737. package/src/wizard/stepper-nav.tsx +3 -1
  738. package/src/wizard/types.ts +11 -2
  739. package/src/wizard/use-wizard.ts +2 -1
  740. package/src/wizard/validation.ts +8 -2
  741. package/tokens.css +6 -5
  742. package/dist/components/field-sync-labels.d.ts +0 -2
  743. package/dist/components/field-sync-labels.js +0 -12
  744. package/dist/components/field-sync-labels.js.map +0 -1
  745. package/dist/components/field-sync.d.ts +0 -164
  746. package/dist/components/field-sync.js +0 -269
  747. package/dist/components/field-sync.js.map +0 -1
  748. package/dist/components/section-nav.d.ts +0 -37
  749. package/dist/components/section-nav.js +0 -33
  750. package/dist/components/section-nav.js.map +0 -1
  751. package/dist/components/sign-chip-labels.d.ts +0 -2
  752. package/dist/components/sign-chip-labels.js +0 -11
  753. package/dist/components/sign-chip-labels.js.map +0 -1
  754. package/dist/components/sign-chip.d.ts +0 -68
  755. package/dist/components/sign-chip.js +0 -47
  756. package/dist/components/sign-chip.js.map +0 -1
  757. package/dist/components/ui-labels.js.map +0 -1
  758. package/dist/lib/isin.d.ts +0 -28
  759. package/dist/lib/isin.js +0 -36
  760. package/dist/lib/isin.js.map +0 -1
  761. package/dist/shell/dev-switchers.d.ts +0 -6
  762. package/dist/shell/dev-switchers.js +0 -12
  763. package/dist/shell/dev-switchers.js.map +0 -1
  764. package/dist/shell/role-switcher.d.ts +0 -21
  765. package/dist/shell/role-switcher.js +0 -31
  766. package/dist/shell/role-switcher.js.map +0 -1
  767. package/src/components/field-sync-labels.ts +0 -13
  768. package/src/components/field-sync.tsx +0 -482
  769. package/src/components/section-nav.tsx +0 -65
  770. package/src/components/sign-chip-labels.ts +0 -12
  771. package/src/components/sign-chip.tsx +0 -124
  772. package/src/components/ui-labels.ts +0 -24
  773. package/src/lib/isin.ts +0 -62
  774. package/src/shell/dev-switchers.tsx +0 -18
  775. package/src/shell/role-switcher.tsx +0 -46
@@ -0,0 +1,13 @@
1
+ // The English words of ./tabs, in a module with no component code: the English catalogue
2
+ // (src/i18n/defaults.ts) imports them without the component, so `en` loads as one chunk
3
+ // like the other languages (0.34, KS U8). ./tabs re-exports them. (In ui-labels.ts with the
4
+ // field base's until 0.52, MOD-7.)
5
+
6
+ import type { TabsLabels } from "./tabs";
7
+
8
+ export const DEFAULT_TABS_LABELS: TabsLabels = {
9
+ add: "Add tab",
10
+ remove: (tab) => `Remove ${tab}`,
11
+ more: "More tabs",
12
+ previous: "Previous tabs",
13
+ };
@@ -9,7 +9,7 @@ import { usePhoneLayout } from "../hooks/use-breakpoint";
9
9
  import { prefersReducedMotion } from "../lib/reduced-motion";
10
10
  import { useKitLabels, type LabelOverride } from "../i18n/kit-labels";
11
11
  import { mergeRefs } from "./field-parts";
12
- import { DEFAULT_TABS_LABELS } from "./ui-labels";
12
+ import { DEFAULT_TABS_LABELS } from "./tabs-labels";
13
13
  import { IconButton } from "./icon-button";
14
14
  import { HIT_AREA_LARGE } from "./button-look";
15
15
 
@@ -55,7 +55,7 @@ export interface TabsLabels {
55
55
  previous: string;
56
56
  }
57
57
 
58
- // Defined in ./ui-labels, which holds no component code (0.34, KS U8).
58
+ // Defined in ./tabs-labels, which holds no component code (0.34, KS U8).
59
59
  export { DEFAULT_TABS_LABELS };
60
60
 
61
61
  /**
@@ -123,7 +123,7 @@ export interface LegendEntry {
123
123
  }
124
124
 
125
125
  export interface ToggleLegendProps {
126
- entries: LegendEntry[];
126
+ entries: readonly LegendEntry[];
127
127
  /** The keys currently off the chart. */
128
128
  hidden: ReadonlySet<string>;
129
129
  onToggle: (key: string) => void;
@@ -198,12 +198,15 @@ export function ToggleLegend({
198
198
  className={cn(
199
199
  "flex items-center gap-1.5 rounded text-start text-caption text-secondary transition-opacity hover:opacity-80",
200
200
  FOCUS_RING,
201
- off && "opacity-35",
202
201
  entry.align === "end" && "ms-auto",
203
202
  )}
204
203
  >
205
204
  <LegendMark entry={entry} off={off} />
206
- {entry.label}
205
+ {/* Off, the label keeps its ink and is struck through; only the mark fades
206
+ (0.52, refactor audit 2026-10-30, DSP-9). The whole entry at 35 % put the
207
+ label at 1.8:1 — on a button that brings the series back, whose label is
208
+ the only thing saying which one. `aria-pressed` carries the state. */}
209
+ <span className={cn(off && "line-through")}>{entry.label}</span>
207
210
  </button>
208
211
  );
209
212
  })}
@@ -212,7 +215,7 @@ export function ToggleLegend({
212
215
  }
213
216
 
214
217
  export interface StaticLegendProps {
215
- entries: LegendEntry[];
218
+ entries: readonly LegendEntry[];
216
219
  /** See {@link ToggleLegendProps.orientation}. */
217
220
  orientation?: "horizontal" | "vertical";
218
221
  /** The list's accessible name. Default: the `seriesChart.legend` label. */
@@ -338,13 +341,15 @@ export function LegendGroup({ title, children }: { title: ReactNode; children: R
338
341
  * A stroke is an SVG line with the chart's own `strokeDasharray`, not a CSS gradient
339
342
  * approximating it: a gradient can say "solid or dashed" and nothing more.
340
343
  *
341
- * A hidden stroke is NOT faded here: the button around it already is (`opacity-35`),
342
- * and the line used to take its own 0.35 on top — 0.35 × 0.35, about 12 %, a mark
343
- * gone rather than dimmed, while the square beside it read at the full 35 %. */
344
+ * A hidden mark fades ONCE, on its own box (`opacity-35`; since 0.52 the label beside
345
+ * it keeps its ink, DSP-9). The line used to take its own 0.35 inside a faded button —
346
+ * 0.35 × 0.35, about 12 %, a mark gone rather than dimmed, while the square beside it
347
+ * read at the full 35 %. */
344
348
  function LegendMark({ entry, off }: { entry: LegendEntry; off: boolean }) {
349
+ const fade = off && "opacity-35";
345
350
  if (entry.icon != null) {
346
351
  return (
347
- <span aria-hidden className="inline-flex shrink-0 items-center">
352
+ <span aria-hidden className={cn("inline-flex shrink-0 items-center", fade)}>
348
353
  {entry.icon}
349
354
  </span>
350
355
  );
@@ -353,7 +358,7 @@ function LegendMark({ entry, off }: { entry: LegendEntry; off: boolean }) {
353
358
  return (
354
359
  <span
355
360
  aria-hidden
356
- className="size-2 shrink-0 rounded-full"
361
+ className={cn("size-2 shrink-0 rounded-full", fade)}
357
362
  style={{
358
363
  backgroundColor: off ? "transparent" : entry.color,
359
364
  boxShadow: `inset 0 0 0 1.5px ${entry.color}`,
@@ -363,7 +368,7 @@ function LegendMark({ entry, off }: { entry: LegendEntry; off: boolean }) {
363
368
  }
364
369
  if (entry.marker === "stroke") {
365
370
  return (
366
- <svg aria-hidden viewBox="0 0 20 2" className="h-0.5 w-5 shrink-0 overflow-visible">
371
+ <svg aria-hidden viewBox="0 0 20 2" className={cn("h-0.5 w-5 shrink-0 overflow-visible", fade)}>
367
372
  <line
368
373
  x1={0}
369
374
  y1={1}
@@ -379,7 +384,7 @@ function LegendMark({ entry, off }: { entry: LegendEntry; off: boolean }) {
379
384
  return (
380
385
  <span
381
386
  aria-hidden
382
- className="h-2.5 w-2.5 shrink-0 rounded-[3px]"
387
+ className={cn("h-2.5 w-2.5 shrink-0 rounded-[3px]", fade)}
383
388
  style={{
384
389
  backgroundColor: off ? "transparent" : entry.color,
385
390
  boxShadow: `inset 0 0 0 1.5px ${entry.color}`,
@@ -3,7 +3,7 @@ import type { ReactNode } from "react";
3
3
 
4
4
  import { useKitLabels, type LabelOverride } from "../i18n/kit-labels";
5
5
  import { cn } from "../lib/cn";
6
- import { useKitFormat } from "../lib/format";
6
+ import { useDayFormatter } from "../lib/day-format";
7
7
  import { placeholderTokens, reviewWrite } from "../lib/translation-review";
8
8
  import type {
9
9
  TranslationReviewKey,
@@ -48,8 +48,10 @@ export interface TranslationReviewEditorProps {
48
48
  * opened by a tap — that one may only be opened to read.
49
49
  */
50
50
  focusWording?: boolean;
51
- /** How the verdict's date reads. Default: the kit's `formatDate`, medium, in the
52
- * provider's locale. */
51
+ /** How the verdict's date reads. Default (0.52): the `<UiKitProvider formatDate>` when
52
+ * the app set one (its date preference; the day sits in a sentence, so no weekday), else
53
+ * the kit's `formatDate`, medium, in the provider's locale and `timeZone`. An empty
54
+ * answer falls back to the kit's. */
53
55
  formatDate?: (iso: string) => string;
54
56
  /** Turns a rejection into words. Default {@link TranslationReviewLabels.failed}. */
55
57
  formatError?: (error: unknown) => ReactNode;
@@ -106,7 +108,7 @@ export function TranslationReviewEditor({
106
108
  labels: labelsProp,
107
109
  }: TranslationReviewEditorProps) {
108
110
  const labels = useKitLabels("translationReview", DEFAULT_TRANSLATION_REVIEW_LABELS, labelsProp);
109
- const { formatDate } = useKitFormat();
111
+ const date = useDayFormatter(formatDateProp);
110
112
  const review = row.review;
111
113
  const missing = row.text === "";
112
114
  const editable = !readOnly && onSave !== undefined;
@@ -127,7 +129,6 @@ export function TranslationReviewEditor({
127
129
 
128
130
  const canFlag = note.trim() !== "" || suggestion.trim() !== row.text.trim();
129
131
  const changed = row.status === "changed" ? review : null;
130
- const date = (iso: string) => (formatDateProp ? formatDateProp(iso) : formatDate(iso, "medium"));
131
132
 
132
133
  const run = async (kind: "approve" | "flag" | "clear", action: () => MaybePromise) => {
133
134
  setBusy(kind);
@@ -181,7 +181,8 @@ export interface TranslationReviewPanelProps {
181
181
  * kit's, which an app listing what it stores had to list as its own (KS U4).
182
182
  */
183
183
  storageKeyPrefix?: string;
184
- /** How a verdict's date reads in the editor. */
184
+ /** How a verdict's date reads in the editor. Default: the editor's — the
185
+ * `<UiKitProvider formatDate>`, else the kit's medium date (0.52). */
185
186
  formatDate?: (iso: string) => string;
186
187
  /** Turns a callback's rejection into words. Default {@link TranslationReviewLabels.failed}. */
187
188
  formatError?: (error: unknown) => ReactNode;
@@ -561,8 +562,8 @@ export function TranslationReviewPanel({
561
562
  // `filter` is rebuilt every render; its fields are what the list depends on.
562
563
  const { status, query, placeholdersOnly } = filter;
563
564
  const visible = useMemo(
564
- () => filterTranslationRows(rows, { status, source, namespace, query, placeholdersOnly }),
565
- [rows, status, source, namespace, query, placeholdersOnly],
565
+ () => filterTranslationRows(rows, { status, source, namespace, query, placeholdersOnly }, locale),
566
+ [rows, status, source, namespace, query, placeholdersOnly, locale],
566
567
  );
567
568
 
568
569
  // ── Groups ──
@@ -0,0 +1,47 @@
1
+ // All user-facing strings for `Treemap`, as the `treemap` namespace of
2
+ // `<UiKitProvider labels>`, and per map the `labels` prop over that (0.52, refactor audit
3
+ // 2026-10-30, DSP-5).
4
+ //
5
+ // A module of its own, with no recharts in it, for the reason `pie-chart-labels` is one:
6
+ // the label registry (src/i18n) imports the defaults, and must not pull the chart
7
+ // library in behind them.
8
+
9
+ export interface TreemapLabels {
10
+ /**
11
+ * One tile's accessible name — what a screen reader says for a tile, clickable or
12
+ * not, since its area is nothing it can say. `value` arrives through the map's
13
+ * `valueFormatter` when that returns text, else as the number in the provider's
14
+ * locale; `share` is the tile's share of what is drawn, already a formatted percent
15
+ * ("60 %" in German, "60%" in English) — the function only arranges them.
16
+ *
17
+ * `share` is `""` when the map's `shareInValue` says the formatter's text already holds
18
+ * it (0.53): leave out whatever frames it, as every catalogue drops its " (share)" —
19
+ * "Migros: CHF 412.30 · 12%", not "… · 12% ()".
20
+ */
21
+ tile: (name: string, value: string, share: string) => string;
22
+ /**
23
+ * A group's accessible name (0.52, `TreemapNode.children`): its frame is a stop of the
24
+ * map's keyboard before its tiles, so a reader hears the group and its total once, on the
25
+ * way in. `value` and `share` as for {@link TreemapLabels.tile}, of the group's tiles
26
+ * together, the share `""` under `shareInValue` as there; the word "group" tells it from
27
+ * a tile of the same shape.
28
+ */
29
+ group: (name: string, value: string, share: string) => string;
30
+ /**
31
+ * A name inside a group: `name` is the tile's (or a nested group's) own, from
32
+ * {@link TreemapLabels.tile} or {@link TreemapLabels.group}, and `group` the name of the
33
+ * group round it — applied once per group, the innermost first, so a tile two levels deep
34
+ * reads "Rent: 1,050 (40%), in Housing, in Fixed costs". In the name rather than said once
35
+ * by the frame, because Home, End and a click land on a tile without passing its frame.
36
+ */
37
+ inGroup: (name: string, group: string) => string;
38
+ }
39
+
40
+ // The share in brackets only when there is one: `""` under the map's `shareInValue` (0.53,
41
+ // keksdose after 0.52), which the catalogues in src/i18n/locales follow, each in its own
42
+ // typography.
43
+ export const DEFAULT_TREEMAP_LABELS: TreemapLabels = {
44
+ tile: (name, value, share) => `${name}: ${value}${share ? ` (${share})` : ""}`,
45
+ group: (name, value, share) => `${name}, group: ${value}${share ? ` (${share})` : ""}`,
46
+ inGroup: (name, group) => `${name}, in ${group}`,
47
+ };
@@ -0,0 +1,210 @@
1
+ // Where `Treemap` draws each node — a pure function of the nodes, the chart's size and the
2
+ // text size, with no recharts in it (0.52 code review of treemap.tsx, findings 1 and 8).
3
+ //
4
+ // recharts lays nested data out itself, edge to edge, and 0.52 first made the groups' room
5
+ // afterwards: a group's cell took its band and margin out of its rectangle and each child's
6
+ // cell SQUEEZED the rectangle recharts gave it into what was left. Two faults followed.
7
+ // A fixed 23px is a different share of every group, so a €100 tile in a 61px group was
8
+ // drawn at two thirds of a €100 tile in a 300px one — in a chart whose one promise is that
9
+ // area is share. And the squeeze ran through a cache the group's cell wrote during render
10
+ // for its children's cells to read, which held only because recharts renders a group
11
+ // before its children.
12
+ //
13
+ // So the layout is made here, up front: squarified as recharts does it, with each group
14
+ // asking for its tiles' area PLUS its frame's, and its tiles laid out in its body. A
15
+ // frame's area depends on the rectangle it gets, so the layout is run again with each
16
+ // group's frame as measured until no frame moves by a pixel — two or three rounds.
17
+
18
+ export interface Box {
19
+ x: number;
20
+ y: number;
21
+ width: number;
22
+ height: number;
23
+ }
24
+
25
+ /** What the layout needs of a node: its key, its value, and a group's nodes. */
26
+ export interface LayoutNode {
27
+ path: string;
28
+ size: number;
29
+ children?: readonly LayoutNode[];
30
+ }
31
+
32
+ /** A node as drawn: its rectangle, and for a group the body its nodes fill and whether
33
+ * its band is drawn. Whole pixels, on shared edges, so neighbours meet without a seam. */
34
+ export interface Placed {
35
+ box: Box;
36
+ body?: Box;
37
+ banded?: boolean;
38
+ }
39
+
40
+ const PHI = (1 + Math.sqrt(5)) / 2;
41
+
42
+ /**
43
+ * A group's band, in px at Normal, × the text size's scale: the 20px floor a tile keeps
44
+ * for its own name, so the group's name sits in it as a tile's does in a tile.
45
+ */
46
+ export const BAND = 20;
47
+ /**
48
+ * The frame's margin round its body, in px. Each tile keeps its 2px gutter, half of it
49
+ * inside the tile, so 3 leaves one pixel of the frame's own colour between the group's
50
+ * gutter and its tiles' — the frame reads as one outline round the group, not as a gutter
51
+ * that happens to be wider.
52
+ */
53
+ export const FRAME_MARGIN = 3;
54
+ /**
55
+ * The least of a group's height its body keeps under the band: 1/φ. At Normal that is a
56
+ * group of 61px (20 band + 3 margin = 0.382 of it), whose body of 38px still holds a
57
+ * tile's name and its second line (the note's 36px floor) — so a single row of tiles under
58
+ * the band keeps both. A smaller group draws no band, and its name is in its tiles'
59
+ * accessible names and its tooltip rather than over their area. Since the frame's area is
60
+ * given to the group (above), this bounds the frame's share of the picture, not the tiles'.
61
+ */
62
+ export const BODY_SHARE = 1 / PHI;
63
+
64
+ /** A group drawn at `box`: whether it has the room for its band (see {@link BODY_SHARE};
65
+ * and 44px across, the floor of a word), and the body its nodes are drawn into. */
66
+ export function groupBody(box: Box, scale: number): { banded: boolean; body: Box } {
67
+ const band = BAND * scale;
68
+ const margin = Math.min(FRAME_MARGIN, Math.floor(box.width / 4), Math.floor(box.height / 4));
69
+ const banded = box.width >= 44 * scale && box.height - band - margin >= box.height * BODY_SHARE;
70
+ const top = banded ? band : margin;
71
+ return {
72
+ banded,
73
+ body: {
74
+ x: box.x + margin,
75
+ y: box.y + top,
76
+ width: Math.max(0, box.width - 2 * margin),
77
+ height: Math.max(0, box.height - top - margin),
78
+ },
79
+ };
80
+ }
81
+
82
+ /** The worst aspect ratio in a row of `area` along `side`, against the target `ratio`. */
83
+ function worst(area: number, min: number, max: number, side: number, ratio: number): number {
84
+ const along = side * side;
85
+ const across = area * area;
86
+ if (across === 0 || min === 0) return Infinity;
87
+ return Math.max((along * max * ratio) / across, across / (along * min * ratio));
88
+ }
89
+
90
+ /**
91
+ * Bruls, Huizing and van Wijk's squarified layout, as recharts runs it: `weights` share
92
+ * out `rect` in order, a row at a time along its shorter side, and a row closes when the
93
+ * next node would make its worst tile further from φ:1 (recharts' default ratio). Returns
94
+ * one rectangle per weight, in order, in fractional pixels.
95
+ */
96
+ export function squarify(weights: readonly number[], rect: Box, ratio = PHI): Box[] {
97
+ const out: Box[] = weights.map(() => ({ x: rect.x, y: rect.y, width: 0, height: 0 }));
98
+ const sum = weights.reduce((acc, w) => acc + Math.max(0, w), 0);
99
+ if (!(sum > 0) || rect.width <= 0 || rect.height <= 0) return out;
100
+ const areas = weights.map((w) => (Math.max(0, w) * rect.width * rect.height) / sum);
101
+ let { x, y, width, height } = rect;
102
+ let i = 0;
103
+ while (i < areas.length) {
104
+ const side = Math.min(width, height);
105
+ let rowArea = 0;
106
+ let min = Infinity;
107
+ let max = 0;
108
+ let best = Infinity;
109
+ let j = i;
110
+ while (j < areas.length) {
111
+ const a = areas[j]!;
112
+ const score = worst(rowArea + a, Math.min(min, a), Math.max(max, a), side, ratio);
113
+ if (j > i && score > best) break;
114
+ rowArea += a;
115
+ min = Math.min(min, a);
116
+ max = Math.max(max, a);
117
+ best = score;
118
+ j += 1;
119
+ }
120
+ // The last row takes what is left, so rounding never leaves a sliver unpainted.
121
+ const last = j === areas.length;
122
+ if (side === width) {
123
+ // A row along the top, as wide as the space.
124
+ const thick = last ? height : rowArea / width;
125
+ let at = x;
126
+ for (let k = i; k < j; k++) {
127
+ const len = k === j - 1 ? x + width - at : (areas[k]! / rowArea) * width;
128
+ out[k] = { x: at, y, width: len, height: thick };
129
+ at += len;
130
+ }
131
+ y += thick;
132
+ height -= thick;
133
+ } else {
134
+ // A column at the left, as tall as the space.
135
+ const thick = last ? width : rowArea / height;
136
+ let at = y;
137
+ for (let k = i; k < j; k++) {
138
+ const len = k === j - 1 ? y + height - at : (areas[k]! / rowArea) * height;
139
+ out[k] = { x, y: at, width: thick, height: len };
140
+ at += len;
141
+ }
142
+ x += thick;
143
+ width -= thick;
144
+ }
145
+ i = j;
146
+ }
147
+ return out;
148
+ }
149
+
150
+ /** Whole pixels on the EDGES: neighbours share an edge, so they round it alike. */
151
+ function snap(b: Box): Box {
152
+ const x = Math.round(b.x);
153
+ const y = Math.round(b.y);
154
+ return { x, y, width: Math.round(b.x + b.width) - x, height: Math.round(b.y + b.height) - y };
155
+ }
156
+
157
+ /** The rounds the frames get to settle; three is usual, more only when a band switches. */
158
+ const ROUNDS = 8;
159
+
160
+ /**
161
+ * Every node of `nodes` placed in a `width` × `height` chart, by path.
162
+ *
163
+ * Each tile's area is its value's share of what is left for tiles once the frames have
164
+ * theirs — the same density in every group and at the top. A group asks for its tiles'
165
+ * area and its own frame's (band and margin, as {@link groupBody} measures them on the
166
+ * rectangle it got last round), so its body holds exactly its tiles.
167
+ */
168
+ export function layoutTreemap(
169
+ nodes: readonly LayoutNode[],
170
+ width: number,
171
+ height: number,
172
+ scale: number,
173
+ ): Map<string, Placed> {
174
+ const total = nodes.reduce((acc, n) => acc + n.size, 0);
175
+ const frames = new Map<string, number>();
176
+ let placed = new Map<string, Placed>();
177
+ for (let round = 0; round < ROUNDS; round++) {
178
+ const framed = [...frames.values()].reduce((acc, a) => acc + a, 0);
179
+ const spare = width * height - framed;
180
+ // Frames that would take the whole chart (a tiny chart of many groups) leave nothing
181
+ // to share; the tiles then take the density they would have without frames.
182
+ const density = total > 0 ? (spare > 0 ? spare : width * height) / total : 0;
183
+ const need = (n: LayoutNode): number =>
184
+ n.children ? (frames.get(n.path) ?? 0) + n.children.reduce((acc, c) => acc + need(c), 0) : n.size * density;
185
+ let moved = 0;
186
+ placed = new Map();
187
+ const place = (list: readonly LayoutNode[], rect: Box) => {
188
+ const boxes = squarify(
189
+ list.map((n) => need(n)),
190
+ rect,
191
+ );
192
+ list.forEach((n, i) => {
193
+ const box = snap(boxes[i]!);
194
+ if (!n.children) {
195
+ placed.set(n.path, { box });
196
+ return;
197
+ }
198
+ const { banded, body } = groupBody(box, scale);
199
+ placed.set(n.path, { box, body, banded });
200
+ const frame = box.width * box.height - body.width * body.height;
201
+ moved = Math.max(moved, Math.abs(frame - (frames.get(n.path) ?? 0)));
202
+ frames.set(n.path, frame);
203
+ place(n.children, body);
204
+ });
205
+ };
206
+ place(nodes, { x: 0, y: 0, width, height });
207
+ if (moved < 1) break;
208
+ }
209
+ return placed;
210
+ }