@kerfjs/ui 5.0.0-beta.9 → 5.0.0-beta.90

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 (802) hide show
  1. package/README.md +540 -132
  2. package/ai/application-ui-diagnostic-ids-v1.json +113 -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 +4487 -633
  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 +520 -0
  20. package/ai/component-composition.d.ts +129 -0
  21. package/ai/component-composition.json +7470 -0
  22. package/ai/component-composition.schema.json +408 -0
  23. package/ai/components/README.md +172 -0
  24. package/ai/components/anchored-surface.md +86 -0
  25. package/ai/components/application-tabs.md +65 -0
  26. package/ai/components/badge.md +72 -0
  27. package/ai/components/chip.md +72 -0
  28. package/ai/components/collapsible-panel.md +102 -0
  29. package/ai/components/content-item.md +96 -0
  30. package/ai/components/disclosure-arrow.md +77 -0
  31. package/ai/components/document-baseline.md +75 -0
  32. package/ai/components/empty-state.md +80 -0
  33. package/ai/components/feedback.md +71 -0
  34. package/ai/components/floating-toolbar.md +82 -0
  35. package/ai/components/foundation.md +65 -0
  36. package/ai/components/grid.md +100 -0
  37. package/ai/components/headers.md +63 -0
  38. package/ai/components/layout.md +75 -0
  39. package/ai/components/list-action-row.md +91 -0
  40. package/ai/components/list-header.md +91 -0
  41. package/ai/components/list-inset-control.md +74 -0
  42. package/ai/components/list-inset-text.md +72 -0
  43. package/ai/components/list-item.md +94 -0
  44. package/ai/components/list.md +106 -0
  45. package/ai/components/loading-spinner.md +73 -0
  46. package/ai/components/lucide-icon.md +97 -0
  47. package/ai/components/nav-stack.md +105 -0
  48. package/ai/components/pane.md +106 -0
  49. package/ai/components/popup-menu.md +171 -0
  50. package/ai/components/recipe-app-shell.md +57 -0
  51. package/ai/components/recipe-collapsible-sidebar.md +57 -0
  52. package/ai/components/recipe-compact-toolbar.md +57 -0
  53. package/ai/components/recipe-composer-form.md +57 -0
  54. package/ai/components/recipe-list-detail-dialog.md +57 -0
  55. package/ai/components/recipe-list-workspace-states.md +57 -0
  56. package/ai/components/recipe-loading-inspector.md +57 -0
  57. package/ai/components/recipe-navigation-sidebar.md +57 -0
  58. package/ai/components/recipe-navigation-stack.md +57 -0
  59. package/ai/components/recipe-workspace-header.md +57 -0
  60. package/ai/components/resize.md +106 -0
  61. package/ai/components/row.md +96 -0
  62. package/ai/components/segmented-control.md +82 -0
  63. package/ai/components/select.md +115 -0
  64. package/ai/components/skeleton.md +84 -0
  65. package/ai/components/spacer.md +86 -0
  66. package/ai/components/split-view.md +103 -0
  67. package/ai/components/state-banner.md +94 -0
  68. package/ai/components/sunken-panel.md +79 -0
  69. package/ai/components/surface-scaffold.md +87 -0
  70. package/ai/components/tab-bar.md +113 -0
  71. package/ai/components/tab-navigator.md +96 -0
  72. package/ai/components/tabs.md +95 -0
  73. package/ai/components/text.md +87 -0
  74. package/ai/components/token-search-field.md +107 -0
  75. package/ai/components/toolbar-control-group.md +121 -0
  76. package/ai/components/toolbar-text.md +98 -0
  77. package/ai/components/toolbar.md +101 -0
  78. package/ai/components/value-table.md +73 -0
  79. package/ai/components/wa-accordion-item.md +55 -0
  80. package/ai/components/wa-accordion.md +65 -0
  81. package/ai/components/wa-animated-image.md +55 -0
  82. package/ai/components/wa-animation.md +55 -0
  83. package/ai/components/wa-avatar.md +55 -0
  84. package/ai/components/wa-badge.md +55 -0
  85. package/ai/components/wa-breadcrumb-item.md +53 -0
  86. package/ai/components/wa-breadcrumb.md +55 -0
  87. package/ai/components/wa-button-group.md +59 -0
  88. package/ai/components/wa-button.md +55 -0
  89. package/ai/components/wa-callout.md +58 -0
  90. package/ai/components/wa-card.md +59 -0
  91. package/ai/components/wa-carousel-item.md +53 -0
  92. package/ai/components/wa-carousel.md +55 -0
  93. package/ai/components/wa-checkbox-group.md +55 -0
  94. package/ai/components/wa-checkbox.md +55 -0
  95. package/ai/components/wa-color-picker.md +55 -0
  96. package/ai/components/wa-comparison.md +55 -0
  97. package/ai/components/wa-copy-button.md +55 -0
  98. package/ai/components/wa-details.md +61 -0
  99. package/ai/components/wa-dialog.md +59 -0
  100. package/ai/components/wa-divider.md +53 -0
  101. package/ai/components/wa-drawer.md +55 -0
  102. package/ai/components/wa-dropdown-item.md +60 -0
  103. package/ai/components/wa-dropdown.md +60 -0
  104. package/ai/components/wa-format-bytes.md +53 -0
  105. package/ai/components/wa-format-date.md +53 -0
  106. package/ai/components/wa-format-number.md +53 -0
  107. package/ai/components/wa-icon.md +58 -0
  108. package/ai/components/wa-include.md +53 -0
  109. package/ai/components/wa-input.md +59 -0
  110. package/ai/components/wa-intersection-observer.md +53 -0
  111. package/ai/components/wa-known-date.md +53 -0
  112. package/ai/components/wa-markdown.md +53 -0
  113. package/ai/components/wa-mutation-observer.md +53 -0
  114. package/ai/components/wa-number-input.md +55 -0
  115. package/ai/components/wa-option.md +59 -0
  116. package/ai/components/wa-otp-input.md +53 -0
  117. package/ai/components/wa-page.md +53 -0
  118. package/ai/components/wa-pagination.md +55 -0
  119. package/ai/components/wa-popover.md +55 -0
  120. package/ai/components/wa-popup.md +53 -0
  121. package/ai/components/wa-progress-bar.md +53 -0
  122. package/ai/components/wa-progress-ring.md +53 -0
  123. package/ai/components/wa-qr-code.md +53 -0
  124. package/ai/components/wa-radio-group.md +59 -0
  125. package/ai/components/wa-radio.md +55 -0
  126. package/ai/components/wa-random-content.md +53 -0
  127. package/ai/components/wa-rating.md +55 -0
  128. package/ai/components/wa-relative-time.md +53 -0
  129. package/ai/components/wa-resize-observer.md +53 -0
  130. package/ai/components/wa-scroller.md +53 -0
  131. package/ai/components/wa-select.md +63 -0
  132. package/ai/components/wa-skeleton.md +53 -0
  133. package/ai/components/wa-slider.md +55 -0
  134. package/ai/components/wa-spinner.md +58 -0
  135. package/ai/components/wa-split-panel.md +58 -0
  136. package/ai/components/wa-switch.md +53 -0
  137. package/ai/components/wa-tab-group.md +69 -0
  138. package/ai/components/wa-tab-panel.md +60 -0
  139. package/ai/components/wa-tab.md +59 -0
  140. package/ai/components/wa-tag.md +59 -0
  141. package/ai/components/wa-textarea.md +53 -0
  142. package/ai/components/wa-time-input.md +55 -0
  143. package/ai/components/wa-toast-item.md +60 -0
  144. package/ai/components/wa-toast.md +60 -0
  145. package/ai/components/wa-tooltip.md +55 -0
  146. package/ai/components/wa-tree-item.md +55 -0
  147. package/ai/components/wa-tree.md +55 -0
  148. package/ai/components/wa-zoomable-frame.md +55 -0
  149. package/ai/components/workbench.md +119 -0
  150. package/ai/public-api-signatures-v1.md +2835 -351
  151. package/ai/skill.md +401 -63
  152. package/ai/webawesome-jsx-signatures-v1.md +9 -2
  153. package/analyzer/cli.mjs +49 -0
  154. package/analyzer/component-ownership.d.mts +72 -0
  155. package/analyzer/component-ownership.mjs +429 -0
  156. package/analyzer/index.d.mts +53 -0
  157. package/analyzer/index.mjs +2346 -0
  158. package/analyzer/loud-pairs.d.mts +49 -0
  159. package/analyzer/loud-pairs.mjs +357 -0
  160. package/analyzer/report.schema.json +66 -0
  161. package/analyzer/selectors.d.mts +21 -0
  162. package/analyzer/selectors.mjs +212 -0
  163. package/catalog-projection-cli.mjs +96 -0
  164. package/catalog-projection.d.mts +55 -0
  165. package/catalog-projection.mjs +62 -0
  166. package/dist/anchored-surface.d.ts +30 -0
  167. package/dist/anchored-surface.js +3 -0
  168. package/dist/anchored-surface.js.map +1 -0
  169. package/dist/app-tab.d.ts +39 -4
  170. package/dist/app-tab.js +2 -1
  171. package/dist/badge.d.ts +54 -0
  172. package/dist/badge.js +3 -0
  173. package/dist/badge.js.map +1 -0
  174. package/dist/browser/anchored-surface.js +3 -0
  175. package/dist/browser/badge.js +3 -0
  176. package/dist/browser/catalog.js +28 -0
  177. package/dist/browser/chip.js +3 -0
  178. package/dist/browser/collapsible-panel.js +9 -0
  179. package/dist/browser/content-item.js +3 -0
  180. package/dist/browser/floating-toolbar.js +3 -0
  181. package/dist/browser/grid.js +3 -0
  182. package/dist/browser/list-action-row.js +1 -0
  183. package/dist/browser/list-header.js +3 -1
  184. package/dist/browser/list-inset-control.js +3 -0
  185. package/dist/browser/list-inset-text.js +3 -0
  186. package/dist/browser/list-item.js +1 -0
  187. package/dist/browser/list.js +3 -0
  188. package/dist/browser/nav-stack.js +11 -0
  189. package/dist/browser/pane.js +3 -0
  190. package/dist/browser/popup-menu.js +3 -0
  191. package/dist/browser/row.js +3 -0
  192. package/dist/browser/segmented-control.js +0 -1
  193. package/dist/browser/select.js +2 -1
  194. package/dist/browser/spacer.js +3 -0
  195. package/dist/browser/split-view.js +13 -0
  196. package/dist/browser/state-banner.js +1 -0
  197. package/dist/browser/sunken-panel.js +3 -0
  198. package/dist/browser/surface-scaffold.js +3 -0
  199. package/dist/browser/tab-navigator.js +4 -0
  200. package/dist/browser/text.js +3 -0
  201. package/dist/browser/toolbar-control-group.js +1 -0
  202. package/dist/browser/workbench.js +14 -0
  203. package/dist/catalog-resources.d.ts +48 -0
  204. package/dist/catalog-resources.js +22 -0
  205. package/dist/catalog-resources.js.map +1 -0
  206. package/dist/catalog.d.ts +76 -103
  207. package/dist/catalog.js +566 -87
  208. package/dist/catalog.js.map +1 -1
  209. package/dist/chip.d.ts +36 -0
  210. package/dist/chip.js +3 -0
  211. package/dist/chip.js.map +1 -0
  212. package/dist/chunk-2GOCOLQL.js +270 -0
  213. package/dist/chunk-2GOCOLQL.js.map +1 -0
  214. package/dist/{chunk-56RJXPHG.js → chunk-2YPPNFYT.js} +7 -4
  215. package/dist/chunk-2YPPNFYT.js.map +1 -0
  216. package/dist/chunk-3CXRQAYT.js +288 -0
  217. package/dist/chunk-3CXRQAYT.js.map +1 -0
  218. package/dist/chunk-3DXHNLME.js +69 -0
  219. package/dist/chunk-3DXHNLME.js.map +1 -0
  220. package/dist/chunk-3PO7JEK7.js +188 -0
  221. package/dist/chunk-3PO7JEK7.js.map +1 -0
  222. package/dist/chunk-3XPGJUUQ.js +37 -0
  223. package/dist/chunk-3XPGJUUQ.js.map +1 -0
  224. package/dist/chunk-4Y4L5YEI.js +66 -0
  225. package/dist/chunk-4Y4L5YEI.js.map +1 -0
  226. package/dist/chunk-5BZBIRQG.js +452 -0
  227. package/dist/chunk-5BZBIRQG.js.map +1 -0
  228. package/dist/chunk-6IVNMC6R.js +19 -0
  229. package/dist/chunk-6IVNMC6R.js.map +1 -0
  230. package/dist/chunk-7QQ3HE47.js +17 -0
  231. package/dist/chunk-7QQ3HE47.js.map +1 -0
  232. package/dist/chunk-A7DYEERU.js +59 -0
  233. package/dist/chunk-A7DYEERU.js.map +1 -0
  234. package/dist/chunk-AN5IWMTM.js +24 -0
  235. package/dist/chunk-AN5IWMTM.js.map +1 -0
  236. package/dist/chunk-B3TROLC2.js +104 -0
  237. package/dist/chunk-B3TROLC2.js.map +1 -0
  238. package/dist/chunk-BYHGRKC3.js +44 -0
  239. package/dist/chunk-BYHGRKC3.js.map +1 -0
  240. package/dist/chunk-CD5TOO22.js +82 -0
  241. package/dist/chunk-CD5TOO22.js.map +1 -0
  242. package/dist/chunk-CEJ5FK6G.js +288 -0
  243. package/dist/chunk-CEJ5FK6G.js.map +1 -0
  244. package/dist/chunk-DL55BSQX.js +52 -0
  245. package/dist/chunk-DL55BSQX.js.map +1 -0
  246. package/dist/chunk-DQDTZE4W.js +70 -0
  247. package/dist/chunk-DQDTZE4W.js.map +1 -0
  248. package/dist/chunk-FL6J644M.js +116 -0
  249. package/dist/chunk-FL6J644M.js.map +1 -0
  250. package/dist/chunk-GPCAXYMT.js +165 -0
  251. package/dist/chunk-GPCAXYMT.js.map +1 -0
  252. package/dist/chunk-GS2QD3N7.js +14 -0
  253. package/dist/chunk-GS2QD3N7.js.map +1 -0
  254. package/dist/chunk-H45DAZBL.js +491 -0
  255. package/dist/chunk-H45DAZBL.js.map +1 -0
  256. package/dist/chunk-IM3GKYOG.js +202 -0
  257. package/dist/chunk-IM3GKYOG.js.map +1 -0
  258. package/dist/chunk-IOS2NXW7.js +53 -0
  259. package/dist/chunk-IOS2NXW7.js.map +1 -0
  260. package/dist/chunk-J3AWE5I4.js +50 -0
  261. package/dist/chunk-J3AWE5I4.js.map +1 -0
  262. package/dist/chunk-JOR5LGYE.js +55 -0
  263. package/dist/chunk-JOR5LGYE.js.map +1 -0
  264. package/dist/chunk-KAJVVN7Q.js +138 -0
  265. package/dist/chunk-KAJVVN7Q.js.map +1 -0
  266. package/dist/chunk-KL3W6FUN.js +506 -0
  267. package/dist/chunk-KL3W6FUN.js.map +1 -0
  268. package/dist/{chunk-7BR3DO2A.js → chunk-LAZLBC2Q.js} +14 -5
  269. package/dist/chunk-LAZLBC2Q.js.map +1 -0
  270. package/dist/chunk-LFPW4YC6.js +222 -0
  271. package/dist/chunk-LFPW4YC6.js.map +1 -0
  272. package/dist/chunk-MN3POJFN.js +44 -0
  273. package/dist/chunk-MN3POJFN.js.map +1 -0
  274. package/dist/chunk-MORVLMDG.js +59 -0
  275. package/dist/chunk-MORVLMDG.js.map +1 -0
  276. package/dist/chunk-MTCTX25G.js +139 -0
  277. package/dist/chunk-MTCTX25G.js.map +1 -0
  278. package/dist/chunk-MXNIVEVL.js +48 -0
  279. package/dist/chunk-MXNIVEVL.js.map +1 -0
  280. package/dist/chunk-NJZMR7HM.js +135 -0
  281. package/dist/chunk-NJZMR7HM.js.map +1 -0
  282. package/dist/chunk-NMWDHZVM.js +35 -0
  283. package/dist/chunk-NMWDHZVM.js.map +1 -0
  284. package/dist/chunk-NP3FSLNX.js +58 -0
  285. package/dist/chunk-NP3FSLNX.js.map +1 -0
  286. package/dist/{chunk-YGN7OMLT.js → chunk-NS2TBYM4.js} +8 -5
  287. package/dist/chunk-NS2TBYM4.js.map +1 -0
  288. package/dist/chunk-O27D24CA.js +250 -0
  289. package/dist/chunk-O27D24CA.js.map +1 -0
  290. package/dist/chunk-PGL6TXFW.js +48 -0
  291. package/dist/chunk-PGL6TXFW.js.map +1 -0
  292. package/dist/chunk-QQICWWNX.js +71 -0
  293. package/dist/chunk-QQICWWNX.js.map +1 -0
  294. package/dist/chunk-S3ECMF23.js +33 -0
  295. package/dist/chunk-S3ECMF23.js.map +1 -0
  296. package/dist/chunk-S4ZGTDSG.js +18 -0
  297. package/dist/chunk-S4ZGTDSG.js.map +1 -0
  298. package/dist/chunk-SJW5BCEQ.js +174 -0
  299. package/dist/chunk-SJW5BCEQ.js.map +1 -0
  300. package/dist/chunk-TTGIHMDR.js +149 -0
  301. package/dist/chunk-TTGIHMDR.js.map +1 -0
  302. package/dist/chunk-U657IHFB.js +158 -0
  303. package/dist/chunk-U657IHFB.js.map +1 -0
  304. package/dist/chunk-VLGQIYZ5.js +295 -0
  305. package/dist/chunk-VLGQIYZ5.js.map +1 -0
  306. package/dist/chunk-XK4E225T.js +34 -0
  307. package/dist/chunk-XK4E225T.js.map +1 -0
  308. package/dist/chunk-XKZPBRU7.js +135 -0
  309. package/dist/chunk-XKZPBRU7.js.map +1 -0
  310. package/dist/chunk-XNXKIPU5.js +779 -0
  311. package/dist/chunk-XNXKIPU5.js.map +1 -0
  312. package/dist/chunk-Y43B6DS3.js +66 -0
  313. package/dist/chunk-Y43B6DS3.js.map +1 -0
  314. package/dist/chunk-Y6KT7ZTR.js +109 -0
  315. package/dist/chunk-Y6KT7ZTR.js.map +1 -0
  316. package/dist/chunk-YOKEL75M.js +48 -0
  317. package/dist/chunk-YOKEL75M.js.map +1 -0
  318. package/dist/collapsible-panel.d.ts +137 -0
  319. package/dist/collapsible-panel.js +136 -0
  320. package/dist/collapsible-panel.js.map +1 -0
  321. package/dist/content-item.d.ts +99 -0
  322. package/dist/content-item.js +4 -0
  323. package/dist/content-item.js.map +1 -0
  324. package/dist/css-values.d.ts +119 -0
  325. package/dist/css-values.js +3 -0
  326. package/dist/css-values.js.map +1 -0
  327. package/dist/device-class.js +34 -6
  328. package/dist/device-class.js.map +1 -1
  329. package/dist/disclosure-arrow.d.ts +6 -1
  330. package/dist/disclosure-arrow.js +2 -1
  331. package/dist/empty-state.d.ts +5 -2
  332. package/dist/empty-state.js +2 -1
  333. package/dist/flex-alignment-4ms8ZbV8.d.ts +5 -0
  334. package/dist/floating-toolbar.d.ts +51 -0
  335. package/dist/floating-toolbar.js +3 -0
  336. package/dist/floating-toolbar.js.map +1 -0
  337. package/dist/grid.d.ts +58 -0
  338. package/dist/grid.js +6 -0
  339. package/dist/grid.js.map +1 -0
  340. package/dist/help-tags-register.d.ts +13 -0
  341. package/dist/help-tags-register.js +9 -0
  342. package/dist/help-tags-register.js.map +1 -0
  343. package/dist/index.d.ts +41 -17
  344. package/dist/index.js +46 -23
  345. package/dist/list-action-row.d.ts +15 -3
  346. package/dist/list-action-row.js +4 -1
  347. package/dist/list-header.d.ts +65 -10
  348. package/dist/list-header.js +4 -1
  349. package/dist/list-inset-control.d.ts +22 -0
  350. package/dist/list-inset-control.js +3 -0
  351. package/dist/list-inset-control.js.map +1 -0
  352. package/dist/list-inset-text.d.ts +30 -0
  353. package/dist/list-inset-text.js +4 -0
  354. package/dist/list-inset-text.js.map +1 -0
  355. package/dist/list-item.d.ts +34 -5
  356. package/dist/list-item.js +4 -1
  357. package/dist/list.d.ts +64 -0
  358. package/dist/list.js +7 -0
  359. package/dist/list.js.map +1 -0
  360. package/dist/loading-spinner.d.ts +12 -2
  361. package/dist/loading-spinner.js +2 -1
  362. package/dist/lucide-icon.d.ts +14 -2
  363. package/dist/lucide-icon.js +2 -1
  364. package/dist/nav-stack-BvSKY448.d.ts +109 -0
  365. package/dist/nav-stack.d.ts +13 -38
  366. package/dist/nav-stack.js +11 -1
  367. package/dist/pane.d.ts +116 -0
  368. package/dist/pane.js +4 -0
  369. package/dist/pane.js.map +1 -0
  370. package/dist/panel-toolbar-CL9tYOkh.d.ts +72 -0
  371. package/dist/popup-menu-register.d.ts +9 -0
  372. package/dist/popup-menu-register.js +244 -0
  373. package/dist/popup-menu-register.js.map +1 -0
  374. package/dist/popup-menu.d.ts +100 -0
  375. package/dist/popup-menu.js +3 -0
  376. package/dist/popup-menu.js.map +1 -0
  377. package/dist/resizable-region.d.ts +32 -3
  378. package/dist/resizable-region.js +1 -1
  379. package/dist/row.d.ts +49 -0
  380. package/dist/row.js +7 -0
  381. package/dist/row.js.map +1 -0
  382. package/dist/segmented-control.d.ts +12 -9
  383. package/dist/segmented-control.js +1 -2
  384. package/dist/select-register.d.ts +5 -1
  385. package/dist/select-register.js +247 -3
  386. package/dist/select-register.js.map +1 -1
  387. package/dist/select.d.ts +103 -8
  388. package/dist/select.js +3 -1
  389. package/dist/semantic-content-BbzjvSu9.d.ts +14 -0
  390. package/dist/semantic-tone-CdW013KF.d.ts +4 -0
  391. package/dist/sides-BPSWde0A.d.ts +4 -0
  392. package/dist/skeleton.d.ts +14 -7
  393. package/dist/skeleton.js +2 -1
  394. package/dist/spacer.d.ts +18 -0
  395. package/dist/spacer.js +4 -0
  396. package/dist/spacer.js.map +1 -0
  397. package/dist/split-view.d.ts +43 -6
  398. package/dist/split-view.js +125 -10
  399. package/dist/split-view.js.map +1 -1
  400. package/dist/state-banner.d.ts +21 -7
  401. package/dist/state-banner.js +3 -1
  402. package/dist/styles/anchored-surface.css +15 -0
  403. package/dist/styles/app-tab.css +232 -0
  404. package/dist/styles/badge.css +118 -0
  405. package/dist/styles/catalog/components/catalog-example-stack.css +9 -0
  406. package/dist/styles/catalog/components/catalog-example.css +167 -0
  407. package/dist/styles/catalog/components/catalog-stage.css +54 -0
  408. package/dist/styles/catalog/components/catalog.css +26 -0
  409. package/dist/styles/catalog.css +5 -482
  410. package/dist/styles/chip.css +138 -0
  411. package/dist/styles/collapsible-panel.css +580 -0
  412. package/dist/styles/components/actions/floating-toolbar/floating-toolbar.css +119 -0
  413. package/dist/styles/components/actions/popup-menu/popup-menu.css +285 -0
  414. package/dist/styles/components/actions/toolbar/toolbar.css +417 -0
  415. package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +891 -0
  416. package/dist/styles/components/actions/toolbar-text/toolbar-text.css +171 -0
  417. package/dist/styles/components/collections/list/list.css +136 -0
  418. package/dist/styles/components/collections/list-action-row/list-action-row.css +258 -0
  419. package/dist/styles/components/collections/list-header/list-header.css +229 -0
  420. package/dist/styles/components/collections/list-inset-control/list-inset-control.css +30 -0
  421. package/dist/styles/components/collections/list-inset-text/list-inset-text.css +29 -0
  422. package/dist/styles/components/collections/list-item/list-item.css +255 -0
  423. package/dist/styles/components/data-display/value-table/value-table.css +107 -0
  424. package/dist/styles/components/feedback/anchored-surface/anchored-surface.css +15 -0
  425. package/dist/styles/components/feedback/badge/badge.css +118 -0
  426. package/dist/styles/components/feedback/chip/chip.css +138 -0
  427. package/dist/styles/components/feedback/empty-state/empty-state.css +47 -0
  428. package/dist/styles/components/feedback/loading-spinner/loading-spinner.css +25 -0
  429. package/dist/styles/components/feedback/skeleton/skeleton.css +92 -0
  430. package/dist/styles/components/feedback/state-banner/state-banner.css +248 -0
  431. package/dist/styles/components/forms/segmented-control/segmented-control.css +196 -0
  432. package/dist/styles/components/forms/select/select.css +454 -0
  433. package/dist/styles/components/forms/token-search-field/token-search-field.css +392 -0
  434. package/dist/styles/components/layout/collapsible-panel/collapsible-panel.css +580 -0
  435. package/dist/styles/components/layout/grid/grid.css +88 -0
  436. package/dist/styles/components/layout/pane/pane.css +309 -0
  437. package/dist/styles/components/layout/resizable-region/resizable-region.css +545 -0
  438. package/dist/styles/components/layout/row/row.css +114 -0
  439. package/dist/styles/components/layout/spacer/spacer.css +11 -0
  440. package/dist/styles/components/layout/split-view/split-view.css +146 -0
  441. package/dist/styles/components/layout/workbench/workbench.css +1092 -0
  442. package/dist/styles/components/media/lucide-icon/lucide-icon.css +15 -0
  443. package/dist/styles/components/navigation/app-tab/app-tab.css +384 -0
  444. package/dist/styles/components/navigation/disclosure-arrow/disclosure-arrow.css +23 -0
  445. package/dist/styles/components/navigation/nav-stack/nav-stack.css +258 -0
  446. package/dist/styles/components/navigation/tab-bar/tab-bar.css +186 -0
  447. package/dist/styles/components/navigation/tab-navigator/tab-navigator.css +253 -0
  448. package/dist/styles/components/surfaces/content-item/content-item.css +120 -0
  449. package/dist/styles/components/surfaces/sunken-panel/sunken-panel.css +34 -0
  450. package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +111 -0
  451. package/dist/styles/components/typography/text/text.css +158 -0
  452. package/dist/styles/content-item.css +120 -0
  453. package/dist/styles/document.css +33 -0
  454. package/dist/styles/floating-toolbar.css +119 -0
  455. package/dist/styles/foundation.css +187 -45
  456. package/dist/styles/grid.css +88 -0
  457. package/dist/styles/layout.css +3 -41
  458. package/dist/styles/list-action-row.css +104 -6
  459. package/dist/styles/list-header.css +128 -59
  460. package/dist/styles/list-inset-control.css +30 -0
  461. package/dist/styles/list-inset-text.css +29 -0
  462. package/dist/styles/list-item.css +165 -33
  463. package/dist/styles/list.css +136 -0
  464. package/dist/styles/loading-spinner.css +4 -0
  465. package/dist/styles/lucide-icon.css +9 -0
  466. package/dist/styles/nav-stack.css +196 -50
  467. package/dist/styles/pane.css +309 -0
  468. package/dist/styles/popup-menu.css +285 -0
  469. package/dist/styles/resizable-region.css +438 -4
  470. package/dist/styles/row.css +114 -0
  471. package/dist/styles/segmented-control.css +36 -9
  472. package/dist/styles/select.css +337 -21
  473. package/dist/styles/skeleton.css +64 -3
  474. package/dist/styles/spacer.css +11 -0
  475. package/dist/styles/split-view.css +114 -3
  476. package/dist/styles/state-banner.css +94 -19
  477. package/dist/styles/styles.css +10 -1
  478. package/dist/styles/sunken-panel.css +34 -0
  479. package/dist/styles/surface-scaffold.css +111 -0
  480. package/dist/styles/tab-bar.css +150 -9
  481. package/dist/styles/tab-navigator.css +253 -0
  482. package/dist/styles/text.css +158 -0
  483. package/dist/styles/token-search-field.css +167 -56
  484. package/dist/styles/toolbar-control-group.css +710 -30
  485. package/dist/styles/toolbar-text.css +139 -8
  486. package/dist/styles/toolbar.css +367 -11
  487. package/dist/styles/value-table.css +39 -7
  488. package/dist/styles/webawesome.css +392 -17
  489. package/dist/styles/workbench.css +1005 -7
  490. package/dist/sunken-panel.d.ts +31 -0
  491. package/dist/sunken-panel.js +3 -0
  492. package/dist/sunken-panel.js.map +1 -0
  493. package/dist/surface-scaffold-register.d.ts +4 -0
  494. package/dist/surface-scaffold-register.js +59 -0
  495. package/dist/surface-scaffold-register.js.map +1 -0
  496. package/dist/surface-scaffold.d.ts +38 -0
  497. package/dist/surface-scaffold.js +3 -0
  498. package/dist/surface-scaffold.js.map +1 -0
  499. package/dist/tab-bar.d.ts +39 -6
  500. package/dist/tab-bar.js +1 -1
  501. package/dist/tab-navigator.d.ts +93 -0
  502. package/dist/tab-navigator.js +97 -0
  503. package/dist/tab-navigator.js.map +1 -0
  504. package/dist/text.d.ts +63 -0
  505. package/dist/text.js +3 -0
  506. package/dist/text.js.map +1 -0
  507. package/dist/token-search-field.d.ts +3 -43
  508. package/dist/token-search-field.js +2 -1
  509. package/dist/token-search-model-DTcTXWMS.d.ts +154 -0
  510. package/dist/token-search-model.d.ts +3 -0
  511. package/dist/token-search-model.js +3 -0
  512. package/dist/token-search-model.js.map +1 -0
  513. package/dist/toolbar-control-group.d.ts +89 -7
  514. package/dist/toolbar-control-group.js +3 -1
  515. package/dist/toolbar-text.d.ts +45 -9
  516. package/dist/toolbar-text.js +2 -1
  517. package/dist/toolbar.d.ts +59 -7
  518. package/dist/toolbar.js +1 -1
  519. package/dist/types-oLe_N1w0.d.ts +130 -0
  520. package/dist/value-table.d.ts +11 -3
  521. package/dist/value-table.js +2 -1
  522. package/dist/webawesome.d.ts +8 -1
  523. package/dist/wire-catalog.d.ts +76 -4
  524. package/dist/wire-catalog.js +250 -14
  525. package/dist/wire-catalog.js.map +1 -1
  526. package/dist/wire-content-items.d.ts +11 -0
  527. package/dist/wire-content-items.js +139 -0
  528. package/dist/wire-content-items.js.map +1 -0
  529. package/dist/wire-nav-stack.d.ts +4 -1
  530. package/dist/wire-nav-stack.js +191 -15
  531. package/dist/wire-nav-stack.js.map +1 -1
  532. package/dist/wire-resizable-regions.d.ts +2 -1
  533. package/dist/wire-resizable-regions.js +2 -1
  534. package/dist/wire-scroll-dividers.d.ts +72 -0
  535. package/dist/wire-scroll-dividers.js +3 -0
  536. package/dist/wire-scroll-dividers.js.map +1 -0
  537. package/dist/wire-sidebar.d.ts +63 -0
  538. package/dist/wire-sidebar.js +231 -0
  539. package/dist/wire-sidebar.js.map +1 -0
  540. package/dist/wire-tab-bars.d.ts +19 -2
  541. package/dist/wire-tab-bars.js +1 -1
  542. package/dist/wire-tab-navigator.d.ts +11 -0
  543. package/dist/wire-tab-navigator.js +21 -0
  544. package/dist/wire-tab-navigator.js.map +1 -0
  545. package/dist/wire-token-search-fields.d.ts +65 -3
  546. package/dist/wire-token-search-fields.js +2 -1
  547. package/dist/wire-toolbar-visibility.d.ts +13 -0
  548. package/dist/wire-toolbar-visibility.js +3 -0
  549. package/dist/wire-toolbar-visibility.js.map +1 -0
  550. package/dist/wire-workbench.d.ts +116 -0
  551. package/dist/wire-workbench.js +6 -0
  552. package/dist/wire-workbench.js.map +1 -0
  553. package/dist/workbench.d.ts +246 -9
  554. package/dist/workbench.js +18 -15
  555. package/dist/workbench.js.map +1 -1
  556. package/docs/accessibility.md +495 -24
  557. package/docs/anchored-surface.md +51 -0
  558. package/docs/app-layouts.md +141 -10
  559. package/docs/apple-hig.md +1 -0
  560. package/docs/catalog.md +395 -62
  561. package/docs/collapsible-panel.md +382 -0
  562. package/docs/component-contract.md +740 -53
  563. package/docs/component-integration.md +75 -0
  564. package/docs/component-selection.md +682 -97
  565. package/docs/design/templates/empty-state/filtered-dark.svg +1 -0
  566. package/docs/design/templates/empty-state/filtered.svg +1 -0
  567. package/docs/design/templates/empty-state/with-action-dark.svg +1 -0
  568. package/docs/design/templates/empty-state/with-action.svg +1 -0
  569. package/docs/design/templates/empty-state-dark.svg +1 -0
  570. package/docs/design/templates/empty-state.svg +1 -0
  571. package/docs/design/templates/list/compact-dark.svg +1 -0
  572. package/docs/design/templates/list/compact.svg +1 -0
  573. package/docs/design/templates/list/stack-dark.svg +1 -0
  574. package/docs/design/templates/list/stack.svg +1 -0
  575. package/docs/design/templates/list-action-row/default-dark.svg +1 -0
  576. package/docs/design/templates/list-action-row/default.svg +1 -0
  577. package/docs/design/templates/list-action-row/selected-dark.svg +1 -0
  578. package/docs/design/templates/list-action-row/selected.svg +1 -0
  579. package/docs/design/templates/list-action-row-dark.svg +1 -0
  580. package/docs/design/templates/list-action-row.svg +1 -0
  581. package/docs/design/templates/list-dark.svg +1 -0
  582. package/docs/design/templates/list-header/action-dark.svg +1 -0
  583. package/docs/design/templates/list-header/action.svg +1 -0
  584. package/docs/design/templates/list-header/count-dark.svg +1 -0
  585. package/docs/design/templates/list-header/count.svg +1 -0
  586. package/docs/design/templates/list-header/inline-action-dark.svg +1 -0
  587. package/docs/design/templates/list-header/inline-action.svg +1 -0
  588. package/docs/design/templates/list-header/size-l-dark.svg +1 -0
  589. package/docs/design/templates/list-header/size-l.svg +1 -0
  590. package/docs/design/templates/list-header/size-m-dark.svg +1 -0
  591. package/docs/design/templates/list-header/size-m.svg +1 -0
  592. package/docs/design/templates/list-header/size-xl-dark.svg +1 -0
  593. package/docs/design/templates/list-header/size-xl.svg +1 -0
  594. package/docs/design/templates/list-header/size-xs-dark.svg +1 -0
  595. package/docs/design/templates/list-header/size-xs.svg +1 -0
  596. package/docs/design/templates/list-header/toggle-collapsed-dark.svg +1 -0
  597. package/docs/design/templates/list-header/toggle-collapsed.svg +1 -0
  598. package/docs/design/templates/list-header/toggle-expanded-dark.svg +1 -0
  599. package/docs/design/templates/list-header/toggle-expanded.svg +1 -0
  600. package/docs/design/templates/list-header-dark.svg +1 -0
  601. package/docs/design/templates/list-header.svg +1 -0
  602. package/docs/design/templates/list-item/default-dark.svg +1 -0
  603. package/docs/design/templates/list-item/default.svg +1 -0
  604. package/docs/design/templates/list-item/multiline-dark.svg +1 -0
  605. package/docs/design/templates/list-item/multiline.svg +1 -0
  606. package/docs/design/templates/list-item/selected-dark.svg +1 -0
  607. package/docs/design/templates/list-item/selected.svg +1 -0
  608. package/docs/design/templates/list-item/trailing-dark.svg +1 -0
  609. package/docs/design/templates/list-item/trailing.svg +1 -0
  610. package/docs/design/templates/list-item-dark.svg +1 -0
  611. package/docs/design/templates/list-item.svg +1 -0
  612. package/docs/design/templates/list.svg +1 -0
  613. package/docs/design/templates/segmented-control/equal-dark.svg +1 -0
  614. package/docs/design/templates/segmented-control/equal.svg +1 -0
  615. package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -0
  616. package/docs/design/templates/segmented-control/pill-small.svg +1 -0
  617. package/docs/design/templates/segmented-control-dark.svg +1 -0
  618. package/docs/design/templates/segmented-control.svg +1 -0
  619. package/docs/design/templates/skeleton/avatar-dark.svg +1 -0
  620. package/docs/design/templates/skeleton/avatar.svg +1 -0
  621. package/docs/design/templates/skeleton/block-dark.svg +1 -0
  622. package/docs/design/templates/skeleton/block.svg +1 -0
  623. package/docs/design/templates/skeleton/lines-dark.svg +1 -0
  624. package/docs/design/templates/skeleton/lines.svg +1 -0
  625. package/docs/design/templates/skeleton-dark.svg +1 -0
  626. package/docs/design/templates/skeleton.svg +1 -0
  627. package/docs/design/templates/state-banner/danger-dark.svg +1 -0
  628. package/docs/design/templates/state-banner/danger.svg +1 -0
  629. package/docs/design/templates/state-banner/info-badge-dark.svg +1 -0
  630. package/docs/design/templates/state-banner/info-badge.svg +1 -0
  631. package/docs/design/templates/state-banner/info-dark.svg +1 -0
  632. package/docs/design/templates/state-banner/info.svg +1 -0
  633. package/docs/design/templates/state-banner/success-dark.svg +1 -0
  634. package/docs/design/templates/state-banner/success.svg +1 -0
  635. package/docs/design/templates/state-banner/warning-dark.svg +1 -0
  636. package/docs/design/templates/state-banner/warning.svg +1 -0
  637. package/docs/design/templates/state-banner-dark.svg +1 -0
  638. package/docs/design/templates/state-banner.svg +1 -0
  639. package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -0
  640. package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -0
  641. package/docs/design/templates/tab-bar-dark.svg +1 -0
  642. package/docs/design/templates/tab-bar.svg +1 -0
  643. package/docs/design/templates/token-search-field/empty-dark.svg +1 -0
  644. package/docs/design/templates/token-search-field/empty.svg +1 -0
  645. package/docs/design/templates/token-search-field/tokens-dark.svg +1 -0
  646. package/docs/design/templates/token-search-field/tokens.svg +1 -0
  647. package/docs/design/templates/token-search-field-dark.svg +1 -0
  648. package/docs/design/templates/token-search-field.svg +1 -0
  649. package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -0
  650. package/docs/design/templates/toolbar/title-and-actions.svg +1 -0
  651. package/docs/design/templates/toolbar/width-visibility-320-dark.svg +1 -0
  652. package/docs/design/templates/toolbar/width-visibility-320.svg +1 -0
  653. package/docs/design/templates/toolbar/width-visibility-600-dark.svg +1 -0
  654. package/docs/design/templates/toolbar/width-visibility-600.svg +1 -0
  655. package/docs/design/templates/toolbar-control-group/borderless-single-dark.svg +1 -0
  656. package/docs/design/templates/toolbar-control-group/borderless-single.svg +1 -0
  657. package/docs/design/templates/toolbar-control-group/icon-buttons-dark.svg +1 -0
  658. package/docs/design/templates/toolbar-control-group/icon-buttons.svg +1 -0
  659. package/docs/design/templates/toolbar-control-group/icon-tile-brand-dark.svg +1 -0
  660. package/docs/design/templates/toolbar-control-group/icon-tile-brand.svg +1 -0
  661. package/docs/design/templates/toolbar-control-group/icon-tile-danger-dark.svg +1 -0
  662. package/docs/design/templates/toolbar-control-group/icon-tile-danger.svg +1 -0
  663. package/docs/design/templates/toolbar-control-group/icon-tile-neutral-dark.svg +1 -0
  664. package/docs/design/templates/toolbar-control-group/icon-tile-neutral.svg +1 -0
  665. package/docs/design/templates/toolbar-control-group/icon-tile-success-dark.svg +1 -0
  666. package/docs/design/templates/toolbar-control-group/icon-tile-success.svg +1 -0
  667. package/docs/design/templates/toolbar-control-group/icon-tile-warning-dark.svg +1 -0
  668. package/docs/design/templates/toolbar-control-group/icon-tile-warning.svg +1 -0
  669. package/docs/design/templates/toolbar-control-group/push-buttons-dark.svg +1 -0
  670. package/docs/design/templates/toolbar-control-group/push-buttons.svg +1 -0
  671. package/docs/design/templates/toolbar-control-group/with-text-dark.svg +1 -0
  672. package/docs/design/templates/toolbar-control-group/with-text.svg +1 -0
  673. package/docs/design/templates/toolbar-control-group-dark.svg +1 -0
  674. package/docs/design/templates/toolbar-control-group.svg +1 -0
  675. package/docs/design/templates/toolbar-dark.svg +1 -0
  676. package/docs/design/templates/toolbar-text/dark-tone-dark.svg +1 -0
  677. package/docs/design/templates/toolbar-text/dark-tone.svg +1 -0
  678. package/docs/design/templates/toolbar-text/default-dark.svg +1 -0
  679. package/docs/design/templates/toolbar-text/default.svg +1 -0
  680. package/docs/design/templates/toolbar-text/large-dark.svg +1 -0
  681. package/docs/design/templates/toolbar-text/large.svg +1 -0
  682. package/docs/design/templates/toolbar-text/small-dark.svg +1 -0
  683. package/docs/design/templates/toolbar-text/small.svg +1 -0
  684. package/docs/design/templates/toolbar-text-dark.svg +1 -0
  685. package/docs/design/templates/toolbar-text.svg +1 -0
  686. package/docs/design/templates/toolbar.svg +1 -0
  687. package/docs/design/templates/value-table/details-dark.svg +1 -0
  688. package/docs/design/templates/value-table/details.svg +1 -0
  689. package/docs/design/templates/value-table-dark.svg +1 -0
  690. package/docs/design/templates/value-table.svg +1 -0
  691. package/docs/design/templates.md +140 -0
  692. package/docs/design-philosophy.md +56 -19
  693. package/docs/device-class.md +10 -9
  694. package/docs/document-baseline.md +42 -0
  695. package/docs/examples/application-ui-profile.json +60 -0
  696. package/docs/examples/command-palette-adapter.tsx +69 -17
  697. package/docs/examples/component-catalog-extension.json +52 -0
  698. package/docs/examples/component-composition-extension.json +80 -0
  699. package/docs/layout.md +612 -53
  700. package/docs/nav-stack.md +163 -14
  701. package/docs/recipes.md +127 -52
  702. package/docs/split-view.md +76 -5
  703. package/docs/sunken-panel.md +93 -0
  704. package/docs/surface-scaffold.md +74 -0
  705. package/docs/tab-navigator.md +218 -0
  706. package/docs/type-contracts.md +137 -0
  707. package/docs/ui-analyzer.md +404 -0
  708. package/docs/ui-doctor.md +202 -0
  709. package/docs/ui-evaluator.md +139 -0
  710. package/docs/ux-demo.md +45 -15
  711. package/docs/webawesome-theme.md +204 -16
  712. package/docs/workbench.md +623 -12
  713. package/doctor/cli.mjs +120 -0
  714. package/doctor/component-style-checks.mjs +457 -0
  715. package/doctor/config.schema.json +94 -0
  716. package/doctor/eslint-diagnostics.d.mts +24 -0
  717. package/doctor/eslint-diagnostics.mjs +24 -0
  718. package/doctor/index.d.mts +122 -0
  719. package/doctor/index.mjs +1403 -0
  720. package/doctor/report.schema.json +118 -0
  721. package/evaluator/cli.mjs +89 -0
  722. package/evaluator/index.d.mts +90 -0
  723. package/evaluator/index.mjs +1203 -0
  724. package/evaluator/report.schema.json +152 -0
  725. package/llms.txt +562 -49
  726. package/package.json +247 -27
  727. package/scripts/component-catalog-extension-validation.mjs +28 -0
  728. package/traversal-exclusions.mjs +27 -0
  729. package/ux-demo/recipes/app-shell.tsx +204 -16
  730. package/ux-demo/recipes/collapsible-sidebar.tsx +260 -0
  731. package/ux-demo/recipes/compact-toolbar.tsx +135 -14
  732. package/ux-demo/recipes/composer-form.tsx +133 -21
  733. package/ux-demo/recipes/list-detail-dialog.tsx +255 -14
  734. package/ux-demo/recipes/list-workspace-states.tsx +183 -11
  735. package/ux-demo/recipes/loaders.ts +11 -3
  736. package/ux-demo/recipes/loading-inspector.tsx +161 -36
  737. package/ux-demo/recipes/mount-recipe.ts +28 -10
  738. package/ux-demo/recipes/navigation-sidebar.tsx +137 -11
  739. package/ux-demo/recipes/navigation-stack.tsx +79 -24
  740. package/ux-demo/recipes/types.ts +23 -2
  741. package/ux-demo/recipes/workspace-header.tsx +86 -5
  742. package/dist/browser/panel-header.js +0 -7
  743. package/dist/chunk-2RJBFNB6.js +0 -172
  744. package/dist/chunk-2RJBFNB6.js.map +0 -1
  745. package/dist/chunk-2TS7ZSYX.js +0 -20
  746. package/dist/chunk-2TS7ZSYX.js.map +0 -1
  747. package/dist/chunk-2Z5TWHKQ.js +0 -34
  748. package/dist/chunk-2Z5TWHKQ.js.map +0 -1
  749. package/dist/chunk-37T3VNIZ.js +0 -19
  750. package/dist/chunk-37T3VNIZ.js.map +0 -1
  751. package/dist/chunk-55DATV3A.js +0 -10
  752. package/dist/chunk-55DATV3A.js.map +0 -1
  753. package/dist/chunk-56RJXPHG.js.map +0 -1
  754. package/dist/chunk-7BR3DO2A.js.map +0 -1
  755. package/dist/chunk-7JB7VPRI.js +0 -34
  756. package/dist/chunk-7JB7VPRI.js.map +0 -1
  757. package/dist/chunk-7LDCTU7D.js +0 -134
  758. package/dist/chunk-7LDCTU7D.js.map +0 -1
  759. package/dist/chunk-AQNKJRFH.js +0 -79
  760. package/dist/chunk-AQNKJRFH.js.map +0 -1
  761. package/dist/chunk-B24C4A6T.js +0 -22
  762. package/dist/chunk-B24C4A6T.js.map +0 -1
  763. package/dist/chunk-BLK3UEEI.js +0 -23
  764. package/dist/chunk-BLK3UEEI.js.map +0 -1
  765. package/dist/chunk-DAFFDO33.js +0 -14
  766. package/dist/chunk-DAFFDO33.js.map +0 -1
  767. package/dist/chunk-I7INRJO4.js +0 -17
  768. package/dist/chunk-I7INRJO4.js.map +0 -1
  769. package/dist/chunk-L4OKFDJY.js +0 -24
  770. package/dist/chunk-L4OKFDJY.js.map +0 -1
  771. package/dist/chunk-LC3YSAZC.js +0 -39
  772. package/dist/chunk-LC3YSAZC.js.map +0 -1
  773. package/dist/chunk-M5JRI6MN.js +0 -27
  774. package/dist/chunk-M5JRI6MN.js.map +0 -1
  775. package/dist/chunk-MBR3TYNL.js +0 -14
  776. package/dist/chunk-MBR3TYNL.js.map +0 -1
  777. package/dist/chunk-MFKMHK5W.js +0 -10
  778. package/dist/chunk-MFKMHK5W.js.map +0 -1
  779. package/dist/chunk-MQIZAD4A.js +0 -227
  780. package/dist/chunk-MQIZAD4A.js.map +0 -1
  781. package/dist/chunk-RUNWEPR4.js +0 -10
  782. package/dist/chunk-RUNWEPR4.js.map +0 -1
  783. package/dist/chunk-W2FK7ZNY.js +0 -26
  784. package/dist/chunk-W2FK7ZNY.js.map +0 -1
  785. package/dist/chunk-W5EQ3HYQ.js +0 -42
  786. package/dist/chunk-W5EQ3HYQ.js.map +0 -1
  787. package/dist/chunk-WVPYVDXY.js +0 -15
  788. package/dist/chunk-WVPYVDXY.js.map +0 -1
  789. package/dist/chunk-YGN7OMLT.js.map +0 -1
  790. package/dist/panel-header.d.ts +0 -36
  791. package/dist/panel-header.js +0 -7
  792. package/dist/panel-header.js.map +0 -1
  793. package/dist/styles/panel-header.css +0 -64
  794. package/dist/styles/tab-scaffold.css +0 -84
  795. package/dist/tab-scaffold.d.ts +0 -30
  796. package/dist/tab-scaffold.js +0 -16
  797. package/dist/tab-scaffold.js.map +0 -1
  798. package/dist/wire-tab-scaffold.d.ts +0 -11
  799. package/dist/wire-tab-scaffold.js +0 -16
  800. package/dist/wire-tab-scaffold.js.map +0 -1
  801. package/docs/tab-scaffold.md +0 -41
  802. package/ux-demo/recipes/recipes.css +0 -361
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Selector parsing shared by the package stylesheet ownership check
3
+ * (`scripts/lib/css-ownership.mjs`, `npm run check:css-ownership`) and the
4
+ * downstream component-ownership diagnostics in `kerf-ui-analyze`
5
+ * (`component-ownership.mjs`). Pure string work over one selector list: no
6
+ * PostCSS, no filesystem. One copy means the package rule and the consumer
7
+ * rule agree on which compound a selector styles.
8
+ */
9
+
10
+ export function ownsClass(rootClass, candidate) {
11
+ return (
12
+ candidate === rootClass ||
13
+ candidate.startsWith(`${rootClass}__`) ||
14
+ candidate.startsWith(`${rootClass}--`)
15
+ );
16
+ }
17
+
18
+ /**
19
+ * Split a selector list into its complex selectors, and each complex selector
20
+ * into compounds, ignoring commas and combinators nested inside parentheses,
21
+ * attribute brackets, or quotes. Each compound records the combinator that
22
+ * joins it to the previous one (`''` for the first).
23
+ */
24
+ export function complexSelectorParts(selectorList) {
25
+ const selectors = [];
26
+ let compounds = [];
27
+ let current = '';
28
+ let combinator = '';
29
+ let pending = '';
30
+ let depth = 0;
31
+ let quote = null;
32
+ const endCompound = () => {
33
+ if (current.trim()) {
34
+ compounds.push({ combinator, compound: current.trim() });
35
+ combinator = '';
36
+ }
37
+ current = '';
38
+ };
39
+ for (const char of selectorList) {
40
+ if (quote) {
41
+ current += char;
42
+ if (char === quote) quote = null;
43
+ } else if (char === '"' || char === "'") {
44
+ quote = char;
45
+ current += char;
46
+ } else if (char === '(' || char === '[') {
47
+ depth += 1;
48
+ current += char;
49
+ } else if (char === ')' || char === ']') {
50
+ depth -= 1;
51
+ current += char;
52
+ } else if (depth === 0 && char === ',') {
53
+ endCompound();
54
+ selectors.push(compounds);
55
+ compounds = [];
56
+ pending = '';
57
+ } else if (depth === 0 && /[\s>+~]/.test(char)) {
58
+ const hadCompound = current.trim() !== '';
59
+ endCompound();
60
+ if (/[>+~]/.test(char)) pending = char;
61
+ else if (!pending && (hadCompound || compounds.length > 0)) pending = ' ';
62
+ } else {
63
+ if (!current && compounds.length > 0) {
64
+ combinator = pending || ' ';
65
+ pending = '';
66
+ }
67
+ current += char;
68
+ }
69
+ }
70
+ endCompound();
71
+ selectors.push(compounds);
72
+ return selectors;
73
+ }
74
+
75
+ /** Complex selectors as arrays of compound strings. */
76
+ export function complexSelectors(selectorList) {
77
+ return complexSelectorParts(selectorList).map((parts) =>
78
+ parts.map(({ compound }) => compound),
79
+ );
80
+ }
81
+
82
+ export function kuiClasses(selector) {
83
+ return [...selector.matchAll(/\.((?:kui)-[a-z0-9_-]+)/gi)].map(
84
+ ([, name]) => name,
85
+ );
86
+ }
87
+
88
+ /** Every class name a selector names, in any namespace. */
89
+ export function classNames(selector) {
90
+ return [...selector.matchAll(/\.(-?[_a-zA-Z][_a-zA-Z0-9-]*)/g)].map(
91
+ ([, name]) => name,
92
+ );
93
+ }
94
+
95
+ export function dataComponents(selector) {
96
+ return [
97
+ ...selector.matchAll(
98
+ /\[data-component\s*=\s*["']?([a-z0-9-]+)["']?\s*\]/gi,
99
+ ),
100
+ ].map(([, name]) => name);
101
+ }
102
+
103
+ /**
104
+ * Remove the arguments of every pseudo-class named in `names` from a
105
+ * compound, keeping the empty call.
106
+ */
107
+ export function withoutPseudoArguments(compound, names) {
108
+ const opener = new RegExp(`^:(?:${names.join('|')})\\(`, 'i');
109
+ let result = '';
110
+ let skipDepth = 0;
111
+ for (let index = 0; index < compound.length; index += 1) {
112
+ if (skipDepth === 0) {
113
+ const match = opener.exec(compound.slice(index));
114
+ if (match) {
115
+ result += match[0];
116
+ skipDepth = 1;
117
+ index += match[0].length - 1;
118
+ } else result += compound[index];
119
+ } else if (compound[index] === '(') skipDepth += 1;
120
+ else if (compound[index] === ')') {
121
+ skipDepth -= 1;
122
+ if (skipDepth === 0) result += ')';
123
+ }
124
+ }
125
+ return result;
126
+ }
127
+
128
+ /**
129
+ * Remove the arguments of every `:has()` and `:not()` in a compound. A parent
130
+ * may key its own styles on a composed child's state
131
+ * (`:has(> .kui-select[open])`) or exclude a kerf child it does not own
132
+ * (`wa-dropdown:not(.kui-popup-menu)`): neither styles that child.
133
+ */
134
+ export function withoutRelationalArguments(compound) {
135
+ return withoutPseudoArguments(compound, ['has', 'not']);
136
+ }
137
+
138
+ /** The top-level arguments of each `:name(...)` call in a compound. */
139
+ export function pseudoArguments(compound, name) {
140
+ const args = [];
141
+ const opener = new RegExp(`:${name}\\(`, 'gi');
142
+ for (const match of compound.matchAll(opener)) {
143
+ let depth = 1;
144
+ let index = match.index + match[0].length;
145
+ const start = index;
146
+ for (; index < compound.length && depth > 0; index += 1) {
147
+ if (compound[index] === '(') depth += 1;
148
+ else if (compound[index] === ')') depth -= 1;
149
+ }
150
+ args.push(compound.slice(start, index - 1));
151
+ }
152
+ return args;
153
+ }
154
+
155
+ export function splitTopLevel(list) {
156
+ const parts = [];
157
+ let depth = 0;
158
+ let current = '';
159
+ for (const char of list) {
160
+ if (char === '(' || char === '[') depth += 1;
161
+ else if (char === ')' || char === ']') depth -= 1;
162
+ if (char === ',' && depth === 0) {
163
+ parts.push(current.trim());
164
+ current = '';
165
+ } else current += char;
166
+ }
167
+ if (current.trim()) parts.push(current.trim());
168
+ return parts;
169
+ }
170
+
171
+ /**
172
+ * The element types a subject compound can match: its own type selector and
173
+ * the subject types inside its `:is()` / `:where()` arguments. `null` means the
174
+ * compound places no type constraint (universal).
175
+ */
176
+ export function subjectTypes(compound) {
177
+ const bare = withoutPseudoArguments(compound, [
178
+ 'has',
179
+ 'not',
180
+ 'is',
181
+ 'where',
182
+ 'part',
183
+ 'nth-child',
184
+ 'nth-last-child',
185
+ 'nth-of-type',
186
+ 'nth-last-of-type',
187
+ ]);
188
+ const own = /^([a-z][a-z0-9-]*)/i.exec(bare);
189
+ if (own) return [own[1].toLowerCase()];
190
+ const types = [];
191
+ for (const name of ['is', 'where']) {
192
+ for (const args of pseudoArguments(
193
+ withoutRelationalArguments(compound),
194
+ name,
195
+ )) {
196
+ for (const arg of splitTopLevel(args)) {
197
+ const parts = complexSelectors(arg)[0] ?? [];
198
+ const last = parts.at(-1);
199
+ if (!last) return null;
200
+ const inner = subjectTypes(last);
201
+ if (inner === null) {
202
+ // A class-only argument constrains nothing by type, but it names an
203
+ // element that must carry that class.
204
+ if (kuiClasses(withoutRelationalArguments(last)).length > 0) continue;
205
+ return null;
206
+ }
207
+ types.push(...inner);
208
+ }
209
+ }
210
+ }
211
+ return types.length > 0 ? types : null;
212
+ }
@@ -0,0 +1,96 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { readFile, writeFile } from 'node:fs/promises';
4
+ import { resolve } from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+
7
+ import { projectConsumerCatalog } from './catalog-projection.mjs';
8
+
9
+ const usage =
10
+ 'Usage: kerf-catalog-demo --extension <catalog.json> --out <catalog.generated.ts> --repo-base <blob-url> [--kerf-catalog <catalog.json>] [--category <name>] [--source-template <path>] [--demo-template <path>] [--documentation-template <path>] [--design-template <path>] (--write|--check)';
11
+
12
+ function parseArgs(argv) {
13
+ const options = {};
14
+ const values = new Map([
15
+ ['--extension', 'extension'],
16
+ ['--out', 'out'],
17
+ ['--repo-base', 'repoBase'],
18
+ ['--kerf-catalog', 'kerfCatalog'],
19
+ ['--category', 'category'],
20
+ ['--source-template', 'sourceTemplate'],
21
+ ['--demo-template', 'demoTemplate'],
22
+ ['--documentation-template', 'documentationTemplate'],
23
+ ['--design-template', 'designTemplate'],
24
+ ]);
25
+ for (let index = 0; index < argv.length; index += 1) {
26
+ const arg = argv[index];
27
+ if (arg === '--check' || arg === '--write') {
28
+ if (options.mode)
29
+ throw new Error('Choose exactly one of --write or --check');
30
+ options.mode = arg;
31
+ } else if (values.has(arg)) {
32
+ const value = argv[++index];
33
+ if (!value || value.startsWith('--'))
34
+ throw new Error(`${arg} needs a value`);
35
+ options[values.get(arg)] = value;
36
+ } else {
37
+ throw new Error(`Unknown option ${arg}`);
38
+ }
39
+ }
40
+ if (!options.mode || !options.extension || !options.out || !options.repoBase)
41
+ throw new Error(usage);
42
+ if (!/^https?:\/\//.test(options.repoBase))
43
+ throw new Error('--repo-base must be an HTTP(S) URL');
44
+ return options;
45
+ }
46
+
47
+ export function renderConsumerCatalog(rows, repoBase) {
48
+ const base = repoBase.endsWith('/') ? repoBase : `${repoBase}/`;
49
+ return (
50
+ '// Generated by kerf-catalog-demo. Do not edit.\n' +
51
+ `export const catalogRepositoryBlobUrl = ${JSON.stringify(base)} as const;\n` +
52
+ `export const generatedConsumerCatalog = ${JSON.stringify(rows, null, 2)} as const;\n`
53
+ );
54
+ }
55
+
56
+ export async function runCatalogProjection(argv) {
57
+ const options = parseArgs(argv);
58
+ const extension = JSON.parse(
59
+ await readFile(resolve(options.extension), 'utf8'),
60
+ );
61
+ const kerfCatalog = JSON.parse(
62
+ await readFile(
63
+ options.kerfCatalog
64
+ ? resolve(options.kerfCatalog)
65
+ : new URL('./ai/component-catalog.json', import.meta.url),
66
+ 'utf8',
67
+ ),
68
+ );
69
+ const rows = projectConsumerCatalog(extension, kerfCatalog, options);
70
+ const output = renderConsumerCatalog(rows, options.repoBase);
71
+ const outputPath = resolve(options.out);
72
+ if (options.mode === '--write') {
73
+ await writeFile(outputPath, output);
74
+ process.stdout.write(`Wrote ${outputPath}\n`);
75
+ } else {
76
+ let current;
77
+ try {
78
+ current = await readFile(outputPath, 'utf8');
79
+ } catch {
80
+ // A missing generated file is the same drift as stale content.
81
+ }
82
+ if (current !== output)
83
+ throw new Error(`${outputPath} is stale; run kerf-catalog-demo --write`);
84
+ process.stdout.write(`${outputPath} is in sync.\n`);
85
+ }
86
+ }
87
+
88
+ if (
89
+ process.argv[1] &&
90
+ resolve(process.argv[1]) === fileURLToPath(import.meta.url)
91
+ ) {
92
+ runCatalogProjection(process.argv.slice(2)).catch((error) => {
93
+ process.stderr.write(`kerf-catalog-demo: ${error.message}\n`);
94
+ process.exitCode = 1;
95
+ });
96
+ }
@@ -0,0 +1,55 @@
1
+ export interface CatalogProjectionRow {
2
+ id: string;
3
+ name: string;
4
+ category: string;
5
+ kind: string;
6
+ source: string;
7
+ description: string;
8
+ recommendation?: string;
9
+ uses: readonly string[];
10
+ demoSource: string;
11
+ componentSource?: string;
12
+ designTemplate?: string;
13
+ documentation?: string;
14
+ }
15
+
16
+ export interface CatalogProjectionEntry {
17
+ id: string;
18
+ name: string;
19
+ kind: string;
20
+ purpose: string;
21
+ category?: string;
22
+ source?: string;
23
+ demoSource?: string;
24
+ documentation?: string;
25
+ recommendation?: string;
26
+ uses?: string[];
27
+ }
28
+
29
+ export interface CatalogProjectionOptions {
30
+ identity?: (entry: CatalogProjectionEntry) => string;
31
+ category?: (entry: CatalogProjectionEntry) => string;
32
+ componentSource?: (entry: CatalogProjectionEntry) => string | undefined;
33
+ demoSource?: (entry: CatalogProjectionEntry) => string | undefined;
34
+ documentation?: (entry: CatalogProjectionEntry) => string | undefined;
35
+ designTemplate?: (entry: CatalogProjectionEntry) => string | undefined;
36
+ }
37
+
38
+ export interface ConsumerProjectionOptions {
39
+ category?: string;
40
+ sourceTemplate?: string;
41
+ demoTemplate?: string;
42
+ documentationTemplate?: string;
43
+ designTemplate?: string;
44
+ }
45
+
46
+ export function projectCatalogEntries(
47
+ entries: readonly CatalogProjectionEntry[],
48
+ options?: CatalogProjectionOptions,
49
+ ): CatalogProjectionRow[];
50
+
51
+ export function projectConsumerCatalog(
52
+ extension: { package: string; entries: CatalogProjectionEntry[] },
53
+ kerfCatalog: { entries: { id: string }[] },
54
+ options?: ConsumerProjectionOptions,
55
+ ): CatalogProjectionRow[];
@@ -0,0 +1,62 @@
1
+ import {
2
+ isRepositoryPath,
3
+ validateCatalogExtensionReferences,
4
+ } from './scripts/component-catalog-extension-validation.mjs';
5
+
6
+ const substitute = (template, entry, packageName) =>
7
+ template.replace(/\{(id|name|kind|package)\}/g, (_, field) =>
8
+ field === 'package' ? packageName : entry[field],
9
+ );
10
+
11
+ /** Project catalog entries into the row shape used by a UX demo. */
12
+ export function projectCatalogEntries(entries, options = {}) {
13
+ return entries.map((entry) => {
14
+ const componentSource = options.componentSource?.(entry);
15
+ const designTemplate = options.designTemplate?.(entry);
16
+ return {
17
+ id: entry.id,
18
+ name: entry.name,
19
+ category: options.category?.(entry) ?? entry.category ?? 'Application',
20
+ kind: entry.kind,
21
+ source: options.identity?.(entry) ?? entry.source ?? 'consumer',
22
+ description: entry.purpose,
23
+ ...(entry.recommendation ? { recommendation: entry.recommendation } : {}),
24
+ uses: entry.uses ?? [],
25
+ demoSource: options.demoSource?.(entry) ?? entry.demoSource,
26
+ ...(componentSource ? { componentSource } : {}),
27
+ ...(designTemplate ? { designTemplate } : {}),
28
+ documentation: options.documentation?.(entry) ?? entry.documentation,
29
+ };
30
+ });
31
+ }
32
+
33
+ /** Project a validated consumer extension alongside Kerf's reference catalog. */
34
+ export function projectConsumerCatalog(extension, kerfCatalog, options = {}) {
35
+ const failures = validateCatalogExtensionReferences(extension, kerfCatalog);
36
+ if (failures.length) throw new Error(failures.join('\n'));
37
+ const fill = (template, entry) =>
38
+ template ? substitute(template, entry, extension.package) : undefined;
39
+ const rows = projectCatalogEntries(extension.entries, {
40
+ identity: () => 'consumer',
41
+ category: () => options.category ?? 'Application',
42
+ componentSource: (entry) =>
43
+ entry.source ?? fill(options.sourceTemplate, entry),
44
+ demoSource: (entry) =>
45
+ entry.demoSource ??
46
+ fill(options.demoTemplate ?? 'ux-demo/demos/{id}.tsx', entry),
47
+ documentation: (entry) =>
48
+ entry.documentation ?? fill(options.documentationTemplate, entry),
49
+ designTemplate: (entry) => fill(options.designTemplate, entry),
50
+ });
51
+ for (const row of rows) {
52
+ if (!isRepositoryPath(row.demoSource))
53
+ throw new Error(`${row.id} requires a repository-relative demoSource`);
54
+ if (row.componentSource && !isRepositoryPath(row.componentSource))
55
+ throw new Error(`${row.id} has an invalid repository-relative source`);
56
+ if (!row.documentation)
57
+ throw new Error(
58
+ `${row.id} requires documentation or documentationTemplate`,
59
+ );
60
+ }
61
+ return rows;
62
+ }
@@ -0,0 +1,30 @@
1
+ import { PopoverOptions, OverlayContent, OverlayHandle } from 'kerfjs/overlay';
2
+
3
+ /** App-facing options for a non-modal, arbitrary-content help surface. */
4
+ interface AnchoredSurfaceOptions extends Pick<PopoverOptions, 'placement' | 'align' | 'gap' | 'dismiss' | 'initialFocus' | 'onDismiss' | 'outsideIgnore'> {
5
+ /** Accessible name for the non-modal dialog. */
6
+ label: string;
7
+ }
8
+ /** A viewport pointer location; `context` is the element under the pointer. */
9
+ interface AnchoredSurfacePoint {
10
+ x: number;
11
+ y: number;
12
+ /** Pass the event target when opening from inside a modal dialog. */
13
+ context?: Element;
14
+ }
15
+ /**
16
+ * Open app-owned content beside an element. The surface owns its Kerf UI chrome;
17
+ * kerfjs/overlay owns positioning, top-layer/modal hosting, focus, and dismissal.
18
+ * The caller owns content, action policy, and calling `close()` when an action
19
+ * completes. `initialFocus` defaults to the first focusable descendant; set it
20
+ * to `false` for read-only help that should leave focus on its trigger.
21
+ */
22
+ declare function openAnchoredSurface(anchor: Element, content: OverlayContent, options: AnchoredSurfaceOptions): OverlayHandle;
23
+ /**
24
+ * Open the same surface at pointer coordinates. The temporary anchor has no
25
+ * layout or hit target. `context` keeps a surface opened inside a modal dialog
26
+ * in that dialog's interactive host slot; it is removed on close or failure.
27
+ */
28
+ declare function openAnchoredSurfaceAt(point: AnchoredSurfacePoint, content: OverlayContent, options: AnchoredSurfaceOptions): OverlayHandle;
29
+
30
+ export { type AnchoredSurfaceOptions, type AnchoredSurfacePoint, openAnchoredSurface, openAnchoredSurfaceAt };
@@ -0,0 +1,3 @@
1
+ export { openAnchoredSurface, openAnchoredSurfaceAt } from './chunk-IOS2NXW7.js';
2
+
3
+ //# sourceMappingURL=anchored-surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"anchored-surface.js"}
package/dist/app-tab.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { SafeHtml } from 'kerfjs';
2
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
2
3
 
3
4
  type AppTabRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
4
5
  'data-component'?: never;
@@ -7,15 +8,36 @@ type AppTabRootAttributes = Readonly<Record<`data-${string}`, string | undefined
7
8
  'data-selected'?: never;
8
9
  'data-tab-dragging'?: never;
9
10
  'data-tab-drop-position'?: never;
11
+ 'data-attention'?: never;
12
+ 'data-drop-target'?: never;
13
+ 'data-name-overflow'?: never;
14
+ 'data-pinned'?: never;
10
15
  }>;
16
+ type AppTabPresentation = 'pill' | 'segmented' | 'icon-only';
17
+ type AppTabSize = 'default' | 'compact';
18
+ type AppTabNameOverflow = 'ellipsis' | 'visible';
11
19
  interface AppTabProps {
12
20
  id: string;
13
21
  name: string;
14
22
  selected?: boolean;
23
+ /** Emphasize the visible tab name with the attention color token. */
24
+ attention?: boolean;
25
+ /** Highlight this tab as the target of a drag over its content. */
26
+ dropTarget?: boolean;
27
+ /** Keep the leading tab visible within its TabBar tablist while peers scroll. */
28
+ pinned?: boolean;
15
29
  closable?: boolean;
16
30
  draggable?: boolean;
17
- leading?: SafeHtml;
18
- trailing?: SafeHtml;
31
+ leading?: KerfUiContent;
32
+ trailing?: KerfUiContent;
33
+ /** Visual treatment within a TabBar. Icon-only tabs retain `name` as their accessible name. */
34
+ presentation?: AppTabPresentation;
35
+ /** Compact tabs use the 32px application-rail height. */
36
+ size?: AppTabSize;
37
+ /** Maximum visible label width in CSS pixels before ellipsis. */
38
+ labelMaxWidth?: number;
39
+ /** Keep the full name visible for an inline loading treatment. */
40
+ nameOverflow?: AppTabNameOverflow;
19
41
  /** Decorative dormant content for the close button. Must not contain interactive descendants. */
20
42
  closeIcon?: SafeHtml;
21
43
  selectAction?: string;
@@ -23,8 +45,21 @@ interface AppTabProps {
23
45
  className?: string;
24
46
  /** Render as an unanimated loading skeleton, disabling select/close and dragging. */
25
47
  placeholder?: boolean;
48
+ /**
49
+ * Named and still opening: the tab is known but its content is loading.
50
+ * Keeps `name` visible in the quiet text color and as the tab's accessible
51
+ * name, shows `trailing` (for example a `LoadingSpinner`), and marks the
52
+ * tab `aria-busy`. Unlike `placeholder` it stays selectable — the
53
+ * application shows placeholder content in its panel until loading
54
+ * completes — while close and dragging stay disabled. Same pill geometry
55
+ * as the live tab, so swapping it in place does not shift the bar.
56
+ * `placeholder` wins when both are set.
57
+ */
58
+ pending?: boolean;
26
59
  rootAttributes?: AppTabRootAttributes;
60
+ /** Native named-slot assignment when composed inside a web component. */
61
+ slot?: string;
27
62
  }
28
- declare function AppTab({ id, name, selected, closable, draggable, leading, trailing, closeIcon, selectAction, closeAction, className, placeholder, rootAttributes }: AppTabProps): SafeHtml;
63
+ declare function AppTab({ id, name, selected, attention, dropTarget, pinned, closable, draggable, leading, trailing, presentation, size, labelMaxWidth, nameOverflow, closeIcon, selectAction, closeAction, className, placeholder, pending, rootAttributes, slot, }: AppTabProps): SafeHtml;
29
64
 
30
- export { AppTab, type AppTabProps };
65
+ export { AppTab, type AppTabNameOverflow, type AppTabPresentation, type AppTabProps, type AppTabSize };
package/dist/app-tab.js CHANGED
@@ -1,4 +1,5 @@
1
- export { AppTab } from './chunk-2Z5TWHKQ.js';
1
+ export { AppTab } from './chunk-KAJVVN7Q.js';
2
+
2
3
 
3
4
 
4
5
 
@@ -0,0 +1,54 @@
1
+ import { SafeHtml } from 'kerfjs';
2
+ import { S as SemanticTone } from './semantic-tone-CdW013KF.js';
3
+
4
+ /** @deprecated Use SemanticTone. */
5
+ type BadgeTone = SemanticTone;
6
+ type BadgeAppearance = 'quiet' | 'solid' | 'outline';
7
+ type BadgeShape = 'pill' | 'rounded';
8
+ /** Size of a text badge. A text-free dot is the separate `size: 'dot'` form. */
9
+ type BadgeSize = 'compact' | 'default';
10
+ interface BadgeCommonProps {
11
+ tone?: SemanticTone;
12
+ className?: string;
13
+ /** Native named-slot assignment when composed inside a web component. */
14
+ slot?: string;
15
+ }
16
+ /** A badge that shows a short status, count, or category as visible text. */
17
+ interface BadgeTextProps extends BadgeCommonProps {
18
+ children: SafeHtml | string | number;
19
+ appearance?: BadgeAppearance;
20
+ shape?: BadgeShape;
21
+ size?: BadgeSize;
22
+ /** Optional accessible name when the visible content is abbreviated. */
23
+ label?: string;
24
+ /** Hide a repeated visual badge from assistive technology. */
25
+ ariaHidden?: boolean;
26
+ }
27
+ /** A labeled dot, announced as an image with its own accessible name. */
28
+ interface BadgeDotLabeled {
29
+ /** Accessible name for the dot, for example `"New activity"`. */
30
+ label: string;
31
+ ariaHidden?: false;
32
+ }
33
+ /** A decorative dot whose meaning the owning component already announces. */
34
+ interface BadgeDotDecorative {
35
+ label?: never;
36
+ ariaHidden: true;
37
+ }
38
+ /**
39
+ * A text-free status dot (the iOS "new content" dot): a small solid circle in
40
+ * the badge's tone. It has no visible text, so it must either carry its own
41
+ * accessible `label` (exposed as an image) or be `ariaHidden` because the
42
+ * surrounding component already folds its meaning into an accessible name.
43
+ */
44
+ type BadgeDotProps = BadgeCommonProps & {
45
+ size: 'dot';
46
+ children?: never;
47
+ appearance?: never;
48
+ shape?: never;
49
+ } & (BadgeDotLabeled | BadgeDotDecorative);
50
+ type BadgeProps = BadgeTextProps | BadgeDotProps;
51
+ /** Compact, non-interactive metadata whose tone, emphasis, and shape are configured by props. */
52
+ declare function Badge(props: BadgeProps): SafeHtml;
53
+
54
+ export { Badge, type BadgeAppearance, type BadgeDotProps, type BadgeProps, type BadgeShape, type BadgeSize, type BadgeTextProps, type BadgeTone, SemanticTone };
package/dist/badge.js ADDED
@@ -0,0 +1,3 @@
1
+ export { Badge } from './chunk-J3AWE5I4.js';
2
+
3
+ //# sourceMappingURL=badge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"badge.js"}
@@ -0,0 +1,3 @@
1
+ import '../styles/foundation.css';
2
+ import '../styles/anchored-surface.css';
3
+ export * from '../anchored-surface.js';
@@ -0,0 +1,3 @@
1
+ import '../styles/foundation.css';
2
+ import '../styles/badge.css';
3
+ export * from '../badge.js';
@@ -0,0 +1,28 @@
1
+ import '../styles/foundation.css';
2
+ import '../styles/popup-menu.css';
3
+ import '../styles/loading-spinner.css';
4
+ import '../styles/toolbar-control-group.css';
5
+ import '../styles/skeleton.css';
6
+ import '../styles/toolbar-text.css';
7
+ import '../styles/list-inset-control.css';
8
+ import '../styles/list-inset-text.css';
9
+ import '../styles/lucide-icon.css';
10
+ import '../styles/token-search-field.css';
11
+ import '../styles/resizable-region.css';
12
+ import '../styles/toolbar.css';
13
+ import '../styles/list.css';
14
+ import '../styles/pane.css';
15
+ import '../styles/floating-toolbar.css';
16
+ import '../styles/nav-stack.css';
17
+ import '../styles/workbench.css';
18
+ import '../styles/text.css';
19
+ import '../styles/row.css';
20
+ import '../styles/badge.css';
21
+ import '../styles/disclosure-arrow.css';
22
+ import '../styles/list-header.css';
23
+ import '../styles/list-item.css';
24
+ import '../styles/catalog/components/catalog-stage.css';
25
+ import '../styles/catalog.css';
26
+ import '../styles/catalog/components/catalog-example.css';
27
+ import '../styles/catalog/components/catalog-example-stack.css';
28
+ export * from '../catalog.js';
@@ -0,0 +1,3 @@
1
+ import '../styles/foundation.css';
2
+ import '../styles/chip.css';
3
+ export * from '../chip.js';
@@ -0,0 +1,9 @@
1
+ import '../styles/foundation.css';
2
+ import '../styles/toolbar.css';
3
+ import '../styles/loading-spinner.css';
4
+ import '../styles/toolbar-control-group.css';
5
+ import '../styles/list.css';
6
+ import '../styles/pane.css';
7
+ import '../styles/lucide-icon.css';
8
+ import '../styles/collapsible-panel.css';
9
+ export * from '../collapsible-panel.js';
@@ -0,0 +1,3 @@
1
+ import '../styles/foundation.css';
2
+ import '../styles/content-item.css';
3
+ export * from '../content-item.js';
@@ -0,0 +1,3 @@
1
+ import '../styles/foundation.css';
2
+ import '../styles/floating-toolbar.css';
3
+ export * from '../floating-toolbar.js';
@@ -0,0 +1,3 @@
1
+ import '../styles/foundation.css';
2
+ import '../styles/grid.css';
3
+ export * from '../grid.js';