@kerfjs/ui 5.0.0-beta.10 → 5.0.0-beta.101
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 +632 -132
- package/ai/application-ui-diagnostic-ids-v1.json +114 -0
- package/ai/application-ui-profile-sync.cjs +548 -0
- package/ai/application-ui-profile.d.mts +1 -0
- package/ai/application-ui-profile.d.ts +106 -0
- package/ai/application-ui-profile.defaults.json +96 -0
- package/ai/application-ui-profile.mjs +653 -0
- package/ai/application-ui-profile.schema.json +140 -0
- package/ai/catalog-authoring.json +34 -0
- package/ai/catalog-authoring.schema.json +105 -0
- package/ai/compile-time-contracts-v1.json +149 -0
- package/ai/compile-time-contracts-v1.schema.json +52 -0
- package/ai/component-catalog-extension.schema.json +104 -0
- package/ai/component-catalog.json +6668 -1002
- package/ai/component-catalog.schema.json +94 -1
- package/ai/component-class-owners.cjs +83 -0
- package/ai/component-composition-extension.d.ts +7 -0
- package/ai/component-composition-extension.schema.json +7 -0
- package/ai/component-composition-rules.json +551 -0
- package/ai/component-composition.d.ts +132 -0
- package/ai/component-composition.json +8937 -0
- package/ai/component-composition.schema.json +412 -0
- package/ai/components/README.md +187 -0
- package/ai/components/anchored-surface.md +99 -0
- package/ai/components/application-tabs.md +65 -0
- package/ai/components/backdrop-image.md +84 -0
- package/ai/components/badge.md +76 -0
- package/ai/components/chip.md +76 -0
- package/ai/components/choice-chips.md +87 -0
- package/ai/components/collapsible-panel.md +103 -0
- package/ai/components/column-track.md +78 -0
- package/ai/components/combobox.md +88 -0
- package/ai/components/composer.md +83 -0
- package/ai/components/content-item.md +98 -0
- package/ai/components/content-swap.md +78 -0
- package/ai/components/corner-status.md +88 -0
- package/ai/components/disclosure-arrow.md +77 -0
- package/ai/components/document-baseline.md +77 -0
- package/ai/components/edge-activity-indicator.md +81 -0
- package/ai/components/empty-state.md +80 -0
- package/ai/components/feedback.md +71 -0
- package/ai/components/file-picker.md +88 -0
- package/ai/components/floating-toolbar.md +82 -0
- package/ai/components/foundation.md +65 -0
- package/ai/components/framed-list.md +80 -0
- package/ai/components/grid.md +101 -0
- package/ai/components/headers.md +63 -0
- package/ai/components/icon-button.md +82 -0
- package/ai/components/icon-toggle-button.md +80 -0
- package/ai/components/layout.md +75 -0
- package/ai/components/list-action-row.md +108 -0
- package/ai/components/list-header.md +91 -0
- package/ai/components/list-inset-control.md +74 -0
- package/ai/components/list-inset-text.md +72 -0
- package/ai/components/list-item.md +108 -0
- package/ai/components/list.md +125 -0
- package/ai/components/loading-spinner.md +73 -0
- package/ai/components/lucide-icon.md +97 -0
- package/ai/components/nav-stack.md +120 -0
- package/ai/components/pane.md +125 -0
- package/ai/components/popup-menu.md +171 -0
- package/ai/components/recipe-app-shell.md +57 -0
- package/ai/components/recipe-collapsible-sidebar.md +57 -0
- package/ai/components/recipe-compact-toolbar.md +57 -0
- package/ai/components/recipe-composer-form.md +57 -0
- package/ai/components/recipe-list-detail-dialog.md +57 -0
- package/ai/components/recipe-list-workspace-states.md +57 -0
- package/ai/components/recipe-loading-inspector.md +57 -0
- package/ai/components/recipe-media-detail.md +57 -0
- package/ai/components/recipe-navigation-sidebar.md +57 -0
- package/ai/components/recipe-navigation-stack.md +57 -0
- package/ai/components/recipe-workspace-header.md +57 -0
- package/ai/components/resize.md +106 -0
- package/ai/components/row.md +96 -0
- package/ai/components/segmented-control.md +82 -0
- package/ai/components/select.md +116 -0
- package/ai/components/skeleton.md +84 -0
- package/ai/components/spacer.md +86 -0
- package/ai/components/split-button.md +80 -0
- package/ai/components/split-view.md +105 -0
- package/ai/components/state-banner.md +96 -0
- package/ai/components/summary-row.md +85 -0
- package/ai/components/sunken-panel.md +79 -0
- package/ai/components/surface-scaffold.md +112 -0
- package/ai/components/tab-bar.md +114 -0
- package/ai/components/tab-navigator.md +105 -0
- package/ai/components/tabs.md +95 -0
- package/ai/components/text.md +90 -0
- package/ai/components/token-search-field.md +107 -0
- package/ai/components/toolbar-control-group.md +126 -0
- package/ai/components/toolbar-text.md +100 -0
- package/ai/components/toolbar.md +103 -0
- package/ai/components/value-table.md +80 -0
- package/ai/components/wa-accordion-item.md +55 -0
- package/ai/components/wa-accordion.md +65 -0
- package/ai/components/wa-animated-image.md +55 -0
- package/ai/components/wa-animation.md +55 -0
- package/ai/components/wa-avatar.md +55 -0
- package/ai/components/wa-badge.md +55 -0
- package/ai/components/wa-breadcrumb-item.md +53 -0
- package/ai/components/wa-breadcrumb.md +55 -0
- package/ai/components/wa-button-group.md +60 -0
- package/ai/components/wa-button.md +59 -0
- package/ai/components/wa-callout.md +58 -0
- package/ai/components/wa-card.md +59 -0
- package/ai/components/wa-carousel-item.md +53 -0
- package/ai/components/wa-carousel.md +55 -0
- package/ai/components/wa-checkbox-group.md +55 -0
- package/ai/components/wa-checkbox.md +55 -0
- package/ai/components/wa-color-picker.md +55 -0
- package/ai/components/wa-comparison.md +55 -0
- package/ai/components/wa-copy-button.md +55 -0
- package/ai/components/wa-details.md +61 -0
- package/ai/components/wa-dialog.md +59 -0
- package/ai/components/wa-divider.md +53 -0
- package/ai/components/wa-drawer.md +55 -0
- package/ai/components/wa-dropdown-item.md +60 -0
- package/ai/components/wa-dropdown.md +60 -0
- package/ai/components/wa-format-bytes.md +53 -0
- package/ai/components/wa-format-date.md +53 -0
- package/ai/components/wa-format-number.md +53 -0
- package/ai/components/wa-icon.md +58 -0
- package/ai/components/wa-include.md +53 -0
- package/ai/components/wa-input.md +59 -0
- package/ai/components/wa-intersection-observer.md +53 -0
- package/ai/components/wa-known-date.md +53 -0
- package/ai/components/wa-markdown.md +53 -0
- package/ai/components/wa-mutation-observer.md +53 -0
- package/ai/components/wa-number-input.md +55 -0
- package/ai/components/wa-option.md +59 -0
- package/ai/components/wa-otp-input.md +53 -0
- package/ai/components/wa-page.md +53 -0
- package/ai/components/wa-pagination.md +55 -0
- package/ai/components/wa-popover.md +55 -0
- package/ai/components/wa-popup.md +53 -0
- package/ai/components/wa-progress-bar.md +53 -0
- package/ai/components/wa-progress-ring.md +53 -0
- package/ai/components/wa-qr-code.md +53 -0
- package/ai/components/wa-radio-group.md +59 -0
- package/ai/components/wa-radio.md +55 -0
- package/ai/components/wa-random-content.md +53 -0
- package/ai/components/wa-rating.md +55 -0
- package/ai/components/wa-relative-time.md +53 -0
- package/ai/components/wa-resize-observer.md +53 -0
- package/ai/components/wa-scroller.md +53 -0
- package/ai/components/wa-select.md +63 -0
- package/ai/components/wa-skeleton.md +53 -0
- package/ai/components/wa-slider.md +55 -0
- package/ai/components/wa-spinner.md +58 -0
- package/ai/components/wa-split-panel.md +58 -0
- package/ai/components/wa-switch.md +53 -0
- package/ai/components/wa-tab-group.md +69 -0
- package/ai/components/wa-tab-panel.md +60 -0
- package/ai/components/wa-tab.md +59 -0
- package/ai/components/wa-tag.md +59 -0
- package/ai/components/wa-textarea.md +53 -0
- package/ai/components/wa-time-input.md +55 -0
- package/ai/components/wa-toast-item.md +60 -0
- package/ai/components/wa-toast.md +60 -0
- package/ai/components/wa-tooltip.md +55 -0
- package/ai/components/wa-tree-item.md +55 -0
- package/ai/components/wa-tree.md +55 -0
- package/ai/components/wa-zoomable-frame.md +55 -0
- package/ai/components/workbench.md +120 -0
- package/ai/public-api-signatures-v1.md +4564 -438
- package/ai/skill.md +490 -64
- package/ai/webawesome-jsx-signatures-v1.md +9 -2
- package/analyzer/cli.mjs +49 -0
- package/analyzer/component-ownership.d.mts +72 -0
- package/analyzer/component-ownership.mjs +429 -0
- package/analyzer/index.d.mts +53 -0
- package/analyzer/index.mjs +2375 -0
- package/analyzer/loud-pairs.d.mts +49 -0
- package/analyzer/loud-pairs.mjs +357 -0
- package/analyzer/report.schema.json +66 -0
- package/analyzer/selectors.d.mts +21 -0
- package/analyzer/selectors.mjs +212 -0
- package/catalog-projection-cli.mjs +96 -0
- package/catalog-projection.d.mts +55 -0
- package/catalog-projection.mjs +62 -0
- package/dist/anchored-surface.d.ts +69 -0
- package/dist/anchored-surface.js +3 -0
- package/dist/anchored-surface.js.map +1 -0
- package/dist/app-tab.d.ts +39 -4
- package/dist/app-tab.js +2 -1
- package/dist/backdrop-image.d.ts +132 -0
- package/dist/backdrop-image.js +5 -0
- package/dist/backdrop-image.js.map +1 -0
- package/dist/badge.d.ts +83 -0
- package/dist/badge.js +4 -0
- package/dist/badge.js.map +1 -0
- package/dist/browser/anchored-surface.js +3 -0
- package/dist/browser/backdrop-image.js +3 -0
- package/dist/browser/badge.js +3 -0
- package/dist/browser/catalog.js +28 -0
- package/dist/browser/chip.js +3 -0
- package/dist/browser/choice-chips.js +3 -0
- package/dist/browser/collapsible-panel.js +9 -0
- package/dist/browser/column-track.js +3 -0
- package/dist/browser/combobox.js +3 -0
- package/dist/browser/composer.js +4 -0
- package/dist/browser/content-item.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/floating-toolbar.js +3 -0
- package/dist/browser/framed-list.js +3 -0
- package/dist/browser/grid.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 +2 -0
- package/dist/browser/list-header.js +3 -1
- package/dist/browser/list-inset-control.js +3 -0
- package/dist/browser/list-inset-text.js +3 -0
- package/dist/browser/list-item.js +1 -0
- package/dist/browser/list.js +3 -0
- package/dist/browser/nav-stack.js +11 -0
- package/dist/browser/pane.js +3 -0
- package/dist/browser/popup-menu.js +3 -0
- package/dist/browser/row.js +3 -0
- package/dist/browser/segmented-control.js +0 -1
- package/dist/browser/select.js +2 -1
- package/dist/browser/spacer.js +3 -0
- package/dist/browser/split-button.js +5 -0
- package/dist/browser/split-view.js +13 -0
- package/dist/browser/state-banner.js +1 -0
- package/dist/browser/summary-row.js +3 -0
- package/dist/browser/sunken-panel.js +3 -0
- package/dist/browser/surface-scaffold.js +3 -0
- package/dist/browser/tab-navigator.js +4 -0
- package/dist/browser/text.js +3 -0
- package/dist/browser/toolbar-control-group.js +1 -0
- package/dist/browser/workbench.js +14 -0
- package/dist/catalog-resources.d.ts +50 -0
- package/dist/catalog-resources.js +22 -0
- package/dist/catalog-resources.js.map +1 -0
- package/dist/catalog.d.ts +134 -101
- package/dist/catalog.js +669 -105
- package/dist/catalog.js.map +1 -1
- package/dist/chip.d.ts +69 -0
- package/dist/chip.js +3 -0
- package/dist/chip.js.map +1 -0
- package/dist/choice-chips.d.ts +82 -0
- package/dist/choice-chips.js +3 -0
- package/dist/choice-chips.js.map +1 -0
- package/dist/chunk-2GOCOLQL.js +270 -0
- package/dist/chunk-2GOCOLQL.js.map +1 -0
- package/dist/chunk-2MSPNRWJ.js +82 -0
- package/dist/chunk-2MSPNRWJ.js.map +1 -0
- package/dist/chunk-2PXZBFEC.js +141 -0
- package/dist/chunk-2PXZBFEC.js.map +1 -0
- package/dist/chunk-34U4ANDJ.js +119 -0
- package/dist/chunk-34U4ANDJ.js.map +1 -0
- package/dist/chunk-3SKAEPPZ.js +165 -0
- package/dist/chunk-3SKAEPPZ.js.map +1 -0
- package/dist/{chunk-56RJXPHG.js → chunk-3VXDSIBJ.js} +7 -4
- package/dist/chunk-3VXDSIBJ.js.map +1 -0
- package/dist/chunk-3WYREXW4.js +120 -0
- package/dist/chunk-3WYREXW4.js.map +1 -0
- package/dist/chunk-4UB5Z3ZZ.js +68 -0
- package/dist/chunk-4UB5Z3ZZ.js.map +1 -0
- package/dist/chunk-5NQF35VO.js +67 -0
- package/dist/chunk-5NQF35VO.js.map +1 -0
- package/dist/chunk-6C6DLP3W.js +31 -0
- package/dist/chunk-6C6DLP3W.js.map +1 -0
- package/dist/chunk-6E2H2E5A.js +196 -0
- package/dist/chunk-6E2H2E5A.js.map +1 -0
- package/dist/chunk-7IUEBNCO.js +108 -0
- package/dist/chunk-7IUEBNCO.js.map +1 -0
- package/dist/chunk-AN5IWMTM.js +24 -0
- package/dist/chunk-AN5IWMTM.js.map +1 -0
- package/dist/chunk-AV7CPAPT.js +82 -0
- package/dist/chunk-AV7CPAPT.js.map +1 -0
- package/dist/chunk-B53PS2LE.js +34 -0
- package/dist/chunk-B53PS2LE.js.map +1 -0
- package/dist/chunk-BYFTHA4I.js +153 -0
- package/dist/chunk-BYFTHA4I.js.map +1 -0
- package/dist/chunk-CA7LNX3J.js +44 -0
- package/dist/chunk-CA7LNX3J.js.map +1 -0
- package/dist/chunk-CEJ5FK6G.js +288 -0
- package/dist/chunk-CEJ5FK6G.js.map +1 -0
- package/dist/chunk-CMLPFIC5.js +46 -0
- package/dist/chunk-CMLPFIC5.js.map +1 -0
- package/dist/chunk-CVD5IZGB.js +66 -0
- package/dist/chunk-CVD5IZGB.js.map +1 -0
- package/dist/chunk-D5RGM3XA.js +38 -0
- package/dist/chunk-D5RGM3XA.js.map +1 -0
- package/dist/chunk-DZJ4GBSP.js +59 -0
- package/dist/chunk-DZJ4GBSP.js.map +1 -0
- package/dist/chunk-EIET4QLK.js +51 -0
- package/dist/chunk-EIET4QLK.js.map +1 -0
- package/dist/chunk-EKHDLBRP.js +86 -0
- package/dist/chunk-EKHDLBRP.js.map +1 -0
- package/dist/chunk-ELCMSQNJ.js +49 -0
- package/dist/chunk-ELCMSQNJ.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-FNZQOUZ5.js +52 -0
- package/dist/chunk-FNZQOUZ5.js.map +1 -0
- package/dist/chunk-FR76ZJQC.js +90 -0
- package/dist/chunk-FR76ZJQC.js.map +1 -0
- package/dist/chunk-G3J7JDP6.js +29 -0
- package/dist/chunk-G3J7JDP6.js.map +1 -0
- package/dist/chunk-GS2QD3N7.js +14 -0
- package/dist/chunk-GS2QD3N7.js.map +1 -0
- package/dist/chunk-HLDRH23D.js +84 -0
- package/dist/chunk-HLDRH23D.js.map +1 -0
- package/dist/chunk-HQZYKJ56.js +302 -0
- package/dist/chunk-HQZYKJ56.js.map +1 -0
- package/dist/chunk-HZPHCSCS.js +95 -0
- package/dist/chunk-HZPHCSCS.js.map +1 -0
- package/dist/chunk-IKS72C6P.js +53 -0
- package/dist/chunk-IKS72C6P.js.map +1 -0
- package/dist/chunk-IM3GKYOG.js +202 -0
- package/dist/chunk-IM3GKYOG.js.map +1 -0
- package/dist/chunk-IQSRHXZR.js +164 -0
- package/dist/chunk-IQSRHXZR.js.map +1 -0
- package/dist/chunk-IXLUZHGT.js +162 -0
- package/dist/chunk-IXLUZHGT.js.map +1 -0
- package/dist/chunk-JOR5LGYE.js +55 -0
- package/dist/chunk-JOR5LGYE.js.map +1 -0
- package/dist/chunk-K4AT3V3J.js +545 -0
- package/dist/chunk-K4AT3V3J.js.map +1 -0
- package/dist/chunk-KCS6NJ3O.js +82 -0
- package/dist/chunk-KCS6NJ3O.js.map +1 -0
- package/dist/chunk-KH4KEMSP.js +71 -0
- 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-LOSRXZAH.js +100 -0
- package/dist/chunk-LOSRXZAH.js.map +1 -0
- package/dist/chunk-LPHU44S3.js +24 -0
- package/dist/chunk-LPHU44S3.js.map +1 -0
- package/dist/chunk-M5KZ26VV.js +148 -0
- package/dist/chunk-M5KZ26VV.js.map +1 -0
- package/dist/chunk-MF6ZUUJZ.js +300 -0
- package/dist/chunk-MF6ZUUJZ.js.map +1 -0
- package/dist/chunk-MHMWQ7RB.js +19 -0
- package/dist/chunk-MHMWQ7RB.js.map +1 -0
- package/dist/chunk-MJ5RU6XT.js +173 -0
- package/dist/chunk-MJ5RU6XT.js.map +1 -0
- package/dist/chunk-MXNIVEVL.js +48 -0
- package/dist/chunk-MXNIVEVL.js.map +1 -0
- package/dist/{chunk-YGN7OMLT.js → chunk-NS2TBYM4.js} +8 -5
- package/dist/chunk-NS2TBYM4.js.map +1 -0
- package/dist/chunk-NS762OVM.js +222 -0
- package/dist/chunk-NS762OVM.js.map +1 -0
- package/dist/chunk-OZ6X76G5.js +547 -0
- package/dist/chunk-OZ6X76G5.js.map +1 -0
- package/dist/chunk-PKL6QJKK.js +835 -0
- package/dist/chunk-PKL6QJKK.js.map +1 -0
- package/dist/chunk-QDSZTQXL.js +28 -0
- package/dist/chunk-QDSZTQXL.js.map +1 -0
- package/dist/chunk-QH5KOFNS.js +39 -0
- package/dist/chunk-QH5KOFNS.js.map +1 -0
- package/dist/chunk-QLA25V2K.js +493 -0
- package/dist/chunk-QLA25V2K.js.map +1 -0
- package/dist/chunk-QTSMHH5J.js +85 -0
- package/dist/chunk-QTSMHH5J.js.map +1 -0
- package/dist/chunk-QYMJHS4K.js +36 -0
- package/dist/chunk-QYMJHS4K.js.map +1 -0
- package/dist/chunk-S2XULQEK.js +52 -0
- package/dist/chunk-S2XULQEK.js.map +1 -0
- package/dist/chunk-S3ECMF23.js +33 -0
- package/dist/chunk-S3ECMF23.js.map +1 -0
- package/dist/chunk-S4Y3YTAI.js +35 -0
- package/dist/chunk-S4Y3YTAI.js.map +1 -0
- package/dist/chunk-S4ZGTDSG.js +18 -0
- package/dist/chunk-S4ZGTDSG.js.map +1 -0
- package/dist/chunk-SCDWURBO.js +136 -0
- package/dist/chunk-SCDWURBO.js.map +1 -0
- package/dist/chunk-SIW64V65.js +176 -0
- package/dist/chunk-SIW64V65.js.map +1 -0
- package/dist/chunk-SQ5DH66U.js +37 -0
- package/dist/chunk-SQ5DH66U.js.map +1 -0
- package/dist/chunk-TDMHA7C3.js +251 -0
- package/dist/chunk-TDMHA7C3.js.map +1 -0
- package/dist/chunk-TGLUDQP2.js +138 -0
- package/dist/chunk-TGLUDQP2.js.map +1 -0
- package/dist/chunk-U6QYTMDB.js +85 -0
- package/dist/chunk-U6QYTMDB.js.map +1 -0
- package/dist/chunk-VFYO3UGZ.js +45 -0
- package/dist/chunk-VFYO3UGZ.js.map +1 -0
- package/dist/chunk-W4IK7AWD.js +73 -0
- package/dist/chunk-W4IK7AWD.js.map +1 -0
- package/dist/chunk-WVS6CUCT.js +48 -0
- package/dist/chunk-WVS6CUCT.js.map +1 -0
- package/dist/chunk-Y6KT7ZTR.js +109 -0
- package/dist/chunk-Y6KT7ZTR.js.map +1 -0
- package/dist/chunk-YBWQR2OK.js +526 -0
- package/dist/chunk-YBWQR2OK.js.map +1 -0
- package/dist/chunk-YMUIQRWK.js +44 -0
- package/dist/chunk-YMUIQRWK.js.map +1 -0
- package/dist/chunk-YQ2AC4E2.js +59 -0
- package/dist/chunk-YQ2AC4E2.js.map +1 -0
- package/dist/chunk-ZKKO4MHC.js +25 -0
- package/dist/chunk-ZKKO4MHC.js.map +1 -0
- package/dist/chunk-ZNROKDSZ.js +54 -0
- package/dist/chunk-ZNROKDSZ.js.map +1 -0
- package/dist/chunk-ZYU5WRC3.js +230 -0
- package/dist/chunk-ZYU5WRC3.js.map +1 -0
- package/dist/collapsible-panel.d.ts +96 -17
- package/dist/collapsible-panel.js +133 -14
- 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/composer.d.ts +62 -0
- package/dist/composer.js +5 -0
- package/dist/composer.js.map +1 -0
- package/dist/content-item.d.ts +116 -0
- package/dist/content-item.js +4 -0
- package/dist/content-item.js.map +1 -0
- 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/css-values.d.ts +127 -0
- package/dist/css-values.js +3 -0
- package/dist/css-values.js.map +1 -0
- package/dist/device-class.js +34 -6
- package/dist/device-class.js.map +1 -1
- package/dist/disclosure-arrow.d.ts +6 -1
- package/dist/disclosure-arrow.js +2 -1
- 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/empty-state.d.ts +5 -2
- package/dist/empty-state.js +2 -1
- 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/flex-alignment-4ms8ZbV8.d.ts +5 -0
- package/dist/floating-toolbar.d.ts +51 -0
- package/dist/floating-toolbar.js +3 -0
- package/dist/floating-toolbar.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.d.ts +58 -0
- package/dist/grid.js +6 -0
- package/dist/grid.js.map +1 -0
- package/dist/help-tags-register.d.ts +13 -0
- package/dist/help-tags-register.js +9 -0
- package/dist/help-tags-register.js.map +1 -0
- package/dist/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 +65 -17
- package/dist/index.js +71 -24
- package/dist/list-action-row.d.ts +69 -12
- package/dist/list-action-row.js +5 -1
- package/dist/list-header.d.ts +65 -10
- package/dist/list-header.js +4 -1
- package/dist/list-icon-tile-B8dr97OW.d.ts +18 -0
- package/dist/list-inset-control.d.ts +22 -0
- package/dist/list-inset-control.js +3 -0
- package/dist/list-inset-control.js.map +1 -0
- package/dist/list-inset-text.d.ts +30 -0
- package/dist/list-inset-text.js +4 -0
- package/dist/list-inset-text.js.map +1 -0
- package/dist/list-item.d.ts +49 -5
- package/dist/list-item.js +4 -1
- package/dist/list.d.ts +128 -0
- package/dist/list.js +7 -0
- package/dist/list.js.map +1 -0
- package/dist/loading-spinner.d.ts +12 -2
- package/dist/loading-spinner.js +2 -1
- package/dist/lucide-icon.d.ts +15 -3
- package/dist/lucide-icon.js +2 -1
- package/dist/nav-stack-CU_0dKtI.d.ts +194 -0
- package/dist/nav-stack.d.ts +15 -38
- package/dist/nav-stack.js +14 -1
- package/dist/pane.d.ts +225 -0
- package/dist/pane.js +6 -0
- package/dist/pane.js.map +1 -0
- package/dist/panel-toolbar-vg6Ir5Dy.d.ts +77 -0
- package/dist/popup-menu-register.d.ts +10 -0
- package/dist/popup-menu-register.js +336 -0
- package/dist/popup-menu-register.js.map +1 -0
- package/dist/popup-menu.d.ts +125 -0
- package/dist/popup-menu.js +3 -0
- package/dist/popup-menu.js.map +1 -0
- package/dist/resizable-region.d.ts +32 -3
- package/dist/resizable-region.js +1 -1
- package/dist/row.d.ts +53 -0
- package/dist/row.js +7 -0
- package/dist/row.js.map +1 -0
- package/dist/scroll-clearance-BikHljTc.d.ts +14 -0
- package/dist/segmented-control.d.ts +12 -9
- package/dist/segmented-control.js +1 -2
- package/dist/select-register.js +255 -3
- package/dist/select-register.js.map +1 -1
- package/dist/select.d.ts +103 -8
- package/dist/select.js +4 -1
- package/dist/semantic-content-BbzjvSu9.d.ts +14 -0
- package/dist/semantic-tone-CdW013KF.d.ts +4 -0
- package/dist/sides-BPSWde0A.d.ts +4 -0
- package/dist/skeleton.d.ts +14 -7
- package/dist/skeleton.js +2 -1
- package/dist/spacer.d.ts +18 -0
- package/dist/spacer.js +4 -0
- package/dist/spacer.js.map +1 -0
- 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 +63 -6
- package/dist/split-view.js +150 -10
- package/dist/split-view.js.map +1 -1
- package/dist/state-banner.d.ts +41 -7
- package/dist/state-banner.js +4 -1
- package/dist/styles/anchored-surface.css +41 -0
- package/dist/styles/app-tab.css +232 -0
- package/dist/styles/backdrop-image.css +241 -0
- package/dist/styles/badge.css +145 -0
- package/dist/styles/catalog/components/catalog-example-stack.css +14 -0
- package/dist/styles/catalog/components/catalog-example.css +204 -0
- package/dist/styles/catalog/components/catalog-stage.css +61 -0
- package/dist/styles/catalog/components/catalog.css +26 -0
- package/dist/styles/catalog.css +5 -498
- package/dist/styles/chip.css +208 -0
- package/dist/styles/choice-chips.css +154 -0
- package/dist/styles/collapsible-panel.css +450 -16
- package/dist/styles/column-track.css +57 -0
- package/dist/styles/combobox.css +113 -0
- package/dist/styles/components/actions/floating-toolbar/floating-toolbar.css +119 -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 +370 -0
- package/dist/styles/components/actions/split-button/split-button.css +95 -0
- package/dist/styles/components/actions/toolbar/toolbar.css +452 -0
- package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +1197 -0
- package/dist/styles/components/actions/toolbar-text/toolbar-text.css +269 -0
- package/dist/styles/components/collections/framed-list/framed-list.css +47 -0
- package/dist/styles/components/collections/list/list.css +250 -0
- package/dist/styles/components/collections/list-action-row/list-action-row.css +466 -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 +461 -0
- package/dist/styles/components/collections/summary-row/summary-row.css +161 -0
- package/dist/styles/components/data-display/value-table/value-table.css +183 -0
- package/dist/styles/components/feedback/anchored-surface/anchored-surface.css +41 -0
- package/dist/styles/components/feedback/badge/badge.css +145 -0
- package/dist/styles/components/feedback/chip/chip.css +208 -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/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 +297 -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/composer/composer.css +100 -0
- package/dist/styles/components/forms/file-picker/file-picker.css +81 -0
- package/dist/styles/components/forms/segmented-control/segmented-control.css +196 -0
- package/dist/styles/components/forms/select/select.css +455 -0
- package/dist/styles/components/forms/token-search-field/token-search-field.css +432 -0
- package/dist/styles/components/layout/collapsible-panel/collapsible-panel.css +580 -0
- 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/grid/grid.css +88 -0
- package/dist/styles/components/layout/pane/pane.css +502 -0
- package/dist/styles/components/layout/resizable-region/resizable-region.css +545 -0
- package/dist/styles/components/layout/row/row.css +114 -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 +1086 -0
- package/dist/styles/components/media/lucide-icon/lucide-icon.css +15 -0
- package/dist/styles/components/navigation/app-tab/app-tab.css +384 -0
- package/dist/styles/components/navigation/disclosure-arrow/disclosure-arrow.css +23 -0
- package/dist/styles/components/navigation/nav-stack/nav-stack.css +543 -0
- package/dist/styles/components/navigation/tab-bar/tab-bar.css +197 -0
- package/dist/styles/components/navigation/tab-navigator/tab-navigator.css +443 -0
- package/dist/styles/components/surfaces/backdrop-image/backdrop-image.css +241 -0
- package/dist/styles/components/surfaces/content-item/content-item.css +138 -0
- package/dist/styles/components/surfaces/sunken-panel/sunken-panel.css +31 -0
- package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +589 -0
- package/dist/styles/components/typography/text/text.css +220 -0
- package/dist/styles/composer.css +100 -0
- package/dist/styles/content-item.css +138 -0
- package/dist/styles/content-swap.css +154 -0
- package/dist/styles/corner-status.css +60 -0
- package/dist/styles/document.css +98 -0
- package/dist/styles/edge-activity-indicator.css +127 -0
- package/dist/styles/file-picker.css +81 -0
- package/dist/styles/floating-toolbar.css +119 -0
- package/dist/styles/foundation.css +419 -46
- package/dist/styles/framed-list.css +47 -0
- package/dist/styles/grid.css +88 -0
- package/dist/styles/icon-button.css +22 -0
- package/dist/styles/icon-toggle-button.css +83 -0
- package/dist/styles/layout.css +3 -41
- package/dist/styles/list-action-row.css +324 -18
- package/dist/styles/list-header.css +128 -59
- package/dist/styles/list-inset-control.css +30 -0
- package/dist/styles/list-inset-text.css +29 -0
- package/dist/styles/list-item.css +371 -33
- package/dist/styles/list.css +250 -0
- package/dist/styles/loading-spinner.css +4 -0
- package/dist/styles/lucide-icon.css +9 -0
- package/dist/styles/nav-stack.css +479 -47
- package/dist/styles/overlay-sheet.css +211 -0
- package/dist/styles/pane.css +502 -0
- package/dist/styles/popup-menu.css +370 -0
- package/dist/styles/resizable-region.css +438 -4
- package/dist/styles/row.css +114 -0
- package/dist/styles/segmented-control.css +36 -9
- package/dist/styles/select.css +338 -21
- package/dist/styles/skeleton.css +64 -3
- package/dist/styles/spacer.css +11 -0
- package/dist/styles/split-button.css +95 -0
- package/dist/styles/split-view.css +114 -3
- package/dist/styles/state-banner.css +146 -22
- package/dist/styles/styles.css +24 -1
- package/dist/styles/summary-row.css +161 -0
- package/dist/styles/sunken-panel.css +31 -0
- package/dist/styles/surface-scaffold.css +589 -0
- package/dist/styles/tab-bar.css +161 -9
- package/dist/styles/tab-navigator.css +443 -0
- package/dist/styles/text.css +220 -0
- package/dist/styles/token-search-field.css +202 -59
- package/dist/styles/toolbar-control-group.css +1022 -36
- package/dist/styles/toolbar-text.css +236 -7
- package/dist/styles/toolbar.css +402 -11
- package/dist/styles/value-table.css +115 -7
- package/dist/styles/webawesome.css +420 -17
- package/dist/styles/workbench.css +999 -7
- 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 +38 -0
- package/dist/sunken-panel.js +4 -0
- package/dist/sunken-panel.js.map +1 -0
- package/dist/surface-scaffold-register.d.ts +10 -0
- package/dist/surface-scaffold-register.js +254 -0
- package/dist/surface-scaffold-register.js.map +1 -0
- package/dist/surface-scaffold.d.ts +203 -0
- package/dist/surface-scaffold.js +4 -0
- package/dist/surface-scaffold.js.map +1 -0
- package/dist/tab-bar.d.ts +33 -7
- package/dist/tab-bar.js +1 -1
- package/dist/tab-navigator.d.ts +154 -0
- package/dist/tab-navigator.js +131 -0
- package/dist/tab-navigator.js.map +1 -0
- package/dist/text.d.ts +98 -0
- package/dist/text.js +3 -0
- package/dist/text.js.map +1 -0
- package/dist/token-search-field.d.ts +3 -43
- package/dist/token-search-field.js +2 -1
- package/dist/token-search-model-aYR0YAei.d.ts +184 -0
- package/dist/token-search-model.d.ts +3 -0
- package/dist/token-search-model.js +3 -0
- package/dist/token-search-model.js.map +1 -0
- package/dist/toolbar-control-group.d.ts +107 -7
- package/dist/toolbar-control-group.js +3 -1
- package/dist/toolbar-text.d.ts +63 -9
- package/dist/toolbar-text.js +2 -1
- package/dist/toolbar.d.ts +72 -7
- package/dist/toolbar.js +1 -1
- package/dist/types-CVgIwSdq.d.ts +189 -0
- package/dist/value-table.d.ts +30 -4
- package/dist/value-table.js +2 -1
- package/dist/webawesome.d.ts +8 -1
- package/dist/wire-catalog.d.ts +111 -5
- package/dist/wire-catalog.js +302 -14
- package/dist/wire-catalog.js.map +1 -1
- 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-composers.d.ts +16 -0
- package/dist/wire-composers.js +3 -0
- package/dist/wire-composers.js.map +1 -0
- package/dist/wire-content-items.d.ts +11 -0
- package/dist/wire-content-items.js +139 -0
- package/dist/wire-content-items.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-focus-scroll.d.ts +16 -0
- package/dist/wire-list-focus-scroll.js +3 -0
- package/dist/wire-list-focus-scroll.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-nav-stack.d.ts +4 -1
- package/dist/wire-nav-stack.js +352 -15
- package/dist/wire-nav-stack.js.map +1 -1
- package/dist/wire-overlay-sheets.d.ts +20 -0
- package/dist/wire-overlay-sheets.js +4 -0
- package/dist/wire-overlay-sheets.js.map +1 -0
- package/dist/wire-resizable-regions.d.ts +2 -1
- package/dist/wire-resizable-regions.js +2 -1
- package/dist/wire-scroll-dividers.d.ts +87 -0
- package/dist/wire-scroll-dividers.js +3 -0
- package/dist/wire-scroll-dividers.js.map +1 -0
- package/dist/wire-sidebar.d.ts +24 -4
- package/dist/wire-sidebar.js +159 -45
- package/dist/wire-sidebar.js.map +1 -1
- package/dist/wire-tab-bars.d.ts +6 -2
- package/dist/wire-tab-bars.js +1 -1
- package/dist/wire-tab-navigator.d.ts +13 -0
- package/dist/wire-tab-navigator.js +153 -0
- package/dist/wire-tab-navigator.js.map +1 -0
- package/dist/wire-token-search-fields.d.ts +28 -10
- package/dist/wire-token-search-fields.js +2 -1
- package/dist/wire-toolbar-visibility.d.ts +13 -0
- package/dist/wire-toolbar-visibility.js +3 -0
- package/dist/wire-toolbar-visibility.js.map +1 -0
- package/dist/wire-workbench.d.ts +116 -0
- package/dist/wire-workbench.js +6 -0
- package/dist/wire-workbench.js.map +1 -0
- package/dist/workbench.d.ts +253 -10
- package/dist/workbench.js +21 -15
- package/dist/workbench.js.map +1 -1
- package/docs/accessibility.md +675 -33
- package/docs/anchored-surface.md +101 -0
- package/docs/app-layouts.md +172 -10
- package/docs/apple-hig.md +2 -0
- package/docs/backdrop-image.md +128 -0
- package/docs/catalog.md +565 -63
- package/docs/collapsible-panel.md +308 -25
- package/docs/component-contract.md +818 -53
- package/docs/component-integration.md +75 -0
- package/docs/component-selection.md +971 -99
- package/docs/composer.md +143 -0
- 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/multiple-dark.svg +1 -0
- package/docs/design/templates/choice-chips/multiple.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/composer/chat-dark.svg +1 -0
- package/docs/design/templates/composer/chat.svg +1 -0
- package/docs/design/templates/composer/prompt-dark.svg +1 -0
- package/docs/design/templates/composer/prompt.svg +1 -0
- package/docs/design/templates/composer-dark.svg +1 -0
- package/docs/design/templates/composer.svg +1 -0
- package/docs/design/templates/empty-state/filtered-dark.svg +1 -0
- package/docs/design/templates/empty-state/filtered.svg +1 -0
- package/docs/design/templates/empty-state/with-action-dark.svg +1 -0
- package/docs/design/templates/empty-state/with-action.svg +1 -0
- package/docs/design/templates/empty-state-dark.svg +1 -0
- package/docs/design/templates/empty-state.svg +1 -0
- package/docs/design/templates/list/compact-dark.svg +1 -0
- package/docs/design/templates/list/compact.svg +1 -0
- package/docs/design/templates/list/stack-dark.svg +1 -0
- package/docs/design/templates/list/stack.svg +1 -0
- package/docs/design/templates/list-action-row/default-dark.svg +1 -0
- package/docs/design/templates/list-action-row/default.svg +1 -0
- package/docs/design/templates/list-action-row/icon-tile-dark.svg +1 -0
- package/docs/design/templates/list-action-row/icon-tile.svg +1 -0
- package/docs/design/templates/list-action-row/selected-dark.svg +1 -0
- package/docs/design/templates/list-action-row/selected.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 -0
- package/docs/design/templates/list-action-row.svg +1 -0
- package/docs/design/templates/list-dark.svg +1 -0
- package/docs/design/templates/list-header/action-dark.svg +1 -0
- package/docs/design/templates/list-header/action.svg +1 -0
- package/docs/design/templates/list-header/count-dark.svg +1 -0
- package/docs/design/templates/list-header/count.svg +1 -0
- package/docs/design/templates/list-header/inline-action-dark.svg +1 -0
- package/docs/design/templates/list-header/inline-action.svg +1 -0
- package/docs/design/templates/list-header/size-l-dark.svg +1 -0
- package/docs/design/templates/list-header/size-l.svg +1 -0
- package/docs/design/templates/list-header/size-m-dark.svg +1 -0
- package/docs/design/templates/list-header/size-m.svg +1 -0
- package/docs/design/templates/list-header/size-xl-dark.svg +1 -0
- package/docs/design/templates/list-header/size-xl.svg +1 -0
- package/docs/design/templates/list-header/size-xs-dark.svg +1 -0
- package/docs/design/templates/list-header/size-xs.svg +1 -0
- package/docs/design/templates/list-header/toggle-collapsed-dark.svg +1 -0
- package/docs/design/templates/list-header/toggle-collapsed.svg +1 -0
- package/docs/design/templates/list-header/toggle-expanded-dark.svg +1 -0
- package/docs/design/templates/list-header/toggle-expanded.svg +1 -0
- package/docs/design/templates/list-header-dark.svg +1 -0
- package/docs/design/templates/list-header.svg +1 -0
- package/docs/design/templates/list-item/default-dark.svg +1 -0
- package/docs/design/templates/list-item/default.svg +1 -0
- package/docs/design/templates/list-item/icon-tile-dark.svg +1 -0
- package/docs/design/templates/list-item/icon-tile.svg +1 -0
- package/docs/design/templates/list-item/multiline-dark.svg +1 -0
- package/docs/design/templates/list-item/multiline.svg +1 -0
- package/docs/design/templates/list-item/selected-dark.svg +1 -0
- package/docs/design/templates/list-item/selected.svg +1 -0
- package/docs/design/templates/list-item/trailing-dark.svg +1 -0
- package/docs/design/templates/list-item/trailing.svg +1 -0
- package/docs/design/templates/list-item-dark.svg +1 -0
- package/docs/design/templates/list-item.svg +1 -0
- package/docs/design/templates/list.svg +1 -0
- package/docs/design/templates/segmented-control/equal-dark.svg +1 -0
- package/docs/design/templates/segmented-control/equal.svg +1 -0
- package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -0
- package/docs/design/templates/segmented-control/pill-small.svg +1 -0
- package/docs/design/templates/segmented-control-dark.svg +1 -0
- package/docs/design/templates/segmented-control.svg +1 -0
- package/docs/design/templates/skeleton/avatar-dark.svg +1 -0
- package/docs/design/templates/skeleton/avatar.svg +1 -0
- package/docs/design/templates/skeleton/block-dark.svg +1 -0
- package/docs/design/templates/skeleton/block.svg +1 -0
- package/docs/design/templates/skeleton/lines-dark.svg +1 -0
- package/docs/design/templates/skeleton/lines.svg +1 -0
- package/docs/design/templates/skeleton-dark.svg +1 -0
- package/docs/design/templates/skeleton.svg +1 -0
- package/docs/design/templates/state-banner/danger-dark.svg +1 -0
- package/docs/design/templates/state-banner/danger.svg +1 -0
- package/docs/design/templates/state-banner/info-badge-dark.svg +1 -0
- package/docs/design/templates/state-banner/info-badge.svg +1 -0
- package/docs/design/templates/state-banner/info-dark.svg +1 -0
- package/docs/design/templates/state-banner/info.svg +1 -0
- 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/success-dark.svg +1 -0
- package/docs/design/templates/state-banner/success.svg +1 -0
- package/docs/design/templates/state-banner/warning-dark.svg +1 -0
- package/docs/design/templates/state-banner/warning.svg +1 -0
- package/docs/design/templates/state-banner-dark.svg +1 -0
- package/docs/design/templates/state-banner.svg +1 -0
- package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -0
- package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -0
- package/docs/design/templates/tab-bar-dark.svg +1 -0
- package/docs/design/templates/tab-bar.svg +1 -0
- package/docs/design/templates/token-search-field/empty-dark.svg +1 -0
- package/docs/design/templates/token-search-field/empty.svg +1 -0
- package/docs/design/templates/token-search-field/tokens-dark.svg +1 -0
- package/docs/design/templates/token-search-field/tokens.svg +1 -0
- package/docs/design/templates/token-search-field-dark.svg +1 -0
- package/docs/design/templates/token-search-field.svg +1 -0
- package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -0
- package/docs/design/templates/toolbar/title-and-actions.svg +1 -0
- package/docs/design/templates/toolbar/width-visibility-320-dark.svg +1 -0
- package/docs/design/templates/toolbar/width-visibility-320.svg +1 -0
- package/docs/design/templates/toolbar/width-visibility-600-dark.svg +1 -0
- package/docs/design/templates/toolbar/width-visibility-600.svg +1 -0
- 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/glass-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/glass.svg +1 -0
- 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/icon-tile-brand-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-brand.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-danger-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-danger.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-neutral-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-neutral.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-success-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-success.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-warning-dark.svg +1 -0
- package/docs/design/templates/toolbar-control-group/icon-tile-warning.svg +1 -0
- 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 -11
- package/docs/design/templates/toolbar-control-group.svg +1 -11
- package/docs/design/templates/toolbar-dark.svg +1 -0
- package/docs/design/templates/toolbar-text/dark-tone-dark.svg +1 -0
- package/docs/design/templates/toolbar-text/dark-tone.svg +1 -0
- package/docs/design/templates/toolbar-text/default-dark.svg +1 -0
- package/docs/design/templates/toolbar-text/default.svg +1 -0
- package/docs/design/templates/toolbar-text/large-dark.svg +1 -0
- package/docs/design/templates/toolbar-text/large.svg +1 -0
- package/docs/design/templates/toolbar-text/small-dark.svg +1 -0
- package/docs/design/templates/toolbar-text/small.svg +1 -0
- package/docs/design/templates/toolbar-text-dark.svg +1 -0
- package/docs/design/templates/toolbar-text.svg +1 -0
- package/docs/design/templates/toolbar.svg +1 -0
- package/docs/design/templates/value-table/details-dark.svg +1 -0
- package/docs/design/templates/value-table/details.svg +1 -0
- package/docs/design/templates/value-table-dark.svg +1 -0
- package/docs/design/templates/value-table.svg +1 -0
- package/docs/design/templates.md +83 -18
- package/docs/design-philosophy.md +65 -20
- package/docs/device-class.md +10 -9
- package/docs/document-baseline.md +93 -0
- package/docs/examples/application-ui-profile.json +60 -0
- package/docs/examples/command-palette-adapter.tsx +69 -17
- package/docs/examples/component-catalog-extension.json +52 -0
- package/docs/examples/component-composition-extension.json +80 -0
- package/docs/layout.md +926 -53
- package/docs/manual-test-plan.md +29 -0
- package/docs/nav-stack.md +323 -14
- package/docs/recipes.md +153 -73
- package/docs/split-view.md +96 -7
- package/docs/sunken-panel.md +106 -0
- package/docs/surface-scaffold.md +416 -0
- package/docs/tab-navigator.md +291 -0
- package/docs/type-contracts.md +137 -0
- package/docs/ui-analyzer.md +406 -0
- package/docs/ui-doctor.md +281 -0
- package/docs/ui-evaluator.md +139 -0
- package/docs/ux-demo.md +58 -17
- package/docs/webawesome-theme.md +215 -16
- package/docs/workbench.md +627 -12
- package/docs/writing.md +152 -0
- package/doctor/cli.mjs +120 -0
- package/doctor/component-style-checks.mjs +457 -0
- package/doctor/config.schema.json +94 -0
- package/doctor/copy-capitalization-checks.mjs +591 -0
- package/doctor/eslint-diagnostics.d.mts +24 -0
- package/doctor/eslint-diagnostics.mjs +24 -0
- package/doctor/index.d.mts +122 -0
- package/doctor/index.mjs +1424 -0
- package/doctor/report.schema.json +118 -0
- package/evaluator/cli.mjs +89 -0
- package/evaluator/index.d.mts +90 -0
- package/evaluator/index.mjs +1203 -0
- package/evaluator/report.schema.json +152 -0
- package/llms.txt +808 -50
- package/package.json +357 -27
- package/scripts/component-catalog-extension-validation.mjs +28 -0
- package/traversal-exclusions.mjs +86 -0
- package/ux-demo/recipes/app-shell.tsx +204 -16
- package/ux-demo/recipes/collapsible-sidebar.tsx +206 -45
- package/ux-demo/recipes/compact-toolbar.tsx +135 -14
- package/ux-demo/recipes/composer-form.tsx +133 -21
- package/ux-demo/recipes/list-detail-dialog.tsx +255 -14
- package/ux-demo/recipes/list-workspace-states.tsx +183 -11
- package/ux-demo/recipes/loaders.ts +11 -3
- package/ux-demo/recipes/loading-inspector.tsx +162 -39
- package/ux-demo/recipes/media-detail.tsx +272 -0
- package/ux-demo/recipes/mount-recipe.ts +26 -10
- package/ux-demo/recipes/navigation-sidebar.tsx +137 -11
- package/ux-demo/recipes/navigation-stack.tsx +79 -24
- package/ux-demo/recipes/types.ts +17 -2
- package/ux-demo/recipes/workspace-header.tsx +86 -5
- package/vite-ux-review.d.mts +83 -0
- package/vite-ux-review.mjs +120 -0
- package/dist/browser/panel-header.js +0 -7
- package/dist/chunk-2Z5TWHKQ.js +0 -34
- package/dist/chunk-2Z5TWHKQ.js.map +0 -1
- package/dist/chunk-37T3VNIZ.js +0 -19
- package/dist/chunk-37T3VNIZ.js.map +0 -1
- package/dist/chunk-55DATV3A.js +0 -10
- package/dist/chunk-55DATV3A.js.map +0 -1
- package/dist/chunk-56RJXPHG.js.map +0 -1
- package/dist/chunk-7BR3DO2A.js +0 -31
- package/dist/chunk-7BR3DO2A.js.map +0 -1
- package/dist/chunk-7JB7VPRI.js +0 -34
- package/dist/chunk-7JB7VPRI.js.map +0 -1
- package/dist/chunk-7LDCTU7D.js +0 -134
- package/dist/chunk-7LDCTU7D.js.map +0 -1
- package/dist/chunk-AQNKJRFH.js +0 -79
- package/dist/chunk-AQNKJRFH.js.map +0 -1
- package/dist/chunk-AVZHJN6C.js +0 -14
- package/dist/chunk-AVZHJN6C.js.map +0 -1
- package/dist/chunk-B24C4A6T.js +0 -22
- package/dist/chunk-B24C4A6T.js.map +0 -1
- package/dist/chunk-BLK3UEEI.js +0 -23
- package/dist/chunk-BLK3UEEI.js.map +0 -1
- package/dist/chunk-CVZYNJJ5.js +0 -265
- package/dist/chunk-CVZYNJJ5.js.map +0 -1
- package/dist/chunk-DAFFDO33.js +0 -14
- package/dist/chunk-DAFFDO33.js.map +0 -1
- package/dist/chunk-I7INRJO4.js +0 -17
- package/dist/chunk-I7INRJO4.js.map +0 -1
- package/dist/chunk-L4OKFDJY.js +0 -24
- package/dist/chunk-L4OKFDJY.js.map +0 -1
- package/dist/chunk-LC3YSAZC.js +0 -39
- package/dist/chunk-LC3YSAZC.js.map +0 -1
- package/dist/chunk-M5JRI6MN.js +0 -27
- package/dist/chunk-M5JRI6MN.js.map +0 -1
- package/dist/chunk-MFKMHK5W.js +0 -10
- package/dist/chunk-MFKMHK5W.js.map +0 -1
- package/dist/chunk-RUNWEPR4.js +0 -10
- package/dist/chunk-RUNWEPR4.js.map +0 -1
- package/dist/chunk-W2FK7ZNY.js +0 -26
- package/dist/chunk-W2FK7ZNY.js.map +0 -1
- package/dist/chunk-W5EQ3HYQ.js +0 -42
- package/dist/chunk-W5EQ3HYQ.js.map +0 -1
- package/dist/chunk-WVPYVDXY.js +0 -15
- package/dist/chunk-WVPYVDXY.js.map +0 -1
- package/dist/chunk-XXMOARTH.js +0 -229
- package/dist/chunk-XXMOARTH.js.map +0 -1
- package/dist/chunk-Y5MRDTLC.js +0 -20
- package/dist/chunk-Y5MRDTLC.js.map +0 -1
- package/dist/chunk-YGN7OMLT.js.map +0 -1
- package/dist/panel-header.d.ts +0 -36
- package/dist/panel-header.js +0 -7
- package/dist/panel-header.js.map +0 -1
- package/dist/styles/panel-header.css +0 -64
- package/dist/styles/tab-scaffold.css +0 -84
- package/dist/tab-scaffold.d.ts +0 -30
- package/dist/tab-scaffold.js +0 -16
- package/dist/tab-scaffold.js.map +0 -1
- package/dist/wire-tab-scaffold.d.ts +0 -11
- package/dist/wire-tab-scaffold.js +0 -16
- package/dist/wire-tab-scaffold.js.map +0 -1
- package/docs/design/templates/panel-header/icon-actions-dark.svg +0 -1
- package/docs/design/templates/panel-header/icon-actions.svg +0 -1
- package/docs/design/templates/panel-header/icon-summary-actions-dark.svg +0 -1
- package/docs/design/templates/panel-header/icon-summary-actions.svg +0 -1
- package/docs/design/templates/panel-header/no-icon-dark.svg +0 -1
- package/docs/design/templates/panel-header/no-icon.svg +0 -1
- package/docs/design/templates/panel-header/page-heading-dark.svg +0 -1
- package/docs/design/templates/panel-header/page-heading.svg +0 -1
- package/docs/design/templates/panel-header/title-only-dark.svg +0 -1
- package/docs/design/templates/panel-header/title-only.svg +0 -1
- package/docs/design/templates/panel-header-dark.svg +0 -13
- package/docs/design/templates/panel-header.svg +0 -13
- package/docs/tab-scaffold.md +0 -41
- package/ux-demo/recipes/recipes.css +0 -448
package/dist/pane.d.ts
ADDED
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import * as kerfjs from 'kerfjs';
|
|
2
|
+
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
3
|
+
import { S as ScrollClearance } from './scroll-clearance-BikHljTc.js';
|
|
4
|
+
import { CssColor } from './css-values.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* What clear (fully transparent) chrome fades in as content scrolls beneath
|
|
8
|
+
* it: `none` stays clear; `material` fades in the translucent chrome
|
|
9
|
+
* material; `surface` fades in the opaque surface. The fade tracks the scroll
|
|
10
|
+
* over `scrollEdgeDistance` (opacity only), from the scroll state
|
|
11
|
+
* `wireScrollDividers` reports; unwired, the chrome stays clear.
|
|
12
|
+
*/
|
|
13
|
+
type ScrollEdge = 'none' | 'material' | 'surface';
|
|
14
|
+
|
|
15
|
+
/** The color scheme an app declares for a {@link SurfaceTint}'s color. */
|
|
16
|
+
type SurfaceTintScheme = 'light' | 'dark';
|
|
17
|
+
/**
|
|
18
|
+
* A scoped tint for a layout surface: the app's color (usually sampled from
|
|
19
|
+
* artwork it already knows) and the scheme that color belongs to. Kerf does no
|
|
20
|
+
* color detection; `scheme` says whether the color reads as a light or a dark
|
|
21
|
+
* surface. Inside the scope the surface, raised surface, text, quiet text, and
|
|
22
|
+
* everything built on them (quiet fills, separators' backdrop, the chrome
|
|
23
|
+
* material) re-derive from the color, with lightness clamped so text keeps
|
|
24
|
+
* WCAG AA over any color.
|
|
25
|
+
*/
|
|
26
|
+
interface SurfaceTint {
|
|
27
|
+
color: CssColor;
|
|
28
|
+
scheme: SurfaceTintScheme;
|
|
29
|
+
/**
|
|
30
|
+
* An optional accent (usually the artwork's most vivid color). The scope's
|
|
31
|
+
* brand ramp re-derives from it: loud fills and their text, brand text and
|
|
32
|
+
* links, text on brand fills, and the focus ring, each clamped to keep AA.
|
|
33
|
+
*/
|
|
34
|
+
accent?: CssColor;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Logical pane sides: where a {@link Pane} can show a separator and where it can
|
|
39
|
+
* compensate for a device safe-area inset.
|
|
40
|
+
*/
|
|
41
|
+
type PaneSeparatorSide = 'block-start' | 'block-end' | 'inline-start' | 'inline-end';
|
|
42
|
+
/** Semantic root elements supported by {@link Pane}. */
|
|
43
|
+
type PaneElement = 'article' | 'aside' | 'div' | 'main' | 'section';
|
|
44
|
+
/** Semantic elements supported by the scrolling content slot. */
|
|
45
|
+
type PaneContentElement = 'div' | 'main' | 'nav' | 'section';
|
|
46
|
+
type PaneRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
|
|
47
|
+
'data-component'?: never;
|
|
48
|
+
'data-separator-block-start'?: never;
|
|
49
|
+
'data-separator-block-end'?: never;
|
|
50
|
+
'data-separator-inline-start'?: never;
|
|
51
|
+
'data-separator-inline-end'?: never;
|
|
52
|
+
'data-safe-area-block-start'?: never;
|
|
53
|
+
'data-safe-area-block-end'?: never;
|
|
54
|
+
'data-safe-area-inline-start'?: never;
|
|
55
|
+
'data-safe-area-inline-end'?: never;
|
|
56
|
+
'data-chrome-placement'?: never;
|
|
57
|
+
'data-chrome-dividers'?: never;
|
|
58
|
+
'data-appearance'?: never;
|
|
59
|
+
'data-background'?: never;
|
|
60
|
+
'data-kui-tint'?: never;
|
|
61
|
+
'data-kui-tint-accent'?: never;
|
|
62
|
+
'data-deep-inset'?: never;
|
|
63
|
+
'data-outlined'?: never;
|
|
64
|
+
'data-scroll-clearance'?: never;
|
|
65
|
+
'data-header-presentation'?: never;
|
|
66
|
+
'data-header-material'?: never;
|
|
67
|
+
'data-scroll-edge'?: never;
|
|
68
|
+
'data-scroll-edge-distance'?: never;
|
|
69
|
+
'data-header-overlay'?: never;
|
|
70
|
+
}>;
|
|
71
|
+
/** How a Pane's header and footer relate to its scrolling content. */
|
|
72
|
+
type PaneChromePlacement = 'fixed' | 'auto';
|
|
73
|
+
/**
|
|
74
|
+
* When a Pane draws the divider between its pinned header or footer and its
|
|
75
|
+
* scrolling content: `scroll` while content is scrolled away beneath that
|
|
76
|
+
* chrome, as `wireScrollDividers` reports; `always`; or `none`.
|
|
77
|
+
*/
|
|
78
|
+
type PaneChromeDividers = 'scroll' | 'always' | 'none';
|
|
79
|
+
/**
|
|
80
|
+
* How a Pane's header relates to its scrolling content: `docked` in its own
|
|
81
|
+
* row above the content, or `overlay` laid over the content's top edge on the
|
|
82
|
+
* translucent chrome material, so content scrolls visibly beneath it.
|
|
83
|
+
* `clear` lays it over
|
|
84
|
+
* the same edge fully transparent, for chrome over imagery: legibility comes
|
|
85
|
+
* from glass control groups or a scrim, and with `scrollEdge="material"` the
|
|
86
|
+
* chrome material fades in once content scrolls beneath it.
|
|
87
|
+
*/
|
|
88
|
+
type PaneHeaderPresentation = 'docked' | 'overlay' | 'clear';
|
|
89
|
+
/** Background treatment of the Pane's scrolling work surface. */
|
|
90
|
+
type PaneAppearance = 'default' | 'sunken';
|
|
91
|
+
interface PaneProps {
|
|
92
|
+
/** Optional fixed chrome above the scrolling content, arranged vertically. */
|
|
93
|
+
header?: KerfUiContent;
|
|
94
|
+
/** The pane's primary vertical, scrolling content stack. */
|
|
95
|
+
children?: KerfUiContent;
|
|
96
|
+
/** Optional fixed chrome below the scrolling content. */
|
|
97
|
+
footer?: KerfUiContent;
|
|
98
|
+
/**
|
|
99
|
+
* Whether the header and footer stay pinned around the scrolling content.
|
|
100
|
+
* `fixed` (default) always pins them. `auto` pins them while the pane is
|
|
101
|
+
* tall enough, and below 480px of height (30rem, so it scales with the text
|
|
102
|
+
* size) lets the whole pane scroll as one column, so tall chrome can never
|
|
103
|
+
* squeeze the content to nothing.
|
|
104
|
+
*/
|
|
105
|
+
chromePlacement?: PaneChromePlacement;
|
|
106
|
+
/**
|
|
107
|
+
* The divider under the header and over the footer, where they meet the
|
|
108
|
+
* scrolling content. Omitted defaults to `scroll` for a plain pane and
|
|
109
|
+
* `always` for `appearance="sunken"`. `scroll` shows the header's divider only
|
|
110
|
+
* while the content is scrolled down, and the footer's only while more
|
|
111
|
+
* content lies below — never when the content fits — once
|
|
112
|
+
* `wireScrollDividers` (`@kerfjs/ui/wire-scroll-dividers`) is wired above
|
|
113
|
+
* the pane; unwired, neither shows. `always` shows both; `none` neither.
|
|
114
|
+
* The line is drawn inside the chrome, so no state moves the content.
|
|
115
|
+
*/
|
|
116
|
+
chromeDividers?: PaneChromeDividers;
|
|
117
|
+
/**
|
|
118
|
+
* `docked` (default) gives the header its own row above the scrolling
|
|
119
|
+
* content. `overlay` lays the header over the content's top edge on the
|
|
120
|
+
* translucent chrome material (`--kui-chrome-material`, opaque under
|
|
121
|
+
* `prefers-reduced-transparency`, forced colors, or without
|
|
122
|
+
* `backdrop-filter`), so content scrolls visibly beneath it. Once
|
|
123
|
+
* `wireScrollDividers` (`@kerfjs/ui/wire-scroll-dividers`) is wired above
|
|
124
|
+
* the pane it measures the header and publishes its height as the
|
|
125
|
+
* `--kui-scroll-clearance-block-start` context, which the content adds to
|
|
126
|
+
* its block-start padding and `scroll-padding` without any
|
|
127
|
+
* `scrollClearance` prop, so the first item, and anything focused or
|
|
128
|
+
* scrolled into view, rests clear of the header. Until then, and with
|
|
129
|
+
* `chromePlacement="auto"`, the header stays docked. Keep overlay header
|
|
130
|
+
* text in the normal text color: quiet text can fall below AA over the
|
|
131
|
+
* content passing beneath it.
|
|
132
|
+
*/
|
|
133
|
+
headerPresentation?: PaneHeaderPresentation;
|
|
134
|
+
/**
|
|
135
|
+
* With `headerPresentation="clear"`, `material` fades the chrome material
|
|
136
|
+
* in behind the header once content scrolls beneath it (default `none`).
|
|
137
|
+
*/
|
|
138
|
+
scrollEdge?: ScrollEdge;
|
|
139
|
+
/**
|
|
140
|
+
* The scroll distance, in CSS pixels, over which the scroll edge fades in
|
|
141
|
+
* (default 60).
|
|
142
|
+
*/
|
|
143
|
+
scrollEdgeDistance?: number;
|
|
144
|
+
/** Paint the scrolling work surface with the shared lowered-surface color. */
|
|
145
|
+
appearance?: PaneAppearance;
|
|
146
|
+
/**
|
|
147
|
+
* Paint the whole pane, header and footer included, in an app-chosen color
|
|
148
|
+
* (`uiColor('surface-raised')`, `fillColor('#1f2a44')`, or `colorVar(…)`
|
|
149
|
+
* from `@kerfjs/ui/css-values`). It replaces the appearance's fill: a sunken
|
|
150
|
+
* pane drops its lowered color and grain. Omitted, the pane keeps its
|
|
151
|
+
* default (transparent, or the sunken surface). Forced colors paint
|
|
152
|
+
* `Canvas`. Keep text at AA over the color; a dark color needs a matching
|
|
153
|
+
* tint or dark tones for its content.
|
|
154
|
+
*/
|
|
155
|
+
background?: CssColor;
|
|
156
|
+
/**
|
|
157
|
+
* A scoped tint: `{ color, scheme }`, the app's color and the scheme it
|
|
158
|
+
* belongs to. The pane paints the tinted surface (unless `background` is
|
|
159
|
+
* set) and its whole subtree, chrome material and quiet fills included,
|
|
160
|
+
* re-derives its surface and text tokens from the color with lightness
|
|
161
|
+
* clamped to keep text at WCAG AA. Without relative color syntax, or under
|
|
162
|
+
* `prefers-contrast: more`, the scope keeps the plain palette in the
|
|
163
|
+
* declared scheme.
|
|
164
|
+
*/
|
|
165
|
+
tint?: SurfaceTint;
|
|
166
|
+
/**
|
|
167
|
+
* Clear chrome that lies over the scrolling content's block-start and/or
|
|
168
|
+
* block-end edge, such as a `DialogSurface` floating footer over a filling
|
|
169
|
+
* Pane. The content scroller adds the inherited
|
|
170
|
+
* `--kui-scroll-clearance-block-*` context that chrome publishes to its block
|
|
171
|
+
* padding and `scroll-padding`, so content scrolls visibly beneath the chrome
|
|
172
|
+
* while its first and last items (and anything focused or scrolled into
|
|
173
|
+
* view) can still rest clear of it. Defaults to none.
|
|
174
|
+
*/
|
|
175
|
+
scrollClearance?: ScrollClearance;
|
|
176
|
+
/** Add 8px to every side of scrolling content (default: false). */
|
|
177
|
+
deepInset?: boolean;
|
|
178
|
+
/** Opt into keyboard (`0`) or programmatic (`-1`) focus on the Pane root. */
|
|
179
|
+
tabIndex?: 0 | -1;
|
|
180
|
+
/** Keep the standard focus outline visible, such as for a drop target. */
|
|
181
|
+
outlined?: boolean;
|
|
182
|
+
/** Root semantics. Defaults to `div`. */
|
|
183
|
+
element?: PaneElement;
|
|
184
|
+
/** Scrolling content semantics. Defaults to `div`. */
|
|
185
|
+
contentElement?: PaneContentElement;
|
|
186
|
+
/** Independent logical-edge separator lines. Defaults to none. */
|
|
187
|
+
separators?: readonly PaneSeparatorSide[];
|
|
188
|
+
/**
|
|
189
|
+
* Sides on which the pane may compensate for a device safe-area inset.
|
|
190
|
+
* Defaults to every side: the pane pads its slots for each side that still
|
|
191
|
+
* reaches an unsafe screen edge, as its surrounding layout reports, while its
|
|
192
|
+
* background and separators paint through. List only the sides an app-owned
|
|
193
|
+
* layout places at a screen edge, or pass `[]` to opt out.
|
|
194
|
+
*/
|
|
195
|
+
safeAreaEdges?: readonly PaneSeparatorSide[];
|
|
196
|
+
id?: string;
|
|
197
|
+
/** Accessible name for a landmark root such as `aside` or `main`. */
|
|
198
|
+
label?: string;
|
|
199
|
+
/** Accessible name for a landmark scrolling slot such as `nav`. */
|
|
200
|
+
contentLabel?: string;
|
|
201
|
+
className?: string;
|
|
202
|
+
headerClassName?: string;
|
|
203
|
+
contentClassName?: string;
|
|
204
|
+
footerClassName?: string;
|
|
205
|
+
/** Safe `data-*` metadata; Pane-owned structural attributes remain protected. */
|
|
206
|
+
rootAttributes?: PaneRootAttributes;
|
|
207
|
+
/** Native named-slot assignment when composed inside a web component. */
|
|
208
|
+
slot?: string;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* A pane's configuration, apart from its content and styling hooks: the props a
|
|
212
|
+
* composite that renders a `Pane` for the app (a Workbench panel or work area,
|
|
213
|
+
* or a CollapsiblePanel) forwards, so the app configures that pane instead of
|
|
214
|
+
* styling it. An omitted or `undefined` field keeps the composite's default.
|
|
215
|
+
*/
|
|
216
|
+
type PaneConfig = Pick<PaneProps, 'contentElement' | 'contentLabel' | 'separators' | 'safeAreaEdges' | 'chromeDividers' | 'headerPresentation' | 'scrollEdge' | 'scrollEdgeDistance' | 'appearance' | 'background' | 'tint' | 'deepInset' | 'scrollClearance' | 'tabIndex' | 'outlined'>;
|
|
217
|
+
/**
|
|
218
|
+
* An unpadded application column with optional fixed header/footer slots and one
|
|
219
|
+
* scrolling vertical content owner. Separator lines are independently opt-in on
|
|
220
|
+
* each logical edge, so the same component works as a sidebar, main area,
|
|
221
|
+
* inspector, or dialog column.
|
|
222
|
+
*/
|
|
223
|
+
declare function Pane({ header, children, footer, chromePlacement, chromeDividers, headerPresentation, scrollEdge, scrollEdgeDistance, appearance, background, tint, deepInset, scrollClearance, tabIndex, outlined, element, contentElement, separators, safeAreaEdges, id, label, contentLabel, className, headerClassName, contentClassName, footerClassName, rootAttributes, slot, }: PaneProps): kerfjs.SafeHtml;
|
|
224
|
+
|
|
225
|
+
export { Pane, type PaneAppearance, type PaneChromeDividers, type PaneChromePlacement, type PaneConfig, type PaneContentElement, type PaneElement, type PaneHeaderPresentation, type PaneProps, type PaneSeparatorSide, ScrollClearance, type ScrollEdge, type SurfaceTint, type SurfaceTintScheme };
|
package/dist/pane.js
ADDED
package/dist/pane.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"pane.js"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { ToolbarConfig } from './toolbar.js';
|
|
2
|
+
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
3
|
+
import { LucideIcon } from './lucide-icon.js';
|
|
4
|
+
|
|
5
|
+
/** Which edge a collapsible panel docks to. */
|
|
6
|
+
type PanelSide = 'left' | 'right' | 'bottom';
|
|
7
|
+
/**
|
|
8
|
+
* The standard collapse/expand icon for a panel `side` and `collapsed` state,
|
|
9
|
+
* so every app's sidebars and drawers use one recognizable convention:
|
|
10
|
+
* `PanelLeft*` for a left rail, `PanelRight*` for a right rail, `PanelBottom*`
|
|
11
|
+
* for a bottom drawer — the `Close` glyph while open, the `Open` glyph while
|
|
12
|
+
* collapsed. Exposed so an app can render its own toggle affordance.
|
|
13
|
+
*/
|
|
14
|
+
declare function collapsiblePanelToggleIcon(side: PanelSide, collapsed: boolean): {
|
|
15
|
+
icon: Parameters<typeof LucideIcon>[0]['icon'];
|
|
16
|
+
name: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* The standard collapse toggle a panel toolbar renders. The app handles the
|
|
20
|
+
* button's `data-action` and flips its own `collapsed` flag.
|
|
21
|
+
*/
|
|
22
|
+
interface PanelToggle {
|
|
23
|
+
/** The `data-action` the toggle button carries. */
|
|
24
|
+
action: string;
|
|
25
|
+
/**
|
|
26
|
+
* The panel's short title-style name ("Navigator", "Build Output"). It is
|
|
27
|
+
* the toggle group's accessible name and completes the default "Show …" /
|
|
28
|
+
* "Hide …" label ("Show Navigator"), so it follows the title-style rule in
|
|
29
|
+
* `docs/writing.md`; it is never recapitalized.
|
|
30
|
+
*/
|
|
31
|
+
name: string;
|
|
32
|
+
/** Accessible label while the panel is collapsed. Defaults to `Show {name}`. */
|
|
33
|
+
showLabel?: string;
|
|
34
|
+
/** Accessible label while the panel is open. Defaults to `Hide {name}`. */
|
|
35
|
+
hideLabel?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* A collapsible panel's top toolbar, composed so its groups follow the
|
|
39
|
+
* panel's open state.
|
|
40
|
+
*
|
|
41
|
+
* - `title` precedes the `leading` zone. Groups may appear in any of the
|
|
42
|
+
* `leading`, `center`, and `trailing` zones while the panel is open.
|
|
43
|
+
* - Groups marked `relocateOnCollapse` move to the work area's toolbar while
|
|
44
|
+
* the panel is collapsed, preserving their order across the three zones.
|
|
45
|
+
* - `toggle` is always the last group: in the panel's toolbar while it is
|
|
46
|
+
* open, and right after the relocated groups in the work area's toolbar
|
|
47
|
+
* while it is collapsed.
|
|
48
|
+
*
|
|
49
|
+
* Relocated content renders in both places while the panel is collapsed (the
|
|
50
|
+
* panel's copy is inert), so give it no `id`s. Pass groups directly or in
|
|
51
|
+
* arrays so their render-time annotation remains available to the panel.
|
|
52
|
+
*
|
|
53
|
+
* The toolbar's configuration (`dividerSides`, `centerAlign`, `responsive`,
|
|
54
|
+
* `responsiveAt`, `safeAreaEdges`) forwards to its `Toolbar`. It draws no
|
|
55
|
+
* divider of its own: the panel's `Pane` draws the line under it while the
|
|
56
|
+
* content is scrolled (its `chromeDividers`, wired by `wireScrollDividers`).
|
|
57
|
+
*/
|
|
58
|
+
interface PanelToolbar extends ToolbarConfig {
|
|
59
|
+
/** Accessible name of the panel's toolbar. */
|
|
60
|
+
label: string;
|
|
61
|
+
title?: KerfUiContent;
|
|
62
|
+
leading?: KerfUiContent;
|
|
63
|
+
center?: KerfUiContent;
|
|
64
|
+
trailing?: KerfUiContent;
|
|
65
|
+
toggle?: PanelToggle;
|
|
66
|
+
}
|
|
67
|
+
/** A panel's fixed bottom toolbar, below its optional footer content. */
|
|
68
|
+
interface PanelBottomToolbar extends ToolbarConfig {
|
|
69
|
+
label: string;
|
|
70
|
+
leading?: KerfUiContent;
|
|
71
|
+
center?: KerfUiContent;
|
|
72
|
+
trailing?: KerfUiContent;
|
|
73
|
+
}
|
|
74
|
+
/** Whether panel chrome stays fixed, scrolls, or follows Pane's auto rule. */
|
|
75
|
+
type PanelChromePlacement = 'fixed' | 'scroll' | 'auto';
|
|
76
|
+
|
|
77
|
+
export { type PanelSide as P, type PanelToolbar as a, type PanelChromePlacement as b, type PanelBottomToolbar as c, type PanelToggle as d, collapsiblePanelToggleIcon as e };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Marker export for tests and tooling; importing this module registers the
|
|
3
|
+
* Web Awesome elements a `PopupMenu` renders (`wa-dropdown`,
|
|
4
|
+
* `wa-dropdown-item`, `wa-button`, and `wa-divider`) and routes a keyboard
|
|
5
|
+
* choice through the item's click so delegated `data-action`s run. It also
|
|
6
|
+
* names each open menu panel from its trigger and each submenu from its item.
|
|
7
|
+
*/
|
|
8
|
+
declare const popupMenuElementsRegistered = true;
|
|
9
|
+
|
|
10
|
+
export { popupMenuElementsRegistered };
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
import { installHelpTags } from './chunk-TDMHA7C3.js';
|
|
2
|
+
import '@awesome.me/webawesome/dist/components/button/button.js';
|
|
3
|
+
import '@awesome.me/webawesome/dist/components/divider/divider.js';
|
|
4
|
+
import WaDropdownItem from '@awesome.me/webawesome/dist/components/dropdown-item/dropdown-item.js';
|
|
5
|
+
import '@awesome.me/webawesome/dist/components/tooltip/tooltip.js';
|
|
6
|
+
import WaDropdown from '@awesome.me/webawesome/dist/components/dropdown/dropdown.js';
|
|
7
|
+
|
|
8
|
+
// src/components/actions/popup-menu/internal/reveal-in-scroller.ts
|
|
9
|
+
function composedParent(node) {
|
|
10
|
+
return node.assignedSlot ?? node.parentElement ?? (node.parentNode instanceof ShadowRoot ? node.parentNode.host : null);
|
|
11
|
+
}
|
|
12
|
+
function scrollerOf(node) {
|
|
13
|
+
for (let current = composedParent(node); current; current = composedParent(current)) {
|
|
14
|
+
if (current instanceof HTMLElement && current.scrollHeight > current.clientHeight && /auto|scroll/.test(globalThis.getComputedStyle(current).overflowY))
|
|
15
|
+
return current;
|
|
16
|
+
}
|
|
17
|
+
return void 0;
|
|
18
|
+
}
|
|
19
|
+
function revealInScroller(item) {
|
|
20
|
+
const scroller = scrollerOf(item);
|
|
21
|
+
if (!scroller) return;
|
|
22
|
+
const box = item.getBoundingClientRect();
|
|
23
|
+
const top = scroller.getBoundingClientRect().top + scroller.clientTop;
|
|
24
|
+
const bottom = top + scroller.clientHeight;
|
|
25
|
+
if (box.top < top) scroller.scrollTop -= top - box.top;
|
|
26
|
+
else if (box.bottom > bottom) scroller.scrollTop += box.bottom - bottom;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// src/components/actions/popup-menu/internal/install-dropdown-show-focus.ts
|
|
30
|
+
var installed = /* @__PURE__ */ new WeakSet();
|
|
31
|
+
var showEpoch = /* @__PURE__ */ new WeakMap();
|
|
32
|
+
function installDropdownShowFocus(prototype) {
|
|
33
|
+
if (installed.has(prototype)) return;
|
|
34
|
+
installed.add(prototype);
|
|
35
|
+
const target = prototype;
|
|
36
|
+
const showMenu = target.showMenu;
|
|
37
|
+
target.showMenu = async function() {
|
|
38
|
+
const scoped = this.classList.contains("kui-popup-menu") || this.closest(".kui-popup-surface") !== null;
|
|
39
|
+
if (!scoped) return showMenu.call(this);
|
|
40
|
+
const epoch = (showEpoch.get(this) ?? 0) + 1;
|
|
41
|
+
showEpoch.set(this, epoch);
|
|
42
|
+
let navigatedItem;
|
|
43
|
+
const rememberFocus = (event) => {
|
|
44
|
+
const item = event.target;
|
|
45
|
+
if (this.menu?.classList.contains("show") && item instanceof HTMLElement && item.localName === "wa-dropdown-item" && this.contains(item)) {
|
|
46
|
+
navigatedItem = item;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
this.addEventListener("focusin", rememberFocus);
|
|
50
|
+
try {
|
|
51
|
+
await showMenu.call(this);
|
|
52
|
+
} finally {
|
|
53
|
+
this.removeEventListener("focusin", rememberFocus);
|
|
54
|
+
}
|
|
55
|
+
if (showEpoch.get(this) !== epoch || !this.open || !this.popup?.active || !navigatedItem?.isConnected || !this.contains(navigatedItem))
|
|
56
|
+
return;
|
|
57
|
+
const siblings = navigatedItem.slot === "submenu" ? Array.from(navigatedItem.parentElement?.children ?? []).filter(
|
|
58
|
+
(item) => item.localName === "wa-dropdown-item"
|
|
59
|
+
) : this.getItems();
|
|
60
|
+
siblings.forEach((item) => {
|
|
61
|
+
item.active = item === navigatedItem;
|
|
62
|
+
});
|
|
63
|
+
navigatedItem.focus({ preventScroll: true });
|
|
64
|
+
revealInScroller(navigatedItem);
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// src/components/actions/popup-menu/internal/install-popup-menu-accessible-name.ts
|
|
69
|
+
var POPUP_MENU_LABEL_ATTRIBUTE = "data-menu-label";
|
|
70
|
+
var installed2 = /* @__PURE__ */ new WeakSet();
|
|
71
|
+
function syncMenuName(dropdown) {
|
|
72
|
+
const menu = dropdown.menu;
|
|
73
|
+
if (!menu || !dropdown.classList.contains("kui-popup-menu")) return;
|
|
74
|
+
const name = dropdown.getAttribute(POPUP_MENU_LABEL_ATTRIBUTE)?.trim();
|
|
75
|
+
if (name) menu.setAttribute("aria-label", name);
|
|
76
|
+
else menu.removeAttribute("aria-label");
|
|
77
|
+
}
|
|
78
|
+
function installPopupMenuAccessibleName(prototype) {
|
|
79
|
+
if (installed2.has(prototype)) return;
|
|
80
|
+
installed2.add(prototype);
|
|
81
|
+
const target = prototype;
|
|
82
|
+
const firstUpdated = target.firstUpdated;
|
|
83
|
+
const showMenu = target.showMenu;
|
|
84
|
+
target.firstUpdated = function(changed) {
|
|
85
|
+
firstUpdated.call(this, changed);
|
|
86
|
+
syncMenuName(this);
|
|
87
|
+
};
|
|
88
|
+
target.showMenu = function() {
|
|
89
|
+
syncMenuName(this);
|
|
90
|
+
return showMenu.call(this);
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
var installedItems = /* @__PURE__ */ new WeakSet();
|
|
94
|
+
function installPopupMenuSubmenuName(prototype) {
|
|
95
|
+
if (installedItems.has(prototype)) return;
|
|
96
|
+
installedItems.add(prototype);
|
|
97
|
+
const target = prototype;
|
|
98
|
+
const openSubmenu = target.openSubmenu;
|
|
99
|
+
target.openSubmenu = function() {
|
|
100
|
+
const submenu = this.submenuElement;
|
|
101
|
+
if (submenu && this.closest(".kui-popup-menu"))
|
|
102
|
+
submenu.setAttribute("aria-labelledby", "label");
|
|
103
|
+
return openSubmenu.call(this);
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// src/components/actions/popup-menu/internal/install-popup-menu-keyboard.ts
|
|
108
|
+
var installed3 = /* @__PURE__ */ new WeakSet();
|
|
109
|
+
function installPopupMenuKeyboard(prototype) {
|
|
110
|
+
if (installed3.has(prototype)) return;
|
|
111
|
+
installed3.add(prototype);
|
|
112
|
+
const target = prototype;
|
|
113
|
+
const makeSelection = target.makeSelection;
|
|
114
|
+
target.makeSelection = function(item, event) {
|
|
115
|
+
if (event instanceof KeyboardEvent && this.classList.contains("kui-popup-menu") && !item.disabled) {
|
|
116
|
+
item.click();
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
makeSelection.call(this, item, event);
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// src/components/actions/popup-menu/internal/install-popup-menu-lifecycle.ts
|
|
124
|
+
var installed4 = /* @__PURE__ */ new WeakSet();
|
|
125
|
+
function installPopupMenuLifecycle(prototype) {
|
|
126
|
+
if (installed4.has(prototype)) return;
|
|
127
|
+
installed4.add(prototype);
|
|
128
|
+
const target = prototype;
|
|
129
|
+
const showMenu = target.showMenu;
|
|
130
|
+
const hideMenu = target.hideMenu;
|
|
131
|
+
const hiding = /* @__PURE__ */ new WeakMap();
|
|
132
|
+
target.showMenu = function() {
|
|
133
|
+
const transition = hiding.get(this);
|
|
134
|
+
if (transition && this.open && this.popup?.active && this.classList.contains("kui-popup-menu")) {
|
|
135
|
+
this.popup.active = false;
|
|
136
|
+
transition.reopened = true;
|
|
137
|
+
}
|
|
138
|
+
return showMenu.call(this);
|
|
139
|
+
};
|
|
140
|
+
target.hideMenu = async function() {
|
|
141
|
+
const scoped = this.classList.contains("kui-popup-menu");
|
|
142
|
+
const transition = { reopened: false };
|
|
143
|
+
if (scoped) hiding.set(this, transition);
|
|
144
|
+
await hideMenu.call(this);
|
|
145
|
+
if (scoped && hiding.get(this) === transition && this.open && this.isConnected && this.popup?.active && !transition.reopened) {
|
|
146
|
+
this.popup.active = false;
|
|
147
|
+
void this.showMenu();
|
|
148
|
+
}
|
|
149
|
+
if (hiding.get(this) === transition) hiding.delete(this);
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// src/components/actions/popup-menu/internal/install-popup-menu-submenu-focus.ts
|
|
154
|
+
var installed5 = /* @__PURE__ */ new WeakSet();
|
|
155
|
+
var inputEvents = ["keydown", "pointerdown"];
|
|
156
|
+
function installPopupMenuSubmenuFocus(prototype) {
|
|
157
|
+
if (installed5.has(prototype)) return;
|
|
158
|
+
installed5.add(prototype);
|
|
159
|
+
const target = prototype;
|
|
160
|
+
const openSubmenu = target.openSubmenu;
|
|
161
|
+
const closeSubmenu = target.closeSubmenu;
|
|
162
|
+
const submenuOpen = Object.getOwnPropertyDescriptor(prototype, "submenuOpen");
|
|
163
|
+
if (submenuOpen?.set) {
|
|
164
|
+
Object.defineProperty(prototype, "submenuOpen", {
|
|
165
|
+
...submenuOpen,
|
|
166
|
+
set(value) {
|
|
167
|
+
const wasOpen = this.submenuOpen;
|
|
168
|
+
submenuOpen.set.call(this, value);
|
|
169
|
+
if (value && wasOpen && this.submenuElement?.hidden && this.closest("wa-dropdown.kui-popup-menu"))
|
|
170
|
+
void this.openSubmenu();
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
target.closeSubmenu = async function() {
|
|
175
|
+
const submenu = this.submenuElement;
|
|
176
|
+
await closeSubmenu.call(this);
|
|
177
|
+
if (this.submenuOpen && submenu?.hidden && this.isConnected && this.closest("wa-dropdown.kui-popup-menu"))
|
|
178
|
+
void this.openSubmenu();
|
|
179
|
+
};
|
|
180
|
+
target.openSubmenu = async function() {
|
|
181
|
+
const submenu = this.submenuElement;
|
|
182
|
+
if (!this.closest("wa-dropdown.kui-popup-menu") || !submenu)
|
|
183
|
+
return openSubmenu.call(this);
|
|
184
|
+
if (submenu.classList.contains("show")) {
|
|
185
|
+
if (!submenu.hidden) return;
|
|
186
|
+
submenu.classList.remove("show");
|
|
187
|
+
}
|
|
188
|
+
let desired;
|
|
189
|
+
let input;
|
|
190
|
+
const trackInput = (event) => {
|
|
191
|
+
input = event;
|
|
192
|
+
};
|
|
193
|
+
const trackFocus = (event) => {
|
|
194
|
+
const item = event.composedPath().find(
|
|
195
|
+
(node) => node instanceof HTMLElement && node.localName === "wa-dropdown-item" && node.getAttribute("slot") === "submenu"
|
|
196
|
+
);
|
|
197
|
+
const items = this.getSubmenuItems();
|
|
198
|
+
if (!item || !items.includes(item)) return;
|
|
199
|
+
const fromInput = input !== void 0 && input.eventPhase !== Event.NONE;
|
|
200
|
+
if (item !== items[0] || fromInput) desired = item;
|
|
201
|
+
};
|
|
202
|
+
for (const type of inputEvents)
|
|
203
|
+
document.addEventListener(type, trackInput, true);
|
|
204
|
+
submenu.addEventListener("focusin", trackFocus);
|
|
205
|
+
try {
|
|
206
|
+
await openSubmenu.call(this);
|
|
207
|
+
} finally {
|
|
208
|
+
window.setTimeout(() => {
|
|
209
|
+
for (const type of inputEvents)
|
|
210
|
+
document.removeEventListener(type, trackInput, true);
|
|
211
|
+
submenu.removeEventListener("focusin", trackFocus);
|
|
212
|
+
const items = this.getSubmenuItems();
|
|
213
|
+
const selected = desired;
|
|
214
|
+
if (!selected || selected === items[0] || !this.isConnected || !this.submenuOpen || submenu.hidden || document.activeElement !== items[0])
|
|
215
|
+
return;
|
|
216
|
+
items.forEach((item) => item.active = item === selected);
|
|
217
|
+
selected.focus({ preventScroll: true });
|
|
218
|
+
revealInScroller(selected);
|
|
219
|
+
}, 0);
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
// src/components/actions/popup-menu/internal/install-popup-menu-submenu-placement.ts
|
|
225
|
+
var installed6 = /* @__PURE__ */ new WeakSet();
|
|
226
|
+
var phoneWidth = "(max-width: 480px)";
|
|
227
|
+
var viewportInset = 8;
|
|
228
|
+
var menuGap = 4;
|
|
229
|
+
function phoneSubmenuPosition(parent, submenu, viewport, rtl) {
|
|
230
|
+
const width = Math.min(submenu.width, viewport.width - 2 * viewportInset);
|
|
231
|
+
const height = submenu.height;
|
|
232
|
+
const below = Math.max(
|
|
233
|
+
0,
|
|
234
|
+
viewport.height - parent.bottom - menuGap - viewportInset
|
|
235
|
+
);
|
|
236
|
+
const above = Math.max(0, parent.top - menuGap - viewportInset);
|
|
237
|
+
const useBelow = height <= below || height > above && below >= above;
|
|
238
|
+
const availableHeight = useBelow ? below : above;
|
|
239
|
+
const left = rtl ? parent.right - width : parent.left;
|
|
240
|
+
return {
|
|
241
|
+
left: Math.max(
|
|
242
|
+
viewportInset,
|
|
243
|
+
Math.min(left, viewport.width - viewportInset - width)
|
|
244
|
+
),
|
|
245
|
+
top: useBelow ? parent.bottom + menuGap : parent.top - menuGap - Math.min(height, availableHeight),
|
|
246
|
+
maxHeight: availableHeight,
|
|
247
|
+
maxWidth: viewport.width - 2 * viewportInset
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
function clearPhoneStyles(submenu) {
|
|
251
|
+
for (const property of [
|
|
252
|
+
"position",
|
|
253
|
+
"left",
|
|
254
|
+
"top",
|
|
255
|
+
"max-width",
|
|
256
|
+
"max-height",
|
|
257
|
+
"box-sizing",
|
|
258
|
+
"overflow-y"
|
|
259
|
+
])
|
|
260
|
+
submenu.style.removeProperty(property);
|
|
261
|
+
}
|
|
262
|
+
function remeasureSafeTriangle(dropdown, item) {
|
|
263
|
+
if (typeof dropdown.updateSafeTriangleCoordinates !== "function") return;
|
|
264
|
+
const update = () => {
|
|
265
|
+
if (dropdown.isConnected && item.submenuOpen)
|
|
266
|
+
dropdown.updateSafeTriangleCoordinates(item);
|
|
267
|
+
};
|
|
268
|
+
window.requestAnimationFrame(() => {
|
|
269
|
+
update();
|
|
270
|
+
const animations = item.submenuElement?.getAnimations?.() ?? [];
|
|
271
|
+
if (animations.length > 0)
|
|
272
|
+
void Promise.all(animations.map((animation) => animation.finished)).then(
|
|
273
|
+
update,
|
|
274
|
+
() => void 0
|
|
275
|
+
);
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
function installPopupMenuSubmenuPlacement(prototype) {
|
|
279
|
+
if (installed6.has(prototype)) return;
|
|
280
|
+
installed6.add(prototype);
|
|
281
|
+
const target = prototype;
|
|
282
|
+
const positionSubmenu = target.positionSubmenu;
|
|
283
|
+
target.positionSubmenu = function(item) {
|
|
284
|
+
if (!this.classList.contains("kui-popup-menu")) {
|
|
285
|
+
positionSubmenu.call(this, item);
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
const submenu = item.submenuElement;
|
|
289
|
+
if (submenu) remeasureSafeTriangle(this, item);
|
|
290
|
+
if (!window.matchMedia(phoneWidth).matches || !submenu || !this.menu) {
|
|
291
|
+
if (submenu) clearPhoneStyles(submenu);
|
|
292
|
+
positionSubmenu.call(this, item);
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
window.queueMicrotask(() => {
|
|
296
|
+
if (!this.isConnected || !item.submenuOpen || !window.matchMedia(phoneWidth).matches || !this.menu || !submenu.isConnected)
|
|
297
|
+
return;
|
|
298
|
+
const parentItem = item.parentElement?.localName === "wa-dropdown-item" ? item.parentElement : void 0;
|
|
299
|
+
const parentMenu = parentItem?.submenuElement ?? this.menu;
|
|
300
|
+
submenu.style.position = "fixed";
|
|
301
|
+
submenu.style.maxWidth = `calc(100vw - ${2 * viewportInset}px)`;
|
|
302
|
+
submenu.style.maxHeight = "none";
|
|
303
|
+
submenu.style.boxSizing = "border-box";
|
|
304
|
+
submenu.style.overflowY = "auto";
|
|
305
|
+
const placement = phoneSubmenuPosition(
|
|
306
|
+
parentMenu.getBoundingClientRect(),
|
|
307
|
+
submenu.getBoundingClientRect(),
|
|
308
|
+
{ width: window.innerWidth, height: window.innerHeight },
|
|
309
|
+
window.getComputedStyle(this).direction === "rtl"
|
|
310
|
+
);
|
|
311
|
+
submenu.style.left = `${placement.left}px`;
|
|
312
|
+
submenu.style.top = `${placement.top}px`;
|
|
313
|
+
submenu.style.maxHeight = `${placement.maxHeight}px`;
|
|
314
|
+
submenu.style.maxWidth = `${placement.maxWidth}px`;
|
|
315
|
+
submenu.setAttribute(
|
|
316
|
+
"data-placement",
|
|
317
|
+
placement.top >= parentMenu.getBoundingClientRect().bottom ? "bottom-start" : "top-start"
|
|
318
|
+
);
|
|
319
|
+
});
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
// src/components/actions/popup-menu/register/popup-menu-register.ts
|
|
324
|
+
installPopupMenuKeyboard(WaDropdown.prototype);
|
|
325
|
+
installPopupMenuLifecycle(WaDropdown.prototype);
|
|
326
|
+
installDropdownShowFocus(WaDropdown.prototype);
|
|
327
|
+
installPopupMenuSubmenuFocus(WaDropdownItem.prototype);
|
|
328
|
+
installPopupMenuSubmenuPlacement(WaDropdown.prototype);
|
|
329
|
+
installPopupMenuAccessibleName(WaDropdown.prototype);
|
|
330
|
+
installPopupMenuSubmenuName(WaDropdownItem.prototype);
|
|
331
|
+
installHelpTags();
|
|
332
|
+
var popupMenuElementsRegistered = true;
|
|
333
|
+
|
|
334
|
+
export { popupMenuElementsRegistered };
|
|
335
|
+
|
|
336
|
+
//# sourceMappingURL=popup-menu-register.js.map
|