@kerfjs/ui 5.0.0-beta.55 → 5.0.0-beta.57
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 +74 -41
- 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/compile-time-contracts-v1.json +2 -2
- package/ai/component-catalog.json +407 -80
- 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} +302 -61
- 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 +100 -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 +572 -101
- package/ai/skill.md +107 -52
- package/ai/webawesome-jsx-signatures-v1.md +8 -2
- 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/app-tab.js +1 -1
- package/dist/badge.d.ts +35 -7
- package/dist/badge.js +1 -1
- package/dist/browser/catalog.js +25 -0
- package/dist/browser/collapsible-panel.js +7 -0
- package/dist/browser/content-item.js +3 -0
- package/dist/browser/nav-stack.js +8 -0
- package/dist/browser/select.js +1 -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 +12 -1
- package/dist/catalog.d.ts +14 -3
- package/dist/catalog.js +53 -43
- package/dist/catalog.js.map +1 -1
- package/dist/{chunk-WZ2GLEY4.js → chunk-2G2ZJQYK.js} +2 -14
- package/dist/chunk-2G2ZJQYK.js.map +1 -0
- package/dist/{chunk-R754MHXX.js → chunk-553ASUK6.js} +8 -8
- package/dist/chunk-553ASUK6.js.map +1 -0
- package/dist/{chunk-D7GWXIAS.js → chunk-5I7QGQVT.js} +1 -1
- package/dist/chunk-5I7QGQVT.js.map +1 -0
- package/dist/{chunk-RNRUVPJ3.js → chunk-63ZWBGE3.js} +3 -2
- package/dist/chunk-63ZWBGE3.js.map +1 -0
- package/dist/{chunk-44IG7PFV.js → chunk-6CINWX2E.js} +3 -3
- package/dist/{chunk-44IG7PFV.js.map → chunk-6CINWX2E.js.map} +1 -1
- package/dist/{chunk-MTM43SJO.js → chunk-6YFHCLHG.js} +2 -2
- package/dist/chunk-6YFHCLHG.js.map +1 -0
- package/dist/{chunk-C2FAYFDE.js → chunk-AGXQQFKZ.js} +2 -2
- package/dist/{chunk-C2FAYFDE.js.map → chunk-AGXQQFKZ.js.map} +1 -1
- package/dist/{chunk-ATHXW6RP.js → chunk-AHEG27M7.js} +2 -2
- package/dist/{chunk-ATHXW6RP.js.map → chunk-AHEG27M7.js.map} +1 -1
- package/dist/chunk-BFPBS5Y4.js +250 -0
- package/dist/chunk-BFPBS5Y4.js.map +1 -0
- package/dist/{chunk-5OLVUEND.js → chunk-DG6G5EPF.js} +4 -6
- package/dist/chunk-DG6G5EPF.js.map +1 -0
- package/dist/{chunk-LZXQVUGN.js → chunk-EVYKTVBQ.js} +5 -14
- package/dist/chunk-EVYKTVBQ.js.map +1 -0
- package/dist/{chunk-7GUQYHKA.js → chunk-EZVNC4J6.js} +7 -1
- package/dist/chunk-EZVNC4J6.js.map +1 -0
- package/dist/{chunk-RNZAKSME.js → chunk-F4QMLOXJ.js} +5 -4
- package/dist/chunk-F4QMLOXJ.js.map +1 -0
- package/dist/{chunk-EAX2GSS4.js → chunk-G2RKFVRB.js} +54 -20
- package/dist/chunk-G2RKFVRB.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-HMQ2ZDGG.js → chunk-KROD7KZK.js} +3 -2
- package/dist/chunk-KROD7KZK.js.map +1 -0
- package/dist/{chunk-5NDQABWK.js → chunk-M7QV3IHH.js} +3 -1
- package/dist/chunk-M7QV3IHH.js.map +1 -0
- package/dist/chunk-MA73TA6D.js +42 -0
- package/dist/chunk-MA73TA6D.js.map +1 -0
- package/dist/{chunk-ZMBU522F.js → chunk-MEY33VWB.js} +2 -2
- package/dist/{chunk-ZMBU522F.js.map → chunk-MEY33VWB.js.map} +1 -1
- package/dist/chunk-MP2GDBQZ.js +50 -0
- package/dist/chunk-MP2GDBQZ.js.map +1 -0
- package/dist/{chunk-3NBL3OUQ.js → chunk-NAPE7WUS.js} +2 -2
- package/dist/chunk-NAPE7WUS.js.map +1 -0
- package/dist/{chunk-BSKEH3UC.js → chunk-NBYTIVHS.js} +2 -2
- package/dist/{chunk-BSKEH3UC.js.map → chunk-NBYTIVHS.js.map} +1 -1
- package/dist/{chunk-T22EM4ET.js → chunk-OUK6QRDR.js} +71 -31
- package/dist/chunk-OUK6QRDR.js.map +1 -0
- package/dist/chunk-PWXNJS2B.js +115 -0
- package/dist/chunk-PWXNJS2B.js.map +1 -0
- package/dist/{chunk-GUIHMIT2.js → chunk-QOWG4ZCL.js} +5 -4
- package/dist/chunk-QOWG4ZCL.js.map +1 -0
- package/dist/{chunk-5I22LMCV.js → chunk-VZOFZPSO.js} +2 -2
- package/dist/chunk-VZOFZPSO.js.map +1 -0
- package/dist/{chunk-4BIMLITI.js → chunk-WLG6SSNT.js} +5 -3
- package/dist/chunk-WLG6SSNT.js.map +1 -0
- package/dist/{chunk-NE5JAOQS.js → chunk-WOUF7YXM.js} +3 -3
- package/dist/{chunk-NE5JAOQS.js.map → chunk-WOUF7YXM.js.map} +1 -1
- package/dist/{chunk-N7FHFNT6.js → chunk-XCO6YCYM.js} +34 -5
- package/dist/chunk-XCO6YCYM.js.map +1 -0
- package/dist/{chunk-TZ5IHWB2.js → chunk-XDKAYSVD.js} +5 -3
- package/dist/chunk-XDKAYSVD.js.map +1 -0
- package/dist/collapsible-panel.d.ts +14 -3
- package/dist/collapsible-panel.js +13 -16
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/content-item.d.ts +46 -0
- package/dist/content-item.js +4 -0
- package/dist/content-item.js.map +1 -0
- package/dist/css-values.d.ts +5 -11
- package/dist/css-values.js +1 -1
- package/dist/disclosure-arrow.d.ts +4 -1
- package/dist/disclosure-arrow.js +1 -1
- package/dist/floating-toolbar.d.ts +17 -6
- package/dist/floating-toolbar.js +1 -1
- package/dist/grid.js +1 -1
- package/dist/help-tags-register.d.ts +13 -0
- package/dist/help-tags-register.js +9 -0
- package/dist/help-tags-register.js.map +1 -0
- package/dist/index.d.ts +7 -5
- package/dist/index.js +29 -26
- package/dist/list-action-row.js +2 -1
- package/dist/list-header.d.ts +14 -1
- package/dist/list-header.js +1 -1
- package/dist/list-inset-control.d.ts +1 -1
- package/dist/list-inset-control.js +1 -1
- package/dist/list-inset-text.d.ts +3 -10
- package/dist/list-inset-text.js +1 -1
- package/dist/list-item.js +2 -1
- package/dist/list.d.ts +10 -3
- package/dist/list.js +1 -1
- package/dist/nav-stack.d.ts +50 -5
- package/dist/nav-stack.js +4 -1
- package/dist/pane.d.ts +37 -2
- package/dist/pane.js +1 -1
- package/dist/{panel-toolbar-BFQxFITu.d.ts → panel-toolbar-BN4x0rth.d.ts} +13 -1
- package/dist/popup-menu-register.js +3 -2
- package/dist/popup-menu-register.js.map +1 -1
- package/dist/popup-menu.js +1 -1
- package/dist/row.d.ts +1 -1
- package/dist/row.js +1 -1
- package/dist/select-register.js +70 -3
- package/dist/select-register.js.map +1 -1
- package/dist/select.d.ts +46 -8
- package/dist/select.js +2 -1
- package/dist/{divider-sides-BzB6rphT.d.ts → sides-BPSWde0A.d.ts} +1 -3
- package/dist/skeleton.js +1 -1
- package/dist/spacer.js +1 -1
- package/dist/split-view.d.ts +31 -3
- package/dist/split-view.js +34 -5
- 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 +32 -11
- package/dist/styles/catalog/components/catalog-example.css +1 -1
- package/dist/styles/catalog/components/catalog-stage.css +1 -1
- package/dist/styles/collapsible-panel.css +199 -42
- package/dist/styles/content-item.css +30 -0
- package/dist/styles/floating-toolbar.css +26 -2
- package/dist/styles/foundation.css +28 -19
- package/dist/styles/layout.css +1 -21
- package/dist/styles/list-action-row.css +13 -1
- package/dist/styles/list-header.css +0 -12
- package/dist/styles/list-inset-text.css +1 -2
- package/dist/styles/list-item.css +14 -1
- package/dist/styles/list.css +5 -5
- package/dist/styles/nav-stack.css +63 -71
- package/dist/styles/pane.css +83 -1
- package/dist/styles/popup-menu.css +229 -0
- package/dist/styles/resizable-region.css +70 -15
- package/dist/styles/select.css +60 -19
- package/dist/styles/skeleton.css +30 -3
- package/dist/styles/split-view.css +31 -32
- 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 +60 -14
- package/dist/styles/text.css +17 -1
- package/dist/styles/token-search-field.css +4 -4
- package/dist/styles/toolbar-control-group.css +143 -69
- package/dist/styles/toolbar-text.css +21 -0
- package/dist/styles/toolbar.css +22 -37
- package/dist/styles/value-table.css +19 -2
- package/dist/styles/webawesome.css +3 -1
- package/dist/styles/workbench.css +145 -42
- package/dist/tab-scaffold.d.ts +46 -2
- package/dist/tab-scaffold.js +52 -16
- package/dist/tab-scaffold.js.map +1 -1
- package/dist/token-search-field.d.ts +4 -2
- package/dist/token-search-field.js +1 -1
- package/dist/toolbar-text.d.ts +7 -1
- package/dist/toolbar-text.js +1 -1
- package/dist/toolbar.d.ts +20 -5
- package/dist/toolbar.js +1 -1
- package/dist/{types-D6vzj-VT.d.ts → types-BuHELdXR.d.ts} +39 -6
- package/dist/value-table.js +1 -1
- package/dist/webawesome.d.ts +7 -1
- package/dist/wire-catalog.d.ts +15 -2
- package/dist/wire-catalog.js +12 -2
- 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/wire-token-search-fields.js +1 -1
- package/dist/workbench.d.ts +60 -22
- package/dist/workbench.js +1 -1
- package/docs/accessibility.md +116 -7
- package/docs/app-layouts.md +18 -8
- package/docs/catalog.md +26 -7
- package/docs/collapsible-panel.md +32 -9
- package/docs/component-contract.md +182 -30
- package/docs/component-selection.md +59 -46
- package/docs/design/templates/empty-state/with-action-dark.svg +1 -1
- package/docs/design/templates/empty-state/with-action.svg +1 -1
- package/docs/design/templates/empty-state-dark.svg +1 -1
- package/docs/design/templates/empty-state.svg +1 -1
- package/docs/design/templates/list/compact-dark.svg +1 -1
- package/docs/design/templates/list/compact.svg +1 -1
- package/docs/design/templates/list/stack-dark.svg +1 -1
- package/docs/design/templates/list/stack.svg +1 -1
- package/docs/design/templates/list-action-row/default-dark.svg +1 -1
- package/docs/design/templates/list-action-row/default.svg +1 -1
- package/docs/design/templates/list-action-row/selected-dark.svg +1 -1
- package/docs/design/templates/list-action-row/selected.svg +1 -1
- package/docs/design/templates/list-action-row-dark.svg +1 -1
- package/docs/design/templates/list-action-row.svg +1 -1
- package/docs/design/templates/list-dark.svg +1 -1
- package/docs/design/templates/list-item/default-dark.svg +1 -1
- package/docs/design/templates/list-item/default.svg +1 -1
- package/docs/design/templates/list-item/selected-dark.svg +1 -1
- package/docs/design/templates/list-item/selected.svg +1 -1
- package/docs/design/templates/list-item/trailing-dark.svg +1 -1
- package/docs/design/templates/list-item/trailing.svg +1 -1
- package/docs/design/templates/list-item-dark.svg +1 -1
- package/docs/design/templates/list-item.svg +1 -1
- package/docs/design/templates/list.svg +1 -1
- 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/templates/value-table/details-dark.svg +1 -1
- package/docs/design/templates/value-table/details.svg +1 -1
- package/docs/design/templates/value-table-dark.svg +1 -1
- package/docs/design/templates/value-table.svg +1 -1
- package/docs/design-philosophy.md +31 -4
- package/docs/examples/application-ui-profile.json +4 -4
- package/docs/examples/command-palette-adapter.tsx +3 -2
- package/docs/examples/{component-catalog-extension-v2.json → component-composition-extension.json} +3 -3
- package/docs/layout.md +148 -29
- package/docs/nav-stack.md +77 -3
- package/docs/recipes.md +4 -3
- package/docs/split-view.md +54 -5
- package/docs/tab-scaffold.md +73 -2
- package/docs/type-contracts.md +21 -20
- package/docs/ui-analyzer.md +99 -5
- package/docs/ui-doctor.md +10 -0
- package/docs/ux-demo.md +2 -2
- package/docs/webawesome-theme.md +1 -2
- package/docs/workbench.md +57 -11
- package/doctor/index.mjs +6 -1
- package/llms.txt +117 -24
- package/package.json +29 -6
- package/ux-demo/recipes/collapsible-sidebar.tsx +3 -3
- 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/navigation-sidebar.tsx +3 -2
- package/ux-demo/recipes/navigation-stack.tsx +3 -2
- 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-3NBL3OUQ.js.map +0 -1
- package/dist/chunk-4BIMLITI.js.map +0 -1
- package/dist/chunk-5I22LMCV.js.map +0 -1
- package/dist/chunk-5NDQABWK.js.map +0 -1
- package/dist/chunk-5OLVUEND.js.map +0 -1
- package/dist/chunk-7GUQYHKA.js.map +0 -1
- package/dist/chunk-D7GWXIAS.js.map +0 -1
- package/dist/chunk-DQA5FMOX.js +0 -85
- package/dist/chunk-DQA5FMOX.js.map +0 -1
- package/dist/chunk-EAX2GSS4.js.map +0 -1
- package/dist/chunk-GUIHMIT2.js.map +0 -1
- package/dist/chunk-HMQ2ZDGG.js.map +0 -1
- package/dist/chunk-LZXQVUGN.js.map +0 -1
- package/dist/chunk-MTM43SJO.js.map +0 -1
- package/dist/chunk-N7FHFNT6.js.map +0 -1
- package/dist/chunk-R754MHXX.js.map +0 -1
- package/dist/chunk-RNRUVPJ3.js.map +0 -1
- package/dist/chunk-RNZAKSME.js.map +0 -1
- package/dist/chunk-T22EM4ET.js.map +0 -1
- package/dist/chunk-TZ5IHWB2.js.map +0 -1
- package/dist/chunk-WZ2GLEY4.js.map +0 -1
- package/dist/chunk-XD7DWYXG.js +0 -34
- package/dist/chunk-XD7DWYXG.js.map +0 -1
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selector parsing shared by the package stylesheet ownership check
|
|
3
|
+
* (`scripts/lib/css-ownership.mjs`, `npm run check:css-ownership`) and the
|
|
4
|
+
* downstream component-ownership diagnostics in `kerf-ui-analyze`
|
|
5
|
+
* (`component-ownership.mjs`). Pure string work over one selector list: no
|
|
6
|
+
* PostCSS, no filesystem. One copy means the package rule and the consumer
|
|
7
|
+
* rule agree on which compound a selector styles.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export function ownsClass(rootClass, candidate) {
|
|
11
|
+
return (
|
|
12
|
+
candidate === rootClass ||
|
|
13
|
+
candidate.startsWith(`${rootClass}__`) ||
|
|
14
|
+
candidate.startsWith(`${rootClass}--`)
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Split a selector list into its complex selectors, and each complex selector
|
|
20
|
+
* into compounds, ignoring commas and combinators nested inside parentheses,
|
|
21
|
+
* attribute brackets, or quotes. Each compound records the combinator that
|
|
22
|
+
* joins it to the previous one (`''` for the first).
|
|
23
|
+
*/
|
|
24
|
+
export function complexSelectorParts(selectorList) {
|
|
25
|
+
const selectors = [];
|
|
26
|
+
let compounds = [];
|
|
27
|
+
let current = '';
|
|
28
|
+
let combinator = '';
|
|
29
|
+
let pending = '';
|
|
30
|
+
let depth = 0;
|
|
31
|
+
let quote = null;
|
|
32
|
+
const endCompound = () => {
|
|
33
|
+
if (current.trim()) {
|
|
34
|
+
compounds.push({ combinator, compound: current.trim() });
|
|
35
|
+
combinator = '';
|
|
36
|
+
}
|
|
37
|
+
current = '';
|
|
38
|
+
};
|
|
39
|
+
for (const char of selectorList) {
|
|
40
|
+
if (quote) {
|
|
41
|
+
current += char;
|
|
42
|
+
if (char === quote) quote = null;
|
|
43
|
+
} else if (char === '"' || char === "'") {
|
|
44
|
+
quote = char;
|
|
45
|
+
current += char;
|
|
46
|
+
} else if (char === '(' || char === '[') {
|
|
47
|
+
depth += 1;
|
|
48
|
+
current += char;
|
|
49
|
+
} else if (char === ')' || char === ']') {
|
|
50
|
+
depth -= 1;
|
|
51
|
+
current += char;
|
|
52
|
+
} else if (depth === 0 && char === ',') {
|
|
53
|
+
endCompound();
|
|
54
|
+
selectors.push(compounds);
|
|
55
|
+
compounds = [];
|
|
56
|
+
pending = '';
|
|
57
|
+
} else if (depth === 0 && /[\s>+~]/.test(char)) {
|
|
58
|
+
const hadCompound = current.trim() !== '';
|
|
59
|
+
endCompound();
|
|
60
|
+
if (/[>+~]/.test(char)) pending = char;
|
|
61
|
+
else if (!pending && (hadCompound || compounds.length > 0)) pending = ' ';
|
|
62
|
+
} else {
|
|
63
|
+
if (!current && compounds.length > 0) {
|
|
64
|
+
combinator = pending || ' ';
|
|
65
|
+
pending = '';
|
|
66
|
+
}
|
|
67
|
+
current += char;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
endCompound();
|
|
71
|
+
selectors.push(compounds);
|
|
72
|
+
return selectors;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** Complex selectors as arrays of compound strings. */
|
|
76
|
+
export function complexSelectors(selectorList) {
|
|
77
|
+
return complexSelectorParts(selectorList).map((parts) =>
|
|
78
|
+
parts.map(({ compound }) => compound),
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export function kuiClasses(selector) {
|
|
83
|
+
return [...selector.matchAll(/\.((?:kui)-[a-z0-9_-]+)/gi)].map(
|
|
84
|
+
([, name]) => name,
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** Every class name a selector names, in any namespace. */
|
|
89
|
+
export function classNames(selector) {
|
|
90
|
+
return [...selector.matchAll(/\.(-?[_a-zA-Z][_a-zA-Z0-9-]*)/g)].map(
|
|
91
|
+
([, name]) => name,
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export function dataComponents(selector) {
|
|
96
|
+
return [
|
|
97
|
+
...selector.matchAll(
|
|
98
|
+
/\[data-component\s*=\s*["']?([a-z0-9-]+)["']?\s*\]/gi,
|
|
99
|
+
),
|
|
100
|
+
].map(([, name]) => name);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Remove the arguments of every pseudo-class named in `names` from a
|
|
105
|
+
* compound, keeping the empty call.
|
|
106
|
+
*/
|
|
107
|
+
export function withoutPseudoArguments(compound, names) {
|
|
108
|
+
const opener = new RegExp(`^:(?:${names.join('|')})\\(`, 'i');
|
|
109
|
+
let result = '';
|
|
110
|
+
let skipDepth = 0;
|
|
111
|
+
for (let index = 0; index < compound.length; index += 1) {
|
|
112
|
+
if (skipDepth === 0) {
|
|
113
|
+
const match = opener.exec(compound.slice(index));
|
|
114
|
+
if (match) {
|
|
115
|
+
result += match[0];
|
|
116
|
+
skipDepth = 1;
|
|
117
|
+
index += match[0].length - 1;
|
|
118
|
+
} else result += compound[index];
|
|
119
|
+
} else if (compound[index] === '(') skipDepth += 1;
|
|
120
|
+
else if (compound[index] === ')') {
|
|
121
|
+
skipDepth -= 1;
|
|
122
|
+
if (skipDepth === 0) result += ')';
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return result;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Remove the arguments of every `:has()` and `:not()` in a compound. A parent
|
|
130
|
+
* may key its own styles on a composed child's state
|
|
131
|
+
* (`:has(> .kui-select[open])`) or exclude a kerf child it does not own
|
|
132
|
+
* (`wa-dropdown:not(.kui-popup-menu)`): neither styles that child.
|
|
133
|
+
*/
|
|
134
|
+
export function withoutRelationalArguments(compound) {
|
|
135
|
+
return withoutPseudoArguments(compound, ['has', 'not']);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/** The top-level arguments of each `:name(...)` call in a compound. */
|
|
139
|
+
export function pseudoArguments(compound, name) {
|
|
140
|
+
const args = [];
|
|
141
|
+
const opener = new RegExp(`:${name}\\(`, 'gi');
|
|
142
|
+
for (const match of compound.matchAll(opener)) {
|
|
143
|
+
let depth = 1;
|
|
144
|
+
let index = match.index + match[0].length;
|
|
145
|
+
const start = index;
|
|
146
|
+
for (; index < compound.length && depth > 0; index += 1) {
|
|
147
|
+
if (compound[index] === '(') depth += 1;
|
|
148
|
+
else if (compound[index] === ')') depth -= 1;
|
|
149
|
+
}
|
|
150
|
+
args.push(compound.slice(start, index - 1));
|
|
151
|
+
}
|
|
152
|
+
return args;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export function splitTopLevel(list) {
|
|
156
|
+
const parts = [];
|
|
157
|
+
let depth = 0;
|
|
158
|
+
let current = '';
|
|
159
|
+
for (const char of list) {
|
|
160
|
+
if (char === '(' || char === '[') depth += 1;
|
|
161
|
+
else if (char === ')' || char === ']') depth -= 1;
|
|
162
|
+
if (char === ',' && depth === 0) {
|
|
163
|
+
parts.push(current.trim());
|
|
164
|
+
current = '';
|
|
165
|
+
} else current += char;
|
|
166
|
+
}
|
|
167
|
+
if (current.trim()) parts.push(current.trim());
|
|
168
|
+
return parts;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* The element types a subject compound can match: its own type selector and
|
|
173
|
+
* the subject types inside its `:is()` / `:where()` arguments. `null` means the
|
|
174
|
+
* compound places no type constraint (universal).
|
|
175
|
+
*/
|
|
176
|
+
export function subjectTypes(compound) {
|
|
177
|
+
const bare = withoutPseudoArguments(compound, [
|
|
178
|
+
'has',
|
|
179
|
+
'not',
|
|
180
|
+
'is',
|
|
181
|
+
'where',
|
|
182
|
+
'part',
|
|
183
|
+
'nth-child',
|
|
184
|
+
'nth-last-child',
|
|
185
|
+
'nth-of-type',
|
|
186
|
+
'nth-last-of-type',
|
|
187
|
+
]);
|
|
188
|
+
const own = /^([a-z][a-z0-9-]*)/i.exec(bare);
|
|
189
|
+
if (own) return [own[1].toLowerCase()];
|
|
190
|
+
const types = [];
|
|
191
|
+
for (const name of ['is', 'where']) {
|
|
192
|
+
for (const args of pseudoArguments(
|
|
193
|
+
withoutRelationalArguments(compound),
|
|
194
|
+
name,
|
|
195
|
+
)) {
|
|
196
|
+
for (const arg of splitTopLevel(args)) {
|
|
197
|
+
const parts = complexSelectors(arg)[0] ?? [];
|
|
198
|
+
const last = parts.at(-1);
|
|
199
|
+
if (!last) return null;
|
|
200
|
+
const inner = subjectTypes(last);
|
|
201
|
+
if (inner === null) {
|
|
202
|
+
// A class-only argument constrains nothing by type, but it names an
|
|
203
|
+
// element that must carry that class.
|
|
204
|
+
if (kuiClasses(withoutRelationalArguments(last)).length > 0) continue;
|
|
205
|
+
return null;
|
|
206
|
+
}
|
|
207
|
+
types.push(...inner);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return types.length > 0 ? types : null;
|
|
212
|
+
}
|
package/dist/app-tab.js
CHANGED
package/dist/badge.d.ts
CHANGED
|
@@ -3,10 +3,17 @@ import { SafeHtml } from 'kerfjs';
|
|
|
3
3
|
type BadgeTone = 'neutral' | 'brand' | 'pop' | 'success' | 'warning' | 'danger';
|
|
4
4
|
type BadgeAppearance = 'quiet' | 'solid' | 'outline';
|
|
5
5
|
type BadgeShape = 'pill' | 'rounded';
|
|
6
|
+
/** Size of a text badge. A text-free dot is the separate `size: 'dot'` form. */
|
|
6
7
|
type BadgeSize = 'compact' | 'default';
|
|
7
|
-
interface
|
|
8
|
-
children: SafeHtml | string | number;
|
|
8
|
+
interface BadgeCommonProps {
|
|
9
9
|
tone?: BadgeTone;
|
|
10
|
+
className?: string;
|
|
11
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
12
|
+
slot?: string;
|
|
13
|
+
}
|
|
14
|
+
/** A badge that shows a short status, count, or category as visible text. */
|
|
15
|
+
interface BadgeTextProps extends BadgeCommonProps {
|
|
16
|
+
children: SafeHtml | string | number;
|
|
10
17
|
appearance?: BadgeAppearance;
|
|
11
18
|
shape?: BadgeShape;
|
|
12
19
|
size?: BadgeSize;
|
|
@@ -14,11 +21,32 @@ interface BadgeProps {
|
|
|
14
21
|
label?: string;
|
|
15
22
|
/** Hide a repeated visual badge from assistive technology. */
|
|
16
23
|
ariaHidden?: boolean;
|
|
17
|
-
className?: string;
|
|
18
|
-
/** Native named-slot assignment when composed inside a web component. */
|
|
19
|
-
slot?: string;
|
|
20
24
|
}
|
|
25
|
+
/** A labeled dot, announced as an image with its own accessible name. */
|
|
26
|
+
interface BadgeDotLabeled {
|
|
27
|
+
/** Accessible name for the dot, for example `"New activity"`. */
|
|
28
|
+
label: string;
|
|
29
|
+
ariaHidden?: false;
|
|
30
|
+
}
|
|
31
|
+
/** A decorative dot whose meaning the owning component already announces. */
|
|
32
|
+
interface BadgeDotDecorative {
|
|
33
|
+
label?: never;
|
|
34
|
+
ariaHidden: true;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A text-free status dot (the iOS "new content" dot): a small solid circle in
|
|
38
|
+
* the badge's tone. It has no visible text, so it must either carry its own
|
|
39
|
+
* accessible `label` (exposed as an image) or be `ariaHidden` because the
|
|
40
|
+
* surrounding component already folds its meaning into an accessible name.
|
|
41
|
+
*/
|
|
42
|
+
type BadgeDotProps = BadgeCommonProps & {
|
|
43
|
+
size: 'dot';
|
|
44
|
+
children?: never;
|
|
45
|
+
appearance?: never;
|
|
46
|
+
shape?: never;
|
|
47
|
+
} & (BadgeDotLabeled | BadgeDotDecorative);
|
|
48
|
+
type BadgeProps = BadgeTextProps | BadgeDotProps;
|
|
21
49
|
/** Compact, non-interactive metadata whose tone, emphasis, and shape are configured by props. */
|
|
22
|
-
declare function Badge(
|
|
50
|
+
declare function Badge(props: BadgeProps): SafeHtml;
|
|
23
51
|
|
|
24
|
-
export { Badge, type BadgeAppearance, type BadgeProps, type BadgeShape, type BadgeSize, type BadgeTone };
|
|
52
|
+
export { Badge, type BadgeAppearance, type BadgeDotProps, type BadgeProps, type BadgeShape, type BadgeSize, type BadgeTextProps, type BadgeTone };
|
package/dist/badge.js
CHANGED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import '../styles/foundation.css';
|
|
2
|
+
import '../styles/list.css';
|
|
3
|
+
import '../styles/list-inset-text.css';
|
|
4
|
+
import '../styles/lucide-icon.css';
|
|
5
|
+
import '../styles/text.css';
|
|
6
|
+
import '../styles/toolbar-control-group.css';
|
|
7
|
+
import '../styles/skeleton.css';
|
|
8
|
+
import '../styles/toolbar-text.css';
|
|
9
|
+
import '../styles/resizable-region.css';
|
|
10
|
+
import '../styles/floating-toolbar.css';
|
|
11
|
+
import '../styles/pane.css';
|
|
12
|
+
import '../styles/toolbar.css';
|
|
13
|
+
import '../styles/workbench.css';
|
|
14
|
+
import '../styles/popup-menu.css';
|
|
15
|
+
import '../styles/row.css';
|
|
16
|
+
import '../styles/badge.css';
|
|
17
|
+
import '../styles/disclosure-arrow.css';
|
|
18
|
+
import '../styles/list-header.css';
|
|
19
|
+
import '../styles/loading-spinner.css';
|
|
20
|
+
import '../styles/list-item.css';
|
|
21
|
+
import '../styles/catalog/components/catalog-stage.css';
|
|
22
|
+
import '../styles/catalog/components/catalog.css';
|
|
23
|
+
import '../styles/catalog/components/catalog-example.css';
|
|
24
|
+
import '../styles/catalog/components/catalog-example-stack.css';
|
|
25
|
+
export * from '../catalog.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import '../styles/foundation.css';
|
|
2
|
+
import '../styles/lucide-icon.css';
|
|
3
|
+
import '../styles/pane.css';
|
|
4
|
+
import '../styles/toolbar.css';
|
|
5
|
+
import '../styles/toolbar-control-group.css';
|
|
6
|
+
import '../styles/collapsible-panel.css';
|
|
7
|
+
export * from '../collapsible-panel.js';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import '../styles/foundation.css';
|
|
2
|
+
import '../styles/lucide-icon.css';
|
|
3
|
+
import '../styles/toolbar.css';
|
|
4
|
+
import '../styles/toolbar-control-group.css';
|
|
5
|
+
import '../styles/skeleton.css';
|
|
6
|
+
import '../styles/toolbar-text.css';
|
|
7
|
+
import '../styles/nav-stack.css';
|
|
8
|
+
export * from '../nav-stack.js';
|
package/dist/browser/select.js
CHANGED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import '../styles/foundation.css';
|
|
2
|
+
import '../styles/lucide-icon.css';
|
|
3
|
+
import '../styles/toolbar.css';
|
|
4
|
+
import '../styles/toolbar-control-group.css';
|
|
5
|
+
import '../styles/skeleton.css';
|
|
6
|
+
import '../styles/toolbar-text.css';
|
|
7
|
+
import '../styles/nav-stack.css';
|
|
8
|
+
import '../styles/resizable-region.css';
|
|
9
|
+
import '../styles/split-view.css';
|
|
10
|
+
export * from '../split-view.js';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import '../styles/foundation.css';
|
|
2
|
+
import '../styles/resizable-region.css';
|
|
3
|
+
import '../styles/floating-toolbar.css';
|
|
4
|
+
import '../styles/list.css';
|
|
5
|
+
import '../styles/pane.css';
|
|
6
|
+
import '../styles/lucide-icon.css';
|
|
7
|
+
import '../styles/toolbar.css';
|
|
8
|
+
import '../styles/toolbar-control-group.css';
|
|
9
|
+
import '../styles/workbench.css';
|
|
10
|
+
export * from '../workbench.js';
|
|
@@ -1,6 +1,17 @@
|
|
|
1
|
-
import { C as CatalogResource } from './types-
|
|
1
|
+
import { C as CatalogResource } from './types-BuHELdXR.js';
|
|
2
2
|
import './semantic-content-BbzjvSu9.js';
|
|
3
3
|
import 'kerfjs';
|
|
4
|
+
import './toolbar.js';
|
|
5
|
+
import './pane.js';
|
|
6
|
+
import './sides-BPSWde0A.js';
|
|
7
|
+
import './workbench.js';
|
|
8
|
+
import './list.js';
|
|
9
|
+
import './css-values.js';
|
|
10
|
+
import './flex-alignment-4ms8ZbV8.js';
|
|
11
|
+
import './resizable-region.js';
|
|
12
|
+
import './panel-toolbar-BN4x0rth.js';
|
|
13
|
+
import './lucide-icon.js';
|
|
14
|
+
import 'lucide';
|
|
4
15
|
|
|
5
16
|
/**
|
|
6
17
|
* Standard resource labels for a Kerf catalog detail footer. Keep these labels
|
package/dist/catalog.d.ts
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import * as kerfjs from 'kerfjs';
|
|
2
2
|
import { SafeHtml } from 'kerfjs';
|
|
3
|
-
import { a as CatalogProps } from './types-
|
|
4
|
-
export { b as CatalogBrand, c as CatalogEntry, d as CatalogRelated, C as CatalogResource, e as CatalogSecondaryGroup, f as CatalogSection, g as CatalogStageRootAttributes } from './types-
|
|
3
|
+
import { a as CatalogProps } from './types-BuHELdXR.js';
|
|
4
|
+
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';
|
|
5
5
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
6
|
+
import './toolbar.js';
|
|
7
|
+
import './pane.js';
|
|
8
|
+
import './sides-BPSWde0A.js';
|
|
9
|
+
import './workbench.js';
|
|
10
|
+
import './list.js';
|
|
11
|
+
import './css-values.js';
|
|
12
|
+
import './flex-alignment-4ms8ZbV8.js';
|
|
13
|
+
import './resizable-region.js';
|
|
14
|
+
import './panel-toolbar-BN4x0rth.js';
|
|
15
|
+
import './lucide-icon.js';
|
|
16
|
+
import 'lucide';
|
|
6
17
|
|
|
7
18
|
/**
|
|
8
19
|
* Controlled, stateless component-catalog shell: a `Workbench` whose left rail
|
|
@@ -11,7 +22,7 @@ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
|
11
22
|
* standard toggle moves into the entry toolbar while it is collapsed, and on
|
|
12
23
|
* a small screen the sidebar overlays the stage like any Workbench rail.
|
|
13
24
|
*/
|
|
14
|
-
declare function Catalog({ id, brand, sections, active, content, collapsed, theme, headerActions, secondarySections, sidebarFooter, status, geometryOverlay, stageRootAttributes, selectAction, toggleSidebarAction, toggleThemeAction, toggleSecondaryAction, headerPlacement, footerPlacement, className, slot, }: CatalogProps): kerfjs.SafeHtml;
|
|
25
|
+
declare function Catalog({ id, brand, sections, active, content, collapsed, theme, headerActions, secondarySections, sidebarFooter, status, geometryOverlay, stageRootAttributes, selectAction, toggleSidebarAction, toggleThemeAction, toggleSecondaryAction, headerPlacement, footerPlacement, sidebar, mainToolbar, footerToolbar, className, slot, }: CatalogProps): kerfjs.SafeHtml;
|
|
15
26
|
|
|
16
27
|
/** How a specimen aligns its visible edge with its `ListHeader` label. */
|
|
17
28
|
type CatalogExampleAlign = 'glyph' | 'inline-control' | 'none';
|
package/dist/catalog.js
CHANGED
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
import { Workbench } from './chunk-
|
|
1
|
+
import { Workbench } from './chunk-G2RKFVRB.js';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { PopupMenu } from './chunk-WLG6SSNT.js';
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { Row } from './chunk-VZOFZPSO.js';
|
|
6
|
+
import { ListInsetText } from './chunk-DG6G5EPF.js';
|
|
7
|
+
import { ListItem } from './chunk-QOWG4ZCL.js';
|
|
8
|
+
import { List } from './chunk-NAPE7WUS.js';
|
|
7
9
|
|
|
8
|
-
import { ToolbarText } from './chunk-
|
|
9
|
-
import { PopupMenu } from './chunk-4BIMLITI.js';
|
|
10
|
+
import { ToolbarText } from './chunk-XDKAYSVD.js';
|
|
10
11
|
|
|
11
12
|
|
|
12
|
-
|
|
13
|
+
|
|
14
|
+
import { ListHeader } from './chunk-553ASUK6.js';
|
|
13
15
|
import { Text } from './chunk-24PHKUR3.js';
|
|
14
|
-
import { ListInsetText } from './chunk-5OLVUEND.js';
|
|
15
16
|
|
|
16
17
|
|
|
17
18
|
|
|
18
|
-
|
|
19
|
+
|
|
19
20
|
import { ToolbarControlGroup, ToolbarActionLink } from './chunk-ZIYOJFZD.js';
|
|
21
|
+
import { Toolbar } from './chunk-6YFHCLHG.js';
|
|
20
22
|
|
|
23
|
+
import { LucideIcon } from './chunk-4R777DUZ.js';
|
|
21
24
|
import { filterDataAttributes } from './chunk-SRSJO5QE.js';
|
|
22
25
|
|
|
23
|
-
|
|
24
|
-
import { LucideIcon } from './chunk-4R777DUZ.js';
|
|
25
26
|
import { Moon, Sun, Waypoints, ExternalLink } from 'lucide';
|
|
26
27
|
import { jsx, jsxs, Fragment } from 'kerfjs/jsx-runtime';
|
|
27
28
|
|
|
@@ -48,7 +49,8 @@ function CatalogResourceFooter({
|
|
|
48
49
|
resources,
|
|
49
50
|
related,
|
|
50
51
|
status,
|
|
51
|
-
selectAction
|
|
52
|
+
selectAction,
|
|
53
|
+
toolbar
|
|
52
54
|
}) {
|
|
53
55
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
54
56
|
status ? /* @__PURE__ */ jsx(
|
|
@@ -66,9 +68,11 @@ function CatalogResourceFooter({
|
|
|
66
68
|
Toolbar,
|
|
67
69
|
{
|
|
68
70
|
label: `${name} resources`,
|
|
69
|
-
dividerSides:
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
dividerSides: toolbar?.dividerSides,
|
|
72
|
+
centerAlign: toolbar?.centerAlign,
|
|
73
|
+
responsive: toolbar?.responsive ?? "stack",
|
|
74
|
+
responsiveAt: toolbar?.responsiveAt ?? "narrow",
|
|
75
|
+
safeAreaEdges: toolbar?.safeAreaEdges,
|
|
72
76
|
leading: resources.length > 0 ? /* @__PURE__ */ jsx(
|
|
73
77
|
ToolbarControlGroup,
|
|
74
78
|
{
|
|
@@ -264,8 +268,11 @@ function Catalog({
|
|
|
264
268
|
toggleSidebarAction = "catalog-toggle-sidebar",
|
|
265
269
|
toggleThemeAction = "catalog-toggle-theme",
|
|
266
270
|
toggleSecondaryAction = "catalog-toggle-secondary",
|
|
267
|
-
headerPlacement = "
|
|
268
|
-
footerPlacement = "
|
|
271
|
+
headerPlacement = "auto",
|
|
272
|
+
footerPlacement = "auto",
|
|
273
|
+
sidebar = {},
|
|
274
|
+
mainToolbar,
|
|
275
|
+
footerToolbar,
|
|
269
276
|
className = "",
|
|
270
277
|
slot
|
|
271
278
|
}) {
|
|
@@ -288,9 +295,16 @@ function Catalog({
|
|
|
288
295
|
label: catalogName,
|
|
289
296
|
leftRail: {
|
|
290
297
|
label: catalogName,
|
|
291
|
-
size: 288,
|
|
298
|
+
size: sidebar.size ?? 288,
|
|
299
|
+
resizable: sidebar.resizable,
|
|
300
|
+
separator: sidebar.separator,
|
|
301
|
+
collapseMotion: sidebar.collapseMotion,
|
|
302
|
+
presentation: sidebar.presentation,
|
|
303
|
+
responsiveOverlayAt: sidebar.responsiveOverlayAt,
|
|
304
|
+
compactOverlay: sidebar.compactOverlay,
|
|
292
305
|
collapsed,
|
|
293
306
|
toolbar: {
|
|
307
|
+
...sidebar.toolbar,
|
|
294
308
|
label: `${catalogName} header`,
|
|
295
309
|
title: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
296
310
|
brand.logoUrl ? /* @__PURE__ */ jsx(ToolbarControlGroup, { appearance: "borderless", single: true, children: /* @__PURE__ */ jsx("img", { class: "kui-catalog__mark", src: brand.logoUrl, alt: "" }) }) : null,
|
|
@@ -312,9 +326,10 @@ function Catalog({
|
|
|
312
326
|
)
|
|
313
327
|
},
|
|
314
328
|
mainToolbar: {
|
|
329
|
+
...mainToolbar,
|
|
315
330
|
label: `${name} header`,
|
|
316
331
|
// The entry title stays whole; actions wrap below it when narrow.
|
|
317
|
-
responsive: "wrap",
|
|
332
|
+
responsive: mainToolbar?.responsive ?? "wrap",
|
|
318
333
|
title: /* @__PURE__ */ jsx(ToolbarText, { text: name, size: "xlarge", headingLevel: 2 }),
|
|
319
334
|
trailing: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
320
335
|
headerActions,
|
|
@@ -349,34 +364,29 @@ function Catalog({
|
|
|
349
364
|
resources: selected?.resources ?? [],
|
|
350
365
|
related: selected?.related ?? [],
|
|
351
366
|
status,
|
|
352
|
-
selectAction
|
|
367
|
+
selectAction,
|
|
368
|
+
toolbar: footerToolbar
|
|
353
369
|
}
|
|
354
370
|
),
|
|
371
|
+
mainHeader: selected?.description ? /* @__PURE__ */ jsx(
|
|
372
|
+
ListInsetText,
|
|
373
|
+
{
|
|
374
|
+
sides: "trbl",
|
|
375
|
+
rootAttributes: { "data-catalog-description": "" },
|
|
376
|
+
children: /* @__PURE__ */ jsx(Text, { variant: "span", children: selected.description })
|
|
377
|
+
}
|
|
378
|
+
) : null,
|
|
355
379
|
mainHeaderPlacement: headerPlacement,
|
|
356
380
|
mainFooterPlacement: footerPlacement,
|
|
357
|
-
main: (
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
children: /* @__PURE__ */ jsx(Text, { variant: "span", children: selected.description })
|
|
367
|
-
}
|
|
368
|
-
) : null,
|
|
369
|
-
/* @__PURE__ */ jsx(
|
|
370
|
-
CatalogStage,
|
|
371
|
-
{
|
|
372
|
-
name,
|
|
373
|
-
content,
|
|
374
|
-
geometryOverlay,
|
|
375
|
-
rootAttributes: stageRootAttributes
|
|
376
|
-
}
|
|
377
|
-
)
|
|
378
|
-
] })
|
|
379
|
-
)
|
|
381
|
+
main: /* @__PURE__ */ jsx(List, { flex: true, children: /* @__PURE__ */ jsx(
|
|
382
|
+
CatalogStage,
|
|
383
|
+
{
|
|
384
|
+
name,
|
|
385
|
+
content,
|
|
386
|
+
geometryOverlay,
|
|
387
|
+
rootAttributes: stageRootAttributes
|
|
388
|
+
}
|
|
389
|
+
) })
|
|
380
390
|
}
|
|
381
391
|
)
|
|
382
392
|
}
|