@kerfjs/ui 5.0.0-beta.23 → 5.0.0-beta.25

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 (288) hide show
  1. package/README.md +45 -23
  2. package/ai/application-ui-diagnostic-ids-v1.json +3 -0
  3. package/ai/application-ui-profile.defaults.json +1 -1
  4. package/ai/compile-time-contracts-v1.json +5 -12
  5. package/ai/component-catalog-v2-overrides.json +12 -49
  6. package/ai/component-catalog-v2.d.ts +1 -0
  7. package/ai/component-catalog-v2.json +458 -123
  8. package/ai/component-catalog-v2.schema.json +2 -1
  9. package/ai/component-catalog.json +658 -195
  10. package/ai/public-api-signatures-v1.md +160 -80
  11. package/ai/skill.md +22 -22
  12. package/ai/webawesome-jsx-signatures-v1.md +2 -1
  13. package/analyzer/cli.mjs +5 -2
  14. package/analyzer/index.d.mts +1 -0
  15. package/analyzer/index.mjs +117 -10
  16. package/dist/app-tab.d.ts +10 -2
  17. package/dist/app-tab.js +1 -1
  18. package/dist/browser/list-action-row.js +1 -0
  19. package/dist/browser/list-item.js +1 -0
  20. package/dist/browser/list.js +3 -0
  21. package/dist/browser/surface-scaffold.js +3 -0
  22. package/dist/catalog.d.ts +8 -4
  23. package/dist/catalog.js +21 -11
  24. package/dist/catalog.js.map +1 -1
  25. package/dist/{chunk-ELSJX4W7.js → chunk-4EF2CMYS.js} +25 -6
  26. package/dist/chunk-4EF2CMYS.js.map +1 -0
  27. package/dist/{chunk-OHU6CI22.js → chunk-B3A3IVO5.js} +2 -2
  28. package/dist/{chunk-OHU6CI22.js.map → chunk-B3A3IVO5.js.map} +1 -1
  29. package/dist/{chunk-K57KRAOV.js → chunk-FRVS5RFM.js} +24 -6
  30. package/dist/chunk-FRVS5RFM.js.map +1 -0
  31. package/dist/{chunk-DSNIYOZ3.js → chunk-GWEAPEZI.js} +16 -3
  32. package/dist/chunk-GWEAPEZI.js.map +1 -0
  33. package/dist/chunk-HP2B2L26.js +102 -0
  34. package/dist/chunk-HP2B2L26.js.map +1 -0
  35. package/dist/{chunk-OZWU5ZPZ.js → chunk-IJBSZ4NX.js} +2 -2
  36. package/dist/{chunk-OZWU5ZPZ.js.map → chunk-IJBSZ4NX.js.map} +1 -1
  37. package/dist/chunk-J5BFYY7Q.js +35 -0
  38. package/dist/chunk-J5BFYY7Q.js.map +1 -0
  39. package/dist/{chunk-GP5DP5DL.js → chunk-JFGXQBIP.js} +85 -24
  40. package/dist/chunk-JFGXQBIP.js.map +1 -0
  41. package/dist/{chunk-QQFJMRIB.js → chunk-KWWR5VMS.js} +2 -2
  42. package/dist/{chunk-QQFJMRIB.js.map → chunk-KWWR5VMS.js.map} +1 -1
  43. package/dist/chunk-OBLTAKSX.js +43 -0
  44. package/dist/chunk-OBLTAKSX.js.map +1 -0
  45. package/dist/{chunk-PIDTEQ3U.js → chunk-OT6RPYAP.js} +17 -3
  46. package/dist/chunk-OT6RPYAP.js.map +1 -0
  47. package/dist/{chunk-W7YD6E4N.js → chunk-R7ZWUN64.js} +2 -2
  48. package/dist/{chunk-W7YD6E4N.js.map → chunk-R7ZWUN64.js.map} +1 -1
  49. package/dist/{chunk-PZQVSDLH.js → chunk-RKVQEH4J.js} +1 -1
  50. package/dist/chunk-RKVQEH4J.js.map +1 -0
  51. package/dist/{chunk-7L6EHUMV.js → chunk-SYDMYBPG.js} +3 -3
  52. package/dist/chunk-SYDMYBPG.js.map +1 -0
  53. package/dist/{chunk-W4CXQYSG.js → chunk-TB6DY7H5.js} +3 -1
  54. package/dist/chunk-TB6DY7H5.js.map +1 -0
  55. package/dist/{chunk-AASLYRGE.js → chunk-UKKSMZYT.js} +18 -7
  56. package/dist/chunk-UKKSMZYT.js.map +1 -0
  57. package/dist/{chunk-BBRXX6PF.js → chunk-VCE4MPVE.js} +26 -4
  58. package/dist/chunk-VCE4MPVE.js.map +1 -0
  59. package/dist/{chunk-VLYV65LK.js → chunk-W5L2JSBY.js} +5 -3
  60. package/dist/chunk-W5L2JSBY.js.map +1 -0
  61. package/dist/{chunk-5VTB2BKP.js → chunk-WNWD54GR.js} +16 -2
  62. package/dist/chunk-WNWD54GR.js.map +1 -0
  63. package/dist/{chunk-M7JBER5U.js → chunk-X2U3QJCJ.js} +8 -2
  64. package/dist/chunk-X2U3QJCJ.js.map +1 -0
  65. package/dist/{chunk-DPDBVKNA.js → chunk-YMKH5XTF.js} +5 -3
  66. package/dist/chunk-YMKH5XTF.js.map +1 -0
  67. package/dist/collapsible-panel.d.ts +9 -1
  68. package/dist/collapsible-panel.js +36 -15
  69. package/dist/collapsible-panel.js.map +1 -1
  70. package/dist/divider-sides-267FA7sY.d.ts +4 -0
  71. package/dist/index.d.ts +5 -3
  72. package/dist/index.js +20 -19
  73. package/dist/list-action-row.d.ts +11 -1
  74. package/dist/list-action-row.js +2 -1
  75. package/dist/list-header.d.ts +15 -2
  76. package/dist/list-header.js +1 -1
  77. package/dist/list-item.d.ts +12 -1
  78. package/dist/list-item.js +2 -1
  79. package/dist/list.d.ts +19 -0
  80. package/dist/list.js +3 -0
  81. package/dist/list.js.map +1 -0
  82. package/dist/nav-stack.js +1 -1
  83. package/dist/resizable-region.d.ts +19 -2
  84. package/dist/resizable-region.js +1 -1
  85. package/dist/segmented-control.js +1 -1
  86. package/dist/select.d.ts +12 -1
  87. package/dist/select.js +1 -1
  88. package/dist/skeleton.d.ts +1 -1
  89. package/dist/skeleton.js +1 -1
  90. package/dist/split-view.js +2 -2
  91. package/dist/state-banner.d.ts +4 -2
  92. package/dist/state-banner.js +1 -1
  93. package/dist/styles/app-tab.css +26 -0
  94. package/dist/styles/catalog.css +8 -2
  95. package/dist/styles/collapsible-panel.css +66 -4
  96. package/dist/styles/list-action-row.css +64 -0
  97. package/dist/styles/list-header.css +32 -0
  98. package/dist/styles/list-item.css +45 -6
  99. package/dist/styles/list.css +43 -0
  100. package/dist/styles/resizable-region.css +132 -0
  101. package/dist/styles/select.css +68 -0
  102. package/dist/styles/state-banner.css +32 -1
  103. package/dist/styles/styles.css +2 -1
  104. package/dist/styles/sunken-panel.css +4 -0
  105. package/dist/styles/surface-scaffold.css +51 -0
  106. package/dist/styles/tab-bar.css +24 -0
  107. package/dist/styles/toolbar-control-group.css +73 -1
  108. package/dist/styles/toolbar-text.css +1 -1
  109. package/dist/styles/toolbar.css +38 -2
  110. package/dist/styles/webawesome.css +12 -0
  111. package/dist/styles/workbench.css +89 -0
  112. package/dist/sunken-panel.d.ts +5 -2
  113. package/dist/sunken-panel.js +1 -1
  114. package/dist/surface-scaffold.d.ts +25 -0
  115. package/dist/surface-scaffold.js +3 -0
  116. package/dist/surface-scaffold.js.map +1 -0
  117. package/dist/tab-bar.d.ts +11 -2
  118. package/dist/tab-bar.js +1 -1
  119. package/dist/toolbar-control-group.d.ts +16 -2
  120. package/dist/toolbar-control-group.js +1 -1
  121. package/dist/toolbar-text.js +1 -1
  122. package/dist/toolbar.d.ts +5 -3
  123. package/dist/toolbar.js +1 -1
  124. package/dist/value-table.js +1 -1
  125. package/dist/webawesome.d.ts +1 -0
  126. package/dist/wire-catalog.d.ts +4 -2
  127. package/dist/wire-catalog.js +95 -36
  128. package/dist/wire-catalog.js.map +1 -1
  129. package/dist/wire-resizable-regions.js +1 -1
  130. package/dist/wire-sidebar.d.ts +6 -1
  131. package/dist/wire-sidebar.js +27 -8
  132. package/dist/wire-sidebar.js.map +1 -1
  133. package/dist/wire-tab-bars.js +1 -1
  134. package/dist/wire-token-search-fields.d.ts +1 -1
  135. package/dist/wire-token-search-fields.js +1 -1
  136. package/dist/workbench.d.ts +8 -0
  137. package/dist/workbench.js +42 -0
  138. package/dist/workbench.js.map +1 -1
  139. package/docs/accessibility.md +67 -15
  140. package/docs/catalog.md +17 -12
  141. package/docs/collapsible-panel.md +7 -0
  142. package/docs/component-contract.md +19 -9
  143. package/docs/component-selection.md +65 -31
  144. package/docs/design/templates/empty-state/filtered-dark.svg +1 -1
  145. package/docs/design/templates/empty-state/filtered.svg +1 -1
  146. package/docs/design/templates/empty-state/with-action-dark.svg +1 -1
  147. package/docs/design/templates/empty-state/with-action.svg +1 -1
  148. package/docs/design/templates/empty-state-dark.svg +1 -7
  149. package/docs/design/templates/empty-state.svg +1 -7
  150. package/docs/design/templates/list/compact-dark.svg +1 -0
  151. package/docs/design/templates/list/compact.svg +1 -0
  152. package/docs/design/templates/list/stack-dark.svg +1 -0
  153. package/docs/design/templates/list/stack.svg +1 -0
  154. package/docs/design/templates/list-action-row/default-dark.svg +1 -1
  155. package/docs/design/templates/list-action-row/default.svg +1 -1
  156. package/docs/design/templates/list-action-row/selected-dark.svg +1 -1
  157. package/docs/design/templates/list-action-row/selected.svg +1 -1
  158. package/docs/design/templates/list-action-row-dark.svg +1 -7
  159. package/docs/design/templates/list-action-row.svg +1 -7
  160. package/docs/design/templates/list-dark.svg +1 -0
  161. package/docs/design/templates/list-header/action-dark.svg +1 -1
  162. package/docs/design/templates/list-header/action.svg +1 -1
  163. package/docs/design/templates/list-header/toggle-collapsed-dark.svg +1 -1
  164. package/docs/design/templates/list-header/toggle-collapsed.svg +1 -1
  165. package/docs/design/templates/list-header/toggle-expanded-dark.svg +1 -1
  166. package/docs/design/templates/list-header/toggle-expanded.svg +1 -1
  167. package/docs/design/templates/list-header-dark.svg +1 -11
  168. package/docs/design/templates/list-header.svg +1 -11
  169. package/docs/design/templates/list-item/default-dark.svg +1 -1
  170. package/docs/design/templates/list-item/default.svg +1 -1
  171. package/docs/design/templates/list-item/multiline-dark.svg +1 -1
  172. package/docs/design/templates/list-item/multiline.svg +1 -1
  173. package/docs/design/templates/list-item/selected-dark.svg +1 -1
  174. package/docs/design/templates/list-item/selected.svg +1 -1
  175. package/docs/design/templates/list-item/trailing-dark.svg +1 -1
  176. package/docs/design/templates/list-item/trailing.svg +1 -1
  177. package/docs/design/templates/list-item-dark.svg +1 -11
  178. package/docs/design/templates/list-item.svg +1 -11
  179. package/docs/design/templates/list.svg +1 -0
  180. package/docs/design/templates/segmented-control-dark.svg +1 -7
  181. package/docs/design/templates/segmented-control.svg +1 -7
  182. package/docs/design/templates/skeleton-dark.svg +1 -9
  183. package/docs/design/templates/skeleton.svg +1 -9
  184. package/docs/design/templates/state-banner/danger-dark.svg +1 -1
  185. package/docs/design/templates/state-banner/danger.svg +1 -1
  186. package/docs/design/templates/state-banner/info-badge-dark.svg +1 -0
  187. package/docs/design/templates/state-banner/info-badge.svg +1 -0
  188. package/docs/design/templates/state-banner/info-dark.svg +1 -1
  189. package/docs/design/templates/state-banner/info.svg +1 -1
  190. package/docs/design/templates/state-banner/success-dark.svg +1 -1
  191. package/docs/design/templates/state-banner/success.svg +1 -1
  192. package/docs/design/templates/state-banner/warning-dark.svg +1 -1
  193. package/docs/design/templates/state-banner/warning.svg +1 -1
  194. package/docs/design/templates/state-banner-dark.svg +1 -11
  195. package/docs/design/templates/state-banner.svg +1 -11
  196. package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -1
  197. package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -1
  198. package/docs/design/templates/tab-bar-dark.svg +1 -5
  199. package/docs/design/templates/tab-bar.svg +1 -5
  200. package/docs/design/templates/token-search-field/empty-dark.svg +1 -1
  201. package/docs/design/templates/token-search-field/empty.svg +1 -1
  202. package/docs/design/templates/token-search-field/tokens-dark.svg +1 -1
  203. package/docs/design/templates/token-search-field/tokens.svg +1 -1
  204. package/docs/design/templates/token-search-field-dark.svg +1 -7
  205. package/docs/design/templates/token-search-field.svg +1 -7
  206. package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -1
  207. package/docs/design/templates/toolbar/title-and-actions.svg +1 -1
  208. package/docs/design/templates/toolbar-control-group/borderless-single-dark.svg +1 -1
  209. package/docs/design/templates/toolbar-control-group/borderless-single.svg +1 -1
  210. package/docs/design/templates/toolbar-control-group/icon-buttons-dark.svg +1 -1
  211. package/docs/design/templates/toolbar-control-group/icon-buttons.svg +1 -1
  212. package/docs/design/templates/toolbar-control-group/push-buttons-dark.svg +1 -1
  213. package/docs/design/templates/toolbar-control-group/push-buttons.svg +1 -1
  214. package/docs/design/templates/toolbar-control-group/with-text-dark.svg +1 -1
  215. package/docs/design/templates/toolbar-control-group/with-text.svg +1 -1
  216. package/docs/design/templates/toolbar-control-group-dark.svg +1 -11
  217. package/docs/design/templates/toolbar-control-group.svg +1 -11
  218. package/docs/design/templates/toolbar-dark.svg +1 -5
  219. package/docs/design/templates/toolbar-text-dark.svg +1 -9
  220. package/docs/design/templates/toolbar-text.svg +1 -9
  221. package/docs/design/templates/toolbar.svg +1 -5
  222. package/docs/design/templates/value-table/details-dark.svg +1 -1
  223. package/docs/design/templates/value-table/details.svg +1 -1
  224. package/docs/design/templates/value-table-dark.svg +1 -5
  225. package/docs/design/templates/value-table.svg +1 -5
  226. package/docs/design/templates.md +29 -20
  227. package/docs/examples/component-catalog-extension-v2.json +3 -6
  228. package/docs/examples/component-catalog-extension.json +1 -1
  229. package/docs/layout.md +7 -9
  230. package/docs/recipes.md +8 -7
  231. package/docs/sunken-panel.md +11 -1
  232. package/docs/surface-scaffold.md +17 -0
  233. package/docs/type-contracts.md +11 -10
  234. package/docs/ui-analyzer.md +19 -1
  235. package/docs/ui-doctor.md +7 -5
  236. package/docs/ux-demo.md +6 -3
  237. package/docs/webawesome-theme.md +4 -1
  238. package/docs/workbench.md +49 -2
  239. package/doctor/eslint-diagnostics.d.mts +16 -0
  240. package/doctor/eslint-diagnostics.mjs +17 -0
  241. package/doctor/index.mjs +21 -3
  242. package/llms.txt +33 -11
  243. package/package.json +14 -8
  244. package/traversal-exclusions.mjs +7 -1
  245. package/ux-demo/recipes/app-shell.tsx +36 -23
  246. package/ux-demo/recipes/collapsible-sidebar.tsx +23 -17
  247. package/ux-demo/recipes/composer-form.tsx +15 -6
  248. package/ux-demo/recipes/list-detail-dialog.tsx +31 -15
  249. package/ux-demo/recipes/list-workspace-states.tsx +16 -7
  250. package/ux-demo/recipes/loading-inspector.tsx +39 -18
  251. package/ux-demo/recipes/navigation-sidebar.tsx +1 -1
  252. package/ux-demo/recipes/recipes.css +7 -2
  253. package/ux-demo/recipes/workspace-header.tsx +17 -7
  254. package/dist/browser/panel-header.js +0 -7
  255. package/dist/chunk-5VTB2BKP.js.map +0 -1
  256. package/dist/chunk-7L6EHUMV.js.map +0 -1
  257. package/dist/chunk-AASLYRGE.js.map +0 -1
  258. package/dist/chunk-BBRXX6PF.js.map +0 -1
  259. package/dist/chunk-DPDBVKNA.js.map +0 -1
  260. package/dist/chunk-DSNIYOZ3.js.map +0 -1
  261. package/dist/chunk-ELSJX4W7.js.map +0 -1
  262. package/dist/chunk-GP5DP5DL.js.map +0 -1
  263. package/dist/chunk-K57KRAOV.js.map +0 -1
  264. package/dist/chunk-M7JBER5U.js.map +0 -1
  265. package/dist/chunk-NENBUYX5.js +0 -79
  266. package/dist/chunk-NENBUYX5.js.map +0 -1
  267. package/dist/chunk-PIDTEQ3U.js.map +0 -1
  268. package/dist/chunk-PZQVSDLH.js.map +0 -1
  269. package/dist/chunk-RYRIFZCT.js +0 -58
  270. package/dist/chunk-RYRIFZCT.js.map +0 -1
  271. package/dist/chunk-VLYV65LK.js.map +0 -1
  272. package/dist/chunk-W4CXQYSG.js.map +0 -1
  273. package/dist/panel-header.d.ts +0 -42
  274. package/dist/panel-header.js +0 -7
  275. package/dist/panel-header.js.map +0 -1
  276. package/dist/styles/panel-header.css +0 -64
  277. package/docs/design/templates/panel-header/icon-actions-dark.svg +0 -1
  278. package/docs/design/templates/panel-header/icon-actions.svg +0 -1
  279. package/docs/design/templates/panel-header/icon-summary-actions-dark.svg +0 -1
  280. package/docs/design/templates/panel-header/icon-summary-actions.svg +0 -1
  281. package/docs/design/templates/panel-header/no-icon-dark.svg +0 -1
  282. package/docs/design/templates/panel-header/no-icon.svg +0 -1
  283. package/docs/design/templates/panel-header/page-heading-dark.svg +0 -1
  284. package/docs/design/templates/panel-header/page-heading.svg +0 -1
  285. package/docs/design/templates/panel-header/title-only-dark.svg +0 -1
  286. package/docs/design/templates/panel-header/title-only.svg +0 -1
  287. package/docs/design/templates/panel-header-dark.svg +0 -13
  288. package/docs/design/templates/panel-header.svg +0 -13
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export { AppTab, AppTabProps } from './app-tab.js';
2
2
  export { DisclosureArrow, DisclosureArrowProps, DisclosureDirection } from './disclosure-arrow.js';
3
3
  export { EmptyState, EmptyStateProps } from './empty-state.js';
4
4
  export { FloatingToolbar, FloatingToolbarPosition, FloatingToolbarProps } from './floating-toolbar.js';
5
+ export { List, ListProps } from './list.js';
5
6
  export { ListActionRow, ListActionRowProps } from './list-action-row.js';
6
7
  export { ListHeader, ListHeaderProps } from './list-header.js';
7
8
  export { ListInsetControl, ListInsetControlProps } from './list-inset-control.js';
@@ -10,13 +11,13 @@ export { ListItem, ListItemProps } from './list-item.js';
10
11
  export { LoadingSpinner, LoadingSpinnerProps } from './loading-spinner.js';
11
12
  export { LucideIcon, LucideIconProps, LucideNode } from './lucide-icon.js';
12
13
  export { Pane, PaneContentElement, PaneElement, PaneProps, PaneSeparatorSide } from './pane.js';
13
- export { PanelHeader, PanelHeaderProps } from './panel-header.js';
14
- export { ResizableRegion, ResizableRegionAxis, ResizableRegionEdge, ResizableRegionProps, clampRegionSize, resizeRegionFromPointer } from './resizable-region.js';
14
+ export { ResizableRegion, ResizableRegionAxis, ResizableRegionCollapseMotion, ResizableRegionContentOverflow, ResizableRegionEdge, ResizableRegionPresentation, ResizableRegionProps, ResizableRegionRestorePosition, ResizableRegionSeparator, clampRegionSize, resizeRegionFromPointer } from './resizable-region.js';
15
15
  export { SegmentedControl, SegmentedControlAppearance, SegmentedControlChoice, SegmentedControlLayout, SegmentedControlProps, SegmentedControlShape, SegmentedControlSize } from './segmented-control.js';
16
16
  export { Select, SelectChoice, SelectProps } from './select.js';
17
17
  export { Skeleton, SkeletonProps } from './skeleton.js';
18
18
  export { StateBanner, StateBannerProps, StateBannerTone, StateBannerUrgency } from './state-banner.js';
19
- export { SunkenPanel, SunkenPanelProps } from './sunken-panel.js';
19
+ export { SunkenPanel, SunkenPanelProps, SunkenPanelShape } from './sunken-panel.js';
20
+ export { DialogSurface, DialogSurfacePresentation, DialogSurfaceProps, DialogSurfaceSize, PopupSurface, PopupSurfaceInset, PopupSurfaceProps, SurfaceInset } from './surface-scaffold.js';
20
21
  export { TabActivation, TabBar, TabBarProps } from './tab-bar.js';
21
22
  export { TokenSearchEditorAttributes, TokenSearchField, TokenSearchFieldProps, TokenSearchFieldValue, TokenSearchToken, placeTokenSearchCaret, readTokenSearchField } from './token-search-field.js';
22
23
  export { Toolbar, ToolbarProps } from './toolbar.js';
@@ -26,5 +27,6 @@ export { ValueTable, ValueTableProps, ValueTableRow, ValueTableRowProps } from '
26
27
  export { ResizeCommit, WireResizableRegionsOptions, wireResizableRegions } from './wire-resizable-regions.js';
27
28
  export { TabDropPosition, TabReorder, TabReorderSource, WireTabBarsOptions, reorderTabs, wireTabBars } from './wire-tab-bars.js';
28
29
  export { TokenSearchCollapsibleOptions, TokenSearchEdit, TokenSearchFieldsHandle, TokenSearchSubmit, WireTokenSearchFieldsOptions, wireTokenSearchFields } from './wire-token-search-fields.js';
30
+ export { D as DividerSides } from './divider-sides-267FA7sY.js';
29
31
  import 'kerfjs';
30
32
  import 'lucide';
package/dist/index.js CHANGED
@@ -1,27 +1,28 @@
1
- export { wireTokenSearchFields } from './chunk-GP5DP5DL.js';
2
- export { ValueTable, ValueTableRow } from './chunk-QQFJMRIB.js';
3
- export { wireResizableRegions } from './chunk-DPDBVKNA.js';
4
- export { reorderTabs, wireTabBars } from './chunk-AASLYRGE.js';
5
- export { StateBanner } from './chunk-VLYV65LK.js';
6
- export { SunkenPanel } from './chunk-W4CXQYSG.js';
7
- export { TabBar } from './chunk-M7JBER5U.js';
1
+ export { reorderTabs, wireTabBars } from './chunk-UKKSMZYT.js';
2
+ export { wireTokenSearchFields } from './chunk-JFGXQBIP.js';
3
+ export { ValueTable, ValueTableRow } from './chunk-KWWR5VMS.js';
4
+ export { wireResizableRegions } from './chunk-YMKH5XTF.js';
5
+ export { StateBanner } from './chunk-W5L2JSBY.js';
6
+ export { SunkenPanel } from './chunk-TB6DY7H5.js';
7
+ export { DialogSurface, PopupSurface } from './chunk-OBLTAKSX.js';
8
+ export { TabBar } from './chunk-X2U3QJCJ.js';
8
9
  export { TokenSearchField, placeTokenSearchCaret, readTokenSearchField } from './chunk-7KEUJIIC.js';
9
- export { PanelHeader } from './chunk-RYRIFZCT.js';
10
- export { ToolbarText } from './chunk-W7YD6E4N.js';
11
- export { ResizableRegion, clampRegionSize, resizeRegionFromPointer } from './chunk-NENBUYX5.js';
12
- export { SegmentedControl } from './chunk-OZWU5ZPZ.js';
13
- export { Select } from './chunk-K57KRAOV.js';
14
- export { ListActionRow } from './chunk-BBRXX6PF.js';
10
+ export { ToolbarText } from './chunk-R7ZWUN64.js';
11
+ export { ResizableRegion, clampRegionSize, resizeRegionFromPointer } from './chunk-HP2B2L26.js';
12
+ export { SegmentedControl } from './chunk-IJBSZ4NX.js';
13
+ export { Select } from './chunk-FRVS5RFM.js';
14
+ export { ListActionRow } from './chunk-VCE4MPVE.js';
15
15
  export { ListInsetControl } from './chunk-QO55FN2Y.js';
16
16
  export { ListInsetText } from './chunk-FEY65TBV.js';
17
- export { AppTab } from './chunk-PIDTEQ3U.js';
17
+ export { AppTab } from './chunk-OT6RPYAP.js';
18
+ export { Toolbar } from './chunk-SYDMYBPG.js';
19
+ export { ToolbarControlGroup } from './chunk-WNWD54GR.js';
18
20
  export { Pane } from './chunk-JRKSK2HX.js';
19
- export { Toolbar } from './chunk-7L6EHUMV.js';
20
- export { ToolbarControlGroup } from './chunk-5VTB2BKP.js';
21
- export { ListHeader } from './chunk-DSNIYOZ3.js';
22
- export { ListItem } from './chunk-ELSJX4W7.js';
21
+ export { ListHeader } from './chunk-GWEAPEZI.js';
22
+ export { ListItem } from './chunk-4EF2CMYS.js';
23
+ export { List } from './chunk-J5BFYY7Q.js';
23
24
 
24
- export { Skeleton } from './chunk-PZQVSDLH.js';
25
+ export { Skeleton } from './chunk-RKVQEH4J.js';
25
26
  export { DisclosureArrow } from './chunk-Y6LYKFXY.js';
26
27
  export { LucideIcon } from './chunk-W2FK7ZNY.js';
27
28
  export { EmptyState } from './chunk-PX3YSS5C.js';
@@ -6,6 +6,10 @@ type ListActionRowRootAttributes = Readonly<Record<`data-${string}`, string | un
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;
@@ -22,6 +26,11 @@ type ListActionRowTrailingAttributes = Readonly<Record<`data-${string}`, string
22
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;
@@ -42,11 +51,12 @@ interface ListActionRowProps {
42
51
  trailingActionIcon: SafeHtml;
43
52
  trailingActionDisabled?: boolean;
44
53
  trailingActionTitle?: string;
54
+ trailingActionVisibility?: 'always' | 'interaction';
45
55
  className?: string;
46
56
  style?: string;
47
57
  rootAttributes?: ListActionRowRootAttributes;
48
58
  trailingActionAttributes?: ListActionRowTrailingAttributes;
49
59
  }
50
- declare function ListActionRow({ label, icon, action, itemId, selected, pressed, accessibleLabel, title, multiline, state, disabled, tabIndex, placeholder, trailingAction, trailingActionLabel, trailingActionIcon, trailingActionDisabled, trailingActionTitle, className, style, rootAttributes, trailingActionAttributes, }: ListActionRowProps): SafeHtml;
60
+ 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, style, rootAttributes, trailingActionAttributes, }: ListActionRowProps): SafeHtml;
51
61
 
52
62
  export { ListActionRow, type ListActionRowProps };
@@ -1,4 +1,5 @@
1
- export { ListActionRow } from './chunk-BBRXX6PF.js';
1
+ export { ListActionRow } from './chunk-VCE4MPVE.js';
2
+
2
3
 
3
4
 
4
5
 
@@ -5,6 +5,9 @@ type ListHeaderRootAttributes = Readonly<Record<`data-${string}`, string | undef
5
5
  'data-action'?: never;
6
6
  'data-has-badge'?: never;
7
7
  'data-has-count'?: never;
8
+ 'data-density'?: never;
9
+ 'data-divider'?: never;
10
+ 'data-indicator-tone'?: never;
8
11
  'data-toggle'?: never;
9
12
  }>;
10
13
  type ListHeaderTriggerAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
@@ -16,6 +19,9 @@ type ListHeaderTriggerAttributes = Readonly<Record<`data-${string}`, string | un
16
19
  }>;
17
20
  interface ListHeaderBaseProps {
18
21
  label: string;
22
+ density?: 'standard' | 'compact';
23
+ divider?: 'none' | 'before' | 'after' | 'both';
24
+ indicatorTone?: 'neutral' | 'accent' | 'danger';
19
25
  /** Render as an unanimated loading skeleton: keep the label and action affordance, disable interaction. */
20
26
  placeholder?: boolean;
21
27
  rootAttributes?: ListHeaderRootAttributes;
@@ -53,12 +59,19 @@ type ListHeaderIndicatorProps = {
53
59
  count: number;
54
60
  countLabel: string;
55
61
  badge?: never;
62
+ status?: never;
56
63
  } | {
57
64
  count?: never;
58
65
  countLabel?: never;
59
- badge?: SafeHtml;
66
+ badge: SafeHtml;
67
+ status?: never;
68
+ } | {
69
+ count?: never;
70
+ countLabel?: never;
71
+ badge?: never;
72
+ status?: SafeHtml;
60
73
  };
61
74
  type ListHeaderProps = ListHeaderBaseProps & ListHeaderIndicatorProps & ListHeaderModeProps;
62
- declare function ListHeader({ label, count, countLabel, badge, action, actionLabel, actionIcon, actionDisabled, disabledReason, expanded, toggle, placeholder, rootAttributes, triggerAttributes, }: ListHeaderProps): SafeHtml;
75
+ declare function ListHeader({ label, count, countLabel, badge, status, density, divider, indicatorTone, action, actionLabel, actionIcon, actionDisabled, disabledReason, expanded, toggle, placeholder, rootAttributes, triggerAttributes, }: ListHeaderProps): SafeHtml;
63
76
 
64
77
  export { ListHeader, type ListHeaderProps };
@@ -1,4 +1,4 @@
1
- export { ListHeader } from './chunk-DSNIYOZ3.js';
1
+ export { ListHeader } from './chunk-GWEAPEZI.js';
2
2
 
3
3
 
4
4
 
@@ -6,12 +6,23 @@ type ListItemRootAttributes = Readonly<Record<`data-${string}`, string | undefin
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;
9
12
  'data-state'?: never;
10
13
  }>;
11
14
  interface ListItemProps {
12
15
  label: string | SafeHtml;
16
+ /** App-owned supporting text rendered in the component's stable label stack. */
17
+ description?: string | SafeHtml;
13
18
  icon?: SafeHtml;
14
19
  trailing?: SafeHtml;
20
+ /** Dormant status metadata rendered before trailing content. */
21
+ status?: string | SafeHtml;
22
+ /** Show a progress indicator and expose the row as busy without replacing its content. */
23
+ busy?: boolean;
24
+ density?: 'standard' | 'compact';
25
+ divider?: 'none' | 'before' | 'after' | 'both';
15
26
  selected?: boolean;
16
27
  action: string;
17
28
  itemId?: string;
@@ -28,6 +39,6 @@ interface ListItemProps {
28
39
  placeholder?: boolean;
29
40
  rootAttributes?: ListItemRootAttributes;
30
41
  }
31
- declare function ListItem({ label, icon, trailing, selected, action, itemId, className, style, pressed, accessibleLabel, title, multiline, state, disabled, tabIndex, placeholder, rootAttributes, }: ListItemProps): SafeHtml;
42
+ declare function ListItem({ label, description, icon, trailing, status, busy, density, divider, selected, action, itemId, className, style, pressed, accessibleLabel, title, multiline, state, disabled, tabIndex, placeholder, rootAttributes, }: ListItemProps): SafeHtml;
32
43
 
33
44
  export { ListItem, type ListItemProps };
package/dist/list-item.js CHANGED
@@ -1,4 +1,5 @@
1
- export { ListItem } from './chunk-ELSJX4W7.js';
1
+ export { ListItem } from './chunk-4EF2CMYS.js';
2
+
2
3
 
3
4
 
4
5
 
package/dist/list.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ import { SafeHtml } from 'kerfjs';
2
+ import { D as DividerSides } from './divider-sides-267FA7sY.js';
3
+
4
+ interface ListProps {
5
+ children?: SafeHtml | readonly SafeHtml[];
6
+ /** Use the standard item gap, or supply browser CSS such as `var(--kui-space-2xs)` or `0.25rem`. Defaults to no gap. */
7
+ gap?: boolean | string;
8
+ /** Allow this list to grow/shrink, or supply a CSS flex shorthand. */
9
+ flex?: boolean | string;
10
+ /** Own vertical scrolling and overscroll containment. */
11
+ scrollable?: boolean;
12
+ /** Physical divider edges in canonical top/right/bottom/left order. */
13
+ dividerSides?: DividerSides;
14
+ className?: string;
15
+ }
16
+ /** A stretch-aligned vertical stack with optional gap, flex, scroll, and dividers. */
17
+ declare function List({ children, gap, flex, scrollable, dividerSides, className, }: ListProps): SafeHtml;
18
+
19
+ export { DividerSides, List, type ListProps };
package/dist/list.js ADDED
@@ -0,0 +1,3 @@
1
+ export { List } from './chunk-J5BFYY7Q.js';
2
+
3
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"list.js"}
package/dist/nav-stack.js CHANGED
@@ -1,4 +1,4 @@
1
- export { NavStack } from './chunk-OHU6CI22.js';
1
+ export { NavStack } from './chunk-B3A3IVO5.js';
2
2
 
3
3
 
4
4
 
@@ -2,6 +2,11 @@ import { SafeHtml } from 'kerfjs';
2
2
 
3
3
  type ResizableRegionAxis = 'horizontal' | 'vertical';
4
4
  type ResizableRegionEdge = 'start' | 'end';
5
+ type ResizableRegionSeparator = 'auto' | 'hidden';
6
+ type ResizableRegionCollapseMotion = 'none' | 'slide' | 'fade-slide';
7
+ type ResizableRegionContentOverflow = 'clip' | 'auto' | 'visible';
8
+ type ResizableRegionPresentation = 'inline' | 'overlay' | 'hidden';
9
+ type ResizableRegionRestorePosition = 'bottom-start' | 'bottom-end';
5
10
  interface ResizableRegionProps {
6
11
  id: string;
7
12
  label: string;
@@ -12,12 +17,24 @@ interface ResizableRegionProps {
12
17
  edge?: ResizableRegionEdge;
13
18
  collapsed?: boolean;
14
19
  transitioning?: boolean;
20
+ /** Whether the separator line is painted. The resize hit target remains available. */
21
+ separator?: ResizableRegionSeparator;
22
+ /** Keep the track change instant while optionally sliding the fixed-size content. */
23
+ collapseMotion?: ResizableRegionCollapseMotion;
24
+ /** Overflow policy for content such as an open popup inside a bottom drawer. */
25
+ contentOverflow?: ResizableRegionContentOverflow;
26
+ /** Inline layout, an edge overlay, or a responsive replacement that removes the region. */
27
+ presentation?: ResizableRegionPresentation;
28
+ /** Always-available control rendered while collapsed, outside the clipped region. */
29
+ restoreControl?: SafeHtml;
30
+ /** Safe-area-aware viewport corner for `restoreControl`. */
31
+ restorePosition?: ResizableRegionRestorePosition;
15
32
  /** Decorative dormant content for the separator handle. Must not contain interactive descendants. */
16
33
  handleIcon?: SafeHtml;
17
34
  children: SafeHtml | SafeHtml[];
18
35
  }
19
36
  declare const clampRegionSize: (size: number, min: number, max: number) => number;
20
37
  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;
38
+ declare function ResizableRegion({ id, label, size, min, max, axis, edge, collapsed, transitioning, separator, collapseMotion, contentOverflow, presentation, restoreControl, restorePosition, handleIcon, children, }: ResizableRegionProps): SafeHtml;
22
39
 
23
- export { ResizableRegion, type ResizableRegionAxis, type ResizableRegionEdge, type ResizableRegionProps, clampRegionSize, resizeRegionFromPointer };
40
+ 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-NENBUYX5.js';
1
+ export { ResizableRegion, clampRegionSize, resizeRegionFromPointer } from './chunk-HP2B2L26.js';
2
2
 
3
3
  //# sourceMappingURL=resizable-region.js.map
@@ -1,4 +1,4 @@
1
- export { SegmentedControl } from './chunk-OZWU5ZPZ.js';
1
+ export { SegmentedControl } from './chunk-IJBSZ4NX.js';
2
2
 
3
3
 
4
4
  //# sourceMappingURL=segmented-control.js.map
package/dist/select.d.ts CHANGED
@@ -25,13 +25,24 @@ interface SelectBaseProps<Value extends string = string> {
25
25
  className?: string;
26
26
  /** Empty-value hint text shown in the closed control (the native select placeholder). */
27
27
  placeholderText?: string;
28
+ /** Supporting text shown below the control and associated with its combobox. */
29
+ hint?: string;
28
30
  disabled?: boolean;
29
31
  fitMenu?: boolean;
30
32
  renderSelected?: (choice: SelectChoice<Value>) => SafeHtml;
31
33
  /** Render as an unanimated loading skeleton: the label above a static, empty control box. */
32
34
  placeholder?: boolean;
35
+ /** Form (default), borderless toolbar, or intrinsic navigation chrome. */
36
+ presentation?: 'form' | 'toolbar-borderless' | 'navigation';
37
+ size?: 'default' | 'compact';
38
+ /** Show only the selected choice icon while retaining the Select's accessible name. */
39
+ selectedPresentation?: 'label' | 'icon-only';
40
+ /** Let an enclosing ToolbarControlGroup paint the composed focus ring. */
41
+ focusRingOwner?: 'select' | 'group';
42
+ /** Maximum closed-control label width in CSS pixels before ellipsis. */
43
+ labelMaxWidth?: number;
33
44
  }
34
45
  type SelectProps<Value extends string = string> = SelectBaseProps<Value> & SelectAccessibleName;
35
- declare function Select<Value extends string>({ name, value, label, ariaLabel, choices, className, placeholderText, disabled, fitMenu, renderSelected, placeholder, }: SelectProps<Value>): SafeHtml;
46
+ declare function Select<Value extends string>({ name, value, label, ariaLabel, choices, className, placeholderText, hint, disabled, fitMenu, renderSelected, placeholder, presentation, size, selectedPresentation, focusRingOwner, labelMaxWidth, }: SelectProps<Value>): SafeHtml;
36
47
 
37
48
  export { Select, type SelectChoice, type SelectProps };
package/dist/select.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Select } from './chunk-K57KRAOV.js';
1
+ export { Select } from './chunk-FRVS5RFM.js';
2
2
 
3
3
 
4
4
 
@@ -1,7 +1,7 @@
1
1
  import * as kerfjs from 'kerfjs';
2
2
 
3
3
  interface SkeletonProps {
4
- /** Width as any CSS length (e.g. `remify(120px)`, `60%`). Defaults to filling its slot. */
4
+ /** Width as any browser CSS length (e.g. `7.5rem`, `60%`). Defaults to filling its slot. */
5
5
  width?: string;
6
6
  /** Height as any CSS length. Defaults to a single text line. */
7
7
  height?: string;
package/dist/skeleton.js CHANGED
@@ -1,3 +1,3 @@
1
- export { Skeleton } from './chunk-PZQVSDLH.js';
1
+ export { Skeleton } from './chunk-RKVQEH4J.js';
2
2
 
3
3
  //# sourceMappingURL=skeleton.js.map
@@ -1,6 +1,6 @@
1
- import { NavStack } from './chunk-OHU6CI22.js';
1
+ import { NavStack } from './chunk-B3A3IVO5.js';
2
2
 
3
- import { ResizableRegion } from './chunk-NENBUYX5.js';
3
+ import { ResizableRegion } from './chunk-HP2B2L26.js';
4
4
 
5
5
  import { jsx, jsxs } from 'kerfjs/jsx-runtime';
6
6
 
@@ -5,14 +5,16 @@ type StateBannerUrgency = 'status' | 'alert';
5
5
  interface StateBannerProps {
6
6
  title: string;
7
7
  detail?: string;
8
+ /** Optional compact status or count shown beside the title. */
9
+ badge?: string;
8
10
  icon?: SafeHtml;
9
11
  action?: SafeHtml;
10
12
  tone?: StateBannerTone;
11
13
  urgency?: StateBannerUrgency;
12
14
  className?: string;
13
- /** Render the title and detail as unanimated loading skeletons, keeping the icon and tone. */
15
+ /** Render the title, badge, and detail as unanimated loading skeletons, keeping the icon and tone. */
14
16
  placeholder?: boolean;
15
17
  }
16
- declare function StateBanner({ title, detail, icon, action, tone, urgency, className, placeholder, }: StateBannerProps): SafeHtml;
18
+ declare function StateBanner({ title, detail, badge, icon, action, tone, urgency, className, placeholder, }: StateBannerProps): SafeHtml;
17
19
 
18
20
  export { StateBanner, type StateBannerProps, type StateBannerTone, type StateBannerUrgency };
@@ -1,4 +1,4 @@
1
- export { StateBanner } from './chunk-VLYV65LK.js';
1
+ export { StateBanner } from './chunk-W5L2JSBY.js';
2
2
 
3
3
 
4
4
  //# sourceMappingURL=state-banner.js.map
@@ -26,6 +26,13 @@
26
26
  align-items: center;
27
27
  flex: none;
28
28
  }
29
+ .kui-app-tab[data-size="compact"] {
30
+ height: 2rem;
31
+ }
32
+ .kui-app-tab[data-presentation="segmented"] {
33
+ border-radius: var(--kui-radius-s);
34
+ box-shadow: none;
35
+ }
29
36
  .kui-app-tab:hover {
30
37
  border-color: var(--kui-color-neutral-border-normal);
31
38
  background: var(--kui-app-tab-hover-background);
@@ -92,12 +99,31 @@
92
99
  flex: none;
93
100
  }
94
101
  .kui-app-tab__name {
102
+ max-width: var(--kui-app-tab-label-max-width, none);
95
103
  overflow: hidden;
96
104
  font-size: var(--kui-font-xs);
97
105
  font-weight: 650;
98
106
  text-overflow: ellipsis;
99
107
  white-space: nowrap;
100
108
  }
109
+ .kui-app-tab[data-presentation="icon-only"] .kui-app-tab__select {
110
+ width: 100%;
111
+ justify-content: center;
112
+ }
113
+ .kui-app-tab[data-presentation="icon-only"] .kui-app-tab__name {
114
+ position: absolute;
115
+ width: 1px;
116
+ height: 1px;
117
+ padding: 0;
118
+ overflow: hidden;
119
+ clip: rect(0, 0, 0, 0);
120
+ white-space: nowrap;
121
+ clip-path: inset(50%);
122
+ }
123
+ .kui-app-tab[data-presentation="icon-only"] {
124
+ width: 2rem;
125
+ min-width: 2rem;
126
+ }
101
127
  .kui-app-tab__trailing {
102
128
  display: grid;
103
129
  min-width: 1.275rem;
@@ -325,8 +325,8 @@
325
325
  }
326
326
 
327
327
  /* Optional devtools-style geometry overlay. `wireCatalogGeometryOverlay` draws
328
- a quiet dashed outer bound for transparent specimens and orange bands for
329
- non-zero margins. */
328
+ computed border edges, a quiet dashed bound for transparent borderless
329
+ specimens, and orange bands for non-zero margins. */
330
330
  .kui-catalog__geometry-overlay {
331
331
  position: absolute;
332
332
  z-index: 3;
@@ -335,6 +335,7 @@
335
335
  }
336
336
 
337
337
  .kui-catalog__geometry-bound,
338
+ .kui-catalog__geometry-border,
338
339
  .kui-catalog__geometry-margin {
339
340
  position: absolute;
340
341
  top: 0;
@@ -346,6 +347,11 @@
346
347
  border: 1px dashed color-mix(in srgb, var(--kui-color-text) 40%, transparent);
347
348
  }
348
349
 
350
+ .kui-catalog__geometry-border {
351
+ border: 0 solid
352
+ color-mix(in srgb, var(--kui-color-accent-text) 72%, transparent);
353
+ }
354
+
349
355
  .kui-catalog__geometry-margin {
350
356
  background: color-mix(in srgb, #f6a94c 55%, transparent);
351
357
  }
@@ -33,6 +33,19 @@
33
33
  border: 0;
34
34
  }
35
35
 
36
+ .kui-collapsible-panel[data-separator="hidden"] {
37
+ border-color: transparent;
38
+ }
39
+
40
+ .kui-collapsible-panel[data-content-overflow="auto"] {
41
+ overflow: auto;
42
+ }
43
+
44
+ .kui-collapsible-panel[data-content-overflow="visible"] {
45
+ z-index: var(--kui-collapsible-panel-popup-z, 5);
46
+ overflow: visible;
47
+ }
48
+
36
49
  .kui-collapsible-panel--left[data-collapsed="true"],
37
50
  .kui-collapsible-panel--right[data-collapsed="true"] {
38
51
  width: 0;
@@ -59,6 +72,16 @@
59
72
  height: var(--kui-collapsible-panel-height, 13.75rem);
60
73
  }
61
74
 
75
+ .kui-collapsible-panel[data-collapse-motion="none"]
76
+ .kui-collapsible-panel__content {
77
+ transition: none;
78
+ }
79
+
80
+ .kui-collapsible-panel[data-collapse-motion="fade-slide"][data-collapsed="true"]
81
+ .kui-collapsible-panel__content {
82
+ opacity: 0;
83
+ }
84
+
62
85
  .kui-collapsible-panel--left[data-collapsed="true"]
63
86
  .kui-collapsible-panel__content {
64
87
  transform: translateX(-100%);
@@ -77,27 +100,66 @@
77
100
  /* Compact presentation: wireSidebar marks the host so the panel floats over the
78
101
  content as an overlay with a dismissable backdrop instead of taking layout
79
102
  space. The panel is fixed to its edge and slides in from off-screen. */
80
- [data-collapsible-overlay="true"] .kui-collapsible-panel {
103
+ [data-collapsible-overlay="true"] .kui-collapsible-panel,
104
+ .kui-collapsible-panel[data-presentation="overlay"] {
81
105
  position: fixed;
82
106
  z-index: var(--kui-collapsible-panel-overlay-z, 40);
83
107
  box-shadow: var(--kui-shadow-l, 0 8px 32px rgb(0 0 0 / 24%));
84
108
  }
85
109
 
86
- [data-collapsible-overlay="true"] .kui-collapsible-panel--left {
110
+ [data-collapsible-overlay="true"] .kui-collapsible-panel--left,
111
+ .kui-collapsible-panel--left[data-presentation="overlay"] {
87
112
  inset-block: 0;
88
113
  inset-inline-start: 0;
89
114
  }
90
115
 
91
- [data-collapsible-overlay="true"] .kui-collapsible-panel--right {
116
+ [data-collapsible-overlay="true"] .kui-collapsible-panel--right,
117
+ .kui-collapsible-panel--right[data-presentation="overlay"] {
92
118
  inset-block: 0;
93
119
  inset-inline-end: 0;
94
120
  }
95
121
 
96
- [data-collapsible-overlay="true"] .kui-collapsible-panel--bottom {
122
+ [data-collapsible-overlay="true"] .kui-collapsible-panel--bottom,
123
+ .kui-collapsible-panel--bottom[data-presentation="overlay"] {
97
124
  inset-inline: 0;
98
125
  inset-block-end: 0;
99
126
  }
100
127
 
128
+ .kui-collapsible-panel[data-presentation="overlay"][data-collapsed="true"] {
129
+ pointer-events: none;
130
+ }
131
+
132
+ .kui-collapsible-panel[data-presentation="hidden"] {
133
+ display: none;
134
+ }
135
+
136
+ [data-collapsible-responsive="hidden"] .kui-collapsible-panel {
137
+ display: none;
138
+ }
139
+
140
+ .kui-collapsible-panel__restore {
141
+ position: fixed;
142
+ z-index: var(--kui-collapsible-panel-restore-z, 42);
143
+ inset-block-end: calc(
144
+ var(--kui-collapsible-panel-restore-inset, 1rem) +
145
+ var(--kui-safe-area-block-end, env(safe-area-inset-bottom, 0px))
146
+ );
147
+ }
148
+
149
+ .kui-collapsible-panel__restore[data-position="bottom-start"] {
150
+ inset-inline-start: calc(
151
+ var(--kui-collapsible-panel-restore-inset, 1rem) +
152
+ var(--kui-safe-area-inline-start, env(safe-area-inset-left, 0px))
153
+ );
154
+ }
155
+
156
+ .kui-collapsible-panel__restore[data-position="bottom-end"] {
157
+ inset-inline-end: calc(
158
+ var(--kui-collapsible-panel-restore-inset, 1rem) +
159
+ var(--kui-safe-area-inline-end, env(safe-area-inset-right, 0px))
160
+ );
161
+ }
162
+
101
163
  .kui-collapsible-panel__backdrop {
102
164
  position: fixed;
103
165
  inset: 0;