@kerfjs/ui 5.0.0-beta.11 → 5.0.0-beta.110

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 (1358) hide show
  1. package/README.md +707 -160
  2. package/ai/application-ui-diagnostic-ids-v1.json +115 -0
  3. package/ai/application-ui-profile-sync.cjs +548 -0
  4. package/ai/application-ui-profile.d.mts +1 -0
  5. package/ai/application-ui-profile.d.ts +106 -0
  6. package/ai/application-ui-profile.defaults.json +222 -0
  7. package/ai/application-ui-profile.mjs +653 -0
  8. package/ai/application-ui-profile.schema.json +140 -0
  9. package/ai/catalog-authoring.json +34 -0
  10. package/ai/catalog-authoring.schema.json +105 -0
  11. package/ai/compile-time-contracts-v1.json +149 -0
  12. package/ai/compile-time-contracts-v1.schema.json +52 -0
  13. package/ai/component-catalog-extension.schema.json +104 -0
  14. package/ai/component-catalog.json +9111 -1376
  15. package/ai/component-catalog.schema.json +94 -1
  16. package/ai/component-class-owners.cjs +83 -0
  17. package/ai/component-composition-extension.d.ts +7 -0
  18. package/ai/component-composition-extension.schema.json +7 -0
  19. package/ai/component-composition-rules.json +570 -0
  20. package/ai/component-composition.d.ts +143 -0
  21. package/ai/component-composition.json +10437 -0
  22. package/ai/component-composition.schema.json +444 -0
  23. package/ai/components/README.md +206 -0
  24. package/ai/components/anchored-surface.md +99 -0
  25. package/ai/components/application-tabs.md +65 -0
  26. package/ai/components/backdrop-image.md +84 -0
  27. package/ai/components/badge.md +77 -0
  28. package/ai/components/button.md +94 -0
  29. package/ai/components/checkbox-group.md +89 -0
  30. package/ai/components/checkbox.md +90 -0
  31. package/ai/components/chip.md +80 -0
  32. package/ai/components/choice-chips.md +93 -0
  33. package/ai/components/collapsible-panel.md +103 -0
  34. package/ai/components/color-field.md +92 -0
  35. package/ai/components/color-picker.md +93 -0
  36. package/ai/components/color-swatches.md +82 -0
  37. package/ai/components/column-track.md +78 -0
  38. package/ai/components/combobox.md +90 -0
  39. package/ai/components/content-item.md +101 -0
  40. package/ai/components/content-swap.md +78 -0
  41. package/ai/components/corner-status.md +88 -0
  42. package/ai/components/disclosure-arrow.md +77 -0
  43. package/ai/components/disclosure.md +88 -0
  44. package/ai/components/document-baseline.md +77 -0
  45. package/ai/components/edge-activity-indicator.md +81 -0
  46. package/ai/components/empty-state.md +80 -0
  47. package/ai/components/feedback.md +71 -0
  48. package/ai/components/file-picker.md +89 -0
  49. package/ai/components/floating-toolbar.md +82 -0
  50. package/ai/components/foundation.md +65 -0
  51. package/ai/components/framed-list.md +80 -0
  52. package/ai/components/grid.md +101 -0
  53. package/ai/components/headers.md +63 -0
  54. package/ai/components/layout.md +75 -0
  55. package/ai/components/list-action-row.md +108 -0
  56. package/ai/components/list-detail-dialog.md +90 -0
  57. package/ai/components/list-header.md +91 -0
  58. package/ai/components/list-inset-control.md +74 -0
  59. package/ai/components/list-inset-text.md +72 -0
  60. package/ai/components/list-item.md +108 -0
  61. package/ai/components/list.md +127 -0
  62. package/ai/components/loading-spinner.md +73 -0
  63. package/ai/components/lucide-icon.md +99 -0
  64. package/ai/components/message-composer.md +85 -0
  65. package/ai/components/nav-stack.md +120 -0
  66. package/ai/components/pane.md +127 -0
  67. package/ai/components/popup-menu.md +174 -0
  68. package/ai/components/progress-bar.md +82 -0
  69. package/ai/components/progress-ring.md +80 -0
  70. package/ai/components/radio-group.md +89 -0
  71. package/ai/components/recipe-app-shell.md +57 -0
  72. package/ai/components/recipe-collapsible-sidebar.md +57 -0
  73. package/ai/components/recipe-compact-toolbar.md +57 -0
  74. package/ai/components/recipe-composer-form.md +57 -0
  75. package/ai/components/recipe-list-detail-dialog.md +57 -0
  76. package/ai/components/recipe-list-workspace-states.md +57 -0
  77. package/ai/components/recipe-loading-inspector.md +57 -0
  78. package/ai/components/recipe-media-detail.md +57 -0
  79. package/ai/components/recipe-navigation-sidebar.md +57 -0
  80. package/ai/components/recipe-navigation-stack.md +57 -0
  81. package/ai/components/recipe-workspace-header.md +57 -0
  82. package/ai/components/resize.md +106 -0
  83. package/ai/components/row.md +96 -0
  84. package/ai/components/search-field.md +108 -0
  85. package/ai/components/segmented-control.md +83 -0
  86. package/ai/components/select.md +118 -0
  87. package/ai/components/skeleton.md +84 -0
  88. package/ai/components/slider.md +84 -0
  89. package/ai/components/spacer.md +86 -0
  90. package/ai/components/split-button.md +83 -0
  91. package/ai/components/split-view.md +105 -0
  92. package/ai/components/state-banner.md +96 -0
  93. package/ai/components/summary-row.md +85 -0
  94. package/ai/components/sunken-panel.md +79 -0
  95. package/ai/components/surface-scaffold.md +117 -0
  96. package/ai/components/switch.md +81 -0
  97. package/ai/components/tab-bar.md +114 -0
  98. package/ai/components/tab-navigator.md +105 -0
  99. package/ai/components/tabs.md +95 -0
  100. package/ai/components/tag-field.md +86 -0
  101. package/ai/components/text-field.md +102 -0
  102. package/ai/components/text.md +93 -0
  103. package/ai/components/toast.md +85 -0
  104. package/ai/components/toolbar-control-group.md +127 -0
  105. package/ai/components/toolbar-text.md +100 -0
  106. package/ai/components/toolbar.md +103 -0
  107. package/ai/components/tooltip.md +81 -0
  108. package/ai/components/value-table.md +80 -0
  109. package/ai/components/wa-accordion-item.md +61 -0
  110. package/ai/components/wa-accordion.md +71 -0
  111. package/ai/components/wa-animated-image.md +56 -0
  112. package/ai/components/wa-animation.md +56 -0
  113. package/ai/components/wa-avatar.md +56 -0
  114. package/ai/components/wa-badge.md +62 -0
  115. package/ai/components/wa-breadcrumb-item.md +54 -0
  116. package/ai/components/wa-breadcrumb.md +56 -0
  117. package/ai/components/wa-button-group.md +62 -0
  118. package/ai/components/wa-button.md +61 -0
  119. package/ai/components/wa-callout.md +60 -0
  120. package/ai/components/wa-card.md +67 -0
  121. package/ai/components/wa-carousel-item.md +54 -0
  122. package/ai/components/wa-carousel.md +56 -0
  123. package/ai/components/wa-checkbox-group.md +62 -0
  124. package/ai/components/wa-checkbox.md +61 -0
  125. package/ai/components/wa-color-picker.md +63 -0
  126. package/ai/components/wa-comparison.md +56 -0
  127. package/ai/components/wa-copy-button.md +56 -0
  128. package/ai/components/wa-details.md +67 -0
  129. package/ai/components/wa-dialog.md +65 -0
  130. package/ai/components/wa-divider.md +54 -0
  131. package/ai/components/wa-drawer.md +62 -0
  132. package/ai/components/wa-dropdown-item.md +62 -0
  133. package/ai/components/wa-dropdown.md +62 -0
  134. package/ai/components/wa-format-bytes.md +54 -0
  135. package/ai/components/wa-format-date.md +54 -0
  136. package/ai/components/wa-format-number.md +54 -0
  137. package/ai/components/wa-icon.md +59 -0
  138. package/ai/components/wa-include.md +55 -0
  139. package/ai/components/wa-input.md +62 -0
  140. package/ai/components/wa-intersection-observer.md +54 -0
  141. package/ai/components/wa-known-date.md +54 -0
  142. package/ai/components/wa-markdown.md +54 -0
  143. package/ai/components/wa-mutation-observer.md +54 -0
  144. package/ai/components/wa-number-input.md +56 -0
  145. package/ai/components/wa-option.md +61 -0
  146. package/ai/components/wa-otp-input.md +54 -0
  147. package/ai/components/wa-page.md +62 -0
  148. package/ai/components/wa-pagination.md +56 -0
  149. package/ai/components/wa-popover.md +61 -0
  150. package/ai/components/wa-popup.md +60 -0
  151. package/ai/components/wa-progress-bar.md +60 -0
  152. package/ai/components/wa-progress-ring.md +60 -0
  153. package/ai/components/wa-qr-code.md +54 -0
  154. package/ai/components/wa-radio-group.md +67 -0
  155. package/ai/components/wa-radio.md +61 -0
  156. package/ai/components/wa-random-content.md +54 -0
  157. package/ai/components/wa-rating.md +56 -0
  158. package/ai/components/wa-relative-time.md +54 -0
  159. package/ai/components/wa-resize-observer.md +54 -0
  160. package/ai/components/wa-scroller.md +61 -0
  161. package/ai/components/wa-select.md +65 -0
  162. package/ai/components/wa-skeleton.md +60 -0
  163. package/ai/components/wa-slider.md +61 -0
  164. package/ai/components/wa-spinner.md +60 -0
  165. package/ai/components/wa-split-panel.md +60 -0
  166. package/ai/components/wa-step.md +56 -0
  167. package/ai/components/wa-stepper.md +56 -0
  168. package/ai/components/wa-switch.md +60 -0
  169. package/ai/components/wa-tab-group.md +71 -0
  170. package/ai/components/wa-tab-panel.md +62 -0
  171. package/ai/components/wa-tab.md +61 -0
  172. package/ai/components/wa-tag-input.md +62 -0
  173. package/ai/components/wa-tag.md +62 -0
  174. package/ai/components/wa-textarea.md +60 -0
  175. package/ai/components/wa-time-input.md +56 -0
  176. package/ai/components/wa-toast-item.md +62 -0
  177. package/ai/components/wa-toast.md +62 -0
  178. package/ai/components/wa-tooltip.md +61 -0
  179. package/ai/components/wa-tree-item.md +56 -0
  180. package/ai/components/wa-tree.md +56 -0
  181. package/ai/components/wa-zoomable-frame.md +56 -0
  182. package/ai/components/workbench-dialog.md +90 -0
  183. package/ai/components/workbench.md +120 -0
  184. package/ai/public-api-signatures-v1.md +6114 -445
  185. package/ai/skill.md +545 -65
  186. package/ai/webawesome-jsx-signatures-v1.md +12 -2
  187. package/analyzer/cli.mjs +49 -0
  188. package/analyzer/component-ownership.d.mts +72 -0
  189. package/analyzer/component-ownership.mjs +429 -0
  190. package/analyzer/index.d.mts +53 -0
  191. package/analyzer/index.mjs +2375 -0
  192. package/analyzer/loud-pairs.d.mts +49 -0
  193. package/analyzer/loud-pairs.mjs +357 -0
  194. package/analyzer/report.schema.json +66 -0
  195. package/analyzer/selectors.d.mts +21 -0
  196. package/analyzer/selectors.mjs +212 -0
  197. package/catalog-projection-cli.mjs +96 -0
  198. package/catalog-projection.d.mts +55 -0
  199. package/catalog-projection.mjs +62 -0
  200. package/dist/anchored-surface.d.ts +69 -0
  201. package/dist/anchored-surface.js +3 -0
  202. package/dist/anchored-surface.js.map +1 -0
  203. package/dist/backdrop-image.d.ts +132 -0
  204. package/dist/backdrop-image.js +5 -0
  205. package/dist/backdrop-image.js.map +1 -0
  206. package/dist/badge.d.ts +91 -0
  207. package/dist/badge.js +4 -0
  208. package/dist/badge.js.map +1 -0
  209. package/dist/browser/anchored-surface.js +3 -0
  210. package/dist/browser/backdrop-image.js +3 -0
  211. package/dist/browser/badge.js +3 -0
  212. package/dist/browser/button.js +5 -0
  213. package/dist/browser/catalog.js +29 -0
  214. package/dist/browser/checkbox-group.js +5 -0
  215. package/dist/browser/checkbox.js +4 -0
  216. package/dist/browser/chip.js +3 -0
  217. package/dist/browser/choice-chips.js +3 -0
  218. package/dist/browser/collapsible-panel.js +9 -0
  219. package/dist/browser/color-field.js +4 -0
  220. package/dist/browser/color-picker.js +5 -0
  221. package/dist/browser/color-swatches.js +3 -0
  222. package/dist/browser/column-track.js +3 -0
  223. package/dist/browser/combobox.js +3 -0
  224. package/dist/browser/content-item.js +3 -0
  225. package/dist/browser/content-swap.js +3 -0
  226. package/dist/browser/corner-status.js +3 -0
  227. package/dist/browser/disclosure.js +5 -0
  228. package/dist/browser/edge-activity-indicator.js +3 -0
  229. package/dist/browser/file-picker.js +3 -0
  230. package/dist/browser/framed-list.js +3 -0
  231. package/dist/browser/grid.js +3 -0
  232. package/dist/browser/list-action-row.js +3 -0
  233. package/dist/browser/list-detail-dialog.js +14 -0
  234. package/dist/browser/list-header.js +3 -1
  235. package/dist/browser/list-inset-control.js +3 -0
  236. package/dist/browser/list-inset-text.js +3 -0
  237. package/dist/browser/list-item.js +1 -0
  238. package/dist/browser/list.js +3 -0
  239. package/dist/browser/message-composer.js +5 -0
  240. package/dist/browser/nav-stack.js +11 -0
  241. package/dist/browser/pane.js +3 -0
  242. package/dist/browser/popup-menu.js +4 -0
  243. package/dist/browser/progress-bar.js +3 -0
  244. package/dist/browser/progress-ring.js +3 -0
  245. package/dist/browser/radio-group.js +3 -0
  246. package/dist/browser/row.js +3 -0
  247. package/dist/browser/search-field.js +4 -0
  248. package/dist/browser/segmented-control.js +0 -1
  249. package/dist/browser/select.js +2 -1
  250. package/dist/browser/slider.js +3 -0
  251. package/dist/browser/spacer.js +3 -0
  252. package/dist/browser/split-button.js +5 -0
  253. package/dist/browser/split-view.js +13 -0
  254. package/dist/browser/state-banner.js +1 -0
  255. package/dist/browser/summary-row.js +3 -0
  256. package/dist/browser/sunken-panel.js +3 -0
  257. package/dist/browser/surface-scaffold.js +4 -0
  258. package/dist/browser/switch.js +3 -0
  259. package/dist/browser/tab-bar-item.js +4 -0
  260. package/dist/browser/tab-navigator.js +4 -0
  261. package/dist/browser/tag-field.js +5 -0
  262. package/dist/browser/text-field.js +4 -0
  263. package/dist/browser/text.js +3 -0
  264. package/dist/browser/toolbar-control-group.js +1 -0
  265. package/dist/browser/workbench-dialog.js +15 -0
  266. package/dist/browser/workbench.js +14 -0
  267. package/dist/button.d.ts +121 -0
  268. package/dist/button.js +7 -0
  269. package/dist/button.js.map +1 -0
  270. package/dist/catalog-resources.d.ts +50 -0
  271. package/dist/catalog-resources.js +22 -0
  272. package/dist/catalog-resources.js.map +1 -0
  273. package/dist/catalog.d.ts +134 -101
  274. package/dist/catalog.js +700 -108
  275. package/dist/catalog.js.map +1 -1
  276. package/dist/checkbox-group.d.ts +70 -0
  277. package/dist/checkbox-group.js +7 -0
  278. package/dist/checkbox-group.js.map +1 -0
  279. package/dist/checkbox.d.ts +45 -0
  280. package/dist/checkbox.js +6 -0
  281. package/dist/checkbox.js.map +1 -0
  282. package/dist/chip.d.ts +117 -0
  283. package/dist/chip.js +4 -0
  284. package/dist/chip.js.map +1 -0
  285. package/dist/choice-chips.d.ts +116 -0
  286. package/dist/choice-chips.js +3 -0
  287. package/dist/choice-chips.js.map +1 -0
  288. package/dist/chunk-2FW7D4IG.js +52 -0
  289. package/dist/chunk-2FW7D4IG.js.map +1 -0
  290. package/dist/chunk-2GOCOLQL.js +270 -0
  291. package/dist/chunk-2GOCOLQL.js.map +1 -0
  292. package/dist/chunk-2LM3PYHA.js +300 -0
  293. package/dist/chunk-2LM3PYHA.js.map +1 -0
  294. package/dist/chunk-36HVQ72F.js +123 -0
  295. package/dist/chunk-36HVQ72F.js.map +1 -0
  296. package/dist/chunk-3GLYIIFR.js +230 -0
  297. package/dist/chunk-3GLYIIFR.js.map +1 -0
  298. package/dist/chunk-3VZ6SFD4.js +8 -0
  299. package/dist/chunk-3VZ6SFD4.js.map +1 -0
  300. package/dist/chunk-3WYREXW4.js +120 -0
  301. package/dist/chunk-3WYREXW4.js.map +1 -0
  302. package/dist/chunk-3Z7N2NAZ.js +385 -0
  303. package/dist/chunk-3Z7N2NAZ.js.map +1 -0
  304. package/dist/chunk-4OV272LF.js +93 -0
  305. package/dist/chunk-4OV272LF.js.map +1 -0
  306. package/dist/chunk-4RECPEHI.js +67 -0
  307. package/dist/chunk-4RECPEHI.js.map +1 -0
  308. package/dist/chunk-4UB5Z3ZZ.js +68 -0
  309. package/dist/chunk-4UB5Z3ZZ.js.map +1 -0
  310. package/dist/chunk-5J6Z4BWY.js +141 -0
  311. package/dist/chunk-5J6Z4BWY.js.map +1 -0
  312. package/dist/chunk-5USKCWGL.js +113 -0
  313. package/dist/chunk-5USKCWGL.js.map +1 -0
  314. package/dist/chunk-6C6DLP3W.js +31 -0
  315. package/dist/chunk-6C6DLP3W.js.map +1 -0
  316. package/dist/chunk-6CDILXF4.js +204 -0
  317. package/dist/chunk-6CDILXF4.js.map +1 -0
  318. package/dist/chunk-6VVIW7VB.js +69 -0
  319. package/dist/chunk-6VVIW7VB.js.map +1 -0
  320. package/dist/chunk-7AK5I7U7.js +55 -0
  321. package/dist/chunk-7AK5I7U7.js.map +1 -0
  322. package/dist/chunk-7K6U6FCN.js +122 -0
  323. package/dist/chunk-7K6U6FCN.js.map +1 -0
  324. package/dist/chunk-AMIHGFLP.js +59 -0
  325. package/dist/chunk-AMIHGFLP.js.map +1 -0
  326. package/dist/chunk-AN5IWMTM.js +24 -0
  327. package/dist/chunk-AN5IWMTM.js.map +1 -0
  328. package/dist/chunk-ATGAJVZ6.js +268 -0
  329. package/dist/chunk-ATGAJVZ6.js.map +1 -0
  330. package/dist/chunk-AYPGXR2E.js +20 -0
  331. package/dist/chunk-AYPGXR2E.js.map +1 -0
  332. package/dist/chunk-B53PS2LE.js +34 -0
  333. package/dist/chunk-B53PS2LE.js.map +1 -0
  334. package/dist/chunk-BKUMG2KB.js +95 -0
  335. package/dist/chunk-BKUMG2KB.js.map +1 -0
  336. package/dist/chunk-C26Q6P4Q.js +76 -0
  337. package/dist/chunk-C26Q6P4Q.js.map +1 -0
  338. package/dist/chunk-CEJ5FK6G.js +288 -0
  339. package/dist/chunk-CEJ5FK6G.js.map +1 -0
  340. package/dist/chunk-CIAUILRR.js +222 -0
  341. package/dist/chunk-CIAUILRR.js.map +1 -0
  342. package/dist/chunk-CNM6ZWP2.js +38 -0
  343. package/dist/chunk-CNM6ZWP2.js.map +1 -0
  344. package/dist/chunk-CPSGUGAY.js +527 -0
  345. package/dist/chunk-CPSGUGAY.js.map +1 -0
  346. package/dist/chunk-CTQUDCY5.js +26 -0
  347. package/dist/chunk-CTQUDCY5.js.map +1 -0
  348. package/dist/chunk-CVD5IZGB.js +66 -0
  349. package/dist/chunk-CVD5IZGB.js.map +1 -0
  350. package/dist/chunk-D4MXSAMI.js +50 -0
  351. package/dist/chunk-D4MXSAMI.js.map +1 -0
  352. package/dist/chunk-D5RGM3XA.js +38 -0
  353. package/dist/chunk-D5RGM3XA.js.map +1 -0
  354. package/dist/chunk-DZJ4GBSP.js +59 -0
  355. package/dist/chunk-DZJ4GBSP.js.map +1 -0
  356. package/dist/chunk-EIET4QLK.js +51 -0
  357. package/dist/chunk-EIET4QLK.js.map +1 -0
  358. package/dist/chunk-EKHDLBRP.js +86 -0
  359. package/dist/chunk-EKHDLBRP.js.map +1 -0
  360. package/dist/chunk-EYDXFOSH.js +457 -0
  361. package/dist/chunk-EYDXFOSH.js.map +1 -0
  362. package/dist/chunk-G3J7JDP6.js +29 -0
  363. package/dist/chunk-G3J7JDP6.js.map +1 -0
  364. package/dist/chunk-GS2QD3N7.js +14 -0
  365. package/dist/chunk-GS2QD3N7.js.map +1 -0
  366. package/dist/chunk-GXSX6Q6O.js +42 -0
  367. package/dist/chunk-GXSX6Q6O.js.map +1 -0
  368. package/dist/chunk-HDXUHLTQ.js +90 -0
  369. package/dist/chunk-HDXUHLTQ.js.map +1 -0
  370. package/dist/chunk-HJXVVFBT.js +108 -0
  371. package/dist/chunk-HJXVVFBT.js.map +1 -0
  372. package/dist/chunk-HQZG3OFL.js +158 -0
  373. package/dist/chunk-HQZG3OFL.js.map +1 -0
  374. package/dist/chunk-HTERKONR.js +49 -0
  375. package/dist/chunk-HTERKONR.js.map +1 -0
  376. package/dist/chunk-HU5IHXCI.js +73 -0
  377. package/dist/chunk-HU5IHXCI.js.map +1 -0
  378. package/dist/chunk-IKS72C6P.js +53 -0
  379. package/dist/chunk-IKS72C6P.js.map +1 -0
  380. package/dist/chunk-IO27YTL3.js +73 -0
  381. package/dist/chunk-IO27YTL3.js.map +1 -0
  382. package/dist/chunk-IQSRHXZR.js +164 -0
  383. package/dist/chunk-IQSRHXZR.js.map +1 -0
  384. package/dist/chunk-ITUQC4FW.js +163 -0
  385. package/dist/chunk-ITUQC4FW.js.map +1 -0
  386. package/dist/chunk-JCCN3U6X.js +176 -0
  387. package/dist/chunk-JCCN3U6X.js.map +1 -0
  388. package/dist/chunk-K57NINLH.js +137 -0
  389. package/dist/chunk-K57NINLH.js.map +1 -0
  390. package/dist/chunk-KC6WUSNS.js +34 -0
  391. package/dist/chunk-KC6WUSNS.js.map +1 -0
  392. package/dist/chunk-KCS6NJ3O.js +82 -0
  393. package/dist/chunk-KCS6NJ3O.js.map +1 -0
  394. package/dist/chunk-KDQZ3E5C.js +75 -0
  395. package/dist/chunk-KDQZ3E5C.js.map +1 -0
  396. package/dist/chunk-KH4KEMSP.js +71 -0
  397. package/dist/chunk-KH4KEMSP.js.map +1 -0
  398. package/dist/chunk-KK3S5OTW.js +98 -0
  399. package/dist/chunk-KK3S5OTW.js.map +1 -0
  400. package/dist/chunk-KPINJHIC.js +122 -0
  401. package/dist/chunk-KPINJHIC.js.map +1 -0
  402. package/dist/chunk-LMHN2TJL.js +167 -0
  403. package/dist/chunk-LMHN2TJL.js.map +1 -0
  404. package/dist/chunk-LTBVP6VN.js +59 -0
  405. package/dist/chunk-LTBVP6VN.js.map +1 -0
  406. package/dist/{chunk-YGN7OMLT.js → chunk-LZUUUHNH.js} +13 -6
  407. package/dist/chunk-LZUUUHNH.js.map +1 -0
  408. package/dist/chunk-MHMWQ7RB.js +19 -0
  409. package/dist/chunk-MHMWQ7RB.js.map +1 -0
  410. package/dist/chunk-MJ5RU6XT.js +173 -0
  411. package/dist/chunk-MJ5RU6XT.js.map +1 -0
  412. package/dist/chunk-MVKHSAKE.js +169 -0
  413. package/dist/chunk-MVKHSAKE.js.map +1 -0
  414. package/dist/chunk-NB6POCFH.js +103 -0
  415. package/dist/chunk-NB6POCFH.js.map +1 -0
  416. package/dist/chunk-NR6O74ST.js +169 -0
  417. package/dist/chunk-NR6O74ST.js.map +1 -0
  418. package/dist/chunk-OHPYT2BH.js +82 -0
  419. package/dist/chunk-OHPYT2BH.js.map +1 -0
  420. package/dist/chunk-OQP3PFKQ.js +341 -0
  421. package/dist/chunk-OQP3PFKQ.js.map +1 -0
  422. package/dist/chunk-OZ6X76G5.js +547 -0
  423. package/dist/chunk-OZ6X76G5.js.map +1 -0
  424. package/dist/chunk-P7EJ4CAD.js +147 -0
  425. package/dist/chunk-P7EJ4CAD.js.map +1 -0
  426. package/dist/chunk-QDSZTQXL.js +28 -0
  427. package/dist/chunk-QDSZTQXL.js.map +1 -0
  428. package/dist/chunk-QH5KOFNS.js +39 -0
  429. package/dist/chunk-QH5KOFNS.js.map +1 -0
  430. package/dist/chunk-QPTJ5DOO.js +87 -0
  431. package/dist/chunk-QPTJ5DOO.js.map +1 -0
  432. package/dist/chunk-QYMJHS4K.js +36 -0
  433. package/dist/chunk-QYMJHS4K.js.map +1 -0
  434. package/dist/chunk-RMWNO6BA.js +89 -0
  435. package/dist/chunk-RMWNO6BA.js.map +1 -0
  436. package/dist/chunk-S2XULQEK.js +52 -0
  437. package/dist/chunk-S2XULQEK.js.map +1 -0
  438. package/dist/chunk-S3ECMF23.js +33 -0
  439. package/dist/chunk-S3ECMF23.js.map +1 -0
  440. package/dist/chunk-S4Y3YTAI.js +35 -0
  441. package/dist/chunk-S4Y3YTAI.js.map +1 -0
  442. package/dist/chunk-S4ZGTDSG.js +18 -0
  443. package/dist/chunk-S4ZGTDSG.js.map +1 -0
  444. package/dist/chunk-SCDWURBO.js +136 -0
  445. package/dist/chunk-SCDWURBO.js.map +1 -0
  446. package/dist/chunk-SOFPUW3O.js +196 -0
  447. package/dist/chunk-SOFPUW3O.js.map +1 -0
  448. package/dist/chunk-SQ5DH66U.js +37 -0
  449. package/dist/chunk-SQ5DH66U.js.map +1 -0
  450. package/dist/chunk-T74YB76U.js +547 -0
  451. package/dist/chunk-T74YB76U.js.map +1 -0
  452. package/dist/chunk-TI2GV36S.js +90 -0
  453. package/dist/chunk-TI2GV36S.js.map +1 -0
  454. package/dist/{chunk-56RJXPHG.js → chunk-TKNVL53O.js} +7 -4
  455. package/dist/chunk-TKNVL53O.js.map +1 -0
  456. package/dist/chunk-TNJLNLVE.js +115 -0
  457. package/dist/chunk-TNJLNLVE.js.map +1 -0
  458. package/dist/chunk-TUID42UE.js +15 -0
  459. package/dist/chunk-TUID42UE.js.map +1 -0
  460. package/dist/chunk-UMNHJSIO.js +848 -0
  461. package/dist/chunk-UMNHJSIO.js.map +1 -0
  462. package/dist/chunk-VEME3D7K.js +298 -0
  463. package/dist/chunk-VEME3D7K.js.map +1 -0
  464. package/dist/chunk-WPNIKZMJ.js +507 -0
  465. package/dist/chunk-WPNIKZMJ.js.map +1 -0
  466. package/dist/chunk-WSEJ2FDE.js +162 -0
  467. package/dist/chunk-WSEJ2FDE.js.map +1 -0
  468. package/dist/chunk-WVS6CUCT.js +48 -0
  469. package/dist/chunk-WVS6CUCT.js.map +1 -0
  470. package/dist/chunk-XWNXGFX3.js +381 -0
  471. package/dist/chunk-XWNXGFX3.js.map +1 -0
  472. package/dist/chunk-Y6KT7ZTR.js +109 -0
  473. package/dist/chunk-Y6KT7ZTR.js.map +1 -0
  474. package/dist/chunk-YMUIQRWK.js +44 -0
  475. package/dist/chunk-YMUIQRWK.js.map +1 -0
  476. package/dist/chunk-ZCDRLN3B.js +138 -0
  477. package/dist/chunk-ZCDRLN3B.js.map +1 -0
  478. package/dist/chunk-ZKKO4MHC.js +25 -0
  479. package/dist/chunk-ZKKO4MHC.js.map +1 -0
  480. package/dist/chunk-ZN7KUMPY.js +48 -0
  481. package/dist/chunk-ZN7KUMPY.js.map +1 -0
  482. package/dist/chunk-ZNROKDSZ.js +54 -0
  483. package/dist/chunk-ZNROKDSZ.js.map +1 -0
  484. package/dist/chunk-ZX2QQJXD.js +249 -0
  485. package/dist/chunk-ZX2QQJXD.js.map +1 -0
  486. package/dist/collapsible-panel.d.ts +96 -17
  487. package/dist/collapsible-panel.js +133 -14
  488. package/dist/collapsible-panel.js.map +1 -1
  489. package/dist/color-field.d.ts +51 -0
  490. package/dist/color-field.js +92 -0
  491. package/dist/color-field.js.map +1 -0
  492. package/dist/color-picker.d.ts +113 -0
  493. package/dist/color-picker.js +8 -0
  494. package/dist/color-picker.js.map +1 -0
  495. package/dist/color-swatches.d.ts +56 -0
  496. package/dist/color-swatches.js +4 -0
  497. package/dist/color-swatches.js.map +1 -0
  498. package/dist/column-track.d.ts +41 -0
  499. package/dist/column-track.js +4 -0
  500. package/dist/column-track.js.map +1 -0
  501. package/dist/combobox.d.ts +40 -0
  502. package/dist/combobox.js +3 -0
  503. package/dist/combobox.js.map +1 -0
  504. package/dist/content-item.d.ts +128 -0
  505. package/dist/content-item.js +4 -0
  506. package/dist/content-item.js.map +1 -0
  507. package/dist/content-swap.d.ts +34 -0
  508. package/dist/content-swap.js +3 -0
  509. package/dist/content-swap.js.map +1 -0
  510. package/dist/corner-status.d.ts +36 -0
  511. package/dist/corner-status.js +3 -0
  512. package/dist/corner-status.js.map +1 -0
  513. package/dist/css-values.d.ts +127 -0
  514. package/dist/css-values.js +3 -0
  515. package/dist/css-values.js.map +1 -0
  516. package/dist/device-class.js +34 -6
  517. package/dist/device-class.js.map +1 -1
  518. package/dist/disclosure-arrow.d.ts +6 -1
  519. package/dist/disclosure-arrow.js +2 -1
  520. package/dist/disclosure.d.ts +66 -0
  521. package/dist/disclosure.js +51 -0
  522. package/dist/disclosure.js.map +1 -0
  523. package/dist/edge-activity-indicator.d.ts +28 -0
  524. package/dist/edge-activity-indicator.js +3 -0
  525. package/dist/edge-activity-indicator.js.map +1 -0
  526. package/dist/empty-state.d.ts +5 -2
  527. package/dist/empty-state.js +2 -1
  528. package/dist/extension-attributes-mu8MFUl0.d.ts +13 -0
  529. package/dist/file-picker.d.ts +54 -0
  530. package/dist/file-picker.js +3 -0
  531. package/dist/file-picker.js.map +1 -0
  532. package/dist/flex-alignment-4ms8ZbV8.d.ts +5 -0
  533. package/dist/floating-toolbar.d.ts +29 -6
  534. package/dist/floating-toolbar.js +1 -1
  535. package/dist/framed-list.d.ts +47 -0
  536. package/dist/framed-list.js +4 -0
  537. package/dist/framed-list.js.map +1 -0
  538. package/dist/grid.d.ts +58 -0
  539. package/dist/grid.js +6 -0
  540. package/dist/grid.js.map +1 -0
  541. package/dist/help-tags-register.d.ts +13 -0
  542. package/dist/help-tags-register.js +10 -0
  543. package/dist/help-tags-register.js.map +1 -0
  544. package/dist/index.d.ts +72 -17
  545. package/dist/index.js +84 -25
  546. package/dist/list-action-row.d.ts +69 -12
  547. package/dist/list-action-row.js +8 -1
  548. package/dist/list-detail-dialog.d.ts +123 -0
  549. package/dist/list-detail-dialog.js +167 -0
  550. package/dist/list-detail-dialog.js.map +1 -0
  551. package/dist/list-header.d.ts +72 -10
  552. package/dist/list-header.js +4 -1
  553. package/dist/list-icon-tile-B8dr97OW.d.ts +18 -0
  554. package/dist/list-inset-control.d.ts +22 -0
  555. package/dist/list-inset-control.js +3 -0
  556. package/dist/list-inset-control.js.map +1 -0
  557. package/dist/list-inset-text.d.ts +30 -0
  558. package/dist/list-inset-text.js +4 -0
  559. package/dist/list-inset-text.js.map +1 -0
  560. package/dist/list-item.d.ts +49 -5
  561. package/dist/list-item.js +4 -1
  562. package/dist/list.d.ts +149 -0
  563. package/dist/list.js +7 -0
  564. package/dist/list.js.map +1 -0
  565. package/dist/loading-spinner.d.ts +12 -2
  566. package/dist/loading-spinner.js +2 -1
  567. package/dist/lucide-icon.d.ts +23 -3
  568. package/dist/lucide-icon.js +2 -1
  569. package/dist/message-composer.d.ts +70 -0
  570. package/dist/message-composer.js +6 -0
  571. package/dist/message-composer.js.map +1 -0
  572. package/dist/nav-stack-CU_0dKtI.d.ts +194 -0
  573. package/dist/nav-stack.d.ts +15 -38
  574. package/dist/nav-stack.js +14 -1
  575. package/dist/pane.d.ts +258 -0
  576. package/dist/pane.js +6 -0
  577. package/dist/pane.js.map +1 -0
  578. package/dist/panel-toolbar-vg6Ir5Dy.d.ts +77 -0
  579. package/dist/popup-menu-register.d.ts +11 -0
  580. package/dist/popup-menu-register.js +13 -0
  581. package/dist/popup-menu-register.js.map +1 -0
  582. package/dist/popup-menu.d.ts +153 -0
  583. package/dist/popup-menu.js +7 -0
  584. package/dist/popup-menu.js.map +1 -0
  585. package/dist/progress-bar.d.ts +52 -0
  586. package/dist/progress-bar.js +68 -0
  587. package/dist/progress-bar.js.map +1 -0
  588. package/dist/progress-ring.d.ts +44 -0
  589. package/dist/progress-ring.js +73 -0
  590. package/dist/progress-ring.js.map +1 -0
  591. package/dist/radio-group.d.ts +62 -0
  592. package/dist/radio-group.js +4 -0
  593. package/dist/radio-group.js.map +1 -0
  594. package/dist/resizable-region.d.ts +32 -3
  595. package/dist/resizable-region.js +1 -1
  596. package/dist/row.d.ts +53 -0
  597. package/dist/row.js +7 -0
  598. package/dist/row.js.map +1 -0
  599. package/dist/scroll-clearance-BikHljTc.d.ts +14 -0
  600. package/dist/search-field-CrGTN5sa.d.ts +208 -0
  601. package/dist/search-field-model.d.ts +3 -0
  602. package/dist/search-field-model.js +3 -0
  603. package/dist/search-field-model.js.map +1 -0
  604. package/dist/search-field.d.ts +3 -0
  605. package/dist/search-field.js +5 -0
  606. package/dist/search-field.js.map +1 -0
  607. package/dist/segmented-control.d.ts +14 -9
  608. package/dist/segmented-control.js +1 -2
  609. package/dist/select-register.d.ts +6 -3
  610. package/dist/select-register.js +402 -8
  611. package/dist/select-register.js.map +1 -1
  612. package/dist/select.d.ts +128 -9
  613. package/dist/select.js +6 -1
  614. package/dist/selection.d.ts +54 -0
  615. package/dist/selection.js +3 -0
  616. package/dist/selection.js.map +1 -0
  617. package/dist/semantic-content-BbzjvSu9.d.ts +14 -0
  618. package/dist/semantic-tone-CdW013KF.d.ts +4 -0
  619. package/dist/sides-BPSWde0A.d.ts +4 -0
  620. package/dist/skeleton.d.ts +14 -7
  621. package/dist/skeleton.js +2 -1
  622. package/dist/slider.d.ts +74 -0
  623. package/dist/slider.js +103 -0
  624. package/dist/slider.js.map +1 -0
  625. package/dist/spacer.d.ts +18 -0
  626. package/dist/spacer.js +4 -0
  627. package/dist/spacer.js.map +1 -0
  628. package/dist/split-button.d.ts +69 -0
  629. package/dist/split-button.js +7 -0
  630. package/dist/split-button.js.map +1 -0
  631. package/dist/split-view.d.ts +66 -6
  632. package/dist/split-view.js +14 -15
  633. package/dist/split-view.js.map +1 -1
  634. package/dist/state-banner.d.ts +41 -7
  635. package/dist/state-banner.js +4 -1
  636. package/dist/styles/anchored-surface.css +44 -0
  637. package/dist/styles/backdrop-image.css +241 -0
  638. package/dist/styles/badge.css +157 -0
  639. package/dist/styles/button.css +293 -0
  640. package/dist/styles/catalog/components/catalog-example-stack.css +14 -0
  641. package/dist/styles/catalog/components/catalog-example.css +250 -0
  642. package/dist/styles/catalog/components/catalog-stage.css +61 -0
  643. package/dist/styles/catalog/components/catalog.css +26 -0
  644. package/dist/styles/catalog.css +5 -522
  645. package/dist/styles/checkbox-group.css +63 -0
  646. package/dist/styles/checkbox.css +122 -0
  647. package/dist/styles/chip.css +234 -0
  648. package/dist/styles/choice-chips.css +205 -0
  649. package/dist/styles/collapsible-panel.css +450 -16
  650. package/dist/styles/color-field.css +125 -0
  651. package/dist/styles/color-picker.css +366 -0
  652. package/dist/styles/color-swatches.css +122 -0
  653. package/dist/styles/column-track.css +57 -0
  654. package/dist/styles/combobox.css +115 -0
  655. package/dist/styles/components/actions/button/button.css +293 -0
  656. package/dist/styles/components/actions/floating-toolbar/floating-toolbar.css +119 -0
  657. package/dist/styles/components/actions/popup-menu/popup-menu.css +498 -0
  658. package/dist/styles/components/actions/split-button/split-button.css +141 -0
  659. package/dist/styles/components/actions/toolbar/toolbar.css +483 -0
  660. package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +1188 -0
  661. package/dist/styles/components/actions/toolbar-text/toolbar-text.css +256 -0
  662. package/dist/styles/components/collections/framed-list/framed-list.css +53 -0
  663. package/dist/styles/components/collections/list/list.css +293 -0
  664. package/dist/styles/components/collections/list-action-row/list-action-row.css +466 -0
  665. package/dist/styles/components/collections/list-header/list-header.css +236 -0
  666. package/dist/styles/components/collections/list-inset-control/list-inset-control.css +30 -0
  667. package/dist/styles/components/collections/list-inset-text/list-inset-text.css +29 -0
  668. package/dist/styles/components/collections/list-item/list-item.css +461 -0
  669. package/dist/styles/components/collections/summary-row/summary-row.css +161 -0
  670. package/dist/styles/components/data-display/value-table/value-table.css +183 -0
  671. package/dist/styles/components/feedback/anchored-surface/anchored-surface.css +44 -0
  672. package/dist/styles/components/feedback/badge/badge.css +157 -0
  673. package/dist/styles/components/feedback/chip/chip.css +234 -0
  674. package/dist/styles/components/feedback/corner-status/corner-status.css +60 -0
  675. package/dist/styles/components/feedback/edge-activity-indicator/edge-activity-indicator.css +127 -0
  676. package/dist/styles/components/feedback/empty-state/empty-state.css +47 -0
  677. package/dist/styles/components/feedback/loading-spinner/loading-spinner.css +25 -0
  678. package/dist/styles/components/feedback/progress-bar/progress-bar.css +168 -0
  679. package/dist/styles/components/feedback/progress-ring/progress-ring.css +91 -0
  680. package/dist/styles/components/feedback/skeleton/skeleton.css +92 -0
  681. package/dist/styles/components/feedback/state-banner/state-banner.css +312 -0
  682. package/dist/styles/components/forms/checkbox/checkbox.css +122 -0
  683. package/dist/styles/components/forms/checkbox-group/checkbox-group.css +63 -0
  684. package/dist/styles/components/forms/choice-chips/choice-chips.css +205 -0
  685. package/dist/styles/components/forms/color-field/color-field.css +125 -0
  686. package/dist/styles/components/forms/color-picker/color-picker.css +366 -0
  687. package/dist/styles/components/forms/color-swatches/color-swatches.css +122 -0
  688. package/dist/styles/components/forms/combobox/combobox.css +115 -0
  689. package/dist/styles/components/forms/file-picker/file-picker.css +81 -0
  690. package/dist/styles/components/forms/message-composer/message-composer.css +84 -0
  691. package/dist/styles/components/forms/radio-group/radio-group.css +158 -0
  692. package/dist/styles/components/forms/search-field/search-field.css +441 -0
  693. package/dist/styles/components/forms/segmented-control/segmented-control.css +196 -0
  694. package/dist/styles/components/forms/select/select.css +580 -0
  695. package/dist/styles/components/forms/slider/slider.css +241 -0
  696. package/dist/styles/components/forms/switch/switch.css +132 -0
  697. package/dist/styles/components/forms/tag-field/tag-field.css +8 -0
  698. package/dist/styles/components/forms/text-field/text-field.css +193 -0
  699. package/dist/styles/components/layout/collapsible-panel/collapsible-panel.css +580 -0
  700. package/dist/styles/components/layout/column-track/column-track.css +57 -0
  701. package/dist/styles/components/layout/content-swap/content-swap.css +154 -0
  702. package/dist/styles/components/layout/grid/grid.css +88 -0
  703. package/dist/styles/components/layout/pane/pane.css +780 -0
  704. package/dist/styles/components/layout/resizable-region/resizable-region.css +546 -0
  705. package/dist/styles/components/layout/row/row.css +125 -0
  706. package/dist/styles/components/layout/spacer/spacer.css +11 -0
  707. package/dist/styles/components/layout/split-view/split-view.css +171 -0
  708. package/dist/styles/components/layout/workbench/workbench.css +1098 -0
  709. package/dist/styles/components/media/lucide-icon/lucide-icon.css +15 -0
  710. package/dist/styles/components/navigation/disclosure-arrow/disclosure-arrow.css +43 -0
  711. package/dist/styles/components/navigation/nav-stack/nav-stack.css +619 -0
  712. package/dist/styles/components/navigation/tab-bar/tab-bar.css +203 -0
  713. package/dist/styles/components/navigation/tab-bar-item/tab-bar-item.css +389 -0
  714. package/dist/styles/components/navigation/tab-navigator/tab-navigator.css +460 -0
  715. package/dist/styles/components/surfaces/backdrop-image/backdrop-image.css +241 -0
  716. package/dist/styles/components/surfaces/content-item/content-item.css +168 -0
  717. package/dist/styles/components/surfaces/disclosure/disclosure.css +136 -0
  718. package/dist/styles/components/surfaces/sunken-panel/sunken-panel.css +34 -0
  719. package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +744 -0
  720. package/dist/styles/components/typography/text/text.css +232 -0
  721. package/dist/styles/content-item.css +168 -0
  722. package/dist/styles/content-swap.css +154 -0
  723. package/dist/styles/corner-status.css +60 -0
  724. package/dist/styles/disclosure-arrow.css +20 -0
  725. package/dist/styles/disclosure.css +136 -0
  726. package/dist/styles/document.css +98 -0
  727. package/dist/styles/edge-activity-indicator.css +127 -0
  728. package/dist/styles/file-picker.css +81 -0
  729. package/dist/styles/floating-toolbar.css +87 -6
  730. package/dist/styles/foundation.css +490 -50
  731. package/dist/styles/framed-list.css +53 -0
  732. package/dist/styles/grid.css +88 -0
  733. package/dist/styles/layout.css +3 -41
  734. package/dist/styles/list-action-row.css +324 -18
  735. package/dist/styles/list-detail-dialog.css +11 -0
  736. package/dist/styles/list-header.css +135 -59
  737. package/dist/styles/list-inset-control.css +30 -0
  738. package/dist/styles/list-inset-text.css +29 -0
  739. package/dist/styles/list-item.css +371 -33
  740. package/dist/styles/list.css +293 -0
  741. package/dist/styles/loading-spinner.css +4 -0
  742. package/dist/styles/lucide-icon.css +9 -0
  743. package/dist/styles/message-composer.css +84 -0
  744. package/dist/styles/nav-stack.css +555 -47
  745. package/dist/styles/overlay-sheet.css +211 -0
  746. package/dist/styles/overlay-toast.css +149 -0
  747. package/dist/styles/overlay-tooltip.css +55 -0
  748. package/dist/styles/pane.css +780 -0
  749. package/dist/styles/popup-menu.css +498 -0
  750. package/dist/styles/progress-bar.css +168 -0
  751. package/dist/styles/progress-ring.css +91 -0
  752. package/dist/styles/radio-group.css +158 -0
  753. package/dist/styles/resizable-region.css +439 -4
  754. package/dist/styles/row.css +125 -0
  755. package/dist/styles/search-field.css +441 -0
  756. package/dist/styles/segmented-control.css +36 -9
  757. package/dist/styles/select.css +516 -74
  758. package/dist/styles/skeleton.css +64 -3
  759. package/dist/styles/slider.css +241 -0
  760. package/dist/styles/spacer.css +11 -0
  761. package/dist/styles/split-button.css +141 -0
  762. package/dist/styles/split-view.css +139 -3
  763. package/dist/styles/state-banner.css +164 -25
  764. package/dist/styles/styles.css +38 -3
  765. package/dist/styles/summary-row.css +161 -0
  766. package/dist/styles/sunken-panel.css +34 -0
  767. package/dist/styles/surface-scaffold.css +744 -0
  768. package/dist/styles/switch.css +132 -0
  769. package/dist/styles/tab-bar-item.css +389 -0
  770. package/dist/styles/tab-bar.css +167 -9
  771. package/dist/styles/tab-navigator.css +460 -0
  772. package/dist/styles/tag-field.css +8 -0
  773. package/dist/styles/text-field.css +193 -0
  774. package/dist/styles/text.css +232 -0
  775. package/dist/styles/toolbar-control-group.css +1000 -37
  776. package/dist/styles/toolbar-text.css +223 -7
  777. package/dist/styles/toolbar.css +433 -11
  778. package/dist/styles/value-table.css +115 -7
  779. package/dist/styles/webawesome.css +474 -18
  780. package/dist/styles/workbench-dialog.css +10 -0
  781. package/dist/styles/workbench.css +1011 -7
  782. package/dist/summary-row.d.ts +56 -0
  783. package/dist/summary-row.js +4 -0
  784. package/dist/summary-row.js.map +1 -0
  785. package/dist/sunken-panel.d.ts +38 -0
  786. package/dist/sunken-panel.js +4 -0
  787. package/dist/sunken-panel.js.map +1 -0
  788. package/dist/surface-scaffold-register.d.ts +12 -0
  789. package/dist/surface-scaffold-register.js +10 -0
  790. package/dist/surface-scaffold-register.js.map +1 -0
  791. package/dist/surface-scaffold.d.ts +280 -0
  792. package/dist/surface-scaffold.js +8 -0
  793. package/dist/surface-scaffold.js.map +1 -0
  794. package/dist/switch.d.ts +38 -0
  795. package/dist/switch.js +4 -0
  796. package/dist/switch.js.map +1 -0
  797. package/dist/tab-bar-item.d.ts +65 -0
  798. package/dist/tab-bar-item.js +6 -0
  799. package/dist/tab-bar-item.js.map +1 -0
  800. package/dist/tab-bar.d.ts +33 -7
  801. package/dist/tab-bar.js +1 -1
  802. package/dist/tab-navigator.d.ts +154 -0
  803. package/dist/tab-navigator.js +131 -0
  804. package/dist/tab-navigator.js.map +1 -0
  805. package/dist/tag-field.d.ts +52 -0
  806. package/dist/tag-field.js +6 -0
  807. package/dist/tag-field.js.map +1 -0
  808. package/dist/text-field.d.ts +91 -0
  809. package/dist/text-field.js +6 -0
  810. package/dist/text-field.js.map +1 -0
  811. package/dist/text.d.ts +103 -0
  812. package/dist/text.js +3 -0
  813. package/dist/text.js.map +1 -0
  814. package/dist/toolbar-control-group.d.ts +112 -8
  815. package/dist/toolbar-control-group.js +3 -1
  816. package/dist/toolbar-text.d.ts +63 -9
  817. package/dist/toolbar-text.js +2 -1
  818. package/dist/toolbar.d.ts +77 -7
  819. package/dist/toolbar.js +1 -1
  820. package/dist/types-DmHWkSd6.d.ts +207 -0
  821. package/dist/value-table.d.ts +30 -4
  822. package/dist/value-table.js +2 -1
  823. package/dist/webawesome.d.ts +11 -1
  824. package/dist/wire-catalog.d.ts +117 -5
  825. package/dist/wire-catalog.js +314 -14
  826. package/dist/wire-catalog.js.map +1 -1
  827. package/dist/wire-checkboxes.d.ts +10 -0
  828. package/dist/wire-checkboxes.js +3 -0
  829. package/dist/{wire-token-search-fields.js.map → wire-checkboxes.js.map} +1 -1
  830. package/dist/wire-choice-chips.d.ts +17 -0
  831. package/dist/wire-choice-chips.js +4 -0
  832. package/dist/wire-choice-chips.js.map +1 -0
  833. package/dist/wire-color-fields.d.ts +33 -0
  834. package/dist/wire-color-fields.js +82 -0
  835. package/dist/wire-color-fields.js.map +1 -0
  836. package/dist/wire-color-pickers.d.ts +35 -0
  837. package/dist/wire-color-pickers.js +9 -0
  838. package/dist/wire-color-pickers.js.map +1 -0
  839. package/dist/wire-comboboxes.d.ts +26 -0
  840. package/dist/wire-comboboxes.js +4 -0
  841. package/dist/wire-comboboxes.js.map +1 -0
  842. package/dist/wire-content-items.d.ts +15 -0
  843. package/dist/wire-content-items.js +208 -0
  844. package/dist/wire-content-items.js.map +1 -0
  845. package/dist/wire-corner-status.d.ts +11 -0
  846. package/dist/wire-corner-status.js +3 -0
  847. package/dist/wire-corner-status.js.map +1 -0
  848. package/dist/wire-file-pickers.d.ts +27 -0
  849. package/dist/wire-file-pickers.js +3 -0
  850. package/dist/wire-file-pickers.js.map +1 -0
  851. package/dist/wire-list-focus-scroll.d.ts +16 -0
  852. package/dist/wire-list-focus-scroll.js +3 -0
  853. package/dist/wire-list-focus-scroll.js.map +1 -0
  854. package/dist/wire-list-reorder.d.ts +41 -0
  855. package/dist/wire-list-reorder.js +3 -0
  856. package/dist/wire-list-reorder.js.map +1 -0
  857. package/dist/wire-message-composers.d.ts +17 -0
  858. package/dist/wire-message-composers.js +3 -0
  859. package/dist/wire-message-composers.js.map +1 -0
  860. package/dist/wire-nav-stack.d.ts +4 -1
  861. package/dist/wire-nav-stack.js +352 -15
  862. package/dist/wire-nav-stack.js.map +1 -1
  863. package/dist/wire-overlay-sheets.d.ts +20 -0
  864. package/dist/wire-overlay-sheets.js +4 -0
  865. package/dist/wire-overlay-sheets.js.map +1 -0
  866. package/dist/wire-pane-chrome.d.ts +21 -0
  867. package/dist/wire-pane-chrome.js +67 -0
  868. package/dist/wire-pane-chrome.js.map +1 -0
  869. package/dist/wire-resizable-regions.d.ts +2 -1
  870. package/dist/wire-resizable-regions.js +2 -1
  871. package/dist/wire-scroll-dividers.d.ts +87 -0
  872. package/dist/wire-scroll-dividers.js +3 -0
  873. package/dist/wire-scroll-dividers.js.map +1 -0
  874. package/dist/{wire-token-search-fields.d.ts → wire-search-fields.d.ts} +34 -25
  875. package/dist/wire-search-fields.js +6 -0
  876. package/dist/wire-search-fields.js.map +1 -0
  877. package/dist/wire-sidebar.d.ts +24 -4
  878. package/dist/wire-sidebar.js +159 -45
  879. package/dist/wire-sidebar.js.map +1 -1
  880. package/dist/wire-sliders.d.ts +12 -0
  881. package/dist/wire-sliders.js +31 -0
  882. package/dist/wire-sliders.js.map +1 -0
  883. package/dist/wire-tab-bars.d.ts +6 -2
  884. package/dist/wire-tab-bars.js +1 -1
  885. package/dist/wire-tab-navigator.d.ts +13 -0
  886. package/dist/wire-tab-navigator.js +153 -0
  887. package/dist/wire-tab-navigator.js.map +1 -0
  888. package/dist/wire-tag-fields.d.ts +41 -0
  889. package/dist/wire-tag-fields.js +258 -0
  890. package/dist/wire-tag-fields.js.map +1 -0
  891. package/dist/wire-text-fields.d.ts +12 -0
  892. package/dist/wire-text-fields.js +3 -0
  893. package/dist/wire-text-fields.js.map +1 -0
  894. package/dist/wire-toolbar-visibility.d.ts +13 -0
  895. package/dist/wire-toolbar-visibility.js +3 -0
  896. package/dist/wire-toolbar-visibility.js.map +1 -0
  897. package/dist/wire-workbench.d.ts +116 -0
  898. package/dist/wire-workbench.js +6 -0
  899. package/dist/wire-workbench.js.map +1 -0
  900. package/dist/workbench-dialog.d.ts +106 -0
  901. package/dist/workbench-dialog.js +127 -0
  902. package/dist/workbench-dialog.js.map +1 -0
  903. package/dist/workbench.d.ts +258 -10
  904. package/dist/workbench.js +21 -15
  905. package/dist/workbench.js.map +1 -1
  906. package/docs/accessibility.md +829 -41
  907. package/docs/anchored-surface.md +107 -0
  908. package/docs/app-layouts.md +200 -10
  909. package/docs/apple-hig.md +2 -0
  910. package/docs/backdrop-image.md +128 -0
  911. package/docs/catalog.md +599 -63
  912. package/docs/collapsible-panel.md +308 -25
  913. package/docs/color-field.md +65 -0
  914. package/docs/color-picker.md +102 -0
  915. package/docs/color-swatches.md +46 -0
  916. package/docs/component-contract.md +865 -57
  917. package/docs/component-integration.md +75 -0
  918. package/docs/component-selection.md +1124 -108
  919. package/docs/design/templates/button/emphasis-dark.svg +1 -0
  920. package/docs/design/templates/button/emphasis.svg +1 -0
  921. package/docs/design/templates/button/full-width-dark.svg +1 -0
  922. package/docs/design/templates/button/full-width.svg +1 -0
  923. package/docs/design/templates/button/icons-dark.svg +1 -0
  924. package/docs/design/templates/button/icons.svg +1 -0
  925. package/docs/design/templates/button/pill-dark.svg +1 -0
  926. package/docs/design/templates/button/pill.svg +1 -0
  927. package/docs/design/templates/button/states-dark.svg +1 -0
  928. package/docs/design/templates/button/states.svg +1 -0
  929. package/docs/design/templates/button/toggles-dark.svg +1 -0
  930. package/docs/design/templates/button/toggles.svg +1 -0
  931. package/docs/design/templates/button/tones-dark.svg +1 -0
  932. package/docs/design/templates/button/tones.svg +1 -0
  933. package/docs/design/templates/button-dark.svg +1 -0
  934. package/docs/design/templates/button.svg +1 -0
  935. package/docs/design/templates/checkbox/compact-dark.svg +1 -0
  936. package/docs/design/templates/checkbox/compact.svg +1 -0
  937. package/docs/design/templates/checkbox/error-dark.svg +1 -0
  938. package/docs/design/templates/checkbox/error.svg +1 -0
  939. package/docs/design/templates/checkbox/mixed-dark.svg +1 -0
  940. package/docs/design/templates/checkbox/mixed.svg +1 -0
  941. package/docs/design/templates/checkbox/states-dark.svg +1 -0
  942. package/docs/design/templates/checkbox/states.svg +1 -0
  943. package/docs/design/templates/checkbox-dark.svg +1 -0
  944. package/docs/design/templates/checkbox-group/horizontal-dark.svg +1 -0
  945. package/docs/design/templates/checkbox-group/horizontal.svg +1 -0
  946. package/docs/design/templates/checkbox-group/vertical-dark.svg +1 -0
  947. package/docs/design/templates/checkbox-group/vertical.svg +1 -0
  948. package/docs/design/templates/checkbox-group-dark.svg +1 -0
  949. package/docs/design/templates/checkbox-group.svg +1 -0
  950. package/docs/design/templates/checkbox.svg +1 -0
  951. package/docs/design/templates/chip/action-filters-dark.svg +1 -0
  952. package/docs/design/templates/chip/action-filters.svg +1 -0
  953. package/docs/design/templates/chip/tags-dark.svg +1 -0
  954. package/docs/design/templates/chip/tags.svg +1 -0
  955. package/docs/design/templates/chip-dark.svg +1 -0
  956. package/docs/design/templates/chip.svg +1 -0
  957. package/docs/design/templates/choice-chips/color-palette-dark.svg +1 -0
  958. package/docs/design/templates/choice-chips/color-palette.svg +1 -0
  959. package/docs/design/templates/choice-chips/compact-icons-dark.svg +1 -0
  960. package/docs/design/templates/choice-chips/compact-icons.svg +1 -0
  961. package/docs/design/templates/choice-chips/multiple-dark.svg +1 -0
  962. package/docs/design/templates/choice-chips/multiple.svg +1 -0
  963. package/docs/design/templates/choice-chips-dark.svg +1 -0
  964. package/docs/design/templates/choice-chips.svg +1 -0
  965. package/docs/design/templates/color-field/compact-dark.svg +1 -0
  966. package/docs/design/templates/color-field/compact.svg +1 -0
  967. package/docs/design/templates/color-field/error-dark.svg +1 -0
  968. package/docs/design/templates/color-field/error.svg +1 -0
  969. package/docs/design/templates/color-field/hint-dark.svg +1 -0
  970. package/docs/design/templates/color-field/hint.svg +1 -0
  971. package/docs/design/templates/color-field-dark.svg +1 -0
  972. package/docs/design/templates/color-field.svg +1 -0
  973. package/docs/design/templates/color-picker/gray-dark.svg +1 -0
  974. package/docs/design/templates/color-picker/gray.svg +1 -0
  975. package/docs/design/templates/color-picker/hsb-dark.svg +1 -0
  976. package/docs/design/templates/color-picker/hsb.svg +1 -0
  977. package/docs/design/templates/color-picker/rgb-dark.svg +1 -0
  978. package/docs/design/templates/color-picker/rgb.svg +1 -0
  979. package/docs/design/templates/color-picker-dark.svg +1 -0
  980. package/docs/design/templates/color-picker.svg +1 -0
  981. package/docs/design/templates/color-swatches/palette-dark.svg +1 -0
  982. package/docs/design/templates/color-swatches/palette.svg +1 -0
  983. package/docs/design/templates/color-swatches-dark.svg +1 -0
  984. package/docs/design/templates/color-swatches.svg +1 -0
  985. package/docs/design/templates/disclosure/embedded-dark.svg +1 -0
  986. package/docs/design/templates/disclosure/embedded.svg +1 -0
  987. package/docs/design/templates/disclosure/framed-sunken-dark.svg +1 -0
  988. package/docs/design/templates/disclosure/framed-sunken.svg +1 -0
  989. package/docs/design/templates/disclosure/plain-dark.svg +1 -0
  990. package/docs/design/templates/disclosure/plain.svg +1 -0
  991. package/docs/design/templates/disclosure-dark.svg +1 -0
  992. package/docs/design/templates/disclosure.svg +1 -0
  993. package/docs/design/templates/empty-state/filtered-dark.svg +1 -1
  994. package/docs/design/templates/empty-state/filtered.svg +1 -1
  995. package/docs/design/templates/empty-state/with-action-dark.svg +1 -1
  996. package/docs/design/templates/empty-state/with-action.svg +1 -1
  997. package/docs/design/templates/empty-state-dark.svg +1 -7
  998. package/docs/design/templates/empty-state.svg +1 -7
  999. package/docs/design/templates/list/compact-dark.svg +1 -0
  1000. package/docs/design/templates/list/compact.svg +1 -0
  1001. package/docs/design/templates/list/stack-dark.svg +1 -0
  1002. package/docs/design/templates/list/stack.svg +1 -0
  1003. package/docs/design/templates/list-action-row/default-dark.svg +1 -1
  1004. package/docs/design/templates/list-action-row/default.svg +1 -1
  1005. package/docs/design/templates/list-action-row/icon-tile-dark.svg +1 -0
  1006. package/docs/design/templates/list-action-row/icon-tile.svg +1 -0
  1007. package/docs/design/templates/list-action-row/selected-dark.svg +1 -1
  1008. package/docs/design/templates/list-action-row/selected.svg +1 -1
  1009. package/docs/design/templates/list-action-row/trailing-menu-dark.svg +1 -0
  1010. package/docs/design/templates/list-action-row/trailing-menu.svg +1 -0
  1011. package/docs/design/templates/list-action-row-dark.svg +1 -7
  1012. package/docs/design/templates/list-action-row.svg +1 -7
  1013. package/docs/design/templates/list-dark.svg +1 -0
  1014. package/docs/design/templates/list-header/action-dark.svg +1 -1
  1015. package/docs/design/templates/list-header/action.svg +1 -1
  1016. package/docs/design/templates/list-header/count-dark.svg +1 -1
  1017. package/docs/design/templates/list-header/count.svg +1 -1
  1018. package/docs/design/templates/list-header/inline-action-dark.svg +1 -0
  1019. package/docs/design/templates/list-header/inline-action.svg +1 -0
  1020. package/docs/design/templates/list-header/size-l-dark.svg +1 -0
  1021. package/docs/design/templates/list-header/size-l.svg +1 -0
  1022. package/docs/design/templates/list-header/size-m-dark.svg +1 -0
  1023. package/docs/design/templates/list-header/size-m.svg +1 -0
  1024. package/docs/design/templates/list-header/size-xl-dark.svg +1 -0
  1025. package/docs/design/templates/list-header/size-xl.svg +1 -0
  1026. package/docs/design/templates/list-header/size-xs-dark.svg +1 -0
  1027. package/docs/design/templates/list-header/size-xs.svg +1 -0
  1028. package/docs/design/templates/list-header/toggle-collapsed-dark.svg +1 -1
  1029. package/docs/design/templates/list-header/toggle-collapsed.svg +1 -1
  1030. package/docs/design/templates/list-header/toggle-expanded-dark.svg +1 -1
  1031. package/docs/design/templates/list-header/toggle-expanded.svg +1 -1
  1032. package/docs/design/templates/list-header-dark.svg +1 -11
  1033. package/docs/design/templates/list-header.svg +1 -11
  1034. package/docs/design/templates/list-item/default-dark.svg +1 -1
  1035. package/docs/design/templates/list-item/default.svg +1 -1
  1036. package/docs/design/templates/list-item/icon-tile-dark.svg +1 -0
  1037. package/docs/design/templates/list-item/icon-tile.svg +1 -0
  1038. package/docs/design/templates/list-item/multiline-dark.svg +1 -1
  1039. package/docs/design/templates/list-item/multiline.svg +1 -1
  1040. package/docs/design/templates/list-item/selected-dark.svg +1 -1
  1041. package/docs/design/templates/list-item/selected.svg +1 -1
  1042. package/docs/design/templates/list-item/trailing-dark.svg +1 -1
  1043. package/docs/design/templates/list-item/trailing.svg +1 -1
  1044. package/docs/design/templates/list-item-dark.svg +1 -11
  1045. package/docs/design/templates/list-item.svg +1 -11
  1046. package/docs/design/templates/list.svg +1 -0
  1047. package/docs/design/templates/message-composer/chat-dark.svg +1 -0
  1048. package/docs/design/templates/message-composer/chat.svg +1 -0
  1049. package/docs/design/templates/message-composer/prompt-dark.svg +1 -0
  1050. package/docs/design/templates/message-composer/prompt.svg +1 -0
  1051. package/docs/design/templates/message-composer-dark.svg +1 -0
  1052. package/docs/design/templates/message-composer.svg +1 -0
  1053. package/docs/design/templates/progress-bar/determinate-dark.svg +1 -0
  1054. package/docs/design/templates/progress-bar/determinate.svg +1 -0
  1055. package/docs/design/templates/progress-bar/tones-dark.svg +1 -0
  1056. package/docs/design/templates/progress-bar/tones.svg +1 -0
  1057. package/docs/design/templates/progress-bar-dark.svg +1 -0
  1058. package/docs/design/templates/progress-bar.svg +1 -0
  1059. package/docs/design/templates/progress-ring/sizes-dark.svg +1 -0
  1060. package/docs/design/templates/progress-ring/sizes.svg +1 -0
  1061. package/docs/design/templates/progress-ring/tones-dark.svg +1 -0
  1062. package/docs/design/templates/progress-ring/tones.svg +1 -0
  1063. package/docs/design/templates/progress-ring-dark.svg +1 -0
  1064. package/docs/design/templates/progress-ring.svg +1 -0
  1065. package/docs/design/templates/radio-group/horizontal-dark.svg +1 -0
  1066. package/docs/design/templates/radio-group/horizontal.svg +1 -0
  1067. package/docs/design/templates/radio-group/vertical-dark.svg +1 -0
  1068. package/docs/design/templates/radio-group/vertical.svg +1 -0
  1069. package/docs/design/templates/radio-group-dark.svg +1 -0
  1070. package/docs/design/templates/radio-group.svg +1 -0
  1071. package/docs/design/templates/search-field/empty-dark.svg +1 -0
  1072. package/docs/design/templates/search-field/empty.svg +1 -0
  1073. package/docs/design/templates/search-field/tokens-dark.svg +1 -0
  1074. package/docs/design/templates/search-field/tokens.svg +1 -0
  1075. package/docs/design/templates/search-field-dark.svg +1 -0
  1076. package/docs/design/templates/search-field.svg +1 -0
  1077. package/docs/design/templates/segmented-control/equal-dark.svg +1 -1
  1078. package/docs/design/templates/segmented-control/equal.svg +1 -1
  1079. package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -1
  1080. package/docs/design/templates/segmented-control/pill-small.svg +1 -1
  1081. package/docs/design/templates/segmented-control-dark.svg +1 -7
  1082. package/docs/design/templates/segmented-control.svg +1 -7
  1083. package/docs/design/templates/select/compact-dark.svg +1 -0
  1084. package/docs/design/templates/select/compact.svg +1 -0
  1085. package/docs/design/templates/select/form-dark.svg +1 -0
  1086. package/docs/design/templates/select/form.svg +1 -0
  1087. package/docs/design/templates/select/icons-dark.svg +1 -0
  1088. package/docs/design/templates/select/icons.svg +1 -0
  1089. package/docs/design/templates/select-dark.svg +1 -0
  1090. package/docs/design/templates/select.svg +1 -0
  1091. package/docs/design/templates/skeleton-dark.svg +1 -9
  1092. package/docs/design/templates/skeleton.svg +1 -9
  1093. package/docs/design/templates/slider/compact-dark.svg +1 -0
  1094. package/docs/design/templates/slider/compact.svg +1 -0
  1095. package/docs/design/templates/slider/readout-dark.svg +1 -0
  1096. package/docs/design/templates/slider/readout.svg +1 -0
  1097. package/docs/design/templates/slider/ticks-dark.svg +1 -0
  1098. package/docs/design/templates/slider/ticks.svg +1 -0
  1099. package/docs/design/templates/slider-dark.svg +1 -0
  1100. package/docs/design/templates/slider.svg +1 -0
  1101. package/docs/design/templates/split-button/full-width-dark.svg +1 -0
  1102. package/docs/design/templates/split-button/full-width.svg +1 -0
  1103. package/docs/design/templates/split-button/pill-dark.svg +1 -0
  1104. package/docs/design/templates/split-button/pill.svg +1 -0
  1105. package/docs/design/templates/split-button/states-dark.svg +1 -0
  1106. package/docs/design/templates/split-button/states.svg +1 -0
  1107. package/docs/design/templates/split-button/tones-dark.svg +1 -0
  1108. package/docs/design/templates/split-button/tones.svg +1 -0
  1109. package/docs/design/templates/split-button-dark.svg +1 -0
  1110. package/docs/design/templates/split-button.svg +1 -0
  1111. package/docs/design/templates/state-banner/danger-dark.svg +1 -1
  1112. package/docs/design/templates/state-banner/danger.svg +1 -1
  1113. package/docs/design/templates/state-banner/info-badge-dark.svg +1 -0
  1114. package/docs/design/templates/state-banner/info-badge.svg +1 -0
  1115. package/docs/design/templates/state-banner/info-dark.svg +1 -1
  1116. package/docs/design/templates/state-banner/info.svg +1 -1
  1117. package/docs/design/templates/state-banner/strip-dark.svg +1 -0
  1118. package/docs/design/templates/state-banner/strip.svg +1 -0
  1119. package/docs/design/templates/state-banner/success-dark.svg +1 -1
  1120. package/docs/design/templates/state-banner/success.svg +1 -1
  1121. package/docs/design/templates/state-banner/warning-dark.svg +1 -1
  1122. package/docs/design/templates/state-banner/warning.svg +1 -1
  1123. package/docs/design/templates/state-banner-dark.svg +1 -11
  1124. package/docs/design/templates/state-banner.svg +1 -11
  1125. package/docs/design/templates/switch/compact-dark.svg +1 -0
  1126. package/docs/design/templates/switch/compact.svg +1 -0
  1127. package/docs/design/templates/switch/states-dark.svg +1 -0
  1128. package/docs/design/templates/switch/states.svg +1 -0
  1129. package/docs/design/templates/switch-dark.svg +1 -0
  1130. package/docs/design/templates/switch.svg +1 -0
  1131. package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -1
  1132. package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -1
  1133. package/docs/design/templates/tab-bar-dark.svg +1 -5
  1134. package/docs/design/templates/tab-bar.svg +1 -5
  1135. package/docs/design/templates/tag-field/error-dark.svg +1 -0
  1136. package/docs/design/templates/tag-field/error.svg +1 -0
  1137. package/docs/design/templates/tag-field/tags-dark.svg +1 -0
  1138. package/docs/design/templates/tag-field/tags.svg +1 -0
  1139. package/docs/design/templates/tag-field-dark.svg +1 -0
  1140. package/docs/design/templates/tag-field.svg +1 -0
  1141. package/docs/design/templates/text-field/compact-dark.svg +1 -0
  1142. package/docs/design/templates/text-field/compact.svg +1 -0
  1143. package/docs/design/templates/text-field/error-dark.svg +1 -0
  1144. package/docs/design/templates/text-field/error.svg +1 -0
  1145. package/docs/design/templates/text-field/labeled-dark.svg +1 -0
  1146. package/docs/design/templates/text-field/labeled.svg +1 -0
  1147. package/docs/design/templates/text-field/multiline-dark.svg +1 -0
  1148. package/docs/design/templates/text-field/multiline.svg +1 -0
  1149. package/docs/design/templates/text-field/number-dark.svg +1 -0
  1150. package/docs/design/templates/text-field/number.svg +1 -0
  1151. package/docs/design/templates/text-field/search-dark.svg +1 -0
  1152. package/docs/design/templates/text-field/search.svg +1 -0
  1153. package/docs/design/templates/text-field-dark.svg +1 -0
  1154. package/docs/design/templates/text-field.svg +1 -0
  1155. package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -1
  1156. package/docs/design/templates/toolbar/title-and-actions.svg +1 -1
  1157. package/docs/design/templates/toolbar/width-visibility-320-dark.svg +1 -0
  1158. package/docs/design/templates/toolbar/width-visibility-320.svg +1 -0
  1159. package/docs/design/templates/toolbar/width-visibility-600-dark.svg +1 -0
  1160. package/docs/design/templates/toolbar/width-visibility-600.svg +1 -0
  1161. package/docs/design/templates/toolbar-control-group/borderless-single-dark.svg +1 -1
  1162. package/docs/design/templates/toolbar-control-group/borderless-single.svg +1 -1
  1163. package/docs/design/templates/toolbar-control-group/glass-dark.svg +1 -0
  1164. package/docs/design/templates/toolbar-control-group/glass.svg +1 -0
  1165. package/docs/design/templates/toolbar-control-group/icon-buttons-dark.svg +1 -1
  1166. package/docs/design/templates/toolbar-control-group/icon-buttons.svg +1 -1
  1167. package/docs/design/templates/toolbar-control-group/icon-tile-brand-dark.svg +1 -0
  1168. package/docs/design/templates/toolbar-control-group/icon-tile-brand.svg +1 -0
  1169. package/docs/design/templates/toolbar-control-group/icon-tile-danger-dark.svg +1 -0
  1170. package/docs/design/templates/toolbar-control-group/icon-tile-danger.svg +1 -0
  1171. package/docs/design/templates/toolbar-control-group/icon-tile-neutral-dark.svg +1 -0
  1172. package/docs/design/templates/toolbar-control-group/icon-tile-neutral.svg +1 -0
  1173. package/docs/design/templates/toolbar-control-group/icon-tile-success-dark.svg +1 -0
  1174. package/docs/design/templates/toolbar-control-group/icon-tile-success.svg +1 -0
  1175. package/docs/design/templates/toolbar-control-group/icon-tile-warning-dark.svg +1 -0
  1176. package/docs/design/templates/toolbar-control-group/icon-tile-warning.svg +1 -0
  1177. package/docs/design/templates/toolbar-control-group/push-buttons-dark.svg +1 -1
  1178. package/docs/design/templates/toolbar-control-group/push-buttons.svg +1 -1
  1179. package/docs/design/templates/toolbar-control-group/with-text-dark.svg +1 -1
  1180. package/docs/design/templates/toolbar-control-group/with-text.svg +1 -1
  1181. package/docs/design/templates/toolbar-control-group-dark.svg +1 -11
  1182. package/docs/design/templates/toolbar-control-group.svg +1 -11
  1183. package/docs/design/templates/toolbar-dark.svg +1 -5
  1184. package/docs/design/templates/toolbar-text/dark-tone-dark.svg +1 -0
  1185. package/docs/design/templates/toolbar-text/dark-tone.svg +1 -0
  1186. package/docs/design/templates/toolbar-text/default-dark.svg +1 -1
  1187. package/docs/design/templates/toolbar-text/default.svg +1 -1
  1188. package/docs/design/templates/toolbar-text/large-dark.svg +1 -1
  1189. package/docs/design/templates/toolbar-text/large.svg +1 -1
  1190. package/docs/design/templates/toolbar-text/small-dark.svg +1 -1
  1191. package/docs/design/templates/toolbar-text/small.svg +1 -1
  1192. package/docs/design/templates/toolbar-text-dark.svg +1 -9
  1193. package/docs/design/templates/toolbar-text.svg +1 -9
  1194. package/docs/design/templates/toolbar.svg +1 -5
  1195. package/docs/design/templates/value-table/details-dark.svg +1 -1
  1196. package/docs/design/templates/value-table/details.svg +1 -1
  1197. package/docs/design/templates/value-table-dark.svg +1 -5
  1198. package/docs/design/templates/value-table.svg +1 -5
  1199. package/docs/design/templates.md +87 -33
  1200. package/docs/design-philosophy.md +65 -20
  1201. package/docs/device-class.md +10 -9
  1202. package/docs/disclosure.md +97 -0
  1203. package/docs/document-baseline.md +93 -0
  1204. package/docs/examples/application-ui-profile.json +60 -0
  1205. package/docs/examples/command-palette-adapter.tsx +69 -17
  1206. package/docs/examples/component-catalog-extension.json +52 -0
  1207. package/docs/examples/component-composition-extension.json +80 -0
  1208. package/docs/layout.md +946 -53
  1209. package/docs/list-detail-dialog.md +100 -0
  1210. package/docs/manual-test-plan.md +29 -0
  1211. package/docs/message-composer.md +156 -0
  1212. package/docs/nav-stack.md +327 -14
  1213. package/docs/overlay-toast.md +62 -0
  1214. package/docs/overlay-tooltip.md +53 -0
  1215. package/docs/progress.md +62 -0
  1216. package/docs/recipes.md +147 -73
  1217. package/docs/slider.md +64 -0
  1218. package/docs/split-view.md +96 -7
  1219. package/docs/sunken-panel.md +106 -0
  1220. package/docs/surface-scaffold.md +487 -0
  1221. package/docs/tab-navigator.md +291 -0
  1222. package/docs/tag-field.md +66 -0
  1223. package/docs/type-contracts.md +137 -0
  1224. package/docs/ui-analyzer.md +406 -0
  1225. package/docs/ui-doctor.md +298 -0
  1226. package/docs/ui-evaluator.md +139 -0
  1227. package/docs/ux-demo.md +58 -17
  1228. package/docs/webawesome-migration.md +82 -0
  1229. package/docs/webawesome-theme.md +306 -47
  1230. package/docs/workbench-dialog.md +88 -0
  1231. package/docs/workbench.md +637 -12
  1232. package/docs/writing.md +154 -0
  1233. package/doctor/cli.mjs +120 -0
  1234. package/doctor/component-style-checks.mjs +457 -0
  1235. package/doctor/config.schema.json +94 -0
  1236. package/doctor/copy-capitalization-checks.mjs +603 -0
  1237. package/doctor/eslint-diagnostics.d.mts +24 -0
  1238. package/doctor/eslint-diagnostics.mjs +24 -0
  1239. package/doctor/index.d.mts +122 -0
  1240. package/doctor/index.mjs +1424 -0
  1241. package/doctor/report.schema.json +118 -0
  1242. package/evaluator/cli.mjs +89 -0
  1243. package/evaluator/index.d.mts +90 -0
  1244. package/evaluator/index.mjs +1203 -0
  1245. package/evaluator/report.schema.json +152 -0
  1246. package/llms.txt +940 -54
  1247. package/package.json +488 -43
  1248. package/scripts/component-catalog-extension-validation.mjs +28 -0
  1249. package/traversal-exclusions.mjs +86 -0
  1250. package/ux-demo/recipes/app-shell.tsx +204 -16
  1251. package/ux-demo/recipes/collapsible-sidebar.tsx +206 -45
  1252. package/ux-demo/recipes/compact-toolbar.tsx +135 -14
  1253. package/ux-demo/recipes/composer-form.tsx +135 -24
  1254. package/ux-demo/recipes/list-detail-dialog.tsx +155 -21
  1255. package/ux-demo/recipes/list-workspace-states.tsx +183 -11
  1256. package/ux-demo/recipes/loaders.ts +11 -3
  1257. package/ux-demo/recipes/loading-inspector.tsx +162 -39
  1258. package/ux-demo/recipes/media-detail.tsx +272 -0
  1259. package/ux-demo/recipes/mount-recipe.ts +28 -11
  1260. package/ux-demo/recipes/navigation-sidebar.tsx +137 -11
  1261. package/ux-demo/recipes/navigation-stack.tsx +79 -24
  1262. package/ux-demo/recipes/types.ts +18 -2
  1263. package/ux-demo/recipes/workspace-header.tsx +86 -5
  1264. package/vite-ux-review.d.mts +83 -0
  1265. package/vite-ux-review.mjs +120 -0
  1266. package/dist/app-tab.d.ts +0 -30
  1267. package/dist/app-tab.js +0 -5
  1268. package/dist/app-tab.js.map +0 -1
  1269. package/dist/browser/app-tab.js +0 -4
  1270. package/dist/browser/panel-header.js +0 -7
  1271. package/dist/browser/token-search-field.js +0 -4
  1272. package/dist/chunk-2Z5TWHKQ.js +0 -34
  1273. package/dist/chunk-2Z5TWHKQ.js.map +0 -1
  1274. package/dist/chunk-37T3VNIZ.js +0 -19
  1275. package/dist/chunk-37T3VNIZ.js.map +0 -1
  1276. package/dist/chunk-55DATV3A.js +0 -10
  1277. package/dist/chunk-55DATV3A.js.map +0 -1
  1278. package/dist/chunk-56RJXPHG.js.map +0 -1
  1279. package/dist/chunk-5ATCDSQS.js +0 -42
  1280. package/dist/chunk-5ATCDSQS.js.map +0 -1
  1281. package/dist/chunk-5E2HVJ33.js +0 -10
  1282. package/dist/chunk-5E2HVJ33.js.map +0 -1
  1283. package/dist/chunk-7BR3DO2A.js +0 -31
  1284. package/dist/chunk-7BR3DO2A.js.map +0 -1
  1285. package/dist/chunk-7JB7VPRI.js +0 -34
  1286. package/dist/chunk-7JB7VPRI.js.map +0 -1
  1287. package/dist/chunk-7LDCTU7D.js +0 -134
  1288. package/dist/chunk-7LDCTU7D.js.map +0 -1
  1289. package/dist/chunk-AQNKJRFH.js +0 -79
  1290. package/dist/chunk-AQNKJRFH.js.map +0 -1
  1291. package/dist/chunk-AVZHJN6C.js +0 -14
  1292. package/dist/chunk-AVZHJN6C.js.map +0 -1
  1293. package/dist/chunk-B24C4A6T.js +0 -22
  1294. package/dist/chunk-B24C4A6T.js.map +0 -1
  1295. package/dist/chunk-BLK3UEEI.js +0 -23
  1296. package/dist/chunk-BLK3UEEI.js.map +0 -1
  1297. package/dist/chunk-CH4SQ6H5.js +0 -39
  1298. package/dist/chunk-CH4SQ6H5.js.map +0 -1
  1299. package/dist/chunk-DAFFDO33.js +0 -14
  1300. package/dist/chunk-DAFFDO33.js.map +0 -1
  1301. package/dist/chunk-I7INRJO4.js +0 -17
  1302. package/dist/chunk-I7INRJO4.js.map +0 -1
  1303. package/dist/chunk-L4OKFDJY.js +0 -24
  1304. package/dist/chunk-L4OKFDJY.js.map +0 -1
  1305. package/dist/chunk-LCOBDOCC.js +0 -265
  1306. package/dist/chunk-LCOBDOCC.js.map +0 -1
  1307. package/dist/chunk-M5JRI6MN.js +0 -27
  1308. package/dist/chunk-M5JRI6MN.js.map +0 -1
  1309. package/dist/chunk-RNPGFQ33.js +0 -10
  1310. package/dist/chunk-RNPGFQ33.js.map +0 -1
  1311. package/dist/chunk-RUNWEPR4.js +0 -10
  1312. package/dist/chunk-RUNWEPR4.js.map +0 -1
  1313. package/dist/chunk-W2FK7ZNY.js +0 -26
  1314. package/dist/chunk-W2FK7ZNY.js.map +0 -1
  1315. package/dist/chunk-WVPYVDXY.js +0 -15
  1316. package/dist/chunk-WVPYVDXY.js.map +0 -1
  1317. package/dist/chunk-XE5ZLPCC.js +0 -20
  1318. package/dist/chunk-XE5ZLPCC.js.map +0 -1
  1319. package/dist/chunk-XXMOARTH.js +0 -229
  1320. package/dist/chunk-XXMOARTH.js.map +0 -1
  1321. package/dist/chunk-YGN7OMLT.js.map +0 -1
  1322. package/dist/panel-header.d.ts +0 -36
  1323. package/dist/panel-header.js +0 -7
  1324. package/dist/panel-header.js.map +0 -1
  1325. package/dist/styles/app-tab.css +0 -152
  1326. package/dist/styles/panel-header.css +0 -64
  1327. package/dist/styles/tab-scaffold.css +0 -84
  1328. package/dist/styles/token-search-field.css +0 -289
  1329. package/dist/tab-scaffold.d.ts +0 -30
  1330. package/dist/tab-scaffold.js +0 -16
  1331. package/dist/tab-scaffold.js.map +0 -1
  1332. package/dist/token-search-field.d.ts +0 -43
  1333. package/dist/token-search-field.js +0 -4
  1334. package/dist/token-search-field.js.map +0 -1
  1335. package/dist/wire-tab-scaffold.d.ts +0 -11
  1336. package/dist/wire-tab-scaffold.js +0 -16
  1337. package/dist/wire-tab-scaffold.js.map +0 -1
  1338. package/dist/wire-token-search-fields.js +0 -5
  1339. package/docs/design/templates/panel-header/icon-actions-dark.svg +0 -1
  1340. package/docs/design/templates/panel-header/icon-actions.svg +0 -1
  1341. package/docs/design/templates/panel-header/icon-summary-actions-dark.svg +0 -1
  1342. package/docs/design/templates/panel-header/icon-summary-actions.svg +0 -1
  1343. package/docs/design/templates/panel-header/no-icon-dark.svg +0 -1
  1344. package/docs/design/templates/panel-header/no-icon.svg +0 -1
  1345. package/docs/design/templates/panel-header/page-heading-dark.svg +0 -1
  1346. package/docs/design/templates/panel-header/page-heading.svg +0 -1
  1347. package/docs/design/templates/panel-header/title-only-dark.svg +0 -1
  1348. package/docs/design/templates/panel-header/title-only.svg +0 -1
  1349. package/docs/design/templates/panel-header-dark.svg +0 -13
  1350. package/docs/design/templates/panel-header.svg +0 -13
  1351. package/docs/design/templates/token-search-field/empty-dark.svg +0 -1
  1352. package/docs/design/templates/token-search-field/empty.svg +0 -1
  1353. package/docs/design/templates/token-search-field/tokens-dark.svg +0 -1
  1354. package/docs/design/templates/token-search-field/tokens.svg +0 -1
  1355. package/docs/design/templates/token-search-field-dark.svg +0 -7
  1356. package/docs/design/templates/token-search-field.svg +0 -7
  1357. package/docs/tab-scaffold.md +0 -41
  1358. package/ux-demo/recipes/recipes.css +0 -448
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/wiring/wire-scroll-dividers.ts"],"names":["view","scroller"],"mappings":"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","file":"chunk-OZ6X76G5.js","sourcesContent":["/**\n * An app-owned scroll arrangement outside a `Pane`: the `id` of the element\n * that scrolls and the `id`s of the pinned chrome on each physical side of it.\n * Each named chrome element shows its divider on the side facing the scroller\n * while content is scrolled away beyond that side. Ids are resolved below the\n * wired root on every refresh, so a re-render that replaces an element keeps\n * the pairing.\n */\nexport interface ScrollDividerTarget {\n /** The `id` of the scrolling element. */\n scroller: string;\n /** Chrome above the scroller: shows its bottom divider once scrolled down. */\n top?: string;\n /**\n * Chrome right of the scroller: shows its left divider while content is\n * hidden beyond the scroller's right edge (never when nothing overflows).\n */\n right?: string;\n /**\n * Chrome below the scroller: shows its top divider while content is hidden\n * beyond the scroller's bottom edge (never when nothing overflows).\n */\n bottom?: string;\n /** Chrome left of the scroller: shows its right divider once scrolled right. */\n left?: string;\n}\n\nexport interface WireScrollDividersOptions {\n /**\n * App-owned scroll arrangements to pair beyond the ones found by structure\n * (every `Pane`'s header and footer around its content, every `NavStack`'s\n * and `TabNavigator`'s chrome around its active region, and every `TabBar`\n * strip).\n */\n targets?: readonly ScrollDividerTarget[];\n}\n\ntype Edge = 't' | 'r' | 'b' | 'l';\n\nconst EDGES: readonly Edge[] = ['t', 'r', 'b', 'l'];\n\n/** The side of a chrome element that faces a scroller it sits on `edge` of. */\nconst FACING: Record<Edge, Edge> = { t: 'b', r: 'l', b: 't', l: 'r' };\n\nconst TARGET_EDGES: Record<Edge, 'top' | 'right' | 'bottom' | 'left'> = {\n t: 'top',\n r: 'right',\n b: 'bottom',\n l: 'left',\n};\n\n/** On a scroller: the edges beyond which content is currently hidden. */\nconst SCROLL_OVERFLOW = 'data-scroll-overflow';\n/** On a chrome element: its sides that currently show a scroll divider. */\nconst SCROLL_DIVIDER = 'data-scroll-divider';\n\n/** On a Pane with an overlay header: the wiring has measured that header. */\nconst HEADER_OVERLAY = 'data-header-overlay';\n/** The inherited clearance context a measured overlay header publishes. */\nconst CLEARANCE_BLOCK_START = '--kui-scroll-clearance-block-start';\n/**\n * On a Pane with a measured overlay header: the inline size of its content's\n * classic vertical scrollbar, which the header leaves uncovered. Unset for an\n * overlay scrollbar, which takes no space.\n */\nconst SCROLLBAR_INLINE_SIZE = '--kui-pane-scrollbar-inline-size';\n/** A Pane whose header is laid over its content (fixed chrome only). */\nconst OVERLAY_PANE =\n '.kui-pane[data-header-presentation=\"overlay\"]:not([data-chrome-placement=\"auto\"])';\n\n/**\n * Scroll distance, in px, that must be exceeded to count as \"away from an\n * edge\": `scrollWidth`/`scrollHeight` are rounded to whole pixels while the\n * scroll position is fractional, so a scroller at its end can report up to a\n * pixel still to go.\n */\nconst THRESHOLD = 1;\n\n/** The scroll-edge fade a clear bar's material follows (see `fadeEdges`). */\nconst SCROLL_EDGE_PROGRESS = '--kui-scroll-edge-progress';\nconst SCROLL_EDGE_DISTANCE = 'data-scroll-edge-distance';\nconst DEFAULT_SCROLL_EDGE_DISTANCE = 60;\n\ninterface Pairing {\n scroller: HTMLElement;\n chrome: Partial<Record<Edge, HTMLElement>>;\n}\n\n/** A double-quoted CSS attribute-selector value. */\nconst quoted = (value: string) =>\n `\"${value.replaceAll('\\\\', '\\\\\\\\').replaceAll('\"', '\\\\\"')}\"`;\n\n/** Elements matching `selector` at and below root. */\nfunction within<T extends Element>(\n root: HTMLElement | Document,\n selector: string,\n): T[] {\n const found = [...root.querySelectorAll<T>(selector)];\n if (root.nodeType === 1 && (root as HTMLElement).matches(selector))\n found.unshift(root as unknown as T);\n return found;\n}\n\nconst directChild = (parent: Element, selector: string) =>\n [...parent.children].find((child): child is HTMLElement =>\n child.matches(selector),\n );\n\nconst PANE_CHROME = {\n t: '.kui-pane__header, .kui-pane__toolbar',\n b: '.kui-pane__footer',\n} as const;\n\n/** A NavStack's live (not cross-fading copy) chrome on `edge`. */\nconst NAV_STACK_CHROME = {\n t: '.kui-nav-stack__chrome:not([data-nav-chrome-copy])',\n b: '.kui-nav-stack__bottom:not([data-nav-chrome-copy])',\n} as const;\n\n/** A NavStack's active view: the top entry, never one sliding out. */\nfunction activeView(stack: Element): HTMLElement | undefined {\n const viewport = directChild(stack, '.kui-nav-stack__viewport');\n if (!viewport) return undefined;\n return [...viewport.children]\n .filter((child): child is HTMLElement =>\n child.matches(\n '.kui-nav-stack__view[data-nav-active=\"true\"]:not([data-nav-exiting=\"true\"])',\n ),\n )\n .at(-1);\n}\n\n/** A TabNavigator's shown scene. */\nfunction activeScene(scaffold: Element): HTMLElement | undefined {\n const scenes = directChild(scaffold, '.kui-tab-scaffold__scenes');\n return scenes\n ? directChild(scenes, '.kui-tab-scaffold__scene[data-active=\"true\"]')\n : undefined;\n}\n\n/**\n * The elements that may scroll against a layout region's `edge` (the top or\n * bottom of a NavStack view or a TabNavigator scene): the region itself, then,\n * through a sole child that puts no chrome of its own on that edge, a Pane's\n * content slot or a nested NavStack's or TabNavigator's active region. Every\n * candidate is paired with the layout's chrome; one that does not overflow\n * reports nothing, so the chrome keys on whichever element actually scrolls.\n * A sole child with chrome on that edge (a Pane header, a nested NavStack's\n * top chrome, a TabNavigator's bar) stops the walk: that chrome draws its own\n * divider against its own content.\n */\nfunction regionScrollers(region: HTMLElement, edge: 't' | 'b'): HTMLElement[] {\n const found: HTMLElement[] = [];\n let current: HTMLElement | undefined = region;\n while (current) {\n found.push(current);\n if (current.children.length !== 1) break;\n const child: Element = current.children[0]!;\n if (child.matches('.kui-pane')) {\n current = directChild(child, PANE_CHROME[edge])\n ? undefined\n : directChild(child, '.kui-pane__content');\n if (current) found.push(current);\n break;\n }\n if (child.matches('.kui-nav-stack'))\n current = directChild(child, NAV_STACK_CHROME[edge])\n ? undefined\n : activeView(child);\n else if (child.matches('.kui-tab-scaffold') && edge === 't')\n current = activeScene(child);\n else current = undefined;\n }\n return found;\n}\n\n/** Canonical top/right/bottom/left string of the given edges. */\nconst sides = (edges: ReadonlySet<Edge>) =>\n EDGES.filter((edge) => edges.has(edge)).join('');\n\n/**\n * Which edges of `scroller` currently have content hidden beyond them. Nothing\n * overflows when the content fits, so the far edges report no divider then.\n * Horizontal edges are physical, so a right-to-left scroller (whose\n * `scrollLeft` runs from the negative maximum to 0) reports the same sides.\n */\nfunction measure(scroller: HTMLElement): string {\n const edges = new Set<Edge>();\n const maxY = scroller.scrollHeight - scroller.clientHeight;\n if (maxY > THRESHOLD) {\n if (scroller.scrollTop > THRESHOLD) edges.add('t');\n if (maxY - scroller.scrollTop > THRESHOLD) edges.add('b');\n }\n const maxX = scroller.scrollWidth - scroller.clientWidth;\n if (maxX > THRESHOLD) {\n const view = scroller.ownerDocument.defaultView;\n const rtl = view?.getComputedStyle(scroller).direction === 'rtl';\n const left = rtl ? maxX + scroller.scrollLeft : scroller.scrollLeft;\n if (left > THRESHOLD) edges.add('l');\n if (maxX - left > THRESHOLD) edges.add('r');\n }\n return sides(edges);\n}\n\ntype StateAttribute = typeof SCROLL_OVERFLOW | typeof SCROLL_DIVIDER;\ntype Root = HTMLElement | Document;\n\ninterface Registration {\n root: Root;\n targets: readonly ScrollDividerTarget[];\n}\n\n// A document has one attribute writer even when registrations overlap. The\n// WeakMap ties this coordination cache to the document's lifetime.\nconst CONTROLLERS = new WeakMap<\n Document,\n (registration: Registration) => () => void\n>();\n\n/** Set (or, for an empty value, remove) one of this wiring's attributes. */\nfunction write(element: Element, name: StateAttribute, value: string) {\n if (element.getAttribute(name) === (value || null)) return;\n if (name === SCROLL_OVERFLOW) {\n if (value) element.setAttribute(SCROLL_OVERFLOW, value);\n else element.removeAttribute(SCROLL_OVERFLOW);\n } else if (value) element.setAttribute(SCROLL_DIVIDER, value);\n else element.removeAttribute(SCROLL_DIVIDER);\n}\n\n/**\n * Wire scroll dividers below `root`: a divider between pinned chrome and the\n * content that scrolls beside it shows only while content is scrolled away\n * from that edge. Near edges (top, left) hide at the scroll start; far edges\n * (bottom, right) hide at the scroll end and whenever nothing overflows.\n *\n * The wiring only reports scroll state; each component draws its own divider\n * from it. It writes `data-scroll-overflow` (the edges with hidden content, in\n * canonical `t`/`r`/`b`/`l` order) on each scroller, and `data-scroll-divider`\n * (the sides to draw) on each paired chrome element:\n *\n * - every `Pane` with a header or footer: its header shows a bottom divider and\n * its footer a top divider (drawn by the Pane, per its `chromeDividers`);\n * - every `NavStack`'s top chrome and bottom toolbar around its active view,\n * and every `TabNavigator`'s bar under its active scene: the chrome shows a\n * bottom (top chrome) or top (bottom toolbar, bar) divider. The scroller is\n * whichever element actually scrolls there: the view or scene itself, or,\n * through a sole child with no chrome of its own on that edge, a `Pane`'s\n * content or a nested `NavStack` / `TabNavigator` region (a Pane's own header\n * or footer draws that boundary instead);\n * - every `TabBar` strip: the bar draws a divider on each side of the strip\n * whose tabs are scrolled out of view;\n * - each app-owned `targets` pairing: a `Toolbar` or `List` named as chrome\n * draws the divider on its facing side.\n *\n * It also measures every `Pane` header laid over its content\n * (`headerPresentation=\"overlay\"`, with fixed chrome placement): it publishes\n * the header's border-box block size on the Pane root as the inherited\n * `--kui-scroll-clearance-block-start` context, and marks the root\n * `data-header-overlay=\"measured\"`, which moves the header over the content\n * and has the content clear it. The measurement follows the header as it\n * wraps, zooms, or changes content, and both are restored before paint if a\n * re-render drops them.\n *\n * Structure is re-read after every DOM change below root that can change a\n * pairing — a structural element or target id added, removed, or re-classed;\n * mutations inside scrolled content (a row's class, a list's rows) do not\n * re-read it. Either way the scrollers are re-measured once the next frame\n * has laid out, before it paints, so a large render never forces a layout\n * (where `ResizeObserver` is missing, structure is measured at once and\n * content in the next animation frame) — and a re-render that drops the\n * attributes gets them back before paint.\n * Scroll is tracked with one capturing listener per registered root, and size\n * changes of each scroller and its children with a `ResizeObserver`. Overlapping registrations\n * share one attribute writer; each disposer removes its registration, and the\n * final disposer removes the wiring-owned attributes. See\n * `docs/23-app-layouts.md` §3.7.\n */\nexport function wireScrollDividers(\n root: Root,\n { targets = [] }: WireScrollDividersOptions = {},\n): () => void {\n const ownerDocument = (\n root.nodeType === 9 ? (root as Document) : root.ownerDocument\n )!;\n let register = CONTROLLERS.get(ownerDocument);\n if (!register) {\n register = createController(ownerDocument);\n CONTROLLERS.set(ownerDocument, register);\n }\n return register({ root, targets });\n}\n\n/**\n * Every class `collect()` and `regionScrollers()` select by. An element that\n * carries none of them (and no target id) can never become or stop being part\n * of a pairing.\n */\nconst STRUCTURAL_CLASSES = [\n 'kui-pane',\n 'kui-pane__content',\n 'kui-pane__header',\n 'kui-pane__toolbar',\n 'kui-pane__footer',\n 'kui-nav-stack',\n 'kui-nav-stack__viewport',\n 'kui-nav-stack__view',\n 'kui-nav-stack__chrome',\n 'kui-nav-stack__bottom',\n 'kui-tab-scaffold',\n 'kui-tab-scaffold__scenes',\n 'kui-tab-scaffold__scene',\n 'kui-tab-scaffold__bar',\n] as const;\n\nconst STRUCTURAL_SELECTOR = [\n ...STRUCTURAL_CLASSES.map((name) => `.${name}`),\n '[data-kui-tab-list]',\n].join(', ');\n\n/** Whether a class attribute value names a structural class. */\nconst hasStructuralClass = (value: string | null) =>\n !!value &&\n value\n .split(/\\s+/)\n .some((token) => (STRUCTURAL_CLASSES as readonly string[]).includes(token));\n\nfunction createController(\n ownerDocument: Document,\n): (registration: Registration) => () => void {\n const view = ownerDocument.defaultView;\n let disposed = false;\n const registrations = new Set<Registration>();\n const listenedRoots = new Set<Root>();\n let pairings: Pairing[] = [];\n const overflow = new Map<HTMLElement, string>();\n /** Every element this wiring has written, with what it wrote. */\n const written = new Map<Element, Map<StateAttribute, string>>();\n /** Chrome carrying a published scroll-edge progress. */\n const faded = new Set<HTMLElement>();\n /** Each overlay Pane header, with its Pane. */\n let overlays = new Map<HTMLElement, HTMLElement>();\n /** Each overlay header's last measured border-box block size, in px. */\n const headerSizes = new Map<HTMLElement, number>();\n /** Each overlay header's Pane content scrollbar inline size, in px. */\n const scrollbarSizes = new Map<HTMLElement, number>();\n /** Each Pane this wiring has published a header clearance on. */\n const published = new Set<HTMLElement>();\n\n const byId = (root: Root, id: string | undefined) => {\n if (!id) return undefined;\n const [match] = within<HTMLElement>(root, `[id=${quoted(id)}]`);\n return match;\n };\n\n const collect = (): Pairing[] => {\n const found: Pairing[] = [];\n for (const { root, targets } of registrations) {\n for (const pane of within<HTMLElement>(root, '.kui-pane')) {\n const scroller = directChild(pane, '.kui-pane__content');\n const header = directChild(pane, PANE_CHROME.t);\n const footer = directChild(pane, PANE_CHROME.b);\n if (scroller && (header || footer))\n found.push({ scroller, chrome: { t: header, b: footer } });\n }\n const pairRegion = (\n region: HTMLElement | undefined,\n edge: 't' | 'b',\n chrome: HTMLElement | undefined,\n ) => {\n if (!region || !chrome) return;\n for (const scroller of regionScrollers(region, edge))\n found.push({ scroller, chrome: { [edge]: chrome } });\n };\n for (const stack of within<HTMLElement>(root, '.kui-nav-stack')) {\n const view = activeView(stack);\n for (const edge of ['t', 'b'] as const)\n pairRegion(view, edge, directChild(stack, NAV_STACK_CHROME[edge]));\n }\n for (const scaffold of within<HTMLElement>(root, '.kui-tab-scaffold'))\n pairRegion(\n activeScene(scaffold),\n 'b',\n directChild(scaffold, '.kui-tab-scaffold__bar'),\n );\n for (const strip of within<HTMLElement>(root, '[data-kui-tab-list]'))\n found.push({ scroller: strip, chrome: {} });\n for (const target of targets) {\n const scroller = byId(root, target.scroller);\n if (!scroller) continue;\n const chrome: Pairing['chrome'] = {};\n for (const edge of EDGES)\n chrome[edge] = byId(root, target[TARGET_EDGES[edge]]);\n found.push({ scroller, chrome });\n }\n }\n return found;\n };\n\n const collectOverlays = () => {\n const found = new Map<HTMLElement, HTMLElement>();\n for (const { root } of registrations)\n for (const pane of within<HTMLElement>(root, OVERLAY_PANE)) {\n const header = directChild(pane, PANE_CHROME.t);\n if (header) found.set(header, pane);\n }\n return found;\n };\n\n /**\n * Re-read the classic vertical scrollbar of each overlay Pane's content (its\n * `offsetWidth` beyond `clientWidth` and the borders; 0 for an overlay\n * scrollbar). Returns whether any changed.\n */\n const measureScrollbars = () => {\n let changed = false;\n for (const [header, pane] of overlays) {\n const scroller = directChild(pane, '.kui-pane__content');\n let size = 0;\n if (scroller) {\n const style =\n scroller.ownerDocument.defaultView!.getComputedStyle(scroller);\n size = Math.max(\n 0,\n scroller.offsetWidth -\n scroller.clientWidth -\n (Number.parseFloat(style.borderLeftWidth) || 0) -\n (Number.parseFloat(style.borderRightWidth) || 0),\n );\n }\n if (scrollbarSizes.get(header) === size) continue;\n scrollbarSizes.set(header, size);\n changed = true;\n }\n return changed;\n };\n\n /**\n * Watches only the Panes this wiring published on, so a re-render that\n * strips the published clearance or gate gets them back before paint.\n */\n const overlayObserver = view?.MutationObserver\n ? new view.MutationObserver(() => {\n if (!disposed) publish();\n })\n : undefined;\n\n /**\n * Publish each measured overlay header's clearance on its Pane, with the\n * inline size of a classic scrollbar the header must leave uncovered.\n */\n const publish = () => {\n const current = new Map<HTMLElement, [string, string]>();\n for (const [header, pane] of overlays) {\n const size = headerSizes.get(header);\n const scrollbar = scrollbarSizes.get(header);\n if (size !== undefined)\n current.set(pane, [`${size}px`, scrollbar ? `${scrollbar}px` : '']);\n }\n // Disconnect first, so this wiring's own writes are not reported back.\n overlayObserver?.disconnect();\n for (const pane of published)\n if (!current.has(pane)) {\n pane.style.removeProperty(CLEARANCE_BLOCK_START);\n pane.style.removeProperty(SCROLLBAR_INLINE_SIZE);\n if (!pane.getAttribute('style')) pane.removeAttribute('style');\n pane.removeAttribute(HEADER_OVERLAY);\n }\n published.clear();\n for (const [pane, [value, scrollbar]] of current) {\n if (pane.style.getPropertyValue(CLEARANCE_BLOCK_START) !== value)\n pane.style.setProperty(CLEARANCE_BLOCK_START, value);\n if (pane.style.getPropertyValue(SCROLLBAR_INLINE_SIZE) !== scrollbar) {\n if (scrollbar) pane.style.setProperty(SCROLLBAR_INLINE_SIZE, scrollbar);\n else pane.style.removeProperty(SCROLLBAR_INLINE_SIZE);\n }\n if (pane.getAttribute(HEADER_OVERLAY) !== 'measured')\n pane.setAttribute(HEADER_OVERLAY, 'measured');\n published.add(pane);\n overlayObserver?.observe(pane, {\n attributes: true,\n attributeFilter: ['style', HEADER_OVERLAY],\n });\n }\n };\n\n /**\n * Publish each clear bar's scroll-edge progress: how far content has\n * scrolled beneath it, as a fraction of its component's\n * `data-scroll-edge-distance` (60px by default). A top bar measures from the\n * scroll start, a bottom bar toward the scroll end. Only chrome whose own\n * component root opts in (`data-scroll-edge`) gets one; `only` limits the\n * pass to the bars of one scrolled scroller.\n */\n const fadeEdges = (only?: HTMLElement) => {\n const current = new Set<HTMLElement>();\n for (const { scroller, chrome } of pairings)\n for (const edge of ['t', 'b'] as const) {\n const element = chrome[edge];\n const owner = element?.parentElement;\n if (!element || !owner?.hasAttribute('data-scroll-edge')) continue;\n current.add(element);\n if (only && scroller !== only) continue;\n const distance =\n Number(owner.getAttribute(SCROLL_EDGE_DISTANCE)) ||\n DEFAULT_SCROLL_EDGE_DISTANCE;\n const travelled =\n edge === 't'\n ? scroller.scrollTop\n : scroller.scrollHeight -\n scroller.clientHeight -\n scroller.scrollTop;\n const value = String(\n Math.round(Math.min(1, Math.max(0, travelled / distance)) * 1000) /\n 1000,\n );\n if (element.style.getPropertyValue(SCROLL_EDGE_PROGRESS) !== value)\n element.style.setProperty(SCROLL_EDGE_PROGRESS, value);\n }\n if (only) return;\n for (const element of faded)\n if (!current.has(element)) {\n element.style.removeProperty(SCROLL_EDGE_PROGRESS);\n if (!element.getAttribute('style')) element.removeAttribute('style');\n }\n faded.clear();\n for (const element of current) faded.add(element);\n };\n\n /** Write every paired element's attributes from the measured overflow. */\n const apply = () => {\n const current = new Map<Element, Map<StateAttribute, string>>();\n const dividers = new Map<HTMLElement, Set<Edge>>();\n for (const { scroller, chrome } of pairings) {\n const edges = overflow.get(scroller)!;\n (\n current.get(scroller) ?? current.set(scroller, new Map()).get(scroller)!\n ).set(SCROLL_OVERFLOW, edges);\n for (const edge of EDGES) {\n const element = chrome[edge];\n if (!element) continue;\n const shown = dividers.get(element) ?? new Set<Edge>();\n dividers.set(element, shown);\n if (edges.includes(edge)) shown.add(FACING[edge]);\n }\n }\n for (const [element, shown] of dividers)\n (\n current.get(element) ?? current.set(element, new Map()).get(element)!\n ).set(SCROLL_DIVIDER, sides(shown));\n // Anything written before that is no longer paired gets its attributes back.\n for (const [element, values] of written)\n for (const name of values.keys())\n if (!current.get(element)?.has(name)) write(element, name, '');\n written.clear();\n for (const [element, values] of current) {\n written.set(element, values);\n for (const [name, value] of values) write(element, name, value);\n }\n fadeEdges();\n };\n\n /** Each observed element, keyed to whether it is observed by border box. */\n const observed = new Map<Element, boolean>();\n /**\n * A post-layout hook for the content re-measure: an inert zero-height box\n * outside the app tree whose width a content mutation toggles. The\n * ResizeObserver reports it after the frame's layout, so the re-measure\n * reads scroll extents from a clean layout instead of forcing one on the\n * freshly rendered tree.\n */\n let probe: HTMLElement | undefined;\n /** Whether a toggled probe has yet to be reported. */\n let probePending = false;\n const resizeObserver = view?.ResizeObserver\n ? new view.ResizeObserver((entries) => {\n if (disposed) return;\n const scrollers = new Set(pairings.map(({ scroller }) => scroller));\n let headerResized = false;\n // A scroller resized (a classic scrollbar appeared or went away) or\n // the post-layout probe reported: the scrollbars may have changed.\n let scrollersResized = false;\n for (const entry of entries) {\n const { target } = entry;\n if (overlays.has(target as HTMLElement)) {\n headerSizes.set(\n target as HTMLElement,\n entry.borderBoxSize?.[0]?.blockSize ??\n target.getBoundingClientRect().height,\n );\n headerResized = true;\n continue;\n }\n scrollersResized = true;\n if (target === probe) {\n probePending = false;\n for (const scroller of overflow.keys())\n overflow.set(scroller, measure(scroller));\n continue;\n }\n const scroller = scrollers.has(target as HTMLElement)\n ? (target as HTMLElement)\n : target.parentElement;\n if (scroller && scrollers.has(scroller))\n overflow.set(scroller, measure(scroller));\n }\n if (scrollersResized && measureScrollbars()) headerResized = true;\n apply();\n if (headerResized) publish();\n })\n : undefined;\n\n const observeSizes = () => {\n if (!resizeObserver) return;\n const wanted = new Map<Element, boolean>();\n for (const { scroller } of pairings) {\n wanted.set(scroller, false);\n for (const child of scroller.children) wanted.set(child, false);\n }\n // An overlay header's clearance is its border box, so a border alone (the\n // forced-colors edge) must report a resize too.\n for (const header of overlays.keys()) wanted.set(header, true);\n for (const element of observed.keys())\n if (!wanted.has(element)) {\n resizeObserver.unobserve(element);\n observed.delete(element);\n }\n for (const [element, borderBox] of wanted)\n if (observed.get(element) !== borderBox) {\n resizeObserver.observe(\n element,\n borderBox ? { box: 'border-box' } : undefined,\n );\n observed.set(element, borderBox);\n }\n };\n\n /**\n * Re-read every pairing. A registration measures at once; a mutation\n * (`afterLayout`) keeps each still-paired scroller's last measurement and\n * re-measures through the probe once the frame has laid out, before it\n * paints, so a structural re-render does not force a layout either.\n */\n const refresh = (afterLayout = false) => {\n const deferred = afterLayout && resizeObserver !== undefined;\n const previous = deferred ? new Map(overflow) : undefined;\n pairings = collect();\n overflow.clear();\n for (const { scroller } of pairings)\n overflow.set(\n scroller,\n previous ? (previous.get(scroller) ?? '') : measure(scroller),\n );\n overlays = collectOverlays();\n for (const sizes of [headerSizes, scrollbarSizes])\n for (const header of sizes.keys())\n if (!overlays.has(header)) sizes.delete(header);\n // A new overlay header is measured at once unless the ResizeObserver\n // will report it after this frame's layout.\n if (!deferred)\n for (const header of overlays.keys())\n if (!headerSizes.has(header))\n headerSizes.set(header, header.getBoundingClientRect().height);\n if (!deferred) measureScrollbars();\n observeSizes();\n apply();\n publish();\n if (deferred) scheduleRemeasure();\n };\n\n /** Re-measure every scroller (pairings unchanged); write what changed. */\n const remeasure = () => {\n let changed = false;\n for (const scroller of overflow.keys()) {\n const edges = measure(scroller);\n if (edges === overflow.get(scroller)) continue;\n overflow.set(scroller, edges);\n changed = true;\n }\n if (changed) apply();\n if (measureScrollbars()) publish();\n };\n\n let remeasureFrame: number | undefined;\n const scheduleRemeasure = () => {\n if (resizeObserver) {\n // Toggle once per report: a second toggle before the frame would undo\n // the size change and the report with it.\n if (probePending) return;\n probePending = true;\n if (!probe) {\n probe = ownerDocument.createElement('div');\n probe.setAttribute('aria-hidden', 'true');\n probe.style.cssText =\n 'position:fixed;top:0;left:0;width:0;height:0;overflow:hidden;visibility:hidden;pointer-events:none;contain:strict';\n resizeObserver.observe(probe);\n }\n // Outside body, so an app that renders into body never removes it; an\n // app that removed it anyway gets it back.\n if (!probe.isConnected) ownerDocument.documentElement.append(probe);\n probe.style.width = probe.style.width === '1px' ? '0px' : '1px';\n return;\n }\n if (remeasureFrame !== undefined || !view?.requestAnimationFrame) return;\n // The final disposer cancels a pending frame.\n remeasureFrame = view.requestAnimationFrame(() => {\n remeasureFrame = undefined;\n remeasure();\n });\n };\n\n const onScroll = (event: Event) => {\n const scroller = event.target as HTMLElement;\n if (!overflow.has(scroller)) return;\n fadeEdges(scroller);\n const edges = measure(scroller);\n if (edges === overflow.get(scroller)) return;\n overflow.set(scroller, edges);\n apply();\n };\n\n const mutationObserver = view?.MutationObserver\n ? new view.MutationObserver((records) => {\n if (disposed) return;\n // Structure changes re-read every pairing. A re-render that only\n // dropped or changed attributes this wiring owns gets them back\n // without re-measuring.\n // Everything else (a row's selection class, a list morph's rows)\n // cannot change a pairing. It is re-measured after the next frame's\n // layout instead (through the probe, else in the next animation\n // frame), which catches what the scrollers' own observations cannot:\n // an extent change that resizes no direct child (an absolutely\n // positioned popup, a `display: contents` child), without forcing a\n // layout of the freshly rendered tree.\n const ids = targetIds();\n const selector = [\n STRUCTURAL_SELECTOR,\n ...[...ids].map((id) => `[id=${quoted(id)}]`),\n ].join(', ');\n if (records.some((record) => changesPairings(record, ids, selector)))\n refresh(true);\n else {\n if (\n records.some(\n ({ attributeName }) =>\n attributeName === SCROLL_OVERFLOW ||\n attributeName === SCROLL_DIVIDER,\n )\n )\n apply();\n if (\n records.some(\n ({ attributeName }) =>\n attributeName !== SCROLL_OVERFLOW &&\n attributeName !== SCROLL_DIVIDER,\n )\n )\n scheduleRemeasure();\n }\n })\n : undefined;\n\n /** Every target id any registration resolves. */\n const targetIds = () => {\n const ids = new Set<string>();\n for (const { targets } of registrations)\n for (const target of targets) {\n ids.add(target.scroller);\n for (const edge of EDGES) {\n const id = target[TARGET_EDGES[edge]];\n if (id) ids.add(id);\n }\n }\n return ids;\n };\n\n /** Whether `node` is or contains an element matching `selector`. */\n const holds = (node: Node, selector: string) =>\n node.nodeType === 1 &&\n ((node as Element).matches(selector) ||\n !!(node as Element).querySelector(selector));\n\n /**\n * Whether a mutation record can change what `collect()` finds: a structural\n * element or target-id element (or, through its old class or id, a former\n * one) changed, or one was added or removed. Every scroller is itself\n * structural or a target id, so a child-list change of a scroller (whose\n * child count `regionScrollers` reads, and whose children the\n * ResizeObserver watches) always counts.\n */\n const changesPairings = (\n {\n type,\n target,\n attributeName,\n oldValue,\n addedNodes,\n removedNodes,\n }: MutationRecord,\n ids: ReadonlySet<string>,\n selector: string,\n ) => {\n if (\n type === 'attributes' &&\n (attributeName === SCROLL_OVERFLOW || attributeName === SCROLL_DIVIDER)\n )\n return false;\n if (target.nodeType === 1 && (target as Element).matches(selector))\n return true;\n if (type === 'attributes')\n return attributeName === 'class'\n ? hasStructuralClass(oldValue)\n : attributeName === 'id' && oldValue !== null && ids.has(oldValue);\n for (const node of [...addedNodes, ...removedNodes])\n if (holds(node, selector)) return true;\n return false;\n };\n\n const syncRoots = () => {\n const roots = new Set([...registrations].map(({ root }) => root));\n for (const root of listenedRoots)\n if (!roots.has(root)) {\n root.removeEventListener('scroll', onScroll, { capture: true });\n listenedRoots.delete(root);\n }\n for (const root of roots)\n if (!listenedRoots.has(root)) {\n root.addEventListener('scroll', onScroll, {\n capture: true,\n passive: true,\n });\n listenedRoots.add(root);\n }\n mutationObserver?.disconnect();\n for (const root of roots)\n mutationObserver?.observe(root, {\n subtree: true,\n childList: true,\n attributes: true,\n // Old values tell a class or id that stopped being structural.\n attributeOldValue: true,\n // The shown NavStack view and TabNavigator scene change by attribute,\n // and a Pane's header presentation by its attributes.\n attributeFilter: [\n 'data-header-presentation',\n 'data-chrome-placement',\n SCROLL_OVERFLOW,\n SCROLL_DIVIDER,\n 'id',\n 'class',\n 'data-nav-active',\n 'data-nav-exiting',\n 'data-active',\n ],\n });\n };\n\n return (registration) => {\n registrations.add(registration);\n syncRoots();\n refresh();\n return () => {\n if (!registrations.delete(registration)) return;\n syncRoots();\n if (registrations.size) refresh();\n else {\n disposed = true;\n if (remeasureFrame !== undefined)\n view?.cancelAnimationFrame(remeasureFrame);\n remeasureFrame = undefined;\n resizeObserver?.disconnect();\n probe?.remove();\n probe = undefined;\n probePending = false;\n for (const [element, values] of written)\n for (const name of values.keys()) write(element, name, '');\n written.clear();\n overlays.clear();\n headerSizes.clear();\n scrollbarSizes.clear();\n publish();\n overlayObserver?.disconnect();\n overflow.clear();\n observed.clear();\n pairings = [];\n fadeEdges();\n CONTROLLERS.delete(ownerDocument);\n }\n };\n };\n}\n"]}
@@ -0,0 +1,147 @@
1
+ import { NavStack } from './chunk-SOFPUW3O.js';
2
+ import { ResizableRegion } from './chunk-Y6KT7ZTR.js';
3
+ import { remify, pct } from './chunk-IQSRHXZR.js';
4
+ import { jsx, jsxs } from 'kerfjs/jsx-runtime';
5
+
6
+ function listWidthValue(listWidth) {
7
+ const { size, maxFraction } = typeof listWidth === "number" ? { size: listWidth, maxFraction: void 0 } : listWidth;
8
+ if (!Number.isFinite(size) || size <= 0)
9
+ throw new RangeError(
10
+ "SplitView listWidth size must be a positive number of pixels"
11
+ );
12
+ if (maxFraction !== void 0 && (!Number.isFinite(maxFraction) || maxFraction <= 0 || maxFraction > 1))
13
+ throw new RangeError(
14
+ "SplitView listWidth maxFraction must be greater than 0 and at most 1"
15
+ );
16
+ const preferred = remify(size);
17
+ return maxFraction === void 0 ? preferred : `min(${preferred}, ${pct(maxFraction * 100)})`;
18
+ }
19
+ function SplitView({
20
+ id,
21
+ label,
22
+ list,
23
+ detail,
24
+ compact = false,
25
+ detailActive = false,
26
+ listTitle = "",
27
+ detailTitle = "",
28
+ backLabel = "Back",
29
+ compactStack = {},
30
+ resizable,
31
+ listWidth,
32
+ className = "",
33
+ slot
34
+ }) {
35
+ if (listWidth !== void 0 && resizable)
36
+ throw new RangeError(
37
+ "SplitView listWidth applies to a fixed split; size a resizable list with resizable.size, min, and max"
38
+ );
39
+ const listWidthStyle = listWidth === void 0 ? void 0 : `--kui-split-view-list-width:${listWidthValue(listWidth)}`;
40
+ if (compact) {
41
+ const listView = {
42
+ ...compactStack.list,
43
+ key: "list",
44
+ toolbar: { ...compactStack.list?.toolbar, title: listTitle },
45
+ content: list
46
+ };
47
+ const views = detailActive ? [
48
+ listView,
49
+ {
50
+ ...compactStack.detail,
51
+ key: "detail",
52
+ toolbar: { ...compactStack.detail?.toolbar, title: detailTitle },
53
+ content: detail
54
+ }
55
+ ] : [listView];
56
+ return /* @__PURE__ */ jsx(
57
+ "div",
58
+ {
59
+ class: `kui-split-view kui-split-view--compact ${className}`.trim(),
60
+ id,
61
+ "data-component": "split-view",
62
+ "data-split-mode": "compact",
63
+ slot,
64
+ children: /* @__PURE__ */ jsx(
65
+ NavStack,
66
+ {
67
+ id: `${id}-stack`,
68
+ label,
69
+ views,
70
+ backLabel,
71
+ backIcon: compactStack.backIcon,
72
+ backText: compactStack.backText,
73
+ toolbarConfig: compactStack.toolbarConfig,
74
+ hideToolbar: compactStack.hideToolbar,
75
+ bottomToolbar: compactStack.bottomToolbar,
76
+ chromeDividers: compactStack.chromeDividers,
77
+ chromePresentation: compactStack.chromePresentation,
78
+ bottomToolbarPresentation: compactStack.bottomToolbarPresentation
79
+ }
80
+ )
81
+ }
82
+ );
83
+ }
84
+ const listPane = resizable ? /* @__PURE__ */ jsx(
85
+ ResizableRegion,
86
+ {
87
+ id: `${id}-list`,
88
+ label: listTitle || "List",
89
+ size: resizable.size,
90
+ min: resizable.min,
91
+ max: resizable.max,
92
+ separator: resizable.separator,
93
+ handleIcon: resizable.handleIcon,
94
+ contentOverflow: resizable.contentOverflow,
95
+ collapsed: resizable.collapsed,
96
+ transitioning: resizable.transitioning,
97
+ collapseMotion: resizable.collapseMotion,
98
+ restoreControl: resizable.restoreControl,
99
+ restorePosition: resizable.restorePosition,
100
+ children: /* @__PURE__ */ jsx(
101
+ "div",
102
+ {
103
+ class: "kui-split-view__list kui-pane",
104
+ "data-split-list": true,
105
+ "data-resizable": "true",
106
+ children: list
107
+ }
108
+ )
109
+ }
110
+ ) : /* @__PURE__ */ jsx(
111
+ "div",
112
+ {
113
+ class: "kui-split-view__list kui-pane",
114
+ "data-split-list": true,
115
+ "data-resizable": "false",
116
+ children: list
117
+ }
118
+ );
119
+ return /* @__PURE__ */ jsxs(
120
+ "div",
121
+ {
122
+ class: `kui-split-view ${className}`.trim(),
123
+ id,
124
+ "data-component": "split-view",
125
+ "data-split-mode": "split",
126
+ "aria-label": label,
127
+ style: listWidthStyle,
128
+ slot,
129
+ children: [
130
+ listPane,
131
+ /* @__PURE__ */ jsx(
132
+ "div",
133
+ {
134
+ class: "kui-split-view__detail kui-pane",
135
+ "data-split-detail": true,
136
+ "aria-label": detailTitle || void 0,
137
+ children: detail
138
+ }
139
+ )
140
+ ]
141
+ }
142
+ );
143
+ }
144
+
145
+ export { SplitView };
146
+
147
+ //# sourceMappingURL=chunk-P7EJ4CAD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/layout/split-view/split-view.tsx"],"names":[],"mappings":"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","file":"chunk-P7EJ4CAD.js","sourcesContent":["import type { KerfUiContent } from '../../../shared/content/semantic-content.js';\nimport { pct, remify } from '../../../shared/styles/css-values.js';\nimport {\n NavStack,\n type NavStackProps,\n type NavStackView,\n} from '../../navigation/nav-stack/nav-stack.js';\nimport {\n ResizableRegion,\n type ResizableRegionProps,\n} from '../resizable-region/resizable-region.js';\n\n/**\n * The roomy list pane's `ResizableRegion`: its committed `size` and `min` /\n * `max` limits, plus the region configuration that forwards unchanged\n * (`separator`, `handleIcon`, `contentOverflow`, and collapse:\n * `collapsed`, `transitioning`, `collapseMotion`, `restoreControl`,\n * `restorePosition`). Omitted options keep the region's defaults.\n */\nexport interface SplitViewResizable extends Pick<\n ResizableRegionProps,\n | 'separator'\n | 'handleIcon'\n | 'contentOverflow'\n | 'collapsed'\n | 'transitioning'\n | 'collapseMotion'\n | 'restoreControl'\n | 'restorePosition'\n> {\n size: number;\n min: number;\n max: number;\n}\n\n/**\n * One compact view's top- and bottom-toolbar content and pinned footer (see\n * `NavStackView`).\n */\nexport type SplitViewCompactViewToolbars = Pick<\n NavStackView,\n 'toolbar' | 'bottomToolbar' | 'footer'\n>;\n\n/**\n * The compact `NavStack`'s configuration: its toolbar configuration, back\n * control, persistent bottom toolbar, chrome dividers, and chrome and\n * bottom-toolbar presentations forward to the stack, and `list` / `detail`\n * give each view its own toolbar groups.\n */\nexport interface SplitViewCompactStack extends Pick<\n NavStackProps,\n | 'toolbarConfig'\n | 'backIcon'\n | 'backText'\n | 'hideToolbar'\n | 'bottomToolbar'\n | 'chromeDividers'\n | 'chromePresentation'\n | 'bottomToolbarPresentation'\n> {\n /** Toolbar content for the list (root) view. */\n list?: SplitViewCompactViewToolbars;\n /** Toolbar content for the pushed detail view. */\n detail?: SplitViewCompactViewToolbars;\n}\n\n/**\n * The fixed list column's width: a size in CSS pixels, or that size capped\n * at a fraction of the SplitView's own width so a narrow container (a\n * dialog, a small window) always leaves the detail in view.\n */\nexport type SplitViewListWidth =\n | number\n | {\n /** Preferred width in CSS pixels. */\n size: number;\n /** Largest share of the SplitView's width, greater than 0 and at most 1. */\n maxFraction?: number;\n };\n\n/** The list-width custom property value for a fixed split. */\nfunction listWidthValue(listWidth: SplitViewListWidth): string {\n const { size, maxFraction } =\n typeof listWidth === 'number'\n ? { size: listWidth, maxFraction: undefined }\n : listWidth;\n if (!Number.isFinite(size) || size <= 0)\n throw new RangeError(\n 'SplitView listWidth size must be a positive number of pixels',\n );\n if (\n maxFraction !== undefined &&\n (!Number.isFinite(maxFraction) || maxFraction <= 0 || maxFraction > 1)\n )\n throw new RangeError(\n 'SplitView listWidth maxFraction must be greater than 0 and at most 1',\n );\n const preferred = remify(size);\n return maxFraction === undefined\n ? preferred\n : `min(${preferred}, ${pct(maxFraction * 100)})`;\n}\n\nexport interface SplitViewProps {\n id: string;\n label: string;\n /** The list (primary) pane. */\n list: KerfUiContent;\n /** The detail (secondary) pane. */\n detail: KerfUiContent;\n /**\n * Compact (\"one pane at a time\") classes — a handset or portrait tablet.\n * Derive from `deviceClass().value.compact`. When true the split collapses to\n * a `NavStack`: the list is the root and the detail is pushed over it.\n */\n compact?: boolean;\n /** In compact mode, whether the detail is currently pushed over the list. */\n detailActive?: boolean;\n /** Title/label for the list (compact NavStack root + region label). */\n listTitle?: string;\n /** Title/label for the detail (compact NavStack pushed view + region label). */\n detailTitle?: string;\n /** Back label for the compact NavStack (default \"Back\"). */\n backLabel?: string;\n /** Compact NavStack configuration and per-view toolbars. */\n compactStack?: SplitViewCompactStack;\n /** A resizable separator on roomy classes (min/max px). Omit for a fixed split. */\n resizable?: SplitViewResizable;\n /**\n * The fixed split's list column width (default 320px). A number is CSS\n * pixels; `{ size, maxFraction }` caps it at that share of the SplitView's\n * width. A resizable split sizes its list with `resizable` instead.\n */\n listWidth?: SplitViewListWidth;\n className?: string;\n /** Native named-slot assignment when composed inside a web component. */\n slot?: string;\n}\n\n/**\n * A list-detail split. On roomy classes it shows both panes side\n * by side with an optional resizable separator; on compact classes it collapses\n * to a `NavStack` (list → detail). See `docs/23-app-layouts.md` §3.2. Compose the\n * resizable wiring with `wireResizableRegions` and the compact back with\n * `wireNavStack`.\n */\nexport function SplitView({\n id,\n label,\n list,\n detail,\n compact = false,\n detailActive = false,\n listTitle = '',\n detailTitle = '',\n backLabel = 'Back',\n compactStack = {},\n resizable,\n listWidth,\n className = '',\n slot,\n}: SplitViewProps) {\n if (listWidth !== undefined && resizable)\n throw new RangeError(\n 'SplitView listWidth applies to a fixed split; size a resizable list with resizable.size, min, and max',\n );\n const listWidthStyle =\n listWidth === undefined\n ? undefined\n : `--kui-split-view-list-width:${listWidthValue(listWidth)}`;\n if (compact) {\n const listView: NavStackView = {\n ...compactStack.list,\n key: 'list',\n toolbar: { ...compactStack.list?.toolbar, title: listTitle },\n content: list,\n };\n const views: NavStackView[] = detailActive\n ? [\n listView,\n {\n ...compactStack.detail,\n key: 'detail',\n toolbar: { ...compactStack.detail?.toolbar, title: detailTitle },\n content: detail,\n },\n ]\n : [listView];\n return (\n <div\n class={`kui-split-view kui-split-view--compact ${className}`.trim()}\n id={id}\n data-component=\"split-view\"\n data-split-mode=\"compact\"\n slot={slot}\n >\n <NavStack\n id={`${id}-stack`}\n label={label}\n views={views}\n backLabel={backLabel}\n backIcon={compactStack.backIcon}\n backText={compactStack.backText}\n toolbarConfig={compactStack.toolbarConfig}\n hideToolbar={compactStack.hideToolbar}\n bottomToolbar={compactStack.bottomToolbar}\n chromeDividers={compactStack.chromeDividers}\n chromePresentation={compactStack.chromePresentation}\n bottomToolbarPresentation={compactStack.bottomToolbarPresentation}\n />\n </div>\n );\n }\n const listPane = resizable ? (\n <ResizableRegion\n id={`${id}-list`}\n label={listTitle || 'List'}\n size={resizable.size}\n min={resizable.min}\n max={resizable.max}\n separator={resizable.separator}\n handleIcon={resizable.handleIcon}\n contentOverflow={resizable.contentOverflow}\n collapsed={resizable.collapsed}\n transitioning={resizable.transitioning}\n collapseMotion={resizable.collapseMotion}\n restoreControl={resizable.restoreControl}\n restorePosition={resizable.restorePosition}\n >\n <div\n class=\"kui-split-view__list kui-pane\"\n data-split-list\n data-resizable=\"true\"\n >\n {list}\n </div>\n </ResizableRegion>\n ) : (\n <div\n class=\"kui-split-view__list kui-pane\"\n data-split-list\n data-resizable=\"false\"\n >\n {list}\n </div>\n );\n return (\n <div\n class={`kui-split-view ${className}`.trim()}\n id={id}\n data-component=\"split-view\"\n data-split-mode=\"split\"\n aria-label={label}\n style={listWidthStyle}\n slot={slot}\n >\n {listPane}\n <div\n class=\"kui-split-view__detail kui-pane\"\n data-split-detail\n aria-label={detailTitle || undefined}\n >\n {detail}\n </div>\n </div>\n );\n}\n"]}
@@ -0,0 +1,28 @@
1
+ // src/components/collections/list/wiring/wire-list-focus-scroll.ts
2
+ var SCROLLABLE_LIST = '[data-component="list"][data-scrollable="true"]';
3
+ var TOLERANCE = 0.5;
4
+ function ringCrossesClip(element, list) {
5
+ const style = globalThis.getComputedStyle(element);
6
+ const reach = style.outlineStyle === "none" ? 0 : (Number.parseFloat(style.outlineWidth) || 0) + (Number.parseFloat(style.outlineOffset) || 0);
7
+ const box = element.getBoundingClientRect();
8
+ const clipTop = list.getBoundingClientRect().top + (Number.parseFloat(globalThis.getComputedStyle(list).borderTopWidth) || 0);
9
+ const clipBottom = clipTop + list.clientHeight;
10
+ return box.top - reach < clipTop - TOLERANCE || box.bottom + reach > clipBottom + TOLERANCE;
11
+ }
12
+ function wireListFocusScroll(root) {
13
+ const onFocusIn = (event) => {
14
+ const target = event.target;
15
+ if (!(target instanceof HTMLElement) || !target.matches(":focus-visible"))
16
+ return;
17
+ const list = target.closest(SCROLLABLE_LIST);
18
+ if (list === null || list === target || !ringCrossesClip(target, list))
19
+ return;
20
+ target.scrollIntoView({ block: "nearest", inline: "nearest" });
21
+ };
22
+ root.addEventListener("focusin", onFocusIn);
23
+ return () => root.removeEventListener("focusin", onFocusIn);
24
+ }
25
+
26
+ export { wireListFocusScroll };
27
+
28
+ //# sourceMappingURL=chunk-QDSZTQXL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/collections/list/wiring/wire-list-focus-scroll.ts"],"names":[],"mappings":";AAEA,IAAM,eAAA,GAAkB,iDAAA;AAMxB,IAAM,SAAA,GAAY,GAAA;AAOlB,SAAS,eAAA,CAAgB,SAAsB,IAAA,EAA4B;AACzE,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,gBAAA,CAAiB,OAAO,CAAA;AACjD,EAAA,MAAM,KAAA,GACJ,KAAA,CAAM,YAAA,KAAiB,MAAA,GACnB,KACC,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,YAAY,KAAK,CAAA,KACzC,MAAA,CAAO,UAAA,CAAW,KAAA,CAAM,aAAa,CAAA,IAAK,CAAA,CAAA;AACjD,EAAA,MAAM,GAAA,GAAM,QAAQ,qBAAA,EAAsB;AAC1C,EAAA,MAAM,OAAA,GACJ,IAAA,CAAK,qBAAA,EAAsB,CAAE,GAAA,IAC5B,MAAA,CAAO,UAAA,CAAW,UAAA,CAAW,gBAAA,CAAiB,IAAI,CAAA,CAAE,cAAc,CAAA,IAAK,CAAA,CAAA;AAC1E,EAAA,MAAM,UAAA,GAAa,UAAU,IAAA,CAAK,YAAA;AAClC,EAAA,OACE,GAAA,CAAI,MAAM,KAAA,GAAQ,OAAA,GAAU,aAC5B,GAAA,CAAI,MAAA,GAAS,QAAQ,UAAA,GAAa,SAAA;AAEtC;AAcO,SAAS,oBAAoB,IAAA,EAAwB;AAC1D,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAsB;AACvC,IAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,IAAA,IAAI,EAAE,MAAA,YAAkB,WAAA,CAAA,IAAgB,CAAC,MAAA,CAAO,QAAQ,gBAAgB,CAAA;AACtE,MAAA;AACF,IAAA,MAAM,IAAA,GAAO,MAAA,CAAO,OAAA,CAAqB,eAAe,CAAA;AACxD,IAAA,IAAI,SAAS,IAAA,IAAQ,IAAA,KAAS,UAAU,CAAC,eAAA,CAAgB,QAAQ,IAAI,CAAA;AACnE,MAAA;AACF,IAAA,MAAA,CAAO,eAAe,EAAE,KAAA,EAAO,SAAA,EAAW,MAAA,EAAQ,WAAW,CAAA;AAAA,EAC/D,CAAA;AACA,EAAA,IAAA,CAAK,gBAAA,CAAiB,WAAW,SAA0B,CAAA;AAC3D,EAAA,OAAO,MAAM,IAAA,CAAK,mBAAA,CAAoB,SAAA,EAAW,SAA0B,CAAA;AAC7E","file":"chunk-QDSZTQXL.js","sourcesContent":["type Root = HTMLElement | Document;\n\nconst SCROLLABLE_LIST = '[data-component=\"list\"][data-scrollable=\"true\"]';\n\n/**\n * Sub-pixel slack, in px: a row resting exactly on the clip (a fractional\n * layout position) is not worth a scroll.\n */\nconst TOLERANCE = 0.5;\n\n/**\n * Whether `element`'s focus ring (its border box grown by the outline's width\n * and offset) crosses the block edges of `list`'s scroll clip (its padding\n * box).\n */\nfunction ringCrossesClip(element: HTMLElement, list: HTMLElement): boolean {\n const style = globalThis.getComputedStyle(element);\n const reach =\n style.outlineStyle === 'none'\n ? 0\n : (Number.parseFloat(style.outlineWidth) || 0) +\n (Number.parseFloat(style.outlineOffset) || 0);\n const box = element.getBoundingClientRect();\n const clipTop =\n list.getBoundingClientRect().top +\n (Number.parseFloat(globalThis.getComputedStyle(list).borderTopWidth) || 0);\n const clipBottom = clipTop + list.clientHeight;\n return (\n box.top - reach < clipTop - TOLERANCE ||\n box.bottom + reach > clipBottom + TOLERANCE\n );\n}\n\n/**\n * Bring a keyboard-focused row of a `scrollable` List below `root` fully into\n * view, focus ring included. Engines differ on how `focus()` scrolls a partly\n * hidden row: Chromium scrolls it to the nearest edge plus scroll padding,\n * Firefox waits until about half of it is hidden and then centers it, and\n * WebKit leaves it where it is. On `focusin`, when the newly focused element\n * matches `:focus-visible` and its ring crosses the nearest scrollable List's\n * clip, this calls `scrollIntoView({ block: 'nearest', inline: 'nearest' })`,\n * which honors the List's ring-room scroll padding in every engine. Pointer\n * focus is left alone, so a click never scrolls the row out from under the\n * pointer. Returns a disposer.\n */\nexport function wireListFocusScroll(root: Root): () => void {\n const onFocusIn = (event: FocusEvent) => {\n const target = event.target;\n if (!(target instanceof HTMLElement) || !target.matches(':focus-visible'))\n return;\n const list = target.closest<HTMLElement>(SCROLLABLE_LIST);\n if (list === null || list === target || !ringCrossesClip(target, list))\n return;\n target.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n };\n root.addEventListener('focusin', onFocusIn as EventListener);\n return () => root.removeEventListener('focusin', onFocusIn as EventListener);\n}\n"]}
@@ -0,0 +1,39 @@
1
+ import { jsxs, jsx } from 'kerfjs/jsx-runtime';
2
+
3
+ // src/components/feedback/edge-activity-indicator/edge-activity-indicator.tsx
4
+ function EdgeActivityIndicator({
5
+ busy,
6
+ message,
7
+ tone = "info",
8
+ inset = "safe-area",
9
+ className = ""
10
+ }) {
11
+ const showMessage = busy && Boolean(message?.trim());
12
+ return /* @__PURE__ */ jsxs(
13
+ "div",
14
+ {
15
+ class: `kui-edge-activity-indicator ${className}`.trim(),
16
+ "data-component": "edge-activity-indicator",
17
+ "data-tone": tone,
18
+ "data-busy": busy ? "true" : "false",
19
+ "data-inset": inset,
20
+ children: [
21
+ /* @__PURE__ */ jsx("div", { class: "kui-edge-activity-indicator__strip", "aria-hidden": "true" }),
22
+ message !== void 0 && /* @__PURE__ */ jsx(
23
+ "div",
24
+ {
25
+ class: "kui-edge-activity-indicator__message",
26
+ role: "status",
27
+ "aria-live": "polite",
28
+ "data-visible": showMessage ? "true" : "false",
29
+ children: showMessage ? message : ""
30
+ }
31
+ )
32
+ ]
33
+ }
34
+ );
35
+ }
36
+
37
+ export { EdgeActivityIndicator };
38
+
39
+ //# sourceMappingURL=chunk-QH5KOFNS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/feedback/edge-activity-indicator/edge-activity-indicator.tsx"],"names":[],"mappings":";;;AAyBO,SAAS,qBAAA,CAAsB;AAAA,EACpC,IAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA,GAAO,MAAA;AAAA,EACP,KAAA,GAAQ,WAAA;AAAA,EACR,SAAA,GAAY;AACd,CAAA,EAA+B;AAC7B,EAAA,MAAM,WAAA,GAAc,IAAA,IAAQ,OAAA,CAAQ,OAAA,EAAS,MAAM,CAAA;AACnD,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,CAAA,4BAAA,EAA+B,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,MACvD,gBAAA,EAAe,yBAAA;AAAA,MACf,WAAA,EAAW,IAAA;AAAA,MACX,WAAA,EAAW,OAAO,MAAA,GAAS,OAAA;AAAA,MAC3B,YAAA,EAAY,KAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,oCAAA,EAAqC,aAAA,EAAY,MAAA,EAAO,CAAA;AAAA,QAClE,YAAY,MAAA,oBACX,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,sCAAA;AAAA,YACN,IAAA,EAAK,QAAA;AAAA,YACL,WAAA,EAAU,QAAA;AAAA,YACV,cAAA,EAAc,cAAc,MAAA,GAAS,OAAA;AAAA,YAEpC,wBAAc,OAAA,GAAU;AAAA;AAAA;AAC3B;AAAA;AAAA,GAEJ;AAEJ","file":"chunk-QH5KOFNS.js","sourcesContent":["import type { SemanticTone } from '../../../shared/styles/semantic-tone.js';\n\nexport interface EdgeActivityIndicatorProps {\n /** Whether work is in progress; shows the strip and runs its wave. */\n busy: boolean;\n /**\n * Optional status shown in a small pill hanging from the edge while busy.\n * The pill is a polite live region; omit it for a purely decorative strip.\n */\n message?: string;\n /** Strip and pill color; defaults to `info`. */\n tone?: SemanticTone;\n /** Clear the device's top safe area (default) or sit at the very edge. */\n inset?: 'safe-area' | 'none';\n className?: string;\n}\n\n/**\n * A layout-free activity strip pinned to the top edge of the viewport: a row\n * of thin bars that ripple in a traveling wave while `busy`, plus an optional\n * hanging status pill. It allocates no layout, ignores the pointer, and its\n * bars are hidden from assistive technology; only the pill announces.\n * Kerf owns the motion: it scales in from the edge and, under reduced motion,\n * only fades.\n */\nexport function EdgeActivityIndicator({\n busy,\n message,\n tone = 'info',\n inset = 'safe-area',\n className = '',\n}: EdgeActivityIndicatorProps) {\n const showMessage = busy && Boolean(message?.trim());\n return (\n <div\n class={`kui-edge-activity-indicator ${className}`.trim()}\n data-component=\"edge-activity-indicator\"\n data-tone={tone}\n data-busy={busy ? 'true' : 'false'}\n data-inset={inset}\n >\n <div class=\"kui-edge-activity-indicator__strip\" aria-hidden=\"true\" />\n {message !== undefined && (\n <div\n class=\"kui-edge-activity-indicator__message\"\n role=\"status\"\n aria-live=\"polite\"\n data-visible={showMessage ? 'true' : 'false'}\n >\n {showMessage ? message : ''}\n </div>\n )}\n </div>\n );\n}\n"]}
@@ -0,0 +1,87 @@
1
+ // src/components/surfaces/surface-scaffold/internal/sheet-handle.ts
2
+ var STEP = 16;
3
+ var PAGE_STEP = 64;
4
+ function createSheetHandle(attributes) {
5
+ const handle = document.createElement("div");
6
+ for (const [name, value] of Object.entries(attributes))
7
+ handle.setAttribute(name, value);
8
+ handle.setAttribute("role", "separator");
9
+ handle.setAttribute("aria-orientation", "horizontal");
10
+ handle.setAttribute("aria-label", "Resize sheet");
11
+ handle.tabIndex = 0;
12
+ return handle;
13
+ }
14
+ function wireSheetHandle(handle, target) {
15
+ const onFocus = () => syncSheetHandleValues(handle, target.panel);
16
+ const onKeydown = (event) => {
17
+ if (!target.enabled()) return;
18
+ const { min, max } = bounds(target.panel);
19
+ const current = target.panel.getBoundingClientRect().height;
20
+ const next = {
21
+ ArrowUp: current + STEP,
22
+ ArrowDown: current - STEP,
23
+ PageUp: current + PAGE_STEP,
24
+ PageDown: current - PAGE_STEP,
25
+ Home: min,
26
+ End: max
27
+ }[event.key];
28
+ if (next === void 0) return;
29
+ event.preventDefault();
30
+ resizeTo(handle, target, next);
31
+ };
32
+ const onPointerdown = (event) => {
33
+ if (!target.enabled() || event.button !== 0) return;
34
+ event.preventDefault();
35
+ const startY = event.clientY;
36
+ const start = target.panel.getBoundingClientRect().height;
37
+ handle.setPointerCapture?.(event.pointerId);
38
+ const move = (moveEvent) => resizeTo(handle, target, start - (moveEvent.clientY - startY));
39
+ const end = () => {
40
+ handle.removeEventListener("pointermove", move);
41
+ handle.removeEventListener("pointerup", end);
42
+ handle.removeEventListener("pointercancel", end);
43
+ };
44
+ handle.addEventListener("pointermove", move);
45
+ handle.addEventListener("pointerup", end);
46
+ handle.addEventListener("pointercancel", end);
47
+ };
48
+ handle.addEventListener("focus", onFocus);
49
+ handle.addEventListener("keydown", onKeydown);
50
+ handle.addEventListener("pointerdown", onPointerdown);
51
+ return () => {
52
+ handle.removeEventListener("focus", onFocus);
53
+ handle.removeEventListener("keydown", onKeydown);
54
+ handle.removeEventListener("pointerdown", onPointerdown);
55
+ };
56
+ }
57
+ function bounds(panel) {
58
+ const style = globalThis.getComputedStyle(panel);
59
+ const clearance = parseFloat(style.paddingBlockEnd) || 0;
60
+ const min = parseFloat(style.minHeight) || 0;
61
+ const max = parseFloat(style.maxHeight);
62
+ return {
63
+ min,
64
+ max: Number.isFinite(max) ? max : globalThis.innerHeight,
65
+ clearance
66
+ };
67
+ }
68
+ function resizeTo(handle, target, height) {
69
+ const { panel, host, property, publish } = target;
70
+ const { min, max, clearance } = bounds(panel);
71
+ const clamped = Math.min(max, Math.max(min, Math.round(height)));
72
+ const value = `${Math.max(0, clamped - clearance)}px`;
73
+ if (publish) publish(value);
74
+ else host.style.setProperty(property, value);
75
+ syncSheetHandleValues(handle, panel, clamped);
76
+ }
77
+ function syncSheetHandleValues(handle, panel, height = panel.getBoundingClientRect().height) {
78
+ const { min, max, clearance } = bounds(panel);
79
+ const visible = (value) => String(Math.max(0, Math.round(value - clearance)));
80
+ handle.setAttribute("aria-valuemin", visible(min));
81
+ handle.setAttribute("aria-valuemax", visible(max));
82
+ handle.setAttribute("aria-valuenow", visible(height));
83
+ }
84
+
85
+ export { createSheetHandle, syncSheetHandleValues, wireSheetHandle };
86
+
87
+ //# sourceMappingURL=chunk-QPTJ5DOO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/surfaces/surface-scaffold/internal/sheet-handle.ts"],"names":[],"mappings":"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","file":"chunk-QPTJ5DOO.js","sourcesContent":["/**\n * The bottom-sheet resize grabber shared by `DialogSurface` and the core\n * `kerfjs/overlay` sheets `wireOverlaySheets` wires: a `role=\"separator\"`\n * that resizes a sheet's visible height by drag or keyboard, between the\n * sheet's computed `min-height` and `max-height`, and reports that height in\n * its ARIA values. The sheet's height rule reads the published property and\n * adds back its block-end clearance.\n */\n\n/** Arrow-key step, and the Page Up/Down step, in px. */\nconst STEP = 16;\nconst PAGE_STEP = 64;\n\n/** Where a grabber reads its bounds and publishes the resized height. */\nexport interface SheetHandleTarget {\n /** The sheet whose border box is measured and bounded, read at each event. */\n panel: HTMLElement;\n /** The element the visible height is published on (the panel or an ancestor). */\n host: HTMLElement;\n /** The custom property holding the visible height. */\n property: string;\n /** False while the sheet is not resizable: input is ignored. */\n enabled: () => boolean;\n /**\n * Publish the visible height in place of setting `property` on `host`\n * directly (a DialogSurface keeps it across re-renders).\n */\n publish?: (value: string) => void;\n}\n\n/** Create an unattached grabber element with its separator semantics. */\nexport function createSheetHandle(\n attributes: Record<string, string>,\n): HTMLElement {\n const handle = document.createElement('div');\n for (const [name, value] of Object.entries(attributes))\n handle.setAttribute(name, value);\n handle.setAttribute('role', 'separator');\n handle.setAttribute('aria-orientation', 'horizontal');\n handle.setAttribute('aria-label', 'Resize sheet');\n handle.tabIndex = 0;\n return handle;\n}\n\n/** Wire a grabber's focus, keyboard, and pointer resizing. Returns a disposer. */\nexport function wireSheetHandle(\n handle: HTMLElement,\n target: SheetHandleTarget,\n): () => void {\n const onFocus = (): void => syncSheetHandleValues(handle, target.panel);\n const onKeydown = (event: KeyboardEvent): void => {\n if (!target.enabled()) return;\n const { min, max } = bounds(target.panel);\n const current = target.panel.getBoundingClientRect().height;\n const next = {\n ArrowUp: current + STEP,\n ArrowDown: current - STEP,\n PageUp: current + PAGE_STEP,\n PageDown: current - PAGE_STEP,\n Home: min,\n End: max,\n }[event.key];\n if (next === undefined) return;\n event.preventDefault();\n resizeTo(handle, target, next);\n };\n const onPointerdown = (event: PointerEvent): void => {\n if (!target.enabled() || event.button !== 0) return;\n event.preventDefault();\n const startY = event.clientY;\n const start = target.panel.getBoundingClientRect().height;\n handle.setPointerCapture?.(event.pointerId);\n const move = (moveEvent: PointerEvent): void =>\n resizeTo(handle, target, start - (moveEvent.clientY - startY));\n const end = (): void => {\n handle.removeEventListener('pointermove', move);\n handle.removeEventListener('pointerup', end);\n handle.removeEventListener('pointercancel', end);\n };\n handle.addEventListener('pointermove', move);\n handle.addEventListener('pointerup', end);\n handle.addEventListener('pointercancel', end);\n };\n handle.addEventListener('focus', onFocus);\n handle.addEventListener('keydown', onKeydown);\n handle.addEventListener('pointerdown', onPointerdown);\n return () => {\n handle.removeEventListener('focus', onFocus);\n handle.removeEventListener('keydown', onKeydown);\n handle.removeEventListener('pointerdown', onPointerdown);\n };\n}\n\n/** The panel's resolved border-box bounds and block-end clearance, in px. */\nfunction bounds(panel: HTMLElement): {\n min: number;\n max: number;\n clearance: number;\n} {\n const style = globalThis.getComputedStyle(panel);\n const clearance = parseFloat(style.paddingBlockEnd) || 0;\n const min = parseFloat(style.minHeight) || 0;\n const max = parseFloat(style.maxHeight);\n return {\n min,\n max: Number.isFinite(max) ? max : globalThis.innerHeight,\n clearance,\n };\n}\n\n/** Resize to a border-box height, published as the visible height above the clearance. */\nfunction resizeTo(\n handle: Element,\n target: SheetHandleTarget,\n height: number,\n): void {\n const { panel, host, property, publish } = target;\n const { min, max, clearance } = bounds(panel);\n const clamped = Math.min(max, Math.max(min, Math.round(height)));\n const value = `${Math.max(0, clamped - clearance)}px`;\n if (publish) publish(value);\n else host.style.setProperty(property, value);\n syncSheetHandleValues(handle, panel, clamped);\n}\n\n/** Separator values in visible (content) px, as a ResizableRegion reports them. */\nexport function syncSheetHandleValues(\n handle: Element,\n panel: HTMLElement,\n height = panel.getBoundingClientRect().height,\n): void {\n const { min, max, clearance } = bounds(panel);\n const visible = (value: number) =>\n String(Math.max(0, Math.round(value - clearance)));\n handle.setAttribute('aria-valuemin', visible(min));\n handle.setAttribute('aria-valuemax', visible(max));\n handle.setAttribute('aria-valuenow', visible(height));\n}\n"]}
@@ -0,0 +1,36 @@
1
+ import { filterRootAttributes } from './chunk-KH4KEMSP.js';
2
+ import { jsx } from 'kerfjs/jsx-runtime';
3
+
4
+ var columnTrackProtected = /* @__PURE__ */ new Set(["data-component", "data-layout"]);
5
+ function ColumnTrack({
6
+ children,
7
+ layout = "scroll",
8
+ minColumnWidth,
9
+ peek,
10
+ id,
11
+ className = "",
12
+ rootAttributes = {},
13
+ slot
14
+ }) {
15
+ const style = [
16
+ minColumnWidth === void 0 ? "" : `--_kui-column-track-min-width:${minColumnWidth}`,
17
+ peek === void 0 ? "" : `--_kui-column-track-peek:${peek}`
18
+ ].filter(Boolean).join(";");
19
+ return /* @__PURE__ */ jsx(
20
+ "div",
21
+ {
22
+ ...filterRootAttributes(rootAttributes, columnTrackProtected),
23
+ id,
24
+ class: `kui-column-track ${className}`.trim(),
25
+ "data-component": "column-track",
26
+ "data-layout": layout,
27
+ style: style || void 0,
28
+ slot,
29
+ children: /* @__PURE__ */ jsx("div", { class: "kui-column-track__columns", children })
30
+ }
31
+ );
32
+ }
33
+
34
+ export { ColumnTrack };
35
+
36
+ //# sourceMappingURL=chunk-QYMJHS4K.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/layout/column-track/column-track.tsx"],"names":[],"mappings":";;;AAUA,IAAM,uCAAuB,IAAI,GAAA,CAAI,CAAC,gBAAA,EAAkB,aAAa,CAAC,CAAA;AAiC/D,SAAS,WAAA,CAAY;AAAA,EAC1B,QAAA;AAAA,EACA,MAAA,GAAS,QAAA;AAAA,EACT,cAAA;AAAA,EACA,IAAA;AAAA,EACA,EAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,iBAAiB,EAAC;AAAA,EAClB;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,KAAA,GAAQ;AAAA,IACZ,cAAA,KAAmB,MAAA,GACf,EAAA,GACA,CAAA,8BAAA,EAAiC,cAAc,CAAA,CAAA;AAAA,IACnD,IAAA,KAAS,MAAA,GAAY,EAAA,GAAK,CAAA,yBAAA,EAA4B,IAAI,CAAA;AAAA,GAC5D,CACG,MAAA,CAAO,OAAO,CAAA,CACd,KAAK,GAAG,CAAA;AACX,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,oBAAA,CAAqB,cAAA,EAAgB,oBAAoB,CAAA;AAAA,MAC7D,EAAA;AAAA,MACA,KAAA,EAAO,CAAA,iBAAA,EAAoB,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,MAC5C,gBAAA,EAAe,cAAA;AAAA,MACf,aAAA,EAAa,MAAA;AAAA,MACb,OAAO,KAAA,IAAS,MAAA;AAAA,MAChB,IAAA;AAAA,MAEA,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,KAAA,EAAM,2BAAA,EAA6B,QAAA,EAAS;AAAA;AAAA,GACnD;AAEJ","file":"chunk-QYMJHS4K.js","sourcesContent":["import type { KerfUiContent } from '../../../shared/content/semantic-content.js';\nimport {\n filterRootAttributes,\n type StructuralRootAttributes,\n} from '../../../shared/dom/extension-attributes.js';\nimport type { CssLength } from '../../../shared/styles/css-values.js';\n\n/** `scroll` keeps equal min-width columns; `paged` shows one near-full-width column per page. */\nexport type ColumnTrackLayout = 'scroll' | 'paged';\n\nconst columnTrackProtected = new Set(['data-component', 'data-layout']);\n\ntype ColumnTrackRootAttributes = StructuralRootAttributes &\n Readonly<{ 'data-component'?: never; 'data-layout'?: never }>;\n\nexport interface ColumnTrackProps {\n /** The columns, in order; each owns its own inset and scrolling. */\n children: KerfUiContent;\n /**\n * `scroll` (default): equal columns that never shrink below\n * `minColumnWidth`, so a narrow track scrolls sideways instead of crushing\n * them. `paged`: each column is nearly the visible width, the next one peeks\n * in, and scrolling snaps to column starts.\n */\n layout?: ColumnTrackLayout;\n /** Narrowest a `scroll` column gets before the track scrolls; default 250px. */\n minColumnWidth?: CssLength;\n /** How much of the next column a `paged` track shows; default 24px. */\n peek?: CssLength;\n id?: string;\n className?: string;\n /** Safe `data-*`, `aria-*`, and structural `role` metadata on the scroller. */\n rootAttributes?: ColumnTrackRootAttributes;\n /** Native named-slot assignment when composed inside a web component. */\n slot?: string;\n}\n\n/**\n * A horizontal track of columns (a kanban board): the track is the sideways\n * scroll owner and fills its parent's height; columns sit flush and own their\n * insets and vertical scrolling. Kerf owns the overflow, the paged snapping,\n * and reduced motion.\n */\nexport function ColumnTrack({\n children,\n layout = 'scroll',\n minColumnWidth,\n peek,\n id,\n className = '',\n rootAttributes = {},\n slot,\n}: ColumnTrackProps) {\n const style = [\n minColumnWidth === undefined\n ? ''\n : `--_kui-column-track-min-width:${minColumnWidth}`,\n peek === undefined ? '' : `--_kui-column-track-peek:${peek}`,\n ]\n .filter(Boolean)\n .join(';');\n return (\n <div\n {...filterRootAttributes(rootAttributes, columnTrackProtected)}\n id={id}\n class={`kui-column-track ${className}`.trim()}\n data-component=\"column-track\"\n data-layout={layout}\n style={style || undefined}\n slot={slot}\n >\n <div class=\"kui-column-track__columns\">{children}</div>\n </div>\n );\n}\n"]}