@eifi1/ui-kit 0.33.0 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1539) hide show
  1. package/README.md +445 -283
  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 -100
  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 -100
  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 -100
  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 -100
  63. package/dist/admin/plan-change.js +17 -23
  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 -100
  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 -100
  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 -100
  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 -100
  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 -100
  125. package/dist/auth/register-form.js +11 -31
  126. package/dist/auth/register-form.js.map +1 -1
  127. package/dist/auth/reset-password-form-labels.d.ts +3 -0
  128. package/dist/auth/reset-password-form-labels.js +24 -0
  129. package/dist/auth/reset-password-form-labels.js.map +1 -0
  130. package/dist/auth/reset-password-form.d.ts +12 -15
  131. package/dist/auth/reset-password-form.js +6 -22
  132. package/dist/auth/reset-password-form.js.map +1 -1
  133. package/dist/auth/sign-in-form-labels.d.ts +3 -0
  134. package/dist/auth/sign-in-form-labels.js +42 -0
  135. package/dist/auth/sign-in-form-labels.js.map +1 -0
  136. package/dist/auth/sign-in-form.d.ts +15 -19
  137. package/dist/auth/sign-in-form.js +12 -46
  138. package/dist/auth/sign-in-form.js.map +1 -1
  139. package/dist/auth/status-parts.d.ts +13 -17
  140. package/dist/auth/status-parts.js +3 -3
  141. package/dist/auth/status-parts.js.map +1 -1
  142. package/dist/auth/verify-email-labels.d.ts +2 -0
  143. package/dist/auth/verify-email-labels.js +25 -0
  144. package/dist/auth/verify-email-labels.js.map +1 -0
  145. package/dist/auth/verify-email.d.ts +15 -17
  146. package/dist/auth/verify-email.js +4 -21
  147. package/dist/auth/verify-email.js.map +1 -1
  148. package/dist/billing/billing-banner.d.ts +8 -108
  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 -100
  152. package/dist/billing/billing-labels.js.map +1 -1
  153. package/dist/billing/billing-lock.d.ts +10 -109
  154. package/dist/billing/billing-overview.d.ts +7 -108
  155. package/dist/billing/billing-standing.d.ts +6 -107
  156. package/dist/billing/checkout-processing.d.ts +8 -110
  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 +22 -119
  161. package/dist/billing/pay-page.js.map +1 -1
  162. package/dist/billing/plan-card.d.ts +14 -114
  163. package/dist/billing/plan-card.js +15 -13
  164. package/dist/billing/plan-card.js.map +1 -1
  165. package/dist/billing/plan-limit-notice.d.ts +8 -108
  166. package/dist/billing/plan-limit-notice.js +1 -1
  167. package/dist/billing/plan-limit-notice.js.map +1 -1
  168. package/dist/billing/plan-limit-toast.d.ts +6 -106
  169. package/dist/billing/plan-limit.d.ts +2 -4
  170. package/dist/billing/plan-price.d.ts +10 -12
  171. package/dist/billing/subscription-actions.d.ts +6 -108
  172. package/dist/billing/subscription-actions.js +2 -2
  173. package/dist/billing/subscription-actions.js.map +1 -1
  174. package/dist/billing/subscription-status-chip.d.ts +7 -107
  175. package/dist/chart.d.ts +12 -112
  176. package/dist/chart.js +4 -0
  177. package/dist/chart.js.map +1 -1
  178. package/dist/components/account-chips-labels.d.ts +10 -0
  179. package/dist/components/account-chips-labels.js +15 -0
  180. package/dist/components/account-chips-labels.js.map +1 -0
  181. package/dist/components/account-chips.d.ts +22 -44
  182. package/dist/components/account-chips.js +9 -14
  183. package/dist/components/account-chips.js.map +1 -1
  184. package/dist/components/alert-banner.d.ts +15 -11
  185. package/dist/components/alert-banner.js +28 -18
  186. package/dist/components/alert-banner.js.map +1 -1
  187. package/dist/components/amount-input.d.ts +66 -109
  188. package/dist/components/amount-input.js +259 -283
  189. package/dist/components/amount-input.js.map +1 -1
  190. package/dist/components/appearance-labels.d.ts +6 -10
  191. package/dist/components/appearance-labels.js.map +1 -1
  192. package/dist/components/authed-image-labels.d.ts +2 -0
  193. package/dist/components/authed-image-labels.js +10 -0
  194. package/dist/components/authed-image-labels.js.map +1 -0
  195. package/dist/components/authed-image.d.ts +11 -13
  196. package/dist/components/authed-image.js +2 -6
  197. package/dist/components/authed-image.js.map +1 -1
  198. package/dist/components/autocomplete.d.ts +13 -11
  199. package/dist/components/autocomplete.js +35 -30
  200. package/dist/components/autocomplete.js.map +1 -1
  201. package/dist/components/breadcrumbs-labels.d.ts +2 -0
  202. package/dist/components/breadcrumbs-labels.js +9 -0
  203. package/dist/components/breadcrumbs-labels.js.map +1 -0
  204. package/dist/components/breadcrumbs.d.ts +10 -12
  205. package/dist/components/breadcrumbs.js +7 -10
  206. package/dist/components/breadcrumbs.js.map +1 -1
  207. package/dist/components/bulk-action-bar-labels.d.ts +2 -0
  208. package/dist/components/bulk-action-bar-labels.js +10 -0
  209. package/dist/components/bulk-action-bar-labels.js.map +1 -0
  210. package/dist/components/bulk-action-bar.d.ts +10 -12
  211. package/dist/components/bulk-action-bar.js +9 -12
  212. package/dist/components/bulk-action-bar.js.map +1 -1
  213. package/dist/components/button-group.d.ts +7 -109
  214. package/dist/components/button-group.js +5 -5
  215. package/dist/components/button-group.js.map +1 -1
  216. package/dist/components/button-look.d.ts +88 -0
  217. package/dist/components/button-look.js +91 -0
  218. package/dist/components/button-look.js.map +1 -0
  219. package/dist/components/button.d.ts +153 -0
  220. package/dist/components/button.js +165 -0
  221. package/dist/components/button.js.map +1 -0
  222. package/dist/components/calculator.d.ts +8 -106
  223. package/dist/components/calculator.js +10 -7
  224. package/dist/components/calculator.js.map +1 -1
  225. package/dist/components/calendar-heatmap-labels.d.ts +3 -0
  226. package/dist/components/calendar-heatmap-labels.js +12 -0
  227. package/dist/components/calendar-heatmap-labels.js.map +1 -0
  228. package/dist/components/calendar-heatmap.d.ts +13 -16
  229. package/dist/components/calendar-heatmap.js +7 -13
  230. package/dist/components/calendar-heatmap.js.map +1 -1
  231. package/dist/components/card.d.ts +145 -0
  232. package/dist/components/card.js +186 -0
  233. package/dist/components/card.js.map +1 -0
  234. package/dist/components/chart-height.d.ts +4 -7
  235. package/dist/components/chart-zoom-core.d.ts +202 -0
  236. package/dist/components/chart-zoom-core.js +334 -0
  237. package/dist/components/chart-zoom-core.js.map +1 -0
  238. package/dist/components/chart-zoom.d.ts +39 -205
  239. package/dist/components/chart-zoom.js +15 -316
  240. package/dist/components/chart-zoom.js.map +1 -1
  241. package/dist/components/chart.d.ts +11 -15
  242. package/dist/components/chart.js +11 -11
  243. package/dist/components/chart.js.map +1 -1
  244. package/dist/components/checkbox-group.d.ts +6 -10
  245. package/dist/components/checkbox-group.js +10 -9
  246. package/dist/components/checkbox-group.js.map +1 -1
  247. package/dist/components/checkbox.d.ts +8 -12
  248. package/dist/components/checkbox.js +20 -18
  249. package/dist/components/checkbox.js.map +1 -1
  250. package/dist/components/chip-input.d.ts +73 -0
  251. package/dist/components/chip-input.js +224 -0
  252. package/dist/components/chip-input.js.map +1 -0
  253. package/dist/components/chip-labels.d.ts +2 -0
  254. package/dist/components/chip-labels.js +12 -0
  255. package/dist/components/chip-labels.js.map +1 -0
  256. package/dist/components/chip.d.ts +18 -93
  257. package/dist/components/chip.js +74 -426
  258. package/dist/components/chip.js.map +1 -1
  259. package/dist/components/choice-card.d.ts +21 -18
  260. package/dist/components/choice-card.js +45 -45
  261. package/dist/components/choice-card.js.map +1 -1
  262. package/dist/components/column-mapper-labels.d.ts +5 -0
  263. package/dist/components/column-mapper-labels.js +34 -0
  264. package/dist/components/column-mapper-labels.js.map +1 -0
  265. package/dist/components/column-mapper.d.ts +15 -17
  266. package/dist/components/column-mapper.js +11 -37
  267. package/dist/components/column-mapper.js.map +1 -1
  268. package/dist/components/combobox-core.d.ts +79 -40
  269. package/dist/components/combobox-core.js +189 -122
  270. package/dist/components/combobox-core.js.map +1 -1
  271. package/dist/components/combobox-suggestions.d.ts +76 -0
  272. package/dist/components/combobox-suggestions.js +56 -0
  273. package/dist/components/combobox-suggestions.js.map +1 -0
  274. package/dist/components/combobox.d.ts +14 -159
  275. package/dist/components/combobox.js +40 -507
  276. package/dist/components/combobox.js.map +1 -1
  277. package/dist/components/confirm-dialog-labels.d.ts +7 -0
  278. package/dist/components/confirm-dialog-labels.js +10 -0
  279. package/dist/components/confirm-dialog-labels.js.map +1 -0
  280. package/dist/components/confirm-dialog.d.ts +165 -100
  281. package/dist/components/confirm-dialog.js +2 -6
  282. package/dist/components/confirm-dialog.js.map +1 -1
  283. package/dist/components/copy-button-labels.d.ts +2 -0
  284. package/dist/components/copy-button-labels.js +12 -0
  285. package/dist/components/copy-button-labels.js.map +1 -0
  286. package/dist/components/copy-button.d.ts +70 -100
  287. package/dist/components/copy-button.js +4 -9
  288. package/dist/components/copy-button.js.map +1 -1
  289. package/dist/components/country-select-labels.d.ts +2 -0
  290. package/dist/components/country-select-labels.js +10 -0
  291. package/dist/components/country-select-labels.js.map +1 -0
  292. package/dist/components/country-select.d.ts +18 -15
  293. package/dist/components/country-select.js +49 -64
  294. package/dist/components/country-select.js.map +1 -1
  295. package/dist/components/currency-option-list.d.ts +63 -0
  296. package/dist/components/currency-option-list.js +135 -0
  297. package/dist/components/currency-option-list.js.map +1 -0
  298. package/dist/components/currency-select.d.ts +10 -30
  299. package/dist/components/currency-select.js +50 -133
  300. package/dist/components/currency-select.js.map +1 -1
  301. package/dist/components/danger-confirm-labels.d.ts +14 -0
  302. package/dist/components/danger-confirm-labels.js +17 -0
  303. package/dist/components/danger-confirm-labels.js.map +1 -0
  304. package/dist/components/danger-confirm.d.ts +448 -100
  305. package/dist/components/danger-confirm.js +40 -46
  306. package/dist/components/danger-confirm.js.map +1 -1
  307. package/dist/components/data-table-cells.d.ts +9 -24
  308. package/dist/components/data-table-cells.js +1 -1
  309. package/dist/components/data-table-cells.js.map +1 -1
  310. package/dist/components/data-table-column-settings.d.ts +16 -0
  311. package/dist/components/data-table-column-settings.js +119 -0
  312. package/dist/components/data-table-column-settings.js.map +1 -0
  313. package/dist/components/data-table-filter-popover.d.ts +5 -19
  314. package/dist/components/data-table-filter-popover.js +39 -22
  315. package/dist/components/data-table-filter-popover.js.map +1 -1
  316. package/dist/components/data-table-filters.d.ts +93 -15
  317. package/dist/components/data-table-filters.js +22 -7
  318. package/dist/components/data-table-filters.js.map +1 -1
  319. package/dist/components/data-table-head.d.ts +36 -0
  320. package/dist/components/data-table-head.js +190 -0
  321. package/dist/components/data-table-head.js.map +1 -0
  322. package/dist/components/data-table-labels.d.ts +124 -15
  323. package/dist/components/data-table-labels.js +9 -5
  324. package/dist/components/data-table-labels.js.map +1 -1
  325. package/dist/components/data-table-mobile.d.ts +106 -0
  326. package/dist/components/data-table-mobile.js +412 -0
  327. package/dist/components/data-table-mobile.js.map +1 -0
  328. package/dist/components/data-table-pagination.d.ts +6 -21
  329. package/dist/components/data-table-pagination.js +7 -7
  330. package/dist/components/data-table-pagination.js.map +1 -1
  331. package/dist/components/data-table-resize.d.ts +37 -0
  332. package/dist/components/data-table-resize.js +103 -0
  333. package/dist/components/data-table-resize.js.map +1 -0
  334. package/dist/components/data-table-row-actions.d.ts +24 -0
  335. package/dist/components/data-table-row-actions.js +95 -0
  336. package/dist/components/data-table-row-actions.js.map +1 -0
  337. package/dist/components/data-table-selection.d.ts +21 -0
  338. package/dist/components/data-table-selection.js +30 -0
  339. package/dist/components/data-table-selection.js.map +1 -0
  340. package/dist/components/data-table-shared.d.ts +77 -0
  341. package/dist/components/data-table-shared.js +77 -0
  342. package/dist/components/data-table-shared.js.map +1 -0
  343. package/dist/components/data-table-sort.d.ts +8 -10
  344. package/dist/components/data-table.d.ts +603 -15
  345. package/dist/components/data-table.js +134 -927
  346. package/dist/components/data-table.js.map +1 -1
  347. package/dist/components/date-field.d.ts +203 -0
  348. package/dist/components/date-field.js +270 -0
  349. package/dist/components/date-field.js.map +1 -0
  350. package/dist/components/date-picker.d.ts +6 -261
  351. package/dist/components/date-picker.js +24 -760
  352. package/dist/components/date-picker.js.map +1 -1
  353. package/dist/components/date-range-picker.d.ts +125 -0
  354. package/dist/components/date-range-picker.js +261 -0
  355. package/dist/components/date-range-picker.js.map +1 -0
  356. package/dist/components/description-list-labels.d.ts +2 -0
  357. package/dist/components/description-list-labels.js +8 -0
  358. package/dist/components/description-list-labels.js.map +1 -0
  359. package/dist/components/description-list.d.ts +13 -15
  360. package/dist/components/description-list.js +17 -11
  361. package/dist/components/description-list.js.map +1 -1
  362. package/dist/components/dialog-frame-labels.d.ts +2 -0
  363. package/dist/components/dialog-frame-labels.js +6 -0
  364. package/dist/components/dialog-frame-labels.js.map +1 -0
  365. package/dist/components/dialog-frame.d.ts +7 -11
  366. package/dist/components/dialog-frame.js +6 -6
  367. package/dist/components/dialog-frame.js.map +1 -1
  368. package/dist/components/disclosure.d.ts +6 -10
  369. package/dist/components/disclosure.js +11 -11
  370. package/dist/components/disclosure.js.map +1 -1
  371. package/dist/components/dropdown.d.ts +55 -27
  372. package/dist/components/dropdown.js +62 -31
  373. package/dist/components/dropdown.js.map +1 -1
  374. package/dist/components/empty-state.d.ts +64 -0
  375. package/dist/components/empty-state.js +70 -0
  376. package/dist/components/empty-state.js.map +1 -0
  377. package/dist/components/entity-combobox.d.ts +10 -11
  378. package/dist/components/entity-combobox.js +14 -13
  379. package/dist/components/entity-combobox.js.map +1 -1
  380. package/dist/components/error-boundary-labels.d.ts +2 -0
  381. package/dist/components/error-boundary-labels.js +19 -0
  382. package/dist/components/error-boundary-labels.js.map +1 -0
  383. package/dist/components/error-boundary.d.ts +17 -17
  384. package/dist/components/error-boundary.js +5 -17
  385. package/dist/components/error-boundary.js.map +1 -1
  386. package/dist/components/facing-pair.d.ts +7 -115
  387. package/dist/components/facing-pair.js +1 -1
  388. package/dist/components/facing-pair.js.map +1 -1
  389. package/dist/components/field-base.d.ts +260 -0
  390. package/dist/components/field-base.js +228 -0
  391. package/dist/components/field-base.js.map +1 -0
  392. package/dist/components/field-parts.d.ts +188 -87
  393. package/dist/components/field-parts.js +60 -33
  394. package/dist/components/field-parts.js.map +1 -1
  395. package/dist/components/field-strip.d.ts +19 -28
  396. package/dist/components/field-strip.js +2 -2
  397. package/dist/components/field-strip.js.map +1 -1
  398. package/dist/components/field-sync-labels.d.ts +2 -0
  399. package/dist/components/field-sync-labels.js +12 -0
  400. package/dist/components/field-sync-labels.js.map +1 -0
  401. package/dist/components/field-sync.d.ts +20 -19
  402. package/dist/components/field-sync.js +4 -10
  403. package/dist/components/field-sync.js.map +1 -1
  404. package/dist/components/field.d.ts +45 -10
  405. package/dist/components/field.js +10 -8
  406. package/dist/components/field.js.map +1 -1
  407. package/dist/components/file-button.d.ts +85 -100
  408. package/dist/components/file-button.js +23 -169
  409. package/dist/components/file-button.js.map +1 -1
  410. package/dist/components/file-dropzone.d.ts +9 -109
  411. package/dist/components/file-dropzone.js +22 -22
  412. package/dist/components/file-dropzone.js.map +1 -1
  413. package/dist/components/floating-panel-labels.d.ts +2 -0
  414. package/dist/components/floating-panel-labels.js +9 -0
  415. package/dist/components/floating-panel-labels.js.map +1 -0
  416. package/dist/components/floating-panel.d.ts +17 -21
  417. package/dist/components/floating-panel.js +19 -18
  418. package/dist/components/floating-panel.js.map +1 -1
  419. package/dist/components/focus-ring.d.ts +9 -6
  420. package/dist/components/focus-ring.js +2 -2
  421. package/dist/components/focus-ring.js.map +1 -1
  422. package/dist/components/form-actions-labels.d.ts +2 -0
  423. package/dist/components/form-actions-labels.js +10 -0
  424. package/dist/components/form-actions-labels.js.map +1 -0
  425. package/dist/components/form-actions.d.ts +280 -100
  426. package/dist/components/form-actions.js +10 -20
  427. package/dist/components/form-actions.js.map +1 -1
  428. package/dist/components/full-bleed-dialog.d.ts +7 -8
  429. package/dist/components/full-bleed-dialog.js +14 -13
  430. package/dist/components/full-bleed-dialog.js.map +1 -1
  431. package/dist/components/grouped-picker.d.ts +21 -16
  432. package/dist/components/grouped-picker.js +76 -62
  433. package/dist/components/grouped-picker.js.map +1 -1
  434. package/dist/components/help-popover.d.ts +60 -0
  435. package/dist/components/help-popover.js +48 -0
  436. package/dist/components/help-popover.js.map +1 -0
  437. package/dist/components/hover-menu.d.ts +17 -16
  438. package/dist/components/hover-menu.js +18 -17
  439. package/dist/components/hover-menu.js.map +1 -1
  440. package/dist/components/iban-input-labels.d.ts +2 -0
  441. package/dist/components/iban-input-labels.js +13 -0
  442. package/dist/components/iban-input-labels.js.map +1 -0
  443. package/dist/components/iban-input.d.ts +73 -100
  444. package/dist/components/iban-input.js +22 -15
  445. package/dist/components/iban-input.js.map +1 -1
  446. package/dist/components/icon-button.d.ts +300 -0
  447. package/dist/components/icon-button.js +465 -0
  448. package/dist/components/icon-button.js.map +1 -0
  449. package/dist/components/icon-picker-labels.d.ts +2 -0
  450. package/dist/components/icon-picker-labels.js +12 -0
  451. package/dist/components/icon-picker-labels.js.map +1 -0
  452. package/dist/components/icon-picker.d.ts +13 -13
  453. package/dist/components/icon-picker.js +18 -17
  454. package/dist/components/icon-picker.js.map +1 -1
  455. package/dist/components/image-grid-labels.d.ts +2 -0
  456. package/dist/components/image-grid-labels.js +10 -0
  457. package/dist/components/image-grid-labels.js.map +1 -0
  458. package/dist/components/image-grid.d.ts +12 -14
  459. package/dist/components/image-grid.js +6 -10
  460. package/dist/components/image-grid.js.map +1 -1
  461. package/dist/components/inline-edit-field-labels.d.ts +2 -0
  462. package/dist/components/inline-edit-field-labels.js +10 -0
  463. package/dist/components/inline-edit-field-labels.js.map +1 -0
  464. package/dist/components/inline-edit-field.d.ts +11 -13
  465. package/dist/components/inline-edit-field.js +11 -13
  466. package/dist/components/inline-edit-field.js.map +1 -1
  467. package/dist/components/inline-entity-combobox.d.ts +155 -0
  468. package/dist/components/inline-entity-combobox.js +467 -0
  469. package/dist/components/inline-entity-combobox.js.map +1 -0
  470. package/dist/components/input.d.ts +98 -0
  471. package/dist/components/input.js +219 -0
  472. package/dist/components/input.js.map +1 -0
  473. package/dist/components/jump-calendar.d.ts +8 -0
  474. package/dist/components/jump-calendar.js +274 -0
  475. package/dist/components/jump-calendar.js.map +1 -0
  476. package/dist/components/language-select.d.ts +20 -110
  477. package/dist/components/language-select.js +12 -7
  478. package/dist/components/language-select.js.map +1 -1
  479. package/dist/components/legal-labels.d.ts +2 -0
  480. package/dist/components/legal-labels.js +100 -0
  481. package/dist/components/legal-labels.js.map +1 -0
  482. package/dist/components/legal-page.d.ts +17 -117
  483. package/dist/components/legal-page.js +2 -2
  484. package/dist/components/legal-page.js.map +1 -1
  485. package/dist/components/legal.d.ts +353 -100
  486. package/dist/components/legal.js +7 -101
  487. package/dist/components/legal.js.map +1 -1
  488. package/dist/components/lightbox-labels.d.ts +2 -0
  489. package/dist/components/lightbox-labels.js +17 -0
  490. package/dist/components/lightbox-labels.js.map +1 -0
  491. package/dist/components/lightbox.d.ts +12 -14
  492. package/dist/components/lightbox.js +9 -19
  493. package/dist/components/lightbox.js.map +1 -1
  494. package/dist/components/line-items-labels.d.ts +2 -0
  495. package/dist/components/line-items-labels.js +13 -0
  496. package/dist/components/line-items-labels.js.map +1 -0
  497. package/dist/components/line-items.d.ts +16 -18
  498. package/dist/components/line-items.js +18 -26
  499. package/dist/components/line-items.js.map +1 -1
  500. package/dist/components/list-labels.d.ts +2 -0
  501. package/dist/components/list-labels.js +9 -0
  502. package/dist/components/list-labels.js.map +1 -0
  503. package/dist/components/list.d.ts +32 -21
  504. package/dist/components/list.js +41 -25
  505. package/dist/components/list.js.map +1 -1
  506. package/dist/components/loading-state.d.ts +5 -9
  507. package/dist/components/loading-state.js +2 -2
  508. package/dist/components/loading-state.js.map +1 -1
  509. package/dist/components/measured-grid-labels.d.ts +4 -0
  510. package/dist/components/measured-grid-labels.js +21 -0
  511. package/dist/components/measured-grid-labels.js.map +1 -0
  512. package/dist/components/measured-grid.d.ts +13 -17
  513. package/dist/components/measured-grid.js +31 -50
  514. package/dist/components/measured-grid.js.map +1 -1
  515. package/dist/components/menu-item.d.ts +10 -10
  516. package/dist/components/menu-item.js +9 -9
  517. package/dist/components/menu-item.js.map +1 -1
  518. package/dist/components/mini-calendar-labels.d.ts +4 -0
  519. package/dist/components/mini-calendar-labels.js +14 -0
  520. package/dist/components/mini-calendar-labels.js.map +1 -0
  521. package/dist/components/mini-calendar.d.ts +10 -14
  522. package/dist/components/mini-calendar.js +22 -29
  523. package/dist/components/mini-calendar.js.map +1 -1
  524. package/dist/components/modal.d.ts +26 -18
  525. package/dist/components/modal.js +8 -11
  526. package/dist/components/modal.js.map +1 -1
  527. package/dist/components/money-draft.d.ts +34 -0
  528. package/dist/components/money-draft.js +39 -0
  529. package/dist/components/money-draft.js.map +1 -0
  530. package/dist/components/money-field.d.ts +13 -110
  531. package/dist/components/money-field.js +6 -22
  532. package/dist/components/money-field.js.map +1 -1
  533. package/dist/components/month-picker-labels.d.ts +5 -0
  534. package/dist/components/month-picker-labels.js +18 -0
  535. package/dist/components/month-picker-labels.js.map +1 -0
  536. package/dist/components/month-picker.d.ts +15 -13
  537. package/dist/components/month-picker.js +34 -32
  538. package/dist/components/month-picker.js.map +1 -1
  539. package/dist/components/multi-entity-combobox.d.ts +9 -11
  540. package/dist/components/multi-entity-combobox.js +14 -13
  541. package/dist/components/multi-entity-combobox.js.map +1 -1
  542. package/dist/components/multi-select.d.ts +81 -21
  543. package/dist/components/multi-select.js +171 -197
  544. package/dist/components/multi-select.js.map +1 -1
  545. package/dist/components/nav-pills.d.ts +9 -10
  546. package/dist/components/nav-pills.js +53 -42
  547. package/dist/components/nav-pills.js.map +1 -1
  548. package/dist/components/number-field.d.ts +13 -110
  549. package/dist/components/number-field.js +2 -3
  550. package/dist/components/number-field.js.map +1 -1
  551. package/dist/components/number-input.d.ts +55 -109
  552. package/dist/components/number-input.js +50 -67
  553. package/dist/components/number-input.js.map +1 -1
  554. package/dist/components/numeric-field.d.ts +85 -0
  555. package/dist/components/numeric-field.js +71 -0
  556. package/dist/components/numeric-field.js.map +1 -0
  557. package/dist/components/numpad-sheet.d.ts +5 -107
  558. package/dist/components/numpad-sheet.js +7 -7
  559. package/dist/components/numpad-sheet.js.map +1 -1
  560. package/dist/components/one-time-code-input.d.ts +6 -7
  561. package/dist/components/one-time-code-input.js +119 -124
  562. package/dist/components/one-time-code-input.js.map +1 -1
  563. package/dist/components/page-contents-labels.d.ts +2 -0
  564. package/dist/components/page-contents-labels.js +8 -0
  565. package/dist/components/page-contents-labels.js.map +1 -0
  566. package/dist/components/page-contents.d.ts +13 -15
  567. package/dist/components/page-contents.js +7 -9
  568. package/dist/components/page-contents.js.map +1 -1
  569. package/dist/components/page-header.d.ts +10 -10
  570. package/dist/components/page-header.js +3 -3
  571. package/dist/components/page-header.js.map +1 -1
  572. package/dist/components/password-strength-labels.d.ts +2 -0
  573. package/dist/components/password-strength-labels.js +21 -0
  574. package/dist/components/password-strength-labels.js.map +1 -0
  575. package/dist/components/password-strength.d.ts +15 -17
  576. package/dist/components/password-strength.js +7 -22
  577. package/dist/components/password-strength.js.map +1 -1
  578. package/dist/components/phone-input-labels.d.ts +2 -0
  579. package/dist/components/phone-input-labels.js +9 -0
  580. package/dist/components/phone-input-labels.js.map +1 -0
  581. package/dist/components/phone-input.d.ts +75 -100
  582. package/dist/components/phone-input.js +20 -23
  583. package/dist/components/phone-input.js.map +1 -1
  584. package/dist/components/picker-sheet.d.ts +20 -8
  585. package/dist/components/picker-sheet.js +22 -11
  586. package/dist/components/picker-sheet.js.map +1 -1
  587. package/dist/components/pie-chart-labels.d.ts +2 -4
  588. package/dist/components/pie-chart.d.ts +8 -11
  589. package/dist/components/pie-chart.js +5 -5
  590. package/dist/components/pie-chart.js.map +1 -1
  591. package/dist/components/popover-labels.d.ts +2 -0
  592. package/dist/components/popover-labels.js +11 -0
  593. package/dist/components/popover-labels.js.map +1 -0
  594. package/dist/components/popover.d.ts +13 -11
  595. package/dist/components/popover.js +21 -23
  596. package/dist/components/popover.js.map +1 -1
  597. package/dist/components/progress-bar-labels.d.ts +2 -0
  598. package/dist/components/progress-bar-labels.js +9 -0
  599. package/dist/components/progress-bar-labels.js.map +1 -0
  600. package/dist/components/progress-bar.d.ts +16 -15
  601. package/dist/components/progress-bar.js +22 -20
  602. package/dist/components/progress-bar.js.map +1 -1
  603. package/dist/components/qr-code.d.ts +4 -8
  604. package/dist/components/qr-code.js.map +1 -1
  605. package/dist/components/reauth-dialog-labels.d.ts +2 -0
  606. package/dist/components/reauth-dialog-labels.js +12 -0
  607. package/dist/components/reauth-dialog-labels.js.map +1 -0
  608. package/dist/components/reauth-dialog.d.ts +8 -10
  609. package/dist/components/reauth-dialog.js +3 -8
  610. package/dist/components/reauth-dialog.js.map +1 -1
  611. package/dist/components/row-actions-labels.d.ts +2 -0
  612. package/dist/components/row-actions-labels.js +9 -0
  613. package/dist/components/row-actions-labels.js.map +1 -0
  614. package/dist/components/row-actions.d.ts +224 -100
  615. package/dist/components/row-actions.js +4 -5
  616. package/dist/components/row-actions.js.map +1 -1
  617. package/dist/components/scroll-area.d.ts +6 -9
  618. package/dist/components/scroll-area.js +4 -10
  619. package/dist/components/scroll-area.js.map +1 -1
  620. package/dist/components/search-field.d.ts +12 -27
  621. package/dist/components/search-field.js +13 -16
  622. package/dist/components/search-field.js.map +1 -1
  623. package/dist/components/select.d.ts +69 -0
  624. package/dist/components/select.js +164 -0
  625. package/dist/components/select.js.map +1 -0
  626. package/dist/components/separator.d.ts +3 -7
  627. package/dist/components/separator.js.map +1 -1
  628. package/dist/components/series-chart-axes.d.ts +120 -0
  629. package/dist/components/series-chart-axes.js +164 -0
  630. package/dist/components/series-chart-axes.js.map +1 -0
  631. package/dist/components/series-chart-budget.d.ts +8 -9
  632. package/dist/components/series-chart-labels.d.ts +2 -4
  633. package/dist/components/series-chart-thin.d.ts +34 -0
  634. package/dist/components/series-chart-thin.js +103 -0
  635. package/dist/components/series-chart-thin.js.map +1 -0
  636. package/dist/components/series-chart-ticks.d.ts +9 -11
  637. package/dist/components/series-chart.d.ts +64 -213
  638. package/dist/components/series-chart.js +69 -160
  639. package/dist/components/series-chart.js.map +1 -1
  640. package/dist/components/server-wake-labels.d.ts +2 -0
  641. package/dist/components/server-wake-labels.js +9 -0
  642. package/dist/components/server-wake-labels.js.map +1 -0
  643. package/dist/components/server-wake.d.ts +32 -23
  644. package/dist/components/server-wake.js +15 -35
  645. package/dist/components/server-wake.js.map +1 -1
  646. package/dist/components/settings-fields.d.ts +46 -117
  647. package/dist/components/settings-fields.js +13 -3
  648. package/dist/components/settings-fields.js.map +1 -1
  649. package/dist/components/share-card-labels.d.ts +2 -0
  650. package/dist/components/share-card-labels.js +29 -0
  651. package/dist/components/share-card-labels.js.map +1 -0
  652. package/dist/components/share-card.d.ts +188 -100
  653. package/dist/components/share-card.js +16 -34
  654. package/dist/components/share-card.js.map +1 -1
  655. package/dist/components/sign-chip-labels.d.ts +2 -0
  656. package/dist/components/sign-chip-labels.js +11 -0
  657. package/dist/components/sign-chip-labels.js.map +1 -0
  658. package/dist/components/sign-chip.d.ts +7 -9
  659. package/dist/components/sign-chip.js +2 -7
  660. package/dist/components/sign-chip.js.map +1 -1
  661. package/dist/components/signature-pad-labels.d.ts +2 -0
  662. package/dist/components/signature-pad-labels.js +23 -0
  663. package/dist/components/signature-pad-labels.js.map +1 -0
  664. package/dist/components/signature-pad.d.ts +16 -15
  665. package/dist/components/signature-pad.js +22 -35
  666. package/dist/components/signature-pad.js.map +1 -1
  667. package/dist/components/signed-amount-labels.d.ts +2 -0
  668. package/dist/components/signed-amount-labels.js +9 -0
  669. package/dist/components/signed-amount-labels.js.map +1 -0
  670. package/dist/components/signed-amount.d.ts +19 -21
  671. package/dist/components/signed-amount.js +12 -15
  672. package/dist/components/signed-amount.js.map +1 -1
  673. package/dist/components/skeleton.d.ts +13 -9
  674. package/dist/components/skeleton.js +1 -1
  675. package/dist/components/skeleton.js.map +1 -1
  676. package/dist/components/slider.d.ts +16 -11
  677. package/dist/components/slider.js +23 -18
  678. package/dist/components/slider.js.map +1 -1
  679. package/dist/components/sparkline-labels.d.ts +2 -0
  680. package/dist/components/sparkline-labels.js +13 -0
  681. package/dist/components/sparkline-labels.js.map +1 -0
  682. package/dist/components/sparkline.d.ts +10 -12
  683. package/dist/components/sparkline.js +10 -17
  684. package/dist/components/sparkline.js.map +1 -1
  685. package/dist/components/spinner.d.ts +45 -0
  686. package/dist/components/spinner.js +39 -0
  687. package/dist/components/spinner.js.map +1 -0
  688. package/dist/components/stat-tile-labels.d.ts +2 -0
  689. package/dist/components/stat-tile-labels.js +14 -0
  690. package/dist/components/stat-tile-labels.js.map +1 -0
  691. package/dist/components/stat-tile.d.ts +15 -17
  692. package/dist/components/stat-tile.js +25 -32
  693. package/dist/components/stat-tile.js.map +1 -1
  694. package/dist/components/status-dot.d.ts +8 -20
  695. package/dist/components/status-dot.js +13 -12
  696. package/dist/components/status-dot.js.map +1 -1
  697. package/dist/components/swatch-picker-labels.d.ts +2 -0
  698. package/dist/components/swatch-picker-labels.js +9 -0
  699. package/dist/components/swatch-picker-labels.js.map +1 -0
  700. package/dist/components/swatch-picker.d.ts +14 -14
  701. package/dist/components/swatch-picker.js +14 -8
  702. package/dist/components/swatch-picker.js.map +1 -1
  703. package/dist/components/swipeable-row.d.ts +14 -27
  704. package/dist/components/swipeable-row.js +2 -2
  705. package/dist/components/swipeable-row.js.map +1 -1
  706. package/dist/components/switch.d.ts +10 -13
  707. package/dist/components/switch.js +13 -12
  708. package/dist/components/switch.js.map +1 -1
  709. package/dist/components/table.d.ts +28 -31
  710. package/dist/components/table.js +15 -15
  711. package/dist/components/table.js.map +1 -1
  712. package/dist/components/tabs.d.ts +182 -0
  713. package/dist/components/tabs.js +312 -0
  714. package/dist/components/tabs.js.map +1 -0
  715. package/dist/components/text-link.d.ts +17 -118
  716. package/dist/components/text-link.js +7 -7
  717. package/dist/components/text-link.js.map +1 -1
  718. package/dist/components/text.d.ts +14 -13
  719. package/dist/components/text.js +5 -5
  720. package/dist/components/text.js.map +1 -1
  721. package/dist/components/textarea.d.ts +20 -0
  722. package/dist/components/textarea.js +161 -0
  723. package/dist/components/textarea.js.map +1 -0
  724. package/dist/components/tile-radio.d.ts +6 -10
  725. package/dist/components/tile-radio.js +6 -6
  726. package/dist/components/tile-radio.js.map +1 -1
  727. package/dist/components/time-input.d.ts +5 -107
  728. package/dist/components/time-input.js +14 -5
  729. package/dist/components/time-input.js.map +1 -1
  730. package/dist/components/toast-labels.d.ts +2 -0
  731. package/dist/components/toast-labels.js +11 -0
  732. package/dist/components/toast-labels.js.map +1 -0
  733. package/dist/components/toast.d.ts +21 -23
  734. package/dist/components/toast.js +1 -6
  735. package/dist/components/toast.js.map +1 -1
  736. package/dist/components/toggle-group.d.ts +26 -26
  737. package/dist/components/toggle-group.js +43 -19
  738. package/dist/components/toggle-group.js.map +1 -1
  739. package/dist/components/toggle-legend.d.ts +18 -21
  740. package/dist/components/toggle-legend.js +3 -3
  741. package/dist/components/toggle-legend.js.map +1 -1
  742. package/dist/components/tooltip.d.ts +16 -15
  743. package/dist/components/tooltip.js +4 -9
  744. package/dist/components/tooltip.js.map +1 -1
  745. package/dist/components/translation-review-editor.d.ts +8 -10
  746. package/dist/components/translation-review-editor.js +6 -5
  747. package/dist/components/translation-review-editor.js.map +1 -1
  748. package/dist/components/translation-review-labels.d.ts +4 -7
  749. package/dist/components/translation-review-parts.d.ts +19 -28
  750. package/dist/components/translation-review-parts.js +4 -7
  751. package/dist/components/translation-review-parts.js.map +1 -1
  752. package/dist/components/translation-review.d.ts +26 -24
  753. package/dist/components/translation-review.js +13 -10
  754. package/dist/components/translation-review.js.map +1 -1
  755. package/dist/components/tree-view.d.ts +7 -11
  756. package/dist/components/tree-view.js +8 -8
  757. package/dist/components/tree-view.js.map +1 -1
  758. package/dist/components/treemap.d.ts +9 -13
  759. package/dist/components/trigger-aria.d.ts +2 -4
  760. package/dist/components/ui-labels.d.ts +5 -0
  761. package/dist/components/ui-labels.js +20 -0
  762. package/dist/components/ui-labels.js.map +1 -0
  763. package/dist/components/use-anchor-dir.d.ts +3 -6
  764. package/dist/components/use-mobile-reveal.d.ts +2 -6
  765. package/dist/components/use-table-state.d.ts +154 -15
  766. package/dist/components/user-avatar.d.ts +8 -21
  767. package/dist/components/user-avatar.js +1 -1
  768. package/dist/components/user-avatar.js.map +1 -1
  769. package/dist/components/wizard-stepper.d.ts +6 -6
  770. package/dist/components/wizard-stepper.js +4 -3
  771. package/dist/components/wizard-stepper.js.map +1 -1
  772. package/dist/components/write-lock-labels.d.ts +2 -0
  773. package/dist/components/write-lock-labels.js +8 -0
  774. package/dist/components/write-lock-labels.js.map +1 -0
  775. package/dist/components/write-lock.d.ts +16 -18
  776. package/dist/components/write-lock.js +4 -8
  777. package/dist/components/write-lock.js.map +1 -1
  778. package/dist/data-table.d.ts +10 -18
  779. package/dist/data-table.js.map +1 -1
  780. package/dist/demo/demo-banner.d.ts +10 -13
  781. package/dist/demo/demo-banner.js +5 -19
  782. package/dist/demo/demo-banner.js.map +1 -1
  783. package/dist/demo/demo-countdown.d.ts +7 -9
  784. package/dist/demo/demo-ended.d.ts +10 -13
  785. package/dist/demo/demo-ended.js +4 -4
  786. package/dist/demo/demo-ended.js.map +1 -1
  787. package/dist/demo/demo-labels.d.ts +4 -5
  788. package/dist/demo/demo-labels.js.map +1 -1
  789. package/dist/demo/demo-session.d.ts +3 -5
  790. package/dist/demo/demo-start.d.ts +8 -11
  791. package/dist/demo/demo-start.js +3 -2
  792. package/dist/demo/demo-start.js.map +1 -1
  793. package/dist/feedback/feedback-attachment-labels.d.ts +16 -0
  794. package/dist/feedback/feedback-attachment-labels.js +17 -0
  795. package/dist/feedback/feedback-attachment-labels.js.map +1 -0
  796. package/dist/feedback/feedback-attachment.d.ts +312 -100
  797. package/dist/feedback/feedback-attachment.js +31 -42
  798. package/dist/feedback/feedback-attachment.js.map +1 -1
  799. package/dist/feedback/feedback-capture.d.ts +2 -4
  800. package/dist/feedback/feedback-context-labels.d.ts +2 -0
  801. package/dist/feedback/feedback-context-labels.js +9 -0
  802. package/dist/feedback/feedback-context-labels.js.map +1 -0
  803. package/dist/feedback/feedback-context.d.ts +110 -100
  804. package/dist/feedback/feedback-context.js +4 -7
  805. package/dist/feedback/feedback-context.js.map +1 -1
  806. package/dist/feedback/feedback-crash.d.ts +8 -109
  807. package/dist/feedback/feedback-dialog-labels.d.ts +12 -0
  808. package/dist/feedback/feedback-dialog-labels.js +17 -0
  809. package/dist/feedback/feedback-dialog-labels.js.map +1 -0
  810. package/dist/feedback/feedback-dialog.d.ts +186 -100
  811. package/dist/feedback/feedback-dialog.js +8 -18
  812. package/dist/feedback/feedback-dialog.js.map +1 -1
  813. package/dist/feedback/feedback-inbox.d.ts +236 -100
  814. package/dist/feedback/feedback-inbox.js +31 -141
  815. package/dist/feedback/feedback-inbox.js.map +1 -1
  816. package/dist/feedback/feedback-labels.d.ts +83 -100
  817. package/dist/feedback/feedback-labels.js.map +1 -1
  818. package/dist/feedback/feedback-menu-labels.d.ts +2 -0
  819. package/dist/feedback/feedback-menu-labels.js +10 -0
  820. package/dist/feedback/feedback-menu-labels.js.map +1 -0
  821. package/dist/feedback/feedback-menu.d.ts +83 -100
  822. package/dist/feedback/feedback-menu.js +3 -7
  823. package/dist/feedback/feedback-menu.js.map +1 -1
  824. package/dist/feedback/feedback-record.d.ts +239 -100
  825. package/dist/feedback/feedback-record.js +7 -2
  826. package/dist/feedback/feedback-record.js.map +1 -1
  827. package/dist/feedback/feedback-row-detail-labels.d.ts +2 -0
  828. package/dist/feedback/feedback-row-detail-labels.js +31 -0
  829. package/dist/feedback/feedback-row-detail-labels.js.map +1 -0
  830. package/dist/feedback/feedback-row-detail.d.ts +315 -100
  831. package/dist/feedback/feedback-row-detail.js +11 -37
  832. package/dist/feedback/feedback-row-detail.js.map +1 -1
  833. package/dist/feedback/feedback-status-undo.d.ts +66 -100
  834. package/dist/feedback/feedback-status-undo.js.map +1 -1
  835. package/dist/feedback/feedback-submit-dialog.d.ts +39 -0
  836. package/dist/feedback/feedback-submit-dialog.js +66 -0
  837. package/dist/feedback/feedback-submit-dialog.js.map +1 -0
  838. package/dist/feedback/feedback-submit.d.ts +13 -108
  839. package/dist/feedback/feedback-submit.js +19 -40
  840. package/dist/feedback/feedback-submit.js.map +1 -1
  841. package/dist/feedback/feedback-swipe.d.ts +9 -109
  842. package/dist/feedback/feedback-swipe.js +1 -1
  843. package/dist/feedback/feedback-swipe.js.map +1 -1
  844. package/dist/feedback/feedback-table-labels.d.ts +2 -0
  845. package/dist/feedback/feedback-table-labels.js +26 -0
  846. package/dist/feedback/feedback-table-labels.js.map +1 -0
  847. package/dist/feedback/feedback-table.d.ts +314 -100
  848. package/dist/feedback/feedback-table.js +11 -31
  849. package/dist/feedback/feedback-table.js.map +1 -1
  850. package/dist/feedback/feedback-thread-labels.d.ts +3 -0
  851. package/dist/feedback/feedback-thread-labels.js +21 -0
  852. package/dist/feedback/feedback-thread-labels.js.map +1 -0
  853. package/dist/feedback/feedback-thread.d.ts +378 -100
  854. package/dist/feedback/feedback-thread.js +32 -35
  855. package/dist/feedback/feedback-thread.js.map +1 -1
  856. package/dist/feedback/feedback-vocabulary.d.ts +98 -0
  857. package/dist/feedback/feedback-vocabulary.js +143 -0
  858. package/dist/feedback/feedback-vocabulary.js.map +1 -0
  859. package/dist/feedback.d.ts +15 -104
  860. package/dist/hooks/use-anchored-panel.d.ts +109 -17
  861. package/dist/hooks/use-anchored-panel.js +38 -6
  862. package/dist/hooks/use-anchored-panel.js.map +1 -1
  863. package/dist/hooks/use-anchored-rect.d.ts +15 -6
  864. package/dist/hooks/use-anchored-rect.js +2 -1
  865. package/dist/hooks/use-anchored-rect.js.map +1 -1
  866. package/dist/hooks/use-announce.d.ts +4 -6
  867. package/dist/hooks/use-authed-src.d.ts +5 -7
  868. package/dist/hooks/use-authed-src.js +3 -7
  869. package/dist/hooks/use-authed-src.js.map +1 -1
  870. package/dist/hooks/use-body-scroll-lock.d.ts +1 -3
  871. package/dist/hooks/use-breakpoint.d.ts +16 -17
  872. package/dist/hooks/use-breakpoint.js.map +1 -1
  873. package/dist/hooks/use-close-transition.d.ts +8 -8
  874. package/dist/hooks/use-close-transition.js +5 -4
  875. package/dist/hooks/use-close-transition.js.map +1 -1
  876. package/dist/hooks/use-copy-to-clipboard.d.ts +5 -7
  877. package/dist/hooks/use-debounce.d.ts +13 -6
  878. package/dist/hooks/use-debounce.js.map +1 -1
  879. package/dist/hooks/use-dismiss.d.ts +37 -11
  880. package/dist/hooks/use-dismiss.js +69 -10
  881. package/dist/hooks/use-dismiss.js.map +1 -1
  882. package/dist/hooks/use-file-drop.d.ts +8 -109
  883. package/dist/hooks/use-file-drop.js +1 -1
  884. package/dist/hooks/use-file-drop.js.map +1 -1
  885. package/dist/hooks/use-file-picker-labels.d.ts +2 -0
  886. package/dist/hooks/use-file-picker-labels.js +25 -0
  887. package/dist/hooks/use-file-picker-labels.js.map +1 -0
  888. package/dist/hooks/use-file-picker.d.ts +164 -0
  889. package/dist/hooks/use-file-picker.js +149 -0
  890. package/dist/hooks/use-file-picker.js.map +1 -0
  891. package/dist/hooks/use-focus-trap.d.ts +10 -4
  892. package/dist/hooks/use-focus-trap.js +19 -12
  893. package/dist/hooks/use-focus-trap.js.map +1 -1
  894. package/dist/hooks/use-hotkey.d.ts +7 -9
  895. package/dist/hooks/use-large-text.d.ts +3 -5
  896. package/dist/hooks/use-media-query.d.ts +1 -3
  897. package/dist/hooks/use-noindex.d.ts +1 -3
  898. package/dist/hooks/use-overlay-history.d.ts +1 -3
  899. package/dist/hooks/use-row-swipe.d.ts +5 -8
  900. package/dist/hooks/use-search-param-state.d.ts +10 -11
  901. package/dist/hooks/use-windowed-rows.d.ts +4 -7
  902. package/dist/i18n/defaults.d.ts +11 -104
  903. package/dist/i18n/defaults.js +82 -82
  904. package/dist/i18n/defaults.js.map +1 -1
  905. package/dist/i18n/german.d.ts +2 -104
  906. package/dist/i18n/german.js +56 -9
  907. package/dist/i18n/german.js.map +1 -1
  908. package/dist/i18n/kit-labels.d.ts +609 -100
  909. package/dist/i18n/kit-labels.js +22 -97
  910. package/dist/i18n/kit-labels.js.map +1 -1
  911. package/dist/i18n/languages.d.ts +197 -100
  912. package/dist/i18n/locales/de-CH.d.ts +3 -105
  913. package/dist/i18n/locales/en.d.ts +4 -104
  914. package/dist/i18n/locales/en.js +1834 -4
  915. package/dist/i18n/locales/en.js.map +7 -1
  916. package/dist/i18n/locales/es.d.ts +3 -105
  917. package/dist/i18n/locales/es.js +54 -9
  918. package/dist/i18n/locales/es.js.map +1 -1
  919. package/dist/i18n/locales/fr.d.ts +3 -105
  920. package/dist/i18n/locales/fr.js +56 -9
  921. package/dist/i18n/locales/fr.js.map +1 -1
  922. package/dist/i18n/locales/hu.d.ts +3 -105
  923. package/dist/i18n/locales/hu.js +56 -10
  924. package/dist/i18n/locales/hu.js.map +1 -1
  925. package/dist/i18n/locales/it.d.ts +3 -105
  926. package/dist/i18n/locales/it.js +55 -9
  927. package/dist/i18n/locales/it.js.map +1 -1
  928. package/dist/i18n/locales/zh.d.ts +3 -105
  929. package/dist/i18n/locales/zh.js +52 -8
  930. package/dist/i18n/locales/zh.js.map +1 -1
  931. package/dist/i18n/plurals.d.ts +20 -3
  932. package/dist/i18n/plurals.js +11 -0
  933. package/dist/i18n/plurals.js.map +1 -1
  934. package/dist/i18n/review.d.ts +5 -106
  935. package/dist/i18n/review.js +4 -0
  936. package/dist/i18n/review.js.map +1 -1
  937. package/dist/i18n/shared-labels.d.ts +17 -0
  938. package/dist/i18n/shared-labels.js +111 -0
  939. package/dist/i18n/shared-labels.js.map +1 -0
  940. package/dist/i18n/swiss.d.ts +1 -3
  941. package/dist/index.d.ts +329 -249
  942. package/dist/index.js +188 -215
  943. package/dist/index.js.map +1 -1
  944. package/dist/landing/access.d.ts +7 -9
  945. package/dist/landing/access.js.map +1 -1
  946. package/dist/landing/landing-actions.d.ts +9 -108
  947. package/dist/landing/landing-actions.js +1 -1
  948. package/dist/landing/landing-actions.js.map +1 -1
  949. package/dist/landing/landing-labels.d.ts +4 -5
  950. package/dist/landing/landing-labels.js.map +1 -1
  951. package/dist/landing/landing-sections.d.ts +21 -120
  952. package/dist/landing/landing-sections.js +15 -15
  953. package/dist/landing/landing-sections.js.map +1 -1
  954. package/dist/landing/page-seo.d.ts +7 -9
  955. package/dist/landing/public-header.d.ts +10 -110
  956. package/dist/landing/public-header.js +1 -1
  957. package/dist/landing/public-header.js.map +1 -1
  958. package/dist/landing/routing.d.ts +16 -119
  959. package/dist/landing/routing.js +2 -6
  960. package/dist/landing/routing.js.map +1 -1
  961. package/dist/lib/calc.d.ts +7 -9
  962. package/dist/lib/chip-edge-snap.d.ts +10 -0
  963. package/dist/lib/chip-edge-snap.js +131 -0
  964. package/dist/lib/chip-edge-snap.js.map +1 -0
  965. package/dist/lib/clipping.d.ts +2 -4
  966. package/dist/lib/cn.d.ts +2 -5
  967. package/dist/lib/cn.js +6 -1
  968. package/dist/lib/cn.js.map +1 -1
  969. package/dist/lib/column-mapping.d.ts +10 -13
  970. package/dist/lib/countries.d.ts +3 -5
  971. package/dist/lib/dates.d.ts +25 -25
  972. package/dist/lib/dates.js.map +1 -1
  973. package/dist/lib/decimal-marks.d.ts +8 -8
  974. package/dist/lib/decimal-marks.js +1 -1
  975. package/dist/lib/decimal-marks.js.map +1 -1
  976. package/dist/lib/direction.d.ts +4 -6
  977. package/dist/lib/document-navigation.d.ts +1 -3
  978. package/dist/lib/download.d.ts +67 -0
  979. package/dist/lib/download.js +89 -0
  980. package/dist/lib/download.js.map +1 -0
  981. package/dist/lib/floating-stack.d.ts +8 -6
  982. package/dist/lib/floating-stack.js.map +1 -1
  983. package/dist/lib/format.d.ts +24 -23
  984. package/dist/lib/format.js +3 -3
  985. package/dist/lib/format.js.map +1 -1
  986. package/dist/lib/iban.d.ts +9 -11
  987. package/dist/lib/ime.d.ts +17 -0
  988. package/dist/lib/ime.js +13 -0
  989. package/dist/lib/ime.js.map +1 -0
  990. package/dist/lib/isin.d.ts +3 -5
  991. package/dist/lib/logger.d.ts +4 -6
  992. package/dist/lib/person-name.d.ts +3 -5
  993. package/dist/lib/phone.d.ts +9 -11
  994. package/dist/lib/presence.d.ts +15 -0
  995. package/dist/lib/presence.js +8 -0
  996. package/dist/lib/presence.js.map +1 -0
  997. package/dist/lib/qr-encode.d.ts +4 -6
  998. package/dist/lib/reduced-motion.d.ts +18 -0
  999. package/dist/lib/reduced-motion.js +9 -0
  1000. package/dist/lib/reduced-motion.js.map +1 -0
  1001. package/dist/lib/round.d.ts +22 -0
  1002. package/dist/lib/round.js +15 -0
  1003. package/dist/lib/round.js.map +1 -0
  1004. package/dist/lib/safe-storage.d.ts +14 -4
  1005. package/dist/lib/safe-storage.js +24 -9
  1006. package/dist/lib/safe-storage.js.map +1 -1
  1007. package/dist/lib/server-wake.d.ts +13 -14
  1008. package/dist/lib/session-refresh.d.ts +200 -0
  1009. package/dist/lib/session-refresh.js +187 -0
  1010. package/dist/lib/session-refresh.js.map +1 -0
  1011. package/dist/lib/strip-fade.d.ts +10 -13
  1012. package/dist/lib/table-text.d.ts +14 -16
  1013. package/dist/lib/text-match.d.ts +41 -0
  1014. package/dist/lib/text-match.js +23 -0
  1015. package/dist/lib/text-match.js.map +1 -0
  1016. package/dist/lib/translation-review.d.ts +44 -45
  1017. package/dist/lib/translation-review.js +3 -2
  1018. package/dist/lib/translation-review.js.map +1 -1
  1019. package/dist/rhf/fields.d.ts +123 -188
  1020. package/dist/rhf/fields.js +46 -54
  1021. package/dist/rhf/fields.js.map +1 -1
  1022. package/dist/rhf/form-core.d.ts +153 -0
  1023. package/dist/rhf/form-core.js +143 -0
  1024. package/dist/rhf/form-core.js.map +1 -0
  1025. package/dist/rhf/form.d.ts +38 -174
  1026. package/dist/rhf/form.js +9 -131
  1027. package/dist/rhf/form.js.map +1 -1
  1028. package/dist/rhf/line-items.d.ts +40 -11
  1029. package/dist/rhf/line-items.js.map +1 -1
  1030. package/dist/rhf/use-rhf-wizard-step.d.ts +3 -6
  1031. package/dist/rhf.d.ts +4 -117
  1032. package/dist/rhf.js.map +1 -1
  1033. package/dist/search/command-palette-labels.d.ts +2 -0
  1034. package/dist/search/command-palette-labels.js +15 -0
  1035. package/dist/search/command-palette-labels.js.map +1 -0
  1036. package/dist/search/command-palette.d.ts +10 -13
  1037. package/dist/search/command-palette.js +25 -44
  1038. package/dist/search/command-palette.js.map +1 -1
  1039. package/dist/search/global-search-labels.d.ts +2 -0
  1040. package/dist/search/global-search-labels.js +12 -0
  1041. package/dist/search/global-search-labels.js.map +1 -0
  1042. package/dist/search/global-search.d.ts +17 -16
  1043. package/dist/search/global-search.js +12 -12
  1044. package/dist/search/global-search.js.map +1 -1
  1045. package/dist/search/search-index.d.ts +13 -14
  1046. package/dist/search/search-index.js +2 -1
  1047. package/dist/search/search-index.js.map +1 -1
  1048. package/dist/search/use-command-key.d.ts +9 -0
  1049. package/dist/search/use-command-key.js +18 -0
  1050. package/dist/search/use-command-key.js.map +1 -0
  1051. package/dist/search.d.ts +3 -4
  1052. package/dist/settings/settings-card-classes.d.ts +11 -0
  1053. package/dist/settings/settings-card-classes.js +8 -0
  1054. package/dist/settings/settings-card-classes.js.map +1 -0
  1055. package/dist/settings/settings-catalogue.d.ts +11 -14
  1056. package/dist/settings/settings-context.d.ts +4 -8
  1057. package/dist/settings/settings-heading.d.ts +8 -12
  1058. package/dist/settings/settings-heading.js +1 -1
  1059. package/dist/settings/settings-heading.js.map +1 -1
  1060. package/dist/settings/settings-labels.d.ts +6 -7
  1061. package/dist/settings/settings-labels.js.map +1 -1
  1062. package/dist/settings/settings-layout.d.ts +36 -13
  1063. package/dist/settings/settings-layout.js +25 -4
  1064. package/dist/settings/settings-layout.js.map +1 -1
  1065. package/dist/settings/settings-section.d.ts +4 -106
  1066. package/dist/settings/settings-section.js +2 -2
  1067. package/dist/settings/settings-section.js.map +1 -1
  1068. package/dist/settings/use-account-appearance.d.ts +11 -16
  1069. package/dist/settings/use-account-language.d.ts +8 -10
  1070. package/dist/settings/use-settings-focus.d.ts +3 -5
  1071. package/dist/settings/use-settings-focus.js +2 -4
  1072. package/dist/settings/use-settings-focus.js.map +1 -1
  1073. package/dist/settings/use-settings-route.d.ts +11 -16
  1074. package/dist/shell/app-shell-labels.d.ts +2 -0
  1075. package/dist/shell/app-shell-labels.js +9 -0
  1076. package/dist/shell/app-shell-labels.js.map +1 -0
  1077. package/dist/shell/app-shell.d.ts +216 -100
  1078. package/dist/shell/app-shell.js +51 -35
  1079. package/dist/shell/app-shell.js.map +1 -1
  1080. package/dist/shell/auth-layout.d.ts +6 -9
  1081. package/dist/shell/auth-layout.js +6 -6
  1082. package/dist/shell/auth-layout.js.map +1 -1
  1083. package/dist/shell/company-switcher-labels.d.ts +2 -0
  1084. package/dist/shell/company-switcher-labels.js +12 -0
  1085. package/dist/shell/company-switcher-labels.js.map +1 -0
  1086. package/dist/shell/company-switcher.d.ts +9 -11
  1087. package/dist/shell/company-switcher.js +3 -9
  1088. package/dist/shell/company-switcher.js.map +1 -1
  1089. package/dist/shell/option-switcher-menu.d.ts +19 -9
  1090. package/dist/shell/option-switcher-menu.js +6 -4
  1091. package/dist/shell/option-switcher-menu.js.map +1 -1
  1092. package/dist/shell/role-switcher.d.ts +5 -6
  1093. package/dist/shell/role-switcher.js +4 -3
  1094. package/dist/shell/role-switcher.js.map +1 -1
  1095. package/dist/shell/top-bar-brand.d.ts +4 -106
  1096. package/dist/shell/top-bar-brand.js +1 -1
  1097. package/dist/shell/top-bar-brand.js.map +1 -1
  1098. package/dist/shell/top-bar.d.ts +6 -9
  1099. package/dist/shell/top-bar.js +1 -1
  1100. package/dist/shell/top-bar.js.map +1 -1
  1101. package/dist/shell/topbar-action-menu.d.ts +30 -31
  1102. package/dist/shell/topbar-action-menu.js +12 -10
  1103. package/dist/shell/topbar-action-menu.js.map +1 -1
  1104. package/dist/shell/topbar-controls.d.ts +20 -18
  1105. package/dist/shell/topbar-controls.js +14 -11
  1106. package/dist/shell/topbar-controls.js.map +1 -1
  1107. package/dist/shell.d.ts +25 -115
  1108. package/dist/shell.js.map +1 -1
  1109. package/dist/table-text.d.ts +1 -1
  1110. package/dist/testing/css-variables.d.ts +4 -6
  1111. package/dist/testing/css-variables.generated.d.ts +2 -4
  1112. package/dist/testing/index.d.ts +2 -1
  1113. package/dist/testing/index.js +9 -1
  1114. package/dist/testing/index.js.map +1 -1
  1115. package/dist/testing/viewport.d.ts +93 -0
  1116. package/dist/testing/viewport.js +152 -0
  1117. package/dist/testing/viewport.js.map +1 -0
  1118. package/dist/theme/chart-palette.d.ts +7 -9
  1119. package/dist/theme/color.d.ts +14 -16
  1120. package/dist/theme/color.js +2 -1
  1121. package/dist/theme/color.js.map +1 -1
  1122. package/dist/theme/contrast-tokens.d.ts +13 -17
  1123. package/dist/theme/contrast.d.ts +22 -27
  1124. package/dist/theme/palette-derive.d.ts +16 -22
  1125. package/dist/theme/palette-derive.js +15 -7
  1126. package/dist/theme/palette-derive.js.map +1 -1
  1127. package/dist/theme/palette-presets.d.ts +25 -15
  1128. package/dist/theme/palette-presets.js +66 -66
  1129. package/dist/theme/palette-presets.js.map +1 -1
  1130. package/dist/theme/palette-store.d.ts +10 -13
  1131. package/dist/theme/text-size.d.ts +21 -26
  1132. package/dist/theme/theme-store.d.ts +9 -14
  1133. package/dist/tour/tour-labels.d.ts +2 -0
  1134. package/dist/tour/tour-labels.js +13 -0
  1135. package/dist/tour/tour-labels.js.map +1 -0
  1136. package/dist/tour/tour.d.ts +12 -14
  1137. package/dist/tour/tour.js +9 -20
  1138. package/dist/tour/tour.js.map +1 -1
  1139. package/dist/tour.d.ts +1 -2
  1140. package/dist/wizard/stepper-nav.d.ts +8 -107
  1141. package/dist/wizard/stepper-nav.js +15 -14
  1142. package/dist/wizard/stepper-nav.js.map +1 -1
  1143. package/dist/wizard/types.d.ts +18 -18
  1144. package/dist/wizard/types.js +1 -19
  1145. package/dist/wizard/types.js.map +1 -1
  1146. package/dist/wizard/use-wizard.d.ts +2 -6
  1147. package/dist/wizard/validation.d.ts +3 -7
  1148. package/dist/wizard/wizard-context.d.ts +7 -11
  1149. package/dist/wizard/wizard-labels.d.ts +4 -0
  1150. package/dist/wizard/wizard-labels.js +24 -0
  1151. package/dist/wizard/wizard-labels.js.map +1 -0
  1152. package/dist/wizard/wizard-step.d.ts +3 -7
  1153. package/dist/wizard/wizard-step.js +2 -2
  1154. package/dist/wizard/wizard-step.js.map +1 -1
  1155. package/dist/wizard/wizard-summary.d.ts +5 -8
  1156. package/dist/wizard/wizard-summary.js +6 -5
  1157. package/dist/wizard/wizard-summary.js.map +1 -1
  1158. package/dist/wizard.d.ts +7 -106
  1159. package/package.json +9 -6
  1160. package/src/account/account-parts.ts +3 -3
  1161. package/src/{components → account}/account-settings-labels.ts +11 -1
  1162. package/src/{components → account}/account-settings.tsx +145 -34
  1163. package/src/account/data-export-setting-labels.ts +20 -0
  1164. package/src/account/data-export-setting.tsx +19 -38
  1165. package/src/account/delete-account-setting-labels.ts +33 -0
  1166. package/src/account/delete-account-setting.tsx +13 -35
  1167. package/src/account/email-change-setting-labels.ts +32 -0
  1168. package/src/account/email-change-setting.tsx +17 -36
  1169. package/src/{components → account}/passkeys-setting.tsx +14 -9
  1170. package/src/account/sessions-setting-labels.ts +24 -0
  1171. package/src/account/sessions-setting.tsx +14 -28
  1172. package/src/admin/admin-action-confirm-labels.ts +19 -0
  1173. package/src/admin/admin-action-confirm.tsx +59 -38
  1174. package/src/admin/admin-action-log-labels.ts +74 -0
  1175. package/src/admin/admin-action-log.tsx +180 -54
  1176. package/src/admin/admin-parts.ts +0 -7
  1177. package/src/admin/invitations-panel-labels.ts +31 -0
  1178. package/src/admin/invitations-panel.tsx +16 -34
  1179. package/src/admin/plan-change-labels.ts +23 -0
  1180. package/src/admin/plan-change.tsx +89 -37
  1181. package/src/admin/reviewer-scope-editor-labels.ts +16 -0
  1182. package/src/admin/reviewer-scope-editor.tsx +9 -15
  1183. package/src/admin/role-select-labels.ts +16 -0
  1184. package/src/admin/role-select.tsx +13 -23
  1185. package/src/admin/transfer-ownership-dialog-labels.ts +20 -0
  1186. package/src/admin/transfer-ownership-dialog.tsx +7 -17
  1187. package/src/admin/user-roster-labels.ts +17 -0
  1188. package/src/admin/user-roster.tsx +9 -17
  1189. package/src/auth/accept-invitation-labels.ts +21 -0
  1190. package/src/auth/accept-invitation.tsx +9 -20
  1191. package/src/auth/auth-errors.ts +29 -13
  1192. package/src/auth/complete-name-dialog-labels.ts +16 -0
  1193. package/src/auth/complete-name-dialog.tsx +8 -13
  1194. package/src/auth/forgot-password-form-labels.ts +20 -0
  1195. package/src/auth/forgot-password-form.tsx +12 -20
  1196. package/src/auth/new-password-fields.tsx +1 -1
  1197. package/src/auth/not-found-page-labels.ts +12 -0
  1198. package/src/auth/not-found-page.tsx +11 -14
  1199. package/src/auth/register-form-labels.ts +31 -0
  1200. package/src/auth/register-form.tsx +18 -38
  1201. package/src/auth/reset-password-form-labels.ts +27 -0
  1202. package/src/auth/reset-password-form.tsx +12 -27
  1203. package/src/auth/sign-in-form-labels.ts +44 -0
  1204. package/src/auth/sign-in-form.tsx +18 -51
  1205. package/src/auth/status-parts.tsx +3 -3
  1206. package/src/auth/verify-email-labels.ts +26 -0
  1207. package/src/auth/verify-email.tsx +15 -30
  1208. package/src/billing/billing-banner.tsx +2 -1
  1209. package/src/billing/billing-labels.ts +1 -1
  1210. package/src/billing/checkout-processing.ts +2 -12
  1211. package/src/billing/pay-page.ts +9 -5
  1212. package/src/billing/plan-card.tsx +26 -27
  1213. package/src/billing/plan-limit-notice.tsx +1 -1
  1214. package/src/billing/subscription-actions.tsx +4 -4
  1215. package/src/chart.ts +7 -1
  1216. package/src/components/account-chips-labels.ts +16 -0
  1217. package/src/components/account-chips.tsx +13 -16
  1218. package/src/components/alert-banner.tsx +39 -19
  1219. package/src/components/amount-input.tsx +461 -405
  1220. package/src/components/appearance-labels.ts +2 -2
  1221. package/src/components/authed-image-labels.ts +11 -0
  1222. package/src/components/authed-image.tsx +6 -8
  1223. package/src/components/autocomplete.tsx +84 -80
  1224. package/src/components/breadcrumbs-labels.ts +10 -0
  1225. package/src/components/breadcrumbs.tsx +17 -14
  1226. package/src/components/bulk-action-bar-labels.ts +11 -0
  1227. package/src/components/bulk-action-bar.tsx +15 -16
  1228. package/src/components/button-group.tsx +7 -7
  1229. package/src/components/button-look.ts +230 -0
  1230. package/src/components/button.tsx +339 -0
  1231. package/src/components/calculator.tsx +18 -11
  1232. package/src/components/calendar-heatmap-labels.ts +15 -0
  1233. package/src/components/calendar-heatmap.tsx +13 -19
  1234. package/src/components/card.tsx +381 -0
  1235. package/src/components/chart-zoom-core.tsx +653 -0
  1236. package/src/components/chart-zoom.tsx +64 -648
  1237. package/src/components/chart.tsx +11 -11
  1238. package/src/components/checkbox-group.tsx +13 -10
  1239. package/src/components/checkbox.tsx +43 -42
  1240. package/src/components/chip-input.tsx +377 -0
  1241. package/src/components/chip-labels.ts +13 -0
  1242. package/src/components/chip.tsx +115 -711
  1243. package/src/components/choice-card.tsx +83 -85
  1244. package/src/components/column-mapper-labels.ts +45 -0
  1245. package/src/components/column-mapper.tsx +16 -51
  1246. package/src/components/combobox-core.tsx +351 -196
  1247. package/src/components/combobox-suggestions.tsx +129 -0
  1248. package/src/components/combobox.tsx +69 -893
  1249. package/src/components/confirm-dialog-labels.ts +13 -0
  1250. package/src/components/confirm-dialog.tsx +4 -8
  1251. package/src/components/copy-button-labels.ts +13 -0
  1252. package/src/components/copy-button.tsx +10 -12
  1253. package/src/components/country-select-labels.ts +11 -0
  1254. package/src/components/country-select.tsx +74 -89
  1255. package/src/components/currency-option-list.tsx +216 -0
  1256. package/src/components/currency-select.tsx +85 -196
  1257. package/src/components/danger-confirm-labels.ts +20 -0
  1258. package/src/components/danger-confirm.tsx +69 -77
  1259. package/src/components/data-table-cells.tsx +5 -5
  1260. package/src/components/data-table-column-settings.tsx +137 -0
  1261. package/src/components/data-table-filter-popover.tsx +49 -24
  1262. package/src/components/data-table-filters.ts +48 -11
  1263. package/src/components/data-table-head.tsx +258 -0
  1264. package/src/components/data-table-labels.ts +43 -11
  1265. package/src/components/data-table-mobile.tsx +594 -0
  1266. package/src/components/data-table-pagination.tsx +11 -10
  1267. package/src/components/data-table-resize.ts +187 -0
  1268. package/src/components/data-table-row-actions.tsx +152 -0
  1269. package/src/components/data-table-selection.ts +55 -0
  1270. package/src/components/data-table-shared.tsx +172 -0
  1271. package/src/components/data-table.tsx +178 -1300
  1272. package/src/components/date-field.tsx +627 -0
  1273. package/src/components/date-picker.tsx +58 -1446
  1274. package/src/components/date-range-picker.tsx +490 -0
  1275. package/src/components/description-list-labels.ts +9 -0
  1276. package/src/components/description-list.tsx +31 -15
  1277. package/src/components/dialog-frame-labels.ts +7 -0
  1278. package/src/components/dialog-frame.tsx +8 -6
  1279. package/src/components/disclosure.tsx +14 -14
  1280. package/src/components/dropdown.tsx +114 -42
  1281. package/src/components/empty-state.tsx +137 -0
  1282. package/src/components/entity-combobox.tsx +17 -12
  1283. package/src/components/error-boundary-labels.ts +20 -0
  1284. package/src/components/error-boundary.tsx +10 -20
  1285. package/src/components/facing-pair.ts +1 -1
  1286. package/src/components/field-base.tsx +615 -0
  1287. package/src/components/field-parts.tsx +206 -77
  1288. package/src/components/field-strip.tsx +16 -21
  1289. package/src/components/field-sync-labels.ts +13 -0
  1290. package/src/components/field-sync.tsx +11 -12
  1291. package/src/components/field.tsx +13 -11
  1292. package/src/components/file-button.tsx +64 -412
  1293. package/src/components/file-dropzone.tsx +36 -33
  1294. package/src/components/floating-panel-labels.ts +10 -0
  1295. package/src/components/floating-panel.tsx +32 -21
  1296. package/src/components/focus-ring.ts +9 -4
  1297. package/src/components/form-actions-labels.ts +11 -0
  1298. package/src/components/form-actions.tsx +17 -21
  1299. package/src/components/full-bleed-dialog.tsx +33 -25
  1300. package/src/components/grouped-picker.tsx +118 -96
  1301. package/src/components/help-popover.tsx +115 -0
  1302. package/src/components/hover-menu.tsx +46 -35
  1303. package/src/components/iban-input-labels.ts +15 -0
  1304. package/src/components/iban-input.tsx +25 -20
  1305. package/src/components/icon-button.tsx +945 -0
  1306. package/src/components/icon-picker-labels.ts +13 -0
  1307. package/src/components/icon-picker.tsx +27 -24
  1308. package/src/components/image-grid-labels.ts +11 -0
  1309. package/src/components/image-grid.tsx +13 -15
  1310. package/src/components/inline-edit-field-labels.ts +11 -0
  1311. package/src/components/inline-edit-field.tsx +20 -19
  1312. package/src/components/inline-entity-combobox.tsx +789 -0
  1313. package/src/components/input.tsx +380 -0
  1314. package/src/components/jump-calendar.tsx +385 -0
  1315. package/src/components/language-select.tsx +31 -16
  1316. package/src/components/legal-labels.ts +99 -0
  1317. package/src/components/legal-page.tsx +2 -2
  1318. package/src/components/legal.tsx +11 -101
  1319. package/src/components/lightbox-labels.ts +18 -0
  1320. package/src/components/lightbox.tsx +13 -21
  1321. package/src/components/line-items-labels.ts +14 -0
  1322. package/src/components/line-items.tsx +24 -31
  1323. package/src/components/list-labels.ts +10 -0
  1324. package/src/components/list.tsx +98 -75
  1325. package/src/components/loading-state.tsx +4 -4
  1326. package/src/components/measured-grid-labels.ts +25 -0
  1327. package/src/components/measured-grid.tsx +39 -62
  1328. package/src/components/menu-item.tsx +29 -26
  1329. package/src/components/mini-calendar-labels.ts +17 -0
  1330. package/src/components/mini-calendar.tsx +38 -45
  1331. package/src/components/modal.tsx +36 -18
  1332. package/src/components/money-draft.ts +72 -0
  1333. package/src/components/money-field.tsx +16 -30
  1334. package/src/components/month-picker-labels.ts +22 -0
  1335. package/src/components/month-picker.tsx +59 -45
  1336. package/src/components/multi-entity-combobox.tsx +17 -12
  1337. package/src/components/multi-select.tsx +313 -288
  1338. package/src/components/nav-pills.tsx +19 -8
  1339. package/src/components/number-field.tsx +14 -5
  1340. package/src/components/number-input.tsx +125 -90
  1341. package/src/components/numeric-field.ts +161 -0
  1342. package/src/components/numpad-sheet.tsx +16 -16
  1343. package/src/components/one-time-code-input.tsx +154 -169
  1344. package/src/components/page-contents-labels.ts +9 -0
  1345. package/src/components/page-contents.tsx +15 -15
  1346. package/src/components/page-header.tsx +9 -5
  1347. package/src/components/password-strength-labels.ts +23 -0
  1348. package/src/components/password-strength.tsx +13 -27
  1349. package/src/components/phone-input-labels.ts +10 -0
  1350. package/src/components/phone-input.tsx +42 -57
  1351. package/src/components/picker-sheet.tsx +47 -18
  1352. package/src/components/pie-chart.tsx +11 -9
  1353. package/src/components/popover-labels.ts +14 -0
  1354. package/src/components/popover.tsx +40 -39
  1355. package/src/components/progress-bar-labels.ts +10 -0
  1356. package/src/components/progress-bar.tsx +32 -23
  1357. package/src/components/qr-code.tsx +2 -2
  1358. package/src/components/reauth-dialog-labels.ts +13 -0
  1359. package/src/components/reauth-dialog.tsx +7 -10
  1360. package/src/components/row-actions-labels.ts +10 -0
  1361. package/src/components/row-actions.tsx +11 -10
  1362. package/src/components/scroll-area.tsx +4 -10
  1363. package/src/components/search-field.tsx +35 -49
  1364. package/src/components/select.tsx +302 -0
  1365. package/src/components/separator.tsx +2 -2
  1366. package/src/components/series-chart-axes.ts +329 -0
  1367. package/src/components/series-chart-thin.ts +180 -0
  1368. package/src/components/series-chart.tsx +124 -325
  1369. package/src/components/server-wake-labels.ts +11 -0
  1370. package/src/components/server-wake.tsx +42 -63
  1371. package/src/components/settings-fields.tsx +46 -17
  1372. package/src/components/share-card-labels.ts +30 -0
  1373. package/src/components/share-card.tsx +22 -37
  1374. package/src/components/sign-chip-labels.ts +12 -0
  1375. package/src/components/sign-chip.tsx +6 -9
  1376. package/src/components/signature-pad-labels.ts +24 -0
  1377. package/src/components/signature-pad.tsx +48 -57
  1378. package/src/components/signed-amount-labels.ts +10 -0
  1379. package/src/components/signed-amount.tsx +21 -22
  1380. package/src/components/skeleton.tsx +11 -3
  1381. package/src/components/slider.tsx +51 -39
  1382. package/src/components/sparkline-labels.ts +14 -0
  1383. package/src/components/sparkline.tsx +16 -21
  1384. package/src/components/spinner.tsx +81 -0
  1385. package/src/components/stat-tile-labels.ts +15 -0
  1386. package/src/components/stat-tile.tsx +32 -37
  1387. package/src/components/status-dot.tsx +17 -14
  1388. package/src/components/swatch-picker-labels.ts +10 -0
  1389. package/src/components/swatch-picker.tsx +23 -16
  1390. package/src/components/swipeable-row.tsx +7 -7
  1391. package/src/components/switch.tsx +33 -32
  1392. package/src/components/table.tsx +15 -15
  1393. package/src/components/tabs.tsx +660 -0
  1394. package/src/components/text-link.tsx +7 -7
  1395. package/src/components/text.tsx +10 -6
  1396. package/src/components/textarea.tsx +323 -0
  1397. package/src/components/tile-radio.tsx +6 -6
  1398. package/src/components/time-input.tsx +15 -7
  1399. package/src/components/toast-labels.ts +12 -0
  1400. package/src/components/toast.tsx +5 -8
  1401. package/src/components/toggle-group.tsx +105 -42
  1402. package/src/components/toggle-legend.tsx +6 -6
  1403. package/src/components/tooltip.tsx +10 -21
  1404. package/src/components/translation-review-editor.tsx +8 -7
  1405. package/src/components/translation-review-parts.tsx +9 -13
  1406. package/src/components/translation-review.tsx +26 -14
  1407. package/src/components/tree-view.tsx +14 -12
  1408. package/src/components/ui-labels.ts +22 -0
  1409. package/src/components/user-avatar.tsx +3 -3
  1410. package/src/components/wizard-stepper.tsx +10 -5
  1411. package/src/components/write-lock-labels.ts +9 -0
  1412. package/src/components/write-lock.tsx +10 -12
  1413. package/src/data-table.ts +4 -0
  1414. package/src/demo/demo-banner.tsx +9 -25
  1415. package/src/demo/demo-ended.tsx +8 -7
  1416. package/src/demo/demo-labels.ts +2 -2
  1417. package/src/demo/demo-start.tsx +7 -5
  1418. package/src/feedback/feedback-attachment-labels.ts +36 -0
  1419. package/src/feedback/feedback-attachment.tsx +42 -66
  1420. package/src/feedback/feedback-context-labels.ts +10 -0
  1421. package/src/feedback/feedback-context.tsx +8 -9
  1422. package/src/feedback/feedback-dialog-labels.ts +28 -0
  1423. package/src/feedback/feedback-dialog.tsx +14 -44
  1424. package/src/feedback/feedback-inbox.tsx +49 -252
  1425. package/src/feedback/feedback-labels.ts +5 -5
  1426. package/src/feedback/feedback-menu-labels.ts +11 -0
  1427. package/src/feedback/feedback-menu.tsx +13 -11
  1428. package/src/feedback/feedback-record.ts +21 -7
  1429. package/src/feedback/feedback-row-detail-labels.ts +33 -0
  1430. package/src/feedback/feedback-row-detail.tsx +30 -43
  1431. package/src/feedback/feedback-status-undo.ts +3 -2
  1432. package/src/feedback/feedback-submit-dialog.tsx +109 -0
  1433. package/src/feedback/feedback-submit.tsx +45 -55
  1434. package/src/feedback/feedback-swipe.tsx +1 -1
  1435. package/src/feedback/feedback-table-labels.ts +27 -0
  1436. package/src/feedback/feedback-table.tsx +24 -40
  1437. package/src/feedback/feedback-thread-labels.ts +22 -0
  1438. package/src/feedback/feedback-thread.tsx +68 -48
  1439. package/src/feedback/feedback-vocabulary.ts +252 -0
  1440. package/src/hooks/use-anchored-panel.ts +155 -9
  1441. package/src/hooks/use-anchored-rect.ts +11 -9
  1442. package/src/hooks/use-authed-src.ts +13 -7
  1443. package/src/hooks/use-breakpoint.ts +5 -4
  1444. package/src/hooks/use-close-transition.ts +9 -10
  1445. package/src/hooks/use-debounce.ts +9 -0
  1446. package/src/hooks/use-dismiss.ts +176 -19
  1447. package/src/hooks/use-file-drop.ts +2 -2
  1448. package/src/hooks/use-file-picker-labels.ts +29 -0
  1449. package/src/hooks/use-file-picker.tsx +363 -0
  1450. package/src/hooks/use-focus-trap.ts +74 -18
  1451. package/src/i18n/defaults.ts +91 -82
  1452. package/src/i18n/german.ts +54 -7
  1453. package/src/i18n/kit-labels.tsx +70 -119
  1454. package/src/i18n/locales/en.ts +46 -0
  1455. package/src/i18n/locales/es.ts +52 -7
  1456. package/src/i18n/locales/fr.ts +55 -8
  1457. package/src/i18n/locales/hu.ts +54 -8
  1458. package/src/i18n/locales/it.ts +53 -7
  1459. package/src/i18n/locales/zh.ts +50 -6
  1460. package/src/i18n/plurals.ts +29 -0
  1461. package/src/i18n/review.ts +4 -0
  1462. package/src/i18n/shared-labels.ts +135 -0
  1463. package/src/index.ts +412 -402
  1464. package/src/landing/access.ts +2 -1
  1465. package/src/landing/landing-actions.tsx +6 -5
  1466. package/src/landing/landing-labels.ts +2 -2
  1467. package/src/landing/landing-sections.tsx +24 -23
  1468. package/src/landing/public-header.tsx +3 -2
  1469. package/src/landing/routing.tsx +2 -7
  1470. package/src/lib/chip-edge-snap.ts +212 -0
  1471. package/src/lib/cn.ts +13 -1
  1472. package/src/lib/dates.ts +4 -2
  1473. package/src/lib/decimal-marks.ts +4 -2
  1474. package/src/lib/download.ts +172 -0
  1475. package/src/lib/floating-stack.ts +5 -1
  1476. package/src/lib/format.ts +5 -3
  1477. package/src/lib/ime.ts +24 -0
  1478. package/src/lib/presence.ts +18 -0
  1479. package/src/lib/reduced-motion.ts +21 -0
  1480. package/src/lib/round.ts +38 -0
  1481. package/src/lib/safe-storage.ts +35 -11
  1482. package/src/lib/session-refresh.ts +473 -0
  1483. package/src/lib/text-match.ts +60 -0
  1484. package/src/lib/translation-review.ts +7 -6
  1485. package/src/rhf/fields.tsx +131 -179
  1486. package/src/rhf/form-core.tsx +327 -0
  1487. package/src/rhf/form.tsx +46 -321
  1488. package/src/rhf/line-items.tsx +1 -1
  1489. package/src/rhf.ts +3 -2
  1490. package/src/search/command-palette-labels.ts +16 -0
  1491. package/src/search/command-palette.tsx +37 -50
  1492. package/src/search/global-search-labels.ts +13 -0
  1493. package/src/search/global-search.tsx +50 -24
  1494. package/src/search/search-index.ts +5 -6
  1495. package/src/search/use-command-key.ts +22 -0
  1496. package/src/settings/settings-card-classes.ts +11 -0
  1497. package/src/settings/settings-heading.tsx +1 -1
  1498. package/src/settings/settings-labels.ts +2 -2
  1499. package/src/settings/settings-layout.tsx +65 -6
  1500. package/src/settings/settings-section.tsx +5 -5
  1501. package/src/settings/use-settings-focus.ts +2 -5
  1502. package/src/shell/app-shell-labels.ts +10 -0
  1503. package/src/shell/app-shell.tsx +79 -53
  1504. package/src/shell/auth-layout.tsx +11 -10
  1505. package/src/shell/company-switcher-labels.ts +13 -0
  1506. package/src/shell/company-switcher.tsx +7 -11
  1507. package/src/shell/option-switcher-menu.tsx +25 -6
  1508. package/src/shell/role-switcher.tsx +7 -3
  1509. package/src/shell/top-bar-brand.tsx +1 -1
  1510. package/src/shell/top-bar.tsx +6 -5
  1511. package/src/shell/topbar-action-menu.tsx +39 -20
  1512. package/src/shell/topbar-controls.tsx +24 -12
  1513. package/src/shell.ts +1 -1
  1514. package/src/testing/index.ts +11 -0
  1515. package/src/testing/viewport.ts +251 -0
  1516. package/src/theme/color.ts +7 -1
  1517. package/src/theme/palette-derive.ts +29 -7
  1518. package/src/theme/palette-presets.ts +81 -68
  1519. package/src/tour/tour-labels.ts +14 -0
  1520. package/src/tour/tour.tsx +13 -23
  1521. package/src/wizard/stepper-nav.tsx +19 -18
  1522. package/src/wizard/types.ts +7 -22
  1523. package/src/wizard/wizard-labels.ts +29 -0
  1524. package/src/wizard/wizard-step.tsx +2 -2
  1525. package/src/wizard/wizard-summary.tsx +8 -7
  1526. package/tokens.css +63 -14
  1527. package/dist/components/account-settings-labels.js.map +0 -1
  1528. package/dist/components/account-settings.js.map +0 -1
  1529. package/dist/components/choice-parts.d.ts +0 -24
  1530. package/dist/components/choice-parts.js +0 -18
  1531. package/dist/components/choice-parts.js.map +0 -1
  1532. package/dist/components/passkeys-setting.js.map +0 -1
  1533. package/dist/components/ui.d.ts +0 -100
  1534. package/dist/components/ui.js +0 -1955
  1535. package/dist/components/ui.js.map +0 -1
  1536. package/dist/data-table-labels-BJ5JE_X2.d.ts +0 -923
  1537. package/dist/delete-account-setting-DiPX4Vue.d.ts +0 -8130
  1538. package/src/components/choice-parts.ts +0 -33
  1539. package/src/components/ui.tsx +0 -4233
@@ -1,3 +1,4 @@
1
+ import { type LabelOverride } from "../i18n/kit-labels.js";
1
2
  /**
2
3
  * The `settings` namespace (docs/settings-harmonization.md §4.3): the settings page's
3
4
  * own words, and the names and help lines of the five core groups every app shares —
@@ -6,15 +7,15 @@
6
7
  * `<UiKitProvider labels={{ settings }}>` > English).
7
8
  */
8
9
  /** A core group's two strings, as {@link SettingsGroup} takes them. */
9
- interface SettingsGroupLabels {
10
+ export interface SettingsGroupLabels {
10
11
  /** The group's name. */
11
12
  title: string;
12
13
  /** One line: under the heading, and in the phone list. */
13
14
  help: string;
14
15
  }
15
16
  /** The five groups whose words the kit ships (§2.6, §4.2). */
16
- type SettingsCoreGroup = "appearance" | "account" | "security" | "notifications" | "data";
17
- interface SettingsLabels {
17
+ export type SettingsCoreGroup = "appearance" | "account" | "security" | "notifications" | "data";
18
+ export interface SettingsLabels {
18
19
  /** The page's heading, and the back link's visible text on a phone's group page. */
19
20
  title: string;
20
21
  /** The search field's accessible name. */
@@ -36,13 +37,11 @@ interface SettingsLabels {
36
37
  /** The core groups' names and help lines. */
37
38
  groups: Record<SettingsCoreGroup, SettingsGroupLabels>;
38
39
  }
39
- declare const DEFAULT_SETTINGS_LABELS: SettingsLabels;
40
+ export declare const DEFAULT_SETTINGS_LABELS: SettingsLabels;
40
41
  /**
41
42
  * 0.31.1: the `settings` namespace, resolved — English, then the provider, then `labels`.
42
43
  * What an app reads for its catalogue's core group titles and help lines, and for the
43
44
  * page title "<group> · Settings · <app>" (settings contract §3.1), without restating
44
45
  * the namespace and its defaults (Kurvenschmiede's 0.31 adoption).
45
46
  */
46
- declare function useSettingsLabels(labels?: Partial<SettingsLabels>): SettingsLabels;
47
-
48
- export { DEFAULT_SETTINGS_LABELS, type SettingsCoreGroup, type SettingsGroupLabels, type SettingsLabels, useSettingsLabels };
47
+ export declare function useSettingsLabels(labels?: LabelOverride<SettingsLabels>): SettingsLabels;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/settings/settings-labels.ts"],"sourcesContent":["import { useKitLabels } from \"../i18n/kit-labels\";\n\n/**\n * The `settings` namespace (docs/settings-harmonization.md §4.3): the settings page's\n * own words, and the names and help lines of the five core groups every app shares —\n * appearance, account, security, notifications, data (§2.6). An app's own groups bring\n * their own words; any core label may be overridden like any kit label (prop >\n * `<UiKitProvider labels={{ settings }}>` > English).\n */\n\n/** A core group's two strings, as {@link SettingsGroup} takes them. */\nexport interface SettingsGroupLabels {\n /** The group's name. */\n title: string;\n /** One line: under the heading, and in the phone list. */\n help: string;\n}\n\n/** The five groups whose words the kit ships (§2.6, §4.2). */\nexport type SettingsCoreGroup = \"appearance\" | \"account\" | \"security\" | \"notifications\" | \"data\";\n\nexport interface SettingsLabels {\n /** The page's heading, and the back link's visible text on a phone's group page. */\n title: string;\n /** The search field's accessible name. */\n search: string;\n /** The search field's placeholder. */\n searchPlaceholder: string;\n /** The hit list's accessible name. */\n results: string;\n /** No hits for the trimmed query (§3.4). */\n noMatches: (query: string) => string;\n /** The button beside it that empties the field. */\n clearSearch: string;\n /** The phone's back link's accessible name: \"‹ Settings\" says where, this says what. */\n back: string;\n /** The sidebar's accessible name (the vertical tablist). */\n sections: string;\n /** A sidebar row's hit badge, read in place of the bare number while searching. */\n matchCount: (count: number) => string;\n /** The core groups' names and help lines. */\n groups: Record<SettingsCoreGroup, SettingsGroupLabels>;\n}\n\nexport const DEFAULT_SETTINGS_LABELS: SettingsLabels = {\n title: \"Settings\",\n search: \"Search settings\",\n searchPlaceholder: \"Search settings…\",\n results: \"Matching settings\",\n noMatches: (query) => `No settings match “${query}”.`,\n clearSearch: \"Clear search\",\n back: \"Back to settings\",\n sections: \"Settings sections\",\n matchCount: (count) => (count === 1 ? \"1 match\" : `${count} matches`),\n groups: {\n appearance: {\n title: \"Appearance\",\n help: \"Language, theme and how the app looks on this device.\",\n },\n account: {\n title: \"Account\",\n help: \"Your profile and your email address.\",\n },\n security: {\n title: \"Security\",\n help: \"How you sign in, and where you are signed in.\",\n },\n notifications: {\n title: \"Notifications\",\n help: \"What you are told about, when, and on which devices.\",\n },\n data: {\n title: \"Data\",\n help: \"Export what is yours, or delete it together with your account.\",\n },\n },\n};\n\n/**\n * 0.31.1: the `settings` namespace, resolved — English, then the provider, then `labels`.\n * What an app reads for its catalogue's core group titles and help lines, and for the\n * page title \"<group> · Settings · <app>\" (settings contract §3.1), without restating\n * the namespace and its defaults (Kurvenschmiede's 0.31 adoption).\n */\nexport function useSettingsLabels(labels?: Partial<SettingsLabels>): SettingsLabels {\n return useKitLabels(\"settings\", DEFAULT_SETTINGS_LABELS, labels);\n}\n"],"mappings":";AAAA,SAAS,oBAAoB;AA4CtB,MAAM,0BAA0C;AAAA,EACrD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,mBAAmB;AAAA,EACnB,SAAS;AAAA,EACT,WAAW,CAAC,UAAU,2BAAsB,KAAK;AAAA,EACjD,aAAa;AAAA,EACb,MAAM;AAAA,EACN,UAAU;AAAA,EACV,YAAY,CAAC,UAAW,UAAU,IAAI,YAAY,GAAG,KAAK;AAAA,EAC1D,QAAQ;AAAA,IACN,YAAY;AAAA,MACV,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA,SAAS;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA,UAAU;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA,eAAe;AAAA,MACb,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAQO,SAAS,kBAAkB,QAAkD;AAClF,SAAO,aAAa,YAAY,yBAAyB,MAAM;AACjE;","names":[]}
1
+ {"version":3,"sources":["../../src/settings/settings-labels.ts"],"sourcesContent":["import { useKitLabels, type LabelOverride } from \"../i18n/kit-labels\";\n\n/**\n * The `settings` namespace (docs/settings-harmonization.md §4.3): the settings page's\n * own words, and the names and help lines of the five core groups every app shares —\n * appearance, account, security, notifications, data (§2.6). An app's own groups bring\n * their own words; any core label may be overridden like any kit label (prop >\n * `<UiKitProvider labels={{ settings }}>` > English).\n */\n\n/** A core group's two strings, as {@link SettingsGroup} takes them. */\nexport interface SettingsGroupLabels {\n /** The group's name. */\n title: string;\n /** One line: under the heading, and in the phone list. */\n help: string;\n}\n\n/** The five groups whose words the kit ships (§2.6, §4.2). */\nexport type SettingsCoreGroup = \"appearance\" | \"account\" | \"security\" | \"notifications\" | \"data\";\n\nexport interface SettingsLabels {\n /** The page's heading, and the back link's visible text on a phone's group page. */\n title: string;\n /** The search field's accessible name. */\n search: string;\n /** The search field's placeholder. */\n searchPlaceholder: string;\n /** The hit list's accessible name. */\n results: string;\n /** No hits for the trimmed query (§3.4). */\n noMatches: (query: string) => string;\n /** The button beside it that empties the field. */\n clearSearch: string;\n /** The phone's back link's accessible name: \"‹ Settings\" says where, this says what. */\n back: string;\n /** The sidebar's accessible name (the vertical tablist). */\n sections: string;\n /** A sidebar row's hit badge, read in place of the bare number while searching. */\n matchCount: (count: number) => string;\n /** The core groups' names and help lines. */\n groups: Record<SettingsCoreGroup, SettingsGroupLabels>;\n}\n\nexport const DEFAULT_SETTINGS_LABELS: SettingsLabels = {\n title: \"Settings\",\n search: \"Search settings\",\n searchPlaceholder: \"Search settings…\",\n results: \"Matching settings\",\n noMatches: (query) => `No settings match “${query}”.`,\n clearSearch: \"Clear search\",\n back: \"Back to settings\",\n sections: \"Settings sections\",\n matchCount: (count) => (count === 1 ? \"1 match\" : `${count} matches`),\n groups: {\n appearance: {\n title: \"Appearance\",\n help: \"Language, theme and how the app looks on this device.\",\n },\n account: {\n title: \"Account\",\n help: \"Your profile and your email address.\",\n },\n security: {\n title: \"Security\",\n help: \"How you sign in, and where you are signed in.\",\n },\n notifications: {\n title: \"Notifications\",\n help: \"What you are told about, when, and on which devices.\",\n },\n data: {\n title: \"Data\",\n help: \"Export what is yours, or delete it together with your account.\",\n },\n },\n};\n\n/**\n * 0.31.1: the `settings` namespace, resolved — English, then the provider, then `labels`.\n * What an app reads for its catalogue's core group titles and help lines, and for the\n * page title \"<group> · Settings · <app>\" (settings contract §3.1), without restating\n * the namespace and its defaults (Kurvenschmiede's 0.31 adoption).\n */\nexport function useSettingsLabels(labels?: LabelOverride<SettingsLabels>): SettingsLabels {\n return useKitLabels(\"settings\", DEFAULT_SETTINGS_LABELS, labels);\n}\n"],"mappings":";AAAA,SAAS,oBAAwC;AA4C1C,MAAM,0BAA0C;AAAA,EACrD,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,mBAAmB;AAAA,EACnB,SAAS;AAAA,EACT,WAAW,CAAC,UAAU,2BAAsB,KAAK;AAAA,EACjD,aAAa;AAAA,EACb,MAAM;AAAA,EACN,UAAU;AAAA,EACV,YAAY,CAAC,UAAW,UAAU,IAAI,YAAY,GAAG,KAAK;AAAA,EAC1D,QAAQ;AAAA,IACN,YAAY;AAAA,MACV,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA,SAAS;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA,UAAU;AAAA,MACR,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA,eAAe;AAAA,MACb,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,EACF;AACF;AAQO,SAAS,kBAAkB,QAAwD;AACxF,SAAO,aAAa,YAAY,yBAAyB,MAAM;AACjE;","names":[]}
@@ -1,16 +1,15 @@
1
- import { ReactNode, ReactElement } from 'react';
2
- import { SettingsGroup, SettingsEntry } from './settings-catalogue.js';
3
- import { SettingsLabels } from './settings-labels.js';
4
- import { SettingsLayoutMode } from './use-settings-route.js';
5
- import '../search/search-index.js';
6
-
1
+ import type { ReactElement, ReactNode } from "react";
2
+ import { type LabelOverride } from "../i18n/kit-labels.js";
3
+ import type { SettingsEntry, SettingsGroup } from "./settings-catalogue.js";
4
+ import type { SettingsLabels } from "./settings-labels.js";
5
+ import type { SettingsLayoutMode } from "./use-settings-route.js";
7
6
  /** The page's width cap (§3.2): `6xl` for settings, `7xl` for keksdose's admin, whose
8
7
  * user table scrolled sideways at 6xl (dev#488). */
9
- type SettingsLayoutWidth = "6xl" | "7xl";
8
+ export type SettingsLayoutWidth = "6xl" | "7xl";
10
9
  /** More entries than this and the search field shows by itself (§3.4): Kurvenschmiede has
11
10
  * about twelve, keksdose 26; a page of six needs none. */
12
- declare const SETTINGS_SEARCH_THRESHOLD = 8;
13
- interface SettingsLayoutProps<G extends string> {
11
+ export declare const SETTINGS_SEARCH_THRESHOLD = 8;
12
+ export interface SettingsLayoutProps<G extends string> {
14
13
  /** The page's `h1`: "Settings", "Administration". Default: `labels.title`. */
15
14
  title?: ReactNode;
16
15
  /** The groups, in order (§4.2). */
@@ -43,11 +42,37 @@ interface SettingsLayoutProps<G extends string> {
43
42
  */
44
43
  phoneFooter?: ReactNode;
45
44
  /** Prop > `<UiKitProvider labels={{ settings }}>` > English. */
46
- labels?: Partial<SettingsLabels>;
45
+ labels?: LabelOverride<SettingsLabels>;
47
46
  /** See {@link SettingsLayoutMode}. Default `"auto"`: the screen decides. */
48
47
  layout?: SettingsLayoutMode;
48
+ /**
49
+ * The app's name, the last part of the window's title: "Security · Settings ·
50
+ * Kastlan" (§3.1). Left out, the title ends at the page: "Security · Settings".
51
+ */
52
+ appName?: string;
53
+ /**
54
+ * The window's title (`document.title`, §3.1) — round 0.34 C8, KS U7. By default the
55
+ * layout writes "<group> · <page> · <appName>" while a group is open and
56
+ * "<page> · <appName>" on the phone's list, and puts back the title it found when it
57
+ * unmounts. `<page>` is `title` when that is a string, else `labels.title`.
58
+ *
59
+ * A function writes another order or another separator from the same parts; `false`
60
+ * leaves `document.title` to the app. Kastlan's `SettingsChrome` and Kurvenschmiede's
61
+ * `GroupTitle` were this effect written by hand, and Kurvenschmiede's admin page, on
62
+ * the same layout, had none — every admin section was titled "Kurvenschmiede".
63
+ */
64
+ documentTitle?: false | ((parts: SettingsDocumentTitleParts) => string);
49
65
  className?: string;
50
66
  }
67
+ /** What {@link SettingsLayoutProps.documentTitle} is given to write the window's title. */
68
+ export interface SettingsDocumentTitleParts {
69
+ /** The open group's name, or `null` on the phone's list of groups. */
70
+ group: string | null;
71
+ /** The page: `title` when it is a string, else `labels.title` ("Settings"). */
72
+ page: string;
73
+ /** The `appName` prop, or `undefined`. */
74
+ appName: string | undefined;
75
+ }
51
76
  /**
52
77
  * The settings page (docs/settings-harmonization.md §3), and the admin page built the
53
78
  * same way (§5). keksdose's page is the reference for the desktop; the phone pattern and
@@ -72,6 +97,4 @@ interface SettingsLayoutProps<G extends string> {
72
97
  * The cards inside read {@link useSettingsLayout} for `selectSub`, and their titles are
73
98
  * headings under the group's ({@link SettingsHeadingLevel}).
74
99
  */
75
- declare function SettingsLayout<G extends string>({ title, groups, entries, basePath, defaultGroup, aliases, search, width, renderGroup, phoneFooter, labels: labelsProp, layout, className, }: SettingsLayoutProps<G>): ReactElement;
76
-
77
- export { SETTINGS_SEARCH_THRESHOLD, SettingsLayout, type SettingsLayoutProps, type SettingsLayoutWidth };
100
+ export declare function SettingsLayout<G extends string>({ title, groups, entries, basePath, defaultGroup, aliases, search, width, renderGroup, phoneFooter, labels: labelsProp, layout, appName, documentTitle, className, }: SettingsLayoutProps<G>): ReactElement;
@@ -1,9 +1,12 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useCallback, useId, useMemo, useRef, useState } from "react";
3
+ import { useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
4
4
  import { Link, useHref, useLocation } from "react-router";
5
5
  import { ChevronLeft, ChevronRight } from "lucide-react";
6
- import { Button, Card, EmptyState, Tabs } from "../components/ui.js";
6
+ import { Button } from "../components/button.js";
7
+ import { Card } from "../components/card.js";
8
+ import { EmptyState } from "../components/empty-state.js";
9
+ import { Tabs } from "../components/tabs.js";
7
10
  import { FOCUS_RING } from "../components/focus-ring.js";
8
11
  import { Chip } from "../components/chip.js";
9
12
  import { List, ListItem } from "../components/list.js";
@@ -24,6 +27,9 @@ import { DEFAULT_SETTINGS_LABELS } from "./settings-labels.js";
24
27
  import { settingsFromListState, useSettingsRoute } from "./use-settings-route.js";
25
28
  import { useSettingsFocus } from "./use-settings-focus.js";
26
29
  const SETTINGS_SEARCH_THRESHOLD = 8;
30
+ function defaultDocumentTitle({ group, page, appName }) {
31
+ return [group, page, appName].filter((part) => Boolean(part)).join(" \xB7 ");
32
+ }
27
33
  function SettingsLayout({
28
34
  title,
29
35
  groups,
@@ -37,6 +43,8 @@ function SettingsLayout({
37
43
  phoneFooter,
38
44
  labels: labelsProp,
39
45
  layout = "auto",
46
+ appName,
47
+ documentTitle,
40
48
  className
41
49
  }) {
42
50
  const labels = useKitLabels("settings", DEFAULT_SETTINGS_LABELS, labelsProp);
@@ -99,6 +107,19 @@ function SettingsLayout({
99
107
  searchRef.current?.focus();
100
108
  };
101
109
  const pageTitle = title ?? labels.title;
110
+ const windowTitle = documentTitle === false ? null : (documentTitle ?? defaultDocumentTitle)({
111
+ group: group === null ? null : groupById.get(group)?.title ?? null,
112
+ page: typeof title === "string" ? title : labels.title,
113
+ appName
114
+ });
115
+ useEffect(() => {
116
+ if (windowTitle === null) return;
117
+ const before = document.title;
118
+ document.title = windowTitle;
119
+ return () => {
120
+ document.title = before;
121
+ };
122
+ }, [windowTitle]);
102
123
  const pageClass = cn("mx-auto w-full space-y-4 p-4 md:p-6", width === "7xl" ? "max-w-7xl" : "max-w-6xl", className);
103
124
  const searchField = showSearch ? /* @__PURE__ */ jsx(
104
125
  SearchField,
@@ -149,7 +170,7 @@ function SettingsLayout({
149
170
  e.preventDefault();
150
171
  route.back();
151
172
  },
152
- className: cn("-ms-1 inline-flex items-center gap-0.5 self-start rounded-md pe-1 text-sm font-medium text-[var(--text-muted)] hover:text-[var(--text-primary)]", FOCUS_RING),
173
+ className: cn("-ms-1 inline-flex items-center gap-0.5 self-start rounded-md pe-1 text-sm font-medium text-muted hover:text-primary", FOCUS_RING),
153
174
  children: [
154
175
  /* @__PURE__ */ jsx(ChevronLeft, { "aria-hidden": true, className: "size-4 rtl:-scale-x-100" }),
155
176
  pageTitle
@@ -171,7 +192,7 @@ function SettingsLayout({
171
192
  "span",
172
193
  {
173
194
  "aria-hidden": true,
174
- className: "flex size-8 shrink-0 items-center justify-center rounded-md bg-[var(--bg-surface-2)] text-[var(--text-secondary)] [&_svg]:size-4",
195
+ className: "flex size-8 shrink-0 items-center justify-center rounded-md bg-surface-2 text-secondary [&_svg]:size-4",
175
196
  children: g.icon
176
197
  }
177
198
  ),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/settings/settings-layout.tsx"],"sourcesContent":["import { useCallback, useId, useMemo, useRef, useState } from \"react\";\nimport type { ReactElement, ReactNode } from \"react\";\nimport { Link, useHref, useLocation } from \"react-router\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { Button, Card, EmptyState, Tabs } from \"../components/ui\";\nimport { FOCUS_RING } from \"../components/focus-ring\";\nimport { Chip } from \"../components/chip\";\nimport { List, ListItem } from \"../components/list\";\nimport type { ListItemLinkProps } from \"../components/list\";\nimport { PageHeader } from \"../components/page-header\";\nimport { SearchField } from \"../components/search-field\";\nimport { cn } from \"../lib/cn\";\nimport { useKitLabels } from \"../i18n/kit-labels\";\nimport { createSearchIndex } from \"../search/search-index\";\nimport type { SearchEntry } from \"../search/search-index\";\nimport {\n normalizeSettingsBase,\n settingsHref,\n settingsKeywords,\n visibleSettingsEntries,\n} from \"./settings-catalogue\";\nimport type { SettingsEntry, SettingsGroup } from \"./settings-catalogue\";\nimport { SettingsLayoutContext } from \"./settings-context\";\nimport type { SettingsLayoutContextValue } from \"./settings-context\";\nimport { SettingsHeadingLevel } from \"./settings-heading\";\nimport { DEFAULT_SETTINGS_LABELS } from \"./settings-labels\";\nimport type { SettingsLabels } from \"./settings-labels\";\nimport { settingsFromListState, useSettingsRoute } from \"./use-settings-route\";\nimport type { SettingsLayoutMode } from \"./use-settings-route\";\nimport { useSettingsFocus } from \"./use-settings-focus\";\n\n/** The page's width cap (§3.2): `6xl` for settings, `7xl` for keksdose's admin, whose\n * user table scrolled sideways at 6xl (dev#488). */\nexport type SettingsLayoutWidth = \"6xl\" | \"7xl\";\n\n/** More entries than this and the search field shows by itself (§3.4): Kurvenschmiede has\n * about twelve, keksdose 26; a page of six needs none. */\nexport const SETTINGS_SEARCH_THRESHOLD = 8;\n\nexport interface SettingsLayoutProps<G extends string> {\n /** The page's `h1`: \"Settings\", \"Administration\". Default: `labels.title`. */\n title?: ReactNode;\n /** The groups, in order (§4.2). */\n groups: readonly SettingsGroup<G>[];\n /** One entry per setting (§4.1). Hidden entries leave search; a group left without a\n * visible one is hidden. */\n entries: readonly SettingsEntry<G>[];\n /** `/settings` or `/admin`. The layout owns every path below it. */\n basePath: string;\n /** The group `/settings` opens on a desktop. Default: the first visible one. */\n defaultGroup?: G;\n /** Retired group ids and their successors, replaced in the address (§3.1). */\n aliases?: Readonly<Partial<Record<string, G>>>;\n /**\n * The search field. Left out, it shows once more than {@link SETTINGS_SEARCH_THRESHOLD}\n * entries are visible; `true` or `false` wins over the count — keksdose's admin keeps\n * none (§3.4, §10.3). ⌘K gets the entries either way ({@link settingsSearchEntries}).\n */\n search?: boolean;\n /** See {@link SettingsLayoutWidth}. Default `\"6xl\"`. */\n width?: SettingsLayoutWidth;\n /** The group's cards, in one column. `sub` is the path segment after the group, which\n * a card owns (`useSettingsLayout().selectSub`). */\n renderGroup: (group: G, sub: string | null) => ReactNode;\n /**\n * Rows under the phone's group list that LEAVE settings — kastlan's \"Administration\",\n * its import page (§3.3, §5). `ListItem`s with an `href`; the layout puts them in a list\n * of their own, so they never read as a group. Not shown on a desktop, where the app's\n * own navigation carries them.\n */\n phoneFooter?: ReactNode;\n /** Prop > `<UiKitProvider labels={{ settings }}>` > English. */\n labels?: Partial<SettingsLabels>;\n /** See {@link SettingsLayoutMode}. Default `\"auto\"`: the screen decides. */\n layout?: SettingsLayoutMode;\n className?: string;\n}\n\ninterface Searchable<G extends string> extends SearchEntry {\n anchor: string;\n settingsGroup: G;\n}\n\n/**\n * The settings page (docs/settings-harmonization.md §3), and the admin page built the\n * same way (§5). keksdose's page is the reference for the desktop; the phone pattern and\n * the path segments are new for all three apps.\n *\n * **Desktop** (§3.2): the page's `PageHeader`, the search field, then a 14rem sidebar —\n * the kit's vertical `Tabs`, a link per group, sticky so a long group keeps the list in\n * view — beside the open group: its heading (`h2`), its help line and its cards in ONE\n * column, never a masonry (keksdose dev#490/#493).\n *\n * **Phone** (§3.3, below `md`): a drill-down. `/settings` is a list of the groups (icon,\n * name, help line, chevron) with `phoneFooter` under it; a group is a page of its own with\n * a back link, its name as the `h1` and the cards under it. It replaces keksdose's chip\n * strip.\n *\n * **Routes, history and `?focus=`** are {@link useSettingsRoute}'s and\n * {@link useSettingsFocus}'s. **Search** (§3.4) runs the kit's matcher over the catalogue:\n * accents folded, ranked, over the title, the group's name and the keywords. On a desktop\n * the sidebar dims the groups without hits and counts the others' while the hits replace\n * the group; on a phone they replace the list. A hit is a link to its card.\n *\n * The cards inside read {@link useSettingsLayout} for `selectSub`, and their titles are\n * headings under the group's ({@link SettingsHeadingLevel}).\n */\nexport function SettingsLayout<G extends string>({\n title,\n groups,\n entries,\n basePath,\n defaultGroup,\n aliases,\n search,\n width = \"6xl\",\n renderGroup,\n phoneFooter,\n labels: labelsProp,\n layout = \"auto\",\n className,\n}: SettingsLayoutProps<G>): ReactElement {\n const labels = useKitLabels(\"settings\", DEFAULT_SETTINGS_LABELS, labelsProp);\n const base = normalizeSettingsBase(basePath);\n const route = useSettingsRoute({ groups, entries, basePath: base, defaultGroup, aliases, layout });\n const location = useLocation();\n // The browser URL of an app path, for the sidebar's real links (a middle click opens a\n // tab): `#/settings/…` under a hash router, the basename in front under a browser one.\n const root = useHref(\"/\").replace(/\\/$/, \"\");\n const panelId = useId();\n const searchRef = useRef<HTMLInputElement>(null);\n const [query, setQuery] = useState(\"\");\n\n const visibleEntries = useMemo(() => visibleSettingsEntries(groups, entries), [groups, entries]);\n const showSearch = search ?? visibleEntries.length > SETTINGS_SEARCH_THRESHOLD;\n const trimmed = query.trim();\n const searching = showSearch && trimmed !== \"\";\n\n const groupById = useMemo(() => new Map(route.groups.map((g) => [g.id, g])), [route.groups]);\n const index = useMemo(\n () =>\n createSearchIndex<Searchable<G>>(\n visibleEntries.map((e) => ({\n id: e.id,\n title: e.title,\n keywords: [groupById.get(e.group)?.title ?? e.group, ...settingsKeywords(e.keywords)],\n group: e.group,\n anchor: e.anchor,\n settingsGroup: e.group,\n })),\n // Every hit: the list is the page's whole answer, not a palette's top few.\n { groupLimit: Infinity },\n ),\n [visibleEntries, groupById],\n );\n const hits = useMemo(() => (searching ? index.search(trimmed).map((h) => h.entry) : []), [searching, index, trimmed]);\n const hitsByGroup = useMemo(() => {\n const counts = new Map<G, number>();\n for (const hit of hits) counts.set(hit.settingsGroup, (counts.get(hit.settingsGroup) ?? 0) + 1);\n return counts;\n }, [hits]);\n\n const anchors = useMemo(() => new Set(entries.map((e) => e.anchor)), [entries]);\n const { phone, group, sub, selectSub, select } = route;\n const headingLevel = phone ? \"h2\" : \"h3\";\n const context = useMemo<SettingsLayoutContextValue>(\n () => ({\n basePath: base,\n group,\n sub,\n selectSub,\n headingLevel,\n hasAnchor: (anchor) => anchors.has(anchor),\n }),\n [base, group, sub, selectSub, headingLevel, anchors],\n );\n\n // Not while the address is about to be replaced (its removal of `focus` would undo the\n // replace), not on the list, and not while the hits stand where the cards would be (a\n // phone's group page has no search: a query left from its list does not count there).\n const hitsShown = searching && (!phone || group === null);\n useSettingsFocus(route.redirecting || group === null || hitsShown ? null : route.focus);\n\n // A link inside the page. On a phone it opens a page of its own — a push that marks the\n // list as the entry before it, so the group page's back is a real back. On a desktop\n // it switches the group in place — a replace.\n const { state } = location;\n const renderLink = useCallback(\n ({ href, ...props }: ListItemLinkProps) => (\n <Link to={href} replace={!phone} state={phone ? settingsFromListState() : state} {...props} />\n ),\n [phone, state],\n );\n\n const clearSearch = () => {\n setQuery(\"\");\n // The button that was pressed goes with the empty state; the field is where the\n // next query is typed.\n searchRef.current?.focus();\n };\n\n const pageTitle = title ?? labels.title;\n const pageClass = cn(\"mx-auto w-full space-y-4 p-4 md:p-6\", width === \"7xl\" ? \"max-w-7xl\" : \"max-w-6xl\", className);\n\n const searchField = showSearch ? (\n <SearchField\n ref={searchRef}\n className=\"max-w-md\"\n value={query}\n onChange={setQuery}\n aria-label={labels.search}\n placeholder={labels.searchPlaceholder}\n />\n ) : null;\n\n const results =\n hits.length === 0 ? (\n <EmptyState\n title={labels.noMatches(trimmed)}\n action={\n <Button variant=\"secondary\" size=\"sm\" onClick={clearSearch}>\n {labels.clearSearch}\n </Button>\n }\n />\n ) : (\n <Card className=\"p-1\">\n <List separator=\"divider\" density=\"comfortable\" aria-label={labels.results}>\n {hits.map((hit) => (\n <ListItem\n key={hit.id}\n title={hit.title}\n trailing={groupById.get(hit.settingsGroup)?.title}\n href={settingsHref(base, hit.settingsGroup, hit.anchor)}\n renderLink={renderLink}\n // Leave search on the way: the hit's card is what the user asked for.\n onClick={() => setQuery(\"\")}\n />\n ))}\n </List>\n </Card>\n );\n\n const cards = (open: G) => (\n <SettingsHeadingLevel level={headingLevel}>\n <div className=\"space-y-4\">{renderGroup(open, sub)}</div>\n </SettingsHeadingLevel>\n );\n\n let body: ReactNode;\n if (phone) {\n const open = group === null ? undefined : groupById.get(group);\n body = open ? (\n <div className={pageClass} data-settings-view=\"group\">\n <PageHeader\n size=\"compact\"\n title={open.title}\n description={open.help}\n breadcrumbs={\n <Link\n to={base || \"/\"}\n aria-label={labels.back}\n onClick={(e) => {\n // A real link for a middle click; a plain click is the page's own back,\n // which is `navigate(-1)` when the list is the entry before this one.\n if (e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;\n e.preventDefault();\n route.back();\n }}\n className={cn(\"-ms-1 inline-flex items-center gap-0.5 self-start rounded-md pe-1 text-sm font-medium text-[var(--text-muted)] hover:text-[var(--text-primary)]\", FOCUS_RING)}\n >\n <ChevronLeft aria-hidden className=\"size-4 rtl:-scale-x-100\" />\n {pageTitle}\n </Link>\n }\n />\n {cards(open.id)}\n </div>\n ) : (\n <div className={pageClass} data-settings-view=\"list\">\n <PageHeader size=\"compact\" title={pageTitle} />\n {searchField}\n {searching ? (\n results\n ) : (\n <Card className=\"p-1\">\n <List separator=\"divider\" density=\"comfortable\" aria-label={labels.sections}>\n {route.groups.map((g) => (\n <ListItem\n key={g.id}\n href={settingsHref(base, g.id)}\n renderLink={renderLink}\n leading={\n <span\n aria-hidden\n className=\"flex size-8 shrink-0 items-center justify-center rounded-md bg-[var(--bg-surface-2)] text-[var(--text-secondary)] [&_svg]:size-4\"\n >\n {g.icon}\n </span>\n }\n title={g.title}\n subtitle={g.help}\n trailing={<ChevronRight aria-hidden className=\"size-4 rtl:-scale-x-100\" />}\n />\n ))}\n </List>\n </Card>\n )}\n {!searching && phoneFooter != null && (\n <Card className=\"p-1\">\n <List separator=\"divider\" density=\"comfortable\">\n {phoneFooter}\n </List>\n </Card>\n )}\n </div>\n );\n } else {\n const open = group === null ? undefined : groupById.get(group);\n body = (\n <div className={pageClass} data-settings-view=\"desktop\">\n <PageHeader size=\"compact\" title={pageTitle} />\n {searchField}\n <div className=\"md:grid md:grid-cols-[14rem_minmax(0,1fr)] md:gap-6\">\n <Tabs<G>\n orientation=\"vertical\"\n aria-label={labels.sections}\n // Sticky (new in the harmonisation, §3.2): keksdose's notifications group\n // scrolls for screens, and the list should stay in view beside it.\n className=\"mb-4 md:sticky md:top-6 md:mb-0 md:self-start\"\n panelId={open && !searching ? panelId : undefined}\n tabs={route.groups.map((g) => {\n const count = hitsByGroup.get(g.id) ?? 0;\n // While searching, the groups with nothing to show step back (keksdose).\n const dim = searching && count === 0;\n return {\n id: g.id,\n href: `${root}${settingsHref(base, g.id)}`,\n name: g.title,\n label: <span className={cn(dim && \"opacity-40\")}>{g.title}</span>,\n icon: <span className={cn(\"inline-flex [&_svg]:size-4\", dim && \"opacity-40\")}>{g.icon}</span>,\n badge:\n searching && count > 0 ? (\n <Chip size=\"sm\" tone=\"brand\">\n <span aria-hidden>{count}</span>\n <span className=\"sr-only-fixed\">{labels.matchCount(count)}</span>\n </Chip>\n ) : undefined,\n };\n })}\n active={(open?.id ?? route.groups[0]?.id) as G}\n onChange={(id) => {\n // While searching the hits stand where the group would; a click on a group\n // means \"go there\", so the search makes way (keksdose).\n setQuery(\"\");\n select(id);\n }}\n />\n <div className=\"min-w-0 space-y-4\">\n {searching ? (\n results\n ) : open ? (\n <div\n id={panelId}\n role=\"tabpanel\"\n aria-labelledby={`${panelId}-tab`}\n className=\"space-y-4\"\n >\n <PageHeader as=\"h2\" size=\"sm\" title={open.title} description={open.help} />\n {cards(open.id)}\n </div>\n ) : null}\n </div>\n </div>\n </div>\n );\n }\n\n return <SettingsLayoutContext.Provider value={context}>{body}</SettingsLayoutContext.Provider>;\n}\n"],"mappings":";AA6LM,cAsEM,YAtEN;AA7LN,SAAS,aAAa,OAAO,SAAS,QAAQ,gBAAgB;AAE9D,SAAS,MAAM,SAAS,mBAAmB;AAC3C,SAAS,aAAa,oBAAoB;AAC1C,SAAS,QAAQ,MAAM,YAAY,YAAY;AAC/C,SAAS,kBAAkB;AAC3B,SAAS,YAAY;AACrB,SAAS,MAAM,gBAAgB;AAE/B,SAAS,kBAAkB;AAC3B,SAAS,mBAAmB;AAC5B,SAAS,UAAU;AACnB,SAAS,oBAAoB;AAC7B,SAAS,yBAAyB;AAElC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,6BAA6B;AAEtC,SAAS,4BAA4B;AACrC,SAAS,+BAA+B;AAExC,SAAS,uBAAuB,wBAAwB;AAExD,SAAS,wBAAwB;AAQ1B,MAAM,4BAA4B;AAsElC,SAAS,eAAiC;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,SAAS;AAAA,EACT;AACF,GAAyC;AACvC,QAAM,SAAS,aAAa,YAAY,yBAAyB,UAAU;AAC3E,QAAM,OAAO,sBAAsB,QAAQ;AAC3C,QAAM,QAAQ,iBAAiB,EAAE,QAAQ,SAAS,UAAU,MAAM,cAAc,SAAS,OAAO,CAAC;AACjG,QAAM,WAAW,YAAY;AAG7B,QAAM,OAAO,QAAQ,GAAG,EAAE,QAAQ,OAAO,EAAE;AAC3C,QAAM,UAAU,MAAM;AACtB,QAAM,YAAY,OAAyB,IAAI;AAC/C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,EAAE;AAErC,QAAM,iBAAiB,QAAQ,MAAM,uBAAuB,QAAQ,OAAO,GAAG,CAAC,QAAQ,OAAO,CAAC;AAC/F,QAAM,aAAa,UAAU,eAAe,SAAS;AACrD,QAAM,UAAU,MAAM,KAAK;AAC3B,QAAM,YAAY,cAAc,YAAY;AAE5C,QAAM,YAAY,QAAQ,MAAM,IAAI,IAAI,MAAM,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC;AAC3F,QAAM,QAAQ;AAAA,IACZ,MACE;AAAA,MACE,eAAe,IAAI,CAAC,OAAO;AAAA,QACzB,IAAI,EAAE;AAAA,QACN,OAAO,EAAE;AAAA,QACT,UAAU,CAAC,UAAU,IAAI,EAAE,KAAK,GAAG,SAAS,EAAE,OAAO,GAAG,iBAAiB,EAAE,QAAQ,CAAC;AAAA,QACpF,OAAO,EAAE;AAAA,QACT,QAAQ,EAAE;AAAA,QACV,eAAe,EAAE;AAAA,MACnB,EAAE;AAAA;AAAA,MAEF,EAAE,YAAY,SAAS;AAAA,IACzB;AAAA,IACF,CAAC,gBAAgB,SAAS;AAAA,EAC5B;AACA,QAAM,OAAO,QAAQ,MAAO,YAAY,MAAM,OAAO,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,GAAI,CAAC,WAAW,OAAO,OAAO,CAAC;AACpH,QAAM,cAAc,QAAQ,MAAM;AAChC,UAAM,SAAS,oBAAI,IAAe;AAClC,eAAW,OAAO,KAAM,QAAO,IAAI,IAAI,gBAAgB,OAAO,IAAI,IAAI,aAAa,KAAK,KAAK,CAAC;AAC9F,WAAO;AAAA,EACT,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,UAAU,QAAQ,MAAM,IAAI,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;AAC9E,QAAM,EAAE,OAAO,OAAO,KAAK,WAAW,OAAO,IAAI;AACjD,QAAM,eAAe,QAAQ,OAAO;AACpC,QAAM,UAAU;AAAA,IACd,OAAO;AAAA,MACL,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,CAAC,WAAW,QAAQ,IAAI,MAAM;AAAA,IAC3C;AAAA,IACA,CAAC,MAAM,OAAO,KAAK,WAAW,cAAc,OAAO;AAAA,EACrD;AAKA,QAAM,YAAY,cAAc,CAAC,SAAS,UAAU;AACpD,mBAAiB,MAAM,eAAe,UAAU,QAAQ,YAAY,OAAO,MAAM,KAAK;AAKtF,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,aAAa;AAAA,IACjB,CAAC,EAAE,MAAM,GAAG,MAAM,MAChB,oBAAC,QAAK,IAAI,MAAM,SAAS,CAAC,OAAO,OAAO,QAAQ,sBAAsB,IAAI,OAAQ,GAAG,OAAO;AAAA,IAE9F,CAAC,OAAO,KAAK;AAAA,EACf;AAEA,QAAM,cAAc,MAAM;AACxB,aAAS,EAAE;AAGX,cAAU,SAAS,MAAM;AAAA,EAC3B;AAEA,QAAM,YAAY,SAAS,OAAO;AAClC,QAAM,YAAY,GAAG,uCAAuC,UAAU,QAAQ,cAAc,aAAa,SAAS;AAElH,QAAM,cAAc,aAClB;AAAA,IAAC;AAAA;AAAA,MACC,KAAK;AAAA,MACL,WAAU;AAAA,MACV,OAAO;AAAA,MACP,UAAU;AAAA,MACV,cAAY,OAAO;AAAA,MACnB,aAAa,OAAO;AAAA;AAAA,EACtB,IACE;AAEJ,QAAM,UACJ,KAAK,WAAW,IACd;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,OAAO,UAAU,OAAO;AAAA,MAC/B,QACE,oBAAC,UAAO,SAAQ,aAAY,MAAK,MAAK,SAAS,aAC5C,iBAAO,aACV;AAAA;AAAA,EAEJ,IAEA,oBAAC,QAAK,WAAU,OACd,8BAAC,QAAK,WAAU,WAAU,SAAQ,eAAc,cAAY,OAAO,SAChE,eAAK,IAAI,CAAC,QACT;AAAA,IAAC;AAAA;AAAA,MAEC,OAAO,IAAI;AAAA,MACX,UAAU,UAAU,IAAI,IAAI,aAAa,GAAG;AAAA,MAC5C,MAAM,aAAa,MAAM,IAAI,eAAe,IAAI,MAAM;AAAA,MACtD;AAAA,MAEA,SAAS,MAAM,SAAS,EAAE;AAAA;AAAA,IANrB,IAAI;AAAA,EAOX,CACD,GACH,GACF;AAGJ,QAAM,QAAQ,CAAC,SACb,oBAAC,wBAAqB,OAAO,cAC3B,8BAAC,SAAI,WAAU,aAAa,sBAAY,MAAM,GAAG,GAAE,GACrD;AAGF,MAAI;AACJ,MAAI,OAAO;AACT,UAAM,OAAO,UAAU,OAAO,SAAY,UAAU,IAAI,KAAK;AAC7D,WAAO,OACL,qBAAC,SAAI,WAAW,WAAW,sBAAmB,SAC5C;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,OAAO,KAAK;AAAA,UACZ,aAAa,KAAK;AAAA,UAClB,aACE;AAAA,YAAC;AAAA;AAAA,cACC,IAAI,QAAQ;AAAA,cACZ,cAAY,OAAO;AAAA,cACnB,SAAS,CAAC,MAAM;AAGd,oBAAI,EAAE,WAAW,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,OAAQ;AACxE,kBAAE,eAAe;AACjB,sBAAM,KAAK;AAAA,cACb;AAAA,cACA,WAAW,GAAG,mJAAmJ,UAAU;AAAA,cAE3K;AAAA,oCAAC,eAAY,eAAW,MAAC,WAAU,2BAA0B;AAAA,gBAC5D;AAAA;AAAA;AAAA,UACH;AAAA;AAAA,MAEJ;AAAA,MACC,MAAM,KAAK,EAAE;AAAA,OAChB,IAEA,qBAAC,SAAI,WAAW,WAAW,sBAAmB,QAC5C;AAAA,0BAAC,cAAW,MAAK,WAAU,OAAO,WAAW;AAAA,MAC5C;AAAA,MACA,YACC,UAEA,oBAAC,QAAK,WAAU,OACd,8BAAC,QAAK,WAAU,WAAU,SAAQ,eAAc,cAAY,OAAO,UAChE,gBAAM,OAAO,IAAI,CAAC,MACjB;AAAA,QAAC;AAAA;AAAA,UAEC,MAAM,aAAa,MAAM,EAAE,EAAE;AAAA,UAC7B;AAAA,UACA,SACE;AAAA,YAAC;AAAA;AAAA,cACC,eAAW;AAAA,cACX,WAAU;AAAA,cAET,YAAE;AAAA;AAAA,UACL;AAAA,UAEF,OAAO,EAAE;AAAA,UACT,UAAU,EAAE;AAAA,UACZ,UAAU,oBAAC,gBAAa,eAAW,MAAC,WAAU,2BAA0B;AAAA;AAAA,QAbnE,EAAE;AAAA,MAcT,CACD,GACH,GACF;AAAA,MAED,CAAC,aAAa,eAAe,QAC5B,oBAAC,QAAK,WAAU,OACd,8BAAC,QAAK,WAAU,WAAU,SAAQ,eAC/B,uBACH,GACF;AAAA,OAEJ;AAAA,EAEJ,OAAO;AACL,UAAM,OAAO,UAAU,OAAO,SAAY,UAAU,IAAI,KAAK;AAC7D,WACE,qBAAC,SAAI,WAAW,WAAW,sBAAmB,WAC5C;AAAA,0BAAC,cAAW,MAAK,WAAU,OAAO,WAAW;AAAA,MAC5C;AAAA,MACD,qBAAC,SAAI,WAAU,uDACb;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,aAAY;AAAA,YACZ,cAAY,OAAO;AAAA,YAGnB,WAAU;AAAA,YACV,SAAS,QAAQ,CAAC,YAAY,UAAU;AAAA,YACxC,MAAM,MAAM,OAAO,IAAI,CAAC,MAAM;AAC5B,oBAAM,QAAQ,YAAY,IAAI,EAAE,EAAE,KAAK;AAEvC,oBAAM,MAAM,aAAa,UAAU;AACnC,qBAAO;AAAA,gBACL,IAAI,EAAE;AAAA,gBACN,MAAM,GAAG,IAAI,GAAG,aAAa,MAAM,EAAE,EAAE,CAAC;AAAA,gBACxC,MAAM,EAAE;AAAA,gBACR,OAAO,oBAAC,UAAK,WAAW,GAAG,OAAO,YAAY,GAAI,YAAE,OAAM;AAAA,gBAC1D,MAAM,oBAAC,UAAK,WAAW,GAAG,8BAA8B,OAAO,YAAY,GAAI,YAAE,MAAK;AAAA,gBACtF,OACE,aAAa,QAAQ,IACnB,qBAAC,QAAK,MAAK,MAAK,MAAK,SACnB;AAAA,sCAAC,UAAK,eAAW,MAAE,iBAAM;AAAA,kBACzB,oBAAC,UAAK,WAAU,iBAAiB,iBAAO,WAAW,KAAK,GAAE;AAAA,mBAC5D,IACE;AAAA,cACR;AAAA,YACF,CAAC;AAAA,YACD,QAAS,MAAM,MAAM,MAAM,OAAO,CAAC,GAAG;AAAA,YACtC,UAAU,CAAC,OAAO;AAGhB,uBAAS,EAAE;AACX,qBAAO,EAAE;AAAA,YACX;AAAA;AAAA,QACF;AAAA,QACA,oBAAC,SAAI,WAAU,qBACZ,sBACC,UACE,OACF;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,YACJ,MAAK;AAAA,YACL,mBAAiB,GAAG,OAAO;AAAA,YAC3B,WAAU;AAAA,YAEV;AAAA,kCAAC,cAAW,IAAG,MAAK,MAAK,MAAK,OAAO,KAAK,OAAO,aAAa,KAAK,MAAM;AAAA,cACxE,MAAM,KAAK,EAAE;AAAA;AAAA;AAAA,QAChB,IACE,MACN;AAAA,SACF;AAAA,OACF;AAAA,EAEJ;AAEA,SAAO,oBAAC,sBAAsB,UAAtB,EAA+B,OAAO,SAAU,gBAAK;AAC/D;","names":[]}
1
+ {"version":3,"sources":["../../src/settings/settings-layout.tsx"],"sourcesContent":["import { useCallback, useEffect, useId, useMemo, useRef, useState } from \"react\";\nimport type { ReactElement, ReactNode } from \"react\";\nimport { Link, useHref, useLocation } from \"react-router\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { Button } from \"../components/button\";\nimport { Card } from \"../components/card\";\nimport { EmptyState } from \"../components/empty-state\";\nimport { Tabs } from \"../components/tabs\";\nimport { FOCUS_RING } from \"../components/focus-ring\";\nimport { Chip } from \"../components/chip\";\nimport { List, ListItem } from \"../components/list\";\nimport type { ListItemLinkProps } from \"../components/list\";\nimport { PageHeader } from \"../components/page-header\";\nimport { SearchField } from \"../components/search-field\";\nimport { cn } from \"../lib/cn\";\nimport { useKitLabels, type LabelOverride } from \"../i18n/kit-labels\";\nimport { createSearchIndex } from \"../search/search-index\";\nimport type { SearchEntry } from \"../search/search-index\";\nimport {\n normalizeSettingsBase,\n settingsHref,\n settingsKeywords,\n visibleSettingsEntries,\n} from \"./settings-catalogue\";\nimport type { SettingsEntry, SettingsGroup } from \"./settings-catalogue\";\nimport { SettingsLayoutContext } from \"./settings-context\";\nimport type { SettingsLayoutContextValue } from \"./settings-context\";\nimport { SettingsHeadingLevel } from \"./settings-heading\";\nimport { DEFAULT_SETTINGS_LABELS } from \"./settings-labels\";\nimport type { SettingsLabels } from \"./settings-labels\";\nimport { settingsFromListState, useSettingsRoute } from \"./use-settings-route\";\nimport type { SettingsLayoutMode } from \"./use-settings-route\";\nimport { useSettingsFocus } from \"./use-settings-focus\";\n\n/** The page's width cap (§3.2): `6xl` for settings, `7xl` for keksdose's admin, whose\n * user table scrolled sideways at 6xl (dev#488). */\nexport type SettingsLayoutWidth = \"6xl\" | \"7xl\";\n\n/** More entries than this and the search field shows by itself (§3.4): Kurvenschmiede has\n * about twelve, keksdose 26; a page of six needs none. */\nexport const SETTINGS_SEARCH_THRESHOLD = 8;\n\nexport interface SettingsLayoutProps<G extends string> {\n /** The page's `h1`: \"Settings\", \"Administration\". Default: `labels.title`. */\n title?: ReactNode;\n /** The groups, in order (§4.2). */\n groups: readonly SettingsGroup<G>[];\n /** One entry per setting (§4.1). Hidden entries leave search; a group left without a\n * visible one is hidden. */\n entries: readonly SettingsEntry<G>[];\n /** `/settings` or `/admin`. The layout owns every path below it. */\n basePath: string;\n /** The group `/settings` opens on a desktop. Default: the first visible one. */\n defaultGroup?: G;\n /** Retired group ids and their successors, replaced in the address (§3.1). */\n aliases?: Readonly<Partial<Record<string, G>>>;\n /**\n * The search field. Left out, it shows once more than {@link SETTINGS_SEARCH_THRESHOLD}\n * entries are visible; `true` or `false` wins over the count — keksdose's admin keeps\n * none (§3.4, §10.3). ⌘K gets the entries either way ({@link settingsSearchEntries}).\n */\n search?: boolean;\n /** See {@link SettingsLayoutWidth}. Default `\"6xl\"`. */\n width?: SettingsLayoutWidth;\n /** The group's cards, in one column. `sub` is the path segment after the group, which\n * a card owns (`useSettingsLayout().selectSub`). */\n renderGroup: (group: G, sub: string | null) => ReactNode;\n /**\n * Rows under the phone's group list that LEAVE settings — kastlan's \"Administration\",\n * its import page (§3.3, §5). `ListItem`s with an `href`; the layout puts them in a list\n * of their own, so they never read as a group. Not shown on a desktop, where the app's\n * own navigation carries them.\n */\n phoneFooter?: ReactNode;\n /** Prop > `<UiKitProvider labels={{ settings }}>` > English. */\n labels?: LabelOverride<SettingsLabels>;\n /** See {@link SettingsLayoutMode}. Default `\"auto\"`: the screen decides. */\n layout?: SettingsLayoutMode;\n /**\n * The app's name, the last part of the window's title: \"Security · Settings ·\n * Kastlan\" (§3.1). Left out, the title ends at the page: \"Security · Settings\".\n */\n appName?: string;\n /**\n * The window's title (`document.title`, §3.1) — round 0.34 C8, KS U7. By default the\n * layout writes \"<group> · <page> · <appName>\" while a group is open and\n * \"<page> · <appName>\" on the phone's list, and puts back the title it found when it\n * unmounts. `<page>` is `title` when that is a string, else `labels.title`.\n *\n * A function writes another order or another separator from the same parts; `false`\n * leaves `document.title` to the app. Kastlan's `SettingsChrome` and Kurvenschmiede's\n * `GroupTitle` were this effect written by hand, and Kurvenschmiede's admin page, on\n * the same layout, had none — every admin section was titled \"Kurvenschmiede\".\n */\n documentTitle?: false | ((parts: SettingsDocumentTitleParts) => string);\n className?: string;\n}\n\n/** What {@link SettingsLayoutProps.documentTitle} is given to write the window's title. */\nexport interface SettingsDocumentTitleParts {\n /** The open group's name, or `null` on the phone's list of groups. */\n group: string | null;\n /** The page: `title` when it is a string, else `labels.title` (\"Settings\"). */\n page: string;\n /** The `appName` prop, or `undefined`. */\n appName: string | undefined;\n}\n\n/** \"Security · Settings · Kastlan\" (§3.1); a part that is missing is left out. */\nfunction defaultDocumentTitle({ group, page, appName }: SettingsDocumentTitleParts): string {\n return [group, page, appName].filter((part): part is string => Boolean(part)).join(\" · \");\n}\n\ninterface Searchable<G extends string> extends SearchEntry {\n anchor: string;\n settingsGroup: G;\n}\n\n/**\n * The settings page (docs/settings-harmonization.md §3), and the admin page built the\n * same way (§5). keksdose's page is the reference for the desktop; the phone pattern and\n * the path segments are new for all three apps.\n *\n * **Desktop** (§3.2): the page's `PageHeader`, the search field, then a 14rem sidebar —\n * the kit's vertical `Tabs`, a link per group, sticky so a long group keeps the list in\n * view — beside the open group: its heading (`h2`), its help line and its cards in ONE\n * column, never a masonry (keksdose dev#490/#493).\n *\n * **Phone** (§3.3, below `md`): a drill-down. `/settings` is a list of the groups (icon,\n * name, help line, chevron) with `phoneFooter` under it; a group is a page of its own with\n * a back link, its name as the `h1` and the cards under it. It replaces keksdose's chip\n * strip.\n *\n * **Routes, history and `?focus=`** are {@link useSettingsRoute}'s and\n * {@link useSettingsFocus}'s. **Search** (§3.4) runs the kit's matcher over the catalogue:\n * accents folded, ranked, over the title, the group's name and the keywords. On a desktop\n * the sidebar dims the groups without hits and counts the others' while the hits replace\n * the group; on a phone they replace the list. A hit is a link to its card.\n *\n * The cards inside read {@link useSettingsLayout} for `selectSub`, and their titles are\n * headings under the group's ({@link SettingsHeadingLevel}).\n */\nexport function SettingsLayout<G extends string>({\n title,\n groups,\n entries,\n basePath,\n defaultGroup,\n aliases,\n search,\n width = \"6xl\",\n renderGroup,\n phoneFooter,\n labels: labelsProp,\n layout = \"auto\",\n appName,\n documentTitle,\n className,\n}: SettingsLayoutProps<G>): ReactElement {\n const labels = useKitLabels(\"settings\", DEFAULT_SETTINGS_LABELS, labelsProp);\n const base = normalizeSettingsBase(basePath);\n const route = useSettingsRoute({ groups, entries, basePath: base, defaultGroup, aliases, layout });\n const location = useLocation();\n // The browser URL of an app path, for the sidebar's real links (a middle click opens a\n // tab): `#/settings/…` under a hash router, the basename in front under a browser one.\n const root = useHref(\"/\").replace(/\\/$/, \"\");\n const panelId = useId();\n const searchRef = useRef<HTMLInputElement>(null);\n const [query, setQuery] = useState(\"\");\n\n const visibleEntries = useMemo(() => visibleSettingsEntries(groups, entries), [groups, entries]);\n const showSearch = search ?? visibleEntries.length > SETTINGS_SEARCH_THRESHOLD;\n const trimmed = query.trim();\n const searching = showSearch && trimmed !== \"\";\n\n const groupById = useMemo(() => new Map(route.groups.map((g) => [g.id, g])), [route.groups]);\n const index = useMemo(\n () =>\n createSearchIndex<Searchable<G>>(\n visibleEntries.map((e) => ({\n id: e.id,\n title: e.title,\n keywords: [groupById.get(e.group)?.title ?? e.group, ...settingsKeywords(e.keywords)],\n group: e.group,\n anchor: e.anchor,\n settingsGroup: e.group,\n })),\n // Every hit: the list is the page's whole answer, not a palette's top few.\n { groupLimit: Infinity },\n ),\n [visibleEntries, groupById],\n );\n const hits = useMemo(() => (searching ? index.search(trimmed).map((h) => h.entry) : []), [searching, index, trimmed]);\n const hitsByGroup = useMemo(() => {\n const counts = new Map<G, number>();\n for (const hit of hits) counts.set(hit.settingsGroup, (counts.get(hit.settingsGroup) ?? 0) + 1);\n return counts;\n }, [hits]);\n\n const anchors = useMemo(() => new Set(entries.map((e) => e.anchor)), [entries]);\n const { phone, group, sub, selectSub, select } = route;\n const headingLevel = phone ? \"h2\" : \"h3\";\n const context = useMemo<SettingsLayoutContextValue>(\n () => ({\n basePath: base,\n group,\n sub,\n selectSub,\n headingLevel,\n hasAnchor: (anchor) => anchors.has(anchor),\n }),\n [base, group, sub, selectSub, headingLevel, anchors],\n );\n\n // Not while the address is about to be replaced (its removal of `focus` would undo the\n // replace), not on the list, and not while the hits stand where the cards would be (a\n // phone's group page has no search: a query left from its list does not count there).\n const hitsShown = searching && (!phone || group === null);\n useSettingsFocus(route.redirecting || group === null || hitsShown ? null : route.focus);\n\n // A link inside the page. On a phone it opens a page of its own — a push that marks the\n // list as the entry before it, so the group page's back is a real back. On a desktop\n // it switches the group in place — a replace.\n const { state } = location;\n const renderLink = useCallback(\n ({ href, ...props }: ListItemLinkProps) => (\n <Link to={href} replace={!phone} state={phone ? settingsFromListState() : state} {...props} />\n ),\n [phone, state],\n );\n\n const clearSearch = () => {\n setQuery(\"\");\n // The button that was pressed goes with the empty state; the field is where the\n // next query is typed.\n searchRef.current?.focus();\n };\n\n const pageTitle = title ?? labels.title;\n\n // The window's title (§3.1). Computed to a string during render so the effect below\n // runs when the words change, not whenever an inline `documentTitle` function is new.\n // Each run puts back the title it found before writing its own, so a group switch\n // ends where it began and the unmount leaves the title the page had before settings.\n const windowTitle =\n documentTitle === false\n ? null\n : (documentTitle ?? defaultDocumentTitle)({\n group: group === null ? null : (groupById.get(group)?.title ?? null),\n page: typeof title === \"string\" ? title : labels.title,\n appName,\n });\n useEffect(() => {\n if (windowTitle === null) return;\n const before = document.title;\n document.title = windowTitle;\n return () => {\n document.title = before;\n };\n }, [windowTitle]);\n\n const pageClass = cn(\"mx-auto w-full space-y-4 p-4 md:p-6\", width === \"7xl\" ? \"max-w-7xl\" : \"max-w-6xl\", className);\n\n const searchField = showSearch ? (\n <SearchField\n ref={searchRef}\n className=\"max-w-md\"\n value={query}\n onChange={setQuery}\n aria-label={labels.search}\n placeholder={labels.searchPlaceholder}\n />\n ) : null;\n\n const results =\n hits.length === 0 ? (\n <EmptyState\n title={labels.noMatches(trimmed)}\n action={\n <Button variant=\"secondary\" size=\"sm\" onClick={clearSearch}>\n {labels.clearSearch}\n </Button>\n }\n />\n ) : (\n <Card className=\"p-1\">\n <List separator=\"divider\" density=\"comfortable\" aria-label={labels.results}>\n {hits.map((hit) => (\n <ListItem\n key={hit.id}\n title={hit.title}\n trailing={groupById.get(hit.settingsGroup)?.title}\n href={settingsHref(base, hit.settingsGroup, hit.anchor)}\n renderLink={renderLink}\n // Leave search on the way: the hit's card is what the user asked for.\n onClick={() => setQuery(\"\")}\n />\n ))}\n </List>\n </Card>\n );\n\n const cards = (open: G) => (\n <SettingsHeadingLevel level={headingLevel}>\n <div className=\"space-y-4\">{renderGroup(open, sub)}</div>\n </SettingsHeadingLevel>\n );\n\n let body: ReactNode;\n if (phone) {\n const open = group === null ? undefined : groupById.get(group);\n body = open ? (\n <div className={pageClass} data-settings-view=\"group\">\n <PageHeader\n size=\"compact\"\n title={open.title}\n description={open.help}\n breadcrumbs={\n <Link\n to={base || \"/\"}\n aria-label={labels.back}\n onClick={(e) => {\n // A real link for a middle click; a plain click is the page's own back,\n // which is `navigate(-1)` when the list is the entry before this one.\n if (e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;\n e.preventDefault();\n route.back();\n }}\n className={cn(\"-ms-1 inline-flex items-center gap-0.5 self-start rounded-md pe-1 text-sm font-medium text-muted hover:text-primary\", FOCUS_RING)}\n >\n <ChevronLeft aria-hidden className=\"size-4 rtl:-scale-x-100\" />\n {pageTitle}\n </Link>\n }\n />\n {cards(open.id)}\n </div>\n ) : (\n <div className={pageClass} data-settings-view=\"list\">\n <PageHeader size=\"compact\" title={pageTitle} />\n {searchField}\n {searching ? (\n results\n ) : (\n <Card className=\"p-1\">\n <List separator=\"divider\" density=\"comfortable\" aria-label={labels.sections}>\n {route.groups.map((g) => (\n <ListItem\n key={g.id}\n href={settingsHref(base, g.id)}\n renderLink={renderLink}\n leading={\n <span\n aria-hidden\n className=\"flex size-8 shrink-0 items-center justify-center rounded-md bg-surface-2 text-secondary [&_svg]:size-4\"\n >\n {g.icon}\n </span>\n }\n title={g.title}\n subtitle={g.help}\n trailing={<ChevronRight aria-hidden className=\"size-4 rtl:-scale-x-100\" />}\n />\n ))}\n </List>\n </Card>\n )}\n {!searching && phoneFooter != null && (\n <Card className=\"p-1\">\n <List separator=\"divider\" density=\"comfortable\">\n {phoneFooter}\n </List>\n </Card>\n )}\n </div>\n );\n } else {\n const open = group === null ? undefined : groupById.get(group);\n body = (\n <div className={pageClass} data-settings-view=\"desktop\">\n <PageHeader size=\"compact\" title={pageTitle} />\n {searchField}\n <div className=\"md:grid md:grid-cols-[14rem_minmax(0,1fr)] md:gap-6\">\n <Tabs<G>\n orientation=\"vertical\"\n aria-label={labels.sections}\n // Sticky (new in the harmonisation, §3.2): keksdose's notifications group\n // scrolls for screens, and the list should stay in view beside it.\n className=\"mb-4 md:sticky md:top-6 md:mb-0 md:self-start\"\n panelId={open && !searching ? panelId : undefined}\n tabs={route.groups.map((g) => {\n const count = hitsByGroup.get(g.id) ?? 0;\n // While searching, the groups with nothing to show step back (keksdose).\n const dim = searching && count === 0;\n return {\n id: g.id,\n href: `${root}${settingsHref(base, g.id)}`,\n name: g.title,\n label: <span className={cn(dim && \"opacity-40\")}>{g.title}</span>,\n icon: <span className={cn(\"inline-flex [&_svg]:size-4\", dim && \"opacity-40\")}>{g.icon}</span>,\n badge:\n searching && count > 0 ? (\n <Chip size=\"sm\" tone=\"brand\">\n <span aria-hidden>{count}</span>\n <span className=\"sr-only-fixed\">{labels.matchCount(count)}</span>\n </Chip>\n ) : undefined,\n };\n })}\n active={(open?.id ?? route.groups[0]?.id) as G}\n onChange={(id) => {\n // While searching the hits stand where the group would; a click on a group\n // means \"go there\", so the search makes way (keksdose).\n setQuery(\"\");\n select(id);\n }}\n />\n <div className=\"min-w-0 space-y-4\">\n {searching ? (\n results\n ) : open ? (\n <div\n id={panelId}\n role=\"tabpanel\"\n aria-labelledby={`${panelId}-tab`}\n className=\"space-y-4\"\n >\n <PageHeader as=\"h2\" size=\"sm\" title={open.title} description={open.help} />\n {cards(open.id)}\n </div>\n ) : null}\n </div>\n </div>\n </div>\n );\n }\n\n return <SettingsLayoutContext.Provider value={context}>{body}</SettingsLayoutContext.Provider>;\n}\n"],"mappings":"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","names":[]}
@@ -1,106 +1,6 @@
1
- import * as react from 'react';
2
- import { ComponentPropsWithoutRef, ReactNode } from 'react';
3
- import { c4 as CardTone } from '../delete-account-setting-DiPX4Vue.js';
4
- import '../components/tooltip.js';
5
- import '../hooks/use-anchored-rect.js';
6
- import '../lib/clipping.js';
7
- import '../data-table-labels-BJ5JE_X2.js';
8
- import '../components/data-table-sort.js';
9
- import '../components/swipeable-row.js';
10
- import '../components/status-dot.js';
11
- import '../components/progress-bar.js';
12
- import '../components/signed-amount.js';
13
- import '../components/stat-tile.js';
14
- import '../components/chip.js';
15
- import 'lucide-react';
16
- import '../components/field-parts.js';
17
- import '../components/write-lock.js';
18
- import '../components/mini-calendar.js';
19
- import '../components/calendar-heatmap.js';
20
- import '../components/popover.js';
21
- import '../hooks/use-breakpoint.js';
22
- import '../components/field-sync.js';
23
- import '../wizard/types.js';
24
- import '../tour/tour.js';
25
- import '../search/command-palette.js';
26
- import '../search/global-search.js';
27
- import '../search/search-index.js';
28
- import '../components/month-picker.js';
29
- import '../components/page-contents.js';
30
- import '../components/series-chart-labels.js';
31
- import '../components/pie-chart-labels.js';
32
- import '../components/sparkline.js';
33
- import '../components/signature-pad.js';
34
- import '../components/password-strength.js';
35
- import '../components/swatch-picker.js';
36
- import '../components/tile-radio.js';
37
- import '../components/icon-picker.js';
38
- import '../components/dialog-frame.js';
39
- import '../components/modal.js';
40
- import '../hooks/use-search-param-state.js';
41
- import '../components/measured-grid.js';
42
- import '../components/user-avatar.js';
43
- import '../lib/person-name.js';
44
- import '../shell/topbar-action-menu.js';
45
- import '../components/menu-item.js';
46
- import '../components/floating-panel.js';
47
- import '../hooks/use-authed-src.js';
48
- import '../components/account-settings-labels.js';
49
- import '../components/bulk-action-bar.js';
50
- import '../components/list.js';
51
- import '../components/breadcrumbs.js';
52
- import '../components/toast.js';
53
- import '../components/description-list.js';
54
- import '../components/line-items.js';
55
- import '../components/error-boundary.js';
56
- import '../components/authed-image.js';
57
- import '../components/image-grid.js';
58
- import '../components/lightbox.js';
59
- import '../auth/sign-in-form.js';
60
- import '../landing/access.js';
61
- import '../landing/landing-labels.js';
62
- import '../shell/topbar-controls.js';
63
- import '../theme/palette-presets.js';
64
- import '../theme/chart-palette.js';
65
- import '../theme/theme-store.js';
66
- import 'zustand/middleware';
67
- import 'zustand';
68
- import '../auth/complete-name-dialog.js';
69
- import '../auth/forgot-password-form.js';
70
- import '../auth/status-parts.js';
71
- import '../auth/reset-password-form.js';
72
- import '../auth/verify-email.js';
73
- import '../auth/not-found-page.js';
74
- import '../auth/accept-invitation.js';
75
- import '../shell/company-switcher.js';
76
- import '../account/email-change-setting.js';
77
- import '../account/sessions-setting.js';
78
- import '../lib/format.js';
79
- import '../account/data-export-setting.js';
80
- import '../components/account-chips.js';
81
- import '../admin/admin-parts.js';
82
- import '../admin/admin-action-log.js';
83
- import './settings-labels.js';
84
- import '../demo/demo-labels.js';
85
- import '../components/appearance-labels.js';
86
- import '../theme/contrast.js';
87
- import '../theme/text-size.js';
88
- import '../components/reauth-dialog.js';
89
- import '../components/server-wake.js';
90
- import '../lib/server-wake.js';
91
- import '../components/translation-review-labels.js';
92
- import '../lib/translation-review.js';
93
- import '../components/country-select.js';
94
- import '../components/inline-edit-field.js';
95
- import '../lib/iban.js';
96
- import '../lib/phone.js';
97
- import '../components/sign-chip.js';
98
- import '../components/column-mapper.js';
99
- import '../lib/column-mapping.js';
100
- import '../lib/table-text.js';
101
- import '../components/focus-ring.js';
102
-
103
- interface SettingsSectionProps extends Omit<ComponentPropsWithoutRef<"div">, "title" | "id"> {
1
+ import type { ComponentPropsWithRef, ReactNode } from "react";
2
+ import type { CardTone } from "../components/card.js";
3
+ export interface SettingsSectionProps extends Omit<ComponentPropsWithRef<"div">, "title" | "id"> {
104
4
  /** The card's DOM id — the catalogue entry's `anchor`, the `?focus=` target. */
105
5
  anchor: string;
106
6
  /** The card's name: a heading at the layout's level (`h3` by default). */
@@ -133,6 +33,4 @@ interface SettingsSectionProps extends Omit<ComponentPropsWithoutRef<"div">, "ti
133
33
  * inside a {@link SettingsLayout}, which holds the catalogue; outside one there is
134
34
  * nothing to check against.
135
35
  */
136
- declare function SettingsSection({ anchor, title, titleVisible, description, tone, action, children, className, ...rest }: SettingsSectionProps): react.JSX.Element;
137
-
138
- export { SettingsSection, type SettingsSectionProps };
36
+ export declare function SettingsSection({ anchor, title, titleVisible, description, tone, action, children, className, ...rest }: SettingsSectionProps): import("react").JSX.Element;
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { Card } from "../components/ui.js";
3
+ import { Card } from "../components/card.js";
4
4
  import { cn } from "../lib/cn.js";
5
- import { CARD_DESCRIPTION_CLASS, CARD_TITLE_CLASS } from "../account/account-parts.js";
5
+ import { CARD_DESCRIPTION_CLASS, CARD_TITLE_CLASS } from "./settings-card-classes.js";
6
6
  import { SettingsHeading, useSettingsHeadingLevel } from "./settings-heading.js";
7
7
  import { useSettingsLayout } from "./settings-context.js";
8
8
  function devChecks() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/settings/settings-section.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { Card } from \"../components/ui\";\nimport type { CardTone } from \"../components/ui\";\nimport { cn } from \"../lib/cn\";\nimport { CARD_DESCRIPTION_CLASS, CARD_TITLE_CLASS } from \"../account/account-parts\";\nimport { SettingsHeading, useSettingsHeadingLevel } from \"./settings-heading\";\nimport { useSettingsLayout } from \"./settings-context\";\n\nexport interface SettingsSectionProps extends Omit<ComponentPropsWithoutRef<\"div\">, \"title\" | \"id\"> {\n /** The card's DOM id — the catalogue entry's `anchor`, the `?focus=` target. */\n anchor: string;\n /** The card's name: a heading at the layout's level (`h3` by default). */\n title: ReactNode;\n /**\n * `false` keeps the title for screen readers only — for a card alone in a group named\n * after it, so the page does not print the same heading twice (§3.7, keksdose's admin,\n * dev#490/#493/#494). The heading is still there: the outline and `?focus=` need it.\n * Default `true`.\n */\n titleVisible?: boolean;\n /** One muted line under the title. */\n description?: ReactNode;\n /** `danger` for the destructive cards at the end of \"data\" (§3.7). */\n tone?: CardTone;\n /** A control at the title's end — a refresh, a toggle. It drops under the title when\n * the card is too narrow for both. */\n action?: ReactNode;\n children?: ReactNode;\n}\n\n/**\n * Is this a development build? The consumer's bundler makes `import.meta.env.DEV` false in\n * production, so the check below is dead code there. Unlike the kit's warnings it stays\n * on under vitest: a card that cannot be found is a bug a test should fail on.\n * Optional-chained: `import.meta.env` is a Vite injection, absent under plain Node.\n */\nfunction devChecks(): boolean {\n return Boolean(import.meta.env?.DEV);\n}\n\n/**\n * An app's own settings card (docs/settings-harmonization.md §3.7, §7.1): a kit `Card` at\n * the settings type scale — the title `text-sm font-medium`, the description `text-xs`\n * muted, as the kit's own setting cards — with the catalogue anchor as its id, the title\n * as a heading under the group's, and the `?focus=` ring landing on it.\n *\n * **A card without a catalogue entry throws in development** (keksdose's `section()`\n * guard). A card search cannot find breaks the rule that every setting is findable\n * (§4.1), and the old failure was silent: a hit that scrolled nowhere. The check runs\n * inside a {@link SettingsLayout}, which holds the catalogue; outside one there is\n * nothing to check against.\n */\nexport function SettingsSection({\n anchor,\n title,\n titleVisible = true,\n description,\n tone,\n action,\n children,\n className,\n ...rest\n}: SettingsSectionProps) {\n const layout = useSettingsLayout();\n const level = useSettingsHeadingLevel() ?? \"h3\";\n if (layout && devChecks() && !layout.hasAnchor(anchor)) {\n throw new Error(\n `SettingsSection \"${anchor}\" has no catalogue entry: add a SettingsEntry with anchor \"${anchor}\" so search and ?focus= can reach it.`,\n );\n }\n const heading = (\n <SettingsHeading\n as={level}\n // Focusable from script only: `?focus=` moves focus here (§3.5).\n tabIndex={-1}\n data-settings-heading=\"\"\n className={cn(CARD_TITLE_CLASS, \"outline-none\", !titleVisible && \"sr-only-fixed\")}\n >\n {title}\n </SettingsHeading>\n );\n const header =\n titleVisible || description != null || action != null ? (\n <div className=\"flex flex-wrap items-start justify-between gap-x-3 gap-y-2\">\n <div className=\"min-w-0 flex-1 basis-48\">\n {heading}\n {description != null && <div className={CARD_DESCRIPTION_CLASS}>{description}</div>}\n </div>\n {action != null && <div className=\"flex shrink-0 items-center gap-2\">{action}</div>}\n </div>\n ) : (\n heading\n );\n return (\n <Card\n {...rest}\n id={anchor}\n tone={tone}\n // A column with a gap, not `space-y-3`: a hidden title is `position: fixed` and so\n // out of the flow, and a gap is only drawn between items in it — `space-y` would\n // still push the first card part down by a gap for the title nobody sees.\n className={cn(\"flex flex-col gap-3 p-4 transition-shadow motion-reduce:transition-none\", className)}\n >\n {header}\n {children}\n </Card>\n );\n}\n"],"mappings":";AAuEI,cAaI,YAbJ;AAtEJ,SAAS,YAAY;AAErB,SAAS,UAAU;AACnB,SAAS,wBAAwB,wBAAwB;AACzD,SAAS,iBAAiB,+BAA+B;AACzD,SAAS,yBAAyB;AA8BlC,SAAS,YAAqB;AAC5B,SAAO,QAAQ,YAAY,KAAK,GAAG;AACrC;AAcO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAyB;AACvB,QAAM,SAAS,kBAAkB;AACjC,QAAM,QAAQ,wBAAwB,KAAK;AAC3C,MAAI,UAAU,UAAU,KAAK,CAAC,OAAO,UAAU,MAAM,GAAG;AACtD,UAAM,IAAI;AAAA,MACR,oBAAoB,MAAM,8DAA8D,MAAM;AAAA,IAChG;AAAA,EACF;AACA,QAAM,UACJ;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,MAEJ,UAAU;AAAA,MACV,yBAAsB;AAAA,MACtB,WAAW,GAAG,kBAAkB,gBAAgB,CAAC,gBAAgB,eAAe;AAAA,MAE/E;AAAA;AAAA,EACH;AAEF,QAAM,SACJ,gBAAgB,eAAe,QAAQ,UAAU,OAC/C,qBAAC,SAAI,WAAU,8DACb;AAAA,yBAAC,SAAI,WAAU,2BACZ;AAAA;AAAA,MACA,eAAe,QAAQ,oBAAC,SAAI,WAAW,wBAAyB,uBAAY;AAAA,OAC/E;AAAA,IACC,UAAU,QAAQ,oBAAC,SAAI,WAAU,oCAAoC,kBAAO;AAAA,KAC/E,IAEA;AAEJ,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,IAAI;AAAA,MACJ;AAAA,MAIA,WAAW,GAAG,2EAA2E,SAAS;AAAA,MAEjG;AAAA;AAAA,QACA;AAAA;AAAA;AAAA,EACH;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/settings/settings-section.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ReactNode } from \"react\";\nimport { Card } from \"../components/card\";\nimport type { CardTone } from \"../components/card\";\nimport { cn } from \"../lib/cn\";\nimport { CARD_DESCRIPTION_CLASS, CARD_TITLE_CLASS } from \"./settings-card-classes\";\nimport { SettingsHeading, useSettingsHeadingLevel } from \"./settings-heading\";\nimport { useSettingsLayout } from \"./settings-context\";\n\nexport interface SettingsSectionProps extends Omit<ComponentPropsWithRef<\"div\">, \"title\" | \"id\"> {\n /** The card's DOM id — the catalogue entry's `anchor`, the `?focus=` target. */\n anchor: string;\n /** The card's name: a heading at the layout's level (`h3` by default). */\n title: ReactNode;\n /**\n * `false` keeps the title for screen readers only — for a card alone in a group named\n * after it, so the page does not print the same heading twice (§3.7, keksdose's admin,\n * dev#490/#493/#494). The heading is still there: the outline and `?focus=` need it.\n * Default `true`.\n */\n titleVisible?: boolean;\n /** One muted line under the title. */\n description?: ReactNode;\n /** `danger` for the destructive cards at the end of \"data\" (§3.7). */\n tone?: CardTone;\n /** A control at the title's end — a refresh, a toggle. It drops under the title when\n * the card is too narrow for both. */\n action?: ReactNode;\n children?: ReactNode;\n}\n\n/**\n * Is this a development build? The consumer's bundler makes `import.meta.env.DEV` false in\n * production, so the check below is dead code there. Unlike the kit's warnings it stays\n * on under vitest: a card that cannot be found is a bug a test should fail on.\n * Optional-chained: `import.meta.env` is a Vite injection, absent under plain Node.\n */\nfunction devChecks(): boolean {\n return Boolean(import.meta.env?.DEV);\n}\n\n/**\n * An app's own settings card (docs/settings-harmonization.md §3.7, §7.1): a kit `Card` at\n * the settings type scale — the title `text-sm font-medium`, the description `text-xs`\n * muted, as the kit's own setting cards — with the catalogue anchor as its id, the title\n * as a heading under the group's, and the `?focus=` ring landing on it.\n *\n * **A card without a catalogue entry throws in development** (keksdose's `section()`\n * guard). A card search cannot find breaks the rule that every setting is findable\n * (§4.1), and the old failure was silent: a hit that scrolled nowhere. The check runs\n * inside a {@link SettingsLayout}, which holds the catalogue; outside one there is\n * nothing to check against.\n */\nexport function SettingsSection({\n anchor,\n title,\n titleVisible = true,\n description,\n tone,\n action,\n children,\n className,\n ...rest\n}: SettingsSectionProps) {\n const layout = useSettingsLayout();\n const level = useSettingsHeadingLevel() ?? \"h3\";\n if (layout && devChecks() && !layout.hasAnchor(anchor)) {\n throw new Error(\n `SettingsSection \"${anchor}\" has no catalogue entry: add a SettingsEntry with anchor \"${anchor}\" so search and ?focus= can reach it.`,\n );\n }\n const heading = (\n <SettingsHeading\n as={level}\n // Focusable from script only: `?focus=` moves focus here (§3.5).\n tabIndex={-1}\n data-settings-heading=\"\"\n className={cn(CARD_TITLE_CLASS, \"outline-none\", !titleVisible && \"sr-only-fixed\")}\n >\n {title}\n </SettingsHeading>\n );\n const header =\n titleVisible || description != null || action != null ? (\n <div className=\"flex flex-wrap items-start justify-between gap-x-3 gap-y-2\">\n <div className=\"min-w-0 flex-1 basis-48\">\n {heading}\n {description != null && <div className={CARD_DESCRIPTION_CLASS}>{description}</div>}\n </div>\n {action != null && <div className=\"flex shrink-0 items-center gap-2\">{action}</div>}\n </div>\n ) : (\n heading\n );\n return (\n <Card\n {...rest}\n id={anchor}\n tone={tone}\n // A column with a gap, not `space-y-3`: a hidden title is `position: fixed` and so\n // out of the flow, and a gap is only drawn between items in it — `space-y` would\n // still push the first card part down by a gap for the title nobody sees.\n className={cn(\"flex flex-col gap-3 p-4 transition-shadow motion-reduce:transition-none\", className)}\n >\n {header}\n {children}\n </Card>\n );\n}\n"],"mappings":";AAuEI,cAaI,YAbJ;AAtEJ,SAAS,YAAY;AAErB,SAAS,UAAU;AACnB,SAAS,wBAAwB,wBAAwB;AACzD,SAAS,iBAAiB,+BAA+B;AACzD,SAAS,yBAAyB;AA8BlC,SAAS,YAAqB;AAC5B,SAAO,QAAQ,YAAY,KAAK,GAAG;AACrC;AAcO,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAAyB;AACvB,QAAM,SAAS,kBAAkB;AACjC,QAAM,QAAQ,wBAAwB,KAAK;AAC3C,MAAI,UAAU,UAAU,KAAK,CAAC,OAAO,UAAU,MAAM,GAAG;AACtD,UAAM,IAAI;AAAA,MACR,oBAAoB,MAAM,8DAA8D,MAAM;AAAA,IAChG;AAAA,EACF;AACA,QAAM,UACJ;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,MAEJ,UAAU;AAAA,MACV,yBAAsB;AAAA,MACtB,WAAW,GAAG,kBAAkB,gBAAgB,CAAC,gBAAgB,eAAe;AAAA,MAE/E;AAAA;AAAA,EACH;AAEF,QAAM,SACJ,gBAAgB,eAAe,QAAQ,UAAU,OAC/C,qBAAC,SAAI,WAAU,8DACb;AAAA,yBAAC,SAAI,WAAU,2BACZ;AAAA;AAAA,MACA,eAAe,QAAQ,oBAAC,SAAI,WAAW,wBAAyB,uBAAY;AAAA,OAC/E;AAAA,IACC,UAAU,QAAQ,oBAAC,SAAI,WAAU,oCAAoC,kBAAO;AAAA,KAC/E,IAEA;AAEJ,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,IAAI;AAAA,MACJ;AAAA,MAIA,WAAW,GAAG,2EAA2E,SAAS;AAAA,MAEjG;AAAA;AAAA,QACA;AAAA;AAAA;AAAA,EACH;AAEJ;","names":[]}
@@ -1,35 +1,32 @@
1
- import { TextSize } from '../theme/text-size.js';
2
- import { ContrastMode } from '../theme/contrast.js';
3
- import 'zustand/middleware';
4
- import 'zustand';
5
-
1
+ import type { TextSize } from "../theme/text-size.js";
2
+ import type { ContrastMode } from "../theme/contrast.js";
6
3
  /**
7
4
  * The text size and contrast follow the account like the language does
8
5
  * (docs/text-size-harmonization.md §2.2, §2.6, §6; settings contract §6.2) — the same
9
6
  * rule as {@link useAccountLanguage}, for two values at once.
10
7
  */
11
8
  /** Where a value in force came from, in the order they are asked. */
12
- type AppearanceSource = "device" | "account" | "default";
9
+ export type AppearanceSource = "device" | "account" | "default";
13
10
  /** The two fields of an `/auth/me` answer this reads — server-kit 0.6's `UserResponse`,
14
11
  * both nullable (null = never chosen). */
15
- interface AccountAppearanceFields {
12
+ export interface AccountAppearanceFields {
16
13
  text_size?: string | null;
17
14
  contrast?: string | null;
18
15
  }
19
16
  /** This device's own choices — the text-size and contrast stores' values, `null` where
20
17
  * this device never chose. */
21
- interface DeviceAppearance {
18
+ export interface DeviceAppearance {
22
19
  textSize?: string | null;
23
20
  contrast?: string | null;
24
21
  }
25
22
  /** The body of `PATCH /auth/me` for a pick: one field, as server-kit's `ProfileUpdate`
26
23
  * spells it. */
27
- type AccountAppearancePatch = {
24
+ export type AccountAppearancePatch = {
28
25
  text_size: TextSize;
29
26
  } | {
30
27
  contrast: ContrastMode;
31
28
  };
32
- interface ResolvedAccountAppearance {
29
+ export interface ResolvedAccountAppearance {
33
30
  textSize: TextSize;
34
31
  /** The stored MODE — "system" included — not whether more contrast is on now. */
35
32
  contrast: ContrastMode;
@@ -42,8 +39,8 @@ interface ResolvedAccountAppearance {
42
39
  * The values on a device (§2.6): **its own choice → the account's → the default**
43
40
  * (Normal; "system" for contrast), each taken only when it is a known value. Pure.
44
41
  */
45
- declare function resolveAccountAppearance(device: DeviceAppearance, account: AccountAppearanceFields | null | undefined): ResolvedAccountAppearance;
46
- interface UseAccountAppearanceOptions {
42
+ export declare function resolveAccountAppearance(device: DeviceAppearance, account: AccountAppearanceFields | null | undefined): ResolvedAccountAppearance;
43
+ export interface UseAccountAppearanceOptions {
47
44
  /** The signed-in account (`/auth/me`), or `null` / `undefined` while signed out or not
48
45
  * loaded yet — then nothing is saved to it. */
49
46
  account: AccountAppearanceFields | null | undefined;
@@ -61,7 +58,7 @@ interface UseAccountAppearanceOptions {
61
58
  /** A demo session: a pick stays on the device, the account is never written (§6). */
62
59
  isDemo?: boolean;
63
60
  }
64
- interface AccountAppearance extends ResolvedAccountAppearance {
61
+ export interface AccountAppearance extends ResolvedAccountAppearance {
65
62
  /** The user picked a size: it becomes the device's choice and — signed in, and not a
66
63
  * demo — the account's. The promise is `save`'s; the device keeps the pick if it
67
64
  * fails, and the app says so (`appearance.saveFailed`, 0.32.1). */
@@ -87,6 +84,4 @@ interface AccountAppearance extends ResolvedAccountAppearance {
87
84
  * useApplyContrast({ account: me?.contrast });
88
85
  * ```
89
86
  */
90
- declare function useAccountAppearance(options: UseAccountAppearanceOptions): AccountAppearance;
91
-
92
- export { type AccountAppearance, type AccountAppearanceFields, type AccountAppearancePatch, type AppearanceSource, type DeviceAppearance, type ResolvedAccountAppearance, type UseAccountAppearanceOptions, resolveAccountAppearance, useAccountAppearance };
87
+ export declare function useAccountAppearance(options: UseAccountAppearanceOptions): AccountAppearance;
@@ -2,15 +2,15 @@
2
2
  * Where the language on screen came from (docs/settings-harmonization.md §6.2), in the
3
3
  * order they are asked.
4
4
  */
5
- type AccountLanguageSource = "device" | "account" | "browser" | "default";
5
+ export type AccountLanguageSource = "device" | "account" | "browser" | "default";
6
6
  /**
7
7
  * The offered language a tag means, or `null` — the client's half of server-kit's
8
8
  * `canonical_locale(tag, offered)` (§6.2): case and `_` normalised; an offered tag matches
9
9
  * exactly; otherwise the first offered tag of the same language (`de`, `de-DE` → `de-CH`
10
10
  * where `de-CH` is what the app offers); anything else is no match.
11
11
  */
12
- declare function matchOfferedLanguage(tag: string | null | undefined, offered: readonly string[]): string | null;
13
- interface ResolveAccountLanguageInput {
12
+ export declare function matchOfferedLanguage(tag: string | null | undefined, offered: readonly string[]): string | null;
13
+ export interface ResolveAccountLanguageInput {
14
14
  /** This device's own choice — made on this device, stored only when the user picks. */
15
15
  device: string | null | undefined;
16
16
  /** The signed-in account's `locale`; `undefined` while signed out. */
@@ -22,7 +22,7 @@ interface ResolveAccountLanguageInput {
22
22
  /** The app's default, when nothing else matches. */
23
23
  fallback: string;
24
24
  }
25
- interface ResolvedAccountLanguage {
25
+ export interface ResolvedAccountLanguage {
26
26
  language: string;
27
27
  source: AccountLanguageSource;
28
28
  }
@@ -35,8 +35,8 @@ interface ResolvedAccountLanguage {
35
35
  * nothing more: once the account's locale arrives it outranks the browser, never the
36
36
  * device's pick.
37
37
  */
38
- declare function resolveAccountLanguage(input: ResolveAccountLanguageInput): ResolvedAccountLanguage;
39
- interface UseAccountLanguageOptions {
38
+ export declare function resolveAccountLanguage(input: ResolveAccountLanguageInput): ResolvedAccountLanguage;
39
+ export interface UseAccountLanguageOptions {
40
40
  /** The signed-in account's `locale` (`/auth/me`). `undefined` while signed out or not
41
41
  * loaded yet; `null` for an account with no language set. */
42
42
  account: string | null | undefined;
@@ -56,7 +56,7 @@ interface UseAccountLanguageOptions {
56
56
  /** The browser's languages. Default: `navigator.languages`. */
57
57
  browser?: readonly string[];
58
58
  }
59
- interface AccountLanguage extends ResolvedAccountLanguage {
59
+ export interface AccountLanguage extends ResolvedAccountLanguage {
60
60
  /**
61
61
  * The user picked `code` (the language card, the top bar's quick switch): it becomes the
62
62
  * device's own choice and — signed in, and not a demo — the account's locale. The
@@ -78,6 +78,4 @@ interface AccountLanguage extends ResolvedAccountLanguage {
78
78
  * The hook only answers; the app applies `language` (`i18n.changeLanguage`) where it
79
79
  * applies languages today.
80
80
  */
81
- declare function useAccountLanguage(options: UseAccountLanguageOptions): AccountLanguage;
82
-
83
- export { type AccountLanguage, type AccountLanguageSource, type ResolveAccountLanguageInput, type ResolvedAccountLanguage, type UseAccountLanguageOptions, matchOfferedLanguage, resolveAccountLanguage, useAccountLanguage };
81
+ export declare function useAccountLanguage(options: UseAccountLanguageOptions): AccountLanguage;