@kerfjs/ui 5.0.0-beta.10 → 5.0.0-beta.101

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 (1022) hide show
  1. package/README.md +632 -132
  2. package/ai/application-ui-diagnostic-ids-v1.json +114 -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 +96 -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 +6668 -1002
  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 +551 -0
  20. package/ai/component-composition.d.ts +132 -0
  21. package/ai/component-composition.json +8937 -0
  22. package/ai/component-composition.schema.json +412 -0
  23. package/ai/components/README.md +187 -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 +76 -0
  28. package/ai/components/chip.md +76 -0
  29. package/ai/components/choice-chips.md +87 -0
  30. package/ai/components/collapsible-panel.md +103 -0
  31. package/ai/components/column-track.md +78 -0
  32. package/ai/components/combobox.md +88 -0
  33. package/ai/components/composer.md +83 -0
  34. package/ai/components/content-item.md +98 -0
  35. package/ai/components/content-swap.md +78 -0
  36. package/ai/components/corner-status.md +88 -0
  37. package/ai/components/disclosure-arrow.md +77 -0
  38. package/ai/components/document-baseline.md +77 -0
  39. package/ai/components/edge-activity-indicator.md +81 -0
  40. package/ai/components/empty-state.md +80 -0
  41. package/ai/components/feedback.md +71 -0
  42. package/ai/components/file-picker.md +88 -0
  43. package/ai/components/floating-toolbar.md +82 -0
  44. package/ai/components/foundation.md +65 -0
  45. package/ai/components/framed-list.md +80 -0
  46. package/ai/components/grid.md +101 -0
  47. package/ai/components/headers.md +63 -0
  48. package/ai/components/icon-button.md +82 -0
  49. package/ai/components/icon-toggle-button.md +80 -0
  50. package/ai/components/layout.md +75 -0
  51. package/ai/components/list-action-row.md +108 -0
  52. package/ai/components/list-header.md +91 -0
  53. package/ai/components/list-inset-control.md +74 -0
  54. package/ai/components/list-inset-text.md +72 -0
  55. package/ai/components/list-item.md +108 -0
  56. package/ai/components/list.md +125 -0
  57. package/ai/components/loading-spinner.md +73 -0
  58. package/ai/components/lucide-icon.md +97 -0
  59. package/ai/components/nav-stack.md +120 -0
  60. package/ai/components/pane.md +125 -0
  61. package/ai/components/popup-menu.md +171 -0
  62. package/ai/components/recipe-app-shell.md +57 -0
  63. package/ai/components/recipe-collapsible-sidebar.md +57 -0
  64. package/ai/components/recipe-compact-toolbar.md +57 -0
  65. package/ai/components/recipe-composer-form.md +57 -0
  66. package/ai/components/recipe-list-detail-dialog.md +57 -0
  67. package/ai/components/recipe-list-workspace-states.md +57 -0
  68. package/ai/components/recipe-loading-inspector.md +57 -0
  69. package/ai/components/recipe-media-detail.md +57 -0
  70. package/ai/components/recipe-navigation-sidebar.md +57 -0
  71. package/ai/components/recipe-navigation-stack.md +57 -0
  72. package/ai/components/recipe-workspace-header.md +57 -0
  73. package/ai/components/resize.md +106 -0
  74. package/ai/components/row.md +96 -0
  75. package/ai/components/segmented-control.md +82 -0
  76. package/ai/components/select.md +116 -0
  77. package/ai/components/skeleton.md +84 -0
  78. package/ai/components/spacer.md +86 -0
  79. package/ai/components/split-button.md +80 -0
  80. package/ai/components/split-view.md +105 -0
  81. package/ai/components/state-banner.md +96 -0
  82. package/ai/components/summary-row.md +85 -0
  83. package/ai/components/sunken-panel.md +79 -0
  84. package/ai/components/surface-scaffold.md +112 -0
  85. package/ai/components/tab-bar.md +114 -0
  86. package/ai/components/tab-navigator.md +105 -0
  87. package/ai/components/tabs.md +95 -0
  88. package/ai/components/text.md +90 -0
  89. package/ai/components/token-search-field.md +107 -0
  90. package/ai/components/toolbar-control-group.md +126 -0
  91. package/ai/components/toolbar-text.md +100 -0
  92. package/ai/components/toolbar.md +103 -0
  93. package/ai/components/value-table.md +80 -0
  94. package/ai/components/wa-accordion-item.md +55 -0
  95. package/ai/components/wa-accordion.md +65 -0
  96. package/ai/components/wa-animated-image.md +55 -0
  97. package/ai/components/wa-animation.md +55 -0
  98. package/ai/components/wa-avatar.md +55 -0
  99. package/ai/components/wa-badge.md +55 -0
  100. package/ai/components/wa-breadcrumb-item.md +53 -0
  101. package/ai/components/wa-breadcrumb.md +55 -0
  102. package/ai/components/wa-button-group.md +60 -0
  103. package/ai/components/wa-button.md +59 -0
  104. package/ai/components/wa-callout.md +58 -0
  105. package/ai/components/wa-card.md +59 -0
  106. package/ai/components/wa-carousel-item.md +53 -0
  107. package/ai/components/wa-carousel.md +55 -0
  108. package/ai/components/wa-checkbox-group.md +55 -0
  109. package/ai/components/wa-checkbox.md +55 -0
  110. package/ai/components/wa-color-picker.md +55 -0
  111. package/ai/components/wa-comparison.md +55 -0
  112. package/ai/components/wa-copy-button.md +55 -0
  113. package/ai/components/wa-details.md +61 -0
  114. package/ai/components/wa-dialog.md +59 -0
  115. package/ai/components/wa-divider.md +53 -0
  116. package/ai/components/wa-drawer.md +55 -0
  117. package/ai/components/wa-dropdown-item.md +60 -0
  118. package/ai/components/wa-dropdown.md +60 -0
  119. package/ai/components/wa-format-bytes.md +53 -0
  120. package/ai/components/wa-format-date.md +53 -0
  121. package/ai/components/wa-format-number.md +53 -0
  122. package/ai/components/wa-icon.md +58 -0
  123. package/ai/components/wa-include.md +53 -0
  124. package/ai/components/wa-input.md +59 -0
  125. package/ai/components/wa-intersection-observer.md +53 -0
  126. package/ai/components/wa-known-date.md +53 -0
  127. package/ai/components/wa-markdown.md +53 -0
  128. package/ai/components/wa-mutation-observer.md +53 -0
  129. package/ai/components/wa-number-input.md +55 -0
  130. package/ai/components/wa-option.md +59 -0
  131. package/ai/components/wa-otp-input.md +53 -0
  132. package/ai/components/wa-page.md +53 -0
  133. package/ai/components/wa-pagination.md +55 -0
  134. package/ai/components/wa-popover.md +55 -0
  135. package/ai/components/wa-popup.md +53 -0
  136. package/ai/components/wa-progress-bar.md +53 -0
  137. package/ai/components/wa-progress-ring.md +53 -0
  138. package/ai/components/wa-qr-code.md +53 -0
  139. package/ai/components/wa-radio-group.md +59 -0
  140. package/ai/components/wa-radio.md +55 -0
  141. package/ai/components/wa-random-content.md +53 -0
  142. package/ai/components/wa-rating.md +55 -0
  143. package/ai/components/wa-relative-time.md +53 -0
  144. package/ai/components/wa-resize-observer.md +53 -0
  145. package/ai/components/wa-scroller.md +53 -0
  146. package/ai/components/wa-select.md +63 -0
  147. package/ai/components/wa-skeleton.md +53 -0
  148. package/ai/components/wa-slider.md +55 -0
  149. package/ai/components/wa-spinner.md +58 -0
  150. package/ai/components/wa-split-panel.md +58 -0
  151. package/ai/components/wa-switch.md +53 -0
  152. package/ai/components/wa-tab-group.md +69 -0
  153. package/ai/components/wa-tab-panel.md +60 -0
  154. package/ai/components/wa-tab.md +59 -0
  155. package/ai/components/wa-tag.md +59 -0
  156. package/ai/components/wa-textarea.md +53 -0
  157. package/ai/components/wa-time-input.md +55 -0
  158. package/ai/components/wa-toast-item.md +60 -0
  159. package/ai/components/wa-toast.md +60 -0
  160. package/ai/components/wa-tooltip.md +55 -0
  161. package/ai/components/wa-tree-item.md +55 -0
  162. package/ai/components/wa-tree.md +55 -0
  163. package/ai/components/wa-zoomable-frame.md +55 -0
  164. package/ai/components/workbench.md +120 -0
  165. package/ai/public-api-signatures-v1.md +4564 -438
  166. package/ai/skill.md +490 -64
  167. package/ai/webawesome-jsx-signatures-v1.md +9 -2
  168. package/analyzer/cli.mjs +49 -0
  169. package/analyzer/component-ownership.d.mts +72 -0
  170. package/analyzer/component-ownership.mjs +429 -0
  171. package/analyzer/index.d.mts +53 -0
  172. package/analyzer/index.mjs +2375 -0
  173. package/analyzer/loud-pairs.d.mts +49 -0
  174. package/analyzer/loud-pairs.mjs +357 -0
  175. package/analyzer/report.schema.json +66 -0
  176. package/analyzer/selectors.d.mts +21 -0
  177. package/analyzer/selectors.mjs +212 -0
  178. package/catalog-projection-cli.mjs +96 -0
  179. package/catalog-projection.d.mts +55 -0
  180. package/catalog-projection.mjs +62 -0
  181. package/dist/anchored-surface.d.ts +69 -0
  182. package/dist/anchored-surface.js +3 -0
  183. package/dist/anchored-surface.js.map +1 -0
  184. package/dist/app-tab.d.ts +39 -4
  185. package/dist/app-tab.js +2 -1
  186. package/dist/backdrop-image.d.ts +132 -0
  187. package/dist/backdrop-image.js +5 -0
  188. package/dist/backdrop-image.js.map +1 -0
  189. package/dist/badge.d.ts +83 -0
  190. package/dist/badge.js +4 -0
  191. package/dist/badge.js.map +1 -0
  192. package/dist/browser/anchored-surface.js +3 -0
  193. package/dist/browser/backdrop-image.js +3 -0
  194. package/dist/browser/badge.js +3 -0
  195. package/dist/browser/catalog.js +28 -0
  196. package/dist/browser/chip.js +3 -0
  197. package/dist/browser/choice-chips.js +3 -0
  198. package/dist/browser/collapsible-panel.js +9 -0
  199. package/dist/browser/column-track.js +3 -0
  200. package/dist/browser/combobox.js +3 -0
  201. package/dist/browser/composer.js +4 -0
  202. package/dist/browser/content-item.js +3 -0
  203. package/dist/browser/content-swap.js +3 -0
  204. package/dist/browser/corner-status.js +3 -0
  205. package/dist/browser/edge-activity-indicator.js +3 -0
  206. package/dist/browser/file-picker.js +3 -0
  207. package/dist/browser/floating-toolbar.js +3 -0
  208. package/dist/browser/framed-list.js +3 -0
  209. package/dist/browser/grid.js +3 -0
  210. package/dist/browser/icon-button.js +4 -0
  211. package/dist/browser/icon-toggle-button.js +4 -0
  212. package/dist/browser/list-action-row.js +2 -0
  213. package/dist/browser/list-header.js +3 -1
  214. package/dist/browser/list-inset-control.js +3 -0
  215. package/dist/browser/list-inset-text.js +3 -0
  216. package/dist/browser/list-item.js +1 -0
  217. package/dist/browser/list.js +3 -0
  218. package/dist/browser/nav-stack.js +11 -0
  219. package/dist/browser/pane.js +3 -0
  220. package/dist/browser/popup-menu.js +3 -0
  221. package/dist/browser/row.js +3 -0
  222. package/dist/browser/segmented-control.js +0 -1
  223. package/dist/browser/select.js +2 -1
  224. package/dist/browser/spacer.js +3 -0
  225. package/dist/browser/split-button.js +5 -0
  226. package/dist/browser/split-view.js +13 -0
  227. package/dist/browser/state-banner.js +1 -0
  228. package/dist/browser/summary-row.js +3 -0
  229. package/dist/browser/sunken-panel.js +3 -0
  230. package/dist/browser/surface-scaffold.js +3 -0
  231. package/dist/browser/tab-navigator.js +4 -0
  232. package/dist/browser/text.js +3 -0
  233. package/dist/browser/toolbar-control-group.js +1 -0
  234. package/dist/browser/workbench.js +14 -0
  235. package/dist/catalog-resources.d.ts +50 -0
  236. package/dist/catalog-resources.js +22 -0
  237. package/dist/catalog-resources.js.map +1 -0
  238. package/dist/catalog.d.ts +134 -101
  239. package/dist/catalog.js +669 -105
  240. package/dist/catalog.js.map +1 -1
  241. package/dist/chip.d.ts +69 -0
  242. package/dist/chip.js +3 -0
  243. package/dist/chip.js.map +1 -0
  244. package/dist/choice-chips.d.ts +82 -0
  245. package/dist/choice-chips.js +3 -0
  246. package/dist/choice-chips.js.map +1 -0
  247. package/dist/chunk-2GOCOLQL.js +270 -0
  248. package/dist/chunk-2GOCOLQL.js.map +1 -0
  249. package/dist/chunk-2MSPNRWJ.js +82 -0
  250. package/dist/chunk-2MSPNRWJ.js.map +1 -0
  251. package/dist/chunk-2PXZBFEC.js +141 -0
  252. package/dist/chunk-2PXZBFEC.js.map +1 -0
  253. package/dist/chunk-34U4ANDJ.js +119 -0
  254. package/dist/chunk-34U4ANDJ.js.map +1 -0
  255. package/dist/chunk-3SKAEPPZ.js +165 -0
  256. package/dist/chunk-3SKAEPPZ.js.map +1 -0
  257. package/dist/{chunk-56RJXPHG.js → chunk-3VXDSIBJ.js} +7 -4
  258. package/dist/chunk-3VXDSIBJ.js.map +1 -0
  259. package/dist/chunk-3WYREXW4.js +120 -0
  260. package/dist/chunk-3WYREXW4.js.map +1 -0
  261. package/dist/chunk-4UB5Z3ZZ.js +68 -0
  262. package/dist/chunk-4UB5Z3ZZ.js.map +1 -0
  263. package/dist/chunk-5NQF35VO.js +67 -0
  264. package/dist/chunk-5NQF35VO.js.map +1 -0
  265. package/dist/chunk-6C6DLP3W.js +31 -0
  266. package/dist/chunk-6C6DLP3W.js.map +1 -0
  267. package/dist/chunk-6E2H2E5A.js +196 -0
  268. package/dist/chunk-6E2H2E5A.js.map +1 -0
  269. package/dist/chunk-7IUEBNCO.js +108 -0
  270. package/dist/chunk-7IUEBNCO.js.map +1 -0
  271. package/dist/chunk-AN5IWMTM.js +24 -0
  272. package/dist/chunk-AN5IWMTM.js.map +1 -0
  273. package/dist/chunk-AV7CPAPT.js +82 -0
  274. package/dist/chunk-AV7CPAPT.js.map +1 -0
  275. package/dist/chunk-B53PS2LE.js +34 -0
  276. package/dist/chunk-B53PS2LE.js.map +1 -0
  277. package/dist/chunk-BYFTHA4I.js +153 -0
  278. package/dist/chunk-BYFTHA4I.js.map +1 -0
  279. package/dist/chunk-CA7LNX3J.js +44 -0
  280. package/dist/chunk-CA7LNX3J.js.map +1 -0
  281. package/dist/chunk-CEJ5FK6G.js +288 -0
  282. package/dist/chunk-CEJ5FK6G.js.map +1 -0
  283. package/dist/chunk-CMLPFIC5.js +46 -0
  284. package/dist/chunk-CMLPFIC5.js.map +1 -0
  285. package/dist/chunk-CVD5IZGB.js +66 -0
  286. package/dist/chunk-CVD5IZGB.js.map +1 -0
  287. package/dist/chunk-D5RGM3XA.js +38 -0
  288. package/dist/chunk-D5RGM3XA.js.map +1 -0
  289. package/dist/chunk-DZJ4GBSP.js +59 -0
  290. package/dist/chunk-DZJ4GBSP.js.map +1 -0
  291. package/dist/chunk-EIET4QLK.js +51 -0
  292. package/dist/chunk-EIET4QLK.js.map +1 -0
  293. package/dist/chunk-EKHDLBRP.js +86 -0
  294. package/dist/chunk-EKHDLBRP.js.map +1 -0
  295. package/dist/chunk-ELCMSQNJ.js +49 -0
  296. package/dist/chunk-ELCMSQNJ.js.map +1 -0
  297. package/dist/chunk-ETCWQLJV.js +85 -0
  298. package/dist/chunk-ETCWQLJV.js.map +1 -0
  299. package/dist/chunk-FDZNYD4C.js +138 -0
  300. package/dist/chunk-FDZNYD4C.js.map +1 -0
  301. package/dist/chunk-FNZQOUZ5.js +52 -0
  302. package/dist/chunk-FNZQOUZ5.js.map +1 -0
  303. package/dist/chunk-FR76ZJQC.js +90 -0
  304. package/dist/chunk-FR76ZJQC.js.map +1 -0
  305. package/dist/chunk-G3J7JDP6.js +29 -0
  306. package/dist/chunk-G3J7JDP6.js.map +1 -0
  307. package/dist/chunk-GS2QD3N7.js +14 -0
  308. package/dist/chunk-GS2QD3N7.js.map +1 -0
  309. package/dist/chunk-HLDRH23D.js +84 -0
  310. package/dist/chunk-HLDRH23D.js.map +1 -0
  311. package/dist/chunk-HQZYKJ56.js +302 -0
  312. package/dist/chunk-HQZYKJ56.js.map +1 -0
  313. package/dist/chunk-HZPHCSCS.js +95 -0
  314. package/dist/chunk-HZPHCSCS.js.map +1 -0
  315. package/dist/chunk-IKS72C6P.js +53 -0
  316. package/dist/chunk-IKS72C6P.js.map +1 -0
  317. package/dist/chunk-IM3GKYOG.js +202 -0
  318. package/dist/chunk-IM3GKYOG.js.map +1 -0
  319. package/dist/chunk-IQSRHXZR.js +164 -0
  320. package/dist/chunk-IQSRHXZR.js.map +1 -0
  321. package/dist/chunk-IXLUZHGT.js +162 -0
  322. package/dist/chunk-IXLUZHGT.js.map +1 -0
  323. package/dist/chunk-JOR5LGYE.js +55 -0
  324. package/dist/chunk-JOR5LGYE.js.map +1 -0
  325. package/dist/chunk-K4AT3V3J.js +545 -0
  326. package/dist/chunk-K4AT3V3J.js.map +1 -0
  327. package/dist/chunk-KCS6NJ3O.js +82 -0
  328. package/dist/chunk-KCS6NJ3O.js.map +1 -0
  329. package/dist/chunk-KH4KEMSP.js +71 -0
  330. package/dist/chunk-KH4KEMSP.js.map +1 -0
  331. package/dist/chunk-LL45C7BB.js +122 -0
  332. package/dist/chunk-LL45C7BB.js.map +1 -0
  333. package/dist/chunk-LOSRXZAH.js +100 -0
  334. package/dist/chunk-LOSRXZAH.js.map +1 -0
  335. package/dist/chunk-LPHU44S3.js +24 -0
  336. package/dist/chunk-LPHU44S3.js.map +1 -0
  337. package/dist/chunk-M5KZ26VV.js +148 -0
  338. package/dist/chunk-M5KZ26VV.js.map +1 -0
  339. package/dist/chunk-MF6ZUUJZ.js +300 -0
  340. package/dist/chunk-MF6ZUUJZ.js.map +1 -0
  341. package/dist/chunk-MHMWQ7RB.js +19 -0
  342. package/dist/chunk-MHMWQ7RB.js.map +1 -0
  343. package/dist/chunk-MJ5RU6XT.js +173 -0
  344. package/dist/chunk-MJ5RU6XT.js.map +1 -0
  345. package/dist/chunk-MXNIVEVL.js +48 -0
  346. package/dist/chunk-MXNIVEVL.js.map +1 -0
  347. package/dist/{chunk-YGN7OMLT.js → chunk-NS2TBYM4.js} +8 -5
  348. package/dist/chunk-NS2TBYM4.js.map +1 -0
  349. package/dist/chunk-NS762OVM.js +222 -0
  350. package/dist/chunk-NS762OVM.js.map +1 -0
  351. package/dist/chunk-OZ6X76G5.js +547 -0
  352. package/dist/chunk-OZ6X76G5.js.map +1 -0
  353. package/dist/chunk-PKL6QJKK.js +835 -0
  354. package/dist/chunk-PKL6QJKK.js.map +1 -0
  355. package/dist/chunk-QDSZTQXL.js +28 -0
  356. package/dist/chunk-QDSZTQXL.js.map +1 -0
  357. package/dist/chunk-QH5KOFNS.js +39 -0
  358. package/dist/chunk-QH5KOFNS.js.map +1 -0
  359. package/dist/chunk-QLA25V2K.js +493 -0
  360. package/dist/chunk-QLA25V2K.js.map +1 -0
  361. package/dist/chunk-QTSMHH5J.js +85 -0
  362. package/dist/chunk-QTSMHH5J.js.map +1 -0
  363. package/dist/chunk-QYMJHS4K.js +36 -0
  364. package/dist/chunk-QYMJHS4K.js.map +1 -0
  365. package/dist/chunk-S2XULQEK.js +52 -0
  366. package/dist/chunk-S2XULQEK.js.map +1 -0
  367. package/dist/chunk-S3ECMF23.js +33 -0
  368. package/dist/chunk-S3ECMF23.js.map +1 -0
  369. package/dist/chunk-S4Y3YTAI.js +35 -0
  370. package/dist/chunk-S4Y3YTAI.js.map +1 -0
  371. package/dist/chunk-S4ZGTDSG.js +18 -0
  372. package/dist/chunk-S4ZGTDSG.js.map +1 -0
  373. package/dist/chunk-SCDWURBO.js +136 -0
  374. package/dist/chunk-SCDWURBO.js.map +1 -0
  375. package/dist/chunk-SIW64V65.js +176 -0
  376. package/dist/chunk-SIW64V65.js.map +1 -0
  377. package/dist/chunk-SQ5DH66U.js +37 -0
  378. package/dist/chunk-SQ5DH66U.js.map +1 -0
  379. package/dist/chunk-TDMHA7C3.js +251 -0
  380. package/dist/chunk-TDMHA7C3.js.map +1 -0
  381. package/dist/chunk-TGLUDQP2.js +138 -0
  382. package/dist/chunk-TGLUDQP2.js.map +1 -0
  383. package/dist/chunk-U6QYTMDB.js +85 -0
  384. package/dist/chunk-U6QYTMDB.js.map +1 -0
  385. package/dist/chunk-VFYO3UGZ.js +45 -0
  386. package/dist/chunk-VFYO3UGZ.js.map +1 -0
  387. package/dist/chunk-W4IK7AWD.js +73 -0
  388. package/dist/chunk-W4IK7AWD.js.map +1 -0
  389. package/dist/chunk-WVS6CUCT.js +48 -0
  390. package/dist/chunk-WVS6CUCT.js.map +1 -0
  391. package/dist/chunk-Y6KT7ZTR.js +109 -0
  392. package/dist/chunk-Y6KT7ZTR.js.map +1 -0
  393. package/dist/chunk-YBWQR2OK.js +526 -0
  394. package/dist/chunk-YBWQR2OK.js.map +1 -0
  395. package/dist/chunk-YMUIQRWK.js +44 -0
  396. package/dist/chunk-YMUIQRWK.js.map +1 -0
  397. package/dist/chunk-YQ2AC4E2.js +59 -0
  398. package/dist/chunk-YQ2AC4E2.js.map +1 -0
  399. package/dist/chunk-ZKKO4MHC.js +25 -0
  400. package/dist/chunk-ZKKO4MHC.js.map +1 -0
  401. package/dist/chunk-ZNROKDSZ.js +54 -0
  402. package/dist/chunk-ZNROKDSZ.js.map +1 -0
  403. package/dist/chunk-ZYU5WRC3.js +230 -0
  404. package/dist/chunk-ZYU5WRC3.js.map +1 -0
  405. package/dist/collapsible-panel.d.ts +96 -17
  406. package/dist/collapsible-panel.js +133 -14
  407. package/dist/collapsible-panel.js.map +1 -1
  408. package/dist/column-track.d.ts +41 -0
  409. package/dist/column-track.js +4 -0
  410. package/dist/column-track.js.map +1 -0
  411. package/dist/combobox.d.ts +40 -0
  412. package/dist/combobox.js +3 -0
  413. package/dist/combobox.js.map +1 -0
  414. package/dist/composer.d.ts +62 -0
  415. package/dist/composer.js +5 -0
  416. package/dist/composer.js.map +1 -0
  417. package/dist/content-item.d.ts +116 -0
  418. package/dist/content-item.js +4 -0
  419. package/dist/content-item.js.map +1 -0
  420. package/dist/content-swap.d.ts +34 -0
  421. package/dist/content-swap.js +3 -0
  422. package/dist/content-swap.js.map +1 -0
  423. package/dist/corner-status.d.ts +36 -0
  424. package/dist/corner-status.js +3 -0
  425. package/dist/corner-status.js.map +1 -0
  426. package/dist/css-values.d.ts +127 -0
  427. package/dist/css-values.js +3 -0
  428. package/dist/css-values.js.map +1 -0
  429. package/dist/device-class.js +34 -6
  430. package/dist/device-class.js.map +1 -1
  431. package/dist/disclosure-arrow.d.ts +6 -1
  432. package/dist/disclosure-arrow.js +2 -1
  433. package/dist/edge-activity-indicator.d.ts +28 -0
  434. package/dist/edge-activity-indicator.js +3 -0
  435. package/dist/edge-activity-indicator.js.map +1 -0
  436. package/dist/empty-state.d.ts +5 -2
  437. package/dist/empty-state.js +2 -1
  438. package/dist/extension-attributes-mu8MFUl0.d.ts +13 -0
  439. package/dist/file-picker.d.ts +47 -0
  440. package/dist/file-picker.js +3 -0
  441. package/dist/file-picker.js.map +1 -0
  442. package/dist/flex-alignment-4ms8ZbV8.d.ts +5 -0
  443. package/dist/floating-toolbar.d.ts +51 -0
  444. package/dist/floating-toolbar.js +3 -0
  445. package/dist/floating-toolbar.js.map +1 -0
  446. package/dist/framed-list.d.ts +47 -0
  447. package/dist/framed-list.js +4 -0
  448. package/dist/framed-list.js.map +1 -0
  449. package/dist/grid.d.ts +58 -0
  450. package/dist/grid.js +6 -0
  451. package/dist/grid.js.map +1 -0
  452. package/dist/help-tags-register.d.ts +13 -0
  453. package/dist/help-tags-register.js +9 -0
  454. package/dist/help-tags-register.js.map +1 -0
  455. package/dist/icon-button.d.ts +46 -0
  456. package/dist/icon-button.js +6 -0
  457. package/dist/icon-button.js.map +1 -0
  458. package/dist/icon-toggle-button.d.ts +42 -0
  459. package/dist/icon-toggle-button.js +6 -0
  460. package/dist/icon-toggle-button.js.map +1 -0
  461. package/dist/index.d.ts +65 -17
  462. package/dist/index.js +71 -24
  463. package/dist/list-action-row.d.ts +69 -12
  464. package/dist/list-action-row.js +5 -1
  465. package/dist/list-header.d.ts +65 -10
  466. package/dist/list-header.js +4 -1
  467. package/dist/list-icon-tile-B8dr97OW.d.ts +18 -0
  468. package/dist/list-inset-control.d.ts +22 -0
  469. package/dist/list-inset-control.js +3 -0
  470. package/dist/list-inset-control.js.map +1 -0
  471. package/dist/list-inset-text.d.ts +30 -0
  472. package/dist/list-inset-text.js +4 -0
  473. package/dist/list-inset-text.js.map +1 -0
  474. package/dist/list-item.d.ts +49 -5
  475. package/dist/list-item.js +4 -1
  476. package/dist/list.d.ts +128 -0
  477. package/dist/list.js +7 -0
  478. package/dist/list.js.map +1 -0
  479. package/dist/loading-spinner.d.ts +12 -2
  480. package/dist/loading-spinner.js +2 -1
  481. package/dist/lucide-icon.d.ts +15 -3
  482. package/dist/lucide-icon.js +2 -1
  483. package/dist/nav-stack-CU_0dKtI.d.ts +194 -0
  484. package/dist/nav-stack.d.ts +15 -38
  485. package/dist/nav-stack.js +14 -1
  486. package/dist/pane.d.ts +225 -0
  487. package/dist/pane.js +6 -0
  488. package/dist/pane.js.map +1 -0
  489. package/dist/panel-toolbar-vg6Ir5Dy.d.ts +77 -0
  490. package/dist/popup-menu-register.d.ts +10 -0
  491. package/dist/popup-menu-register.js +336 -0
  492. package/dist/popup-menu-register.js.map +1 -0
  493. package/dist/popup-menu.d.ts +125 -0
  494. package/dist/popup-menu.js +3 -0
  495. package/dist/popup-menu.js.map +1 -0
  496. package/dist/resizable-region.d.ts +32 -3
  497. package/dist/resizable-region.js +1 -1
  498. package/dist/row.d.ts +53 -0
  499. package/dist/row.js +7 -0
  500. package/dist/row.js.map +1 -0
  501. package/dist/scroll-clearance-BikHljTc.d.ts +14 -0
  502. package/dist/segmented-control.d.ts +12 -9
  503. package/dist/segmented-control.js +1 -2
  504. package/dist/select-register.js +255 -3
  505. package/dist/select-register.js.map +1 -1
  506. package/dist/select.d.ts +103 -8
  507. package/dist/select.js +4 -1
  508. package/dist/semantic-content-BbzjvSu9.d.ts +14 -0
  509. package/dist/semantic-tone-CdW013KF.d.ts +4 -0
  510. package/dist/sides-BPSWde0A.d.ts +4 -0
  511. package/dist/skeleton.d.ts +14 -7
  512. package/dist/skeleton.js +2 -1
  513. package/dist/spacer.d.ts +18 -0
  514. package/dist/spacer.js +4 -0
  515. package/dist/spacer.js.map +1 -0
  516. package/dist/split-button.d.ts +57 -0
  517. package/dist/split-button.js +7 -0
  518. package/dist/split-button.js.map +1 -0
  519. package/dist/split-view.d.ts +63 -6
  520. package/dist/split-view.js +150 -10
  521. package/dist/split-view.js.map +1 -1
  522. package/dist/state-banner.d.ts +41 -7
  523. package/dist/state-banner.js +4 -1
  524. package/dist/styles/anchored-surface.css +41 -0
  525. package/dist/styles/app-tab.css +232 -0
  526. package/dist/styles/backdrop-image.css +241 -0
  527. package/dist/styles/badge.css +145 -0
  528. package/dist/styles/catalog/components/catalog-example-stack.css +14 -0
  529. package/dist/styles/catalog/components/catalog-example.css +204 -0
  530. package/dist/styles/catalog/components/catalog-stage.css +61 -0
  531. package/dist/styles/catalog/components/catalog.css +26 -0
  532. package/dist/styles/catalog.css +5 -498
  533. package/dist/styles/chip.css +208 -0
  534. package/dist/styles/choice-chips.css +154 -0
  535. package/dist/styles/collapsible-panel.css +450 -16
  536. package/dist/styles/column-track.css +57 -0
  537. package/dist/styles/combobox.css +113 -0
  538. package/dist/styles/components/actions/floating-toolbar/floating-toolbar.css +119 -0
  539. package/dist/styles/components/actions/icon-button/icon-button.css +22 -0
  540. package/dist/styles/components/actions/icon-toggle-button/icon-toggle-button.css +83 -0
  541. package/dist/styles/components/actions/popup-menu/popup-menu.css +370 -0
  542. package/dist/styles/components/actions/split-button/split-button.css +95 -0
  543. package/dist/styles/components/actions/toolbar/toolbar.css +452 -0
  544. package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +1197 -0
  545. package/dist/styles/components/actions/toolbar-text/toolbar-text.css +269 -0
  546. package/dist/styles/components/collections/framed-list/framed-list.css +47 -0
  547. package/dist/styles/components/collections/list/list.css +250 -0
  548. package/dist/styles/components/collections/list-action-row/list-action-row.css +466 -0
  549. package/dist/styles/components/collections/list-header/list-header.css +229 -0
  550. package/dist/styles/components/collections/list-inset-control/list-inset-control.css +30 -0
  551. package/dist/styles/components/collections/list-inset-text/list-inset-text.css +29 -0
  552. package/dist/styles/components/collections/list-item/list-item.css +461 -0
  553. package/dist/styles/components/collections/summary-row/summary-row.css +161 -0
  554. package/dist/styles/components/data-display/value-table/value-table.css +183 -0
  555. package/dist/styles/components/feedback/anchored-surface/anchored-surface.css +41 -0
  556. package/dist/styles/components/feedback/badge/badge.css +145 -0
  557. package/dist/styles/components/feedback/chip/chip.css +208 -0
  558. package/dist/styles/components/feedback/corner-status/corner-status.css +60 -0
  559. package/dist/styles/components/feedback/edge-activity-indicator/edge-activity-indicator.css +127 -0
  560. package/dist/styles/components/feedback/empty-state/empty-state.css +47 -0
  561. package/dist/styles/components/feedback/loading-spinner/loading-spinner.css +25 -0
  562. package/dist/styles/components/feedback/skeleton/skeleton.css +92 -0
  563. package/dist/styles/components/feedback/state-banner/state-banner.css +297 -0
  564. package/dist/styles/components/forms/choice-chips/choice-chips.css +154 -0
  565. package/dist/styles/components/forms/combobox/combobox.css +113 -0
  566. package/dist/styles/components/forms/composer/composer.css +100 -0
  567. package/dist/styles/components/forms/file-picker/file-picker.css +81 -0
  568. package/dist/styles/components/forms/segmented-control/segmented-control.css +196 -0
  569. package/dist/styles/components/forms/select/select.css +455 -0
  570. package/dist/styles/components/forms/token-search-field/token-search-field.css +432 -0
  571. package/dist/styles/components/layout/collapsible-panel/collapsible-panel.css +580 -0
  572. package/dist/styles/components/layout/column-track/column-track.css +57 -0
  573. package/dist/styles/components/layout/content-swap/content-swap.css +154 -0
  574. package/dist/styles/components/layout/grid/grid.css +88 -0
  575. package/dist/styles/components/layout/pane/pane.css +502 -0
  576. package/dist/styles/components/layout/resizable-region/resizable-region.css +545 -0
  577. package/dist/styles/components/layout/row/row.css +114 -0
  578. package/dist/styles/components/layout/spacer/spacer.css +11 -0
  579. package/dist/styles/components/layout/split-view/split-view.css +146 -0
  580. package/dist/styles/components/layout/workbench/workbench.css +1086 -0
  581. package/dist/styles/components/media/lucide-icon/lucide-icon.css +15 -0
  582. package/dist/styles/components/navigation/app-tab/app-tab.css +384 -0
  583. package/dist/styles/components/navigation/disclosure-arrow/disclosure-arrow.css +23 -0
  584. package/dist/styles/components/navigation/nav-stack/nav-stack.css +543 -0
  585. package/dist/styles/components/navigation/tab-bar/tab-bar.css +197 -0
  586. package/dist/styles/components/navigation/tab-navigator/tab-navigator.css +443 -0
  587. package/dist/styles/components/surfaces/backdrop-image/backdrop-image.css +241 -0
  588. package/dist/styles/components/surfaces/content-item/content-item.css +138 -0
  589. package/dist/styles/components/surfaces/sunken-panel/sunken-panel.css +31 -0
  590. package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +589 -0
  591. package/dist/styles/components/typography/text/text.css +220 -0
  592. package/dist/styles/composer.css +100 -0
  593. package/dist/styles/content-item.css +138 -0
  594. package/dist/styles/content-swap.css +154 -0
  595. package/dist/styles/corner-status.css +60 -0
  596. package/dist/styles/document.css +98 -0
  597. package/dist/styles/edge-activity-indicator.css +127 -0
  598. package/dist/styles/file-picker.css +81 -0
  599. package/dist/styles/floating-toolbar.css +119 -0
  600. package/dist/styles/foundation.css +419 -46
  601. package/dist/styles/framed-list.css +47 -0
  602. package/dist/styles/grid.css +88 -0
  603. package/dist/styles/icon-button.css +22 -0
  604. package/dist/styles/icon-toggle-button.css +83 -0
  605. package/dist/styles/layout.css +3 -41
  606. package/dist/styles/list-action-row.css +324 -18
  607. package/dist/styles/list-header.css +128 -59
  608. package/dist/styles/list-inset-control.css +30 -0
  609. package/dist/styles/list-inset-text.css +29 -0
  610. package/dist/styles/list-item.css +371 -33
  611. package/dist/styles/list.css +250 -0
  612. package/dist/styles/loading-spinner.css +4 -0
  613. package/dist/styles/lucide-icon.css +9 -0
  614. package/dist/styles/nav-stack.css +479 -47
  615. package/dist/styles/overlay-sheet.css +211 -0
  616. package/dist/styles/pane.css +502 -0
  617. package/dist/styles/popup-menu.css +370 -0
  618. package/dist/styles/resizable-region.css +438 -4
  619. package/dist/styles/row.css +114 -0
  620. package/dist/styles/segmented-control.css +36 -9
  621. package/dist/styles/select.css +338 -21
  622. package/dist/styles/skeleton.css +64 -3
  623. package/dist/styles/spacer.css +11 -0
  624. package/dist/styles/split-button.css +95 -0
  625. package/dist/styles/split-view.css +114 -3
  626. package/dist/styles/state-banner.css +146 -22
  627. package/dist/styles/styles.css +24 -1
  628. package/dist/styles/summary-row.css +161 -0
  629. package/dist/styles/sunken-panel.css +31 -0
  630. package/dist/styles/surface-scaffold.css +589 -0
  631. package/dist/styles/tab-bar.css +161 -9
  632. package/dist/styles/tab-navigator.css +443 -0
  633. package/dist/styles/text.css +220 -0
  634. package/dist/styles/token-search-field.css +202 -59
  635. package/dist/styles/toolbar-control-group.css +1022 -36
  636. package/dist/styles/toolbar-text.css +236 -7
  637. package/dist/styles/toolbar.css +402 -11
  638. package/dist/styles/value-table.css +115 -7
  639. package/dist/styles/webawesome.css +420 -17
  640. package/dist/styles/workbench.css +999 -7
  641. package/dist/summary-row.d.ts +56 -0
  642. package/dist/summary-row.js +4 -0
  643. package/dist/summary-row.js.map +1 -0
  644. package/dist/sunken-panel.d.ts +38 -0
  645. package/dist/sunken-panel.js +4 -0
  646. package/dist/sunken-panel.js.map +1 -0
  647. package/dist/surface-scaffold-register.d.ts +10 -0
  648. package/dist/surface-scaffold-register.js +254 -0
  649. package/dist/surface-scaffold-register.js.map +1 -0
  650. package/dist/surface-scaffold.d.ts +203 -0
  651. package/dist/surface-scaffold.js +4 -0
  652. package/dist/surface-scaffold.js.map +1 -0
  653. package/dist/tab-bar.d.ts +33 -7
  654. package/dist/tab-bar.js +1 -1
  655. package/dist/tab-navigator.d.ts +154 -0
  656. package/dist/tab-navigator.js +131 -0
  657. package/dist/tab-navigator.js.map +1 -0
  658. package/dist/text.d.ts +98 -0
  659. package/dist/text.js +3 -0
  660. package/dist/text.js.map +1 -0
  661. package/dist/token-search-field.d.ts +3 -43
  662. package/dist/token-search-field.js +2 -1
  663. package/dist/token-search-model-aYR0YAei.d.ts +184 -0
  664. package/dist/token-search-model.d.ts +3 -0
  665. package/dist/token-search-model.js +3 -0
  666. package/dist/token-search-model.js.map +1 -0
  667. package/dist/toolbar-control-group.d.ts +107 -7
  668. package/dist/toolbar-control-group.js +3 -1
  669. package/dist/toolbar-text.d.ts +63 -9
  670. package/dist/toolbar-text.js +2 -1
  671. package/dist/toolbar.d.ts +72 -7
  672. package/dist/toolbar.js +1 -1
  673. package/dist/types-CVgIwSdq.d.ts +189 -0
  674. package/dist/value-table.d.ts +30 -4
  675. package/dist/value-table.js +2 -1
  676. package/dist/webawesome.d.ts +8 -1
  677. package/dist/wire-catalog.d.ts +111 -5
  678. package/dist/wire-catalog.js +302 -14
  679. package/dist/wire-catalog.js.map +1 -1
  680. package/dist/wire-comboboxes.d.ts +26 -0
  681. package/dist/wire-comboboxes.js +3 -0
  682. package/dist/wire-comboboxes.js.map +1 -0
  683. package/dist/wire-composers.d.ts +16 -0
  684. package/dist/wire-composers.js +3 -0
  685. package/dist/wire-composers.js.map +1 -0
  686. package/dist/wire-content-items.d.ts +11 -0
  687. package/dist/wire-content-items.js +139 -0
  688. package/dist/wire-content-items.js.map +1 -0
  689. package/dist/wire-corner-status.d.ts +11 -0
  690. package/dist/wire-corner-status.js +3 -0
  691. package/dist/wire-corner-status.js.map +1 -0
  692. package/dist/wire-file-pickers.d.ts +26 -0
  693. package/dist/wire-file-pickers.js +3 -0
  694. package/dist/wire-file-pickers.js.map +1 -0
  695. package/dist/wire-list-focus-scroll.d.ts +16 -0
  696. package/dist/wire-list-focus-scroll.js +3 -0
  697. package/dist/wire-list-focus-scroll.js.map +1 -0
  698. package/dist/wire-list-reorder.d.ts +41 -0
  699. package/dist/wire-list-reorder.js +3 -0
  700. package/dist/wire-list-reorder.js.map +1 -0
  701. package/dist/wire-nav-stack.d.ts +4 -1
  702. package/dist/wire-nav-stack.js +352 -15
  703. package/dist/wire-nav-stack.js.map +1 -1
  704. package/dist/wire-overlay-sheets.d.ts +20 -0
  705. package/dist/wire-overlay-sheets.js +4 -0
  706. package/dist/wire-overlay-sheets.js.map +1 -0
  707. package/dist/wire-resizable-regions.d.ts +2 -1
  708. package/dist/wire-resizable-regions.js +2 -1
  709. package/dist/wire-scroll-dividers.d.ts +87 -0
  710. package/dist/wire-scroll-dividers.js +3 -0
  711. package/dist/wire-scroll-dividers.js.map +1 -0
  712. package/dist/wire-sidebar.d.ts +24 -4
  713. package/dist/wire-sidebar.js +159 -45
  714. package/dist/wire-sidebar.js.map +1 -1
  715. package/dist/wire-tab-bars.d.ts +6 -2
  716. package/dist/wire-tab-bars.js +1 -1
  717. package/dist/wire-tab-navigator.d.ts +13 -0
  718. package/dist/wire-tab-navigator.js +153 -0
  719. package/dist/wire-tab-navigator.js.map +1 -0
  720. package/dist/wire-token-search-fields.d.ts +28 -10
  721. package/dist/wire-token-search-fields.js +2 -1
  722. package/dist/wire-toolbar-visibility.d.ts +13 -0
  723. package/dist/wire-toolbar-visibility.js +3 -0
  724. package/dist/wire-toolbar-visibility.js.map +1 -0
  725. package/dist/wire-workbench.d.ts +116 -0
  726. package/dist/wire-workbench.js +6 -0
  727. package/dist/wire-workbench.js.map +1 -0
  728. package/dist/workbench.d.ts +253 -10
  729. package/dist/workbench.js +21 -15
  730. package/dist/workbench.js.map +1 -1
  731. package/docs/accessibility.md +675 -33
  732. package/docs/anchored-surface.md +101 -0
  733. package/docs/app-layouts.md +172 -10
  734. package/docs/apple-hig.md +2 -0
  735. package/docs/backdrop-image.md +128 -0
  736. package/docs/catalog.md +565 -63
  737. package/docs/collapsible-panel.md +308 -25
  738. package/docs/component-contract.md +818 -53
  739. package/docs/component-integration.md +75 -0
  740. package/docs/component-selection.md +971 -99
  741. package/docs/composer.md +143 -0
  742. package/docs/design/templates/choice-chips/color-palette-dark.svg +1 -0
  743. package/docs/design/templates/choice-chips/color-palette.svg +1 -0
  744. package/docs/design/templates/choice-chips/compact-icons-dark.svg +1 -0
  745. package/docs/design/templates/choice-chips/compact-icons.svg +1 -0
  746. package/docs/design/templates/choice-chips/multiple-dark.svg +1 -0
  747. package/docs/design/templates/choice-chips/multiple.svg +1 -0
  748. package/docs/design/templates/choice-chips-dark.svg +1 -0
  749. package/docs/design/templates/choice-chips.svg +1 -0
  750. package/docs/design/templates/composer/chat-dark.svg +1 -0
  751. package/docs/design/templates/composer/chat.svg +1 -0
  752. package/docs/design/templates/composer/prompt-dark.svg +1 -0
  753. package/docs/design/templates/composer/prompt.svg +1 -0
  754. package/docs/design/templates/composer-dark.svg +1 -0
  755. package/docs/design/templates/composer.svg +1 -0
  756. package/docs/design/templates/empty-state/filtered-dark.svg +1 -0
  757. package/docs/design/templates/empty-state/filtered.svg +1 -0
  758. package/docs/design/templates/empty-state/with-action-dark.svg +1 -0
  759. package/docs/design/templates/empty-state/with-action.svg +1 -0
  760. package/docs/design/templates/empty-state-dark.svg +1 -0
  761. package/docs/design/templates/empty-state.svg +1 -0
  762. package/docs/design/templates/list/compact-dark.svg +1 -0
  763. package/docs/design/templates/list/compact.svg +1 -0
  764. package/docs/design/templates/list/stack-dark.svg +1 -0
  765. package/docs/design/templates/list/stack.svg +1 -0
  766. package/docs/design/templates/list-action-row/default-dark.svg +1 -0
  767. package/docs/design/templates/list-action-row/default.svg +1 -0
  768. package/docs/design/templates/list-action-row/icon-tile-dark.svg +1 -0
  769. package/docs/design/templates/list-action-row/icon-tile.svg +1 -0
  770. package/docs/design/templates/list-action-row/selected-dark.svg +1 -0
  771. package/docs/design/templates/list-action-row/selected.svg +1 -0
  772. package/docs/design/templates/list-action-row/trailing-menu-dark.svg +1 -0
  773. package/docs/design/templates/list-action-row/trailing-menu.svg +1 -0
  774. package/docs/design/templates/list-action-row-dark.svg +1 -0
  775. package/docs/design/templates/list-action-row.svg +1 -0
  776. package/docs/design/templates/list-dark.svg +1 -0
  777. package/docs/design/templates/list-header/action-dark.svg +1 -0
  778. package/docs/design/templates/list-header/action.svg +1 -0
  779. package/docs/design/templates/list-header/count-dark.svg +1 -0
  780. package/docs/design/templates/list-header/count.svg +1 -0
  781. package/docs/design/templates/list-header/inline-action-dark.svg +1 -0
  782. package/docs/design/templates/list-header/inline-action.svg +1 -0
  783. package/docs/design/templates/list-header/size-l-dark.svg +1 -0
  784. package/docs/design/templates/list-header/size-l.svg +1 -0
  785. package/docs/design/templates/list-header/size-m-dark.svg +1 -0
  786. package/docs/design/templates/list-header/size-m.svg +1 -0
  787. package/docs/design/templates/list-header/size-xl-dark.svg +1 -0
  788. package/docs/design/templates/list-header/size-xl.svg +1 -0
  789. package/docs/design/templates/list-header/size-xs-dark.svg +1 -0
  790. package/docs/design/templates/list-header/size-xs.svg +1 -0
  791. package/docs/design/templates/list-header/toggle-collapsed-dark.svg +1 -0
  792. package/docs/design/templates/list-header/toggle-collapsed.svg +1 -0
  793. package/docs/design/templates/list-header/toggle-expanded-dark.svg +1 -0
  794. package/docs/design/templates/list-header/toggle-expanded.svg +1 -0
  795. package/docs/design/templates/list-header-dark.svg +1 -0
  796. package/docs/design/templates/list-header.svg +1 -0
  797. package/docs/design/templates/list-item/default-dark.svg +1 -0
  798. package/docs/design/templates/list-item/default.svg +1 -0
  799. package/docs/design/templates/list-item/icon-tile-dark.svg +1 -0
  800. package/docs/design/templates/list-item/icon-tile.svg +1 -0
  801. package/docs/design/templates/list-item/multiline-dark.svg +1 -0
  802. package/docs/design/templates/list-item/multiline.svg +1 -0
  803. package/docs/design/templates/list-item/selected-dark.svg +1 -0
  804. package/docs/design/templates/list-item/selected.svg +1 -0
  805. package/docs/design/templates/list-item/trailing-dark.svg +1 -0
  806. package/docs/design/templates/list-item/trailing.svg +1 -0
  807. package/docs/design/templates/list-item-dark.svg +1 -0
  808. package/docs/design/templates/list-item.svg +1 -0
  809. package/docs/design/templates/list.svg +1 -0
  810. package/docs/design/templates/segmented-control/equal-dark.svg +1 -0
  811. package/docs/design/templates/segmented-control/equal.svg +1 -0
  812. package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -0
  813. package/docs/design/templates/segmented-control/pill-small.svg +1 -0
  814. package/docs/design/templates/segmented-control-dark.svg +1 -0
  815. package/docs/design/templates/segmented-control.svg +1 -0
  816. package/docs/design/templates/skeleton/avatar-dark.svg +1 -0
  817. package/docs/design/templates/skeleton/avatar.svg +1 -0
  818. package/docs/design/templates/skeleton/block-dark.svg +1 -0
  819. package/docs/design/templates/skeleton/block.svg +1 -0
  820. package/docs/design/templates/skeleton/lines-dark.svg +1 -0
  821. package/docs/design/templates/skeleton/lines.svg +1 -0
  822. package/docs/design/templates/skeleton-dark.svg +1 -0
  823. package/docs/design/templates/skeleton.svg +1 -0
  824. package/docs/design/templates/state-banner/danger-dark.svg +1 -0
  825. package/docs/design/templates/state-banner/danger.svg +1 -0
  826. package/docs/design/templates/state-banner/info-badge-dark.svg +1 -0
  827. package/docs/design/templates/state-banner/info-badge.svg +1 -0
  828. package/docs/design/templates/state-banner/info-dark.svg +1 -0
  829. package/docs/design/templates/state-banner/info.svg +1 -0
  830. package/docs/design/templates/state-banner/strip-dark.svg +1 -0
  831. package/docs/design/templates/state-banner/strip.svg +1 -0
  832. package/docs/design/templates/state-banner/success-dark.svg +1 -0
  833. package/docs/design/templates/state-banner/success.svg +1 -0
  834. package/docs/design/templates/state-banner/warning-dark.svg +1 -0
  835. package/docs/design/templates/state-banner/warning.svg +1 -0
  836. package/docs/design/templates/state-banner-dark.svg +1 -0
  837. package/docs/design/templates/state-banner.svg +1 -0
  838. package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -0
  839. package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -0
  840. package/docs/design/templates/tab-bar-dark.svg +1 -0
  841. package/docs/design/templates/tab-bar.svg +1 -0
  842. package/docs/design/templates/token-search-field/empty-dark.svg +1 -0
  843. package/docs/design/templates/token-search-field/empty.svg +1 -0
  844. package/docs/design/templates/token-search-field/tokens-dark.svg +1 -0
  845. package/docs/design/templates/token-search-field/tokens.svg +1 -0
  846. package/docs/design/templates/token-search-field-dark.svg +1 -0
  847. package/docs/design/templates/token-search-field.svg +1 -0
  848. package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -0
  849. package/docs/design/templates/toolbar/title-and-actions.svg +1 -0
  850. package/docs/design/templates/toolbar/width-visibility-320-dark.svg +1 -0
  851. package/docs/design/templates/toolbar/width-visibility-320.svg +1 -0
  852. package/docs/design/templates/toolbar/width-visibility-600-dark.svg +1 -0
  853. package/docs/design/templates/toolbar/width-visibility-600.svg +1 -0
  854. package/docs/design/templates/toolbar-control-group/borderless-single-dark.svg +1 -1
  855. package/docs/design/templates/toolbar-control-group/borderless-single.svg +1 -1
  856. package/docs/design/templates/toolbar-control-group/glass-dark.svg +1 -0
  857. package/docs/design/templates/toolbar-control-group/glass.svg +1 -0
  858. package/docs/design/templates/toolbar-control-group/icon-buttons-dark.svg +1 -1
  859. package/docs/design/templates/toolbar-control-group/icon-buttons.svg +1 -1
  860. package/docs/design/templates/toolbar-control-group/icon-tile-brand-dark.svg +1 -0
  861. package/docs/design/templates/toolbar-control-group/icon-tile-brand.svg +1 -0
  862. package/docs/design/templates/toolbar-control-group/icon-tile-danger-dark.svg +1 -0
  863. package/docs/design/templates/toolbar-control-group/icon-tile-danger.svg +1 -0
  864. package/docs/design/templates/toolbar-control-group/icon-tile-neutral-dark.svg +1 -0
  865. package/docs/design/templates/toolbar-control-group/icon-tile-neutral.svg +1 -0
  866. package/docs/design/templates/toolbar-control-group/icon-tile-success-dark.svg +1 -0
  867. package/docs/design/templates/toolbar-control-group/icon-tile-success.svg +1 -0
  868. package/docs/design/templates/toolbar-control-group/icon-tile-warning-dark.svg +1 -0
  869. package/docs/design/templates/toolbar-control-group/icon-tile-warning.svg +1 -0
  870. package/docs/design/templates/toolbar-control-group/push-buttons-dark.svg +1 -1
  871. package/docs/design/templates/toolbar-control-group/push-buttons.svg +1 -1
  872. package/docs/design/templates/toolbar-control-group/with-text-dark.svg +1 -1
  873. package/docs/design/templates/toolbar-control-group/with-text.svg +1 -1
  874. package/docs/design/templates/toolbar-control-group-dark.svg +1 -11
  875. package/docs/design/templates/toolbar-control-group.svg +1 -11
  876. package/docs/design/templates/toolbar-dark.svg +1 -0
  877. package/docs/design/templates/toolbar-text/dark-tone-dark.svg +1 -0
  878. package/docs/design/templates/toolbar-text/dark-tone.svg +1 -0
  879. package/docs/design/templates/toolbar-text/default-dark.svg +1 -0
  880. package/docs/design/templates/toolbar-text/default.svg +1 -0
  881. package/docs/design/templates/toolbar-text/large-dark.svg +1 -0
  882. package/docs/design/templates/toolbar-text/large.svg +1 -0
  883. package/docs/design/templates/toolbar-text/small-dark.svg +1 -0
  884. package/docs/design/templates/toolbar-text/small.svg +1 -0
  885. package/docs/design/templates/toolbar-text-dark.svg +1 -0
  886. package/docs/design/templates/toolbar-text.svg +1 -0
  887. package/docs/design/templates/toolbar.svg +1 -0
  888. package/docs/design/templates/value-table/details-dark.svg +1 -0
  889. package/docs/design/templates/value-table/details.svg +1 -0
  890. package/docs/design/templates/value-table-dark.svg +1 -0
  891. package/docs/design/templates/value-table.svg +1 -0
  892. package/docs/design/templates.md +83 -18
  893. package/docs/design-philosophy.md +65 -20
  894. package/docs/device-class.md +10 -9
  895. package/docs/document-baseline.md +93 -0
  896. package/docs/examples/application-ui-profile.json +60 -0
  897. package/docs/examples/command-palette-adapter.tsx +69 -17
  898. package/docs/examples/component-catalog-extension.json +52 -0
  899. package/docs/examples/component-composition-extension.json +80 -0
  900. package/docs/layout.md +926 -53
  901. package/docs/manual-test-plan.md +29 -0
  902. package/docs/nav-stack.md +323 -14
  903. package/docs/recipes.md +153 -73
  904. package/docs/split-view.md +96 -7
  905. package/docs/sunken-panel.md +106 -0
  906. package/docs/surface-scaffold.md +416 -0
  907. package/docs/tab-navigator.md +291 -0
  908. package/docs/type-contracts.md +137 -0
  909. package/docs/ui-analyzer.md +406 -0
  910. package/docs/ui-doctor.md +281 -0
  911. package/docs/ui-evaluator.md +139 -0
  912. package/docs/ux-demo.md +58 -17
  913. package/docs/webawesome-theme.md +215 -16
  914. package/docs/workbench.md +627 -12
  915. package/docs/writing.md +152 -0
  916. package/doctor/cli.mjs +120 -0
  917. package/doctor/component-style-checks.mjs +457 -0
  918. package/doctor/config.schema.json +94 -0
  919. package/doctor/copy-capitalization-checks.mjs +591 -0
  920. package/doctor/eslint-diagnostics.d.mts +24 -0
  921. package/doctor/eslint-diagnostics.mjs +24 -0
  922. package/doctor/index.d.mts +122 -0
  923. package/doctor/index.mjs +1424 -0
  924. package/doctor/report.schema.json +118 -0
  925. package/evaluator/cli.mjs +89 -0
  926. package/evaluator/index.d.mts +90 -0
  927. package/evaluator/index.mjs +1203 -0
  928. package/evaluator/report.schema.json +152 -0
  929. package/llms.txt +808 -50
  930. package/package.json +357 -27
  931. package/scripts/component-catalog-extension-validation.mjs +28 -0
  932. package/traversal-exclusions.mjs +86 -0
  933. package/ux-demo/recipes/app-shell.tsx +204 -16
  934. package/ux-demo/recipes/collapsible-sidebar.tsx +206 -45
  935. package/ux-demo/recipes/compact-toolbar.tsx +135 -14
  936. package/ux-demo/recipes/composer-form.tsx +133 -21
  937. package/ux-demo/recipes/list-detail-dialog.tsx +255 -14
  938. package/ux-demo/recipes/list-workspace-states.tsx +183 -11
  939. package/ux-demo/recipes/loaders.ts +11 -3
  940. package/ux-demo/recipes/loading-inspector.tsx +162 -39
  941. package/ux-demo/recipes/media-detail.tsx +272 -0
  942. package/ux-demo/recipes/mount-recipe.ts +26 -10
  943. package/ux-demo/recipes/navigation-sidebar.tsx +137 -11
  944. package/ux-demo/recipes/navigation-stack.tsx +79 -24
  945. package/ux-demo/recipes/types.ts +17 -2
  946. package/ux-demo/recipes/workspace-header.tsx +86 -5
  947. package/vite-ux-review.d.mts +83 -0
  948. package/vite-ux-review.mjs +120 -0
  949. package/dist/browser/panel-header.js +0 -7
  950. package/dist/chunk-2Z5TWHKQ.js +0 -34
  951. package/dist/chunk-2Z5TWHKQ.js.map +0 -1
  952. package/dist/chunk-37T3VNIZ.js +0 -19
  953. package/dist/chunk-37T3VNIZ.js.map +0 -1
  954. package/dist/chunk-55DATV3A.js +0 -10
  955. package/dist/chunk-55DATV3A.js.map +0 -1
  956. package/dist/chunk-56RJXPHG.js.map +0 -1
  957. package/dist/chunk-7BR3DO2A.js +0 -31
  958. package/dist/chunk-7BR3DO2A.js.map +0 -1
  959. package/dist/chunk-7JB7VPRI.js +0 -34
  960. package/dist/chunk-7JB7VPRI.js.map +0 -1
  961. package/dist/chunk-7LDCTU7D.js +0 -134
  962. package/dist/chunk-7LDCTU7D.js.map +0 -1
  963. package/dist/chunk-AQNKJRFH.js +0 -79
  964. package/dist/chunk-AQNKJRFH.js.map +0 -1
  965. package/dist/chunk-AVZHJN6C.js +0 -14
  966. package/dist/chunk-AVZHJN6C.js.map +0 -1
  967. package/dist/chunk-B24C4A6T.js +0 -22
  968. package/dist/chunk-B24C4A6T.js.map +0 -1
  969. package/dist/chunk-BLK3UEEI.js +0 -23
  970. package/dist/chunk-BLK3UEEI.js.map +0 -1
  971. package/dist/chunk-CVZYNJJ5.js +0 -265
  972. package/dist/chunk-CVZYNJJ5.js.map +0 -1
  973. package/dist/chunk-DAFFDO33.js +0 -14
  974. package/dist/chunk-DAFFDO33.js.map +0 -1
  975. package/dist/chunk-I7INRJO4.js +0 -17
  976. package/dist/chunk-I7INRJO4.js.map +0 -1
  977. package/dist/chunk-L4OKFDJY.js +0 -24
  978. package/dist/chunk-L4OKFDJY.js.map +0 -1
  979. package/dist/chunk-LC3YSAZC.js +0 -39
  980. package/dist/chunk-LC3YSAZC.js.map +0 -1
  981. package/dist/chunk-M5JRI6MN.js +0 -27
  982. package/dist/chunk-M5JRI6MN.js.map +0 -1
  983. package/dist/chunk-MFKMHK5W.js +0 -10
  984. package/dist/chunk-MFKMHK5W.js.map +0 -1
  985. package/dist/chunk-RUNWEPR4.js +0 -10
  986. package/dist/chunk-RUNWEPR4.js.map +0 -1
  987. package/dist/chunk-W2FK7ZNY.js +0 -26
  988. package/dist/chunk-W2FK7ZNY.js.map +0 -1
  989. package/dist/chunk-W5EQ3HYQ.js +0 -42
  990. package/dist/chunk-W5EQ3HYQ.js.map +0 -1
  991. package/dist/chunk-WVPYVDXY.js +0 -15
  992. package/dist/chunk-WVPYVDXY.js.map +0 -1
  993. package/dist/chunk-XXMOARTH.js +0 -229
  994. package/dist/chunk-XXMOARTH.js.map +0 -1
  995. package/dist/chunk-Y5MRDTLC.js +0 -20
  996. package/dist/chunk-Y5MRDTLC.js.map +0 -1
  997. package/dist/chunk-YGN7OMLT.js.map +0 -1
  998. package/dist/panel-header.d.ts +0 -36
  999. package/dist/panel-header.js +0 -7
  1000. package/dist/panel-header.js.map +0 -1
  1001. package/dist/styles/panel-header.css +0 -64
  1002. package/dist/styles/tab-scaffold.css +0 -84
  1003. package/dist/tab-scaffold.d.ts +0 -30
  1004. package/dist/tab-scaffold.js +0 -16
  1005. package/dist/tab-scaffold.js.map +0 -1
  1006. package/dist/wire-tab-scaffold.d.ts +0 -11
  1007. package/dist/wire-tab-scaffold.js +0 -16
  1008. package/dist/wire-tab-scaffold.js.map +0 -1
  1009. package/docs/design/templates/panel-header/icon-actions-dark.svg +0 -1
  1010. package/docs/design/templates/panel-header/icon-actions.svg +0 -1
  1011. package/docs/design/templates/panel-header/icon-summary-actions-dark.svg +0 -1
  1012. package/docs/design/templates/panel-header/icon-summary-actions.svg +0 -1
  1013. package/docs/design/templates/panel-header/no-icon-dark.svg +0 -1
  1014. package/docs/design/templates/panel-header/no-icon.svg +0 -1
  1015. package/docs/design/templates/panel-header/page-heading-dark.svg +0 -1
  1016. package/docs/design/templates/panel-header/page-heading.svg +0 -1
  1017. package/docs/design/templates/panel-header/title-only-dark.svg +0 -1
  1018. package/docs/design/templates/panel-header/title-only.svg +0 -1
  1019. package/docs/design/templates/panel-header-dark.svg +0 -13
  1020. package/docs/design/templates/panel-header.svg +0 -13
  1021. package/docs/tab-scaffold.md +0 -41
  1022. package/ux-demo/recipes/recipes.css +0 -448
@@ -0,0 +1,56 @@
1
+ import { SafeHtml } from 'kerfjs';
2
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
3
+ import { S as SemanticTone } from './semantic-tone-CdW013KF.js';
4
+
5
+ /** `row` for a list section; `card` for a board column. */
6
+ type SummaryRowPresentation = 'row' | 'card';
7
+ /** A row's place in a rounded list section, so its corners match. */
8
+ type SummaryRowListEdge = 'start' | 'end' | 'only';
9
+ type SummaryRowRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
10
+ 'data-component'?: never;
11
+ 'data-presentation'?: never;
12
+ 'data-list-edge'?: never;
13
+ 'data-rail'?: never;
14
+ 'data-selected'?: never;
15
+ 'data-dimmed'?: never;
16
+ }>;
17
+ interface SummaryRowProps {
18
+ /** The identity line: an identifier, inline status glyphs, and the title. */
19
+ title: KerfUiContent;
20
+ /** Optional leading glyph, such as a category icon. */
21
+ leading?: SafeHtml;
22
+ /** Quiet text at the end of the title line, such as a relative time. */
23
+ trailingMeta?: string | SafeHtml;
24
+ /** A wrapping line of badges, chips, and quiet text below the title. */
25
+ metadata?: KerfUiContent;
26
+ /** `row` (default) or `card`. */
27
+ presentation?: SummaryRowPresentation;
28
+ /** Title lines before clipping; default 2 for a row and 4 for a card. */
29
+ titleLines?: number;
30
+ /** A leading state rail in a semantic tone (Up Next, blocked, …). */
31
+ rail?: SemanticTone;
32
+ /** Selected state, exposed as `aria-selected`. */
33
+ selected?: boolean;
34
+ /** Dim a finished or cut item; hover and selection restore it. */
35
+ dimmed?: boolean;
36
+ /** Round the corners that meet a rounded list section's edge. */
37
+ listEdge?: SummaryRowListEdge;
38
+ /** Skip rendering while off screen in long lists (`content-visibility`). */
39
+ deferRendering?: boolean;
40
+ /** Accessible name when the visible content is not a good one. */
41
+ ariaLabel?: string;
42
+ id?: string;
43
+ className?: string;
44
+ /** Safe `data-*` identity (an item id or delegated action) on the option. */
45
+ rootAttributes?: SummaryRowRootAttributes;
46
+ }
47
+ /**
48
+ * A selectable, keyboard-focusable summary of one item, as a list row or a
49
+ * board card: an optional leading glyph and state rail, a clamped identity line
50
+ * with trailing quiet metadata, and a wrapping metadata line. It is a
51
+ * `role="option"`; place rows in a labeled `role="listbox"` and own selection
52
+ * and keyboard movement in the application.
53
+ */
54
+ declare function SummaryRow({ title, leading, trailingMeta, metadata, presentation, titleLines, rail, selected, dimmed, listEdge, deferRendering, ariaLabel, id, className, rootAttributes, }: SummaryRowProps): SafeHtml;
55
+
56
+ export { SummaryRow, type SummaryRowListEdge, type SummaryRowPresentation, type SummaryRowProps };
@@ -0,0 +1,4 @@
1
+ export { SummaryRow } from './chunk-4UB5Z3ZZ.js';
2
+
3
+
4
+ //# sourceMappingURL=summary-row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"summary-row.js"}
@@ -0,0 +1,38 @@
1
+ import * as kerfjs from 'kerfjs';
2
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
3
+ import { CssFlexKeyword, CssFlex } from './css-values.js';
4
+
5
+ /**
6
+ * Generate the sunken texture once for a document. Sunken surfaces call this
7
+ * as they render; it is idempotent, and on a server (no document) or without
8
+ * a 2D canvas it does nothing, leaving the flat lowered surface.
9
+ */
10
+ declare function ensureSunkenTexture(doc?: Document | undefined): void;
11
+
12
+ type SunkenPanelShape = 'rounded' | 'square';
13
+ interface SunkenPanelProps {
14
+ children?: KerfUiContent;
15
+ /** Optional accessible landmark name for a distinct application region. */
16
+ ariaLabel?: string;
17
+ /** Corner shape: a rounded rectangle (default) or square corners. */
18
+ shape?: SunkenPanelShape;
19
+ /** Grow or shrink within a flex parent, using Grid's typed flex contract. */
20
+ flex?: boolean | CssFlexKeyword | CssFlex;
21
+ /** Fill a parent with a definite height; use flex inside a flex layout. */
22
+ fill?: boolean;
23
+ /** Opt into keyboard (`0`) or programmatic (`-1`) focus on the panel. */
24
+ tabIndex?: 0 | -1;
25
+ /** Keep the standard focus outline visible, such as for a drop target. */
26
+ outlined?: boolean;
27
+ className?: string;
28
+ /** Native named-slot assignment when composed inside a web component. */
29
+ slot?: string;
30
+ }
31
+ /**
32
+ * A lowered application surface with one compact inset and a vertical content
33
+ * stack. The panel owns its background and padding; children own their own
34
+ * borders and internal geometry.
35
+ */
36
+ declare function SunkenPanel({ children, ariaLabel, shape, flex, fill, tabIndex, outlined, className, slot, }: SunkenPanelProps): kerfjs.SafeHtml;
37
+
38
+ export { SunkenPanel, type SunkenPanelProps, type SunkenPanelShape, ensureSunkenTexture };
@@ -0,0 +1,4 @@
1
+ export { SunkenPanel } from './chunk-D5RGM3XA.js';
2
+ export { ensureSunkenTexture } from './chunk-IKS72C6P.js';
3
+
4
+ //# sourceMappingURL=sunken-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"sunken-panel.js"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Importing this module registers wa-dialog, repairs wrapped native names, and
3
+ * measures each DialogSurface header and footer for a floating header's or
4
+ * footer's body clearance, shows a floating header's divider while content
5
+ * is scrolled beneath it, and wires a bottom sheet's resize grabber,
6
+ * virtual-keyboard clearance, and slide motion.
7
+ */
8
+ declare const surfaceScaffoldElementsRegistered = true;
9
+
10
+ export { surfaceScaffoldElementsRegistered };
@@ -0,0 +1,254 @@
1
+ import { syncSheetHandleValues, createSheetHandle, wireSheetHandle } from './chunk-QTSMHH5J.js';
2
+ import WaDialog from '@awesome.me/webawesome/dist/components/dialog/dialog.js';
3
+
4
+ // src/components/surfaces/surface-scaffold/internal/install-bottom-sheet.ts
5
+ var SHEET_HANDLE_PART = "sheet-handle";
6
+ var SHEET_HEIGHT_PROPERTY = "--_kui-dialog-surface-sheet-height";
7
+ var KEYBOARD_INSET_PROPERTY = "--_kui-dialog-surface-keyboard-inset";
8
+ var SHEET_MOTION_ATTRIBUTE = "data-kui-sheet-motion";
9
+ var installed = /* @__PURE__ */ new WeakSet();
10
+ var viewportCleanups = /* @__PURE__ */ new WeakMap();
11
+ var surfaceOf = (host) => host.parentElement?.classList.contains("kui-dialog-surface") ? host.parentElement : null;
12
+ var isBottomSheet = (host) => surfaceOf(host)?.getAttribute("data-presentation") === "bottom-sheet";
13
+ var isResizable = (host) => isBottomSheet(host) && surfaceOf(host).hasAttribute("data-resizable");
14
+ function installBottomSheet(prototype) {
15
+ if (installed.has(prototype)) return;
16
+ installed.add(prototype);
17
+ const target = prototype;
18
+ const { update, show, requestClose } = target;
19
+ target.update = function(changed) {
20
+ update.call(this, changed);
21
+ if (!surfaceOf(this)) return;
22
+ const panel = this.dialog;
23
+ if (!panel) return;
24
+ syncHandle(this, panel);
25
+ if (this.open) followViewport(this, panel);
26
+ else unfollowViewport(this);
27
+ };
28
+ target.show = function() {
29
+ const panel = this.dialog;
30
+ if (panel && surfaceOf(this)) {
31
+ panel.style.removeProperty(SHEET_HEIGHT_PROPERTY);
32
+ syncHandle(this, panel);
33
+ }
34
+ const result = show.call(this);
35
+ markMotion(this, "show", "enter", result);
36
+ void result.then(() => {
37
+ const handle = panel?.querySelector(
38
+ `:scope > [part~="${SHEET_HANDLE_PART}"]`
39
+ );
40
+ if (panel && handle && isResizable(this))
41
+ syncSheetHandleValues(handle, panel);
42
+ });
43
+ return result;
44
+ };
45
+ target.requestClose = function(source) {
46
+ const result = requestClose.call(this, source);
47
+ markMotion(this, "hide", "exit", result);
48
+ return result;
49
+ };
50
+ }
51
+ function markMotion(host, className, value, result) {
52
+ if (!surfaceOf(host) || !host.dialog?.classList.contains(className)) return;
53
+ host.setAttribute(SHEET_MOTION_ATTRIBUTE, value);
54
+ const clear = () => {
55
+ if (host.getAttribute(SHEET_MOTION_ATTRIBUTE) === value)
56
+ host.removeAttribute(SHEET_MOTION_ATTRIBUTE);
57
+ };
58
+ void result.then(clear, clear);
59
+ }
60
+ function syncHandle(host, panel) {
61
+ const existing = panel.querySelector(
62
+ `:scope > [part~="${SHEET_HANDLE_PART}"]`
63
+ );
64
+ const resizable = isResizable(host);
65
+ if (existing) existing.hidden = !resizable;
66
+ else if (resizable) createHandle(host, panel);
67
+ }
68
+ function createHandle(host, panel) {
69
+ const handle = createSheetHandle({ part: SHEET_HANDLE_PART });
70
+ panel.prepend(handle);
71
+ wireSheetHandle(handle, {
72
+ panel,
73
+ host: panel,
74
+ property: SHEET_HEIGHT_PROPERTY,
75
+ enabled: () => isResizable(host)
76
+ });
77
+ }
78
+ function keyboardInset(viewport, layoutHeight) {
79
+ if (viewport.scale > 1.01) return 0;
80
+ const inset = Math.round(layoutHeight - viewport.height - viewport.offsetTop);
81
+ return inset > 0 ? inset : 0;
82
+ }
83
+ function followViewport(host, panel) {
84
+ const viewport = globalThis.visualViewport;
85
+ if (!viewport || viewportCleanups.has(host)) return;
86
+ const publish = () => {
87
+ const inset = host.isConnected && host.open && isBottomSheet(host) ? keyboardInset(viewport, globalThis.innerHeight) : 0;
88
+ if (inset > 0)
89
+ panel.style.setProperty(KEYBOARD_INSET_PROPERTY, `${inset}px`);
90
+ else panel.style.removeProperty(KEYBOARD_INSET_PROPERTY);
91
+ if (!host.isConnected) unfollowViewport(host);
92
+ };
93
+ viewport.addEventListener("resize", publish);
94
+ viewport.addEventListener("scroll", publish);
95
+ viewportCleanups.set(host, () => {
96
+ viewport.removeEventListener("resize", publish);
97
+ viewport.removeEventListener("scroll", publish);
98
+ panel.style.removeProperty(KEYBOARD_INSET_PROPERTY);
99
+ });
100
+ publish();
101
+ }
102
+ function unfollowViewport(host) {
103
+ viewportCleanups.get(host)?.();
104
+ viewportCleanups.delete(host);
105
+ }
106
+
107
+ // src/components/surfaces/surface-scaffold/internal/install-chrome-block-size.ts
108
+ var HEADER_BLOCK_SIZE_PROPERTY = "--_kui-dialog-surface-header-block-size";
109
+ var FOOTER_BLOCK_SIZE_PROPERTY = "--_kui-dialog-surface-footer-block-size";
110
+ var CHROME_PARTS = [
111
+ ["header", HEADER_BLOCK_SIZE_PROPERTY],
112
+ ["footer", FOOTER_BLOCK_SIZE_PROPERTY]
113
+ ];
114
+ var installed2 = /* @__PURE__ */ new WeakSet();
115
+ var observedParts = /* @__PURE__ */ new WeakSet();
116
+ function installChromeBlockSize(prototype) {
117
+ if (installed2.has(prototype)) return;
118
+ installed2.add(prototype);
119
+ const target = prototype;
120
+ const update = target.update;
121
+ target.update = function(changed) {
122
+ update.call(this, changed);
123
+ if (!this.parentElement?.classList.contains("kui-dialog-surface")) return;
124
+ const panel = this.dialog;
125
+ if (!panel) return;
126
+ for (const [part, property] of CHROME_PARTS) {
127
+ const element = this.shadowRoot?.querySelector(`[part~="${part}"]`);
128
+ if (element) observePart(panel, element, property);
129
+ else panel.style.removeProperty(property);
130
+ }
131
+ };
132
+ }
133
+ function observePart(panel, element, property) {
134
+ if (observedParts.has(element)) return;
135
+ observedParts.add(element);
136
+ const publish = (blockSize) => {
137
+ const value = `${blockSize}px`;
138
+ if (panel.style.getPropertyValue(property) !== value)
139
+ panel.style.setProperty(property, value);
140
+ };
141
+ publish(element.getBoundingClientRect().height);
142
+ if (typeof ResizeObserver === "undefined") return;
143
+ new ResizeObserver((entries) => {
144
+ if (!element.isConnected) return;
145
+ const box = entries[entries.length - 1]?.borderBoxSize?.[0];
146
+ publish(box ? box.blockSize : element.getBoundingClientRect().height);
147
+ }).observe(element);
148
+ }
149
+
150
+ // src/components/surfaces/surface-scaffold/internal/install-dialog-label.ts
151
+ var installed3 = /* @__PURE__ */ new WeakSet();
152
+ var observed = /* @__PURE__ */ new WeakSet();
153
+ var ownedNames = /* @__PURE__ */ new WeakMap();
154
+ function installDialogLabel(prototype) {
155
+ if (installed3.has(prototype)) return;
156
+ installed3.add(prototype);
157
+ const target = prototype;
158
+ const update = target.update;
159
+ target.update = function(changed) {
160
+ update.call(this, changed);
161
+ if (!this.parentElement?.classList.contains("kui-dialog-surface")) return;
162
+ if (!observed.has(this)) {
163
+ observed.add(this);
164
+ new MutationObserver(() => syncDialogLabel(this)).observe(this, {
165
+ attributes: true,
166
+ attributeFilter: ["aria-label", "role"]
167
+ });
168
+ }
169
+ syncDialogLabel(this);
170
+ };
171
+ }
172
+ function syncDialogLabel(host) {
173
+ if (!host.parentElement?.classList.contains("kui-dialog-surface")) return;
174
+ const panel = host.dialog;
175
+ if (!panel) return;
176
+ const previous = ownedNames.get(panel);
177
+ if (/^(alert)?dialog$/.test(host.getAttribute("role")?.trim() ?? "")) {
178
+ if (previous && panel.getAttribute(previous.attribute) === previous.value)
179
+ panel.removeAttribute(previous.attribute);
180
+ ownedNames.delete(panel);
181
+ return;
182
+ }
183
+ const externalName = ["aria-label", "aria-labelledby"].some((attribute2) => {
184
+ const value2 = panel.getAttribute(attribute2);
185
+ return value2 !== null && !(previous?.attribute === attribute2 && previous.value === value2);
186
+ });
187
+ if (externalName) {
188
+ if (previous && panel.getAttribute(previous.attribute) === previous.value)
189
+ panel.removeAttribute(previous.attribute);
190
+ ownedNames.delete(panel);
191
+ return;
192
+ }
193
+ const explicit = host.getAttribute("aria-label")?.trim();
194
+ const title = host.shadowRoot?.getElementById("title");
195
+ const attribute = !explicit && !host.withoutHeader && title ? "aria-labelledby" : "aria-label";
196
+ const value = attribute === "aria-labelledby" ? "title" : explicit || host.label;
197
+ if (previous && previous.attribute !== attribute)
198
+ panel.removeAttribute(previous.attribute);
199
+ if (panel.getAttribute(attribute) !== value)
200
+ panel.setAttribute(attribute, value);
201
+ ownedNames.set(panel, { attribute, value });
202
+ }
203
+
204
+ // src/components/surfaces/surface-scaffold/internal/install-header-scroll-divider.ts
205
+ var HEADER_DIVIDER_PROPERTY = "--_kui-dialog-surface-header-divider";
206
+ var SHOWN = "var(--_kui-dialog-surface-header-divider-color)";
207
+ var THRESHOLD = 1;
208
+ var installed4 = /* @__PURE__ */ new WeakSet();
209
+ var wiredPanels = /* @__PURE__ */ new WeakSet();
210
+ function installHeaderScrollDivider(prototype) {
211
+ if (installed4.has(prototype)) return;
212
+ installed4.add(prototype);
213
+ const target = prototype;
214
+ const update = target.update;
215
+ target.update = function(changed) {
216
+ update.call(this, changed);
217
+ if (!this.parentElement?.classList.contains("kui-dialog-surface")) return;
218
+ const panel = this.dialog;
219
+ if (panel && !wiredPanels.has(panel)) wire(this, panel);
220
+ };
221
+ }
222
+ function wire(host, panel) {
223
+ wiredPanels.add(panel);
224
+ const scrolled = /* @__PURE__ */ new Set();
225
+ const onScroll = (event) => {
226
+ const scroller = event.target;
227
+ if (!(scroller instanceof Element)) return;
228
+ const header = host.shadowRoot?.querySelector('[part~="header"]');
229
+ const floating = host.parentElement?.getAttribute("data-header-presentation") === "floating";
230
+ if (floating && header && scroller.scrollTop > THRESHOLD && // Only a scroller that reaches beneath the header.
231
+ scroller.getBoundingClientRect().top <= header.getBoundingClientRect().bottom)
232
+ scrolled.add(scroller);
233
+ else scrolled.delete(scroller);
234
+ for (const element of scrolled)
235
+ if (!element.isConnected) scrolled.delete(element);
236
+ const value = scrolled.size > 0 ? SHOWN : "";
237
+ if (panel.style.getPropertyValue(HEADER_DIVIDER_PROPERTY) === value) return;
238
+ if (value) panel.style.setProperty(HEADER_DIVIDER_PROPERTY, value);
239
+ else panel.style.removeProperty(HEADER_DIVIDER_PROPERTY);
240
+ };
241
+ for (const root of [panel, host])
242
+ root.addEventListener("scroll", onScroll, { capture: true, passive: true });
243
+ }
244
+
245
+ // src/components/surfaces/surface-scaffold/register/surface-scaffold-register.ts
246
+ installDialogLabel(WaDialog.prototype);
247
+ installChromeBlockSize(WaDialog.prototype);
248
+ installHeaderScrollDivider(WaDialog.prototype);
249
+ installBottomSheet(WaDialog.prototype);
250
+ var surfaceScaffoldElementsRegistered = true;
251
+
252
+ export { surfaceScaffoldElementsRegistered };
253
+
254
+ //# sourceMappingURL=surface-scaffold-register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/surfaces/surface-scaffold/internal/install-bottom-sheet.ts","../src/components/surfaces/surface-scaffold/internal/install-chrome-block-size.ts","../src/components/surfaces/surface-scaffold/internal/install-dialog-label.ts","../src/components/surfaces/surface-scaffold/internal/install-header-scroll-divider.ts","../src/components/surfaces/surface-scaffold/register/surface-scaffold-register.ts"],"names":["installed","attribute","value"],"mappings":"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","file":"surface-scaffold-register.js","sourcesContent":["import {\n createSheetHandle,\n syncSheetHandleValues,\n wireSheetHandle,\n} from './sheet-handle.js';\n\ninterface SheetDialog extends HTMLElement {\n dialog?: HTMLDialogElement;\n open?: boolean;\n update(changed: unknown): void;\n show(): Promise<void>;\n requestClose(source: Element): Promise<void>;\n}\n\n/** The shadow part of a resizable bottom sheet's grabber. */\nexport const SHEET_HANDLE_PART = 'sheet-handle';\n\n/** The panel variable holding a resized sheet's visible height. */\nexport const SHEET_HEIGHT_PROPERTY = '--_kui-dialog-surface-sheet-height';\n\n/** The panel variable holding the virtual keyboard's overlap. */\nexport const KEYBOARD_INSET_PROPERTY = '--_kui-dialog-surface-keyboard-inset';\n\n/**\n * The host attribute marking the show (`enter`) or hide (`exit`) animation\n * while it runs, so the CSS can swap only those keyframes (never the pulse).\n */\nexport const SHEET_MOTION_ATTRIBUTE = 'data-kui-sheet-motion';\n\nconst installed = new WeakSet<object>();\nconst viewportCleanups = new WeakMap<SheetDialog, () => void>();\n\nconst surfaceOf = (host: SheetDialog): HTMLElement | null =>\n host.parentElement?.classList.contains('kui-dialog-surface')\n ? host.parentElement\n : null;\n\nconst isBottomSheet = (host: SheetDialog): boolean =>\n surfaceOf(host)?.getAttribute('data-presentation') === 'bottom-sheet';\n\nconst isResizable = (host: SheetDialog): boolean =>\n isBottomSheet(host) && surfaceOf(host)!.hasAttribute('data-resizable');\n\n/**\n * Wire DialogSurface's `presentation=\"bottom-sheet\"`: inject the resize\n * grabber into the shadow panel (a `role=\"separator\"` the CSS shows only for\n * a resizable sheet), follow the virtual keyboard through `visualViewport`\n * while the dialog is open, and mark the show and hide animations so the\n * sheet can slide instead of scaling. Every state lives on the shadow panel\n * or the host, where Kerf rerenders never reach.\n */\nexport function installBottomSheet(prototype: object): void {\n if (installed.has(prototype)) return;\n installed.add(prototype);\n const target = prototype as SheetDialog;\n const { update, show, requestClose } = target;\n target.update = function (this: SheetDialog, changed: unknown): void {\n update.call(this, changed);\n if (!surfaceOf(this)) return;\n const panel = this.dialog;\n if (!panel) return;\n syncHandle(this, panel);\n if (this.open) followViewport(this, panel);\n else unfollowViewport(this);\n };\n target.show = function (this: SheetDialog): Promise<void> {\n // Each opening starts at the configured (or content) height.\n const panel = this.dialog;\n if (panel && surfaceOf(this)) {\n panel.style.removeProperty(SHEET_HEIGHT_PROPERTY);\n syncHandle(this, panel);\n }\n const result = show.call(this);\n markMotion(this, 'show', 'enter', result);\n // The host only displays once Lit reflects `open`: report the values\n // when the opening settles.\n void result.then(() => {\n const handle = panel?.querySelector(\n `:scope > [part~=\"${SHEET_HANDLE_PART}\"]`,\n );\n if (panel && handle && isResizable(this))\n syncSheetHandleValues(handle, panel);\n });\n return result;\n };\n target.requestClose = function (\n this: SheetDialog,\n source: Element,\n ): Promise<void> {\n const result = requestClose.call(this, source);\n markMotion(this, 'hide', 'exit', result);\n return result;\n };\n}\n\n/**\n * Web Awesome adds its animation class synchronously before its first await,\n * so the class tells a real show or hide from a prevented (pulsing) close.\n */\nfunction markMotion(\n host: SheetDialog,\n className: string,\n value: string,\n result: Promise<void>,\n): void {\n if (!surfaceOf(host) || !host.dialog?.classList.contains(className)) return;\n host.setAttribute(SHEET_MOTION_ATTRIBUTE, value);\n const clear = (): void => {\n if (host.getAttribute(SHEET_MOTION_ATTRIBUTE) === value)\n host.removeAttribute(SHEET_MOTION_ATTRIBUTE);\n };\n void result.then(clear, clear);\n}\n\n/** Show the grabber on a resizable bottom sheet only, creating it on first need. */\nfunction syncHandle(host: SheetDialog, panel: HTMLElement): void {\n const existing = panel.querySelector<HTMLElement>(\n `:scope > [part~=\"${SHEET_HANDLE_PART}\"]`,\n );\n const resizable = isResizable(host);\n if (existing) existing.hidden = !resizable;\n else if (resizable) createHandle(host, panel);\n}\n\nfunction createHandle(host: SheetDialog, panel: HTMLElement): void {\n const handle = createSheetHandle({ part: SHEET_HANDLE_PART });\n // Before Lit's first marker, outside every part Lit owns.\n panel.prepend(handle);\n wireSheetHandle(handle, {\n panel,\n host: panel,\n property: SHEET_HEIGHT_PROPERTY,\n enabled: () => isResizable(host),\n });\n}\n\n/**\n * The layout viewport's bottom band a virtual keyboard covers: what the\n * visual viewport no longer shows below itself. Zero while pinch-zoomed (the\n * visual viewport then shrinks for another reason) and wherever the keyboard\n * resizes the layout viewport instead (`interactive-widget=resizes-content`).\n */\nexport function keyboardInset(\n viewport: Pick<VisualViewport, 'height' | 'offsetTop' | 'scale'>,\n layoutHeight: number,\n): number {\n if (viewport.scale > 1.01) return 0;\n const inset = Math.round(layoutHeight - viewport.height - viewport.offsetTop);\n return inset > 0 ? inset : 0;\n}\n\nfunction followViewport(host: SheetDialog, panel: HTMLElement): void {\n const viewport = globalThis.visualViewport;\n if (!viewport || viewportCleanups.has(host)) return;\n const publish = (): void => {\n const inset =\n host.isConnected && host.open && isBottomSheet(host)\n ? keyboardInset(viewport, globalThis.innerHeight)\n : 0;\n if (inset > 0)\n panel.style.setProperty(KEYBOARD_INSET_PROPERTY, `${inset}px`);\n else panel.style.removeProperty(KEYBOARD_INSET_PROPERTY);\n if (!host.isConnected) unfollowViewport(host);\n };\n viewport.addEventListener('resize', publish);\n viewport.addEventListener('scroll', publish);\n viewportCleanups.set(host, () => {\n viewport.removeEventListener('resize', publish);\n viewport.removeEventListener('scroll', publish);\n panel.style.removeProperty(KEYBOARD_INSET_PROPERTY);\n });\n publish();\n}\n\nfunction unfollowViewport(host: SheetDialog): void {\n viewportCleanups.get(host)?.();\n viewportCleanups.delete(host);\n}\n","interface ChromeDialog extends HTMLElement {\n dialog?: HTMLDialogElement;\n update(changed: unknown): void;\n}\n\n/** The panel variable a floating header's body clearance reads. */\nexport const HEADER_BLOCK_SIZE_PROPERTY =\n '--_kui-dialog-surface-header-block-size';\n\n/** The panel variable a floating footer's body clearance reads. */\nexport const FOOTER_BLOCK_SIZE_PROPERTY =\n '--_kui-dialog-surface-footer-block-size';\n\n/** Each measured dialog part, with the panel variable it publishes. */\nconst CHROME_PARTS = [\n ['header', HEADER_BLOCK_SIZE_PROPERTY],\n ['footer', FOOTER_BLOCK_SIZE_PROPERTY],\n] as const;\n\nconst installed = new WeakSet<object>();\nconst observedParts = new WeakSet<Element>();\n\n/**\n * Publish a DialogSurface's header and footer block sizes on its shadow\n * panel, where Kerf rerenders never reach, so a floating header's or footer's\n * body clearance follows that chrome as its content grows, wraps, or hides.\n */\nexport function installChromeBlockSize(prototype: object): void {\n if (installed.has(prototype)) return;\n installed.add(prototype);\n const target = prototype as ChromeDialog;\n const update = target.update;\n target.update = function (this: ChromeDialog, changed: unknown): void {\n update.call(this, changed);\n if (!this.parentElement?.classList.contains('kui-dialog-surface')) return;\n const panel = this.dialog;\n if (!panel) return;\n for (const [part, property] of CHROME_PARTS) {\n const element = this.shadowRoot?.querySelector(`[part~=\"${part}\"]`);\n // Web Awesome drops the header part under `without-header`; with no\n // part to clear, the floating clearance falls back to zero.\n if (element) observePart(panel, element, property);\n else panel.style.removeProperty(property);\n }\n };\n}\n\nfunction observePart(\n panel: HTMLElement,\n element: Element,\n property: string,\n): void {\n if (observedParts.has(element)) return;\n observedParts.add(element);\n const publish = (blockSize: number): void => {\n const value = `${blockSize}px`;\n if (panel.style.getPropertyValue(property) !== value)\n panel.style.setProperty(property, value);\n };\n publish(element.getBoundingClientRect().height);\n if (typeof ResizeObserver === 'undefined') return;\n new ResizeObserver((entries) => {\n // A part Web Awesome has since removed no longer owns the variable.\n if (!element.isConnected) return;\n const box = entries[entries.length - 1]?.borderBoxSize?.[0];\n publish(box ? box.blockSize : element.getBoundingClientRect().height);\n }).observe(element);\n}\n","interface NamedDialog extends HTMLElement {\n dialog?: HTMLDialogElement;\n label: string;\n withoutHeader: boolean;\n update(changed: unknown): void;\n}\n\nconst installed = new WeakSet<object>();\nconst observed = new WeakSet<HTMLElement>();\nconst ownedNames = new WeakMap<\n HTMLElement,\n { attribute: string; value: string }\n>();\n\n/** Repair Web Awesome's missing native dialog name before its first modal open. */\nexport function installDialogLabel(prototype: object): void {\n if (installed.has(prototype)) return;\n installed.add(prototype);\n const target = prototype as NamedDialog;\n const update = target.update;\n target.update = function (this: NamedDialog, changed: unknown): void {\n update.call(this, changed);\n if (!this.parentElement?.classList.contains('kui-dialog-surface')) return;\n if (!observed.has(this)) {\n observed.add(this);\n new MutationObserver(() => syncDialogLabel(this)).observe(this, {\n attributes: true,\n attributeFilter: ['aria-label', 'role'],\n });\n }\n syncDialogLabel(this);\n };\n}\n\nfunction syncDialogLabel(host: NamedDialog): void {\n if (!host.parentElement?.classList.contains('kui-dialog-surface')) return;\n const panel = host.dialog;\n if (!panel) return;\n const previous = ownedNames.get(panel);\n // A host that is itself the named dialog (an explicit role=\"dialog\" plus\n // its own name) owns that name; naming the panel too would expose two\n // dialogs with one name.\n if (/^(alert)?dialog$/.test(host.getAttribute('role')?.trim() ?? '')) {\n if (previous && panel.getAttribute(previous.attribute) === previous.value)\n panel.removeAttribute(previous.attribute);\n ownedNames.delete(panel);\n return;\n }\n const externalName = ['aria-label', 'aria-labelledby'].some((attribute) => {\n const value = panel.getAttribute(attribute);\n return (\n value !== null &&\n !(previous?.attribute === attribute && previous.value === value)\n );\n });\n if (externalName) {\n if (previous && panel.getAttribute(previous.attribute) === previous.value)\n panel.removeAttribute(previous.attribute);\n ownedNames.delete(panel);\n return;\n }\n const explicit = host.getAttribute('aria-label')?.trim();\n const title = host.shadowRoot?.getElementById('title');\n const attribute =\n !explicit && !host.withoutHeader && title\n ? 'aria-labelledby'\n : 'aria-label';\n const value =\n attribute === 'aria-labelledby' ? 'title' : explicit || host.label;\n if (previous && previous.attribute !== attribute)\n panel.removeAttribute(previous.attribute);\n if (panel.getAttribute(attribute) !== value)\n panel.setAttribute(attribute, value);\n ownedNames.set(panel, { attribute, value });\n}\n","interface ChromeDialog extends HTMLElement {\n dialog?: HTMLDialogElement;\n update(changed: unknown): void;\n}\n\n/**\n * The panel variable a floating header's divider reads: set while content\n * is scrolled away beneath the header, unset (no divider) otherwise.\n */\nexport const HEADER_DIVIDER_PROPERTY = '--_kui-dialog-surface-header-divider';\n\n/** The value published while the divider shows: the color the CSS owns. */\nconst SHOWN = 'var(--_kui-dialog-surface-header-divider-color)';\n\n/**\n * Scroll distance, in px, that counts as \"away from the top\": a scroller at\n * rest can report a fractional offset.\n */\nconst THRESHOLD = 1;\n\nconst installed = new WeakSet<object>();\nconst wiredPanels = new WeakSet<Element>();\n\n/**\n * Draw a floating DialogSurface header's divider while content is scrolled\n * beneath it, the way a Pane's overlay header does. Capture-phase `scroll`\n * listeners on the shadow panel and the host see both the body part (flowing\n * content) and a slotted filling child that reaches beneath the header (a\n * transcript `List` or `Pane` with block-start `scrollClearance`); a nested\n * scroller that starts below the header never counts. The state is published\n * on the panel, where Kerf rerenders never reach.\n */\nexport function installHeaderScrollDivider(prototype: object): void {\n if (installed.has(prototype)) return;\n installed.add(prototype);\n const target = prototype as ChromeDialog;\n const update = target.update;\n target.update = function (this: ChromeDialog, changed: unknown): void {\n update.call(this, changed);\n if (!this.parentElement?.classList.contains('kui-dialog-surface')) return;\n const panel = this.dialog;\n if (panel && !wiredPanels.has(panel)) wire(this, panel);\n };\n}\n\nfunction wire(host: ChromeDialog, panel: HTMLElement): void {\n wiredPanels.add(panel);\n const scrolled = new Set<Element>();\n const onScroll = (event: Event): void => {\n const scroller = event.target;\n if (!(scroller instanceof Element)) return;\n const header = host.shadowRoot?.querySelector('[part~=\"header\"]');\n const floating =\n host.parentElement?.getAttribute('data-header-presentation') ===\n 'floating';\n if (\n floating &&\n header &&\n scroller.scrollTop > THRESHOLD &&\n // Only a scroller that reaches beneath the header.\n scroller.getBoundingClientRect().top <=\n header.getBoundingClientRect().bottom\n )\n scrolled.add(scroller);\n else scrolled.delete(scroller);\n for (const element of scrolled)\n if (!element.isConnected) scrolled.delete(element);\n const value = scrolled.size > 0 ? SHOWN : '';\n if (panel.style.getPropertyValue(HEADER_DIVIDER_PROPERTY) === value) return;\n if (value) panel.style.setProperty(HEADER_DIVIDER_PROPERTY, value);\n else panel.style.removeProperty(HEADER_DIVIDER_PROPERTY);\n };\n // `scroll` does not bubble or leave a shadow root: the panel's capture\n // listener sees the body part, the host's sees slotted scrollers.\n for (const root of [panel, host])\n root.addEventListener('scroll', onScroll, { capture: true, passive: true });\n}\n","import WaDialog from '@awesome.me/webawesome/dist/components/dialog/dialog.js';\n\nimport { installBottomSheet } from '../internal/install-bottom-sheet.js';\nimport { installChromeBlockSize } from '../internal/install-chrome-block-size.js';\nimport { installDialogLabel } from '../internal/install-dialog-label.js';\nimport { installHeaderScrollDivider } from '../internal/install-header-scroll-divider.js';\n\ninstallDialogLabel(WaDialog.prototype);\ninstallChromeBlockSize(WaDialog.prototype);\ninstallHeaderScrollDivider(WaDialog.prototype);\ninstallBottomSheet(WaDialog.prototype);\n\n/**\n * Importing this module registers wa-dialog, repairs wrapped native names, and\n * measures each DialogSurface header and footer for a floating header's or\n * footer's body clearance, shows a floating header's divider while content\n * is scrolled beneath it, and wires a bottom sheet's resize grabber,\n * virtual-keyboard clearance, and slide motion.\n */\nexport const surfaceScaffoldElementsRegistered = true;\n"]}
@@ -0,0 +1,203 @@
1
+ import * as kerfjs from 'kerfjs';
2
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
3
+ import { CssLength } from './css-values.js';
4
+
5
+ type DialogSurfaceSize = 'small' | 'medium' | 'large';
6
+ /**
7
+ * How the dialog is presented: `modal` (default) centered on the screen,
8
+ * `side-sheet` against the inline end, `fullscreen`, or `bottom-sheet`
9
+ * attached to the bottom edge (square bottom corners, safe-area and
10
+ * virtual-keyboard clearance, optionally user-resizable).
11
+ */
12
+ type DialogSurfacePresentation = 'modal' | 'side-sheet' | 'fullscreen' | 'bottom-sheet';
13
+ /**
14
+ * How a bottom sheet appears or leaves: `slide` (default) moves the panel in
15
+ * from, or out to, the bottom edge; `standard` keeps Web Awesome's
16
+ * scale-and-fade. Both honor `prefers-reduced-motion`.
17
+ */
18
+ type DialogSurfaceSheetMotion = 'slide' | 'standard';
19
+ type SurfaceInset = 'none' | 'compact' | 'comfortable';
20
+ type DialogSurfaceMaxHeight = CssLength | 'viewport';
21
+ /** A definite modal height: a length or the full viewport, minus both gutters. */
22
+ type DialogSurfaceHeight = CssLength | 'viewport';
23
+ /**
24
+ * How the dialog body lays out its children: `flow` (default) scrolls ordinary
25
+ * content in the body; `fill` gives one child the body's whole height and
26
+ * lets it own scrolling (a SplitView, a Pane, an editor); `fill-last` stacks
27
+ * the leading children at their natural height and gives the last child the
28
+ * remaining height to own its scrolling (a heading and notices above a
29
+ * scrolling transcript).
30
+ */
31
+ type DialogSurfaceBodyLayout = 'flow' | 'fill' | 'fill-last';
32
+ /**
33
+ * Where the dialog footer sits: `docked` (default) below the body, or
34
+ * `floating` over the body's block end, inset from the panel's inline and
35
+ * block-end edges on a transparent background (a chat composer).
36
+ */
37
+ type DialogSurfaceFooterPresentation = 'docked' | 'floating';
38
+ /**
39
+ * Where the dialog header sits: `docked` (default) above the body, or
40
+ * `floating` over the body's block-start edge on the translucent chrome
41
+ * material, so content scrolls visibly beneath the title bar.
42
+ */
43
+ type DialogSurfaceHeaderPresentation = 'docked' | 'floating';
44
+ /**
45
+ * Application `data-*` identity on the DialogSurface root, such as
46
+ * `data-key`; the surface's own configuration attributes stay protected.
47
+ */
48
+ type DialogSurfaceRootAttributes = Readonly<Record<`data-${string}`, string | undefined>>;
49
+ interface DialogSurfaceProps {
50
+ children: KerfUiContent;
51
+ size?: DialogSurfaceSize;
52
+ presentation?: DialogSurfacePresentation;
53
+ /** Modal preferred width. Takes precedence over size, within the viewport cap. */
54
+ preferredWidth?: CssLength;
55
+ bodyInset?: SurfaceInset;
56
+ footerInset?: SurfaceInset;
57
+ /** Modal edge clearance. Omit to retain Web Awesome's default viewport cap. */
58
+ viewportGutter?: CssLength;
59
+ /**
60
+ * Modal height cap, bounded by the dynamic viewport minus both gutters. On a
61
+ * bottom sheet, the cap (and the resize ceiling), bounded by the dynamic
62
+ * viewport minus the top safe area and one gutter.
63
+ */
64
+ maxHeight?: DialogSurfaceMaxHeight;
65
+ /**
66
+ * Modal definite height, bounded the same way, so a filling child has a
67
+ * height to fill. Takes precedence over `maxHeight`. On a bottom sheet, the
68
+ * height it opens at (the visible height above the safe area or keyboard).
69
+ */
70
+ height?: DialogSurfaceHeight;
71
+ /**
72
+ * A resizable bottom sheet's resize floor (default 160px), the visible
73
+ * height above the safe area or keyboard.
74
+ */
75
+ minHeight?: CssLength;
76
+ /**
77
+ * Let the person resize a bottom sheet by its top grabber (drag, or the
78
+ * arrow, Page Up/Down, Home and End keys) between `minHeight` and the
79
+ * sheet's cap. Needs the `/register` entry; each opening starts at `height`
80
+ * (or the content height). Ignored by other presentations.
81
+ */
82
+ resizable?: boolean;
83
+ /** How a bottom sheet appears (default `slide` up from the bottom edge). */
84
+ enterMotion?: DialogSurfaceSheetMotion;
85
+ /** How a bottom sheet is dismissed (default `slide` down off the bottom edge). */
86
+ exitMotion?: DialogSurfaceSheetMotion;
87
+ /**
88
+ * Body layout (default `flow`); `fill` lets one child own the body and
89
+ * `fill-last` stacks fixed rows above one filling last child.
90
+ */
91
+ bodyLayout?: DialogSurfaceBodyLayout;
92
+ /**
93
+ * Header placement (default `docked`); `floating` lays the dialog's header
94
+ * (its title and close control) over the body's block-start edge on the
95
+ * translucent chrome material (`--kui-chrome-material-raised`, opaque under
96
+ * `prefers-reduced-transparency`, increased contrast, forced colors, or
97
+ * without `backdrop-filter`). The `/register` entry measures the header;
98
+ * the body reserves that height before its own inset, so its first content
99
+ * rests below the title bar. A `fill`/`fill-last` child that is the body's
100
+ * only child and opts into block-start `scrollClearance` (a `List` or
101
+ * `Pane`) takes the clearance inside its own scroll area instead, published
102
+ * as `--kui-scroll-clearance-block-start`, so its content scrolls visibly
103
+ * beneath the header. Unmeasured (without the register), the header stays
104
+ * docked. Keep header text in the normal text color: quiet text can fall
105
+ * below AA over the content passing beneath it.
106
+ */
107
+ headerPresentation?: DialogSurfaceHeaderPresentation;
108
+ /**
109
+ * Footer placement (default `docked`); `floating` lays the footer over the
110
+ * body's block end. The body reserves the footer's measured height so its
111
+ * last content is never hidden beneath it. A `fill`/`fill-last` child that
112
+ * opts into block-end `scrollClearance` (a `List` or `Pane`) takes that
113
+ * clearance inside its own scroll area instead, published as
114
+ * `--kui-scroll-clearance-block-end`, so its content scrolls visibly beneath
115
+ * the transparent footer.
116
+ */
117
+ footerPresentation?: DialogSurfaceFooterPresentation;
118
+ /**
119
+ * A floating footer's clearance from the panel's inline and block-end edges
120
+ * (default the 16px container inset). Choose a phone value such as
121
+ * `remify(8)` from `deviceClass()`; the scaffold adds no breakpoint.
122
+ */
123
+ footerOffset?: CssLength;
124
+ /**
125
+ * Safe `data-*` identity on the root. Give sibling dialogs distinct
126
+ * `data-key`s so a re-render morphs each surface into itself instead of
127
+ * reusing one dialog's element for another (structurally identical roots
128
+ * are otherwise matched by position).
129
+ */
130
+ rootAttributes?: DialogSurfaceRootAttributes;
131
+ className?: string;
132
+ /** Native named-slot assignment when composed inside a web component. */
133
+ slot?: string;
134
+ }
135
+ /** Configure recurring Web Awesome dialog geometry without consumer ::part() CSS. */
136
+ declare function DialogSurface({ children, size, presentation, preferredWidth, bodyInset, footerInset, viewportGutter, maxHeight, height, minHeight, resizable, enterMotion, exitMotion, bodyLayout, headerPresentation, footerPresentation, footerOffset, rootAttributes, className, slot, }: DialogSurfaceProps): kerfjs.SafeHtml;
137
+ /** Where a PopoverDialogSurface appears: the top layer, or in flow. */
138
+ type PopoverDialogSurfacePresentation = 'overlay' | 'embedded';
139
+ /** Application `data-*` metadata on the surface root. */
140
+ type PopoverDialogSurfaceDataAttributes = Readonly<Record<`data-${string}`, string>>;
141
+ type PopoverDialogSurfaceName = {
142
+ label: string;
143
+ labelledBy?: never;
144
+ } | {
145
+ label?: never;
146
+ labelledBy: string;
147
+ };
148
+ type PopoverDialogSurfaceProps = PopoverDialogSurfaceName & {
149
+ /** The root id: what an opening control's `popovertarget` names. */
150
+ id?: string;
151
+ /**
152
+ * Id of the element whose text is the dialog's accessible description,
153
+ * such as a title `ToolbarText`'s `descriptionId`; rendered as
154
+ * `aria-describedby` on the `role="dialog"` root.
155
+ */
156
+ describedBy?: string;
157
+ children: KerfUiContent;
158
+ /**
159
+ * `overlay` (default) is a native `popover="auto"` in the top layer:
160
+ * non-modal, light dismiss (Escape or a press outside), nothing inert.
161
+ * `embedded` renders the same surface in flow for a catalog or inline use.
162
+ */
163
+ presentation?: PopoverDialogSurfacePresentation;
164
+ /** Preferred width preset: 400px, 560px (default), or 800px. */
165
+ size?: DialogSurfaceSize;
166
+ /** Preferred width; takes precedence over `size`, within the viewport cap. */
167
+ preferredWidth?: CssLength;
168
+ /** Definite height, bounded by the dynamic viewport minus both gutters. */
169
+ height?: DialogSurfaceHeight;
170
+ /** Height cap, bounded the same way, for a surface that sizes to content. */
171
+ maxHeight?: DialogSurfaceMaxHeight;
172
+ /** Edge clearance on each side of the viewport (default 16px). */
173
+ viewportGutter?: CssLength;
174
+ /**
175
+ * Body layout (default `flow`); `fill` lets one child own the surface and
176
+ * `fill-last` stacks fixed rows above one filling last child.
177
+ */
178
+ bodyLayout?: DialogSurfaceBodyLayout;
179
+ rootAttributes?: PopoverDialogSurfaceDataAttributes;
180
+ className?: string;
181
+ /** Native named-slot assignment when composed inside a web component. */
182
+ slot?: string;
183
+ };
184
+ /**
185
+ * A non-modal dialog surface on the native Popover API: Kerf's dialog chrome,
186
+ * viewport-bounded size, and single-child fill without application CSS.
187
+ * Open it with a `popovertarget` control or `showPopover()`; it light
188
+ * dismisses and leaves the page interactive. Use `DialogSurface` with
189
+ * `wa-dialog` when the task must block the page.
190
+ */
191
+ declare function PopoverDialogSurface({ id, children, label, labelledBy, describedBy, presentation, size, preferredWidth, height, maxHeight, viewportGutter, bodyLayout, rootAttributes, className, slot, }: PopoverDialogSurfaceProps): kerfjs.SafeHtml;
192
+ type PopupSurfaceInset = 'standard' | 'compact' | 'list-zero';
193
+ interface PopupSurfaceProps {
194
+ children: KerfUiContent;
195
+ inset?: PopupSurfaceInset;
196
+ className?: string;
197
+ /** Native named-slot assignment when composed inside a web component. */
198
+ slot?: string;
199
+ }
200
+ /** Configure recurring Web Awesome dropdown-menu geometry without consumer ::part() CSS. */
201
+ declare function PopupSurface({ children, inset, className, slot, }: PopupSurfaceProps): kerfjs.SafeHtml;
202
+
203
+ export { DialogSurface, type DialogSurfaceBodyLayout, type DialogSurfaceFooterPresentation, type DialogSurfaceHeaderPresentation, type DialogSurfaceHeight, type DialogSurfaceMaxHeight, type DialogSurfacePresentation, type DialogSurfaceProps, type DialogSurfaceRootAttributes, type DialogSurfaceSheetMotion, type DialogSurfaceSize, PopoverDialogSurface, type PopoverDialogSurfaceDataAttributes, type PopoverDialogSurfacePresentation, type PopoverDialogSurfaceProps, PopupSurface, type PopupSurfaceInset, type PopupSurfaceProps, type SurfaceInset };
@@ -0,0 +1,4 @@
1
+ export { DialogSurface, PopoverDialogSurface, PopupSurface } from './chunk-BYFTHA4I.js';
2
+
3
+
4
+ //# sourceMappingURL=surface-scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"surface-scaffold.js"}