@eifi1/ui-kit 0.33.1 → 0.35.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 (1559) hide show
  1. package/README.md +512 -306
  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 +12 -110
  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 +12 -110
  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 +64 -111
  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 +6 -108
  222. package/dist/components/calculator.js +8 -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 +2 -205
  238. package/dist/components/chart-zoom.js +2 -330
  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 +69 -0
  250. package/dist/components/chip-input.js +220 -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 +15 -160
  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 +74 -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 +58 -0
  295. package/dist/components/currency-option-list.js +107 -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 +40 -23
  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 +83 -15
  322. package/dist/components/data-table-labels.js +4 -29
  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 +93 -0
  340. package/dist/components/data-table-shared.js +99 -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 +613 -15
  344. package/dist/components/data-table.js +150 -939
  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 +10 -12
  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 +61 -30
  371. package/dist/components/dropdown.js +61 -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 +11 -12
  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 +255 -0
  389. package/dist/components/field-base.js +223 -0
  390. package/dist/components/field-base.js.map +1 -0
  391. package/dist/components/field-parts.d.ts +180 -87
  392. package/dist/components/field-parts.js +52 -33
  393. package/dist/components/field-parts.js.map +1 -1
  394. package/dist/components/field-strip.d.ts +12 -36
  395. package/dist/components/field-strip.js +24 -22
  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 +16 -19
  401. package/dist/components/field-sync.js +4 -14
  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 +12 -18
  437. package/dist/components/hover-menu.js +19 -18
  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 +34 -18
  524. package/dist/components/modal.js +13 -13
  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 +74 -25
  542. package/dist/components/multi-select.js +166 -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 +28 -112
  551. package/dist/components/number-input.js +33 -67
  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 +29 -26
  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 +50 -120
  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 +21 -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 +11 -39
  703. package/dist/components/swipeable-row.js +13 -18
  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 +24 -15
  742. package/dist/components/tooltip.js +24 -14
  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 +35 -25
  752. package/dist/components/translation-review.js +24 -13
  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 +182 -15
  765. package/dist/components/use-table-state.js +53 -8
  766. package/dist/components/use-table-state.js.map +1 -1
  767. package/dist/components/user-avatar.d.ts +10 -23
  768. package/dist/components/user-avatar.js +1 -1
  769. package/dist/components/user-avatar.js.map +1 -1
  770. package/dist/components/wizard-stepper.d.ts +4 -7
  771. package/dist/components/wizard-stepper.js +3 -3
  772. package/dist/components/wizard-stepper.js.map +1 -1
  773. package/dist/components/write-lock-labels.d.ts +2 -0
  774. package/dist/components/write-lock-labels.js +8 -0
  775. package/dist/components/write-lock-labels.js.map +1 -0
  776. package/dist/components/write-lock.d.ts +16 -18
  777. package/dist/components/write-lock.js +4 -8
  778. package/dist/components/write-lock.js.map +1 -1
  779. package/dist/currencies.d.ts +23 -0
  780. package/dist/currencies.js +38 -0
  781. package/dist/currencies.js.map +1 -0
  782. package/dist/data-table.d.ts +10 -18
  783. package/dist/data-table.js.map +1 -1
  784. package/dist/demo/demo-banner.d.ts +15 -13
  785. package/dist/demo/demo-banner.js +5 -19
  786. package/dist/demo/demo-banner.js.map +1 -1
  787. package/dist/demo/demo-countdown.d.ts +7 -9
  788. package/dist/demo/demo-ended.d.ts +10 -13
  789. package/dist/demo/demo-ended.js +4 -4
  790. package/dist/demo/demo-ended.js.map +1 -1
  791. package/dist/demo/demo-labels.d.ts +4 -5
  792. package/dist/demo/demo-labels.js.map +1 -1
  793. package/dist/demo/demo-session.d.ts +3 -5
  794. package/dist/demo/demo-start.d.ts +8 -11
  795. package/dist/demo/demo-start.js +3 -2
  796. package/dist/demo/demo-start.js.map +1 -1
  797. package/dist/eslint/index.d.ts +83 -0
  798. package/dist/eslint/index.js +69 -0
  799. package/dist/eslint/index.js.map +1 -0
  800. package/dist/eslint/role-utilities.d.ts +48 -0
  801. package/dist/eslint/role-utilities.generated.d.ts +2 -0
  802. package/dist/eslint/role-utilities.generated.js +143 -0
  803. package/dist/eslint/role-utilities.generated.js.map +1 -0
  804. package/dist/eslint/role-utilities.js +43 -0
  805. package/dist/eslint/role-utilities.js.map +1 -0
  806. package/dist/feedback/feedback-attachment-labels.d.ts +16 -0
  807. package/dist/feedback/feedback-attachment-labels.js +17 -0
  808. package/dist/feedback/feedback-attachment-labels.js.map +1 -0
  809. package/dist/feedback/feedback-attachment.d.ts +312 -101
  810. package/dist/feedback/feedback-attachment.js +31 -42
  811. package/dist/feedback/feedback-attachment.js.map +1 -1
  812. package/dist/feedback/feedback-capture.d.ts +2 -4
  813. package/dist/feedback/feedback-context-labels.d.ts +2 -0
  814. package/dist/feedback/feedback-context-labels.js +9 -0
  815. package/dist/feedback/feedback-context-labels.js.map +1 -0
  816. package/dist/feedback/feedback-context.d.ts +110 -101
  817. package/dist/feedback/feedback-context.js +4 -7
  818. package/dist/feedback/feedback-context.js.map +1 -1
  819. package/dist/feedback/feedback-crash.d.ts +8 -110
  820. package/dist/feedback/feedback-dialog-labels.d.ts +12 -0
  821. package/dist/feedback/feedback-dialog-labels.js +17 -0
  822. package/dist/feedback/feedback-dialog-labels.js.map +1 -0
  823. package/dist/feedback/feedback-dialog.d.ts +186 -101
  824. package/dist/feedback/feedback-dialog.js +8 -18
  825. package/dist/feedback/feedback-dialog.js.map +1 -1
  826. package/dist/feedback/feedback-inbox.d.ts +236 -101
  827. package/dist/feedback/feedback-inbox.js +31 -141
  828. package/dist/feedback/feedback-inbox.js.map +1 -1
  829. package/dist/feedback/feedback-labels.d.ts +83 -101
  830. package/dist/feedback/feedback-labels.js.map +1 -1
  831. package/dist/feedback/feedback-menu-labels.d.ts +2 -0
  832. package/dist/feedback/feedback-menu-labels.js +10 -0
  833. package/dist/feedback/feedback-menu-labels.js.map +1 -0
  834. package/dist/feedback/feedback-menu.d.ts +83 -101
  835. package/dist/feedback/feedback-menu.js +3 -7
  836. package/dist/feedback/feedback-menu.js.map +1 -1
  837. package/dist/feedback/feedback-record.d.ts +239 -101
  838. package/dist/feedback/feedback-record.js +7 -2
  839. package/dist/feedback/feedback-record.js.map +1 -1
  840. package/dist/feedback/feedback-row-detail-labels.d.ts +2 -0
  841. package/dist/feedback/feedback-row-detail-labels.js +31 -0
  842. package/dist/feedback/feedback-row-detail-labels.js.map +1 -0
  843. package/dist/feedback/feedback-row-detail.d.ts +315 -101
  844. package/dist/feedback/feedback-row-detail.js +11 -37
  845. package/dist/feedback/feedback-row-detail.js.map +1 -1
  846. package/dist/feedback/feedback-status-undo.d.ts +66 -101
  847. package/dist/feedback/feedback-status-undo.js.map +1 -1
  848. package/dist/feedback/feedback-submit-dialog.d.ts +39 -0
  849. package/dist/feedback/feedback-submit-dialog.js +66 -0
  850. package/dist/feedback/feedback-submit-dialog.js.map +1 -0
  851. package/dist/feedback/feedback-submit.d.ts +13 -109
  852. package/dist/feedback/feedback-submit.js +19 -40
  853. package/dist/feedback/feedback-submit.js.map +1 -1
  854. package/dist/feedback/feedback-swipe.d.ts +9 -110
  855. package/dist/feedback/feedback-swipe.js +1 -1
  856. package/dist/feedback/feedback-swipe.js.map +1 -1
  857. package/dist/feedback/feedback-table-labels.d.ts +2 -0
  858. package/dist/feedback/feedback-table-labels.js +26 -0
  859. package/dist/feedback/feedback-table-labels.js.map +1 -0
  860. package/dist/feedback/feedback-table.d.ts +314 -101
  861. package/dist/feedback/feedback-table.js +11 -31
  862. package/dist/feedback/feedback-table.js.map +1 -1
  863. package/dist/feedback/feedback-thread-labels.d.ts +3 -0
  864. package/dist/feedback/feedback-thread-labels.js +21 -0
  865. package/dist/feedback/feedback-thread-labels.js.map +1 -0
  866. package/dist/feedback/feedback-thread.d.ts +373 -101
  867. package/dist/feedback/feedback-thread.js +26 -35
  868. package/dist/feedback/feedback-thread.js.map +1 -1
  869. package/dist/feedback/feedback-vocabulary.d.ts +98 -0
  870. package/dist/feedback/feedback-vocabulary.js +143 -0
  871. package/dist/feedback/feedback-vocabulary.js.map +1 -0
  872. package/dist/feedback.d.ts +15 -105
  873. package/dist/hooks/use-anchored-panel.d.ts +77 -15
  874. package/dist/hooks/use-anchored-panel.js +34 -1
  875. package/dist/hooks/use-anchored-panel.js.map +1 -1
  876. package/dist/hooks/use-anchored-rect.d.ts +15 -6
  877. package/dist/hooks/use-anchored-rect.js +2 -1
  878. package/dist/hooks/use-anchored-rect.js.map +1 -1
  879. package/dist/hooks/use-announce.d.ts +4 -6
  880. package/dist/hooks/use-authed-src.d.ts +5 -7
  881. package/dist/hooks/use-authed-src.js +3 -7
  882. package/dist/hooks/use-authed-src.js.map +1 -1
  883. package/dist/hooks/use-body-scroll-lock.d.ts +1 -3
  884. package/dist/hooks/use-breakpoint.d.ts +16 -17
  885. package/dist/hooks/use-breakpoint.js.map +1 -1
  886. package/dist/hooks/use-close-transition.d.ts +8 -8
  887. package/dist/hooks/use-close-transition.js +5 -4
  888. package/dist/hooks/use-close-transition.js.map +1 -1
  889. package/dist/hooks/use-copy-to-clipboard.d.ts +5 -7
  890. package/dist/hooks/use-debounce.d.ts +13 -6
  891. package/dist/hooks/use-debounce.js.map +1 -1
  892. package/dist/hooks/use-dismiss.d.ts +50 -11
  893. package/dist/hooks/use-dismiss.js +80 -9
  894. package/dist/hooks/use-dismiss.js.map +1 -1
  895. package/dist/hooks/use-file-drop.d.ts +8 -110
  896. package/dist/hooks/use-file-drop.js +1 -1
  897. package/dist/hooks/use-file-drop.js.map +1 -1
  898. package/dist/hooks/use-file-picker-labels.d.ts +2 -0
  899. package/dist/hooks/use-file-picker-labels.js +25 -0
  900. package/dist/hooks/use-file-picker-labels.js.map +1 -0
  901. package/dist/hooks/use-file-picker.d.ts +164 -0
  902. package/dist/hooks/use-file-picker.js +149 -0
  903. package/dist/hooks/use-file-picker.js.map +1 -0
  904. package/dist/hooks/use-focus-trap.d.ts +2 -4
  905. package/dist/hooks/use-focus-trap.js +2 -1
  906. package/dist/hooks/use-focus-trap.js.map +1 -1
  907. package/dist/hooks/use-hotkey.d.ts +7 -9
  908. package/dist/hooks/use-large-text.d.ts +3 -5
  909. package/dist/hooks/use-media-query.d.ts +1 -3
  910. package/dist/hooks/use-noindex.d.ts +1 -3
  911. package/dist/hooks/use-overlay-history.d.ts +1 -3
  912. package/dist/hooks/use-row-swipe.d.ts +5 -8
  913. package/dist/hooks/use-search-param-state.d.ts +10 -11
  914. package/dist/hooks/use-windowed-rows.d.ts +4 -7
  915. package/dist/i18n/defaults.d.ts +11 -105
  916. package/dist/i18n/defaults.js +82 -82
  917. package/dist/i18n/defaults.js.map +1 -1
  918. package/dist/i18n/german.d.ts +2 -105
  919. package/dist/i18n/german.js +52 -8
  920. package/dist/i18n/german.js.map +1 -1
  921. package/dist/i18n/kit-labels.d.ts +619 -101
  922. package/dist/i18n/kit-labels.js +22 -97
  923. package/dist/i18n/kit-labels.js.map +1 -1
  924. package/dist/i18n/languages.d.ts +197 -101
  925. package/dist/i18n/locales/de-CH.d.ts +3 -106
  926. package/dist/i18n/locales/en.d.ts +4 -105
  927. package/dist/i18n/locales/en.js +1834 -4
  928. package/dist/i18n/locales/en.js.map +7 -1
  929. package/dist/i18n/locales/es.d.ts +3 -106
  930. package/dist/i18n/locales/es.js +52 -8
  931. package/dist/i18n/locales/es.js.map +1 -1
  932. package/dist/i18n/locales/fr.d.ts +3 -106
  933. package/dist/i18n/locales/fr.js +56 -10
  934. package/dist/i18n/locales/fr.js.map +1 -1
  935. package/dist/i18n/locales/hu.d.ts +3 -106
  936. package/dist/i18n/locales/hu.js +52 -8
  937. package/dist/i18n/locales/hu.js.map +1 -1
  938. package/dist/i18n/locales/it.d.ts +3 -106
  939. package/dist/i18n/locales/it.js +56 -10
  940. package/dist/i18n/locales/it.js.map +1 -1
  941. package/dist/i18n/locales/zh.d.ts +3 -106
  942. package/dist/i18n/locales/zh.js +51 -8
  943. package/dist/i18n/locales/zh.js.map +1 -1
  944. package/dist/i18n/plurals.d.ts +3 -5
  945. package/dist/i18n/review.d.ts +5 -107
  946. package/dist/i18n/review.js +4 -0
  947. package/dist/i18n/review.js.map +1 -1
  948. package/dist/i18n/shared-labels.d.ts +17 -0
  949. package/dist/i18n/shared-labels.js +111 -0
  950. package/dist/i18n/shared-labels.js.map +1 -0
  951. package/dist/i18n/swiss.d.ts +1 -3
  952. package/dist/index.d.ts +330 -249
  953. package/dist/index.js +188 -215
  954. package/dist/index.js.map +1 -1
  955. package/dist/landing/access.d.ts +7 -9
  956. package/dist/landing/access.js.map +1 -1
  957. package/dist/landing/landing-actions.d.ts +9 -109
  958. package/dist/landing/landing-actions.js +1 -1
  959. package/dist/landing/landing-actions.js.map +1 -1
  960. package/dist/landing/landing-labels.d.ts +4 -5
  961. package/dist/landing/landing-labels.js.map +1 -1
  962. package/dist/landing/landing-sections.d.ts +21 -121
  963. package/dist/landing/landing-sections.js +15 -15
  964. package/dist/landing/landing-sections.js.map +1 -1
  965. package/dist/landing/page-seo.d.ts +7 -9
  966. package/dist/landing/public-header.d.ts +10 -111
  967. package/dist/landing/public-header.js +1 -1
  968. package/dist/landing/public-header.js.map +1 -1
  969. package/dist/landing/routing.d.ts +16 -120
  970. package/dist/landing/routing.js +2 -6
  971. package/dist/landing/routing.js.map +1 -1
  972. package/dist/lib/calc.d.ts +7 -9
  973. package/dist/lib/chip-edge-snap.d.ts +10 -0
  974. package/dist/lib/chip-edge-snap.js +131 -0
  975. package/dist/lib/chip-edge-snap.js.map +1 -0
  976. package/dist/lib/clipping.d.ts +2 -4
  977. package/dist/lib/cn.d.ts +2 -5
  978. package/dist/lib/cn.js +6 -1
  979. package/dist/lib/cn.js.map +1 -1
  980. package/dist/lib/column-mapping.d.ts +10 -13
  981. package/dist/lib/countries.d.ts +3 -5
  982. package/dist/lib/dates.d.ts +25 -25
  983. package/dist/lib/dates.js.map +1 -1
  984. package/dist/lib/decimal-marks.d.ts +8 -8
  985. package/dist/lib/decimal-marks.js +1 -1
  986. package/dist/lib/decimal-marks.js.map +1 -1
  987. package/dist/lib/direction.d.ts +4 -6
  988. package/dist/lib/document-navigation.d.ts +1 -3
  989. package/dist/lib/download.d.ts +67 -0
  990. package/dist/lib/download.js +89 -0
  991. package/dist/lib/download.js.map +1 -0
  992. package/dist/lib/floating-stack.d.ts +8 -6
  993. package/dist/lib/floating-stack.js.map +1 -1
  994. package/dist/lib/format.d.ts +24 -23
  995. package/dist/lib/format.js +3 -3
  996. package/dist/lib/format.js.map +1 -1
  997. package/dist/lib/iban.d.ts +9 -11
  998. package/dist/lib/ime.d.ts +17 -0
  999. package/dist/lib/ime.js +13 -0
  1000. package/dist/lib/ime.js.map +1 -0
  1001. package/dist/lib/isin.d.ts +3 -5
  1002. package/dist/lib/logger.d.ts +4 -6
  1003. package/dist/lib/person-name.d.ts +3 -5
  1004. package/dist/lib/phone.d.ts +9 -11
  1005. package/dist/lib/presence.d.ts +15 -0
  1006. package/dist/lib/presence.js +8 -0
  1007. package/dist/lib/presence.js.map +1 -0
  1008. package/dist/lib/qr-encode.d.ts +4 -6
  1009. package/dist/lib/reduced-motion.d.ts +18 -0
  1010. package/dist/lib/reduced-motion.js +9 -0
  1011. package/dist/lib/reduced-motion.js.map +1 -0
  1012. package/dist/lib/refs.d.ts +13 -0
  1013. package/dist/lib/refs.js +15 -0
  1014. package/dist/lib/refs.js.map +1 -0
  1015. package/dist/lib/round.d.ts +22 -0
  1016. package/dist/lib/round.js +15 -0
  1017. package/dist/lib/round.js.map +1 -0
  1018. package/dist/lib/safe-storage.d.ts +14 -4
  1019. package/dist/lib/safe-storage.js +24 -9
  1020. package/dist/lib/safe-storage.js.map +1 -1
  1021. package/dist/lib/server-wake.d.ts +13 -14
  1022. package/dist/lib/session-refresh.d.ts +200 -0
  1023. package/dist/lib/session-refresh.js +187 -0
  1024. package/dist/lib/session-refresh.js.map +1 -0
  1025. package/dist/lib/strip-fade.d.ts +10 -13
  1026. package/dist/lib/table-text.d.ts +14 -16
  1027. package/dist/lib/text-match.d.ts +41 -0
  1028. package/dist/lib/text-match.js +23 -0
  1029. package/dist/lib/text-match.js.map +1 -0
  1030. package/dist/lib/translation-review.d.ts +44 -45
  1031. package/dist/lib/translation-review.js +3 -2
  1032. package/dist/lib/translation-review.js.map +1 -1
  1033. package/dist/rhf/fields.d.ts +131 -197
  1034. package/dist/rhf/fields.js +46 -54
  1035. package/dist/rhf/fields.js.map +1 -1
  1036. package/dist/rhf/form-core.d.ts +154 -0
  1037. package/dist/rhf/form-core.js +143 -0
  1038. package/dist/rhf/form-core.js.map +1 -0
  1039. package/dist/rhf/form.d.ts +9 -175
  1040. package/dist/rhf/form.js +2 -139
  1041. package/dist/rhf/form.js.map +1 -1
  1042. package/dist/rhf/line-items.d.ts +40 -11
  1043. package/dist/rhf/line-items.js.map +1 -1
  1044. package/dist/rhf/use-rhf-wizard-step.d.ts +3 -6
  1045. package/dist/rhf/use-rhf-wizard-step.js.map +1 -1
  1046. package/dist/rhf.d.ts +4 -118
  1047. package/dist/rhf.js.map +1 -1
  1048. package/dist/search/command-palette-labels.d.ts +2 -0
  1049. package/dist/search/command-palette-labels.js +15 -0
  1050. package/dist/search/command-palette-labels.js.map +1 -0
  1051. package/dist/search/command-palette.d.ts +10 -13
  1052. package/dist/search/command-palette.js +25 -44
  1053. package/dist/search/command-palette.js.map +1 -1
  1054. package/dist/search/global-search-labels.d.ts +2 -0
  1055. package/dist/search/global-search-labels.js +12 -0
  1056. package/dist/search/global-search-labels.js.map +1 -0
  1057. package/dist/search/global-search.d.ts +17 -16
  1058. package/dist/search/global-search.js +12 -12
  1059. package/dist/search/global-search.js.map +1 -1
  1060. package/dist/search/search-index.d.ts +13 -14
  1061. package/dist/search/search-index.js +2 -1
  1062. package/dist/search/search-index.js.map +1 -1
  1063. package/dist/search/use-command-key.d.ts +9 -0
  1064. package/dist/search/use-command-key.js +18 -0
  1065. package/dist/search/use-command-key.js.map +1 -0
  1066. package/dist/search.d.ts +3 -4
  1067. package/dist/settings/settings-card-classes.d.ts +11 -0
  1068. package/dist/settings/settings-card-classes.js +8 -0
  1069. package/dist/settings/settings-card-classes.js.map +1 -0
  1070. package/dist/settings/settings-catalogue.d.ts +11 -14
  1071. package/dist/settings/settings-context.d.ts +4 -8
  1072. package/dist/settings/settings-heading.d.ts +8 -12
  1073. package/dist/settings/settings-heading.js +1 -1
  1074. package/dist/settings/settings-heading.js.map +1 -1
  1075. package/dist/settings/settings-labels.d.ts +6 -7
  1076. package/dist/settings/settings-labels.js.map +1 -1
  1077. package/dist/settings/settings-layout.d.ts +36 -13
  1078. package/dist/settings/settings-layout.js +25 -4
  1079. package/dist/settings/settings-layout.js.map +1 -1
  1080. package/dist/settings/settings-section.d.ts +4 -107
  1081. package/dist/settings/settings-section.js +2 -2
  1082. package/dist/settings/settings-section.js.map +1 -1
  1083. package/dist/settings/use-account-appearance.d.ts +11 -16
  1084. package/dist/settings/use-account-language.d.ts +8 -10
  1085. package/dist/settings/use-settings-focus.d.ts +3 -5
  1086. package/dist/settings/use-settings-focus.js +2 -4
  1087. package/dist/settings/use-settings-focus.js.map +1 -1
  1088. package/dist/settings/use-settings-route.d.ts +11 -16
  1089. package/dist/shell/app-shell-labels.d.ts +2 -0
  1090. package/dist/shell/app-shell-labels.js +9 -0
  1091. package/dist/shell/app-shell-labels.js.map +1 -0
  1092. package/dist/shell/app-shell.d.ts +216 -101
  1093. package/dist/shell/app-shell.js +51 -35
  1094. package/dist/shell/app-shell.js.map +1 -1
  1095. package/dist/shell/auth-layout.d.ts +6 -9
  1096. package/dist/shell/auth-layout.js +6 -6
  1097. package/dist/shell/auth-layout.js.map +1 -1
  1098. package/dist/shell/company-switcher-labels.d.ts +2 -0
  1099. package/dist/shell/company-switcher-labels.js +12 -0
  1100. package/dist/shell/company-switcher-labels.js.map +1 -0
  1101. package/dist/shell/company-switcher.d.ts +9 -11
  1102. package/dist/shell/company-switcher.js +3 -9
  1103. package/dist/shell/company-switcher.js.map +1 -1
  1104. package/dist/shell/option-switcher-menu.d.ts +7 -9
  1105. package/dist/shell/option-switcher-menu.js +4 -4
  1106. package/dist/shell/option-switcher-menu.js.map +1 -1
  1107. package/dist/shell/role-switcher.d.ts +3 -7
  1108. package/dist/shell/role-switcher.js +3 -3
  1109. package/dist/shell/role-switcher.js.map +1 -1
  1110. package/dist/shell/top-bar-brand.d.ts +4 -107
  1111. package/dist/shell/top-bar-brand.js +1 -1
  1112. package/dist/shell/top-bar-brand.js.map +1 -1
  1113. package/dist/shell/top-bar.d.ts +6 -9
  1114. package/dist/shell/top-bar.js +1 -1
  1115. package/dist/shell/top-bar.js.map +1 -1
  1116. package/dist/shell/topbar-action-menu.d.ts +18 -31
  1117. package/dist/shell/topbar-action-menu.js +10 -10
  1118. package/dist/shell/topbar-action-menu.js.map +1 -1
  1119. package/dist/shell/topbar-controls.d.ts +14 -21
  1120. package/dist/shell/topbar-controls.js +11 -11
  1121. package/dist/shell/topbar-controls.js.map +1 -1
  1122. package/dist/shell.d.ts +25 -116
  1123. package/dist/shell.js.map +1 -1
  1124. package/dist/table-text.d.ts +1 -1
  1125. package/dist/testing/css-variables.d.ts +4 -6
  1126. package/dist/testing/css-variables.generated.d.ts +2 -4
  1127. package/dist/testing/index.d.ts +2 -1
  1128. package/dist/testing/index.js +11 -1
  1129. package/dist/testing/index.js.map +1 -1
  1130. package/dist/testing/viewport.d.ts +116 -0
  1131. package/dist/testing/viewport.js +203 -0
  1132. package/dist/testing/viewport.js.map +1 -0
  1133. package/dist/theme/chart-palette.d.ts +7 -9
  1134. package/dist/theme/color.d.ts +14 -16
  1135. package/dist/theme/color.js +2 -1
  1136. package/dist/theme/color.js.map +1 -1
  1137. package/dist/theme/contrast-tokens.d.ts +13 -17
  1138. package/dist/theme/contrast.d.ts +22 -27
  1139. package/dist/theme/palette-derive.d.ts +16 -22
  1140. package/dist/theme/palette-derive.js +15 -7
  1141. package/dist/theme/palette-derive.js.map +1 -1
  1142. package/dist/theme/palette-presets.d.ts +18 -15
  1143. package/dist/theme/palette-presets.js +66 -345
  1144. package/dist/theme/palette-presets.js.map +1 -1
  1145. package/dist/theme/palette-store.d.ts +10 -13
  1146. package/dist/theme/text-size.d.ts +21 -26
  1147. package/dist/theme/theme-store.d.ts +9 -14
  1148. package/dist/tour/tour-labels.d.ts +2 -0
  1149. package/dist/tour/tour-labels.js +13 -0
  1150. package/dist/tour/tour-labels.js.map +1 -0
  1151. package/dist/tour/tour.d.ts +12 -14
  1152. package/dist/tour/tour.js +9 -20
  1153. package/dist/tour/tour.js.map +1 -1
  1154. package/dist/tour.d.ts +1 -2
  1155. package/dist/wizard/stepper-nav.d.ts +8 -108
  1156. package/dist/wizard/stepper-nav.js +15 -14
  1157. package/dist/wizard/stepper-nav.js.map +1 -1
  1158. package/dist/wizard/types.d.ts +13 -18
  1159. package/dist/wizard/types.js +2 -24
  1160. package/dist/wizard/types.js.map +1 -1
  1161. package/dist/wizard/use-wizard.d.ts +2 -6
  1162. package/dist/wizard/validation.d.ts +3 -7
  1163. package/dist/wizard/wizard-context.d.ts +7 -11
  1164. package/dist/wizard/wizard-labels.d.ts +4 -0
  1165. package/dist/wizard/wizard-labels.js +24 -0
  1166. package/dist/wizard/wizard-labels.js.map +1 -0
  1167. package/dist/wizard/wizard-step.d.ts +3 -7
  1168. package/dist/wizard/wizard-step.js +2 -2
  1169. package/dist/wizard/wizard-step.js.map +1 -1
  1170. package/dist/wizard/wizard-summary.d.ts +5 -8
  1171. package/dist/wizard/wizard-summary.js +6 -5
  1172. package/dist/wizard/wizard-summary.js.map +1 -1
  1173. package/dist/wizard.d.ts +7 -107
  1174. package/package.json +17 -6
  1175. package/src/account/account-parts.ts +3 -3
  1176. package/src/{components → account}/account-settings-labels.ts +11 -1
  1177. package/src/{components → account}/account-settings.tsx +145 -34
  1178. package/src/account/data-export-setting-labels.ts +20 -0
  1179. package/src/account/data-export-setting.tsx +19 -38
  1180. package/src/account/delete-account-setting-labels.ts +33 -0
  1181. package/src/account/delete-account-setting.tsx +13 -35
  1182. package/src/account/email-change-setting-labels.ts +32 -0
  1183. package/src/account/email-change-setting.tsx +17 -36
  1184. package/src/{components → account}/passkeys-setting.tsx +14 -9
  1185. package/src/account/sessions-setting-labels.ts +24 -0
  1186. package/src/account/sessions-setting.tsx +14 -28
  1187. package/src/admin/admin-action-confirm-labels.ts +19 -0
  1188. package/src/admin/admin-action-confirm.tsx +59 -38
  1189. package/src/admin/admin-action-log-labels.ts +74 -0
  1190. package/src/admin/admin-action-log.tsx +180 -54
  1191. package/src/admin/admin-parts.ts +0 -7
  1192. package/src/admin/invitations-panel-labels.ts +31 -0
  1193. package/src/admin/invitations-panel.tsx +16 -34
  1194. package/src/admin/plan-change-labels.ts +23 -0
  1195. package/src/admin/plan-change.tsx +58 -34
  1196. package/src/admin/reviewer-scope-editor-labels.ts +16 -0
  1197. package/src/admin/reviewer-scope-editor.tsx +9 -15
  1198. package/src/admin/role-select-labels.ts +16 -0
  1199. package/src/admin/role-select.tsx +13 -23
  1200. package/src/admin/transfer-ownership-dialog-labels.ts +20 -0
  1201. package/src/admin/transfer-ownership-dialog.tsx +7 -17
  1202. package/src/admin/user-roster-labels.ts +17 -0
  1203. package/src/admin/user-roster.tsx +9 -17
  1204. package/src/auth/accept-invitation-labels.ts +21 -0
  1205. package/src/auth/accept-invitation.tsx +9 -20
  1206. package/src/auth/auth-errors.ts +29 -13
  1207. package/src/auth/complete-name-dialog-labels.ts +16 -0
  1208. package/src/auth/complete-name-dialog.tsx +8 -13
  1209. package/src/auth/forgot-password-form-labels.ts +20 -0
  1210. package/src/auth/forgot-password-form.tsx +12 -20
  1211. package/src/auth/new-password-fields.tsx +1 -1
  1212. package/src/auth/not-found-page-labels.ts +12 -0
  1213. package/src/auth/not-found-page.tsx +11 -14
  1214. package/src/auth/register-form-labels.ts +31 -0
  1215. package/src/auth/register-form.tsx +18 -38
  1216. package/src/auth/reset-password-form-labels.ts +27 -0
  1217. package/src/auth/reset-password-form.tsx +12 -27
  1218. package/src/auth/sign-in-form-labels.ts +44 -0
  1219. package/src/auth/sign-in-form.tsx +18 -51
  1220. package/src/auth/status-parts.tsx +3 -3
  1221. package/src/auth/verify-email-labels.ts +26 -0
  1222. package/src/auth/verify-email.tsx +15 -30
  1223. package/src/billing/billing-banner.tsx +7 -3
  1224. package/src/billing/billing-labels.ts +1 -1
  1225. package/src/billing/checkout-processing.ts +2 -12
  1226. package/src/billing/plan-card.tsx +26 -27
  1227. package/src/billing/plan-limit-notice.tsx +6 -3
  1228. package/src/billing/subscription-actions.tsx +4 -4
  1229. package/src/chart.ts +9 -1
  1230. package/src/components/account-chips-labels.ts +16 -0
  1231. package/src/components/account-chips.tsx +13 -16
  1232. package/src/components/alert-banner.tsx +39 -19
  1233. package/src/components/amount-input.tsx +458 -406
  1234. package/src/components/appearance-labels.ts +2 -2
  1235. package/src/components/authed-image-labels.ts +11 -0
  1236. package/src/components/authed-image.tsx +6 -8
  1237. package/src/components/autocomplete.tsx +79 -78
  1238. package/src/components/breadcrumbs-labels.ts +10 -0
  1239. package/src/components/breadcrumbs.tsx +17 -14
  1240. package/src/components/bulk-action-bar-labels.ts +11 -0
  1241. package/src/components/bulk-action-bar.tsx +15 -16
  1242. package/src/components/button-group.tsx +7 -7
  1243. package/src/components/button-look.ts +230 -0
  1244. package/src/components/button.tsx +339 -0
  1245. package/src/components/calculator.tsx +14 -12
  1246. package/src/components/calendar-heatmap-labels.ts +15 -0
  1247. package/src/components/calendar-heatmap.tsx +13 -19
  1248. package/src/components/card.tsx +381 -0
  1249. package/src/components/chart-zoom-core.tsx +653 -0
  1250. package/src/components/chart-zoom.tsx +21 -648
  1251. package/src/components/chart.tsx +11 -11
  1252. package/src/components/checkbox-group.tsx +13 -10
  1253. package/src/components/checkbox.tsx +43 -42
  1254. package/src/components/chip-input.tsx +370 -0
  1255. package/src/components/chip-labels.ts +13 -0
  1256. package/src/components/chip.tsx +115 -711
  1257. package/src/components/choice-card.tsx +83 -85
  1258. package/src/components/column-mapper-labels.ts +45 -0
  1259. package/src/components/column-mapper.tsx +16 -51
  1260. package/src/components/combobox-core.tsx +346 -194
  1261. package/src/components/combobox-suggestions.tsx +129 -0
  1262. package/src/components/combobox.tsx +70 -896
  1263. package/src/components/confirm-dialog-labels.ts +13 -0
  1264. package/src/components/confirm-dialog.tsx +4 -8
  1265. package/src/components/copy-button-labels.ts +13 -0
  1266. package/src/components/copy-button.tsx +15 -13
  1267. package/src/components/country-select-labels.ts +11 -0
  1268. package/src/components/country-select.tsx +74 -89
  1269. package/src/components/currency-option-list.tsx +182 -0
  1270. package/src/components/currency-select.tsx +85 -196
  1271. package/src/components/danger-confirm-labels.ts +20 -0
  1272. package/src/components/danger-confirm.tsx +72 -80
  1273. package/src/components/data-table-cells.tsx +5 -5
  1274. package/src/components/data-table-column-settings.tsx +137 -0
  1275. package/src/components/data-table-filter-popover.tsx +51 -25
  1276. package/src/components/data-table-filters.ts +48 -11
  1277. package/src/components/data-table-head.tsx +258 -0
  1278. package/src/components/data-table-labels.ts +21 -71
  1279. package/src/components/data-table-mobile.tsx +594 -0
  1280. package/src/components/data-table-pagination.tsx +11 -10
  1281. package/src/components/data-table-resize.ts +187 -0
  1282. package/src/components/data-table-row-actions.tsx +152 -0
  1283. package/src/components/data-table-selection.ts +55 -0
  1284. package/src/components/data-table-shared.tsx +225 -0
  1285. package/src/components/data-table.tsx +205 -1315
  1286. package/src/components/date-field.tsx +627 -0
  1287. package/src/components/date-picker.tsx +58 -1446
  1288. package/src/components/date-range-picker.tsx +490 -0
  1289. package/src/components/description-list-labels.ts +9 -0
  1290. package/src/components/description-list.tsx +31 -15
  1291. package/src/components/dialog-frame-labels.ts +7 -0
  1292. package/src/components/dialog-frame.tsx +11 -7
  1293. package/src/components/disclosure.tsx +14 -14
  1294. package/src/components/dropdown.tsx +129 -43
  1295. package/src/components/empty-state.tsx +137 -0
  1296. package/src/components/entity-combobox.tsx +18 -13
  1297. package/src/components/error-boundary-labels.ts +20 -0
  1298. package/src/components/error-boundary.tsx +10 -20
  1299. package/src/components/facing-pair.ts +1 -1
  1300. package/src/components/field-base.tsx +604 -0
  1301. package/src/components/field-parts.tsx +192 -77
  1302. package/src/components/field-strip.tsx +12 -33
  1303. package/src/components/field-sync-labels.ts +13 -0
  1304. package/src/components/field-sync.tsx +8 -16
  1305. package/src/components/field.tsx +17 -15
  1306. package/src/components/file-button.tsx +64 -412
  1307. package/src/components/file-dropzone.tsx +36 -33
  1308. package/src/components/floating-panel-labels.ts +10 -0
  1309. package/src/components/floating-panel.tsx +32 -21
  1310. package/src/components/focus-ring.ts +9 -4
  1311. package/src/components/form-actions-labels.ts +11 -0
  1312. package/src/components/form-actions.tsx +17 -21
  1313. package/src/components/full-bleed-dialog.tsx +28 -25
  1314. package/src/components/grouped-picker.tsx +118 -96
  1315. package/src/components/help-popover.tsx +115 -0
  1316. package/src/components/hover-menu.tsx +45 -38
  1317. package/src/components/iban-input-labels.ts +15 -0
  1318. package/src/components/iban-input.tsx +25 -20
  1319. package/src/components/icon-button.tsx +945 -0
  1320. package/src/components/icon-picker-labels.ts +13 -0
  1321. package/src/components/icon-picker.tsx +27 -24
  1322. package/src/components/image-grid-labels.ts +11 -0
  1323. package/src/components/image-grid.tsx +13 -15
  1324. package/src/components/inline-edit-field-labels.ts +11 -0
  1325. package/src/components/inline-edit-field.tsx +20 -19
  1326. package/src/components/inline-entity-combobox.tsx +789 -0
  1327. package/src/components/input.tsx +380 -0
  1328. package/src/components/jump-calendar.tsx +385 -0
  1329. package/src/components/language-select.tsx +31 -16
  1330. package/src/components/legal-labels.ts +99 -0
  1331. package/src/components/legal-page.tsx +2 -2
  1332. package/src/components/legal.tsx +11 -101
  1333. package/src/components/lightbox-labels.ts +18 -0
  1334. package/src/components/lightbox.tsx +13 -21
  1335. package/src/components/line-items-labels.ts +14 -0
  1336. package/src/components/line-items.tsx +24 -31
  1337. package/src/components/list-labels.ts +10 -0
  1338. package/src/components/list.tsx +98 -75
  1339. package/src/components/loading-state.tsx +4 -4
  1340. package/src/components/measured-grid-labels.ts +25 -0
  1341. package/src/components/measured-grid.tsx +39 -62
  1342. package/src/components/menu-item.tsx +29 -26
  1343. package/src/components/mini-calendar-labels.ts +17 -0
  1344. package/src/components/mini-calendar.tsx +38 -45
  1345. package/src/components/modal.tsx +49 -20
  1346. package/src/components/money-draft.ts +72 -0
  1347. package/src/components/money-field.tsx +16 -30
  1348. package/src/components/month-picker-labels.ts +22 -0
  1349. package/src/components/month-picker.tsx +59 -45
  1350. package/src/components/multi-entity-combobox.tsx +17 -12
  1351. package/src/components/multi-select.tsx +300 -292
  1352. package/src/components/nav-pills.tsx +19 -8
  1353. package/src/components/number-field.tsx +7 -5
  1354. package/src/components/number-input.tsx +69 -99
  1355. package/src/components/numeric-field.ts +161 -0
  1356. package/src/components/numpad-sheet.tsx +16 -16
  1357. package/src/components/one-time-code-input.tsx +154 -169
  1358. package/src/components/page-contents-labels.ts +9 -0
  1359. package/src/components/page-contents.tsx +15 -15
  1360. package/src/components/page-header.tsx +9 -5
  1361. package/src/components/password-strength-labels.ts +23 -0
  1362. package/src/components/password-strength.tsx +13 -27
  1363. package/src/components/phone-input-labels.ts +10 -0
  1364. package/src/components/phone-input.tsx +42 -57
  1365. package/src/components/picker-sheet.tsx +47 -18
  1366. package/src/components/pie-chart.tsx +11 -9
  1367. package/src/components/popover-labels.ts +14 -0
  1368. package/src/components/popover.tsx +36 -37
  1369. package/src/components/progress-bar-labels.ts +10 -0
  1370. package/src/components/progress-bar.tsx +32 -23
  1371. package/src/components/qr-code.tsx +2 -2
  1372. package/src/components/reauth-dialog-labels.ts +13 -0
  1373. package/src/components/reauth-dialog.tsx +7 -10
  1374. package/src/components/row-actions-labels.ts +10 -0
  1375. package/src/components/row-actions.tsx +11 -10
  1376. package/src/components/scroll-area.tsx +4 -10
  1377. package/src/components/search-field.tsx +35 -49
  1378. package/src/components/select.tsx +302 -0
  1379. package/src/components/separator.tsx +2 -2
  1380. package/src/components/series-chart-axes.ts +329 -0
  1381. package/src/components/series-chart-thin.ts +180 -0
  1382. package/src/components/series-chart.tsx +125 -326
  1383. package/src/components/server-wake-labels.ts +11 -0
  1384. package/src/components/server-wake.tsx +39 -66
  1385. package/src/components/settings-fields.tsx +50 -19
  1386. package/src/components/share-card-labels.ts +30 -0
  1387. package/src/components/share-card.tsx +22 -37
  1388. package/src/components/sign-chip-labels.ts +12 -0
  1389. package/src/components/sign-chip.tsx +6 -9
  1390. package/src/components/signature-pad-labels.ts +24 -0
  1391. package/src/components/signature-pad.tsx +48 -57
  1392. package/src/components/signed-amount-labels.ts +10 -0
  1393. package/src/components/signed-amount.tsx +21 -22
  1394. package/src/components/skeleton.tsx +1 -1
  1395. package/src/components/slider.tsx +51 -39
  1396. package/src/components/sparkline-labels.ts +14 -0
  1397. package/src/components/sparkline.tsx +16 -21
  1398. package/src/components/spinner.tsx +81 -0
  1399. package/src/components/stat-tile-labels.ts +15 -0
  1400. package/src/components/stat-tile.tsx +39 -38
  1401. package/src/components/status-dot.tsx +17 -14
  1402. package/src/components/swatch-picker-labels.ts +10 -0
  1403. package/src/components/swatch-picker.tsx +23 -16
  1404. package/src/components/swipeable-row.tsx +17 -39
  1405. package/src/components/switch.tsx +33 -32
  1406. package/src/components/table.tsx +15 -15
  1407. package/src/components/tabs.tsx +660 -0
  1408. package/src/components/text-link.tsx +7 -7
  1409. package/src/components/text.tsx +10 -6
  1410. package/src/components/textarea.tsx +323 -0
  1411. package/src/components/tile-radio.tsx +6 -6
  1412. package/src/components/time-input.tsx +15 -7
  1413. package/src/components/toast-labels.ts +12 -0
  1414. package/src/components/toast.tsx +5 -8
  1415. package/src/components/toggle-group.tsx +105 -42
  1416. package/src/components/toggle-legend.tsx +6 -6
  1417. package/src/components/tooltip.tsx +47 -27
  1418. package/src/components/translation-review-editor.tsx +8 -7
  1419. package/src/components/translation-review-parts.tsx +9 -13
  1420. package/src/components/translation-review.tsx +50 -20
  1421. package/src/components/tree-view.tsx +14 -12
  1422. package/src/components/ui-labels.ts +22 -0
  1423. package/src/components/use-table-state.ts +91 -10
  1424. package/src/components/user-avatar.tsx +5 -5
  1425. package/src/components/wizard-stepper.tsx +7 -6
  1426. package/src/components/write-lock-labels.ts +9 -0
  1427. package/src/components/write-lock.tsx +10 -12
  1428. package/src/currencies.ts +70 -0
  1429. package/src/data-table.ts +4 -0
  1430. package/src/demo/demo-banner.tsx +16 -27
  1431. package/src/demo/demo-ended.tsx +8 -7
  1432. package/src/demo/demo-labels.ts +2 -2
  1433. package/src/demo/demo-start.tsx +7 -5
  1434. package/src/eslint/index.ts +161 -0
  1435. package/src/eslint/role-utilities.generated.ts +146 -0
  1436. package/src/eslint/role-utilities.ts +99 -0
  1437. package/src/feedback/feedback-attachment-labels.ts +36 -0
  1438. package/src/feedback/feedback-attachment.tsx +42 -66
  1439. package/src/feedback/feedback-context-labels.ts +10 -0
  1440. package/src/feedback/feedback-context.tsx +8 -9
  1441. package/src/feedback/feedback-dialog-labels.ts +28 -0
  1442. package/src/feedback/feedback-dialog.tsx +14 -44
  1443. package/src/feedback/feedback-inbox.tsx +49 -252
  1444. package/src/feedback/feedback-labels.ts +5 -5
  1445. package/src/feedback/feedback-menu-labels.ts +11 -0
  1446. package/src/feedback/feedback-menu.tsx +13 -11
  1447. package/src/feedback/feedback-record.ts +21 -7
  1448. package/src/feedback/feedback-row-detail-labels.ts +33 -0
  1449. package/src/feedback/feedback-row-detail.tsx +30 -43
  1450. package/src/feedback/feedback-status-undo.ts +3 -2
  1451. package/src/feedback/feedback-submit-dialog.tsx +109 -0
  1452. package/src/feedback/feedback-submit.tsx +45 -55
  1453. package/src/feedback/feedback-swipe.tsx +1 -1
  1454. package/src/feedback/feedback-table-labels.ts +27 -0
  1455. package/src/feedback/feedback-table.tsx +24 -40
  1456. package/src/feedback/feedback-thread-labels.ts +22 -0
  1457. package/src/feedback/feedback-thread.tsx +46 -50
  1458. package/src/feedback/feedback-vocabulary.ts +252 -0
  1459. package/src/hooks/use-anchored-panel.ts +102 -2
  1460. package/src/hooks/use-anchored-rect.ts +11 -9
  1461. package/src/hooks/use-authed-src.ts +13 -7
  1462. package/src/hooks/use-breakpoint.ts +5 -4
  1463. package/src/hooks/use-close-transition.ts +9 -10
  1464. package/src/hooks/use-debounce.ts +9 -0
  1465. package/src/hooks/use-dismiss.ts +210 -18
  1466. package/src/hooks/use-file-drop.ts +2 -2
  1467. package/src/hooks/use-file-picker-labels.ts +29 -0
  1468. package/src/hooks/use-file-picker.tsx +363 -0
  1469. package/src/hooks/use-focus-trap.ts +19 -6
  1470. package/src/i18n/defaults.ts +91 -82
  1471. package/src/i18n/german.ts +50 -6
  1472. package/src/i18n/kit-labels.tsx +85 -124
  1473. package/src/i18n/locales/en.ts +46 -0
  1474. package/src/i18n/locales/es.ts +50 -6
  1475. package/src/i18n/locales/fr.ts +55 -9
  1476. package/src/i18n/locales/hu.ts +50 -6
  1477. package/src/i18n/locales/it.ts +54 -8
  1478. package/src/i18n/locales/zh.ts +49 -6
  1479. package/src/i18n/review.ts +4 -0
  1480. package/src/i18n/shared-labels.ts +135 -0
  1481. package/src/index.ts +414 -404
  1482. package/src/landing/access.ts +2 -1
  1483. package/src/landing/landing-actions.tsx +6 -5
  1484. package/src/landing/landing-labels.ts +2 -2
  1485. package/src/landing/landing-sections.tsx +24 -23
  1486. package/src/landing/public-header.tsx +3 -2
  1487. package/src/landing/routing.tsx +2 -7
  1488. package/src/lib/chip-edge-snap.ts +212 -0
  1489. package/src/lib/cn.ts +13 -1
  1490. package/src/lib/dates.ts +4 -2
  1491. package/src/lib/decimal-marks.ts +4 -2
  1492. package/src/lib/download.ts +172 -0
  1493. package/src/lib/floating-stack.ts +5 -1
  1494. package/src/lib/format.ts +5 -3
  1495. package/src/lib/ime.ts +24 -0
  1496. package/src/lib/presence.ts +18 -0
  1497. package/src/lib/reduced-motion.ts +21 -0
  1498. package/src/lib/refs.ts +22 -0
  1499. package/src/lib/round.ts +38 -0
  1500. package/src/lib/safe-storage.ts +35 -11
  1501. package/src/lib/session-refresh.ts +473 -0
  1502. package/src/lib/text-match.ts +60 -0
  1503. package/src/lib/translation-review.ts +7 -6
  1504. package/src/rhf/fields.tsx +141 -189
  1505. package/src/rhf/form-core.tsx +328 -0
  1506. package/src/rhf/form.tsx +9 -320
  1507. package/src/rhf/line-items.tsx +2 -2
  1508. package/src/rhf/use-rhf-wizard-step.ts +4 -4
  1509. package/src/rhf.ts +4 -2
  1510. package/src/search/command-palette-labels.ts +16 -0
  1511. package/src/search/command-palette.tsx +37 -50
  1512. package/src/search/global-search-labels.ts +13 -0
  1513. package/src/search/global-search.tsx +50 -24
  1514. package/src/search/search-index.ts +5 -6
  1515. package/src/search/use-command-key.ts +22 -0
  1516. package/src/settings/settings-card-classes.ts +11 -0
  1517. package/src/settings/settings-heading.tsx +1 -1
  1518. package/src/settings/settings-labels.ts +2 -2
  1519. package/src/settings/settings-layout.tsx +65 -6
  1520. package/src/settings/settings-section.tsx +5 -5
  1521. package/src/settings/use-settings-focus.ts +2 -5
  1522. package/src/shell/app-shell-labels.ts +10 -0
  1523. package/src/shell/app-shell.tsx +79 -53
  1524. package/src/shell/auth-layout.tsx +11 -10
  1525. package/src/shell/company-switcher-labels.ts +13 -0
  1526. package/src/shell/company-switcher.tsx +7 -11
  1527. package/src/shell/option-switcher-menu.tsx +7 -5
  1528. package/src/shell/role-switcher.tsx +4 -4
  1529. package/src/shell/top-bar-brand.tsx +1 -1
  1530. package/src/shell/top-bar.tsx +6 -5
  1531. package/src/shell/topbar-action-menu.tsx +21 -19
  1532. package/src/shell/topbar-controls.tsx +15 -15
  1533. package/src/shell.ts +1 -1
  1534. package/src/testing/index.ts +13 -0
  1535. package/src/testing/viewport.ts +357 -0
  1536. package/src/theme/color.ts +7 -1
  1537. package/src/theme/palette-derive.ts +29 -7
  1538. package/src/theme/palette-presets.ts +82 -355
  1539. package/src/tour/tour-labels.ts +14 -0
  1540. package/src/tour/tour.tsx +13 -23
  1541. package/src/wizard/stepper-nav.tsx +19 -18
  1542. package/src/wizard/types.ts +3 -26
  1543. package/src/wizard/wizard-labels.ts +29 -0
  1544. package/src/wizard/wizard-step.tsx +2 -2
  1545. package/src/wizard/wizard-summary.tsx +8 -7
  1546. package/tokens.css +45 -14
  1547. package/dist/components/account-settings-labels.js.map +0 -1
  1548. package/dist/components/account-settings.js.map +0 -1
  1549. package/dist/components/choice-parts.d.ts +0 -24
  1550. package/dist/components/choice-parts.js +0 -18
  1551. package/dist/components/choice-parts.js.map +0 -1
  1552. package/dist/components/passkeys-setting.js.map +0 -1
  1553. package/dist/components/ui.d.ts +0 -101
  1554. package/dist/components/ui.js +0 -1955
  1555. package/dist/components/ui.js.map +0 -1
  1556. package/dist/data-table-labels-BJ5JE_X2.d.ts +0 -923
  1557. package/dist/delete-account-setting-DAgGBrbn.d.ts +0 -8167
  1558. package/src/components/choice-parts.ts +0 -33
  1559. package/src/components/ui.tsx +0 -4233
@@ -1,101 +1,85 @@
1
- import 'react';
2
- export { cB as DEFAULT_FILE_PICKER_LABELS, dj as FileButton, dk as FileButtonProps, gu as FilePickHandler, dm as FilePickerLabels, dn as FileRejection, dp as FileRejectionReason, dq as FileScreenOptions, fM as UseFilePickerOptions, fN as UseFilePickerReturn, gv as formatAccept, gw as judgePick, g3 as matchesAccept, gx as screenFiles, gy as summariseRejections, ge as useFilePicker } from '../delete-account-setting-DAgGBrbn.js';
3
- import './write-lock.js';
4
- import './tooltip.js';
5
- import '../hooks/use-anchored-rect.js';
6
- import '../lib/clipping.js';
7
- import '../data-table-labels-BJ5JE_X2.js';
8
- import './data-table-sort.js';
9
- import './swipeable-row.js';
10
- import './status-dot.js';
11
- import './progress-bar.js';
12
- import './signed-amount.js';
13
- import './stat-tile.js';
14
- import './chip.js';
15
- import 'lucide-react';
16
- import './field-parts.js';
17
- import './mini-calendar.js';
18
- import './calendar-heatmap.js';
19
- import './popover.js';
20
- import '../hooks/use-breakpoint.js';
21
- import './field-sync.js';
22
- import '../wizard/types.js';
23
- import '../tour/tour.js';
24
- import '../search/command-palette.js';
25
- import '../search/global-search.js';
26
- import '../search/search-index.js';
27
- import './month-picker.js';
28
- import './page-contents.js';
29
- import './series-chart-labels.js';
30
- import './pie-chart-labels.js';
31
- import './sparkline.js';
32
- import './signature-pad.js';
33
- import './password-strength.js';
34
- import './swatch-picker.js';
35
- import './tile-radio.js';
36
- import './icon-picker.js';
37
- import './dialog-frame.js';
38
- import './modal.js';
39
- import '../hooks/use-search-param-state.js';
40
- import './measured-grid.js';
41
- import './user-avatar.js';
42
- import '../lib/person-name.js';
43
- import '../shell/topbar-action-menu.js';
44
- import './menu-item.js';
45
- import './floating-panel.js';
46
- import '../hooks/use-authed-src.js';
47
- import './account-settings-labels.js';
48
- import './bulk-action-bar.js';
49
- import './list.js';
50
- import './breadcrumbs.js';
51
- import './toast.js';
52
- import './description-list.js';
53
- import './line-items.js';
54
- import './error-boundary.js';
55
- import './authed-image.js';
56
- import './image-grid.js';
57
- import './lightbox.js';
58
- import '../auth/sign-in-form.js';
59
- import '../landing/access.js';
60
- import '../landing/landing-labels.js';
61
- import '../shell/topbar-controls.js';
62
- import '../theme/palette-presets.js';
63
- import '../theme/chart-palette.js';
64
- import '../theme/theme-store.js';
65
- import 'zustand/middleware';
66
- import 'zustand';
67
- import '../auth/complete-name-dialog.js';
68
- import '../auth/forgot-password-form.js';
69
- import '../auth/status-parts.js';
70
- import '../auth/reset-password-form.js';
71
- import '../auth/verify-email.js';
72
- import '../auth/not-found-page.js';
73
- import '../auth/accept-invitation.js';
74
- import '../shell/company-switcher.js';
75
- import '../account/email-change-setting.js';
76
- import '../account/sessions-setting.js';
77
- import '../lib/format.js';
78
- import '../account/data-export-setting.js';
79
- import './account-chips.js';
80
- import '../admin/admin-parts.js';
81
- import '../admin/admin-action-log.js';
82
- import '../settings/settings-labels.js';
83
- import '../demo/demo-labels.js';
84
- import '../i18n/plurals.js';
85
- import './appearance-labels.js';
86
- import '../theme/contrast.js';
87
- import '../theme/text-size.js';
88
- import './reauth-dialog.js';
89
- import './server-wake.js';
90
- import '../lib/server-wake.js';
91
- import './translation-review-labels.js';
92
- import '../lib/translation-review.js';
93
- import './country-select.js';
94
- import './inline-edit-field.js';
95
- import '../lib/iban.js';
96
- import '../lib/phone.js';
97
- import './sign-chip.js';
98
- import './column-mapper.js';
99
- import '../lib/column-mapping.js';
100
- import '../lib/table-text.js';
101
- import './focus-ring.js';
1
+ import type { ComponentPropsWithoutRef, ReactNode, Ref } from "react";
2
+ import { Button } from "./button.js";
3
+ import { type CommitScope } from "./write-lock.js";
4
+ import { DEFAULT_FILE_PICKER_LABELS } from "../hooks/use-file-picker-labels.js";
5
+ import { type UseFilePickerOptions } from "../hooks/use-file-picker.js";
6
+ /**
7
+ * A button that opens the file picker — the shape all three apps kept writing by hand
8
+ * as a `<Button>` plus a hidden `<input type="file">` plus a ref between them (seven
9
+ * copies in keksdose, two each in kastlan and lenkbank).
10
+ *
11
+ * Every copy had to remember the same four things, and each one forgot at least one:
12
+ *
13
+ * 1. **Reset the input after every pick.** A file input fires `change` only when its
14
+ * value CHANGES, so picking the same file twice in a row — the retry after a failed
15
+ * upload, the second photo of the same receipt — did nothing at all, which reads as
16
+ * a broken button. `value = ""` after each pick; always, not per call site.
17
+ * 2. **`type="button"`.** `<Button>` does not set it, and inside a form a bare button
18
+ * submits the form before the picker opens.
19
+ * 3. **Check the file.** `accept` filters the DIALOG, not the result: the dialog's
20
+ * "All files" switch, a drop, and a mobile share sheet all hand over whatever the
21
+ * user chose. So `accept` is re-checked here, along with `maxSize`, `maxFiles` and
22
+ * an optional `isValid`.
23
+ * 4. **Say no without a toast.** A rejection is reported through `onReject`, with a
24
+ * translated message per file, and spoken through a live region — the kit does not
25
+ * decide how an app surfaces errors (keksdose's proposal §1 asked for exactly that).
26
+ *
27
+ * The part that is not a button — the hidden input, the check, the announcement — is
28
+ * {@link useFilePicker}, for the case where the thing that opens the picker is someone
29
+ * else's control (a card's "Add" action, a menu item, a second button for the camera).
30
+ */
31
+ export { DEFAULT_FILE_PICKER_LABELS };
32
+ export { formatAccept, judgePick, matchesAccept, screenFiles, summariseRejections, useFilePicker, } from "../hooks/use-file-picker.js";
33
+ export type { FilePickHandler, FilePickerLabels, FileRejection, FileRejectionReason, FileScreenOptions, UseFilePickerOptions, UseFilePickerReturn, } from "../hooks/use-file-picker.js";
34
+ type ButtonOwnProps = ComponentPropsWithoutRef<typeof Button>;
35
+ export interface FileButtonProps extends Omit<UseFilePickerOptions, "disabled">, Omit<ButtonOwnProps, "type" | "children" | "accept" | "capture" | "multiple"> {
36
+ /** The button's content — usually an icon and a word. It is the accessible name. */
37
+ children: ReactNode;
38
+ /** Busy: disabled, `aria-busy`, and a spinner before the content — for "uploading". */
39
+ pending?: boolean;
40
+ /** Also accept files dropped ON the button (lenkbank's "drop onto the button").
41
+ * Off by default: a button that silently takes drops is a surprise on a page that
42
+ * has a real drop target elsewhere. */
43
+ droppable?: boolean;
44
+ /**
45
+ * Show what was picked beside the button: the file's name, or "3 files selected"
46
+ * (`filePicker.selected`) for several — a native `<input type="file">` says this,
47
+ * and a bare button that takes a file and says nothing leaves the user to trust it.
48
+ * The read-out is a polite live region and describes the button, so it is heard
49
+ * when it changes and again on focus. It holds the last ACCEPTED pick: a refused
50
+ * file leaves it as it was. Off by default, so the button's layout is unchanged.
51
+ */
52
+ showFileName?: boolean;
53
+ /**
54
+ * Why picking is not available — {@link Button}'s `disabledReason`, with the picker's
55
+ * half added (keksdose K3): the button is `aria-disabled` but stays focusable, the
56
+ * reason is in the kit Tooltip and its description, a click opens no picker, and a
57
+ * `droppable` button takes no drop (the drag is still cancelled, so the browser does
58
+ * not navigate to the file). Wins over `disabled`, as on Button.
59
+ */
60
+ disabledReason?: ReactNode;
61
+ /**
62
+ * This pick COMMITS — an upload that starts on pick, an attachment saved at once.
63
+ * Under a locked {@link WriteLockProvider} it takes the `disabledReason` path with
64
+ * the lock's reason (which wins over one of its own). No provider, or an unlocked
65
+ * one: no effect. A picker that only fills a form the user saves later is not a
66
+ * commit, and is left live — the form's Save carries the lock.
67
+ */
68
+ commit?: CommitScope;
69
+ /** The `<button>`. A React 19 ref prop since 0.34 (MOD-4, refactor audit 2026-10); it
70
+ * was `forwardRef`. */
71
+ ref?: Ref<HTMLButtonElement>;
72
+ }
73
+ /**
74
+ * {@link useFilePicker} behind a {@link Button}: `variant` and every other button prop
75
+ * pass through, and the ref is the `<button>` (so `ref.current.click()` opens the
76
+ * picker from elsewhere too).
77
+ *
78
+ * ```tsx
79
+ * <FileButton accept="image/*,application/pdf" capture="environment" variant="secondary"
80
+ * maxSize={10_000_000} onFiles={([f]) => upload(f)} onReject={([r]) => setError(r.message)}>
81
+ * <Camera aria-hidden /> Photograph receipt
82
+ * </FileButton>
83
+ * ```
84
+ */
85
+ export declare function FileButton({ ref, accept, multiple, capture, maxSize, maxFiles, isValid, invalidMessage, onFiles, onPick, onReject, labels, pending, droppable, showFileName, disabled, disabledReason: ownDisabledReason, commit, children, className, onClick, onDragEnter, onDragOver, onDragLeave, onDrop, ...rest }: FileButtonProps): import("react").JSX.Element;
@@ -1,170 +1,25 @@
1
1
  "use client";
2
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
- import { forwardRef, useId, useRef, useState } from "react";
3
+ import { useId, useState } from "react";
4
4
  import { cn } from "../lib/cn.js";
5
- import { useAnnounce } from "../hooks/use-announce.js";
6
- import { useKitFileLabels, useKitLabels } from "../i18n/kit-labels.js";
7
- import { Button, Spinner } from "./ui.js";
5
+ import { hasContent } from "../lib/presence.js";
6
+ import { useKitLabels } from "../i18n/kit-labels.js";
7
+ import { Button } from "./button.js";
8
+ import { Spinner } from "./spinner.js";
8
9
  import { Tooltip } from "./tooltip.js";
9
10
  import { useCommitReason } from "./write-lock.js";
10
- const DEFAULT_FILE_PICKER_LABELS = {
11
- rejectedType: (name) => `\u201C${name}\u201D is not a supported file type`,
12
- rejectedTypeOnly: (accept) => `Only ${accept} files`,
13
- rejectedSize: (name, maxSize) => `\u201C${name}\u201D is larger than ${maxSize}`,
14
- rejectedCount: (name, maxFiles) => `\u201C${name}\u201D was not added: at most ${maxFiles} ${maxFiles === 1 ? "file" : "files"}`,
15
- rejectedInvalid: (name) => `\u201C${name}\u201D cannot be used here`,
16
- rejectedMany: (count) => `${count} files were not added`,
17
- rejectedPick: (count) => count === 1 ? "The file was not added" : `None of the ${count} files were added`,
18
- selected: (count, firstName) => count === 1 ? `\u201C${firstName}\u201D selected` : `${count} files selected`,
19
- remove: (name) => `Remove \u201C${name}\u201D`,
20
- clearAll: "Remove all files",
21
- removed: (name) => `\u201C${name}\u201D removed`,
22
- cleared: "All files removed",
23
- dropzone: "File upload",
24
- browse: "Browse",
25
- empty: "Drop a file here",
26
- emptyMultiple: "Drop files here",
27
- hint: (accept) => accept ? `Accepted: ${accept}` : "Any file type",
28
- busy: "Uploading\u2026"
29
- };
30
- function matchesAccept(file, accept) {
31
- const tokens = (accept ?? "").split(",").map((t) => t.trim().toLowerCase()).filter(Boolean);
32
- if (tokens.length === 0) return true;
33
- const name = file.name.toLowerCase();
34
- const type = (file.type || typeFromExtension(name) || "").toLowerCase();
35
- if (!type && !tokens.every((t) => t.startsWith("."))) return true;
36
- return tokens.some((token) => {
37
- if (token.startsWith(".")) return name.endsWith(token);
38
- if (!type) return false;
39
- if (token.endsWith("/*")) return type.startsWith(token.slice(0, -1));
40
- return type === token;
41
- });
42
- }
43
- const EXTENSION_TYPES = {
44
- heic: "image/heic",
45
- heif: "image/heif",
46
- avif: "image/avif",
47
- webp: "image/webp",
48
- jpg: "image/jpeg",
49
- jpeg: "image/jpeg",
50
- png: "image/png",
51
- gif: "image/gif",
52
- pdf: "application/pdf",
53
- csv: "text/csv",
54
- txt: "text/plain"
55
- };
56
- function typeFromExtension(name) {
57
- const dot = name.lastIndexOf(".");
58
- return dot === -1 ? void 0 : EXTENSION_TYPES[name.slice(dot + 1)];
59
- }
60
- function formatAccept(accept) {
61
- return accept.split(",").map((t) => t.trim().toLowerCase()).filter(Boolean).join(", ");
62
- }
63
- function screenFiles(files, opts, labels, formatSize) {
64
- const accepted = [];
65
- const rejected = [];
66
- const acceptText = opts.accept ? formatAccept(opts.accept) : "";
67
- const useOnly = acceptText !== "" && (labels.rejectedTypeOnly !== DEFAULT_FILE_PICKER_LABELS.rejectedTypeOnly || labels.rejectedType === DEFAULT_FILE_PICKER_LABELS.rejectedType);
68
- const typeMessage = (name) => useOnly ? labels.rejectedTypeOnly(acceptText, name) : labels.rejectedType(name);
69
- for (const file of files) {
70
- let reason = null;
71
- if (!matchesAccept(file, opts.accept)) reason = "type";
72
- else if (opts.maxSize !== void 0 && file.size > opts.maxSize) reason = "size";
73
- else if (opts.isValid && !opts.isValid(file)) reason = "invalid";
74
- else if (opts.maxFiles !== void 0 && accepted.length >= opts.maxFiles) reason = "count";
75
- if (reason === null) {
76
- accepted.push(file);
77
- continue;
78
- }
79
- const message = reason === "type" ? typeMessage(file.name) : reason === "size" ? labels.rejectedSize(file.name, formatSize(opts.maxSize ?? 0)) : reason === "count" ? labels.rejectedCount(file.name, Math.max(0, opts.maxFiles ?? 0)) : opts.invalidMessage ?? labels.rejectedInvalid(file.name);
80
- rejected.push({ file, reason, message });
81
- }
82
- return { accepted, rejected };
83
- }
84
- function judgePick(onPick, accepted, rejected) {
85
- if (!onPick) return true;
86
- return onPick(accepted, rejected) !== false || accepted.length === 0;
87
- }
88
- function summariseRejections(rejected, labels) {
89
- if (rejected.length === 0) return "";
90
- if (rejected.length === 1) return rejected[0].message;
91
- return labels.rejectedMany(rejected.length);
92
- }
93
- function useFilePicker({
94
- accept,
95
- multiple,
96
- capture,
97
- maxSize,
98
- maxFiles,
99
- isValid,
100
- invalidMessage,
101
- onFiles,
102
- onPick,
103
- onReject,
104
- disabled,
105
- labels: labelsProp
106
- }) {
107
- const inputRef = useRef(null);
108
- const labels = useKitLabels("filePicker", DEFAULT_FILE_PICKER_LABELS, labelsProp);
109
- const fileText = useKitFileLabels();
110
- const { announce, regionProps } = useAnnounce({ politeness: "assertive" });
111
- const take = (list) => {
112
- if (disabled || !list || list.length === 0) return;
113
- const all = Array.from(list);
114
- const files = multiple ? all : all.slice(0, 1);
115
- const { accepted, rejected } = screenFiles(
116
- files,
117
- // A single-file picker holds one file by definition; `maxFiles` is a multi-mode
118
- // cap and would only ever say "0" there if a caller passed it by mistake.
119
- { accept, maxSize, maxFiles: multiple ? maxFiles : void 0, isValid, invalidMessage },
120
- labels,
121
- fileText.size
122
- );
123
- if (!judgePick(onPick, accepted, rejected)) {
124
- if (rejected.length > 0) onReject?.(rejected);
125
- announce(labels.rejectedPick(files.length));
126
- return;
127
- }
128
- if (accepted.length > 0) onFiles?.(accepted);
129
- if (rejected.length > 0) {
130
- onReject?.(rejected);
131
- announce(summariseRejections(rejected, labels));
132
- }
133
- };
134
- const element = /* @__PURE__ */ jsxs(Fragment, { children: [
135
- /* @__PURE__ */ jsx(
136
- "input",
137
- {
138
- ref: inputRef,
139
- type: "file",
140
- accept,
141
- multiple,
142
- capture,
143
- disabled,
144
- className: "hidden",
145
- tabIndex: -1,
146
- "aria-hidden": true,
147
- onChange: (e) => {
148
- const picked = Array.from(e.currentTarget.files ?? []);
149
- e.currentTarget.value = "";
150
- take(picked);
151
- }
152
- }
153
- ),
154
- /* @__PURE__ */ jsx("span", { ...regionProps })
155
- ] });
156
- return {
157
- open: () => {
158
- if (!disabled) inputRef.current?.click();
159
- },
160
- take,
161
- element
162
- };
163
- }
164
- function hasReason(reason) {
165
- return reason !== void 0 && reason !== null && reason !== false && reason !== "";
166
- }
167
- const FileButton = forwardRef(function FileButton2({
11
+ import { DEFAULT_FILE_PICKER_LABELS } from "../hooks/use-file-picker-labels.js";
12
+ import { useFilePicker } from "../hooks/use-file-picker.js";
13
+ import {
14
+ formatAccept,
15
+ judgePick,
16
+ matchesAccept,
17
+ screenFiles,
18
+ summariseRejections,
19
+ useFilePicker as useFilePicker2
20
+ } from "../hooks/use-file-picker.js";
21
+ function FileButton({
22
+ ref,
168
23
  accept,
169
24
  multiple,
170
25
  capture,
@@ -190,9 +45,9 @@ const FileButton = forwardRef(function FileButton2({
190
45
  onDragLeave,
191
46
  onDrop,
192
47
  ...rest
193
- }, ref) {
48
+ }) {
194
49
  const disabledReason = useCommitReason(commit, ownDisabledReason);
195
- const locked = hasReason(disabledReason);
50
+ const locked = hasContent(disabledReason);
196
51
  const inert = Boolean(disabled || pending);
197
52
  const refusing = inert || locked;
198
53
  const [picked, setPicked] = useState([]);
@@ -260,7 +115,7 @@ const FileButton = forwardRef(function FileButton2({
260
115
  className: cn(
261
116
  // A live drag gets the focus ring's colour as a ring: "let go here", in the
262
117
  // same vocabulary the button already uses for "you are here".
263
- dragOver && "ring-2 ring-[var(--brand)]",
118
+ dragOver && "ring-2 ring-brand",
264
119
  // Beside a long file name it is the NAME that gives way, never the button.
265
120
  showFileName && "shrink-0",
266
121
  className
@@ -296,15 +151,14 @@ const FileButton = forwardRef(function FileButton2({
296
151
  id: pickedId,
297
152
  "aria-live": "polite",
298
153
  "data-slot": "file-button-name",
299
- className: "flex min-w-0 text-sm text-[var(--text-secondary)]",
154
+ className: "flex min-w-0 text-sm text-secondary",
300
155
  children: /* @__PURE__ */ jsx(Tooltip, { label: picked.map((f) => f.name).join(", "), lazy: true, className: "min-w-0", children: /* @__PURE__ */ jsx("span", { className: "block truncate-until-large", children: pickedText }) })
301
156
  }
302
157
  ),
303
158
  picker.element
304
159
  ] })
305
160
  );
306
- });
307
- FileButton.displayName = "FileButton";
161
+ }
308
162
  export {
309
163
  DEFAULT_FILE_PICKER_LABELS,
310
164
  FileButton,
@@ -313,6 +167,6 @@ export {
313
167
  matchesAccept,
314
168
  screenFiles,
315
169
  summariseRejections,
316
- useFilePicker
170
+ useFilePicker2 as useFilePicker
317
171
  };
318
172
  //# sourceMappingURL=file-button.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/file-button.tsx"],"sourcesContent":["import { forwardRef, useId, useRef, useState } from \"react\";\nimport type { ComponentPropsWithoutRef, DragEvent, ReactElement, ReactNode, Ref } from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { useAnnounce } from \"../hooks/use-announce\";\nimport { useKitFileLabels, useKitLabels } from \"../i18n/kit-labels\";\nimport { Button, Spinner } from \"./ui\";\nimport { Tooltip } from \"./tooltip\";\nimport { useCommitReason, type CommitScope } from \"./write-lock\";\n\n/**\n * A button that opens the file picker — the shape all three apps kept writing by hand\n * as a `<Button>` plus a hidden `<input type=\"file\">` plus a ref between them (seven\n * copies in keksdose, two each in kastlan and lenkbank).\n *\n * Every copy had to remember the same four things, and each one forgot at least one:\n *\n * 1. **Reset the input after every pick.** A file input fires `change` only when its\n * value CHANGES, so picking the same file twice in a row — the retry after a failed\n * upload, the second photo of the same receipt — did nothing at all, which reads as\n * a broken button. `value = \"\"` after each pick; always, not per call site.\n * 2. **`type=\"button\"`.** `<Button>` does not set it, and inside a form a bare button\n * submits the form before the picker opens.\n * 3. **Check the file.** `accept` filters the DIALOG, not the result: the dialog's\n * \"All files\" switch, a drop, and a mobile share sheet all hand over whatever the\n * user chose. So `accept` is re-checked here, along with `maxSize`, `maxFiles` and\n * an optional `isValid`.\n * 4. **Say no without a toast.** A rejection is reported through `onReject`, with a\n * translated message per file, and spoken through a live region — the kit does not\n * decide how an app surfaces errors (keksdose's proposal §1 asked for exactly that).\n *\n * The part that is not a button — the hidden input, the check, the announcement — is\n * {@link useFilePicker}, for the case where the thing that opens the picker is someone\n * else's control (a card's \"Add\" action, a menu item, a second button for the camera).\n */\n\n/* ── Labels ──────────────────────────────────────────────────────────────── */\n\n/** Every string the file pickers ({@link FileButton}, `FileDropzone`) render or speak.\n * Messages are functions of the file name so a translation can put it anywhere. */\nexport interface FilePickerLabels {\n /** The file's type is not in `accept`, when no `accept` is known to name (see\n * `rejectedTypeOnly`). */\n rejectedType: (name: string) => string;\n /** The file's type is not in `accept`, naming what IS accepted: `accept`'s tokens,\n * lower-cased and joined with \", \" (`\".csv\"` => \"Only .csv files\"). Used whenever\n * `accept` is set — kastlan kept a custom `isValid` + `invalidMessage` per form only\n * to say this, and `accept` already knows it. */\n rejectedTypeOnly: (accept: string, name: string) => string;\n /** The file is larger than `maxSize`; `maxSize` arrives formatted (\"5 MB\"). */\n rejectedSize: (name: string, maxSize: string) => string;\n /** The file was one too many for `maxFiles`. */\n rejectedCount: (name: string, maxFiles: number) => string;\n /** `isValid` said no and the caller gave no `invalidMessage`. */\n rejectedInvalid: (name: string) => string;\n /** Spoken instead of the per-file message when more than one file was refused. */\n rejectedMany: (count: number) => string;\n /** Spoken (and shown, on a dropzone) when `onPick` refused the WHOLE pick.\n * Receives the number of files in it. */\n rejectedPick: (count: number) => string;\n /** Spoken after a pick the component itself echoes (the dropzone). */\n selected: (count: number, firstName: string) => string;\n /** The dropzone's remove button for one file. */\n remove: (name: string) => string;\n /** The dropzone's remove-everything button in `multiple` mode. */\n clearAll: string;\n /** Spoken after a remove / clear, since the button that was pressed is gone. */\n removed: (name: string) => string;\n cleared: string;\n /** The dropzone's accessible name, when the host passes no `dropLabel`. */\n dropzone: string;\n /** The dropzone's Browse button, when the host passes no `browseLabel`. */\n browse: string;\n /** What an empty single-file dropzone says (no `emptyLabel` given). */\n empty: string;\n /** …and an empty `multiple` one. */\n emptyMultiple: string;\n /** The dropzone's second line (no `hint` given). Receives `accept` as a person\n * reads it (`\".pdf, image/png\"`), or `\"\"` when anything goes. */\n hint: (accept: string) => string;\n /** What a `busy` dropzone says in place of its body (\"Uploading…\"). */\n busy: string;\n}\n\nexport const DEFAULT_FILE_PICKER_LABELS: FilePickerLabels = {\n rejectedType: (name) => `“${name}” is not a supported file type`,\n rejectedTypeOnly: (accept) => `Only ${accept} files`,\n rejectedSize: (name, maxSize) => `“${name}” is larger than ${maxSize}`,\n rejectedCount: (name, maxFiles) =>\n `“${name}” was not added: at most ${maxFiles} ${maxFiles === 1 ? \"file\" : \"files\"}`,\n rejectedInvalid: (name) => `“${name}” cannot be used here`,\n rejectedMany: (count) => `${count} files were not added`,\n rejectedPick: (count) =>\n count === 1 ? \"The file was not added\" : `None of the ${count} files were added`,\n selected: (count, firstName) => (count === 1 ? `“${firstName}” selected` : `${count} files selected`),\n remove: (name) => `Remove “${name}”`,\n clearAll: \"Remove all files\",\n removed: (name) => `“${name}” removed`,\n cleared: \"All files removed\",\n dropzone: \"File upload\",\n browse: \"Browse\",\n empty: \"Drop a file here\",\n emptyMultiple: \"Drop files here\",\n hint: (accept) => (accept ? `Accepted: ${accept}` : \"Any file type\"),\n busy: \"Uploading…\",\n};\n\n/* ── Screening ───────────────────────────────────────────────────────────── */\n\nexport type FileRejectionReason = \"type\" | \"size\" | \"count\" | \"invalid\";\n\n/** One file the picker refused, and why. `message` is already translated (see\n * {@link FilePickerLabels}, or the caller's `invalidMessage`), so a host that just\n * wants to show it can render `rejections[0].message` as is. */\nexport interface FileRejection {\n file: File;\n reason: FileRejectionReason;\n message: string;\n}\n\n/**\n * Does `file` satisfy an `accept` string, the way the browser's dialog reads it?\n * Comma-separated tokens: `.ext` (case-insensitive suffix of the name), `type/*`\n * (a MIME family) or an exact MIME type. An empty or absent `accept` takes anything.\n *\n * A file with no `type` — common for `.step`, `.dat`, anything the OS has no MIME\n * mapping for — can only match by extension, which is why lenkbank lists `.stp` AND\n * `model/step`: that is how `accept` has to be written for the dialog anyway.\n */\nexport function matchesAccept(file: File, accept: string | undefined): boolean {\n const tokens = (accept ?? \"\")\n .split(\",\")\n .map((t) => t.trim().toLowerCase())\n .filter(Boolean);\n if (tokens.length === 0) return true;\n const name = file.name.toLowerCase();\n // An EMPTY type is the browser saying \"I don't know\", not \"it's something else\": HEIC\n // photos on Windows without the codec arrive with `type === \"\"`. Refusing them\n // (0.6.0) refused iPhone photos the picker itself had just offered (keksdose). So a\n // missing type is inferred from the extension where that is unambiguous, and a file\n // whose type cannot be known at all is given the benefit of the doubt — nothing here\n // proves it does not match, and the server validates what it receives anyway.\n const type = (file.type || typeFromExtension(name) || \"\").toLowerCase();\n if (!type && !tokens.every((t) => t.startsWith(\".\"))) return true;\n return tokens.some((token) => {\n if (token.startsWith(\".\")) return name.endsWith(token);\n if (!type) return false;\n if (token.endsWith(\"/*\")) return type.startsWith(token.slice(0, -1));\n return type === token;\n });\n}\n\n/** MIME types for the extensions a browser most often leaves untyped. */\nconst EXTENSION_TYPES: Record<string, string> = {\n heic: \"image/heic\",\n heif: \"image/heif\",\n avif: \"image/avif\",\n webp: \"image/webp\",\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n png: \"image/png\",\n gif: \"image/gif\",\n pdf: \"application/pdf\",\n csv: \"text/csv\",\n txt: \"text/plain\",\n};\n\nfunction typeFromExtension(name: string): string | undefined {\n const dot = name.lastIndexOf(\".\");\n return dot === -1 ? undefined : EXTENSION_TYPES[name.slice(dot + 1)];\n}\n\n/** @internal `\" .PDF, image/png ,\"` => `\".pdf, image/png\"` — `accept` as a person reads\n * it. Also the dropzone's default hint. */\nexport function formatAccept(accept: string): string {\n return accept\n .split(\",\")\n .map((t) => t.trim().toLowerCase())\n .filter(Boolean)\n .join(\", \");\n}\n\n/** What the pickers screen a pick with. All optional; nothing set accepts everything. */\nexport interface FileScreenOptions {\n accept?: string;\n /** Bytes. Larger files are refused with reason `\"size\"`. */\n maxSize?: number;\n /** How many files one pick may deliver. The rest are refused with reason `\"count\"`\n * — first come, first kept. For a running cap (\"at most 5 attachments\") pass what\n * is LEFT: `maxFiles={5 - attachments.length}`. */\n maxFiles?: number;\n /** The caller's own check, after `accept` and `maxSize`. */\n isValid?: (file: File) => boolean;\n /** The message for an `isValid` refusal; `labels.rejectedInvalid` otherwise. */\n invalidMessage?: string;\n}\n\n/** @internal Split a pick into the files that pass and the ones that do not. */\nexport function screenFiles(\n files: readonly File[],\n opts: FileScreenOptions,\n labels: FilePickerLabels,\n formatSize: (bytes: number) => string,\n): { accepted: File[]; rejected: FileRejection[] } {\n const accepted: File[] = [];\n const rejected: FileRejection[] = [];\n // Name what `accept` takes (\"Only .csv files\") — unless the host translated\n // `rejectedType` but not yet `rejectedTypeOnly`: its own sentence beats an English one.\n const acceptText = opts.accept ? formatAccept(opts.accept) : \"\";\n const useOnly =\n acceptText !== \"\" &&\n (labels.rejectedTypeOnly !== DEFAULT_FILE_PICKER_LABELS.rejectedTypeOnly ||\n labels.rejectedType === DEFAULT_FILE_PICKER_LABELS.rejectedType);\n const typeMessage = (name: string) =>\n useOnly ? labels.rejectedTypeOnly(acceptText, name) : labels.rejectedType(name);\n for (const file of files) {\n let reason: FileRejectionReason | null = null;\n if (!matchesAccept(file, opts.accept)) reason = \"type\";\n else if (opts.maxSize !== undefined && file.size > opts.maxSize) reason = \"size\";\n else if (opts.isValid && !opts.isValid(file)) reason = \"invalid\";\n // Count last, and only against files that passed everything else: a refused\n // file should not use up one of the slots a good one could have had.\n else if (opts.maxFiles !== undefined && accepted.length >= opts.maxFiles) reason = \"count\";\n if (reason === null) {\n accepted.push(file);\n continue;\n }\n const message =\n reason === \"type\"\n ? typeMessage(file.name)\n : reason === \"size\"\n ? labels.rejectedSize(file.name, formatSize(opts.maxSize ?? 0))\n : reason === \"count\"\n ? labels.rejectedCount(file.name, Math.max(0, opts.maxFiles ?? 0))\n : (opts.invalidMessage ?? labels.rejectedInvalid(file.name));\n rejected.push({ file, reason, message });\n }\n return { accepted, rejected };\n}\n\n/**\n * Judges a pick as a whole — keksdose's \"refuse the pick if any file is bad\", which\n * with `onFiles` + `onReject` alone had to be rebuilt from two calls in a microtask.\n *\n * Called ONCE per pick, after screening and before `onFiles` / `onReject`, with both\n * halves (either may be empty). Return `false` to refuse the whole pick: the accepted\n * files are not delivered, `onReject` still receives what screening refused, and one\n * sentence (`labels.rejectedPick`) is spoken for the pick instead of a per-file one.\n * Return nothing to let the pick through as usual.\n *\n * ```tsx\n * onPick={(ok, bad) => bad.length === 0 || false} // all or nothing\n * ```\n */\nexport type FilePickHandler = (accepted: File[], rejected: FileRejection[]) => boolean | void;\n\n/** @internal The shared tail of both pickers: run `onPick`, and say whether the pick\n * stands. A pick with nothing accepted has nothing to refuse, so `false` there is\n * treated as no verdict and the usual per-file messages are kept. */\nexport function judgePick(\n onPick: FilePickHandler | undefined,\n accepted: File[],\n rejected: FileRejection[],\n): boolean {\n if (!onPick) return true;\n return onPick(accepted, rejected) !== false || accepted.length === 0;\n}\n\n/** One sentence for a whole batch of refusals: the file's own message for one, a\n * count for several — reading out five sentences in a row helps nobody. */\nexport function summariseRejections(rejected: readonly FileRejection[], labels: FilePickerLabels): string {\n if (rejected.length === 0) return \"\";\n if (rejected.length === 1) return rejected[0].message;\n return labels.rejectedMany(rejected.length);\n}\n\n/* ── useFilePicker ───────────────────────────────────────────────────────── */\n\nexport interface UseFilePickerOptions extends FileScreenOptions {\n /** Let one pick deliver several files. Without it a drop of several keeps the first. */\n multiple?: boolean;\n /**\n * Ask a phone for its camera instead of the file chooser: `\"environment\"` is the\n * back camera, `\"user\"` the front. A HINT — desktop browsers ignore it, and Chrome\n * drops it when `multiple` is also set (a camera cannot deliver a list), which is why\n * keksdose's camera input has no `multiple`. Pass one or the other.\n */\n capture?: boolean | \"user\" | \"environment\";\n /** The files that passed, in pick order. Never called with an empty array.\n * Optional since 0.7 for a caller that takes the pick through `onPick` alone. */\n onFiles?: (files: File[]) => void;\n /** See {@link FilePickHandler}: the whole pick at once, with the power to refuse it. */\n onPick?: FilePickHandler;\n /** The files that did not, with a translated message each. The refusals are also\n * spoken through a live region, so this is for SHOWING them, not for a11y. */\n onReject?: (rejections: FileRejection[]) => void;\n /** `open()` and `take()` do nothing while set. */\n disabled?: boolean;\n /** Per-instance overrides of the `filePicker` label namespace. */\n labels?: Partial<FilePickerLabels>;\n}\n\nexport interface UseFilePickerReturn {\n /** Open the system picker. Call it from a click handler — browsers only open a file\n * dialog in response to a user gesture. */\n open: () => void;\n /** Screen and deliver files that arrived some other way — a drop, a paste. Honours\n * `multiple` (only the first file without it) and every check. */\n take: (files: ArrayLike<File> | null | undefined) => void;\n /** The hidden input and the live region. Render it once, anywhere — it takes no\n * space and needs no positioned ancestor. */\n element: ReactElement;\n}\n\n/**\n * The headless half of {@link FileButton}: a hidden file input you can open from any\n * control, with the reset, the screening and the announcement built in.\n *\n * ```tsx\n * const picker = useFilePicker({ accept: \".pdf\", onFiles: ([f]) => upload(f) });\n * return <>{picker.element}<DetailTableCard onAdd={picker.open} … /></>;\n * ```\n */\nexport function useFilePicker({\n accept,\n multiple,\n capture,\n maxSize,\n maxFiles,\n isValid,\n invalidMessage,\n onFiles,\n onPick,\n onReject,\n disabled,\n labels: labelsProp,\n}: UseFilePickerOptions): UseFilePickerReturn {\n const inputRef = useRef<HTMLInputElement>(null);\n const labels = useKitLabels(\"filePicker\", DEFAULT_FILE_PICKER_LABELS, labelsProp);\n const fileText = useKitFileLabels();\n // Assertive: a refusal is a failure the user has to hear before they move on, and\n // it is the only thing this region ever says.\n const { announce, regionProps } = useAnnounce({ politeness: \"assertive\" });\n\n const take = (list: ArrayLike<File> | null | undefined) => {\n if (disabled || !list || list.length === 0) return;\n const all = Array.from(list);\n const files = multiple ? all : all.slice(0, 1);\n const { accepted, rejected } = screenFiles(\n files,\n // A single-file picker holds one file by definition; `maxFiles` is a multi-mode\n // cap and would only ever say \"0\" there if a caller passed it by mistake.\n { accept, maxSize, maxFiles: multiple ? maxFiles : undefined, isValid, invalidMessage },\n labels,\n fileText.size,\n );\n if (!judgePick(onPick, accepted, rejected)) {\n if (rejected.length > 0) onReject?.(rejected);\n announce(labels.rejectedPick(files.length));\n return;\n }\n if (accepted.length > 0) onFiles?.(accepted);\n if (rejected.length > 0) {\n onReject?.(rejected);\n announce(summariseRejections(rejected, labels));\n }\n };\n\n const element = (\n <>\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n capture={capture}\n disabled={disabled}\n // `hidden` (display: none), not `sr-only`: the control a user reaches is the\n // button, and a second, nameless tab stop for the same action is noise. A\n // display:none file input still opens on `.click()` in every current browser —\n // and, unlike `sr-only`, it cannot escape to the initial containing block and\n // stretch the page (see the note in `file-dropzone.tsx`).\n className=\"hidden\"\n tabIndex={-1}\n aria-hidden\n onChange={(e) => {\n // Copy BEFORE the reset: `files` is a live view of the input's value, and\n // clearing the value empties it.\n const picked = Array.from(e.currentTarget.files ?? []);\n e.currentTarget.value = \"\";\n take(picked);\n }}\n />\n <span {...regionProps} />\n </>\n );\n\n return {\n open: () => {\n if (!disabled) inputRef.current?.click();\n },\n take,\n element,\n };\n}\n\n/* ── FileButton ──────────────────────────────────────────────────────────── */\n\ntype ButtonOwnProps = ComponentPropsWithoutRef<typeof Button>;\n\nexport interface FileButtonProps\n extends Omit<UseFilePickerOptions, \"disabled\">,\n // `onDrop` & co. stay the caller's own when `droppable` is off; `type` is fixed to\n // \"button\" (see 2. above) — a file trigger never submits a form.\n Omit<ButtonOwnProps, \"type\" | \"children\" | \"accept\" | \"capture\" | \"multiple\"> {\n /** The button's content — usually an icon and a word. It is the accessible name. */\n children: ReactNode;\n /** Busy: disabled, `aria-busy`, and a spinner before the content — for \"uploading\". */\n pending?: boolean;\n /** Also accept files dropped ON the button (lenkbank's \"drop onto the button\").\n * Off by default: a button that silently takes drops is a surprise on a page that\n * has a real drop target elsewhere. */\n droppable?: boolean;\n /**\n * Show what was picked beside the button: the file's name, or \"3 files selected\"\n * (`filePicker.selected`) for several — a native `<input type=\"file\">` says this,\n * and a bare button that takes a file and says nothing leaves the user to trust it.\n * The read-out is a polite live region and describes the button, so it is heard\n * when it changes and again on focus. It holds the last ACCEPTED pick: a refused\n * file leaves it as it was. Off by default, so the button's layout is unchanged.\n */\n showFileName?: boolean;\n /**\n * Why picking is not available — {@link Button}'s `disabledReason`, with the picker's\n * half added (keksdose K3): the button is `aria-disabled` but stays focusable, the\n * reason is in the kit Tooltip and its description, a click opens no picker, and a\n * `droppable` button takes no drop (the drag is still cancelled, so the browser does\n * not navigate to the file). Wins over `disabled`, as on Button.\n */\n disabledReason?: ReactNode;\n /**\n * This pick COMMITS — an upload that starts on pick, an attachment saved at once.\n * Under a locked {@link WriteLockProvider} it takes the `disabledReason` path with\n * the lock's reason (which wins over one of its own). No provider, or an unlocked\n * one: no effect. A picker that only fills a form the user saves later is not a\n * commit, and is left live — the form's Save carries the lock.\n */\n commit?: CommitScope;\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/**\n * {@link useFilePicker} behind a {@link Button}: `variant` and every other button prop\n * pass through, and the ref is the `<button>` (so `ref.current.click()` opens the\n * picker from elsewhere too).\n *\n * ```tsx\n * <FileButton accept=\"image/*,application/pdf\" capture=\"environment\" variant=\"secondary\"\n * maxSize={10_000_000} onFiles={([f]) => upload(f)} onReject={([r]) => setError(r.message)}>\n * <Camera aria-hidden /> Photograph receipt\n * </FileButton>\n * ```\n */\nexport const FileButton = forwardRef<HTMLButtonElement, FileButtonProps>(function FileButton(\n {\n accept,\n multiple,\n capture,\n maxSize,\n maxFiles,\n isValid,\n invalidMessage,\n onFiles,\n onPick,\n onReject,\n labels,\n pending,\n droppable,\n showFileName = false,\n disabled,\n disabledReason: ownDisabledReason,\n commit,\n children,\n className,\n onClick,\n onDragEnter,\n onDragOver,\n onDragLeave,\n onDrop,\n ...rest\n },\n ref,\n) {\n const disabledReason = useCommitReason(commit, ownDisabledReason);\n const locked = hasReason(disabledReason);\n const inert = Boolean(disabled || pending);\n // What takes no files: busy, disabled, or locked with a reason. Kept apart from\n // `inert`, which is what reaches the button's NATIVE `disabled` — a locked button\n // stays focusable (Button's `disabledReason` path), so `locked` must not get there.\n const refusing = inert || locked;\n const [picked, setPicked] = useState<readonly File[]>([]);\n const pickedId = useId();\n const pickerLabels = useKitLabels(\"filePicker\", DEFAULT_FILE_PICKER_LABELS, labels);\n const picker = useFilePicker({\n accept,\n multiple,\n capture,\n maxSize,\n maxFiles,\n isValid,\n invalidMessage,\n onFiles: showFileName\n ? (files) => {\n setPicked(files);\n onFiles?.(files);\n }\n : onFiles,\n onPick,\n onReject,\n labels,\n disabled: refusing,\n });\n const pickedText =\n picked.length === 0 ? \"\" : picked.length === 1 ? picked[0].name : pickerLabels.selected(picked.length, picked[0].name);\n const [dragOver, setDragOver] = useState(false);\n\n const hasFiles = (e: DragEvent) => Array.from(e.dataTransfer?.types ?? []).includes(\"Files\");\n // Only when `droppable`: otherwise the caller's own handlers are passed untouched.\n const dropHandlers = droppable\n ? {\n onDragEnter: (e: DragEvent<HTMLButtonElement>) => {\n onDragEnter?.(e);\n if (!hasFiles(e)) return;\n e.preventDefault();\n if (!refusing) setDragOver(true);\n },\n onDragOver: (e: DragEvent<HTMLButtonElement>) => {\n onDragOver?.(e);\n if (!hasFiles(e)) return;\n // Always cancel for a file drag, busy or not: an uncancelled drop makes the\n // browser NAVIGATE to the file, which loses the page.\n e.preventDefault();\n e.dataTransfer.dropEffect = refusing ? \"none\" : \"copy\";\n },\n onDragLeave: (e: DragEvent<HTMLButtonElement>) => {\n onDragLeave?.(e);\n if (e.currentTarget.contains(e.relatedTarget as Node | null)) return;\n setDragOver(false);\n },\n onDrop: (e: DragEvent<HTMLButtonElement>) => {\n onDrop?.(e);\n if (!hasFiles(e)) return;\n e.preventDefault();\n setDragOver(false);\n picker.take(e.dataTransfer.files);\n },\n }\n : { onDragEnter, onDragOver, onDragLeave, onDrop };\n\n // `Button` is a plain function component; under React 19 `ref` is an ordinary prop\n // and reaches the `<button>` through its `...rest`. Its props type just does not\n // declare it, hence the widening here rather than a second button implementation.\n const refProp = { ref } as { ref?: Ref<HTMLButtonElement> };\n\n const button = (\n <Button\n {...rest}\n {...refProp}\n {...dropHandlers}\n type=\"button\"\n disabled={inert}\n // Resolved here rather than passed on as `commit`: the picker above has to know\n // it is locked too, and one resolution keeps the two from disagreeing.\n disabledReason={locked ? disabledReason : undefined}\n aria-busy={pending || undefined}\n aria-describedby={\n showFileName && pickedText\n ? [rest[\"aria-describedby\"], pickedId].filter(Boolean).join(\" \")\n : rest[\"aria-describedby\"]\n }\n data-drag-over={dragOver || undefined}\n className={cn(\n // A live drag gets the focus ring's colour as a ring: \"let go here\", in the\n // same vocabulary the button already uses for \"you are here\".\n dragOver && \"ring-2 ring-[var(--brand)]\",\n // Beside a long file name it is the NAME that gives way, never the button.\n showFileName && \"shrink-0\",\n className,\n )}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) picker.open();\n }}\n >\n {/* `label={null}`: the spinner is decoration here — `aria-busy` says the same\n thing on the button, and a spoken \"Loading\" would run into its name. */}\n {pending && <Spinner label={null} className=\"size-4\" />}\n {children}\n </Button>\n );\n\n if (!showFileName) {\n return (\n <>\n {button}\n {picker.element}\n </>\n );\n }\n return (\n // One inline row, so the name sits beside the button wherever the button sits; the\n // name truncates rather than pushing the row wider (at Normal: from Large up it wraps,\n // `truncate-until-large`, text size §10.17), and the full list is in the\n // kit's own Tooltip — not a native `title` (0.16.0 shipped one: the one-tooltip rule\n // since keksdose dev#523, and a title never opens on touch). Lazy, so the closed\n // bubble adds nothing to the read-out's text.\n <span className=\"inline-flex max-w-full min-w-0 items-center gap-2\">\n {button}\n {/* The live region is the OUTER span and never remounts: a Tooltip with an empty\n label renders no wrapper, so wrapping the region itself would swap its element\n the moment the first file arrives — and a fresh live region may not announce. */}\n <span\n id={pickedId}\n aria-live=\"polite\"\n data-slot=\"file-button-name\"\n className=\"flex min-w-0 text-sm text-[var(--text-secondary)]\"\n >\n <Tooltip label={picked.map((f) => f.name).join(\", \")} lazy className=\"min-w-0\">\n <span className=\"block truncate-until-large\">{pickedText}</span>\n </Tooltip>\n </span>\n {picker.element}\n </span>\n );\n});\nFileButton.displayName = \"FileButton\";\n"],"mappings":"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","names":["FileButton"]}
1
+ {"version":3,"sources":["../../src/components/file-button.tsx"],"sourcesContent":["import { useId, useState } from \"react\";\nimport type { ComponentPropsWithoutRef, DragEvent, ReactNode, Ref } from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { hasContent } from \"../lib/presence\";\nimport { useKitLabels } from \"../i18n/kit-labels\";\nimport { Button } from \"./button\";\nimport { Spinner } from \"./spinner\";\nimport { Tooltip } from \"./tooltip\";\nimport { useCommitReason, type CommitScope } from \"./write-lock\";\nimport { DEFAULT_FILE_PICKER_LABELS } from \"../hooks/use-file-picker-labels\";\nimport { useFilePicker, type UseFilePickerOptions } from \"../hooks/use-file-picker\";\n\n/**\n * A button that opens the file picker — the shape all three apps kept writing by hand\n * as a `<Button>` plus a hidden `<input type=\"file\">` plus a ref between them (seven\n * copies in keksdose, two each in kastlan and lenkbank).\n *\n * Every copy had to remember the same four things, and each one forgot at least one:\n *\n * 1. **Reset the input after every pick.** A file input fires `change` only when its\n * value CHANGES, so picking the same file twice in a row — the retry after a failed\n * upload, the second photo of the same receipt — did nothing at all, which reads as\n * a broken button. `value = \"\"` after each pick; always, not per call site.\n * 2. **`type=\"button\"`.** `<Button>` does not set it, and inside a form a bare button\n * submits the form before the picker opens.\n * 3. **Check the file.** `accept` filters the DIALOG, not the result: the dialog's\n * \"All files\" switch, a drop, and a mobile share sheet all hand over whatever the\n * user chose. So `accept` is re-checked here, along with `maxSize`, `maxFiles` and\n * an optional `isValid`.\n * 4. **Say no without a toast.** A rejection is reported through `onReject`, with a\n * translated message per file, and spoken through a live region — the kit does not\n * decide how an app surfaces errors (keksdose's proposal §1 asked for exactly that).\n *\n * The part that is not a button — the hidden input, the check, the announcement — is\n * {@link useFilePicker}, for the case where the thing that opens the picker is someone\n * else's control (a card's \"Add\" action, a menu item, a second button for the camera).\n */\n\n// The picker's words, its screening and `useFilePicker` live in hooks/use-file-picker\n// since 0.34 (MOD-8, refactor audit 2026-10): useFileDrop is built on the hook, and a hook\n// importing a component module was a folder-level back-edge. Re-exported here, so every\n// import of them from this module keeps working.\nexport { DEFAULT_FILE_PICKER_LABELS };\nexport {\n formatAccept,\n judgePick,\n matchesAccept,\n screenFiles,\n summariseRejections,\n useFilePicker,\n} from \"../hooks/use-file-picker\";\nexport type {\n FilePickHandler,\n FilePickerLabels,\n FileRejection,\n FileRejectionReason,\n FileScreenOptions,\n UseFilePickerOptions,\n UseFilePickerReturn,\n} from \"../hooks/use-file-picker\";\n\n/* ── FileButton ──────────────────────────────────────────────────────────── */\n\ntype ButtonOwnProps = ComponentPropsWithoutRef<typeof Button>;\n\nexport interface FileButtonProps\n extends Omit<UseFilePickerOptions, \"disabled\">,\n // `onDrop` & co. stay the caller's own when `droppable` is off; `type` is fixed to\n // \"button\" (see 2. above) — a file trigger never submits a form.\n Omit<ButtonOwnProps, \"type\" | \"children\" | \"accept\" | \"capture\" | \"multiple\"> {\n /** The button's content — usually an icon and a word. It is the accessible name. */\n children: ReactNode;\n /** Busy: disabled, `aria-busy`, and a spinner before the content — for \"uploading\". */\n pending?: boolean;\n /** Also accept files dropped ON the button (lenkbank's \"drop onto the button\").\n * Off by default: a button that silently takes drops is a surprise on a page that\n * has a real drop target elsewhere. */\n droppable?: boolean;\n /**\n * Show what was picked beside the button: the file's name, or \"3 files selected\"\n * (`filePicker.selected`) for several — a native `<input type=\"file\">` says this,\n * and a bare button that takes a file and says nothing leaves the user to trust it.\n * The read-out is a polite live region and describes the button, so it is heard\n * when it changes and again on focus. It holds the last ACCEPTED pick: a refused\n * file leaves it as it was. Off by default, so the button's layout is unchanged.\n */\n showFileName?: boolean;\n /**\n * Why picking is not available — {@link Button}'s `disabledReason`, with the picker's\n * half added (keksdose K3): the button is `aria-disabled` but stays focusable, the\n * reason is in the kit Tooltip and its description, a click opens no picker, and a\n * `droppable` button takes no drop (the drag is still cancelled, so the browser does\n * not navigate to the file). Wins over `disabled`, as on Button.\n */\n disabledReason?: ReactNode;\n /**\n * This pick COMMITS — an upload that starts on pick, an attachment saved at once.\n * Under a locked {@link WriteLockProvider} it takes the `disabledReason` path with\n * the lock's reason (which wins over one of its own). No provider, or an unlocked\n * one: no effect. A picker that only fills a form the user saves later is not a\n * commit, and is left live — the form's Save carries the lock.\n */\n commit?: CommitScope;\n /** The `<button>`. A React 19 ref prop since 0.34 (MOD-4, refactor audit 2026-10); it\n * was `forwardRef`. */\n ref?: Ref<HTMLButtonElement>;\n}\n\n\n/**\n * {@link useFilePicker} behind a {@link Button}: `variant` and every other button prop\n * pass through, and the ref is the `<button>` (so `ref.current.click()` opens the\n * picker from elsewhere too).\n *\n * ```tsx\n * <FileButton accept=\"image/*,application/pdf\" capture=\"environment\" variant=\"secondary\"\n * maxSize={10_000_000} onFiles={([f]) => upload(f)} onReject={([r]) => setError(r.message)}>\n * <Camera aria-hidden /> Photograph receipt\n * </FileButton>\n * ```\n */\nexport function FileButton({\n ref,\n accept,\n multiple,\n capture,\n maxSize,\n maxFiles,\n isValid,\n invalidMessage,\n onFiles,\n onPick,\n onReject,\n labels,\n pending,\n droppable,\n showFileName = false,\n disabled,\n disabledReason: ownDisabledReason,\n commit,\n children,\n className,\n onClick,\n onDragEnter,\n onDragOver,\n onDragLeave,\n onDrop,\n ...rest\n}: FileButtonProps) {\n const disabledReason = useCommitReason(commit, ownDisabledReason);\n const locked = hasContent(disabledReason);\n const inert = Boolean(disabled || pending);\n // What takes no files: busy, disabled, or locked with a reason. Kept apart from\n // `inert`, which is what reaches the button's NATIVE `disabled` — a locked button\n // stays focusable (Button's `disabledReason` path), so `locked` must not get there.\n const refusing = inert || locked;\n const [picked, setPicked] = useState<readonly File[]>([]);\n const pickedId = useId();\n const pickerLabels = useKitLabels(\"filePicker\", DEFAULT_FILE_PICKER_LABELS, labels);\n const picker = useFilePicker({\n accept,\n multiple,\n capture,\n maxSize,\n maxFiles,\n isValid,\n invalidMessage,\n onFiles: showFileName\n ? (files) => {\n setPicked(files);\n onFiles?.(files);\n }\n : onFiles,\n onPick,\n onReject,\n labels,\n disabled: refusing,\n });\n const pickedText =\n picked.length === 0 ? \"\" : picked.length === 1 ? picked[0].name : pickerLabels.selected(picked.length, picked[0].name);\n const [dragOver, setDragOver] = useState(false);\n\n const hasFiles = (e: DragEvent) => Array.from(e.dataTransfer?.types ?? []).includes(\"Files\");\n // Only when `droppable`: otherwise the caller's own handlers are passed untouched.\n const dropHandlers = droppable\n ? {\n onDragEnter: (e: DragEvent<HTMLButtonElement>) => {\n onDragEnter?.(e);\n if (!hasFiles(e)) return;\n e.preventDefault();\n if (!refusing) setDragOver(true);\n },\n onDragOver: (e: DragEvent<HTMLButtonElement>) => {\n onDragOver?.(e);\n if (!hasFiles(e)) return;\n // Always cancel for a file drag, busy or not: an uncancelled drop makes the\n // browser NAVIGATE to the file, which loses the page.\n e.preventDefault();\n e.dataTransfer.dropEffect = refusing ? \"none\" : \"copy\";\n },\n onDragLeave: (e: DragEvent<HTMLButtonElement>) => {\n onDragLeave?.(e);\n if (e.currentTarget.contains(e.relatedTarget as Node | null)) return;\n setDragOver(false);\n },\n onDrop: (e: DragEvent<HTMLButtonElement>) => {\n onDrop?.(e);\n if (!hasFiles(e)) return;\n e.preventDefault();\n setDragOver(false);\n picker.take(e.dataTransfer.files);\n },\n }\n : { onDragEnter, onDragOver, onDragLeave, onDrop };\n\n // `Button` is a plain function component; under React 19 `ref` is an ordinary prop\n // and reaches the `<button>` through its `...rest`. Its props type just does not\n // declare it, hence the widening here rather than a second button implementation.\n const refProp = { ref } as { ref?: Ref<HTMLButtonElement> };\n\n const button = (\n <Button\n {...rest}\n {...refProp}\n {...dropHandlers}\n type=\"button\"\n disabled={inert}\n // Resolved here rather than passed on as `commit`: the picker above has to know\n // it is locked too, and one resolution keeps the two from disagreeing.\n disabledReason={locked ? disabledReason : undefined}\n aria-busy={pending || undefined}\n aria-describedby={\n showFileName && pickedText\n ? [rest[\"aria-describedby\"], pickedId].filter(Boolean).join(\" \")\n : rest[\"aria-describedby\"]\n }\n data-drag-over={dragOver || undefined}\n className={cn(\n // A live drag gets the focus ring's colour as a ring: \"let go here\", in the\n // same vocabulary the button already uses for \"you are here\".\n dragOver && \"ring-2 ring-brand\",\n // Beside a long file name it is the NAME that gives way, never the button.\n showFileName && \"shrink-0\",\n className,\n )}\n onClick={(e) => {\n onClick?.(e);\n if (!e.defaultPrevented) picker.open();\n }}\n >\n {/* `label={null}`: the spinner is decoration here — `aria-busy` says the same\n thing on the button, and a spoken \"Loading\" would run into its name. */}\n {pending && <Spinner label={null} className=\"size-4\" />}\n {children}\n </Button>\n );\n\n if (!showFileName) {\n return (\n <>\n {button}\n {picker.element}\n </>\n );\n }\n return (\n // One inline row, so the name sits beside the button wherever the button sits; the\n // name truncates rather than pushing the row wider (at Normal: from Large up it wraps,\n // `truncate-until-large`, text size §10.17), and the full list is in the\n // kit's own Tooltip — not a native `title` (0.16.0 shipped one: the one-tooltip rule\n // since keksdose dev#523, and a title never opens on touch). Lazy, so the closed\n // bubble adds nothing to the read-out's text.\n <span className=\"inline-flex max-w-full min-w-0 items-center gap-2\">\n {button}\n {/* The live region is the OUTER span and never remounts: a Tooltip with an empty\n label renders no wrapper, so wrapping the region itself would swap its element\n the moment the first file arrives — and a fresh live region may not announce. */}\n <span\n id={pickedId}\n aria-live=\"polite\"\n data-slot=\"file-button-name\"\n className=\"flex min-w-0 text-sm text-secondary\"\n >\n <Tooltip label={picked.map((f) => f.name).join(\", \")} lazy className=\"min-w-0\">\n <span className=\"block truncate-until-large\">{pickedText}</span>\n </Tooltip>\n </span>\n {picker.element}\n </span>\n );\n}\n"],"mappings":"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","names":["useFilePicker"]}