@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/select.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SafeHtml } from 'kerfjs';
|
|
2
2
|
import { CssForegroundColor } from './css-values.js';
|
|
3
3
|
import { LucideNode } from './lucide-icon.js';
|
|
4
|
+
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
4
5
|
import 'lucide';
|
|
5
6
|
|
|
6
7
|
interface SelectChoice<Value extends string = string> {
|
|
@@ -12,7 +13,8 @@ interface SelectChoice<Value extends string = string> {
|
|
|
12
13
|
* Foreground color for the optional icon: a semantic foreground token such
|
|
13
14
|
* as `uiColor('success-on-quiet')`, or an application-owned
|
|
14
15
|
* `foregroundColorVar('--app-icon-color')`. Fill tokens such as
|
|
15
|
-
* `uiColor('success')` are pale background tints and do not
|
|
16
|
+
* `uiColor('success-fill-quiet')` are pale background tints and do not
|
|
17
|
+
* type-check.
|
|
16
18
|
*/
|
|
17
19
|
color?: CssForegroundColor;
|
|
18
20
|
group?: string;
|
|
@@ -36,7 +38,6 @@ type SelectSelectedPresentation = 'label' | 'icon-only';
|
|
|
36
38
|
type SelectFocusRingOwner = 'select' | 'group';
|
|
37
39
|
interface SelectBaseProps<Value extends string = string> {
|
|
38
40
|
name: string;
|
|
39
|
-
value: NoInfer<Value>;
|
|
40
41
|
choices: readonly SelectChoice<Value>[];
|
|
41
42
|
className?: string;
|
|
42
43
|
/** Empty-value hint text shown in the closed control (the native select placeholder). */
|
|
@@ -45,14 +46,11 @@ interface SelectBaseProps<Value extends string = string> {
|
|
|
45
46
|
hint?: string;
|
|
46
47
|
disabled?: boolean;
|
|
47
48
|
fitMenu?: boolean;
|
|
48
|
-
renderSelected?: (choice: SelectChoice<Value>) => SafeHtml;
|
|
49
49
|
/** Render as an unanimated loading skeleton: the label above a static, empty control box. */
|
|
50
50
|
placeholder?: boolean;
|
|
51
51
|
/** Form (default), borderless toolbar, or intrinsic navigation chrome. */
|
|
52
52
|
presentation?: SelectPresentation;
|
|
53
53
|
size?: SelectSize;
|
|
54
|
-
/** Show only the selected choice icon while retaining the Select's accessible name. */
|
|
55
|
-
selectedPresentation?: SelectSelectedPresentation;
|
|
56
54
|
/** Let an enclosing ToolbarControlGroup paint the composed focus ring. */
|
|
57
55
|
focusRingOwner?: SelectFocusRingOwner;
|
|
58
56
|
/** Maximum closed-control label width in CSS pixels before ellipsis. */
|
|
@@ -60,7 +58,47 @@ interface SelectBaseProps<Value extends string = string> {
|
|
|
60
58
|
/** Native named-slot assignment when composed inside a web component. */
|
|
61
59
|
slot?: string;
|
|
62
60
|
}
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
/** One chosen value (the default). */
|
|
62
|
+
interface SelectSingleValueProps<Value extends string = string> {
|
|
63
|
+
multiple?: false;
|
|
64
|
+
value: NoInfer<Value>;
|
|
65
|
+
renderSelected?: (choice: SelectChoice<Value>) => SafeHtml;
|
|
66
|
+
/** Show only the selected choice icon while retaining the Select's accessible name. */
|
|
67
|
+
selectedPresentation?: SelectSelectedPresentation;
|
|
68
|
+
triggerIcon?: never;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Any number of chosen values. The popup stays open while the person toggles
|
|
72
|
+
* choices and closes on an outside click, Escape, or focus leaving; the closed
|
|
73
|
+
* control summarizes the chosen labels in choice order.
|
|
74
|
+
*/
|
|
75
|
+
interface SelectMultipleLabelProps<Value extends string = string> {
|
|
76
|
+
multiple: true;
|
|
77
|
+
value: readonly NoInfer<Value>[];
|
|
78
|
+
renderSelected?: never;
|
|
79
|
+
selectedPresentation?: 'label';
|
|
80
|
+
triggerIcon?: never;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* A multiple Select drawn as an icon-only toolbar trigger, such as a
|
|
84
|
+
* "Filter by label" funnel. No single choice is selected, so the trigger shows
|
|
85
|
+
* a fixed `triggerIcon` naming the menu's purpose; while any choice is chosen
|
|
86
|
+
* a count badge sits beside it, and the combobox's accessible name ends with
|
|
87
|
+
* the chosen labels in choice order.
|
|
88
|
+
*/
|
|
89
|
+
interface SelectMultipleIconProps<Value extends string = string> {
|
|
90
|
+
multiple: true;
|
|
91
|
+
value: readonly NoInfer<Value>[];
|
|
92
|
+
renderSelected?: never;
|
|
93
|
+
selectedPresentation: 'icon-only';
|
|
94
|
+
/**
|
|
95
|
+
* The trigger's fixed icon, typically a `LucideIcon` naming the menu's
|
|
96
|
+
* purpose (a funnel for a filter), independent of the selection.
|
|
97
|
+
*/
|
|
98
|
+
triggerIcon: KerfUiContent;
|
|
99
|
+
}
|
|
100
|
+
type SelectMultipleValueProps<Value extends string = string> = SelectMultipleLabelProps<Value> | SelectMultipleIconProps<Value>;
|
|
101
|
+
type SelectProps<Value extends string = string> = SelectBaseProps<Value> & SelectAccessibleName & (SelectSingleValueProps<Value> | SelectMultipleValueProps<Value>);
|
|
102
|
+
declare function Select<Value extends string>(props: SelectProps<Value>): SafeHtml;
|
|
65
103
|
|
|
66
|
-
export { Select, type SelectChoice, type SelectFocusRingOwner, type SelectPresentation, type SelectProps, type SelectSelectedPresentation, type SelectSize };
|
|
104
|
+
export { Select, type SelectChoice, type SelectFocusRingOwner, type SelectMultipleIconProps, type SelectMultipleLabelProps, type SelectMultipleValueProps, type SelectPresentation, type SelectProps, type SelectSelectedPresentation, type SelectSingleValueProps, type SelectSize };
|
package/dist/select.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
/** Canonical physical edge combinations in top/right/bottom/left order. */
|
|
2
2
|
type Sides = '' | 't' | 'r' | 'b' | 'l' | 'tr' | 'tb' | 'tl' | 'rb' | 'rl' | 'bl' | 'trb' | 'trl' | 'tbl' | 'rbl' | 'trbl';
|
|
3
|
-
/** @deprecated Use the general `Sides` type. */
|
|
4
|
-
type DividerSides = Sides;
|
|
5
3
|
|
|
6
|
-
export type {
|
|
4
|
+
export type { Sides as S };
|
package/dist/skeleton.js
CHANGED
package/dist/spacer.js
CHANGED
package/dist/split-view.d.ts
CHANGED
|
@@ -1,11 +1,37 @@
|
|
|
1
1
|
import * as kerfjs from 'kerfjs';
|
|
2
|
+
import { NavStackProps, NavStackView } from './nav-stack.js';
|
|
3
|
+
import { ResizableRegionProps } from './resizable-region.js';
|
|
2
4
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
5
|
+
import './toolbar.js';
|
|
6
|
+
import './pane.js';
|
|
7
|
+
import './sides-BPSWde0A.js';
|
|
8
|
+
import './toolbar-text.js';
|
|
3
9
|
|
|
4
|
-
|
|
10
|
+
/**
|
|
11
|
+
* The roomy list pane's `ResizableRegion`: its committed `size` and `min` /
|
|
12
|
+
* `max` limits, plus the region configuration that forwards unchanged
|
|
13
|
+
* (`separator`, `handleIcon`, `contentOverflow`, and collapse:
|
|
14
|
+
* `collapsed`, `transitioning`, `collapseMotion`, `restoreControl`,
|
|
15
|
+
* `restorePosition`). Omitted options keep the region's defaults.
|
|
16
|
+
*/
|
|
17
|
+
interface SplitViewResizable extends Pick<ResizableRegionProps, 'separator' | 'handleIcon' | 'contentOverflow' | 'collapsed' | 'transitioning' | 'collapseMotion' | 'restoreControl' | 'restorePosition'> {
|
|
5
18
|
size: number;
|
|
6
19
|
min: number;
|
|
7
20
|
max: number;
|
|
8
21
|
}
|
|
22
|
+
/** One compact view's top- and bottom-toolbar content (see `NavStackView`). */
|
|
23
|
+
type SplitViewCompactViewToolbars = Pick<NavStackView, 'leading' | 'center' | 'toolbar' | 'bottomToolbar'>;
|
|
24
|
+
/**
|
|
25
|
+
* The compact `NavStack`'s configuration: its toolbar configuration, back
|
|
26
|
+
* control, persistent bottom toolbar, and chrome dividers forward to the
|
|
27
|
+
* stack, and `list` / `detail` give each view its own toolbar groups.
|
|
28
|
+
*/
|
|
29
|
+
interface SplitViewCompactStack extends Pick<NavStackProps, 'toolbarConfig' | 'backIcon' | 'backText' | 'hideToolbar' | 'bottomToolbar' | 'chromeDividers'> {
|
|
30
|
+
/** Toolbar content for the list (root) view. */
|
|
31
|
+
list?: SplitViewCompactViewToolbars;
|
|
32
|
+
/** Toolbar content for the pushed detail view. */
|
|
33
|
+
detail?: SplitViewCompactViewToolbars;
|
|
34
|
+
}
|
|
9
35
|
interface SplitViewProps {
|
|
10
36
|
id: string;
|
|
11
37
|
label: string;
|
|
@@ -27,6 +53,8 @@ interface SplitViewProps {
|
|
|
27
53
|
detailTitle?: string;
|
|
28
54
|
/** Back label for the compact NavStack (default "Back"). */
|
|
29
55
|
backLabel?: string;
|
|
56
|
+
/** Compact NavStack configuration and per-view toolbars. */
|
|
57
|
+
compactStack?: SplitViewCompactStack;
|
|
30
58
|
/** A resizable separator on roomy classes (min/max px). Omit for a fixed split. */
|
|
31
59
|
resizable?: SplitViewResizable;
|
|
32
60
|
className?: string;
|
|
@@ -40,6 +68,6 @@ interface SplitViewProps {
|
|
|
40
68
|
* resizable wiring with `wireResizableRegions` and the compact back with
|
|
41
69
|
* `wireNavStack`.
|
|
42
70
|
*/
|
|
43
|
-
declare function SplitView({ id, label, list, detail, compact, detailActive, listTitle, detailTitle, backLabel, resizable, className, slot, }: SplitViewProps): kerfjs.SafeHtml;
|
|
71
|
+
declare function SplitView({ id, label, list, detail, compact, detailActive, listTitle, detailTitle, backLabel, compactStack, resizable, className, slot, }: SplitViewProps): kerfjs.SafeHtml;
|
|
44
72
|
|
|
45
|
-
export { SplitView, type SplitViewProps, type SplitViewResizable };
|
|
73
|
+
export { SplitView, type SplitViewCompactStack, type SplitViewCompactViewToolbars, type SplitViewProps, type SplitViewResizable };
|
package/dist/split-view.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import { NavStack } from './chunk-
|
|
1
|
+
import { NavStack } from './chunk-PWXNJS2B.js';
|
|
2
2
|
import { ResizableRegion } from './chunk-VHADGP3B.js';
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
6
9
|
import { jsx, jsxs } from 'kerfjs/jsx-runtime';
|
|
7
10
|
|
|
8
11
|
function SplitView({
|
|
@@ -15,15 +18,27 @@ function SplitView({
|
|
|
15
18
|
listTitle = "",
|
|
16
19
|
detailTitle = "",
|
|
17
20
|
backLabel = "Back",
|
|
21
|
+
compactStack = {},
|
|
18
22
|
resizable,
|
|
19
23
|
className = "",
|
|
20
24
|
slot
|
|
21
25
|
}) {
|
|
22
26
|
if (compact) {
|
|
27
|
+
const listView = {
|
|
28
|
+
...compactStack.list,
|
|
29
|
+
key: "list",
|
|
30
|
+
title: listTitle,
|
|
31
|
+
content: list
|
|
32
|
+
};
|
|
23
33
|
const views = detailActive ? [
|
|
24
|
-
|
|
25
|
-
{
|
|
26
|
-
|
|
34
|
+
listView,
|
|
35
|
+
{
|
|
36
|
+
...compactStack.detail,
|
|
37
|
+
key: "detail",
|
|
38
|
+
title: detailTitle,
|
|
39
|
+
content: detail
|
|
40
|
+
}
|
|
41
|
+
] : [listView];
|
|
27
42
|
return /* @__PURE__ */ jsx(
|
|
28
43
|
"div",
|
|
29
44
|
{
|
|
@@ -38,7 +53,13 @@ function SplitView({
|
|
|
38
53
|
id: `${id}-stack`,
|
|
39
54
|
label,
|
|
40
55
|
views,
|
|
41
|
-
backLabel
|
|
56
|
+
backLabel,
|
|
57
|
+
backIcon: compactStack.backIcon,
|
|
58
|
+
backText: compactStack.backText,
|
|
59
|
+
toolbarConfig: compactStack.toolbarConfig,
|
|
60
|
+
hideToolbar: compactStack.hideToolbar,
|
|
61
|
+
bottomToolbar: compactStack.bottomToolbar,
|
|
62
|
+
chromeDividers: compactStack.chromeDividers
|
|
42
63
|
}
|
|
43
64
|
)
|
|
44
65
|
}
|
|
@@ -52,6 +73,14 @@ function SplitView({
|
|
|
52
73
|
size: resizable.size,
|
|
53
74
|
min: resizable.min,
|
|
54
75
|
max: resizable.max,
|
|
76
|
+
separator: resizable.separator,
|
|
77
|
+
handleIcon: resizable.handleIcon,
|
|
78
|
+
contentOverflow: resizable.contentOverflow,
|
|
79
|
+
collapsed: resizable.collapsed,
|
|
80
|
+
transitioning: resizable.transitioning,
|
|
81
|
+
collapseMotion: resizable.collapseMotion,
|
|
82
|
+
restoreControl: resizable.restoreControl,
|
|
83
|
+
restorePosition: resizable.restorePosition,
|
|
55
84
|
children: /* @__PURE__ */ jsx(
|
|
56
85
|
"div",
|
|
57
86
|
{
|
package/dist/split-view.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/split-view.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/split-view.tsx"],"names":[],"mappings":"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","file":"split-view.js","sourcesContent":["import {\n NavStack,\n type NavStackProps,\n type NavStackView,\n} from './nav-stack.js';\nimport {\n ResizableRegion,\n type ResizableRegionProps,\n} from './resizable-region.js';\nimport type { KerfUiContent } from './semantic-content.js';\n\n/**\n * The roomy list pane's `ResizableRegion`: its committed `size` and `min` /\n * `max` limits, plus the region configuration that forwards unchanged\n * (`separator`, `handleIcon`, `contentOverflow`, and collapse:\n * `collapsed`, `transitioning`, `collapseMotion`, `restoreControl`,\n * `restorePosition`). Omitted options keep the region's defaults.\n */\nexport interface SplitViewResizable extends Pick<\n ResizableRegionProps,\n | 'separator'\n | 'handleIcon'\n | 'contentOverflow'\n | 'collapsed'\n | 'transitioning'\n | 'collapseMotion'\n | 'restoreControl'\n | 'restorePosition'\n> {\n size: number;\n min: number;\n max: number;\n}\n\n/** One compact view's top- and bottom-toolbar content (see `NavStackView`). */\nexport type SplitViewCompactViewToolbars = Pick<\n NavStackView,\n 'leading' | 'center' | 'toolbar' | 'bottomToolbar'\n>;\n\n/**\n * The compact `NavStack`'s configuration: its toolbar configuration, back\n * control, persistent bottom toolbar, and chrome dividers forward to the\n * stack, and `list` / `detail` give each view its own toolbar groups.\n */\nexport interface SplitViewCompactStack extends Pick<\n NavStackProps,\n | 'toolbarConfig'\n | 'backIcon'\n | 'backText'\n | 'hideToolbar'\n | 'bottomToolbar'\n | 'chromeDividers'\n> {\n /** Toolbar content for the list (root) view. */\n list?: SplitViewCompactViewToolbars;\n /** Toolbar content for the pushed detail view. */\n detail?: SplitViewCompactViewToolbars;\n}\n\nexport interface SplitViewProps {\n id: string;\n label: string;\n /** The list (primary) pane. */\n list: KerfUiContent;\n /** The detail (secondary) pane. */\n detail: KerfUiContent;\n /**\n * Compact (\"one pane at a time\") classes — a handset or portrait tablet.\n * Derive from `deviceClass().value.compact`. When true the split collapses to\n * a `NavStack`: the list is the root and the detail is pushed over it.\n */\n compact?: boolean;\n /** In compact mode, whether the detail is currently pushed over the list. */\n detailActive?: boolean;\n /** Title/label for the list (compact NavStack root + region label). */\n listTitle?: string;\n /** Title/label for the detail (compact NavStack pushed view + region label). */\n detailTitle?: string;\n /** Back label for the compact NavStack (default \"Back\"). */\n backLabel?: string;\n /** Compact NavStack configuration and per-view toolbars. */\n compactStack?: SplitViewCompactStack;\n /** A resizable separator on roomy classes (min/max px). Omit for a fixed split. */\n resizable?: SplitViewResizable;\n className?: string;\n /** Native named-slot assignment when composed inside a web component. */\n slot?: string;\n}\n\n/**\n * A list-detail split. On roomy classes it shows both panes side\n * by side with an optional resizable separator; on compact classes it collapses\n * to a `NavStack` (list → detail). See `docs/23-app-layouts.md` §3.2. Compose the\n * resizable wiring with `wireResizableRegions` and the compact back with\n * `wireNavStack`.\n */\nexport function SplitView({\n id,\n label,\n list,\n detail,\n compact = false,\n detailActive = false,\n listTitle = '',\n detailTitle = '',\n backLabel = 'Back',\n compactStack = {},\n resizable,\n className = '',\n slot,\n}: SplitViewProps) {\n if (compact) {\n const listView: NavStackView = {\n ...compactStack.list,\n key: 'list',\n title: listTitle,\n content: list,\n };\n const views: NavStackView[] = detailActive\n ? [\n listView,\n {\n ...compactStack.detail,\n key: 'detail',\n title: detailTitle,\n content: detail,\n },\n ]\n : [listView];\n return (\n <div\n class={`kui-split-view kui-split-view--compact ${className}`.trim()}\n id={id}\n data-component=\"split-view\"\n data-split-mode=\"compact\"\n slot={slot}\n >\n <NavStack\n id={`${id}-stack`}\n label={label}\n views={views}\n backLabel={backLabel}\n backIcon={compactStack.backIcon}\n backText={compactStack.backText}\n toolbarConfig={compactStack.toolbarConfig}\n hideToolbar={compactStack.hideToolbar}\n bottomToolbar={compactStack.bottomToolbar}\n chromeDividers={compactStack.chromeDividers}\n />\n </div>\n );\n }\n const listPane = resizable ? (\n <ResizableRegion\n id={`${id}-list`}\n label={listTitle || 'List'}\n size={resizable.size}\n min={resizable.min}\n max={resizable.max}\n separator={resizable.separator}\n handleIcon={resizable.handleIcon}\n contentOverflow={resizable.contentOverflow}\n collapsed={resizable.collapsed}\n transitioning={resizable.transitioning}\n collapseMotion={resizable.collapseMotion}\n restoreControl={resizable.restoreControl}\n restorePosition={resizable.restorePosition}\n >\n <div\n class=\"kui-split-view__list kui-pane\"\n data-split-list\n data-resizable=\"true\"\n >\n {list}\n </div>\n </ResizableRegion>\n ) : (\n <div\n class=\"kui-split-view__list kui-pane\"\n data-split-list\n data-resizable=\"false\"\n >\n {list}\n </div>\n );\n return (\n <div\n class={`kui-split-view ${className}`.trim()}\n id={id}\n data-component=\"split-view\"\n data-split-mode=\"split\"\n aria-label={label}\n slot={slot}\n >\n {listPane}\n <div\n class=\"kui-split-view__detail kui-pane\"\n data-split-detail\n aria-label={detailTitle || undefined}\n >\n {detail}\n </div>\n </div>\n );\n}\n"]}
|
package/dist/state-banner.js
CHANGED
package/dist/styles/app-tab.css
CHANGED
|
@@ -124,6 +124,37 @@
|
|
|
124
124
|
width: 2rem;
|
|
125
125
|
min-width: 2rem;
|
|
126
126
|
}
|
|
127
|
+
/* In a TabBar, the tab styles itself in the context of its parent strip. A
|
|
128
|
+
segmented strip's outer ends follow the pill track: the first tab's leading
|
|
129
|
+
corners, and a filled strip's last tab's trailing corners, are pill-rounded
|
|
130
|
+
so each end is concentric with the track (TabBar insets a compact strip's
|
|
131
|
+
tabs to match). Only fill allocation carries the last tab to the track's
|
|
132
|
+
trailing end; an intrinsic strip's last tab stops short of it and keeps the
|
|
133
|
+
segment radius, as do the corners between tabs. */
|
|
134
|
+
.kui-tab-bar[data-presentation="segmented"]
|
|
135
|
+
.kui-tab-bar__tabs
|
|
136
|
+
> .kui-app-tab:first-child {
|
|
137
|
+
border-start-start-radius: var(--kui-radius-pill);
|
|
138
|
+
border-end-start-radius: var(--kui-radius-pill);
|
|
139
|
+
}
|
|
140
|
+
.kui-tab-bar[data-presentation="segmented"][data-allocation="fill"]
|
|
141
|
+
.kui-tab-bar__tabs
|
|
142
|
+
> .kui-app-tab:last-child {
|
|
143
|
+
border-start-end-radius: var(--kui-radius-pill);
|
|
144
|
+
border-end-end-radius: var(--kui-radius-pill);
|
|
145
|
+
}
|
|
146
|
+
/* Fill allocation shares the strip equally and centers each tab's content. */
|
|
147
|
+
.kui-tab-bar[data-allocation="fill"] .kui-tab-bar__tabs > .kui-app-tab {
|
|
148
|
+
min-width: 0;
|
|
149
|
+
flex: 1 1 0;
|
|
150
|
+
}
|
|
151
|
+
.kui-tab-bar[data-allocation="fill"]
|
|
152
|
+
.kui-tab-bar__tabs
|
|
153
|
+
> .kui-app-tab
|
|
154
|
+
> .kui-app-tab__select {
|
|
155
|
+
width: 100%;
|
|
156
|
+
justify-content: center;
|
|
157
|
+
}
|
|
127
158
|
.kui-app-tab__trailing {
|
|
128
159
|
display: grid;
|
|
129
160
|
min-width: 1.275rem;
|
package/dist/styles/badge.css
CHANGED
|
@@ -64,17 +64,6 @@
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
.kui-badge[data-appearance="solid"] {
|
|
67
|
-
/* A placeholder's skeleton inside a solid badge: the generic text-color tint
|
|
68
|
-
is nearly invisible on the saturated fill, so derive it from the badge's
|
|
69
|
-
own foreground instead, which contrasts with the fill in every tone and
|
|
70
|
-
color scheme. Quiet and outline badges sit on a pale fill and keep the
|
|
71
|
-
generic tint. */
|
|
72
|
-
--_kui-skeleton-fill: color-mix(
|
|
73
|
-
in srgb,
|
|
74
|
-
var(--_kui-badge-on-solid) 45%,
|
|
75
|
-
transparent
|
|
76
|
-
);
|
|
77
|
-
|
|
78
67
|
color: var(--_kui-badge-on-solid);
|
|
79
68
|
background: var(--_kui-badge-fill-solid);
|
|
80
69
|
}
|
|
@@ -95,3 +84,35 @@
|
|
|
95
84
|
padding-inline: 0.35rem;
|
|
96
85
|
font-size: var(--kui-font-2xs);
|
|
97
86
|
}
|
|
87
|
+
|
|
88
|
+
/* The text-free status dot (the iOS "new content" dot): a small solid circle
|
|
89
|
+
in the tone's solid fill, without the text box's padding or minimum size. */
|
|
90
|
+
.kui-badge[data-size="dot"] {
|
|
91
|
+
width: 0.5rem;
|
|
92
|
+
min-width: 0.5rem;
|
|
93
|
+
height: 0.5rem;
|
|
94
|
+
min-height: 0.5rem;
|
|
95
|
+
padding: 0;
|
|
96
|
+
border: 0;
|
|
97
|
+
border-radius: 50%;
|
|
98
|
+
background: var(--_kui-badge-fill-solid);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* A multiple icon-only Select's count badge, in the trigger's end slot after
|
|
102
|
+
its fixed icon, sits 4px from the icon (the caret keeps its 12px after it).
|
|
103
|
+
The summary that ends the Select's label (and accessible name) stays inline
|
|
104
|
+
text, so a visible label reads "Labels: Bug, Docs" in place of the hidden
|
|
105
|
+
value. */
|
|
106
|
+
.kui-select > .kui-badge[slot="end"] {
|
|
107
|
+
margin-inline-start: 0.25rem;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* A StateBanner's badge follows its title inline and is taller than the
|
|
111
|
+
title's line. Negative block margins keep it out of the line-height
|
|
112
|
+
calculation, so a wrapped title's lines stay evenly spaced whichever line
|
|
113
|
+
the badge lands on. */
|
|
114
|
+
.kui-state-banner__copy > .kui-badge {
|
|
115
|
+
margin-block: -0.5em;
|
|
116
|
+
margin-inline-end: var(--kui-layout-item-gap, 0.5rem);
|
|
117
|
+
vertical-align: baseline;
|
|
118
|
+
}
|