@kerfjs/ui 5.0.0-beta.95 → 5.0.0-beta.97
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 +95 -55
- package/ai/component-catalog.json +1330 -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 +20 -7
- package/ai/components/list-item.md +17 -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 +55 -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 +152 -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 +53 -0
- package/dist/styles/components/collections/list-item/list-item.css +59 -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 +30 -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 +53 -0
- package/dist/styles/list-item.css +59 -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 +30 -1
- package/dist/styles/toolbar-control-group.css +152 -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/component-contract.md +30 -6
- package/docs/component-selection.md +165 -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 +138 -16
- package/package.json +89 -1
- 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
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/* The native file input stays inside each label for activation, keyboard
|
|
2
|
+
focus, and form submission, visually hidden but accessible. */
|
|
3
|
+
.kui-file-picker__input {
|
|
4
|
+
position: absolute;
|
|
5
|
+
width: 1px;
|
|
6
|
+
height: 1px;
|
|
7
|
+
overflow: hidden;
|
|
8
|
+
clip-path: inset(50%);
|
|
9
|
+
white-space: nowrap;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.kui-file-picker__icon {
|
|
13
|
+
display: inline-grid;
|
|
14
|
+
flex: none;
|
|
15
|
+
place-items: center;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* A compact, link-toned browse trigger. */
|
|
19
|
+
.kui-file-picker[data-presentation="trigger"] {
|
|
20
|
+
position: relative;
|
|
21
|
+
display: inline-flex;
|
|
22
|
+
min-height: 2rem;
|
|
23
|
+
padding: 0 var(--kui-space-xs);
|
|
24
|
+
border-radius: var(--kui-radius-pill);
|
|
25
|
+
color: var(--kui-color-text-link);
|
|
26
|
+
cursor: pointer;
|
|
27
|
+
align-items: center;
|
|
28
|
+
gap: var(--kui-space-2xs);
|
|
29
|
+
font-size: var(--kui-font-xs);
|
|
30
|
+
font-weight: var(--kui-font-weight-semibold);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.kui-file-picker[data-presentation="trigger"]:hover {
|
|
34
|
+
background: var(--kui-color-brand-fill-quiet);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* A dashed drop target with content-item margins, highlighted on hover and
|
|
38
|
+
while files are dragged over it. */
|
|
39
|
+
.kui-file-picker[data-presentation="drop-zone"] {
|
|
40
|
+
position: relative;
|
|
41
|
+
display: grid;
|
|
42
|
+
min-height: 5rem;
|
|
43
|
+
margin-inline: var(--kui-layout-inline-margin, 0.5rem);
|
|
44
|
+
padding: var(--kui-space-s);
|
|
45
|
+
box-sizing: border-box;
|
|
46
|
+
border: 1px dashed var(--kui-color-neutral-border-loud);
|
|
47
|
+
border-radius: var(--kui-layout-rounded-radius, calc(1px + 0.6875rem));
|
|
48
|
+
color: var(--kui-color-neutral-on-quiet);
|
|
49
|
+
cursor: pointer;
|
|
50
|
+
place-items: center;
|
|
51
|
+
align-content: center;
|
|
52
|
+
gap: var(--kui-space-2xs);
|
|
53
|
+
font-size: var(--kui-font-xs);
|
|
54
|
+
text-align: center;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.kui-file-picker[data-presentation="drop-zone"]:hover,
|
|
58
|
+
.kui-file-picker[data-presentation="drop-zone"][data-dragging="true"] {
|
|
59
|
+
border-color: var(--kui-color-text-link);
|
|
60
|
+
background: var(--kui-color-brand-fill-quiet);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.kui-file-picker__title {
|
|
64
|
+
color: var(--kui-color-text);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.kui-file-picker__detail {
|
|
68
|
+
font-size: var(--kui-font-2xs);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* Keyboard focus lands on the hidden input; the visible control shows it. */
|
|
72
|
+
.kui-file-picker:has(> .kui-file-picker__input:focus-visible) {
|
|
73
|
+
outline: var(--kui-focus-ring);
|
|
74
|
+
outline-offset: 2px;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.kui-file-picker[data-disabled="true"] {
|
|
78
|
+
cursor: default;
|
|
79
|
+
opacity: 0.5;
|
|
80
|
+
pointer-events: none;
|
|
81
|
+
}
|
|
@@ -131,6 +131,14 @@
|
|
|
131
131
|
rgb(228.157895 228.157895 255 / 0.07451)
|
|
132
132
|
)
|
|
133
133
|
);
|
|
134
|
+
/* The sunken surface: a fine monochrome grain over the lowered color. The
|
|
135
|
+
tile is generated once per page by the first sunken surface that renders
|
|
136
|
+
(ensureSunkenTexture); set --kui-sunken-texture to none at :root for a
|
|
137
|
+
flat lowered surface, or to another image. */
|
|
138
|
+
--kui-sunken-texture: var(--_kui-sunken-texture-generated, none);
|
|
139
|
+
--kui-sunken-surface:
|
|
140
|
+
var(--kui-sunken-texture) 0 0 / 100px 100px repeat,
|
|
141
|
+
var(--kui-color-surface-lowered);
|
|
134
142
|
--kui-color-text: var(--wa-color-text-normal, light-dark(#1d1d1f, #f5f5f7));
|
|
135
143
|
--kui-color-text-quiet: var(
|
|
136
144
|
--wa-color-text-quiet,
|
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/* Web Awesome's own icon-button geometry, for a lone LucideIcon: a square one
|
|
2
|
+
form control height on each side with the glyph centered. Web Awesome
|
|
3
|
+
applies it only to a lone wa-icon. */
|
|
4
|
+
.kui-icon-button::part(base) {
|
|
5
|
+
width: var(--wa-form-control-height);
|
|
6
|
+
min-width: var(--wa-form-control-height);
|
|
7
|
+
padding: 0;
|
|
8
|
+
aspect-ratio: 1;
|
|
9
|
+
justify-content: center;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.kui-icon-button::part(label) {
|
|
13
|
+
display: flex;
|
|
14
|
+
justify-content: center;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* Beside a field in a ListInsetControl, the square keeps its size instead of
|
|
18
|
+
growing to share the row, and lines up with the field below its label. */
|
|
19
|
+
.kui-list-inset-control > .kui-icon-button {
|
|
20
|
+
flex: none;
|
|
21
|
+
align-self: flex-end;
|
|
22
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/* The single contained ToolbarControlGroup's geometry, standalone: a 44px
|
|
2
|
+
filled, bordered control whose 2px-inset face lifts to the raised surface
|
|
3
|
+
on hover and stays raised, in the brand foreground, while pressed. */
|
|
4
|
+
.kui-icon-toggle-button {
|
|
5
|
+
--_kui-icon-toggle-button-radius: var(
|
|
6
|
+
--kui-layout-pill-radius,
|
|
7
|
+
calc(1px + 1.3125rem)
|
|
8
|
+
);
|
|
9
|
+
--_kui-icon-toggle-button-inset: var(
|
|
10
|
+
--kui-layout-highlight-inset,
|
|
11
|
+
0.125rem
|
|
12
|
+
);
|
|
13
|
+
/* One full-size track for the face. The button sets its own track and
|
|
14
|
+
alignment because native or document button styles center content,
|
|
15
|
+
which would shrink the face to the icon. */
|
|
16
|
+
display: inline-grid;
|
|
17
|
+
grid-template: minmax(0, 1fr) / minmax(0, 1fr);
|
|
18
|
+
place-content: stretch;
|
|
19
|
+
place-items: stretch;
|
|
20
|
+
width: 2.75rem;
|
|
21
|
+
height: 2.75rem;
|
|
22
|
+
margin: 0;
|
|
23
|
+
padding: var(--_kui-icon-toggle-button-inset);
|
|
24
|
+
box-sizing: border-box;
|
|
25
|
+
border: 1px solid var(--kui-color-neutral-border-normal);
|
|
26
|
+
border-radius: var(--_kui-icon-toggle-button-radius);
|
|
27
|
+
color: var(--kui-color-neutral-on-quiet);
|
|
28
|
+
background: var(--kui-color-neutral-fill-normal);
|
|
29
|
+
cursor: pointer;
|
|
30
|
+
flex: none;
|
|
31
|
+
font: inherit;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.kui-icon-toggle-button[data-shape="rounded"] {
|
|
35
|
+
--_kui-icon-toggle-button-radius: var(
|
|
36
|
+
--kui-layout-rounded-radius,
|
|
37
|
+
calc(1px + 0.6875rem)
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.kui-icon-toggle-button__face {
|
|
42
|
+
display: grid;
|
|
43
|
+
border-radius: max(
|
|
44
|
+
0px,
|
|
45
|
+
calc(
|
|
46
|
+
var(--_kui-icon-toggle-button-radius) -
|
|
47
|
+
var(--_kui-icon-toggle-button-inset) - 1px
|
|
48
|
+
)
|
|
49
|
+
);
|
|
50
|
+
place-items: center;
|
|
51
|
+
transition:
|
|
52
|
+
background-color 120ms ease,
|
|
53
|
+
box-shadow 120ms ease;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.kui-icon-toggle-button:hover:not(:disabled) > .kui-icon-toggle-button__face {
|
|
57
|
+
background: var(--kui-color-surface);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.kui-icon-toggle-button[aria-pressed="true"] {
|
|
61
|
+
color: var(--kui-color-brand-on-quiet);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.kui-icon-toggle-button[aria-pressed="true"] > .kui-icon-toggle-button__face {
|
|
65
|
+
background: var(--kui-color-surface);
|
|
66
|
+
box-shadow: var(--kui-shadow-s);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.kui-icon-toggle-button:focus-visible {
|
|
70
|
+
outline: var(--kui-focus-ring);
|
|
71
|
+
outline-offset: 1px;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.kui-icon-toggle-button:disabled {
|
|
75
|
+
cursor: default;
|
|
76
|
+
opacity: 0.5;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
@media (prefers-reduced-motion: reduce) {
|
|
80
|
+
.kui-icon-toggle-button__face {
|
|
81
|
+
transition: none;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -46,6 +46,20 @@
|
|
|
46
46
|
border-end-end-radius: 0;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
/* In a divided list, a corner is flat wherever its edge carries a divider
|
|
50
|
+
line, whichever row draws it (see ListItem). */
|
|
51
|
+
:is([data-divider="after"], [data-divider="both"]) + .kui-list-action-row {
|
|
52
|
+
border-start-start-radius: 0;
|
|
53
|
+
border-start-end-radius: 0;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.kui-list-action-row:has(
|
|
57
|
+
+ :is([data-divider="before"], [data-divider="both"])
|
|
58
|
+
) {
|
|
59
|
+
border-end-start-radius: 0;
|
|
60
|
+
border-end-end-radius: 0;
|
|
61
|
+
}
|
|
62
|
+
|
|
49
63
|
.kui-list-action-row:not([data-placeholder="true"]):has(
|
|
50
64
|
.kui-list-action-row__primary:hover
|
|
51
65
|
) {
|
|
@@ -68,6 +82,40 @@
|
|
|
68
82
|
outline-offset: 1px;
|
|
69
83
|
}
|
|
70
84
|
|
|
85
|
+
/* Reorder presentation. A dragged row dims; the row under the pointer draws
|
|
86
|
+
a brand insertion line along the block edge the dragged rows would land
|
|
87
|
+
beside, inset to the row's content padding so it ends clear of the
|
|
88
|
+
rounded corners. */
|
|
89
|
+
.kui-list-action-row[data-dragging="true"] {
|
|
90
|
+
opacity: var(--kui-list-action-row-dragging-opacity, 0.55);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.kui-list-action-row[data-drop-position] {
|
|
94
|
+
position: relative;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.kui-list-action-row[data-drop-position]::after {
|
|
98
|
+
position: absolute;
|
|
99
|
+
z-index: 1;
|
|
100
|
+
inset-inline: var(--kui-layout-item-padding, 0.5rem);
|
|
101
|
+
height: var(--kui-list-action-row-drop-indicator-width, 2px);
|
|
102
|
+
border-radius: var(--kui-radius-pill);
|
|
103
|
+
background: var(
|
|
104
|
+
--kui-list-action-row-drop-indicator,
|
|
105
|
+
var(--kui-color-brand-border-loud)
|
|
106
|
+
);
|
|
107
|
+
content: "";
|
|
108
|
+
pointer-events: none;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.kui-list-action-row[data-drop-position="before"]::after {
|
|
112
|
+
inset-block-start: 0;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.kui-list-action-row[data-drop-position="after"]::after {
|
|
116
|
+
inset-block-end: 0;
|
|
117
|
+
}
|
|
118
|
+
|
|
71
119
|
.kui-list-action-row__primary,
|
|
72
120
|
.kui-list-action-row__trailing-action {
|
|
73
121
|
height: auto !important;
|
|
@@ -244,6 +292,11 @@
|
|
|
244
292
|
}
|
|
245
293
|
|
|
246
294
|
@media (forced-colors: active) {
|
|
295
|
+
.kui-list-action-row[data-drop-position]::after {
|
|
296
|
+
background: Highlight;
|
|
297
|
+
forced-color-adjust: none;
|
|
298
|
+
}
|
|
299
|
+
|
|
247
300
|
.kui-list-action-row {
|
|
248
301
|
--kui-list-action-row-border: ButtonText;
|
|
249
302
|
outline: 1px solid ButtonText;
|
|
@@ -68,6 +68,20 @@
|
|
|
68
68
|
border-end-end-radius: 0;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
/* In a divided list, a corner is flat wherever its edge carries a divider
|
|
72
|
+
line, whichever row draws it: the previous row's after line squares this
|
|
73
|
+
row's top, and the next row's before line squares its bottom. So first,
|
|
74
|
+
middle, last, and only rows round just their outer corners. */
|
|
75
|
+
:is([data-divider="after"], [data-divider="both"]) + .kui-list-item {
|
|
76
|
+
border-start-start-radius: 0;
|
|
77
|
+
border-start-end-radius: 0;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.kui-list-item:has(+ :is([data-divider="before"], [data-divider="both"])) {
|
|
81
|
+
border-end-start-radius: 0;
|
|
82
|
+
border-end-end-radius: 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
71
85
|
.kui-list-item[data-has-icon="true"] {
|
|
72
86
|
grid-template-columns: var(
|
|
73
87
|
--kui-list-item-columns,
|
|
@@ -243,6 +257,51 @@
|
|
|
243
257
|
);
|
|
244
258
|
}
|
|
245
259
|
|
|
260
|
+
/* Reorder presentation. A dragged row dims; the row under the pointer draws
|
|
261
|
+
a brand insertion line along the block edge the dragged rows would land
|
|
262
|
+
beside. The line sits inside the row (the row clips its overflow to its
|
|
263
|
+
rounded boundary) and is inset to the row's content padding so it ends
|
|
264
|
+
clear of the rounded corners. */
|
|
265
|
+
.kui-list-item[data-dragging="true"] {
|
|
266
|
+
opacity: var(--kui-list-item-dragging-opacity, 0.55);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
.kui-list-item[data-drop-position] {
|
|
270
|
+
position: relative;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
.kui-list-item[data-drop-position]::after {
|
|
274
|
+
position: absolute;
|
|
275
|
+
z-index: 1;
|
|
276
|
+
inset-inline: var(
|
|
277
|
+
--kui-list-item-padding-inline,
|
|
278
|
+
var(--kui-layout-item-padding, 0.5rem)
|
|
279
|
+
);
|
|
280
|
+
height: var(--kui-list-item-drop-indicator-width, 2px);
|
|
281
|
+
border-radius: var(--kui-radius-pill);
|
|
282
|
+
background: var(
|
|
283
|
+
--kui-list-item-drop-indicator,
|
|
284
|
+
var(--kui-color-brand-border-loud)
|
|
285
|
+
);
|
|
286
|
+
content: "";
|
|
287
|
+
pointer-events: none;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
.kui-list-item[data-drop-position="before"]::after {
|
|
291
|
+
inset-block-start: 0;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.kui-list-item[data-drop-position="after"]::after {
|
|
295
|
+
inset-block-end: 0;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
@media (forced-colors: active) {
|
|
299
|
+
.kui-list-item[data-drop-position]::after {
|
|
300
|
+
background: Highlight;
|
|
301
|
+
forced-color-adjust: none;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
246
305
|
.kui-list-item__status {
|
|
247
306
|
color: var(--kui-color-neutral-on-quiet);
|
|
248
307
|
font-size: var(--kui-font-xs);
|
package/dist/styles/list.css
CHANGED
|
@@ -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"] {
|
package/dist/styles/pane.css
CHANGED
|
@@ -44,17 +44,11 @@
|
|
|
44
44
|
Fixed chrome leaves the content slot scrolling; auto chrome lets the Pane
|
|
45
45
|
root scroll in its short mode, while its content remains transparent. */
|
|
46
46
|
.kui-pane[data-appearance="sunken"] > .kui-pane__content {
|
|
47
|
-
background: var(
|
|
48
|
-
--kui-sunken-panel-background,
|
|
49
|
-
var(--kui-color-surface-lowered)
|
|
50
|
-
);
|
|
47
|
+
background: var(--kui-sunken-panel-background, var(--kui-sunken-surface));
|
|
51
48
|
}
|
|
52
49
|
|
|
53
50
|
.kui-pane[data-appearance="sunken"][data-chrome-placement="auto"] {
|
|
54
|
-
background: var(
|
|
55
|
-
--kui-sunken-panel-background,
|
|
56
|
-
var(--kui-color-surface-lowered)
|
|
57
|
-
);
|
|
51
|
+
background: var(--kui-sunken-panel-background, var(--kui-sunken-surface));
|
|
58
52
|
}
|
|
59
53
|
|
|
60
54
|
.kui-pane[data-appearance="sunken"][data-chrome-placement="auto"]
|
|
@@ -104,8 +104,14 @@
|
|
|
104
104
|
height: var(--_kui-popup-row-icon-size);
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
+
/* A context menu takes no space where it is rendered: out of flow, it adds no
|
|
108
|
+
line box in block layout and no gap slot in a flex or grid container. Its
|
|
109
|
+
fixed anchor opens the menu at the recorded viewport point. */
|
|
107
110
|
.kui-popup-menu[data-trigger="context"] {
|
|
108
|
-
|
|
111
|
+
position: fixed;
|
|
112
|
+
top: 0;
|
|
113
|
+
left: 0;
|
|
114
|
+
display: block;
|
|
109
115
|
width: 0;
|
|
110
116
|
height: 0;
|
|
111
117
|
}
|
|
@@ -283,3 +289,65 @@
|
|
|
283
289
|
> wa-dropdown.kui-popup-menu::part(menu) {
|
|
284
290
|
padding: 0;
|
|
285
291
|
}
|
|
292
|
+
|
|
293
|
+
/* As a ListActionRow's trailing menu, the PopupMenu styles its trigger in the
|
|
294
|
+
row's context like the row's trailing button: a full-height 44px pill (36px
|
|
295
|
+
in a compact row) on the row's trailing-hover fill, with a 16px icon. */
|
|
296
|
+
.kui-list-action-row > .kui-popup-menu {
|
|
297
|
+
display: flex;
|
|
298
|
+
flex: none;
|
|
299
|
+
}
|
|
300
|
+
.kui-list-action-row > .kui-popup-menu > wa-button {
|
|
301
|
+
display: flex;
|
|
302
|
+
min-height: 2.75rem;
|
|
303
|
+
color: inherit;
|
|
304
|
+
}
|
|
305
|
+
.kui-list-action-row[data-density="compact"] > .kui-popup-menu > wa-button {
|
|
306
|
+
min-height: 2.25rem;
|
|
307
|
+
}
|
|
308
|
+
.kui-list-action-row > .kui-popup-menu > wa-button::part(base) {
|
|
309
|
+
width: 2.75rem;
|
|
310
|
+
min-width: 2.75rem;
|
|
311
|
+
height: 100%;
|
|
312
|
+
min-height: 0;
|
|
313
|
+
padding: 0;
|
|
314
|
+
border: 0;
|
|
315
|
+
border-radius: var(--kui-radius-pill);
|
|
316
|
+
color: inherit;
|
|
317
|
+
background: transparent;
|
|
318
|
+
}
|
|
319
|
+
.kui-list-action-row
|
|
320
|
+
> .kui-popup-menu
|
|
321
|
+
> wa-button:not([disabled]):hover::part(base) {
|
|
322
|
+
background: var(--kui-list-action-row-trailing-hover-background);
|
|
323
|
+
}
|
|
324
|
+
.kui-list-action-row > .kui-popup-menu > wa-button::part(base):focus-visible {
|
|
325
|
+
outline: var(--kui-focus-ring);
|
|
326
|
+
outline-offset: -2px;
|
|
327
|
+
}
|
|
328
|
+
.kui-list-action-row > .kui-popup-menu > wa-button > svg {
|
|
329
|
+
display: block;
|
|
330
|
+
width: 1rem;
|
|
331
|
+
height: 1rem;
|
|
332
|
+
}
|
|
333
|
+
/* The row's interaction visibility reveals the trigger on hover or focus, and
|
|
334
|
+
keeps it visible while its menu is open. A placeholder row reveals nothing. */
|
|
335
|
+
.kui-list-action-row[data-trailing-visibility="interaction"]
|
|
336
|
+
> .kui-popup-menu:not([open])
|
|
337
|
+
> wa-button {
|
|
338
|
+
opacity: 0;
|
|
339
|
+
}
|
|
340
|
+
.kui-list-action-row[data-trailing-visibility="interaction"]:not(
|
|
341
|
+
[data-placeholder="true"]
|
|
342
|
+
):is(:hover, :focus-within)
|
|
343
|
+
> .kui-popup-menu
|
|
344
|
+
> wa-button {
|
|
345
|
+
opacity: 1;
|
|
346
|
+
}
|
|
347
|
+
@media (hover: none) {
|
|
348
|
+
.kui-list-action-row[data-trailing-visibility="interaction"]
|
|
349
|
+
> .kui-popup-menu
|
|
350
|
+
> wa-button {
|
|
351
|
+
opacity: 1;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/* One loud semantic fill split into a primary half and a narrow options
|
|
2
|
+
trigger, with a hairline divider in the foreground color. Both halves are
|
|
3
|
+
native buttons on the shared fill; each brightens on its own hover. */
|
|
4
|
+
.kui-split-button {
|
|
5
|
+
--_kui-split-button-fill: var(--kui-color-brand-fill-loud);
|
|
6
|
+
--_kui-split-button-on: var(--kui-color-brand-on-loud);
|
|
7
|
+
display: inline-grid;
|
|
8
|
+
min-width: 0;
|
|
9
|
+
min-height: 2.75rem;
|
|
10
|
+
overflow: hidden;
|
|
11
|
+
border-radius: var(--kui-layout-rounded-radius, calc(1px + 0.6875rem));
|
|
12
|
+
color: var(--_kui-split-button-on);
|
|
13
|
+
background: var(--_kui-split-button-fill);
|
|
14
|
+
grid-template-columns: minmax(0, auto) 2.5rem;
|
|
15
|
+
font-weight: var(--kui-font-weight-semibold);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.kui-split-button[data-tone="neutral"] {
|
|
19
|
+
--_kui-split-button-fill: var(--kui-color-neutral-fill-loud);
|
|
20
|
+
--_kui-split-button-on: var(--kui-color-neutral-on-loud);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.kui-split-button[data-tone="success"] {
|
|
24
|
+
--_kui-split-button-fill: var(--kui-color-success-fill-loud);
|
|
25
|
+
--_kui-split-button-on: var(--kui-color-success-on-loud);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.kui-split-button[data-tone="warning"] {
|
|
29
|
+
--_kui-split-button-fill: var(--kui-color-warning-fill-loud);
|
|
30
|
+
--_kui-split-button-on: var(--kui-color-warning-on-loud);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.kui-split-button[data-tone="danger"] {
|
|
34
|
+
--_kui-split-button-fill: var(--kui-color-danger-fill-loud);
|
|
35
|
+
--_kui-split-button-on: var(--kui-color-danger-on-loud);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.kui-split-button[data-fill="true"] {
|
|
39
|
+
display: grid;
|
|
40
|
+
width: 100%;
|
|
41
|
+
grid-template-columns: minmax(0, 1fr) 2.5rem;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.kui-split-button > button {
|
|
45
|
+
display: flex;
|
|
46
|
+
min-width: 0;
|
|
47
|
+
min-height: 2.75rem;
|
|
48
|
+
margin: 0;
|
|
49
|
+
padding-block: var(--kui-space-xs);
|
|
50
|
+
padding-inline: var(--kui-space-s);
|
|
51
|
+
border: 0;
|
|
52
|
+
border-radius: 0;
|
|
53
|
+
color: inherit;
|
|
54
|
+
background: transparent;
|
|
55
|
+
cursor: pointer;
|
|
56
|
+
align-items: center;
|
|
57
|
+
justify-content: center;
|
|
58
|
+
gap: var(--kui-space-xs);
|
|
59
|
+
font: inherit;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.kui-split-button > .kui-split-button__options {
|
|
63
|
+
padding-inline: 0;
|
|
64
|
+
border-inline-start: 1px solid
|
|
65
|
+
color-mix(in srgb, currentColor 28%, transparent);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.kui-split-button > button:hover:not(:disabled) {
|
|
69
|
+
background: color-mix(in srgb, currentColor 12%, transparent);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/* The group clips outer outlines at its rounded corners, so the ring sits
|
|
73
|
+
inside each half. */
|
|
74
|
+
.kui-split-button > button:focus-visible {
|
|
75
|
+
outline: var(--kui-focus-ring);
|
|
76
|
+
outline-offset: -3px;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.kui-split-button > button:disabled {
|
|
80
|
+
cursor: not-allowed;
|
|
81
|
+
opacity: 0.6;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.kui-split-button__icon {
|
|
85
|
+
display: inline-grid;
|
|
86
|
+
flex: none;
|
|
87
|
+
place-items: center;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.kui-split-button__label {
|
|
91
|
+
min-width: 0;
|
|
92
|
+
overflow: hidden;
|
|
93
|
+
text-overflow: ellipsis;
|
|
94
|
+
white-space: nowrap;
|
|
95
|
+
}
|