@eifi1/ui-kit 0.33.1 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1559) hide show
  1. package/README.md +512 -306
  2. package/dist/account/account-parts.d.ts +6 -8
  3. package/dist/account/account-parts.js +1 -2
  4. package/dist/account/account-parts.js.map +1 -1
  5. package/dist/{components → account}/account-settings-labels.d.ts +16 -10
  6. package/dist/{components → account}/account-settings-labels.js +3 -1
  7. package/dist/account/account-settings-labels.js.map +1 -0
  8. package/dist/{components → account}/account-settings.d.ts +53 -23
  9. package/dist/{components → account}/account-settings.js +97 -26
  10. package/dist/account/account-settings.js.map +1 -0
  11. package/dist/account/data-export-setting-labels.d.ts +2 -0
  12. package/dist/account/data-export-setting-labels.js +15 -0
  13. package/dist/account/data-export-setting-labels.js.map +1 -0
  14. package/dist/account/data-export-setting.d.ts +9 -11
  15. package/dist/account/data-export-setting.js +11 -27
  16. package/dist/account/data-export-setting.js.map +1 -1
  17. package/dist/account/delete-account-setting-labels.d.ts +2 -0
  18. package/dist/account/delete-account-setting-labels.js +23 -0
  19. package/dist/account/delete-account-setting-labels.js.map +1 -0
  20. package/dist/account/delete-account-setting.d.ts +132 -101
  21. package/dist/account/delete-account-setting.js +7 -23
  22. package/dist/account/delete-account-setting.js.map +1 -1
  23. package/dist/account/email-change-setting-labels.d.ts +2 -0
  24. package/dist/account/email-change-setting-labels.js +28 -0
  25. package/dist/account/email-change-setting-labels.js.map +1 -0
  26. package/dist/account/email-change-setting.d.ts +10 -12
  27. package/dist/account/email-change-setting.js +11 -30
  28. package/dist/account/email-change-setting.js.map +1 -1
  29. package/dist/{components → account}/passkeys-setting.d.ts +9 -12
  30. package/dist/{components → account}/passkeys-setting.js +10 -7
  31. package/dist/account/passkeys-setting.js.map +1 -0
  32. package/dist/account/sessions-setting-labels.d.ts +2 -0
  33. package/dist/account/sessions-setting-labels.js +22 -0
  34. package/dist/account/sessions-setting-labels.js.map +1 -0
  35. package/dist/account/sessions-setting.d.ts +12 -14
  36. package/dist/account/sessions-setting.js +8 -23
  37. package/dist/account/sessions-setting.js.map +1 -1
  38. package/dist/admin/admin-action-confirm-labels.d.ts +2 -0
  39. package/dist/admin/admin-action-confirm-labels.js +16 -0
  40. package/dist/admin/admin-action-confirm-labels.js.map +1 -0
  41. package/dist/admin/admin-action-confirm.d.ts +156 -101
  42. package/dist/admin/admin-action-confirm.js +17 -22
  43. package/dist/admin/admin-action-confirm.js.map +1 -1
  44. package/dist/admin/admin-action-log-labels.d.ts +2 -0
  45. package/dist/admin/admin-action-log-labels.js +73 -0
  46. package/dist/admin/admin-action-log-labels.js.map +1 -0
  47. package/dist/admin/admin-action-log.d.ts +98 -22
  48. package/dist/admin/admin-action-log.js +48 -45
  49. package/dist/admin/admin-action-log.js.map +1 -1
  50. package/dist/admin/admin-parts.d.ts +7 -14
  51. package/dist/admin/admin-parts.js +0 -4
  52. package/dist/admin/admin-parts.js.map +1 -1
  53. package/dist/admin/invitations-panel-labels.d.ts +2 -0
  54. package/dist/admin/invitations-panel-labels.js +29 -0
  55. package/dist/admin/invitations-panel-labels.js.map +1 -0
  56. package/dist/admin/invitations-panel.d.ts +167 -101
  57. package/dist/admin/invitations-panel.js +12 -31
  58. package/dist/admin/invitations-panel.js.map +1 -1
  59. package/dist/admin/plan-change-labels.d.ts +2 -0
  60. package/dist/admin/plan-change-labels.js +22 -0
  61. package/dist/admin/plan-change-labels.js.map +1 -0
  62. package/dist/admin/plan-change.d.ts +244 -101
  63. package/dist/admin/plan-change.js +16 -24
  64. package/dist/admin/plan-change.js.map +1 -1
  65. package/dist/admin/reviewer-scope-editor-labels.d.ts +2 -0
  66. package/dist/admin/reviewer-scope-editor-labels.js +14 -0
  67. package/dist/admin/reviewer-scope-editor-labels.js.map +1 -0
  68. package/dist/admin/reviewer-scope-editor.d.ts +95 -101
  69. package/dist/admin/reviewer-scope-editor.js +5 -13
  70. package/dist/admin/reviewer-scope-editor.js.map +1 -1
  71. package/dist/admin/role-select-labels.d.ts +2 -0
  72. package/dist/admin/role-select-labels.js +15 -0
  73. package/dist/admin/role-select-labels.js.map +1 -0
  74. package/dist/admin/role-select.d.ts +136 -101
  75. package/dist/admin/role-select.js +7 -18
  76. package/dist/admin/role-select.js.map +1 -1
  77. package/dist/admin/transfer-ownership-dialog-labels.d.ts +2 -0
  78. package/dist/admin/transfer-ownership-dialog-labels.js +18 -0
  79. package/dist/admin/transfer-ownership-dialog-labels.js.map +1 -0
  80. package/dist/admin/transfer-ownership-dialog.d.ts +81 -101
  81. package/dist/admin/transfer-ownership-dialog.js +3 -15
  82. package/dist/admin/transfer-ownership-dialog.js.map +1 -1
  83. package/dist/admin/user-roster-labels.d.ts +2 -0
  84. package/dist/admin/user-roster-labels.js +16 -0
  85. package/dist/admin/user-roster-labels.js.map +1 -0
  86. package/dist/admin/user-roster.d.ts +225 -101
  87. package/dist/admin/user-roster.js +4 -14
  88. package/dist/admin/user-roster.js.map +1 -1
  89. package/dist/auth/accept-invitation-labels.d.ts +2 -0
  90. package/dist/auth/accept-invitation-labels.js +20 -0
  91. package/dist/auth/accept-invitation-labels.js.map +1 -0
  92. package/dist/auth/accept-invitation.d.ts +11 -13
  93. package/dist/auth/accept-invitation.js +3 -16
  94. package/dist/auth/accept-invitation.js.map +1 -1
  95. package/dist/auth/auth-errors.d.ts +34 -23
  96. package/dist/auth/auth-errors.js +8 -4
  97. package/dist/auth/auth-errors.js.map +1 -1
  98. package/dist/auth/complete-name-dialog-labels.d.ts +2 -0
  99. package/dist/auth/complete-name-dialog-labels.js +14 -0
  100. package/dist/auth/complete-name-dialog-labels.js.map +1 -0
  101. package/dist/auth/complete-name-dialog.d.ts +9 -11
  102. package/dist/auth/complete-name-dialog.js +4 -11
  103. package/dist/auth/complete-name-dialog.js.map +1 -1
  104. package/dist/auth/email-tag.d.ts +2 -4
  105. package/dist/auth/forgot-password-form-labels.d.ts +3 -0
  106. package/dist/auth/forgot-password-form-labels.js +17 -0
  107. package/dist/auth/forgot-password-form-labels.js.map +1 -0
  108. package/dist/auth/forgot-password-form.d.ts +9 -12
  109. package/dist/auth/forgot-password-form.js +6 -15
  110. package/dist/auth/forgot-password-form.js.map +1 -1
  111. package/dist/auth/form-rules.d.ts +5 -7
  112. package/dist/auth/new-password-fields.d.ts +4 -8
  113. package/dist/auth/new-password-fields.js +1 -1
  114. package/dist/auth/new-password-fields.js.map +1 -1
  115. package/dist/auth/not-found-page-labels.d.ts +2 -0
  116. package/dist/auth/not-found-page-labels.js +11 -0
  117. package/dist/auth/not-found-page-labels.js.map +1 -0
  118. package/dist/auth/not-found-page.d.ts +9 -11
  119. package/dist/auth/not-found-page.js +5 -10
  120. package/dist/auth/not-found-page.js.map +1 -1
  121. package/dist/auth/register-form-labels.d.ts +3 -0
  122. package/dist/auth/register-form-labels.js +28 -0
  123. package/dist/auth/register-form-labels.js.map +1 -0
  124. package/dist/auth/register-form.d.ts +174 -101
  125. package/dist/auth/register-form.js +11 -31
  126. package/dist/auth/register-form.js.map +1 -1
  127. package/dist/auth/reset-password-form-labels.d.ts +3 -0
  128. package/dist/auth/reset-password-form-labels.js +24 -0
  129. package/dist/auth/reset-password-form-labels.js.map +1 -0
  130. package/dist/auth/reset-password-form.d.ts +12 -15
  131. package/dist/auth/reset-password-form.js +6 -22
  132. package/dist/auth/reset-password-form.js.map +1 -1
  133. package/dist/auth/sign-in-form-labels.d.ts +3 -0
  134. package/dist/auth/sign-in-form-labels.js +42 -0
  135. package/dist/auth/sign-in-form-labels.js.map +1 -0
  136. package/dist/auth/sign-in-form.d.ts +15 -19
  137. package/dist/auth/sign-in-form.js +12 -46
  138. package/dist/auth/sign-in-form.js.map +1 -1
  139. package/dist/auth/status-parts.d.ts +13 -17
  140. package/dist/auth/status-parts.js +3 -3
  141. package/dist/auth/status-parts.js.map +1 -1
  142. package/dist/auth/verify-email-labels.d.ts +2 -0
  143. package/dist/auth/verify-email-labels.js +25 -0
  144. package/dist/auth/verify-email-labels.js.map +1 -0
  145. package/dist/auth/verify-email.d.ts +15 -17
  146. package/dist/auth/verify-email.js +4 -21
  147. package/dist/auth/verify-email.js.map +1 -1
  148. package/dist/billing/billing-banner.d.ts +12 -110
  149. package/dist/billing/billing-banner.js +2 -1
  150. package/dist/billing/billing-banner.js.map +1 -1
  151. package/dist/billing/billing-labels.d.ts +168 -101
  152. package/dist/billing/billing-labels.js.map +1 -1
  153. package/dist/billing/billing-lock.d.ts +10 -110
  154. package/dist/billing/billing-overview.d.ts +7 -109
  155. package/dist/billing/billing-standing.d.ts +6 -108
  156. package/dist/billing/checkout-processing.d.ts +8 -111
  157. package/dist/billing/checkout-processing.js +2 -9
  158. package/dist/billing/checkout-processing.js.map +1 -1
  159. package/dist/billing/checkout-return.d.ts +5 -7
  160. package/dist/billing/pay-page.d.ts +15 -117
  161. package/dist/billing/plan-card.d.ts +14 -115
  162. package/dist/billing/plan-card.js +15 -13
  163. package/dist/billing/plan-card.js.map +1 -1
  164. package/dist/billing/plan-limit-notice.d.ts +12 -110
  165. package/dist/billing/plan-limit-notice.js +1 -1
  166. package/dist/billing/plan-limit-notice.js.map +1 -1
  167. package/dist/billing/plan-limit-toast.d.ts +6 -107
  168. package/dist/billing/plan-limit.d.ts +2 -4
  169. package/dist/billing/plan-price.d.ts +10 -12
  170. package/dist/billing/subscription-actions.d.ts +6 -109
  171. package/dist/billing/subscription-actions.js +2 -2
  172. package/dist/billing/subscription-actions.js.map +1 -1
  173. package/dist/billing/subscription-status-chip.d.ts +7 -108
  174. package/dist/chart.d.ts +12 -113
  175. package/dist/chart.js +4 -0
  176. package/dist/chart.js.map +1 -1
  177. package/dist/components/account-chips-labels.d.ts +10 -0
  178. package/dist/components/account-chips-labels.js +15 -0
  179. package/dist/components/account-chips-labels.js.map +1 -0
  180. package/dist/components/account-chips.d.ts +22 -44
  181. package/dist/components/account-chips.js +9 -14
  182. package/dist/components/account-chips.js.map +1 -1
  183. package/dist/components/alert-banner.d.ts +15 -11
  184. package/dist/components/alert-banner.js +28 -18
  185. package/dist/components/alert-banner.js.map +1 -1
  186. package/dist/components/amount-input.d.ts +64 -111
  187. package/dist/components/amount-input.js +259 -283
  188. package/dist/components/amount-input.js.map +1 -1
  189. package/dist/components/appearance-labels.d.ts +6 -10
  190. package/dist/components/appearance-labels.js.map +1 -1
  191. package/dist/components/authed-image-labels.d.ts +2 -0
  192. package/dist/components/authed-image-labels.js +10 -0
  193. package/dist/components/authed-image-labels.js.map +1 -0
  194. package/dist/components/authed-image.d.ts +11 -13
  195. package/dist/components/authed-image.js +2 -6
  196. package/dist/components/authed-image.js.map +1 -1
  197. package/dist/components/autocomplete.d.ts +13 -11
  198. package/dist/components/autocomplete.js +33 -28
  199. package/dist/components/autocomplete.js.map +1 -1
  200. package/dist/components/breadcrumbs-labels.d.ts +2 -0
  201. package/dist/components/breadcrumbs-labels.js +9 -0
  202. package/dist/components/breadcrumbs-labels.js.map +1 -0
  203. package/dist/components/breadcrumbs.d.ts +10 -12
  204. package/dist/components/breadcrumbs.js +7 -10
  205. package/dist/components/breadcrumbs.js.map +1 -1
  206. package/dist/components/bulk-action-bar-labels.d.ts +2 -0
  207. package/dist/components/bulk-action-bar-labels.js +10 -0
  208. package/dist/components/bulk-action-bar-labels.js.map +1 -0
  209. package/dist/components/bulk-action-bar.d.ts +10 -12
  210. package/dist/components/bulk-action-bar.js +9 -12
  211. package/dist/components/bulk-action-bar.js.map +1 -1
  212. package/dist/components/button-group.d.ts +7 -110
  213. package/dist/components/button-group.js +5 -5
  214. package/dist/components/button-group.js.map +1 -1
  215. package/dist/components/button-look.d.ts +88 -0
  216. package/dist/components/button-look.js +91 -0
  217. package/dist/components/button-look.js.map +1 -0
  218. package/dist/components/button.d.ts +153 -0
  219. package/dist/components/button.js +165 -0
  220. package/dist/components/button.js.map +1 -0
  221. package/dist/components/calculator.d.ts +6 -108
  222. package/dist/components/calculator.js +8 -7
  223. package/dist/components/calculator.js.map +1 -1
  224. package/dist/components/calendar-heatmap-labels.d.ts +3 -0
  225. package/dist/components/calendar-heatmap-labels.js +12 -0
  226. package/dist/components/calendar-heatmap-labels.js.map +1 -0
  227. package/dist/components/calendar-heatmap.d.ts +13 -16
  228. package/dist/components/calendar-heatmap.js +7 -13
  229. package/dist/components/calendar-heatmap.js.map +1 -1
  230. package/dist/components/card.d.ts +145 -0
  231. package/dist/components/card.js +186 -0
  232. package/dist/components/card.js.map +1 -0
  233. package/dist/components/chart-height.d.ts +4 -7
  234. package/dist/components/chart-zoom-core.d.ts +202 -0
  235. package/dist/components/chart-zoom-core.js +334 -0
  236. package/dist/components/chart-zoom-core.js.map +1 -0
  237. package/dist/components/chart-zoom.d.ts +2 -205
  238. package/dist/components/chart-zoom.js +2 -330
  239. package/dist/components/chart-zoom.js.map +1 -1
  240. package/dist/components/chart.d.ts +11 -15
  241. package/dist/components/chart.js +11 -11
  242. package/dist/components/chart.js.map +1 -1
  243. package/dist/components/checkbox-group.d.ts +6 -10
  244. package/dist/components/checkbox-group.js +10 -9
  245. package/dist/components/checkbox-group.js.map +1 -1
  246. package/dist/components/checkbox.d.ts +8 -12
  247. package/dist/components/checkbox.js +20 -18
  248. package/dist/components/checkbox.js.map +1 -1
  249. package/dist/components/chip-input.d.ts +69 -0
  250. package/dist/components/chip-input.js +220 -0
  251. package/dist/components/chip-input.js.map +1 -0
  252. package/dist/components/chip-labels.d.ts +2 -0
  253. package/dist/components/chip-labels.js +12 -0
  254. package/dist/components/chip-labels.js.map +1 -0
  255. package/dist/components/chip.d.ts +18 -93
  256. package/dist/components/chip.js +74 -426
  257. package/dist/components/chip.js.map +1 -1
  258. package/dist/components/choice-card.d.ts +21 -18
  259. package/dist/components/choice-card.js +45 -45
  260. package/dist/components/choice-card.js.map +1 -1
  261. package/dist/components/column-mapper-labels.d.ts +5 -0
  262. package/dist/components/column-mapper-labels.js +34 -0
  263. package/dist/components/column-mapper-labels.js.map +1 -0
  264. package/dist/components/column-mapper.d.ts +15 -17
  265. package/dist/components/column-mapper.js +11 -37
  266. package/dist/components/column-mapper.js.map +1 -1
  267. package/dist/components/combobox-core.d.ts +79 -40
  268. package/dist/components/combobox-core.js +187 -121
  269. package/dist/components/combobox-core.js.map +1 -1
  270. package/dist/components/combobox-suggestions.d.ts +76 -0
  271. package/dist/components/combobox-suggestions.js +56 -0
  272. package/dist/components/combobox-suggestions.js.map +1 -0
  273. package/dist/components/combobox.d.ts +15 -160
  274. package/dist/components/combobox.js +40 -507
  275. package/dist/components/combobox.js.map +1 -1
  276. package/dist/components/confirm-dialog-labels.d.ts +7 -0
  277. package/dist/components/confirm-dialog-labels.js +10 -0
  278. package/dist/components/confirm-dialog-labels.js.map +1 -0
  279. package/dist/components/confirm-dialog.d.ts +165 -101
  280. package/dist/components/confirm-dialog.js +2 -6
  281. package/dist/components/confirm-dialog.js.map +1 -1
  282. package/dist/components/copy-button-labels.d.ts +2 -0
  283. package/dist/components/copy-button-labels.js +12 -0
  284. package/dist/components/copy-button-labels.js.map +1 -0
  285. package/dist/components/copy-button.d.ts +74 -101
  286. package/dist/components/copy-button.js +4 -9
  287. package/dist/components/copy-button.js.map +1 -1
  288. package/dist/components/country-select-labels.d.ts +2 -0
  289. package/dist/components/country-select-labels.js +10 -0
  290. package/dist/components/country-select-labels.js.map +1 -0
  291. package/dist/components/country-select.d.ts +18 -15
  292. package/dist/components/country-select.js +49 -64
  293. package/dist/components/country-select.js.map +1 -1
  294. package/dist/components/currency-option-list.d.ts +58 -0
  295. package/dist/components/currency-option-list.js +107 -0
  296. package/dist/components/currency-option-list.js.map +1 -0
  297. package/dist/components/currency-select.d.ts +10 -30
  298. package/dist/components/currency-select.js +50 -133
  299. package/dist/components/currency-select.js.map +1 -1
  300. package/dist/components/danger-confirm-labels.d.ts +14 -0
  301. package/dist/components/danger-confirm-labels.js +17 -0
  302. package/dist/components/danger-confirm-labels.js.map +1 -0
  303. package/dist/components/danger-confirm.d.ts +448 -101
  304. package/dist/components/danger-confirm.js +40 -46
  305. package/dist/components/danger-confirm.js.map +1 -1
  306. package/dist/components/data-table-cells.d.ts +9 -24
  307. package/dist/components/data-table-cells.js +1 -1
  308. package/dist/components/data-table-cells.js.map +1 -1
  309. package/dist/components/data-table-column-settings.d.ts +16 -0
  310. package/dist/components/data-table-column-settings.js +119 -0
  311. package/dist/components/data-table-column-settings.js.map +1 -0
  312. package/dist/components/data-table-filter-popover.d.ts +5 -19
  313. package/dist/components/data-table-filter-popover.js +40 -23
  314. package/dist/components/data-table-filter-popover.js.map +1 -1
  315. package/dist/components/data-table-filters.d.ts +93 -15
  316. package/dist/components/data-table-filters.js +22 -7
  317. package/dist/components/data-table-filters.js.map +1 -1
  318. package/dist/components/data-table-head.d.ts +36 -0
  319. package/dist/components/data-table-head.js +190 -0
  320. package/dist/components/data-table-head.js.map +1 -0
  321. package/dist/components/data-table-labels.d.ts +83 -15
  322. package/dist/components/data-table-labels.js +4 -29
  323. package/dist/components/data-table-labels.js.map +1 -1
  324. package/dist/components/data-table-mobile.d.ts +106 -0
  325. package/dist/components/data-table-mobile.js +412 -0
  326. package/dist/components/data-table-mobile.js.map +1 -0
  327. package/dist/components/data-table-pagination.d.ts +6 -21
  328. package/dist/components/data-table-pagination.js +7 -7
  329. package/dist/components/data-table-pagination.js.map +1 -1
  330. package/dist/components/data-table-resize.d.ts +37 -0
  331. package/dist/components/data-table-resize.js +103 -0
  332. package/dist/components/data-table-resize.js.map +1 -0
  333. package/dist/components/data-table-row-actions.d.ts +24 -0
  334. package/dist/components/data-table-row-actions.js +95 -0
  335. package/dist/components/data-table-row-actions.js.map +1 -0
  336. package/dist/components/data-table-selection.d.ts +21 -0
  337. package/dist/components/data-table-selection.js +30 -0
  338. package/dist/components/data-table-selection.js.map +1 -0
  339. package/dist/components/data-table-shared.d.ts +93 -0
  340. package/dist/components/data-table-shared.js +99 -0
  341. package/dist/components/data-table-shared.js.map +1 -0
  342. package/dist/components/data-table-sort.d.ts +8 -10
  343. package/dist/components/data-table.d.ts +613 -15
  344. package/dist/components/data-table.js +150 -939
  345. package/dist/components/data-table.js.map +1 -1
  346. package/dist/components/date-field.d.ts +203 -0
  347. package/dist/components/date-field.js +270 -0
  348. package/dist/components/date-field.js.map +1 -0
  349. package/dist/components/date-picker.d.ts +6 -261
  350. package/dist/components/date-picker.js +24 -760
  351. package/dist/components/date-picker.js.map +1 -1
  352. package/dist/components/date-range-picker.d.ts +125 -0
  353. package/dist/components/date-range-picker.js +261 -0
  354. package/dist/components/date-range-picker.js.map +1 -0
  355. package/dist/components/description-list-labels.d.ts +2 -0
  356. package/dist/components/description-list-labels.js +8 -0
  357. package/dist/components/description-list-labels.js.map +1 -0
  358. package/dist/components/description-list.d.ts +13 -15
  359. package/dist/components/description-list.js +17 -11
  360. package/dist/components/description-list.js.map +1 -1
  361. package/dist/components/dialog-frame-labels.d.ts +2 -0
  362. package/dist/components/dialog-frame-labels.js +6 -0
  363. package/dist/components/dialog-frame-labels.js.map +1 -0
  364. package/dist/components/dialog-frame.d.ts +10 -12
  365. package/dist/components/dialog-frame.js +6 -6
  366. package/dist/components/dialog-frame.js.map +1 -1
  367. package/dist/components/disclosure.d.ts +6 -10
  368. package/dist/components/disclosure.js +11 -11
  369. package/dist/components/disclosure.js.map +1 -1
  370. package/dist/components/dropdown.d.ts +61 -30
  371. package/dist/components/dropdown.js +61 -30
  372. package/dist/components/dropdown.js.map +1 -1
  373. package/dist/components/empty-state.d.ts +64 -0
  374. package/dist/components/empty-state.js +70 -0
  375. package/dist/components/empty-state.js.map +1 -0
  376. package/dist/components/entity-combobox.d.ts +11 -12
  377. package/dist/components/entity-combobox.js +14 -13
  378. package/dist/components/entity-combobox.js.map +1 -1
  379. package/dist/components/error-boundary-labels.d.ts +2 -0
  380. package/dist/components/error-boundary-labels.js +19 -0
  381. package/dist/components/error-boundary-labels.js.map +1 -0
  382. package/dist/components/error-boundary.d.ts +17 -17
  383. package/dist/components/error-boundary.js +5 -17
  384. package/dist/components/error-boundary.js.map +1 -1
  385. package/dist/components/facing-pair.d.ts +7 -116
  386. package/dist/components/facing-pair.js +1 -1
  387. package/dist/components/facing-pair.js.map +1 -1
  388. package/dist/components/field-base.d.ts +255 -0
  389. package/dist/components/field-base.js +223 -0
  390. package/dist/components/field-base.js.map +1 -0
  391. package/dist/components/field-parts.d.ts +180 -87
  392. package/dist/components/field-parts.js +52 -33
  393. package/dist/components/field-parts.js.map +1 -1
  394. package/dist/components/field-strip.d.ts +12 -36
  395. package/dist/components/field-strip.js +24 -22
  396. package/dist/components/field-strip.js.map +1 -1
  397. package/dist/components/field-sync-labels.d.ts +2 -0
  398. package/dist/components/field-sync-labels.js +12 -0
  399. package/dist/components/field-sync-labels.js.map +1 -0
  400. package/dist/components/field-sync.d.ts +16 -19
  401. package/dist/components/field-sync.js +4 -14
  402. package/dist/components/field-sync.js.map +1 -1
  403. package/dist/components/field.d.ts +45 -10
  404. package/dist/components/field.js +10 -8
  405. package/dist/components/field.js.map +1 -1
  406. package/dist/components/file-button.d.ts +85 -101
  407. package/dist/components/file-button.js +23 -169
  408. package/dist/components/file-button.js.map +1 -1
  409. package/dist/components/file-dropzone.d.ts +9 -110
  410. package/dist/components/file-dropzone.js +22 -22
  411. package/dist/components/file-dropzone.js.map +1 -1
  412. package/dist/components/floating-panel-labels.d.ts +2 -0
  413. package/dist/components/floating-panel-labels.js +9 -0
  414. package/dist/components/floating-panel-labels.js.map +1 -0
  415. package/dist/components/floating-panel.d.ts +17 -21
  416. package/dist/components/floating-panel.js +19 -18
  417. package/dist/components/floating-panel.js.map +1 -1
  418. package/dist/components/focus-ring.d.ts +9 -6
  419. package/dist/components/focus-ring.js +2 -2
  420. package/dist/components/focus-ring.js.map +1 -1
  421. package/dist/components/form-actions-labels.d.ts +2 -0
  422. package/dist/components/form-actions-labels.js +10 -0
  423. package/dist/components/form-actions-labels.js.map +1 -0
  424. package/dist/components/form-actions.d.ts +280 -101
  425. package/dist/components/form-actions.js +10 -20
  426. package/dist/components/form-actions.js.map +1 -1
  427. package/dist/components/full-bleed-dialog.d.ts +7 -8
  428. package/dist/components/full-bleed-dialog.js +14 -13
  429. package/dist/components/full-bleed-dialog.js.map +1 -1
  430. package/dist/components/grouped-picker.d.ts +21 -16
  431. package/dist/components/grouped-picker.js +76 -62
  432. package/dist/components/grouped-picker.js.map +1 -1
  433. package/dist/components/help-popover.d.ts +60 -0
  434. package/dist/components/help-popover.js +48 -0
  435. package/dist/components/help-popover.js.map +1 -0
  436. package/dist/components/hover-menu.d.ts +12 -18
  437. package/dist/components/hover-menu.js +19 -18
  438. package/dist/components/hover-menu.js.map +1 -1
  439. package/dist/components/iban-input-labels.d.ts +2 -0
  440. package/dist/components/iban-input-labels.js +13 -0
  441. package/dist/components/iban-input-labels.js.map +1 -0
  442. package/dist/components/iban-input.d.ts +73 -101
  443. package/dist/components/iban-input.js +22 -15
  444. package/dist/components/iban-input.js.map +1 -1
  445. package/dist/components/icon-button.d.ts +300 -0
  446. package/dist/components/icon-button.js +465 -0
  447. package/dist/components/icon-button.js.map +1 -0
  448. package/dist/components/icon-picker-labels.d.ts +2 -0
  449. package/dist/components/icon-picker-labels.js +12 -0
  450. package/dist/components/icon-picker-labels.js.map +1 -0
  451. package/dist/components/icon-picker.d.ts +13 -13
  452. package/dist/components/icon-picker.js +18 -17
  453. package/dist/components/icon-picker.js.map +1 -1
  454. package/dist/components/image-grid-labels.d.ts +2 -0
  455. package/dist/components/image-grid-labels.js +10 -0
  456. package/dist/components/image-grid-labels.js.map +1 -0
  457. package/dist/components/image-grid.d.ts +12 -14
  458. package/dist/components/image-grid.js +6 -10
  459. package/dist/components/image-grid.js.map +1 -1
  460. package/dist/components/inline-edit-field-labels.d.ts +2 -0
  461. package/dist/components/inline-edit-field-labels.js +10 -0
  462. package/dist/components/inline-edit-field-labels.js.map +1 -0
  463. package/dist/components/inline-edit-field.d.ts +11 -13
  464. package/dist/components/inline-edit-field.js +11 -13
  465. package/dist/components/inline-edit-field.js.map +1 -1
  466. package/dist/components/inline-entity-combobox.d.ts +155 -0
  467. package/dist/components/inline-entity-combobox.js +467 -0
  468. package/dist/components/inline-entity-combobox.js.map +1 -0
  469. package/dist/components/input.d.ts +98 -0
  470. package/dist/components/input.js +219 -0
  471. package/dist/components/input.js.map +1 -0
  472. package/dist/components/jump-calendar.d.ts +8 -0
  473. package/dist/components/jump-calendar.js +274 -0
  474. package/dist/components/jump-calendar.js.map +1 -0
  475. package/dist/components/language-select.d.ts +20 -111
  476. package/dist/components/language-select.js +12 -7
  477. package/dist/components/language-select.js.map +1 -1
  478. package/dist/components/legal-labels.d.ts +2 -0
  479. package/dist/components/legal-labels.js +100 -0
  480. package/dist/components/legal-labels.js.map +1 -0
  481. package/dist/components/legal-page.d.ts +17 -118
  482. package/dist/components/legal-page.js +2 -2
  483. package/dist/components/legal-page.js.map +1 -1
  484. package/dist/components/legal.d.ts +353 -101
  485. package/dist/components/legal.js +7 -101
  486. package/dist/components/legal.js.map +1 -1
  487. package/dist/components/lightbox-labels.d.ts +2 -0
  488. package/dist/components/lightbox-labels.js +17 -0
  489. package/dist/components/lightbox-labels.js.map +1 -0
  490. package/dist/components/lightbox.d.ts +12 -14
  491. package/dist/components/lightbox.js +9 -19
  492. package/dist/components/lightbox.js.map +1 -1
  493. package/dist/components/line-items-labels.d.ts +2 -0
  494. package/dist/components/line-items-labels.js +13 -0
  495. package/dist/components/line-items-labels.js.map +1 -0
  496. package/dist/components/line-items.d.ts +16 -18
  497. package/dist/components/line-items.js +18 -26
  498. package/dist/components/line-items.js.map +1 -1
  499. package/dist/components/list-labels.d.ts +2 -0
  500. package/dist/components/list-labels.js +9 -0
  501. package/dist/components/list-labels.js.map +1 -0
  502. package/dist/components/list.d.ts +32 -21
  503. package/dist/components/list.js +41 -25
  504. package/dist/components/list.js.map +1 -1
  505. package/dist/components/loading-state.d.ts +5 -9
  506. package/dist/components/loading-state.js +2 -2
  507. package/dist/components/loading-state.js.map +1 -1
  508. package/dist/components/measured-grid-labels.d.ts +4 -0
  509. package/dist/components/measured-grid-labels.js +21 -0
  510. package/dist/components/measured-grid-labels.js.map +1 -0
  511. package/dist/components/measured-grid.d.ts +13 -17
  512. package/dist/components/measured-grid.js +31 -50
  513. package/dist/components/measured-grid.js.map +1 -1
  514. package/dist/components/menu-item.d.ts +10 -10
  515. package/dist/components/menu-item.js +9 -9
  516. package/dist/components/menu-item.js.map +1 -1
  517. package/dist/components/mini-calendar-labels.d.ts +4 -0
  518. package/dist/components/mini-calendar-labels.js +14 -0
  519. package/dist/components/mini-calendar-labels.js.map +1 -0
  520. package/dist/components/mini-calendar.d.ts +10 -14
  521. package/dist/components/mini-calendar.js +22 -29
  522. package/dist/components/mini-calendar.js.map +1 -1
  523. package/dist/components/modal.d.ts +34 -18
  524. package/dist/components/modal.js +13 -13
  525. package/dist/components/modal.js.map +1 -1
  526. package/dist/components/money-draft.d.ts +34 -0
  527. package/dist/components/money-draft.js +39 -0
  528. package/dist/components/money-draft.js.map +1 -0
  529. package/dist/components/money-field.d.ts +13 -111
  530. package/dist/components/money-field.js +6 -22
  531. package/dist/components/money-field.js.map +1 -1
  532. package/dist/components/month-picker-labels.d.ts +5 -0
  533. package/dist/components/month-picker-labels.js +18 -0
  534. package/dist/components/month-picker-labels.js.map +1 -0
  535. package/dist/components/month-picker.d.ts +15 -13
  536. package/dist/components/month-picker.js +34 -32
  537. package/dist/components/month-picker.js.map +1 -1
  538. package/dist/components/multi-entity-combobox.d.ts +9 -11
  539. package/dist/components/multi-entity-combobox.js +14 -13
  540. package/dist/components/multi-entity-combobox.js.map +1 -1
  541. package/dist/components/multi-select.d.ts +74 -25
  542. package/dist/components/multi-select.js +166 -197
  543. package/dist/components/multi-select.js.map +1 -1
  544. package/dist/components/nav-pills.d.ts +9 -10
  545. package/dist/components/nav-pills.js +53 -42
  546. package/dist/components/nav-pills.js.map +1 -1
  547. package/dist/components/number-field.d.ts +6 -111
  548. package/dist/components/number-field.js +2 -3
  549. package/dist/components/number-field.js.map +1 -1
  550. package/dist/components/number-input.d.ts +28 -112
  551. package/dist/components/number-input.js +33 -67
  552. package/dist/components/number-input.js.map +1 -1
  553. package/dist/components/numeric-field.d.ts +85 -0
  554. package/dist/components/numeric-field.js +71 -0
  555. package/dist/components/numeric-field.js.map +1 -0
  556. package/dist/components/numpad-sheet.d.ts +5 -108
  557. package/dist/components/numpad-sheet.js +7 -7
  558. package/dist/components/numpad-sheet.js.map +1 -1
  559. package/dist/components/one-time-code-input.d.ts +6 -7
  560. package/dist/components/one-time-code-input.js +119 -124
  561. package/dist/components/one-time-code-input.js.map +1 -1
  562. package/dist/components/page-contents-labels.d.ts +2 -0
  563. package/dist/components/page-contents-labels.js +8 -0
  564. package/dist/components/page-contents-labels.js.map +1 -0
  565. package/dist/components/page-contents.d.ts +13 -15
  566. package/dist/components/page-contents.js +7 -9
  567. package/dist/components/page-contents.js.map +1 -1
  568. package/dist/components/page-header.d.ts +10 -10
  569. package/dist/components/page-header.js +3 -3
  570. package/dist/components/page-header.js.map +1 -1
  571. package/dist/components/password-strength-labels.d.ts +2 -0
  572. package/dist/components/password-strength-labels.js +21 -0
  573. package/dist/components/password-strength-labels.js.map +1 -0
  574. package/dist/components/password-strength.d.ts +15 -17
  575. package/dist/components/password-strength.js +7 -22
  576. package/dist/components/password-strength.js.map +1 -1
  577. package/dist/components/phone-input-labels.d.ts +2 -0
  578. package/dist/components/phone-input-labels.js +9 -0
  579. package/dist/components/phone-input-labels.js.map +1 -0
  580. package/dist/components/phone-input.d.ts +75 -101
  581. package/dist/components/phone-input.js +20 -23
  582. package/dist/components/phone-input.js.map +1 -1
  583. package/dist/components/picker-sheet.d.ts +20 -8
  584. package/dist/components/picker-sheet.js +22 -11
  585. package/dist/components/picker-sheet.js.map +1 -1
  586. package/dist/components/pie-chart-labels.d.ts +2 -4
  587. package/dist/components/pie-chart.d.ts +8 -11
  588. package/dist/components/pie-chart.js +5 -5
  589. package/dist/components/pie-chart.js.map +1 -1
  590. package/dist/components/popover-labels.d.ts +2 -0
  591. package/dist/components/popover-labels.js +11 -0
  592. package/dist/components/popover-labels.js.map +1 -0
  593. package/dist/components/popover.d.ts +13 -11
  594. package/dist/components/popover.js +15 -21
  595. package/dist/components/popover.js.map +1 -1
  596. package/dist/components/progress-bar-labels.d.ts +2 -0
  597. package/dist/components/progress-bar-labels.js +9 -0
  598. package/dist/components/progress-bar-labels.js.map +1 -0
  599. package/dist/components/progress-bar.d.ts +16 -15
  600. package/dist/components/progress-bar.js +22 -20
  601. package/dist/components/progress-bar.js.map +1 -1
  602. package/dist/components/qr-code.d.ts +4 -8
  603. package/dist/components/qr-code.js.map +1 -1
  604. package/dist/components/reauth-dialog-labels.d.ts +2 -0
  605. package/dist/components/reauth-dialog-labels.js +12 -0
  606. package/dist/components/reauth-dialog-labels.js.map +1 -0
  607. package/dist/components/reauth-dialog.d.ts +8 -10
  608. package/dist/components/reauth-dialog.js +3 -8
  609. package/dist/components/reauth-dialog.js.map +1 -1
  610. package/dist/components/row-actions-labels.d.ts +2 -0
  611. package/dist/components/row-actions-labels.js +9 -0
  612. package/dist/components/row-actions-labels.js.map +1 -0
  613. package/dist/components/row-actions.d.ts +224 -101
  614. package/dist/components/row-actions.js +4 -5
  615. package/dist/components/row-actions.js.map +1 -1
  616. package/dist/components/scroll-area.d.ts +6 -9
  617. package/dist/components/scroll-area.js +4 -10
  618. package/dist/components/scroll-area.js.map +1 -1
  619. package/dist/components/search-field.d.ts +12 -27
  620. package/dist/components/search-field.js +13 -16
  621. package/dist/components/search-field.js.map +1 -1
  622. package/dist/components/select.d.ts +69 -0
  623. package/dist/components/select.js +164 -0
  624. package/dist/components/select.js.map +1 -0
  625. package/dist/components/separator.d.ts +3 -7
  626. package/dist/components/separator.js.map +1 -1
  627. package/dist/components/series-chart-axes.d.ts +120 -0
  628. package/dist/components/series-chart-axes.js +164 -0
  629. package/dist/components/series-chart-axes.js.map +1 -0
  630. package/dist/components/series-chart-budget.d.ts +8 -9
  631. package/dist/components/series-chart-labels.d.ts +2 -4
  632. package/dist/components/series-chart-thin.d.ts +34 -0
  633. package/dist/components/series-chart-thin.js +103 -0
  634. package/dist/components/series-chart-thin.js.map +1 -0
  635. package/dist/components/series-chart-ticks.d.ts +9 -11
  636. package/dist/components/series-chart.d.ts +64 -214
  637. package/dist/components/series-chart.js +69 -160
  638. package/dist/components/series-chart.js.map +1 -1
  639. package/dist/components/server-wake-labels.d.ts +2 -0
  640. package/dist/components/server-wake-labels.js +9 -0
  641. package/dist/components/server-wake-labels.js.map +1 -0
  642. package/dist/components/server-wake.d.ts +29 -26
  643. package/dist/components/server-wake.js +15 -35
  644. package/dist/components/server-wake.js.map +1 -1
  645. package/dist/components/settings-fields.d.ts +50 -120
  646. package/dist/components/settings-fields.js +13 -3
  647. package/dist/components/settings-fields.js.map +1 -1
  648. package/dist/components/share-card-labels.d.ts +2 -0
  649. package/dist/components/share-card-labels.js +29 -0
  650. package/dist/components/share-card-labels.js.map +1 -0
  651. package/dist/components/share-card.d.ts +188 -101
  652. package/dist/components/share-card.js +16 -34
  653. package/dist/components/share-card.js.map +1 -1
  654. package/dist/components/sign-chip-labels.d.ts +2 -0
  655. package/dist/components/sign-chip-labels.js +11 -0
  656. package/dist/components/sign-chip-labels.js.map +1 -0
  657. package/dist/components/sign-chip.d.ts +7 -9
  658. package/dist/components/sign-chip.js +2 -7
  659. package/dist/components/sign-chip.js.map +1 -1
  660. package/dist/components/signature-pad-labels.d.ts +2 -0
  661. package/dist/components/signature-pad-labels.js +23 -0
  662. package/dist/components/signature-pad-labels.js.map +1 -0
  663. package/dist/components/signature-pad.d.ts +16 -15
  664. package/dist/components/signature-pad.js +22 -35
  665. package/dist/components/signature-pad.js.map +1 -1
  666. package/dist/components/signed-amount-labels.d.ts +2 -0
  667. package/dist/components/signed-amount-labels.js +9 -0
  668. package/dist/components/signed-amount-labels.js.map +1 -0
  669. package/dist/components/signed-amount.d.ts +19 -21
  670. package/dist/components/signed-amount.js +12 -15
  671. package/dist/components/signed-amount.js.map +1 -1
  672. package/dist/components/skeleton.d.ts +5 -9
  673. package/dist/components/skeleton.js +1 -1
  674. package/dist/components/skeleton.js.map +1 -1
  675. package/dist/components/slider.d.ts +16 -11
  676. package/dist/components/slider.js +23 -18
  677. package/dist/components/slider.js.map +1 -1
  678. package/dist/components/sparkline-labels.d.ts +2 -0
  679. package/dist/components/sparkline-labels.js +13 -0
  680. package/dist/components/sparkline-labels.js.map +1 -0
  681. package/dist/components/sparkline.d.ts +10 -12
  682. package/dist/components/sparkline.js +10 -17
  683. package/dist/components/sparkline.js.map +1 -1
  684. package/dist/components/spinner.d.ts +45 -0
  685. package/dist/components/spinner.js +39 -0
  686. package/dist/components/spinner.js.map +1 -0
  687. package/dist/components/stat-tile-labels.d.ts +2 -0
  688. package/dist/components/stat-tile-labels.js +14 -0
  689. package/dist/components/stat-tile-labels.js.map +1 -0
  690. package/dist/components/stat-tile.d.ts +21 -17
  691. package/dist/components/stat-tile.js +25 -32
  692. package/dist/components/stat-tile.js.map +1 -1
  693. package/dist/components/status-dot.d.ts +8 -20
  694. package/dist/components/status-dot.js +13 -12
  695. package/dist/components/status-dot.js.map +1 -1
  696. package/dist/components/swatch-picker-labels.d.ts +2 -0
  697. package/dist/components/swatch-picker-labels.js +9 -0
  698. package/dist/components/swatch-picker-labels.js.map +1 -0
  699. package/dist/components/swatch-picker.d.ts +14 -14
  700. package/dist/components/swatch-picker.js +14 -8
  701. package/dist/components/swatch-picker.js.map +1 -1
  702. package/dist/components/swipeable-row.d.ts +11 -39
  703. package/dist/components/swipeable-row.js +13 -18
  704. package/dist/components/swipeable-row.js.map +1 -1
  705. package/dist/components/switch.d.ts +10 -13
  706. package/dist/components/switch.js +13 -12
  707. package/dist/components/switch.js.map +1 -1
  708. package/dist/components/table.d.ts +28 -31
  709. package/dist/components/table.js +15 -15
  710. package/dist/components/table.js.map +1 -1
  711. package/dist/components/tabs.d.ts +182 -0
  712. package/dist/components/tabs.js +312 -0
  713. package/dist/components/tabs.js.map +1 -0
  714. package/dist/components/text-link.d.ts +17 -119
  715. package/dist/components/text-link.js +7 -7
  716. package/dist/components/text-link.js.map +1 -1
  717. package/dist/components/text.d.ts +14 -13
  718. package/dist/components/text.js +5 -5
  719. package/dist/components/text.js.map +1 -1
  720. package/dist/components/textarea.d.ts +20 -0
  721. package/dist/components/textarea.js +161 -0
  722. package/dist/components/textarea.js.map +1 -0
  723. package/dist/components/tile-radio.d.ts +6 -10
  724. package/dist/components/tile-radio.js +6 -6
  725. package/dist/components/tile-radio.js.map +1 -1
  726. package/dist/components/time-input.d.ts +5 -108
  727. package/dist/components/time-input.js +14 -5
  728. package/dist/components/time-input.js.map +1 -1
  729. package/dist/components/toast-labels.d.ts +2 -0
  730. package/dist/components/toast-labels.js +11 -0
  731. package/dist/components/toast-labels.js.map +1 -0
  732. package/dist/components/toast.d.ts +21 -23
  733. package/dist/components/toast.js +1 -6
  734. package/dist/components/toast.js.map +1 -1
  735. package/dist/components/toggle-group.d.ts +26 -26
  736. package/dist/components/toggle-group.js +43 -19
  737. package/dist/components/toggle-group.js.map +1 -1
  738. package/dist/components/toggle-legend.d.ts +18 -21
  739. package/dist/components/toggle-legend.js +3 -3
  740. package/dist/components/toggle-legend.js.map +1 -1
  741. package/dist/components/tooltip.d.ts +24 -15
  742. package/dist/components/tooltip.js +24 -14
  743. package/dist/components/tooltip.js.map +1 -1
  744. package/dist/components/translation-review-editor.d.ts +8 -10
  745. package/dist/components/translation-review-editor.js +6 -5
  746. package/dist/components/translation-review-editor.js.map +1 -1
  747. package/dist/components/translation-review-labels.d.ts +4 -7
  748. package/dist/components/translation-review-parts.d.ts +19 -28
  749. package/dist/components/translation-review-parts.js +4 -7
  750. package/dist/components/translation-review-parts.js.map +1 -1
  751. package/dist/components/translation-review.d.ts +35 -25
  752. package/dist/components/translation-review.js +24 -13
  753. package/dist/components/translation-review.js.map +1 -1
  754. package/dist/components/tree-view.d.ts +7 -11
  755. package/dist/components/tree-view.js +8 -8
  756. package/dist/components/tree-view.js.map +1 -1
  757. package/dist/components/treemap.d.ts +9 -13
  758. package/dist/components/trigger-aria.d.ts +2 -4
  759. package/dist/components/ui-labels.d.ts +5 -0
  760. package/dist/components/ui-labels.js +20 -0
  761. package/dist/components/ui-labels.js.map +1 -0
  762. package/dist/components/use-anchor-dir.d.ts +3 -6
  763. package/dist/components/use-mobile-reveal.d.ts +2 -6
  764. package/dist/components/use-table-state.d.ts +182 -15
  765. package/dist/components/use-table-state.js +53 -8
  766. package/dist/components/use-table-state.js.map +1 -1
  767. package/dist/components/user-avatar.d.ts +10 -23
  768. package/dist/components/user-avatar.js +1 -1
  769. package/dist/components/user-avatar.js.map +1 -1
  770. package/dist/components/wizard-stepper.d.ts +4 -7
  771. package/dist/components/wizard-stepper.js +3 -3
  772. package/dist/components/wizard-stepper.js.map +1 -1
  773. package/dist/components/write-lock-labels.d.ts +2 -0
  774. package/dist/components/write-lock-labels.js +8 -0
  775. package/dist/components/write-lock-labels.js.map +1 -0
  776. package/dist/components/write-lock.d.ts +16 -18
  777. package/dist/components/write-lock.js +4 -8
  778. package/dist/components/write-lock.js.map +1 -1
  779. package/dist/currencies.d.ts +23 -0
  780. package/dist/currencies.js +38 -0
  781. package/dist/currencies.js.map +1 -0
  782. package/dist/data-table.d.ts +10 -18
  783. package/dist/data-table.js.map +1 -1
  784. package/dist/demo/demo-banner.d.ts +15 -13
  785. package/dist/demo/demo-banner.js +5 -19
  786. package/dist/demo/demo-banner.js.map +1 -1
  787. package/dist/demo/demo-countdown.d.ts +7 -9
  788. package/dist/demo/demo-ended.d.ts +10 -13
  789. package/dist/demo/demo-ended.js +4 -4
  790. package/dist/demo/demo-ended.js.map +1 -1
  791. package/dist/demo/demo-labels.d.ts +4 -5
  792. package/dist/demo/demo-labels.js.map +1 -1
  793. package/dist/demo/demo-session.d.ts +3 -5
  794. package/dist/demo/demo-start.d.ts +8 -11
  795. package/dist/demo/demo-start.js +3 -2
  796. package/dist/demo/demo-start.js.map +1 -1
  797. package/dist/eslint/index.d.ts +83 -0
  798. package/dist/eslint/index.js +69 -0
  799. package/dist/eslint/index.js.map +1 -0
  800. package/dist/eslint/role-utilities.d.ts +48 -0
  801. package/dist/eslint/role-utilities.generated.d.ts +2 -0
  802. package/dist/eslint/role-utilities.generated.js +143 -0
  803. package/dist/eslint/role-utilities.generated.js.map +1 -0
  804. package/dist/eslint/role-utilities.js +43 -0
  805. package/dist/eslint/role-utilities.js.map +1 -0
  806. package/dist/feedback/feedback-attachment-labels.d.ts +16 -0
  807. package/dist/feedback/feedback-attachment-labels.js +17 -0
  808. package/dist/feedback/feedback-attachment-labels.js.map +1 -0
  809. package/dist/feedback/feedback-attachment.d.ts +312 -101
  810. package/dist/feedback/feedback-attachment.js +31 -42
  811. package/dist/feedback/feedback-attachment.js.map +1 -1
  812. package/dist/feedback/feedback-capture.d.ts +2 -4
  813. package/dist/feedback/feedback-context-labels.d.ts +2 -0
  814. package/dist/feedback/feedback-context-labels.js +9 -0
  815. package/dist/feedback/feedback-context-labels.js.map +1 -0
  816. package/dist/feedback/feedback-context.d.ts +110 -101
  817. package/dist/feedback/feedback-context.js +4 -7
  818. package/dist/feedback/feedback-context.js.map +1 -1
  819. package/dist/feedback/feedback-crash.d.ts +8 -110
  820. package/dist/feedback/feedback-dialog-labels.d.ts +12 -0
  821. package/dist/feedback/feedback-dialog-labels.js +17 -0
  822. package/dist/feedback/feedback-dialog-labels.js.map +1 -0
  823. package/dist/feedback/feedback-dialog.d.ts +186 -101
  824. package/dist/feedback/feedback-dialog.js +8 -18
  825. package/dist/feedback/feedback-dialog.js.map +1 -1
  826. package/dist/feedback/feedback-inbox.d.ts +236 -101
  827. package/dist/feedback/feedback-inbox.js +31 -141
  828. package/dist/feedback/feedback-inbox.js.map +1 -1
  829. package/dist/feedback/feedback-labels.d.ts +83 -101
  830. package/dist/feedback/feedback-labels.js.map +1 -1
  831. package/dist/feedback/feedback-menu-labels.d.ts +2 -0
  832. package/dist/feedback/feedback-menu-labels.js +10 -0
  833. package/dist/feedback/feedback-menu-labels.js.map +1 -0
  834. package/dist/feedback/feedback-menu.d.ts +83 -101
  835. package/dist/feedback/feedback-menu.js +3 -7
  836. package/dist/feedback/feedback-menu.js.map +1 -1
  837. package/dist/feedback/feedback-record.d.ts +239 -101
  838. package/dist/feedback/feedback-record.js +7 -2
  839. package/dist/feedback/feedback-record.js.map +1 -1
  840. package/dist/feedback/feedback-row-detail-labels.d.ts +2 -0
  841. package/dist/feedback/feedback-row-detail-labels.js +31 -0
  842. package/dist/feedback/feedback-row-detail-labels.js.map +1 -0
  843. package/dist/feedback/feedback-row-detail.d.ts +315 -101
  844. package/dist/feedback/feedback-row-detail.js +11 -37
  845. package/dist/feedback/feedback-row-detail.js.map +1 -1
  846. package/dist/feedback/feedback-status-undo.d.ts +66 -101
  847. package/dist/feedback/feedback-status-undo.js.map +1 -1
  848. package/dist/feedback/feedback-submit-dialog.d.ts +39 -0
  849. package/dist/feedback/feedback-submit-dialog.js +66 -0
  850. package/dist/feedback/feedback-submit-dialog.js.map +1 -0
  851. package/dist/feedback/feedback-submit.d.ts +13 -109
  852. package/dist/feedback/feedback-submit.js +19 -40
  853. package/dist/feedback/feedback-submit.js.map +1 -1
  854. package/dist/feedback/feedback-swipe.d.ts +9 -110
  855. package/dist/feedback/feedback-swipe.js +1 -1
  856. package/dist/feedback/feedback-swipe.js.map +1 -1
  857. package/dist/feedback/feedback-table-labels.d.ts +2 -0
  858. package/dist/feedback/feedback-table-labels.js +26 -0
  859. package/dist/feedback/feedback-table-labels.js.map +1 -0
  860. package/dist/feedback/feedback-table.d.ts +314 -101
  861. package/dist/feedback/feedback-table.js +11 -31
  862. package/dist/feedback/feedback-table.js.map +1 -1
  863. package/dist/feedback/feedback-thread-labels.d.ts +3 -0
  864. package/dist/feedback/feedback-thread-labels.js +21 -0
  865. package/dist/feedback/feedback-thread-labels.js.map +1 -0
  866. package/dist/feedback/feedback-thread.d.ts +373 -101
  867. package/dist/feedback/feedback-thread.js +26 -35
  868. package/dist/feedback/feedback-thread.js.map +1 -1
  869. package/dist/feedback/feedback-vocabulary.d.ts +98 -0
  870. package/dist/feedback/feedback-vocabulary.js +143 -0
  871. package/dist/feedback/feedback-vocabulary.js.map +1 -0
  872. package/dist/feedback.d.ts +15 -105
  873. package/dist/hooks/use-anchored-panel.d.ts +77 -15
  874. package/dist/hooks/use-anchored-panel.js +34 -1
  875. package/dist/hooks/use-anchored-panel.js.map +1 -1
  876. package/dist/hooks/use-anchored-rect.d.ts +15 -6
  877. package/dist/hooks/use-anchored-rect.js +2 -1
  878. package/dist/hooks/use-anchored-rect.js.map +1 -1
  879. package/dist/hooks/use-announce.d.ts +4 -6
  880. package/dist/hooks/use-authed-src.d.ts +5 -7
  881. package/dist/hooks/use-authed-src.js +3 -7
  882. package/dist/hooks/use-authed-src.js.map +1 -1
  883. package/dist/hooks/use-body-scroll-lock.d.ts +1 -3
  884. package/dist/hooks/use-breakpoint.d.ts +16 -17
  885. package/dist/hooks/use-breakpoint.js.map +1 -1
  886. package/dist/hooks/use-close-transition.d.ts +8 -8
  887. package/dist/hooks/use-close-transition.js +5 -4
  888. package/dist/hooks/use-close-transition.js.map +1 -1
  889. package/dist/hooks/use-copy-to-clipboard.d.ts +5 -7
  890. package/dist/hooks/use-debounce.d.ts +13 -6
  891. package/dist/hooks/use-debounce.js.map +1 -1
  892. package/dist/hooks/use-dismiss.d.ts +50 -11
  893. package/dist/hooks/use-dismiss.js +80 -9
  894. package/dist/hooks/use-dismiss.js.map +1 -1
  895. package/dist/hooks/use-file-drop.d.ts +8 -110
  896. package/dist/hooks/use-file-drop.js +1 -1
  897. package/dist/hooks/use-file-drop.js.map +1 -1
  898. package/dist/hooks/use-file-picker-labels.d.ts +2 -0
  899. package/dist/hooks/use-file-picker-labels.js +25 -0
  900. package/dist/hooks/use-file-picker-labels.js.map +1 -0
  901. package/dist/hooks/use-file-picker.d.ts +164 -0
  902. package/dist/hooks/use-file-picker.js +149 -0
  903. package/dist/hooks/use-file-picker.js.map +1 -0
  904. package/dist/hooks/use-focus-trap.d.ts +2 -4
  905. package/dist/hooks/use-focus-trap.js +2 -1
  906. package/dist/hooks/use-focus-trap.js.map +1 -1
  907. package/dist/hooks/use-hotkey.d.ts +7 -9
  908. package/dist/hooks/use-large-text.d.ts +3 -5
  909. package/dist/hooks/use-media-query.d.ts +1 -3
  910. package/dist/hooks/use-noindex.d.ts +1 -3
  911. package/dist/hooks/use-overlay-history.d.ts +1 -3
  912. package/dist/hooks/use-row-swipe.d.ts +5 -8
  913. package/dist/hooks/use-search-param-state.d.ts +10 -11
  914. package/dist/hooks/use-windowed-rows.d.ts +4 -7
  915. package/dist/i18n/defaults.d.ts +11 -105
  916. package/dist/i18n/defaults.js +82 -82
  917. package/dist/i18n/defaults.js.map +1 -1
  918. package/dist/i18n/german.d.ts +2 -105
  919. package/dist/i18n/german.js +52 -8
  920. package/dist/i18n/german.js.map +1 -1
  921. package/dist/i18n/kit-labels.d.ts +619 -101
  922. package/dist/i18n/kit-labels.js +22 -97
  923. package/dist/i18n/kit-labels.js.map +1 -1
  924. package/dist/i18n/languages.d.ts +197 -101
  925. package/dist/i18n/locales/de-CH.d.ts +3 -106
  926. package/dist/i18n/locales/en.d.ts +4 -105
  927. package/dist/i18n/locales/en.js +1834 -4
  928. package/dist/i18n/locales/en.js.map +7 -1
  929. package/dist/i18n/locales/es.d.ts +3 -106
  930. package/dist/i18n/locales/es.js +52 -8
  931. package/dist/i18n/locales/es.js.map +1 -1
  932. package/dist/i18n/locales/fr.d.ts +3 -106
  933. package/dist/i18n/locales/fr.js +56 -10
  934. package/dist/i18n/locales/fr.js.map +1 -1
  935. package/dist/i18n/locales/hu.d.ts +3 -106
  936. package/dist/i18n/locales/hu.js +52 -8
  937. package/dist/i18n/locales/hu.js.map +1 -1
  938. package/dist/i18n/locales/it.d.ts +3 -106
  939. package/dist/i18n/locales/it.js +56 -10
  940. package/dist/i18n/locales/it.js.map +1 -1
  941. package/dist/i18n/locales/zh.d.ts +3 -106
  942. package/dist/i18n/locales/zh.js +51 -8
  943. package/dist/i18n/locales/zh.js.map +1 -1
  944. package/dist/i18n/plurals.d.ts +3 -5
  945. package/dist/i18n/review.d.ts +5 -107
  946. package/dist/i18n/review.js +4 -0
  947. package/dist/i18n/review.js.map +1 -1
  948. package/dist/i18n/shared-labels.d.ts +17 -0
  949. package/dist/i18n/shared-labels.js +111 -0
  950. package/dist/i18n/shared-labels.js.map +1 -0
  951. package/dist/i18n/swiss.d.ts +1 -3
  952. package/dist/index.d.ts +330 -249
  953. package/dist/index.js +188 -215
  954. package/dist/index.js.map +1 -1
  955. package/dist/landing/access.d.ts +7 -9
  956. package/dist/landing/access.js.map +1 -1
  957. package/dist/landing/landing-actions.d.ts +9 -109
  958. package/dist/landing/landing-actions.js +1 -1
  959. package/dist/landing/landing-actions.js.map +1 -1
  960. package/dist/landing/landing-labels.d.ts +4 -5
  961. package/dist/landing/landing-labels.js.map +1 -1
  962. package/dist/landing/landing-sections.d.ts +21 -121
  963. package/dist/landing/landing-sections.js +15 -15
  964. package/dist/landing/landing-sections.js.map +1 -1
  965. package/dist/landing/page-seo.d.ts +7 -9
  966. package/dist/landing/public-header.d.ts +10 -111
  967. package/dist/landing/public-header.js +1 -1
  968. package/dist/landing/public-header.js.map +1 -1
  969. package/dist/landing/routing.d.ts +16 -120
  970. package/dist/landing/routing.js +2 -6
  971. package/dist/landing/routing.js.map +1 -1
  972. package/dist/lib/calc.d.ts +7 -9
  973. package/dist/lib/chip-edge-snap.d.ts +10 -0
  974. package/dist/lib/chip-edge-snap.js +131 -0
  975. package/dist/lib/chip-edge-snap.js.map +1 -0
  976. package/dist/lib/clipping.d.ts +2 -4
  977. package/dist/lib/cn.d.ts +2 -5
  978. package/dist/lib/cn.js +6 -1
  979. package/dist/lib/cn.js.map +1 -1
  980. package/dist/lib/column-mapping.d.ts +10 -13
  981. package/dist/lib/countries.d.ts +3 -5
  982. package/dist/lib/dates.d.ts +25 -25
  983. package/dist/lib/dates.js.map +1 -1
  984. package/dist/lib/decimal-marks.d.ts +8 -8
  985. package/dist/lib/decimal-marks.js +1 -1
  986. package/dist/lib/decimal-marks.js.map +1 -1
  987. package/dist/lib/direction.d.ts +4 -6
  988. package/dist/lib/document-navigation.d.ts +1 -3
  989. package/dist/lib/download.d.ts +67 -0
  990. package/dist/lib/download.js +89 -0
  991. package/dist/lib/download.js.map +1 -0
  992. package/dist/lib/floating-stack.d.ts +8 -6
  993. package/dist/lib/floating-stack.js.map +1 -1
  994. package/dist/lib/format.d.ts +24 -23
  995. package/dist/lib/format.js +3 -3
  996. package/dist/lib/format.js.map +1 -1
  997. package/dist/lib/iban.d.ts +9 -11
  998. package/dist/lib/ime.d.ts +17 -0
  999. package/dist/lib/ime.js +13 -0
  1000. package/dist/lib/ime.js.map +1 -0
  1001. package/dist/lib/isin.d.ts +3 -5
  1002. package/dist/lib/logger.d.ts +4 -6
  1003. package/dist/lib/person-name.d.ts +3 -5
  1004. package/dist/lib/phone.d.ts +9 -11
  1005. package/dist/lib/presence.d.ts +15 -0
  1006. package/dist/lib/presence.js +8 -0
  1007. package/dist/lib/presence.js.map +1 -0
  1008. package/dist/lib/qr-encode.d.ts +4 -6
  1009. package/dist/lib/reduced-motion.d.ts +18 -0
  1010. package/dist/lib/reduced-motion.js +9 -0
  1011. package/dist/lib/reduced-motion.js.map +1 -0
  1012. package/dist/lib/refs.d.ts +13 -0
  1013. package/dist/lib/refs.js +15 -0
  1014. package/dist/lib/refs.js.map +1 -0
  1015. package/dist/lib/round.d.ts +22 -0
  1016. package/dist/lib/round.js +15 -0
  1017. package/dist/lib/round.js.map +1 -0
  1018. package/dist/lib/safe-storage.d.ts +14 -4
  1019. package/dist/lib/safe-storage.js +24 -9
  1020. package/dist/lib/safe-storage.js.map +1 -1
  1021. package/dist/lib/server-wake.d.ts +13 -14
  1022. package/dist/lib/session-refresh.d.ts +200 -0
  1023. package/dist/lib/session-refresh.js +187 -0
  1024. package/dist/lib/session-refresh.js.map +1 -0
  1025. package/dist/lib/strip-fade.d.ts +10 -13
  1026. package/dist/lib/table-text.d.ts +14 -16
  1027. package/dist/lib/text-match.d.ts +41 -0
  1028. package/dist/lib/text-match.js +23 -0
  1029. package/dist/lib/text-match.js.map +1 -0
  1030. package/dist/lib/translation-review.d.ts +44 -45
  1031. package/dist/lib/translation-review.js +3 -2
  1032. package/dist/lib/translation-review.js.map +1 -1
  1033. package/dist/rhf/fields.d.ts +131 -197
  1034. package/dist/rhf/fields.js +46 -54
  1035. package/dist/rhf/fields.js.map +1 -1
  1036. package/dist/rhf/form-core.d.ts +154 -0
  1037. package/dist/rhf/form-core.js +143 -0
  1038. package/dist/rhf/form-core.js.map +1 -0
  1039. package/dist/rhf/form.d.ts +9 -175
  1040. package/dist/rhf/form.js +2 -139
  1041. package/dist/rhf/form.js.map +1 -1
  1042. package/dist/rhf/line-items.d.ts +40 -11
  1043. package/dist/rhf/line-items.js.map +1 -1
  1044. package/dist/rhf/use-rhf-wizard-step.d.ts +3 -6
  1045. package/dist/rhf/use-rhf-wizard-step.js.map +1 -1
  1046. package/dist/rhf.d.ts +4 -118
  1047. package/dist/rhf.js.map +1 -1
  1048. package/dist/search/command-palette-labels.d.ts +2 -0
  1049. package/dist/search/command-palette-labels.js +15 -0
  1050. package/dist/search/command-palette-labels.js.map +1 -0
  1051. package/dist/search/command-palette.d.ts +10 -13
  1052. package/dist/search/command-palette.js +25 -44
  1053. package/dist/search/command-palette.js.map +1 -1
  1054. package/dist/search/global-search-labels.d.ts +2 -0
  1055. package/dist/search/global-search-labels.js +12 -0
  1056. package/dist/search/global-search-labels.js.map +1 -0
  1057. package/dist/search/global-search.d.ts +17 -16
  1058. package/dist/search/global-search.js +12 -12
  1059. package/dist/search/global-search.js.map +1 -1
  1060. package/dist/search/search-index.d.ts +13 -14
  1061. package/dist/search/search-index.js +2 -1
  1062. package/dist/search/search-index.js.map +1 -1
  1063. package/dist/search/use-command-key.d.ts +9 -0
  1064. package/dist/search/use-command-key.js +18 -0
  1065. package/dist/search/use-command-key.js.map +1 -0
  1066. package/dist/search.d.ts +3 -4
  1067. package/dist/settings/settings-card-classes.d.ts +11 -0
  1068. package/dist/settings/settings-card-classes.js +8 -0
  1069. package/dist/settings/settings-card-classes.js.map +1 -0
  1070. package/dist/settings/settings-catalogue.d.ts +11 -14
  1071. package/dist/settings/settings-context.d.ts +4 -8
  1072. package/dist/settings/settings-heading.d.ts +8 -12
  1073. package/dist/settings/settings-heading.js +1 -1
  1074. package/dist/settings/settings-heading.js.map +1 -1
  1075. package/dist/settings/settings-labels.d.ts +6 -7
  1076. package/dist/settings/settings-labels.js.map +1 -1
  1077. package/dist/settings/settings-layout.d.ts +36 -13
  1078. package/dist/settings/settings-layout.js +25 -4
  1079. package/dist/settings/settings-layout.js.map +1 -1
  1080. package/dist/settings/settings-section.d.ts +4 -107
  1081. package/dist/settings/settings-section.js +2 -2
  1082. package/dist/settings/settings-section.js.map +1 -1
  1083. package/dist/settings/use-account-appearance.d.ts +11 -16
  1084. package/dist/settings/use-account-language.d.ts +8 -10
  1085. package/dist/settings/use-settings-focus.d.ts +3 -5
  1086. package/dist/settings/use-settings-focus.js +2 -4
  1087. package/dist/settings/use-settings-focus.js.map +1 -1
  1088. package/dist/settings/use-settings-route.d.ts +11 -16
  1089. package/dist/shell/app-shell-labels.d.ts +2 -0
  1090. package/dist/shell/app-shell-labels.js +9 -0
  1091. package/dist/shell/app-shell-labels.js.map +1 -0
  1092. package/dist/shell/app-shell.d.ts +216 -101
  1093. package/dist/shell/app-shell.js +51 -35
  1094. package/dist/shell/app-shell.js.map +1 -1
  1095. package/dist/shell/auth-layout.d.ts +6 -9
  1096. package/dist/shell/auth-layout.js +6 -6
  1097. package/dist/shell/auth-layout.js.map +1 -1
  1098. package/dist/shell/company-switcher-labels.d.ts +2 -0
  1099. package/dist/shell/company-switcher-labels.js +12 -0
  1100. package/dist/shell/company-switcher-labels.js.map +1 -0
  1101. package/dist/shell/company-switcher.d.ts +9 -11
  1102. package/dist/shell/company-switcher.js +3 -9
  1103. package/dist/shell/company-switcher.js.map +1 -1
  1104. package/dist/shell/option-switcher-menu.d.ts +7 -9
  1105. package/dist/shell/option-switcher-menu.js +4 -4
  1106. package/dist/shell/option-switcher-menu.js.map +1 -1
  1107. package/dist/shell/role-switcher.d.ts +3 -7
  1108. package/dist/shell/role-switcher.js +3 -3
  1109. package/dist/shell/role-switcher.js.map +1 -1
  1110. package/dist/shell/top-bar-brand.d.ts +4 -107
  1111. package/dist/shell/top-bar-brand.js +1 -1
  1112. package/dist/shell/top-bar-brand.js.map +1 -1
  1113. package/dist/shell/top-bar.d.ts +6 -9
  1114. package/dist/shell/top-bar.js +1 -1
  1115. package/dist/shell/top-bar.js.map +1 -1
  1116. package/dist/shell/topbar-action-menu.d.ts +18 -31
  1117. package/dist/shell/topbar-action-menu.js +10 -10
  1118. package/dist/shell/topbar-action-menu.js.map +1 -1
  1119. package/dist/shell/topbar-controls.d.ts +14 -21
  1120. package/dist/shell/topbar-controls.js +11 -11
  1121. package/dist/shell/topbar-controls.js.map +1 -1
  1122. package/dist/shell.d.ts +25 -116
  1123. package/dist/shell.js.map +1 -1
  1124. package/dist/table-text.d.ts +1 -1
  1125. package/dist/testing/css-variables.d.ts +4 -6
  1126. package/dist/testing/css-variables.generated.d.ts +2 -4
  1127. package/dist/testing/index.d.ts +2 -1
  1128. package/dist/testing/index.js +11 -1
  1129. package/dist/testing/index.js.map +1 -1
  1130. package/dist/testing/viewport.d.ts +116 -0
  1131. package/dist/testing/viewport.js +203 -0
  1132. package/dist/testing/viewport.js.map +1 -0
  1133. package/dist/theme/chart-palette.d.ts +7 -9
  1134. package/dist/theme/color.d.ts +14 -16
  1135. package/dist/theme/color.js +2 -1
  1136. package/dist/theme/color.js.map +1 -1
  1137. package/dist/theme/contrast-tokens.d.ts +13 -17
  1138. package/dist/theme/contrast.d.ts +22 -27
  1139. package/dist/theme/palette-derive.d.ts +16 -22
  1140. package/dist/theme/palette-derive.js +15 -7
  1141. package/dist/theme/palette-derive.js.map +1 -1
  1142. package/dist/theme/palette-presets.d.ts +18 -15
  1143. package/dist/theme/palette-presets.js +66 -345
  1144. package/dist/theme/palette-presets.js.map +1 -1
  1145. package/dist/theme/palette-store.d.ts +10 -13
  1146. package/dist/theme/text-size.d.ts +21 -26
  1147. package/dist/theme/theme-store.d.ts +9 -14
  1148. package/dist/tour/tour-labels.d.ts +2 -0
  1149. package/dist/tour/tour-labels.js +13 -0
  1150. package/dist/tour/tour-labels.js.map +1 -0
  1151. package/dist/tour/tour.d.ts +12 -14
  1152. package/dist/tour/tour.js +9 -20
  1153. package/dist/tour/tour.js.map +1 -1
  1154. package/dist/tour.d.ts +1 -2
  1155. package/dist/wizard/stepper-nav.d.ts +8 -108
  1156. package/dist/wizard/stepper-nav.js +15 -14
  1157. package/dist/wizard/stepper-nav.js.map +1 -1
  1158. package/dist/wizard/types.d.ts +13 -18
  1159. package/dist/wizard/types.js +2 -24
  1160. package/dist/wizard/types.js.map +1 -1
  1161. package/dist/wizard/use-wizard.d.ts +2 -6
  1162. package/dist/wizard/validation.d.ts +3 -7
  1163. package/dist/wizard/wizard-context.d.ts +7 -11
  1164. package/dist/wizard/wizard-labels.d.ts +4 -0
  1165. package/dist/wizard/wizard-labels.js +24 -0
  1166. package/dist/wizard/wizard-labels.js.map +1 -0
  1167. package/dist/wizard/wizard-step.d.ts +3 -7
  1168. package/dist/wizard/wizard-step.js +2 -2
  1169. package/dist/wizard/wizard-step.js.map +1 -1
  1170. package/dist/wizard/wizard-summary.d.ts +5 -8
  1171. package/dist/wizard/wizard-summary.js +6 -5
  1172. package/dist/wizard/wizard-summary.js.map +1 -1
  1173. package/dist/wizard.d.ts +7 -107
  1174. package/package.json +17 -6
  1175. package/src/account/account-parts.ts +3 -3
  1176. package/src/{components → account}/account-settings-labels.ts +11 -1
  1177. package/src/{components → account}/account-settings.tsx +145 -34
  1178. package/src/account/data-export-setting-labels.ts +20 -0
  1179. package/src/account/data-export-setting.tsx +19 -38
  1180. package/src/account/delete-account-setting-labels.ts +33 -0
  1181. package/src/account/delete-account-setting.tsx +13 -35
  1182. package/src/account/email-change-setting-labels.ts +32 -0
  1183. package/src/account/email-change-setting.tsx +17 -36
  1184. package/src/{components → account}/passkeys-setting.tsx +14 -9
  1185. package/src/account/sessions-setting-labels.ts +24 -0
  1186. package/src/account/sessions-setting.tsx +14 -28
  1187. package/src/admin/admin-action-confirm-labels.ts +19 -0
  1188. package/src/admin/admin-action-confirm.tsx +59 -38
  1189. package/src/admin/admin-action-log-labels.ts +74 -0
  1190. package/src/admin/admin-action-log.tsx +180 -54
  1191. package/src/admin/admin-parts.ts +0 -7
  1192. package/src/admin/invitations-panel-labels.ts +31 -0
  1193. package/src/admin/invitations-panel.tsx +16 -34
  1194. package/src/admin/plan-change-labels.ts +23 -0
  1195. package/src/admin/plan-change.tsx +58 -34
  1196. package/src/admin/reviewer-scope-editor-labels.ts +16 -0
  1197. package/src/admin/reviewer-scope-editor.tsx +9 -15
  1198. package/src/admin/role-select-labels.ts +16 -0
  1199. package/src/admin/role-select.tsx +13 -23
  1200. package/src/admin/transfer-ownership-dialog-labels.ts +20 -0
  1201. package/src/admin/transfer-ownership-dialog.tsx +7 -17
  1202. package/src/admin/user-roster-labels.ts +17 -0
  1203. package/src/admin/user-roster.tsx +9 -17
  1204. package/src/auth/accept-invitation-labels.ts +21 -0
  1205. package/src/auth/accept-invitation.tsx +9 -20
  1206. package/src/auth/auth-errors.ts +29 -13
  1207. package/src/auth/complete-name-dialog-labels.ts +16 -0
  1208. package/src/auth/complete-name-dialog.tsx +8 -13
  1209. package/src/auth/forgot-password-form-labels.ts +20 -0
  1210. package/src/auth/forgot-password-form.tsx +12 -20
  1211. package/src/auth/new-password-fields.tsx +1 -1
  1212. package/src/auth/not-found-page-labels.ts +12 -0
  1213. package/src/auth/not-found-page.tsx +11 -14
  1214. package/src/auth/register-form-labels.ts +31 -0
  1215. package/src/auth/register-form.tsx +18 -38
  1216. package/src/auth/reset-password-form-labels.ts +27 -0
  1217. package/src/auth/reset-password-form.tsx +12 -27
  1218. package/src/auth/sign-in-form-labels.ts +44 -0
  1219. package/src/auth/sign-in-form.tsx +18 -51
  1220. package/src/auth/status-parts.tsx +3 -3
  1221. package/src/auth/verify-email-labels.ts +26 -0
  1222. package/src/auth/verify-email.tsx +15 -30
  1223. package/src/billing/billing-banner.tsx +7 -3
  1224. package/src/billing/billing-labels.ts +1 -1
  1225. package/src/billing/checkout-processing.ts +2 -12
  1226. package/src/billing/plan-card.tsx +26 -27
  1227. package/src/billing/plan-limit-notice.tsx +6 -3
  1228. package/src/billing/subscription-actions.tsx +4 -4
  1229. package/src/chart.ts +9 -1
  1230. package/src/components/account-chips-labels.ts +16 -0
  1231. package/src/components/account-chips.tsx +13 -16
  1232. package/src/components/alert-banner.tsx +39 -19
  1233. package/src/components/amount-input.tsx +458 -406
  1234. package/src/components/appearance-labels.ts +2 -2
  1235. package/src/components/authed-image-labels.ts +11 -0
  1236. package/src/components/authed-image.tsx +6 -8
  1237. package/src/components/autocomplete.tsx +79 -78
  1238. package/src/components/breadcrumbs-labels.ts +10 -0
  1239. package/src/components/breadcrumbs.tsx +17 -14
  1240. package/src/components/bulk-action-bar-labels.ts +11 -0
  1241. package/src/components/bulk-action-bar.tsx +15 -16
  1242. package/src/components/button-group.tsx +7 -7
  1243. package/src/components/button-look.ts +230 -0
  1244. package/src/components/button.tsx +339 -0
  1245. package/src/components/calculator.tsx +14 -12
  1246. package/src/components/calendar-heatmap-labels.ts +15 -0
  1247. package/src/components/calendar-heatmap.tsx +13 -19
  1248. package/src/components/card.tsx +381 -0
  1249. package/src/components/chart-zoom-core.tsx +653 -0
  1250. package/src/components/chart-zoom.tsx +21 -648
  1251. package/src/components/chart.tsx +11 -11
  1252. package/src/components/checkbox-group.tsx +13 -10
  1253. package/src/components/checkbox.tsx +43 -42
  1254. package/src/components/chip-input.tsx +370 -0
  1255. package/src/components/chip-labels.ts +13 -0
  1256. package/src/components/chip.tsx +115 -711
  1257. package/src/components/choice-card.tsx +83 -85
  1258. package/src/components/column-mapper-labels.ts +45 -0
  1259. package/src/components/column-mapper.tsx +16 -51
  1260. package/src/components/combobox-core.tsx +346 -194
  1261. package/src/components/combobox-suggestions.tsx +129 -0
  1262. package/src/components/combobox.tsx +70 -896
  1263. package/src/components/confirm-dialog-labels.ts +13 -0
  1264. package/src/components/confirm-dialog.tsx +4 -8
  1265. package/src/components/copy-button-labels.ts +13 -0
  1266. package/src/components/copy-button.tsx +15 -13
  1267. package/src/components/country-select-labels.ts +11 -0
  1268. package/src/components/country-select.tsx +74 -89
  1269. package/src/components/currency-option-list.tsx +182 -0
  1270. package/src/components/currency-select.tsx +85 -196
  1271. package/src/components/danger-confirm-labels.ts +20 -0
  1272. package/src/components/danger-confirm.tsx +72 -80
  1273. package/src/components/data-table-cells.tsx +5 -5
  1274. package/src/components/data-table-column-settings.tsx +137 -0
  1275. package/src/components/data-table-filter-popover.tsx +51 -25
  1276. package/src/components/data-table-filters.ts +48 -11
  1277. package/src/components/data-table-head.tsx +258 -0
  1278. package/src/components/data-table-labels.ts +21 -71
  1279. package/src/components/data-table-mobile.tsx +594 -0
  1280. package/src/components/data-table-pagination.tsx +11 -10
  1281. package/src/components/data-table-resize.ts +187 -0
  1282. package/src/components/data-table-row-actions.tsx +152 -0
  1283. package/src/components/data-table-selection.ts +55 -0
  1284. package/src/components/data-table-shared.tsx +225 -0
  1285. package/src/components/data-table.tsx +205 -1315
  1286. package/src/components/date-field.tsx +627 -0
  1287. package/src/components/date-picker.tsx +58 -1446
  1288. package/src/components/date-range-picker.tsx +490 -0
  1289. package/src/components/description-list-labels.ts +9 -0
  1290. package/src/components/description-list.tsx +31 -15
  1291. package/src/components/dialog-frame-labels.ts +7 -0
  1292. package/src/components/dialog-frame.tsx +11 -7
  1293. package/src/components/disclosure.tsx +14 -14
  1294. package/src/components/dropdown.tsx +129 -43
  1295. package/src/components/empty-state.tsx +137 -0
  1296. package/src/components/entity-combobox.tsx +18 -13
  1297. package/src/components/error-boundary-labels.ts +20 -0
  1298. package/src/components/error-boundary.tsx +10 -20
  1299. package/src/components/facing-pair.ts +1 -1
  1300. package/src/components/field-base.tsx +604 -0
  1301. package/src/components/field-parts.tsx +192 -77
  1302. package/src/components/field-strip.tsx +12 -33
  1303. package/src/components/field-sync-labels.ts +13 -0
  1304. package/src/components/field-sync.tsx +8 -16
  1305. package/src/components/field.tsx +17 -15
  1306. package/src/components/file-button.tsx +64 -412
  1307. package/src/components/file-dropzone.tsx +36 -33
  1308. package/src/components/floating-panel-labels.ts +10 -0
  1309. package/src/components/floating-panel.tsx +32 -21
  1310. package/src/components/focus-ring.ts +9 -4
  1311. package/src/components/form-actions-labels.ts +11 -0
  1312. package/src/components/form-actions.tsx +17 -21
  1313. package/src/components/full-bleed-dialog.tsx +28 -25
  1314. package/src/components/grouped-picker.tsx +118 -96
  1315. package/src/components/help-popover.tsx +115 -0
  1316. package/src/components/hover-menu.tsx +45 -38
  1317. package/src/components/iban-input-labels.ts +15 -0
  1318. package/src/components/iban-input.tsx +25 -20
  1319. package/src/components/icon-button.tsx +945 -0
  1320. package/src/components/icon-picker-labels.ts +13 -0
  1321. package/src/components/icon-picker.tsx +27 -24
  1322. package/src/components/image-grid-labels.ts +11 -0
  1323. package/src/components/image-grid.tsx +13 -15
  1324. package/src/components/inline-edit-field-labels.ts +11 -0
  1325. package/src/components/inline-edit-field.tsx +20 -19
  1326. package/src/components/inline-entity-combobox.tsx +789 -0
  1327. package/src/components/input.tsx +380 -0
  1328. package/src/components/jump-calendar.tsx +385 -0
  1329. package/src/components/language-select.tsx +31 -16
  1330. package/src/components/legal-labels.ts +99 -0
  1331. package/src/components/legal-page.tsx +2 -2
  1332. package/src/components/legal.tsx +11 -101
  1333. package/src/components/lightbox-labels.ts +18 -0
  1334. package/src/components/lightbox.tsx +13 -21
  1335. package/src/components/line-items-labels.ts +14 -0
  1336. package/src/components/line-items.tsx +24 -31
  1337. package/src/components/list-labels.ts +10 -0
  1338. package/src/components/list.tsx +98 -75
  1339. package/src/components/loading-state.tsx +4 -4
  1340. package/src/components/measured-grid-labels.ts +25 -0
  1341. package/src/components/measured-grid.tsx +39 -62
  1342. package/src/components/menu-item.tsx +29 -26
  1343. package/src/components/mini-calendar-labels.ts +17 -0
  1344. package/src/components/mini-calendar.tsx +38 -45
  1345. package/src/components/modal.tsx +49 -20
  1346. package/src/components/money-draft.ts +72 -0
  1347. package/src/components/money-field.tsx +16 -30
  1348. package/src/components/month-picker-labels.ts +22 -0
  1349. package/src/components/month-picker.tsx +59 -45
  1350. package/src/components/multi-entity-combobox.tsx +17 -12
  1351. package/src/components/multi-select.tsx +300 -292
  1352. package/src/components/nav-pills.tsx +19 -8
  1353. package/src/components/number-field.tsx +7 -5
  1354. package/src/components/number-input.tsx +69 -99
  1355. package/src/components/numeric-field.ts +161 -0
  1356. package/src/components/numpad-sheet.tsx +16 -16
  1357. package/src/components/one-time-code-input.tsx +154 -169
  1358. package/src/components/page-contents-labels.ts +9 -0
  1359. package/src/components/page-contents.tsx +15 -15
  1360. package/src/components/page-header.tsx +9 -5
  1361. package/src/components/password-strength-labels.ts +23 -0
  1362. package/src/components/password-strength.tsx +13 -27
  1363. package/src/components/phone-input-labels.ts +10 -0
  1364. package/src/components/phone-input.tsx +42 -57
  1365. package/src/components/picker-sheet.tsx +47 -18
  1366. package/src/components/pie-chart.tsx +11 -9
  1367. package/src/components/popover-labels.ts +14 -0
  1368. package/src/components/popover.tsx +36 -37
  1369. package/src/components/progress-bar-labels.ts +10 -0
  1370. package/src/components/progress-bar.tsx +32 -23
  1371. package/src/components/qr-code.tsx +2 -2
  1372. package/src/components/reauth-dialog-labels.ts +13 -0
  1373. package/src/components/reauth-dialog.tsx +7 -10
  1374. package/src/components/row-actions-labels.ts +10 -0
  1375. package/src/components/row-actions.tsx +11 -10
  1376. package/src/components/scroll-area.tsx +4 -10
  1377. package/src/components/search-field.tsx +35 -49
  1378. package/src/components/select.tsx +302 -0
  1379. package/src/components/separator.tsx +2 -2
  1380. package/src/components/series-chart-axes.ts +329 -0
  1381. package/src/components/series-chart-thin.ts +180 -0
  1382. package/src/components/series-chart.tsx +125 -326
  1383. package/src/components/server-wake-labels.ts +11 -0
  1384. package/src/components/server-wake.tsx +39 -66
  1385. package/src/components/settings-fields.tsx +50 -19
  1386. package/src/components/share-card-labels.ts +30 -0
  1387. package/src/components/share-card.tsx +22 -37
  1388. package/src/components/sign-chip-labels.ts +12 -0
  1389. package/src/components/sign-chip.tsx +6 -9
  1390. package/src/components/signature-pad-labels.ts +24 -0
  1391. package/src/components/signature-pad.tsx +48 -57
  1392. package/src/components/signed-amount-labels.ts +10 -0
  1393. package/src/components/signed-amount.tsx +21 -22
  1394. package/src/components/skeleton.tsx +1 -1
  1395. package/src/components/slider.tsx +51 -39
  1396. package/src/components/sparkline-labels.ts +14 -0
  1397. package/src/components/sparkline.tsx +16 -21
  1398. package/src/components/spinner.tsx +81 -0
  1399. package/src/components/stat-tile-labels.ts +15 -0
  1400. package/src/components/stat-tile.tsx +39 -38
  1401. package/src/components/status-dot.tsx +17 -14
  1402. package/src/components/swatch-picker-labels.ts +10 -0
  1403. package/src/components/swatch-picker.tsx +23 -16
  1404. package/src/components/swipeable-row.tsx +17 -39
  1405. package/src/components/switch.tsx +33 -32
  1406. package/src/components/table.tsx +15 -15
  1407. package/src/components/tabs.tsx +660 -0
  1408. package/src/components/text-link.tsx +7 -7
  1409. package/src/components/text.tsx +10 -6
  1410. package/src/components/textarea.tsx +323 -0
  1411. package/src/components/tile-radio.tsx +6 -6
  1412. package/src/components/time-input.tsx +15 -7
  1413. package/src/components/toast-labels.ts +12 -0
  1414. package/src/components/toast.tsx +5 -8
  1415. package/src/components/toggle-group.tsx +105 -42
  1416. package/src/components/toggle-legend.tsx +6 -6
  1417. package/src/components/tooltip.tsx +47 -27
  1418. package/src/components/translation-review-editor.tsx +8 -7
  1419. package/src/components/translation-review-parts.tsx +9 -13
  1420. package/src/components/translation-review.tsx +50 -20
  1421. package/src/components/tree-view.tsx +14 -12
  1422. package/src/components/ui-labels.ts +22 -0
  1423. package/src/components/use-table-state.ts +91 -10
  1424. package/src/components/user-avatar.tsx +5 -5
  1425. package/src/components/wizard-stepper.tsx +7 -6
  1426. package/src/components/write-lock-labels.ts +9 -0
  1427. package/src/components/write-lock.tsx +10 -12
  1428. package/src/currencies.ts +70 -0
  1429. package/src/data-table.ts +4 -0
  1430. package/src/demo/demo-banner.tsx +16 -27
  1431. package/src/demo/demo-ended.tsx +8 -7
  1432. package/src/demo/demo-labels.ts +2 -2
  1433. package/src/demo/demo-start.tsx +7 -5
  1434. package/src/eslint/index.ts +161 -0
  1435. package/src/eslint/role-utilities.generated.ts +146 -0
  1436. package/src/eslint/role-utilities.ts +99 -0
  1437. package/src/feedback/feedback-attachment-labels.ts +36 -0
  1438. package/src/feedback/feedback-attachment.tsx +42 -66
  1439. package/src/feedback/feedback-context-labels.ts +10 -0
  1440. package/src/feedback/feedback-context.tsx +8 -9
  1441. package/src/feedback/feedback-dialog-labels.ts +28 -0
  1442. package/src/feedback/feedback-dialog.tsx +14 -44
  1443. package/src/feedback/feedback-inbox.tsx +49 -252
  1444. package/src/feedback/feedback-labels.ts +5 -5
  1445. package/src/feedback/feedback-menu-labels.ts +11 -0
  1446. package/src/feedback/feedback-menu.tsx +13 -11
  1447. package/src/feedback/feedback-record.ts +21 -7
  1448. package/src/feedback/feedback-row-detail-labels.ts +33 -0
  1449. package/src/feedback/feedback-row-detail.tsx +30 -43
  1450. package/src/feedback/feedback-status-undo.ts +3 -2
  1451. package/src/feedback/feedback-submit-dialog.tsx +109 -0
  1452. package/src/feedback/feedback-submit.tsx +45 -55
  1453. package/src/feedback/feedback-swipe.tsx +1 -1
  1454. package/src/feedback/feedback-table-labels.ts +27 -0
  1455. package/src/feedback/feedback-table.tsx +24 -40
  1456. package/src/feedback/feedback-thread-labels.ts +22 -0
  1457. package/src/feedback/feedback-thread.tsx +46 -50
  1458. package/src/feedback/feedback-vocabulary.ts +252 -0
  1459. package/src/hooks/use-anchored-panel.ts +102 -2
  1460. package/src/hooks/use-anchored-rect.ts +11 -9
  1461. package/src/hooks/use-authed-src.ts +13 -7
  1462. package/src/hooks/use-breakpoint.ts +5 -4
  1463. package/src/hooks/use-close-transition.ts +9 -10
  1464. package/src/hooks/use-debounce.ts +9 -0
  1465. package/src/hooks/use-dismiss.ts +210 -18
  1466. package/src/hooks/use-file-drop.ts +2 -2
  1467. package/src/hooks/use-file-picker-labels.ts +29 -0
  1468. package/src/hooks/use-file-picker.tsx +363 -0
  1469. package/src/hooks/use-focus-trap.ts +19 -6
  1470. package/src/i18n/defaults.ts +91 -82
  1471. package/src/i18n/german.ts +50 -6
  1472. package/src/i18n/kit-labels.tsx +85 -124
  1473. package/src/i18n/locales/en.ts +46 -0
  1474. package/src/i18n/locales/es.ts +50 -6
  1475. package/src/i18n/locales/fr.ts +55 -9
  1476. package/src/i18n/locales/hu.ts +50 -6
  1477. package/src/i18n/locales/it.ts +54 -8
  1478. package/src/i18n/locales/zh.ts +49 -6
  1479. package/src/i18n/review.ts +4 -0
  1480. package/src/i18n/shared-labels.ts +135 -0
  1481. package/src/index.ts +414 -404
  1482. package/src/landing/access.ts +2 -1
  1483. package/src/landing/landing-actions.tsx +6 -5
  1484. package/src/landing/landing-labels.ts +2 -2
  1485. package/src/landing/landing-sections.tsx +24 -23
  1486. package/src/landing/public-header.tsx +3 -2
  1487. package/src/landing/routing.tsx +2 -7
  1488. package/src/lib/chip-edge-snap.ts +212 -0
  1489. package/src/lib/cn.ts +13 -1
  1490. package/src/lib/dates.ts +4 -2
  1491. package/src/lib/decimal-marks.ts +4 -2
  1492. package/src/lib/download.ts +172 -0
  1493. package/src/lib/floating-stack.ts +5 -1
  1494. package/src/lib/format.ts +5 -3
  1495. package/src/lib/ime.ts +24 -0
  1496. package/src/lib/presence.ts +18 -0
  1497. package/src/lib/reduced-motion.ts +21 -0
  1498. package/src/lib/refs.ts +22 -0
  1499. package/src/lib/round.ts +38 -0
  1500. package/src/lib/safe-storage.ts +35 -11
  1501. package/src/lib/session-refresh.ts +473 -0
  1502. package/src/lib/text-match.ts +60 -0
  1503. package/src/lib/translation-review.ts +7 -6
  1504. package/src/rhf/fields.tsx +141 -189
  1505. package/src/rhf/form-core.tsx +328 -0
  1506. package/src/rhf/form.tsx +9 -320
  1507. package/src/rhf/line-items.tsx +2 -2
  1508. package/src/rhf/use-rhf-wizard-step.ts +4 -4
  1509. package/src/rhf.ts +4 -2
  1510. package/src/search/command-palette-labels.ts +16 -0
  1511. package/src/search/command-palette.tsx +37 -50
  1512. package/src/search/global-search-labels.ts +13 -0
  1513. package/src/search/global-search.tsx +50 -24
  1514. package/src/search/search-index.ts +5 -6
  1515. package/src/search/use-command-key.ts +22 -0
  1516. package/src/settings/settings-card-classes.ts +11 -0
  1517. package/src/settings/settings-heading.tsx +1 -1
  1518. package/src/settings/settings-labels.ts +2 -2
  1519. package/src/settings/settings-layout.tsx +65 -6
  1520. package/src/settings/settings-section.tsx +5 -5
  1521. package/src/settings/use-settings-focus.ts +2 -5
  1522. package/src/shell/app-shell-labels.ts +10 -0
  1523. package/src/shell/app-shell.tsx +79 -53
  1524. package/src/shell/auth-layout.tsx +11 -10
  1525. package/src/shell/company-switcher-labels.ts +13 -0
  1526. package/src/shell/company-switcher.tsx +7 -11
  1527. package/src/shell/option-switcher-menu.tsx +7 -5
  1528. package/src/shell/role-switcher.tsx +4 -4
  1529. package/src/shell/top-bar-brand.tsx +1 -1
  1530. package/src/shell/top-bar.tsx +6 -5
  1531. package/src/shell/topbar-action-menu.tsx +21 -19
  1532. package/src/shell/topbar-controls.tsx +15 -15
  1533. package/src/shell.ts +1 -1
  1534. package/src/testing/index.ts +13 -0
  1535. package/src/testing/viewport.ts +357 -0
  1536. package/src/theme/color.ts +7 -1
  1537. package/src/theme/palette-derive.ts +29 -7
  1538. package/src/theme/palette-presets.ts +82 -355
  1539. package/src/tour/tour-labels.ts +14 -0
  1540. package/src/tour/tour.tsx +13 -23
  1541. package/src/wizard/stepper-nav.tsx +19 -18
  1542. package/src/wizard/types.ts +3 -26
  1543. package/src/wizard/wizard-labels.ts +29 -0
  1544. package/src/wizard/wizard-step.tsx +2 -2
  1545. package/src/wizard/wizard-summary.tsx +8 -7
  1546. package/tokens.css +45 -14
  1547. package/dist/components/account-settings-labels.js.map +0 -1
  1548. package/dist/components/account-settings.js.map +0 -1
  1549. package/dist/components/choice-parts.d.ts +0 -24
  1550. package/dist/components/choice-parts.js +0 -18
  1551. package/dist/components/choice-parts.js.map +0 -1
  1552. package/dist/components/passkeys-setting.js.map +0 -1
  1553. package/dist/components/ui.d.ts +0 -101
  1554. package/dist/components/ui.js +0 -1955
  1555. package/dist/components/ui.js.map +0 -1
  1556. package/dist/data-table-labels-BJ5JE_X2.d.ts +0 -923
  1557. package/dist/delete-account-setting-DAgGBrbn.d.ts +0 -8167
  1558. package/src/components/choice-parts.ts +0 -33
  1559. package/src/components/ui.tsx +0 -4233
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/translation-review-editor.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport type { ReactNode } from \"react\";\n\nimport { useKitLabels } from \"../i18n/kit-labels\";\nimport { cn } from \"../lib/cn\";\nimport { useKitFormat } from \"../lib/format\";\nimport { placeholderTokens, reviewWrite } from \"../lib/translation-review\";\nimport type {\n TranslationReviewKey,\n TranslationReviewWrite,\n TranslationRow,\n TranslationVerdict,\n} from \"../lib/translation-review\";\nimport { AlertBanner } from \"./alert-banner\";\nimport { Caption, SectionLabel } from \"./text\";\nimport { DEFAULT_TRANSLATION_REVIEW_LABELS } from \"./translation-review-labels\";\nimport type { TranslationReviewLabels } from \"./translation-review-labels\";\nimport { Button, Textarea } from \"./ui\";\nimport { COMMIT_EXCEPT_BILLING } from \"./write-lock\";\n\n/** A callback may return a promise: resolve and the editor closes, reject and it stays\n * open with the error. */\ntype MaybePromise = void | Promise<unknown>;\n\nexport interface TranslationReviewEditorProps {\n row: TranslationRow;\n /** The reference language's own name (\"English\", \"Deutsch\") — the app's choice of\n * reference, so the app's word for it. */\n referenceLabel: ReactNode;\n /** The reviewed language's own name (\"Français\"). */\n localeLabel: ReactNode;\n /** Store a verdict. Left out (or `readOnly`): the editor shows the row and its last\n * verdict, with no fields and no actions. */\n onSave?: (write: TranslationReviewWrite) => MaybePromise;\n /** Clear the verdict — back to unreviewed. Left out: no reset button. */\n onClear?: (key: TranslationReviewKey) => MaybePromise;\n /** The Cancel button — and called after a save or a reset resolves, so the panel\n * that opened the editor closes it. */\n onClose?: () => void;\n /** Look, do not touch: a locale the viewer may read but not review. */\n readOnly?: boolean;\n /**\n * 0.25: put the cursor in the wording field when the editor opens, at the end of the\n * text. The panel sets it when a phone card is swiped toward \"Needs a change\" (keksdose\n * live #377): that swipe opens the editor to be written in, and a reviewer who has just\n * said \"this is wrong\" should not have to find the field first. Not for an editor\n * opened by a tap — that one may only be opened to read.\n */\n focusWording?: boolean;\n /** How the verdict's date reads. Default: the kit's `formatDate`, medium, in the\n * provider's locale. */\n formatDate?: (iso: string) => string;\n /** Turns a rejection into words. Default {@link TranslationReviewLabels.failed}. */\n formatError?: (error: unknown) => ReactNode;\n className?: string;\n labels?: Partial<TranslationReviewLabels>;\n}\n\n/** The wording a verdict was given on, under the line that says it changed. */\nfunction Then({ label, text }: { label: string; text: string }) {\n return (\n <div className=\"mt-1.5 min-w-0\">\n <span className=\"text-xs font-medium\">{label}</span>\n <p className=\"whitespace-pre-line break-words text-[var(--text-secondary)]\">{text}</p>\n </div>\n );\n}\n\n/**\n * One string, opened: the reference beside the translation, what changed since the last\n * verdict, what a machine can see is wrong (the placeholders), and the two things a\n * reviewer can say about it — keksdose's and kastlan's `translation-review-editor.tsx`.\n *\n * \"Better wording\" opens on the CURRENT text rather than empty, because the usual\n * correction is a word or an ending, and retyping a sentence to change one word is how\n * new mistakes get in. It is sent only with \"Needs a change\" — approving says the text is\n * fine as it stands. A \"Needs a change\" with neither a note nor a different wording tells\n * whoever fixes it nothing, so it takes one of the two.\n *\n * A MISSING string (kastlan: the locale lacks the key) cannot be approved — there is\n * nothing to approve. Its field starts empty and is the translation to add; the verdict\n * is NEEDS_CHANGE on the empty text, which the export hands a developer as the string to\n * add.\n *\n * Every action waits for its callback: the buttons hold while the promise is out, a\n * resolution closes the editor through `onClose`, and a rejection keeps it open with what\n * was typed and the error under the buttons.\n *\n * Each verdict is a `commit` exempt from billing (`COMMIT_EXCEPT_BILLING`, 0.33): a review\n * is an admin route, which a lapsed plan never locks (docs/billing-harmonization.md\n * §12.13, §12.36); a demo's lock still holds it.\n */\nexport function TranslationReviewEditor({\n row,\n referenceLabel,\n localeLabel,\n onSave,\n onClear,\n onClose,\n readOnly = false,\n focusWording = false,\n formatDate: formatDateProp,\n formatError,\n className,\n labels: labelsProp,\n}: TranslationReviewEditorProps) {\n const labels = useKitLabels(\"translationReview\", DEFAULT_TRANSLATION_REVIEW_LABELS, labelsProp);\n const { formatDate } = useKitFormat();\n const review = row.review;\n const missing = row.text === \"\";\n const editable = !readOnly && onSave !== undefined;\n const [suggestion, setSuggestion] = useState(review?.suggestion ?? row.text);\n const [note, setNote] = useState(review?.note ?? \"\");\n const [busy, setBusy] = useState<\"approve\" | \"flag\" | \"clear\" | null>(null);\n const [failure, setFailure] = useState<ReactNode>(null);\n const wordingRef = useRef<HTMLTextAreaElement>(null);\n // On mount only: the prop says how the editor was OPENED, not where focus belongs\n // for the rest of its life.\n const focusOnOpen = useRef(focusWording && editable);\n useEffect(() => {\n const field = wordingRef.current;\n if (!focusOnOpen.current || !field) return;\n field.focus();\n field.setSelectionRange(field.value.length, field.value.length);\n }, []);\n\n const canFlag = note.trim() !== \"\" || suggestion.trim() !== row.text.trim();\n const changed = row.status === \"changed\" ? review : null;\n const date = (iso: string) => (formatDateProp ? formatDateProp(iso) : formatDate(iso, \"medium\"));\n\n const run = async (kind: \"approve\" | \"flag\" | \"clear\", action: () => MaybePromise) => {\n setBusy(kind);\n setFailure(null);\n try {\n await action();\n onClose?.();\n } catch (caught) {\n setFailure(formatError ? formatError(caught) : labels.failed);\n } finally {\n setBusy(null);\n }\n };\n\n const save = (verdict: TranslationVerdict) => {\n if (!onSave) return;\n const trimmedNote = note.trim() || null;\n // Approving says the text is right as it stands: there is no wording to suggest.\n const sent = verdict === \"APPROVED\" ? null : suggestion.trim() || null;\n void run(verdict === \"APPROVED\" ? \"approve\" : \"flag\", () =>\n onSave(reviewWrite(row, verdict, trimmedNote, sent)),\n );\n };\n\n return (\n <div className={cn(\"min-w-0 space-y-3 text-sm\", className)}>\n <code className=\"block break-all text-xs text-[var(--text-muted)]\">{row.key}</code>\n\n <div className=\"grid grid-cols-1 gap-3 md:grid-cols-2\">\n <div className=\"min-w-0\">\n <SectionLabel as=\"span\" size=\"xs\">\n {referenceLabel}\n </SectionLabel>\n <p className=\"mt-1 whitespace-pre-line break-words text-[var(--text-secondary)]\">{row.reference}</p>\n </div>\n <div className=\"min-w-0\">\n <SectionLabel as=\"span\" size=\"xs\">\n {localeLabel}\n </SectionLabel>\n {missing ? (\n <p className=\"mt-1 italic text-[var(--text-muted)]\">{labels.missingText}</p>\n ) : (\n <p lang={row.locale} className=\"mt-1 whitespace-pre-line break-words\">\n {row.text}\n </p>\n )}\n </div>\n </div>\n\n {changed && (\n <AlertBanner tone=\"warning\" variant=\"inline\" size=\"sm\" block live={false}>\n <div className=\"min-w-0\">\n <p>{labels.changedSince}</p>\n {changed.text !== row.text && <Then label={labels.reviewedWording} text={changed.text || \"—\"} />}\n {changed.referenceText != null && changed.referenceText !== row.reference && (\n <Then label={labels.reviewedReference} text={changed.referenceText} />\n )}\n </div>\n </AlertBanner>\n )}\n\n {row.placeholderMismatch && (\n <AlertBanner tone=\"danger\" variant=\"inline\" size=\"sm\" block live={false}>\n <span className=\"min-w-0 break-words\">\n {labels.placeholderMismatch(\n placeholderTokens(row.reference).join(\" \") || \"—\",\n placeholderTokens(row.text).join(\" \") || \"—\",\n )}\n </span>\n </AlertBanner>\n )}\n\n {review && (\n <Caption>\n {(review.verdict === \"APPROVED\" ? labels.lastApproved : labels.lastFlagged)(\n review.reviewerName ?? labels.erasedReviewer,\n date(review.reviewedAt),\n )}\n </Caption>\n )}\n\n {/* Read-only: what the reviewer said, as text — the fields are for saying it. */}\n {!editable && review?.verdict === \"NEEDS_CHANGE\" && (review.suggestion || review.note) && (\n <div className=\"space-y-2\">\n {review.suggestion && <Then label={missing ? labels.translation : labels.suggestion} text={review.suggestion} />}\n {review.note && <Then label={labels.note} text={review.note} />}\n </div>\n )}\n\n {editable && (\n <>\n <Textarea\n ref={wordingRef}\n label={missing ? labels.translation : labels.suggestion}\n lang={row.locale}\n rows={Math.min(8, Math.max(2, Math.ceil(Math.max(row.text.length, row.reference.length) / 80)))}\n value={suggestion}\n disabled={busy !== null}\n onChange={(e) => setSuggestion(e.target.value)}\n />\n <Textarea\n label={labels.note}\n rows={2}\n value={note}\n placeholder={labels.notePlaceholder}\n disabled={busy !== null}\n onChange={(e) => setNote(e.target.value)}\n />\n <div className=\"flex flex-wrap gap-2\">\n {!missing && (\n <Button\n variant=\"primary\"\n commit={COMMIT_EXCEPT_BILLING}\n pending={busy === \"approve\"}\n disabled={busy !== null}\n onClick={() => save(\"APPROVED\")}\n >\n {labels.approve}\n </Button>\n )}\n <Button\n variant={missing ? \"primary\" : \"danger\"}\n commit={COMMIT_EXCEPT_BILLING}\n pending={busy === \"flag\"}\n disabled={busy !== null || !canFlag}\n onClick={() => save(\"NEEDS_CHANGE\")}\n >\n {missing ? labels.suggest : labels.flag}\n </Button>\n {review && onClear && (\n <Button\n variant=\"ghost\"\n commit={COMMIT_EXCEPT_BILLING}\n pending={busy === \"clear\"}\n disabled={busy !== null}\n onClick={() => void run(\"clear\", () => onClear({ locale: row.locale, key: row.key }))}\n >\n {labels.reset}\n </Button>\n )}\n {onClose && (\n <Button variant=\"ghost\" disabled={busy !== null} onClick={onClose}>\n {labels.cancel}\n </Button>\n )}\n </div>\n </>\n )}\n\n {failure && (\n <AlertBanner tone=\"danger\" size=\"sm\" role=\"alert\">\n {failure}\n </AlertBanner>\n )}\n </div>\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/components/translation-review-editor.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport type { ReactNode } from \"react\";\n\nimport { useKitLabels, type LabelOverride } from \"../i18n/kit-labels\";\nimport { cn } from \"../lib/cn\";\nimport { useKitFormat } from \"../lib/format\";\nimport { placeholderTokens, reviewWrite } from \"../lib/translation-review\";\nimport type {\n TranslationReviewKey,\n TranslationReviewWrite,\n TranslationRow,\n TranslationVerdict,\n} from \"../lib/translation-review\";\nimport { AlertBanner } from \"./alert-banner\";\nimport { Caption, SectionLabel } from \"./text\";\nimport { DEFAULT_TRANSLATION_REVIEW_LABELS } from \"./translation-review-labels\";\nimport type { TranslationReviewLabels } from \"./translation-review-labels\";\nimport { Button } from \"./button\";\nimport { Textarea } from \"./textarea\";\nimport { COMMIT_EXCEPT_BILLING } from \"./write-lock\";\n\n/** A callback may return a promise: resolve and the editor closes, reject and it stays\n * open with the error. */\ntype MaybePromise = void | Promise<unknown>;\n\nexport interface TranslationReviewEditorProps {\n row: TranslationRow;\n /** The reference language's own name (\"English\", \"Deutsch\") — the app's choice of\n * reference, so the app's word for it. */\n referenceLabel: ReactNode;\n /** The reviewed language's own name (\"Français\"). */\n localeLabel: ReactNode;\n /** Store a verdict. Left out (or `readOnly`): the editor shows the row and its last\n * verdict, with no fields and no actions. */\n onSave?: (write: TranslationReviewWrite) => MaybePromise;\n /** Clear the verdict — back to unreviewed. Left out: no reset button. */\n onClear?: (key: TranslationReviewKey) => MaybePromise;\n /** The Cancel button — and called after a save or a reset resolves, so the panel\n * that opened the editor closes it. */\n onClose?: () => void;\n /** Look, do not touch: a locale the viewer may read but not review. */\n readOnly?: boolean;\n /**\n * 0.25: put the cursor in the wording field when the editor opens, at the end of the\n * text. The panel sets it when a phone card is swiped toward \"Needs a change\" (keksdose\n * live #377): that swipe opens the editor to be written in, and a reviewer who has just\n * said \"this is wrong\" should not have to find the field first. Not for an editor\n * opened by a tap — that one may only be opened to read.\n */\n focusWording?: boolean;\n /** How the verdict's date reads. Default: the kit's `formatDate`, medium, in the\n * provider's locale. */\n formatDate?: (iso: string) => string;\n /** Turns a rejection into words. Default {@link TranslationReviewLabels.failed}. */\n formatError?: (error: unknown) => ReactNode;\n className?: string;\n labels?: LabelOverride<TranslationReviewLabels>;\n}\n\n/** The wording a verdict was given on, under the line that says it changed. */\nfunction Then({ label, text }: { label: string; text: string }) {\n return (\n <div className=\"mt-1.5 min-w-0\">\n <span className=\"text-xs font-medium\">{label}</span>\n <p className=\"whitespace-pre-line break-words text-secondary\">{text}</p>\n </div>\n );\n}\n\n/**\n * One string, opened: the reference beside the translation, what changed since the last\n * verdict, what a machine can see is wrong (the placeholders), and the two things a\n * reviewer can say about it — keksdose's and kastlan's `translation-review-editor.tsx`.\n *\n * \"Better wording\" opens on the CURRENT text rather than empty, because the usual\n * correction is a word or an ending, and retyping a sentence to change one word is how\n * new mistakes get in. It is sent only with \"Needs a change\" — approving says the text is\n * fine as it stands. A \"Needs a change\" with neither a note nor a different wording tells\n * whoever fixes it nothing, so it takes one of the two.\n *\n * A MISSING string (kastlan: the locale lacks the key) cannot be approved — there is\n * nothing to approve. Its field starts empty and is the translation to add; the verdict\n * is NEEDS_CHANGE on the empty text, which the export hands a developer as the string to\n * add.\n *\n * Every action waits for its callback: the buttons hold while the promise is out, a\n * resolution closes the editor through `onClose`, and a rejection keeps it open with what\n * was typed and the error under the buttons.\n *\n * Each verdict is a `commit` exempt from billing (`COMMIT_EXCEPT_BILLING`, 0.33): a review\n * is an admin route, which a lapsed plan never locks (docs/billing-harmonization.md\n * §12.13, §12.36); a demo's lock still holds it.\n */\nexport function TranslationReviewEditor({\n row,\n referenceLabel,\n localeLabel,\n onSave,\n onClear,\n onClose,\n readOnly = false,\n focusWording = false,\n formatDate: formatDateProp,\n formatError,\n className,\n labels: labelsProp,\n}: TranslationReviewEditorProps) {\n const labels = useKitLabels(\"translationReview\", DEFAULT_TRANSLATION_REVIEW_LABELS, labelsProp);\n const { formatDate } = useKitFormat();\n const review = row.review;\n const missing = row.text === \"\";\n const editable = !readOnly && onSave !== undefined;\n const [suggestion, setSuggestion] = useState(review?.suggestion ?? row.text);\n const [note, setNote] = useState(review?.note ?? \"\");\n const [busy, setBusy] = useState<\"approve\" | \"flag\" | \"clear\" | null>(null);\n const [failure, setFailure] = useState<ReactNode>(null);\n const wordingRef = useRef<HTMLTextAreaElement>(null);\n // On mount only: the prop says how the editor was OPENED, not where focus belongs\n // for the rest of its life.\n const focusOnOpen = useRef(focusWording && editable);\n useEffect(() => {\n const field = wordingRef.current;\n if (!focusOnOpen.current || !field) return;\n field.focus();\n field.setSelectionRange(field.value.length, field.value.length);\n }, []);\n\n const canFlag = note.trim() !== \"\" || suggestion.trim() !== row.text.trim();\n const changed = row.status === \"changed\" ? review : null;\n const date = (iso: string) => (formatDateProp ? formatDateProp(iso) : formatDate(iso, \"medium\"));\n\n const run = async (kind: \"approve\" | \"flag\" | \"clear\", action: () => MaybePromise) => {\n setBusy(kind);\n setFailure(null);\n try {\n await action();\n onClose?.();\n } catch (caught) {\n setFailure(formatError ? formatError(caught) : labels.failed);\n } finally {\n setBusy(null);\n }\n };\n\n const save = (verdict: TranslationVerdict) => {\n if (!onSave) return;\n const trimmedNote = note.trim() || null;\n // Approving says the text is right as it stands: there is no wording to suggest.\n const sent = verdict === \"APPROVED\" ? null : suggestion.trim() || null;\n void run(verdict === \"APPROVED\" ? \"approve\" : \"flag\", () =>\n onSave(reviewWrite(row, verdict, trimmedNote, sent)),\n );\n };\n\n return (\n <div className={cn(\"min-w-0 space-y-3 text-sm\", className)}>\n <code className=\"block break-all text-xs text-muted\">{row.key}</code>\n\n <div className=\"grid grid-cols-1 gap-3 md:grid-cols-2\">\n <div className=\"min-w-0\">\n <SectionLabel as=\"span\" size=\"xs\">\n {referenceLabel}\n </SectionLabel>\n <p className=\"mt-1 whitespace-pre-line break-words text-secondary\">{row.reference}</p>\n </div>\n <div className=\"min-w-0\">\n <SectionLabel as=\"span\" size=\"xs\">\n {localeLabel}\n </SectionLabel>\n {missing ? (\n <p className=\"mt-1 italic text-muted\">{labels.missingText}</p>\n ) : (\n <p lang={row.locale} className=\"mt-1 whitespace-pre-line break-words\">\n {row.text}\n </p>\n )}\n </div>\n </div>\n\n {changed && (\n <AlertBanner tone=\"warning\" variant=\"inline\" size=\"sm\" block live={false}>\n <div className=\"min-w-0\">\n <p>{labels.changedSince}</p>\n {changed.text !== row.text && <Then label={labels.reviewedWording} text={changed.text || \"—\"} />}\n {changed.referenceText != null && changed.referenceText !== row.reference && (\n <Then label={labels.reviewedReference} text={changed.referenceText} />\n )}\n </div>\n </AlertBanner>\n )}\n\n {row.placeholderMismatch && (\n <AlertBanner tone=\"danger\" variant=\"inline\" size=\"sm\" block live={false}>\n <span className=\"min-w-0 break-words\">\n {labels.placeholderMismatch(\n placeholderTokens(row.reference).join(\" \") || \"—\",\n placeholderTokens(row.text).join(\" \") || \"—\",\n )}\n </span>\n </AlertBanner>\n )}\n\n {review && (\n <Caption>\n {(review.verdict === \"APPROVED\" ? labels.lastApproved : labels.lastFlagged)(\n review.reviewerName ?? labels.erasedReviewer,\n date(review.reviewedAt),\n )}\n </Caption>\n )}\n\n {/* Read-only: what the reviewer said, as text — the fields are for saying it. */}\n {!editable && review?.verdict === \"NEEDS_CHANGE\" && (review.suggestion || review.note) && (\n <div className=\"space-y-2\">\n {review.suggestion && <Then label={missing ? labels.translation : labels.suggestion} text={review.suggestion} />}\n {review.note && <Then label={labels.note} text={review.note} />}\n </div>\n )}\n\n {editable && (\n <>\n <Textarea\n ref={wordingRef}\n label={missing ? labels.translation : labels.suggestion}\n lang={row.locale}\n rows={Math.min(8, Math.max(2, Math.ceil(Math.max(row.text.length, row.reference.length) / 80)))}\n value={suggestion}\n disabled={busy !== null}\n onChange={(e) => setSuggestion(e.target.value)}\n />\n <Textarea\n label={labels.note}\n rows={2}\n value={note}\n placeholder={labels.notePlaceholder}\n disabled={busy !== null}\n onChange={(e) => setNote(e.target.value)}\n />\n <div className=\"flex flex-wrap gap-2\">\n {!missing && (\n <Button\n variant=\"primary\"\n commit={COMMIT_EXCEPT_BILLING}\n pending={busy === \"approve\"}\n disabled={busy !== null}\n onClick={() => save(\"APPROVED\")}\n >\n {labels.approve}\n </Button>\n )}\n <Button\n variant={missing ? \"primary\" : \"danger\"}\n commit={COMMIT_EXCEPT_BILLING}\n pending={busy === \"flag\"}\n disabled={busy !== null || !canFlag}\n onClick={() => save(\"NEEDS_CHANGE\")}\n >\n {missing ? labels.suggest : labels.flag}\n </Button>\n {review && onClear && (\n <Button\n variant=\"ghost\"\n commit={COMMIT_EXCEPT_BILLING}\n pending={busy === \"clear\"}\n disabled={busy !== null}\n onClick={() => void run(\"clear\", () => onClear({ locale: row.locale, key: row.key }))}\n >\n {labels.reset}\n </Button>\n )}\n {onClose && (\n <Button variant=\"ghost\" disabled={busy !== null} onClick={onClose}>\n {labels.cancel}\n </Button>\n )}\n </div>\n </>\n )}\n\n {failure && (\n <AlertBanner tone=\"danger\" size=\"sm\" role=\"alert\">\n {failure}\n </AlertBanner>\n )}\n </div>\n );\n}\n"],"mappings":"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","names":[]}
@@ -1,5 +1,4 @@
1
- import { ReviewStatus } from '../lib/translation-review.js';
2
-
1
+ import type { ReviewStatus } from "../lib/translation-review.js";
3
2
  /**
4
3
  * The `translationReview` namespace: every word of the translation-review parts
5
4
  * (`ReviewStatusChip`, `TranslationProgress`, `TranslationLocaleTabs`,
@@ -9,7 +8,7 @@ import { ReviewStatus } from '../lib/translation-review.js';
9
8
  * it, and neither has to load the components to get the words. The English is keksdose's
10
9
  * and kastlan's own (`translation_review.*`, `translations:*`), British.
11
10
  */
12
- interface TranslationReviewLabels {
11
+ export interface TranslationReviewLabels {
13
12
  /** The five statuses — the chip, the filter, the progress legend. */
14
13
  statusMissing: string;
15
14
  statusUnreviewed: string;
@@ -99,8 +98,6 @@ interface TranslationReviewLabels {
99
98
  * The swipe itself is named by {@link reset}. */
100
99
  clearedToast: (count: number) => string;
101
100
  }
102
- declare const DEFAULT_TRANSLATION_REVIEW_LABELS: TranslationReviewLabels;
101
+ export declare const DEFAULT_TRANSLATION_REVIEW_LABELS: TranslationReviewLabels;
103
102
  /** A status's word, from the namespace's five. */
104
- declare function reviewStatusLabel(labels: TranslationReviewLabels, status: ReviewStatus): string;
105
-
106
- export { DEFAULT_TRANSLATION_REVIEW_LABELS, type TranslationReviewLabels, reviewStatusLabel };
103
+ export declare function reviewStatusLabel(labels: TranslationReviewLabels, status: ReviewStatus): string;
@@ -1,15 +1,8 @@
1
- import * as react from 'react';
2
- import { ReactNode } from 'react';
3
- import { ReviewStatus, TranslationRow, TranslationCorrection, TranslationSummary } from '../lib/translation-review.js';
4
- import { ChipTone, ChipSize, ChipVariant, ChipShape } from './chip.js';
5
- import { TranslationReviewLabels } from './translation-review-labels.js';
6
- import 'lucide-react';
7
- import './field-parts.js';
8
- import './tooltip.js';
9
- import '../hooks/use-anchored-rect.js';
10
- import '../lib/clipping.js';
11
- import './write-lock.js';
12
-
1
+ import type { ReactNode } from "react";
2
+ import { type LabelOverride } from "../i18n/kit-labels.js";
3
+ import type { ReviewStatus, TranslationCorrection, TranslationRow, TranslationSummary } from "../lib/translation-review.js";
4
+ import type { ChipShape, ChipSize, ChipTone, ChipVariant } from "./chip.js";
5
+ import type { TranslationReviewLabels } from "./translation-review-labels.js";
13
6
  /**
14
7
  * The small parts of the translation review, each usable on its own: the status
15
8
  * vocabulary as a chip, one locale's progress, the locale tabs and the export. The page
@@ -19,8 +12,8 @@ import './write-lock.js';
19
12
  * The tone of each status: nothing yet is neutral, a gap is orange (kastlan's choice — a
20
13
  * hue, not a verdict), a change since review is amber, sent back is red, done is green.
21
14
  */
22
- declare const REVIEW_STATUS_TONES: Readonly<Record<ReviewStatus, ChipTone>>;
23
- interface ReviewStatusChipProps {
15
+ export declare const REVIEW_STATUS_TONES: Readonly<Record<ReviewStatus, ChipTone>>;
16
+ export interface ReviewStatusChipProps {
24
17
  status: ReviewStatus;
25
18
  /** Over {@link REVIEW_STATUS_TONES}. */
26
19
  tone?: ChipTone;
@@ -33,19 +26,19 @@ interface ReviewStatusChipProps {
33
26
  caps?: boolean;
34
27
  className?: string;
35
28
  /** Prop > `<UiKitProvider labels={{ translationReview }}>` > English. */
36
- labels?: Partial<TranslationReviewLabels>;
29
+ labels?: LabelOverride<TranslationReviewLabels>;
37
30
  [key: `data-${string}`]: string | number | boolean | undefined;
38
31
  }
39
32
  /** One row's status as a chip, in the kit's words and tones. Carries `data-status`. */
40
- declare function ReviewStatusChip({ status, tone, children, size, variant, shape, caps, className, labels: labelsProp, ...rest }: ReviewStatusChipProps): react.JSX.Element;
41
- interface TranslationProgressProps {
33
+ export declare function ReviewStatusChip({ status, tone, children, size, variant, shape, caps, className, labels: labelsProp, ...rest }: ReviewStatusChipProps): import("react").JSX.Element;
34
+ export interface TranslationProgressProps {
42
35
  /** One locale's rows — or their {@link summariseRows} when the app has only counts. */
43
36
  rows?: readonly TranslationRow[];
44
37
  summary?: TranslationSummary;
45
38
  /** The list under the bar naming each part with its count. Default true. */
46
39
  legend?: boolean;
47
40
  className?: string;
48
- labels?: Partial<TranslationReviewLabels>;
41
+ labels?: LabelOverride<TranslationReviewLabels>;
49
42
  }
50
43
  /**
51
44
  * "120 of 3859 approved", and the bar split by status: approved, sent back, changed since
@@ -53,8 +46,8 @@ interface TranslationProgressProps {
53
46
  * legend counts rows rather than percentages: "12 need a change" is the next hour's work,
54
47
  * "0.3 %" is not.
55
48
  */
56
- declare function TranslationProgress({ rows, summary: summaryProp, legend, className, labels: labelsProp, }: TranslationProgressProps): react.JSX.Element;
57
- interface TranslationLocaleTab {
49
+ export declare function TranslationProgress({ rows, summary: summaryProp, legend, className, labels: labelsProp, }: TranslationProgressProps): import("react").JSX.Element;
50
+ export interface TranslationLocaleTab {
58
51
  /** The locale code. */
59
52
  value: string;
60
53
  /** Its name, in its own language ("Français"). */
@@ -63,21 +56,21 @@ interface TranslationLocaleTab {
63
56
  * a scoped reviewer's tab counts what they can see. */
64
57
  rows: readonly TranslationRow[];
65
58
  }
66
- interface TranslationLocaleTabsProps {
59
+ export interface TranslationLocaleTabsProps {
67
60
  /** The locales the viewer may see, in the app's order — the server's answer, never a
68
61
  * guess from a role name. */
69
62
  locales: readonly TranslationLocaleTab[];
70
63
  active: string;
71
64
  onChange: (locale: string) => void;
72
65
  className?: string;
73
- labels?: Partial<TranslationReviewLabels>;
66
+ labels?: LabelOverride<TranslationReviewLabels>;
74
67
  }
75
68
  /**
76
69
  * One tab per locale with its approved/total, wrapping on a phone. Nothing for a single
77
70
  * locale: a strip with one tab is a heading that looks clickable.
78
71
  */
79
- declare function TranslationLocaleTabs({ locales, active, onChange, className, labels: labelsProp }: TranslationLocaleTabsProps): react.JSX.Element | null;
80
- interface TranslationExportButtonProps {
72
+ export declare function TranslationLocaleTabs({ locales, active, onChange, className, labels: labelsProp }: TranslationLocaleTabsProps): import("react").JSX.Element | null;
73
+ export interface TranslationExportButtonProps {
81
74
  /** Every row the export covers — usually every locale's, not only the open one. */
82
75
  rows: readonly TranslationRow[];
83
76
  /** Listed in the file. Default: the locales the rows come from. */
@@ -90,13 +83,11 @@ interface TranslationExportButtonProps {
90
83
  */
91
84
  onExport?: (corrections: TranslationCorrection[], file: Blob) => void;
92
85
  className?: string;
93
- labels?: Partial<TranslationReviewLabels>;
86
+ labels?: LabelOverride<TranslationReviewLabels>;
94
87
  }
95
88
  /**
96
89
  * "Export corrections (n)": every string sent back, as the JSON file keksdose and kastlan
97
90
  * hand a developer — `{ exported_at, locales, corrections }`. Corrections are not applied
98
91
  * on the page: the strings are source code. Disabled while there is nothing to export.
99
92
  */
100
- declare function TranslationExportButton({ rows, locales, fileName, onExport, className, labels: labelsProp, }: TranslationExportButtonProps): react.JSX.Element;
101
-
102
- export { REVIEW_STATUS_TONES, ReviewStatusChip, type ReviewStatusChipProps, TranslationExportButton, type TranslationExportButtonProps, type TranslationLocaleTab, TranslationLocaleTabs, type TranslationLocaleTabsProps, TranslationProgress, type TranslationProgressProps };
93
+ export declare function TranslationExportButton({ rows, locales, fileName, onExport, className, labels: labelsProp, }: TranslationExportButtonProps): import("react").JSX.Element;
@@ -3,12 +3,14 @@ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useMemo } from "react";
4
4
  import { Download } from "lucide-react";
5
5
  import { useKitLabels } from "../i18n/kit-labels.js";
6
+ import { saveBlob } from "../lib/download.js";
6
7
  import { useKitFormat } from "../lib/format.js";
7
8
  import { summariseRows, translationCorrections } from "../lib/translation-review.js";
8
9
  import { Chip } from "./chip.js";
9
10
  import { ProgressBar } from "./progress-bar.js";
10
11
  import { DEFAULT_TRANSLATION_REVIEW_LABELS, reviewStatusLabel } from "./translation-review-labels.js";
11
- import { Button, Tabs } from "./ui.js";
12
+ import { Button } from "./button.js";
13
+ import { Tabs } from "./tabs.js";
12
14
  const REVIEW_STATUS_TONES = {
13
15
  missing: "orange",
14
16
  unreviewed: "neutral",
@@ -141,12 +143,7 @@ function TranslationExportButton({
141
143
  onExport(corrections, file);
142
144
  return;
143
145
  }
144
- const url = URL.createObjectURL(file);
145
- const a = document.createElement("a");
146
- a.href = url;
147
- a.download = fileName ?? `translation-corrections-${now.toISOString().slice(0, 10)}.json`;
148
- a.click();
149
- setTimeout(() => URL.revokeObjectURL(url), 0);
146
+ saveBlob(file, fileName ?? `translation-corrections-${now.toISOString().slice(0, 10)}.json`);
150
147
  };
151
148
  return /* @__PURE__ */ jsxs(Button, { variant: "secondary", disabled: corrections.length === 0, onClick: run, className, children: [
152
149
  /* @__PURE__ */ jsx(Download, { className: "size-4", "aria-hidden": true }),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/translation-review-parts.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { Download } from \"lucide-react\";\n\nimport { useKitLabels } from \"../i18n/kit-labels\";\nimport { useKitFormat } from \"../lib/format\";\nimport { summariseRows, translationCorrections } from \"../lib/translation-review\";\nimport type {\n ReviewStatus,\n TranslationCorrection,\n TranslationRow,\n TranslationSummary,\n} from \"../lib/translation-review\";\nimport { Chip } from \"./chip\";\nimport type { ChipShape, ChipSize, ChipTone, ChipVariant } from \"./chip\";\nimport { ProgressBar } from \"./progress-bar\";\nimport type { ProgressBarSegment } from \"./progress-bar\";\nimport { DEFAULT_TRANSLATION_REVIEW_LABELS, reviewStatusLabel } from \"./translation-review-labels\";\nimport type { TranslationReviewLabels } from \"./translation-review-labels\";\nimport { Button, Tabs } from \"./ui\";\n\n/**\n * The small parts of the translation review, each usable on its own: the status\n * vocabulary as a chip, one locale's progress, the locale tabs and the export. The page\n * body that puts them together is `TranslationReviewPanel` (translation-review.tsx).\n */\n\n// ── ReviewStatusChip ──────────────────────────────────────────────────────────\n\n/**\n * The tone of each status: nothing yet is neutral, a gap is orange (kastlan's choice — a\n * hue, not a verdict), a change since review is amber, sent back is red, done is green.\n */\nexport const REVIEW_STATUS_TONES: Readonly<Record<ReviewStatus, ChipTone>> = {\n missing: \"orange\",\n unreviewed: \"neutral\",\n changed: \"warning\",\n needs_change: \"danger\",\n approved: \"success\",\n};\n\nexport interface ReviewStatusChipProps {\n status: ReviewStatus;\n /** Over {@link REVIEW_STATUS_TONES}. */\n tone?: ChipTone;\n /** Over the label. */\n children?: ReactNode;\n /** Default `sm` — a chip in a table cell. */\n size?: ChipSize;\n variant?: ChipVariant;\n shape?: ChipShape;\n caps?: boolean;\n className?: string;\n /** Prop > `<UiKitProvider labels={{ translationReview }}>` > English. */\n labels?: Partial<TranslationReviewLabels>;\n [key: `data-${string}`]: string | number | boolean | undefined;\n}\n\n/** One row's status as a chip, in the kit's words and tones. Carries `data-status`. */\nexport function ReviewStatusChip({\n status,\n tone,\n children,\n size = \"sm\",\n variant,\n shape,\n caps,\n className,\n labels: labelsProp,\n ...rest\n}: ReviewStatusChipProps) {\n const labels = useKitLabels(\"translationReview\", DEFAULT_TRANSLATION_REVIEW_LABELS, labelsProp);\n return (\n <Chip\n {...rest}\n data-status={status}\n tone={tone ?? REVIEW_STATUS_TONES[status]}\n size={size}\n variant={variant}\n shape={shape}\n caps={caps}\n className={className}\n >\n {children ?? reviewStatusLabel(labels, status)}\n </Chip>\n );\n}\n\n// ── TranslationProgress ───────────────────────────────────────────────────────\n\nexport interface TranslationProgressProps {\n /** One locale's rows — or their {@link summariseRows} when the app has only counts. */\n rows?: readonly TranslationRow[];\n summary?: TranslationSummary;\n /** The list under the bar naming each part with its count. Default true. */\n legend?: boolean;\n className?: string;\n labels?: Partial<TranslationReviewLabels>;\n}\n\n/**\n * \"120 of 3859 approved\", and the bar split by status: approved, sent back, changed since\n * review, missing — in the chips' colours. What is left of the track is unreviewed. The\n * legend counts rows rather than percentages: \"12 need a change\" is the next hour's work,\n * \"0.3 %\" is not.\n */\nexport function TranslationProgress({\n rows,\n summary: summaryProp,\n legend = true,\n className,\n labels: labelsProp,\n}: TranslationProgressProps) {\n const labels = useKitLabels(\"translationReview\", DEFAULT_TRANSLATION_REVIEW_LABELS, labelsProp);\n const { formatNumber } = useKitFormat();\n const summary = useMemo(() => summaryProp ?? summariseRows(rows ?? []), [summaryProp, rows]);\n const part = (status: ReviewStatus, tone: ProgressBarSegment[\"tone\"], color?: string): ProgressBarSegment => ({\n key: status,\n value: summary[status],\n tone,\n color,\n label: reviewStatusLabel(labels, status),\n // A status with no rows stays in the legend (\"Needs a change 0\" is news too) but out\n // of the bar, where it would only be a gap.\n legendOnly: summary[status] === 0 ? true : undefined,\n });\n const segments = [\n part(\"approved\", \"success\"),\n part(\"needs_change\", \"danger\"),\n part(\"changed\", \"warning\"),\n // The chip's orange, which is a hue and not a ProgressBar tone. Only where there is\n // a gap: an app whose locales are complete never hears of \"missing\".\n ...(summary.missing > 0 ? [part(\"missing\", undefined, \"var(--hue-orange)\")] : []),\n ];\n return (\n <ProgressBar\n className={className}\n label={labels.progress(summary.approved, summary.total)}\n max={Math.max(summary.total, 1)}\n segments={segments}\n legend={legend}\n formatValue={(value) => formatNumber(value)}\n />\n );\n}\n\n// ── TranslationLocaleTabs ─────────────────────────────────────────────────────\n\nexport interface TranslationLocaleTab {\n /** The locale code. */\n value: string;\n /** Its name, in its own language (\"Français\"). */\n label: ReactNode;\n /** The locale's rows, for the badge — built with the same `areas` as the panel's, so\n * a scoped reviewer's tab counts what they can see. */\n rows: readonly TranslationRow[];\n}\n\nexport interface TranslationLocaleTabsProps {\n /** The locales the viewer may see, in the app's order — the server's answer, never a\n * guess from a role name. */\n locales: readonly TranslationLocaleTab[];\n active: string;\n onChange: (locale: string) => void;\n className?: string;\n labels?: Partial<TranslationReviewLabels>;\n}\n\n/**\n * One tab per locale with its approved/total, wrapping on a phone. Nothing for a single\n * locale: a strip with one tab is a heading that looks clickable.\n */\nexport function TranslationLocaleTabs({ locales, active, onChange, className, labels: labelsProp }: TranslationLocaleTabsProps) {\n const labels = useKitLabels(\"translationReview\", DEFAULT_TRANSLATION_REVIEW_LABELS, labelsProp);\n if (locales.length < 2) return null;\n return (\n <Tabs\n aria-label={labels.locales}\n wrap\n className={className}\n tabs={locales.map((locale) => {\n const summary = summariseRows(locale.rows);\n return {\n id: locale.value,\n label: locale.label,\n name: typeof locale.label === \"string\" ? locale.label : locale.value,\n badge: (\n // The tab's own colour, dimmed — a fixed muted grey vanished on the selected\n // tab's brand fill (390px browser check).\n <span className=\"text-xs tabular-nums opacity-75\">\n {labels.localeProgress(summary.approved, summary.total)}\n </span>\n ),\n };\n })}\n active={active}\n onChange={onChange}\n />\n );\n}\n\n// ── TranslationExportButton ───────────────────────────────────────────────────\n\nexport interface TranslationExportButtonProps {\n /** Every row the export covers — usually every locale's, not only the open one. */\n rows: readonly TranslationRow[];\n /** Listed in the file. Default: the locales the rows come from. */\n locales?: readonly string[];\n /** Default `translation-corrections-<date>.json`. */\n fileName?: string;\n /**\n * Take the export instead of downloading it — the entries, and the file as a ready\n * JSON Blob. Left out, the kit downloads the Blob as `fileName`.\n */\n onExport?: (corrections: TranslationCorrection[], file: Blob) => void;\n className?: string;\n labels?: Partial<TranslationReviewLabels>;\n}\n\n/**\n * \"Export corrections (n)\": every string sent back, as the JSON file keksdose and kastlan\n * hand a developer — `{ exported_at, locales, corrections }`. Corrections are not applied\n * on the page: the strings are source code. Disabled while there is nothing to export.\n */\nexport function TranslationExportButton({\n rows,\n locales,\n fileName,\n onExport,\n className,\n labels: labelsProp,\n}: TranslationExportButtonProps) {\n const labels = useKitLabels(\"translationReview\", DEFAULT_TRANSLATION_REVIEW_LABELS, labelsProp);\n const corrections = useMemo(() => translationCorrections(rows), [rows]);\n const run = () => {\n const now = new Date();\n const file = new Blob(\n [\n JSON.stringify(\n {\n exported_at: now.toISOString(),\n locales: locales ?? [...new Set(rows.map((r) => r.locale))],\n corrections,\n },\n null,\n 2,\n ),\n ],\n { type: \"application/json\" },\n );\n if (onExport) {\n onExport(corrections, file);\n return;\n }\n const url = URL.createObjectURL(file);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = fileName ?? `translation-corrections-${now.toISOString().slice(0, 10)}.json`;\n a.click();\n // After the click has handed the URL to the download, not before.\n setTimeout(() => URL.revokeObjectURL(url), 0);\n };\n return (\n <Button variant=\"secondary\" disabled={corrections.length === 0} onClick={run} className={className}>\n <Download className=\"size-4\" aria-hidden />\n {labels.exportCorrections(corrections.length)}\n </Button>\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/components/translation-review-parts.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { Download } from \"lucide-react\";\n\nimport { useKitLabels, type LabelOverride } from \"../i18n/kit-labels\";\nimport { saveBlob } from \"../lib/download\";\nimport { useKitFormat } from \"../lib/format\";\nimport { summariseRows, translationCorrections } from \"../lib/translation-review\";\nimport type {\n ReviewStatus,\n TranslationCorrection,\n TranslationRow,\n TranslationSummary,\n} from \"../lib/translation-review\";\nimport { Chip } from \"./chip\";\nimport type { ChipShape, ChipSize, ChipTone, ChipVariant } from \"./chip\";\nimport { ProgressBar } from \"./progress-bar\";\nimport type { ProgressBarSegment } from \"./progress-bar\";\nimport { DEFAULT_TRANSLATION_REVIEW_LABELS, reviewStatusLabel } from \"./translation-review-labels\";\nimport type { TranslationReviewLabels } from \"./translation-review-labels\";\nimport { Button } from \"./button\";\nimport { Tabs } from \"./tabs\";\n\n/**\n * The small parts of the translation review, each usable on its own: the status\n * vocabulary as a chip, one locale's progress, the locale tabs and the export. The page\n * body that puts them together is `TranslationReviewPanel` (translation-review.tsx).\n */\n\n// ── ReviewStatusChip ──────────────────────────────────────────────────────────\n\n/**\n * The tone of each status: nothing yet is neutral, a gap is orange (kastlan's choice — a\n * hue, not a verdict), a change since review is amber, sent back is red, done is green.\n */\nexport const REVIEW_STATUS_TONES: Readonly<Record<ReviewStatus, ChipTone>> = {\n missing: \"orange\",\n unreviewed: \"neutral\",\n changed: \"warning\",\n needs_change: \"danger\",\n approved: \"success\",\n};\n\nexport interface ReviewStatusChipProps {\n status: ReviewStatus;\n /** Over {@link REVIEW_STATUS_TONES}. */\n tone?: ChipTone;\n /** Over the label. */\n children?: ReactNode;\n /** Default `sm` — a chip in a table cell. */\n size?: ChipSize;\n variant?: ChipVariant;\n shape?: ChipShape;\n caps?: boolean;\n className?: string;\n /** Prop > `<UiKitProvider labels={{ translationReview }}>` > English. */\n labels?: LabelOverride<TranslationReviewLabels>;\n [key: `data-${string}`]: string | number | boolean | undefined;\n}\n\n/** One row's status as a chip, in the kit's words and tones. Carries `data-status`. */\nexport function ReviewStatusChip({\n status,\n tone,\n children,\n size = \"sm\",\n variant,\n shape,\n caps,\n className,\n labels: labelsProp,\n ...rest\n}: ReviewStatusChipProps) {\n const labels = useKitLabels(\"translationReview\", DEFAULT_TRANSLATION_REVIEW_LABELS, labelsProp);\n return (\n <Chip\n {...rest}\n data-status={status}\n tone={tone ?? REVIEW_STATUS_TONES[status]}\n size={size}\n variant={variant}\n shape={shape}\n caps={caps}\n className={className}\n >\n {children ?? reviewStatusLabel(labels, status)}\n </Chip>\n );\n}\n\n// ── TranslationProgress ───────────────────────────────────────────────────────\n\nexport interface TranslationProgressProps {\n /** One locale's rows — or their {@link summariseRows} when the app has only counts. */\n rows?: readonly TranslationRow[];\n summary?: TranslationSummary;\n /** The list under the bar naming each part with its count. Default true. */\n legend?: boolean;\n className?: string;\n labels?: LabelOverride<TranslationReviewLabels>;\n}\n\n/**\n * \"120 of 3859 approved\", and the bar split by status: approved, sent back, changed since\n * review, missing — in the chips' colours. What is left of the track is unreviewed. The\n * legend counts rows rather than percentages: \"12 need a change\" is the next hour's work,\n * \"0.3 %\" is not.\n */\nexport function TranslationProgress({\n rows,\n summary: summaryProp,\n legend = true,\n className,\n labels: labelsProp,\n}: TranslationProgressProps) {\n const labels = useKitLabels(\"translationReview\", DEFAULT_TRANSLATION_REVIEW_LABELS, labelsProp);\n const { formatNumber } = useKitFormat();\n const summary = useMemo(() => summaryProp ?? summariseRows(rows ?? []), [summaryProp, rows]);\n const part = (status: ReviewStatus, tone: ProgressBarSegment[\"tone\"], color?: string): ProgressBarSegment => ({\n key: status,\n value: summary[status],\n tone,\n color,\n label: reviewStatusLabel(labels, status),\n // A status with no rows stays in the legend (\"Needs a change 0\" is news too) but out\n // of the bar, where it would only be a gap.\n legendOnly: summary[status] === 0 ? true : undefined,\n });\n const segments = [\n part(\"approved\", \"success\"),\n part(\"needs_change\", \"danger\"),\n part(\"changed\", \"warning\"),\n // The chip's orange, which is a hue and not a ProgressBar tone. Only where there is\n // a gap: an app whose locales are complete never hears of \"missing\".\n ...(summary.missing > 0 ? [part(\"missing\", undefined, \"var(--hue-orange)\")] : []),\n ];\n return (\n <ProgressBar\n className={className}\n label={labels.progress(summary.approved, summary.total)}\n max={Math.max(summary.total, 1)}\n segments={segments}\n legend={legend}\n formatValue={(value) => formatNumber(value)}\n />\n );\n}\n\n// ── TranslationLocaleTabs ─────────────────────────────────────────────────────\n\nexport interface TranslationLocaleTab {\n /** The locale code. */\n value: string;\n /** Its name, in its own language (\"Français\"). */\n label: ReactNode;\n /** The locale's rows, for the badge — built with the same `areas` as the panel's, so\n * a scoped reviewer's tab counts what they can see. */\n rows: readonly TranslationRow[];\n}\n\nexport interface TranslationLocaleTabsProps {\n /** The locales the viewer may see, in the app's order — the server's answer, never a\n * guess from a role name. */\n locales: readonly TranslationLocaleTab[];\n active: string;\n onChange: (locale: string) => void;\n className?: string;\n labels?: LabelOverride<TranslationReviewLabels>;\n}\n\n/**\n * One tab per locale with its approved/total, wrapping on a phone. Nothing for a single\n * locale: a strip with one tab is a heading that looks clickable.\n */\nexport function TranslationLocaleTabs({ locales, active, onChange, className, labels: labelsProp }: TranslationLocaleTabsProps) {\n const labels = useKitLabels(\"translationReview\", DEFAULT_TRANSLATION_REVIEW_LABELS, labelsProp);\n if (locales.length < 2) return null;\n return (\n <Tabs\n aria-label={labels.locales}\n wrap\n className={className}\n tabs={locales.map((locale) => {\n const summary = summariseRows(locale.rows);\n return {\n id: locale.value,\n label: locale.label,\n name: typeof locale.label === \"string\" ? locale.label : locale.value,\n badge: (\n // The tab's own colour, dimmed — a fixed muted grey vanished on the selected\n // tab's brand fill (390px browser check).\n <span className=\"text-xs tabular-nums opacity-75\">\n {labels.localeProgress(summary.approved, summary.total)}\n </span>\n ),\n };\n })}\n active={active}\n onChange={onChange}\n />\n );\n}\n\n// ── TranslationExportButton ───────────────────────────────────────────────────\n\nexport interface TranslationExportButtonProps {\n /** Every row the export covers — usually every locale's, not only the open one. */\n rows: readonly TranslationRow[];\n /** Listed in the file. Default: the locales the rows come from. */\n locales?: readonly string[];\n /** Default `translation-corrections-<date>.json`. */\n fileName?: string;\n /**\n * Take the export instead of downloading it — the entries, and the file as a ready\n * JSON Blob. Left out, the kit downloads the Blob as `fileName`.\n */\n onExport?: (corrections: TranslationCorrection[], file: Blob) => void;\n className?: string;\n labels?: LabelOverride<TranslationReviewLabels>;\n}\n\n/**\n * \"Export corrections (n)\": every string sent back, as the JSON file keksdose and kastlan\n * hand a developer — `{ exported_at, locales, corrections }`. Corrections are not applied\n * on the page: the strings are source code. Disabled while there is nothing to export.\n */\nexport function TranslationExportButton({\n rows,\n locales,\n fileName,\n onExport,\n className,\n labels: labelsProp,\n}: TranslationExportButtonProps) {\n const labels = useKitLabels(\"translationReview\", DEFAULT_TRANSLATION_REVIEW_LABELS, labelsProp);\n const corrections = useMemo(() => translationCorrections(rows), [rows]);\n const run = () => {\n const now = new Date();\n const file = new Blob(\n [\n JSON.stringify(\n {\n exported_at: now.toISOString(),\n locales: locales ?? [...new Set(rows.map((r) => r.locale))],\n corrections,\n },\n null,\n 2,\n ),\n ],\n { type: \"application/json\" },\n );\n if (onExport) {\n onExport(corrections, file);\n return;\n }\n saveBlob(file, fileName ?? `translation-corrections-${now.toISOString().slice(0, 10)}.json`);\n };\n return (\n <Button variant=\"secondary\" disabled={corrections.length === 0} onClick={run} className={className}>\n <Download className=\"size-4\" aria-hidden />\n {labels.exportCorrections(corrections.length)}\n </Button>\n );\n}\n"],"mappings":"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","names":[]}
@@ -1,18 +1,13 @@
1
- import * as react from 'react';
2
- import { ReactNode } from 'react';
3
- import { TranslationRow, TranslationReviewWrite, TranslationReviewKey, TranslationReviewFilter, TranslationReviewSwipeBinding } from '../lib/translation-review.js';
4
- import { TranslationReviewLabels } from './translation-review-labels.js';
5
- export { DEFAULT_TRANSLATION_REVIEW_LABELS } from './translation-review-labels.js';
6
- export { REVIEW_STATUS_TONES, ReviewStatusChip, ReviewStatusChipProps, TranslationExportButton, TranslationExportButtonProps, TranslationLocaleTab, TranslationLocaleTabs, TranslationLocaleTabsProps, TranslationProgress, TranslationProgressProps } from './translation-review-parts.js';
7
- export { TranslationReviewEditor, TranslationReviewEditorProps } from './translation-review-editor.js';
8
- import './chip.js';
9
- import 'lucide-react';
10
- import './field-parts.js';
11
- import './tooltip.js';
12
- import '../hooks/use-anchored-rect.js';
13
- import '../lib/clipping.js';
14
- import './write-lock.js';
15
-
1
+ import type { ReactNode } from "react";
2
+ import { type LabelOverride } from "../i18n/kit-labels.js";
3
+ import type { TranslationReviewFilter, TranslationReviewKey, TranslationReviewSwipeBinding, TranslationReviewWrite, TranslationRow } from "../lib/translation-review.js";
4
+ import type { TranslationReviewLabels } from "./translation-review-labels.js";
5
+ export { REVIEW_STATUS_TONES, ReviewStatusChip, TranslationExportButton, TranslationLocaleTabs, TranslationProgress, } from "./translation-review-parts.js";
6
+ export type { ReviewStatusChipProps, TranslationExportButtonProps, TranslationLocaleTab, TranslationLocaleTabsProps, TranslationProgressProps, } from "./translation-review-parts.js";
7
+ export { TranslationReviewEditor } from "./translation-review-editor.js";
8
+ export type { TranslationReviewEditorProps } from "./translation-review-editor.js";
9
+ export { DEFAULT_TRANSLATION_REVIEW_LABELS } from "./translation-review-labels.js";
10
+ export type { TranslationReviewLabels } from "./translation-review-labels.js";
16
11
  /**
17
12
  * An app's translation review page, as kit parts (H1, docs/i18n-harmonization.md):
18
13
  * keksdose's /translations, which kastlan was about to build a second time. The app keeps
@@ -33,7 +28,7 @@ import './write-lock.js';
33
28
  */
34
29
  type MaybePromise = void | Promise<unknown>;
35
30
  /** What asked for a write — see {@link TranslationReviewSaveInfo}. */
36
- type TranslationReviewOrigin = "editor" | "row" | "swipe" | "group" | "selection" | "undo";
31
+ export type TranslationReviewOrigin = "editor" | "row" | "swipe" | "group" | "selection" | "undo";
37
32
  /**
38
33
  * The second argument of `onSave` and `onClear` (0.25): where the write came from, and
39
34
  * whether the panel answers it with a toast of its own.
@@ -47,7 +42,7 @@ type TranslationReviewOrigin = "editor" | "row" | "swipe" | "group" | "selection
47
42
  *
48
43
  * An app that ignores the argument keeps working; it only says "Saved" twice.
49
44
  */
50
- interface TranslationReviewSaveInfo {
45
+ export interface TranslationReviewSaveInfo {
51
46
  /** The open editor, a row's approve button, a swipe on a phone card, a group's
52
47
  * "Approve unreviewed", the selection's bulk bar, or an Undo pressed on the toast. */
53
48
  origin: TranslationReviewOrigin;
@@ -56,8 +51,8 @@ interface TranslationReviewSaveInfo {
56
51
  toasted: boolean;
57
52
  }
58
53
  /** How {@link TranslationReviewPanelProps.groupBy} names a row's group. */
59
- type TranslationReviewGroupBy = "namespace" | "source" | ((row: TranslationRow) => string);
60
- interface TranslationReviewPanelProps {
54
+ export type TranslationReviewGroupBy = "namespace" | "source" | ((row: TranslationRow) => string);
55
+ export interface TranslationReviewPanelProps {
61
56
  /** One locale's rows, from `translationRows`. */
62
57
  rows: readonly TranslationRow[];
63
58
  /** The reviewed language's own name — the text column's header ("Français"). */
@@ -108,8 +103,18 @@ interface TranslationReviewPanelProps {
108
103
  progress?: boolean;
109
104
  /** Rows per page. Default 50. */
110
105
  pageSize?: number;
111
- /** Persists the table's sort and page size (DataTable's `storageKey`). */
106
+ /** Persists the table's sort and page size (DataTable's `storageKey`), under the
107
+ * prefix below — under {@link groupBy}, the one sort and page size every group
108
+ * shares, in the same place (0.35). */
112
109
  storageKey?: string;
110
+ /**
111
+ * The `localStorage` prefix in front of `storageKey` (DataTable's `storageKeyPrefix`).
112
+ * Left out, it is the provider's `tableStorageKeyPrefix`, then the kit's
113
+ * `"hbui-table:"` — so an app that sets its prefix on `UiKitProvider` needs nothing
114
+ * here. Before 0.34 the panel took no prefix and its view always landed under the
115
+ * kit's, which an app listing what it stores had to list as its own (KS U4).
116
+ */
117
+ storageKeyPrefix?: string;
113
118
  /** How a verdict's date reads in the editor. */
114
119
  formatDate?: (iso: string) => string;
115
120
  /** Turns a callback's rejection into words. Default {@link TranslationReviewLabels.failed}. */
@@ -189,7 +194,14 @@ interface TranslationReviewPanelProps {
189
194
  * reference; a column sort orders the rows INSIDE every group alike. Each group pages
190
195
  * on its own, `pageSize` rows at a time — a header then always stands over its own
191
196
  * rows, and paging one area does not move another — rather than one pager cutting
192
- * through the headers. `storageKey` keeps persisting the ungrouped table only.
197
+ * through the headers. The page SIZE is one for all of them, as the sort is: a
198
+ * group's pager changes it everywhere.
199
+ *
200
+ * `storageKey` persists that one view — the sort and the page size — in the place the
201
+ * ungrouped table keeps its own (same key, same prefix, same blob), read on mount and
202
+ * written on a change, so a reviewer switching the grouping on or off keeps both
203
+ * (0.35, Kurvenschmiede; before, it persisted the ungrouped table only). What only
204
+ * the ungrouped table has — column widths, hidden columns — stays in the blob for it.
193
205
  *
194
206
  * Groups fold (each on its own, remembered while the panel lives), and a folded group's
195
207
  * rows are not rendered at all — only its header. Which groups start open is
@@ -233,7 +245,7 @@ interface TranslationReviewPanelProps {
233
245
  * the page's `h1`. */
234
246
  groupHeadingAs?: "h2" | "h3" | "h4";
235
247
  className?: string;
236
- labels?: Partial<TranslationReviewLabels>;
248
+ labels?: LabelOverride<TranslationReviewLabels>;
237
249
  }
238
250
  /**
239
251
  * The page body for one locale: progress, filters (status, source, namespace, search,
@@ -256,6 +268,4 @@ interface TranslationReviewPanelProps {
256
268
  * approval it takes back. A swipe on the next card while one is out is queued rather than
257
269
  * refused — a reviewer swiping down a list is faster than the server.
258
270
  */
259
- declare function TranslationReviewPanel({ rows: rowsProp, localeLabel, referenceLabel, onSave, onClear, readOnly, areas, areaLabels, inArea, sourceLabels, filter: filterProp, onFilterChange, progress, pageSize, storageKey, formatDate, formatError, swipe, undo: undoProp, groupBy, groupLabel, groupHeadingAs, defaultGroupsOpen, className, labels: labelsProp, }: TranslationReviewPanelProps): react.JSX.Element;
260
-
261
- export { type TranslationReviewGroupBy, TranslationReviewLabels, type TranslationReviewOrigin, TranslationReviewPanel, type TranslationReviewPanelProps, type TranslationReviewSaveInfo };
271
+ export declare function TranslationReviewPanel({ rows: rowsProp, localeLabel, referenceLabel, onSave, onClear, readOnly, areas, areaLabels, inArea, sourceLabels, filter: filterProp, onFilterChange, progress, pageSize, storageKey, storageKeyPrefix, formatDate, formatError, swipe, undo: undoProp, groupBy, groupLabel, groupHeadingAs, defaultGroupsOpen, className, labels: labelsProp, }: TranslationReviewPanelProps): import("react").JSX.Element;
@@ -27,10 +27,13 @@ import { Disclosure } from "./disclosure.js";
27
27
  import { SearchField } from "./search-field.js";
28
28
  import { toast } from "./toast.js";
29
29
  import { ToggleGroup } from "./toggle-group.js";
30
+ import { useSharedTableView } from "./use-table-state.js";
30
31
  import { TranslationReviewEditor } from "./translation-review-editor.js";
31
32
  import { DEFAULT_TRANSLATION_REVIEW_LABELS, reviewStatusLabel } from "./translation-review-labels.js";
32
33
  import { ReviewStatusChip, TranslationProgress } from "./translation-review-parts.js";
33
- import { Button, IconButton, Select } from "./ui.js";
34
+ import { Button } from "./button.js";
35
+ import { IconButton } from "./icon-button.js";
36
+ import { Select } from "./select.js";
34
37
  import { COMMIT_EXCEPT_BILLING, useWriteLock } from "./write-lock.js";
35
38
  import {
36
39
  REVIEW_STATUS_TONES,
@@ -89,7 +92,7 @@ function useFilterEchoCheck(filterProp) {
89
92
  };
90
93
  }
91
94
  function TextCell({ row, labels, clamp }) {
92
- return row.text === "" ? /* @__PURE__ */ jsx("span", { className: "italic text-[var(--text-muted)]", children: labels.missingText }) : /* @__PURE__ */ jsx("span", { lang: row.locale, className: cn("whitespace-pre-line break-words", clamp && "line-clamp-3"), children: row.text });
95
+ return row.text === "" ? /* @__PURE__ */ jsx("span", { className: "italic text-muted", children: labels.missingText }) : /* @__PURE__ */ jsx("span", { lang: row.locale, className: cn("whitespace-pre-line break-words", clamp && "line-clamp-3 large:line-clamp-none"), children: row.text });
93
96
  }
94
97
  function TranslationReviewPanel({
95
98
  rows: rowsProp,
@@ -107,6 +110,7 @@ function TranslationReviewPanel({
107
110
  progress = true,
108
111
  pageSize = 50,
109
112
  storageKey,
113
+ storageKeyPrefix,
110
114
  formatDate,
111
115
  formatError,
112
116
  swipe = false,
@@ -176,7 +180,12 @@ function TranslationReviewPanel({
176
180
  };
177
181
  const [confirming, setConfirming] = useState(null);
178
182
  const confirmFocus = useRef(null);
179
- const [groupSorts, setGroupSorts] = useState([]);
183
+ const groupView = useSharedTableView({
184
+ active: groupBy !== void 0,
185
+ storageKey,
186
+ storageKeyPrefix,
187
+ defaultPageSize: pageSize
188
+ });
180
189
  const setFilter = (patch) => {
181
190
  const next = { ...filter, ...patch };
182
191
  setOwnFilter(next);
@@ -289,14 +298,14 @@ function TranslationReviewPanel({
289
298
  {
290
299
  key: "key",
291
300
  header: labels.key,
292
- cell: (r) => /* @__PURE__ */ jsx("code", { className: "break-all text-xs text-[var(--text-secondary)]", children: r.key }),
301
+ cell: (r) => /* @__PURE__ */ jsx("code", { className: "break-all text-xs text-secondary", children: r.key }),
293
302
  sortBy: (r) => r.key,
294
303
  mobileHidden: true
295
304
  },
296
305
  {
297
306
  key: "reference",
298
307
  header: referenceLabel,
299
- cell: (r) => /* @__PURE__ */ jsx("span", { className: "line-clamp-3 whitespace-pre-line break-words text-[var(--text-secondary)]", children: r.reference }),
308
+ cell: (r) => /* @__PURE__ */ jsx("span", { className: "line-clamp-3 whitespace-pre-line break-words text-secondary", children: r.reference }),
300
309
  mobileHidden: true
301
310
  },
302
311
  {
@@ -419,10 +428,12 @@ function TranslationReviewPanel({
419
428
  frame: false,
420
429
  chrome: "minimal",
421
430
  maxBodyHeight: "none",
422
- sorts: groupSorts,
423
- onSortsChange: setGroupSorts,
431
+ sorts: groupView.sorts,
432
+ onSortsChange: groupView.setSorts,
433
+ pageSize: groupView.pageSize,
434
+ onPageSizeChange: groupView.setPageSize,
424
435
  labels: { table: group.name }
425
- } : { storageKey },
436
+ } : { storageKey, storageKeyPrefix },
426
437
  isExpanded: (r) => r.id === openId,
427
438
  onRowClick: (r) => {
428
439
  if (openId !== r.id) keepGroupOpen(group?.key);
@@ -450,8 +461,8 @@ function TranslationReviewPanel({
450
461
  r.id
451
462
  ),
452
463
  mobileCard: (r) => /* @__PURE__ */ jsxs("div", { className: "min-w-0 space-y-1", children: [
453
- /* @__PURE__ */ jsx("code", { className: "block break-all text-xs text-[var(--text-muted)]", children: r.key }),
454
- /* @__PURE__ */ jsx("div", { className: "text-sm text-[var(--text-primary)]", children: /* @__PURE__ */ jsx(TextCell, { row: r, labels, clamp: true }) }),
464
+ /* @__PURE__ */ jsx("code", { className: "block break-all text-xs text-muted", children: r.key }),
465
+ /* @__PURE__ */ jsx("div", { className: "text-sm text-primary", children: /* @__PURE__ */ jsx(TextCell, { row: r, labels, clamp: true }) }),
455
466
  /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-1", children: [
456
467
  /* @__PURE__ */ jsx(ReviewStatusChip, { status: r.status, labels: labelsProp }),
457
468
  r.placeholderMismatch && /* @__PURE__ */ jsx(Chip, { size: "sm", tone: "danger", variant: "outline", children: labels.placeholderChip })
@@ -497,9 +508,9 @@ function TranslationReviewPanel({
497
508
  ]
498
509
  }
499
510
  ) : void 0,
500
- bodyClassName: "space-y-0 px-0 pb-0 border-t border-[var(--border)]",
511
+ bodyClassName: "space-y-0 px-0 pb-0 border-t border-subtle",
501
512
  children: [
502
- body && confirming === g.key && targets.length > 0 && /* @__PURE__ */ jsx("div", { className: "border-b border-[var(--border)] p-3", children: /* @__PURE__ */ jsx(AlertBanner, { tone: "warning", size: "sm", children: /* @__PURE__ */ jsxs("div", { className: "min-w-0 space-y-2", children: [
513
+ body && confirming === g.key && targets.length > 0 && /* @__PURE__ */ jsx("div", { className: "border-b border-subtle p-3", children: /* @__PURE__ */ jsx(AlertBanner, { tone: "warning", size: "sm", children: /* @__PURE__ */ jsxs("div", { className: "min-w-0 space-y-2", children: [
503
514
  /* @__PURE__ */ jsx("p", { id: questionId, children: labels.confirmGroup(targets.length, name) }),
504
515
  /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-2", children: [
505
516
  /* @__PURE__ */ jsx(
@@ -573,7 +584,7 @@ function TranslationReviewPanel({
573
584
  SearchField,
574
585
  {
575
586
  className: "min-w-0 md:flex-1",
576
- label: labels.search,
587
+ "aria-label": labels.search,
577
588
  value: filter.query,
578
589
  onChange: (next) => setFilter({ query: next })
579
590
  }