@eifi1/ui-kit 0.53.0 → 0.55.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 (902) hide show
  1. package/README.md +96 -82
  2. package/dist/account/delete-account-setting.d.ts +3 -2
  3. package/dist/account/delete-account-setting.js.map +1 -1
  4. package/dist/admin/plan-change.js +2 -2
  5. package/dist/admin/plan-change.js.map +1 -1
  6. package/dist/admin/user-roster.d.ts +6 -0
  7. package/dist/admin/user-roster.js +4 -0
  8. package/dist/admin/user-roster.js.map +1 -1
  9. package/dist/auth/auth-errors.d.ts +36 -0
  10. package/dist/auth/auth-errors.js +20 -0
  11. package/dist/auth/auth-errors.js.map +1 -1
  12. package/dist/billing/billing-labels.d.ts +26 -0
  13. package/dist/billing/billing-labels.js +9 -0
  14. package/dist/billing/billing-labels.js.map +1 -1
  15. package/dist/billing/subscription-standing.d.ts +61 -0
  16. package/dist/billing/subscription-standing.js +51 -0
  17. package/dist/billing/subscription-standing.js.map +1 -0
  18. package/dist/billing/usage-meter.d.ts +52 -0
  19. package/dist/billing/usage-meter.js +52 -0
  20. package/dist/billing/usage-meter.js.map +1 -0
  21. package/dist/chart.d.ts +1 -0
  22. package/dist/chart.js +4 -0
  23. package/dist/chart.js.map +1 -1
  24. package/dist/components/alert-banner.js +2 -3
  25. package/dist/components/alert-banner.js.map +1 -1
  26. package/dist/components/amount-input.d.ts +2 -1
  27. package/dist/components/amount-input.js +3 -15
  28. package/dist/components/amount-input.js.map +1 -1
  29. package/dist/components/autocomplete.js +2 -2
  30. package/dist/components/autocomplete.js.map +1 -1
  31. package/dist/components/bulk-action-bar.js +2 -1
  32. package/dist/components/bulk-action-bar.js.map +1 -1
  33. package/dist/components/button.d.ts +35 -1
  34. package/dist/components/button.js +5 -9
  35. package/dist/components/button.js.map +1 -1
  36. package/dist/components/calendar-heatmap.js +6 -4
  37. package/dist/components/calendar-heatmap.js.map +1 -1
  38. package/dist/components/camera-button.d.ts +89 -0
  39. package/dist/components/camera-button.js +122 -0
  40. package/dist/components/camera-button.js.map +1 -0
  41. package/dist/components/camera-capture.d.ts +66 -0
  42. package/dist/components/camera-capture.js +190 -0
  43. package/dist/components/camera-capture.js.map +1 -0
  44. package/dist/components/camera-labels.d.ts +20 -0
  45. package/dist/components/camera-labels.js +15 -0
  46. package/dist/components/camera-labels.js.map +1 -0
  47. package/dist/components/chart-edge.d.ts +9 -0
  48. package/dist/components/chart-edge.js +14 -3
  49. package/dist/components/chart-edge.js.map +1 -1
  50. package/dist/components/chart-zoom-core.js +34 -29
  51. package/dist/components/chart-zoom-core.js.map +1 -1
  52. package/dist/components/checkbox-group.js +1 -1
  53. package/dist/components/checkbox-group.js.map +1 -1
  54. package/dist/components/combobox-core.js +3 -2
  55. package/dist/components/combobox-core.js.map +1 -1
  56. package/dist/components/combobox.js +2 -2
  57. package/dist/components/combobox.js.map +1 -1
  58. package/dist/components/consent-again-notice-labels.d.ts +25 -0
  59. package/dist/components/consent-again-notice-labels.js +15 -0
  60. package/dist/components/consent-again-notice-labels.js.map +1 -0
  61. package/dist/components/consent-again-notice.d.ts +85 -0
  62. package/dist/components/consent-again-notice.js +94 -0
  63. package/dist/components/consent-again-notice.js.map +1 -0
  64. package/dist/components/country-select.js +2 -7
  65. package/dist/components/country-select.js.map +1 -1
  66. package/dist/components/currency-option-list.d.ts +2 -1
  67. package/dist/components/currency-option-list.js +10 -3
  68. package/dist/components/currency-option-list.js.map +1 -1
  69. package/dist/components/currency-select.d.ts +3 -1
  70. package/dist/components/currency-select.js +2 -2
  71. package/dist/components/currency-select.js.map +1 -1
  72. package/dist/components/danger-confirm.d.ts +22 -1
  73. package/dist/components/danger-confirm.js +52 -30
  74. package/dist/components/danger-confirm.js.map +1 -1
  75. package/dist/components/data-table-column-settings.js +2 -2
  76. package/dist/components/data-table-column-settings.js.map +1 -1
  77. package/dist/components/data-table-filter-popover.d.ts +2 -1
  78. package/dist/components/data-table-filter-popover.js +3 -2
  79. package/dist/components/data-table-filter-popover.js.map +1 -1
  80. package/dist/components/data-table-filters.d.ts +33 -3
  81. package/dist/components/data-table-filters.js +6 -4
  82. package/dist/components/data-table-filters.js.map +1 -1
  83. package/dist/components/data-table-fit.js.map +1 -1
  84. package/dist/components/data-table-virtual.js +13 -3
  85. package/dist/components/data-table-virtual.js.map +1 -1
  86. package/dist/components/date-field.js +2 -2
  87. package/dist/components/date-field.js.map +1 -1
  88. package/dist/components/date-picker.js +2 -2
  89. package/dist/components/date-picker.js.map +1 -1
  90. package/dist/components/date-range-picker.js +2 -6
  91. package/dist/components/date-range-picker.js.map +1 -1
  92. package/dist/components/dialog-frame.d.ts +5 -1
  93. package/dist/components/dialog-frame.js +6 -2
  94. package/dist/components/dialog-frame.js.map +1 -1
  95. package/dist/components/dropdown.js +7 -3
  96. package/dist/components/dropdown.js.map +1 -1
  97. package/dist/components/entity-combobox.js +2 -2
  98. package/dist/components/entity-combobox.js.map +1 -1
  99. package/dist/components/field-parts.d.ts +108 -6
  100. package/dist/components/field-parts.js +59 -6
  101. package/dist/components/field-parts.js.map +1 -1
  102. package/dist/components/field-suggestion-labels.d.ts +2 -0
  103. package/dist/components/field-suggestion-labels.js +10 -0
  104. package/dist/components/field-suggestion-labels.js.map +1 -0
  105. package/dist/components/field.js +1 -1
  106. package/dist/components/field.js.map +1 -1
  107. package/dist/components/file-button.d.ts +1 -1
  108. package/dist/components/file-button.js.map +1 -1
  109. package/dist/components/floating-panel.d.ts +7 -6
  110. package/dist/components/floating-panel.js +3 -17
  111. package/dist/components/floating-panel.js.map +1 -1
  112. package/dist/components/form-actions.d.ts +3 -2
  113. package/dist/components/form-actions.js.map +1 -1
  114. package/dist/components/hover-menu.js +3 -2
  115. package/dist/components/hover-menu.js.map +1 -1
  116. package/dist/components/icon-button.d.ts +23 -5
  117. package/dist/components/icon-button.js +6 -8
  118. package/dist/components/icon-button.js.map +1 -1
  119. package/dist/components/inline-confirm.js +2 -1
  120. package/dist/components/inline-confirm.js.map +1 -1
  121. package/dist/components/inline-entity-combobox.js +2 -2
  122. package/dist/components/inline-entity-combobox.js.map +1 -1
  123. package/dist/components/input.js +2 -2
  124. package/dist/components/input.js.map +1 -1
  125. package/dist/components/jump-calendar.js +3 -3
  126. package/dist/components/jump-calendar.js.map +1 -1
  127. package/dist/components/legal.d.ts +13 -1
  128. package/dist/components/legal.js +12 -0
  129. package/dist/components/legal.js.map +1 -1
  130. package/dist/components/legended-series-chart.d.ts +80 -0
  131. package/dist/components/legended-series-chart.js +70 -0
  132. package/dist/components/legended-series-chart.js.map +1 -0
  133. package/dist/components/lightbox.js +2 -1
  134. package/dist/components/lightbox.js.map +1 -1
  135. package/dist/components/mini-calendar.js +16 -7
  136. package/dist/components/mini-calendar.js.map +1 -1
  137. package/dist/components/modal.d.ts +48 -0
  138. package/dist/components/modal.js +26 -6
  139. package/dist/components/modal.js.map +1 -1
  140. package/dist/components/month-picker.d.ts +1 -1
  141. package/dist/components/month-picker.js +6 -6
  142. package/dist/components/month-picker.js.map +1 -1
  143. package/dist/components/multi-entity-combobox.js +2 -2
  144. package/dist/components/multi-entity-combobox.js.map +1 -1
  145. package/dist/components/multi-select.js +2 -6
  146. package/dist/components/multi-select.js.map +1 -1
  147. package/dist/components/number-input.js +2 -2
  148. package/dist/components/number-input.js.map +1 -1
  149. package/dist/components/page-header-layout.d.ts +18 -0
  150. package/dist/components/page-header-layout.js +23 -0
  151. package/dist/components/page-header-layout.js.map +1 -0
  152. package/dist/components/page-header-skeleton.d.ts +41 -0
  153. package/dist/components/page-header-skeleton.js +52 -0
  154. package/dist/components/page-header-skeleton.js.map +1 -0
  155. package/dist/components/page-header.js +4 -17
  156. package/dist/components/page-header.js.map +1 -1
  157. package/dist/components/popover.js +7 -2
  158. package/dist/components/popover.js.map +1 -1
  159. package/dist/components/release-notes-labels.d.ts +16 -0
  160. package/dist/components/release-notes-labels.js +18 -0
  161. package/dist/components/release-notes-labels.js.map +1 -0
  162. package/dist/components/release-notes.d.ts +65 -0
  163. package/dist/components/release-notes.js +65 -0
  164. package/dist/components/release-notes.js.map +1 -0
  165. package/dist/components/select.js +2 -2
  166. package/dist/components/select.js.map +1 -1
  167. package/dist/components/series-chart-labels.d.ts +9 -0
  168. package/dist/components/series-chart-labels.js +3 -1
  169. package/dist/components/series-chart-labels.js.map +1 -1
  170. package/dist/components/series-chart.d.ts +5 -0
  171. package/dist/components/series-chart.js +89 -36
  172. package/dist/components/series-chart.js.map +1 -1
  173. package/dist/components/stat-tile.d.ts +21 -2
  174. package/dist/components/stat-tile.js +4 -2
  175. package/dist/components/stat-tile.js.map +1 -1
  176. package/dist/components/toggle-group.js +3 -2
  177. package/dist/components/toggle-group.js.map +1 -1
  178. package/dist/components/treemap-layout.js.map +1 -1
  179. package/dist/components/treemap.d.ts +17 -15
  180. package/dist/components/treemap.js +167 -85
  181. package/dist/components/treemap.js.map +1 -1
  182. package/dist/currencies.d.ts +16 -2
  183. package/dist/currencies.js +2 -1
  184. package/dist/currencies.js.map +1 -1
  185. package/dist/eslint/index.js +1 -1
  186. package/dist/eslint/role-utilities.d.ts +2 -2
  187. package/dist/eslint/role-utilities.js.map +1 -1
  188. package/dist/feedback/feedback-context-labels.js +2 -1
  189. package/dist/feedback/feedback-context-labels.js.map +1 -1
  190. package/dist/feedback/feedback-context.d.ts +19 -3
  191. package/dist/feedback/feedback-context.js +12 -1
  192. package/dist/feedback/feedback-context.js.map +1 -1
  193. package/dist/feedback/feedback-diagnostics.d.ts +17 -0
  194. package/dist/feedback/feedback-diagnostics.js +27 -0
  195. package/dist/feedback/feedback-diagnostics.js.map +1 -0
  196. package/dist/feedback/feedback-dialog.d.ts +10 -0
  197. package/dist/feedback/feedback-dialog.js +6 -4
  198. package/dist/feedback/feedback-dialog.js.map +1 -1
  199. package/dist/feedback/feedback-inbox-page.d.ts +260 -0
  200. package/dist/feedback/feedback-inbox-page.js +207 -0
  201. package/dist/feedback/feedback-inbox-page.js.map +1 -0
  202. package/dist/feedback/feedback-record.d.ts +5 -0
  203. package/dist/feedback/feedback-record.js.map +1 -1
  204. package/dist/feedback/feedback-row-detail-labels.js +1 -0
  205. package/dist/feedback/feedback-row-detail-labels.js.map +1 -1
  206. package/dist/feedback/feedback-row-detail.d.ts +3 -0
  207. package/dist/feedback/feedback-row-detail.js +3 -0
  208. package/dist/feedback/feedback-row-detail.js.map +1 -1
  209. package/dist/feedback/feedback-submit-dialog.d.ts +5 -1
  210. package/dist/feedback/feedback-submit-dialog.js +15 -3
  211. package/dist/feedback/feedback-submit-dialog.js.map +1 -1
  212. package/dist/feedback/feedback-submit.d.ts +30 -2
  213. package/dist/feedback/feedback-submit.js +5 -2
  214. package/dist/feedback/feedback-submit.js.map +1 -1
  215. package/dist/feedback/feedback-vocabulary.js +2 -2
  216. package/dist/feedback/feedback-vocabulary.js.map +1 -1
  217. package/dist/feedback.d.ts +1 -0
  218. package/dist/feedback.js +6 -0
  219. package/dist/feedback.js.map +1 -1
  220. package/dist/hooks/use-debounce.d.ts +32 -5
  221. package/dist/hooks/use-debounce.js +6 -5
  222. package/dist/hooks/use-debounce.js.map +1 -1
  223. package/dist/hooks/use-file-picker.d.ts +3 -1
  224. package/dist/hooks/use-file-picker.js.map +1 -1
  225. package/dist/hooks/use-focus-trap.d.ts +19 -3
  226. package/dist/hooks/use-focus-trap.js +15 -5
  227. package/dist/hooks/use-focus-trap.js.map +1 -1
  228. package/dist/hooks/use-has-camera.d.ts +36 -0
  229. package/dist/hooks/use-has-camera.js +53 -0
  230. package/dist/hooks/use-has-camera.js.map +1 -0
  231. package/dist/hooks/use-hotkey.js +2 -1
  232. package/dist/hooks/use-hotkey.js.map +1 -1
  233. package/dist/hooks/use-overlay-history.d.ts +6 -1
  234. package/dist/hooks/use-overlay-history.js +10 -2
  235. package/dist/hooks/use-overlay-history.js.map +1 -1
  236. package/dist/i18n/defaults.js +11 -1
  237. package/dist/i18n/defaults.js.map +1 -1
  238. package/dist/i18n/german.js +78 -4
  239. package/dist/i18n/german.js.map +1 -1
  240. package/dist/i18n/kit-labels.d.ts +20 -0
  241. package/dist/i18n/kit-labels.js.map +1 -1
  242. package/dist/i18n/locales/en.js +95 -5
  243. package/dist/i18n/locales/en.js.map +3 -3
  244. package/dist/i18n/locales/es.js +74 -4
  245. package/dist/i18n/locales/es.js.map +1 -1
  246. package/dist/i18n/locales/fr.js +75 -3
  247. package/dist/i18n/locales/fr.js.map +1 -1
  248. package/dist/i18n/locales/hu.js +77 -4
  249. package/dist/i18n/locales/hu.js.map +1 -1
  250. package/dist/i18n/locales/it.js +77 -4
  251. package/dist/i18n/locales/it.js.map +1 -1
  252. package/dist/i18n/locales/zh.js +74 -4
  253. package/dist/i18n/locales/zh.js.map +1 -1
  254. package/dist/i18n/review.js +22 -1
  255. package/dist/i18n/review.js.map +1 -1
  256. package/dist/index.d.ts +27 -8
  257. package/dist/index.js +41 -2
  258. package/dist/index.js.map +1 -1
  259. package/dist/landing/landing-labels.d.ts +8 -0
  260. package/dist/landing/landing-labels.js +2 -1
  261. package/dist/landing/landing-labels.js.map +1 -1
  262. package/dist/lib/changelog.d.ts +130 -0
  263. package/dist/lib/changelog.js +137 -0
  264. package/dist/lib/changelog.js.map +1 -0
  265. package/dist/lib/clipboard-minus.js +2 -2
  266. package/dist/lib/clipboard-minus.js.map +1 -1
  267. package/dist/lib/dates.d.ts +36 -4
  268. package/dist/lib/dates.js +49 -13
  269. package/dist/lib/dates.js.map +1 -1
  270. package/dist/lib/editable-content.d.ts +33 -0
  271. package/dist/lib/editable-content.js +15 -0
  272. package/dist/lib/editable-content.js.map +1 -0
  273. package/dist/lib/focus-left.d.ts +47 -1
  274. package/dist/lib/focus-left.js +11 -2
  275. package/dist/lib/focus-left.js.map +1 -1
  276. package/dist/lib/format.d.ts +37 -2
  277. package/dist/lib/format.js +25 -1
  278. package/dist/lib/format.js.map +1 -1
  279. package/dist/lib/intl-cache.d.ts +4 -2
  280. package/dist/lib/intl-cache.js.map +1 -1
  281. package/dist/lib/server-wake.d.ts +49 -9
  282. package/dist/lib/server-wake.js +25 -14
  283. package/dist/lib/server-wake.js.map +1 -1
  284. package/dist/lib/session-refresh.d.ts +53 -0
  285. package/dist/lib/session-refresh.js +27 -1
  286. package/dist/lib/session-refresh.js.map +1 -1
  287. package/dist/lib/translation-review.d.ts +26 -0
  288. package/dist/lib/translation-review.js +14 -0
  289. package/dist/lib/translation-review.js.map +1 -1
  290. package/dist/rhf/fields.js +3 -3
  291. package/dist/rhf/fields.js.map +1 -1
  292. package/dist/shell/app-shell.d.ts +25 -1
  293. package/dist/shell/app-shell.js +3 -1
  294. package/dist/shell/app-shell.js.map +1 -1
  295. package/dist/shell/dev-menu.d.ts +3 -0
  296. package/dist/shell/dev-menu.js +4 -2
  297. package/dist/shell/dev-menu.js.map +1 -1
  298. package/dist/shell/held-changes-banner-labels.d.ts +23 -0
  299. package/dist/shell/held-changes-banner-labels.js +14 -0
  300. package/dist/shell/held-changes-banner-labels.js.map +1 -0
  301. package/dist/shell/held-changes-banner.d.ts +75 -0
  302. package/dist/shell/held-changes-banner.js +106 -0
  303. package/dist/shell/held-changes-banner.js.map +1 -0
  304. package/dist/shell/sync-status-indicator.d.ts +27 -12
  305. package/dist/shell/sync-status-indicator.js +13 -4
  306. package/dist/shell/sync-status-indicator.js.map +1 -1
  307. package/dist/shell/top-bar-parts-labels.d.ts +5 -0
  308. package/dist/shell/top-bar-parts-labels.js +3 -1
  309. package/dist/shell/top-bar-parts-labels.js.map +1 -1
  310. package/dist/shell.d.ts +2 -0
  311. package/dist/shell.js +3 -0
  312. package/dist/shell.js.map +1 -1
  313. package/dist/sync/engine.d.ts +11 -2
  314. package/dist/sync/engine.js +13 -5
  315. package/dist/sync/engine.js.map +1 -1
  316. package/dist/sync/hooks.d.ts +3 -2
  317. package/dist/sync/hooks.js +4 -2
  318. package/dist/sync/hooks.js.map +1 -1
  319. package/dist/testing/css-variables.generated.d.ts +2 -2
  320. package/dist/testing/css-variables.generated.js +1 -1
  321. package/dist/testing/css-variables.generated.js.map +1 -1
  322. package/dist/theme/chart-palette.d.ts +18 -0
  323. package/dist/theme/chart-palette.js +17 -1
  324. package/dist/theme/chart-palette.js.map +1 -1
  325. package/dist/theme/contrast-tokens.d.ts +3 -3
  326. package/dist/theme/contrast-tokens.js.map +1 -1
  327. package/dist/theme/contrast.d.ts +4 -4
  328. package/dist/theme/contrast.js.map +1 -1
  329. package/dist/tour/tour-overlay.js +2 -1
  330. package/dist/tour/tour-overlay.js.map +1 -1
  331. package/package.json +5 -9
  332. package/tokens.css +19 -54
  333. package/src/account/account-parts.ts +0 -47
  334. package/src/account/account-settings-labels.ts +0 -240
  335. package/src/account/account-settings.tsx +0 -698
  336. package/src/account/data-export-setting-labels.ts +0 -20
  337. package/src/account/data-export-setting.tsx +0 -200
  338. package/src/account/delete-account-setting-labels.ts +0 -33
  339. package/src/account/delete-account-setting.tsx +0 -341
  340. package/src/account/email-change-setting-labels.ts +0 -31
  341. package/src/account/email-change-setting.tsx +0 -443
  342. package/src/account/passkeys-setting.tsx +0 -445
  343. package/src/account/sessions-setting-labels.ts +0 -24
  344. package/src/account/sessions-setting.tsx +0 -283
  345. package/src/admin/admin-action-confirm-labels.ts +0 -19
  346. package/src/admin/admin-action-confirm.tsx +0 -509
  347. package/src/admin/admin-action-log-labels.ts +0 -83
  348. package/src/admin/admin-action-log.tsx +0 -464
  349. package/src/admin/admin-area-labels.ts +0 -114
  350. package/src/admin/admin-forbidden.tsx +0 -75
  351. package/src/admin/admin-overview.tsx +0 -258
  352. package/src/admin/admin-parts.ts +0 -68
  353. package/src/admin/admin-sections.tsx +0 -208
  354. package/src/admin/admin-tool-links.tsx +0 -90
  355. package/src/admin/invitations-panel-labels.ts +0 -31
  356. package/src/admin/invitations-panel.tsx +0 -516
  357. package/src/admin/mail-test-card-labels.ts +0 -19
  358. package/src/admin/mail-test-card.tsx +0 -189
  359. package/src/admin/plan-change-labels.ts +0 -5
  360. package/src/admin/plan-change.tsx +0 -474
  361. package/src/admin/reviewer-scope-editor-labels.ts +0 -16
  362. package/src/admin/reviewer-scope-editor.tsx +0 -224
  363. package/src/admin/role-select-labels.ts +0 -16
  364. package/src/admin/role-select.tsx +0 -282
  365. package/src/admin/transfer-ownership-dialog-labels.ts +0 -20
  366. package/src/admin/transfer-ownership-dialog.tsx +0 -162
  367. package/src/admin/user-roster-labels.ts +0 -17
  368. package/src/admin/user-roster.tsx +0 -559
  369. package/src/auth/accept-invitation-labels.ts +0 -21
  370. package/src/auth/accept-invitation.tsx +0 -210
  371. package/src/auth/auth-errors-labels.ts +0 -23
  372. package/src/auth/auth-errors.ts +0 -370
  373. package/src/auth/complete-name-dialog-labels.ts +0 -16
  374. package/src/auth/complete-name-dialog.tsx +0 -253
  375. package/src/auth/email-tag.ts +0 -75
  376. package/src/auth/forgot-password-form-labels.ts +0 -20
  377. package/src/auth/forgot-password-form.tsx +0 -221
  378. package/src/auth/form-rules.ts +0 -40
  379. package/src/auth/new-password-fields.tsx +0 -85
  380. package/src/auth/not-found-page-labels.ts +0 -12
  381. package/src/auth/not-found-page.tsx +0 -95
  382. package/src/auth/register-form-labels.ts +0 -31
  383. package/src/auth/register-form.tsx +0 -456
  384. package/src/auth/reset-password-form-labels.ts +0 -27
  385. package/src/auth/reset-password-form.tsx +0 -341
  386. package/src/auth/sign-in-form-labels.ts +0 -44
  387. package/src/auth/sign-in-form.tsx +0 -858
  388. package/src/auth/status-parts.tsx +0 -132
  389. package/src/auth/verify-email-labels.ts +0 -26
  390. package/src/auth/verify-email.tsx +0 -445
  391. package/src/billing/billing-banner.tsx +0 -258
  392. package/src/billing/billing-labels.ts +0 -381
  393. package/src/billing/billing-lock.ts +0 -108
  394. package/src/billing/billing-overview.ts +0 -157
  395. package/src/billing/billing-standing.ts +0 -80
  396. package/src/billing/cancel-request.ts +0 -97
  397. package/src/billing/cancel-subscription.tsx +0 -98
  398. package/src/billing/checkout-processing.ts +0 -394
  399. package/src/billing/checkout-return.ts +0 -90
  400. package/src/billing/pay-page.ts +0 -330
  401. package/src/billing/plan-card.tsx +0 -562
  402. package/src/billing/plan-change-labels.ts +0 -66
  403. package/src/billing/plan-limit-notice.tsx +0 -148
  404. package/src/billing/plan-limit-toast.tsx +0 -90
  405. package/src/billing/plan-limit.ts +0 -52
  406. package/src/billing/plan-price.ts +0 -98
  407. package/src/billing/plan-switch.tsx +0 -216
  408. package/src/billing/provider-page.ts +0 -84
  409. package/src/billing/subscription-actions.tsx +0 -247
  410. package/src/billing/subscription-status-chip.tsx +0 -95
  411. package/src/chart.ts +0 -103
  412. package/src/components/account-chips-labels.ts +0 -16
  413. package/src/components/account-chips.tsx +0 -474
  414. package/src/components/alert-banner.tsx +0 -670
  415. package/src/components/amount-input.tsx +0 -815
  416. package/src/components/appearance-labels.ts +0 -63
  417. package/src/components/authed-image-labels.ts +0 -11
  418. package/src/components/authed-image.tsx +0 -209
  419. package/src/components/autocomplete.tsx +0 -645
  420. package/src/components/breadcrumbs-labels.ts +0 -10
  421. package/src/components/breadcrumbs.tsx +0 -205
  422. package/src/components/bulk-action-bar-labels.ts +0 -11
  423. package/src/components/bulk-action-bar.tsx +0 -443
  424. package/src/components/button-group.tsx +0 -223
  425. package/src/components/button-look.ts +0 -256
  426. package/src/components/button.tsx +0 -339
  427. package/src/components/calculator.tsx +0 -341
  428. package/src/components/calendar-heatmap-labels.ts +0 -15
  429. package/src/components/calendar-heatmap.tsx +0 -594
  430. package/src/components/card.tsx +0 -377
  431. package/src/components/chart-edge.ts +0 -106
  432. package/src/components/chart-figure.tsx +0 -35
  433. package/src/components/chart-height.ts +0 -30
  434. package/src/components/chart-zoom-core.tsx +0 -627
  435. package/src/components/chart-zoom.tsx +0 -22
  436. package/src/components/chart.tsx +0 -554
  437. package/src/components/checkbox-group.tsx +0 -247
  438. package/src/components/checkbox.tsx +0 -346
  439. package/src/components/chip-input.tsx +0 -370
  440. package/src/components/chip-labels.ts +0 -13
  441. package/src/components/chip.tsx +0 -843
  442. package/src/components/choice-card.tsx +0 -544
  443. package/src/components/column-mapper-labels.ts +0 -38
  444. package/src/components/column-mapper.tsx +0 -655
  445. package/src/components/combobox-core.tsx +0 -1321
  446. package/src/components/combobox-suggestions.tsx +0 -131
  447. package/src/components/combobox.tsx +0 -716
  448. package/src/components/confirm-context.ts +0 -7
  449. package/src/components/confirm-dialog-labels.ts +0 -13
  450. package/src/components/confirm-dialog.tsx +0 -341
  451. package/src/components/copy-button-labels.ts +0 -13
  452. package/src/components/copy-button.tsx +0 -192
  453. package/src/components/country-select-labels.ts +0 -11
  454. package/src/components/country-select.tsx +0 -539
  455. package/src/components/currency-option-list.tsx +0 -180
  456. package/src/components/currency-select.tsx +0 -341
  457. package/src/components/danger-confirm-labels.ts +0 -20
  458. package/src/components/danger-confirm.tsx +0 -934
  459. package/src/components/data-table-cells.tsx +0 -118
  460. package/src/components/data-table-column-settings.tsx +0 -198
  461. package/src/components/data-table-filter-popover.tsx +0 -281
  462. package/src/components/data-table-filters.ts +0 -287
  463. package/src/components/data-table-fit.ts +0 -301
  464. package/src/components/data-table-groups.tsx +0 -288
  465. package/src/components/data-table-head.tsx +0 -280
  466. package/src/components/data-table-labels.ts +0 -198
  467. package/src/components/data-table-leading-row.tsx +0 -58
  468. package/src/components/data-table-mobile.tsx +0 -1117
  469. package/src/components/data-table-pagination.tsx +0 -202
  470. package/src/components/data-table-resize.ts +0 -188
  471. package/src/components/data-table-row-actions.tsx +0 -302
  472. package/src/components/data-table-row.tsx +0 -496
  473. package/src/components/data-table-selection.ts +0 -71
  474. package/src/components/data-table-shared.tsx +0 -287
  475. package/src/components/data-table-sort.ts +0 -163
  476. package/src/components/data-table-virtual.ts +0 -576
  477. package/src/components/data-table.tsx +0 -2598
  478. package/src/components/date-field.tsx +0 -684
  479. package/src/components/date-format-setting.tsx +0 -64
  480. package/src/components/date-picker.tsx +0 -404
  481. package/src/components/date-range-picker.tsx +0 -518
  482. package/src/components/description-list-labels.ts +0 -9
  483. package/src/components/description-list.tsx +0 -386
  484. package/src/components/dialog-frame-labels.ts +0 -7
  485. package/src/components/dialog-frame.tsx +0 -276
  486. package/src/components/disclosure.tsx +0 -476
  487. package/src/components/dropdown.tsx +0 -461
  488. package/src/components/empty-state.tsx +0 -136
  489. package/src/components/entity-combobox.tsx +0 -422
  490. package/src/components/error-boundary-labels.ts +0 -20
  491. package/src/components/error-boundary.tsx +0 -675
  492. package/src/components/facing-pair.ts +0 -93
  493. package/src/components/field-base-labels.ts +0 -20
  494. package/src/components/field-base.tsx +0 -656
  495. package/src/components/field-parts.tsx +0 -825
  496. package/src/components/field-strip.tsx +0 -129
  497. package/src/components/field.tsx +0 -206
  498. package/src/components/file-button.tsx +0 -295
  499. package/src/components/file-dropzone.tsx +0 -559
  500. package/src/components/floating-panel-labels.ts +0 -10
  501. package/src/components/floating-panel.tsx +0 -828
  502. package/src/components/focus-ring.ts +0 -16
  503. package/src/components/form-actions-labels.ts +0 -11
  504. package/src/components/form-actions.tsx +0 -578
  505. package/src/components/full-bleed-dialog.tsx +0 -294
  506. package/src/components/grouped-picker.tsx +0 -184
  507. package/src/components/help-popover.tsx +0 -117
  508. package/src/components/hover-menu.tsx +0 -343
  509. package/src/components/iban-input-labels.ts +0 -14
  510. package/src/components/iban-input.tsx +0 -236
  511. package/src/components/icon-button.tsx +0 -959
  512. package/src/components/icon-picker-labels.ts +0 -13
  513. package/src/components/icon-picker.tsx +0 -232
  514. package/src/components/image-grid-labels.ts +0 -11
  515. package/src/components/image-grid.tsx +0 -202
  516. package/src/components/inline-confirm.tsx +0 -116
  517. package/src/components/inline-edit-field-labels.ts +0 -11
  518. package/src/components/inline-edit-field.tsx +0 -552
  519. package/src/components/inline-entity-combobox.tsx +0 -849
  520. package/src/components/input.tsx +0 -394
  521. package/src/components/jump-calendar.tsx +0 -265
  522. package/src/components/language-select.tsx +0 -93
  523. package/src/components/legal-labels.ts +0 -105
  524. package/src/components/legal-page.tsx +0 -711
  525. package/src/components/legal.tsx +0 -668
  526. package/src/components/lightbox-labels.ts +0 -18
  527. package/src/components/lightbox.tsx +0 -399
  528. package/src/components/line-items-labels.ts +0 -14
  529. package/src/components/line-items.tsx +0 -602
  530. package/src/components/list-labels.ts +0 -12
  531. package/src/components/list.tsx +0 -870
  532. package/src/components/loading-state.tsx +0 -78
  533. package/src/components/measured-grid-labels.ts +0 -25
  534. package/src/components/measured-grid.tsx +0 -837
  535. package/src/components/menu-item.tsx +0 -241
  536. package/src/components/mini-calendar-labels.ts +0 -17
  537. package/src/components/mini-calendar.tsx +0 -789
  538. package/src/components/modal.tsx +0 -505
  539. package/src/components/money-draft.ts +0 -83
  540. package/src/components/money-field.tsx +0 -76
  541. package/src/components/month-grid.tsx +0 -229
  542. package/src/components/month-picker-labels.ts +0 -22
  543. package/src/components/month-picker.tsx +0 -1087
  544. package/src/components/multi-entity-combobox.tsx +0 -369
  545. package/src/components/multi-select.tsx +0 -376
  546. package/src/components/nav-pills.tsx +0 -198
  547. package/src/components/number-field.tsx +0 -327
  548. package/src/components/number-input.tsx +0 -558
  549. package/src/components/numeric-field.ts +0 -169
  550. package/src/components/numpad-sheet.tsx +0 -285
  551. package/src/components/one-time-code-input.tsx +0 -270
  552. package/src/components/page-contents-labels.ts +0 -9
  553. package/src/components/page-contents.tsx +0 -282
  554. package/src/components/page-header-context.ts +0 -8
  555. package/src/components/page-header.tsx +0 -298
  556. package/src/components/password-strength-labels.ts +0 -22
  557. package/src/components/password-strength.tsx +0 -241
  558. package/src/components/phone-input-labels.ts +0 -10
  559. package/src/components/phone-input.tsx +0 -282
  560. package/src/components/picker-sheet.tsx +0 -330
  561. package/src/components/pie-chart-labels.ts +0 -40
  562. package/src/components/pie-chart.tsx +0 -480
  563. package/src/components/popover-labels.ts +0 -14
  564. package/src/components/popover.tsx +0 -268
  565. package/src/components/progress-bar-labels.ts +0 -10
  566. package/src/components/progress-bar.tsx +0 -479
  567. package/src/components/qr-code.tsx +0 -76
  568. package/src/components/reauth-dialog-labels.ts +0 -13
  569. package/src/components/reauth-dialog.tsx +0 -265
  570. package/src/components/row-actions-labels.ts +0 -12
  571. package/src/components/row-actions.tsx +0 -795
  572. package/src/components/scroll-area.tsx +0 -123
  573. package/src/components/search-field.tsx +0 -192
  574. package/src/components/select.tsx +0 -294
  575. package/src/components/separator.tsx +0 -33
  576. package/src/components/series-chart-axes.ts +0 -342
  577. package/src/components/series-chart-budget.ts +0 -150
  578. package/src/components/series-chart-labels.ts +0 -33
  579. package/src/components/series-chart-thin.ts +0 -180
  580. package/src/components/series-chart-ticks.ts +0 -194
  581. package/src/components/series-chart.tsx +0 -1906
  582. package/src/components/server-wake-labels.ts +0 -11
  583. package/src/components/server-wake.tsx +0 -129
  584. package/src/components/settings-fields.tsx +0 -237
  585. package/src/components/share-card-labels.ts +0 -30
  586. package/src/components/share-card.tsx +0 -675
  587. package/src/components/signature-pad-labels.ts +0 -24
  588. package/src/components/signature-pad.tsx +0 -747
  589. package/src/components/signed-amount-labels.ts +0 -10
  590. package/src/components/signed-amount.tsx +0 -336
  591. package/src/components/skeleton.tsx +0 -80
  592. package/src/components/slider.tsx +0 -338
  593. package/src/components/sparkline-labels.ts +0 -14
  594. package/src/components/sparkline.tsx +0 -322
  595. package/src/components/spinner.tsx +0 -81
  596. package/src/components/stat-tile-labels.ts +0 -15
  597. package/src/components/stat-tile.tsx +0 -725
  598. package/src/components/status-dot.tsx +0 -170
  599. package/src/components/swatch-picker-labels.ts +0 -10
  600. package/src/components/swatch-picker.tsx +0 -283
  601. package/src/components/swipeable-row.tsx +0 -386
  602. package/src/components/switch.tsx +0 -273
  603. package/src/components/table-skeleton.tsx +0 -136
  604. package/src/components/table.tsx +0 -647
  605. package/src/components/tabs-labels.ts +0 -13
  606. package/src/components/tabs.tsx +0 -693
  607. package/src/components/text-link.tsx +0 -359
  608. package/src/components/text.tsx +0 -150
  609. package/src/components/textarea.tsx +0 -330
  610. package/src/components/tile-radio.tsx +0 -332
  611. package/src/components/time-input.tsx +0 -121
  612. package/src/components/toast-labels.ts +0 -12
  613. package/src/components/toast.tsx +0 -519
  614. package/src/components/toggle-group.tsx +0 -752
  615. package/src/components/toggle-legend.tsx +0 -394
  616. package/src/components/tooltip.tsx +0 -1149
  617. package/src/components/translation-review-editor.tsx +0 -290
  618. package/src/components/translation-review-labels.ts +0 -181
  619. package/src/components/translation-review-parts.tsx +0 -272
  620. package/src/components/translation-review.tsx +0 -1240
  621. package/src/components/tree-view.tsx +0 -589
  622. package/src/components/treemap-labels.ts +0 -47
  623. package/src/components/treemap-layout.ts +0 -210
  624. package/src/components/treemap.tsx +0 -1184
  625. package/src/components/trigger-aria.ts +0 -44
  626. package/src/components/use-anchor-dir.ts +0 -20
  627. package/src/components/use-mobile-reveal.ts +0 -62
  628. package/src/components/use-table-state.ts +0 -753
  629. package/src/components/user-avatar.tsx +0 -116
  630. package/src/components/wizard-stepper.tsx +0 -42
  631. package/src/components/write-lock-labels.ts +0 -10
  632. package/src/components/write-lock.tsx +0 -253
  633. package/src/currencies.ts +0 -70
  634. package/src/data-table.ts +0 -42
  635. package/src/demo/demo-banner.tsx +0 -153
  636. package/src/demo/demo-countdown.ts +0 -136
  637. package/src/demo/demo-ended.tsx +0 -90
  638. package/src/demo/demo-labels.ts +0 -78
  639. package/src/demo/demo-session.ts +0 -32
  640. package/src/demo/demo-start.tsx +0 -156
  641. package/src/eslint/index.ts +0 -161
  642. package/src/eslint/role-utilities.generated.ts +0 -146
  643. package/src/eslint/role-utilities.ts +0 -233
  644. package/src/feedback/feedback-attachment-download.tsx +0 -77
  645. package/src/feedback/feedback-attachment-labels.ts +0 -37
  646. package/src/feedback/feedback-attachment.tsx +0 -1239
  647. package/src/feedback/feedback-capture.ts +0 -287
  648. package/src/feedback/feedback-comment-thread.tsx +0 -353
  649. package/src/feedback/feedback-context-labels.ts +0 -10
  650. package/src/feedback/feedback-context.tsx +0 -213
  651. package/src/feedback/feedback-crash.ts +0 -547
  652. package/src/feedback/feedback-dialog-labels.ts +0 -29
  653. package/src/feedback/feedback-dialog.tsx +0 -440
  654. package/src/feedback/feedback-entry-file.tsx +0 -150
  655. package/src/feedback/feedback-inbox.tsx +0 -552
  656. package/src/feedback/feedback-labels.ts +0 -144
  657. package/src/feedback/feedback-menu-labels.ts +0 -12
  658. package/src/feedback/feedback-menu.tsx +0 -177
  659. package/src/feedback/feedback-mutation.ts +0 -20
  660. package/src/feedback/feedback-page-link.ts +0 -90
  661. package/src/feedback/feedback-public-labels.ts +0 -81
  662. package/src/feedback/feedback-public-list.tsx +0 -524
  663. package/src/feedback/feedback-public-switch.tsx +0 -102
  664. package/src/feedback/feedback-public-types.ts +0 -101
  665. package/src/feedback/feedback-record.ts +0 -423
  666. package/src/feedback/feedback-replies-context.ts +0 -9
  667. package/src/feedback/feedback-replies.tsx +0 -343
  668. package/src/feedback/feedback-rework-entry-chip.tsx +0 -18
  669. package/src/feedback/feedback-row-detail-labels.ts +0 -30
  670. package/src/feedback/feedback-row-detail.tsx +0 -858
  671. package/src/feedback/feedback-status-undo.ts +0 -109
  672. package/src/feedback/feedback-submit-dialog.tsx +0 -118
  673. package/src/feedback/feedback-submit.tsx +0 -237
  674. package/src/feedback/feedback-swipe.tsx +0 -192
  675. package/src/feedback/feedback-table-labels.ts +0 -27
  676. package/src/feedback/feedback-table.tsx +0 -912
  677. package/src/feedback/feedback-thread-labels.ts +0 -22
  678. package/src/feedback/feedback-thread-parts-labels.ts +0 -41
  679. package/src/feedback/feedback-thread.tsx +0 -905
  680. package/src/feedback/feedback-vocabulary.ts +0 -263
  681. package/src/feedback/feedback-vote-button.tsx +0 -124
  682. package/src/feedback.ts +0 -116
  683. package/src/hooks/use-anchored-panel.ts +0 -396
  684. package/src/hooks/use-anchored-rect.ts +0 -77
  685. package/src/hooks/use-announce.ts +0 -85
  686. package/src/hooks/use-authed-src.ts +0 -167
  687. package/src/hooks/use-body-scroll-lock.ts +0 -119
  688. package/src/hooks/use-breakpoint.ts +0 -133
  689. package/src/hooks/use-close-transition.ts +0 -107
  690. package/src/hooks/use-copy-to-clipboard.ts +0 -122
  691. package/src/hooks/use-debounce.ts +0 -114
  692. package/src/hooks/use-dismiss.ts +0 -371
  693. package/src/hooks/use-document-title.ts +0 -33
  694. package/src/hooks/use-file-drop.ts +0 -121
  695. package/src/hooks/use-file-picker-labels.ts +0 -28
  696. package/src/hooks/use-file-picker.tsx +0 -359
  697. package/src/hooks/use-focus-trap.ts +0 -199
  698. package/src/hooks/use-hotkey.ts +0 -189
  699. package/src/hooks/use-large-text.ts +0 -41
  700. package/src/hooks/use-long-press.ts +0 -140
  701. package/src/hooks/use-media-query.ts +0 -39
  702. package/src/hooks/use-mounted.ts +0 -39
  703. package/src/hooks/use-noindex.ts +0 -37
  704. package/src/hooks/use-overlay-history.ts +0 -714
  705. package/src/hooks/use-row-swipe.ts +0 -207
  706. package/src/hooks/use-search-param-state.ts +0 -434
  707. package/src/hooks/use-windowed-rows.ts +0 -225
  708. package/src/i18n/defaults.ts +0 -267
  709. package/src/i18n/german.ts +0 -2057
  710. package/src/i18n/kit-labels.tsx +0 -1003
  711. package/src/i18n/languages.ts +0 -349
  712. package/src/i18n/locales/de-CH.ts +0 -24
  713. package/src/i18n/locales/en.ts +0 -267
  714. package/src/i18n/locales/es.ts +0 -1997
  715. package/src/i18n/locales/fr.ts +0 -2035
  716. package/src/i18n/locales/hu.ts +0 -2002
  717. package/src/i18n/locales/it.ts +0 -2012
  718. package/src/i18n/locales/zh.ts +0 -1910
  719. package/src/i18n/plurals.ts +0 -86
  720. package/src/i18n/review.ts +0 -475
  721. package/src/i18n/shared-labels.ts +0 -138
  722. package/src/i18n/swiss.ts +0 -29
  723. package/src/index.ts +0 -1179
  724. package/src/landing/access.ts +0 -93
  725. package/src/landing/landing-actions.tsx +0 -97
  726. package/src/landing/landing-labels.ts +0 -59
  727. package/src/landing/landing-sections.tsx +0 -341
  728. package/src/landing/page-seo.ts +0 -261
  729. package/src/landing/public-header.tsx +0 -121
  730. package/src/landing/public-page.tsx +0 -106
  731. package/src/landing/routing.tsx +0 -225
  732. package/src/lib/broadcast.ts +0 -52
  733. package/src/lib/calc.ts +0 -323
  734. package/src/lib/chip-edge-snap.ts +0 -212
  735. package/src/lib/clipboard-minus.ts +0 -107
  736. package/src/lib/clipping.ts +0 -34
  737. package/src/lib/cn.ts +0 -28
  738. package/src/lib/column-mapping.ts +0 -234
  739. package/src/lib/countries.ts +0 -91
  740. package/src/lib/data-attributes.ts +0 -14
  741. package/src/lib/date-format.ts +0 -227
  742. package/src/lib/dates.ts +0 -266
  743. package/src/lib/day-format.ts +0 -96
  744. package/src/lib/decimal-marks.ts +0 -108
  745. package/src/lib/describe-failure.ts +0 -18
  746. package/src/lib/device-settings.ts +0 -147
  747. package/src/lib/direction.ts +0 -74
  748. package/src/lib/document-navigation.ts +0 -17
  749. package/src/lib/document-title.ts +0 -41
  750. package/src/lib/download.ts +0 -172
  751. package/src/lib/float-clearance.ts +0 -70
  752. package/src/lib/floating-stack.ts +0 -70
  753. package/src/lib/focus-left.ts +0 -156
  754. package/src/lib/format.ts +0 -522
  755. package/src/lib/http-status.ts +0 -38
  756. package/src/lib/iban.ts +0 -251
  757. package/src/lib/ime.ts +0 -24
  758. package/src/lib/intl-cache.ts +0 -25
  759. package/src/lib/iso-day.ts +0 -13
  760. package/src/lib/lazy-with-fallback.ts +0 -82
  761. package/src/lib/logger.ts +0 -69
  762. package/src/lib/minus.ts +0 -50
  763. package/src/lib/path-pattern.ts +0 -55
  764. package/src/lib/person-name.ts +0 -155
  765. package/src/lib/phone.ts +0 -208
  766. package/src/lib/plain-text.ts +0 -22
  767. package/src/lib/presence.ts +0 -18
  768. package/src/lib/qr-encode.ts +0 -444
  769. package/src/lib/quiet-focus.ts +0 -32
  770. package/src/lib/reduced-motion.ts +0 -22
  771. package/src/lib/refs.ts +0 -22
  772. package/src/lib/round.ts +0 -43
  773. package/src/lib/safe-storage.ts +0 -119
  774. package/src/lib/server-wake.ts +0 -315
  775. package/src/lib/session-refresh.ts +0 -472
  776. package/src/lib/share-format.ts +0 -18
  777. package/src/lib/status-tone.ts +0 -43
  778. package/src/lib/strip-fade.ts +0 -287
  779. package/src/lib/table-text.ts +0 -554
  780. package/src/lib/text-case.ts +0 -19
  781. package/src/lib/text-match.ts +0 -169
  782. package/src/lib/thenable.ts +0 -19
  783. package/src/lib/translation-review.ts +0 -717
  784. package/src/notifications/device-zone-report.ts +0 -67
  785. package/src/notifications/feedback-notification-types-labels.ts +0 -33
  786. package/src/notifications/feedback-notification-types.ts +0 -71
  787. package/src/notifications/notification-bell.tsx +0 -119
  788. package/src/notifications/notification-inbox.tsx +0 -309
  789. package/src/notifications/notification-parts.tsx +0 -81
  790. package/src/notifications/notification-types-setting.tsx +0 -406
  791. package/src/notifications/notification-types.ts +0 -89
  792. package/src/notifications/notifications-labels.ts +0 -287
  793. package/src/notifications/push-device-setting.tsx +0 -230
  794. package/src/notifications/push-devices-setting.tsx +0 -374
  795. package/src/notifications/push-worker.ts +0 -168
  796. package/src/notifications/quiet-hours-setting.tsx +0 -238
  797. package/src/notifications/unsubscribe-panel.tsx +0 -200
  798. package/src/notifications/use-push-device.ts +0 -448
  799. package/src/offline/local-first.ts +0 -100
  800. package/src/offline/pwa-update-prompt-labels.ts +0 -9
  801. package/src/offline/pwa-update-prompt.tsx +0 -78
  802. package/src/offline/query-persistence.ts +0 -391
  803. package/src/offline/service-worker-updates.ts +0 -81
  804. package/src/offline/shared-computer-labels.ts +0 -8
  805. package/src/offline/shared-computer.tsx +0 -87
  806. package/src/offline/sign-out-pending-dialog-labels.ts +0 -21
  807. package/src/offline/sign-out-pending-dialog.tsx +0 -135
  808. package/src/offline.ts +0 -37
  809. package/src/push-worker.ts +0 -25
  810. package/src/rhf/fields.tsx +0 -2187
  811. package/src/rhf/form-core.tsx +0 -324
  812. package/src/rhf/form.tsx +0 -12
  813. package/src/rhf/line-items.tsx +0 -135
  814. package/src/rhf/use-rhf-wizard-step.ts +0 -104
  815. package/src/rhf.ts +0 -21
  816. package/src/search/command-palette-labels.ts +0 -16
  817. package/src/search/command-palette.tsx +0 -624
  818. package/src/search/global-search-labels.ts +0 -13
  819. package/src/search/global-search.tsx +0 -660
  820. package/src/search/search-index.ts +0 -283
  821. package/src/search/use-command-key.ts +0 -23
  822. package/src/search.ts +0 -14
  823. package/src/settings/device-reset-setting-labels.ts +0 -20
  824. package/src/settings/device-reset-setting.tsx +0 -116
  825. package/src/settings/settings-card-classes.ts +0 -11
  826. package/src/settings/settings-catalogue.ts +0 -150
  827. package/src/settings/settings-context.ts +0 -33
  828. package/src/settings/settings-heading.tsx +0 -67
  829. package/src/settings/settings-labels.ts +0 -87
  830. package/src/settings/settings-layout.tsx +0 -471
  831. package/src/settings/settings-section.tsx +0 -108
  832. package/src/settings/use-account-appearance.ts +0 -148
  833. package/src/settings/use-account-language.ts +0 -146
  834. package/src/settings/use-settings-focus.ts +0 -128
  835. package/src/settings/use-settings-route.ts +0 -258
  836. package/src/shell/account-menu-language.tsx +0 -130
  837. package/src/shell/account-menu-text-size.tsx +0 -80
  838. package/src/shell/admin-menu.tsx +0 -183
  839. package/src/shell/app-shell-labels.ts +0 -11
  840. package/src/shell/app-shell.tsx +0 -1560
  841. package/src/shell/auth-layout.tsx +0 -186
  842. package/src/shell/company-switcher-labels.ts +0 -13
  843. package/src/shell/company-switcher.tsx +0 -136
  844. package/src/shell/dev-menu.tsx +0 -257
  845. package/src/shell/fill-height.tsx +0 -45
  846. package/src/shell/language-code.ts +0 -5
  847. package/src/shell/option-switcher-menu.tsx +0 -84
  848. package/src/shell/sync-status-indicator.tsx +0 -303
  849. package/src/shell/top-bar-actions.tsx +0 -87
  850. package/src/shell/top-bar-brand.tsx +0 -78
  851. package/src/shell/top-bar-parts-labels.ts +0 -148
  852. package/src/shell/top-bar.tsx +0 -40
  853. package/src/shell/topbar-action-menu.tsx +0 -567
  854. package/src/shell/topbar-controls.tsx +0 -269
  855. package/src/shell/tour-menu.tsx +0 -187
  856. package/src/shell.ts +0 -108
  857. package/src/sync/db.ts +0 -129
  858. package/src/sync/engine.ts +0 -1011
  859. package/src/sync/hooks.ts +0 -98
  860. package/src/sync/testing.ts +0 -73
  861. package/src/sync/wire.ts +0 -61
  862. package/src/sync.ts +0 -37
  863. package/src/table-text.ts +0 -8
  864. package/src/testing/css-variables.generated.ts +0 -112
  865. package/src/testing/css-variables.ts +0 -189
  866. package/src/testing/index.ts +0 -29
  867. package/src/testing/react.ts +0 -58
  868. package/src/testing/tour.ts +0 -41
  869. package/src/testing/viewport.ts +0 -357
  870. package/src/theme/chart-palette.ts +0 -232
  871. package/src/theme/color.ts +0 -272
  872. package/src/theme/contrast-tokens.ts +0 -268
  873. package/src/theme/contrast.ts +0 -250
  874. package/src/theme/palette-derive.ts +0 -825
  875. package/src/theme/palette-presets.ts +0 -544
  876. package/src/theme/palette-store.ts +0 -108
  877. package/src/theme/text-size.ts +0 -289
  878. package/src/theme/theme-store.ts +0 -157
  879. package/src/tour/tour-catalogue-labels.ts +0 -75
  880. package/src/tour/tour-catalogue.tsx +0 -335
  881. package/src/tour/tour-dock.ts +0 -134
  882. package/src/tour/tour-engine.ts +0 -37
  883. package/src/tour/tour-gates.ts +0 -218
  884. package/src/tour/tour-guide-button.tsx +0 -64
  885. package/src/tour/tour-guide-labels.ts +0 -15
  886. package/src/tour/tour-info.ts +0 -144
  887. package/src/tour/tour-labels.ts +0 -23
  888. package/src/tour/tour-overlay.tsx +0 -1170
  889. package/src/tour/tour.tsx +0 -750
  890. package/src/tour/use-tour-progress.ts +0 -671
  891. package/src/tour/use-tour-url-sync.ts +0 -266
  892. package/src/tour.ts +0 -21
  893. package/src/vite-env.d.ts +0 -23
  894. package/src/wizard/stepper-nav.tsx +0 -360
  895. package/src/wizard/types.ts +0 -275
  896. package/src/wizard/use-wizard.ts +0 -560
  897. package/src/wizard/validation.ts +0 -39
  898. package/src/wizard/wizard-context.tsx +0 -74
  899. package/src/wizard/wizard-labels.ts +0 -29
  900. package/src/wizard/wizard-step.tsx +0 -76
  901. package/src/wizard/wizard-summary.tsx +0 -84
  902. package/src/wizard.ts +0 -15
@@ -1,684 +0,0 @@
1
- // The field both date pickers draw: the trigger, the popover or phone sheet it opens,
2
- // the clear button — and the props, label hook and trigger format the two share.
3
- // Moved out of date-picker.tsx as it was (MOD-9, refactor audit 2026-10); date-picker
4
- // still exports the one public name here, `DateTriggerAttributes`.
5
- import { useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from "react";
6
- import type { ComponentPropsWithoutRef, ReactNode, Ref, RefObject } from "react";
7
- import { Calendar, X } from "lucide-react";
8
- import { cn } from "../lib/cn";
9
- import { dirOf, type Direction } from "../lib/direction";
10
- import { formatIsoDate } from "../lib/dates";
11
- import {
12
- DEFAULT_DATE_PICKER_LABELS,
13
- DEFAULT_PICKER_SHEET_LABELS,
14
- useKitDateFormatter,
15
- useKitLabels,
16
- type DatePickerLabels,
17
- type KitDateFormatContext,
18
- } from "../i18n/kit-labels";
19
- import { splitTriggerAria } from "./trigger-aria";
20
- import type { TriggerAria } from "./trigger-aria";
21
- import { FIELD_TRIGGER, FIELD_FLOATING_PAD, FIELD_INVALID } from "./field-base";
22
- import {
23
- assignRef,
24
- FieldLabelLine,
25
- LABEL_ABOVE_BOX,
26
- type DisabledReasonDisplay,
27
- type FieldHelpProps,
28
- } from "./field-parts";
29
- import { FullBleedDialog } from "./full-bleed-dialog";
30
- import type { RemLength } from "../hooks/use-breakpoint";
31
- import type { MiniCalendarProps } from "./mini-calendar";
32
- import { Popover } from "./popover";
33
-
34
- /**
35
- * What both pickers share — and, through `ComponentPropsWithoutRef<"div">`, everything a
36
- * `<div>` takes, so a `data-tour` anchor, a test id or an `aria-describedby` reaches the
37
- * field's root element instead of being dropped (audit §api-design).
38
- *
39
- * `onChange` is omitted from those attributes: the DOM event of that name carries a
40
- * `FormEvent`, while both pickers answer with ISO date strings. Each declares its own
41
- * (date-picker.tsx, date-range-picker.tsx).
42
- */
43
- export interface DatePickerBaseProps extends Omit<ComponentPropsWithoutRef<"div">, "onChange">, FieldHelpProps {
44
- /** BCP 47 tag for the trigger's date and the calendar. Falls back to
45
- * `<UiKitProvider locale>`, then to the runtime's default. */
46
- locale?: string;
47
- /** Embedded top-boundary label, matching the native Input/Select fields. */
48
- label?: ReactNode;
49
- placeholder?: string;
50
- /** Inclusive ISO bounds for selectable days. */
51
- min?: string;
52
- max?: string;
53
- /** Show an X to clear the value (emits `""`). */
54
- clearable?: boolean;
55
- /** Accessible name of the clear button. Wins over `datePicker.clear` from
56
- * `<UiKitProvider labels>`; kept as a prop because it predates the provider. */
57
- clearLabel?: string;
58
- disabled?: boolean;
59
- /**
60
- * Why the date cannot be changed — {@link Select}'s `disabledReason`, for a picker that
61
- * SAVES on change (a report's period kept per user, a filter persisted as it moves).
62
- * The trigger stays focusable and `aria-disabled`, the calendar does not open, the ‹ ›
63
- * and Today buttons refuse, the clear is not offered, and `onChange` never fires; the
64
- * reason is a line under the field at Large and on a touch screen, else in the kit
65
- * {@link Tooltip} (`disabledReasonDisplay`), and on the trigger's `aria-describedby`.
66
- * Wins over `disabled`.
67
- *
68
- * 0.52 (refactor audit 2026-10-30, API-3): the date pickers and MonthPicker were the
69
- * only value fields with no lock opt-in.
70
- */
71
- disabledReason?: ReactNode;
72
- /** Where the reason shows — {@link Button}'s `disabledReasonDisplay`: a line under the
73
- * field at Large and on a touch screen by default, the tooltip otherwise. */
74
- disabledReasonDisplay?: DisabledReasonDisplay;
75
- /** Required and unanswered — {@link FIELD_INVALID}. See {@link Input}'s `invalid`. */
76
- invalid?: boolean;
77
- /**
78
- * Standing advice for the field (keksdose K4, "uniform field anatomy"), as on a
79
- * {@link Select}: plain TEXT is a caption under the field, attached with
80
- * `aria-describedby`; a {@link FieldHint} rides the label line (or, unlabelled, sits
81
- * at the field's end, outside the box).
82
- */
83
- hint?: ReactNode;
84
- /**
85
- * What is wrong with the date, in the caller's words ("The due date is before the
86
- * invoice date") — {@link Input}'s `error` (keksdose K4: DateField errors had no slot).
87
- * Rendered under the field (under the whole row, with `step` / `today`), attached to
88
- * the trigger with `aria-describedby` — merged with any the caller passed, after the
89
- * caption — and implies `invalid`. Passing the key at all keeps the field's box while
90
- * there is no message, so the trigger is never remounted as one comes and goes.
91
- */
92
- error?: ReactNode;
93
- className?: string;
94
- /** Intl options for the trigger's formatted date (default: locale short date). Win
95
- * over the provider's `formatDate`. */
96
- formatOptions?: Intl.DateTimeFormatOptions;
97
- /** Render the trigger's text for an ISO date yourself; wins over `formatOptions` and
98
- * over the provider's `formatDate`.
99
- * For a host whose date rendering is more than one `Intl` call can say — Keksdose
100
- * puts the weekday's name in the UI language beside digits ordered by a separate
101
- * format preference, two locales in one string. `locale` still drives the calendar.
102
- * Set that rendering once with `<UiKitProvider formatDate>` (keksdose K12) and this
103
- * is for the one field that differs. */
104
- formatValue?: (iso: string) => string;
105
- /** Passed through to the {@link MiniCalendar} this opens. Its month arrows are
106
- * icon-only, so their `aria-label` is the only name they have — and the package
107
- * ships English defaults, which a translating host has to be able to replace.
108
- * Usually unnecessary now: the calendar reads `miniCalendar` from the provider. */
109
- calendarLabels?: MiniCalendarProps["labels"];
110
- /**
111
- * Make the panel's caption ("July 2026") a button that opens the year's twelve
112
- * months, with ‹ › stepping a year; picking a month returns to its days. Far dates
113
- * stop being a march of month arrows.
114
- *
115
- * kastlan is why: its service-charge period runs July to June, and with one month on
116
- * screen and ‹ › the only way across, the end of the period was eleven clicks past
117
- * the start — so kastlan kept two date fields instead of `RhfDateRangePicker`. With
118
- * the jump the whole period is open, caption, Jul, 1, caption, next year, Jun, 30.
119
- *
120
- * What it adds, for the keyboard and a screen reader:
121
- * - the caption is a disclosure button (`aria-expanded`). Its name is the month it
122
- * shows, so speech input can say what it sees; it is `aria-live`, as the
123
- * calendar's caption was, so paging months still says where you landed; and it is
124
- * described by `monthPicker.panel` ("Choose a month").
125
- * - the month grid is `MonthPicker`'s grid: one tab stop, arrows walk the months
126
- * (across the year's edge), Home/End the row, PageUp/PageDown a year, Enter or a
127
- * click picks. Focus opens on the month on show and comes back on its days — the
128
- * selected day if it is in that month, else the 1st. Months outside `min`/`max`
129
- * are `aria-disabled`, and a year arrow is once the whole year beyond is.
130
- * - Escape in the month grid goes back to the days without closing the panel (focus
131
- * on the caption); in the days, Escape closes the panel as before.
132
- *
133
- * No new strings: the month arrows keep `miniCalendar.previousMonth` / `nextMonth`
134
- * (`calendarLabels`), and the month grid speaks with `MonthPicker`'s words —
135
- * `monthPicker.previousYear` / `nextYear` / `month` / `panel` — because it is that
136
- * grid, and a host that translated it once should not have to again.
137
- *
138
- * Off by default: the caption becomes one more stop in the panel's tab order, which a
139
- * 0.x minor does not spring on a form. Works in the popover and in
140
- * `DateRangePicker`'s phone sheet alike, beside presets and with `apply`
141
- * (a preset picked while the months are open goes back to the days, on its start).
142
- *
143
- * Why not a two-month panel (`months={2}`) instead, or beside it: for a twelve-month
144
- * period it still pages six times where this takes one year step, and two
145
- * `MiniCalendar`s side by side each follow the value on their own — picking the end
146
- * in the right-hand month would pull the left one onto it — so the calendar would
147
- * have to learn to share a month first. Not worth that for a saving of one arrow on a
148
- * range across a single month boundary.
149
- */
150
- monthJump?: boolean;
151
- /**
152
- * The TRIGGER — the focusable button that opens the calendar, a `renderTrigger` one
153
- * too — as a React 19 ref prop (0.34, API-3, refactor audit 2026-10). The field took
154
- * none, so react-hook-form's focus-on-error reached it only through /rhf's id lookup,
155
- * and an app not at all. Not the wrapper, which takes the rest of the props.
156
- */
157
- ref?: Ref<HTMLButtonElement>;
158
- }
159
-
160
- /**
161
- * The trigger's date renderer, in the kit's order of precedence: the picker's own
162
- * `formatValue`, then its `formatOptions` (an explicit `Intl` look for this field),
163
- * then the provider's `formatDate` (keksdose K12), then the locale's short date. A
164
- * provider formatter that answers `""` falls through to the default for that date.
165
- */
166
- export function useTriggerFormat(
167
- source: KitDateFormatContext["source"],
168
- locale: string | undefined,
169
- formatOptions: Intl.DateTimeFormatOptions | undefined,
170
- formatValue: ((iso: string) => string) | undefined,
171
- ): (iso: string) => string {
172
- const fromProvider = useKitDateFormatter();
173
- if (formatValue) return formatValue;
174
- return (iso) => {
175
- if (formatOptions === undefined && fromProvider) {
176
- // A single date stands alone, where the weekday helps; a range's two ends do not.
177
- const text = fromProvider(iso, { unit: "day", source, locale, weekday: source === "datePicker" });
178
- if (text) return text;
179
- }
180
- // No prop and no provider leaves `locale` undefined: the runtime's default (DUP-11).
181
- return formatIsoDate(iso, locale, formatOptions);
182
- };
183
- }
184
-
185
- /**
186
- * Everything the kit's own trigger button carries, handed to a custom one
187
- * ({@link DateRangePickerProps.renderTrigger}) to spread onto its `<button>`. Spread
188
- * it WHOLE: the ref is how focus comes back when the panel closes, the id pair and
189
- * `aria-labelledby` are the 0.5.1 naming (an external `<label htmlFor>`, a form
190
- * library's `aria-describedby`), and `role`/`aria-haspopup`/`aria-controls`/
191
- * `aria-expanded` are what tell a screen reader this opens a calendar and whether it
192
- * is open. `className` is the kit's field look (42px with a label, `pe-9` for the
193
- * glyph the field draws at its end) — merge yours after it with `cn`.
194
- */
195
- export interface DateTriggerAttributes {
196
- ref: RefObject<HTMLButtonElement | null>;
197
- type: "button";
198
- id?: string;
199
- role: "combobox";
200
- "aria-haspopup": "dialog";
201
- "aria-controls": string;
202
- "aria-expanded": boolean;
203
- "aria-labelledby"?: string;
204
- "aria-label"?: string;
205
- "aria-describedby"?: string;
206
- "aria-invalid"?: true;
207
- /** The field's required state — `Field required` hands it down with the id pair. */
208
- "aria-required"?: boolean | "true" | "false";
209
- disabled?: boolean;
210
- /** Locked by the write lock (0.52, `commit` / `disabledReason`): focusable, and the
211
- * click opens nothing. Dress a custom trigger for it as for `disabled`. */
212
- "aria-disabled"?: true;
213
- onClick: () => void;
214
- className: string;
215
- }
216
-
217
- /** A custom trigger, as `DateField` calls it; each picker adapts it to its own props. */
218
- type TriggerRenderer = (attrs: DateTriggerAttributes, valueId: string) => ReactNode;
219
-
220
- /** A caller's trigger, as an element of its own: the attributes carry the trigger's
221
- * ref, and a ref is handed to a child as a prop, not passed to a function in the
222
- * middle of the parent's render. */
223
- function CustomTrigger({
224
- render,
225
- attrs,
226
- valueId,
227
- }: {
228
- render: TriggerRenderer;
229
- attrs: DateTriggerAttributes;
230
- valueId: string;
231
- }) {
232
- return render(attrs, valueId);
233
- }
234
-
235
- /**
236
- * The trigger's value wraps instead of truncating at Large and Extra large (0.32.1, the
237
- * 360 px Extra-large sweep; docs/text-size-harmonization.md §4 "nothing truncates"). A
238
- * range ("01/09/2026 – 30/09/2026") is 312 px at 150 %, and on a 360 px phone it read
239
- * "01/09/2026 – 30/…" — its end, the half a reader needs, was the half cut off. A
240
- * `large:` class, so Normal keeps its one-line field: since 0.33 (§10.17) the kit's one
241
- * `truncate-until-large` (tokens.css) in place of this file's own `truncate` +
242
- * `large:whitespace-normal large:break-words`.
243
- */
244
- const VALUE_TRUNCATE = "truncate-until-large";
245
-
246
- /**
247
- * The field-shaped button that opens the calendar.
248
- *
249
- * A component of its own rather than JSX inline in `Popover`'s `trigger` render prop,
250
- * because handing focus back to it is an effect and a render prop is not somewhere a
251
- * hook can go.
252
- */
253
- function DateFieldTrigger({
254
- open,
255
- toggle,
256
- triggerRef,
257
- triggerText,
258
- hasValue,
259
- labelledBy,
260
- valueId,
261
- padded,
262
- disabled,
263
- locked,
264
- invalid,
265
- required,
266
- panelId,
267
- aria,
268
- renderTrigger,
269
- fieldRef,
270
- }: {
271
- /** The caller's naming/description attributes, routed here from the field. */
272
- aria: TriggerAria;
273
- /** Draw the button yourself, with these attributes — see {@link DateTriggerAttributes}. */
274
- renderTrigger?: TriggerRenderer;
275
- open: boolean;
276
- toggle: () => void;
277
- triggerRef: RefObject<HTMLButtonElement | null>;
278
- /** The picker's own `ref` prop (API-3) — the same element as `triggerRef`. */
279
- fieldRef?: Ref<HTMLButtonElement>;
280
- /** The panel's id — `role="combobox"` requires `aria-controls`. */
281
- panelId: string;
282
- triggerText: string;
283
- hasValue: boolean;
284
- /** ids of the hidden label twin + the value span, in the order they are spoken. */
285
- labelledBy?: string;
286
- valueId: string;
287
- padded: boolean;
288
- disabled?: boolean;
289
- /** The write lock: the focusable kind of disabled (see `disabledReason`). */
290
- locked: boolean;
291
- invalid?: boolean;
292
- /** `aria-required`, on the trigger with the rest of the field's ARIA. */
293
- required?: boolean | "true" | "false";
294
- }) {
295
- const wasOpen = useRef(false);
296
- useEffect(() => {
297
- const justClosed = wasOpen.current && !open;
298
- wasOpen.current = open;
299
- if (!justClosed) return;
300
- // Only when the panel still HAD focus. The day the user was standing on has just
301
- // been unmounted with the panel, which drops focus to <body> and leaves a
302
- // keyboard user back at the top of the document with no idea where they were.
303
- // But an outside click closes this panel too, and that click has already given
304
- // focus to whatever it landed on — dragging it back here would be worse than the
305
- // bug, so a focus that is somewhere real is left alone.
306
- const active = document.activeElement;
307
- if (!active || active === document.body) triggerRef.current?.focus();
308
- // Here rather than through `useFocusTrap`'s `restoreFocus`, and not only because
309
- // `Popover` runs no trap to carry it: that option restores to whatever held focus
310
- // when the panel opened, and on Safari — and on Firefox on macOS — clicking a
311
- // button does not focus it, so "whatever held focus" is the page. The requirement
312
- // is this trigger, every time, however the panel was opened.
313
- }, [open, triggerRef]);
314
- // The caller's `ref` (API-3, refactor audit 2026-10) is handed the trigger once it is
315
- // mounted, rather than merged into `attrs.ref`: that one is a `RefObject` by contract
316
- // (`DateTriggerAttributes`), which a `renderTrigger` button may read, and this way a
317
- // caller's own trigger is covered as well as the kit's.
318
- useLayoutEffect(() => {
319
- if (!fieldRef) return;
320
- assignRef(fieldRef, triggerRef.current);
321
- return () => assignRef(fieldRef, null);
322
- }, [fieldRef, triggerRef]);
323
-
324
- // One attribute object, worn either by the kit's own button below or by a caller's
325
- // (`renderTrigger`) — so a custom trigger cannot quietly fall out of step with the
326
- // naming and state this one announces.
327
- const isInvalid = Boolean(invalid) || aria["aria-invalid"] === true || aria["aria-invalid"] === "true";
328
- const attrs: DateTriggerAttributes = {
329
- ref: triggerRef,
330
- type: "button",
331
- // The focusable kind of disabled while locked (Button's rule): native `disabled`
332
- // would take the field out of the tab order, and the reason with it.
333
- disabled: locked ? undefined : disabled,
334
- "aria-disabled": locked || undefined,
335
- // Locked, the calendar does not open. One open when the lock arrives closes: the
336
- // picker moves the field into the reason's frame, which remounts it, as Select's.
337
- onClick: () => {
338
- if (!locked) toggle();
339
- },
340
- // The name has to carry the VALUE. A bare `aria-label={label}` — which is what
341
- // this was — replaces the button's text outright, so the one field in the form
342
- // whose entire job is to show a date announced "Due date" and stopped there,
343
- // and a screen-reader user could not read back what they had picked without
344
- // opening the calendar and hunting for the selected day.
345
- //
346
- // Two ids rather than one composed string (`common.fieldValue`): "label: value"
347
- // is a sentence, and a name reference is spoken as the two texts in order with
348
- // no punctuation to translate at all. The hidden twin of the FieldLabel lives
349
- // in DateField, next to the label it copies.
350
- id: aria.id,
351
- "aria-labelledby": aria["aria-label"] && !aria["aria-labelledby"] ? undefined : labelledBy,
352
- "aria-label": aria["aria-label"],
353
- "aria-describedby": aria["aria-describedby"],
354
- // `role="combobox"` on a button that opens a calendar is the APG date-picker
355
- // shape, and it is what makes the next two lines legal: `button` supports
356
- // neither `aria-expanded` nor `aria-invalid`, so the previous markup set an
357
- // invalid state that announced nothing (ESLint's `role-supports-aria-props`).
358
- //
359
- // `aria-haspopup="dialog"` is now honest — it was not when this comment first
360
- // said so. `Popover` gained a real `role="dialog"` in the same wave, so the
361
- // trigger's promise and the panel's role finally agree. The phone sheet is a
362
- // `role="dialog"` too, and carries the same id.
363
- role: "combobox",
364
- "aria-haspopup": "dialog",
365
- "aria-controls": panelId,
366
- "aria-expanded": open,
367
- "aria-invalid": isInvalid || undefined,
368
- "aria-required": required,
369
- className: cn(
370
- FIELD_TRIGGER,
371
- "pe-9",
372
- padded && FIELD_FLOATING_PAD,
373
- (disabled || locked) && "cursor-not-allowed opacity-50",
374
- // An `aria-invalid` from a Field spread paints too, as on Input and AmountInput.
375
- isInvalid && FIELD_INVALID,
376
- ),
377
- };
378
- if (renderTrigger) return <CustomTrigger render={renderTrigger} attrs={attrs} valueId={valueId} />;
379
-
380
- return (
381
- <button {...attrs}>
382
- <span id={valueId} className={cn(VALUE_TRUNCATE, !hasValue && "text-placeholder")}>
383
- {/* `|| " "` (a NON-BREAKING space) — triggerText is "" when there is no value and no
384
- placeholder was passed. An empty span has no line box, so the
385
- trigger collapses to its padding and sits shorter than every
386
- other field beside it.
387
-
388
- It has to be a NON-BREAKING space. This read `|| " "` first, and
389
- that fix did nothing at all: an ordinary space is collapsible
390
- white space, and white space at the start and end of a line is
391
- removed — so the span rendered with height 0 and the trigger
392
- stayed 22px against the 42px of the fields either side of it
393
- (Keksdose live #294, measured in the browser: `span.textContent`
394
- WAS `" "` and `getBoundingClientRect().height` was 0). U+00A0 is
395
- not collapsible, so it holds the line. */}
396
- {triggerText || " "}
397
- </span>
398
- </button>
399
- );
400
- }
401
-
402
- /**
403
- * How a panel's body and its action row are put on screen — the popover stacks them,
404
- * the phone sheet pins the actions in its footer. Handed to the panel rather than
405
- * applied around it because the actions belong to the panel's own draft state
406
- * (`RangePanel`), while the frame they sit in belongs to the field.
407
- */
408
- export type PanelFrame = (body: ReactNode, actions?: ReactNode) => ReactNode;
409
-
410
- const popoverFrame: PanelFrame = (body, actions) =>
411
- actions ? (
412
- <div className="flex flex-col gap-2">
413
- {body}
414
- <div className="flex items-center justify-end gap-2 border-t border-subtle pt-2">{actions}</div>
415
- </div>
416
- ) : (
417
- body
418
- );
419
-
420
- /** A field-styled trigger that opens a portalled MiniCalendar. Shared by the
421
- * single- and range-date pickers (date-picker.tsx, date-range-picker.tsx). */
422
- export function DateField({
423
- triggerText,
424
- hasValue,
425
- label,
426
- disabled,
427
- locked = false,
428
- clearable,
429
- clearLabel,
430
- panelLabel,
431
- className,
432
- width,
433
- onClear,
434
- invalid,
435
- sheet = false,
436
- sheetBackCloses = true,
437
- renderTrigger,
438
- labelHint,
439
- children,
440
- // The trigger's, not the wrapper's: `Field`'s render-prop spreads it with the id
441
- // pair, and a required date read as optional while it sat on the role-less div.
442
- // Taken here rather than in `splitTriggerAria`, which MonthPicker shares.
443
- "aria-required": ariaRequired,
444
- fieldRef,
445
- ...rest
446
- }: Omit<ComponentPropsWithoutRef<"div">, "children"> & {
447
- /** The picker's `ref` prop: the trigger (API-3). */
448
- fieldRef?: Ref<HTMLButtonElement>;
449
- triggerText: string;
450
- hasValue: boolean;
451
- label?: ReactNode;
452
- /** A `FieldHint` for the label line, beside the label. */
453
- labelHint?: ReactNode;
454
- disabled?: boolean;
455
- /** The write lock is on: the trigger is focusable and opens nothing, no clear. The
456
- * picker draws the reason's frame around the field (or its step row). */
457
- locked?: boolean;
458
- clearable?: boolean;
459
- /** Already resolved by the picker (prop > provider > English). */
460
- clearLabel: string;
461
- /** The popover panel's accessible name, resolved likewise. */
462
- panelLabel: string;
463
- invalid?: boolean;
464
- className?: string;
465
- /** Popover panel width; omit for the default (a bare calendar). In rem so it grows
466
- * with the text size, like the Popover's own default (§3.2). */
467
- width?: number | RemLength;
468
- onClear: () => void;
469
- /** Open as a full-screen sheet instead of the popover — the picker decides when
470
- * (in the phone layout, `usePhoneLayout()`). */
471
- sheet?: boolean;
472
- /** The sheet's `FullBleedDialog backCloses`. */
473
- sheetBackCloses?: boolean;
474
- renderTrigger?: TriggerRenderer;
475
- children: (close: () => void, frame: PanelFrame) => ReactNode;
476
- }) {
477
- // A clear is a change like any other: not offered while locked.
478
- const showClear = Boolean(clearable && hasValue && !disabled && !locked);
479
- const [aria, wrapperRest] = splitTriggerAria(rest);
480
- // The trigger, for the clear to hand the focus to (INP-10, below), beside the picker's
481
- // own `ref`.
482
- const triggerEl = useRef<HTMLButtonElement | null>(null);
483
- const toTrigger = useCallback(
484
- (node: HTMLButtonElement | null) => {
485
- triggerEl.current = node;
486
- assignRef(fieldRef, node);
487
- },
488
- [fieldRef],
489
- );
490
- // The panel is portalled to <body> and leaves the subtree whose `dir` it inherited,
491
- // so a calendar in an RTL form opened LTR — the grid's columns, its arrow keys and
492
- // its chevrons all the wrong way round. Read at the moment of opening (the only way
493
- // the popover opens is through `toggle`) and put back on the panel.
494
- const rootRef = useRef<HTMLDivElement>(null);
495
- const [dir, setDir] = useState<Direction>("ltr");
496
- const id = useId();
497
- const labelId = `${id}-label`;
498
- const valueId = `${id}-value`;
499
- const panelId = `${id}-panel`;
500
- // Only a STRING label can be reused as a name; a ReactNode may be a whole row with
501
- // its own interactive "?" hint in it, and naming a button with that reads the hint
502
- // out as part of the field's name.
503
- const named = typeof label === "string";
504
- // The sheet's open flag. Only the phone branch owns one: on desktop `Popover` owns
505
- // it, so the two can never disagree about what is on screen.
506
- const [sheetOpen, setSheetOpen] = useState(false);
507
- const sheetTriggerRef = useRef<HTMLButtonElement>(null);
508
- const closeSheet = () => setSheetOpen(false);
509
- const sheetLabels = useKitLabels("pickerSheet", DEFAULT_PICKER_SHEET_LABELS);
510
- const sheetFrame: PanelFrame = (body, actions) => (
511
- <FullBleedDialog
512
- open
513
- onClose={closeSheet}
514
- // The same id the popover panel wears, so the trigger's `aria-controls` holds in
515
- // both presentations; named the way the popover is.
516
- id={panelId}
517
- aria-label={panelLabel}
518
- header={panelLabel}
519
- // `pickerSheet.close`: the one "close this full-screen picker" string the kit
520
- // already translates, rather than a second key saying the same thing.
521
- closeLabel={sheetLabels.close}
522
- backCloses={sheetBackCloses}
523
- dir={dir}
524
- // Portalled to <body>, the sheet is not inside the field's wrapper, so a
525
- // document-level "outside click" listener — a Popover or dropdown this field
526
- // sits in — would read a tap on a day as outside and unmount the cell before
527
- // its click (Keksdose dev#477, the fix `PickerSheet` carries).
528
- onMouseDown={(e) => e.stopPropagation()}
529
- footer={actions}
530
- >
531
- {body}
532
- </FullBleedDialog>
533
- );
534
- const fieldTrigger = ({
535
- open,
536
- toggle,
537
- ref,
538
- }: {
539
- open: boolean;
540
- toggle: () => void;
541
- ref: RefObject<HTMLButtonElement | null>;
542
- }) => (
543
- <DateFieldTrigger
544
- open={open}
545
- toggle={() => {
546
- setDir(dirOf(rootRef.current));
547
- toggle();
548
- }}
549
- triggerRef={ref}
550
- triggerText={triggerText}
551
- hasValue={hasValue}
552
- // ALWAYS a name reference, never `undefined`. A `<button>` takes its
553
- // accessible name from its contents, so an unlabelled trigger used to
554
- // announce its own date text for free. `role="combobox"` does not —
555
- // content is excluded from name computation for that role — so leaving
556
- // this undefined made an unlabelled date field announce nothing at all.
557
- // Named: "label, value". Unnamed: the value alone, which is what the
558
- // button was saying before.
559
- //
560
- // A caller's own reference comes first. And when the caller gives the field
561
- // an `id` (so an external `<label htmlFor>` can point at it), the trigger
562
- // lists ITSELF first: a self-reference in `aria-labelledby` is resolved
563
- // from the element's native label (accname 2B → 2D), so "Due date" from
564
- // that <label> is spoken before the value, instead of being overridden.
565
- labelledBy={[
566
- aria["aria-labelledby"],
567
- named ? labelId : !aria["aria-labelledby"] && aria.id ? aria.id : undefined,
568
- valueId,
569
- ]
570
- .filter(Boolean)
571
- .join(" ")}
572
- aria={aria}
573
- panelId={panelId}
574
- valueId={valueId}
575
- padded={label !== undefined}
576
- disabled={disabled}
577
- locked={locked}
578
- invalid={invalid}
579
- required={ariaRequired}
580
- renderTrigger={renderTrigger}
581
- fieldRef={toTrigger}
582
- />
583
- );
584
- return (
585
- // The caller's attributes land here, on the field's own box — the trigger inside is
586
- // named by `aria-labelledby` and must keep the id pair it is given.
587
- // At Large a labelled box is a grid: the label above, the calendar glyph and the
588
- // clear × measured against the trigger's row (LABEL_ABOVE_BOX, 0.33 §10.17).
589
- <div {...wrapperRest} ref={rootRef} className={cn("relative", label !== undefined && LABEL_ABOVE_BOX, className)}>
590
- {label !== undefined && <FieldLabelLine label={label} hint={labelHint} />}
591
- {/* The visible FieldLabel is a plain span, not a `<label htmlFor>`, so it names
592
- nothing on its own — this hidden twin is what the trigger is named by.
593
- `aria-hidden` because a name reference reads a hidden element deliberately
594
- (accname §4.3.1), and without it the label would be announced twice: once as
595
- loose text before the button, once inside the button's own name.
596
- `sr-only-fixed` rather than `sr-only` — see the note on the class in
597
- tokens.css. */}
598
- {named && (
599
- <span id={labelId} aria-hidden className="sr-only-fixed">
600
- {label}
601
- </span>
602
- )}
603
- {sheet ? (
604
- <>
605
- {fieldTrigger({ open: sheetOpen, toggle: () => setSheetOpen((v) => !v), ref: sheetTriggerRef })}
606
- {/* Mounted only while open, like the popover's children: the panel's draft is
607
- born with it, so every open starts again from the committed value. */}
608
- {sheetOpen && children(closeSheet, sheetFrame)}
609
- </>
610
- ) : (
611
- <Popover
612
- width={width}
613
- panelId={panelId}
614
- // Named for what it is. Unnamed, it fell back to `popover.panel`, and a date
615
- // field announced its calendar as "Popover" — in English, in every language.
616
- labels={{ panel: panelLabel }}
617
- dir={dir}
618
- trigger={fieldTrigger}
619
- >
620
- {(close) => children(close, popoverFrame)}
621
- </Popover>
622
- )}
623
- {showClear ? (
624
- <button
625
- type="button"
626
- aria-label={clearLabel}
627
- onClick={() => {
628
- onClear();
629
- // The × goes with the value, so a keyboard clear left the focus on a button
630
- // that was about to unmount — and it fell to <body> (refactor audit
631
- // 2026-10-30, INP-10). The trigger, as SearchField's clear does.
632
- triggerEl.current?.focus();
633
- }}
634
- className="absolute end-1.5 top-1/2 -translate-y-1/2 rounded p-1 text-placeholder hover:text-secondary"
635
- >
636
- <X className="size-4" />
637
- </button>
638
- ) : (
639
- <Calendar
640
- aria-hidden
641
- className="pointer-events-none absolute end-2.5 top-1/2 size-4 -translate-y-1/2 text-placeholder"
642
- />
643
- )}
644
- </div>
645
- );
646
- }
647
-
648
- /**
649
- * The picker's own label props, folded into one `datePicker` override so they sit at
650
- * the top of the same precedence chain as everything else: prop > provider > English.
651
- * They predate the provider and stay public API, which is why they are not simply
652
- * replaced by a `labels` prop.
653
- */
654
- export function useDatePickerLabels(
655
- clearLabel: string | undefined,
656
- stepLabels: { prev: string; next: string } | undefined,
657
- todayLabel: string | undefined,
658
- ): DatePickerLabels {
659
- const prev = stepLabels?.prev;
660
- const next = stepLabels?.next;
661
- const fromProps = useMemo(() => {
662
- const out: Partial<DatePickerLabels> = {};
663
- if (clearLabel !== undefined) out.clear = clearLabel;
664
- if (prev !== undefined) out.previousDay = prev;
665
- if (next !== undefined) out.nextDay = next;
666
- if (todayLabel !== undefined) out.today = todayLabel;
667
- return out;
668
- }, [clearLabel, prev, next, todayLabel]);
669
- return useKitLabels("datePicker", DEFAULT_DATE_PICKER_LABELS, fromProps);
670
- }
671
-
672
- /**
673
- * The caller's `hint` when it has no label line to ride: at the end of the field,
674
- * outside the box, as an unlabelled {@link Select} places its FieldHint (0.15.5 P8).
675
- */
676
- export function withEndHint(field: ReactNode, hint: ReactNode): ReactNode {
677
- if (hint === undefined) return field;
678
- return (
679
- <div className="flex items-center gap-1.5">
680
- <div className="min-w-0 flex-1">{field}</div>
681
- <span className="flex shrink-0 items-center">{hint}</span>
682
- </div>
683
- );
684
- }