@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
@@ -0,0 +1,945 @@
1
+ import { useContext, useId } from "react";
2
+ import type {
3
+ AnchorHTMLAttributes,
4
+ ButtonHTMLAttributes,
5
+ CSSProperties,
6
+ KeyboardEvent,
7
+ MouseEvent,
8
+ ReactElement,
9
+ ReactNode,
10
+ Ref,
11
+ } from "react";
12
+ import { cn } from "../lib/cn";
13
+ import { FOCUS_RING_WIDTH } from "./focus-ring";
14
+ import { useLargeText } from "../hooks/use-large-text";
15
+ import { Tooltip, type TooltipSide } from "./tooltip";
16
+ import { DEFAULT_COMMON_LABELS, useKitLabels, useKitLink } from "../i18n/kit-labels";
17
+ import type { KitLinkComponent, KitLinkProps } from "../i18n/kit-labels";
18
+ import { pickLinkRenderer, replacingClick, routerLinkNavigation } from "./text-link";
19
+ import { useCommitReason } from "./write-lock";
20
+ import type { CommitScope } from "./write-lock";
21
+ import { hasContent } from "../lib/presence";
22
+ import { CompactControlsContext, LockedReason, type DisabledReasonDisplay } from "./field-parts";
23
+ import { Spinner } from "./spinner";
24
+ import {
25
+ HOVER_INK,
26
+ ICON_BUTTON_PRESSED,
27
+ RenderedButtonLink,
28
+ TOUCH_TARGET_LARGE,
29
+ buttonVariantClasses,
30
+ } from "./button-look";
31
+ import type { ButtonVariant } from "./button-look";
32
+
33
+ // Canonical square icon-only button. <Button> carries TEXT geometry — px-3 py-2
34
+ // gap-2 — so rendering a bare glyph through it gives a small icon in a wide,
35
+ // text-shaped box. This fixes a square box instead and, crucially, forces the
36
+ // child icon to a size set by the BOX (20px at md/sm) via `[&_svg]:size-*` so a
37
+ // caller cannot under-size it. Use it wherever an action is a bare icon
38
+ // (edit/delete/tools) so they all match the top-bar icon buttons and can never
39
+ // drift apart again.
40
+ //
41
+ // Draws its colours from the same `buttonVariantClasses` map as <Button>, so the
42
+ // two re-skin together with the palette.
43
+ const ICON_BUTTON_BASE = cn(
44
+ "inline-flex items-center justify-center rounded-md transition-colors focus:outline-none disabled:opacity-50 disabled:cursor-not-allowed",
45
+ FOCUS_RING_WIDTH,
46
+ );
47
+
48
+ export type IconButtonSize = "2xl" | "xl" | "lg" | "md" | "sm" | "xs" | "2xs";
49
+
50
+ // Box and glyph together, so a 24px chip action cannot end up holding a 20px icon
51
+ // that touches its edges. The two small steps are lenkbank's list-row (28px) and
52
+ // chip (24px) actions, which it had hand-rolled beside the kit's 32/36px ones.
53
+ const ICON_BUTTON_SIZES: Record<IconButtonSize, string> = {
54
+ // 64px with a 28px glyph: a camera's shutter (keksdose invoices/camera-capture.tsx:248,
55
+ // `size-16` by hand) — the one control of a full-screen capture view, thumb-sized.
56
+ "2xl": "size-16 [&_svg]:size-7",
57
+ // 48px with a 24px glyph: the one primary action of a phone screen or sheet, a step
58
+ // past the 44px minimum rather than on it.
59
+ xl: "size-12 [&_svg]:size-6",
60
+ // The 44px touch target (WCAG 2.5.5's size) with the same 20px glyph — keksdose's
61
+ // bulk-action bars write `size-11` by hand over an `md` button to get it on phones.
62
+ lg: "size-11 [&_svg]:size-5",
63
+ md: "size-9 [&_svg]:size-5",
64
+ sm: "size-8 [&_svg]:size-5",
65
+ xs: "size-7 rounded [&_svg]:size-4",
66
+ "2xs": "size-6 rounded [&_svg]:size-3.5",
67
+ };
68
+
69
+ // `stretch`: the same WIDTH and glyph, and a height taken from the row instead of
70
+ // stated — `size-*` sets a height that `self-stretch` cannot override, so the box is
71
+ // written as a width plus a minimum height (the square it would otherwise be).
72
+ const ICON_BUTTON_STRETCH_SIZES: Record<IconButtonSize, string> = {
73
+ "2xl": "w-16 min-h-16 self-stretch [&_svg]:size-7",
74
+ xl: "w-12 min-h-12 self-stretch [&_svg]:size-6",
75
+ lg: "w-11 min-h-11 self-stretch [&_svg]:size-5",
76
+ md: "w-9 min-h-9 self-stretch [&_svg]:size-5",
77
+ sm: "w-8 min-h-8 self-stretch [&_svg]:size-5",
78
+ xs: "w-7 min-h-7 self-stretch rounded [&_svg]:size-4",
79
+ "2xs": "w-6 min-h-6 self-stretch rounded [&_svg]:size-3.5",
80
+ };
81
+
82
+ // The label as visible text beside the glyph (0.32, §4: at Large "IconButton shows its
83
+ // label"): the same height and glyph as the square, a width taken from the words. A
84
+ // map of its own rather than `w-auto` over `size-*`, which tailwind-merge cannot undo
85
+ // in one direction.
86
+ const ICON_BUTTON_TEXT_SIZES: Record<IconButtonSize, string> = {
87
+ "2xl": "h-16 gap-2 px-4 text-base [&_svg]:size-7",
88
+ xl: "h-12 gap-2 px-3.5 text-sm [&_svg]:size-6",
89
+ lg: "h-11 gap-2 px-3 text-sm [&_svg]:size-5",
90
+ md: "h-9 gap-1.5 px-2.5 text-sm [&_svg]:size-5",
91
+ sm: "h-8 gap-1.5 px-2 text-sm [&_svg]:size-5",
92
+ xs: "h-7 gap-1 rounded px-1.5 text-xs [&_svg]:size-4",
93
+ "2xs": "h-6 gap-1 rounded px-1.5 text-xs [&_svg]:size-3.5",
94
+ };
95
+ const ICON_BUTTON_TEXT_STRETCH_SIZES: Record<IconButtonSize, string> = {
96
+ "2xl": "min-h-16 self-stretch gap-2 px-4 text-base [&_svg]:size-7",
97
+ xl: "min-h-12 self-stretch gap-2 px-3.5 text-sm [&_svg]:size-6",
98
+ lg: "min-h-11 self-stretch gap-2 px-3 text-sm [&_svg]:size-5",
99
+ md: "min-h-9 self-stretch gap-1.5 px-2.5 text-sm [&_svg]:size-5",
100
+ sm: "min-h-8 self-stretch gap-1.5 px-2 text-sm [&_svg]:size-5",
101
+ xs: "min-h-7 self-stretch gap-1 rounded px-1.5 text-xs [&_svg]:size-4",
102
+ "2xs": "min-h-6 self-stretch gap-1 rounded px-1.5 text-xs [&_svg]:size-3.5",
103
+ };
104
+
105
+ // The 48 px touch target at Large (§4), per size. `lg` and up are past it already
106
+ // (2.75rem is 55 px at Large). `md` … `xs` grow their box to it. `2xs` is the action ON
107
+ // a chip or a tab, whose box cannot grow without growing the chip: it keeps its box and
108
+ // gets a 48 px hit area instead — an invisible `::after` centred on it, which takes the
109
+ // taps a finger lands round the glyph.
110
+ const ICON_BUTTON_TOUCH_LARGE: Record<IconButtonSize, string> = {
111
+ "2xl": "",
112
+ xl: "",
113
+ lg: "",
114
+ md: TOUCH_TARGET_LARGE,
115
+ sm: TOUCH_TARGET_LARGE,
116
+ xs: TOUCH_TARGET_LARGE,
117
+ "2xs":
118
+ "relative large:after:absolute large:after:inset-[calc((100%-48px)/2)] large:after:content-['']",
119
+ };
120
+
121
+ // A tone re-colours the glyph without changing what the variant draws around it.
122
+ // Each coloured tone comes in two resting looks, picked by `quiet` (see the prop):
123
+ // QUIET is placeholder grey until the pointer or focus arrives, then the tone's
124
+ // family; TONED wears the tone's colour at rest. The defaults are the looks each tone
125
+ // had before `quiet` existed: `danger` is quiet — an action in every row of a list
126
+ // must not shout from every row, so the red arrives only on the one row you are about
127
+ // to act on — while `warning` and `info` are toned, because they mark the ONE thing
128
+ // on the row to notice (keksdose's "needs review" flag, its reconcile action at
129
+ // accounts-page:867), and quiet grey would hide the very thing they point out.
130
+ // `muted` is quiet by definition and has no toned look; `default` has no tone.
131
+ //
132
+ // `success` is toned at rest too: the green is the news (keksdose's "in sync" chip).
133
+ // `custom` paints from `--icon-button-tone`, which `toneColor` sets — for a glyph whose
134
+ // colour FOLLOWS STATE across tones (keksdose's sync chip: rose, amber, sky, green as
135
+ // the sync moves), where swapping `tone` would do but the colour is one variable.
136
+ export type IconButtonTone = "default" | "muted" | "danger" | "warning" | "info" | "success" | "custom";
137
+
138
+ type ColouredTone = "danger" | "warning" | "info" | "success" | "custom";
139
+
140
+ const ICON_BUTTON_TONES: Record<ColouredTone, { quiet: string; toned: string }> = {
141
+ danger: {
142
+ quiet:
143
+ "text-placeholder hover:bg-danger-soft hover:text-danger focus-visible:ring-danger-strong",
144
+ toned: "text-danger hover:bg-danger-soft focus-visible:ring-danger-strong",
145
+ },
146
+ warning: {
147
+ quiet:
148
+ "text-placeholder hover:bg-warning-soft hover:text-warning focus-visible:ring-warning-strong",
149
+ // The ring is warning's loud line (0.33, k27): `--warning-border`, amber-300, was a
150
+ // focus ring at 1.1:1 on the light surfaces.
151
+ toned: "text-warning hover:bg-warning-soft focus-visible:ring-warning-strong",
152
+ },
153
+ info: {
154
+ quiet:
155
+ "text-placeholder hover:bg-info-soft hover:text-info focus-visible:ring-[var(--info-border)]",
156
+ toned: "text-info hover:bg-info-soft focus-visible:ring-[var(--info-border)]",
157
+ },
158
+ success: {
159
+ quiet:
160
+ "text-placeholder hover:bg-success-soft hover:text-success focus-visible:ring-[var(--success-border)]",
161
+ toned: "text-success hover:bg-success-soft focus-visible:ring-[var(--success-border)]",
162
+ },
163
+ // The hover fill and the ring are MIXED from the one colour, since a custom tone
164
+ // brings no `-bg` / `-border` pair of its own. The fallback is the body colour, so a
165
+ // `custom` tone with no colour set is the default look rather than invisible.
166
+ custom: {
167
+ quiet:
168
+ "text-placeholder hover:bg-[color-mix(in_srgb,var(--icon-button-tone,var(--text-primary))_12%,transparent)] hover:text-[var(--icon-button-tone,var(--text-primary))] focus-visible:ring-[color-mix(in_srgb,var(--icon-button-tone,var(--text-primary))_40%,transparent)]",
169
+ toned:
170
+ "text-[var(--icon-button-tone,var(--text-primary))] hover:bg-[color-mix(in_srgb,var(--icon-button-tone,var(--text-primary))_12%,transparent)] focus-visible:ring-[color-mix(in_srgb,var(--icon-button-tone,var(--text-primary))_40%,transparent)]",
171
+ },
172
+ };
173
+
174
+ // The translucent ink on hover, as Button's secondary/ghost (B′, see HOVER_INK).
175
+ const ICON_BUTTON_MUTED = `text-placeholder ${HOVER_INK} hover:text-primary`;
176
+
177
+ /** Which tones sit quiet at rest when `quiet` is left out. */
178
+ const QUIET_BY_DEFAULT: Record<ColouredTone, boolean> = {
179
+ danger: true,
180
+ warning: false,
181
+ info: false,
182
+ success: false,
183
+ custom: false,
184
+ };
185
+
186
+ function iconButtonToneClass(tone: IconButtonTone, quiet: boolean | undefined): string {
187
+ if (tone === "default") return "";
188
+ if (tone === "muted") return cn(ICON_BUTTON_MUTED, ICON_BUTTON_QUIET_DISABLED_REST);
189
+ const isQuiet = quiet ?? QUIET_BY_DEFAULT[tone];
190
+ const look = ICON_BUTTON_TONES[tone];
191
+ return isQuiet ? cn(look.quiet, ICON_BUTTON_QUIET_DISABLED_REST) : look.toned;
192
+ }
193
+
194
+ // A disabled button must not answer the pointer. The hover classes above are plain
195
+ // `hover:` (so a caller's `className="hover:…"` still replaces them through
196
+ // tailwind-merge), which means they fire on a disabled button too — the old grey
197
+ // icon lit up on hover while refusing the click. Rather than rewrite every hover as
198
+ // `enabled:hover:` (which never matches the `<a>` that `buttonClasses` also styles,
199
+ // and would out-rank a caller's plain `hover:` override), each variant pins its
200
+ // RESTING look under `disabled:hover:`, which out-ranks any `hover:` by specificity
201
+ // and only ever matches a disabled button.
202
+ const ICON_BUTTON_DISABLED_REST: Record<IconButtonVariant, string> = {
203
+ primary: "disabled:hover:bg-surface-2",
204
+ secondary: "disabled:hover:bg-transparent",
205
+ ghost: "disabled:hover:bg-transparent",
206
+ danger: "disabled:hover:bg-danger",
207
+ brand: "disabled:hover:bg-brand",
208
+ link: "disabled:hover:bg-transparent disabled:hover:no-underline",
209
+ overlay: "disabled:hover:bg-[color-mix(in_srgb,var(--bg-inverse)_60%,transparent)]",
210
+ shutter: "disabled:hover:bg-media-scrim",
211
+ };
212
+
213
+ // The quiet looks change the glyph on hover, so they pin their resting glyph the
214
+ // same way. A toned look keeps its glyph on hover and needs no pin.
215
+ const ICON_BUTTON_QUIET_DISABLED_REST = "disabled:hover:text-placeholder";
216
+
217
+ // `variant="overlay"`: a round, translucent disc for a control that sits ON a photo
218
+ // (keksdose's receipt-scan preview: close, rotate, retake over the camera image).
219
+ // The inverse pair, not the surface one: what has to hold is the contrast between the
220
+ // disc and its glyph, whatever the picture underneath is, and `--bg-inverse` /
221
+ // `--text-inverse` are the one token pair defined as each other's opposite in both
222
+ // themes. The disc is the inverse at 60% (`color-mix`, so it stays a token a palette
223
+ // can re-point); the blur keeps a busy background from breaking the glyph's edge.
224
+ const ICON_BUTTON_OVERLAY =
225
+ "rounded-full bg-[color-mix(in_srgb,var(--bg-inverse)_60%,transparent)] text-inverse backdrop-blur-sm hover:bg-[color-mix(in_srgb,var(--bg-inverse)_75%,transparent)] focus-visible:ring-[var(--text-inverse)]";
226
+
227
+ // `variant="shutter"`: the camera's release — keksdose's camera-capture.tsx:248 draws
228
+ // it by hand as a 64px circle with a thick white ring round a translucent fill. It sits
229
+ // on a live camera picture, which is dark whatever the theme, so it uses the MEDIA
230
+ // tokens (tokens.css), white ink on a dark scrim in both themes — the inverse pair
231
+ // `overlay` uses would give a dark ring on a dark viewfinder in dark mode. The focus ring stands off by 2px, or it would
232
+ // merge into the ring that is part of the look.
233
+ const ICON_BUTTON_SHUTTER =
234
+ "rounded-full border-4 border-media-ink bg-media-scrim text-media-ink backdrop-blur-sm hover:bg-media-scrim-hover focus-visible:ring-media-ink focus-visible:ring-offset-2 focus-visible:ring-offset-media-scrim-hover";
235
+
236
+ export type IconButtonVariant = ButtonVariant | "overlay" | "shutter";
237
+
238
+ /**
239
+ * The glyph's size in px, over the one the box size implies — see
240
+ * {@link IconButtonProps.glyphSize}.
241
+ */
242
+ export type IconButtonGlyphSize = 12 | 14 | 16 | 20 | 24 | 28;
243
+
244
+ const ICON_BUTTON_GLYPH_SIZES: Record<IconButtonGlyphSize, string> = {
245
+ 12: "[&_svg]:size-3",
246
+ 14: "[&_svg]:size-3.5",
247
+ 16: "[&_svg]:size-4",
248
+ 20: "[&_svg]:size-5",
249
+ 24: "[&_svg]:size-6",
250
+ 28: "[&_svg]:size-7",
251
+ };
252
+
253
+ // `pending`'s spinner, the size of the glyph it replaces (the `[&_svg]` rules above
254
+ // size only an svg, and the spinner is a bordered span).
255
+ const ICON_BUTTON_SPINNER: Record<IconButtonSize, string> = {
256
+ "2xl": "size-7",
257
+ xl: "size-6",
258
+ lg: "size-5",
259
+ md: "size-5",
260
+ sm: "size-5",
261
+ xs: "size-4",
262
+ "2xs": "size-3.5",
263
+ };
264
+ const ICON_BUTTON_SPINNER_GLYPH: Record<IconButtonGlyphSize, string> = {
265
+ 12: "size-3",
266
+ 14: "size-3.5",
267
+ 16: "size-4",
268
+ 20: "size-5",
269
+ 24: "size-6",
270
+ 28: "size-7",
271
+ };
272
+
273
+ export interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
274
+ /** Any {@link ButtonVariant}; `overlay` — a round translucent disc for use over
275
+ * an image (see `ICON_BUTTON_OVERLAY`); or `shutter` — a camera's release, a ringed
276
+ * disc over the viewfinder (see `ICON_BUTTON_SHUTTER`; pair it with `size="2xl"`). */
277
+ variant?: IconButtonVariant;
278
+ /** Box size: 2xl = 64px with a 28px icon (a camera shutter), xl = 48px with a 24px
279
+ * icon, lg = 44px (a phone's touch target), md = 36px (matches the top bar),
280
+ * sm = 32px — all three with a 20px icon;
281
+ * xs = 28px with a 16px icon (an action in a list row), 2xs = 24px with a 14px
282
+ * icon (an action on a chip or a tab). `glyphSize` overrides the icon. */
283
+ size?: IconButtonSize;
284
+ /**
285
+ * The icon's size in px, when the box's own is not the one wanted. keksdose's sync
286
+ * chip (app/sync-status-indicator.tsx:142) is a 24px round chip round a 20px cloud —
287
+ * `size="2xs" glyphSize={20} shape="round"` — where `2xs` alone draws 14px. A number
288
+ * over a new size step because the box and the glyph are two independent choices; a
289
+ * step per combination (`"sm-lg"`) would have to be named for every one.
290
+ */
291
+ glyphSize?: IconButtonGlyphSize;
292
+ /**
293
+ * A small mark on the button's corner — the sync chip's 12px check over its cloud
294
+ * ("all good", feedback #67). Rendered OUTSIDE the `<button>`, in a wrapper beside
295
+ * it, so the box's `[&_svg]:size-*` rule that sizes the glyph does not blow the badge
296
+ * up to the glyph's size; a bare `<Check />` comes out 12px, on a
297
+ * `--bg-surface` disc that keeps it legible over the glyph. Decorative
298
+ * (`aria-hidden`): the name (`label` / `aria-label`) must already carry the state.
299
+ * With a badge, `className` still lands on the button; the wrapper is the flex item.
300
+ */
301
+ badge?: ReactNode;
302
+ /**
303
+ * `keep`: a disabled button keeps its full colour (no 50% drop) and an ordinary
304
+ * cursor. For a STATUS that is also an action — the sync chip shows "in sync" in
305
+ * green and refreshes on click, and is disabled while offline or syncing, when the
306
+ * state it shows matters most; dimmed it read as broken (keksdose wrote
307
+ * `disabled:cursor-default` by hand and left out the dimming). Default `dim`.
308
+ */
309
+ disabledStyle?: "dim" | "keep";
310
+ /**
311
+ * Fill the height of the flex row it stands in, keeping its width — the delete at
312
+ * the end of keksdose's split line (transaction-fields:162), level with the labelled
313
+ * fields beside it rather than floating at half their height. {@link Button}'s
314
+ * `stretch`; no effect outside a flex row. With a `label`, the tooltip's wrapper is
315
+ * what stretches.
316
+ */
317
+ stretch?: boolean;
318
+ /** `round`: a circle instead of the rounded square — a compact status chip in a top
319
+ * bar (keksdose's sync indicator). `overlay` is always round. */
320
+ shape?: "square" | "round";
321
+ /**
322
+ * The colour of `tone="custom"`, as any CSS colour — a token (`var(--warning)`),
323
+ * ideally. Sets `--icon-button-tone` on the button, so passing a different one per
324
+ * state re-colours the glyph, its hover fill and its focus ring together. Passing it
325
+ * implies `tone="custom"`. Or leave it out and set the variable yourself from a class
326
+ * (`className="[--icon-button-tone:var(--success)]"`).
327
+ *
328
+ * Or a `{ light, dark }` pair, one colour per theme — keksdose: a raw colour that reads
329
+ * on the light surface (`#be123c`) is too dark on the dark one, and an inline style
330
+ * cannot say "in dark mode". See {@link IconButtonToneColor}.
331
+ */
332
+ toneColor?: IconButtonToneColor;
333
+ /** Glyph colour over the variant. `muted`: placeholder grey, full text colour on
334
+ * hover. `danger`: the same grey at rest, `--danger` on hover and focus — for a
335
+ * remove/delete that repeats down a list. `warning`: amber at rest — a flag that
336
+ * wants attention. `info`: sky at rest — a notice-worthy but harmless action
337
+ * (keksdose's reconcile). `success`: green at rest — a good state worth seeing.
338
+ * `custom`: the colour of `toneColor` (see there). Default: the variant's own colours. See `quiet` for
339
+ * turning a coloured tone's resting look the other way. */
340
+ tone?: IconButtonTone;
341
+ /**
342
+ * Whether a coloured tone (`danger`, `warning`, `info`) waits for the pointer:
343
+ * `true` is placeholder grey at rest and the tone's colour on hover and focus;
344
+ * `false` wears the tone's colour at rest. Left out, each tone keeps its own
345
+ * default — `danger` quiet, `warning` and `info` not. Ignored for `muted` (quiet by
346
+ * definition) and `default` (no tone).
347
+ *
348
+ * `quiet={false}` on `danger` is for a destructive action that stands ALONE, where
349
+ * hover-to-reveal hides it: keksdose's phone bulk bar (mobile-bulk-bar.tsx) has one
350
+ * "delete all" and a touch screen that never hovers, so it painted rose by hand.
351
+ * `quiet` on `warning`/`info` is the same switch the other way, for a flag repeated
352
+ * down a list. A boolean over the tone rather than a new tone (`danger-solid`) or an
353
+ * `emphasis` scale: there are exactly two resting looks, every coloured tone has
354
+ * both, and which one fits is a question about the SITE (alone or repeated, touch or
355
+ * pointer), not about the tone — so it is one switch the family shares.
356
+ */
357
+ quiet?: boolean;
358
+ /**
359
+ * Make it a toggle button. `true` sets `aria-pressed="true"` and draws the "on" look
360
+ * (brand glyph on the quiet brand fill); `false` sets `aria-pressed="false"` with the
361
+ * normal look, so a screen reader still hears a toggle that is off. Left out, it is
362
+ * an ordinary button with no `aria-pressed` — or whatever `aria-pressed` the caller
363
+ * passes. For keksdose's budget share toggle (budgets-page:291), which paints its own
364
+ * brand colour over a ghost button today. Keep the `aria-label` the same in both
365
+ * states ("Share budget"): the pressed state already says whether it is on.
366
+ */
367
+ pressed?: boolean;
368
+ /** Keep the click (and the Enter/Space that produces it) from reaching an
369
+ * ancestor's handler — for an action inside a clickable table row or card.
370
+ *
371
+ * **Not a licence to put this inside another `<button>`.** HTML forbids any
372
+ * interactive content, and any element with a `tabindex`, inside a button — so
373
+ * the `<span role="button" tabIndex={0}>` workaround is invalid too — and ARIA
374
+ * makes a button's children presentational, so a screen reader flattens the
375
+ * inner one into the outer one's name and it cannot be reached at all. Make the
376
+ * row's main action a button that fills the row and put this one BESIDE it, on
377
+ * top:
378
+ *
379
+ * ```tsx
380
+ * <div className="relative">
381
+ * <button className="w-full pe-16 …" onClick={open}>…row…</button>
382
+ * <div className="absolute inset-y-0 end-2 flex items-center gap-0.5">
383
+ * <IconButton size="xs" tone="danger" aria-label="Delete" onClick={remove}>
384
+ * <Trash2 />
385
+ * </IconButton>
386
+ * </div>
387
+ * </div>
388
+ * ```
389
+ *
390
+ * The pair look exactly like the nested version, click exactly like it, and
391
+ * are two tab stops a screen reader can tell apart. */
392
+ stopPropagation?: boolean;
393
+ /**
394
+ * The button's name, said once: it becomes the `aria-label` AND the text of a kit
395
+ * {@link Tooltip} round the button.
396
+ *
397
+ * Every app writes the pair by hand. lenkbank's nine icon actions all carry
398
+ * `aria-label={t(x)} title={t(x)}` (shared/lib/table-columns.tsx:103,
399
+ * projects-page.tsx:83, setpoint/segment-list.tsx:198/207, profile-bar.tsx:128/142,
400
+ * shortcut-dialog.tsx:815/857/1007) — and `title` is the browser's own tooltip,
401
+ * which shows late, never on focus and never on touch, and looks like no other
402
+ * label in the kit. kastlan's RowAction (shared/components/data-table/row-action.tsx)
403
+ * and keksdose's icon wrappers each exist to put a Tooltip round an IconButton.
404
+ *
405
+ * A caller's own `aria-label` still wins, for the rare name that should be longer
406
+ * than the bubble. The bubble is visual only: it would otherwise describe the button
407
+ * with its own name, and a screen reader would read the same word twice. Tooltip's
408
+ * default placement applies — in place, or portalled inside a scroll container —
409
+ * unless `tooltipPortal` says otherwise.
410
+ */
411
+ label?: string;
412
+ /**
413
+ * Show `label` as visible text beside the icon at Large and Extra large (0.32,
414
+ * docs/text-size-harmonization.md §4, §10.8). A reader who asked for bigger type is
415
+ * the one an unlabelled glyph fails, and on touch the tooltip never opens. Then there
416
+ * is no tooltip: the words are on the button.
417
+ *
418
+ * Default `true` — except for `variant="overlay"` and `"shutter"`, which sit ON a
419
+ * picture, and inside {@link CompactControls} (AppShell's top bar, `RowActions`'
420
+ * inline icons). `false`: the icon alone at every size, for an icon on content — a
421
+ * receipt overlay, a map's zoom, a viewfinder, a photo thumbnail. That must be rare;
422
+ * a dense row's actions belong in `RowActions`, which collapses them into a "⋯" menu
423
+ * at Large instead (§10.8). Normal never shows it. `tooltip={false}` (a universally
424
+ * read glyph, a dialog's ✕) keeps the icon alone too.
425
+ */
426
+ labelVisible?: boolean;
427
+ /** Show `label` as a tooltip. Default `true`; `false` keeps `label` as the
428
+ * accessible name only — for a button whose glyph is universally read (a close ✕ in
429
+ * a dialog header) or that already sits under a tooltip of its own. It also keeps the
430
+ * label from showing as text at Large (see `labelVisible`). */
431
+ tooltip?: boolean;
432
+ /** Where the `label` tooltip opens. See {@link Tooltip}'s `side`. */
433
+ tooltipSide?: TooltipSide;
434
+ /** Passed to the `label` tooltip's `portal`. Left out, Tooltip decides (see there). */
435
+ tooltipPortal?: boolean;
436
+ /**
437
+ * Mount the `label` bubble only while it is up — {@link Tooltip}'s `lazy`. Default
438
+ * `true` since 0.16.0; `false` is the always-mounted in-place bubble of before.
439
+ *
440
+ * Why the label bubble can be lazy when Tooltip's default is not: this bubble
441
+ * describes nothing. It is wrapped round the button in a fragment precisely so that
442
+ * it is NOT the button's `aria-describedby` (it would repeat the button's own name),
443
+ * so there is no description for a lazy mount to take away — the name is the
444
+ * `aria-label` either way, read in browse mode and on focus alike. What the
445
+ * always-mounted bubble did do was sit in the DOM as a `role="tooltip"` node full of
446
+ * text: every IconButton in a row added one to `getAllByRole("tooltip")` and its label
447
+ * to the row's `textContent`, and two keksdose tests tripped over that (0.15.5 P6).
448
+ * The cost is the one {@link Tooltip}'s "Lazy in place" note names — a test that
449
+ * looked the bubble up without hovering now has to hover (or focus) first; pass
450
+ * `false` while it is migrated. A `disabledReason` bubble is unaffected: that one
451
+ * stays mounted as it was.
452
+ */
453
+ tooltipLazy?: boolean;
454
+ /**
455
+ * Busy — the action is in flight: the glyph is swapped for a spinner of the same
456
+ * size, the button is `aria-busy`, and clicks (and the Enter/Space and form
457
+ * submission they stand for) are swallowed, so a second press cannot start the
458
+ * action twice. {@link Button}'s `pending`, with the same contract: `aria-disabled`
459
+ * rather than `disabled`, so the button that was pressed keeps its focus. The name
460
+ * (`label` / `aria-label`) stays — `aria-busy` is what says it is working. A SWAP
461
+ * rather than Button's overlay: the box is square and fixed, so there is no width
462
+ * for the glyph to hold, and a spinner drawn over a glyph would be two marks in one
463
+ * 20px square.
464
+ */
465
+ pending?: boolean;
466
+ /**
467
+ * Why the action is not available — {@link Button}'s `disabledReason`, on the icon
468
+ * button: keksdose's accounts page cannot hide an account with a balance or delete
469
+ * one with bookings (accounts-page:879/913 — "hide requires zero", "delete blocked"),
470
+ * nor its budgets page delete the only budget (budgets-page:330), and each wrapped a
471
+ * natively disabled IconButton in a Tooltip that swaps its label for the reason — a
472
+ * bubble a keyboard never opens, since `disabled` leaves the tab order, and a reason
473
+ * a screen reader never hears.
474
+ *
475
+ * The same contract as Button's: `aria-disabled` instead of `disabled`, so it stays
476
+ * focusable and hoverable; clicks (and the Enter/Space they stand for) are swallowed
477
+ * — `stopPropagation` still applies, so a locked action in a clickable row does not
478
+ * open the row either; the reason shows in the kit {@link Tooltip} and is attached
479
+ * through `aria-describedby` as a `hidden` copy. The NAME stays `aria-label` /
480
+ * `label` — "Delete", described by "The active budget cannot be deleted" — and the
481
+ * bubble shows the reason in place of the label, since the glyph already says what
482
+ * the button is and the reason is the news. Shown even with `tooltip={false}`: a
483
+ * reason nobody can see is not one. Wins over `disabled`, as on Button.
484
+ *
485
+ * 0.32: at Large and on a touch screen the reason is a line under the button rather
486
+ * than a bubble — see `disabledReasonDisplay`.
487
+ */
488
+ disabledReason?: ReactNode;
489
+ /** Where `disabledReason` shows — {@link Button}'s `disabledReasonDisplay`. */
490
+ disabledReasonDisplay?: DisabledReasonDisplay;
491
+ /** This action COMMITS — {@link Button}'s `commit`: under a locked
492
+ * {@link WriteLockProvider} it takes the `disabledReason` path with the lock's
493
+ * reason. No effect without a lock. A {@link CommitScope} since 0.33. */
494
+ commit?: CommitScope;
495
+ /** The `<button>` element — a prop in React 19, as on {@link Button}. */
496
+ ref?: Ref<HTMLButtonElement>;
497
+ /** Only on the link form — see {@link IconButtonLinkProps}. */
498
+ href?: never;
499
+ renderLink?: never;
500
+ external?: never;
501
+ replace?: never;
502
+ reloadDocument?: never;
503
+ }
504
+
505
+ /**
506
+ * `<IconButton href>`: an icon-only LINK — keksdose F2 and kastlan 45, whose icon
507
+ * actions that navigate (a row's "open", a card's "edit" that goes to the edit page, a
508
+ * top bar's settings cog) were `<IconButton onClick={() => navigate(…)}>`: a button that
509
+ * changes the page, with no middle click, no "open in new tab" and no URL on hover.
510
+ *
511
+ * The same rule as {@link Button}'s `href` (see {@link ButtonLinkProps}): an in-app
512
+ * `href` goes through `renderLink`, else the provider's `linkComponent`; an external one
513
+ * or an in-page `#anchor` stays a plain `<a>`; `external` opens a new tab and says so to
514
+ * a screen reader; `replace` and `reloadDocument` as on Button. The look, the `label` →
515
+ * `aria-label` + Tooltip, the badge, `toneColor` and `stopPropagation` are the button's.
516
+ *
517
+ * `disabled` renders an inert `<a>` with no `href` — `role="link"`, `aria-disabled`, out
518
+ * of the tab order, dimmed — like Button's disabled link. `pressed`, `disabledReason` and
519
+ * `disabledStyle` are a button's and are typed out: a link is not a toggle, and a link
520
+ * that explains why it cannot be followed is a job for a disabled BUTTON.
521
+ */
522
+ export interface IconButtonLinkProps
523
+ extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "type" | "href">,
524
+ Pick<
525
+ IconButtonProps,
526
+ | "variant"
527
+ | "size"
528
+ | "glyphSize"
529
+ | "badge"
530
+ | "stretch"
531
+ | "shape"
532
+ | "toneColor"
533
+ | "tone"
534
+ | "quiet"
535
+ | "stopPropagation"
536
+ | "label"
537
+ | "labelVisible"
538
+ | "tooltip"
539
+ | "tooltipSide"
540
+ | "tooltipPortal"
541
+ | "tooltipLazy"
542
+ > {
543
+ href: string;
544
+ /** See {@link ButtonLinkProps.renderLink}. */
545
+ renderLink?: KitLinkComponent;
546
+ /** See {@link ButtonLinkProps.external}. */
547
+ external?: boolean;
548
+ /** See {@link ButtonLinkProps.replace}. */
549
+ replace?: boolean;
550
+ /** See {@link ButtonLinkProps.reloadDocument}. */
551
+ reloadDocument?: boolean;
552
+ /** See {@link ButtonLinkProps.disabled}. */
553
+ disabled?: boolean;
554
+ ref?: Ref<HTMLAnchorElement>;
555
+ type?: never;
556
+ form?: never;
557
+ pressed?: never;
558
+ disabledReason?: never;
559
+ disabledReasonDisplay?: never;
560
+ commit?: never;
561
+ disabledStyle?: never;
562
+ pending?: never;
563
+ }
564
+
565
+ /**
566
+ * Whether an IconButton draws its `label` as text (see `labelVisible`): at Large and
567
+ * above, with a label to draw, not switched off by the caller, the variant (`overlay`,
568
+ * `shutter`), `tooltip={false}` or a {@link CompactControls} region.
569
+ */
570
+ function useIconButtonText(
571
+ label: string | undefined,
572
+ labelVisible: boolean | undefined,
573
+ variant: IconButtonVariant,
574
+ tooltip: boolean,
575
+ ): boolean {
576
+ const large = useLargeText();
577
+ const compact = useContext(CompactControlsContext);
578
+ if (!large || label === undefined || label === "" || !tooltip) return false;
579
+ const visible = labelVisible ?? (!compact && variant !== "overlay" && variant !== "shutter");
580
+ return visible;
581
+ }
582
+
583
+ /** The visible label (see `labelVisible`). */
584
+ function IconButtonText({ label }: { label: string }) {
585
+ return <span data-slot="icon-button-label">{label}</span>;
586
+ }
587
+
588
+ /**
589
+ * `toneColor`: one CSS colour, or one per theme.
590
+ *
591
+ * The pair is two custom properties on the element — `--icon-button-tone-light` and
592
+ * `--icon-button-tone-dark` — and a class that points `--icon-button-tone` at one or the
593
+ * other by the kit's `dark` variant (`.dark` on an ancestor, tokens.css), so the colour
594
+ * follows a theme switch in CSS alone, with no re-render and no JS reading the theme.
595
+ * Both values are any CSS colour; a token that already flips (`var(--warning)`) needs no
596
+ * pair.
597
+ */
598
+ export type IconButtonToneColor = string | { light: string; dark: string };
599
+
600
+ const ICON_BUTTON_TONE_PAIR =
601
+ "[--icon-button-tone:var(--icon-button-tone-light)] dark:[--icon-button-tone:var(--icon-button-tone-dark)]";
602
+
603
+ /** The inline custom properties `toneColor` sets over the caller's `style`. */
604
+ function toneColorStyle(toneColor: IconButtonToneColor | undefined, style: CSSProperties | undefined) {
605
+ if (toneColor === undefined) return style;
606
+ const vars: Record<string, string> =
607
+ typeof toneColor === "string"
608
+ ? { "--icon-button-tone": toneColor }
609
+ : { "--icon-button-tone-light": toneColor.light, "--icon-button-tone-dark": toneColor.dark };
610
+ return { ...style, ...vars } as CSSProperties;
611
+ }
612
+
613
+ /** Everything but the element: the look both forms of IconButton share. */
614
+ function iconButtonLook({
615
+ variant,
616
+ size,
617
+ stretch,
618
+ glyphSize,
619
+ shape,
620
+ tone,
621
+ quiet,
622
+ toneColor,
623
+ withText = false,
624
+ }: {
625
+ variant: IconButtonVariant;
626
+ size: IconButtonSize;
627
+ stretch: boolean | undefined;
628
+ glyphSize: IconButtonGlyphSize | undefined;
629
+ shape: "square" | "round";
630
+ tone: IconButtonTone;
631
+ quiet: boolean | undefined;
632
+ toneColor: IconButtonToneColor | undefined;
633
+ /** The label is drawn beside the glyph (see `labelVisible`). */
634
+ withText?: boolean;
635
+ }) {
636
+ return cn(
637
+ ICON_BUTTON_BASE,
638
+ withText
639
+ ? cn("font-medium whitespace-nowrap", stretch ? ICON_BUTTON_TEXT_STRETCH_SIZES[size] : ICON_BUTTON_TEXT_SIZES[size])
640
+ : stretch
641
+ ? ICON_BUTTON_STRETCH_SIZES[size]
642
+ : ICON_BUTTON_SIZES[size],
643
+ // With text the pill is a 48 px target at any size; the square follows its size.
644
+ withText ? TOUCH_TARGET_LARGE : ICON_BUTTON_TOUCH_LARGE[size],
645
+ glyphSize !== undefined && ICON_BUTTON_GLYPH_SIZES[glyphSize],
646
+ // After the size, so the overlay's `rounded-full` beats the small sizes' `rounded`.
647
+ variant === "overlay"
648
+ ? ICON_BUTTON_OVERLAY
649
+ : variant === "shutter"
650
+ ? ICON_BUTTON_SHUTTER
651
+ : buttonVariantClasses[variant],
652
+ shape === "round" && "rounded-full",
653
+ ICON_BUTTON_DISABLED_REST[variant],
654
+ iconButtonToneClass(tone, quiet),
655
+ toneColor !== undefined && typeof toneColor !== "string" && ICON_BUTTON_TONE_PAIR,
656
+ );
657
+ }
658
+
659
+ /** The badge beside the control, not in it — see `badge`. The wrapper is only a
660
+ * positioning box: the control inside it keeps its own focus ring and hit area. */
661
+ function withIconButtonBadge(control: ReactElement, badge: ReactNode, stretch: boolean | undefined) {
662
+ if (!hasContent(badge)) return control;
663
+ return (
664
+ <span className={cn("relative inline-flex shrink-0", stretch && "self-stretch")}>
665
+ {control}
666
+ <span
667
+ aria-hidden
668
+ data-slot="icon-button-badge"
669
+ className="pointer-events-none absolute -end-0.5 -bottom-0.5 inline-flex rounded-full bg-surface [&_svg]:size-3"
670
+ >
671
+ {badge}
672
+ </span>
673
+ </span>
674
+ );
675
+ }
676
+
677
+ // Declared link-first, as Button is, so `<IconButton href>` picks the link props and
678
+ // `ComponentProps<typeof IconButton>` (the LAST signature) is still the button's.
679
+ export function IconButton(props: IconButtonLinkProps): ReactElement;
680
+ export function IconButton(props: IconButtonProps): ReactElement;
681
+ export function IconButton(props: IconButtonProps | IconButtonLinkProps): ReactElement {
682
+ if (props.href !== undefined) return <IconButtonLink {...(props as IconButtonLinkProps)} />;
683
+ return <IconButtonElement {...(props as IconButtonProps)} />;
684
+ }
685
+
686
+ function IconButtonLink({
687
+ href,
688
+ renderLink,
689
+ external,
690
+ replace,
691
+ reloadDocument,
692
+ disabled,
693
+ variant = "ghost",
694
+ size = "md",
695
+ tone: toneProp,
696
+ quiet,
697
+ stopPropagation,
698
+ stretch,
699
+ shape = "square",
700
+ toneColor,
701
+ label,
702
+ labelVisible,
703
+ tooltip = true,
704
+ tooltipSide,
705
+ tooltipPortal,
706
+ tooltipLazy = true,
707
+ glyphSize,
708
+ badge,
709
+ className,
710
+ style,
711
+ target,
712
+ rel,
713
+ onClick,
714
+ onKeyDown,
715
+ children: glyph,
716
+ ref,
717
+ ...rest
718
+ }: IconButtonLinkProps) {
719
+ const withText = useIconButtonText(label, labelVisible, variant, tooltip);
720
+ const children = withText ? (
721
+ <>
722
+ {glyph}
723
+ <IconButtonText label={label!} />
724
+ </>
725
+ ) : (
726
+ glyph
727
+ );
728
+ const kitLink = useKitLink();
729
+ const common = useKitLabels("common", DEFAULT_COMMON_LABELS);
730
+ const tone = toneProp ?? (toneColor !== undefined ? "custom" : "default");
731
+ // Button's rule, word for word: `reloadDocument` bypasses the router, an external
732
+ // href or an in-page `#anchor` never reaches it.
733
+ const Link = reloadDocument ? undefined : pickLinkRenderer<KitLinkProps>(renderLink, kitLink, href);
734
+ const newTab = !disabled && (external || target === "_blank");
735
+ const name = rest["aria-label"] ?? label;
736
+ // "(opens in a new tab)" joins the NAME here, not the body: an icon link has no text
737
+ // for an sr-only span to follow, and `aria-label` would override one anyway.
738
+ const ariaLabel = name !== undefined && newTab ? `${name} (${common.opensInNewTab})` : name;
739
+ const handleClick = (e: MouseEvent<HTMLAnchorElement>) => {
740
+ if (stopPropagation) e.stopPropagation();
741
+ onClick?.(e);
742
+ };
743
+ const handleKeyDown = (e: KeyboardEvent<HTMLAnchorElement>) => {
744
+ // A link activates on Enter only; that key still bubbles to a clickable row.
745
+ if (stopPropagation && e.key === "Enter") e.stopPropagation();
746
+ onKeyDown?.(e);
747
+ };
748
+ const cls = cn(
749
+ iconButtonLook({ variant, size, stretch, glyphSize, shape, tone, quiet, toneColor, withText }),
750
+ // BASE's `disabled:` classes never match an `<a>` — Button's disabled link look.
751
+ disabled && "pointer-events-none cursor-not-allowed opacity-50",
752
+ className,
753
+ );
754
+ const look = { style: toneColorStyle(toneColor, style), className: cls };
755
+ let control: ReactElement;
756
+ if (disabled) {
757
+ control = (
758
+ <a {...rest} {...look} ref={ref} role="link" aria-disabled="true" aria-label={ariaLabel}>
759
+ {children}
760
+ </a>
761
+ );
762
+ } else if (external || !Link) {
763
+ control = (
764
+ <a
765
+ {...rest}
766
+ {...look}
767
+ ref={ref}
768
+ href={href}
769
+ aria-label={ariaLabel}
770
+ target={external ? "_blank" : target}
771
+ rel={external ? (rel ?? "noopener noreferrer") : rel}
772
+ onClick={external ? handleClick : replacingClick(handleClick, href, replace, target)}
773
+ onKeyDown={handleKeyDown}
774
+ >
775
+ {children}
776
+ </a>
777
+ );
778
+ } else {
779
+ control = (
780
+ <RenderedButtonLink
781
+ render={Link}
782
+ {...rest}
783
+ {...look}
784
+ {...routerLinkNavigation(replace)}
785
+ ref={ref}
786
+ href={href}
787
+ aria-label={ariaLabel}
788
+ target={target}
789
+ rel={rel}
790
+ onClick={handleClick}
791
+ onKeyDown={handleKeyDown}
792
+ >
793
+ {children}
794
+ </RenderedButtonLink>
795
+ );
796
+ }
797
+ control = withIconButtonBadge(control, badge, stretch);
798
+ // The words are on the link at Large: a bubble would only repeat them.
799
+ if (!tooltip || withText || label === undefined || label === "") return control;
800
+ return (
801
+ // A fragment, as on the button: the bubble says what `aria-label` already does.
802
+ <Tooltip
803
+ label={label}
804
+ side={tooltipSide}
805
+ portal={tooltipPortal}
806
+ lazy={tooltipLazy}
807
+ className={stretch ? "self-stretch" : undefined}
808
+ >
809
+ <>{control}</>
810
+ </Tooltip>
811
+ );
812
+ }
813
+
814
+ function IconButtonElement(
815
+ {
816
+ variant = "ghost",
817
+ size = "md",
818
+ tone: toneProp,
819
+ quiet,
820
+ pressed,
821
+ stopPropagation,
822
+ stretch,
823
+ shape = "square",
824
+ toneColor,
825
+ label,
826
+ labelVisible,
827
+ tooltip = true,
828
+ tooltipSide,
829
+ tooltipPortal,
830
+ tooltipLazy = true,
831
+ disabledReason: ownDisabledReason,
832
+ disabledReasonDisplay,
833
+ commit,
834
+ pending,
835
+ glyphSize,
836
+ badge,
837
+ disabledStyle = "dim",
838
+ className,
839
+ style,
840
+ onClick,
841
+ onKeyDown,
842
+ children,
843
+ href: _href,
844
+ renderLink: _renderLink,
845
+ external: _external,
846
+ replace: _replace,
847
+ reloadDocument: _reloadDocument,
848
+ ref,
849
+ ...rest
850
+ }: IconButtonProps,
851
+ ) {
852
+ const tone = toneProp ?? (toneColor !== undefined ? "custom" : "default");
853
+ const keep = disabledStyle === "keep";
854
+ const withText = useIconButtonText(label, labelVisible, variant, tooltip);
855
+ const reasonId = useId();
856
+ const disabledReason = useCommitReason(commit, ownDisabledReason);
857
+ const locked = hasContent(disabledReason);
858
+ // Pending is inert like a locked button — focusable, every activation swallowed —
859
+ // without the locked look: the spinner is the state.
860
+ const inert = locked || Boolean(pending);
861
+ const ownDescribedBy = rest["aria-describedby"];
862
+ const button = (
863
+ <button
864
+ ref={ref}
865
+ {...rest}
866
+ disabled={inert ? undefined : rest.disabled}
867
+ aria-disabled={inert || rest["aria-disabled"]}
868
+ aria-busy={pending || rest["aria-busy"]}
869
+ aria-describedby={locked ? (ownDescribedBy ? `${ownDescribedBy} ${reasonId}` : reasonId) : ownDescribedBy}
870
+ aria-label={rest["aria-label"] ?? label}
871
+ aria-pressed={pressed ?? rest["aria-pressed"]}
872
+ style={toneColorStyle(toneColor, style)}
873
+ onClick={(e) => {
874
+ if (stopPropagation) e.stopPropagation();
875
+ // `preventDefault` too: a locked (or pending) submit must not submit its form.
876
+ if (inert) {
877
+ e.preventDefault();
878
+ return;
879
+ }
880
+ onClick?.(e);
881
+ }}
882
+ onKeyDown={(e) => {
883
+ // A button turns Enter/Space into a click of its own, but the KEY still
884
+ // bubbles — and a clickable row listening for Enter would act on it too.
885
+ if (stopPropagation && (e.key === "Enter" || e.key === " ")) e.stopPropagation();
886
+ onKeyDown?.(e);
887
+ }}
888
+ className={cn(
889
+ iconButtonLook({ variant, size, stretch, glyphSize, shape, tone, quiet, toneColor, withText }),
890
+ pressed && ICON_BUTTON_PRESSED,
891
+ // The disabled look for the focusable kind of disabled, as on Button.
892
+ locked && (keep ? "cursor-default" : "cursor-not-allowed opacity-50"),
893
+ keep && "disabled:cursor-default disabled:opacity-100",
894
+ pending && "cursor-progress",
895
+ className,
896
+ )}
897
+ >
898
+ {pending ? (
899
+ // Decorative, as on Button: `aria-busy` says it. Sized to the glyph it stands
900
+ // in for, in the glyph's colour, so the swap does not change the button's look.
901
+ <Spinner
902
+ label={null}
903
+ className={cn(
904
+ "border-current/30 border-t-current",
905
+ glyphSize !== undefined ? ICON_BUTTON_SPINNER_GLYPH[glyphSize] : ICON_BUTTON_SPINNER[size],
906
+ )}
907
+ />
908
+ ) : (
909
+ children
910
+ )}
911
+ {withText && <IconButtonText label={label!} />}
912
+ </button>
913
+ );
914
+ const control = withIconButtonBadge(button, badge, stretch);
915
+ if (locked) {
916
+ return (
917
+ // Button's shape: the reason as a line under it, or the bubble with a hidden copy
918
+ // for the description (see LockedReason).
919
+ <LockedReason
920
+ lock={{ reason: disabledReason, reasonId }}
921
+ display={disabledReasonDisplay}
922
+ side={tooltipSide}
923
+ portal={tooltipPortal}
924
+ className={stretch ? "self-stretch" : undefined}
925
+ >
926
+ {control}
927
+ </LockedReason>
928
+ );
929
+ }
930
+ // The words are on the button at Large: a bubble would only repeat them.
931
+ if (!tooltip || withText || label === undefined || label === "") return control;
932
+ return (
933
+ // A fragment, so Tooltip leaves the button's description alone: the bubble says
934
+ // exactly what `aria-label` already does. Lazy by default — see `tooltipLazy`.
935
+ <Tooltip
936
+ label={label}
937
+ side={tooltipSide}
938
+ portal={tooltipPortal}
939
+ lazy={tooltipLazy}
940
+ className={stretch ? "self-stretch" : undefined}
941
+ >
942
+ <>{control}</>
943
+ </Tooltip>
944
+ );
945
+ }