@eifi1/ui-kit 0.33.1 → 0.34.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 (1534) hide show
  1. package/README.md +444 -282
  2. package/dist/account/account-parts.d.ts +6 -8
  3. package/dist/account/account-parts.js +1 -2
  4. package/dist/account/account-parts.js.map +1 -1
  5. package/dist/{components → account}/account-settings-labels.d.ts +16 -10
  6. package/dist/{components → account}/account-settings-labels.js +3 -1
  7. package/dist/account/account-settings-labels.js.map +1 -0
  8. package/dist/{components → account}/account-settings.d.ts +53 -23
  9. package/dist/{components → account}/account-settings.js +97 -26
  10. package/dist/account/account-settings.js.map +1 -0
  11. package/dist/account/data-export-setting-labels.d.ts +2 -0
  12. package/dist/account/data-export-setting-labels.js +15 -0
  13. package/dist/account/data-export-setting-labels.js.map +1 -0
  14. package/dist/account/data-export-setting.d.ts +9 -11
  15. package/dist/account/data-export-setting.js +11 -27
  16. package/dist/account/data-export-setting.js.map +1 -1
  17. package/dist/account/delete-account-setting-labels.d.ts +2 -0
  18. package/dist/account/delete-account-setting-labels.js +23 -0
  19. package/dist/account/delete-account-setting-labels.js.map +1 -0
  20. package/dist/account/delete-account-setting.d.ts +132 -101
  21. package/dist/account/delete-account-setting.js +7 -23
  22. package/dist/account/delete-account-setting.js.map +1 -1
  23. package/dist/account/email-change-setting-labels.d.ts +2 -0
  24. package/dist/account/email-change-setting-labels.js +28 -0
  25. package/dist/account/email-change-setting-labels.js.map +1 -0
  26. package/dist/account/email-change-setting.d.ts +10 -12
  27. package/dist/account/email-change-setting.js +11 -30
  28. package/dist/account/email-change-setting.js.map +1 -1
  29. package/dist/{components → account}/passkeys-setting.d.ts +9 -12
  30. package/dist/{components → account}/passkeys-setting.js +10 -7
  31. package/dist/account/passkeys-setting.js.map +1 -0
  32. package/dist/account/sessions-setting-labels.d.ts +2 -0
  33. package/dist/account/sessions-setting-labels.js +22 -0
  34. package/dist/account/sessions-setting-labels.js.map +1 -0
  35. package/dist/account/sessions-setting.d.ts +12 -14
  36. package/dist/account/sessions-setting.js +8 -23
  37. package/dist/account/sessions-setting.js.map +1 -1
  38. package/dist/admin/admin-action-confirm-labels.d.ts +2 -0
  39. package/dist/admin/admin-action-confirm-labels.js +16 -0
  40. package/dist/admin/admin-action-confirm-labels.js.map +1 -0
  41. package/dist/admin/admin-action-confirm.d.ts +156 -101
  42. package/dist/admin/admin-action-confirm.js +17 -22
  43. package/dist/admin/admin-action-confirm.js.map +1 -1
  44. package/dist/admin/admin-action-log-labels.d.ts +2 -0
  45. package/dist/admin/admin-action-log-labels.js +73 -0
  46. package/dist/admin/admin-action-log-labels.js.map +1 -0
  47. package/dist/admin/admin-action-log.d.ts +98 -22
  48. package/dist/admin/admin-action-log.js +48 -45
  49. package/dist/admin/admin-action-log.js.map +1 -1
  50. package/dist/admin/admin-parts.d.ts +7 -14
  51. package/dist/admin/admin-parts.js +0 -4
  52. package/dist/admin/admin-parts.js.map +1 -1
  53. package/dist/admin/invitations-panel-labels.d.ts +2 -0
  54. package/dist/admin/invitations-panel-labels.js +29 -0
  55. package/dist/admin/invitations-panel-labels.js.map +1 -0
  56. package/dist/admin/invitations-panel.d.ts +167 -101
  57. package/dist/admin/invitations-panel.js +12 -31
  58. package/dist/admin/invitations-panel.js.map +1 -1
  59. package/dist/admin/plan-change-labels.d.ts +2 -0
  60. package/dist/admin/plan-change-labels.js +22 -0
  61. package/dist/admin/plan-change-labels.js.map +1 -0
  62. package/dist/admin/plan-change.d.ts +244 -101
  63. package/dist/admin/plan-change.js +16 -24
  64. package/dist/admin/plan-change.js.map +1 -1
  65. package/dist/admin/reviewer-scope-editor-labels.d.ts +2 -0
  66. package/dist/admin/reviewer-scope-editor-labels.js +14 -0
  67. package/dist/admin/reviewer-scope-editor-labels.js.map +1 -0
  68. package/dist/admin/reviewer-scope-editor.d.ts +95 -101
  69. package/dist/admin/reviewer-scope-editor.js +5 -13
  70. package/dist/admin/reviewer-scope-editor.js.map +1 -1
  71. package/dist/admin/role-select-labels.d.ts +2 -0
  72. package/dist/admin/role-select-labels.js +15 -0
  73. package/dist/admin/role-select-labels.js.map +1 -0
  74. package/dist/admin/role-select.d.ts +136 -101
  75. package/dist/admin/role-select.js +7 -18
  76. package/dist/admin/role-select.js.map +1 -1
  77. package/dist/admin/transfer-ownership-dialog-labels.d.ts +2 -0
  78. package/dist/admin/transfer-ownership-dialog-labels.js +18 -0
  79. package/dist/admin/transfer-ownership-dialog-labels.js.map +1 -0
  80. package/dist/admin/transfer-ownership-dialog.d.ts +81 -101
  81. package/dist/admin/transfer-ownership-dialog.js +3 -15
  82. package/dist/admin/transfer-ownership-dialog.js.map +1 -1
  83. package/dist/admin/user-roster-labels.d.ts +2 -0
  84. package/dist/admin/user-roster-labels.js +16 -0
  85. package/dist/admin/user-roster-labels.js.map +1 -0
  86. package/dist/admin/user-roster.d.ts +225 -101
  87. package/dist/admin/user-roster.js +4 -14
  88. package/dist/admin/user-roster.js.map +1 -1
  89. package/dist/auth/accept-invitation-labels.d.ts +2 -0
  90. package/dist/auth/accept-invitation-labels.js +20 -0
  91. package/dist/auth/accept-invitation-labels.js.map +1 -0
  92. package/dist/auth/accept-invitation.d.ts +11 -13
  93. package/dist/auth/accept-invitation.js +3 -16
  94. package/dist/auth/accept-invitation.js.map +1 -1
  95. package/dist/auth/auth-errors.d.ts +34 -23
  96. package/dist/auth/auth-errors.js +8 -4
  97. package/dist/auth/auth-errors.js.map +1 -1
  98. package/dist/auth/complete-name-dialog-labels.d.ts +2 -0
  99. package/dist/auth/complete-name-dialog-labels.js +14 -0
  100. package/dist/auth/complete-name-dialog-labels.js.map +1 -0
  101. package/dist/auth/complete-name-dialog.d.ts +9 -11
  102. package/dist/auth/complete-name-dialog.js +4 -11
  103. package/dist/auth/complete-name-dialog.js.map +1 -1
  104. package/dist/auth/email-tag.d.ts +2 -4
  105. package/dist/auth/forgot-password-form-labels.d.ts +3 -0
  106. package/dist/auth/forgot-password-form-labels.js +17 -0
  107. package/dist/auth/forgot-password-form-labels.js.map +1 -0
  108. package/dist/auth/forgot-password-form.d.ts +9 -12
  109. package/dist/auth/forgot-password-form.js +6 -15
  110. package/dist/auth/forgot-password-form.js.map +1 -1
  111. package/dist/auth/form-rules.d.ts +5 -7
  112. package/dist/auth/new-password-fields.d.ts +4 -8
  113. package/dist/auth/new-password-fields.js +1 -1
  114. package/dist/auth/new-password-fields.js.map +1 -1
  115. package/dist/auth/not-found-page-labels.d.ts +2 -0
  116. package/dist/auth/not-found-page-labels.js +11 -0
  117. package/dist/auth/not-found-page-labels.js.map +1 -0
  118. package/dist/auth/not-found-page.d.ts +9 -11
  119. package/dist/auth/not-found-page.js +5 -10
  120. package/dist/auth/not-found-page.js.map +1 -1
  121. package/dist/auth/register-form-labels.d.ts +3 -0
  122. package/dist/auth/register-form-labels.js +28 -0
  123. package/dist/auth/register-form-labels.js.map +1 -0
  124. package/dist/auth/register-form.d.ts +174 -101
  125. package/dist/auth/register-form.js +11 -31
  126. package/dist/auth/register-form.js.map +1 -1
  127. package/dist/auth/reset-password-form-labels.d.ts +3 -0
  128. package/dist/auth/reset-password-form-labels.js +24 -0
  129. package/dist/auth/reset-password-form-labels.js.map +1 -0
  130. package/dist/auth/reset-password-form.d.ts +12 -15
  131. package/dist/auth/reset-password-form.js +6 -22
  132. package/dist/auth/reset-password-form.js.map +1 -1
  133. package/dist/auth/sign-in-form-labels.d.ts +3 -0
  134. package/dist/auth/sign-in-form-labels.js +42 -0
  135. package/dist/auth/sign-in-form-labels.js.map +1 -0
  136. package/dist/auth/sign-in-form.d.ts +15 -19
  137. package/dist/auth/sign-in-form.js +12 -46
  138. package/dist/auth/sign-in-form.js.map +1 -1
  139. package/dist/auth/status-parts.d.ts +13 -17
  140. package/dist/auth/status-parts.js +3 -3
  141. package/dist/auth/status-parts.js.map +1 -1
  142. package/dist/auth/verify-email-labels.d.ts +2 -0
  143. package/dist/auth/verify-email-labels.js +25 -0
  144. package/dist/auth/verify-email-labels.js.map +1 -0
  145. package/dist/auth/verify-email.d.ts +15 -17
  146. package/dist/auth/verify-email.js +4 -21
  147. package/dist/auth/verify-email.js.map +1 -1
  148. package/dist/billing/billing-banner.d.ts +8 -109
  149. package/dist/billing/billing-banner.js +2 -1
  150. package/dist/billing/billing-banner.js.map +1 -1
  151. package/dist/billing/billing-labels.d.ts +168 -101
  152. package/dist/billing/billing-labels.js.map +1 -1
  153. package/dist/billing/billing-lock.d.ts +10 -110
  154. package/dist/billing/billing-overview.d.ts +7 -109
  155. package/dist/billing/billing-standing.d.ts +6 -108
  156. package/dist/billing/checkout-processing.d.ts +8 -111
  157. package/dist/billing/checkout-processing.js +2 -9
  158. package/dist/billing/checkout-processing.js.map +1 -1
  159. package/dist/billing/checkout-return.d.ts +5 -7
  160. package/dist/billing/pay-page.d.ts +15 -117
  161. package/dist/billing/plan-card.d.ts +14 -115
  162. package/dist/billing/plan-card.js +15 -13
  163. package/dist/billing/plan-card.js.map +1 -1
  164. package/dist/billing/plan-limit-notice.d.ts +8 -109
  165. package/dist/billing/plan-limit-notice.js +1 -1
  166. package/dist/billing/plan-limit-notice.js.map +1 -1
  167. package/dist/billing/plan-limit-toast.d.ts +6 -107
  168. package/dist/billing/plan-limit.d.ts +2 -4
  169. package/dist/billing/plan-price.d.ts +10 -12
  170. package/dist/billing/subscription-actions.d.ts +6 -109
  171. package/dist/billing/subscription-actions.js +2 -2
  172. package/dist/billing/subscription-actions.js.map +1 -1
  173. package/dist/billing/subscription-status-chip.d.ts +7 -108
  174. package/dist/chart.d.ts +12 -113
  175. package/dist/chart.js +4 -0
  176. package/dist/chart.js.map +1 -1
  177. package/dist/components/account-chips-labels.d.ts +10 -0
  178. package/dist/components/account-chips-labels.js +15 -0
  179. package/dist/components/account-chips-labels.js.map +1 -0
  180. package/dist/components/account-chips.d.ts +22 -44
  181. package/dist/components/account-chips.js +9 -14
  182. package/dist/components/account-chips.js.map +1 -1
  183. package/dist/components/alert-banner.d.ts +15 -11
  184. package/dist/components/alert-banner.js +28 -18
  185. package/dist/components/alert-banner.js.map +1 -1
  186. package/dist/components/amount-input.d.ts +66 -110
  187. package/dist/components/amount-input.js +259 -283
  188. package/dist/components/amount-input.js.map +1 -1
  189. package/dist/components/appearance-labels.d.ts +6 -10
  190. package/dist/components/appearance-labels.js.map +1 -1
  191. package/dist/components/authed-image-labels.d.ts +2 -0
  192. package/dist/components/authed-image-labels.js +10 -0
  193. package/dist/components/authed-image-labels.js.map +1 -0
  194. package/dist/components/authed-image.d.ts +11 -13
  195. package/dist/components/authed-image.js +2 -6
  196. package/dist/components/authed-image.js.map +1 -1
  197. package/dist/components/autocomplete.d.ts +13 -11
  198. package/dist/components/autocomplete.js +33 -28
  199. package/dist/components/autocomplete.js.map +1 -1
  200. package/dist/components/breadcrumbs-labels.d.ts +2 -0
  201. package/dist/components/breadcrumbs-labels.js +9 -0
  202. package/dist/components/breadcrumbs-labels.js.map +1 -0
  203. package/dist/components/breadcrumbs.d.ts +10 -12
  204. package/dist/components/breadcrumbs.js +7 -10
  205. package/dist/components/breadcrumbs.js.map +1 -1
  206. package/dist/components/bulk-action-bar-labels.d.ts +2 -0
  207. package/dist/components/bulk-action-bar-labels.js +10 -0
  208. package/dist/components/bulk-action-bar-labels.js.map +1 -0
  209. package/dist/components/bulk-action-bar.d.ts +10 -12
  210. package/dist/components/bulk-action-bar.js +9 -12
  211. package/dist/components/bulk-action-bar.js.map +1 -1
  212. package/dist/components/button-group.d.ts +7 -110
  213. package/dist/components/button-group.js +5 -5
  214. package/dist/components/button-group.js.map +1 -1
  215. package/dist/components/button-look.d.ts +88 -0
  216. package/dist/components/button-look.js +91 -0
  217. package/dist/components/button-look.js.map +1 -0
  218. package/dist/components/button.d.ts +153 -0
  219. package/dist/components/button.js +165 -0
  220. package/dist/components/button.js.map +1 -0
  221. package/dist/components/calculator.d.ts +8 -107
  222. package/dist/components/calculator.js +10 -7
  223. package/dist/components/calculator.js.map +1 -1
  224. package/dist/components/calendar-heatmap-labels.d.ts +3 -0
  225. package/dist/components/calendar-heatmap-labels.js +12 -0
  226. package/dist/components/calendar-heatmap-labels.js.map +1 -0
  227. package/dist/components/calendar-heatmap.d.ts +13 -16
  228. package/dist/components/calendar-heatmap.js +7 -13
  229. package/dist/components/calendar-heatmap.js.map +1 -1
  230. package/dist/components/card.d.ts +145 -0
  231. package/dist/components/card.js +186 -0
  232. package/dist/components/card.js.map +1 -0
  233. package/dist/components/chart-height.d.ts +4 -7
  234. package/dist/components/chart-zoom-core.d.ts +202 -0
  235. package/dist/components/chart-zoom-core.js +334 -0
  236. package/dist/components/chart-zoom-core.js.map +1 -0
  237. package/dist/components/chart-zoom.d.ts +39 -205
  238. package/dist/components/chart-zoom.js +15 -316
  239. package/dist/components/chart-zoom.js.map +1 -1
  240. package/dist/components/chart.d.ts +11 -15
  241. package/dist/components/chart.js +11 -11
  242. package/dist/components/chart.js.map +1 -1
  243. package/dist/components/checkbox-group.d.ts +6 -10
  244. package/dist/components/checkbox-group.js +10 -9
  245. package/dist/components/checkbox-group.js.map +1 -1
  246. package/dist/components/checkbox.d.ts +8 -12
  247. package/dist/components/checkbox.js +20 -18
  248. package/dist/components/checkbox.js.map +1 -1
  249. package/dist/components/chip-input.d.ts +73 -0
  250. package/dist/components/chip-input.js +224 -0
  251. package/dist/components/chip-input.js.map +1 -0
  252. package/dist/components/chip-labels.d.ts +2 -0
  253. package/dist/components/chip-labels.js +12 -0
  254. package/dist/components/chip-labels.js.map +1 -0
  255. package/dist/components/chip.d.ts +18 -93
  256. package/dist/components/chip.js +74 -426
  257. package/dist/components/chip.js.map +1 -1
  258. package/dist/components/choice-card.d.ts +21 -18
  259. package/dist/components/choice-card.js +45 -45
  260. package/dist/components/choice-card.js.map +1 -1
  261. package/dist/components/column-mapper-labels.d.ts +5 -0
  262. package/dist/components/column-mapper-labels.js +34 -0
  263. package/dist/components/column-mapper-labels.js.map +1 -0
  264. package/dist/components/column-mapper.d.ts +15 -17
  265. package/dist/components/column-mapper.js +11 -37
  266. package/dist/components/column-mapper.js.map +1 -1
  267. package/dist/components/combobox-core.d.ts +79 -40
  268. package/dist/components/combobox-core.js +187 -121
  269. package/dist/components/combobox-core.js.map +1 -1
  270. package/dist/components/combobox-suggestions.d.ts +76 -0
  271. package/dist/components/combobox-suggestions.js +56 -0
  272. package/dist/components/combobox-suggestions.js.map +1 -0
  273. package/dist/components/combobox.d.ts +14 -159
  274. package/dist/components/combobox.js +40 -507
  275. package/dist/components/combobox.js.map +1 -1
  276. package/dist/components/confirm-dialog-labels.d.ts +7 -0
  277. package/dist/components/confirm-dialog-labels.js +10 -0
  278. package/dist/components/confirm-dialog-labels.js.map +1 -0
  279. package/dist/components/confirm-dialog.d.ts +165 -101
  280. package/dist/components/confirm-dialog.js +2 -6
  281. package/dist/components/confirm-dialog.js.map +1 -1
  282. package/dist/components/copy-button-labels.d.ts +2 -0
  283. package/dist/components/copy-button-labels.js +12 -0
  284. package/dist/components/copy-button-labels.js.map +1 -0
  285. package/dist/components/copy-button.d.ts +70 -101
  286. package/dist/components/copy-button.js +4 -9
  287. package/dist/components/copy-button.js.map +1 -1
  288. package/dist/components/country-select-labels.d.ts +2 -0
  289. package/dist/components/country-select-labels.js +10 -0
  290. package/dist/components/country-select-labels.js.map +1 -0
  291. package/dist/components/country-select.d.ts +18 -15
  292. package/dist/components/country-select.js +49 -64
  293. package/dist/components/country-select.js.map +1 -1
  294. package/dist/components/currency-option-list.d.ts +63 -0
  295. package/dist/components/currency-option-list.js +135 -0
  296. package/dist/components/currency-option-list.js.map +1 -0
  297. package/dist/components/currency-select.d.ts +10 -30
  298. package/dist/components/currency-select.js +50 -133
  299. package/dist/components/currency-select.js.map +1 -1
  300. package/dist/components/danger-confirm-labels.d.ts +14 -0
  301. package/dist/components/danger-confirm-labels.js +17 -0
  302. package/dist/components/danger-confirm-labels.js.map +1 -0
  303. package/dist/components/danger-confirm.d.ts +448 -101
  304. package/dist/components/danger-confirm.js +40 -46
  305. package/dist/components/danger-confirm.js.map +1 -1
  306. package/dist/components/data-table-cells.d.ts +9 -24
  307. package/dist/components/data-table-cells.js +1 -1
  308. package/dist/components/data-table-cells.js.map +1 -1
  309. package/dist/components/data-table-column-settings.d.ts +16 -0
  310. package/dist/components/data-table-column-settings.js +119 -0
  311. package/dist/components/data-table-column-settings.js.map +1 -0
  312. package/dist/components/data-table-filter-popover.d.ts +5 -19
  313. package/dist/components/data-table-filter-popover.js +39 -22
  314. package/dist/components/data-table-filter-popover.js.map +1 -1
  315. package/dist/components/data-table-filters.d.ts +93 -15
  316. package/dist/components/data-table-filters.js +22 -7
  317. package/dist/components/data-table-filters.js.map +1 -1
  318. package/dist/components/data-table-head.d.ts +36 -0
  319. package/dist/components/data-table-head.js +190 -0
  320. package/dist/components/data-table-head.js.map +1 -0
  321. package/dist/components/data-table-labels.d.ts +124 -15
  322. package/dist/components/data-table-labels.js +9 -5
  323. package/dist/components/data-table-labels.js.map +1 -1
  324. package/dist/components/data-table-mobile.d.ts +106 -0
  325. package/dist/components/data-table-mobile.js +412 -0
  326. package/dist/components/data-table-mobile.js.map +1 -0
  327. package/dist/components/data-table-pagination.d.ts +6 -21
  328. package/dist/components/data-table-pagination.js +7 -7
  329. package/dist/components/data-table-pagination.js.map +1 -1
  330. package/dist/components/data-table-resize.d.ts +37 -0
  331. package/dist/components/data-table-resize.js +103 -0
  332. package/dist/components/data-table-resize.js.map +1 -0
  333. package/dist/components/data-table-row-actions.d.ts +24 -0
  334. package/dist/components/data-table-row-actions.js +95 -0
  335. package/dist/components/data-table-row-actions.js.map +1 -0
  336. package/dist/components/data-table-selection.d.ts +21 -0
  337. package/dist/components/data-table-selection.js +30 -0
  338. package/dist/components/data-table-selection.js.map +1 -0
  339. package/dist/components/data-table-shared.d.ts +77 -0
  340. package/dist/components/data-table-shared.js +77 -0
  341. package/dist/components/data-table-shared.js.map +1 -0
  342. package/dist/components/data-table-sort.d.ts +8 -10
  343. package/dist/components/data-table.d.ts +603 -15
  344. package/dist/components/data-table.js +134 -927
  345. package/dist/components/data-table.js.map +1 -1
  346. package/dist/components/date-field.d.ts +203 -0
  347. package/dist/components/date-field.js +270 -0
  348. package/dist/components/date-field.js.map +1 -0
  349. package/dist/components/date-picker.d.ts +6 -261
  350. package/dist/components/date-picker.js +24 -760
  351. package/dist/components/date-picker.js.map +1 -1
  352. package/dist/components/date-range-picker.d.ts +125 -0
  353. package/dist/components/date-range-picker.js +261 -0
  354. package/dist/components/date-range-picker.js.map +1 -0
  355. package/dist/components/description-list-labels.d.ts +2 -0
  356. package/dist/components/description-list-labels.js +8 -0
  357. package/dist/components/description-list-labels.js.map +1 -0
  358. package/dist/components/description-list.d.ts +13 -15
  359. package/dist/components/description-list.js +17 -11
  360. package/dist/components/description-list.js.map +1 -1
  361. package/dist/components/dialog-frame-labels.d.ts +2 -0
  362. package/dist/components/dialog-frame-labels.js +6 -0
  363. package/dist/components/dialog-frame-labels.js.map +1 -0
  364. package/dist/components/dialog-frame.d.ts +7 -11
  365. package/dist/components/dialog-frame.js +6 -6
  366. package/dist/components/dialog-frame.js.map +1 -1
  367. package/dist/components/disclosure.d.ts +6 -10
  368. package/dist/components/disclosure.js +11 -11
  369. package/dist/components/disclosure.js.map +1 -1
  370. package/dist/components/dropdown.d.ts +55 -27
  371. package/dist/components/dropdown.js +53 -30
  372. package/dist/components/dropdown.js.map +1 -1
  373. package/dist/components/empty-state.d.ts +64 -0
  374. package/dist/components/empty-state.js +70 -0
  375. package/dist/components/empty-state.js.map +1 -0
  376. package/dist/components/entity-combobox.d.ts +10 -11
  377. package/dist/components/entity-combobox.js +14 -13
  378. package/dist/components/entity-combobox.js.map +1 -1
  379. package/dist/components/error-boundary-labels.d.ts +2 -0
  380. package/dist/components/error-boundary-labels.js +19 -0
  381. package/dist/components/error-boundary-labels.js.map +1 -0
  382. package/dist/components/error-boundary.d.ts +17 -17
  383. package/dist/components/error-boundary.js +5 -17
  384. package/dist/components/error-boundary.js.map +1 -1
  385. package/dist/components/facing-pair.d.ts +7 -116
  386. package/dist/components/facing-pair.js +1 -1
  387. package/dist/components/facing-pair.js.map +1 -1
  388. package/dist/components/field-base.d.ts +260 -0
  389. package/dist/components/field-base.js +228 -0
  390. package/dist/components/field-base.js.map +1 -0
  391. package/dist/components/field-parts.d.ts +188 -87
  392. package/dist/components/field-parts.js +60 -33
  393. package/dist/components/field-parts.js.map +1 -1
  394. package/dist/components/field-strip.d.ts +19 -28
  395. package/dist/components/field-strip.js +2 -2
  396. package/dist/components/field-strip.js.map +1 -1
  397. package/dist/components/field-sync-labels.d.ts +2 -0
  398. package/dist/components/field-sync-labels.js +12 -0
  399. package/dist/components/field-sync-labels.js.map +1 -0
  400. package/dist/components/field-sync.d.ts +20 -19
  401. package/dist/components/field-sync.js +4 -10
  402. package/dist/components/field-sync.js.map +1 -1
  403. package/dist/components/field.d.ts +45 -10
  404. package/dist/components/field.js +10 -8
  405. package/dist/components/field.js.map +1 -1
  406. package/dist/components/file-button.d.ts +85 -101
  407. package/dist/components/file-button.js +23 -169
  408. package/dist/components/file-button.js.map +1 -1
  409. package/dist/components/file-dropzone.d.ts +9 -110
  410. package/dist/components/file-dropzone.js +22 -22
  411. package/dist/components/file-dropzone.js.map +1 -1
  412. package/dist/components/floating-panel-labels.d.ts +2 -0
  413. package/dist/components/floating-panel-labels.js +9 -0
  414. package/dist/components/floating-panel-labels.js.map +1 -0
  415. package/dist/components/floating-panel.d.ts +17 -21
  416. package/dist/components/floating-panel.js +19 -18
  417. package/dist/components/floating-panel.js.map +1 -1
  418. package/dist/components/focus-ring.d.ts +9 -6
  419. package/dist/components/focus-ring.js +2 -2
  420. package/dist/components/focus-ring.js.map +1 -1
  421. package/dist/components/form-actions-labels.d.ts +2 -0
  422. package/dist/components/form-actions-labels.js +10 -0
  423. package/dist/components/form-actions-labels.js.map +1 -0
  424. package/dist/components/form-actions.d.ts +280 -101
  425. package/dist/components/form-actions.js +10 -20
  426. package/dist/components/form-actions.js.map +1 -1
  427. package/dist/components/full-bleed-dialog.d.ts +7 -8
  428. package/dist/components/full-bleed-dialog.js +14 -13
  429. package/dist/components/full-bleed-dialog.js.map +1 -1
  430. package/dist/components/grouped-picker.d.ts +21 -16
  431. package/dist/components/grouped-picker.js +76 -62
  432. package/dist/components/grouped-picker.js.map +1 -1
  433. package/dist/components/help-popover.d.ts +60 -0
  434. package/dist/components/help-popover.js +48 -0
  435. package/dist/components/help-popover.js.map +1 -0
  436. package/dist/components/hover-menu.d.ts +17 -16
  437. package/dist/components/hover-menu.js +18 -17
  438. package/dist/components/hover-menu.js.map +1 -1
  439. package/dist/components/iban-input-labels.d.ts +2 -0
  440. package/dist/components/iban-input-labels.js +13 -0
  441. package/dist/components/iban-input-labels.js.map +1 -0
  442. package/dist/components/iban-input.d.ts +73 -101
  443. package/dist/components/iban-input.js +22 -15
  444. package/dist/components/iban-input.js.map +1 -1
  445. package/dist/components/icon-button.d.ts +300 -0
  446. package/dist/components/icon-button.js +465 -0
  447. package/dist/components/icon-button.js.map +1 -0
  448. package/dist/components/icon-picker-labels.d.ts +2 -0
  449. package/dist/components/icon-picker-labels.js +12 -0
  450. package/dist/components/icon-picker-labels.js.map +1 -0
  451. package/dist/components/icon-picker.d.ts +13 -13
  452. package/dist/components/icon-picker.js +18 -17
  453. package/dist/components/icon-picker.js.map +1 -1
  454. package/dist/components/image-grid-labels.d.ts +2 -0
  455. package/dist/components/image-grid-labels.js +10 -0
  456. package/dist/components/image-grid-labels.js.map +1 -0
  457. package/dist/components/image-grid.d.ts +12 -14
  458. package/dist/components/image-grid.js +6 -10
  459. package/dist/components/image-grid.js.map +1 -1
  460. package/dist/components/inline-edit-field-labels.d.ts +2 -0
  461. package/dist/components/inline-edit-field-labels.js +10 -0
  462. package/dist/components/inline-edit-field-labels.js.map +1 -0
  463. package/dist/components/inline-edit-field.d.ts +11 -13
  464. package/dist/components/inline-edit-field.js +11 -13
  465. package/dist/components/inline-edit-field.js.map +1 -1
  466. package/dist/components/inline-entity-combobox.d.ts +155 -0
  467. package/dist/components/inline-entity-combobox.js +467 -0
  468. package/dist/components/inline-entity-combobox.js.map +1 -0
  469. package/dist/components/input.d.ts +98 -0
  470. package/dist/components/input.js +219 -0
  471. package/dist/components/input.js.map +1 -0
  472. package/dist/components/jump-calendar.d.ts +8 -0
  473. package/dist/components/jump-calendar.js +274 -0
  474. package/dist/components/jump-calendar.js.map +1 -0
  475. package/dist/components/language-select.d.ts +20 -111
  476. package/dist/components/language-select.js +12 -7
  477. package/dist/components/language-select.js.map +1 -1
  478. package/dist/components/legal-labels.d.ts +2 -0
  479. package/dist/components/legal-labels.js +100 -0
  480. package/dist/components/legal-labels.js.map +1 -0
  481. package/dist/components/legal-page.d.ts +17 -118
  482. package/dist/components/legal-page.js +2 -2
  483. package/dist/components/legal-page.js.map +1 -1
  484. package/dist/components/legal.d.ts +353 -101
  485. package/dist/components/legal.js +7 -101
  486. package/dist/components/legal.js.map +1 -1
  487. package/dist/components/lightbox-labels.d.ts +2 -0
  488. package/dist/components/lightbox-labels.js +17 -0
  489. package/dist/components/lightbox-labels.js.map +1 -0
  490. package/dist/components/lightbox.d.ts +12 -14
  491. package/dist/components/lightbox.js +9 -19
  492. package/dist/components/lightbox.js.map +1 -1
  493. package/dist/components/line-items-labels.d.ts +2 -0
  494. package/dist/components/line-items-labels.js +13 -0
  495. package/dist/components/line-items-labels.js.map +1 -0
  496. package/dist/components/line-items.d.ts +16 -18
  497. package/dist/components/line-items.js +18 -26
  498. package/dist/components/line-items.js.map +1 -1
  499. package/dist/components/list-labels.d.ts +2 -0
  500. package/dist/components/list-labels.js +9 -0
  501. package/dist/components/list-labels.js.map +1 -0
  502. package/dist/components/list.d.ts +32 -21
  503. package/dist/components/list.js +41 -25
  504. package/dist/components/list.js.map +1 -1
  505. package/dist/components/loading-state.d.ts +5 -9
  506. package/dist/components/loading-state.js +2 -2
  507. package/dist/components/loading-state.js.map +1 -1
  508. package/dist/components/measured-grid-labels.d.ts +4 -0
  509. package/dist/components/measured-grid-labels.js +21 -0
  510. package/dist/components/measured-grid-labels.js.map +1 -0
  511. package/dist/components/measured-grid.d.ts +13 -17
  512. package/dist/components/measured-grid.js +31 -50
  513. package/dist/components/measured-grid.js.map +1 -1
  514. package/dist/components/menu-item.d.ts +10 -10
  515. package/dist/components/menu-item.js +9 -9
  516. package/dist/components/menu-item.js.map +1 -1
  517. package/dist/components/mini-calendar-labels.d.ts +4 -0
  518. package/dist/components/mini-calendar-labels.js +14 -0
  519. package/dist/components/mini-calendar-labels.js.map +1 -0
  520. package/dist/components/mini-calendar.d.ts +10 -14
  521. package/dist/components/mini-calendar.js +22 -29
  522. package/dist/components/mini-calendar.js.map +1 -1
  523. package/dist/components/modal.d.ts +26 -18
  524. package/dist/components/modal.js +8 -11
  525. package/dist/components/modal.js.map +1 -1
  526. package/dist/components/money-draft.d.ts +34 -0
  527. package/dist/components/money-draft.js +39 -0
  528. package/dist/components/money-draft.js.map +1 -0
  529. package/dist/components/money-field.d.ts +13 -111
  530. package/dist/components/money-field.js +6 -22
  531. package/dist/components/money-field.js.map +1 -1
  532. package/dist/components/month-picker-labels.d.ts +5 -0
  533. package/dist/components/month-picker-labels.js +18 -0
  534. package/dist/components/month-picker-labels.js.map +1 -0
  535. package/dist/components/month-picker.d.ts +15 -13
  536. package/dist/components/month-picker.js +34 -32
  537. package/dist/components/month-picker.js.map +1 -1
  538. package/dist/components/multi-entity-combobox.d.ts +9 -11
  539. package/dist/components/multi-entity-combobox.js +14 -13
  540. package/dist/components/multi-entity-combobox.js.map +1 -1
  541. package/dist/components/multi-select.d.ts +81 -21
  542. package/dist/components/multi-select.js +171 -197
  543. package/dist/components/multi-select.js.map +1 -1
  544. package/dist/components/nav-pills.d.ts +9 -10
  545. package/dist/components/nav-pills.js +53 -42
  546. package/dist/components/nav-pills.js.map +1 -1
  547. package/dist/components/number-field.d.ts +6 -111
  548. package/dist/components/number-field.js +2 -3
  549. package/dist/components/number-field.js.map +1 -1
  550. package/dist/components/number-input.d.ts +30 -111
  551. package/dist/components/number-input.js +34 -66
  552. package/dist/components/number-input.js.map +1 -1
  553. package/dist/components/numeric-field.d.ts +85 -0
  554. package/dist/components/numeric-field.js +71 -0
  555. package/dist/components/numeric-field.js.map +1 -0
  556. package/dist/components/numpad-sheet.d.ts +5 -108
  557. package/dist/components/numpad-sheet.js +7 -7
  558. package/dist/components/numpad-sheet.js.map +1 -1
  559. package/dist/components/one-time-code-input.d.ts +6 -7
  560. package/dist/components/one-time-code-input.js +119 -124
  561. package/dist/components/one-time-code-input.js.map +1 -1
  562. package/dist/components/page-contents-labels.d.ts +2 -0
  563. package/dist/components/page-contents-labels.js +8 -0
  564. package/dist/components/page-contents-labels.js.map +1 -0
  565. package/dist/components/page-contents.d.ts +13 -15
  566. package/dist/components/page-contents.js +7 -9
  567. package/dist/components/page-contents.js.map +1 -1
  568. package/dist/components/page-header.d.ts +10 -10
  569. package/dist/components/page-header.js +3 -3
  570. package/dist/components/page-header.js.map +1 -1
  571. package/dist/components/password-strength-labels.d.ts +2 -0
  572. package/dist/components/password-strength-labels.js +21 -0
  573. package/dist/components/password-strength-labels.js.map +1 -0
  574. package/dist/components/password-strength.d.ts +15 -17
  575. package/dist/components/password-strength.js +7 -22
  576. package/dist/components/password-strength.js.map +1 -1
  577. package/dist/components/phone-input-labels.d.ts +2 -0
  578. package/dist/components/phone-input-labels.js +9 -0
  579. package/dist/components/phone-input-labels.js.map +1 -0
  580. package/dist/components/phone-input.d.ts +75 -101
  581. package/dist/components/phone-input.js +20 -23
  582. package/dist/components/phone-input.js.map +1 -1
  583. package/dist/components/picker-sheet.d.ts +20 -8
  584. package/dist/components/picker-sheet.js +22 -11
  585. package/dist/components/picker-sheet.js.map +1 -1
  586. package/dist/components/pie-chart-labels.d.ts +2 -4
  587. package/dist/components/pie-chart.d.ts +8 -11
  588. package/dist/components/pie-chart.js +5 -5
  589. package/dist/components/pie-chart.js.map +1 -1
  590. package/dist/components/popover-labels.d.ts +2 -0
  591. package/dist/components/popover-labels.js +11 -0
  592. package/dist/components/popover-labels.js.map +1 -0
  593. package/dist/components/popover.d.ts +13 -11
  594. package/dist/components/popover.js +15 -21
  595. package/dist/components/popover.js.map +1 -1
  596. package/dist/components/progress-bar-labels.d.ts +2 -0
  597. package/dist/components/progress-bar-labels.js +9 -0
  598. package/dist/components/progress-bar-labels.js.map +1 -0
  599. package/dist/components/progress-bar.d.ts +16 -15
  600. package/dist/components/progress-bar.js +22 -20
  601. package/dist/components/progress-bar.js.map +1 -1
  602. package/dist/components/qr-code.d.ts +4 -8
  603. package/dist/components/qr-code.js.map +1 -1
  604. package/dist/components/reauth-dialog-labels.d.ts +2 -0
  605. package/dist/components/reauth-dialog-labels.js +12 -0
  606. package/dist/components/reauth-dialog-labels.js.map +1 -0
  607. package/dist/components/reauth-dialog.d.ts +8 -10
  608. package/dist/components/reauth-dialog.js +3 -8
  609. package/dist/components/reauth-dialog.js.map +1 -1
  610. package/dist/components/row-actions-labels.d.ts +2 -0
  611. package/dist/components/row-actions-labels.js +9 -0
  612. package/dist/components/row-actions-labels.js.map +1 -0
  613. package/dist/components/row-actions.d.ts +224 -101
  614. package/dist/components/row-actions.js +4 -5
  615. package/dist/components/row-actions.js.map +1 -1
  616. package/dist/components/scroll-area.d.ts +6 -9
  617. package/dist/components/scroll-area.js +4 -10
  618. package/dist/components/scroll-area.js.map +1 -1
  619. package/dist/components/search-field.d.ts +12 -27
  620. package/dist/components/search-field.js +13 -16
  621. package/dist/components/search-field.js.map +1 -1
  622. package/dist/components/select.d.ts +69 -0
  623. package/dist/components/select.js +164 -0
  624. package/dist/components/select.js.map +1 -0
  625. package/dist/components/separator.d.ts +3 -7
  626. package/dist/components/separator.js.map +1 -1
  627. package/dist/components/series-chart-axes.d.ts +120 -0
  628. package/dist/components/series-chart-axes.js +164 -0
  629. package/dist/components/series-chart-axes.js.map +1 -0
  630. package/dist/components/series-chart-budget.d.ts +8 -9
  631. package/dist/components/series-chart-labels.d.ts +2 -4
  632. package/dist/components/series-chart-thin.d.ts +34 -0
  633. package/dist/components/series-chart-thin.js +103 -0
  634. package/dist/components/series-chart-thin.js.map +1 -0
  635. package/dist/components/series-chart-ticks.d.ts +9 -11
  636. package/dist/components/series-chart.d.ts +64 -214
  637. package/dist/components/series-chart.js +69 -160
  638. package/dist/components/series-chart.js.map +1 -1
  639. package/dist/components/server-wake-labels.d.ts +2 -0
  640. package/dist/components/server-wake-labels.js +9 -0
  641. package/dist/components/server-wake-labels.js.map +1 -0
  642. package/dist/components/server-wake.d.ts +32 -23
  643. package/dist/components/server-wake.js +15 -35
  644. package/dist/components/server-wake.js.map +1 -1
  645. package/dist/components/settings-fields.d.ts +46 -118
  646. package/dist/components/settings-fields.js +13 -3
  647. package/dist/components/settings-fields.js.map +1 -1
  648. package/dist/components/share-card-labels.d.ts +2 -0
  649. package/dist/components/share-card-labels.js +29 -0
  650. package/dist/components/share-card-labels.js.map +1 -0
  651. package/dist/components/share-card.d.ts +188 -101
  652. package/dist/components/share-card.js +16 -34
  653. package/dist/components/share-card.js.map +1 -1
  654. package/dist/components/sign-chip-labels.d.ts +2 -0
  655. package/dist/components/sign-chip-labels.js +11 -0
  656. package/dist/components/sign-chip-labels.js.map +1 -0
  657. package/dist/components/sign-chip.d.ts +7 -9
  658. package/dist/components/sign-chip.js +2 -7
  659. package/dist/components/sign-chip.js.map +1 -1
  660. package/dist/components/signature-pad-labels.d.ts +2 -0
  661. package/dist/components/signature-pad-labels.js +23 -0
  662. package/dist/components/signature-pad-labels.js.map +1 -0
  663. package/dist/components/signature-pad.d.ts +16 -15
  664. package/dist/components/signature-pad.js +22 -35
  665. package/dist/components/signature-pad.js.map +1 -1
  666. package/dist/components/signed-amount-labels.d.ts +2 -0
  667. package/dist/components/signed-amount-labels.js +9 -0
  668. package/dist/components/signed-amount-labels.js.map +1 -0
  669. package/dist/components/signed-amount.d.ts +19 -21
  670. package/dist/components/signed-amount.js +12 -15
  671. package/dist/components/signed-amount.js.map +1 -1
  672. package/dist/components/skeleton.d.ts +5 -9
  673. package/dist/components/skeleton.js +1 -1
  674. package/dist/components/skeleton.js.map +1 -1
  675. package/dist/components/slider.d.ts +16 -11
  676. package/dist/components/slider.js +23 -18
  677. package/dist/components/slider.js.map +1 -1
  678. package/dist/components/sparkline-labels.d.ts +2 -0
  679. package/dist/components/sparkline-labels.js +13 -0
  680. package/dist/components/sparkline-labels.js.map +1 -0
  681. package/dist/components/sparkline.d.ts +10 -12
  682. package/dist/components/sparkline.js +10 -17
  683. package/dist/components/sparkline.js.map +1 -1
  684. package/dist/components/spinner.d.ts +45 -0
  685. package/dist/components/spinner.js +39 -0
  686. package/dist/components/spinner.js.map +1 -0
  687. package/dist/components/stat-tile-labels.d.ts +2 -0
  688. package/dist/components/stat-tile-labels.js +14 -0
  689. package/dist/components/stat-tile-labels.js.map +1 -0
  690. package/dist/components/stat-tile.d.ts +15 -17
  691. package/dist/components/stat-tile.js +25 -32
  692. package/dist/components/stat-tile.js.map +1 -1
  693. package/dist/components/status-dot.d.ts +8 -20
  694. package/dist/components/status-dot.js +13 -12
  695. package/dist/components/status-dot.js.map +1 -1
  696. package/dist/components/swatch-picker-labels.d.ts +2 -0
  697. package/dist/components/swatch-picker-labels.js +9 -0
  698. package/dist/components/swatch-picker-labels.js.map +1 -0
  699. package/dist/components/swatch-picker.d.ts +14 -14
  700. package/dist/components/swatch-picker.js +14 -8
  701. package/dist/components/swatch-picker.js.map +1 -1
  702. package/dist/components/swipeable-row.d.ts +14 -27
  703. package/dist/components/swipeable-row.js +2 -2
  704. package/dist/components/swipeable-row.js.map +1 -1
  705. package/dist/components/switch.d.ts +10 -13
  706. package/dist/components/switch.js +13 -12
  707. package/dist/components/switch.js.map +1 -1
  708. package/dist/components/table.d.ts +28 -31
  709. package/dist/components/table.js +15 -15
  710. package/dist/components/table.js.map +1 -1
  711. package/dist/components/tabs.d.ts +182 -0
  712. package/dist/components/tabs.js +312 -0
  713. package/dist/components/tabs.js.map +1 -0
  714. package/dist/components/text-link.d.ts +17 -119
  715. package/dist/components/text-link.js +7 -7
  716. package/dist/components/text-link.js.map +1 -1
  717. package/dist/components/text.d.ts +14 -13
  718. package/dist/components/text.js +5 -5
  719. package/dist/components/text.js.map +1 -1
  720. package/dist/components/textarea.d.ts +20 -0
  721. package/dist/components/textarea.js +161 -0
  722. package/dist/components/textarea.js.map +1 -0
  723. package/dist/components/tile-radio.d.ts +6 -10
  724. package/dist/components/tile-radio.js +6 -6
  725. package/dist/components/tile-radio.js.map +1 -1
  726. package/dist/components/time-input.d.ts +5 -108
  727. package/dist/components/time-input.js +14 -5
  728. package/dist/components/time-input.js.map +1 -1
  729. package/dist/components/toast-labels.d.ts +2 -0
  730. package/dist/components/toast-labels.js +11 -0
  731. package/dist/components/toast-labels.js.map +1 -0
  732. package/dist/components/toast.d.ts +21 -23
  733. package/dist/components/toast.js +1 -6
  734. package/dist/components/toast.js.map +1 -1
  735. package/dist/components/toggle-group.d.ts +26 -26
  736. package/dist/components/toggle-group.js +43 -19
  737. package/dist/components/toggle-group.js.map +1 -1
  738. package/dist/components/toggle-legend.d.ts +18 -21
  739. package/dist/components/toggle-legend.js +3 -3
  740. package/dist/components/toggle-legend.js.map +1 -1
  741. package/dist/components/tooltip.d.ts +16 -15
  742. package/dist/components/tooltip.js +4 -9
  743. package/dist/components/tooltip.js.map +1 -1
  744. package/dist/components/translation-review-editor.d.ts +8 -10
  745. package/dist/components/translation-review-editor.js +6 -5
  746. package/dist/components/translation-review-editor.js.map +1 -1
  747. package/dist/components/translation-review-labels.d.ts +4 -7
  748. package/dist/components/translation-review-parts.d.ts +19 -28
  749. package/dist/components/translation-review-parts.js +4 -7
  750. package/dist/components/translation-review-parts.js.map +1 -1
  751. package/dist/components/translation-review.d.ts +26 -24
  752. package/dist/components/translation-review.js +13 -10
  753. package/dist/components/translation-review.js.map +1 -1
  754. package/dist/components/tree-view.d.ts +7 -11
  755. package/dist/components/tree-view.js +8 -8
  756. package/dist/components/tree-view.js.map +1 -1
  757. package/dist/components/treemap.d.ts +9 -13
  758. package/dist/components/trigger-aria.d.ts +2 -4
  759. package/dist/components/ui-labels.d.ts +5 -0
  760. package/dist/components/ui-labels.js +20 -0
  761. package/dist/components/ui-labels.js.map +1 -0
  762. package/dist/components/use-anchor-dir.d.ts +3 -6
  763. package/dist/components/use-mobile-reveal.d.ts +2 -6
  764. package/dist/components/use-table-state.d.ts +154 -15
  765. package/dist/components/user-avatar.d.ts +8 -21
  766. package/dist/components/user-avatar.js +1 -1
  767. package/dist/components/user-avatar.js.map +1 -1
  768. package/dist/components/wizard-stepper.d.ts +6 -6
  769. package/dist/components/wizard-stepper.js +4 -3
  770. package/dist/components/wizard-stepper.js.map +1 -1
  771. package/dist/components/write-lock-labels.d.ts +2 -0
  772. package/dist/components/write-lock-labels.js +8 -0
  773. package/dist/components/write-lock-labels.js.map +1 -0
  774. package/dist/components/write-lock.d.ts +16 -18
  775. package/dist/components/write-lock.js +4 -8
  776. package/dist/components/write-lock.js.map +1 -1
  777. package/dist/data-table.d.ts +10 -18
  778. package/dist/data-table.js.map +1 -1
  779. package/dist/demo/demo-banner.d.ts +10 -13
  780. package/dist/demo/demo-banner.js +5 -19
  781. package/dist/demo/demo-banner.js.map +1 -1
  782. package/dist/demo/demo-countdown.d.ts +7 -9
  783. package/dist/demo/demo-ended.d.ts +10 -13
  784. package/dist/demo/demo-ended.js +4 -4
  785. package/dist/demo/demo-ended.js.map +1 -1
  786. package/dist/demo/demo-labels.d.ts +4 -5
  787. package/dist/demo/demo-labels.js.map +1 -1
  788. package/dist/demo/demo-session.d.ts +3 -5
  789. package/dist/demo/demo-start.d.ts +8 -11
  790. package/dist/demo/demo-start.js +3 -2
  791. package/dist/demo/demo-start.js.map +1 -1
  792. package/dist/feedback/feedback-attachment-labels.d.ts +16 -0
  793. package/dist/feedback/feedback-attachment-labels.js +17 -0
  794. package/dist/feedback/feedback-attachment-labels.js.map +1 -0
  795. package/dist/feedback/feedback-attachment.d.ts +312 -101
  796. package/dist/feedback/feedback-attachment.js +31 -42
  797. package/dist/feedback/feedback-attachment.js.map +1 -1
  798. package/dist/feedback/feedback-capture.d.ts +2 -4
  799. package/dist/feedback/feedback-context-labels.d.ts +2 -0
  800. package/dist/feedback/feedback-context-labels.js +9 -0
  801. package/dist/feedback/feedback-context-labels.js.map +1 -0
  802. package/dist/feedback/feedback-context.d.ts +110 -101
  803. package/dist/feedback/feedback-context.js +4 -7
  804. package/dist/feedback/feedback-context.js.map +1 -1
  805. package/dist/feedback/feedback-crash.d.ts +8 -110
  806. package/dist/feedback/feedback-dialog-labels.d.ts +12 -0
  807. package/dist/feedback/feedback-dialog-labels.js +17 -0
  808. package/dist/feedback/feedback-dialog-labels.js.map +1 -0
  809. package/dist/feedback/feedback-dialog.d.ts +186 -101
  810. package/dist/feedback/feedback-dialog.js +8 -18
  811. package/dist/feedback/feedback-dialog.js.map +1 -1
  812. package/dist/feedback/feedback-inbox.d.ts +236 -101
  813. package/dist/feedback/feedback-inbox.js +31 -141
  814. package/dist/feedback/feedback-inbox.js.map +1 -1
  815. package/dist/feedback/feedback-labels.d.ts +83 -101
  816. package/dist/feedback/feedback-labels.js.map +1 -1
  817. package/dist/feedback/feedback-menu-labels.d.ts +2 -0
  818. package/dist/feedback/feedback-menu-labels.js +10 -0
  819. package/dist/feedback/feedback-menu-labels.js.map +1 -0
  820. package/dist/feedback/feedback-menu.d.ts +83 -101
  821. package/dist/feedback/feedback-menu.js +3 -7
  822. package/dist/feedback/feedback-menu.js.map +1 -1
  823. package/dist/feedback/feedback-record.d.ts +239 -101
  824. package/dist/feedback/feedback-record.js +7 -2
  825. package/dist/feedback/feedback-record.js.map +1 -1
  826. package/dist/feedback/feedback-row-detail-labels.d.ts +2 -0
  827. package/dist/feedback/feedback-row-detail-labels.js +31 -0
  828. package/dist/feedback/feedback-row-detail-labels.js.map +1 -0
  829. package/dist/feedback/feedback-row-detail.d.ts +315 -101
  830. package/dist/feedback/feedback-row-detail.js +11 -37
  831. package/dist/feedback/feedback-row-detail.js.map +1 -1
  832. package/dist/feedback/feedback-status-undo.d.ts +66 -101
  833. package/dist/feedback/feedback-status-undo.js.map +1 -1
  834. package/dist/feedback/feedback-submit-dialog.d.ts +39 -0
  835. package/dist/feedback/feedback-submit-dialog.js +66 -0
  836. package/dist/feedback/feedback-submit-dialog.js.map +1 -0
  837. package/dist/feedback/feedback-submit.d.ts +13 -109
  838. package/dist/feedback/feedback-submit.js +19 -40
  839. package/dist/feedback/feedback-submit.js.map +1 -1
  840. package/dist/feedback/feedback-swipe.d.ts +9 -110
  841. package/dist/feedback/feedback-swipe.js +1 -1
  842. package/dist/feedback/feedback-swipe.js.map +1 -1
  843. package/dist/feedback/feedback-table-labels.d.ts +2 -0
  844. package/dist/feedback/feedback-table-labels.js +26 -0
  845. package/dist/feedback/feedback-table-labels.js.map +1 -0
  846. package/dist/feedback/feedback-table.d.ts +314 -101
  847. package/dist/feedback/feedback-table.js +11 -31
  848. package/dist/feedback/feedback-table.js.map +1 -1
  849. package/dist/feedback/feedback-thread-labels.d.ts +3 -0
  850. package/dist/feedback/feedback-thread-labels.js +21 -0
  851. package/dist/feedback/feedback-thread-labels.js.map +1 -0
  852. package/dist/feedback/feedback-thread.d.ts +378 -101
  853. package/dist/feedback/feedback-thread.js +27 -34
  854. package/dist/feedback/feedback-thread.js.map +1 -1
  855. package/dist/feedback/feedback-vocabulary.d.ts +98 -0
  856. package/dist/feedback/feedback-vocabulary.js +143 -0
  857. package/dist/feedback/feedback-vocabulary.js.map +1 -0
  858. package/dist/feedback.d.ts +15 -105
  859. package/dist/hooks/use-anchored-panel.d.ts +77 -15
  860. package/dist/hooks/use-anchored-panel.js +34 -1
  861. package/dist/hooks/use-anchored-panel.js.map +1 -1
  862. package/dist/hooks/use-anchored-rect.d.ts +15 -6
  863. package/dist/hooks/use-anchored-rect.js +2 -1
  864. package/dist/hooks/use-anchored-rect.js.map +1 -1
  865. package/dist/hooks/use-announce.d.ts +4 -6
  866. package/dist/hooks/use-authed-src.d.ts +5 -7
  867. package/dist/hooks/use-authed-src.js +3 -7
  868. package/dist/hooks/use-authed-src.js.map +1 -1
  869. package/dist/hooks/use-body-scroll-lock.d.ts +1 -3
  870. package/dist/hooks/use-breakpoint.d.ts +16 -17
  871. package/dist/hooks/use-breakpoint.js.map +1 -1
  872. package/dist/hooks/use-close-transition.d.ts +8 -8
  873. package/dist/hooks/use-close-transition.js +5 -4
  874. package/dist/hooks/use-close-transition.js.map +1 -1
  875. package/dist/hooks/use-copy-to-clipboard.d.ts +5 -7
  876. package/dist/hooks/use-debounce.d.ts +13 -6
  877. package/dist/hooks/use-debounce.js.map +1 -1
  878. package/dist/hooks/use-dismiss.d.ts +37 -11
  879. package/dist/hooks/use-dismiss.js +69 -10
  880. package/dist/hooks/use-dismiss.js.map +1 -1
  881. package/dist/hooks/use-file-drop.d.ts +8 -110
  882. package/dist/hooks/use-file-drop.js +1 -1
  883. package/dist/hooks/use-file-drop.js.map +1 -1
  884. package/dist/hooks/use-file-picker-labels.d.ts +2 -0
  885. package/dist/hooks/use-file-picker-labels.js +25 -0
  886. package/dist/hooks/use-file-picker-labels.js.map +1 -0
  887. package/dist/hooks/use-file-picker.d.ts +164 -0
  888. package/dist/hooks/use-file-picker.js +149 -0
  889. package/dist/hooks/use-file-picker.js.map +1 -0
  890. package/dist/hooks/use-focus-trap.d.ts +2 -4
  891. package/dist/hooks/use-focus-trap.js +2 -1
  892. package/dist/hooks/use-focus-trap.js.map +1 -1
  893. package/dist/hooks/use-hotkey.d.ts +7 -9
  894. package/dist/hooks/use-large-text.d.ts +3 -5
  895. package/dist/hooks/use-media-query.d.ts +1 -3
  896. package/dist/hooks/use-noindex.d.ts +1 -3
  897. package/dist/hooks/use-overlay-history.d.ts +1 -3
  898. package/dist/hooks/use-row-swipe.d.ts +5 -8
  899. package/dist/hooks/use-search-param-state.d.ts +10 -11
  900. package/dist/hooks/use-windowed-rows.d.ts +4 -7
  901. package/dist/i18n/defaults.d.ts +11 -105
  902. package/dist/i18n/defaults.js +82 -82
  903. package/dist/i18n/defaults.js.map +1 -1
  904. package/dist/i18n/german.d.ts +2 -105
  905. package/dist/i18n/german.js +52 -8
  906. package/dist/i18n/german.js.map +1 -1
  907. package/dist/i18n/kit-labels.d.ts +609 -101
  908. package/dist/i18n/kit-labels.js +22 -97
  909. package/dist/i18n/kit-labels.js.map +1 -1
  910. package/dist/i18n/languages.d.ts +197 -101
  911. package/dist/i18n/locales/de-CH.d.ts +3 -106
  912. package/dist/i18n/locales/en.d.ts +4 -105
  913. package/dist/i18n/locales/en.js +1834 -4
  914. package/dist/i18n/locales/en.js.map +7 -1
  915. package/dist/i18n/locales/es.d.ts +3 -106
  916. package/dist/i18n/locales/es.js +52 -8
  917. package/dist/i18n/locales/es.js.map +1 -1
  918. package/dist/i18n/locales/fr.d.ts +3 -106
  919. package/dist/i18n/locales/fr.js +53 -8
  920. package/dist/i18n/locales/fr.js.map +1 -1
  921. package/dist/i18n/locales/hu.d.ts +3 -106
  922. package/dist/i18n/locales/hu.js +52 -8
  923. package/dist/i18n/locales/hu.js.map +1 -1
  924. package/dist/i18n/locales/it.d.ts +3 -106
  925. package/dist/i18n/locales/it.js +53 -8
  926. package/dist/i18n/locales/it.js.map +1 -1
  927. package/dist/i18n/locales/zh.d.ts +3 -106
  928. package/dist/i18n/locales/zh.js +51 -8
  929. package/dist/i18n/locales/zh.js.map +1 -1
  930. package/dist/i18n/plurals.d.ts +3 -5
  931. package/dist/i18n/review.d.ts +5 -107
  932. package/dist/i18n/review.js +4 -0
  933. package/dist/i18n/review.js.map +1 -1
  934. package/dist/i18n/shared-labels.d.ts +17 -0
  935. package/dist/i18n/shared-labels.js +111 -0
  936. package/dist/i18n/shared-labels.js.map +1 -0
  937. package/dist/i18n/swiss.d.ts +1 -3
  938. package/dist/index.d.ts +329 -249
  939. package/dist/index.js +188 -215
  940. package/dist/index.js.map +1 -1
  941. package/dist/landing/access.d.ts +7 -9
  942. package/dist/landing/access.js.map +1 -1
  943. package/dist/landing/landing-actions.d.ts +9 -109
  944. package/dist/landing/landing-actions.js +1 -1
  945. package/dist/landing/landing-actions.js.map +1 -1
  946. package/dist/landing/landing-labels.d.ts +4 -5
  947. package/dist/landing/landing-labels.js.map +1 -1
  948. package/dist/landing/landing-sections.d.ts +21 -121
  949. package/dist/landing/landing-sections.js +15 -15
  950. package/dist/landing/landing-sections.js.map +1 -1
  951. package/dist/landing/page-seo.d.ts +7 -9
  952. package/dist/landing/public-header.d.ts +10 -111
  953. package/dist/landing/public-header.js +1 -1
  954. package/dist/landing/public-header.js.map +1 -1
  955. package/dist/landing/routing.d.ts +16 -120
  956. package/dist/landing/routing.js +2 -6
  957. package/dist/landing/routing.js.map +1 -1
  958. package/dist/lib/calc.d.ts +7 -9
  959. package/dist/lib/chip-edge-snap.d.ts +10 -0
  960. package/dist/lib/chip-edge-snap.js +131 -0
  961. package/dist/lib/chip-edge-snap.js.map +1 -0
  962. package/dist/lib/clipping.d.ts +2 -4
  963. package/dist/lib/cn.d.ts +2 -5
  964. package/dist/lib/cn.js +6 -1
  965. package/dist/lib/cn.js.map +1 -1
  966. package/dist/lib/column-mapping.d.ts +10 -13
  967. package/dist/lib/countries.d.ts +3 -5
  968. package/dist/lib/dates.d.ts +25 -25
  969. package/dist/lib/dates.js.map +1 -1
  970. package/dist/lib/decimal-marks.d.ts +8 -8
  971. package/dist/lib/decimal-marks.js +1 -1
  972. package/dist/lib/decimal-marks.js.map +1 -1
  973. package/dist/lib/direction.d.ts +4 -6
  974. package/dist/lib/document-navigation.d.ts +1 -3
  975. package/dist/lib/download.d.ts +67 -0
  976. package/dist/lib/download.js +89 -0
  977. package/dist/lib/download.js.map +1 -0
  978. package/dist/lib/floating-stack.d.ts +8 -6
  979. package/dist/lib/floating-stack.js.map +1 -1
  980. package/dist/lib/format.d.ts +24 -23
  981. package/dist/lib/format.js +3 -3
  982. package/dist/lib/format.js.map +1 -1
  983. package/dist/lib/iban.d.ts +9 -11
  984. package/dist/lib/ime.d.ts +17 -0
  985. package/dist/lib/ime.js +13 -0
  986. package/dist/lib/ime.js.map +1 -0
  987. package/dist/lib/isin.d.ts +3 -5
  988. package/dist/lib/logger.d.ts +4 -6
  989. package/dist/lib/person-name.d.ts +3 -5
  990. package/dist/lib/phone.d.ts +9 -11
  991. package/dist/lib/presence.d.ts +15 -0
  992. package/dist/lib/presence.js +8 -0
  993. package/dist/lib/presence.js.map +1 -0
  994. package/dist/lib/qr-encode.d.ts +4 -6
  995. package/dist/lib/reduced-motion.d.ts +18 -0
  996. package/dist/lib/reduced-motion.js +9 -0
  997. package/dist/lib/reduced-motion.js.map +1 -0
  998. package/dist/lib/round.d.ts +22 -0
  999. package/dist/lib/round.js +15 -0
  1000. package/dist/lib/round.js.map +1 -0
  1001. package/dist/lib/safe-storage.d.ts +14 -4
  1002. package/dist/lib/safe-storage.js +24 -9
  1003. package/dist/lib/safe-storage.js.map +1 -1
  1004. package/dist/lib/server-wake.d.ts +13 -14
  1005. package/dist/lib/session-refresh.d.ts +200 -0
  1006. package/dist/lib/session-refresh.js +187 -0
  1007. package/dist/lib/session-refresh.js.map +1 -0
  1008. package/dist/lib/strip-fade.d.ts +10 -13
  1009. package/dist/lib/table-text.d.ts +14 -16
  1010. package/dist/lib/text-match.d.ts +41 -0
  1011. package/dist/lib/text-match.js +23 -0
  1012. package/dist/lib/text-match.js.map +1 -0
  1013. package/dist/lib/translation-review.d.ts +44 -45
  1014. package/dist/lib/translation-review.js +3 -2
  1015. package/dist/lib/translation-review.js.map +1 -1
  1016. package/dist/rhf/fields.d.ts +123 -189
  1017. package/dist/rhf/fields.js +46 -54
  1018. package/dist/rhf/fields.js.map +1 -1
  1019. package/dist/rhf/form-core.d.ts +153 -0
  1020. package/dist/rhf/form-core.js +143 -0
  1021. package/dist/rhf/form-core.js.map +1 -0
  1022. package/dist/rhf/form.d.ts +38 -175
  1023. package/dist/rhf/form.js +9 -131
  1024. package/dist/rhf/form.js.map +1 -1
  1025. package/dist/rhf/line-items.d.ts +40 -11
  1026. package/dist/rhf/line-items.js.map +1 -1
  1027. package/dist/rhf/use-rhf-wizard-step.d.ts +3 -6
  1028. package/dist/rhf.d.ts +4 -118
  1029. package/dist/rhf.js.map +1 -1
  1030. package/dist/search/command-palette-labels.d.ts +2 -0
  1031. package/dist/search/command-palette-labels.js +15 -0
  1032. package/dist/search/command-palette-labels.js.map +1 -0
  1033. package/dist/search/command-palette.d.ts +10 -13
  1034. package/dist/search/command-palette.js +25 -44
  1035. package/dist/search/command-palette.js.map +1 -1
  1036. package/dist/search/global-search-labels.d.ts +2 -0
  1037. package/dist/search/global-search-labels.js +12 -0
  1038. package/dist/search/global-search-labels.js.map +1 -0
  1039. package/dist/search/global-search.d.ts +17 -16
  1040. package/dist/search/global-search.js +12 -12
  1041. package/dist/search/global-search.js.map +1 -1
  1042. package/dist/search/search-index.d.ts +13 -14
  1043. package/dist/search/search-index.js +2 -1
  1044. package/dist/search/search-index.js.map +1 -1
  1045. package/dist/search/use-command-key.d.ts +9 -0
  1046. package/dist/search/use-command-key.js +18 -0
  1047. package/dist/search/use-command-key.js.map +1 -0
  1048. package/dist/search.d.ts +3 -4
  1049. package/dist/settings/settings-card-classes.d.ts +11 -0
  1050. package/dist/settings/settings-card-classes.js +8 -0
  1051. package/dist/settings/settings-card-classes.js.map +1 -0
  1052. package/dist/settings/settings-catalogue.d.ts +11 -14
  1053. package/dist/settings/settings-context.d.ts +4 -8
  1054. package/dist/settings/settings-heading.d.ts +8 -12
  1055. package/dist/settings/settings-heading.js +1 -1
  1056. package/dist/settings/settings-heading.js.map +1 -1
  1057. package/dist/settings/settings-labels.d.ts +6 -7
  1058. package/dist/settings/settings-labels.js.map +1 -1
  1059. package/dist/settings/settings-layout.d.ts +36 -13
  1060. package/dist/settings/settings-layout.js +25 -4
  1061. package/dist/settings/settings-layout.js.map +1 -1
  1062. package/dist/settings/settings-section.d.ts +4 -107
  1063. package/dist/settings/settings-section.js +2 -2
  1064. package/dist/settings/settings-section.js.map +1 -1
  1065. package/dist/settings/use-account-appearance.d.ts +11 -16
  1066. package/dist/settings/use-account-language.d.ts +8 -10
  1067. package/dist/settings/use-settings-focus.d.ts +3 -5
  1068. package/dist/settings/use-settings-focus.js +2 -4
  1069. package/dist/settings/use-settings-focus.js.map +1 -1
  1070. package/dist/settings/use-settings-route.d.ts +11 -16
  1071. package/dist/shell/app-shell-labels.d.ts +2 -0
  1072. package/dist/shell/app-shell-labels.js +9 -0
  1073. package/dist/shell/app-shell-labels.js.map +1 -0
  1074. package/dist/shell/app-shell.d.ts +216 -101
  1075. package/dist/shell/app-shell.js +51 -35
  1076. package/dist/shell/app-shell.js.map +1 -1
  1077. package/dist/shell/auth-layout.d.ts +6 -9
  1078. package/dist/shell/auth-layout.js +6 -6
  1079. package/dist/shell/auth-layout.js.map +1 -1
  1080. package/dist/shell/company-switcher-labels.d.ts +2 -0
  1081. package/dist/shell/company-switcher-labels.js +12 -0
  1082. package/dist/shell/company-switcher-labels.js.map +1 -0
  1083. package/dist/shell/company-switcher.d.ts +9 -11
  1084. package/dist/shell/company-switcher.js +3 -9
  1085. package/dist/shell/company-switcher.js.map +1 -1
  1086. package/dist/shell/option-switcher-menu.d.ts +19 -9
  1087. package/dist/shell/option-switcher-menu.js +6 -4
  1088. package/dist/shell/option-switcher-menu.js.map +1 -1
  1089. package/dist/shell/role-switcher.d.ts +5 -6
  1090. package/dist/shell/role-switcher.js +4 -3
  1091. package/dist/shell/role-switcher.js.map +1 -1
  1092. package/dist/shell/top-bar-brand.d.ts +4 -107
  1093. package/dist/shell/top-bar-brand.js +1 -1
  1094. package/dist/shell/top-bar-brand.js.map +1 -1
  1095. package/dist/shell/top-bar.d.ts +6 -9
  1096. package/dist/shell/top-bar.js +1 -1
  1097. package/dist/shell/top-bar.js.map +1 -1
  1098. package/dist/shell/topbar-action-menu.d.ts +30 -31
  1099. package/dist/shell/topbar-action-menu.js +12 -10
  1100. package/dist/shell/topbar-action-menu.js.map +1 -1
  1101. package/dist/shell/topbar-controls.d.ts +20 -18
  1102. package/dist/shell/topbar-controls.js +14 -11
  1103. package/dist/shell/topbar-controls.js.map +1 -1
  1104. package/dist/shell.d.ts +25 -116
  1105. package/dist/shell.js.map +1 -1
  1106. package/dist/table-text.d.ts +1 -1
  1107. package/dist/testing/css-variables.d.ts +4 -6
  1108. package/dist/testing/css-variables.generated.d.ts +2 -4
  1109. package/dist/testing/index.d.ts +2 -1
  1110. package/dist/testing/index.js +9 -1
  1111. package/dist/testing/index.js.map +1 -1
  1112. package/dist/testing/viewport.d.ts +93 -0
  1113. package/dist/testing/viewport.js +152 -0
  1114. package/dist/testing/viewport.js.map +1 -0
  1115. package/dist/theme/chart-palette.d.ts +7 -9
  1116. package/dist/theme/color.d.ts +14 -16
  1117. package/dist/theme/color.js +2 -1
  1118. package/dist/theme/color.js.map +1 -1
  1119. package/dist/theme/contrast-tokens.d.ts +13 -17
  1120. package/dist/theme/contrast.d.ts +22 -27
  1121. package/dist/theme/palette-derive.d.ts +16 -22
  1122. package/dist/theme/palette-derive.js +15 -7
  1123. package/dist/theme/palette-derive.js.map +1 -1
  1124. package/dist/theme/palette-presets.d.ts +25 -15
  1125. package/dist/theme/palette-presets.js +66 -66
  1126. package/dist/theme/palette-presets.js.map +1 -1
  1127. package/dist/theme/palette-store.d.ts +10 -13
  1128. package/dist/theme/text-size.d.ts +21 -26
  1129. package/dist/theme/theme-store.d.ts +9 -14
  1130. package/dist/tour/tour-labels.d.ts +2 -0
  1131. package/dist/tour/tour-labels.js +13 -0
  1132. package/dist/tour/tour-labels.js.map +1 -0
  1133. package/dist/tour/tour.d.ts +12 -14
  1134. package/dist/tour/tour.js +9 -20
  1135. package/dist/tour/tour.js.map +1 -1
  1136. package/dist/tour.d.ts +1 -2
  1137. package/dist/wizard/stepper-nav.d.ts +8 -108
  1138. package/dist/wizard/stepper-nav.js +15 -14
  1139. package/dist/wizard/stepper-nav.js.map +1 -1
  1140. package/dist/wizard/types.d.ts +18 -18
  1141. package/dist/wizard/types.js +1 -19
  1142. package/dist/wizard/types.js.map +1 -1
  1143. package/dist/wizard/use-wizard.d.ts +2 -6
  1144. package/dist/wizard/validation.d.ts +3 -7
  1145. package/dist/wizard/wizard-context.d.ts +7 -11
  1146. package/dist/wizard/wizard-labels.d.ts +4 -0
  1147. package/dist/wizard/wizard-labels.js +24 -0
  1148. package/dist/wizard/wizard-labels.js.map +1 -0
  1149. package/dist/wizard/wizard-step.d.ts +3 -7
  1150. package/dist/wizard/wizard-step.js +2 -2
  1151. package/dist/wizard/wizard-step.js.map +1 -1
  1152. package/dist/wizard/wizard-summary.d.ts +5 -8
  1153. package/dist/wizard/wizard-summary.js +6 -5
  1154. package/dist/wizard/wizard-summary.js.map +1 -1
  1155. package/dist/wizard.d.ts +7 -107
  1156. package/package.json +9 -6
  1157. package/src/account/account-parts.ts +3 -3
  1158. package/src/{components → account}/account-settings-labels.ts +11 -1
  1159. package/src/{components → account}/account-settings.tsx +145 -34
  1160. package/src/account/data-export-setting-labels.ts +20 -0
  1161. package/src/account/data-export-setting.tsx +19 -38
  1162. package/src/account/delete-account-setting-labels.ts +33 -0
  1163. package/src/account/delete-account-setting.tsx +13 -35
  1164. package/src/account/email-change-setting-labels.ts +32 -0
  1165. package/src/account/email-change-setting.tsx +17 -36
  1166. package/src/{components → account}/passkeys-setting.tsx +14 -9
  1167. package/src/account/sessions-setting-labels.ts +24 -0
  1168. package/src/account/sessions-setting.tsx +14 -28
  1169. package/src/admin/admin-action-confirm-labels.ts +19 -0
  1170. package/src/admin/admin-action-confirm.tsx +59 -38
  1171. package/src/admin/admin-action-log-labels.ts +74 -0
  1172. package/src/admin/admin-action-log.tsx +180 -54
  1173. package/src/admin/admin-parts.ts +0 -7
  1174. package/src/admin/invitations-panel-labels.ts +31 -0
  1175. package/src/admin/invitations-panel.tsx +16 -34
  1176. package/src/admin/plan-change-labels.ts +23 -0
  1177. package/src/admin/plan-change.tsx +58 -34
  1178. package/src/admin/reviewer-scope-editor-labels.ts +16 -0
  1179. package/src/admin/reviewer-scope-editor.tsx +9 -15
  1180. package/src/admin/role-select-labels.ts +16 -0
  1181. package/src/admin/role-select.tsx +13 -23
  1182. package/src/admin/transfer-ownership-dialog-labels.ts +20 -0
  1183. package/src/admin/transfer-ownership-dialog.tsx +7 -17
  1184. package/src/admin/user-roster-labels.ts +17 -0
  1185. package/src/admin/user-roster.tsx +9 -17
  1186. package/src/auth/accept-invitation-labels.ts +21 -0
  1187. package/src/auth/accept-invitation.tsx +9 -20
  1188. package/src/auth/auth-errors.ts +29 -13
  1189. package/src/auth/complete-name-dialog-labels.ts +16 -0
  1190. package/src/auth/complete-name-dialog.tsx +8 -13
  1191. package/src/auth/forgot-password-form-labels.ts +20 -0
  1192. package/src/auth/forgot-password-form.tsx +12 -20
  1193. package/src/auth/new-password-fields.tsx +1 -1
  1194. package/src/auth/not-found-page-labels.ts +12 -0
  1195. package/src/auth/not-found-page.tsx +11 -14
  1196. package/src/auth/register-form-labels.ts +31 -0
  1197. package/src/auth/register-form.tsx +18 -38
  1198. package/src/auth/reset-password-form-labels.ts +27 -0
  1199. package/src/auth/reset-password-form.tsx +12 -27
  1200. package/src/auth/sign-in-form-labels.ts +44 -0
  1201. package/src/auth/sign-in-form.tsx +18 -51
  1202. package/src/auth/status-parts.tsx +3 -3
  1203. package/src/auth/verify-email-labels.ts +26 -0
  1204. package/src/auth/verify-email.tsx +15 -30
  1205. package/src/billing/billing-banner.tsx +2 -1
  1206. package/src/billing/billing-labels.ts +1 -1
  1207. package/src/billing/checkout-processing.ts +2 -12
  1208. package/src/billing/plan-card.tsx +26 -27
  1209. package/src/billing/plan-limit-notice.tsx +1 -1
  1210. package/src/billing/subscription-actions.tsx +4 -4
  1211. package/src/chart.ts +7 -1
  1212. package/src/components/account-chips-labels.ts +16 -0
  1213. package/src/components/account-chips.tsx +13 -16
  1214. package/src/components/alert-banner.tsx +39 -19
  1215. package/src/components/amount-input.tsx +461 -405
  1216. package/src/components/appearance-labels.ts +2 -2
  1217. package/src/components/authed-image-labels.ts +11 -0
  1218. package/src/components/authed-image.tsx +6 -8
  1219. package/src/components/autocomplete.tsx +79 -78
  1220. package/src/components/breadcrumbs-labels.ts +10 -0
  1221. package/src/components/breadcrumbs.tsx +17 -14
  1222. package/src/components/bulk-action-bar-labels.ts +11 -0
  1223. package/src/components/bulk-action-bar.tsx +15 -16
  1224. package/src/components/button-group.tsx +7 -7
  1225. package/src/components/button-look.ts +230 -0
  1226. package/src/components/button.tsx +339 -0
  1227. package/src/components/calculator.tsx +18 -11
  1228. package/src/components/calendar-heatmap-labels.ts +15 -0
  1229. package/src/components/calendar-heatmap.tsx +13 -19
  1230. package/src/components/card.tsx +381 -0
  1231. package/src/components/chart-zoom-core.tsx +653 -0
  1232. package/src/components/chart-zoom.tsx +64 -648
  1233. package/src/components/chart.tsx +11 -11
  1234. package/src/components/checkbox-group.tsx +13 -10
  1235. package/src/components/checkbox.tsx +43 -42
  1236. package/src/components/chip-input.tsx +377 -0
  1237. package/src/components/chip-labels.ts +13 -0
  1238. package/src/components/chip.tsx +115 -711
  1239. package/src/components/choice-card.tsx +83 -85
  1240. package/src/components/column-mapper-labels.ts +45 -0
  1241. package/src/components/column-mapper.tsx +16 -51
  1242. package/src/components/combobox-core.tsx +346 -194
  1243. package/src/components/combobox-suggestions.tsx +129 -0
  1244. package/src/components/combobox.tsx +69 -895
  1245. package/src/components/confirm-dialog-labels.ts +13 -0
  1246. package/src/components/confirm-dialog.tsx +4 -8
  1247. package/src/components/copy-button-labels.ts +13 -0
  1248. package/src/components/copy-button.tsx +10 -12
  1249. package/src/components/country-select-labels.ts +11 -0
  1250. package/src/components/country-select.tsx +74 -89
  1251. package/src/components/currency-option-list.tsx +216 -0
  1252. package/src/components/currency-select.tsx +85 -196
  1253. package/src/components/danger-confirm-labels.ts +20 -0
  1254. package/src/components/danger-confirm.tsx +69 -77
  1255. package/src/components/data-table-cells.tsx +5 -5
  1256. package/src/components/data-table-column-settings.tsx +137 -0
  1257. package/src/components/data-table-filter-popover.tsx +49 -24
  1258. package/src/components/data-table-filters.ts +48 -11
  1259. package/src/components/data-table-head.tsx +258 -0
  1260. package/src/components/data-table-labels.ts +43 -11
  1261. package/src/components/data-table-mobile.tsx +594 -0
  1262. package/src/components/data-table-pagination.tsx +11 -10
  1263. package/src/components/data-table-resize.ts +187 -0
  1264. package/src/components/data-table-row-actions.tsx +152 -0
  1265. package/src/components/data-table-selection.ts +55 -0
  1266. package/src/components/data-table-shared.tsx +172 -0
  1267. package/src/components/data-table.tsx +178 -1300
  1268. package/src/components/date-field.tsx +627 -0
  1269. package/src/components/date-picker.tsx +58 -1446
  1270. package/src/components/date-range-picker.tsx +490 -0
  1271. package/src/components/description-list-labels.ts +9 -0
  1272. package/src/components/description-list.tsx +31 -15
  1273. package/src/components/dialog-frame-labels.ts +7 -0
  1274. package/src/components/dialog-frame.tsx +8 -6
  1275. package/src/components/disclosure.tsx +14 -14
  1276. package/src/components/dropdown.tsx +102 -40
  1277. package/src/components/empty-state.tsx +137 -0
  1278. package/src/components/entity-combobox.tsx +17 -12
  1279. package/src/components/error-boundary-labels.ts +20 -0
  1280. package/src/components/error-boundary.tsx +10 -20
  1281. package/src/components/facing-pair.ts +1 -1
  1282. package/src/components/field-base.tsx +615 -0
  1283. package/src/components/field-parts.tsx +206 -77
  1284. package/src/components/field-strip.tsx +16 -21
  1285. package/src/components/field-sync-labels.ts +13 -0
  1286. package/src/components/field-sync.tsx +11 -12
  1287. package/src/components/field.tsx +13 -11
  1288. package/src/components/file-button.tsx +64 -412
  1289. package/src/components/file-dropzone.tsx +36 -33
  1290. package/src/components/floating-panel-labels.ts +10 -0
  1291. package/src/components/floating-panel.tsx +32 -21
  1292. package/src/components/focus-ring.ts +9 -4
  1293. package/src/components/form-actions-labels.ts +11 -0
  1294. package/src/components/form-actions.tsx +17 -21
  1295. package/src/components/full-bleed-dialog.tsx +27 -25
  1296. package/src/components/grouped-picker.tsx +118 -96
  1297. package/src/components/help-popover.tsx +115 -0
  1298. package/src/components/hover-menu.tsx +46 -35
  1299. package/src/components/iban-input-labels.ts +15 -0
  1300. package/src/components/iban-input.tsx +25 -20
  1301. package/src/components/icon-button.tsx +945 -0
  1302. package/src/components/icon-picker-labels.ts +13 -0
  1303. package/src/components/icon-picker.tsx +27 -24
  1304. package/src/components/image-grid-labels.ts +11 -0
  1305. package/src/components/image-grid.tsx +13 -15
  1306. package/src/components/inline-edit-field-labels.ts +11 -0
  1307. package/src/components/inline-edit-field.tsx +20 -19
  1308. package/src/components/inline-entity-combobox.tsx +789 -0
  1309. package/src/components/input.tsx +380 -0
  1310. package/src/components/jump-calendar.tsx +385 -0
  1311. package/src/components/language-select.tsx +31 -16
  1312. package/src/components/legal-labels.ts +99 -0
  1313. package/src/components/legal-page.tsx +2 -2
  1314. package/src/components/legal.tsx +11 -101
  1315. package/src/components/lightbox-labels.ts +18 -0
  1316. package/src/components/lightbox.tsx +13 -21
  1317. package/src/components/line-items-labels.ts +14 -0
  1318. package/src/components/line-items.tsx +24 -31
  1319. package/src/components/list-labels.ts +10 -0
  1320. package/src/components/list.tsx +98 -75
  1321. package/src/components/loading-state.tsx +4 -4
  1322. package/src/components/measured-grid-labels.ts +25 -0
  1323. package/src/components/measured-grid.tsx +39 -62
  1324. package/src/components/menu-item.tsx +29 -26
  1325. package/src/components/mini-calendar-labels.ts +17 -0
  1326. package/src/components/mini-calendar.tsx +38 -45
  1327. package/src/components/modal.tsx +31 -18
  1328. package/src/components/money-draft.ts +72 -0
  1329. package/src/components/money-field.tsx +16 -30
  1330. package/src/components/month-picker-labels.ts +22 -0
  1331. package/src/components/month-picker.tsx +59 -45
  1332. package/src/components/multi-entity-combobox.tsx +17 -12
  1333. package/src/components/multi-select.tsx +313 -288
  1334. package/src/components/nav-pills.tsx +19 -8
  1335. package/src/components/number-field.tsx +7 -5
  1336. package/src/components/number-input.tsx +72 -97
  1337. package/src/components/numeric-field.ts +161 -0
  1338. package/src/components/numpad-sheet.tsx +16 -16
  1339. package/src/components/one-time-code-input.tsx +154 -169
  1340. package/src/components/page-contents-labels.ts +9 -0
  1341. package/src/components/page-contents.tsx +15 -15
  1342. package/src/components/page-header.tsx +9 -5
  1343. package/src/components/password-strength-labels.ts +23 -0
  1344. package/src/components/password-strength.tsx +13 -27
  1345. package/src/components/phone-input-labels.ts +10 -0
  1346. package/src/components/phone-input.tsx +42 -57
  1347. package/src/components/picker-sheet.tsx +47 -18
  1348. package/src/components/pie-chart.tsx +11 -9
  1349. package/src/components/popover-labels.ts +14 -0
  1350. package/src/components/popover.tsx +34 -37
  1351. package/src/components/progress-bar-labels.ts +10 -0
  1352. package/src/components/progress-bar.tsx +32 -23
  1353. package/src/components/qr-code.tsx +2 -2
  1354. package/src/components/reauth-dialog-labels.ts +13 -0
  1355. package/src/components/reauth-dialog.tsx +7 -10
  1356. package/src/components/row-actions-labels.ts +10 -0
  1357. package/src/components/row-actions.tsx +11 -10
  1358. package/src/components/scroll-area.tsx +4 -10
  1359. package/src/components/search-field.tsx +35 -49
  1360. package/src/components/select.tsx +302 -0
  1361. package/src/components/separator.tsx +2 -2
  1362. package/src/components/series-chart-axes.ts +329 -0
  1363. package/src/components/series-chart-thin.ts +180 -0
  1364. package/src/components/series-chart.tsx +124 -325
  1365. package/src/components/server-wake-labels.ts +11 -0
  1366. package/src/components/server-wake.tsx +42 -63
  1367. package/src/components/settings-fields.tsx +46 -17
  1368. package/src/components/share-card-labels.ts +30 -0
  1369. package/src/components/share-card.tsx +22 -37
  1370. package/src/components/sign-chip-labels.ts +12 -0
  1371. package/src/components/sign-chip.tsx +6 -9
  1372. package/src/components/signature-pad-labels.ts +24 -0
  1373. package/src/components/signature-pad.tsx +48 -57
  1374. package/src/components/signed-amount-labels.ts +10 -0
  1375. package/src/components/signed-amount.tsx +21 -22
  1376. package/src/components/skeleton.tsx +1 -1
  1377. package/src/components/slider.tsx +51 -39
  1378. package/src/components/sparkline-labels.ts +14 -0
  1379. package/src/components/sparkline.tsx +16 -21
  1380. package/src/components/spinner.tsx +81 -0
  1381. package/src/components/stat-tile-labels.ts +15 -0
  1382. package/src/components/stat-tile.tsx +32 -37
  1383. package/src/components/status-dot.tsx +17 -14
  1384. package/src/components/swatch-picker-labels.ts +10 -0
  1385. package/src/components/swatch-picker.tsx +23 -16
  1386. package/src/components/swipeable-row.tsx +7 -7
  1387. package/src/components/switch.tsx +33 -32
  1388. package/src/components/table.tsx +15 -15
  1389. package/src/components/tabs.tsx +660 -0
  1390. package/src/components/text-link.tsx +7 -7
  1391. package/src/components/text.tsx +10 -6
  1392. package/src/components/textarea.tsx +323 -0
  1393. package/src/components/tile-radio.tsx +6 -6
  1394. package/src/components/time-input.tsx +15 -7
  1395. package/src/components/toast-labels.ts +12 -0
  1396. package/src/components/toast.tsx +5 -8
  1397. package/src/components/toggle-group.tsx +105 -42
  1398. package/src/components/toggle-legend.tsx +6 -6
  1399. package/src/components/tooltip.tsx +10 -21
  1400. package/src/components/translation-review-editor.tsx +8 -7
  1401. package/src/components/translation-review-parts.tsx +9 -13
  1402. package/src/components/translation-review.tsx +26 -14
  1403. package/src/components/tree-view.tsx +14 -12
  1404. package/src/components/ui-labels.ts +22 -0
  1405. package/src/components/user-avatar.tsx +3 -3
  1406. package/src/components/wizard-stepper.tsx +10 -5
  1407. package/src/components/write-lock-labels.ts +9 -0
  1408. package/src/components/write-lock.tsx +10 -12
  1409. package/src/data-table.ts +4 -0
  1410. package/src/demo/demo-banner.tsx +9 -25
  1411. package/src/demo/demo-ended.tsx +8 -7
  1412. package/src/demo/demo-labels.ts +2 -2
  1413. package/src/demo/demo-start.tsx +7 -5
  1414. package/src/feedback/feedback-attachment-labels.ts +36 -0
  1415. package/src/feedback/feedback-attachment.tsx +42 -66
  1416. package/src/feedback/feedback-context-labels.ts +10 -0
  1417. package/src/feedback/feedback-context.tsx +8 -9
  1418. package/src/feedback/feedback-dialog-labels.ts +28 -0
  1419. package/src/feedback/feedback-dialog.tsx +14 -44
  1420. package/src/feedback/feedback-inbox.tsx +49 -252
  1421. package/src/feedback/feedback-labels.ts +5 -5
  1422. package/src/feedback/feedback-menu-labels.ts +11 -0
  1423. package/src/feedback/feedback-menu.tsx +13 -11
  1424. package/src/feedback/feedback-record.ts +21 -7
  1425. package/src/feedback/feedback-row-detail-labels.ts +33 -0
  1426. package/src/feedback/feedback-row-detail.tsx +30 -43
  1427. package/src/feedback/feedback-status-undo.ts +3 -2
  1428. package/src/feedback/feedback-submit-dialog.tsx +109 -0
  1429. package/src/feedback/feedback-submit.tsx +45 -55
  1430. package/src/feedback/feedback-swipe.tsx +1 -1
  1431. package/src/feedback/feedback-table-labels.ts +27 -0
  1432. package/src/feedback/feedback-table.tsx +24 -40
  1433. package/src/feedback/feedback-thread-labels.ts +22 -0
  1434. package/src/feedback/feedback-thread.tsx +48 -47
  1435. package/src/feedback/feedback-vocabulary.ts +252 -0
  1436. package/src/hooks/use-anchored-panel.ts +102 -2
  1437. package/src/hooks/use-anchored-rect.ts +11 -9
  1438. package/src/hooks/use-authed-src.ts +13 -7
  1439. package/src/hooks/use-breakpoint.ts +5 -4
  1440. package/src/hooks/use-close-transition.ts +9 -10
  1441. package/src/hooks/use-debounce.ts +9 -0
  1442. package/src/hooks/use-dismiss.ts +176 -19
  1443. package/src/hooks/use-file-drop.ts +2 -2
  1444. package/src/hooks/use-file-picker-labels.ts +29 -0
  1445. package/src/hooks/use-file-picker.tsx +363 -0
  1446. package/src/hooks/use-focus-trap.ts +19 -6
  1447. package/src/i18n/defaults.ts +91 -82
  1448. package/src/i18n/german.ts +50 -6
  1449. package/src/i18n/kit-labels.tsx +70 -119
  1450. package/src/i18n/locales/en.ts +46 -0
  1451. package/src/i18n/locales/es.ts +50 -6
  1452. package/src/i18n/locales/fr.ts +52 -7
  1453. package/src/i18n/locales/hu.ts +50 -6
  1454. package/src/i18n/locales/it.ts +51 -6
  1455. package/src/i18n/locales/zh.ts +49 -6
  1456. package/src/i18n/review.ts +4 -0
  1457. package/src/i18n/shared-labels.ts +135 -0
  1458. package/src/index.ts +412 -404
  1459. package/src/landing/access.ts +2 -1
  1460. package/src/landing/landing-actions.tsx +6 -5
  1461. package/src/landing/landing-labels.ts +2 -2
  1462. package/src/landing/landing-sections.tsx +24 -23
  1463. package/src/landing/public-header.tsx +3 -2
  1464. package/src/landing/routing.tsx +2 -7
  1465. package/src/lib/chip-edge-snap.ts +212 -0
  1466. package/src/lib/cn.ts +13 -1
  1467. package/src/lib/dates.ts +4 -2
  1468. package/src/lib/decimal-marks.ts +4 -2
  1469. package/src/lib/download.ts +172 -0
  1470. package/src/lib/floating-stack.ts +5 -1
  1471. package/src/lib/format.ts +5 -3
  1472. package/src/lib/ime.ts +24 -0
  1473. package/src/lib/presence.ts +18 -0
  1474. package/src/lib/reduced-motion.ts +21 -0
  1475. package/src/lib/round.ts +38 -0
  1476. package/src/lib/safe-storage.ts +35 -11
  1477. package/src/lib/session-refresh.ts +473 -0
  1478. package/src/lib/text-match.ts +60 -0
  1479. package/src/lib/translation-review.ts +7 -6
  1480. package/src/rhf/fields.tsx +131 -179
  1481. package/src/rhf/form-core.tsx +327 -0
  1482. package/src/rhf/form.tsx +46 -321
  1483. package/src/rhf/line-items.tsx +1 -1
  1484. package/src/rhf.ts +3 -2
  1485. package/src/search/command-palette-labels.ts +16 -0
  1486. package/src/search/command-palette.tsx +37 -50
  1487. package/src/search/global-search-labels.ts +13 -0
  1488. package/src/search/global-search.tsx +50 -24
  1489. package/src/search/search-index.ts +5 -6
  1490. package/src/search/use-command-key.ts +22 -0
  1491. package/src/settings/settings-card-classes.ts +11 -0
  1492. package/src/settings/settings-heading.tsx +1 -1
  1493. package/src/settings/settings-labels.ts +2 -2
  1494. package/src/settings/settings-layout.tsx +65 -6
  1495. package/src/settings/settings-section.tsx +5 -5
  1496. package/src/settings/use-settings-focus.ts +2 -5
  1497. package/src/shell/app-shell-labels.ts +10 -0
  1498. package/src/shell/app-shell.tsx +79 -53
  1499. package/src/shell/auth-layout.tsx +11 -10
  1500. package/src/shell/company-switcher-labels.ts +13 -0
  1501. package/src/shell/company-switcher.tsx +7 -11
  1502. package/src/shell/option-switcher-menu.tsx +25 -6
  1503. package/src/shell/role-switcher.tsx +7 -3
  1504. package/src/shell/top-bar-brand.tsx +1 -1
  1505. package/src/shell/top-bar.tsx +6 -5
  1506. package/src/shell/topbar-action-menu.tsx +39 -20
  1507. package/src/shell/topbar-controls.tsx +24 -12
  1508. package/src/shell.ts +1 -1
  1509. package/src/testing/index.ts +11 -0
  1510. package/src/testing/viewport.ts +251 -0
  1511. package/src/theme/color.ts +7 -1
  1512. package/src/theme/palette-derive.ts +29 -7
  1513. package/src/theme/palette-presets.ts +81 -68
  1514. package/src/tour/tour-labels.ts +14 -0
  1515. package/src/tour/tour.tsx +13 -23
  1516. package/src/wizard/stepper-nav.tsx +19 -18
  1517. package/src/wizard/types.ts +7 -22
  1518. package/src/wizard/wizard-labels.ts +29 -0
  1519. package/src/wizard/wizard-step.tsx +2 -2
  1520. package/src/wizard/wizard-summary.tsx +8 -7
  1521. package/tokens.css +45 -14
  1522. package/dist/components/account-settings-labels.js.map +0 -1
  1523. package/dist/components/account-settings.js.map +0 -1
  1524. package/dist/components/choice-parts.d.ts +0 -24
  1525. package/dist/components/choice-parts.js +0 -18
  1526. package/dist/components/choice-parts.js.map +0 -1
  1527. package/dist/components/passkeys-setting.js.map +0 -1
  1528. package/dist/components/ui.d.ts +0 -101
  1529. package/dist/components/ui.js +0 -1955
  1530. package/dist/components/ui.js.map +0 -1
  1531. package/dist/data-table-labels-BJ5JE_X2.d.ts +0 -923
  1532. package/dist/delete-account-setting-DAgGBrbn.d.ts +0 -8167
  1533. package/src/components/choice-parts.ts +0 -33
  1534. package/src/components/ui.tsx +0 -4233
@@ -1,106 +1,7 @@
1
- import * as react from 'react';
2
- import { ComponentPropsWithoutRef, ReactNode } from 'react';
3
- import { dn as FileRejection, gu as FilePickHandler, dm as FilePickerLabels } from '../delete-account-setting-DAgGBrbn.js';
4
- import { CommitScope } from './write-lock.js';
5
- import './tooltip.js';
6
- import '../hooks/use-anchored-rect.js';
7
- import '../lib/clipping.js';
8
- import '../data-table-labels-BJ5JE_X2.js';
9
- import './data-table-sort.js';
10
- import './swipeable-row.js';
11
- import './status-dot.js';
12
- import './progress-bar.js';
13
- import './signed-amount.js';
14
- import './stat-tile.js';
15
- import './chip.js';
16
- import 'lucide-react';
17
- import './field-parts.js';
18
- import './mini-calendar.js';
19
- import './calendar-heatmap.js';
20
- import './popover.js';
21
- import '../hooks/use-breakpoint.js';
22
- import './field-sync.js';
23
- import '../wizard/types.js';
24
- import '../tour/tour.js';
25
- import '../search/command-palette.js';
26
- import '../search/global-search.js';
27
- import '../search/search-index.js';
28
- import './month-picker.js';
29
- import './page-contents.js';
30
- import './series-chart-labels.js';
31
- import './pie-chart-labels.js';
32
- import './sparkline.js';
33
- import './signature-pad.js';
34
- import './password-strength.js';
35
- import './swatch-picker.js';
36
- import './tile-radio.js';
37
- import './icon-picker.js';
38
- import './dialog-frame.js';
39
- import './modal.js';
40
- import '../hooks/use-search-param-state.js';
41
- import './measured-grid.js';
42
- import './user-avatar.js';
43
- import '../lib/person-name.js';
44
- import '../shell/topbar-action-menu.js';
45
- import './menu-item.js';
46
- import './floating-panel.js';
47
- import '../hooks/use-authed-src.js';
48
- import './account-settings-labels.js';
49
- import './bulk-action-bar.js';
50
- import './list.js';
51
- import './breadcrumbs.js';
52
- import './toast.js';
53
- import './description-list.js';
54
- import './line-items.js';
55
- import './error-boundary.js';
56
- import './authed-image.js';
57
- import './image-grid.js';
58
- import './lightbox.js';
59
- import '../auth/sign-in-form.js';
60
- import '../landing/access.js';
61
- import '../landing/landing-labels.js';
62
- import '../shell/topbar-controls.js';
63
- import '../theme/palette-presets.js';
64
- import '../theme/chart-palette.js';
65
- import '../theme/theme-store.js';
66
- import 'zustand/middleware';
67
- import 'zustand';
68
- import '../auth/complete-name-dialog.js';
69
- import '../auth/forgot-password-form.js';
70
- import '../auth/status-parts.js';
71
- import '../auth/reset-password-form.js';
72
- import '../auth/verify-email.js';
73
- import '../auth/not-found-page.js';
74
- import '../auth/accept-invitation.js';
75
- import '../shell/company-switcher.js';
76
- import '../account/email-change-setting.js';
77
- import '../account/sessions-setting.js';
78
- import '../lib/format.js';
79
- import '../account/data-export-setting.js';
80
- import './account-chips.js';
81
- import '../admin/admin-parts.js';
82
- import '../admin/admin-action-log.js';
83
- import '../settings/settings-labels.js';
84
- import '../demo/demo-labels.js';
85
- import '../i18n/plurals.js';
86
- import './appearance-labels.js';
87
- import '../theme/contrast.js';
88
- import '../theme/text-size.js';
89
- import './reauth-dialog.js';
90
- import './server-wake.js';
91
- import '../lib/server-wake.js';
92
- import './translation-review-labels.js';
93
- import '../lib/translation-review.js';
94
- import './country-select.js';
95
- import './inline-edit-field.js';
96
- import '../lib/iban.js';
97
- import '../lib/phone.js';
98
- import './sign-chip.js';
99
- import './column-mapper.js';
100
- import '../lib/column-mapping.js';
101
- import '../lib/table-text.js';
102
- import './focus-ring.js';
103
-
1
+ import type { ComponentPropsWithRef, ReactNode } from "react";
2
+ import { type LabelOverride } from "../i18n/kit-labels.js";
3
+ import type { FilePickHandler, FilePickerLabels, FileRejection } from "../hooks/use-file-picker.js";
4
+ import { type CommitScope } from "./write-lock.js";
104
5
  /**
105
6
  * Where a refused file's message goes.
106
7
  *
@@ -112,9 +13,9 @@ import './focus-ring.js';
112
13
  * - `"none"` — nothing visible; the caller shows it from `onReject` / `onInvalid`.
113
14
  * Still spoken, so a host rendering it should not ALSO make it `role="alert"`.
114
15
  */
115
- type FileDropzoneRejectionFeedback = "toast" | "inline" | "none";
16
+ export type FileDropzoneRejectionFeedback = "toast" | "inline" | "none";
116
17
  /** What a custom {@link FileDropzoneProps.renderBody} is handed. */
117
- interface FileDropzoneState {
18
+ export interface FileDropzoneState {
118
19
  /** A file drag is over the zone right now. */
119
20
  dragOver: boolean;
120
21
  disabled: boolean;
@@ -147,7 +48,7 @@ interface FileDropzoneState {
147
48
  * `FileDropzoneProps` stays an interface a caller can extend; a single-mode pick also
148
49
  * reaches `onFilesSelected` as a one-element array, so one handler can serve both.
149
50
  */
150
- interface FileDropzoneProps extends Omit<ComponentPropsWithoutRef<"div">, "onInvalid"> {
51
+ export interface FileDropzoneProps extends Omit<ComponentPropsWithRef<"div">, "onInvalid"> {
151
52
  /** Single mode: the chosen file, echoed with its size. */
152
53
  file?: File | null;
153
54
  /** Single mode: called with the accepted file. */
@@ -201,7 +102,7 @@ interface FileDropzoneProps extends Omit<ComponentPropsWithoutRef<"div">, "onInv
201
102
  * `onInvalid` nor `onReject` is given, `"none"` when one is. */
202
103
  rejectionFeedback?: FileDropzoneRejectionFeedback;
203
104
  /** Per-instance overrides of the `filePicker` label namespace. */
204
- labels?: Partial<FilePickerLabels>;
105
+ labels?: LabelOverride<FilePickerLabels>;
205
106
  /** The dropzone's accessible name. A caller's own `aria-label` wins over it — see
206
107
  * the root element below. Optional since 0.8, like the three below: each falls back
207
108
  * to its `filePicker` string from `<UiKitProvider labels>`, then to English. They
@@ -261,6 +162,4 @@ interface FileDropzoneProps extends Omit<ComponentPropsWithoutRef<"div">, "onInv
261
162
  * `rejectionFeedback`; the chosen file(s) are echoed with their size, otherwise
262
163
  * `emptyLabel` + `hint` describe what to drop. For a trigger with no drop area, see
263
164
  * `FileButton`. */
264
- declare function FileDropzone({ file, onFileSelected, multiple, files, onFilesSelected, onClear, onRemove, accept, isValid, invalidMessage, maxSize, maxFiles, onInvalid, onReject, onPick, rejectionFeedback, labels: labelsProp, dropLabel: dropLabelProp, browseLabel: browseLabelProp, emptyLabel: emptyLabelProp, hint: hintProp, disabled, busy, disabledReason: ownDisabledReason, commit, renderBody, className, "aria-label": ariaLabel, "aria-describedby": describedByProp, ...rest }: FileDropzoneProps): react.JSX.Element;
265
-
266
- export { FileDropzone, type FileDropzoneProps, type FileDropzoneRejectionFeedback, type FileDropzoneState };
165
+ export declare function FileDropzone({ file, onFileSelected, multiple, files, onFilesSelected, onClear, onRemove, accept, isValid, invalidMessage, maxSize, maxFiles, onInvalid, onReject, onPick, rejectionFeedback, labels: labelsProp, dropLabel: dropLabelProp, browseLabel: browseLabelProp, emptyLabel: emptyLabelProp, hint: hintProp, disabled, busy, disabledReason: ownDisabledReason, commit, renderBody, className, "aria-label": ariaLabel, "aria-describedby": describedByProp, ...rest }: FileDropzoneProps): import("react").JSX.Element;
@@ -2,17 +2,16 @@
2
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useId, useRef, useState } from "react";
4
4
  import { Upload, X } from "lucide-react";
5
- import { Button, IconButton, Spinner } from "./ui.js";
5
+ import { Button } from "./button.js";
6
+ import { IconButton } from "./icon-button.js";
7
+ import { Spinner } from "./spinner.js";
8
+ import { FIELD_ERROR_CLASS } from "./field-parts.js";
6
9
  import { cn } from "../lib/cn.js";
10
+ import { hasContent } from "../lib/presence.js";
7
11
  import { useAnnounce } from "../hooks/use-announce.js";
8
12
  import { useKitFileLabels, useKitLabels } from "../i18n/kit-labels.js";
9
- import {
10
- DEFAULT_FILE_PICKER_LABELS,
11
- formatAccept,
12
- judgePick,
13
- screenFiles,
14
- summariseRejections
15
- } from "./file-button.js";
13
+ import { DEFAULT_FILE_PICKER_LABELS } from "../hooks/use-file-picker-labels.js";
14
+ import { formatAccept, judgePick, screenFiles, summariseRejections } from "../hooks/use-file-picker.js";
16
15
  import { useDragTarget } from "../hooks/use-file-drop.js";
17
16
  import { toast } from "./toast.js";
18
17
  import { useCommitReason } from "./write-lock.js";
@@ -50,7 +49,7 @@ function FileDropzone({
50
49
  }) {
51
50
  const [error, setError] = useState(null);
52
51
  const disabledReason = useCommitReason(commit, ownDisabledReason);
53
- const locked = hasReason(disabledReason);
52
+ const locked = hasContent(disabledReason);
54
53
  const inert = Boolean(disabled || busy) || locked;
55
54
  const reasonId = useId();
56
55
  const [fileInput, setFileInput] = useState(null);
@@ -120,7 +119,7 @@ function FileDropzone({
120
119
  const describedBy = cn(describedByProp, showError && errorId, locked && reasonId) || void 0;
121
120
  const controlDisabled = Boolean(disabled || busy);
122
121
  const controlReason = locked ? disabledReason : void 0;
123
- const reasonLine = locked && /* @__PURE__ */ jsx("div", { "data-slot": "file-dropzone-reason", className: "text-xs text-[var(--text-muted)]", children: disabledReason });
122
+ const reasonLine = locked && /* @__PURE__ */ jsx("div", { "data-slot": "file-dropzone-reason", className: "text-xs text-muted", children: disabledReason });
124
123
  return /* @__PURE__ */ jsxs(Fragment, { children: [
125
124
  /* @__PURE__ */ jsxs(
126
125
  "div",
@@ -156,7 +155,7 @@ function FileDropzone({
156
155
  // danger border until the next good pick.
157
156
  // Inert zones keep the resting hairline and lose the hover pull: a border that
158
157
  // answers the pointer promises a drop the zone will refuse.
159
- disabled ? "cursor-not-allowed border-[var(--border)] opacity-60" : busy ? "cursor-progress border-[var(--border)]" : locked ? "cursor-not-allowed border-[var(--border)]" : dragOver ? "cursor-pointer border-[var(--border-strong)] bg-[var(--bg-active)]" : showError ? "cursor-pointer border-[var(--danger-border-strong)]" : "cursor-pointer border-[var(--border)] hover:border-[var(--border-strong)]",
158
+ disabled ? "cursor-not-allowed border-subtle opacity-60" : busy ? "cursor-progress border-subtle" : locked ? "cursor-not-allowed border-subtle" : dragOver ? "cursor-pointer border-strong bg-active" : showError ? "cursor-pointer border-danger-strong" : "cursor-pointer border-subtle hover:border-strong",
160
159
  className
161
160
  ),
162
161
  children: [
@@ -172,17 +171,17 @@ function FileDropzone({
172
171
  labels
173
172
  }) : busy ? /* @__PURE__ */ jsxs(Fragment, { children: [
174
173
  /* @__PURE__ */ jsx(Spinner, { label: null, className: "size-5" }),
175
- /* @__PURE__ */ jsx("div", { className: "text-sm text-[var(--text-secondary)]", children: labels.busy })
174
+ /* @__PURE__ */ jsx("div", { className: "text-sm text-secondary", children: labels.busy })
176
175
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
177
- /* @__PURE__ */ jsx(Upload, { "aria-hidden": true, className: "size-5 text-[var(--text-muted)]" }),
176
+ /* @__PURE__ */ jsx(Upload, { "aria-hidden": true, className: "size-5 text-muted" }),
178
177
  multiple && chosen.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
179
178
  /* @__PURE__ */ jsx("ul", { className: "flex w-full max-w-sm flex-col gap-1 text-start", children: chosen.map((f, i) => /* @__PURE__ */ jsxs(
180
179
  "li",
181
180
  {
182
- className: "flex items-center gap-2 text-sm text-[var(--text-secondary)]",
181
+ className: "flex items-center gap-2 text-sm text-secondary",
183
182
  children: [
184
183
  /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate font-medium", children: f.name }),
185
- /* @__PURE__ */ jsx("span", { className: "shrink-0 text-xs text-[var(--text-muted)]", children: fileText.size(f.size) }),
184
+ /* @__PURE__ */ jsx("span", { className: "shrink-0 text-xs text-muted", children: fileText.size(f.size) }),
186
185
  onRemove && /* @__PURE__ */ jsx(
187
186
  IconButton,
188
187
  {
@@ -205,7 +204,7 @@ function FileDropzone({
205
204
  )) }),
206
205
  reasonLine
207
206
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
208
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 text-sm text-[var(--text-secondary)]", children: [
207
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 text-sm text-secondary", children: [
209
208
  !multiple && file ? /* @__PURE__ */ jsx("span", { className: "font-medium", children: file.name }) : emptyLabel,
210
209
  !multiple && file && onClear && /* @__PURE__ */ jsx(
211
210
  IconButton,
@@ -224,7 +223,7 @@ function FileDropzone({
224
223
  }
225
224
  )
226
225
  ] }),
227
- locked && !(file && !multiple) ? reasonLine : /* @__PURE__ */ jsx("div", { className: "text-xs text-[var(--text-muted)]", children: file && !multiple ? fileText.size(file.size) : hint }),
226
+ locked && !(file && !multiple) ? reasonLine : /* @__PURE__ */ jsx("div", { className: "text-xs text-muted", children: file && !multiple ? fileText.size(file.size) : hint }),
228
227
  locked && file && !multiple && reasonLine
229
228
  ] })
230
229
  ] }),
@@ -260,7 +259,9 @@ function FileDropzone({
260
259
  }
261
260
  )
262
261
  ] }),
263
- showError && /* @__PURE__ */ jsx("p", { id: errorId, className: "text-xs text-[var(--danger)]", children: error }),
262
+ showError && // Every field's error type (DUP-8: this was `text-xs`); the zone's `gap-2`
263
+ // spaces it, so not the class's own `mt-1` as well.
264
+ /* @__PURE__ */ jsx("p", { id: errorId, className: cn(FIELD_ERROR_CLASS, "mt-0"), children: error }),
264
265
  locked && /* @__PURE__ */ jsx("span", { id: reasonId, hidden: true, children: disabledReason }),
265
266
  /* @__PURE__ */ jsx(
266
267
  "input",
@@ -276,7 +277,9 @@ function FileDropzone({
276
277
  acceptFiles(picked);
277
278
  },
278
279
  onClick: (e) => e.stopPropagation(),
279
- className: "sr-only"
280
+ className: "sr-only",
281
+ tabIndex: -1,
282
+ "aria-hidden": true
280
283
  }
281
284
  )
282
285
  ]
@@ -286,9 +289,6 @@ function FileDropzone({
286
289
  /* @__PURE__ */ jsx("span", { ...alert.regionProps })
287
290
  ] });
288
291
  }
289
- function hasReason(reason) {
290
- return reason !== void 0 && reason !== null && reason !== false && reason !== "";
291
- }
292
292
  function fromControl(e) {
293
293
  const target = e.target;
294
294
  const control = target?.closest?.("button, a[href], input, select, textarea, label, [role='button']");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/file-dropzone.tsx"],"sourcesContent":["import { useId, useRef, useState } from \"react\";\nimport type { ComponentPropsWithoutRef, MouseEvent, ReactNode } from \"react\";\nimport { Upload, X } from \"lucide-react\";\nimport { Button, IconButton, Spinner } from \"./ui\";\nimport { cn } from \"../lib/cn\";\nimport { useAnnounce } from \"../hooks/use-announce\";\nimport { useKitFileLabels, useKitLabels } from \"../i18n/kit-labels\";\nimport {\n DEFAULT_FILE_PICKER_LABELS,\n formatAccept,\n judgePick,\n screenFiles,\n summariseRejections,\n} from \"./file-button\";\nimport type { FilePickHandler, FilePickerLabels, FileRejection } from \"./file-button\";\nimport { useDragTarget } from \"../hooks/use-file-drop\";\nimport { toast } from \"./toast\";\nimport { useCommitReason, type CommitScope } from \"./write-lock\";\n\n/**\n * Where a refused file's message goes.\n *\n * - `\"toast\"` — a `sonner` toast (the 0.5 behaviour, kept as the default for a caller\n * that handles nothing itself so no existing dropzone goes quiet on upgrade).\n * - `\"inline\"` — under the drop target, in the danger colour, tied to it with\n * `aria-describedby` (plus `data-invalid` for styling), and spoken through a live\n * region. Cleared by the next accepted pick.\n * - `\"none\"` — nothing visible; the caller shows it from `onReject` / `onInvalid`.\n * Still spoken, so a host rendering it should not ALSO make it `role=\"alert\"`.\n */\nexport type FileDropzoneRejectionFeedback = \"toast\" | \"inline\" | \"none\";\n\n/** What a custom {@link FileDropzoneProps.renderBody} is handed. */\nexport interface FileDropzoneState {\n /** A file drag is over the zone right now. */\n dragOver: boolean;\n disabled: boolean;\n busy: boolean;\n /** 0.22: locked with a reason (`disabledReason`, or `commit` under a locked\n * {@link WriteLockProvider}) — takes no files, like `disabled`. */\n locked: boolean;\n /** The reason while `locked`, for a custom body to show; `undefined` otherwise. */\n disabledReason: ReactNode | undefined;\n /** What is chosen: `files` in multiple mode, `[file]` or `[]` in single mode. */\n files: readonly File[];\n /** The inline refusal, when `rejectionFeedback=\"inline\"` has one to show. */\n error: string | null;\n /** Open the system picker — for a body that brings its own trigger (a second\n * \"Take photo\" button). Does nothing while `disabled` or `busy`. */\n open: () => void;\n /** The resolved `filePicker` strings, so a custom body speaks the same language. */\n labels: FilePickerLabels;\n}\n\n/**\n * `onInvalid` is omitted from the `<div>` attributes and kept as this component's own.\n * The DOM event of that name belongs to form validation and takes a `FormEvent`; this\n * one takes the rejected `File`, and the kit's meaning is the one every caller already\n * writes. Everything else a `<div>` takes reaches the root — which carries\n * `role=\"group\"` named by `dropLabel`, so that is also where an `aria-label` or an\n * `aria-describedby` belongs.\n *\n * Two modes. SINGLE (the default, and all of 0.5): `file` + `onFileSelected`. MULTIPLE\n * (`multiple`): `files` + `onFilesSelected`. They are optional rather than a union so\n * `FileDropzoneProps` stays an interface a caller can extend; a single-mode pick also\n * reaches `onFilesSelected` as a one-element array, so one handler can serve both.\n */\nexport interface FileDropzoneProps extends Omit<ComponentPropsWithoutRef<\"div\">, \"onInvalid\"> {\n /** Single mode: the chosen file, echoed with its size. */\n file?: File | null;\n /** Single mode: called with the accepted file. */\n onFileSelected?: (file: File) => void;\n /** Take several files per pick or drop. Without it a drop of several keeps the first. */\n multiple?: boolean;\n /** Multiple mode: the chosen files, listed in the zone. */\n files?: readonly File[];\n /** Every accepted file of one pick, in order. Never called with an empty array. */\n onFilesSelected?: (files: File[]) => void;\n /**\n * Show a remove button inside the zone once something is chosen (kastlan asked for\n * it: the only way to un-choose a file was to reload). Single mode: removes the file.\n * Multiple mode: a \"remove all\" button. The host clears its own state here — the\n * zone is controlled. Focus moves to the Browse button, and the removal is announced.\n */\n onClear?: () => void;\n /** Multiple mode: a remove button per listed file. */\n onRemove?: (file: File, index: number) => void;\n accept: string;\n /**\n * The caller's check. Optional since 0.6: without it the zone checks `accept` itself\n * (a drop ignores the dialog's filter). With it, `accept` is NOT re-checked — every\n * 0.5 caller's `isValid` is its own type check, and doubling it could refuse a file\n * the caller accepts (a `.zip` the OS labelled `application/octet-stream`).\n */\n isValid?: (file: File) => boolean;\n /** The message for an `isValid` refusal. Defaults to `labels.rejectedInvalid`. */\n invalidMessage?: string;\n /** Bytes; larger files are refused. */\n maxSize?: number;\n /** Multiple mode: files one pick may add. Pass what is LEFT for a running cap. */\n maxFiles?: number;\n /**\n * Called once per refused file. The 0.5 hook, kept as it was; {@link onReject}\n * carries the reason and the translated message as well.\n *\n * Its existence used to be what switched the toast off, and it still does (see\n * {@link rejectionFeedback}). The toast is the kit's `toast`, which loads `sonner`\n * lazily: it is an OPTIONAL peer, and a static import here once broke\n * `import { Button }` for every app without it (see `optional-peer-imports.test.tsx`).\n */\n onInvalid?: (file: File) => void;\n /** Every refused file of one pick, with its reason and message. */\n onReject?: (rejections: FileRejection[]) => void;\n /** The whole pick at once, before any of the above — return `false` to refuse all\n * of it (see {@link FilePickHandler}). A refused pick selects nothing; its one\n * message (`labels.rejectedPick`) goes where `rejectionFeedback` says. */\n onPick?: FilePickHandler;\n /** See {@link FileDropzoneRejectionFeedback}. Defaults to `\"toast\"` when neither\n * `onInvalid` nor `onReject` is given, `\"none\"` when one is. */\n rejectionFeedback?: FileDropzoneRejectionFeedback;\n /** Per-instance overrides of the `filePicker` label namespace. */\n labels?: Partial<FilePickerLabels>;\n /** The dropzone's accessible name. A caller's own `aria-label` wins over it — see\n * the root element below. Optional since 0.8, like the three below: each falls back\n * to its `filePicker` string from `<UiKitProvider labels>`, then to English. They\n * were required, so every call site passed four strings through `t()` by hand, and a\n * zone nested in a kit component (the feedback form) had no call site to pass them. */\n dropLabel?: string;\n /** Default `filePicker.browse`. */\n browseLabel?: string;\n /** What the zone says while nothing is chosen. Default `filePicker.empty` /\n * `emptyMultiple`. */\n emptyLabel?: string;\n /** The second line, e.g. what may be dropped. Default `filePicker.hint(accept)`. */\n hint?: string;\n /**\n * Not taking files: no drop, no picker, no remove buttons; `aria-disabled` on the\n * group. keksdose locks its invoice zone while another form holds unsaved changes,\n * and hand-rolled the whole zone to be able to (invoice-upload.tsx, \"Locked\").\n */\n disabled?: boolean;\n /**\n * Working on what it was given — an upload, an OCR pass. Inert like `disabled`, plus\n * `aria-busy`, a spinner in place of the upload icon, and `filePicker.busy` as the\n * text. The other half of why keksdose's invoice zone was hand-rolled.\n */\n busy?: boolean;\n /**\n * Why the zone is not taking files — the write lock's sentence, a quota, a closed\n * period (keksdose K3). Takes no drop, no picker and no removal, like `disabled`, and\n * SAYS so: the Browse button (and every remove button) stays focusable,\n * `aria-disabled`, with the reason in the kit Tooltip and its description, the zone's\n * group is described by it, and the default body shows it where the hint was. Not\n * dimmed: what is chosen stays readable. Wins over `disabled`'s silent look.\n */\n disabledReason?: ReactNode;\n /**\n * This zone COMMITS — an upload that starts on drop. Under a locked\n * {@link WriteLockProvider} it takes the `disabledReason` path with the lock's\n * reason (which wins over one of its own). No provider, or an unlocked one: no\n * effect. A zone that only stages a file for a form saved later is not a commit.\n */\n commit?: CommitScope;\n /**\n * Replace the zone's body — the icon, the text and the chosen-file list — with your\n * own, given the zone's state: keksdose's spinner-plus-\"uploading\", its multi-shot\n * hint (\"several photos are possible\"), a second trigger for the camera.\n *\n * The Browse button, the inline error and the live regions stay: Browse is the\n * keyboard path, and a body that forgot it would leave the zone unreachable without\n * a pointer. A click on a control inside the body does not also open the picker.\n */\n renderBody?: (state: FileDropzoneState) => ReactNode;\n /** Extra classes for the dropzone's root. */\n className?: string;\n}\n\n/** Drag-and-drop file picker shared by the import wizards (YNAB zip, CAMT xml) and\n * kastlan's document forms. Refusals go to `onReject`/`onInvalid` and to\n * `rejectionFeedback`; the chosen file(s) are echoed with their size, otherwise\n * `emptyLabel` + `hint` describe what to drop. For a trigger with no drop area, see\n * `FileButton`. */\nexport function FileDropzone({\n file,\n onFileSelected,\n multiple,\n files,\n onFilesSelected,\n onClear,\n onRemove,\n accept,\n isValid,\n invalidMessage,\n maxSize,\n maxFiles,\n onInvalid,\n onReject,\n onPick,\n rejectionFeedback,\n labels: labelsProp,\n dropLabel: dropLabelProp,\n browseLabel: browseLabelProp,\n emptyLabel: emptyLabelProp,\n hint: hintProp,\n disabled,\n busy,\n disabledReason: ownDisabledReason,\n commit,\n renderBody,\n className,\n \"aria-label\": ariaLabel,\n \"aria-describedby\": describedByProp,\n ...rest\n}: FileDropzoneProps) {\n const [error, setError] = useState<string | null>(null);\n const disabledReason = useCommitReason(commit, ownDisabledReason);\n const locked = hasReason(disabledReason);\n // Locked counts as inert for every file path (drop, click, Browse, remove); only the\n // LOOK and the native `disabled` keep it apart, so its controls stay focusable.\n const inert = Boolean(disabled || busy) || locked;\n const reasonId = useId();\n // State rather than a ref: `open` is handed to `renderBody` during render, and a\n // function that reads a ref there is exactly what the refs rule cannot prove safe.\n const [fileInput, setFileInput] = useState<HTMLInputElement | null>(null);\n const browseRef = useRef<HTMLButtonElement>(null);\n const errorId = useId();\n // The size through the kit's `file.size` label (the provider's locale by default).\n // This was `${n / 1024} KB`: ASCII digits, an English unit, and a binary kilobyte\n // mislabelled as a decimal one, all in one template literal.\n const fileText = useKitFileLabels();\n const labels = useKitLabels(\"filePicker\", DEFAULT_FILE_PICKER_LABELS, labelsProp);\n // Two regions, two urgencies: a pick or a removal is news, a refusal is a failure.\n // The echoed file name is only text in the zone, and text changing somewhere on the\n // page is not announced by itself.\n const status = useAnnounce();\n const alert = useAnnounce({ politeness: \"assertive\" });\n const feedback: FileDropzoneRejectionFeedback =\n rejectionFeedback ?? (onInvalid || onReject ? \"none\" : \"toast\");\n const dropLabel = dropLabelProp ?? labels.dropzone;\n const browseLabel = browseLabelProp ?? labels.browse;\n const emptyLabel = emptyLabelProp ?? (multiple ? labels.emptyMultiple : labels.empty);\n const hint = hintProp ?? labels.hint(formatAccept(accept));\n\n const acceptFiles = (list: ArrayLike<File> | null | undefined) => {\n if (inert || !list || list.length === 0) return;\n const all = Array.from(list);\n const picked = multiple ? all : all.slice(0, 1);\n const { accepted, rejected } = screenFiles(\n picked,\n {\n accept: isValid ? undefined : accept,\n maxSize,\n maxFiles: multiple ? maxFiles : undefined,\n isValid,\n invalidMessage,\n },\n labels,\n fileText.size,\n );\n const stands = judgePick(onPick, accepted, rejected);\n if (stands && accepted.length > 0) {\n setError(null);\n if (multiple) {\n onFilesSelected?.(accepted);\n } else {\n onFileSelected?.(accepted[0]);\n onFilesSelected?.(accepted);\n }\n status.announce(labels.selected(accepted.length, accepted[0].name));\n }\n if (!stands || rejected.length > 0) {\n for (const r of rejected) onInvalid?.(r.file);\n if (rejected.length > 0) onReject?.(rejected);\n const message = stands\n ? summariseRejections(rejected, labels)\n : labels.rejectedPick(picked.length);\n if (feedback === \"toast\") {\n // The kit's `toast`, which loads sonner (an optional peer) lazily, so an app\n // that never trips this never has to install it. Nothing downstream depends\n // on the toast having appeared. The toaster is a live region, so this path\n // does not announce a second time.\n toast.error(message);\n } else {\n if (feedback === \"inline\") setError(message);\n alert.announce(message);\n }\n }\n };\n\n // The remove buttons unmount with the file they removed, and focus would fall to\n // <body>. Browse is where the next action (pick again) starts.\n const afterRemoval = (message: string) => {\n browseRef.current?.focus();\n status.announce(message);\n };\n\n // The enter/leave counter lives in the shared hook: the boolean this was flickered\n // across every child of the zone in Safari, whose drag events carry no\n // `relatedTarget` to tell a move onto a child from a real leave.\n const { dropProps, isOver: dragOver } = useDragTarget<HTMLDivElement>({\n disabled: inert,\n onDropFiles: acceptFiles,\n });\n const open = () => {\n if (!inert) fileInput?.click();\n };\n\n const chosen: readonly File[] = multiple ? (files ?? []) : file ? [file] : [];\n const showError = feedback === \"inline\" && error !== null;\n const describedBy = cn(describedByProp, showError && errorId, locked && reasonId) || undefined;\n // The controls inside: natively disabled while disabled or busy; locked, they take\n // the reason instead and stay reachable (Button's `disabledReason` path).\n const controlDisabled = Boolean(disabled || busy);\n const controlReason = locked ? disabledReason : undefined;\n const reasonLine = locked && (\n <div data-slot=\"file-dropzone-reason\" className=\"text-xs text-[var(--text-muted)]\">\n {disabledReason}\n </div>\n );\n\n return (\n <>\n {/* A named group, NOT a `role=\"button\"`. It was one, with real buttons (Browse,\n the remove buttons) inside it: nested interactive controls, which ARIA forbids\n because a button's children are presentational — a screen reader either read\n the zone as one opaque button or skipped the inner ones, and the zone was an\n extra Tab stop that did what Browse does. Now the keyboard path is Browse, a\n real button; the zone keeps its drop target and its click-anywhere for a\n pointer, which is a convenience on top of Browse rather than the only way in. */}\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions -- the click is a pointer shortcut for Browse, see above */}\n <div\n // `...rest` first: every handler below is the drop gesture itself.\n {...rest}\n {...dropProps}\n // Pointer only; every control inside stops its own click from reaching here\n // (and one in a custom body is skipped below). The keyboard equivalent is the\n // Browse button, so no key handler belongs on a group.\n onClick={(e) => {\n if (fromControl(e)) return;\n open();\n }}\n role=\"group\"\n // The DOM spelling wins over `dropLabel`, which stays the name for every caller\n // that passes no `aria-label` — i.e. all of them today. Standardising on\n // `aria-label` (audit §api-design) does not get to silently rename an existing\n // required prop.\n aria-label={ariaLabel ?? dropLabel}\n // No `aria-invalid`: ARIA does not allow it on `role=\"group\"`. The message is\n // reached through the description instead, and spoken when it appears.\n aria-describedby={describedBy}\n data-invalid={showError || undefined}\n aria-disabled={disabled || locked || undefined}\n aria-busy={busy || undefined}\n data-drag-over={dragOver || undefined}\n className={cn(\n // `relative` is load-bearing, not cosmetic. The file input below is `sr-only`,\n // which Tailwind implements as `position: absolute` — so without a positioned\n // ancestor its containing block is the INITIAL one, and it is laid out at its\n // own offset from the top of the document. Nothing looks wrong, because the\n // input is 1x1 and clipped; what breaks is the page height. On a long page\n // every escaped sr-only element extends `documentElement.scrollHeight` to its\n // own offset, which produces a second, whole-document scrollbar alongside the\n // app shell's own — one that scrolls past the end of the content into nothing.\n // Measured on the showcase: body 900px, document 47,919px.\n \"relative flex flex-col items-center justify-center gap-2 rounded-md border-2 border-dashed px-4 py-6 text-center transition-colors\",\n // Three states out of two border tokens: the target rests on the plain\n // hairline, hover pulls it to `--border-strong`, and a live drag keeps that\n // border and adds the `--bg-active` wash on top — so \"let go here\" still reads\n // one step louder than \"you are over it\". A refusal shown inline takes the\n // danger border until the next good pick.\n // Inert zones keep the resting hairline and lose the hover pull: a border that\n // answers the pointer promises a drop the zone will refuse.\n disabled\n ? \"cursor-not-allowed border-[var(--border)] opacity-60\"\n : busy\n ? \"cursor-progress border-[var(--border)]\"\n : locked\n ? \"cursor-not-allowed border-[var(--border)]\"\n : dragOver\n ? \"cursor-pointer border-[var(--border-strong)] bg-[var(--bg-active)]\"\n : showError\n ? \"cursor-pointer border-[var(--danger-border-strong)]\"\n : \"cursor-pointer border-[var(--border)] hover:border-[var(--border-strong)]\",\n className,\n )}\n >\n {renderBody ? (\n renderBody({\n dragOver,\n disabled: Boolean(disabled),\n busy: Boolean(busy),\n locked,\n disabledReason: locked ? disabledReason : undefined,\n files: chosen,\n error: showError ? error : null,\n open,\n labels,\n })\n ) : busy ? (\n <>\n {/* `label={null}`: the zone is `aria-busy` and the line below says the\n same in words; a spoken \"Loading\" would only run into it. */}\n <Spinner label={null} className=\"size-5\" />\n <div className=\"text-sm text-[var(--text-secondary)]\">{labels.busy}</div>\n </>\n ) : (\n <>\n <Upload aria-hidden className=\"size-5 text-[var(--text-muted)]\" />\n {multiple && chosen.length > 0 ? (\n <>\n <ul className=\"flex w-full max-w-sm flex-col gap-1 text-start\">\n {chosen.map((f, i) => (\n <li\n // Name + size + position: two files may share a name, and the index\n // alone would re-key every row below a removal.\n key={`${f.name}-${f.size}-${i}`}\n className=\"flex items-center gap-2 text-sm text-[var(--text-secondary)]\"\n >\n <span className=\"min-w-0 flex-1 truncate font-medium\">{f.name}</span>\n <span className=\"shrink-0 text-xs text-[var(--text-muted)]\">{fileText.size(f.size)}</span>\n {onRemove && (\n <IconButton\n type=\"button\"\n size=\"sm\"\n disabled={controlDisabled}\n disabledReason={controlReason}\n aria-label={labels.remove(f.name)}\n onClick={(e) => {\n e.stopPropagation();\n onRemove(f, i);\n afterRemoval(labels.removed(f.name));\n }}\n >\n <X aria-hidden />\n </IconButton>\n )}\n </li>\n ))}\n </ul>\n {reasonLine}\n </>\n ) : (\n <>\n <div className=\"flex items-center gap-1 text-sm text-[var(--text-secondary)]\">\n {/* `!multiple`: in multiple mode an empty `files` list is \"nothing chosen\",\n whatever a stray `file` prop says — it used to show that file's name. */}\n {!multiple && file ? <span className=\"font-medium\">{file.name}</span> : emptyLabel}\n {!multiple && file && onClear && (\n <IconButton\n type=\"button\"\n size=\"sm\"\n disabled={controlDisabled}\n disabledReason={controlReason}\n aria-label={labels.remove(file.name)}\n onClick={(e) => {\n e.stopPropagation();\n onClear();\n afterRemoval(labels.removed(file.name));\n }}\n >\n <X aria-hidden />\n </IconButton>\n )}\n </div>\n {/* Locked, the reason takes the hint's place: what may be dropped is moot\n while nothing may. A chosen file keeps its size, the reason below. */}\n {locked && !(file && !multiple) ? (\n reasonLine\n ) : (\n <div className=\"text-xs text-[var(--text-muted)]\">\n {file && !multiple ? fileText.size(file.size) : hint}\n </div>\n )}\n {locked && file && !multiple && reasonLine}\n </>\n )}\n </>\n )}\n <div className=\"flex flex-wrap items-center justify-center gap-2\">\n <Button\n ref={browseRef}\n type=\"button\"\n variant=\"secondary\"\n disabled={controlDisabled}\n disabledReason={controlReason}\n onClick={(e) => {\n e.stopPropagation();\n open();\n }}\n >\n {browseLabel}\n </Button>\n {multiple && chosen.length > 0 && onClear && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n disabled={controlDisabled}\n disabledReason={controlReason}\n onClick={(e) => {\n e.stopPropagation();\n onClear();\n afterRemoval(labels.cleared);\n }}\n >\n {labels.clearAll}\n </Button>\n )}\n </div>\n {showError && (\n <p id={errorId} className=\"text-xs text-[var(--danger)]\">\n {error}\n </p>\n )}\n {/* The group's description while locked: a copy of its own, so a custom body\n that does not show the reason still has the zone say it. */}\n {locked && (\n <span id={reasonId} hidden>\n {disabledReason}\n </span>\n )}\n <input\n ref={setFileInput}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={inert}\n onChange={(e) => {\n // Copy, THEN reset: `files` is a live view of the value, and without the\n // reset picking the same file a second time fires no `change` at all —\n // the retry after a failed upload silently did nothing (kastlan).\n const picked = Array.from(e.currentTarget.files ?? []);\n e.currentTarget.value = \"\";\n acceptFiles(picked);\n }}\n // Clicks are forwarded here programmatically; one reaching the zone's own\n // handler again would open the dialog a second time.\n onClick={(e) => e.stopPropagation()}\n className=\"sr-only\"\n />\n </div>\n {/* Outside the zone, where they have always been (the zone used to be a\n `role=\"button\"`, whose content is presentational). `sr-only-fixed`, so they\n need no positioned ancestor. */}\n <span {...status.regionProps} />\n <span {...alert.regionProps} />\n </>\n );\n}\n\n/** A reason that is really there — `null`, `false` and `\"\"` are no reason. */\nfunction hasReason(reason: ReactNode): boolean {\n return reason !== undefined && reason !== null && reason !== false && reason !== \"\";\n}\n\n/** A click that landed on a control inside the zone (a custom body's own button, a\n * link in the hint) is that control's, not a request to open the picker. */\nfunction fromControl(e: MouseEvent<HTMLElement>): boolean {\n const target = e.target as Element | null;\n const control = target?.closest?.(\"button, a[href], input, select, textarea, label, [role='button']\");\n return Boolean(control && control !== e.currentTarget && e.currentTarget.contains(control));\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/components/file-dropzone.tsx"],"sourcesContent":["import { useId, useRef, useState } from \"react\";\nimport type { ComponentPropsWithRef, MouseEvent, ReactNode } from \"react\";\nimport { Upload, X } from \"lucide-react\";\nimport { Button } from \"./button\";\nimport { IconButton } from \"./icon-button\";\nimport { Spinner } from \"./spinner\";\nimport { FIELD_ERROR_CLASS } from \"./field-parts\";\nimport { cn } from \"../lib/cn\";\nimport { hasContent } from \"../lib/presence\";\nimport { useAnnounce } from \"../hooks/use-announce\";\nimport { useKitFileLabels, useKitLabels, type LabelOverride } from \"../i18n/kit-labels\";\n// The picker's words and screening from their own modules, not through FileButton's\n// re-export (MOD-8): the dropzone renders no FileButton.\nimport { DEFAULT_FILE_PICKER_LABELS } from \"../hooks/use-file-picker-labels\";\nimport { formatAccept, judgePick, screenFiles, summariseRejections } from \"../hooks/use-file-picker\";\nimport type { FilePickHandler, FilePickerLabels, FileRejection } from \"../hooks/use-file-picker\";\nimport { useDragTarget } from \"../hooks/use-file-drop\";\nimport { toast } from \"./toast\";\nimport { useCommitReason, type CommitScope } from \"./write-lock\";\n\n/**\n * Where a refused file's message goes.\n *\n * - `\"toast\"` — a `sonner` toast (the 0.5 behaviour, kept as the default for a caller\n * that handles nothing itself so no existing dropzone goes quiet on upgrade).\n * - `\"inline\"` — under the drop target, in the danger colour, tied to it with\n * `aria-describedby` (plus `data-invalid` for styling), and spoken through a live\n * region. Cleared by the next accepted pick.\n * - `\"none\"` — nothing visible; the caller shows it from `onReject` / `onInvalid`.\n * Still spoken, so a host rendering it should not ALSO make it `role=\"alert\"`.\n */\nexport type FileDropzoneRejectionFeedback = \"toast\" | \"inline\" | \"none\";\n\n/** What a custom {@link FileDropzoneProps.renderBody} is handed. */\nexport interface FileDropzoneState {\n /** A file drag is over the zone right now. */\n dragOver: boolean;\n disabled: boolean;\n busy: boolean;\n /** 0.22: locked with a reason (`disabledReason`, or `commit` under a locked\n * {@link WriteLockProvider}) — takes no files, like `disabled`. */\n locked: boolean;\n /** The reason while `locked`, for a custom body to show; `undefined` otherwise. */\n disabledReason: ReactNode | undefined;\n /** What is chosen: `files` in multiple mode, `[file]` or `[]` in single mode. */\n files: readonly File[];\n /** The inline refusal, when `rejectionFeedback=\"inline\"` has one to show. */\n error: string | null;\n /** Open the system picker — for a body that brings its own trigger (a second\n * \"Take photo\" button). Does nothing while `disabled` or `busy`. */\n open: () => void;\n /** The resolved `filePicker` strings, so a custom body speaks the same language. */\n labels: FilePickerLabels;\n}\n\n/**\n * `onInvalid` is omitted from the `<div>` attributes and kept as this component's own.\n * The DOM event of that name belongs to form validation and takes a `FormEvent`; this\n * one takes the rejected `File`, and the kit's meaning is the one every caller already\n * writes. Everything else a `<div>` takes reaches the root — which carries\n * `role=\"group\"` named by `dropLabel`, so that is also where an `aria-label` or an\n * `aria-describedby` belongs.\n *\n * Two modes. SINGLE (the default, and all of 0.5): `file` + `onFileSelected`. MULTIPLE\n * (`multiple`): `files` + `onFilesSelected`. They are optional rather than a union so\n * `FileDropzoneProps` stays an interface a caller can extend; a single-mode pick also\n * reaches `onFilesSelected` as a one-element array, so one handler can serve both.\n */\nexport interface FileDropzoneProps extends Omit<ComponentPropsWithRef<\"div\">, \"onInvalid\"> {\n /** Single mode: the chosen file, echoed with its size. */\n file?: File | null;\n /** Single mode: called with the accepted file. */\n onFileSelected?: (file: File) => void;\n /** Take several files per pick or drop. Without it a drop of several keeps the first. */\n multiple?: boolean;\n /** Multiple mode: the chosen files, listed in the zone. */\n files?: readonly File[];\n /** Every accepted file of one pick, in order. Never called with an empty array. */\n onFilesSelected?: (files: File[]) => void;\n /**\n * Show a remove button inside the zone once something is chosen (kastlan asked for\n * it: the only way to un-choose a file was to reload). Single mode: removes the file.\n * Multiple mode: a \"remove all\" button. The host clears its own state here — the\n * zone is controlled. Focus moves to the Browse button, and the removal is announced.\n */\n onClear?: () => void;\n /** Multiple mode: a remove button per listed file. */\n onRemove?: (file: File, index: number) => void;\n accept: string;\n /**\n * The caller's check. Optional since 0.6: without it the zone checks `accept` itself\n * (a drop ignores the dialog's filter). With it, `accept` is NOT re-checked — every\n * 0.5 caller's `isValid` is its own type check, and doubling it could refuse a file\n * the caller accepts (a `.zip` the OS labelled `application/octet-stream`).\n */\n isValid?: (file: File) => boolean;\n /** The message for an `isValid` refusal. Defaults to `labels.rejectedInvalid`. */\n invalidMessage?: string;\n /** Bytes; larger files are refused. */\n maxSize?: number;\n /** Multiple mode: files one pick may add. Pass what is LEFT for a running cap. */\n maxFiles?: number;\n /**\n * Called once per refused file. The 0.5 hook, kept as it was; {@link onReject}\n * carries the reason and the translated message as well.\n *\n * Its existence used to be what switched the toast off, and it still does (see\n * {@link rejectionFeedback}). The toast is the kit's `toast`, which loads `sonner`\n * lazily: it is an OPTIONAL peer, and a static import here once broke\n * `import { Button }` for every app without it (see `optional-peer-imports.test.tsx`).\n */\n onInvalid?: (file: File) => void;\n /** Every refused file of one pick, with its reason and message. */\n onReject?: (rejections: FileRejection[]) => void;\n /** The whole pick at once, before any of the above — return `false` to refuse all\n * of it (see {@link FilePickHandler}). A refused pick selects nothing; its one\n * message (`labels.rejectedPick`) goes where `rejectionFeedback` says. */\n onPick?: FilePickHandler;\n /** See {@link FileDropzoneRejectionFeedback}. Defaults to `\"toast\"` when neither\n * `onInvalid` nor `onReject` is given, `\"none\"` when one is. */\n rejectionFeedback?: FileDropzoneRejectionFeedback;\n /** Per-instance overrides of the `filePicker` label namespace. */\n labels?: LabelOverride<FilePickerLabels>;\n /** The dropzone's accessible name. A caller's own `aria-label` wins over it — see\n * the root element below. Optional since 0.8, like the three below: each falls back\n * to its `filePicker` string from `<UiKitProvider labels>`, then to English. They\n * were required, so every call site passed four strings through `t()` by hand, and a\n * zone nested in a kit component (the feedback form) had no call site to pass them. */\n dropLabel?: string;\n /** Default `filePicker.browse`. */\n browseLabel?: string;\n /** What the zone says while nothing is chosen. Default `filePicker.empty` /\n * `emptyMultiple`. */\n emptyLabel?: string;\n /** The second line, e.g. what may be dropped. Default `filePicker.hint(accept)`. */\n hint?: string;\n /**\n * Not taking files: no drop, no picker, no remove buttons; `aria-disabled` on the\n * group. keksdose locks its invoice zone while another form holds unsaved changes,\n * and hand-rolled the whole zone to be able to (invoice-upload.tsx, \"Locked\").\n */\n disabled?: boolean;\n /**\n * Working on what it was given — an upload, an OCR pass. Inert like `disabled`, plus\n * `aria-busy`, a spinner in place of the upload icon, and `filePicker.busy` as the\n * text. The other half of why keksdose's invoice zone was hand-rolled.\n */\n busy?: boolean;\n /**\n * Why the zone is not taking files — the write lock's sentence, a quota, a closed\n * period (keksdose K3). Takes no drop, no picker and no removal, like `disabled`, and\n * SAYS so: the Browse button (and every remove button) stays focusable,\n * `aria-disabled`, with the reason in the kit Tooltip and its description, the zone's\n * group is described by it, and the default body shows it where the hint was. Not\n * dimmed: what is chosen stays readable. Wins over `disabled`'s silent look.\n */\n disabledReason?: ReactNode;\n /**\n * This zone COMMITS — an upload that starts on drop. Under a locked\n * {@link WriteLockProvider} it takes the `disabledReason` path with the lock's\n * reason (which wins over one of its own). No provider, or an unlocked one: no\n * effect. A zone that only stages a file for a form saved later is not a commit.\n */\n commit?: CommitScope;\n /**\n * Replace the zone's body — the icon, the text and the chosen-file list — with your\n * own, given the zone's state: keksdose's spinner-plus-\"uploading\", its multi-shot\n * hint (\"several photos are possible\"), a second trigger for the camera.\n *\n * The Browse button, the inline error and the live regions stay: Browse is the\n * keyboard path, and a body that forgot it would leave the zone unreachable without\n * a pointer. A click on a control inside the body does not also open the picker.\n */\n renderBody?: (state: FileDropzoneState) => ReactNode;\n /** Extra classes for the dropzone's root. */\n className?: string;\n}\n\n/** Drag-and-drop file picker shared by the import wizards (YNAB zip, CAMT xml) and\n * kastlan's document forms. Refusals go to `onReject`/`onInvalid` and to\n * `rejectionFeedback`; the chosen file(s) are echoed with their size, otherwise\n * `emptyLabel` + `hint` describe what to drop. For a trigger with no drop area, see\n * `FileButton`. */\nexport function FileDropzone({\n file,\n onFileSelected,\n multiple,\n files,\n onFilesSelected,\n onClear,\n onRemove,\n accept,\n isValid,\n invalidMessage,\n maxSize,\n maxFiles,\n onInvalid,\n onReject,\n onPick,\n rejectionFeedback,\n labels: labelsProp,\n dropLabel: dropLabelProp,\n browseLabel: browseLabelProp,\n emptyLabel: emptyLabelProp,\n hint: hintProp,\n disabled,\n busy,\n disabledReason: ownDisabledReason,\n commit,\n renderBody,\n className,\n \"aria-label\": ariaLabel,\n \"aria-describedby\": describedByProp,\n ...rest\n}: FileDropzoneProps) {\n const [error, setError] = useState<string | null>(null);\n const disabledReason = useCommitReason(commit, ownDisabledReason);\n const locked = hasContent(disabledReason);\n // Locked counts as inert for every file path (drop, click, Browse, remove); only the\n // LOOK and the native `disabled` keep it apart, so its controls stay focusable.\n const inert = Boolean(disabled || busy) || locked;\n const reasonId = useId();\n // State rather than a ref: `open` is handed to `renderBody` during render, and a\n // function that reads a ref there is exactly what the refs rule cannot prove safe.\n const [fileInput, setFileInput] = useState<HTMLInputElement | null>(null);\n const browseRef = useRef<HTMLButtonElement>(null);\n const errorId = useId();\n // The size through the kit's `file.size` label (the provider's locale by default).\n // This was `${n / 1024} KB`: ASCII digits, an English unit, and a binary kilobyte\n // mislabelled as a decimal one, all in one template literal.\n const fileText = useKitFileLabels();\n const labels = useKitLabels(\"filePicker\", DEFAULT_FILE_PICKER_LABELS, labelsProp);\n // Two regions, two urgencies: a pick or a removal is news, a refusal is a failure.\n // The echoed file name is only text in the zone, and text changing somewhere on the\n // page is not announced by itself.\n const status = useAnnounce();\n const alert = useAnnounce({ politeness: \"assertive\" });\n const feedback: FileDropzoneRejectionFeedback =\n rejectionFeedback ?? (onInvalid || onReject ? \"none\" : \"toast\");\n const dropLabel = dropLabelProp ?? labels.dropzone;\n const browseLabel = browseLabelProp ?? labels.browse;\n const emptyLabel = emptyLabelProp ?? (multiple ? labels.emptyMultiple : labels.empty);\n const hint = hintProp ?? labels.hint(formatAccept(accept));\n\n const acceptFiles = (list: ArrayLike<File> | null | undefined) => {\n if (inert || !list || list.length === 0) return;\n const all = Array.from(list);\n const picked = multiple ? all : all.slice(0, 1);\n const { accepted, rejected } = screenFiles(\n picked,\n {\n accept: isValid ? undefined : accept,\n maxSize,\n maxFiles: multiple ? maxFiles : undefined,\n isValid,\n invalidMessage,\n },\n labels,\n fileText.size,\n );\n const stands = judgePick(onPick, accepted, rejected);\n if (stands && accepted.length > 0) {\n setError(null);\n if (multiple) {\n onFilesSelected?.(accepted);\n } else {\n onFileSelected?.(accepted[0]);\n onFilesSelected?.(accepted);\n }\n status.announce(labels.selected(accepted.length, accepted[0].name));\n }\n if (!stands || rejected.length > 0) {\n for (const r of rejected) onInvalid?.(r.file);\n if (rejected.length > 0) onReject?.(rejected);\n const message = stands\n ? summariseRejections(rejected, labels)\n : labels.rejectedPick(picked.length);\n if (feedback === \"toast\") {\n // The kit's `toast`, which loads sonner (an optional peer) lazily, so an app\n // that never trips this never has to install it. Nothing downstream depends\n // on the toast having appeared. The toaster is a live region, so this path\n // does not announce a second time.\n toast.error(message);\n } else {\n if (feedback === \"inline\") setError(message);\n alert.announce(message);\n }\n }\n };\n\n // The remove buttons unmount with the file they removed, and focus would fall to\n // <body>. Browse is where the next action (pick again) starts.\n const afterRemoval = (message: string) => {\n browseRef.current?.focus();\n status.announce(message);\n };\n\n // The enter/leave counter lives in the shared hook: the boolean this was flickered\n // across every child of the zone in Safari, whose drag events carry no\n // `relatedTarget` to tell a move onto a child from a real leave.\n const { dropProps, isOver: dragOver } = useDragTarget<HTMLDivElement>({\n disabled: inert,\n onDropFiles: acceptFiles,\n });\n const open = () => {\n if (!inert) fileInput?.click();\n };\n\n const chosen: readonly File[] = multiple ? (files ?? []) : file ? [file] : [];\n const showError = feedback === \"inline\" && error !== null;\n const describedBy = cn(describedByProp, showError && errorId, locked && reasonId) || undefined;\n // The controls inside: natively disabled while disabled or busy; locked, they take\n // the reason instead and stay reachable (Button's `disabledReason` path).\n const controlDisabled = Boolean(disabled || busy);\n const controlReason = locked ? disabledReason : undefined;\n const reasonLine = locked && (\n <div data-slot=\"file-dropzone-reason\" className=\"text-xs text-muted\">\n {disabledReason}\n </div>\n );\n\n return (\n <>\n {/* A named group, NOT a `role=\"button\"`. It was one, with real buttons (Browse,\n the remove buttons) inside it: nested interactive controls, which ARIA forbids\n because a button's children are presentational — a screen reader either read\n the zone as one opaque button or skipped the inner ones, and the zone was an\n extra Tab stop that did what Browse does. Now the keyboard path is Browse, a\n real button; the zone keeps its drop target and its click-anywhere for a\n pointer, which is a convenience on top of Browse rather than the only way in. */}\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions -- the click is a pointer shortcut for Browse, see above */}\n <div\n // `...rest` first: every handler below is the drop gesture itself.\n {...rest}\n {...dropProps}\n // Pointer only; every control inside stops its own click from reaching here\n // (and one in a custom body is skipped below). The keyboard equivalent is the\n // Browse button, so no key handler belongs on a group.\n onClick={(e) => {\n if (fromControl(e)) return;\n open();\n }}\n role=\"group\"\n // The DOM spelling wins over `dropLabel`, which stays the name for every caller\n // that passes no `aria-label` — i.e. all of them today. Standardising on\n // `aria-label` (audit §api-design) does not get to silently rename an existing\n // required prop.\n aria-label={ariaLabel ?? dropLabel}\n // No `aria-invalid`: ARIA does not allow it on `role=\"group\"`. The message is\n // reached through the description instead, and spoken when it appears.\n aria-describedby={describedBy}\n data-invalid={showError || undefined}\n aria-disabled={disabled || locked || undefined}\n aria-busy={busy || undefined}\n data-drag-over={dragOver || undefined}\n className={cn(\n // `relative` is load-bearing, not cosmetic. The file input below is `sr-only`,\n // which Tailwind implements as `position: absolute` — so without a positioned\n // ancestor its containing block is the INITIAL one, and it is laid out at its\n // own offset from the top of the document. Nothing looks wrong, because the\n // input is 1x1 and clipped; what breaks is the page height. On a long page\n // every escaped sr-only element extends `documentElement.scrollHeight` to its\n // own offset, which produces a second, whole-document scrollbar alongside the\n // app shell's own — one that scrolls past the end of the content into nothing.\n // Measured on the showcase: body 900px, document 47,919px.\n \"relative flex flex-col items-center justify-center gap-2 rounded-md border-2 border-dashed px-4 py-6 text-center transition-colors\",\n // Three states out of two border tokens: the target rests on the plain\n // hairline, hover pulls it to `--border-strong`, and a live drag keeps that\n // border and adds the `--bg-active` wash on top — so \"let go here\" still reads\n // one step louder than \"you are over it\". A refusal shown inline takes the\n // danger border until the next good pick.\n // Inert zones keep the resting hairline and lose the hover pull: a border that\n // answers the pointer promises a drop the zone will refuse.\n disabled\n ? \"cursor-not-allowed border-subtle opacity-60\"\n : busy\n ? \"cursor-progress border-subtle\"\n : locked\n ? \"cursor-not-allowed border-subtle\"\n : dragOver\n ? \"cursor-pointer border-strong bg-active\"\n : showError\n ? \"cursor-pointer border-danger-strong\"\n : \"cursor-pointer border-subtle hover:border-strong\",\n className,\n )}\n >\n {renderBody ? (\n renderBody({\n dragOver,\n disabled: Boolean(disabled),\n busy: Boolean(busy),\n locked,\n disabledReason: locked ? disabledReason : undefined,\n files: chosen,\n error: showError ? error : null,\n open,\n labels,\n })\n ) : busy ? (\n <>\n {/* `label={null}`: the zone is `aria-busy` and the line below says the\n same in words; a spoken \"Loading\" would only run into it. */}\n <Spinner label={null} className=\"size-5\" />\n <div className=\"text-sm text-secondary\">{labels.busy}</div>\n </>\n ) : (\n <>\n <Upload aria-hidden className=\"size-5 text-muted\" />\n {multiple && chosen.length > 0 ? (\n <>\n <ul className=\"flex w-full max-w-sm flex-col gap-1 text-start\">\n {chosen.map((f, i) => (\n <li\n // Name + size + position: two files may share a name, and the index\n // alone would re-key every row below a removal.\n key={`${f.name}-${f.size}-${i}`}\n className=\"flex items-center gap-2 text-sm text-secondary\"\n >\n <span className=\"min-w-0 flex-1 truncate font-medium\">{f.name}</span>\n <span className=\"shrink-0 text-xs text-muted\">{fileText.size(f.size)}</span>\n {onRemove && (\n <IconButton\n type=\"button\"\n size=\"sm\"\n disabled={controlDisabled}\n disabledReason={controlReason}\n aria-label={labels.remove(f.name)}\n onClick={(e) => {\n e.stopPropagation();\n onRemove(f, i);\n afterRemoval(labels.removed(f.name));\n }}\n >\n <X aria-hidden />\n </IconButton>\n )}\n </li>\n ))}\n </ul>\n {reasonLine}\n </>\n ) : (\n <>\n <div className=\"flex items-center gap-1 text-sm text-secondary\">\n {/* `!multiple`: in multiple mode an empty `files` list is \"nothing chosen\",\n whatever a stray `file` prop says — it used to show that file's name. */}\n {!multiple && file ? <span className=\"font-medium\">{file.name}</span> : emptyLabel}\n {!multiple && file && onClear && (\n <IconButton\n type=\"button\"\n size=\"sm\"\n disabled={controlDisabled}\n disabledReason={controlReason}\n aria-label={labels.remove(file.name)}\n onClick={(e) => {\n e.stopPropagation();\n onClear();\n afterRemoval(labels.removed(file.name));\n }}\n >\n <X aria-hidden />\n </IconButton>\n )}\n </div>\n {/* Locked, the reason takes the hint's place: what may be dropped is moot\n while nothing may. A chosen file keeps its size, the reason below. */}\n {locked && !(file && !multiple) ? (\n reasonLine\n ) : (\n <div className=\"text-xs text-muted\">\n {file && !multiple ? fileText.size(file.size) : hint}\n </div>\n )}\n {locked && file && !multiple && reasonLine}\n </>\n )}\n </>\n )}\n <div className=\"flex flex-wrap items-center justify-center gap-2\">\n <Button\n ref={browseRef}\n type=\"button\"\n variant=\"secondary\"\n disabled={controlDisabled}\n disabledReason={controlReason}\n onClick={(e) => {\n e.stopPropagation();\n open();\n }}\n >\n {browseLabel}\n </Button>\n {multiple && chosen.length > 0 && onClear && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n disabled={controlDisabled}\n disabledReason={controlReason}\n onClick={(e) => {\n e.stopPropagation();\n onClear();\n afterRemoval(labels.cleared);\n }}\n >\n {labels.clearAll}\n </Button>\n )}\n </div>\n {showError && (\n // Every field's error type (DUP-8: this was `text-xs`); the zone's `gap-2`\n // spaces it, so not the class's own `mt-1` as well.\n <p id={errorId} className={cn(FIELD_ERROR_CLASS, \"mt-0\")}>\n {error}\n </p>\n )}\n {/* The group's description while locked: a copy of its own, so a custom body\n that does not show the reason still has the zone say it. */}\n {locked && (\n <span id={reasonId} hidden>\n {disabledReason}\n </span>\n )}\n <input\n ref={setFileInput}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={inert}\n onChange={(e) => {\n // Copy, THEN reset: `files` is a live view of the value, and without the\n // reset picking the same file a second time fires no `change` at all —\n // the retry after a failed upload silently did nothing (kastlan).\n const picked = Array.from(e.currentTarget.files ?? []);\n e.currentTarget.value = \"\";\n acceptFiles(picked);\n }}\n // Clicks are forwarded here programmatically; one reaching the zone's own\n // handler again would open the dialog a second time.\n onClick={(e) => e.stopPropagation()}\n className=\"sr-only\"\n // Out of the tab order and the accessibility tree, as useFilePicker's: Browse\n // is the way in, and this was a second, nameless stop beside it (round 0.34,\n // the showcase's axe check).\n tabIndex={-1}\n aria-hidden\n />\n </div>\n {/* Outside the zone, where they have always been (the zone used to be a\n `role=\"button\"`, whose content is presentational). `sr-only-fixed`, so they\n need no positioned ancestor. */}\n <span {...status.regionProps} />\n <span {...alert.regionProps} />\n </>\n );\n}\n\n/** A click that landed on a control inside the zone (a custom body's own button, a\n * link in the hint) is that control's, not a request to open the picker. */\nfunction fromControl(e: MouseEvent<HTMLElement>): boolean {\n const target = e.target as Element | null;\n const control = target?.closest?.(\"button, a[href], input, select, textarea, label, [role='button']\");\n return Boolean(control && control !== e.currentTarget && e.currentTarget.contains(control));\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,2 @@
1
+ import type { FloatingPanelLabels } from "./floating-panel.js";
2
+ export declare const DEFAULT_FLOATING_PANEL_LABELS: FloatingPanelLabels;
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ const DEFAULT_FLOATING_PANEL_LABELS = {
3
+ close: "Close",
4
+ badge: (count) => `${count} new`
5
+ };
6
+ export {
7
+ DEFAULT_FLOATING_PANEL_LABELS
8
+ };
9
+ //# sourceMappingURL=floating-panel-labels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/floating-panel-labels.ts"],"sourcesContent":["// The English words of ./floating-panel, in a module with no component code: the English\n// catalogue (src/i18n/defaults.ts) imports them without the component, so `en` loads as one\n// chunk like the other languages (0.34, KS U8). ./floating-panel re-exports them.\n\nimport type { FloatingPanelLabels } from \"./floating-panel\";\n\nexport const DEFAULT_FLOATING_PANEL_LABELS: FloatingPanelLabels = {\n close: \"Close\",\n badge: (count) => `${count} new`,\n};\n"],"mappings":";AAMO,MAAM,gCAAqD;AAAA,EAChE,OAAO;AAAA,EACP,OAAO,CAAC,UAAU,GAAG,KAAK;AAC5B;","names":[]}
@@ -1,10 +1,7 @@
1
- import * as react from 'react';
2
- import { ButtonHTMLAttributes, ReactNode, MouseEvent, ReactElement, Ref, HTMLAttributes } from 'react';
3
- import { TooltipSide } from './tooltip.js';
4
- import '../hooks/use-anchored-rect.js';
5
- import '../lib/clipping.js';
6
-
7
- interface FloatingPanelLabels {
1
+ import type { ButtonHTMLAttributes, HTMLAttributes, MouseEvent, ReactElement, ReactNode, Ref } from "react";
2
+ import { type TooltipSide } from "./tooltip.js";
3
+ import { DEFAULT_FLOATING_PANEL_LABELS } from "./floating-panel-labels.js";
4
+ export interface FloatingPanelLabels {
8
5
  /** Accessible name of the panel header's X. */
9
6
  close: string;
10
7
  /**
@@ -14,10 +11,10 @@ interface FloatingPanelLabels {
14
11
  */
15
12
  badge: (count: number) => string;
16
13
  }
17
- declare const DEFAULT_FLOATING_PANEL_LABELS: FloatingPanelLabels;
14
+ export { DEFAULT_FLOATING_PANEL_LABELS };
18
15
  /** A LOGICAL corner: `bottom-end` is bottom-right in LTR and bottom-left in RTL. */
19
- type FloatingCorner = "bottom-end" | "bottom-start";
20
- interface FloatingActionButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children"> {
16
+ export type FloatingCorner = "bottom-end" | "bottom-start";
17
+ export interface FloatingActionButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children"> {
21
18
  /** The accessible name — the button shows only its icon. */
22
19
  label: string;
23
20
  icon: ReactNode;
@@ -118,8 +115,8 @@ interface FloatingActionButtonProps extends Omit<ButtonHTMLAttributes<HTMLButton
118
115
  * While mounted it reports its box (`lib/floating-stack.ts`), so `ServerWakeNotice`
119
116
  * stacks above it rather than over it.
120
117
  */
121
- declare function FloatingActionButton({ label, icon, corner, offset, nativeTitle, pressed, extended, live, variant, tooltip, tooltipSide, className, style, type, title, ref, ...rest }: FloatingActionButtonProps): react.JSX.Element;
122
- interface FloatingPanelProps {
118
+ export declare function FloatingActionButton({ label, icon, corner, offset, nativeTitle, pressed, extended, live, variant, tooltip, tooltipSide, className, style, type, title, ref, ...rest }: FloatingActionButtonProps): import("react").JSX.Element;
119
+ export interface FloatingPanelProps {
123
120
  /** The panel's heading, and its accessible name. */
124
121
  title: ReactNode;
125
122
  /** The trigger's accessible name ("Assistant", "Send feedback"). */
@@ -176,7 +173,8 @@ interface FloatingPanelProps {
176
173
  * closed from the page (a controlled owner) never pulls focus out of the field the
177
174
  * user is typing in. Escape closes it while focus is inside, and only then: on the
178
175
  * panel element, not the document, so Escape in the page keeps meaning whatever the
179
- * page means by it.
176
+ * page means by it. A layer of the kit's Escape stack open over it — a tooltip, a list —
177
+ * is handed the key first.
180
178
  *
181
179
  * ## Layout
182
180
  *
@@ -188,8 +186,8 @@ interface FloatingPanelProps {
188
186
  * panel unmounts when closed; an app that must keep a draft across a close keeps it in
189
187
  * its own state, where it also survives a reload.
190
188
  */
191
- declare function FloatingPanel({ title, fabLabel, fabIcon, open: openProp, defaultOpen, onOpenChange, corner, offset, fabNativeTitle, fabTooltip, closeLabel, initialFocus, className, bodyClassName, children, }: FloatingPanelProps): react.JSX.Element;
192
- interface FloatingActionGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, "role"> {
189
+ export declare function FloatingPanel({ title, fabLabel, fabIcon, open: openProp, defaultOpen, onOpenChange, corner, offset, fabNativeTitle, fabTooltip, closeLabel, initialFocus, className, bodyClassName, children, }: FloatingPanelProps): import("react").JSX.Element;
190
+ export interface FloatingActionGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, "role"> {
193
191
  /** Name the group ("Register actions"); a reader then introduces the members as one
194
192
  * set. A group with no name is one more unlabelled wrapper. */
195
193
  "aria-label"?: string;
@@ -218,10 +216,10 @@ interface FloatingActionGroupProps extends Omit<HTMLAttributes<HTMLDivElement>,
218
216
  * hand-built ones did, and there is no arrow-key roving to learn. Hide it where it
219
217
  * does not belong with a class (`md:hidden`, as both keksdose pages do).
220
218
  */
221
- declare function FloatingActionGroup({ corner, offset, className, style, children, ...rest }: FloatingActionGroupProps): react.JSX.Element;
219
+ export declare function FloatingActionGroup({ corner, offset, className, style, children, ...rest }: FloatingActionGroupProps): import("react").JSX.Element;
222
220
  /** What {@link FloatingActionProps.renderLink} is handed. Spread it onto your router's
223
221
  * link, mapping `href` — `renderLink={({ href, ...p }) => <Link to={href} {...p} />}`. */
224
- interface FloatingActionLinkProps {
222
+ export interface FloatingActionLinkProps {
225
223
  href: string;
226
224
  /** The member's whole look — keep it. */
227
225
  className: string;
@@ -231,7 +229,7 @@ interface FloatingActionLinkProps {
231
229
  [key: `aria-${string}`]: string | boolean | number | undefined;
232
230
  [key: `data-${string}`]: unknown;
233
231
  }
234
- interface FloatingActionProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children" | "onClick"> {
232
+ export interface FloatingActionProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children" | "onClick"> {
235
233
  /** The accessible name, and the tooltip's text. Keep it the same in both states of a
236
234
  * toggle; `aria-pressed` says which one it is in. */
237
235
  label: string;
@@ -284,6 +282,4 @@ interface FloatingActionProps extends Omit<ButtonHTMLAttributes<HTMLButtonElemen
284
282
  * keeps the brand member's fill inside the pill's corners), and the focus ring is inset
285
283
  * for the same reason.
286
284
  */
287
- declare function FloatingAction({ label, icon, pressed, pressedStyle, variant, badge, badgeLabel, badgeTone, tooltip, tooltipSide, href, renderLink, className, type, onClick, ref, ...rest }: FloatingActionProps): react.JSX.Element;
288
-
289
- export { DEFAULT_FLOATING_PANEL_LABELS, FloatingAction, FloatingActionButton, type FloatingActionButtonProps, FloatingActionGroup, type FloatingActionGroupProps, type FloatingActionLinkProps, type FloatingActionProps, type FloatingCorner, FloatingPanel, type FloatingPanelLabels, type FloatingPanelProps };
285
+ export declare function FloatingAction({ label, icon, pressed, pressedStyle, variant, badge, badgeLabel, badgeTone, tooltip, tooltipSide, href, renderLink, className, type, onClick, ref, ...rest }: FloatingActionProps): import("react").JSX.Element;