@kerfjs/ui 5.0.0-beta.74 → 5.0.0-beta.76
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 +29 -1
- package/ai/component-catalog.json +54 -16
- package/ai/component-composition.json +18 -6
- package/ai/components/README.md +1 -1
- package/ai/components/badge.md +1 -1
- package/ai/components/chip.md +1 -1
- package/ai/components/content-item.md +8 -5
- package/ai/components/document-baseline.md +2 -2
- package/ai/components/grid.md +5 -3
- package/ai/components/list.md +3 -2
- package/ai/components/lucide-icon.md +20 -1
- package/ai/components/select.md +5 -4
- package/ai/public-api-signatures-v1.md +101 -61
- package/ai/skill.md +35 -4
- package/ai/webawesome-jsx-signatures-v1.md +1 -1
- package/analyzer/index.mjs +11 -1
- package/dist/app-tab.js +1 -1
- package/dist/badge.d.ts +5 -3
- package/dist/badge.js +1 -1
- package/dist/browser/catalog.js +7 -7
- package/dist/browser/collapsible-panel.js +3 -3
- package/dist/browser/list-header.js +1 -1
- package/dist/browser/nav-stack.js +1 -1
- package/dist/browser/select.js +1 -1
- package/dist/browser/split-view.js +1 -1
- package/dist/browser/workbench.js +4 -4
- package/dist/catalog-resources.d.ts +6 -6
- package/dist/catalog-resources.js +1 -1
- package/dist/catalog-resources.js.map +1 -1
- package/dist/catalog.d.ts +5 -5
- package/dist/catalog.js +13 -13
- package/dist/catalog.js.map +1 -1
- package/dist/chip.d.ts +3 -2
- package/dist/chip.js +1 -1
- package/dist/{chunk-I6FTU27I.js → chunk-3RE2JMZU.js} +7 -3
- package/dist/chunk-3RE2JMZU.js.map +1 -0
- package/dist/{chunk-V4WLBOVJ.js → chunk-5BZBIRQG.js} +4 -4
- package/dist/chunk-5BZBIRQG.js.map +1 -0
- package/dist/{chunk-VZOFZPSO.js → chunk-5D3WDMIK.js} +4 -4
- package/dist/chunk-5D3WDMIK.js.map +1 -0
- package/dist/{chunk-IJNYCPAU.js → chunk-5PAVAR4B.js} +3 -3
- package/dist/chunk-5PAVAR4B.js.map +1 -0
- package/dist/{chunk-2IGHGE3M.js → chunk-72LLWYP2.js} +6 -6
- package/dist/chunk-72LLWYP2.js.map +1 -0
- package/dist/{chunk-KZRR7NNV.js → chunk-75I3SNUJ.js} +2 -2
- package/dist/chunk-75I3SNUJ.js.map +1 -0
- package/dist/{chunk-K47P7QZC.js → chunk-7QQ3HE47.js} +2 -2
- package/dist/chunk-7QQ3HE47.js.map +1 -0
- package/dist/{chunk-33EOFAUN.js → chunk-7QWIJEK5.js} +9 -9
- package/dist/chunk-7QWIJEK5.js.map +1 -0
- package/dist/{chunk-5I7QGQVT.js → chunk-AN5IWMTM.js} +2 -2
- package/dist/chunk-AN5IWMTM.js.map +1 -0
- package/dist/{chunk-3BYFWTP3.js → chunk-AOAW55JN.js} +2 -2
- package/dist/chunk-AOAW55JN.js.map +1 -0
- package/dist/{chunk-RT5WKYX3.js → chunk-ARZ4RSQO.js} +5 -6
- package/dist/chunk-ARZ4RSQO.js.map +1 -0
- package/dist/{chunk-ZSJOLL3S.js → chunk-BJLXE56E.js} +6 -6
- package/dist/chunk-BJLXE56E.js.map +1 -0
- package/dist/{chunk-RGS4WX2M.js → chunk-BYHGRKC3.js} +2 -2
- package/dist/chunk-BYHGRKC3.js.map +1 -0
- package/dist/{chunk-ZLKZFKLW.js → chunk-CEJ5FK6G.js} +2 -2
- package/dist/chunk-CEJ5FK6G.js.map +1 -0
- package/dist/{chunk-SMZGAPCU.js → chunk-DQDTZE4W.js} +2 -2
- package/dist/chunk-DQDTZE4W.js.map +1 -0
- package/dist/{chunk-TT5ROTQK.js → chunk-EFDCALR3.js} +2 -2
- package/dist/chunk-EFDCALR3.js.map +1 -0
- package/dist/{chunk-RVERAFFY.js → chunk-G4VKQP7B.js} +2 -2
- package/dist/chunk-G4VKQP7B.js.map +1 -0
- package/dist/{chunk-BGD7EHUE.js → chunk-GO2CZX4M.js} +2 -2
- package/dist/chunk-GO2CZX4M.js.map +1 -0
- package/dist/{chunk-DPAUKNB6.js → chunk-GS2QD3N7.js} +3 -3
- package/dist/chunk-GS2QD3N7.js.map +1 -0
- package/dist/{chunk-SLWCCHNP.js → chunk-H45DAZBL.js} +2 -2
- package/dist/chunk-H45DAZBL.js.map +1 -0
- package/dist/{chunk-KFJSNWO4.js → chunk-H7ZJEI3H.js} +3 -3
- package/dist/chunk-H7ZJEI3H.js.map +1 -0
- package/dist/{chunk-7KHKLG5C.js → chunk-HFLGWMG3.js} +4 -4
- package/dist/chunk-HFLGWMG3.js.map +1 -0
- package/dist/{chunk-6LAQWWEX.js → chunk-HFQDSSED.js} +6 -6
- package/dist/chunk-HFQDSSED.js.map +1 -0
- package/dist/{chunk-2RMDP7HQ.js → chunk-HGSTMZZ6.js} +6 -6
- package/dist/chunk-HGSTMZZ6.js.map +1 -0
- package/dist/{chunk-WF75U3V4.js → chunk-HPREYDKV.js} +2 -2
- package/dist/chunk-HPREYDKV.js.map +1 -0
- package/dist/{chunk-G4S2QU6V.js → chunk-I4SDIMFA.js} +2 -2
- package/dist/chunk-I4SDIMFA.js.map +1 -0
- package/dist/{chunk-4SQK27MR.js → chunk-IM3GKYOG.js} +2 -2
- package/dist/chunk-IM3GKYOG.js.map +1 -0
- package/dist/{chunk-RU2EMR56.js → chunk-IVLTEBBT.js} +8 -8
- package/dist/chunk-IVLTEBBT.js.map +1 -0
- package/dist/{chunk-ALGYHYXP.js → chunk-J3AWE5I4.js} +2 -2
- package/dist/chunk-J3AWE5I4.js.map +1 -0
- package/dist/{chunk-OXO2QJWV.js → chunk-JOR5LGYE.js} +2 -2
- package/dist/chunk-JOR5LGYE.js.map +1 -0
- package/dist/{chunk-SRSJO5QE.js → chunk-LAZLBC2Q.js} +2 -2
- package/dist/chunk-LAZLBC2Q.js.map +1 -0
- package/dist/{chunk-2G2ZJQYK.js → chunk-LRAIS3YB.js} +9 -3
- package/dist/chunk-LRAIS3YB.js.map +1 -0
- package/dist/{chunk-AYUHMAI6.js → chunk-MXNIVEVL.js} +2 -2
- package/dist/chunk-MXNIVEVL.js.map +1 -0
- package/dist/{chunk-4NG4Y2Q6.js → chunk-NJZMR7HM.js} +2 -2
- package/dist/chunk-NJZMR7HM.js.map +1 -0
- package/dist/{chunk-DG6G5EPF.js → chunk-NMWDHZVM.js} +2 -2
- package/dist/chunk-NMWDHZVM.js.map +1 -0
- package/dist/{chunk-X5QSICJ3.js → chunk-NS2TBYM4.js} +2 -2
- package/dist/chunk-NS2TBYM4.js.map +1 -0
- package/dist/{chunk-W2AC6Q2A.js → chunk-NVRJ7C3W.js} +4 -4
- package/dist/chunk-NVRJ7C3W.js.map +1 -0
- package/dist/{chunk-BFPBS5Y4.js → chunk-O27D24CA.js} +2 -2
- package/dist/chunk-O27D24CA.js.map +1 -0
- package/dist/{chunk-WTSNV5RG.js → chunk-PQQQXJGV.js} +9 -3
- package/dist/chunk-PQQQXJGV.js.map +1 -0
- package/dist/{chunk-6DFDTWGG.js → chunk-QYXKMLHO.js} +2 -2
- package/dist/chunk-QYXKMLHO.js.map +1 -0
- package/dist/{chunk-I3Q7KKYM.js → chunk-S3ECMF23.js} +2 -2
- package/dist/chunk-S3ECMF23.js.map +1 -0
- package/dist/{chunk-PSHUSWQH.js → chunk-S4ZGTDSG.js} +2 -2
- package/dist/chunk-S4ZGTDSG.js.map +1 -0
- package/dist/{chunk-L67OYMGE.js → chunk-SJY7KC45.js} +5 -5
- package/dist/chunk-SJY7KC45.js.map +1 -0
- package/dist/{chunk-DB5ADJKF.js → chunk-VLPE6OPN.js} +2 -2
- package/dist/chunk-VLPE6OPN.js.map +1 -0
- package/dist/{chunk-NCSWXG7G.js → chunk-VLQUXZKA.js} +9 -3
- package/dist/chunk-VLQUXZKA.js.map +1 -0
- package/dist/{chunk-B2ZMR7NY.js → chunk-VR7MWD2X.js} +10 -4
- package/dist/chunk-VR7MWD2X.js.map +1 -0
- package/dist/{chunk-NN6GYOA2.js → chunk-XIZRXI7N.js} +2 -2
- package/dist/chunk-XIZRXI7N.js.map +1 -0
- package/dist/{chunk-TDN5EE3S.js → chunk-Y6KT7ZTR.js} +2 -2
- package/dist/chunk-Y6KT7ZTR.js.map +1 -0
- package/dist/{chunk-3DOHW3K4.js → chunk-YLJ6X3AC.js} +2 -2
- package/dist/chunk-YLJ6X3AC.js.map +1 -0
- package/dist/{chunk-YDGNU2OD.js → chunk-ZVYA6TLR.js} +5 -2
- package/dist/chunk-ZVYA6TLR.js.map +1 -0
- package/dist/collapsible-panel.d.ts +6 -6
- package/dist/collapsible-panel.js +3 -3
- package/dist/collapsible-panel.js.map +1 -1
- package/dist/content-item.d.ts +13 -2
- package/dist/content-item.js +1 -1
- package/dist/css-values.d.ts +6 -1
- package/dist/css-values.js +1 -1
- package/dist/device-class.js +1 -1
- package/dist/device-class.js.map +1 -1
- package/dist/disclosure-arrow.js +1 -1
- package/dist/empty-state.js +1 -1
- package/dist/floating-toolbar.d.ts +1 -1
- package/dist/floating-toolbar.js +1 -1
- package/dist/grid.d.ts +10 -3
- package/dist/grid.js +1 -1
- package/dist/help-tags-register.js +1 -1
- package/dist/help-tags-register.js.map +1 -1
- package/dist/index.d.ts +27 -26
- package/dist/index.js +40 -40
- package/dist/list-action-row.js +1 -1
- package/dist/list-header.js +1 -1
- package/dist/list-inset-control.js +1 -1
- package/dist/list-inset-text.js +1 -1
- package/dist/list-item.js +1 -1
- package/dist/list.d.ts +2 -2
- package/dist/list.js +1 -1
- package/dist/loading-spinner.d.ts +4 -1
- package/dist/loading-spinner.js +1 -1
- package/dist/lucide-icon.d.ts +6 -1
- package/dist/lucide-icon.js +1 -1
- package/dist/nav-stack.d.ts +1 -1
- package/dist/nav-stack.js +1 -1
- package/dist/pane.js +1 -1
- package/dist/popup-menu-register.js +7 -7
- package/dist/popup-menu-register.js.map +1 -1
- package/dist/popup-menu.js +1 -1
- package/dist/resizable-region.d.ts +1 -1
- package/dist/resizable-region.js +1 -1
- package/dist/row.d.ts +2 -2
- package/dist/row.js +1 -1
- package/dist/segmented-control.js +1 -1
- package/dist/select-register.js +6 -6
- package/dist/select-register.js.map +1 -1
- package/dist/select.d.ts +1 -1
- package/dist/select.js +1 -1
- package/dist/semantic-tone-CdW013KF.d.ts +4 -0
- package/dist/skeleton.js +1 -1
- package/dist/spacer.js +1 -1
- package/dist/split-view.d.ts +2 -2
- package/dist/split-view.js +2 -2
- package/dist/split-view.js.map +1 -1
- package/dist/state-banner.d.ts +5 -3
- package/dist/state-banner.js +1 -1
- package/dist/styles/badge.css +1 -1
- package/dist/styles/chip.css +1 -1
- package/dist/styles/components/actions/floating-toolbar/floating-toolbar.css +119 -0
- package/dist/styles/components/actions/popup-menu/popup-menu.css +285 -0
- package/dist/styles/components/actions/toolbar/toolbar.css +392 -0
- package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +790 -0
- package/dist/styles/components/actions/toolbar-text/toolbar-text.css +153 -0
- package/dist/styles/components/collections/list/list.css +133 -0
- package/dist/styles/components/collections/list-action-row/list-action-row.css +258 -0
- package/dist/styles/components/collections/list-header/list-header.css +229 -0
- package/dist/styles/components/collections/list-inset-control/list-inset-control.css +30 -0
- package/dist/styles/components/collections/list-inset-text/list-inset-text.css +29 -0
- package/dist/styles/components/collections/list-item/list-item.css +255 -0
- package/dist/styles/components/data-display/value-table/value-table.css +105 -0
- package/dist/styles/components/feedback/badge/badge.css +118 -0
- package/dist/styles/components/feedback/chip/chip.css +138 -0
- package/dist/styles/components/feedback/empty-state/empty-state.css +47 -0
- package/dist/styles/components/feedback/loading-spinner/loading-spinner.css +25 -0
- package/dist/styles/components/feedback/skeleton/skeleton.css +92 -0
- package/dist/styles/components/feedback/state-banner/state-banner.css +248 -0
- package/dist/styles/components/forms/segmented-control/segmented-control.css +196 -0
- package/dist/styles/components/forms/select/select.css +454 -0
- package/dist/styles/components/forms/token-search-field/token-search-field.css +381 -0
- package/dist/styles/components/layout/collapsible-panel/collapsible-panel.css +575 -0
- package/dist/styles/components/layout/grid/grid.css +85 -0
- package/dist/styles/components/layout/pane/pane.css +263 -0
- package/dist/styles/components/layout/resizable-region/resizable-region.css +545 -0
- package/dist/styles/components/layout/row/row.css +111 -0
- package/dist/styles/components/layout/spacer/spacer.css +11 -0
- package/dist/styles/components/layout/split-view/split-view.css +146 -0
- package/dist/styles/components/layout/workbench/workbench.css +1067 -0
- package/dist/styles/components/media/lucide-icon/lucide-icon.css +15 -0
- package/dist/styles/components/navigation/app-tab/app-tab.css +376 -0
- package/dist/styles/components/navigation/disclosure-arrow/disclosure-arrow.css +23 -0
- package/dist/styles/components/navigation/nav-stack/nav-stack.css +237 -0
- package/dist/styles/components/navigation/tab-bar/tab-bar.css +183 -0
- package/dist/styles/components/navigation/tab-scaffold/tab-scaffold.css +207 -0
- package/dist/styles/components/surfaces/content-item/content-item.css +120 -0
- package/dist/styles/components/surfaces/sunken-panel/sunken-panel.css +29 -0
- package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +56 -0
- package/dist/styles/components/typography/text/text.css +139 -0
- package/dist/styles/content-item.css +46 -1
- package/dist/styles/document.css +10 -0
- package/dist/styles/foundation.css +9 -6
- package/dist/styles/grid.css +50 -0
- package/dist/styles/lucide-icon.css +4 -0
- package/dist/styles/webawesome.css +23 -6
- package/dist/sunken-panel.d.ts +1 -1
- package/dist/sunken-panel.js +1 -1
- package/dist/surface-scaffold.js +1 -1
- package/dist/tab-bar.js +1 -1
- package/dist/tab-scaffold.d.ts +1 -1
- package/dist/tab-scaffold.js +1 -1
- package/dist/tab-scaffold.js.map +1 -1
- package/dist/text.d.ts +12 -8
- package/dist/text.js +1 -1
- package/dist/token-search-field.d.ts +1 -1
- package/dist/token-search-field.js +1 -1
- package/dist/{token-search-field-CVGwDn2y.d.ts → token-search-model-DTcTXWMS.d.ts} +54 -54
- package/dist/token-search-model.d.ts +1 -1
- package/dist/token-search-model.js +1 -1
- package/dist/toolbar-control-group.js +1 -1
- package/dist/toolbar-text.js +1 -1
- package/dist/toolbar.d.ts +1 -1
- package/dist/toolbar.js +1 -1
- package/dist/value-table.js +1 -1
- package/dist/wire-catalog.js +2 -2
- package/dist/wire-catalog.js.map +1 -1
- package/dist/wire-content-items.js +1 -1
- package/dist/wire-content-items.js.map +1 -1
- package/dist/wire-nav-stack.js +1 -1
- package/dist/wire-nav-stack.js.map +1 -1
- package/dist/wire-resizable-regions.js +1 -1
- package/dist/wire-scroll-dividers.js +1 -1
- package/dist/wire-sidebar.js +1 -1
- package/dist/wire-sidebar.js.map +1 -1
- package/dist/wire-tab-bars.js +1 -1
- package/dist/wire-tab-scaffold.js +1 -1
- package/dist/wire-tab-scaffold.js.map +1 -1
- package/dist/wire-token-search-fields.d.ts +1 -1
- package/dist/wire-token-search-fields.js +1 -1
- package/dist/wire-workbench.js +1 -1
- package/dist/workbench.d.ts +3 -3
- package/dist/workbench.js +1 -1
- package/docs/collapsible-panel.md +1 -1
- package/docs/component-contract.md +25 -7
- package/docs/component-selection.md +19 -5
- package/docs/design/templates/empty-state/filtered-dark.svg +1 -1
- package/docs/design/templates/empty-state/filtered.svg +1 -1
- package/docs/design/templates/empty-state/with-action-dark.svg +1 -1
- package/docs/design/templates/empty-state/with-action.svg +1 -1
- package/docs/design/templates/empty-state-dark.svg +1 -1
- package/docs/design/templates/empty-state.svg +1 -1
- package/docs/design/templates/list/stack-dark.svg +1 -1
- package/docs/design/templates/list/stack.svg +1 -1
- package/docs/design/templates/list-dark.svg +1 -1
- package/docs/design/templates/list-header/action-dark.svg +1 -1
- package/docs/design/templates/list-header/action.svg +1 -1
- package/docs/design/templates/list-header/count-dark.svg +1 -1
- package/docs/design/templates/list-header/count.svg +1 -1
- package/docs/design/templates/list-header/inline-action-dark.svg +1 -1
- package/docs/design/templates/list-header/inline-action.svg +1 -1
- package/docs/design/templates/list-header/size-l-dark.svg +1 -1
- package/docs/design/templates/list-header/size-l.svg +1 -1
- package/docs/design/templates/list-header/size-m-dark.svg +1 -1
- package/docs/design/templates/list-header/size-m.svg +1 -1
- package/docs/design/templates/list-header/size-xl-dark.svg +1 -1
- package/docs/design/templates/list-header/size-xl.svg +1 -1
- package/docs/design/templates/list-header/size-xs-dark.svg +1 -1
- package/docs/design/templates/list-header/size-xs.svg +1 -1
- package/docs/design/templates/list-header/toggle-collapsed-dark.svg +1 -1
- package/docs/design/templates/list-header/toggle-collapsed.svg +1 -1
- package/docs/design/templates/list-header/toggle-expanded-dark.svg +1 -1
- package/docs/design/templates/list-header/toggle-expanded.svg +1 -1
- package/docs/design/templates/list-header-dark.svg +1 -1
- package/docs/design/templates/list-header.svg +1 -1
- package/docs/design/templates/list.svg +1 -1
- package/docs/design/templates/segmented-control/equal-dark.svg +1 -1
- package/docs/design/templates/segmented-control/equal.svg +1 -1
- package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -1
- package/docs/design/templates/segmented-control/pill-small.svg +1 -1
- package/docs/design/templates/segmented-control-dark.svg +1 -1
- package/docs/design/templates/segmented-control.svg +1 -1
- package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -1
- package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -1
- package/docs/design/templates/tab-bar-dark.svg +1 -1
- package/docs/design/templates/tab-bar.svg +1 -1
- package/docs/design/templates/token-search-field/empty-dark.svg +1 -1
- package/docs/design/templates/token-search-field/empty.svg +1 -1
- package/docs/design/templates/token-search-field/tokens-dark.svg +1 -1
- package/docs/design/templates/token-search-field/tokens.svg +1 -1
- package/docs/design/templates/token-search-field-dark.svg +1 -1
- package/docs/design/templates/token-search-field.svg +1 -1
- package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -1
- package/docs/design/templates/toolbar/title-and-actions.svg +1 -1
- package/docs/design/templates/toolbar-control-group/borderless-single-dark.svg +1 -1
- package/docs/design/templates/toolbar-control-group/borderless-single.svg +1 -1
- package/docs/design/templates/toolbar-control-group/icon-buttons-dark.svg +1 -1
- package/docs/design/templates/toolbar-control-group/icon-buttons.svg +1 -1
- package/docs/design/templates/toolbar-control-group/push-buttons-dark.svg +1 -1
- package/docs/design/templates/toolbar-control-group/push-buttons.svg +1 -1
- package/docs/design/templates/toolbar-control-group/with-text-dark.svg +1 -1
- package/docs/design/templates/toolbar-control-group/with-text.svg +1 -1
- package/docs/design/templates/toolbar-control-group-dark.svg +1 -1
- package/docs/design/templates/toolbar-control-group.svg +1 -1
- package/docs/design/templates/toolbar-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/default-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/default.svg +1 -1
- package/docs/design/templates/toolbar-text/large-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/large.svg +1 -1
- package/docs/design/templates/toolbar-text/small-dark.svg +1 -1
- package/docs/design/templates/toolbar-text/small.svg +1 -1
- package/docs/design/templates/toolbar-text-dark.svg +1 -1
- package/docs/design/templates/toolbar-text.svg +1 -1
- package/docs/design/templates/toolbar.svg +1 -1
- package/docs/design/templates/value-table/details-dark.svg +1 -1
- package/docs/design/templates/value-table/details.svg +1 -1
- package/docs/design/templates/value-table-dark.svg +1 -1
- package/docs/design/templates/value-table.svg +1 -1
- package/docs/document-baseline.md +4 -0
- package/docs/layout.md +11 -5
- package/docs/sunken-panel.md +7 -7
- package/docs/type-contracts.md +17 -17
- package/docs/ui-analyzer.md +12 -1
- package/docs/ui-doctor.md +12 -2
- package/docs/webawesome-theme.md +29 -59
- package/doctor/index.mjs +39 -30
- package/llms.txt +20 -3
- package/package.json +3 -2
- package/dist/chunk-2G2ZJQYK.js.map +0 -1
- package/dist/chunk-2IGHGE3M.js.map +0 -1
- package/dist/chunk-2RMDP7HQ.js.map +0 -1
- package/dist/chunk-33EOFAUN.js.map +0 -1
- package/dist/chunk-3BYFWTP3.js.map +0 -1
- package/dist/chunk-3DOHW3K4.js.map +0 -1
- package/dist/chunk-4NG4Y2Q6.js.map +0 -1
- package/dist/chunk-4SQK27MR.js.map +0 -1
- package/dist/chunk-5I7QGQVT.js.map +0 -1
- package/dist/chunk-6DFDTWGG.js.map +0 -1
- package/dist/chunk-6LAQWWEX.js.map +0 -1
- package/dist/chunk-7KHKLG5C.js.map +0 -1
- package/dist/chunk-ALGYHYXP.js.map +0 -1
- package/dist/chunk-AYUHMAI6.js.map +0 -1
- package/dist/chunk-B2ZMR7NY.js.map +0 -1
- package/dist/chunk-BFPBS5Y4.js.map +0 -1
- package/dist/chunk-BGD7EHUE.js.map +0 -1
- package/dist/chunk-DB5ADJKF.js.map +0 -1
- package/dist/chunk-DG6G5EPF.js.map +0 -1
- package/dist/chunk-DPAUKNB6.js.map +0 -1
- package/dist/chunk-G4S2QU6V.js.map +0 -1
- package/dist/chunk-I3Q7KKYM.js.map +0 -1
- package/dist/chunk-I6FTU27I.js.map +0 -1
- package/dist/chunk-IJNYCPAU.js.map +0 -1
- package/dist/chunk-K47P7QZC.js.map +0 -1
- package/dist/chunk-KFJSNWO4.js.map +0 -1
- package/dist/chunk-KZRR7NNV.js.map +0 -1
- package/dist/chunk-L67OYMGE.js.map +0 -1
- package/dist/chunk-NCSWXG7G.js.map +0 -1
- package/dist/chunk-NN6GYOA2.js.map +0 -1
- package/dist/chunk-OXO2QJWV.js.map +0 -1
- package/dist/chunk-PSHUSWQH.js.map +0 -1
- package/dist/chunk-RGS4WX2M.js.map +0 -1
- package/dist/chunk-RT5WKYX3.js.map +0 -1
- package/dist/chunk-RU2EMR56.js.map +0 -1
- package/dist/chunk-RVERAFFY.js.map +0 -1
- package/dist/chunk-SLWCCHNP.js.map +0 -1
- package/dist/chunk-SMZGAPCU.js.map +0 -1
- package/dist/chunk-SRSJO5QE.js.map +0 -1
- package/dist/chunk-TDN5EE3S.js.map +0 -1
- package/dist/chunk-TT5ROTQK.js.map +0 -1
- package/dist/chunk-V4WLBOVJ.js.map +0 -1
- package/dist/chunk-VZOFZPSO.js.map +0 -1
- package/dist/chunk-W2AC6Q2A.js.map +0 -1
- package/dist/chunk-WF75U3V4.js.map +0 -1
- package/dist/chunk-WTSNV5RG.js.map +0 -1
- package/dist/chunk-X5QSICJ3.js.map +0 -1
- package/dist/chunk-YDGNU2OD.js.map +0 -1
- package/dist/chunk-ZLKZFKLW.js.map +0 -1
- package/dist/chunk-ZSJOLL3S.js.map +0 -1
- package/dist/{panel-toolbar-DDKh4uKd.d.ts → panel-toolbar-CL9tYOkh.d.ts} +1 -1
- package/dist/{types-BuHELdXR.d.ts → types-C9BubXfz.d.ts} +1 -1
|
@@ -0,0 +1,575 @@
|
|
|
1
|
+
/* A standalone collapsible rail / drawer. Collapsing snaps the panel's own size
|
|
2
|
+
to zero (one reflow, no per-frame width/height animation) while the fixed-size
|
|
3
|
+
content slides out via transform (composited, clipped by overflow). The same
|
|
4
|
+
technique as Workbench and the catalog sidebar (docs/18). */
|
|
5
|
+
/* Safe areas: the panel docks to one screen edge, so its surface grows by
|
|
6
|
+
that edge's unsafe inset and its content compensates for every edge the
|
|
7
|
+
panel still touches, never its interior edge. An expanded inline panel also
|
|
8
|
+
takes its edge away from its direct siblings; collapsing it hands the edge
|
|
9
|
+
back. A panel wrapped in an app-owned grid cell cannot see its siblings, so
|
|
10
|
+
that app routes `--kui-edge-inset-*` itself (docs/app-layouts.md). */
|
|
11
|
+
.kui-collapsible-panel {
|
|
12
|
+
--_kui-collapsible-panel-safe-block-start: var(
|
|
13
|
+
--kui-edge-inset-block-start,
|
|
14
|
+
var(--kui-safe-area-block-start, env(safe-area-inset-top, 0px))
|
|
15
|
+
);
|
|
16
|
+
--_kui-collapsible-panel-safe-block-end: var(
|
|
17
|
+
--kui-edge-inset-block-end,
|
|
18
|
+
var(--kui-safe-area-block-end, env(safe-area-inset-bottom, 0px))
|
|
19
|
+
);
|
|
20
|
+
--_kui-collapsible-panel-safe-inline-start: var(
|
|
21
|
+
--kui-edge-inset-inline-start,
|
|
22
|
+
var(--kui-safe-area-inline-start, env(safe-area-inset-left, 0px))
|
|
23
|
+
);
|
|
24
|
+
--_kui-collapsible-panel-safe-inline-end: var(
|
|
25
|
+
--kui-edge-inset-inline-end,
|
|
26
|
+
var(--kui-safe-area-inline-end, env(safe-area-inset-right, 0px))
|
|
27
|
+
);
|
|
28
|
+
/* The content keeps its fixed expanded size (collapsing slides it rather
|
|
29
|
+
than squeezing it), so a flex parent must never shrink the track below
|
|
30
|
+
that size: a shrunk track only clips the content's trailing edge (a
|
|
31
|
+
rail's row badges, a drawer's last row). The panel holds its size and
|
|
32
|
+
the sibling work area gives way. */
|
|
33
|
+
flex-shrink: 0;
|
|
34
|
+
overflow: hidden;
|
|
35
|
+
background: var(--kui-color-surface);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.kui-collapsible-panel--left,
|
|
39
|
+
.kui-collapsible-panel--right {
|
|
40
|
+
width: var(--_kui-collapsible-panel-extent);
|
|
41
|
+
min-width: 0;
|
|
42
|
+
height: 100%;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.kui-collapsible-panel--left {
|
|
46
|
+
--_kui-collapsible-panel-extent: calc(
|
|
47
|
+
var(--kui-collapsible-panel-width, 17.5rem) +
|
|
48
|
+
var(--_kui-collapsible-panel-safe-inline-start)
|
|
49
|
+
);
|
|
50
|
+
border-inline-end: 1px solid var(--kui-color-neutral-border-normal);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.kui-collapsible-panel--right {
|
|
54
|
+
--_kui-collapsible-panel-extent: calc(
|
|
55
|
+
var(--kui-collapsible-panel-width, 17.5rem) +
|
|
56
|
+
var(--_kui-collapsible-panel-safe-inline-end)
|
|
57
|
+
);
|
|
58
|
+
border-inline-start: 1px solid var(--kui-color-neutral-border-normal);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.kui-collapsible-panel--bottom {
|
|
62
|
+
--_kui-collapsible-panel-extent: calc(
|
|
63
|
+
var(--kui-collapsible-panel-height, 13.75rem) +
|
|
64
|
+
var(--_kui-collapsible-panel-safe-block-end)
|
|
65
|
+
);
|
|
66
|
+
position: relative;
|
|
67
|
+
width: 100%;
|
|
68
|
+
height: var(--_kui-collapsible-panel-extent);
|
|
69
|
+
min-height: 0;
|
|
70
|
+
border-block-start: 1px solid var(--kui-color-neutral-border-normal);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* The panel's content sees the edges it touches; its interior edge is clear. */
|
|
74
|
+
.kui-collapsible-panel > .kui-collapsible-panel__content {
|
|
75
|
+
--kui-edge-inset-block-start: var(--_kui-collapsible-panel-safe-block-start);
|
|
76
|
+
--kui-edge-inset-block-end: var(--_kui-collapsible-panel-safe-block-end);
|
|
77
|
+
--kui-edge-inset-inline-start: var(
|
|
78
|
+
--_kui-collapsible-panel-safe-inline-start
|
|
79
|
+
);
|
|
80
|
+
--kui-edge-inset-inline-end: var(--_kui-collapsible-panel-safe-inline-end);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.kui-collapsible-panel--left > .kui-collapsible-panel__content {
|
|
84
|
+
--kui-edge-inset-inline-end: 0px;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.kui-collapsible-panel--right > .kui-collapsible-panel__content {
|
|
88
|
+
--kui-edge-inset-inline-start: 0px;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.kui-collapsible-panel--bottom > .kui-collapsible-panel__content {
|
|
92
|
+
--kui-edge-inset-block-start: 0px;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/* Content whose only child is a Pane or layout lets that child own the insets;
|
|
96
|
+
anything else is padded here and sees a cleared context. */
|
|
97
|
+
.kui-collapsible-panel__content:not(
|
|
98
|
+
:has(
|
|
99
|
+
> :is(
|
|
100
|
+
[data-component="pane"],
|
|
101
|
+
[data-component="nav-stack"],
|
|
102
|
+
[data-component="split-view"],
|
|
103
|
+
[data-component="workbench"],
|
|
104
|
+
[data-component="tab-scaffold"]
|
|
105
|
+
):only-child
|
|
106
|
+
)
|
|
107
|
+
) {
|
|
108
|
+
padding-block: var(--kui-edge-inset-block-start)
|
|
109
|
+
var(--kui-edge-inset-block-end);
|
|
110
|
+
padding-inline: var(--kui-edge-inset-inline-start)
|
|
111
|
+
var(--kui-edge-inset-inline-end);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.kui-collapsible-panel__content
|
|
115
|
+
> :not(
|
|
116
|
+
:is(
|
|
117
|
+
[data-component="pane"],
|
|
118
|
+
[data-component="nav-stack"],
|
|
119
|
+
[data-component="split-view"],
|
|
120
|
+
[data-component="workbench"],
|
|
121
|
+
[data-component="tab-scaffold"]
|
|
122
|
+
):only-child
|
|
123
|
+
) {
|
|
124
|
+
--kui-edge-inset-block-start: 0px;
|
|
125
|
+
--kui-edge-inset-block-end: 0px;
|
|
126
|
+
--kui-edge-inset-inline-start: 0px;
|
|
127
|
+
--kui-edge-inset-inline-end: 0px;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/* An expanded inline panel is the region at its edge, so its direct siblings
|
|
131
|
+
no longer reach that edge. The container flags the edge it has handed to a
|
|
132
|
+
panel in a non-inheriting property, and a style query zeroes that edge on
|
|
133
|
+
the container's children only; the panel that owns the edge (the first
|
|
134
|
+
left, the last right or bottom) inherits the container's value back.
|
|
135
|
+
Selecting the siblings themselves (`:has(~ panel)`, `panel ~ *`) makes
|
|
136
|
+
every element a sibling-rule candidate, so in Chromium each insertion into
|
|
137
|
+
a long list restyles the list's other rows. The flag is set by a keyed
|
|
138
|
+
`:has(> panel)` on the container and read by a parent style lookup, so a
|
|
139
|
+
list without a panel in it pays nothing. */
|
|
140
|
+
@property --_kui-collapsible-panel-owns-inline-start {
|
|
141
|
+
syntax: "*";
|
|
142
|
+
inherits: false;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
@property --_kui-collapsible-panel-owns-inline-end {
|
|
146
|
+
syntax: "*";
|
|
147
|
+
inherits: false;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
@property --_kui-collapsible-panel-owns-block-end {
|
|
151
|
+
syntax: "*";
|
|
152
|
+
inherits: false;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
:where(
|
|
156
|
+
:has(
|
|
157
|
+
> .kui-collapsible-panel--left[data-presentation="inline"]:not(
|
|
158
|
+
[data-collapsed="true"],
|
|
159
|
+
[data-collapsible-overlay="true"] *,
|
|
160
|
+
[data-collapsible-responsive="hidden"] *
|
|
161
|
+
)
|
|
162
|
+
)
|
|
163
|
+
) {
|
|
164
|
+
--_kui-collapsible-panel-owns-inline-start: true;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
:where(
|
|
168
|
+
:has(
|
|
169
|
+
> .kui-collapsible-panel--right[data-presentation="inline"]:not(
|
|
170
|
+
[data-collapsed="true"],
|
|
171
|
+
[data-collapsible-overlay="true"] *,
|
|
172
|
+
[data-collapsible-responsive="hidden"] *
|
|
173
|
+
)
|
|
174
|
+
)
|
|
175
|
+
) {
|
|
176
|
+
--_kui-collapsible-panel-owns-inline-end: true;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
:where(
|
|
180
|
+
:has(
|
|
181
|
+
> .kui-collapsible-panel--bottom[data-presentation="inline"]:not(
|
|
182
|
+
[data-collapsed="true"],
|
|
183
|
+
[data-collapsible-overlay="true"] *,
|
|
184
|
+
[data-collapsible-responsive="hidden"] *
|
|
185
|
+
)
|
|
186
|
+
)
|
|
187
|
+
) {
|
|
188
|
+
--_kui-collapsible-panel-owns-block-end: true;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
@container style(--_kui-collapsible-panel-owns-inline-start: true) {
|
|
192
|
+
:where(*) {
|
|
193
|
+
--kui-edge-inset-inline-start: 0px;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
@container style(--_kui-collapsible-panel-owns-inline-end: true) {
|
|
198
|
+
:where(*) {
|
|
199
|
+
--kui-edge-inset-inline-end: 0px;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
@container style(--_kui-collapsible-panel-owns-block-end: true) {
|
|
204
|
+
:where(*) {
|
|
205
|
+
--kui-edge-inset-block-end: 0px;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
:where(
|
|
210
|
+
.kui-collapsible-panel--left[data-presentation="inline"]:not(
|
|
211
|
+
[data-collapsed="true"],
|
|
212
|
+
[data-collapsible-overlay="true"] *,
|
|
213
|
+
[data-collapsible-responsive="hidden"] *,
|
|
214
|
+
.kui-collapsible-panel--left[data-presentation="inline"]:not(
|
|
215
|
+
[data-collapsed="true"],
|
|
216
|
+
[data-collapsible-overlay="true"] *,
|
|
217
|
+
[data-collapsible-responsive="hidden"] *
|
|
218
|
+
)
|
|
219
|
+
~ *
|
|
220
|
+
)
|
|
221
|
+
) {
|
|
222
|
+
--kui-edge-inset-inline-start: inherit;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
:where(
|
|
226
|
+
.kui-collapsible-panel--right[data-presentation="inline"]:not(
|
|
227
|
+
[data-collapsed="true"],
|
|
228
|
+
[data-collapsible-overlay="true"] *,
|
|
229
|
+
[data-collapsible-responsive="hidden"] *,
|
|
230
|
+
:has(
|
|
231
|
+
~ .kui-collapsible-panel--right[data-presentation="inline"]:not(
|
|
232
|
+
[data-collapsed="true"],
|
|
233
|
+
[data-collapsible-overlay="true"] *,
|
|
234
|
+
[data-collapsible-responsive="hidden"] *
|
|
235
|
+
)
|
|
236
|
+
)
|
|
237
|
+
)
|
|
238
|
+
) {
|
|
239
|
+
--kui-edge-inset-inline-end: inherit;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
:where(
|
|
243
|
+
.kui-collapsible-panel--bottom[data-presentation="inline"]:not(
|
|
244
|
+
[data-collapsed="true"],
|
|
245
|
+
[data-collapsible-overlay="true"] *,
|
|
246
|
+
[data-collapsible-responsive="hidden"] *,
|
|
247
|
+
:has(
|
|
248
|
+
~ .kui-collapsible-panel--bottom[data-presentation="inline"]:not(
|
|
249
|
+
[data-collapsed="true"],
|
|
250
|
+
[data-collapsible-overlay="true"] *,
|
|
251
|
+
[data-collapsible-responsive="hidden"] *
|
|
252
|
+
)
|
|
253
|
+
)
|
|
254
|
+
)
|
|
255
|
+
) {
|
|
256
|
+
--kui-edge-inset-block-end: inherit;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
.kui-collapsible-panel[data-collapsed="true"] {
|
|
260
|
+
border: 0;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
.kui-collapsible-panel[data-separator="hidden"] {
|
|
264
|
+
border-color: transparent;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
.kui-collapsible-panel[data-content-overflow="auto"] {
|
|
268
|
+
overflow: auto;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.kui-collapsible-panel[data-content-overflow="visible"] {
|
|
272
|
+
z-index: var(--kui-collapsible-panel-popup-z, 5);
|
|
273
|
+
overflow: visible;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
.kui-collapsible-panel--left[data-collapsed="true"],
|
|
277
|
+
.kui-collapsible-panel--right[data-collapsed="true"] {
|
|
278
|
+
width: 0;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.kui-collapsible-panel--bottom[data-collapsed="true"] {
|
|
282
|
+
height: 0;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/* The fixed-size sliding content keeps a definite size so the transform reads
|
|
286
|
+
as a slide, not a squeeze. */
|
|
287
|
+
.kui-collapsible-panel__content {
|
|
288
|
+
height: 100%;
|
|
289
|
+
transition: transform 200ms ease;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.kui-collapsible-panel--left .kui-collapsible-panel__content,
|
|
293
|
+
.kui-collapsible-panel--right .kui-collapsible-panel__content {
|
|
294
|
+
width: var(--_kui-collapsible-panel-extent);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
.kui-collapsible-panel--bottom .kui-collapsible-panel__content {
|
|
298
|
+
position: absolute;
|
|
299
|
+
inset-inline: 0;
|
|
300
|
+
inset-block-end: 0;
|
|
301
|
+
width: 100%;
|
|
302
|
+
height: var(--_kui-collapsible-panel-extent);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
.kui-collapsible-panel[data-collapse-motion="none"]
|
|
306
|
+
.kui-collapsible-panel__content {
|
|
307
|
+
transition: none;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
.kui-collapsible-panel[data-collapse-motion="fade-slide"][data-collapsed="true"]
|
|
311
|
+
.kui-collapsible-panel__content {
|
|
312
|
+
opacity: 0;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
.kui-collapsible-panel--left[data-collapsed="true"]
|
|
316
|
+
.kui-collapsible-panel__content {
|
|
317
|
+
transform: translateX(-100%);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
.kui-collapsible-panel--right[data-collapsed="true"]
|
|
321
|
+
.kui-collapsible-panel__content {
|
|
322
|
+
transform: translateX(100%);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.kui-collapsible-panel--bottom[data-collapsed="true"]
|
|
326
|
+
.kui-collapsible-panel__content {
|
|
327
|
+
transform: translateY(100%);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/* Compact presentation: wireSidebar marks the host so the panel floats over the
|
|
331
|
+
content as an overlay with a dismissable backdrop instead of taking layout
|
|
332
|
+
space. The panel is fixed to its edge and slides in from off-screen. */
|
|
333
|
+
[data-collapsible-overlay="true"] .kui-collapsible-panel,
|
|
334
|
+
.kui-collapsible-panel[data-presentation="overlay"] {
|
|
335
|
+
position: fixed;
|
|
336
|
+
z-index: var(--kui-collapsible-panel-overlay-z, 40);
|
|
337
|
+
box-shadow: var(--kui-shadow-l);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
[data-collapsible-overlay="true"] .kui-collapsible-panel--left,
|
|
341
|
+
.kui-collapsible-panel--left[data-presentation="overlay"] {
|
|
342
|
+
inset-block: 0;
|
|
343
|
+
inset-inline-start: 0;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
[data-collapsible-overlay="true"] .kui-collapsible-panel--right,
|
|
347
|
+
.kui-collapsible-panel--right[data-presentation="overlay"] {
|
|
348
|
+
inset-block: 0;
|
|
349
|
+
inset-inline-end: 0;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
[data-collapsible-overlay="true"] .kui-collapsible-panel--bottom,
|
|
353
|
+
.kui-collapsible-panel--bottom[data-presentation="overlay"] {
|
|
354
|
+
inset-inline: 0;
|
|
355
|
+
inset-block-end: 0;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
.kui-collapsible-panel[data-presentation="overlay"][data-collapsed="true"] {
|
|
359
|
+
pointer-events: none;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
.kui-collapsible-panel[data-presentation="hidden"] {
|
|
363
|
+
display: none;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
[data-collapsible-responsive="hidden"] .kui-collapsible-panel {
|
|
367
|
+
display: none;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/* A collapsed panel's restore control floats in a corner of the panel's own
|
|
371
|
+
container, never of the viewport, so a panel embedded in a page cannot float
|
|
372
|
+
it over page content outside that container. The container becomes the
|
|
373
|
+
corner's containing block and isolates its stacking only while a restore
|
|
374
|
+
control is shown, at zero specificity so an app's own positioning of that
|
|
375
|
+
container wins. The corner is inset from the container's edges plus the
|
|
376
|
+
unsafe area of each edge it reaches. The control belongs to the layer
|
|
377
|
+
beneath open overlays, two below the overlay z-index and so below the
|
|
378
|
+
compact overlay's backdrop: an open overlay covers it as it covers the rest
|
|
379
|
+
of the page, the Workbench rule. A collapsed overlay passes pointer events
|
|
380
|
+
through, so the control is usable again as soon as the overlay closes. */
|
|
381
|
+
:where(:has(> .kui-collapsible-panel__restore)) {
|
|
382
|
+
position: relative;
|
|
383
|
+
isolation: isolate;
|
|
384
|
+
anchor-scope: --kui-restore-drawer;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
/* An expanded bottom drawer beside the collapsed panel — a direct child of
|
|
388
|
+
that container or of one of its direct children (the app's work-area
|
|
389
|
+
column) — owns the container's bottom, so the corner floats above the
|
|
390
|
+
drawer's top edge instead of over it. The drawer publishes that edge as an
|
|
391
|
+
anchor only there, beside a CollapsiblePanel or ResizableRegion restore
|
|
392
|
+
control (matched by their restore attributes); a drawer nested deeper,
|
|
393
|
+
inside the work area's own content, belongs to another layout and
|
|
394
|
+
publishes nothing. The selector ends on the drawer, not on a universal
|
|
395
|
+
`> * > * > *` scope below the container: a universal selector after a
|
|
396
|
+
:has() container restyles every child of every ancestor of a DOM change in
|
|
397
|
+
Chromium. Without anchor positioning the corner keeps the container's
|
|
398
|
+
bottom edge. */
|
|
399
|
+
:where(
|
|
400
|
+
:has(> [data-panel-restore], > [data-region-restore]),
|
|
401
|
+
:has(> [data-panel-restore], > [data-region-restore]) > *
|
|
402
|
+
)
|
|
403
|
+
> .kui-collapsible-panel--bottom[data-presentation="inline"]:not(
|
|
404
|
+
[data-collapsed="true"],
|
|
405
|
+
[data-collapsible-overlay="true"] *,
|
|
406
|
+
[data-collapsible-responsive="hidden"] *
|
|
407
|
+
) {
|
|
408
|
+
anchor-name: --kui-restore-drawer;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
.kui-collapsible-panel__restore {
|
|
412
|
+
--_kui-collapsible-panel-restore-inset: var(
|
|
413
|
+
--kui-collapsible-panel-restore-inset,
|
|
414
|
+
1rem
|
|
415
|
+
);
|
|
416
|
+
position: absolute;
|
|
417
|
+
/* Hidden while an open side overlay covers the content (see below). */
|
|
418
|
+
visibility: var(
|
|
419
|
+
--_kui-workbench-covered,
|
|
420
|
+
var(
|
|
421
|
+
--_kui-collapsible-panel-covered,
|
|
422
|
+
var(--_kui-resizable-region-covered, inherit)
|
|
423
|
+
)
|
|
424
|
+
);
|
|
425
|
+
z-index: var(
|
|
426
|
+
--kui-collapsible-panel-restore-z,
|
|
427
|
+
calc(var(--kui-collapsible-panel-overlay-z, 40) - 2)
|
|
428
|
+
);
|
|
429
|
+
position-visibility: always;
|
|
430
|
+
inset-block-end: calc(
|
|
431
|
+
var(--_kui-collapsible-panel-restore-inset) +
|
|
432
|
+
var(
|
|
433
|
+
--kui-edge-inset-block-end,
|
|
434
|
+
var(--kui-safe-area-block-end, env(safe-area-inset-bottom, 0px))
|
|
435
|
+
)
|
|
436
|
+
);
|
|
437
|
+
/* Above an expanded drawer's top edge when one is in scope (see above). */
|
|
438
|
+
inset-block-end: calc(
|
|
439
|
+
var(--_kui-collapsible-panel-restore-inset) +
|
|
440
|
+
anchor(
|
|
441
|
+
--kui-restore-drawer top,
|
|
442
|
+
var(
|
|
443
|
+
--kui-edge-inset-block-end,
|
|
444
|
+
var(--kui-safe-area-block-end, env(safe-area-inset-bottom, 0px))
|
|
445
|
+
)
|
|
446
|
+
)
|
|
447
|
+
);
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
.kui-collapsible-panel__restore[data-position="bottom-start"] {
|
|
451
|
+
inset-inline-start: calc(
|
|
452
|
+
var(--_kui-collapsible-panel-restore-inset) +
|
|
453
|
+
var(
|
|
454
|
+
--kui-edge-inset-inline-start,
|
|
455
|
+
var(--kui-safe-area-inline-start, env(safe-area-inset-left, 0px))
|
|
456
|
+
)
|
|
457
|
+
);
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
.kui-collapsible-panel__restore[data-position="bottom-end"] {
|
|
461
|
+
inset-inline-end: calc(
|
|
462
|
+
var(--_kui-collapsible-panel-restore-inset) +
|
|
463
|
+
var(
|
|
464
|
+
--kui-edge-inset-inline-end,
|
|
465
|
+
var(--kui-safe-area-inline-end, env(safe-area-inset-right, 0px))
|
|
466
|
+
)
|
|
467
|
+
);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
/* An open side overlay — the wireSidebar compact overlay or a static
|
|
471
|
+
`presentation="overlay"` panel — covers the content beside it, so that
|
|
472
|
+
content's floating controls (a FloatingToolbar, another panel's restore
|
|
473
|
+
corner) are hidden, not merely stacked beneath it: they never paint over
|
|
474
|
+
the overlay whatever stacking context an app puts them in, and hidden they
|
|
475
|
+
leave the tab order and the accessibility tree. They come back as the
|
|
476
|
+
overlay closes. The CollapsiblePanel's own covered context,
|
|
477
|
+
`--_kui-collapsible-panel-covered`, is read by FloatingToolbar and the
|
|
478
|
+
layouts' restore corners; the overlay panels themselves are exempt, so
|
|
479
|
+
their own floating controls stay. */
|
|
480
|
+
[data-collapsible-overlay="true"]:has(
|
|
481
|
+
.kui-collapsible-panel:is(
|
|
482
|
+
.kui-collapsible-panel--left,
|
|
483
|
+
.kui-collapsible-panel--right
|
|
484
|
+
):not([data-collapsed="true"])
|
|
485
|
+
) {
|
|
486
|
+
--_kui-collapsible-panel-covered: hidden;
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
[data-collapsible-overlay="true"] .kui-collapsible-panel {
|
|
490
|
+
--_kui-collapsible-panel-covered: initial;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
/* A static overlay panel sets the flag on its container and clears it again
|
|
494
|
+
on the overlay panels in it, so it reaches the overlay's siblings only —
|
|
495
|
+
never through a universal selector below the :has() container
|
|
496
|
+
(`:has(…) > :not(…)`), which in Chromium restyles every child of every
|
|
497
|
+
ancestor of a DOM change. */
|
|
498
|
+
:where(
|
|
499
|
+
:has(
|
|
500
|
+
> .kui-collapsible-panel:is(
|
|
501
|
+
.kui-collapsible-panel--left,
|
|
502
|
+
.kui-collapsible-panel--right
|
|
503
|
+
)[data-presentation="overlay"]:not([data-collapsed="true"])
|
|
504
|
+
)
|
|
505
|
+
) {
|
|
506
|
+
--_kui-collapsible-panel-covered: hidden;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
:where(
|
|
510
|
+
:has(
|
|
511
|
+
> .kui-collapsible-panel:is(
|
|
512
|
+
.kui-collapsible-panel--left,
|
|
513
|
+
.kui-collapsible-panel--right
|
|
514
|
+
)[data-presentation="overlay"]:not([data-collapsed="true"])
|
|
515
|
+
)
|
|
516
|
+
)
|
|
517
|
+
> .kui-collapsible-panel[data-presentation="overlay"] {
|
|
518
|
+
--_kui-collapsible-panel-covered: initial;
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
/* A button does not stretch between its insets the way a div does, so the
|
|
522
|
+
backdrop sizes itself to its containing block explicitly. It sits one below
|
|
523
|
+
the overlay z-index, so an app that moves the overlay moves the backdrop
|
|
524
|
+
with it, and the restore controls stay beneath both. */
|
|
525
|
+
.kui-collapsible-panel__backdrop {
|
|
526
|
+
position: fixed;
|
|
527
|
+
inset: 0;
|
|
528
|
+
width: 100%;
|
|
529
|
+
height: 100%;
|
|
530
|
+
z-index: var(
|
|
531
|
+
--kui-collapsible-panel-backdrop-z,
|
|
532
|
+
calc(var(--kui-collapsible-panel-overlay-z, 40) - 1)
|
|
533
|
+
);
|
|
534
|
+
border: 0;
|
|
535
|
+
padding: 0;
|
|
536
|
+
background: var(--kui-color-scrim, rgb(0 0 0 / 32%));
|
|
537
|
+
cursor: pointer;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
/* The standard toggle affordance: a plain icon button carrying the per-side
|
|
541
|
+
collapse/expand glyph. */
|
|
542
|
+
.kui-collapsible-panel__toggle {
|
|
543
|
+
display: grid;
|
|
544
|
+
width: 2.5rem;
|
|
545
|
+
height: 2.5rem;
|
|
546
|
+
padding: 0;
|
|
547
|
+
border: 1px solid transparent;
|
|
548
|
+
border-radius: var(--kui-layout-rounded-radius, calc(1px + 0.6875rem));
|
|
549
|
+
color: inherit;
|
|
550
|
+
background: transparent;
|
|
551
|
+
cursor: pointer;
|
|
552
|
+
place-items: center;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
.kui-collapsible-panel__toggle:hover {
|
|
556
|
+
border-color: var(--kui-color-neutral-border-normal);
|
|
557
|
+
background: var(--kui-color-neutral-fill-normal);
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
.kui-collapsible-panel__toggle:focus-visible {
|
|
561
|
+
outline: var(--kui-focus-ring);
|
|
562
|
+
outline-offset: 1px;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
.kui-collapsible-panel__toggle svg {
|
|
566
|
+
display: block;
|
|
567
|
+
width: 1.125rem;
|
|
568
|
+
height: 1.125rem;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
@media (prefers-reduced-motion: reduce) {
|
|
572
|
+
.kui-collapsible-panel__content {
|
|
573
|
+
transition: none;
|
|
574
|
+
}
|
|
575
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
.kui-grid {
|
|
2
|
+
--kui-grid-gap: var(--kui-layout-item-gap, 0.5rem);
|
|
3
|
+
/* Private per-instance values are reset on every Grid so a nested Grid never
|
|
4
|
+
inherits its ancestor's; the inline style overrides them per prop. */
|
|
5
|
+
--_kui-grid-gap: var(--kui-grid-gap);
|
|
6
|
+
--_kui-grid-flex: 0 1 auto;
|
|
7
|
+
--_kui-grid-inset-top: 0;
|
|
8
|
+
--_kui-grid-inset-right: 0;
|
|
9
|
+
--_kui-grid-inset-bottom: 0;
|
|
10
|
+
--_kui-grid-inset-left: 0;
|
|
11
|
+
|
|
12
|
+
display: grid;
|
|
13
|
+
min-width: 0;
|
|
14
|
+
min-height: 0;
|
|
15
|
+
box-sizing: border-box;
|
|
16
|
+
padding: var(--_kui-grid-inset-top, 0) var(--_kui-grid-inset-right, 0)
|
|
17
|
+
var(--_kui-grid-inset-bottom, 0) var(--_kui-grid-inset-left, 0);
|
|
18
|
+
flex: var(--_kui-grid-flex, initial);
|
|
19
|
+
grid-template-columns: repeat(var(--_kui-grid-columns), minmax(0, 1fr));
|
|
20
|
+
gap: var(--_kui-grid-gap, var(--kui-grid-gap));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.kui-grid[data-control-insets*="t"] {
|
|
24
|
+
--_kui-grid-inset-top: var(--kui-layout-inline-margin, 0.5rem);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.kui-grid[data-control-insets*="r"] {
|
|
28
|
+
--_kui-grid-inset-right: var(--kui-layout-inline-margin, 0.5rem);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.kui-grid[data-control-insets*="b"] {
|
|
32
|
+
--_kui-grid-inset-bottom: var(--kui-layout-inline-margin, 0.5rem);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.kui-grid[data-control-insets*="l"] {
|
|
36
|
+
--_kui-grid-inset-left: var(--kui-layout-inline-margin, 0.5rem);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.kui-grid[data-text-insets*="t"] {
|
|
40
|
+
--_kui-grid-inset-top: calc(
|
|
41
|
+
var(--kui-layout-inline-margin, 0.5rem) + 1px +
|
|
42
|
+
var(--kui-layout-item-padding, 0.5rem)
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.kui-grid[data-text-insets*="r"] {
|
|
47
|
+
--_kui-grid-inset-right: calc(
|
|
48
|
+
var(--kui-layout-inline-margin, 0.5rem) + 1px +
|
|
49
|
+
var(--kui-layout-item-padding, 0.5rem)
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.kui-grid[data-text-insets*="b"] {
|
|
54
|
+
--_kui-grid-inset-bottom: calc(
|
|
55
|
+
var(--kui-layout-inline-margin, 0.5rem) + 1px +
|
|
56
|
+
var(--kui-layout-item-padding, 0.5rem)
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.kui-grid[data-text-insets*="l"] {
|
|
61
|
+
--_kui-grid-inset-left: calc(
|
|
62
|
+
var(--kui-layout-inline-margin, 0.5rem) + 1px +
|
|
63
|
+
var(--kui-layout-item-padding, 0.5rem)
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.kui-grid[data-min-column-width="true"] {
|
|
68
|
+
grid-template-columns: repeat(
|
|
69
|
+
auto-fit,
|
|
70
|
+
minmax(min(100%, var(--_kui-grid-min-column-width)), 1fr)
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.kui-grid[data-auto-fill="true"] {
|
|
75
|
+
grid-template-columns: repeat(
|
|
76
|
+
auto-fill,
|
|
77
|
+
minmax(min(100%, var(--_kui-grid-min-column-width)), 1fr)
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/* `fill`: the layout root of a definite-height parent (an app root or a
|
|
82
|
+
fixed-height frame) takes its full height. Inside a flex layout use `flex`. */
|
|
83
|
+
.kui-grid[data-fill="true"] {
|
|
84
|
+
height: 100%;
|
|
85
|
+
}
|