@kerfjs/ui 5.0.0-beta.56 → 5.0.0-beta.58
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.
- package/README.md +81 -37
- package/ai/application-ui-diagnostic-ids-v1.json +9 -1
- package/ai/application-ui-profile-sync.cjs +1 -1
- package/ai/application-ui-profile.defaults.json +63 -8
- package/ai/application-ui-profile.mjs +1 -1
- package/ai/component-catalog.json +211 -33
- package/ai/component-catalog.schema.json +2 -0
- package/ai/component-class-owners.cjs +83 -0
- package/ai/component-composition-extension.d.ts +7 -0
- package/ai/component-composition-extension.schema.json +7 -0
- package/ai/{component-catalog-v2-overrides.json → component-composition-rules.json} +2 -1
- package/ai/{component-catalog-v2.d.ts → component-composition.d.ts} +9 -5
- package/ai/{component-catalog-v2.json → component-composition.json} +155 -24
- package/ai/{component-catalog-v2.schema.json → component-composition.schema.json} +21 -5
- package/ai/components/README.md +170 -0
- package/ai/components/application-tabs.md +65 -0
- package/ai/components/badge.md +72 -0
- package/ai/components/collapsible-panel.md +102 -0
- package/ai/components/content-item.md +90 -0
- package/ai/components/disclosure-arrow.md +77 -0
- package/ai/components/document-baseline.md +75 -0
- package/ai/components/empty-state.md +80 -0
- package/ai/components/feedback.md +71 -0
- package/ai/components/floating-toolbar.md +80 -0
- package/ai/components/foundation.md +65 -0
- package/ai/components/grid.md +93 -0
- package/ai/components/headers.md +63 -0
- package/ai/components/layout.md +75 -0
- package/ai/components/list-action-row.md +91 -0
- package/ai/components/list-header.md +89 -0
- package/ai/components/list-inset-control.md +74 -0
- package/ai/components/list-inset-text.md +72 -0
- package/ai/components/list-item.md +88 -0
- package/ai/components/list.md +103 -0
- package/ai/components/loading-spinner.md +72 -0
- package/ai/components/lucide-icon.md +66 -0
- package/ai/components/nav-stack.md +103 -0
- package/ai/components/pane.md +100 -0
- package/ai/components/popup-menu.md +82 -0
- package/ai/components/recipe-app-shell.md +57 -0
- package/ai/components/recipe-collapsible-sidebar.md +57 -0
- package/ai/components/recipe-compact-toolbar.md +57 -0
- package/ai/components/recipe-composer-form.md +57 -0
- package/ai/components/recipe-list-detail-dialog.md +57 -0
- package/ai/components/recipe-list-workspace-states.md +57 -0
- package/ai/components/recipe-loading-inspector.md +57 -0
- package/ai/components/recipe-navigation-sidebar.md +57 -0
- package/ai/components/recipe-navigation-stack.md +57 -0
- package/ai/components/recipe-workspace-header.md +57 -0
- package/ai/components/resize.md +101 -0
- package/ai/components/row.md +96 -0
- package/ai/components/segmented-control.md +82 -0
- package/ai/components/select.md +107 -0
- package/ai/components/skeleton.md +84 -0
- package/ai/components/spacer.md +86 -0
- package/ai/components/split-view.md +102 -0
- package/ai/components/state-banner.md +92 -0
- package/ai/components/sunken-panel.md +79 -0
- package/ai/components/surface-scaffold.md +78 -0
- package/ai/components/tab-bar.md +112 -0
- package/ai/components/tab-scaffold.md +94 -0
- package/ai/components/tabs.md +90 -0
- package/ai/components/text.md +82 -0
- package/ai/components/token-search-field.md +101 -0
- package/ai/components/toolbar-control-group.md +102 -0
- package/ai/components/toolbar-text.md +76 -0
- package/ai/components/toolbar.md +95 -0
- package/ai/components/value-table.md +72 -0
- package/ai/components/wa-accordion-item.md +55 -0
- package/ai/components/wa-accordion.md +65 -0
- package/ai/components/wa-animated-image.md +55 -0
- package/ai/components/wa-animation.md +55 -0
- package/ai/components/wa-avatar.md +55 -0
- package/ai/components/wa-badge.md +55 -0
- package/ai/components/wa-breadcrumb-item.md +53 -0
- package/ai/components/wa-breadcrumb.md +55 -0
- package/ai/components/wa-button-group.md +59 -0
- package/ai/components/wa-button.md +55 -0
- package/ai/components/wa-callout.md +58 -0
- package/ai/components/wa-card.md +59 -0
- package/ai/components/wa-carousel-item.md +53 -0
- package/ai/components/wa-carousel.md +55 -0
- package/ai/components/wa-checkbox-group.md +55 -0
- package/ai/components/wa-checkbox.md +55 -0
- package/ai/components/wa-color-picker.md +55 -0
- package/ai/components/wa-comparison.md +55 -0
- package/ai/components/wa-copy-button.md +55 -0
- package/ai/components/wa-details.md +61 -0
- package/ai/components/wa-dialog.md +59 -0
- package/ai/components/wa-divider.md +53 -0
- package/ai/components/wa-drawer.md +55 -0
- package/ai/components/wa-dropdown-item.md +60 -0
- package/ai/components/wa-dropdown.md +60 -0
- package/ai/components/wa-format-bytes.md +53 -0
- package/ai/components/wa-format-date.md +53 -0
- package/ai/components/wa-format-number.md +53 -0
- package/ai/components/wa-icon.md +58 -0
- package/ai/components/wa-include.md +53 -0
- package/ai/components/wa-input.md +59 -0
- package/ai/components/wa-intersection-observer.md +53 -0
- package/ai/components/wa-known-date.md +53 -0
- package/ai/components/wa-markdown.md +53 -0
- package/ai/components/wa-mutation-observer.md +53 -0
- package/ai/components/wa-number-input.md +55 -0
- package/ai/components/wa-option.md +59 -0
- package/ai/components/wa-otp-input.md +53 -0
- package/ai/components/wa-page.md +53 -0
- package/ai/components/wa-pagination.md +55 -0
- package/ai/components/wa-popover.md +55 -0
- package/ai/components/wa-popup.md +53 -0
- package/ai/components/wa-progress-bar.md +53 -0
- package/ai/components/wa-progress-ring.md +53 -0
- package/ai/components/wa-qr-code.md +53 -0
- package/ai/components/wa-radio-group.md +59 -0
- package/ai/components/wa-radio.md +55 -0
- package/ai/components/wa-random-content.md +53 -0
- package/ai/components/wa-rating.md +55 -0
- package/ai/components/wa-relative-time.md +53 -0
- package/ai/components/wa-resize-observer.md +53 -0
- package/ai/components/wa-scroller.md +53 -0
- package/ai/components/wa-select.md +63 -0
- package/ai/components/wa-skeleton.md +53 -0
- package/ai/components/wa-slider.md +55 -0
- package/ai/components/wa-spinner.md +58 -0
- package/ai/components/wa-split-panel.md +58 -0
- package/ai/components/wa-switch.md +53 -0
- package/ai/components/wa-tab-group.md +69 -0
- package/ai/components/wa-tab-panel.md +60 -0
- package/ai/components/wa-tab.md +59 -0
- package/ai/components/wa-tag.md +59 -0
- package/ai/components/wa-textarea.md +53 -0
- package/ai/components/wa-time-input.md +55 -0
- package/ai/components/wa-toast-item.md +60 -0
- package/ai/components/wa-toast.md +60 -0
- package/ai/components/wa-tooltip.md +55 -0
- package/ai/components/wa-tree-item.md +55 -0
- package/ai/components/wa-tree.md +55 -0
- package/ai/components/wa-zoomable-frame.md +55 -0
- package/ai/components/workbench.md +114 -0
- package/ai/public-api-signatures-v1.md +174 -43
- package/ai/skill.md +100 -48
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/analyzer/component-ownership.d.mts +56 -0
- package/analyzer/component-ownership.mjs +184 -0
- package/analyzer/index.d.mts +3 -0
- package/analyzer/index.mjs +274 -20
- package/analyzer/selectors.d.mts +21 -0
- package/analyzer/selectors.mjs +212 -0
- package/dist/browser/catalog.js +25 -0
- package/dist/browser/collapsible-panel.js +7 -0
- package/dist/browser/nav-stack.js +8 -0
- package/dist/browser/split-view.js +10 -0
- package/dist/browser/tab-scaffold.js +4 -0
- package/dist/browser/workbench.js +10 -0
- package/dist/catalog-resources.d.ts +2 -2
- package/dist/catalog.d.ts +3 -3
- package/dist/catalog.js +8 -7
- package/dist/catalog.js.map +1 -1
- package/dist/{chunk-QQOTQTDD.js → chunk-2CCMJTVY.js} +13 -10
- package/dist/chunk-2CCMJTVY.js.map +1 -0
- package/dist/{chunk-PK4N5QTO.js → chunk-553ASUK6.js} +2 -3
- package/dist/chunk-553ASUK6.js.map +1 -0
- package/dist/{chunk-G33XC2NB.js → chunk-6YFHCLHG.js} +2 -2
- package/dist/chunk-6YFHCLHG.js.map +1 -0
- package/dist/{chunk-ZIYOJFZD.js → chunk-7JUBXOIV.js} +17 -4
- package/dist/chunk-7JUBXOIV.js.map +1 -0
- package/dist/{chunk-T4UZTNZ4.js → chunk-EVYKTVBQ.js} +2 -11
- package/dist/chunk-EVYKTVBQ.js.map +1 -0
- package/dist/{chunk-AK67F6QN.js → chunk-EZVNC4J6.js} +4 -1
- package/dist/chunk-EZVNC4J6.js.map +1 -0
- package/dist/{chunk-MA6Z6EIM.js → chunk-F4QMLOXJ.js} +3 -2
- package/dist/chunk-F4QMLOXJ.js.map +1 -0
- package/dist/chunk-JCV4GXWB.js +249 -0
- package/dist/chunk-JCV4GXWB.js.map +1 -0
- package/dist/chunk-K47P7QZC.js +17 -0
- package/dist/chunk-K47P7QZC.js.map +1 -0
- package/dist/{chunk-MOBRFZH3.js → chunk-OUK6QRDR.js} +2 -12
- package/dist/chunk-OUK6QRDR.js.map +1 -0
- package/dist/{chunk-VNPQDCQZ.js → chunk-QOWG4ZCL.js} +3 -2
- package/dist/chunk-QOWG4ZCL.js.map +1 -0
- package/dist/{chunk-V65EOWNF.js → chunk-QPUPLNNB.js} +20 -8
- package/dist/chunk-QPUPLNNB.js.map +1 -0
- package/dist/{chunk-O3EXIBEZ.js → chunk-W4XKTST6.js} +8 -7
- package/dist/chunk-W4XKTST6.js.map +1 -0
- package/dist/{chunk-K6UNVKDK.js → chunk-XDKAYSVD.js} +3 -1
- package/dist/chunk-XDKAYSVD.js.map +1 -0
- package/dist/collapsible-panel.d.ts +9 -9
- package/dist/collapsible-panel.js +2 -2
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +11 -9
- package/dist/list-action-row.js +2 -1
- package/dist/list-header.js +1 -1
- package/dist/list-item.js +2 -1
- package/dist/nav-stack.d.ts +13 -1
- package/dist/nav-stack.js +1 -1
- package/dist/pane.d.ts +20 -3
- package/dist/pane.js +1 -1
- package/dist/{panel-toolbar-C8sF-YZC.d.ts → panel-toolbar-DqwtBxQL.d.ts} +13 -13
- package/dist/select.js +1 -1
- package/dist/split-view.d.ts +3 -3
- package/dist/split-view.js +3 -2
- package/dist/split-view.js.map +1 -1
- package/dist/state-banner.js +1 -1
- package/dist/styles/app-tab.css +31 -0
- package/dist/styles/badge.css +19 -11
- package/dist/styles/collapsible-panel.css +13 -9
- package/dist/styles/floating-toolbar.css +25 -6
- package/dist/styles/list-header.css +0 -12
- package/dist/styles/list.css +4 -4
- package/dist/styles/nav-stack.css +46 -19
- package/dist/styles/pane.css +50 -0
- package/dist/styles/popup-menu.css +151 -0
- package/dist/styles/resizable-region.css +22 -10
- package/dist/styles/select.css +28 -14
- package/dist/styles/skeleton.css +30 -3
- package/dist/styles/split-view.css +10 -7
- package/dist/styles/state-banner.css +0 -19
- package/dist/styles/surface-scaffold.css +8 -3
- package/dist/styles/tab-bar.css +79 -28
- package/dist/styles/tab-scaffold.css +25 -1
- package/dist/styles/text.css +16 -0
- package/dist/styles/toolbar-control-group.css +121 -66
- package/dist/styles/toolbar-text.css +21 -0
- package/dist/styles/toolbar.css +8 -32
- package/dist/styles/workbench.css +18 -18
- package/dist/tab-scaffold.d.ts +11 -1
- package/dist/tab-scaffold.js +2 -0
- package/dist/tab-scaffold.js.map +1 -1
- package/dist/toolbar-control-group.d.ts +3 -1
- package/dist/toolbar-control-group.js +1 -1
- package/dist/toolbar-text.d.ts +7 -1
- package/dist/toolbar-text.js +1 -1
- package/dist/toolbar.d.ts +8 -1
- package/dist/toolbar.js +1 -1
- package/dist/{types-DXAGogOS.d.ts → types-BuHELdXR.d.ts} +1 -1
- package/dist/wire-catalog.d.ts +3 -1
- package/dist/wire-catalog.js +2 -0
- package/dist/wire-catalog.js.map +1 -1
- package/dist/wire-scroll-dividers.d.ts +69 -0
- package/dist/wire-scroll-dividers.js +3 -0
- package/dist/wire-scroll-dividers.js.map +1 -0
- package/dist/workbench.d.ts +17 -16
- package/dist/workbench.js +1 -1
- package/docs/app-layouts.md +9 -1
- package/docs/catalog.md +10 -5
- package/docs/collapsible-panel.md +22 -13
- package/docs/component-contract.md +147 -21
- package/docs/component-selection.md +21 -8
- package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -1
- package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -1
- package/docs/design/templates/tab-bar-dark.svg +1 -1
- package/docs/design/templates/tab-bar.svg +1 -1
- package/docs/design-philosophy.md +30 -3
- package/docs/examples/application-ui-profile.json +4 -4
- package/docs/examples/{component-catalog-extension-v2.json → component-composition-extension.json} +3 -3
- package/docs/layout.md +82 -3
- package/docs/nav-stack.md +33 -3
- package/docs/split-view.md +10 -5
- package/docs/tab-scaffold.md +23 -1
- package/docs/type-contracts.md +4 -3
- package/docs/ui-analyzer.md +99 -5
- package/docs/ui-doctor.md +10 -0
- package/docs/workbench.md +31 -20
- package/doctor/index.mjs +6 -1
- package/llms.txt +85 -20
- package/package.json +17 -5
- package/ux-demo/recipes/collapsible-sidebar.tsx +0 -1
- package/ux-demo/recipes/composer-form.tsx +0 -1
- package/ux-demo/recipes/list-detail-dialog.tsx +0 -2
- package/ux-demo/recipes/list-workspace-states.tsx +0 -1
- package/ux-demo/recipes/loading-inspector.tsx +0 -1
- package/ux-demo/recipes/workspace-header.tsx +0 -1
- package/ai/component-catalog-extension-v2.d.ts +0 -7
- package/ai/component-catalog-extension-v2.schema.json +0 -7
- package/dist/chunk-AK67F6QN.js.map +0 -1
- package/dist/chunk-G33XC2NB.js.map +0 -1
- package/dist/chunk-K6UNVKDK.js.map +0 -1
- package/dist/chunk-MA6Z6EIM.js.map +0 -1
- package/dist/chunk-MOBRFZH3.js.map +0 -1
- package/dist/chunk-O3EXIBEZ.js.map +0 -1
- package/dist/chunk-PK4N5QTO.js.map +0 -1
- package/dist/chunk-QQOTQTDD.js.map +0 -1
- package/dist/chunk-T4UZTNZ4.js.map +0 -1
- package/dist/chunk-V65EOWNF.js.map +0 -1
- package/dist/chunk-VNPQDCQZ.js.map +0 -1
- package/dist/chunk-ZIYOJFZD.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Public API signatures for the UI authoring corpus
|
|
2
2
|
|
|
3
|
-
Generated from emitted declarations for `@kerfjs/ui@5.0.0-beta.
|
|
3
|
+
Generated from emitted declarations for `@kerfjs/ui@5.0.0-beta.58` and `kerfjs@5.0.0-beta.58`. This bounded reference covers only APIs used by the seven-task corpus. It is interface evidence, not an implementation or runtime guarantee.
|
|
4
4
|
|
|
5
5
|
## `@kerfjs/ui/css-values`
|
|
6
6
|
|
|
@@ -151,7 +151,14 @@ interface ToolbarProps {
|
|
|
151
151
|
center?: KerfUiContent;
|
|
152
152
|
trailing?: KerfUiContent;
|
|
153
153
|
label?: string;
|
|
154
|
-
/**
|
|
154
|
+
/**
|
|
155
|
+
* Physical divider edges in canonical top/right/bottom/left order, drawn
|
|
156
|
+
* always. Defaults to none: a toolbar pinned over or under scrolling content
|
|
157
|
+
* gets its divider from the scroll state instead — a `Pane` draws the line
|
|
158
|
+
* between its chrome and content while content is scrolled away beneath it,
|
|
159
|
+
* and `wireScrollDividers` `targets` can name a toolbar as chrome, which
|
|
160
|
+
* then draws its facing side the same way.
|
|
161
|
+
*/
|
|
155
162
|
dividerSides?: Sides;
|
|
156
163
|
/** Horizontal treatment of the center zone. Defaults to centered content. */
|
|
157
164
|
centerAlign?: 'center' | 'stretch';
|
|
@@ -224,6 +231,12 @@ interface ToolbarTextBaseProps {
|
|
|
224
231
|
* instead. Default true.
|
|
225
232
|
*/
|
|
226
233
|
ellipsis?: boolean;
|
|
234
|
+
/**
|
|
235
|
+
* Grow to fill the free space of the flex row it sits in (a Toolbar zone),
|
|
236
|
+
* truncating at the space left by its siblings instead of taking only its
|
|
237
|
+
* text's width. Default false.
|
|
238
|
+
*/
|
|
239
|
+
fill?: boolean;
|
|
227
240
|
/** Native named-slot assignment when composed inside a web component. */
|
|
228
241
|
slot?: string;
|
|
229
242
|
}
|
|
@@ -236,7 +249,7 @@ type ToolbarTextWrappingProps = {
|
|
|
236
249
|
maxLines?: never;
|
|
237
250
|
};
|
|
238
251
|
type ToolbarTextProps = ToolbarTextBaseProps & ToolbarTextWrappingProps;
|
|
239
|
-
declare function ToolbarText({ text, size, className, id, headingLevel, placeholder, wrap, ellipsis, maxLines, slot, }: ToolbarTextProps): kerfjs.SafeHtml;
|
|
252
|
+
declare function ToolbarText({ text, size, className, id, headingLevel, placeholder, wrap, ellipsis, maxLines, fill, slot, }: ToolbarTextProps): kerfjs.SafeHtml;
|
|
240
253
|
|
|
241
254
|
export { type HeadingLevel, ToolbarText, type ToolbarTextProps, type ToolbarTextSize };
|
|
242
255
|
```
|
|
@@ -302,6 +315,8 @@ interface ToolbarControlGroupProps {
|
|
|
302
315
|
overflow?: ToolbarControlGroupOverflow;
|
|
303
316
|
/** Responsive visibility owned by the enclosing Toolbar container. */
|
|
304
317
|
visibility?: ToolbarControlGroupVisibility;
|
|
318
|
+
/** Move this group into the work-area toolbar when its panel collapses. */
|
|
319
|
+
relocateOnCollapse?: boolean;
|
|
305
320
|
/** Add contrast behind photo-backed avatar content. */
|
|
306
321
|
scrim?: boolean;
|
|
307
322
|
/**
|
|
@@ -312,7 +327,7 @@ interface ToolbarControlGroupProps {
|
|
|
312
327
|
/** Native named-slot assignment when composed inside a web component. */
|
|
313
328
|
slot?: string;
|
|
314
329
|
}
|
|
315
|
-
declare function ToolbarControlGroup({ children, label, className, expanded, single, appearance, tone, buttonAppearance, shape, size, density, content, focusRing, selectedChrome, selectedTone, nestedDropdown, menuInset, overflow, visibility, scrim, avatarImage, slot, }: ToolbarControlGroupProps): kerfjs.SafeHtml;
|
|
330
|
+
declare function ToolbarControlGroup({ children, label, className, expanded, single, appearance, tone, buttonAppearance, shape, size, density, content, focusRing, selectedChrome, selectedTone, nestedDropdown, menuInset, overflow, visibility, relocateOnCollapse, scrim, avatarImage, slot, }: ToolbarControlGroupProps): kerfjs.SafeHtml;
|
|
316
331
|
|
|
317
332
|
export { ToolbarActionLink, type ToolbarActionLinkProps, ToolbarControlGroup, type ToolbarControlGroupAppearance, type ToolbarControlGroupButtonAppearance, type ToolbarControlGroupContent, type ToolbarControlGroupDensity, type ToolbarControlGroupFocusRing, type ToolbarControlGroupMenuInset, type ToolbarControlGroupOverflow, type ToolbarControlGroupProps, type ToolbarControlGroupSelectedChrome, type ToolbarControlGroupSelectedTone, type ToolbarControlGroupShape, type ToolbarControlGroupSize, type ToolbarControlGroupTone, type ToolbarControlGroupVisibility };
|
|
318
333
|
```
|
|
@@ -1018,6 +1033,80 @@ declare function wireTabBars(root: HTMLElement | Document, { onReorder, activati
|
|
|
1018
1033
|
export { TabActivation, type TabDropPosition, type TabReorder, type TabReorderSource, type WireTabBarsOptions, reorderTabs, wireTabBars };
|
|
1019
1034
|
```
|
|
1020
1035
|
|
|
1036
|
+
## `@kerfjs/ui/wire-scroll-dividers`
|
|
1037
|
+
|
|
1038
|
+
```ts
|
|
1039
|
+
/**
|
|
1040
|
+
* An app-owned scroll arrangement outside a `Pane`: the `id` of the element
|
|
1041
|
+
* that scrolls and the `id`s of the pinned chrome on each physical side of it.
|
|
1042
|
+
* Each named chrome element shows its divider on the side facing the scroller
|
|
1043
|
+
* while content is scrolled away beyond that side. Ids are resolved below the
|
|
1044
|
+
* wired root on every refresh, so a re-render that replaces an element keeps
|
|
1045
|
+
* the pairing.
|
|
1046
|
+
*/
|
|
1047
|
+
interface ScrollDividerTarget {
|
|
1048
|
+
/** The `id` of the scrolling element. */
|
|
1049
|
+
scroller: string;
|
|
1050
|
+
/** Chrome above the scroller: shows its bottom divider once scrolled down. */
|
|
1051
|
+
top?: string;
|
|
1052
|
+
/**
|
|
1053
|
+
* Chrome right of the scroller: shows its left divider while content is
|
|
1054
|
+
* hidden beyond the scroller's right edge (never when nothing overflows).
|
|
1055
|
+
*/
|
|
1056
|
+
right?: string;
|
|
1057
|
+
/**
|
|
1058
|
+
* Chrome below the scroller: shows its top divider while content is hidden
|
|
1059
|
+
* beyond the scroller's bottom edge (never when nothing overflows).
|
|
1060
|
+
*/
|
|
1061
|
+
bottom?: string;
|
|
1062
|
+
/** Chrome left of the scroller: shows its right divider once scrolled right. */
|
|
1063
|
+
left?: string;
|
|
1064
|
+
}
|
|
1065
|
+
interface WireScrollDividersOptions {
|
|
1066
|
+
/**
|
|
1067
|
+
* App-owned scroll arrangements to pair beyond the ones found by structure
|
|
1068
|
+
* (every `Pane`'s header and footer around its content, every `NavStack`'s
|
|
1069
|
+
* and `TabScaffold`'s chrome around its active region, and every `TabBar`
|
|
1070
|
+
* strip).
|
|
1071
|
+
*/
|
|
1072
|
+
targets?: readonly ScrollDividerTarget[];
|
|
1073
|
+
}
|
|
1074
|
+
/**
|
|
1075
|
+
* Wire scroll dividers below `root`: a divider between pinned chrome and the
|
|
1076
|
+
* content that scrolls beside it shows only while content is scrolled away
|
|
1077
|
+
* from that edge. Near edges (top, left) hide at the scroll start; far edges
|
|
1078
|
+
* (bottom, right) hide at the scroll end and whenever nothing overflows.
|
|
1079
|
+
*
|
|
1080
|
+
* The wiring only reports scroll state; each component draws its own divider
|
|
1081
|
+
* from it. It writes `data-scroll-overflow` (the edges with hidden content, in
|
|
1082
|
+
* canonical `t`/`r`/`b`/`l` order) on each scroller, and `data-scroll-divider`
|
|
1083
|
+
* (the sides to draw) on each paired chrome element:
|
|
1084
|
+
*
|
|
1085
|
+
* - every `Pane` with a header or footer: its header shows a bottom divider and
|
|
1086
|
+
* its footer a top divider (drawn by the Pane, per its `chromeDividers`);
|
|
1087
|
+
* - every `NavStack`'s top chrome and bottom toolbar around its active view,
|
|
1088
|
+
* and every `TabScaffold`'s bar under its active scene: the chrome shows a
|
|
1089
|
+
* bottom (top chrome) or top (bottom toolbar, bar) divider. The scroller is
|
|
1090
|
+
* whichever element actually scrolls there: the view or scene itself, or,
|
|
1091
|
+
* through a sole child with no chrome of its own on that edge, a `Pane`'s
|
|
1092
|
+
* content or a nested `NavStack` / `TabScaffold` region (a Pane's own header
|
|
1093
|
+
* or footer draws that boundary instead);
|
|
1094
|
+
* - every `TabBar` strip: the bar draws a divider on each side of the strip
|
|
1095
|
+
* whose tabs are scrolled out of view;
|
|
1096
|
+
* - each app-owned `targets` pairing: a `Toolbar` or `List` named as chrome
|
|
1097
|
+
* draws the divider on its facing side.
|
|
1098
|
+
*
|
|
1099
|
+
* Structure is re-read after every DOM change below root (a re-render that
|
|
1100
|
+
* drops the attributes gets them back before paint), scroll is tracked with
|
|
1101
|
+
* one capturing listener, and size changes of each scroller and its children
|
|
1102
|
+
* with a `ResizeObserver`. Returns a disposer that removes every attribute it
|
|
1103
|
+
* wrote. See `docs/23-app-layouts.md` §3.7.
|
|
1104
|
+
*/
|
|
1105
|
+
declare function wireScrollDividers(root: HTMLElement | Document, { targets }?: WireScrollDividersOptions): () => void;
|
|
1106
|
+
|
|
1107
|
+
export { type ScrollDividerTarget, type WireScrollDividersOptions, wireScrollDividers };
|
|
1108
|
+
```
|
|
1109
|
+
|
|
1021
1110
|
## `@kerfjs/ui/nav-stack`
|
|
1022
1111
|
|
|
1023
1112
|
```ts
|
|
@@ -1082,6 +1171,18 @@ interface NavStackProps {
|
|
|
1082
1171
|
hideToolbar?: boolean;
|
|
1083
1172
|
/** Optional persistent bottom toolbar used when the active view does not provide one. */
|
|
1084
1173
|
bottomToolbar?: KerfUiContent;
|
|
1174
|
+
/**
|
|
1175
|
+
* The line under the top chrome and over the bottom toolbar, where they
|
|
1176
|
+
* meet the active view. `scroll` (default) shows the chrome's line only
|
|
1177
|
+
* while the view's content is scrolled beneath it, and the bottom
|
|
1178
|
+
* toolbar's only while more content lies below — never when the content
|
|
1179
|
+
* fits — once `wireScrollDividers` (`@kerfjs/ui/wire-scroll-dividers`) is
|
|
1180
|
+
* wired above the stack; unwired, neither shows. `always` shows both
|
|
1181
|
+
* without the wiring; `none` neither, even when wired. The line is drawn
|
|
1182
|
+
* inside the chrome, so no state moves the chrome or the content. A
|
|
1183
|
+
* `toolbarConfig.dividerSides` edge is the Toolbar's own and is unaffected.
|
|
1184
|
+
*/
|
|
1185
|
+
chromeDividers?: 'scroll' | 'always' | 'none';
|
|
1085
1186
|
className?: string;
|
|
1086
1187
|
/** Native named-slot assignment when composed inside a web component. */
|
|
1087
1188
|
slot?: string;
|
|
@@ -1094,7 +1195,7 @@ interface NavStackProps {
|
|
|
1094
1195
|
* content fills the zones, and `toolbarConfig` configures it. A single-pane
|
|
1095
1196
|
* layout is a `NavStack` with one entry. See `docs/23-app-layouts.md` §3.1.
|
|
1096
1197
|
*/
|
|
1097
|
-
declare function NavStack({ id, label, views, backLabel, backIcon, backText, toolbarConfig, hideToolbar, bottomToolbar, className, slot, }: NavStackProps): kerfjs.SafeHtml;
|
|
1198
|
+
declare function NavStack({ id, label, views, backLabel, backIcon, backText, toolbarConfig, hideToolbar, bottomToolbar, chromeDividers, className, slot, }: NavStackProps): kerfjs.SafeHtml;
|
|
1098
1199
|
|
|
1099
1200
|
export { NavStack, type NavStackProps, type NavStackToolbarConfig, type NavStackView };
|
|
1100
1201
|
```
|
|
@@ -1150,10 +1251,10 @@ interface SplitViewResizable extends Pick<ResizableRegionProps, 'separator' | 'h
|
|
|
1150
1251
|
type SplitViewCompactViewToolbars = Pick<NavStackView, 'leading' | 'center' | 'toolbar' | 'bottomToolbar'>;
|
|
1151
1252
|
/**
|
|
1152
1253
|
* The compact `NavStack`'s configuration: its toolbar configuration, back
|
|
1153
|
-
* control,
|
|
1154
|
-
* `detail` give each view its own toolbar groups.
|
|
1254
|
+
* control, persistent bottom toolbar, and chrome dividers forward to the
|
|
1255
|
+
* stack, and `list` / `detail` give each view its own toolbar groups.
|
|
1155
1256
|
*/
|
|
1156
|
-
interface SplitViewCompactStack extends Pick<NavStackProps, 'toolbarConfig' | 'backIcon' | 'backText' | 'hideToolbar' | 'bottomToolbar'> {
|
|
1257
|
+
interface SplitViewCompactStack extends Pick<NavStackProps, 'toolbarConfig' | 'backIcon' | 'backText' | 'hideToolbar' | 'bottomToolbar' | 'chromeDividers'> {
|
|
1157
1258
|
/** Toolbar content for the list (root) view. */
|
|
1158
1259
|
list?: SplitViewCompactViewToolbars;
|
|
1159
1260
|
/** Toolbar content for the pushed detail view. */
|
|
@@ -1226,9 +1327,16 @@ type PaneRootAttributes = Readonly<Record<`data-${string}`, string | undefined>
|
|
|
1226
1327
|
'data-safe-area-inline-start'?: never;
|
|
1227
1328
|
'data-safe-area-inline-end'?: never;
|
|
1228
1329
|
'data-chrome-placement'?: never;
|
|
1330
|
+
'data-chrome-dividers'?: never;
|
|
1229
1331
|
}>;
|
|
1230
1332
|
/** How a Pane's header and footer relate to its scrolling content. */
|
|
1231
1333
|
type PaneChromePlacement = 'fixed' | 'auto';
|
|
1334
|
+
/**
|
|
1335
|
+
* When a Pane draws the divider between its pinned header or footer and its
|
|
1336
|
+
* scrolling content: `scroll` while content is scrolled away beneath that
|
|
1337
|
+
* chrome, as `wireScrollDividers` reports; `always`; or `none`.
|
|
1338
|
+
*/
|
|
1339
|
+
type PaneChromeDividers = 'scroll' | 'always' | 'none';
|
|
1232
1340
|
interface PaneProps {
|
|
1233
1341
|
/** Optional fixed chrome above the scrolling content, arranged vertically. */
|
|
1234
1342
|
header?: KerfUiContent;
|
|
@@ -1244,6 +1352,16 @@ interface PaneProps {
|
|
|
1244
1352
|
* squeeze the content to nothing.
|
|
1245
1353
|
*/
|
|
1246
1354
|
chromePlacement?: PaneChromePlacement;
|
|
1355
|
+
/**
|
|
1356
|
+
* The divider under the header and over the footer, where they meet the
|
|
1357
|
+
* scrolling content. `scroll` (default) shows the header's divider only
|
|
1358
|
+
* while the content is scrolled down, and the footer's only while more
|
|
1359
|
+
* content lies below — never when the content fits — once
|
|
1360
|
+
* `wireScrollDividers` (`@kerfjs/ui/wire-scroll-dividers`) is wired above
|
|
1361
|
+
* the pane; unwired, neither shows. `always` shows both; `none` neither.
|
|
1362
|
+
* The line is drawn inside the chrome, so no state moves the content.
|
|
1363
|
+
*/
|
|
1364
|
+
chromeDividers?: PaneChromeDividers;
|
|
1247
1365
|
/** Root semantics. Defaults to `div`. */
|
|
1248
1366
|
element?: PaneElement;
|
|
1249
1367
|
/** Scrolling content semantics. Defaults to `div`. */
|
|
@@ -1278,16 +1396,16 @@ interface PaneProps {
|
|
|
1278
1396
|
* or a CollapsiblePanel) forwards, so the app configures that pane instead of
|
|
1279
1397
|
* styling it. An omitted or `undefined` field keeps the composite's default.
|
|
1280
1398
|
*/
|
|
1281
|
-
type PaneConfig = Pick<PaneProps, 'contentElement' | 'contentLabel' | 'separators' | 'safeAreaEdges'>;
|
|
1399
|
+
type PaneConfig = Pick<PaneProps, 'contentElement' | 'contentLabel' | 'separators' | 'safeAreaEdges' | 'chromeDividers'>;
|
|
1282
1400
|
/**
|
|
1283
1401
|
* An unpadded application column with optional fixed header/footer slots and one
|
|
1284
1402
|
* scrolling vertical content owner. Separator lines are independently opt-in on
|
|
1285
1403
|
* each logical edge, so the same component works as a sidebar, main area,
|
|
1286
1404
|
* inspector, or dialog column.
|
|
1287
1405
|
*/
|
|
1288
|
-
declare function Pane({ header, children, footer, chromePlacement, element, contentElement, separators, safeAreaEdges, id, label, contentLabel, className, headerClassName, contentClassName, footerClassName, rootAttributes, slot, }: PaneProps): kerfjs.SafeHtml;
|
|
1406
|
+
declare function Pane({ header, children, footer, chromePlacement, chromeDividers, element, contentElement, separators, safeAreaEdges, id, label, contentLabel, className, headerClassName, contentClassName, footerClassName, rootAttributes, slot, }: PaneProps): kerfjs.SafeHtml;
|
|
1289
1407
|
|
|
1290
|
-
export { Pane, type PaneChromePlacement, type PaneConfig, type PaneContentElement, type PaneElement, type PaneProps, type PaneSeparatorSide };
|
|
1408
|
+
export { Pane, type PaneChromeDividers, type PaneChromePlacement, type PaneConfig, type PaneContentElement, type PaneElement, type PaneProps, type PaneSeparatorSide };
|
|
1291
1409
|
```
|
|
1292
1410
|
|
|
1293
1411
|
## `@kerfjs/ui/workbench`
|
|
@@ -1298,7 +1416,7 @@ import { ListConfig } from './list.js';
|
|
|
1298
1416
|
import { PaneConfig } from './pane.js';
|
|
1299
1417
|
import { ResizableRegionSeparator, ResizableRegionCollapseMotion, ResizableRegionContentOverflow, ResizableRegionPresentation, ResizableRegionRestorePosition } from './resizable-region.js';
|
|
1300
1418
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
1301
|
-
import { a as PanelToolbar, b as PanelToggle } from './panel-toolbar-
|
|
1419
|
+
import { a as PanelToolbar, b as PanelToggle } from './panel-toolbar-DqwtBxQL.js';
|
|
1302
1420
|
import { ToolbarConfig } from './toolbar.js';
|
|
1303
1421
|
import './css-values.js';
|
|
1304
1422
|
import './flex-alignment-4ms8ZbV8.js';
|
|
@@ -1311,7 +1429,7 @@ type WorkbenchPanelToggle = PanelToggle;
|
|
|
1311
1429
|
/**
|
|
1312
1430
|
* A Workbench panel's top toolbar, composed by the Workbench so its groups can
|
|
1313
1431
|
* follow the panel's open state (see {@link PanelToolbar} for the roles).
|
|
1314
|
-
* A collapsed rail's
|
|
1432
|
+
* A collapsed rail's marked groups and toggle go to the leading edge of
|
|
1315
1433
|
* `mainToolbar` (left rail) or its trailing edge (right rail); a collapsed
|
|
1316
1434
|
* drawer's go to the trailing edge of `mainBottomToolbar`, else to a
|
|
1317
1435
|
* `FloatingToolbar` in the work area's bottom-end corner.
|
|
@@ -1319,9 +1437,9 @@ type WorkbenchPanelToggle = PanelToggle;
|
|
|
1319
1437
|
type WorkbenchPanelToolbar = PanelToolbar;
|
|
1320
1438
|
/**
|
|
1321
1439
|
* The work area's top toolbar; collapsed rails add their groups to it. Its
|
|
1322
|
-
* configuration forwards to its `Toolbar`.
|
|
1323
|
-
*
|
|
1324
|
-
*
|
|
1440
|
+
* configuration forwards to its `Toolbar`. It draws no divider of its own by
|
|
1441
|
+
* default: the work area's `Pane` draws one under its header chrome, wherever
|
|
1442
|
+
* that chrome ends, while `main` is scrolled (`mainPane.chromeDividers`).
|
|
1325
1443
|
*/
|
|
1326
1444
|
interface WorkbenchMainToolbar extends ToolbarConfig {
|
|
1327
1445
|
label: string;
|
|
@@ -1335,9 +1453,9 @@ interface WorkbenchMainToolbar extends ToolbarConfig {
|
|
|
1335
1453
|
}
|
|
1336
1454
|
/**
|
|
1337
1455
|
* The work area's bottom toolbar; a collapsed drawer adds its groups to it.
|
|
1338
|
-
* Its configuration forwards to its `Toolbar`.
|
|
1339
|
-
*
|
|
1340
|
-
* `
|
|
1456
|
+
* Its configuration forwards to its `Toolbar`. It draws no divider of its own
|
|
1457
|
+
* by default: the work area's `Pane` draws one over its footer chrome while
|
|
1458
|
+
* more of `main` lies below (`mainPane.chromeDividers`).
|
|
1341
1459
|
*/
|
|
1342
1460
|
interface WorkbenchMainBottomToolbar extends ToolbarConfig {
|
|
1343
1461
|
label: string;
|
|
@@ -1378,7 +1496,7 @@ interface WorkbenchPanelResizable {
|
|
|
1378
1496
|
interface WorkbenchPanel {
|
|
1379
1497
|
content: KerfUiContent;
|
|
1380
1498
|
/**
|
|
1381
|
-
* The panel's top toolbar, composed by the Workbench: its
|
|
1499
|
+
* The panel's top toolbar, composed by the Workbench: its marked groups
|
|
1382
1500
|
* and standard `toggle` move to the work area's toolbar while the panel is
|
|
1383
1501
|
* collapsed. With it, `content` renders in a `Pane` below the toolbar.
|
|
1384
1502
|
*/
|
|
@@ -1387,7 +1505,7 @@ interface WorkbenchPanel {
|
|
|
1387
1505
|
footer?: KerfUiContent;
|
|
1388
1506
|
/**
|
|
1389
1507
|
* Configuration for a `toolbar` panel's `Pane` (`contentElement`,
|
|
1390
|
-
* `contentLabel`, `separators`, `safeAreaEdges`) — for example
|
|
1508
|
+
* `contentLabel`, `separators`, `safeAreaEdges`, `chromeDividers`) — for example
|
|
1391
1509
|
* `{ contentElement: 'nav', contentLabel: 'Sections' }` for a navigation
|
|
1392
1510
|
* rail. Omitted or `undefined` fields keep the `Pane` defaults. Ignored
|
|
1393
1511
|
* without a `toolbar`, where `content` renders as given.
|
|
@@ -1449,7 +1567,7 @@ interface WorkbenchProps {
|
|
|
1449
1567
|
/** The central work area. */
|
|
1450
1568
|
main: KerfUiContent;
|
|
1451
1569
|
/**
|
|
1452
|
-
* The work area's top toolbar. A collapsed left rail's
|
|
1570
|
+
* The work area's top toolbar. A collapsed left rail's marked groups
|
|
1453
1571
|
* and toggle lead it; a collapsed right rail's trail it. With it, `main`
|
|
1454
1572
|
* renders in a `Pane` below the toolbar.
|
|
1455
1573
|
*/
|
|
@@ -1465,7 +1583,7 @@ interface WorkbenchProps {
|
|
|
1465
1583
|
*/
|
|
1466
1584
|
mainFooter?: KerfUiContent;
|
|
1467
1585
|
/**
|
|
1468
|
-
* The work area's bottom toolbar. A collapsed drawer's
|
|
1586
|
+
* The work area's bottom toolbar. A collapsed drawer's marked groups and
|
|
1469
1587
|
* toggle trail it; without it they float in the work area's corner.
|
|
1470
1588
|
*/
|
|
1471
1589
|
mainBottomToolbar?: WorkbenchMainBottomToolbar;
|
|
@@ -1480,7 +1598,7 @@ interface WorkbenchProps {
|
|
|
1480
1598
|
mainFooterPlacement?: WorkbenchChromePlacement;
|
|
1481
1599
|
/**
|
|
1482
1600
|
* Configuration for the work area's `Pane` (`contentElement`,
|
|
1483
|
-
* `contentLabel`, `separators`, `safeAreaEdges`), which it has whenever it
|
|
1601
|
+
* `contentLabel`, `separators`, `safeAreaEdges`, `chromeDividers`), which it has whenever it
|
|
1484
1602
|
* has a toolbar, `mainHeader`, or `mainFooter`; without that chrome, `main`
|
|
1485
1603
|
* renders as given and this is ignored. Omitted or `undefined` fields keep
|
|
1486
1604
|
* the `Pane` defaults.
|
|
@@ -1489,12 +1607,13 @@ interface WorkbenchProps {
|
|
|
1489
1607
|
/**
|
|
1490
1608
|
* Configuration for the `List` that holds `mainHeader` (`gap`, `hAlign`,
|
|
1491
1609
|
* `vAlign`, `dividerSides`, `textInsets`, `controlInsets`). Omitted or
|
|
1492
|
-
* `undefined` fields keep the defaults
|
|
1610
|
+
* `undefined` fields keep the defaults (no divider: the work area's
|
|
1611
|
+
* `Pane` draws the line under its header chrome).
|
|
1493
1612
|
*/
|
|
1494
1613
|
mainHeaderList?: ListConfig;
|
|
1495
1614
|
/**
|
|
1496
|
-
* The same for the `List` that holds `mainFooter
|
|
1497
|
-
*
|
|
1615
|
+
* The same for the `List` that holds `mainFooter` (no divider by default:
|
|
1616
|
+
* the work area's `Pane` draws the line over its footer chrome).
|
|
1498
1617
|
*/
|
|
1499
1618
|
mainFooterList?: ListConfig;
|
|
1500
1619
|
leftRail?: WorkbenchPanel;
|
|
@@ -1657,8 +1776,8 @@ export { type WireWorkbenchOptions, type WireWorkbenchPanel, type WorkbenchPanel
|
|
|
1657
1776
|
```ts
|
|
1658
1777
|
import { SafeHtml } from 'kerfjs';
|
|
1659
1778
|
import { PaneConfig } from './pane.js';
|
|
1660
|
-
import { P as PanelSide, a as PanelToolbar, b as PanelToggle } from './panel-toolbar-
|
|
1661
|
-
export { c as collapsiblePanelToggleIcon } from './panel-toolbar-
|
|
1779
|
+
import { P as PanelSide, a as PanelToolbar, b as PanelToggle } from './panel-toolbar-DqwtBxQL.js';
|
|
1780
|
+
export { c as collapsiblePanelToggleIcon } from './panel-toolbar-DqwtBxQL.js';
|
|
1662
1781
|
import { ResizableRegionSeparator, ResizableRegionCollapseMotion, ResizableRegionContentOverflow, ResizableRegionPresentation, ResizableRegionRestorePosition } from './resizable-region.js';
|
|
1663
1782
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
1664
1783
|
import './lucide-icon.js';
|
|
@@ -1671,10 +1790,10 @@ type CollapsiblePanelSide = PanelSide;
|
|
|
1671
1790
|
/** The standard toggle a panel toolbar renders (see {@link CollapsiblePanelToolbar}). */
|
|
1672
1791
|
type CollapsiblePanelToolbarToggle = PanelToggle;
|
|
1673
1792
|
/**
|
|
1674
|
-
* A panel's composed top toolbar.
|
|
1675
|
-
*
|
|
1676
|
-
*
|
|
1677
|
-
*
|
|
1793
|
+
* A panel's composed top toolbar. Its groups occupy `leading`, `center`, and
|
|
1794
|
+
* `trailing` while open; groups marked `relocateOnCollapse` and the standard
|
|
1795
|
+
* toggle move to the work-area toolbar through
|
|
1796
|
+
* {@link CollapsiblePanelRelocated} while it is collapsed.
|
|
1678
1797
|
*/
|
|
1679
1798
|
type CollapsiblePanelToolbar = PanelToolbar;
|
|
1680
1799
|
interface CollapsiblePanelToggleProps {
|
|
@@ -1717,14 +1836,14 @@ interface CollapsiblePanelProps {
|
|
|
1717
1836
|
* The panel's top toolbar, composed so its groups follow the panel's open
|
|
1718
1837
|
* state. With it, `children` renders in a `Pane` below the toolbar; render
|
|
1719
1838
|
* {@link CollapsiblePanelRelocated} in the app's work-area toolbar so the
|
|
1720
|
-
*
|
|
1839
|
+
* marked groups and toggle stay reachable while the panel is collapsed.
|
|
1721
1840
|
*/
|
|
1722
1841
|
toolbar?: CollapsiblePanelToolbar;
|
|
1723
1842
|
/** Optional bottom toolbar under a `toolbar` panel's content. */
|
|
1724
1843
|
footer?: KerfUiContent;
|
|
1725
1844
|
/**
|
|
1726
1845
|
* Configuration for a `toolbar` panel's `Pane` (`contentElement`,
|
|
1727
|
-
* `contentLabel`, `separators`, `safeAreaEdges`) — for example
|
|
1846
|
+
* `contentLabel`, `separators`, `safeAreaEdges`, `chromeDividers`) — for example
|
|
1728
1847
|
* `{ contentElement: 'nav', contentLabel: 'Sections' }` for a navigation
|
|
1729
1848
|
* rail. Omitted or `undefined` fields keep the `Pane` defaults. Ignored
|
|
1730
1849
|
* without a `toolbar`, where `children` renders as given.
|
|
@@ -1766,7 +1885,7 @@ interface CollapsiblePanelRelocatedProps {
|
|
|
1766
1885
|
toolbar: CollapsiblePanelToolbar;
|
|
1767
1886
|
}
|
|
1768
1887
|
/**
|
|
1769
|
-
* A collapsed {@link CollapsiblePanel}'s
|
|
1888
|
+
* A collapsed {@link CollapsiblePanel}'s marked groups and standard
|
|
1770
1889
|
* toggle, for the app's work-area toolbar — nothing while the panel is open.
|
|
1771
1890
|
* Put it first in the leading zone for a left rail, last in the trailing zone
|
|
1772
1891
|
* for a right rail, and last in a bottom toolbar (or a `FloatingToolbar`
|
|
@@ -1901,6 +2020,16 @@ interface TabScaffoldProps<Id extends string = string> {
|
|
|
1901
2020
|
tabs: readonly TabScaffoldTab<Id>[];
|
|
1902
2021
|
/** The controlled active tab id (the app owns selection). */
|
|
1903
2022
|
active: NoInfer<Id>;
|
|
2023
|
+
/**
|
|
2024
|
+
* The line over the tab bar, where it meets the active scene. `scroll`
|
|
2025
|
+
* (default) shows it only while more of the scene's content lies below —
|
|
2026
|
+
* never at the scroll end or when the content fits — once
|
|
2027
|
+
* `wireScrollDividers` (`@kerfjs/ui/wire-scroll-dividers`) is wired above
|
|
2028
|
+
* the scaffold; unwired, it does not show. `always` shows it without the
|
|
2029
|
+
* wiring; `none` never, even when wired. The line is the bar's own 1px top
|
|
2030
|
+
* border, so no state moves the bar or a tab.
|
|
2031
|
+
*/
|
|
2032
|
+
chromeDividers?: 'scroll' | 'always' | 'none';
|
|
1904
2033
|
className?: string;
|
|
1905
2034
|
/** Native named-slot assignment when composed inside a web component. */
|
|
1906
2035
|
slot?: string;
|
|
@@ -1913,7 +2042,7 @@ interface TabScaffoldProps<Id extends string = string> {
|
|
|
1913
2042
|
* On larger classes, promote the tabs to a `Workbench` rail or sidebar instead of
|
|
1914
2043
|
* a bottom bar. See `docs/23-app-layouts.md` §3.4.
|
|
1915
2044
|
*/
|
|
1916
|
-
declare function TabScaffold<Id extends string>({ id, label, tabs, active, className, slot, }: TabScaffoldProps<Id>): SafeHtml;
|
|
2045
|
+
declare function TabScaffold<Id extends string>({ id, label, tabs, active, chromeDividers, className, slot, }: TabScaffoldProps<Id>): SafeHtml;
|
|
1917
2046
|
|
|
1918
2047
|
export { TabScaffold, type TabScaffoldProps, type TabScaffoldTab };
|
|
1919
2048
|
```
|
|
@@ -2079,8 +2208,8 @@ export { DEFAULT_BREAKPOINTS, type DeviceBreakpoints, type DeviceClass, type Dev
|
|
|
2079
2208
|
```ts
|
|
2080
2209
|
import * as kerfjs from 'kerfjs';
|
|
2081
2210
|
import { SafeHtml } from 'kerfjs';
|
|
2082
|
-
import { a as CatalogProps } from './types-
|
|
2083
|
-
export { b as CatalogBrand, c as CatalogEntry, d as CatalogRelated, C as CatalogResource, e as CatalogSecondaryGroup, f as CatalogSection, g as CatalogStageRootAttributes } from './types-
|
|
2211
|
+
import { a as CatalogProps } from './types-BuHELdXR.js';
|
|
2212
|
+
export { b as CatalogBrand, c as CatalogEntry, d as CatalogRelated, C as CatalogResource, e as CatalogSecondaryGroup, f as CatalogSection, g as CatalogStageRootAttributes } from './types-BuHELdXR.js';
|
|
2084
2213
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
2085
2214
|
import './toolbar.js';
|
|
2086
2215
|
import './pane.js';
|
|
@@ -2090,7 +2219,7 @@ import './list.js';
|
|
|
2090
2219
|
import './css-values.js';
|
|
2091
2220
|
import './flex-alignment-4ms8ZbV8.js';
|
|
2092
2221
|
import './resizable-region.js';
|
|
2093
|
-
import './panel-toolbar-
|
|
2222
|
+
import './panel-toolbar-DqwtBxQL.js';
|
|
2094
2223
|
import './lucide-icon.js';
|
|
2095
2224
|
import 'lucide';
|
|
2096
2225
|
|
|
@@ -2172,7 +2301,7 @@ export { Catalog, CatalogExample, type CatalogExampleAlign, type CatalogExampleP
|
|
|
2172
2301
|
## `@kerfjs/ui/catalog-resources`
|
|
2173
2302
|
|
|
2174
2303
|
```ts
|
|
2175
|
-
import { C as CatalogResource } from './types-
|
|
2304
|
+
import { C as CatalogResource } from './types-BuHELdXR.js';
|
|
2176
2305
|
import './semantic-content-BbzjvSu9.js';
|
|
2177
2306
|
import 'kerfjs';
|
|
2178
2307
|
import './toolbar.js';
|
|
@@ -2183,7 +2312,7 @@ import './list.js';
|
|
|
2183
2312
|
import './css-values.js';
|
|
2184
2313
|
import './flex-alignment-4ms8ZbV8.js';
|
|
2185
2314
|
import './resizable-region.js';
|
|
2186
|
-
import './panel-toolbar-
|
|
2315
|
+
import './panel-toolbar-DqwtBxQL.js';
|
|
2187
2316
|
import './lucide-icon.js';
|
|
2188
2317
|
import 'lucide';
|
|
2189
2318
|
|
|
@@ -2298,7 +2427,9 @@ declare function wireCatalogGeometryOverlay(root: HTMLElement): () => void;
|
|
|
2298
2427
|
* item selection (and the related-entry popup menu), the sidebar collapse toggle, and
|
|
2299
2428
|
* the theme toggle. The app owns the `active`/`collapsed`/`theme` signals and updates
|
|
2300
2429
|
* them in the callbacks; optionally mirror the active id into the URL via `urlParam`.
|
|
2301
|
-
*
|
|
2430
|
+
* It also wires the scroll dividers below root (`wireScrollDividers`), so the
|
|
2431
|
+
* catalog's panes and every example in it show their chrome dividers only
|
|
2432
|
+
* while scrolled. Returns a disposer.
|
|
2302
2433
|
*/
|
|
2303
2434
|
declare function wireCatalog(root: HTMLElement, { onSelect, onToggleSidebar, onToggleTheme, onToggleSecondary, urlParam, revealSelection, selectAction, toggleSidebarAction, toggleThemeAction, toggleSecondaryAction, collapsed, sidebarSize, sidebarStorageKey, id: catalogId, }: WireCatalogOptions): () => void;
|
|
2304
2435
|
|