@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
package/dist/styles/select.css
CHANGED
|
@@ -23,6 +23,11 @@
|
|
|
23
23
|
text-overflow: ellipsis;
|
|
24
24
|
white-space: nowrap;
|
|
25
25
|
}
|
|
26
|
+
/* A multiple Select summarizes its choices in the display text (installed by
|
|
27
|
+
select/register) instead of drawing a removable tag per choice. */
|
|
28
|
+
.kui-select[multiple]::part(tags) {
|
|
29
|
+
display: none;
|
|
30
|
+
}
|
|
26
31
|
.kui-select[data-size="compact"]::part(combobox) {
|
|
27
32
|
min-height: 2rem;
|
|
28
33
|
}
|
|
@@ -44,10 +49,10 @@
|
|
|
44
49
|
caret wa-button): symmetric 8px inline padding, 12px from the icon to the
|
|
45
50
|
caret's 20px box, the caret glyph size, and the control height, so the icon
|
|
46
51
|
sits left of center to balance the caret. Inside a ToolbarControlGroup the
|
|
47
|
-
trigger takes the
|
|
48
|
-
(`--_kui-toolbar-slot-*`) so it is inset evenly on
|
|
49
|
-
sizes to the trigger (wider than tall), and the
|
|
50
|
-
stays concentric with it. */
|
|
52
|
+
trigger takes the control-slot height, overlap, and radius the group
|
|
53
|
+
provides (`--_kui-toolbar-control-group-slot-*`) so it is inset evenly on
|
|
54
|
+
every side, the group sizes to the trigger (wider than tall), and the
|
|
55
|
+
group-owned focus ring stays concentric with it. */
|
|
51
56
|
.kui-select[data-selected-presentation="icon-only"] {
|
|
52
57
|
--_kui-select-height: 2.75rem;
|
|
53
58
|
width: max-content;
|
|
@@ -56,7 +61,10 @@
|
|
|
56
61
|
--_kui-select-height: 2rem;
|
|
57
62
|
}
|
|
58
63
|
.kui-select[data-selected-presentation="icon-only"]::part(combobox) {
|
|
59
|
-
min-height: var(
|
|
64
|
+
min-height: var(
|
|
65
|
+
--_kui-toolbar-control-group-slot-height,
|
|
66
|
+
var(--_kui-select-height)
|
|
67
|
+
);
|
|
60
68
|
padding-inline: 0.5rem;
|
|
61
69
|
border-radius: var(
|
|
62
70
|
--kui-toolbar-item-radius,
|
|
@@ -67,14 +75,32 @@
|
|
|
67
75
|
sibling controls it keeps the group's gap, end insets, and item radius, as
|
|
68
76
|
they do. */
|
|
69
77
|
.kui-select[data-selected-presentation="icon-only"]:only-child {
|
|
70
|
-
margin-inline: calc(var(--_kui-toolbar-slot-overlap, 0px) * -1);
|
|
78
|
+
margin-inline: calc(var(--_kui-toolbar-control-group-slot-overlap, 0px) * -1);
|
|
71
79
|
}
|
|
72
80
|
.kui-select[data-selected-presentation="icon-only"]:only-child::part(combobox) {
|
|
73
81
|
border-radius: var(
|
|
74
|
-
--_kui-toolbar-slot-radius,
|
|
82
|
+
--_kui-toolbar-control-group-slot-radius,
|
|
75
83
|
var(--kui-layout-rounded-radius, calc(1px + 0.6875rem))
|
|
76
84
|
);
|
|
77
85
|
}
|
|
86
|
+
/* In a ToolbarControlGroup, a Select beside other controls highlights its own
|
|
87
|
+
pill on hover, like its button and dropdown siblings; a lone Select instead
|
|
88
|
+
lifts the whole group (toolbar-control-group.css). */
|
|
89
|
+
.kui-toolbar-control-group:not([data-single="true"])
|
|
90
|
+
> .kui-select:not(:only-child):hover::part(combobox) {
|
|
91
|
+
border-color: var(--kui-toolbar-control-border);
|
|
92
|
+
background: var(--kui-toolbar-control-hover-background);
|
|
93
|
+
}
|
|
94
|
+
/* With the group's per-control rings, a composed Select paints its own ring
|
|
95
|
+
even when it was told the group owns it: nothing else would show focus. It
|
|
96
|
+
matches the sibling controls' ring and offset. While its listbox is open the
|
|
97
|
+
popup shows focus instead, so the trigger ring stays off, as a PopupMenu
|
|
98
|
+
trigger's does. */
|
|
99
|
+
.kui-toolbar-control-group[data-focus-ring="control"]
|
|
100
|
+
> .kui-select:not([open]):focus-within::part(combobox) {
|
|
101
|
+
outline: var(--kui-focus-ring);
|
|
102
|
+
outline-offset: 1px;
|
|
103
|
+
}
|
|
78
104
|
/* The popup-menu wa-button draws the same chevron glyph at 0.875em inside a
|
|
79
105
|
20px box; match its box, spacing, and glyph size rather than the smaller
|
|
80
106
|
form-field disclosure scale. */
|
|
@@ -102,7 +128,21 @@
|
|
|
102
128
|
.kui-select::part(expand-icon) {
|
|
103
129
|
transform: scale(var(--kui-disclosure-icon-scale, 0.5));
|
|
104
130
|
}
|
|
131
|
+
.kui-select::part(expand-icon) {
|
|
132
|
+
transition: var(--_kui-popup-caret-transition);
|
|
133
|
+
}
|
|
134
|
+
.kui-select[open]::part(expand-icon) {
|
|
135
|
+
rotate: var(--_kui-popup-caret-open-rotation);
|
|
136
|
+
}
|
|
137
|
+
/* The open listbox already shows where focus is (its current option), so the
|
|
138
|
+
trigger drops its focus ring while the popup is visible, as a PopupMenu
|
|
139
|
+
trigger does; the ring returns when the popup closes with focus still on
|
|
140
|
+
the control. */
|
|
141
|
+
.kui-select[open]::part(combobox) {
|
|
142
|
+
outline-color: transparent;
|
|
143
|
+
}
|
|
105
144
|
.kui-select::part(listbox) {
|
|
145
|
+
padding: var(--_kui-popup-inset);
|
|
106
146
|
width: max-content;
|
|
107
147
|
min-width: 100%;
|
|
108
148
|
max-width: min(20rem, calc(100vw - 1.25rem));
|
|
@@ -114,28 +154,29 @@
|
|
|
114
154
|
align-items: center;
|
|
115
155
|
}
|
|
116
156
|
.kui-select wa-option {
|
|
117
|
-
--wa-form-control-activated-color: var(--
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
157
|
+
--wa-form-control-activated-color: var(--_kui-popup-row-current-background);
|
|
158
|
+
--current-text-color: var(--_kui-popup-row-current-color);
|
|
159
|
+
padding: var(--_kui-popup-row-padding-block)
|
|
160
|
+
var(--_kui-popup-row-padding-inline-end) var(--_kui-popup-row-padding-block)
|
|
161
|
+
var(--_kui-popup-row-padding-inline-start);
|
|
121
162
|
}
|
|
122
163
|
.kui-select wa-option::part(start) {
|
|
123
164
|
align-self: center;
|
|
124
|
-
margin-inline-end:
|
|
165
|
+
margin-inline-end: var(--_kui-popup-row-icon-gap);
|
|
125
166
|
margin-top: 0;
|
|
126
167
|
}
|
|
127
168
|
.kui-select wa-option::part(label) {
|
|
128
169
|
min-width: 0;
|
|
129
|
-
padding-block:
|
|
130
|
-
line-height:
|
|
170
|
+
padding-block: var(--_kui-popup-row-label-padding-block);
|
|
171
|
+
line-height: var(--_kui-popup-row-label-line-height);
|
|
131
172
|
overflow-wrap: normal;
|
|
132
173
|
word-break: normal;
|
|
133
174
|
white-space: normal;
|
|
134
175
|
}
|
|
135
176
|
.kui-select__icon {
|
|
136
177
|
display: inline-flex;
|
|
137
|
-
width:
|
|
138
|
-
height:
|
|
178
|
+
width: var(--_kui-popup-row-icon-size);
|
|
179
|
+
height: var(--_kui-popup-row-icon-size);
|
|
139
180
|
flex: none;
|
|
140
181
|
}
|
|
141
182
|
.kui-select > .kui-select__icon[slot="start"] {
|
|
@@ -173,10 +214,10 @@
|
|
|
173
214
|
border-block-start: 1px solid var(--kui-color-neutral-border-quiet);
|
|
174
215
|
}
|
|
175
216
|
.kui-select__group-title {
|
|
176
|
-
padding:
|
|
217
|
+
padding: var(--_kui-popup-group-title-padding);
|
|
177
218
|
color: var(--kui-color-neutral-on-quiet);
|
|
178
219
|
font-size: var(--kui-font-2xs);
|
|
179
|
-
font-weight:
|
|
220
|
+
font-weight: var(--_kui-popup-group-title-font-weight);
|
|
180
221
|
letter-spacing: 0.04em;
|
|
181
222
|
text-transform: uppercase;
|
|
182
223
|
}
|
|
@@ -208,7 +249,7 @@
|
|
|
208
249
|
justify-content: space-between;
|
|
209
250
|
gap: 0.5rem;
|
|
210
251
|
padding-inline: var(--kui-layout-item-padding, 0.5rem);
|
|
211
|
-
border: 1px solid var(--kui-color-border);
|
|
252
|
+
border: 1px solid var(--kui-color-neutral-border-normal);
|
|
212
253
|
border-radius: var(--kui-layout-rounded-radius, calc(1px + 0.6875rem));
|
|
213
254
|
background: var(--kui-color-surface);
|
|
214
255
|
}
|
package/dist/styles/skeleton.css
CHANGED
|
@@ -7,9 +7,10 @@
|
|
|
7
7
|
height: 1em;
|
|
8
8
|
border-radius: var(--kui-skeleton-radius);
|
|
9
9
|
/* Deliberately unanimated: a flat, subtle fill that reads as "not yet loaded"
|
|
10
|
-
without drawing the eye or implying progress.
|
|
11
|
-
fill (a solid Badge)
|
|
12
|
-
foreground, since a text-color tint vanishes on a
|
|
10
|
+
without drawing the eye or implying progress. On a host with its own
|
|
11
|
+
solid fill (a solid Badge) the skeleton derives `--_kui-skeleton-fill`
|
|
12
|
+
from the host's foreground, since a text-color tint vanishes on a
|
|
13
|
+
saturated fill. */
|
|
13
14
|
background: var(
|
|
14
15
|
--_kui-skeleton-fill,
|
|
15
16
|
color-mix(in srgb, var(--kui-color-text) 12%, transparent)
|
|
@@ -17,6 +18,19 @@
|
|
|
17
18
|
vertical-align: middle;
|
|
18
19
|
}
|
|
19
20
|
|
|
21
|
+
/* A placeholder's skeleton inside a solid badge: the generic text-color tint is
|
|
22
|
+
nearly invisible on the saturated fill, so derive it from the on-solid
|
|
23
|
+
foreground the badge provides, which contrasts with the fill in every tone
|
|
24
|
+
and color scheme. Quiet and outline badges sit on a pale fill and keep the
|
|
25
|
+
generic tint. */
|
|
26
|
+
.kui-badge[data-appearance="solid"] .kui-skeleton {
|
|
27
|
+
--_kui-skeleton-fill: color-mix(
|
|
28
|
+
in srgb,
|
|
29
|
+
var(--_kui-badge-on-solid) 45%,
|
|
30
|
+
transparent
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
20
34
|
.kui-skeleton[data-block="true"] {
|
|
21
35
|
display: block;
|
|
22
36
|
}
|
|
@@ -63,3 +77,16 @@
|
|
|
63
77
|
background: GrayText;
|
|
64
78
|
}
|
|
65
79
|
}
|
|
80
|
+
|
|
81
|
+
/* A placeholder StateBanner's badge holds this skeleton instead of text. With
|
|
82
|
+
no text, the skeleton's baseline would be synthesized from its bottom edge,
|
|
83
|
+
sitting the badge higher than the live one by a font-dependent amount. A
|
|
84
|
+
zero-width character gives it a text baseline in the badge's own font and
|
|
85
|
+
line height, exactly where the live badge's text baseline falls on every
|
|
86
|
+
platform. */
|
|
87
|
+
.kui-state-banner[data-placeholder="true"]
|
|
88
|
+
.kui-state-banner__copy
|
|
89
|
+
> .kui-badge
|
|
90
|
+
> .kui-skeleton::before {
|
|
91
|
+
content: "\200b";
|
|
92
|
+
}
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
var(--kui-split-view-list-width, 20rem) +
|
|
38
38
|
var(--_kui-split-view-safe-inline-start)
|
|
39
39
|
);
|
|
40
|
-
border-inline-end: 1px solid var(--kui-color-border);
|
|
40
|
+
border-inline-end: 1px solid var(--kui-color-neutral-border-normal);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
.kui-split-view__list[data-resizable="true"] {
|
|
@@ -51,13 +51,6 @@
|
|
|
51
51
|
min-height: 0;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
/* A resizable list keeps its committed size as content width; its region's
|
|
55
|
-
track grows by the unsafe inset it reaches. A collapsed region stays shut. */
|
|
56
|
-
.kui-split-view[data-split-mode="split"]
|
|
57
|
-
> [data-component="resizable-region"]:not([data-collapsed="true"]) {
|
|
58
|
-
--kui-resizable-region-edge-extent: var(--_kui-split-view-safe-inline-start);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
54
|
.kui-split-view__list,
|
|
62
55
|
.kui-split-view__detail {
|
|
63
56
|
--kui-edge-inset-block-start: var(--_kui-split-view-safe-block-start);
|
|
@@ -104,30 +97,26 @@
|
|
|
104
97
|
var(--kui-edge-inset-inline-end);
|
|
105
98
|
}
|
|
106
99
|
|
|
107
|
-
.kui-split-view__list
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
>
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
):only-child
|
|
128
|
-
)
|
|
129
|
-
)
|
|
130
|
-
> * {
|
|
100
|
+
.kui-split-view__list
|
|
101
|
+
> :not(
|
|
102
|
+
:is(
|
|
103
|
+
[data-component="pane"],
|
|
104
|
+
[data-component="nav-stack"],
|
|
105
|
+
[data-component="split-view"],
|
|
106
|
+
[data-component="workbench"],
|
|
107
|
+
[data-component="tab-scaffold"]
|
|
108
|
+
):only-child
|
|
109
|
+
),
|
|
110
|
+
.kui-split-view__detail
|
|
111
|
+
> :not(
|
|
112
|
+
:is(
|
|
113
|
+
[data-component="pane"],
|
|
114
|
+
[data-component="nav-stack"],
|
|
115
|
+
[data-component="split-view"],
|
|
116
|
+
[data-component="workbench"],
|
|
117
|
+
[data-component="tab-scaffold"]
|
|
118
|
+
):only-child
|
|
119
|
+
) {
|
|
131
120
|
--kui-edge-inset-block-start: 0px;
|
|
132
121
|
--kui-edge-inset-block-end: 0px;
|
|
133
122
|
--kui-edge-inset-inline-start: 0px;
|
|
@@ -139,3 +128,13 @@
|
|
|
139
128
|
display: block;
|
|
140
129
|
height: 100%;
|
|
141
130
|
}
|
|
131
|
+
|
|
132
|
+
/* As the only child of a Workbench region (its main area or a panel's
|
|
133
|
+
content, which the Workbench marks with `data-workbench-main` /
|
|
134
|
+
`data-workbench-panel-content`), a SplitView fills the region, so a
|
|
135
|
+
composed toolbar's footer (or the app's own) sits at the region's bottom
|
|
136
|
+
edge rather than under short content. */
|
|
137
|
+
:is([data-workbench-main], [data-workbench-panel-content])
|
|
138
|
+
> [data-component="split-view"]:only-child {
|
|
139
|
+
height: 100%;
|
|
140
|
+
}
|
|
@@ -160,25 +160,6 @@
|
|
|
160
160
|
margin-inline-end: var(--kui-layout-item-gap, 0.5rem);
|
|
161
161
|
font-size: var(--kui-font-xs);
|
|
162
162
|
}
|
|
163
|
-
/* The badge is taller than the title's line. Negative block margins keep it
|
|
164
|
-
out of the line-height calculation, so a wrapped title's lines stay evenly
|
|
165
|
-
spaced whichever line the badge lands on. */
|
|
166
|
-
.kui-state-banner__badge {
|
|
167
|
-
margin-block: -0.5em;
|
|
168
|
-
margin-inline-end: var(--kui-layout-item-gap, 0.5rem);
|
|
169
|
-
vertical-align: baseline;
|
|
170
|
-
}
|
|
171
|
-
/* A placeholder badge holds a skeleton instead of text. With no text, the
|
|
172
|
-
skeleton's baseline would be synthesized from its bottom edge, sitting the
|
|
173
|
-
badge higher than the live one by a font-dependent amount. A zero-width
|
|
174
|
-
character gives it a text baseline in the badge's own font and line
|
|
175
|
-
height, exactly where the live badge's text baseline falls on every
|
|
176
|
-
platform. */
|
|
177
|
-
.kui-state-banner[data-placeholder="true"]
|
|
178
|
-
.kui-state-banner__badge
|
|
179
|
-
> *::before {
|
|
180
|
-
content: "\200b";
|
|
181
|
-
}
|
|
182
163
|
/* The clip lives on an inner span, not on the detail itself. WebKit still
|
|
183
164
|
applies the CSS 2.1 rule that an inline-block whose overflow is not
|
|
184
165
|
`visible` takes its baseline from its bottom margin edge, so a clipped
|
|
@@ -40,12 +40,17 @@
|
|
|
40
40
|
.kui-popup-surface {
|
|
41
41
|
display: inline-flex;
|
|
42
42
|
}
|
|
43
|
-
|
|
43
|
+
/* The surface insets the menu of a raw wa-dropdown it wraps. A PopupMenu
|
|
44
|
+
applies the surface's inset to itself (popup-menu.css). */
|
|
45
|
+
.kui-popup-surface[data-inset="standard"]
|
|
46
|
+
> wa-dropdown:not(.kui-popup-menu)::part(menu) {
|
|
44
47
|
padding: var(--kui-wa-surface-inset, 0.5rem);
|
|
45
48
|
}
|
|
46
|
-
.kui-popup-surface[data-inset="compact"]
|
|
49
|
+
.kui-popup-surface[data-inset="compact"]
|
|
50
|
+
> wa-dropdown:not(.kui-popup-menu)::part(menu) {
|
|
47
51
|
padding: 0.25rem;
|
|
48
52
|
}
|
|
49
|
-
.kui-popup-surface[data-inset="list-zero"]
|
|
53
|
+
.kui-popup-surface[data-inset="list-zero"]
|
|
54
|
+
> wa-dropdown:not(.kui-popup-menu)::part(menu) {
|
|
50
55
|
padding: 0;
|
|
51
56
|
}
|
package/dist/styles/tab-bar.css
CHANGED
|
@@ -38,32 +38,17 @@
|
|
|
38
38
|
--kui-tab-bar-background: var(--kui-color-neutral-fill-quiet);
|
|
39
39
|
--kui-tab-bar-border: var(--kui-color-neutral-border-quiet);
|
|
40
40
|
}
|
|
41
|
-
/* A segmented strip's outer ends follow the pill track
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
track. Only fill allocation carries the last tab to the track's trailing
|
|
46
|
-
end; an intrinsic strip's last tab stops short of it and keeps the segment
|
|
47
|
-
radius, as do the corners between tabs. */
|
|
41
|
+
/* A segmented strip's outer ends follow the pill track: a compact tab is inset
|
|
42
|
+
from the track's ends by the same distance as from its top and bottom, so
|
|
43
|
+
each end is concentric with the track. AppTab rounds its own outer corners
|
|
44
|
+
to match in this context (see app-tab.css); TabBar never styles AppTab. */
|
|
48
45
|
.kui-tab-bar[data-presentation="segmented"]
|
|
49
|
-
.kui-tab-bar__tabs:has(>
|
|
46
|
+
.kui-tab-bar__tabs:has(> .kui-app-tab[data-size="compact"]) {
|
|
50
47
|
padding-inline: calc(
|
|
51
48
|
(var(--kui-toolbar-group-size, calc(2px + 2.625rem)) - 2rem) /
|
|
52
49
|
2 - 1px
|
|
53
50
|
);
|
|
54
51
|
}
|
|
55
|
-
.kui-tab-bar[data-presentation="segmented"]
|
|
56
|
-
.kui-tab-bar__tabs
|
|
57
|
-
> [data-component="app-tab"]:first-child {
|
|
58
|
-
border-start-start-radius: var(--kui-radius-pill);
|
|
59
|
-
border-end-start-radius: var(--kui-radius-pill);
|
|
60
|
-
}
|
|
61
|
-
.kui-tab-bar[data-presentation="segmented"][data-allocation="fill"]
|
|
62
|
-
.kui-tab-bar__tabs
|
|
63
|
-
> [data-component="app-tab"]:last-child {
|
|
64
|
-
border-start-end-radius: var(--kui-radius-pill);
|
|
65
|
-
border-end-end-radius: var(--kui-radius-pill);
|
|
66
|
-
}
|
|
67
52
|
.kui-tab-bar[data-presentation="inspector"] {
|
|
68
53
|
min-height: 2.125rem;
|
|
69
54
|
padding: 0;
|
|
@@ -72,14 +57,6 @@
|
|
|
72
57
|
min-height: 2.125rem;
|
|
73
58
|
border-radius: var(--kui-radius-s);
|
|
74
59
|
}
|
|
75
|
-
.kui-tab-bar[data-allocation="fill"] [data-component="app-tab"] {
|
|
76
|
-
min-width: 0;
|
|
77
|
-
flex: 1 1 0;
|
|
78
|
-
}
|
|
79
|
-
.kui-tab-bar[data-allocation="fill"] [data-component="app-tab"] > [role="tab"] {
|
|
80
|
-
width: 100%;
|
|
81
|
-
justify-content: center;
|
|
82
|
-
}
|
|
83
60
|
.kui-tab-bar[data-trailing-placement="adjacent"] .kui-tab-bar__tabs {
|
|
84
61
|
flex: 0 1 auto;
|
|
85
62
|
}
|
|
@@ -100,3 +77,77 @@
|
|
|
100
77
|
.kui-tab-bar__end {
|
|
101
78
|
margin-inline-start: auto;
|
|
102
79
|
}
|
|
80
|
+
|
|
81
|
+
/* Overflow dividers: a line on each side of the tab strip beyond which tabs
|
|
82
|
+
are scrolled out of view, as `wireScrollDividers` reports through the
|
|
83
|
+
strip's `data-scroll-overflow` (physical sides). A rail strip has no
|
|
84
|
+
visible track, so the bar draws the line with its own pseudo-elements,
|
|
85
|
+
ordered onto the strip's edges: `::before` between the leading zone and the
|
|
86
|
+
strip, `::after` between the strip and the trailing zone. Each is 1px wide
|
|
87
|
+
and gives back its width and one gap through a negative margin, so it
|
|
88
|
+
overlaps the strip's edge and never moves a tab or an action; hidden, it is
|
|
89
|
+
transparent. A segmented or inspector strip already draws a bordered track,
|
|
90
|
+
so its overflowing side takes the divider color on that border instead of
|
|
91
|
+
a straight line across its rounded end. */
|
|
92
|
+
.kui-tab-bar > .kui-tab-bar__leading {
|
|
93
|
+
order: -2;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.kui-tab-bar > :is(.kui-tab-bar__trailing, .kui-tab-bar__end) {
|
|
97
|
+
order: 1;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.kui-tab-bar::before,
|
|
101
|
+
.kui-tab-bar::after {
|
|
102
|
+
content: "";
|
|
103
|
+
position: relative;
|
|
104
|
+
z-index: 1;
|
|
105
|
+
width: 1px;
|
|
106
|
+
background: transparent;
|
|
107
|
+
pointer-events: none;
|
|
108
|
+
align-self: stretch;
|
|
109
|
+
flex: none;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.kui-tab-bar::before {
|
|
113
|
+
order: -1;
|
|
114
|
+
margin-inline-end: calc(-1px - var(--kui-toolbar-gap, 0.5rem));
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.kui-tab-bar::after {
|
|
118
|
+
margin-inline-start: calc(-1px - var(--kui-toolbar-gap, 0.5rem));
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.kui-tab-bar[data-presentation="rail"]:dir(ltr):has(
|
|
122
|
+
> .kui-tab-bar__tabs[data-scroll-overflow*="l"]
|
|
123
|
+
)::before,
|
|
124
|
+
.kui-tab-bar[data-presentation="rail"]:dir(rtl):has(
|
|
125
|
+
> .kui-tab-bar__tabs[data-scroll-overflow*="r"]
|
|
126
|
+
)::before,
|
|
127
|
+
.kui-tab-bar[data-presentation="rail"]:dir(ltr):has(
|
|
128
|
+
> .kui-tab-bar__tabs[data-scroll-overflow*="r"]
|
|
129
|
+
)::after,
|
|
130
|
+
.kui-tab-bar[data-presentation="rail"]:dir(rtl):has(
|
|
131
|
+
> .kui-tab-bar__tabs[data-scroll-overflow*="l"]
|
|
132
|
+
)::after {
|
|
133
|
+
background: var(
|
|
134
|
+
--kui-tab-bar-divider-color,
|
|
135
|
+
var(--kui-color-neutral-border-normal)
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.kui-tab-bar:not([data-presentation="rail"])
|
|
140
|
+
> .kui-tab-bar__tabs[data-scroll-overflow*="l"] {
|
|
141
|
+
border-left-color: var(
|
|
142
|
+
--kui-tab-bar-divider-color,
|
|
143
|
+
var(--kui-color-neutral-border-normal)
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.kui-tab-bar:not([data-presentation="rail"])
|
|
148
|
+
> .kui-tab-bar__tabs[data-scroll-overflow*="r"] {
|
|
149
|
+
border-right-color: var(
|
|
150
|
+
--kui-tab-bar-divider-color,
|
|
151
|
+
var(--kui-color-neutral-border-normal)
|
|
152
|
+
);
|
|
153
|
+
}
|
|
@@ -66,18 +66,16 @@
|
|
|
66
66
|
scroll-padding-block-start: var(--kui-edge-inset-block-start);
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
.kui-tab-scaffold__scene
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
)
|
|
80
|
-
> * {
|
|
69
|
+
.kui-tab-scaffold__scene
|
|
70
|
+
> :not(
|
|
71
|
+
:is(
|
|
72
|
+
[data-component="pane"],
|
|
73
|
+
[data-component="nav-stack"],
|
|
74
|
+
[data-component="split-view"],
|
|
75
|
+
[data-component="workbench"],
|
|
76
|
+
[data-component="tab-scaffold"]
|
|
77
|
+
):only-child
|
|
78
|
+
) {
|
|
81
79
|
--kui-edge-inset-block-start: 0px;
|
|
82
80
|
--kui-edge-inset-block-end: 0px;
|
|
83
81
|
--kui-edge-inset-inline-start: 0px;
|
|
@@ -98,10 +96,24 @@
|
|
|
98
96
|
);
|
|
99
97
|
padding-inline: var(--_kui-tab-scaffold-safe-inline-start)
|
|
100
98
|
var(--_kui-tab-scaffold-safe-inline-end);
|
|
101
|
-
|
|
99
|
+
/* Chrome divider: with `chromeDividers="scroll"` (the default, no
|
|
100
|
+
attribute) the bar's 1px top border shows only while the active scene's
|
|
101
|
+
content continues below it — never at the scroll end or when the content
|
|
102
|
+
fits. `wireScrollDividers` reports that state through
|
|
103
|
+
`data-scroll-divider`; `always` shows it without the wiring, and `none`
|
|
104
|
+
never. The border is always there and only its color changes, so
|
|
105
|
+
showing it never moves the bar or a tab. */
|
|
106
|
+
border-block-start: 1px solid
|
|
107
|
+
var(--_kui-tab-scaffold-bar-divider, transparent);
|
|
102
108
|
background: var(--kui-color-surface);
|
|
103
109
|
}
|
|
104
110
|
|
|
111
|
+
.kui-tab-scaffold:not([data-chrome-dividers])
|
|
112
|
+
> .kui-tab-scaffold__bar[data-scroll-divider*="t"],
|
|
113
|
+
.kui-tab-scaffold[data-chrome-dividers="always"] > .kui-tab-scaffold__bar {
|
|
114
|
+
--_kui-tab-scaffold-bar-divider: var(--kui-color-neutral-border-normal);
|
|
115
|
+
}
|
|
116
|
+
|
|
105
117
|
.kui-tab-scaffold__tab {
|
|
106
118
|
display: flex;
|
|
107
119
|
flex: 1 1 0;
|
|
@@ -120,7 +132,7 @@
|
|
|
120
132
|
}
|
|
121
133
|
|
|
122
134
|
.kui-tab-scaffold__tab[aria-selected="true"] {
|
|
123
|
-
color: var(--kui-color-
|
|
135
|
+
color: var(--kui-color-brand-on-quiet);
|
|
124
136
|
}
|
|
125
137
|
|
|
126
138
|
.kui-tab-scaffold__tab:focus-visible {
|
|
@@ -129,10 +141,34 @@
|
|
|
129
141
|
}
|
|
130
142
|
|
|
131
143
|
.kui-tab-scaffold__tab-icon {
|
|
144
|
+
position: relative;
|
|
132
145
|
display: grid;
|
|
133
146
|
place-items: center;
|
|
134
147
|
}
|
|
135
148
|
|
|
149
|
+
/* The iOS tab-bar badge: over the icon's top-trailing corner, its leading
|
|
150
|
+
edge just past the icon's center line so a longer count grows outward. The
|
|
151
|
+
Badge keeps its own geometry; only this anchor is positioned. Without an
|
|
152
|
+
icon the badge stays in flow above the label. */
|
|
153
|
+
.kui-tab-scaffold__tab-badge {
|
|
154
|
+
display: flex;
|
|
155
|
+
pointer-events: none;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.kui-tab-scaffold__tab-icon > .kui-tab-scaffold__tab-badge {
|
|
159
|
+
position: absolute;
|
|
160
|
+
inset-block-start: -0.4375rem;
|
|
161
|
+
inset-inline-start: calc(50% + 0.1875rem);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/* The text-free dot never grows, so it centers on the icon's top-trailing
|
|
165
|
+
corner instead: half over the glyph, half outside it. */
|
|
166
|
+
.kui-tab-scaffold__tab-icon
|
|
167
|
+
> .kui-tab-scaffold__tab-badge[data-badge-kind="dot"] {
|
|
168
|
+
inset-block-start: -0.125rem;
|
|
169
|
+
inset-inline-start: calc(100% - 0.3125rem);
|
|
170
|
+
}
|
|
171
|
+
|
|
136
172
|
.kui-tab-scaffold__tab-icon svg {
|
|
137
173
|
width: 1.375rem;
|
|
138
174
|
height: 1.375rem;
|
|
@@ -146,3 +182,13 @@
|
|
|
146
182
|
text-overflow: ellipsis;
|
|
147
183
|
white-space: nowrap;
|
|
148
184
|
}
|
|
185
|
+
|
|
186
|
+
/* As the only child of a Workbench region (its main area or a panel's
|
|
187
|
+
content, which the Workbench marks with `data-workbench-main` /
|
|
188
|
+
`data-workbench-panel-content`), a TabScaffold fills the region, so a
|
|
189
|
+
composed toolbar's footer (or the app's own) sits at the region's bottom
|
|
190
|
+
edge rather than under short content. */
|
|
191
|
+
:is([data-workbench-main], [data-workbench-panel-content])
|
|
192
|
+
> [data-component="tab-scaffold"]:only-child {
|
|
193
|
+
height: 100%;
|
|
194
|
+
}
|
package/dist/styles/text.css
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
.kui-text[data-tone="danger"] {
|
|
13
|
-
color: var(--kui-color-danger-
|
|
13
|
+
color: var(--kui-color-danger-on-quiet);
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
.kui-text[data-size="compact"] {
|
|
@@ -30,3 +30,19 @@ span.kui-text {
|
|
|
30
30
|
border: 0;
|
|
31
31
|
padding: 0;
|
|
32
32
|
}
|
|
33
|
+
|
|
34
|
+
/* A ListHeader's label: the title's single text child, set as a compact,
|
|
35
|
+
uppercase, single-line label that truncates with an ellipsis. The title is
|
|
36
|
+
a div around a heading or, for a toggle header, the toggle button around
|
|
37
|
+
an inline span. */
|
|
38
|
+
.kui-list-header__title > .kui-text {
|
|
39
|
+
min-width: 0;
|
|
40
|
+
margin: 0;
|
|
41
|
+
overflow: hidden;
|
|
42
|
+
font-size: var(--kui-font-xs);
|
|
43
|
+
font-weight: 650;
|
|
44
|
+
letter-spacing: 0.04em;
|
|
45
|
+
text-overflow: ellipsis;
|
|
46
|
+
text-transform: uppercase;
|
|
47
|
+
white-space: nowrap;
|
|
48
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
.kui-token-search {
|
|
2
2
|
--kui-token-search-background: var(--kui-color-surface);
|
|
3
|
-
--kui-token-search-border: var(--kui-color-border);
|
|
4
|
-
--kui-token-search-token-background: var(--kui-color-
|
|
5
|
-
--kui-token-search-token-foreground: var(--kui-color-
|
|
3
|
+
--kui-token-search-border: var(--kui-color-neutral-border-normal);
|
|
4
|
+
--kui-token-search-token-background: var(--kui-color-brand-fill-normal);
|
|
5
|
+
--kui-token-search-token-foreground: var(--kui-color-brand-on-quiet);
|
|
6
6
|
--kui-token-search-line-size: 2.125rem;
|
|
7
7
|
|
|
8
8
|
display: grid;
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
padding-block: calc((var(--kui-token-search-line-size) - 1.35em) / 2) 0;
|
|
54
54
|
box-sizing: border-box;
|
|
55
55
|
outline: 0;
|
|
56
|
-
caret-color: var(--kui-color-
|
|
56
|
+
caret-color: var(--kui-color-brand-on-quiet);
|
|
57
57
|
font-size: var(--kui-font-s);
|
|
58
58
|
line-height: 1.35;
|
|
59
59
|
white-space: pre-wrap;
|