@kerfjs/ui 5.0.0-beta.4 → 5.0.0-beta.41

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 (498) hide show
  1. package/README.md +342 -108
  2. package/ai/application-ui-diagnostic-ids-v1.json +100 -0
  3. package/ai/application-ui-profile-sync.cjs +529 -0
  4. package/ai/application-ui-profile.d.mts +1 -0
  5. package/ai/application-ui-profile.d.ts +102 -0
  6. package/ai/application-ui-profile.defaults.json +41 -0
  7. package/ai/application-ui-profile.mjs +626 -0
  8. package/ai/application-ui-profile.schema.json +130 -0
  9. package/ai/catalog-authoring.json +25 -0
  10. package/ai/catalog-authoring.schema.json +61 -0
  11. package/ai/compile-time-contracts-v1.json +132 -0
  12. package/ai/compile-time-contracts-v1.schema.json +51 -0
  13. package/ai/component-catalog-extension-v2.d.ts +7 -0
  14. package/ai/component-catalog-extension-v2.schema.json +7 -0
  15. package/ai/component-catalog-extension.schema.json +79 -0
  16. package/ai/component-catalog-v2-overrides.json +496 -0
  17. package/ai/component-catalog-v2.d.ts +90 -0
  18. package/ai/component-catalog-v2.json +5678 -0
  19. package/ai/component-catalog-v2.schema.json +298 -0
  20. package/ai/component-catalog.json +2694 -417
  21. package/ai/component-catalog.schema.json +39 -0
  22. package/ai/public-api-signatures-v1.md +1591 -126
  23. package/ai/skill.md +140 -54
  24. package/ai/webawesome-jsx-signatures-v1.md +2 -1
  25. package/analyzer/cli.mjs +49 -0
  26. package/analyzer/index.d.mts +46 -0
  27. package/analyzer/index.mjs +1086 -0
  28. package/analyzer/report.schema.json +66 -0
  29. package/dist/app-tab.d.ts +15 -4
  30. package/dist/app-tab.js +3 -1
  31. package/dist/browser/app-tab.js +1 -0
  32. package/dist/browser/floating-toolbar.js +3 -0
  33. package/dist/browser/list-action-row.js +5 -0
  34. package/dist/browser/list-header.js +7 -0
  35. package/dist/browser/list-inset-control.js +3 -0
  36. package/dist/browser/list-inset-text.js +3 -0
  37. package/dist/browser/list-item.js +5 -0
  38. package/dist/browser/list.js +3 -0
  39. package/dist/browser/pane.js +3 -0
  40. package/dist/browser/row.js +3 -0
  41. package/dist/browser/segmented-control.js +1 -0
  42. package/dist/browser/select.js +1 -0
  43. package/dist/browser/skeleton.js +3 -0
  44. package/dist/browser/spacer.js +3 -0
  45. package/dist/browser/state-banner.js +1 -0
  46. package/dist/browser/sunken-panel.js +3 -0
  47. package/dist/browser/surface-scaffold.js +3 -0
  48. package/dist/browser/text.js +3 -0
  49. package/dist/browser/toolbar-text.js +1 -0
  50. package/dist/browser/value-table.js +1 -0
  51. package/dist/catalog-resources.d.ts +35 -0
  52. package/dist/catalog-resources.js +22 -0
  53. package/dist/catalog-resources.js.map +1 -0
  54. package/dist/catalog.d.ts +151 -0
  55. package/dist/catalog.js +396 -0
  56. package/dist/catalog.js.map +1 -0
  57. package/dist/chunk-2TYUFZUC.js +22 -0
  58. package/dist/chunk-2TYUFZUC.js.map +1 -0
  59. package/dist/chunk-6NDBE2OK.js +32 -0
  60. package/dist/chunk-6NDBE2OK.js.map +1 -0
  61. package/dist/chunk-6WTETUZ6.js +21 -0
  62. package/dist/chunk-6WTETUZ6.js.map +1 -0
  63. package/dist/chunk-AQFWBG23.js +83 -0
  64. package/dist/chunk-AQFWBG23.js.map +1 -0
  65. package/dist/chunk-B6JYRX3P.js +51 -0
  66. package/dist/chunk-B6JYRX3P.js.map +1 -0
  67. package/dist/chunk-C34NZOLJ.js +53 -0
  68. package/dist/chunk-C34NZOLJ.js.map +1 -0
  69. package/dist/chunk-CAB6NQ2T.js +102 -0
  70. package/dist/chunk-CAB6NQ2T.js.map +1 -0
  71. package/dist/chunk-CK6P5AUK.js +136 -0
  72. package/dist/chunk-CK6P5AUK.js.map +1 -0
  73. package/dist/chunk-DAO2VFTT.js +129 -0
  74. package/dist/chunk-DAO2VFTT.js.map +1 -0
  75. package/dist/chunk-DEYOGDE7.js +141 -0
  76. package/dist/chunk-DEYOGDE7.js.map +1 -0
  77. package/dist/chunk-DYBPI5O2.js +25 -0
  78. package/dist/chunk-DYBPI5O2.js.map +1 -0
  79. package/dist/{chunk-TRNBHPNW.js → chunk-E34TE2ZI.js} +12 -8
  80. package/dist/chunk-E34TE2ZI.js.map +1 -0
  81. package/dist/chunk-EYALJQQD.js +25 -0
  82. package/dist/chunk-EYALJQQD.js.map +1 -0
  83. package/dist/chunk-I45QO2IZ.js +88 -0
  84. package/dist/chunk-I45QO2IZ.js.map +1 -0
  85. package/dist/chunk-I4V3UDSA.js +79 -0
  86. package/dist/chunk-I4V3UDSA.js.map +1 -0
  87. package/dist/chunk-OGTJNHRG.js +42 -0
  88. package/dist/chunk-OGTJNHRG.js.map +1 -0
  89. package/dist/chunk-OL4TC3U2.js +156 -0
  90. package/dist/chunk-OL4TC3U2.js.map +1 -0
  91. package/dist/chunk-OMSRSL3B.js +120 -0
  92. package/dist/chunk-OMSRSL3B.js.map +1 -0
  93. package/dist/chunk-R3EBGEAW.js +46 -0
  94. package/dist/chunk-R3EBGEAW.js.map +1 -0
  95. package/dist/chunk-SOK5EUF7.js +25 -0
  96. package/dist/chunk-SOK5EUF7.js.map +1 -0
  97. package/dist/{chunk-7BR3DO2A.js → chunk-SRSJO5QE.js} +13 -4
  98. package/dist/chunk-SRSJO5QE.js.map +1 -0
  99. package/dist/chunk-T7DOWS6T.js +61 -0
  100. package/dist/chunk-T7DOWS6T.js.map +1 -0
  101. package/dist/chunk-TIGSG6BX.js +218 -0
  102. package/dist/chunk-TIGSG6BX.js.map +1 -0
  103. package/dist/chunk-UDHHKZWO.js +41 -0
  104. package/dist/chunk-UDHHKZWO.js.map +1 -0
  105. package/dist/{chunk-MQIZAD4A.js → chunk-UKKSMZYT.js} +76 -22
  106. package/dist/chunk-UKKSMZYT.js.map +1 -0
  107. package/dist/chunk-V6GQKOX2.js +39 -0
  108. package/dist/chunk-V6GQKOX2.js.map +1 -0
  109. package/dist/chunk-V6HCTCVD.js +46 -0
  110. package/dist/chunk-V6HCTCVD.js.map +1 -0
  111. package/dist/chunk-VDUJZF5G.js +515 -0
  112. package/dist/chunk-VDUJZF5G.js.map +1 -0
  113. package/dist/chunk-VXFGMDA7.js +31 -0
  114. package/dist/chunk-VXFGMDA7.js.map +1 -0
  115. package/dist/chunk-WN52USHV.js +115 -0
  116. package/dist/chunk-WN52USHV.js.map +1 -0
  117. package/dist/chunk-WSXUPSID.js +43 -0
  118. package/dist/chunk-WSXUPSID.js.map +1 -0
  119. package/dist/chunk-X5GRDQ7V.js +50 -0
  120. package/dist/chunk-X5GRDQ7V.js.map +1 -0
  121. package/dist/{chunk-56RJXPHG.js → chunk-Y6LYKFXY.js} +1 -1
  122. package/dist/{chunk-56RJXPHG.js.map → chunk-Y6LYKFXY.js.map} +1 -1
  123. package/dist/chunk-ZASJJMGV.js +17 -0
  124. package/dist/chunk-ZASJJMGV.js.map +1 -0
  125. package/dist/chunk-ZPWZIVI6.js +47 -0
  126. package/dist/chunk-ZPWZIVI6.js.map +1 -0
  127. package/dist/collapsible-panel.d.ts +77 -0
  128. package/dist/collapsible-panel.js +84 -0
  129. package/dist/collapsible-panel.js.map +1 -0
  130. package/dist/css-values.d.ts +75 -0
  131. package/dist/css-values.js +3 -0
  132. package/dist/css-values.js.map +1 -0
  133. package/dist/device-class.d.ts +62 -0
  134. package/dist/device-class.js +103 -0
  135. package/dist/device-class.js.map +1 -0
  136. package/dist/disclosure-arrow.js +1 -1
  137. package/dist/divider-sides-BzB6rphT.d.ts +6 -0
  138. package/dist/empty-state.d.ts +3 -2
  139. package/dist/empty-state.js +1 -1
  140. package/dist/flex-alignment-CF8NLj7i.d.ts +4 -0
  141. package/dist/floating-toolbar.d.ts +29 -0
  142. package/dist/floating-toolbar.js +3 -0
  143. package/dist/floating-toolbar.js.map +1 -0
  144. package/dist/index.d.ts +28 -14
  145. package/dist/index.js +34 -23
  146. package/dist/{menu-action-row.d.ts → list-action-row.d.ts} +19 -8
  147. package/dist/list-action-row.js +7 -0
  148. package/dist/list-action-row.js.map +1 -0
  149. package/dist/list-header.d.ts +80 -0
  150. package/dist/list-header.js +9 -0
  151. package/dist/list-header.js.map +1 -0
  152. package/dist/list-inset-control.d.ts +20 -0
  153. package/dist/list-inset-control.js +3 -0
  154. package/dist/list-inset-control.js.map +1 -0
  155. package/dist/list-inset-text.d.ts +29 -0
  156. package/dist/list-inset-text.js +3 -0
  157. package/dist/list-inset-text.js.map +1 -0
  158. package/dist/list-item.d.ts +45 -0
  159. package/dist/list-item.js +7 -0
  160. package/dist/list-item.js.map +1 -0
  161. package/dist/list.d.ts +30 -0
  162. package/dist/list.js +5 -0
  163. package/dist/list.js.map +1 -0
  164. package/dist/loading-spinner.js +1 -1
  165. package/dist/nav-stack.d.ts +41 -0
  166. package/dist/nav-stack.js +6 -0
  167. package/dist/nav-stack.js.map +1 -0
  168. package/dist/pane.d.ts +50 -0
  169. package/dist/pane.js +4 -0
  170. package/dist/pane.js.map +1 -0
  171. package/dist/resizable-region.d.ts +21 -3
  172. package/dist/resizable-region.js +1 -1
  173. package/dist/row.d.ts +28 -0
  174. package/dist/row.js +5 -0
  175. package/dist/row.js.map +1 -0
  176. package/dist/segmented-control.d.ts +11 -8
  177. package/dist/segmented-control.js +3 -1
  178. package/dist/select-register.d.ts +5 -1
  179. package/dist/select-register.js +129 -1
  180. package/dist/select-register.js.map +1 -1
  181. package/dist/select.d.ts +34 -8
  182. package/dist/select.js +3 -1
  183. package/dist/semantic-content-BbzjvSu9.d.ts +14 -0
  184. package/dist/skeleton.d.ts +25 -0
  185. package/dist/skeleton.js +4 -0
  186. package/dist/skeleton.js.map +1 -0
  187. package/dist/spacer.d.ts +16 -0
  188. package/dist/spacer.js +4 -0
  189. package/dist/spacer.js.map +1 -0
  190. package/dist/split-view.d.ts +43 -0
  191. package/dist/split-view.js +82 -0
  192. package/dist/split-view.js.map +1 -0
  193. package/dist/state-banner.d.ts +11 -5
  194. package/dist/state-banner.js +3 -1
  195. package/dist/styles/app-tab.css +26 -0
  196. package/dist/styles/catalog.css +582 -0
  197. package/dist/styles/collapsible-panel.css +212 -0
  198. package/dist/styles/floating-toolbar.css +38 -0
  199. package/dist/styles/foundation.css +80 -0
  200. package/dist/styles/layout.css +2 -20
  201. package/dist/styles/list-action-row.css +224 -0
  202. package/dist/styles/list-header.css +224 -0
  203. package/dist/styles/list-inset-control.css +23 -0
  204. package/dist/styles/list-inset-text.css +30 -0
  205. package/dist/styles/list-item.css +171 -0
  206. package/dist/styles/list.css +118 -0
  207. package/dist/styles/nav-stack.css +141 -0
  208. package/dist/styles/pane.css +62 -0
  209. package/dist/styles/resizable-region.css +158 -0
  210. package/dist/styles/row.css +92 -0
  211. package/dist/styles/segmented-control.css +10 -7
  212. package/dist/styles/select.css +115 -2
  213. package/dist/styles/skeleton.css +31 -0
  214. package/dist/styles/spacer.css +11 -0
  215. package/dist/styles/split-view.css +35 -0
  216. package/dist/styles/state-banner.css +49 -10
  217. package/dist/styles/styles.css +10 -5
  218. package/dist/styles/sunken-panel.css +22 -0
  219. package/dist/styles/surface-scaffold.css +51 -0
  220. package/dist/styles/tab-bar.css +24 -0
  221. package/dist/styles/tab-scaffold.css +85 -0
  222. package/dist/styles/text.css +6 -0
  223. package/dist/styles/token-search-field.css +14 -2
  224. package/dist/styles/toolbar-control-group.css +235 -8
  225. package/dist/styles/toolbar-text.css +65 -2
  226. package/dist/styles/toolbar.css +47 -2
  227. package/dist/styles/webawesome.css +171 -0
  228. package/dist/styles/workbench.css +187 -0
  229. package/dist/sunken-panel.d.ts +20 -0
  230. package/dist/sunken-panel.js +3 -0
  231. package/dist/sunken-panel.js.map +1 -0
  232. package/dist/surface-scaffold.d.ts +26 -0
  233. package/dist/surface-scaffold.js +3 -0
  234. package/dist/surface-scaffold.js.map +1 -0
  235. package/dist/tab-bar.d.ts +24 -6
  236. package/dist/tab-bar.js +1 -1
  237. package/dist/tab-scaffold.d.ts +31 -0
  238. package/dist/tab-scaffold.js +51 -0
  239. package/dist/tab-scaffold.js.map +1 -0
  240. package/dist/text.d.ts +20 -0
  241. package/dist/text.js +3 -0
  242. package/dist/text.js.map +1 -0
  243. package/dist/token-search-field.d.ts +30 -13
  244. package/dist/token-search-field.js +1 -1
  245. package/dist/toolbar-control-group.d.ts +33 -7
  246. package/dist/toolbar-control-group.js +1 -1
  247. package/dist/toolbar-text.d.ts +31 -4
  248. package/dist/toolbar-text.js +3 -1
  249. package/dist/toolbar.d.ts +10 -7
  250. package/dist/toolbar.js +1 -1
  251. package/dist/value-table.d.ts +7 -3
  252. package/dist/value-table.js +3 -1
  253. package/dist/webawesome.d.ts +1 -0
  254. package/dist/wire-catalog.d.ts +57 -0
  255. package/dist/wire-catalog.js +302 -0
  256. package/dist/wire-catalog.js.map +1 -0
  257. package/dist/wire-nav-stack.d.ts +18 -0
  258. package/dist/wire-nav-stack.js +228 -0
  259. package/dist/wire-nav-stack.js.map +1 -0
  260. package/dist/wire-resizable-regions.d.ts +1 -1
  261. package/dist/wire-resizable-regions.js +1 -1
  262. package/dist/wire-sidebar.d.ts +48 -0
  263. package/dist/wire-sidebar.js +147 -0
  264. package/dist/wire-sidebar.js.map +1 -0
  265. package/dist/wire-tab-bars.d.ts +19 -2
  266. package/dist/wire-tab-bars.js +1 -1
  267. package/dist/wire-tab-scaffold.d.ts +11 -0
  268. package/dist/wire-tab-scaffold.js +21 -0
  269. package/dist/wire-tab-scaffold.js.map +1 -0
  270. package/dist/wire-token-search-fields.d.ts +104 -4
  271. package/dist/wire-token-search-fields.js +1 -1
  272. package/dist/workbench.d.ts +44 -0
  273. package/dist/workbench.js +106 -0
  274. package/dist/workbench.js.map +1 -0
  275. package/docs/accessibility.md +155 -20
  276. package/docs/app-layouts.md +61 -0
  277. package/docs/catalog.md +364 -0
  278. package/docs/collapsible-panel.md +142 -0
  279. package/docs/component-contract.md +258 -28
  280. package/docs/component-integration.md +63 -0
  281. package/docs/component-selection.md +219 -57
  282. package/docs/design/templates/empty-state/filtered-dark.svg +1 -0
  283. package/docs/design/templates/empty-state/filtered.svg +1 -0
  284. package/docs/design/templates/empty-state/with-action-dark.svg +1 -0
  285. package/docs/design/templates/empty-state/with-action.svg +1 -0
  286. package/docs/design/templates/empty-state-dark.svg +1 -0
  287. package/docs/design/templates/empty-state.svg +1 -0
  288. package/docs/design/templates/list/compact-dark.svg +1 -0
  289. package/docs/design/templates/list/compact.svg +1 -0
  290. package/docs/design/templates/list/stack-dark.svg +1 -0
  291. package/docs/design/templates/list/stack.svg +1 -0
  292. package/docs/design/templates/list-action-row/default-dark.svg +1 -0
  293. package/docs/design/templates/list-action-row/default.svg +1 -0
  294. package/docs/design/templates/list-action-row/selected-dark.svg +1 -0
  295. package/docs/design/templates/list-action-row/selected.svg +1 -0
  296. package/docs/design/templates/list-action-row-dark.svg +1 -0
  297. package/docs/design/templates/list-action-row.svg +1 -0
  298. package/docs/design/templates/list-dark.svg +1 -0
  299. package/docs/design/templates/list-header/action-dark.svg +1 -0
  300. package/docs/design/templates/list-header/action.svg +1 -0
  301. package/docs/design/templates/list-header/count-dark.svg +1 -0
  302. package/docs/design/templates/list-header/count.svg +1 -0
  303. package/docs/design/templates/list-header/inline-action-dark.svg +1 -0
  304. package/docs/design/templates/list-header/inline-action.svg +1 -0
  305. package/docs/design/templates/list-header/toggle-collapsed-dark.svg +1 -0
  306. package/docs/design/templates/list-header/toggle-collapsed.svg +1 -0
  307. package/docs/design/templates/list-header/toggle-expanded-dark.svg +1 -0
  308. package/docs/design/templates/list-header/toggle-expanded.svg +1 -0
  309. package/docs/design/templates/list-header-dark.svg +1 -0
  310. package/docs/design/templates/list-header.svg +1 -0
  311. package/docs/design/templates/list-item/default-dark.svg +1 -0
  312. package/docs/design/templates/list-item/default.svg +1 -0
  313. package/docs/design/templates/list-item/multiline-dark.svg +1 -0
  314. package/docs/design/templates/list-item/multiline.svg +1 -0
  315. package/docs/design/templates/list-item/selected-dark.svg +1 -0
  316. package/docs/design/templates/list-item/selected.svg +1 -0
  317. package/docs/design/templates/list-item/trailing-dark.svg +1 -0
  318. package/docs/design/templates/list-item/trailing.svg +1 -0
  319. package/docs/design/templates/list-item-dark.svg +1 -0
  320. package/docs/design/templates/list-item.svg +1 -0
  321. package/docs/design/templates/list.svg +1 -0
  322. package/docs/design/templates/segmented-control/equal-dark.svg +1 -0
  323. package/docs/design/templates/segmented-control/equal.svg +1 -0
  324. package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -0
  325. package/docs/design/templates/segmented-control/pill-small.svg +1 -0
  326. package/docs/design/templates/segmented-control-dark.svg +1 -0
  327. package/docs/design/templates/segmented-control.svg +1 -0
  328. package/docs/design/templates/skeleton/avatar-dark.svg +1 -0
  329. package/docs/design/templates/skeleton/avatar.svg +1 -0
  330. package/docs/design/templates/skeleton/block-dark.svg +1 -0
  331. package/docs/design/templates/skeleton/block.svg +1 -0
  332. package/docs/design/templates/skeleton/lines-dark.svg +1 -0
  333. package/docs/design/templates/skeleton/lines.svg +1 -0
  334. package/docs/design/templates/skeleton-dark.svg +1 -0
  335. package/docs/design/templates/skeleton.svg +1 -0
  336. package/docs/design/templates/state-banner/danger-dark.svg +1 -0
  337. package/docs/design/templates/state-banner/danger.svg +1 -0
  338. package/docs/design/templates/state-banner/info-badge-dark.svg +1 -0
  339. package/docs/design/templates/state-banner/info-badge.svg +1 -0
  340. package/docs/design/templates/state-banner/info-dark.svg +1 -0
  341. package/docs/design/templates/state-banner/info.svg +1 -0
  342. package/docs/design/templates/state-banner/success-dark.svg +1 -0
  343. package/docs/design/templates/state-banner/success.svg +1 -0
  344. package/docs/design/templates/state-banner/warning-dark.svg +1 -0
  345. package/docs/design/templates/state-banner/warning.svg +1 -0
  346. package/docs/design/templates/state-banner-dark.svg +1 -0
  347. package/docs/design/templates/state-banner.svg +1 -0
  348. package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -0
  349. package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -0
  350. package/docs/design/templates/tab-bar-dark.svg +1 -0
  351. package/docs/design/templates/tab-bar.svg +1 -0
  352. package/docs/design/templates/token-search-field/empty-dark.svg +1 -0
  353. package/docs/design/templates/token-search-field/empty.svg +1 -0
  354. package/docs/design/templates/token-search-field/tokens-dark.svg +1 -0
  355. package/docs/design/templates/token-search-field/tokens.svg +1 -0
  356. package/docs/design/templates/token-search-field-dark.svg +1 -0
  357. package/docs/design/templates/token-search-field.svg +1 -0
  358. package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -0
  359. package/docs/design/templates/toolbar/title-and-actions.svg +1 -0
  360. package/docs/design/templates/toolbar-control-group/borderless-single-dark.svg +1 -0
  361. package/docs/design/templates/toolbar-control-group/borderless-single.svg +1 -0
  362. package/docs/design/templates/toolbar-control-group/icon-buttons-dark.svg +1 -0
  363. package/docs/design/templates/toolbar-control-group/icon-buttons.svg +1 -0
  364. package/docs/design/templates/toolbar-control-group/push-buttons-dark.svg +1 -0
  365. package/docs/design/templates/toolbar-control-group/push-buttons.svg +1 -0
  366. package/docs/design/templates/toolbar-control-group/with-text-dark.svg +1 -0
  367. package/docs/design/templates/toolbar-control-group/with-text.svg +1 -0
  368. package/docs/design/templates/toolbar-control-group-dark.svg +1 -0
  369. package/docs/design/templates/toolbar-control-group.svg +1 -0
  370. package/docs/design/templates/toolbar-dark.svg +1 -0
  371. package/docs/design/templates/toolbar-text/default-dark.svg +1 -0
  372. package/docs/design/templates/toolbar-text/default.svg +1 -0
  373. package/docs/design/templates/toolbar-text/large-dark.svg +1 -0
  374. package/docs/design/templates/toolbar-text/large.svg +1 -0
  375. package/docs/design/templates/toolbar-text/small-dark.svg +1 -0
  376. package/docs/design/templates/toolbar-text/small.svg +1 -0
  377. package/docs/design/templates/toolbar-text-dark.svg +1 -0
  378. package/docs/design/templates/toolbar-text.svg +1 -0
  379. package/docs/design/templates/toolbar.svg +1 -0
  380. package/docs/design/templates/value-table/details-dark.svg +1 -0
  381. package/docs/design/templates/value-table/details.svg +1 -0
  382. package/docs/design/templates/value-table-dark.svg +1 -0
  383. package/docs/design/templates/value-table.svg +1 -0
  384. package/docs/design/templates.md +128 -0
  385. package/docs/design-philosophy.md +33 -11
  386. package/docs/device-class.md +54 -0
  387. package/docs/examples/application-ui-profile.json +60 -0
  388. package/docs/examples/command-palette-adapter.tsx +68 -17
  389. package/docs/examples/component-catalog-extension-v2.json +80 -0
  390. package/docs/examples/component-catalog-extension.json +45 -0
  391. package/docs/layout.md +169 -38
  392. package/docs/nav-stack.md +77 -0
  393. package/docs/recipes.md +64 -16
  394. package/docs/split-view.md +55 -0
  395. package/docs/sunken-panel.md +53 -0
  396. package/docs/surface-scaffold.md +25 -0
  397. package/docs/tab-scaffold.md +52 -0
  398. package/docs/type-contracts.md +127 -0
  399. package/docs/ui-analyzer.md +118 -0
  400. package/docs/ui-doctor.md +91 -0
  401. package/docs/ui-evaluator.md +122 -0
  402. package/docs/ux-demo.md +29 -10
  403. package/docs/webawesome-theme.md +82 -8
  404. package/docs/workbench.md +123 -0
  405. package/doctor/cli.mjs +115 -0
  406. package/doctor/config.schema.json +68 -0
  407. package/doctor/eslint-diagnostics.d.mts +24 -0
  408. package/doctor/eslint-diagnostics.mjs +24 -0
  409. package/doctor/index.d.mts +116 -0
  410. package/doctor/index.mjs +1272 -0
  411. package/doctor/report.schema.json +118 -0
  412. package/evaluator/cli.mjs +89 -0
  413. package/evaluator/index.d.mts +90 -0
  414. package/evaluator/index.mjs +1138 -0
  415. package/evaluator/report.schema.json +152 -0
  416. package/llms.txt +260 -32
  417. package/package.json +205 -38
  418. package/traversal-exclusions.mjs +27 -0
  419. package/ux-demo/recipes/app-shell.tsx +223 -13
  420. package/ux-demo/recipes/collapsible-sidebar.tsx +230 -0
  421. package/ux-demo/recipes/compact-toolbar.tsx +116 -12
  422. package/ux-demo/recipes/composer-form.tsx +120 -19
  423. package/ux-demo/recipes/list-detail-dialog.tsx +205 -0
  424. package/ux-demo/recipes/list-workspace-states.tsx +176 -9
  425. package/ux-demo/recipes/loaders.ts +13 -4
  426. package/ux-demo/recipes/loading-inspector.tsx +191 -0
  427. package/ux-demo/recipes/mount-recipe.ts +31 -5
  428. package/ux-demo/recipes/navigation-sidebar.tsx +123 -11
  429. package/ux-demo/recipes/navigation-stack.tsx +121 -0
  430. package/ux-demo/recipes/recipes.css +125 -16
  431. package/ux-demo/recipes/types.ts +9 -1
  432. package/ux-demo/recipes/workspace-header.tsx +72 -3
  433. package/dist/browser/dialog-header.js +0 -5
  434. package/dist/browser/menu-action-row.js +0 -3
  435. package/dist/browser/menu-header.js +0 -5
  436. package/dist/browser/menu-item.js +0 -3
  437. package/dist/browser/page-header.js +0 -3
  438. package/dist/chunk-2PES33HS.js +0 -13
  439. package/dist/chunk-2PES33HS.js.map +0 -1
  440. package/dist/chunk-55DATV3A.js +0 -10
  441. package/dist/chunk-55DATV3A.js.map +0 -1
  442. package/dist/chunk-7BR3DO2A.js.map +0 -1
  443. package/dist/chunk-7LDCTU7D.js +0 -134
  444. package/dist/chunk-7LDCTU7D.js.map +0 -1
  445. package/dist/chunk-AQNKJRFH.js +0 -79
  446. package/dist/chunk-AQNKJRFH.js.map +0 -1
  447. package/dist/chunk-CTQKI2XL.js +0 -28
  448. package/dist/chunk-CTQKI2XL.js.map +0 -1
  449. package/dist/chunk-DAFFDO33.js +0 -14
  450. package/dist/chunk-DAFFDO33.js.map +0 -1
  451. package/dist/chunk-EGHL5S4P.js +0 -33
  452. package/dist/chunk-EGHL5S4P.js.map +0 -1
  453. package/dist/chunk-GY5WH7TO.js +0 -10
  454. package/dist/chunk-GY5WH7TO.js.map +0 -1
  455. package/dist/chunk-H5AGGVU5.js +0 -75
  456. package/dist/chunk-H5AGGVU5.js.map +0 -1
  457. package/dist/chunk-K3G72I6D.js +0 -24
  458. package/dist/chunk-K3G72I6D.js.map +0 -1
  459. package/dist/chunk-M5JRI6MN.js +0 -27
  460. package/dist/chunk-M5JRI6MN.js.map +0 -1
  461. package/dist/chunk-MBR3TYNL.js +0 -14
  462. package/dist/chunk-MBR3TYNL.js.map +0 -1
  463. package/dist/chunk-MFKMHK5W.js +0 -10
  464. package/dist/chunk-MFKMHK5W.js.map +0 -1
  465. package/dist/chunk-MQIZAD4A.js.map +0 -1
  466. package/dist/chunk-NPPD2A6O.js +0 -40
  467. package/dist/chunk-NPPD2A6O.js.map +0 -1
  468. package/dist/chunk-R6JHHBKQ.js +0 -19
  469. package/dist/chunk-R6JHHBKQ.js.map +0 -1
  470. package/dist/chunk-S3TPM2LP.js +0 -23
  471. package/dist/chunk-S3TPM2LP.js.map +0 -1
  472. package/dist/chunk-TRNBHPNW.js.map +0 -1
  473. package/dist/chunk-VHW5YNIB.js +0 -17
  474. package/dist/chunk-VHW5YNIB.js.map +0 -1
  475. package/dist/chunk-WVPYVDXY.js +0 -15
  476. package/dist/chunk-WVPYVDXY.js.map +0 -1
  477. package/dist/chunk-XZXRLY5Q.js +0 -33
  478. package/dist/chunk-XZXRLY5Q.js.map +0 -1
  479. package/dist/dialog-header.d.ts +0 -15
  480. package/dist/dialog-header.js +0 -5
  481. package/dist/dialog-header.js.map +0 -1
  482. package/dist/menu-action-row.js +0 -4
  483. package/dist/menu-action-row.js.map +0 -1
  484. package/dist/menu-header.d.ts +0 -41
  485. package/dist/menu-header.js +0 -6
  486. package/dist/menu-header.js.map +0 -1
  487. package/dist/menu-item.d.ts +0 -31
  488. package/dist/menu-item.js +0 -4
  489. package/dist/menu-item.js.map +0 -1
  490. package/dist/page-header.d.ts +0 -9
  491. package/dist/page-header.js +0 -3
  492. package/dist/page-header.js.map +0 -1
  493. package/dist/styles/dialog-header.css +0 -87
  494. package/dist/styles/menu-action-row.css +0 -160
  495. package/dist/styles/menu-header.css +0 -143
  496. package/dist/styles/menu-item.css +0 -123
  497. package/dist/styles/page-header.css +0 -33
  498. package/ux-demo/recipes/master-detail-dialog.tsx +0 -45
@@ -1,16 +1,20 @@
1
1
  import { SafeHtml } from 'kerfjs';
2
2
 
3
- type MenuActionRowRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
3
+ type ListActionRowRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
4
4
  'data-component'?: never;
5
5
  'data-action'?: never;
6
6
  'data-item-id'?: never;
7
7
  'data-has-icon'?: never;
8
8
  'data-multiline'?: never;
9
+ 'data-density'?: never;
10
+ 'data-divider'?: never;
11
+ 'data-busy'?: never;
12
+ 'data-trailing-visibility'?: never;
9
13
  'data-state'?: never;
10
14
  'data-selected'?: never;
11
15
  'data-pressed'?: never;
12
16
  }>;
13
- type MenuActionRowTrailingAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
17
+ type ListActionRowTrailingAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
14
18
  'data-component'?: never;
15
19
  'data-action'?: never;
16
20
  'data-item-id'?: never;
@@ -19,9 +23,14 @@ type MenuActionRowTrailingAttributes = Readonly<Record<`data-${string}`, string
19
23
  'aria-controls'?: string;
20
24
  'aria-haspopup'?: 'dialog' | 'menu' | 'listbox' | 'tree' | 'grid' | 'true';
21
25
  }>;
22
- interface MenuActionRowProps {
26
+ interface ListActionRowProps {
23
27
  /** Visible dormant content for the primary button. Must not contain interactive descendants. */
24
28
  label: string | SafeHtml;
29
+ description?: string | SafeHtml;
30
+ status?: string | SafeHtml;
31
+ busy?: boolean;
32
+ density?: 'standard' | 'compact';
33
+ divider?: 'none' | 'before' | 'after' | 'both';
25
34
  /** Decorative dormant content for the primary button. Must not contain interactive descendants. */
26
35
  icon?: SafeHtml;
27
36
  action: string;
@@ -34,17 +43,19 @@ interface MenuActionRowProps {
34
43
  state?: string;
35
44
  disabled?: boolean;
36
45
  tabIndex?: number;
46
+ /** Render as an unanimated loading skeleton, disabling both actions. */
47
+ placeholder?: boolean;
37
48
  trailingAction: string;
38
49
  trailingActionLabel: string;
39
50
  /** Decorative dormant content for the trailing button. Must not contain interactive descendants. */
40
51
  trailingActionIcon: SafeHtml;
41
52
  trailingActionDisabled?: boolean;
42
53
  trailingActionTitle?: string;
54
+ trailingActionVisibility?: 'always' | 'interaction';
43
55
  className?: string;
44
- style?: string;
45
- rootAttributes?: MenuActionRowRootAttributes;
46
- trailingActionAttributes?: MenuActionRowTrailingAttributes;
56
+ rootAttributes?: ListActionRowRootAttributes;
57
+ trailingActionAttributes?: ListActionRowTrailingAttributes;
47
58
  }
48
- declare function MenuActionRow({ label, icon, action, itemId, selected, pressed, accessibleLabel, title, multiline, state, disabled, tabIndex, trailingAction, trailingActionLabel, trailingActionIcon, trailingActionDisabled, trailingActionTitle, className, style, rootAttributes, trailingActionAttributes }: MenuActionRowProps): SafeHtml;
59
+ declare function ListActionRow({ label, description, status, busy, density, divider, icon, action, itemId, selected, pressed, accessibleLabel, title, multiline, state, disabled, tabIndex, placeholder, trailingAction, trailingActionLabel, trailingActionIcon, trailingActionDisabled, trailingActionTitle, trailingActionVisibility, className, rootAttributes, trailingActionAttributes, }: ListActionRowProps): SafeHtml;
49
60
 
50
- export { MenuActionRow, type MenuActionRowProps };
61
+ export { ListActionRow, type ListActionRowProps };
@@ -0,0 +1,7 @@
1
+ export { ListActionRow } from './chunk-DAO2VFTT.js';
2
+
3
+
4
+
5
+
6
+
7
+ //# sourceMappingURL=list-action-row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"list-action-row.js"}
@@ -0,0 +1,80 @@
1
+ import { SafeHtml } from 'kerfjs';
2
+
3
+ type ListHeaderRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
4
+ 'data-component'?: never;
5
+ 'data-action'?: never;
6
+ 'data-has-badge'?: never;
7
+ 'data-has-count'?: never;
8
+ 'data-density'?: never;
9
+ 'data-divider'?: never;
10
+ 'data-inline'?: never;
11
+ 'data-indicator-tone'?: never;
12
+ 'data-toggle'?: never;
13
+ }>;
14
+ type ListHeaderTriggerAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
15
+ 'data-action'?: never;
16
+ popoverTarget?: string;
17
+ popoverTargetAction?: 'toggle' | 'show' | 'hide';
18
+ 'aria-controls'?: string;
19
+ 'aria-haspopup'?: 'dialog' | 'menu' | 'listbox' | 'tree' | 'grid' | 'true';
20
+ }>;
21
+ interface ListHeaderBaseProps {
22
+ label: string;
23
+ density?: 'standard' | 'compact';
24
+ divider?: 'none' | 'before' | 'after' | 'both';
25
+ /** Shrink-wrap the header without its default outer margin, border, or padding. */
26
+ inline?: boolean;
27
+ indicatorTone?: 'neutral' | 'accent' | 'pop' | 'danger';
28
+ /** Render as an unanimated loading skeleton: keep the label and action affordance, disable interaction. */
29
+ placeholder?: boolean;
30
+ rootAttributes?: ListHeaderRootAttributes;
31
+ triggerAttributes?: ListHeaderTriggerAttributes;
32
+ }
33
+ type ListHeaderModeProps = {
34
+ /** Render the title as a controlled disclosure trigger. */
35
+ toggle: true;
36
+ action: string;
37
+ expanded: boolean;
38
+ actionIcon?: SafeHtml;
39
+ actionLabel?: never;
40
+ actionDisabled?: boolean;
41
+ disabledReason?: string;
42
+ } | {
43
+ /** Render a separately named trailing action. */
44
+ toggle?: false;
45
+ action: string;
46
+ actionLabel: string;
47
+ actionIcon: SafeHtml;
48
+ expanded?: never;
49
+ actionDisabled?: boolean;
50
+ disabledReason?: string;
51
+ } | {
52
+ /** Render a passive section heading. */
53
+ toggle?: false;
54
+ action?: never;
55
+ actionLabel?: never;
56
+ actionIcon?: never;
57
+ expanded?: never;
58
+ actionDisabled?: never;
59
+ disabledReason?: never;
60
+ };
61
+ type ListHeaderIndicatorProps = {
62
+ count: number;
63
+ countLabel: string;
64
+ badge?: never;
65
+ status?: never;
66
+ } | {
67
+ count?: never;
68
+ countLabel?: never;
69
+ badge: SafeHtml;
70
+ status?: never;
71
+ } | {
72
+ count?: never;
73
+ countLabel?: never;
74
+ badge?: never;
75
+ status?: SafeHtml;
76
+ };
77
+ type ListHeaderProps = ListHeaderBaseProps & ListHeaderIndicatorProps & ListHeaderModeProps;
78
+ declare function ListHeader({ label, count, countLabel, badge, status, density, divider, inline, indicatorTone, action, actionLabel, actionIcon, actionDisabled, disabledReason, expanded, toggle, placeholder, rootAttributes, triggerAttributes, }: ListHeaderProps): SafeHtml;
79
+
80
+ export { ListHeader, type ListHeaderProps };
@@ -0,0 +1,9 @@
1
+ export { ListHeader } from './chunk-DEYOGDE7.js';
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+ //# sourceMappingURL=list-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"list-header.js"}
@@ -0,0 +1,20 @@
1
+ import * as kerfjs from 'kerfjs';
2
+ import { S as Sides } from './divider-sides-BzB6rphT.js';
3
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
4
+
5
+ interface ListInsetControlProps {
6
+ /** Control(s) that own their own border and padding (e.g. an input, a `wa-*`). */
7
+ children: KerfUiContent;
8
+ /** Physical inset sides in canonical top/right/bottom/left order. Defaults to all sides. */
9
+ sides?: Sides;
10
+ className?: string;
11
+ }
12
+ /**
13
+ * Insets a control into a pane/list content region: an 8px inline margin (so its
14
+ * edges line up with `.kui-content` items) and a stretch flex row with an 8px gap.
15
+ * Use it for controls that carry their own border and padding but no outer margin
16
+ * — the wrapper adds only the alignment margin and layout, not a second inset.
17
+ */
18
+ declare function ListInsetControl({ children, sides, className, }: ListInsetControlProps): kerfjs.SafeHtml;
19
+
20
+ export { ListInsetControl, type ListInsetControlProps, Sides };
@@ -0,0 +1,3 @@
1
+ export { ListInsetControl } from './chunk-2TYUFZUC.js';
2
+
3
+ //# sourceMappingURL=list-inset-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"list-inset-control.js"}
@@ -0,0 +1,29 @@
1
+ import * as kerfjs from 'kerfjs';
2
+ import { S as Sides } from './divider-sides-BzB6rphT.js';
3
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
4
+
5
+ interface ListInsetTextProps {
6
+ /** Text (or inline content) that carries no margin, border, or padding of its own. */
7
+ children: KerfUiContent | string;
8
+ /** Physical inset sides in canonical top/right/bottom/left order. Defaults to all sides. */
9
+ sides?: Sides;
10
+ /**
11
+ * @deprecated Pass `sides="rl"` instead. Keep only the horizontal geometry (inline margin, left/right border, and
12
+ * left/right padding) and drop the vertical margin, border, and padding. Use it
13
+ * when the text edge must still align with bordered items but the line should not
14
+ * add its own vertical box space — tight text layout inside a content region.
15
+ */
16
+ horizontalOnly?: boolean;
17
+ className?: string;
18
+ }
19
+ /**
20
+ * Gives bare text the content-item geometry — an 8px inline margin, a 1px
21
+ * transparent border, and 8px padding — so a plain string lines up with
22
+ * bordered `.kui-content` items (its text edge lands at the same 17px inset).
23
+ * Use it for text elements that have no margin, border, or padding of their own.
24
+ * Pass `horizontalOnly` to keep the horizontal inset but drop the vertical box
25
+ * space for tight text layout.
26
+ */
27
+ declare function ListInsetText({ children, sides, horizontalOnly, className, }: ListInsetTextProps): kerfjs.SafeHtml;
28
+
29
+ export { ListInsetText, type ListInsetTextProps, Sides };
@@ -0,0 +1,3 @@
1
+ export { ListInsetText } from './chunk-EYALJQQD.js';
2
+
3
+ //# sourceMappingURL=list-inset-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"list-inset-text.js"}
@@ -0,0 +1,45 @@
1
+ import { SafeHtml } from 'kerfjs';
2
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
3
+
4
+ type ListItemRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
5
+ 'data-component'?: never;
6
+ 'data-action'?: never;
7
+ 'data-item-id'?: never;
8
+ 'data-has-icon'?: never;
9
+ 'data-has-description'?: never;
10
+ 'data-multiline'?: never;
11
+ 'data-density'?: never;
12
+ 'data-divider'?: never;
13
+ 'data-busy'?: never;
14
+ 'data-state'?: never;
15
+ }>;
16
+ interface ListItemProps {
17
+ label: string | SafeHtml;
18
+ /** App-owned supporting text rendered in the component's stable label stack. */
19
+ description?: string | SafeHtml;
20
+ icon?: SafeHtml;
21
+ trailing?: KerfUiContent;
22
+ /** Dormant status metadata rendered before trailing content. */
23
+ status?: string | SafeHtml;
24
+ /** Show a progress indicator and expose the row as busy without replacing its content. */
25
+ busy?: boolean;
26
+ density?: 'standard' | 'compact';
27
+ divider?: 'none' | 'before' | 'after' | 'both';
28
+ selected?: boolean;
29
+ action: string;
30
+ itemId?: string;
31
+ className?: string;
32
+ pressed?: boolean;
33
+ accessibleLabel?: string;
34
+ title?: string;
35
+ multiline?: boolean;
36
+ state?: string;
37
+ disabled?: boolean;
38
+ tabIndex?: number;
39
+ /** Render the row as an unanimated loading skeleton, disabling its action. */
40
+ placeholder?: boolean;
41
+ rootAttributes?: ListItemRootAttributes;
42
+ }
43
+ declare function ListItem({ label, description, icon, trailing, status, busy, density, divider, selected, action, itemId, className, pressed, accessibleLabel, title, multiline, state, disabled, tabIndex, placeholder, rootAttributes, }: ListItemProps): SafeHtml;
44
+
45
+ export { ListItem, type ListItemProps };
@@ -0,0 +1,7 @@
1
+ export { ListItem } from './chunk-I45QO2IZ.js';
2
+
3
+
4
+
5
+
6
+
7
+ //# sourceMappingURL=list-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"list-item.js"}
package/dist/list.d.ts ADDED
@@ -0,0 +1,30 @@
1
+ import * as kerfjs from 'kerfjs';
2
+ import { UiSpaceName, CssLength, CssFlexKeyword, CssFlex } from './css-values.js';
3
+ import { D as DividerSides, S as Sides } from './divider-sides-BzB6rphT.js';
4
+ import { H as HorizontalAlignment, V as VerticalAlignment } from './flex-alignment-CF8NLj7i.js';
5
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
6
+
7
+ interface ListProps {
8
+ children?: KerfUiContent;
9
+ /** Use the standard item gap, a named UI spacing token, or a typed CSS length. Defaults to no gap. */
10
+ gap?: boolean | UiSpaceName | CssLength;
11
+ /** Allow this list to grow/shrink, use a keyword, or supply a typed CSS flex shorthand. */
12
+ flex?: boolean | CssFlexKeyword | CssFlex;
13
+ /** Horizontal alignment. Defaults to full to preserve stretch-aligned list children. */
14
+ hAlign?: HorizontalAlignment;
15
+ /** Vertical distribution. Defaults to top. */
16
+ vAlign?: VerticalAlignment;
17
+ /** Own vertical scrolling and overscroll containment. */
18
+ scrollable?: boolean;
19
+ /** Physical divider edges in canonical top/right/bottom/left order. */
20
+ dividerSides?: DividerSides;
21
+ /** Physical sides that receive the standard 17px text inset. */
22
+ textInsets?: Sides;
23
+ /** Physical sides that receive the standard 8px control inset. Text insets win on overlap. */
24
+ controlInsets?: Sides;
25
+ className?: string;
26
+ }
27
+ /** A stretch-aligned vertical stack with optional gap, flex, scroll, and dividers. */
28
+ declare function List({ children, gap, flex, hAlign, vAlign, scrollable, dividerSides, textInsets, controlInsets, className, }: ListProps): kerfjs.SafeHtml;
29
+
30
+ export { CssFlex, CssFlexKeyword, CssLength, DividerSides, HorizontalAlignment, List, type ListProps, Sides, UiSpaceName, VerticalAlignment };
package/dist/list.js ADDED
@@ -0,0 +1,5 @@
1
+ export { List } from './chunk-C34NZOLJ.js';
2
+
3
+
4
+
5
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"list.js"}
@@ -1,3 +1,3 @@
1
- export { LoadingSpinner } from './chunk-55DATV3A.js';
1
+ export { LoadingSpinner } from './chunk-6WTETUZ6.js';
2
2
 
3
3
  //# sourceMappingURL=loading-spinner.js.map
@@ -0,0 +1,41 @@
1
+ import * as kerfjs from 'kerfjs';
2
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
3
+
4
+ /**
5
+ * One entry in a {@link NavStack}. The app owns the stack as an array (usually a
6
+ * signal); `NavStack` renders it and `wireNavStack` animates the transitions.
7
+ */
8
+ interface NavStackView {
9
+ /** Stable identity for keyed reconcile and transition direction. */
10
+ key: string;
11
+ content: KerfUiContent;
12
+ /** Title shown in the top toolbar for this view. */
13
+ title?: string;
14
+ /** Trailing actions for this view's top toolbar. */
15
+ toolbar?: KerfUiContent;
16
+ /** Bottom toolbar for this view. Cross-fades with the top chrome on navigation. */
17
+ bottomToolbar?: KerfUiContent;
18
+ }
19
+ interface NavStackProps {
20
+ id: string;
21
+ /** Accessible name for the stack region. */
22
+ label: string;
23
+ /** The stack, root first; the last entry is the active top view. */
24
+ views: NavStackView[];
25
+ /** Accessible label for the back control (default "Back"). */
26
+ backLabel?: string;
27
+ /** Hide the top toolbar entirely (rare — a fully custom-chrome view). */
28
+ hideToolbar?: boolean;
29
+ /** Optional persistent bottom toolbar used when the active view does not provide one. */
30
+ bottomToolbar?: KerfUiContent;
31
+ className?: string;
32
+ }
33
+ /**
34
+ * A navigation stack (iOS-style push/pop). Renders every entry stacked, the last
35
+ * one active; `@kerfjs/ui/wire-nav-stack`'s `wireNavStack` slides the content and
36
+ * cross-fades the chrome across a change. A single-pane layout is a `NavStack`
37
+ * with one entry. See `docs/23-app-layouts.md` §3.1.
38
+ */
39
+ declare function NavStack({ id, label, views, backLabel, hideToolbar, bottomToolbar, className, }: NavStackProps): kerfjs.SafeHtml;
40
+
41
+ export { NavStack, type NavStackProps, type NavStackView };
@@ -0,0 +1,6 @@
1
+ export { NavStack } from './chunk-AQFWBG23.js';
2
+
3
+
4
+
5
+
6
+ //# sourceMappingURL=nav-stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"nav-stack.js"}
package/dist/pane.d.ts ADDED
@@ -0,0 +1,50 @@
1
+ import * as kerfjs from 'kerfjs';
2
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
3
+
4
+ /** Logical sides that can show a {@link Pane} separator. */
5
+ type PaneSeparatorSide = 'block-start' | 'block-end' | 'inline-start' | 'inline-end';
6
+ /** Semantic root elements supported by {@link Pane}. */
7
+ type PaneElement = 'article' | 'aside' | 'div' | 'main' | 'section';
8
+ /** Semantic elements supported by the scrolling content slot. */
9
+ type PaneContentElement = 'div' | 'main' | 'nav' | 'section';
10
+ type PaneRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
11
+ 'data-component'?: never;
12
+ 'data-separator-block-start'?: never;
13
+ 'data-separator-block-end'?: never;
14
+ 'data-separator-inline-start'?: never;
15
+ 'data-separator-inline-end'?: never;
16
+ }>;
17
+ interface PaneProps {
18
+ /** Optional fixed chrome above the scrolling content, arranged vertically. */
19
+ header?: KerfUiContent;
20
+ /** The pane's primary vertical, scrolling content stack. */
21
+ children?: KerfUiContent;
22
+ /** Optional fixed chrome below the scrolling content. */
23
+ footer?: KerfUiContent;
24
+ /** Root semantics. Defaults to `div`. */
25
+ element?: PaneElement;
26
+ /** Scrolling content semantics. Defaults to `div`. */
27
+ contentElement?: PaneContentElement;
28
+ /** Independent logical-edge separator lines. Defaults to none. */
29
+ separators?: readonly PaneSeparatorSide[];
30
+ id?: string;
31
+ /** Accessible name for a landmark root such as `aside` or `main`. */
32
+ label?: string;
33
+ /** Accessible name for a landmark scrolling slot such as `nav`. */
34
+ contentLabel?: string;
35
+ className?: string;
36
+ headerClassName?: string;
37
+ contentClassName?: string;
38
+ footerClassName?: string;
39
+ /** Safe `data-*` metadata; Pane-owned structural attributes remain protected. */
40
+ rootAttributes?: PaneRootAttributes;
41
+ }
42
+ /**
43
+ * An unpadded application column with optional fixed header/footer slots and one
44
+ * scrolling vertical content owner. Separator lines are independently opt-in on
45
+ * each logical edge, so the same component works as a sidebar, main area,
46
+ * inspector, or dialog column.
47
+ */
48
+ declare function Pane({ header, children, footer, element, contentElement, separators, id, label, contentLabel, className, headerClassName, contentClassName, footerClassName, rootAttributes, }: PaneProps): kerfjs.SafeHtml;
49
+
50
+ export { Pane, type PaneContentElement, type PaneElement, type PaneProps, type PaneSeparatorSide };
package/dist/pane.js ADDED
@@ -0,0 +1,4 @@
1
+ export { Pane } from './chunk-I4V3UDSA.js';
2
+
3
+
4
+ //# sourceMappingURL=pane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"pane.js"}
@@ -1,7 +1,13 @@
1
1
  import { SafeHtml } from 'kerfjs';
2
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
2
3
 
3
4
  type ResizableRegionAxis = 'horizontal' | 'vertical';
4
5
  type ResizableRegionEdge = 'start' | 'end';
6
+ type ResizableRegionSeparator = 'auto' | 'hidden';
7
+ type ResizableRegionCollapseMotion = 'none' | 'slide' | 'fade-slide';
8
+ type ResizableRegionContentOverflow = 'clip' | 'auto' | 'visible';
9
+ type ResizableRegionPresentation = 'inline' | 'overlay' | 'hidden';
10
+ type ResizableRegionRestorePosition = 'bottom-start' | 'bottom-end';
5
11
  interface ResizableRegionProps {
6
12
  id: string;
7
13
  label: string;
@@ -12,12 +18,24 @@ interface ResizableRegionProps {
12
18
  edge?: ResizableRegionEdge;
13
19
  collapsed?: boolean;
14
20
  transitioning?: boolean;
21
+ /** Whether the separator line is painted. The resize hit target remains available. */
22
+ separator?: ResizableRegionSeparator;
23
+ /** Keep the track change instant while optionally sliding the fixed-size content. */
24
+ collapseMotion?: ResizableRegionCollapseMotion;
25
+ /** Overflow policy for content such as an open popup inside a bottom drawer. */
26
+ contentOverflow?: ResizableRegionContentOverflow;
27
+ /** Inline layout, an edge overlay, or a responsive replacement that removes the region. */
28
+ presentation?: ResizableRegionPresentation;
29
+ /** Always-available control rendered while collapsed, outside the clipped region. */
30
+ restoreControl?: SafeHtml;
31
+ /** Safe-area-aware viewport corner for `restoreControl`. */
32
+ restorePosition?: ResizableRegionRestorePosition;
15
33
  /** Decorative dormant content for the separator handle. Must not contain interactive descendants. */
16
34
  handleIcon?: SafeHtml;
17
- children: SafeHtml | SafeHtml[];
35
+ children: KerfUiContent;
18
36
  }
19
37
  declare const clampRegionSize: (size: number, min: number, max: number) => number;
20
38
  declare const resizeRegionFromPointer: (startSize: number, delta: number, edge: ResizableRegionEdge) => number;
21
- declare function ResizableRegion({ id, label, size, min, max, axis, edge, collapsed, transitioning, handleIcon, children }: ResizableRegionProps): SafeHtml;
39
+ declare function ResizableRegion({ id, label, size, min, max, axis, edge, collapsed, transitioning, separator, collapseMotion, contentOverflow, presentation, restoreControl, restorePosition, handleIcon, children, }: ResizableRegionProps): SafeHtml;
22
40
 
23
- export { ResizableRegion, type ResizableRegionAxis, type ResizableRegionEdge, type ResizableRegionProps, clampRegionSize, resizeRegionFromPointer };
41
+ export { ResizableRegion, type ResizableRegionAxis, type ResizableRegionCollapseMotion, type ResizableRegionContentOverflow, type ResizableRegionEdge, type ResizableRegionPresentation, type ResizableRegionProps, type ResizableRegionRestorePosition, type ResizableRegionSeparator, clampRegionSize, resizeRegionFromPointer };
@@ -1,3 +1,3 @@
1
- export { ResizableRegion, clampRegionSize, resizeRegionFromPointer } from './chunk-M5JRI6MN.js';
1
+ export { ResizableRegion, clampRegionSize, resizeRegionFromPointer } from './chunk-CAB6NQ2T.js';
2
2
 
3
3
  //# sourceMappingURL=resizable-region.js.map
package/dist/row.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ import * as kerfjs from 'kerfjs';
2
+ import { UiSpaceName, CssLength, CssFlexKeyword, CssFlex } from './css-values.js';
3
+ import { S as Sides } from './divider-sides-BzB6rphT.js';
4
+ import { H as HorizontalAlignment, V as VerticalAlignment } from './flex-alignment-CF8NLj7i.js';
5
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
6
+
7
+ interface RowProps {
8
+ children?: KerfUiContent;
9
+ /** Horizontal distribution. Defaults to left. */
10
+ hAlign?: HorizontalAlignment;
11
+ /** Vertical alignment and wrapped-line distribution. Defaults to full. */
12
+ vAlign?: VerticalAlignment;
13
+ /** A named UI spacing token or typed CSS length. Defaults to xs. */
14
+ gap?: UiSpaceName | CssLength;
15
+ /** Allow this row to grow/shrink, use a keyword, or supply a typed CSS flex shorthand. */
16
+ flex?: boolean | CssFlexKeyword | CssFlex;
17
+ /** Allow children to wrap onto additional lines. */
18
+ wrap?: boolean;
19
+ /** Physical sides that receive the standard 17px text inset. */
20
+ textInsets?: Sides;
21
+ /** Physical sides that receive the standard 8px control inset. Text insets win on overlap. */
22
+ controlInsets?: Sides;
23
+ className?: string;
24
+ }
25
+ /** A horizontal flex row with explicit physical-axis alignment and spacing. */
26
+ declare function Row({ children, hAlign, vAlign, gap, flex, wrap, textInsets, controlInsets, className, }: RowProps): kerfjs.SafeHtml;
27
+
28
+ export { CssFlex, CssFlexKeyword, CssLength, HorizontalAlignment, Row, type RowProps, Sides, UiSpaceName, VerticalAlignment };
package/dist/row.js ADDED
@@ -0,0 +1,5 @@
1
+ export { Row } from './chunk-X5GRDQ7V.js';
2
+
3
+
4
+
5
+ //# sourceMappingURL=row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"row.js"}
@@ -1,28 +1,31 @@
1
- import { SafeHtml } from 'kerfjs';
1
+ import * as kerfjs from 'kerfjs';
2
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
2
3
 
3
4
  type SegmentedControlAppearance = 'filled' | 'outlined' | 'toolbar';
4
5
  type SegmentedControlShape = 'rounded' | 'pill';
5
6
  type SegmentedControlSize = 'small' | 'default';
6
7
  type SegmentedControlLayout = 'content' | 'equal';
7
- interface SegmentedControlChoice {
8
- value: string;
8
+ interface SegmentedControlChoice<Value extends string = string> {
9
+ value: Value;
9
10
  label: string;
10
- content?: SafeHtml;
11
+ content?: KerfUiContent;
11
12
  title?: string;
12
13
  disabled?: boolean;
13
14
  }
14
- interface SegmentedControlProps {
15
+ interface SegmentedControlProps<Value extends string = string> {
15
16
  id: string;
16
17
  label: string;
17
- value: string;
18
- choices: readonly SegmentedControlChoice[];
18
+ value: NoInfer<Value>;
19
+ choices: readonly SegmentedControlChoice<Value>[];
19
20
  action?: string;
20
21
  appearance?: SegmentedControlAppearance;
21
22
  shape?: SegmentedControlShape;
22
23
  size?: SegmentedControlSize;
23
24
  layout?: SegmentedControlLayout;
24
25
  className?: string;
26
+ /** Render as an unanimated loading skeleton, disabling every segment. */
27
+ placeholder?: boolean;
25
28
  }
26
- declare function SegmentedControl({ id, label, value, choices, action, appearance, shape, size, layout, className, }: SegmentedControlProps): SafeHtml;
29
+ declare function SegmentedControl<Value extends string>({ id, label, value, choices, action, appearance, shape, size, layout, className, placeholder, }: SegmentedControlProps<Value>): kerfjs.SafeHtml;
27
30
 
28
31
  export { SegmentedControl, type SegmentedControlAppearance, type SegmentedControlChoice, type SegmentedControlLayout, type SegmentedControlProps, type SegmentedControlShape, type SegmentedControlSize };
@@ -1,3 +1,5 @@
1
- export { SegmentedControl } from './chunk-TRNBHPNW.js';
1
+ export { SegmentedControl } from './chunk-E34TE2ZI.js';
2
+
3
+
2
4
 
3
5
  //# sourceMappingURL=segmented-control.js.map
@@ -1,4 +1,8 @@
1
- /** Marker export for tests and tooling; importing this module performs registration. */
1
+ /**
2
+ * Marker export for tests and tooling; importing this module performs registration.
3
+ * Registers both the `Select` elements and the `Catalog` related-entries popup-menu
4
+ * elements (`wa-dropdown` / `wa-dropdown-item` / `wa-button`).
5
+ */
2
6
  declare const selectElementsRegistered = true;
3
7
 
4
8
  export { selectElementsRegistered };