@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,645 +0,0 @@
1
- import { useId, useRef, useState } from "react";
2
- import type { ComponentPropsWithoutRef, ReactNode, Ref } from "react";
3
- import { createPortal } from "react-dom";
4
- import { cn } from "../lib/cn";
5
- import { hasContent } from "../lib/presence";
6
- import { FIELD_BASE, FIELD_FLOATING_PAD, FIELD_INVALID } from "./field-base";
7
- import { Spinner } from "./spinner";
8
- import { useAnchoredPanel } from "../hooks/use-anchored-panel";
9
- import { takeEscape, useDismissLayer } from "../hooks/use-dismiss";
10
- import { isImeEnter } from "../lib/ime";
11
- import { isQuietFocus } from "../lib/quiet-focus";
12
- import { useAnchorDir } from "./use-anchor-dir";
13
- import {
14
- anchoredHeadingClass,
15
- ComboboxFieldLabel,
16
- DISABLED_ROW_CLASS,
17
- endHintRowProps,
18
- GroupedOptions,
19
- groupRuns,
20
- isOptionEnabled,
21
- stepEnabled,
22
- SUGGESTION_LIST_CLASS,
23
- suggestionRowClass,
24
- useActiveOptionScroll,
25
- useOptionSource,
26
- type ComboOption,
27
- } from "./combobox-core";
28
- import { DEFAULT_COMBOBOX_LABELS, useKitLabels } from "../i18n/kit-labels";
29
- import {
30
- EndHintRow,
31
- FieldCaption,
32
- LABEL_IN_ROW,
33
- LockedReason,
34
- mergeDescribedBy,
35
- StaticLabelRow,
36
- useFieldError,
37
- useFieldHint,
38
- useLockReason,
39
- type DisabledReasonDisplay,
40
- type FieldHelpProps,
41
- } from "./field-parts";
42
- import type { CommitScope } from "./write-lock";
43
-
44
- /**
45
- * `value`/`onChange` are the TEXT's, and `onSelect` is "a suggestion was taken" —
46
- * not the DOM's text-selection event — so the input's own spellings of those three
47
- * are omitted. Everything else reaches the `<input>`, the way it does on {@link Input}.
48
- */
49
- export interface AutocompleteProps<V extends string | number = string>
50
- extends
51
- Omit<
52
- ComponentPropsWithoutRef<"input">,
53
- "value" | "defaultValue" | "onChange" | "onSelect" | "children" | "type" | "size"
54
- >,
55
- FieldHelpProps {
56
- /** What is in the field. Controlled, and never reset by the component: opening,
57
- * closing and a failed lookup all leave it exactly as typed. */
58
- value: string;
59
- /** Every keystroke — and, with `fillOnSelect`, the label of a taken suggestion. */
60
- onChange: (text: string) => void;
61
- /** Suggestions the caller already has (e.g. from its own query hook). Narrowed by
62
- * the text unless `filter={false}`. An option with `disabled: true` is listed but
63
- * cannot be taken — see {@link ComboOption.disabled}. */
64
- options?: ComboOption<V>[];
65
- /** Or: fetch them. Debounced (`debounceMs`), race-safe, only at `minChars` and up,
66
- * never while the field is idle; a rejection shows `loadErrorLabel` and empties
67
- * the list rather than leaving the previous text's rows under it. */
68
- loadOptions?: (query: string) => Promise<ComboOption<V>[]>;
69
- /** Narrow `options` by label/sublabel substring. Default `true`. Pass `false` for
70
- * a list a server has already searched and ranked — it is shown as given. */
71
- filter?: boolean;
72
- /** External loading flag (a caller-side fetch), OR-ed with `loadOptions`'. */
73
- loading?: boolean;
74
- /** Below this many characters nothing is offered or fetched. Default 1: an empty
75
- * field asks nothing — focusing it is not a search. */
76
- minChars?: number;
77
- /** Quiet time before `loadOptions` runs. Default 300 ms — an ordinary typist's
78
- * inter-key interval is 150–250 ms, so the pickers' 150 fires on nearly every
79
- * letter, which a rate-limited geocoder cannot afford. */
80
- debounceMs?: number;
81
- /**
82
- * Whether the list MAY show — controlled. Omit (or pass `undefined`) and the field
83
- * decides: open while focused, until Escape, Tab or a taken row. `false` keeps it
84
- * shut whatever the user does, and stops `loadOptions` asking — keksdose's address
85
- * search, with its confirm map up, where it used to pass `minChars={Infinity}`.
86
- * `true` shows it even unfocused.
87
- *
88
- * Even open, the list only APPEARS when it has something to show (rows, or a
89
- * status line); `aria-expanded` follows what appears, not this flag.
90
- */
91
- open?: boolean;
92
- /** The field wants the list open or shut — focus, typing, ↓/↑ open it; blur,
93
- * Escape, Tab and taking a row shut it. Called on every change, controlled or not. */
94
- onOpenChange?: (open: boolean) => void;
95
- /**
96
- * `"sm"`: the 28px, 12px-type field of {@link Select}'s `size="sm"`, with the icon,
97
- * spinner and list rows scaled to match — for a card or toolbar whose buttons are
98
- * small. `"md"` (default) is the form field. Unlabelled only, as on `Select`: a
99
- * floating label needs the tall box, so a labelled field ignores `"sm"`.
100
- *
101
- * A NUMBER is still the native `size` attribute (the width in characters), passed
102
- * straight through.
103
- */
104
- size?: "sm" | "md" | number;
105
- /** A suggestion was taken (click, or Enter on the highlighted row). */
106
- onSelect?: (option: ComboOption<V>) => void;
107
- /**
108
- * Put the taken suggestion's label into the field (`onChange(label)`). Default
109
- * `true` — the free-text case, where the text IS the value and a suggestion only
110
- * completes it (an address field). Pass `false` where taking a row is an ACTION
111
- * and the field is only the search that found it; the text then stays as typed.
112
- */
113
- fillOnSelect?: boolean;
114
- /** A floating label, as on {@link Combobox} — a real `<label for>` on the input.
115
- * Names the field (`aria-labelledby`) unless an `aria-label` is given. */
116
- label?: ReactNode;
117
- /** Leading decoration inside the field (a pin, a magnifier). Decorative: the
118
- * label names the field. An `<svg>` child is sized by the field — 16px, or 14px
119
- * at `size="sm"` — so a lucide icon needs no class of its own. */
120
- icon?: ReactNode;
121
- /** Required and unanswered — {@link FIELD_INVALID}. */
122
- invalid?: boolean;
123
- /** What is wrong with the VALUE, as {@link Input}'s `error`: under the field, on
124
- * its `aria-describedby`, implies `invalid`. Not a failed lookup — that is
125
- * `loadErrorLabel`, shown in the list. */
126
- error?: ReactNode;
127
- /**
128
- * Standing advice — {@link Combobox}'s `hint`, so this field reads like every other
129
- * (keksdose K4): plain TEXT is a caption under the field on the input's
130
- * `aria-describedby`, before any error; a {@link FieldHint} "?" rides the label line,
131
- * or with no label sits at the field's end edge, outside the box. Not the list's
132
- * `status` line, which talks about the lookup, not the field.
133
- *
134
- * Pass it — even as `undefined` — on a field whose hint comes and goes (0.24): the
135
- * unlabelled field then keeps its end-hint row whether or not a "?" is in it, so the
136
- * `<input>` is never re-parented, and focus and caret survive the toggle. The rule
137
- * the rest of the family has had since 0.23 (and the fields since 0.22).
138
- */
139
- hint?: ReactNode;
140
- /**
141
- * The caller's own line in the list, replacing the automatic one (loading / failed
142
- * / no results). For what only the caller knows: "offline", "the address service
143
- * is switched off", a privacy note, the hint a caller-fetched list needs below its
144
- * own minimum. While set, the list opens even with no rows. Announced politely.
145
- */
146
- status?: ReactNode;
147
- /** Default: `combobox.noResults` from the {@link UiKitProvider}, else English. */
148
- emptyLabel?: string;
149
- /** Default: `combobox.loadError`. */
150
- loadErrorLabel?: string;
151
- /** Classes for the `<input>` itself; `className` styles the wrapper. */
152
- inputClassName?: string;
153
- /**
154
- * Why the field cannot be changed — {@link Button}'s `disabledReason`, the Combobox
155
- * family's write lock (keksdose G2, 0.23), for a field whose pick SAVES: an address
156
- * search whose taken row writes the address, a lookup that links a record.
157
- *
158
- * With a reason the input stays focusable and `aria-disabled`, is `readOnly` (the
159
- * settled grey FIELD_BASE gives a `[readonly]` field), opens no list and asks no
160
- * `loadOptions` — whatever `open` says — and nothing reaches `onChange`, `onSelect` or
161
- * `onOpenChange(true)`. Enter is swallowed, so a locked field does not submit the form
162
- * around it, and a caller's `onKeyDown` does not hear it; every other key still
163
- * reaches the caller (an Escape that closes its panel) and the caret. The reason is in
164
- * the kit {@link Tooltip} and on the input's `aria-describedby`. Wins over `disabled`.
165
- */
166
- disabledReason?: ReactNode;
167
- /**
168
- * This field COMMITS. Under a locked {@link WriteLockProvider} it is locked the
169
- * `disabledReason` way with the lock's reason (which wins over its own). A search
170
- * whose result is only draft state — the form's Save writes it — leaves this off and
171
- * stays live under the lock. No provider, or an unlocked one: no effect.
172
- */
173
- commit?: CommitScope;
174
- /** Where the reason shows — {@link Button}'s `disabledReasonDisplay`: a line under the
175
- * field at Large and on a touch screen by default, the tooltip otherwise (DUP-3). */
176
- disabledReasonDisplay?: DisabledReasonDisplay;
177
- /** The `<input>`. A React 19 ref prop since 0.34 (MOD-4, refactor audit 2026-10): it was
178
- * `forwardRef`, cast back to a generic function, with a `displayName` line beside it. */
179
- ref?: Ref<HTMLInputElement>;
180
- }
181
-
182
- /**
183
- * An inline, async-capable text field with a suggestion list under it — the
184
- * WAI-ARIA APG "editable combobox with list autocomplete".
185
- *
186
- * Two jobs, one control:
187
- * - **free text** (kastlan's address field): the text is the value, the list only
188
- * offers completions, and taking one fills the field (`fillOnSelect`, default);
189
- * - **search-then-act** (keksdose's address search): the text is a query, taking a
190
- * row calls `onSelect` and nothing is held (`fillOnSelect={false}`).
191
- *
192
- * How it differs from its siblings: {@link Combobox} is free text over a STATIC
193
- * string pool and opens on focus; {@link EntityCombobox} is a trigger holding an id.
194
- * This one keeps no value of its own, never resets the text, asks nothing below
195
- * `minChars`, and reports a failed lookup instead of showing stale rows.
196
- *
197
- * Focus never leaves the `<input>`: `aria-activedescendant` names the highlighted
198
- * row, `aria-controls` the list, and a polite live region says what the list now
199
- * holds. Keyboard: ↓/↑ move (↓ opens) over every row but a `disabled` one, Enter
200
- * takes the highlighted row (with none,
201
- * Enter is left to the form), Escape closes, Tab closes and moves on; Home/End stay
202
- * with the caret. An Escape that closes an open list is consumed and never reaches the
203
- * caller; with the list closed it does. For every other key a caller's `onKeyDown`
204
- * runs first and may `preventDefault()` to
205
- * keep a key for itself.
206
- *
207
- * The list is portalled and anchored under the field on every screen size: the
208
- * field already carries the keyboard, and `useAnchoredPanel` keeps the list clear
209
- * of it on a phone. There is no full-screen sheet as {@link Combobox} has.
210
- *
211
- * Generic over the option value (`ComboOption<V>`); the ref is the `<input>`'s.
212
- */
213
- export function Autocomplete<V extends string | number = string>(props: AutocompleteProps<V>) {
214
- const {
215
- ref,
216
- value,
217
- onChange,
218
- options,
219
- loadOptions,
220
- filter,
221
- loading,
222
- minChars = 1,
223
- debounceMs = 300,
224
- onSelect,
225
- fillOnSelect = true,
226
- label,
227
- icon,
228
- invalid,
229
- error,
230
- hint,
231
- help,
232
- status,
233
- emptyLabel,
234
- loadErrorLabel,
235
- open: openProp,
236
- onOpenChange,
237
- size,
238
- className,
239
- inputClassName,
240
- id,
241
- disabled,
242
- disabledReason,
243
- disabledReasonDisplay,
244
- commit,
245
- onKeyDown,
246
- onFocus,
247
- onBlur,
248
- "aria-label": ariaLabel,
249
- "aria-labelledby": ariaLabelledBy,
250
- "aria-describedby": ariaDescribedBy,
251
- ...rest
252
- } = props;
253
- const generated = useId();
254
- const fieldId = id ?? generated;
255
- // Off the GENERATED id: a caller's `id` is theirs to collide with.
256
- const listboxId = `${generated}-listbox`;
257
- const labelId = `${generated}-label`;
258
- const optionId = (index: number) => `${generated}-option-${index}`;
259
- const fieldRef = useRef<HTMLDivElement>(null);
260
- const labels = useKitLabels("combobox", DEFAULT_COMBOBOX_LABELS, {
261
- noResults: emptyLabel,
262
- loadError: loadErrorLabel,
263
- });
264
- const hintParts = useFieldHint(hint, ariaDescribedBy, { help, name: label ?? ariaLabel });
265
- // A form library's `aria-invalid` paints as well as announces (DUP-8: it only
266
- // announced, through the spread below).
267
- const field = useFieldError(error, invalid, hintParts.describedBy, rest["aria-invalid"]);
268
-
269
- /** The user's intent: the field is focused and the list has not been dismissed.
270
- * Whether anything SHOWS is decided below, from what there is to show. */
271
- const [ownOpen, setOwnOpen] = useState(false);
272
- // Controlled when the caller passes a boolean. The own state is kept up to date
273
- // either way, so a caller that controls only SOMETIMES (`open={confirming ? false :
274
- // undefined}`) hands back a field that is exactly as open as focus says it is.
275
- const open = openProp ?? ownOpen;
276
- // The field took the tour's quiet focus (§11.8) and has not opened since.
277
- const quietRef = useRef(false);
278
- const setOpen = (next: boolean) => {
279
- setOwnOpen(next);
280
- if (next !== open) onOpenChange?.(next);
281
- };
282
- const [active, setActive] = useState(-1);
283
- // The lock: focusable, `readOnly`, no list — see `disabledReason`. Folded into `live`,
284
- // so a locked field asks nothing and shows nothing even with `open` held true.
285
- const lock = useLockReason(commit, disabledReason);
286
- const locked = lock.locked;
287
- const live = open && !disabled && !locked;
288
- const { results, busy, failed, tooShort } = useOptionSource<V>({
289
- options,
290
- loadOptions,
291
- loading,
292
- filter,
293
- minChars,
294
- debounceMs,
295
- query: value,
296
- active: live,
297
- });
298
-
299
- const hasStatus = hasContent(status);
300
- // The visible line under the rows. Nothing below `minChars` unless the caller has
301
- // something to say — an empty field opening a box that says "type more" is noise.
302
- const statusLine: ReactNode = hasStatus
303
- ? status
304
- : tooShort
305
- ? null
306
- : busy && results.length === 0
307
- ? labels.loading
308
- : failed
309
- ? labels.loadError
310
- : !busy && results.length === 0
311
- ? labels.noResults
312
- : null;
313
- const expanded = live && (results.length > 0 || statusLine !== null);
314
- // A disabled row is never the keyboard's — not even when a list that changed under
315
- // the highlight put one there.
316
- const activeId = expanded && isOptionEnabled(results[active]) ? optionId(active) : undefined;
317
- useActiveOptionScroll(activeId);
318
- const { rect, top, bottom, maxHeight, above } = useAnchoredPanel(fieldRef, expanded, { preferredHeight: 256 });
319
- const dir = useAnchorDir(fieldRef, expanded);
320
-
321
- const close = () => {
322
- setOpen(false);
323
- setActive(-1);
324
- };
325
- // The list is a layer on the kit's Escape stack while it shows (Wave 2, DUP-1).
326
- useDismissLayer(expanded, close);
327
- const take = (o: ComboOption<V>) => {
328
- if (o.disabled || locked) return;
329
- if (fillOnSelect) onChange(o.label);
330
- onSelect?.(o);
331
- close();
332
- };
333
-
334
- const hasLabel = label !== undefined;
335
- // `size="sm"` is for an UNLABELLED field, as on Select: the floating label needs the
336
- // tall box. A number is the native attribute.
337
- const small = size === "sm" && !hasLabel;
338
- const nativeSize = typeof size === "number" ? size : undefined;
339
- // The caller's name wins; else the floating label, by reference so a non-string
340
- // label still names the field.
341
- const labelledBy = ariaLabel === undefined ? (ariaLabelledBy ?? (hasLabel ? labelId : undefined)) : undefined;
342
- // While locked the field sits in the reason's Tooltip — in a fragment with a hidden
343
- // copy of the reason, Button's anatomy; `block` so a full-width field stays full width.
344
- const withLock = (box: ReactNode) =>
345
- locked ? (
346
- <LockedReason lock={lock} display={disabledReasonDisplay} className="block">
347
- {box}
348
- </LockedReason>
349
- ) : (
350
- box
351
- );
352
-
353
- return (
354
- // `relative`: the floating label and the live region's `sr-only` both need a
355
- // local containing block.
356
- <div className={cn("relative", className)}>
357
- {/* A real <label for> (lenkbank), and still `aria-labelledby`'s target, so the
358
- name — and the listbox's, which borrows it — is exactly what it was. */}
359
- {hasLabel && hintParts.labelHint === undefined && (
360
- <ComboboxFieldLabel id={labelId} htmlFor={fieldId}>
361
- {label}
362
- </ComboboxFieldLabel>
363
- )}
364
- {/* `"hint" in props`: the family's 0.22 rule (see `endHintRowProps`) — passed at
365
- all, even as `undefined`, a hint keeps the unlabelled field's end-hint row, so
366
- a "?" coming and going never re-parents the <input> under the caret (0.24, the
367
- last of the family to get it; the siblings had it in 0.23). */}
368
- <EndHintRow {...endHintRowProps("hint" in props, hasLabel, hintParts.labelHint)}>
369
- {withLock(
370
- <div ref={fieldRef} className={cn("relative", locked && "cursor-not-allowed")}>
371
- {icon && (
372
- <span
373
- aria-hidden
374
- className={cn(
375
- "pointer-events-none absolute flex text-muted",
376
- small ? "start-2 [&>svg]:size-3.5" : "start-2.5 [&>svg]:size-4",
377
- // Labelled, the icon sits on the VALUE's line — the one line box below
378
- // FIELD_FLOATING_PAD's `pt-4` and the 1px border — not on the middle of
379
- // the box. Centred on the box it rose into the top strip and sat on the
380
- // label's first letters, which float at the same start inset. On the
381
- // value line it is beside what it describes, and the label keeps the
382
- // start edge every other label in the form's column shares.
383
- // At Large the label stands above the field and the strip is gone
384
- // (0.33, §10.17): the value's line is under FIELD_BASE's `py-2`.
385
- hasLabel
386
- ? "top-[calc(1rem+1px)] h-5 items-center large:top-[calc(0.5rem+1px)]"
387
- : "top-1/2 -translate-y-1/2",
388
- )}
389
- >
390
- {icon}
391
- </span>
392
- )}
393
- <input
394
- {...rest}
395
- ref={ref}
396
- id={fieldId}
397
- size={nativeSize}
398
- type="text"
399
- value={value}
400
- // Locked: focusable, `readOnly`, `aria-disabled` — see `disabledReason`.
401
- disabled={locked ? undefined : disabled}
402
- readOnly={locked || rest.readOnly}
403
- aria-disabled={locked || rest["aria-disabled"]}
404
- role="combobox"
405
- aria-autocomplete="list"
406
- aria-expanded={expanded}
407
- // Required by the role, and set while closed too, as on the siblings.
408
- aria-controls={listboxId}
409
- aria-activedescendant={activeId}
410
- aria-label={ariaLabel}
411
- aria-labelledby={labelledBy}
412
- aria-invalid={field.isInvalid || rest["aria-invalid"] || undefined}
413
- aria-describedby={mergeDescribedBy(field.describedBy, locked && lock.reasonId)}
414
- autoComplete="off"
415
- onFocus={(e) => {
416
- onFocus?.(e);
417
- // A locked field takes focus to say why, and opens nothing.
418
- if (locked) return;
419
- // The tour's focus on arrival (§11.8) looks nothing up: the list would
420
- // cover its card (0.50.1). A click, ArrowDown or typing opens it.
421
- if (isQuietFocus(e.currentTarget)) {
422
- quietRef.current = true;
423
- return;
424
- }
425
- // A seeded field (keksdose's `initialQuery`) is looked up as it is
426
- // focused; an empty one asks nothing, because of `minChars`.
427
- setOpen(true);
428
- }}
429
- // After a quiet focus, the person's click on the already-focused field
430
- // fires no `focus`: the click is their "open" instead.
431
- onClick={(e) => {
432
- rest.onClick?.(e);
433
- if (!quietRef.current || locked) return;
434
- quietRef.current = false;
435
- setOpen(true);
436
- }}
437
- onBlur={(e) => {
438
- quietRef.current = false;
439
- onBlur?.(e);
440
- close();
441
- }}
442
- onChange={(e) => {
443
- if (locked) return;
444
- onChange(e.target.value);
445
- setOpen(true);
446
- setActive(-1);
447
- }}
448
- onKeyDown={(e) => {
449
- // Locked: Enter is swallowed (no form submit, no caller's "search now");
450
- // every other key is the caller's and the caret's. No list to drive.
451
- if (locked) {
452
- if (e.key === "Enter") e.preventDefault();
453
- else onKeyDown?.(e);
454
- return;
455
- }
456
- // An Escape that closes the OPEN list is the list's, and is consumed before
457
- // the caller sees it. A caller whose Escape means "close the panel" (keksdose's
458
- // address search) otherwise closed the whole panel when the user only meant
459
- // to dismiss the suggestions — the opposite of what the docs promised.
460
- if (e.key === "Escape" && expanded && takeEscape(e)) return;
461
- onKeyDown?.(e);
462
- if (e.defaultPrevented) return;
463
- // Disabled rows are passed over; at either end the highlight stays put.
464
- if (e.key === "ArrowDown") {
465
- e.preventDefault();
466
- if (!open) setOpen(true);
467
- else setActive((i) => stepEnabled(results, i, 1));
468
- } else if (e.key === "ArrowUp") {
469
- e.preventDefault();
470
- if (!open) setOpen(true);
471
- // From "nothing highlighted", Up goes to the bottom, as the APG has it.
472
- else setActive((i) => stepEnabled(results, i < 0 ? results.length : i, -1));
473
- } else if (e.key === "Enter") {
474
- // No row highlighted: the text is the answer, and a form's own submit
475
- // is left alone. Nor is a row taken by the Enter that confirms an IME
476
- // composition, which is the IME's (BUG-9).
477
- if (expanded && activeId && !isImeEnter(e)) {
478
- e.preventDefault();
479
- take(results[active]);
480
- }
481
- } else if (e.key === "Tab") {
482
- close();
483
- }
484
- }}
485
- className={cn(
486
- FIELD_BASE,
487
- hasLabel && FIELD_FLOATING_PAD,
488
- // Select's `SELECT_SM` box: a fixed 28px, so the caller's line height
489
- // cannot grow it.
490
- small && "h-7 py-0 pe-2 ps-2 text-xs",
491
- icon ? (small ? "ps-7" : "ps-8") : undefined,
492
- busy && (small ? "pe-7" : "pe-9"),
493
- field.isInvalid && FIELD_INVALID,
494
- inputClassName,
495
- )}
496
- />
497
- {busy && live && (
498
- // Decorative: the live region below already says "Loading…".
499
- <span
500
- className={cn(
501
- "pointer-events-none absolute top-1/2 flex -translate-y-1/2",
502
- small ? "end-2" : "end-2.5",
503
- )}
504
- >
505
- <Spinner label={null} className={small ? "h-3.5 w-3.5" : "h-4 w-4"} />
506
- </span>
507
- )}
508
- </div>,
509
- )}
510
- </EndHintRow>
511
- {/* With a "?" the label shares the top strip with it, after the field so the "?"
512
- follows the control in the tab order (as on Input and Select). */}
513
- {hasLabel && hintParts.labelHint !== undefined && (
514
- <StaticLabelRow hint={hintParts.labelHint}>
515
- <ComboboxFieldLabel id={labelId} htmlFor={fieldId} className={LABEL_IN_ROW}>
516
- {label}
517
- </ComboboxFieldLabel>
518
- </StaticLabelRow>
519
- )}
520
- <FieldCaption parts={hintParts} />
521
- {field.errorEl}
522
- {/* The live region, kept mounted so a change IS an announcement: focus stays
523
- in the field, and without it a reader typed into a geocoder and heard only
524
- their own letters. The panel's visible line is aria-hidden in favour of
525
- this, which also carries the row count the eye reads off the list. */}
526
- <div role="status" aria-live="polite" className="sr-only">
527
- {!live
528
- ? null
529
- : statusLine !== null
530
- ? statusLine
531
- : results.length > 0
532
- ? labels.resultCount(results.length)
533
- : null}
534
- </div>
535
- {expanded &&
536
- rect &&
537
- typeof document !== "undefined" &&
538
- createPortal(
539
- <div
540
- // Every press inside the list keeps focus in the field — rows, the status
541
- // line, the scrollbar — or the input's blur would close the list first.
542
- role="presentation"
543
- // A kit layer, for the tour's layer order (0.50, docs/tours-harmonization.md §11.6).
544
- data-kit-layer=""
545
- // Portalled out of the form's `dir`; the field's is put back. The list is
546
- // exactly the field's width, so `left` places it in either direction.
547
- dir={dir}
548
- onMouseDown={(e) => e.preventDefault()}
549
- // The family's suggestion box (DUP-4), as a column: the list scrolls inside
550
- // it and the status line stays under the rows.
551
- className={cn(SUGGESTION_LIST_CLASS, "fixed z-50 flex flex-col overflow-hidden py-0")}
552
- // Flipped above, the list hangs from its bottom edge: three rows under a
553
- // 256 px cap, placed by `top`, floated ~176 px above the field (keksdose K1),
554
- // and the rows come and go as the user types.
555
- style={{ ...(above ? { bottom } : { top }), left: rect.left, width: rect.width, maxHeight }}
556
- >
557
- {results.length > 0 && (
558
- <ul
559
- id={listboxId}
560
- role="listbox"
561
- aria-label={ariaLabel}
562
- aria-labelledby={labelledBy}
563
- className="min-h-0 flex-1 overflow-y-auto py-1"
564
- >
565
- {/* One heading per group, a `role="group"` it names, as in the core panel
566
- (refactor audit 2026-10-30, INP-8), drawn by the same renderer: an
567
- option may appear once per group. */}
568
- <GroupedOptions
569
- runs={groupRuns(results, (o) => o.group)}
570
- listboxId={listboxId}
571
- rowKey={(o) => String(o.value)}
572
- headingClassName={(run) => anchoredHeadingClass(run)}
573
- row={(o, i) => (
574
- <li role="presentation">
575
- <button
576
- type="button"
577
- id={optionId(i)}
578
- role="option"
579
- // CHOSEN, never "highlighted" — the family's rule. This
580
- // field holds no value, so the only row that can be chosen
581
- // is the one whose label the text already is.
582
- aria-selected={fillOnSelect && o.label === value}
583
- // Listed, announced as unavailable, never taken: `take`
584
- // refuses it and the arrows pass it over.
585
- aria-disabled={o.disabled || undefined}
586
- tabIndex={-1}
587
- onClick={() => take(o)}
588
- onMouseEnter={() => {
589
- if (!o.disabled) setActive(i);
590
- }}
591
- className={cn(
592
- // The family's suggestion row (DUP-4): it hand-rolled its
593
- // own with a plain `truncate`, so a long address was cut at
594
- // Large, where Combobox's rows wrap (text size §10.17, T1).
595
- // A flex row here, for the icon and the two lines.
596
- suggestionRowClass(i === active && !o.disabled),
597
- "flex items-center gap-2",
598
- small && "py-1 text-xs",
599
- o.disabled && DISABLED_ROW_CLASS,
600
- o.group && "ps-6",
601
- )}
602
- >
603
- {o.icon && (
604
- <span aria-hidden className="shrink-0 text-muted">
605
- {o.icon}
606
- </span>
607
- )}
608
- <span className="min-w-0 flex-1">
609
- <span className="block truncate-until-large text-primary">{o.label}</span>
610
- {o.sublabel && (
611
- <span
612
- className={cn(
613
- "block truncate-until-large text-placeholder",
614
- small ? "text-caption" : "text-xs",
615
- )}
616
- >
617
- {o.sublabel}
618
- </span>
619
- )}
620
- </span>
621
- </button>
622
- </li>
623
- )}
624
- />
625
- </ul>
626
- )}
627
- {statusLine !== null && (
628
- // Visible, not live — the region above speaks for it.
629
- <div
630
- aria-hidden
631
- className={cn(
632
- small ? "px-3 py-1.5 text-xs" : "px-3 py-2 text-sm",
633
- failed && !hasStatus ? "text-danger" : "text-muted",
634
- results.length > 0 && "border-t border-subtle text-xs",
635
- )}
636
- >
637
- {statusLine}
638
- </div>
639
- )}
640
- </div>,
641
- document.body,
642
- )}
643
- </div>
644
- );
645
- }
@@ -1,10 +0,0 @@
1
- // The English words of ./breadcrumbs, in a module with no component code: the English
2
- // catalogue (src/i18n/defaults.ts) imports them without the component, so `en` loads as one
3
- // chunk like the other languages (0.34, KS U8). ./breadcrumbs re-exports them.
4
-
5
- import type { BreadcrumbsLabels } from "./breadcrumbs";
6
-
7
- export const DEFAULT_BREADCRUMBS_LABELS: BreadcrumbsLabels = {
8
- label: "Breadcrumb",
9
- showAll: "Show full path",
10
- };