@kerfjs/ui 5.0.0-beta.94 → 5.0.0-beta.96
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 +99 -57
- package/ai/component-catalog.json +1328 -94
- package/ai/component-composition-rules.json +11 -0
- package/ai/component-composition.d.ts +3 -0
- package/ai/component-composition.json +955 -23
- package/ai/component-composition.schema.json +4 -0
- package/ai/components/README.md +12 -0
- package/ai/components/badge.md +6 -2
- package/ai/components/choice-chips.md +80 -0
- package/ai/components/column-track.md +78 -0
- package/ai/components/combobox.md +88 -0
- package/ai/components/content-item.md +2 -0
- package/ai/components/content-swap.md +78 -0
- package/ai/components/corner-status.md +88 -0
- package/ai/components/document-baseline.md +3 -1
- package/ai/components/edge-activity-indicator.md +81 -0
- package/ai/components/file-picker.md +88 -0
- package/ai/components/foundation.md +1 -1
- package/ai/components/framed-list.md +80 -0
- package/ai/components/grid.md +2 -1
- package/ai/components/icon-button.md +82 -0
- package/ai/components/icon-toggle-button.md +80 -0
- package/ai/components/list-action-row.md +19 -7
- package/ai/components/list-item.md +16 -7
- package/ai/components/list.md +5 -2
- package/ai/components/nav-stack.md +2 -1
- package/ai/components/popup-menu.md +2 -2
- package/ai/components/row.md +1 -1
- package/ai/components/select.md +2 -1
- package/ai/components/split-button.md +80 -0
- package/ai/components/split-view.md +1 -1
- package/ai/components/state-banner.md +4 -2
- package/ai/components/summary-row.md +85 -0
- package/ai/components/sunken-panel.md +1 -1
- package/ai/components/surface-scaffold.md +8 -2
- package/ai/components/text.md +3 -0
- package/ai/components/toolbar-control-group.md +4 -2
- package/ai/components/toolbar-text.md +1 -0
- package/ai/components/toolbar.md +1 -0
- package/ai/components/value-table.md +9 -2
- package/ai/components/wa-button-group.md +2 -1
- package/ai/components/wa-button.md +5 -1
- package/ai/public-api-signatures-v1.md +1063 -52
- package/ai/skill.md +57 -53
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/dist/anchored-surface.d.ts +13 -2
- package/dist/anchored-surface.js +1 -1
- package/dist/app-tab.js +1 -1
- package/dist/badge.d.ts +31 -2
- package/dist/badge.js +2 -1
- package/dist/browser/choice-chips.js +3 -0
- package/dist/browser/column-track.js +3 -0
- package/dist/browser/combobox.js +3 -0
- package/dist/browser/content-swap.js +3 -0
- package/dist/browser/corner-status.js +3 -0
- package/dist/browser/edge-activity-indicator.js +3 -0
- package/dist/browser/file-picker.js +3 -0
- package/dist/browser/framed-list.js +3 -0
- package/dist/browser/icon-button.js +4 -0
- package/dist/browser/icon-toggle-button.js +4 -0
- package/dist/browser/list-action-row.js +1 -0
- package/dist/browser/split-button.js +5 -0
- package/dist/browser/summary-row.js +3 -0
- package/dist/catalog-resources.d.ts +1 -0
- package/dist/catalog.d.ts +1 -0
- package/dist/catalog.js +16 -13
- package/dist/catalog.js.map +1 -1
- package/dist/chip.d.ts +1 -0
- package/dist/choice-chips.d.ts +58 -0
- package/dist/choice-chips.js +3 -0
- package/dist/choice-chips.js.map +1 -0
- package/dist/chunk-2MSPNRWJ.js +82 -0
- package/dist/chunk-2MSPNRWJ.js.map +1 -0
- package/dist/{chunk-3PO7JEK7.js → chunk-36TL6BCR.js} +18 -4
- package/dist/chunk-36TL6BCR.js.map +1 -0
- package/dist/{chunk-MORVLMDG.js → chunk-44A6LP54.js} +3 -3
- package/dist/chunk-44A6LP54.js.map +1 -0
- package/dist/{chunk-7QQ3HE47.js → chunk-4LOK4634.js} +7 -3
- package/dist/chunk-4LOK4634.js.map +1 -0
- package/dist/chunk-4UB5Z3ZZ.js +68 -0
- package/dist/chunk-4UB5Z3ZZ.js.map +1 -0
- package/dist/{chunk-PGL6TXFW.js → chunk-6BRRUPJY.js} +6 -2
- package/dist/chunk-6BRRUPJY.js.map +1 -0
- package/dist/{chunk-KAJVVN7Q.js → chunk-6NOLL5KG.js} +2 -2
- package/dist/{chunk-KAJVVN7Q.js.map → chunk-6NOLL5KG.js.map} +1 -1
- package/dist/{chunk-IOS2NXW7.js → chunk-76PWEN5Y.js} +13 -2
- package/dist/chunk-76PWEN5Y.js.map +1 -0
- package/dist/{chunk-B3TROLC2.js → chunk-7IUEBNCO.js} +7 -3
- package/dist/chunk-7IUEBNCO.js.map +1 -0
- package/dist/{chunk-75YOTZ25.js → chunk-AYHC62OZ.js} +10 -6
- package/dist/chunk-AYHC62OZ.js.map +1 -0
- package/dist/{chunk-RZYQFGMM.js → chunk-BBU2SPRE.js} +4 -4
- package/dist/{chunk-RZYQFGMM.js.map → chunk-BBU2SPRE.js.map} +1 -1
- package/dist/{chunk-QCLLBMLA.js → chunk-BU23Z5HZ.js} +37 -12
- package/dist/chunk-BU23Z5HZ.js.map +1 -0
- package/dist/{chunk-BYHGRKC3.js → chunk-CMLPFIC5.js} +3 -1
- package/dist/chunk-CMLPFIC5.js.map +1 -0
- package/dist/{chunk-3XPGJUUQ.js → chunk-D5RGM3XA.js} +3 -2
- package/dist/chunk-D5RGM3XA.js.map +1 -0
- package/dist/chunk-EIET4QLK.js +51 -0
- package/dist/chunk-EIET4QLK.js.map +1 -0
- package/dist/chunk-ETCWQLJV.js +85 -0
- package/dist/chunk-ETCWQLJV.js.map +1 -0
- package/dist/chunk-FDZNYD4C.js +138 -0
- package/dist/chunk-FDZNYD4C.js.map +1 -0
- package/dist/{chunk-XKZPBRU7.js → chunk-FOQK4F3L.js} +25 -5
- package/dist/chunk-FOQK4F3L.js.map +1 -0
- package/dist/{chunk-FL6J644M.js → chunk-GJYQ27C2.js} +4 -2
- package/dist/chunk-GJYQ27C2.js.map +1 -0
- package/dist/{chunk-DL55BSQX.js → chunk-GZE2XVKC.js} +8 -1
- package/dist/chunk-GZE2XVKC.js.map +1 -0
- package/dist/{chunk-YP2G67S7.js → chunk-HO6FU3G7.js} +2 -2
- package/dist/{chunk-YP2G67S7.js.map → chunk-HO6FU3G7.js.map} +1 -1
- package/dist/{chunk-3DXHNLME.js → chunk-IGTWXPTN.js} +25 -8
- package/dist/chunk-IGTWXPTN.js.map +1 -0
- package/dist/chunk-IKS72C6P.js +53 -0
- package/dist/chunk-IKS72C6P.js.map +1 -0
- package/dist/chunk-JYD7G4RG.js +130 -0
- package/dist/chunk-JYD7G4RG.js.map +1 -0
- package/dist/{chunk-LAZLBC2Q.js → chunk-KH4KEMSP.js} +33 -2
- package/dist/chunk-KH4KEMSP.js.map +1 -0
- package/dist/chunk-LL45C7BB.js +122 -0
- package/dist/chunk-LL45C7BB.js.map +1 -0
- package/dist/chunk-M2NRCFRO.js +45 -0
- package/dist/chunk-M2NRCFRO.js.map +1 -0
- package/dist/chunk-MJ5RU6XT.js +173 -0
- package/dist/chunk-MJ5RU6XT.js.map +1 -0
- package/dist/{chunk-GIUOXAVL.js → chunk-P74VXMB6.js} +39 -19
- package/dist/chunk-P74VXMB6.js.map +1 -0
- package/dist/{chunk-TKDDTLG5.js → chunk-PBT3CPPY.js} +31 -3
- package/dist/chunk-PBT3CPPY.js.map +1 -0
- package/dist/chunk-PRG4CL3Q.js +88 -0
- package/dist/chunk-PRG4CL3Q.js.map +1 -0
- package/dist/chunk-QH5KOFNS.js +39 -0
- package/dist/chunk-QH5KOFNS.js.map +1 -0
- package/dist/{chunk-CD5TOO22.js → chunk-QIAPOWHH.js} +2 -2
- package/dist/{chunk-CD5TOO22.js.map → chunk-QIAPOWHH.js.map} +1 -1
- package/dist/chunk-QQ3TTWFH.js +29 -0
- package/dist/chunk-QQ3TTWFH.js.map +1 -0
- package/dist/chunk-QYMJHS4K.js +36 -0
- package/dist/chunk-QYMJHS4K.js.map +1 -0
- package/dist/chunk-R42D2BAO.js +44 -0
- package/dist/chunk-R42D2BAO.js.map +1 -0
- package/dist/chunk-S2XULQEK.js +52 -0
- package/dist/chunk-S2XULQEK.js.map +1 -0
- package/dist/{chunk-NMWDHZVM.js → chunk-S4Y3YTAI.js} +2 -2
- package/dist/{chunk-NMWDHZVM.js.map → chunk-S4Y3YTAI.js.map} +1 -1
- package/dist/{chunk-O27D24CA.js → chunk-TDMHA7C3.js} +3 -2
- package/dist/chunk-TDMHA7C3.js.map +1 -0
- package/dist/chunk-U6QYTMDB.js +85 -0
- package/dist/chunk-U6QYTMDB.js.map +1 -0
- package/dist/{chunk-QQICWWNX.js → chunk-V6W56V3N.js} +18 -7
- package/dist/chunk-V6W56V3N.js.map +1 -0
- package/dist/chunk-W4IK7AWD.js +73 -0
- package/dist/chunk-W4IK7AWD.js.map +1 -0
- package/dist/{chunk-TNG3XKHB.js → chunk-Y3LC7JQO.js} +26 -8
- package/dist/chunk-Y3LC7JQO.js.map +1 -0
- package/dist/chunk-YWQGSUF2.js +84 -0
- package/dist/chunk-YWQGSUF2.js.map +1 -0
- package/dist/{chunk-MTCTX25G.js → chunk-YXOMI7ES.js} +1 -1
- package/dist/chunk-YXOMI7ES.js.map +1 -0
- package/dist/chunk-ZKKO4MHC.js +25 -0
- package/dist/chunk-ZKKO4MHC.js.map +1 -0
- package/dist/collapsible-panel.d.ts +10 -3
- package/dist/collapsible-panel.js +8 -5
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/column-track.d.ts +41 -0
- package/dist/column-track.js +4 -0
- package/dist/column-track.js.map +1 -0
- package/dist/combobox.d.ts +40 -0
- package/dist/combobox.js +3 -0
- package/dist/combobox.js.map +1 -0
- package/dist/content-item.d.ts +21 -4
- package/dist/content-item.js +1 -1
- package/dist/content-swap.d.ts +34 -0
- package/dist/content-swap.js +3 -0
- package/dist/content-swap.js.map +1 -0
- package/dist/corner-status.d.ts +36 -0
- package/dist/corner-status.js +3 -0
- package/dist/corner-status.js.map +1 -0
- package/dist/edge-activity-indicator.d.ts +28 -0
- package/dist/edge-activity-indicator.js +3 -0
- package/dist/edge-activity-indicator.js.map +1 -0
- package/dist/extension-attributes-mu8MFUl0.d.ts +13 -0
- package/dist/file-picker.d.ts +47 -0
- package/dist/file-picker.js +3 -0
- package/dist/file-picker.js.map +1 -0
- package/dist/framed-list.d.ts +47 -0
- package/dist/framed-list.js +4 -0
- package/dist/framed-list.js.map +1 -0
- package/dist/grid.js +1 -1
- package/dist/help-tags-register.js +1 -1
- package/dist/icon-button.d.ts +46 -0
- package/dist/icon-button.js +6 -0
- package/dist/icon-button.js.map +1 -0
- package/dist/icon-toggle-button.d.ts +42 -0
- package/dist/icon-toggle-button.js +6 -0
- package/dist/icon-toggle-button.js.map +1 -0
- package/dist/index.d.ts +23 -6
- package/dist/index.js +44 -27
- package/dist/list-action-row.d.ts +47 -10
- package/dist/list-action-row.js +2 -1
- package/dist/list-header.js +1 -1
- package/dist/list-inset-text.js +1 -1
- package/dist/list-item.d.ts +10 -2
- package/dist/list-item.js +1 -1
- package/dist/list.d.ts +37 -5
- package/dist/list.js +1 -1
- package/dist/nav-stack.d.ts +1 -0
- package/dist/nav-stack.js +2 -1
- package/dist/pane.js +2 -1
- package/dist/popup-menu-register.js +18 -1
- package/dist/popup-menu-register.js.map +1 -1
- package/dist/popup-menu.d.ts +28 -3
- package/dist/popup-menu.js +1 -1
- package/dist/row.d.ts +6 -2
- package/dist/row.js +1 -1
- package/dist/select-register.js +1 -1
- package/dist/select.js +2 -1
- package/dist/split-button.d.ts +57 -0
- package/dist/split-button.js +7 -0
- package/dist/split-button.js.map +1 -0
- package/dist/split-view.d.ts +20 -2
- package/dist/split-view.js +22 -1
- package/dist/split-view.js.map +1 -1
- package/dist/state-banner.d.ts +17 -2
- package/dist/state-banner.js +2 -1
- package/dist/styles/badge.css +27 -0
- package/dist/styles/catalog/components/catalog-example.css +7 -3
- package/dist/styles/choice-chips.css +154 -0
- package/dist/styles/column-track.css +57 -0
- package/dist/styles/combobox.css +113 -0
- package/dist/styles/components/actions/icon-button/icon-button.css +22 -0
- package/dist/styles/components/actions/icon-toggle-button/icon-toggle-button.css +83 -0
- package/dist/styles/components/actions/popup-menu/popup-menu.css +69 -1
- package/dist/styles/components/actions/split-button/split-button.css +95 -0
- package/dist/styles/components/actions/toolbar/toolbar.css +16 -9
- package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +144 -48
- package/dist/styles/components/actions/toolbar-text/toolbar-text.css +23 -0
- package/dist/styles/components/collections/framed-list/framed-list.css +47 -0
- package/dist/styles/components/collections/list/list.css +44 -0
- package/dist/styles/components/collections/list-action-row/list-action-row.css +39 -0
- package/dist/styles/components/collections/list-item/list-item.css +45 -0
- package/dist/styles/components/collections/summary-row/summary-row.css +161 -0
- package/dist/styles/components/data-display/value-table/value-table.css +76 -0
- package/dist/styles/components/feedback/badge/badge.css +27 -0
- package/dist/styles/components/feedback/corner-status/corner-status.css +60 -0
- package/dist/styles/components/feedback/edge-activity-indicator/edge-activity-indicator.css +127 -0
- package/dist/styles/components/feedback/state-banner/state-banner.css +38 -0
- package/dist/styles/components/forms/choice-chips/choice-chips.css +154 -0
- package/dist/styles/components/forms/combobox/combobox.css +113 -0
- package/dist/styles/components/forms/file-picker/file-picker.css +81 -0
- package/dist/styles/components/forms/token-search-field/token-search-field.css +12 -1
- package/dist/styles/components/layout/column-track/column-track.css +57 -0
- package/dist/styles/components/layout/content-swap/content-swap.css +154 -0
- package/dist/styles/components/layout/pane/pane.css +2 -8
- package/dist/styles/components/layout/workbench/workbench.css +2 -8
- package/dist/styles/components/navigation/tab-navigator/tab-navigator.css +1 -4
- package/dist/styles/components/surfaces/content-item/content-item.css +18 -0
- package/dist/styles/components/surfaces/sunken-panel/sunken-panel.css +1 -4
- package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +119 -0
- package/dist/styles/components/typography/text/text.css +62 -0
- package/dist/styles/content-item.css +18 -0
- package/dist/styles/content-swap.css +154 -0
- package/dist/styles/corner-status.css +60 -0
- package/dist/styles/document.css +65 -0
- package/dist/styles/edge-activity-indicator.css +127 -0
- package/dist/styles/file-picker.css +81 -0
- package/dist/styles/foundation.css +8 -0
- package/dist/styles/framed-list.css +47 -0
- package/dist/styles/icon-button.css +22 -0
- package/dist/styles/icon-toggle-button.css +83 -0
- package/dist/styles/list-action-row.css +39 -0
- package/dist/styles/list-item.css +45 -0
- package/dist/styles/list.css +44 -0
- package/dist/styles/pane.css +2 -8
- package/dist/styles/popup-menu.css +69 -1
- package/dist/styles/split-button.css +95 -0
- package/dist/styles/state-banner.css +38 -0
- package/dist/styles/styles.css +12 -0
- package/dist/styles/summary-row.css +161 -0
- package/dist/styles/sunken-panel.css +1 -4
- package/dist/styles/surface-scaffold.css +119 -0
- package/dist/styles/tab-navigator.css +1 -4
- package/dist/styles/text.css +62 -0
- package/dist/styles/token-search-field.css +12 -1
- package/dist/styles/toolbar-control-group.css +144 -48
- package/dist/styles/toolbar-text.css +23 -0
- package/dist/styles/toolbar.css +16 -9
- package/dist/styles/value-table.css +76 -0
- package/dist/styles/webawesome.css +4 -4
- package/dist/styles/workbench.css +2 -8
- package/dist/summary-row.d.ts +56 -0
- package/dist/summary-row.js +4 -0
- package/dist/summary-row.js.map +1 -0
- package/dist/sunken-panel.d.ts +8 -1
- package/dist/sunken-panel.js +2 -1
- package/dist/surface-scaffold-register.js +7 -1
- package/dist/surface-scaffold-register.js.map +1 -1
- package/dist/surface-scaffold.d.ts +75 -2
- package/dist/surface-scaffold.js +2 -1
- package/dist/tab-navigator.js +4 -1
- package/dist/tab-navigator.js.map +1 -1
- package/dist/text.d.ts +39 -4
- package/dist/text.js +1 -1
- package/dist/toolbar-control-group.d.ts +8 -1
- package/dist/toolbar-control-group.js +1 -1
- package/dist/toolbar-text.d.ts +14 -1
- package/dist/toolbar-text.js +1 -1
- package/dist/toolbar.d.ts +14 -3
- package/dist/toolbar.js +1 -1
- package/dist/value-table.d.ts +20 -2
- package/dist/value-table.js +1 -1
- package/dist/wire-catalog.d.ts +1 -0
- package/dist/wire-comboboxes.d.ts +26 -0
- package/dist/wire-comboboxes.js +3 -0
- package/dist/wire-comboboxes.js.map +1 -0
- package/dist/wire-corner-status.d.ts +11 -0
- package/dist/wire-corner-status.js +3 -0
- package/dist/wire-corner-status.js.map +1 -0
- package/dist/wire-file-pickers.d.ts +26 -0
- package/dist/wire-file-pickers.js +3 -0
- package/dist/wire-file-pickers.js.map +1 -0
- package/dist/wire-list-reorder.d.ts +41 -0
- package/dist/wire-list-reorder.js +3 -0
- package/dist/wire-list-reorder.js.map +1 -0
- package/dist/wire-token-search-fields.js +1 -1
- package/dist/workbench.d.ts +1 -0
- package/dist/workbench.js +2 -1
- package/docs/accessibility.md +45 -2
- package/docs/anchored-surface.md +15 -7
- package/docs/app-layouts.md +2 -1
- package/docs/catalog.md +41 -0
- package/docs/component-contract.md +26 -6
- package/docs/component-selection.md +149 -13
- package/docs/design/templates/choice-chips/color-palette-dark.svg +1 -0
- package/docs/design/templates/choice-chips/color-palette.svg +1 -0
- package/docs/design/templates/choice-chips/compact-icons-dark.svg +1 -0
- package/docs/design/templates/choice-chips/compact-icons.svg +1 -0
- package/docs/design/templates/choice-chips-dark.svg +1 -0
- package/docs/design/templates/choice-chips.svg +1 -0
- package/docs/design/templates/list-action-row/trailing-menu-dark.svg +1 -0
- package/docs/design/templates/list-action-row/trailing-menu.svg +1 -0
- 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/state-banner/strip-dark.svg +1 -0
- package/docs/design/templates/state-banner/strip.svg +1 -0
- package/docs/design/templates/state-banner-dark.svg +1 -1
- package/docs/design/templates/state-banner.svg +1 -1
- package/docs/design/templates.md +1 -1
- package/docs/document-baseline.md +51 -0
- package/docs/layout.md +52 -1
- package/docs/split-view.md +20 -2
- package/docs/sunken-panel.md +13 -0
- package/docs/surface-scaffold.md +66 -1
- package/docs/ux-demo.md +1 -0
- package/docs/webawesome-theme.md +6 -2
- package/llms.txt +125 -16
- package/package.json +89 -1
- package/vite-ux-review.d.mts +39 -0
- package/vite-ux-review.mjs +75 -20
- package/dist/chunk-3DXHNLME.js.map +0 -1
- package/dist/chunk-3PO7JEK7.js.map +0 -1
- package/dist/chunk-3XPGJUUQ.js.map +0 -1
- package/dist/chunk-4Y4L5YEI.js +0 -66
- package/dist/chunk-4Y4L5YEI.js.map +0 -1
- package/dist/chunk-75YOTZ25.js.map +0 -1
- package/dist/chunk-7QQ3HE47.js.map +0 -1
- package/dist/chunk-A7DYEERU.js +0 -59
- package/dist/chunk-A7DYEERU.js.map +0 -1
- package/dist/chunk-B3TROLC2.js.map +0 -1
- package/dist/chunk-BYHGRKC3.js.map +0 -1
- package/dist/chunk-DL55BSQX.js.map +0 -1
- package/dist/chunk-FL6J644M.js.map +0 -1
- package/dist/chunk-GIUOXAVL.js.map +0 -1
- package/dist/chunk-IOS2NXW7.js.map +0 -1
- package/dist/chunk-J3AWE5I4.js +0 -50
- package/dist/chunk-J3AWE5I4.js.map +0 -1
- package/dist/chunk-LAZLBC2Q.js.map +0 -1
- package/dist/chunk-MORVLMDG.js.map +0 -1
- package/dist/chunk-MTCTX25G.js.map +0 -1
- package/dist/chunk-O27D24CA.js.map +0 -1
- package/dist/chunk-PGL6TXFW.js.map +0 -1
- package/dist/chunk-QCLLBMLA.js.map +0 -1
- package/dist/chunk-QQICWWNX.js.map +0 -1
- package/dist/chunk-TKDDTLG5.js.map +0 -1
- package/dist/chunk-TNG3XKHB.js.map +0 -1
- package/dist/chunk-XKZPBRU7.js.map +0 -1
|
@@ -215,10 +215,35 @@
|
|
|
215
215
|
|
|
216
216
|
.kui-toolbar-control-group[data-sizing="grow"][data-expanded="true"] {
|
|
217
217
|
--_kui-toolbar-group-grow-search-width: 100%;
|
|
218
|
+
/* The grown group's content-box width at its basis (basis minus the 1px
|
|
219
|
+
border and 1px padding on each side). A collapsible search lays its editor
|
|
220
|
+
out at least this wide while the group's flex size animates open, so the
|
|
221
|
+
clipped query is revealed rather than re-wrapped every frame (KF-50K0JM). */
|
|
222
|
+
--_kui-toolbar-group-grow-search-min-width: calc(
|
|
223
|
+
var(--kui-toolbar-group-grow-basis, 19rem) - 4px
|
|
224
|
+
);
|
|
218
225
|
width: auto;
|
|
219
226
|
min-width: var(--kui-toolbar-group-grow-basis, 19rem);
|
|
220
227
|
flex: 1 1 var(--kui-toolbar-group-grow-basis, 19rem);
|
|
221
228
|
}
|
|
229
|
+
|
|
230
|
+
/* A grow search animates its flex size, not `width`: an expanded grow group's
|
|
231
|
+
`width: auto` cannot interpolate, so it used to snap open while the search
|
|
232
|
+
inside animated, leaving an empty band (KF-50K0JM). The collapsed state names
|
|
233
|
+
a definite basis and minimum so all three flex lengths interpolate. */
|
|
234
|
+
.kui-toolbar-control-group[data-content="search"][data-sizing="grow"] {
|
|
235
|
+
/* The group owns this motion; a collapsible search inside follows it on
|
|
236
|
+
every frame rather than running its own width transition. */
|
|
237
|
+
--_kui-toolbar-group-grow-search-width-duration: 0s;
|
|
238
|
+
transition-property:
|
|
239
|
+
width, flex-basis, flex-grow, min-width, background-color, border-color;
|
|
240
|
+
transition-duration: 0.25s, 0.25s, 0.25s, 0.25s, 0.2s, 0.2s;
|
|
241
|
+
transition-timing-function: ease;
|
|
242
|
+
}
|
|
243
|
+
.kui-toolbar-control-group[data-content="search"][data-sizing="grow"][data-expanded="false"] {
|
|
244
|
+
min-width: var(--kui-toolbar-group-size, calc(2px + 2.625rem));
|
|
245
|
+
flex: 0 0 var(--kui-toolbar-group-size, calc(2px + 2.625rem));
|
|
246
|
+
}
|
|
222
247
|
.kui-toolbar-control-group[data-sizing="fill"] {
|
|
223
248
|
width: 100%;
|
|
224
249
|
min-width: 0;
|
|
@@ -256,15 +281,32 @@
|
|
|
256
281
|
|
|
257
282
|
@container kui-toolbar (max-width: 30rem) {
|
|
258
283
|
.kui-toolbar-control-group[data-sizing="grow"][data-expanded="true"] {
|
|
284
|
+
--_kui-toolbar-group-grow-search-min-width: 0px;
|
|
259
285
|
width: 100%;
|
|
260
286
|
min-width: 0;
|
|
261
287
|
flex: 1 1 100%;
|
|
262
288
|
}
|
|
289
|
+
|
|
290
|
+
/* Here the grown search takes its own line. Animating its basis would push
|
|
291
|
+
the trailing siblings and then jump the group to the next line mid-way, so
|
|
292
|
+
it opens and closes in one frame with the search filling it. */
|
|
293
|
+
.kui-toolbar-control-group[data-content="search"][data-sizing="grow"] {
|
|
294
|
+
transition-property: background-color, border-color;
|
|
295
|
+
transition-duration: 0.2s;
|
|
296
|
+
}
|
|
263
297
|
}
|
|
264
298
|
.kui-toolbar-control-group[data-content="text"]
|
|
265
|
-
> :is(
|
|
299
|
+
> :is(
|
|
300
|
+
button,
|
|
301
|
+
wa-button:not(:where(.kui-icon-button)),
|
|
302
|
+
.kui-toolbar-action-link
|
|
303
|
+
),
|
|
266
304
|
.kui-toolbar-control-group[data-content="mixed"]
|
|
267
|
-
> :is(
|
|
305
|
+
> :is(
|
|
306
|
+
button,
|
|
307
|
+
wa-button:not(:where(.kui-icon-button)),
|
|
308
|
+
.kui-toolbar-action-link
|
|
309
|
+
) {
|
|
268
310
|
min-width: max-content;
|
|
269
311
|
}
|
|
270
312
|
.kui-toolbar-control-group[data-content="mixed"] > button {
|
|
@@ -272,14 +314,14 @@
|
|
|
272
314
|
gap: var(--kui-space-xs);
|
|
273
315
|
}
|
|
274
316
|
.kui-toolbar-control-group[data-content="mixed"]
|
|
275
|
-
wa-button:not(:where(.kui-popup-menu >
|
|
317
|
+
wa-button:not(:where(.kui-popup-menu > *, .kui-icon-button)) {
|
|
276
318
|
line-height: normal;
|
|
277
319
|
}
|
|
278
320
|
/* Toolbar controls never wrap. Web Awesome's label part is a plain block, so a
|
|
279
321
|
slotted icon (a block SVG) and its text would otherwise stack vertically —
|
|
280
322
|
lay them out on one row the way native mixed buttons already are. */
|
|
281
323
|
.kui-toolbar-control-group
|
|
282
|
-
wa-button:not(:where(.kui-popup-menu >
|
|
324
|
+
wa-button:not(:where(.kui-popup-menu > *, .kui-icon-button))::part(label) {
|
|
283
325
|
display: inline-flex;
|
|
284
326
|
align-items: center;
|
|
285
327
|
gap: var(--kui-space-xs);
|
|
@@ -335,11 +377,32 @@
|
|
|
335
377
|
background: transparent;
|
|
336
378
|
}
|
|
337
379
|
|
|
380
|
+
/* `selectedChrome="none"`: a pressed control paints like its unpressed
|
|
381
|
+
neighbors, for an icon-state toggle whose glyph already shows the state.
|
|
382
|
+
One button opts out alone with `data-selected-chrome="none"`. After the
|
|
383
|
+
tone and appearance rules above, so it wins over their selected fills. */
|
|
384
|
+
.kui-toolbar-control-group[data-selected-chrome="none"],
|
|
385
|
+
.kui-toolbar-control-group
|
|
386
|
+
> :is(
|
|
387
|
+
button,
|
|
388
|
+
wa-button:not(:where(.kui-icon-button))
|
|
389
|
+
)[data-selected-chrome="none"] {
|
|
390
|
+
--kui-toolbar-control-selected-shadow: none;
|
|
391
|
+
--kui-toolbar-control-selected-border: transparent;
|
|
392
|
+
--kui-toolbar-control-selected-background: transparent;
|
|
393
|
+
--kui-toolbar-control-selected-color: var(--kui-toolbar-control-color);
|
|
394
|
+
}
|
|
395
|
+
|
|
338
396
|
/* The group lays out its own native and raw Web Awesome children. A composed
|
|
339
397
|
PopupMenu (`wa-dropdown.kui-popup-menu`) or Select sizes itself in the
|
|
340
398
|
group's context from its own stylesheet (popup-menu.css, select.css); the
|
|
341
399
|
group names those children by class only to key its own state on them. */
|
|
342
|
-
.kui-toolbar-control-group
|
|
400
|
+
.kui-toolbar-control-group
|
|
401
|
+
> :is(
|
|
402
|
+
button,
|
|
403
|
+
wa-button:not(:where(.kui-icon-button)),
|
|
404
|
+
.kui-toolbar-action-link
|
|
405
|
+
),
|
|
343
406
|
.kui-toolbar-control-group > wa-dropdown:not(.kui-popup-menu) {
|
|
344
407
|
flex: 0 0 auto;
|
|
345
408
|
}
|
|
@@ -366,12 +429,15 @@
|
|
|
366
429
|
place-items: center;
|
|
367
430
|
}
|
|
368
431
|
|
|
369
|
-
|
|
432
|
+
/* A native button that is disabled, or kept focusable with aria-disabled,
|
|
433
|
+
dims and drops hover chrome. */
|
|
434
|
+
.kui-toolbar-control-group > button:is(:disabled, [aria-disabled="true"]) {
|
|
370
435
|
opacity: 0.5;
|
|
371
436
|
cursor: not-allowed;
|
|
372
437
|
}
|
|
373
438
|
|
|
374
|
-
.kui-toolbar-control-group
|
|
439
|
+
.kui-toolbar-control-group
|
|
440
|
+
> button:not(:disabled, [aria-disabled="true"]):hover {
|
|
375
441
|
border-color: var(--kui-toolbar-control-border);
|
|
376
442
|
background: var(--kui-toolbar-control-hover-background);
|
|
377
443
|
}
|
|
@@ -429,7 +495,9 @@
|
|
|
429
495
|
}
|
|
430
496
|
|
|
431
497
|
.kui-toolbar-control-group > button svg,
|
|
432
|
-
.kui-toolbar-control-group
|
|
498
|
+
.kui-toolbar-control-group
|
|
499
|
+
wa-button:not(:where(.kui-popup-menu > *, .kui-icon-button))
|
|
500
|
+
> svg,
|
|
433
501
|
.kui-toolbar-control-group > .kui-toolbar-action-link svg {
|
|
434
502
|
display: block;
|
|
435
503
|
width: 1rem;
|
|
@@ -441,40 +509,44 @@
|
|
|
441
509
|
buttons: a composed PopupMenu's trigger (`.kui-popup-menu > wa-button`) is
|
|
442
510
|
excluded inside a zero-specificity `:where()` and takes the same metrics
|
|
443
511
|
from popup-menu.css. */
|
|
444
|
-
.kui-toolbar-control-group
|
|
512
|
+
.kui-toolbar-control-group
|
|
513
|
+
wa-button:not(:where(.kui-popup-menu > *, .kui-icon-button)) {
|
|
445
514
|
--wa-form-control-height: 2.5rem;
|
|
446
515
|
}
|
|
447
516
|
.kui-toolbar-control-group[data-size="compact"]
|
|
448
|
-
wa-button:not(:where(.kui-popup-menu >
|
|
517
|
+
wa-button:not(:where(.kui-popup-menu > *, .kui-icon-button)) {
|
|
449
518
|
--wa-form-control-height: 2rem;
|
|
450
519
|
}
|
|
451
520
|
|
|
452
|
-
.kui-toolbar-control-group > wa-button,
|
|
521
|
+
.kui-toolbar-control-group > wa-button:not(:where(.kui-icon-button)),
|
|
453
522
|
.kui-toolbar-control-group > wa-dropdown:not(.kui-popup-menu),
|
|
454
|
-
.kui-toolbar-control-group > wa-dropdown:not(.kui-popup-menu) > wa-button,
|
|
455
523
|
.kui-toolbar-control-group
|
|
456
524
|
> wa-dropdown:not(.kui-popup-menu)
|
|
457
|
-
> wa-button
|
|
525
|
+
> wa-button:not(:where(.kui-icon-button)),
|
|
526
|
+
.kui-toolbar-control-group
|
|
527
|
+
> wa-dropdown:not(.kui-popup-menu)
|
|
528
|
+
> wa-button:not(:where(.kui-icon-button))::part(base) {
|
|
458
529
|
min-width: 2.5rem;
|
|
459
530
|
height: 2.5rem;
|
|
460
531
|
}
|
|
461
532
|
.kui-toolbar-control-group[data-size="compact"] > button,
|
|
462
533
|
.kui-toolbar-control-group[data-size="compact"] > .kui-toolbar-action-link,
|
|
463
|
-
.kui-toolbar-control-group[data-size="compact"]
|
|
534
|
+
.kui-toolbar-control-group[data-size="compact"]
|
|
535
|
+
> wa-button:not(:where(.kui-icon-button)),
|
|
464
536
|
.kui-toolbar-control-group[data-size="compact"]
|
|
465
537
|
> wa-dropdown:not(.kui-popup-menu),
|
|
466
538
|
.kui-toolbar-control-group[data-size="compact"]
|
|
467
539
|
> wa-dropdown:not(.kui-popup-menu)
|
|
468
|
-
> wa-button,
|
|
540
|
+
> wa-button:not(:where(.kui-icon-button)),
|
|
469
541
|
.kui-toolbar-control-group[data-size="compact"]
|
|
470
542
|
> wa-dropdown:not(.kui-popup-menu)
|
|
471
|
-
> wa-button::part(base),
|
|
543
|
+
> wa-button:not(:where(.kui-icon-button))::part(base),
|
|
472
544
|
.kui-toolbar-control-group[data-size="compact"][data-nested-dropdown="true"]
|
|
473
545
|
wa-dropdown:not(.kui-popup-menu)
|
|
474
|
-
wa-button,
|
|
546
|
+
wa-button:not(:where(.kui-icon-button)),
|
|
475
547
|
.kui-toolbar-control-group[data-size="compact"][data-nested-dropdown="true"]
|
|
476
548
|
wa-dropdown:not(.kui-popup-menu)
|
|
477
|
-
wa-button::part(base) {
|
|
549
|
+
wa-button:not(:where(.kui-icon-button))::part(base) {
|
|
478
550
|
min-width: 2rem;
|
|
479
551
|
height: 2rem;
|
|
480
552
|
min-height: 2rem;
|
|
@@ -523,7 +595,7 @@
|
|
|
523
595
|
.kui-toolbar-control-group[data-size="compact"][data-content="mixed"]
|
|
524
596
|
> wa-dropdown:not(.kui-popup-menu),
|
|
525
597
|
.kui-toolbar-control-group[data-size="compact"][data-content="mixed"]
|
|
526
|
-
> wa-button {
|
|
598
|
+
> wa-button:not(:where(.kui-icon-button)) {
|
|
527
599
|
margin: -2px;
|
|
528
600
|
}
|
|
529
601
|
|
|
@@ -533,25 +605,26 @@
|
|
|
533
605
|
the separator and the caret beyond the group border. */
|
|
534
606
|
.kui-toolbar-control-group[data-content="mixed"][data-nested-dropdown="true"]
|
|
535
607
|
> wa-dropdown:not(.kui-popup-menu)
|
|
536
|
-
> wa-button,
|
|
608
|
+
> wa-button:not(:where(.kui-icon-button)),
|
|
537
609
|
.kui-toolbar-control-group[data-content="mixed"][data-nested-dropdown="true"]
|
|
538
610
|
> wa-dropdown:not(.kui-popup-menu)
|
|
539
|
-
> wa-button::part(base) {
|
|
611
|
+
> wa-button:not(:where(.kui-icon-button))::part(base) {
|
|
540
612
|
min-width: max-content;
|
|
541
613
|
}
|
|
542
614
|
.kui-toolbar-control-group[data-content="mixed"][data-nested-dropdown="true"]
|
|
543
615
|
> wa-dropdown:not(.kui-popup-menu)
|
|
544
|
-
> wa-button::part(base) {
|
|
616
|
+
> wa-button:not(:where(.kui-icon-button))::part(base) {
|
|
545
617
|
width: max-content;
|
|
546
618
|
}
|
|
547
619
|
|
|
548
620
|
.kui-toolbar-control-group[data-single="true"]
|
|
549
621
|
> wa-dropdown:not(.kui-popup-menu)
|
|
550
|
-
> wa-button::part(base) {
|
|
622
|
+
> wa-button:not(:where(.kui-icon-button))::part(base) {
|
|
551
623
|
width: max-content;
|
|
552
624
|
}
|
|
553
625
|
|
|
554
|
-
.kui-toolbar-control-group
|
|
626
|
+
.kui-toolbar-control-group
|
|
627
|
+
wa-button:not(:where(.kui-popup-menu > *, .kui-icon-button)) {
|
|
555
628
|
display: inline-flex;
|
|
556
629
|
line-height: 0;
|
|
557
630
|
align-items: center;
|
|
@@ -560,7 +633,7 @@
|
|
|
560
633
|
}
|
|
561
634
|
|
|
562
635
|
.kui-toolbar-control-group
|
|
563
|
-
wa-button:not(:where(.kui-popup-menu >
|
|
636
|
+
wa-button:not(:where(.kui-popup-menu > *, .kui-icon-button))::part(base) {
|
|
564
637
|
/* Match min-width to the 40px height so an icon-only button's highlight is at
|
|
565
638
|
least a circle, not a vertical oval — the host is 40px wide but the base
|
|
566
639
|
part was sizing to its ~32px content. Text/caret buttons grow past it. */
|
|
@@ -575,15 +648,18 @@
|
|
|
575
648
|
}
|
|
576
649
|
|
|
577
650
|
.kui-toolbar-control-group
|
|
578
|
-
wa-button:not(
|
|
651
|
+
wa-button:not(
|
|
652
|
+
:where(.kui-popup-menu > *, .kui-icon-button),
|
|
653
|
+
[disabled]
|
|
654
|
+
):hover::part(base) {
|
|
579
655
|
border-color: var(--kui-toolbar-control-border);
|
|
580
656
|
background-color: var(--kui-toolbar-control-hover-background);
|
|
581
657
|
}
|
|
582
658
|
|
|
583
659
|
.kui-toolbar-control-group[data-single="true"]:has(
|
|
584
660
|
> :is(
|
|
585
|
-
button:not(:disabled),
|
|
586
|
-
wa-button,
|
|
661
|
+
button:not(:disabled, [aria-disabled="true"]),
|
|
662
|
+
wa-button:not([disabled]),
|
|
587
663
|
.kui-popup-menu,
|
|
588
664
|
wa-dropdown:not(.kui-popup-menu),
|
|
589
665
|
.kui-select,
|
|
@@ -594,9 +670,16 @@
|
|
|
594
670
|
}
|
|
595
671
|
|
|
596
672
|
.kui-toolbar-control-group[data-single="true"]
|
|
597
|
-
> :is(
|
|
673
|
+
> :is(
|
|
674
|
+
button,
|
|
675
|
+
wa-button:not(:where(.kui-icon-button)),
|
|
676
|
+
.kui-toolbar-action-link
|
|
677
|
+
):hover,
|
|
598
678
|
.kui-toolbar-control-group[data-single="true"]
|
|
599
|
-
wa-button:not(
|
|
679
|
+
wa-button:not(
|
|
680
|
+
:where(.kui-popup-menu > *, .kui-icon-button),
|
|
681
|
+
[disabled]
|
|
682
|
+
):hover::part(base) {
|
|
600
683
|
border-color: transparent;
|
|
601
684
|
background: transparent;
|
|
602
685
|
}
|
|
@@ -607,8 +690,8 @@
|
|
|
607
690
|
Done action). */
|
|
608
691
|
.kui-toolbar-control-group:not([data-single="true"]):has(
|
|
609
692
|
> :is(
|
|
610
|
-
button:not(:disabled),
|
|
611
|
-
wa-button,
|
|
693
|
+
button:not(:disabled, [aria-disabled="true"]),
|
|
694
|
+
wa-button:not([disabled]),
|
|
612
695
|
.kui-select,
|
|
613
696
|
.kui-toolbar-action-link
|
|
614
697
|
):nth-child(1 of :where(:not([data-toolbar-visibility-state]))):where(
|
|
@@ -619,17 +702,25 @@
|
|
|
619
702
|
}
|
|
620
703
|
|
|
621
704
|
.kui-toolbar-control-group:not([data-single="true"]):has(
|
|
622
|
-
> :is(
|
|
623
|
-
|
|
624
|
-
|
|
705
|
+
> :is(
|
|
706
|
+
button,
|
|
707
|
+
wa-button:not(:where(.kui-icon-button)),
|
|
708
|
+
.kui-toolbar-action-link
|
|
709
|
+
):nth-child(1 of :where(:not([data-toolbar-visibility-state]))):where(
|
|
710
|
+
:nth-last-child(1 of :not([data-toolbar-visibility-state]))
|
|
711
|
+
)
|
|
625
712
|
)
|
|
626
|
-
> :is(
|
|
713
|
+
> :is(
|
|
714
|
+
button,
|
|
715
|
+
wa-button:not(:where(.kui-icon-button)),
|
|
716
|
+
.kui-toolbar-action-link
|
|
717
|
+
):hover,
|
|
627
718
|
.kui-toolbar-control-group:not([data-single="true"]):has(
|
|
628
|
-
> :is(button, wa-button):nth-child(
|
|
719
|
+
> :is(button, wa-button:not(:where(.kui-icon-button))):nth-child(
|
|
629
720
|
1 of :where(:not([data-toolbar-visibility-state]))
|
|
630
721
|
):where(:nth-last-child(1 of :not([data-toolbar-visibility-state])))
|
|
631
722
|
)
|
|
632
|
-
> wa-button:hover::part(base) {
|
|
723
|
+
> wa-button:not(:where(.kui-icon-button)):hover::part(base) {
|
|
633
724
|
border-color: transparent;
|
|
634
725
|
background: transparent;
|
|
635
726
|
}
|
|
@@ -651,18 +742,22 @@
|
|
|
651
742
|
and stays inside the group's border instead of overflowing it as an oversized
|
|
652
743
|
square (KF-5BDDQ9). The selected text color rides on the host and inherits in. */
|
|
653
744
|
.kui-toolbar-control-group[data-single="false"]
|
|
654
|
-
> wa-button[aria-pressed="true"] {
|
|
745
|
+
> wa-button:not(:where(.kui-icon-button))[aria-pressed="true"] {
|
|
655
746
|
color: var(--kui-toolbar-control-selected-color);
|
|
656
747
|
}
|
|
657
748
|
.kui-toolbar-control-group[data-single="false"]
|
|
658
|
-
> wa-button[aria-pressed="true"]::part(base) {
|
|
749
|
+
> wa-button:not(:where(.kui-icon-button))[aria-pressed="true"]::part(base) {
|
|
659
750
|
border-color: var(--kui-toolbar-control-selected-border);
|
|
660
751
|
background: var(--kui-toolbar-control-selected-background);
|
|
661
752
|
box-shadow: var(--kui-toolbar-control-selected-shadow);
|
|
662
753
|
}
|
|
663
754
|
|
|
664
755
|
.kui-toolbar-control-group
|
|
665
|
-
> :is(
|
|
756
|
+
> :is(
|
|
757
|
+
button,
|
|
758
|
+
wa-button:not(:where(.kui-icon-button)),
|
|
759
|
+
.kui-toolbar-action-link
|
|
760
|
+
):focus-visible {
|
|
666
761
|
outline: var(--kui-focus-ring);
|
|
667
762
|
outline-offset: 1px;
|
|
668
763
|
}
|
|
@@ -743,12 +838,13 @@
|
|
|
743
838
|
}
|
|
744
839
|
|
|
745
840
|
.kui-toolbar-control-group[data-button-appearance="push"][data-single="true"]
|
|
746
|
-
> :is(button, wa-button)[aria-pressed="true"] {
|
|
841
|
+
> :is(button, wa-button:not(:where(.kui-icon-button)))[aria-pressed="true"] {
|
|
747
842
|
color: var(--kui-toolbar-control-pressed-color);
|
|
748
843
|
}
|
|
749
844
|
|
|
750
845
|
@media (prefers-reduced-motion: reduce) {
|
|
751
|
-
.kui-toolbar-control-group[data-content="search"]
|
|
846
|
+
.kui-toolbar-control-group[data-content="search"],
|
|
847
|
+
.kui-toolbar-control-group[data-content="search"][data-sizing="grow"] {
|
|
752
848
|
transition-duration: 0s;
|
|
753
849
|
}
|
|
754
850
|
|
|
@@ -785,18 +881,18 @@
|
|
|
785
881
|
.kui-toolbar-control-group[data-content="avatar"]:is(
|
|
786
882
|
[data-single="true"],
|
|
787
883
|
:has(
|
|
788
|
-
> :is(button, wa-button):nth-child(
|
|
884
|
+
> :is(button, wa-button:not(:where(.kui-icon-button))):nth-child(
|
|
789
885
|
1 of :where(:not([data-toolbar-visibility-state]))
|
|
790
886
|
):where(:nth-last-child(1 of :not([data-toolbar-visibility-state])))
|
|
791
887
|
)
|
|
792
888
|
)
|
|
793
|
-
> :is(button, wa-button) {
|
|
889
|
+
> :is(button, wa-button:not(:where(.kui-icon-button))) {
|
|
794
890
|
color: transparent;
|
|
795
891
|
}
|
|
796
892
|
|
|
797
893
|
.kui-toolbar-control-group[data-content="avatar"][data-single="false"]:not(
|
|
798
894
|
:has(
|
|
799
|
-
> :is(button, wa-button):nth-child(
|
|
895
|
+
> :is(button, wa-button:not(:where(.kui-icon-button))):nth-child(
|
|
800
896
|
1 of :where(:not([data-toolbar-visibility-state]))
|
|
801
897
|
):where(:nth-last-child(1 of :not([data-toolbar-visibility-state])))
|
|
802
898
|
)
|
|
@@ -804,12 +900,12 @@
|
|
|
804
900
|
> button[aria-pressed="true"],
|
|
805
901
|
.kui-toolbar-control-group[data-content="avatar"][data-single="false"]:not(
|
|
806
902
|
:has(
|
|
807
|
-
> :is(button, wa-button):nth-child(
|
|
903
|
+
> :is(button, wa-button:not(:where(.kui-icon-button))):nth-child(
|
|
808
904
|
1 of :where(:not([data-toolbar-visibility-state]))
|
|
809
905
|
):where(:nth-last-child(1 of :not([data-toolbar-visibility-state])))
|
|
810
906
|
)
|
|
811
907
|
)
|
|
812
|
-
> wa-button[aria-pressed="true"]::part(base) {
|
|
908
|
+
> wa-button:not(:where(.kui-icon-button))[aria-pressed="true"]::part(base) {
|
|
813
909
|
color: transparent;
|
|
814
910
|
background-image: var(--kui-toolbar-avatar-image);
|
|
815
911
|
background-origin: border-box;
|
|
@@ -49,6 +49,29 @@ button.kui-toolbar-text:focus-visible {
|
|
|
49
49
|
padding-block: max(0px, calc((var(--_kui-toolbar-band) - 1.25em) / 2));
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
/* A title with supporting copy stacks the two lines and centers them together
|
|
53
|
+
in the control band (growing past it only when they do not fit), so
|
|
54
|
+
trailing groups stay on the band and both lines start at the same edge. */
|
|
55
|
+
.kui-toolbar-text[data-has-description="true"] {
|
|
56
|
+
height: auto;
|
|
57
|
+
flex-direction: column;
|
|
58
|
+
align-items: stretch;
|
|
59
|
+
justify-content: center;
|
|
60
|
+
gap: 0.125rem;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.kui-toolbar-text__description {
|
|
64
|
+
min-width: 0;
|
|
65
|
+
overflow: hidden;
|
|
66
|
+
color: var(--kui-color-text-quiet);
|
|
67
|
+
font-size: var(--kui-font-xs);
|
|
68
|
+
font-weight: 400;
|
|
69
|
+
letter-spacing: normal;
|
|
70
|
+
line-height: 1.2;
|
|
71
|
+
text-overflow: ellipsis;
|
|
72
|
+
white-space: nowrap;
|
|
73
|
+
}
|
|
74
|
+
|
|
52
75
|
/* A filling title grows into its row's free space and truncates there. */
|
|
53
76
|
.kui-toolbar-text[data-fill="true"] {
|
|
54
77
|
flex: 1 1 auto;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/* The same frame as ValueTable: content-item margin, a real 1px border, the
|
|
2
|
+
rounded radius, and a lowered (or base) fill. Rows clip to its corners. */
|
|
3
|
+
.kui-framed-list {
|
|
4
|
+
--kui-framed-list-border: var(--kui-color-neutral-border-normal);
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
margin-block: 0;
|
|
8
|
+
margin-inline: var(--kui-layout-inline-margin, 0.5rem);
|
|
9
|
+
padding: 0;
|
|
10
|
+
overflow: hidden;
|
|
11
|
+
border: 1px solid var(--kui-framed-list-border);
|
|
12
|
+
border-radius: var(--kui-layout-rounded-radius, calc(1px + 0.6875rem));
|
|
13
|
+
background: var(--kui-color-surface-lowered);
|
|
14
|
+
list-style: none;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.kui-framed-list[data-surface="base"] {
|
|
18
|
+
background: var(--kui-color-surface);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/* Each row owns the content inset and the 1px divider above it, inset to the
|
|
22
|
+
row's padding like ValueTable's separators. Its margin is reset because a
|
|
23
|
+
document or Web Awesome native stylesheet indents list items. */
|
|
24
|
+
.kui-framed-list__row {
|
|
25
|
+
--_kui-framed-list-row-padding: var(--kui-layout-item-padding, 0.5rem);
|
|
26
|
+
position: relative;
|
|
27
|
+
display: grid;
|
|
28
|
+
min-width: 0;
|
|
29
|
+
margin: 0;
|
|
30
|
+
min-height: 2.75rem;
|
|
31
|
+
padding: var(--_kui-framed-list-row-padding);
|
|
32
|
+
box-sizing: border-box;
|
|
33
|
+
align-items: center;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.kui-framed-list__row + .kui-framed-list__row::before {
|
|
37
|
+
position: absolute;
|
|
38
|
+
top: 0;
|
|
39
|
+
right: var(--_kui-framed-list-row-padding);
|
|
40
|
+
left: var(--_kui-framed-list-row-padding);
|
|
41
|
+
border-top: 1px solid var(--kui-framed-list-border);
|
|
42
|
+
content: "";
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.kui-framed-list__row[data-highlighted="true"] {
|
|
46
|
+
background: var(--kui-color-brand-fill-quiet);
|
|
47
|
+
}
|
|
@@ -81,6 +81,22 @@
|
|
|
81
81
|
);
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
+
/* `inset="document"`: a reading inset on all four sides that replaces any
|
|
85
|
+
side-selected text or control inset. */
|
|
86
|
+
.kui-list[data-inset="document"] {
|
|
87
|
+
--_kui-list-inset-top: var(--kui-space-l);
|
|
88
|
+
--_kui-list-inset-right: var(--kui-space-xl);
|
|
89
|
+
--_kui-list-inset-bottom: var(--kui-space-l);
|
|
90
|
+
--_kui-list-inset-left: var(--kui-space-xl);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
@media (max-width: 36rem) {
|
|
94
|
+
.kui-list[data-inset="document"] {
|
|
95
|
+
--_kui-list-inset-right: var(--kui-space-m);
|
|
96
|
+
--_kui-list-inset-left: var(--kui-space-m);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
84
100
|
.kui-list[data-h-align="left"] {
|
|
85
101
|
align-items: flex-start;
|
|
86
102
|
align-content: flex-start;
|
|
@@ -113,6 +129,25 @@
|
|
|
113
129
|
overscroll-behavior-y: contain;
|
|
114
130
|
}
|
|
115
131
|
|
|
132
|
+
/* A scrollable List owns the overflow, so its rows keep their natural height
|
|
133
|
+
and scroll rather than shrink. Items that clip their own overflow (a
|
|
134
|
+
ListItem) have a zero automatic minimum height, so the default
|
|
135
|
+
`flex-shrink: 1` compressed multiline rows into one another once the List
|
|
136
|
+
was bounded by a max-height ancestor. */
|
|
137
|
+
.kui-list[data-scrollable="true"] > * {
|
|
138
|
+
flex-shrink: 0;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/* A scrollable List is a keyboard-focusable scroller: Chromium focuses it on
|
|
142
|
+
Tab when it holds no focusable rows, and a dialog may pick it as its first
|
|
143
|
+
focusable area. Its ring sits inside its box, so a rounded or clipping
|
|
144
|
+
parent cannot cut it off, and rounds with the standard control radius. */
|
|
145
|
+
.kui-list[data-scrollable="true"]:focus-visible {
|
|
146
|
+
border-radius: var(--kui-radius-m);
|
|
147
|
+
outline: var(--kui-focus-ring);
|
|
148
|
+
outline-offset: -3px;
|
|
149
|
+
}
|
|
150
|
+
|
|
116
151
|
.kui-list:is([divider-sides*="t"], [data-scroll-divider*="t"]) {
|
|
117
152
|
--_kui-list-divider-top: var(--kui-list-divider-color);
|
|
118
153
|
}
|
|
@@ -129,6 +164,15 @@
|
|
|
129
164
|
--_kui-list-divider-left: var(--kui-list-divider-color);
|
|
130
165
|
}
|
|
131
166
|
|
|
167
|
+
/* `surface`: a solid background behind the stack and its insets. */
|
|
168
|
+
.kui-list[data-surface="base"] {
|
|
169
|
+
background: var(--kui-color-surface);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.kui-list[data-surface="raised"] {
|
|
173
|
+
background: var(--kui-color-surface-raised);
|
|
174
|
+
}
|
|
175
|
+
|
|
132
176
|
/* `fill`: the layout root of a definite-height parent (an app root or a
|
|
133
177
|
fixed-height frame) takes its full height. Inside a flex layout use `flex`. */
|
|
134
178
|
.kui-list[data-fill="true"] {
|
|
@@ -68,6 +68,40 @@
|
|
|
68
68
|
outline-offset: 1px;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
/* Reorder presentation. A dragged row dims; the row under the pointer draws
|
|
72
|
+
a brand insertion line along the block edge the dragged rows would land
|
|
73
|
+
beside, inset to the row's content padding so it ends clear of the
|
|
74
|
+
rounded corners. */
|
|
75
|
+
.kui-list-action-row[data-dragging="true"] {
|
|
76
|
+
opacity: var(--kui-list-action-row-dragging-opacity, 0.55);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.kui-list-action-row[data-drop-position] {
|
|
80
|
+
position: relative;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.kui-list-action-row[data-drop-position]::after {
|
|
84
|
+
position: absolute;
|
|
85
|
+
z-index: 1;
|
|
86
|
+
inset-inline: var(--kui-layout-item-padding, 0.5rem);
|
|
87
|
+
height: var(--kui-list-action-row-drop-indicator-width, 2px);
|
|
88
|
+
border-radius: var(--kui-radius-pill);
|
|
89
|
+
background: var(
|
|
90
|
+
--kui-list-action-row-drop-indicator,
|
|
91
|
+
var(--kui-color-brand-border-loud)
|
|
92
|
+
);
|
|
93
|
+
content: "";
|
|
94
|
+
pointer-events: none;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.kui-list-action-row[data-drop-position="before"]::after {
|
|
98
|
+
inset-block-start: 0;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.kui-list-action-row[data-drop-position="after"]::after {
|
|
102
|
+
inset-block-end: 0;
|
|
103
|
+
}
|
|
104
|
+
|
|
71
105
|
.kui-list-action-row__primary,
|
|
72
106
|
.kui-list-action-row__trailing-action {
|
|
73
107
|
height: auto !important;
|
|
@@ -244,6 +278,11 @@
|
|
|
244
278
|
}
|
|
245
279
|
|
|
246
280
|
@media (forced-colors: active) {
|
|
281
|
+
.kui-list-action-row[data-drop-position]::after {
|
|
282
|
+
background: Highlight;
|
|
283
|
+
forced-color-adjust: none;
|
|
284
|
+
}
|
|
285
|
+
|
|
247
286
|
.kui-list-action-row {
|
|
248
287
|
--kui-list-action-row-border: ButtonText;
|
|
249
288
|
outline: 1px solid ButtonText;
|
|
@@ -243,6 +243,51 @@
|
|
|
243
243
|
);
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
+
/* Reorder presentation. A dragged row dims; the row under the pointer draws
|
|
247
|
+
a brand insertion line along the block edge the dragged rows would land
|
|
248
|
+
beside. The line sits inside the row (the row clips its overflow to its
|
|
249
|
+
rounded boundary) and is inset to the row's content padding so it ends
|
|
250
|
+
clear of the rounded corners. */
|
|
251
|
+
.kui-list-item[data-dragging="true"] {
|
|
252
|
+
opacity: var(--kui-list-item-dragging-opacity, 0.55);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
.kui-list-item[data-drop-position] {
|
|
256
|
+
position: relative;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
.kui-list-item[data-drop-position]::after {
|
|
260
|
+
position: absolute;
|
|
261
|
+
z-index: 1;
|
|
262
|
+
inset-inline: var(
|
|
263
|
+
--kui-list-item-padding-inline,
|
|
264
|
+
var(--kui-layout-item-padding, 0.5rem)
|
|
265
|
+
);
|
|
266
|
+
height: var(--kui-list-item-drop-indicator-width, 2px);
|
|
267
|
+
border-radius: var(--kui-radius-pill);
|
|
268
|
+
background: var(
|
|
269
|
+
--kui-list-item-drop-indicator,
|
|
270
|
+
var(--kui-color-brand-border-loud)
|
|
271
|
+
);
|
|
272
|
+
content: "";
|
|
273
|
+
pointer-events: none;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
.kui-list-item[data-drop-position="before"]::after {
|
|
277
|
+
inset-block-start: 0;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.kui-list-item[data-drop-position="after"]::after {
|
|
281
|
+
inset-block-end: 0;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
@media (forced-colors: active) {
|
|
285
|
+
.kui-list-item[data-drop-position]::after {
|
|
286
|
+
background: Highlight;
|
|
287
|
+
forced-color-adjust: none;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
246
291
|
.kui-list-item__status {
|
|
247
292
|
color: var(--kui-color-neutral-on-quiet);
|
|
248
293
|
font-size: var(--kui-font-xs);
|