@kerfjs/ui 5.0.0-beta.104 → 5.0.0-beta.106
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 +155 -116
- package/ai/application-ui-profile.defaults.json +125 -4
- package/ai/compile-time-contracts-v1.json +11 -11
- package/ai/component-catalog.json +2606 -628
- package/ai/component-composition-rules.json +10 -10
- package/ai/component-composition.json +1688 -300
- package/ai/components/README.md +66 -48
- package/ai/components/application-tabs.md +4 -4
- package/ai/components/badge.md +1 -0
- package/ai/components/button.md +91 -0
- package/ai/components/checkbox.md +89 -0
- package/ai/components/choice-chips.md +9 -3
- package/ai/components/color-field.md +92 -0
- package/ai/components/color-picker.md +90 -0
- package/ai/components/color-swatches.md +82 -0
- package/ai/components/combobox.md +6 -4
- package/ai/components/content-item.md +5 -2
- package/ai/components/disclosure.md +83 -0
- package/ai/components/file-picker.md +1 -0
- package/ai/components/foundation.md +1 -1
- package/ai/components/list-action-row.md +3 -3
- package/ai/components/list-detail-dialog.md +90 -0
- package/ai/components/list.md +2 -0
- package/ai/components/lucide-icon.md +2 -0
- package/ai/components/{composer.md → message-composer.md} +17 -16
- package/ai/components/pane.md +3 -1
- package/ai/components/popup-menu.md +12 -9
- package/ai/components/progress-bar.md +82 -0
- package/ai/components/progress-ring.md +80 -0
- package/ai/components/radio-group.md +88 -0
- package/ai/components/recipe-list-detail-dialog.md +5 -5
- package/ai/components/{token-search-field.md → search-field.md} +23 -23
- package/ai/components/select.md +15 -13
- package/ai/components/slider.md +84 -0
- package/ai/components/surface-scaffold.md +16 -13
- package/ai/components/switch.md +81 -0
- package/ai/components/tab-bar.md +6 -6
- package/ai/components/tab-navigator.md +2 -2
- package/ai/components/tabs.md +7 -7
- package/ai/components/tag-field.md +86 -0
- package/ai/components/text-field.md +98 -0
- package/ai/components/text.md +1 -0
- package/ai/components/toast.md +85 -0
- package/ai/components/toolbar-control-group.md +3 -3
- package/ai/components/tooltip.md +81 -0
- package/ai/components/wa-accordion-item.md +11 -5
- package/ai/components/wa-accordion.md +11 -5
- package/ai/components/wa-animated-image.md +2 -1
- package/ai/components/wa-animation.md +1 -0
- package/ai/components/wa-avatar.md +1 -0
- package/ai/components/wa-badge.md +10 -3
- package/ai/components/wa-breadcrumb-item.md +1 -0
- package/ai/components/wa-breadcrumb.md +1 -0
- package/ai/components/wa-button-group.md +6 -4
- package/ai/components/wa-button.md +7 -5
- package/ai/components/wa-callout.md +7 -5
- package/ai/components/wa-card.md +12 -4
- package/ai/components/wa-carousel-item.md +1 -0
- package/ai/components/wa-carousel.md +1 -0
- package/ai/components/wa-checkbox-group.md +11 -4
- package/ai/components/wa-checkbox.md +10 -4
- package/ai/components/wa-color-picker.md +13 -5
- package/ai/components/wa-comparison.md +2 -1
- package/ai/components/wa-copy-button.md +1 -0
- package/ai/components/wa-details.md +11 -5
- package/ai/components/wa-dialog.md +10 -4
- package/ai/components/wa-divider.md +1 -0
- package/ai/components/wa-drawer.md +12 -5
- package/ai/components/wa-dropdown-item.md +8 -6
- package/ai/components/wa-dropdown.md +8 -6
- package/ai/components/wa-format-bytes.md +1 -0
- package/ai/components/wa-format-date.md +1 -0
- package/ai/components/wa-format-number.md +1 -0
- package/ai/components/wa-icon.md +2 -1
- package/ai/components/wa-include.md +6 -4
- package/ai/components/wa-input.md +9 -6
- package/ai/components/wa-intersection-observer.md +1 -0
- package/ai/components/wa-known-date.md +1 -0
- package/ai/components/wa-markdown.md +1 -0
- package/ai/components/wa-mutation-observer.md +1 -0
- package/ai/components/wa-number-input.md +1 -0
- package/ai/components/wa-option.md +7 -5
- package/ai/components/wa-otp-input.md +1 -0
- package/ai/components/wa-page.md +13 -4
- package/ai/components/wa-pagination.md +1 -0
- package/ai/components/wa-popover.md +11 -5
- package/ai/components/wa-popup.md +11 -4
- package/ai/components/wa-progress-bar.md +11 -4
- package/ai/components/wa-progress-ring.md +11 -4
- package/ai/components/wa-qr-code.md +1 -0
- package/ai/components/wa-radio-group.md +12 -4
- package/ai/components/wa-radio.md +10 -4
- package/ai/components/wa-random-content.md +1 -0
- package/ai/components/wa-rating.md +1 -0
- package/ai/components/wa-relative-time.md +1 -0
- package/ai/components/wa-resize-observer.md +1 -0
- package/ai/components/wa-scroller.md +12 -4
- package/ai/components/wa-select.md +7 -5
- package/ai/components/wa-skeleton.md +10 -3
- package/ai/components/wa-slider.md +11 -5
- package/ai/components/wa-spinner.md +7 -5
- package/ai/components/wa-split-panel.md +7 -5
- package/ai/components/wa-step.md +56 -0
- package/ai/components/wa-stepper.md +56 -0
- package/ai/components/wa-switch.md +10 -3
- package/ai/components/wa-tab-group.md +8 -6
- package/ai/components/wa-tab-panel.md +7 -5
- package/ai/components/wa-tab.md +8 -6
- package/ai/components/wa-tag-input.md +62 -0
- package/ai/components/wa-tag.md +9 -6
- package/ai/components/wa-textarea.md +10 -3
- package/ai/components/wa-time-input.md +1 -0
- package/ai/components/wa-toast-item.md +9 -7
- package/ai/components/wa-toast.md +9 -7
- package/ai/components/wa-tooltip.md +11 -5
- package/ai/components/wa-tree-item.md +2 -1
- package/ai/components/wa-tree.md +2 -1
- package/ai/components/wa-zoomable-frame.md +2 -1
- package/ai/components/workbench-dialog.md +90 -0
- package/ai/public-api-signatures-v1.md +1579 -247
- package/ai/skill.md +83 -50
- package/ai/webawesome-jsx-signatures-v1.md +4 -1
- package/dist/badge.d.ts +9 -1
- package/dist/badge.js +1 -1
- package/dist/browser/button.js +5 -0
- package/dist/browser/catalog.js +3 -2
- package/dist/browser/{icon-button.js → checkbox.js} +2 -2
- package/dist/browser/color-field.js +4 -0
- package/dist/browser/color-picker.js +5 -0
- package/dist/browser/color-swatches.js +3 -0
- package/dist/browser/disclosure.js +5 -0
- package/dist/browser/list-action-row.js +1 -0
- package/dist/browser/list-detail-dialog.js +14 -0
- package/dist/browser/message-composer.js +5 -0
- package/dist/browser/popup-menu.js +1 -0
- package/dist/browser/progress-bar.js +3 -0
- package/dist/browser/progress-ring.js +3 -0
- package/dist/browser/radio-group.js +3 -0
- package/dist/browser/search-field.js +4 -0
- package/dist/browser/slider.js +3 -0
- package/dist/browser/surface-scaffold.js +1 -0
- package/dist/browser/switch.js +3 -0
- package/dist/browser/tab-bar-item.js +4 -0
- package/dist/browser/tag-field.js +5 -0
- package/dist/browser/text-field.js +4 -0
- package/dist/browser/workbench-dialog.js +15 -0
- package/dist/button.d.ts +108 -0
- package/dist/button.js +7 -0
- package/dist/button.js.map +1 -0
- package/dist/catalog-resources.d.ts +1 -1
- package/dist/catalog.d.ts +3 -3
- package/dist/catalog.js +57 -27
- package/dist/catalog.js.map +1 -1
- package/dist/checkbox.d.ts +45 -0
- package/dist/checkbox.js +6 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/choice-chips.d.ts +49 -15
- package/dist/choice-chips.js +1 -1
- package/dist/chunk-23PPPNH6.js +93 -0
- package/dist/chunk-23PPPNH6.js.map +1 -0
- package/dist/{chunk-FNZQOUZ5.js → chunk-2FW7D4IG.js} +2 -2
- package/dist/{chunk-FNZQOUZ5.js.map → chunk-2FW7D4IG.js.map} +1 -1
- package/dist/{chunk-ZYU5WRC3.js → chunk-3GLYIIFR.js} +2 -2
- package/dist/{chunk-ZYU5WRC3.js.map → chunk-3GLYIIFR.js.map} +1 -1
- package/dist/{chunk-5NQF35VO.js → chunk-4RECPEHI.js} +2 -2
- package/dist/{chunk-5NQF35VO.js.map → chunk-4RECPEHI.js.map} +1 -1
- package/dist/{chunk-7IUEBNCO.js → chunk-5USKCWGL.js} +8 -3
- package/dist/chunk-5USKCWGL.js.map +1 -0
- package/dist/chunk-6VVIW7VB.js +69 -0
- package/dist/chunk-6VVIW7VB.js.map +1 -0
- package/dist/{chunk-LL45C7BB.js → chunk-7K6U6FCN.js} +1 -1
- package/dist/chunk-7K6U6FCN.js.map +1 -0
- package/dist/{chunk-HQZYKJ56.js → chunk-7W3GKMN4.js} +110 -74
- package/dist/chunk-7W3GKMN4.js.map +1 -0
- package/dist/chunk-ACUKTVS3.js +371 -0
- package/dist/chunk-ACUKTVS3.js.map +1 -0
- package/dist/{chunk-YQ2AC4E2.js → chunk-AMIHGFLP.js} +2 -2
- package/dist/{chunk-YQ2AC4E2.js.map → chunk-AMIHGFLP.js.map} +1 -1
- package/dist/chunk-ATGAJVZ6.js +268 -0
- package/dist/chunk-ATGAJVZ6.js.map +1 -0
- package/dist/chunk-AYPGXR2E.js +20 -0
- package/dist/chunk-AYPGXR2E.js.map +1 -0
- package/dist/{chunk-ETCWQLJV.js → chunk-BKUMG2KB.js} +38 -28
- package/dist/chunk-BKUMG2KB.js.map +1 -0
- package/dist/chunk-C26Q6P4Q.js +76 -0
- package/dist/chunk-C26Q6P4Q.js.map +1 -0
- package/dist/chunk-C3RLKKFQ.js +452 -0
- package/dist/chunk-C3RLKKFQ.js.map +1 -0
- package/dist/{chunk-T5BJBMW7.js → chunk-CIAUILRR.js} +5 -5
- package/dist/chunk-CIAUILRR.js.map +1 -0
- package/dist/chunk-CNM6ZWP2.js +38 -0
- package/dist/chunk-CNM6ZWP2.js.map +1 -0
- package/dist/{chunk-LPHU44S3.js → chunk-CTQUDCY5.js} +3 -1
- package/dist/chunk-CTQUDCY5.js.map +1 -0
- package/dist/{chunk-MXNIVEVL.js → chunk-D4MXSAMI.js} +5 -3
- package/dist/chunk-D4MXSAMI.js.map +1 -0
- package/dist/{chunk-YBWQR2OK.js → chunk-DDSCVEO5.js} +10 -9
- package/dist/chunk-DDSCVEO5.js.map +1 -0
- package/dist/{chunk-SIW64V65.js → chunk-DF2YKGIX.js} +3 -3
- package/dist/{chunk-SIW64V65.js.map → chunk-DF2YKGIX.js.map} +1 -1
- package/dist/{chunk-3SKAEPPZ.js → chunk-ECFCAKWE.js} +4 -4
- package/dist/{chunk-3SKAEPPZ.js.map → chunk-ECFCAKWE.js.map} +1 -1
- package/dist/chunk-EKBMUXFV.js +298 -0
- package/dist/chunk-EKBMUXFV.js.map +1 -0
- package/dist/{chunk-IXLUZHGT.js → chunk-FG6U7KQQ.js} +5 -5
- package/dist/{chunk-IXLUZHGT.js.map → chunk-FG6U7KQQ.js.map} +1 -1
- package/dist/chunk-FKKJHGN5.js +147 -0
- package/dist/chunk-FKKJHGN5.js.map +1 -0
- package/dist/{chunk-FDZNYD4C.js → chunk-GCAK23PU.js} +34 -3
- package/dist/chunk-GCAK23PU.js.map +1 -0
- package/dist/chunk-GXSX6Q6O.js +42 -0
- package/dist/chunk-GXSX6Q6O.js.map +1 -0
- package/dist/{chunk-LOSRXZAH.js → chunk-HJXVVFBT.js} +14 -6
- package/dist/chunk-HJXVVFBT.js.map +1 -0
- package/dist/{chunk-M5KZ26VV.js → chunk-HQZG3OFL.js} +11 -1
- package/dist/chunk-HQZG3OFL.js.map +1 -0
- package/dist/{chunk-ELCMSQNJ.js → chunk-HTERKONR.js} +8 -8
- package/dist/chunk-HTERKONR.js.map +1 -0
- package/dist/chunk-HYORKKYP.js +8 -0
- package/dist/chunk-HYORKKYP.js.map +1 -0
- package/dist/chunk-IO27YTL3.js +73 -0
- package/dist/chunk-IO27YTL3.js.map +1 -0
- package/dist/chunk-ITUQC4FW.js +163 -0
- package/dist/chunk-ITUQC4FW.js.map +1 -0
- package/dist/chunk-K57NINLH.js +137 -0
- package/dist/chunk-K57NINLH.js.map +1 -0
- package/dist/chunk-KC6WUSNS.js +34 -0
- package/dist/chunk-KC6WUSNS.js.map +1 -0
- package/dist/{chunk-W4IK7AWD.js → chunk-KDQZ3E5C.js} +3 -1
- package/dist/chunk-KDQZ3E5C.js.map +1 -0
- package/dist/{chunk-2MSPNRWJ.js → chunk-KK3S5OTW.js} +27 -11
- package/dist/chunk-KK3S5OTW.js.map +1 -0
- package/dist/chunk-LTBVP6VN.js +59 -0
- package/dist/chunk-LTBVP6VN.js.map +1 -0
- package/dist/chunk-OHPYT2BH.js +82 -0
- package/dist/chunk-OHPYT2BH.js.map +1 -0
- package/dist/{chunk-HZPHCSCS.js → chunk-OY2MXIBB.js} +8 -2
- package/dist/chunk-OY2MXIBB.js.map +1 -0
- package/dist/chunk-PE2KPZDW.js +85 -0
- package/dist/chunk-PE2KPZDW.js.map +1 -0
- package/dist/{chunk-QTSMHH5J.js → chunk-QPTJ5DOO.js} +5 -3
- package/dist/chunk-QPTJ5DOO.js.map +1 -0
- package/dist/{chunk-JOR5LGYE.js → chunk-RFLW4FPL.js} +1 -1
- package/dist/chunk-RFLW4FPL.js.map +1 -0
- package/dist/{chunk-U6QYTMDB.js → chunk-RMWNO6BA.js} +6 -2
- package/dist/chunk-RMWNO6BA.js.map +1 -0
- package/dist/{chunk-TDMHA7C3.js → chunk-SQ2Q3OQI.js} +112 -63
- package/dist/chunk-SQ2Q3OQI.js.map +1 -0
- package/dist/{chunk-K4AT3V3J.js → chunk-T74YB76U.js} +13 -11
- package/dist/chunk-T74YB76U.js.map +1 -0
- package/dist/{chunk-BYFTHA4I.js → chunk-TAHR457X.js} +53 -6
- package/dist/chunk-TAHR457X.js.map +1 -0
- package/dist/{chunk-3VXDSIBJ.js → chunk-TKNVL53O.js} +2 -2
- package/dist/{chunk-3VXDSIBJ.js.map → chunk-TKNVL53O.js.map} +1 -1
- package/dist/chunk-TNJLNLVE.js +115 -0
- package/dist/chunk-TNJLNLVE.js.map +1 -0
- package/dist/chunk-TUID42UE.js +15 -0
- package/dist/chunk-TUID42UE.js.map +1 -0
- package/dist/{chunk-CR5U5FV6.js → chunk-UMNHJSIO.js} +93 -80
- package/dist/chunk-UMNHJSIO.js.map +1 -0
- package/dist/chunk-UTCAOOXU.js +116 -0
- package/dist/chunk-UTCAOOXU.js.map +1 -0
- package/dist/{chunk-ZJC5ND3M.js → chunk-VEME3D7K.js} +35 -35
- package/dist/chunk-VEME3D7K.js.map +1 -0
- package/dist/{chunk-HLDRH23D.js → chunk-WJKHLOP5.js} +2 -2
- package/dist/{chunk-HLDRH23D.js.map → chunk-WJKHLOP5.js.map} +1 -1
- package/dist/chunk-WU57BYYM.js +115 -0
- package/dist/chunk-WU57BYYM.js.map +1 -0
- package/dist/{chunk-TGLUDQP2.js → chunk-ZCDRLN3B.js} +11 -11
- package/dist/chunk-ZCDRLN3B.js.map +1 -0
- package/dist/chunk-ZX2QQJXD.js +249 -0
- package/dist/chunk-ZX2QQJXD.js.map +1 -0
- package/dist/{chunk-6E2H2E5A.js → chunk-ZXZAECHZ.js} +6 -6
- package/dist/{chunk-6E2H2E5A.js.map → chunk-ZXZAECHZ.js.map} +1 -1
- package/dist/collapsible-panel.js +3 -3
- package/dist/color-field.d.ts +51 -0
- package/dist/color-field.js +92 -0
- package/dist/color-field.js.map +1 -0
- package/dist/color-picker.d.ts +88 -0
- package/dist/color-picker.js +8 -0
- package/dist/color-picker.js.map +1 -0
- package/dist/color-swatches.d.ts +56 -0
- package/dist/color-swatches.js +4 -0
- package/dist/color-swatches.js.map +1 -0
- package/dist/combobox.js +1 -1
- package/dist/content-item.d.ts +13 -1
- package/dist/content-item.js +1 -1
- package/dist/disclosure-arrow.js +1 -1
- package/dist/disclosure.d.ts +57 -0
- package/dist/disclosure.js +51 -0
- package/dist/disclosure.js.map +1 -0
- package/dist/file-picker.d.ts +7 -0
- package/dist/file-picker.js +1 -1
- package/dist/help-tags-register.d.ts +8 -8
- package/dist/help-tags-register.js +3 -2
- package/dist/help-tags-register.js.map +1 -1
- package/dist/index.d.ts +16 -9
- package/dist/index.js +58 -46
- package/dist/list-action-row.js +4 -1
- package/dist/list-detail-dialog.d.ts +117 -0
- package/dist/list-detail-dialog.js +165 -0
- package/dist/list-detail-dialog.js.map +1 -0
- package/dist/list-header.js +1 -1
- package/dist/list-item.js +1 -1
- package/dist/list.d.ts +17 -2
- package/dist/list.js +1 -1
- package/dist/lucide-icon.d.ts +9 -1
- package/dist/lucide-icon.js +1 -1
- package/dist/{composer.d.ts → message-composer.d.ts} +20 -12
- package/dist/message-composer.js +6 -0
- package/dist/message-composer.js.map +1 -0
- package/dist/nav-stack.js +1 -1
- package/dist/pane.d.ts +36 -3
- package/dist/pane.js +1 -1
- package/dist/popup-menu-register.d.ts +6 -5
- package/dist/popup-menu-register.js +3 -326
- package/dist/popup-menu-register.js.map +1 -1
- package/dist/popup-menu.d.ts +41 -23
- package/dist/popup-menu.js +5 -1
- package/dist/progress-bar.d.ts +52 -0
- package/dist/progress-bar.js +68 -0
- package/dist/progress-bar.js.map +1 -0
- package/dist/progress-ring.d.ts +44 -0
- package/dist/progress-ring.js +73 -0
- package/dist/progress-ring.js.map +1 -0
- package/dist/radio-group.d.ts +62 -0
- package/dist/radio-group.js +4 -0
- package/dist/radio-group.js.map +1 -0
- package/dist/row.js +1 -1
- package/dist/{token-search-model-JA1i8z4D.d.ts → search-field-CrGTN5sa.d.ts} +45 -45
- package/dist/search-field-model.d.ts +3 -0
- package/dist/search-field-model.js +3 -0
- package/dist/search-field-model.js.map +1 -0
- package/dist/search-field.d.ts +3 -0
- package/dist/search-field.js +5 -0
- package/dist/search-field.js.map +1 -0
- package/dist/select-register.d.ts +6 -3
- package/dist/select-register.js +383 -241
- package/dist/select-register.js.map +1 -1
- package/dist/select.d.ts +30 -6
- package/dist/select.js +3 -1
- package/dist/selection.d.ts +54 -0
- package/dist/selection.js +3 -0
- package/dist/selection.js.map +1 -0
- package/dist/slider.d.ts +74 -0
- package/dist/slider.js +103 -0
- package/dist/slider.js.map +1 -0
- package/dist/split-button.js +1 -1
- package/dist/split-view.d.ts +5 -2
- package/dist/split-view.js +18 -159
- package/dist/split-view.js.map +1 -1
- package/dist/state-banner.js +1 -1
- package/dist/styles/badge.css +18 -6
- package/dist/styles/button.css +230 -0
- package/dist/styles/catalog/components/catalog-example.css +13 -4
- package/dist/styles/checkbox.css +121 -0
- package/dist/styles/choice-chips.css +58 -7
- package/dist/styles/color-field.css +125 -0
- package/dist/styles/color-picker.css +331 -0
- package/dist/styles/color-swatches.css +122 -0
- package/dist/styles/combobox.css +7 -5
- package/dist/styles/components/actions/button/button.css +230 -0
- package/dist/styles/components/actions/popup-menu/popup-menu.css +326 -198
- package/dist/styles/components/actions/toolbar/toolbar.css +10 -3
- package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +67 -104
- package/dist/styles/components/actions/toolbar-text/toolbar-text.css +5 -18
- package/dist/styles/components/collections/list/list.css +37 -0
- package/dist/styles/components/feedback/badge/badge.css +18 -6
- package/dist/styles/components/feedback/progress-bar/progress-bar.css +168 -0
- package/dist/styles/components/feedback/progress-ring/progress-ring.css +91 -0
- package/dist/styles/components/feedback/state-banner/state-banner.css +18 -3
- package/dist/styles/components/forms/checkbox/checkbox.css +121 -0
- package/dist/styles/components/forms/choice-chips/choice-chips.css +58 -7
- package/dist/styles/components/forms/color-field/color-field.css +125 -0
- package/dist/styles/components/forms/color-picker/color-picker.css +331 -0
- package/dist/styles/components/forms/color-swatches/color-swatches.css +122 -0
- package/dist/styles/components/forms/combobox/combobox.css +7 -5
- package/dist/styles/components/forms/{composer/composer.css → message-composer/message-composer.css} +17 -33
- package/dist/styles/components/forms/radio-group/radio-group.css +156 -0
- package/dist/styles/{token-search-field.css → components/forms/search-field/search-field.css} +111 -102
- package/dist/styles/components/forms/select/select.css +370 -249
- package/dist/styles/components/forms/slider/slider.css +241 -0
- package/dist/styles/components/forms/switch/switch.css +132 -0
- package/dist/styles/components/forms/tag-field/tag-field.css +8 -0
- package/dist/styles/components/forms/text-field/text-field.css +193 -0
- package/dist/styles/components/layout/pane/pane.css +254 -0
- package/dist/styles/components/layout/resizable-region/resizable-region.css +3 -2
- package/dist/styles/components/layout/row/row.css +11 -0
- package/dist/styles/components/layout/split-view/split-view.css +25 -0
- package/dist/styles/components/layout/workbench/workbench.css +12 -4
- package/dist/styles/components/navigation/disclosure-arrow/disclosure-arrow.css +20 -0
- package/dist/styles/components/navigation/tab-bar/tab-bar.css +7 -7
- package/dist/styles/components/navigation/{app-tab/app-tab.css → tab-bar-item/tab-bar-item.css} +95 -90
- package/dist/styles/components/surfaces/disclosure/disclosure.css +98 -0
- package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +263 -116
- package/dist/styles/components/typography/text/text.css +14 -12
- package/dist/styles/disclosure-arrow.css +20 -0
- package/dist/styles/disclosure.css +98 -0
- package/dist/styles/foundation.css +6 -4
- package/dist/styles/list-detail-dialog.css +11 -0
- package/dist/styles/list.css +37 -0
- package/dist/styles/{composer.css → message-composer.css} +17 -33
- package/dist/styles/overlay-toast.css +149 -0
- package/dist/styles/overlay-tooltip.css +55 -0
- package/dist/styles/pane.css +254 -0
- package/dist/styles/popup-menu.css +326 -198
- package/dist/styles/progress-bar.css +168 -0
- package/dist/styles/progress-ring.css +91 -0
- package/dist/styles/radio-group.css +156 -0
- package/dist/styles/resizable-region.css +3 -2
- package/dist/styles/row.css +11 -0
- package/dist/styles/{components/forms/token-search-field/token-search-field.css → search-field.css} +111 -102
- package/dist/styles/select.css +370 -249
- package/dist/styles/slider.css +241 -0
- package/dist/styles/split-view.css +25 -0
- package/dist/styles/state-banner.css +18 -3
- package/dist/styles/styles.css +16 -5
- package/dist/styles/surface-scaffold.css +263 -116
- package/dist/styles/switch.css +132 -0
- package/dist/styles/{app-tab.css → tab-bar-item.css} +95 -90
- package/dist/styles/tab-bar.css +7 -7
- package/dist/styles/tag-field.css +8 -0
- package/dist/styles/text-field.css +193 -0
- package/dist/styles/text.css +14 -12
- package/dist/styles/toolbar-control-group.css +67 -104
- package/dist/styles/toolbar-text.css +5 -18
- package/dist/styles/toolbar.css +10 -3
- package/dist/styles/webawesome.css +9 -0
- package/dist/styles/workbench-dialog.css +10 -0
- package/dist/styles/workbench.css +12 -4
- package/dist/surface-scaffold-register.d.ts +7 -5
- package/dist/surface-scaffold-register.js +2 -246
- package/dist/surface-scaffold-register.js.map +1 -1
- package/dist/surface-scaffold.d.ts +70 -7
- package/dist/surface-scaffold.js +5 -1
- package/dist/switch.d.ts +38 -0
- package/dist/switch.js +4 -0
- package/dist/switch.js.map +1 -0
- package/dist/{app-tab.d.ts → tab-bar-item.d.ts} +11 -11
- package/dist/tab-bar-item.js +6 -0
- package/dist/tab-bar-item.js.map +1 -0
- package/dist/tab-bar.d.ts +3 -3
- package/dist/tab-bar.js +1 -1
- package/dist/tab-navigator.js +1 -1
- package/dist/tag-field.d.ts +52 -0
- package/dist/tag-field.js +6 -0
- package/dist/tag-field.js.map +1 -0
- package/dist/text-field.d.ts +83 -0
- package/dist/text-field.js +6 -0
- package/dist/text-field.js.map +1 -0
- package/dist/text.d.ts +6 -1
- package/dist/text.js +1 -1
- package/dist/{types-CVgIwSdq.d.ts → types-DmHWkSd6.d.ts} +19 -1
- package/dist/webawesome.d.ts +3 -0
- package/dist/wire-catalog.d.ts +8 -2
- package/dist/wire-catalog.js +16 -4
- package/dist/wire-catalog.js.map +1 -1
- package/dist/wire-checkboxes.d.ts +10 -0
- package/dist/wire-checkboxes.js +3 -0
- package/dist/{wire-composers.js.map → wire-checkboxes.js.map} +1 -1
- package/dist/wire-choice-chips.d.ts +17 -0
- package/dist/wire-choice-chips.js +4 -0
- package/dist/{wire-token-search-fields.js.map → wire-choice-chips.js.map} +1 -1
- package/dist/wire-color-fields.d.ts +33 -0
- package/dist/wire-color-fields.js +82 -0
- package/dist/wire-color-fields.js.map +1 -0
- package/dist/wire-color-pickers.d.ts +34 -0
- package/dist/wire-color-pickers.js +9 -0
- package/dist/wire-color-pickers.js.map +1 -0
- package/dist/wire-comboboxes.js +2 -1
- package/dist/wire-content-items.d.ts +5 -1
- package/dist/wire-content-items.js +84 -15
- package/dist/wire-content-items.js.map +1 -1
- package/dist/wire-file-pickers.d.ts +3 -2
- package/dist/wire-file-pickers.js +1 -1
- package/dist/{wire-composers.d.ts → wire-message-composers.d.ts} +5 -4
- package/dist/wire-message-composers.js +3 -0
- package/dist/wire-message-composers.js.map +1 -0
- package/dist/wire-overlay-sheets.js +1 -1
- package/dist/wire-pane-chrome.d.ts +21 -0
- package/dist/wire-pane-chrome.js +67 -0
- package/dist/wire-pane-chrome.js.map +1 -0
- package/dist/{wire-token-search-fields.d.ts → wire-search-fields.d.ts} +25 -25
- package/dist/wire-search-fields.js +6 -0
- package/dist/wire-search-fields.js.map +1 -0
- package/dist/wire-sliders.d.ts +12 -0
- package/dist/wire-sliders.js +31 -0
- package/dist/wire-sliders.js.map +1 -0
- package/dist/wire-tab-bars.js +1 -1
- package/dist/wire-tag-fields.d.ts +41 -0
- package/dist/wire-tag-fields.js +258 -0
- package/dist/wire-tag-fields.js.map +1 -0
- package/dist/wire-text-fields.d.ts +12 -0
- package/dist/wire-text-fields.js +3 -0
- package/dist/wire-text-fields.js.map +1 -0
- package/dist/workbench-dialog.d.ts +97 -0
- package/dist/workbench-dialog.js +124 -0
- package/dist/workbench-dialog.js.map +1 -0
- package/dist/workbench.d.ts +5 -0
- package/dist/workbench.js +1 -1
- package/docs/accessibility.md +181 -97
- package/docs/anchored-surface.md +8 -7
- package/docs/app-layouts.md +28 -0
- package/docs/catalog.md +14 -5
- package/docs/color-field.md +65 -0
- package/docs/color-picker.md +71 -0
- package/docs/color-swatches.md +46 -0
- package/docs/component-contract.md +31 -32
- package/docs/component-selection.md +228 -164
- package/docs/design/templates/button/emphasis-dark.svg +1 -0
- package/docs/design/templates/button/emphasis.svg +1 -0
- package/docs/design/templates/button/icons-dark.svg +1 -0
- package/docs/design/templates/button/icons.svg +1 -0
- package/docs/design/templates/button/pill-dark.svg +1 -0
- package/docs/design/templates/button/pill.svg +1 -0
- package/docs/design/templates/button/states-dark.svg +1 -0
- package/docs/design/templates/button/states.svg +1 -0
- package/docs/design/templates/button/toggles-dark.svg +1 -0
- package/docs/design/templates/button/toggles.svg +1 -0
- package/docs/design/templates/button/tones-dark.svg +1 -0
- package/docs/design/templates/button/tones.svg +1 -0
- package/docs/design/templates/button-dark.svg +1 -0
- package/docs/design/templates/button.svg +1 -0
- package/docs/design/templates/checkbox/compact-dark.svg +1 -0
- package/docs/design/templates/checkbox/compact.svg +1 -0
- package/docs/design/templates/checkbox/error-dark.svg +1 -0
- package/docs/design/templates/checkbox/error.svg +1 -0
- package/docs/design/templates/checkbox/mixed-dark.svg +1 -0
- package/docs/design/templates/checkbox/mixed.svg +1 -0
- package/docs/design/templates/checkbox/states-dark.svg +1 -0
- package/docs/design/templates/checkbox/states.svg +1 -0
- package/docs/design/templates/checkbox-dark.svg +1 -0
- package/docs/design/templates/checkbox.svg +1 -0
- package/docs/design/templates/choice-chips/color-palette-dark.svg +1 -1
- package/docs/design/templates/choice-chips/color-palette.svg +1 -1
- package/docs/design/templates/choice-chips/compact-icons-dark.svg +1 -1
- package/docs/design/templates/choice-chips/compact-icons.svg +1 -1
- package/docs/design/templates/choice-chips/multiple-dark.svg +1 -1
- package/docs/design/templates/choice-chips/multiple.svg +1 -1
- package/docs/design/templates/choice-chips-dark.svg +1 -1
- package/docs/design/templates/choice-chips.svg +1 -1
- package/docs/design/templates/color-field/compact-dark.svg +1 -0
- package/docs/design/templates/color-field/compact.svg +1 -0
- package/docs/design/templates/color-field/error-dark.svg +1 -0
- package/docs/design/templates/color-field/error.svg +1 -0
- package/docs/design/templates/color-field/hint-dark.svg +1 -0
- package/docs/design/templates/color-field/hint.svg +1 -0
- package/docs/design/templates/color-field-dark.svg +1 -0
- package/docs/design/templates/color-field.svg +1 -0
- package/docs/design/templates/color-picker/gray-dark.svg +1 -0
- package/docs/design/templates/color-picker/gray.svg +1 -0
- package/docs/design/templates/color-picker/rgb-dark.svg +1 -0
- package/docs/design/templates/color-picker/rgb.svg +1 -0
- package/docs/design/templates/color-picker-dark.svg +1 -0
- package/docs/design/templates/color-picker.svg +1 -0
- package/docs/design/templates/color-swatches/palette-dark.svg +1 -0
- package/docs/design/templates/color-swatches/palette.svg +1 -0
- package/docs/design/templates/color-swatches-dark.svg +1 -0
- package/docs/design/templates/color-swatches.svg +1 -0
- package/docs/design/templates/disclosure/framed-sunken-dark.svg +1 -0
- package/docs/design/templates/disclosure/framed-sunken.svg +1 -0
- package/docs/design/templates/disclosure/plain-dark.svg +1 -0
- package/docs/design/templates/disclosure/plain.svg +1 -0
- package/docs/design/templates/disclosure-dark.svg +1 -0
- package/docs/design/templates/disclosure.svg +1 -0
- 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-dark.svg +1 -1
- package/docs/design/templates/list-header.svg +1 -1
- package/docs/design/templates/message-composer/chat-dark.svg +1 -0
- package/docs/design/templates/message-composer/chat.svg +1 -0
- package/docs/design/templates/{composer → message-composer}/prompt-dark.svg +1 -1
- package/docs/design/templates/{composer → message-composer}/prompt.svg +1 -1
- package/docs/design/templates/message-composer-dark.svg +1 -0
- package/docs/design/templates/message-composer.svg +1 -0
- package/docs/design/templates/progress-bar/determinate-dark.svg +1 -0
- package/docs/design/templates/progress-bar/determinate.svg +1 -0
- package/docs/design/templates/progress-bar/tones-dark.svg +1 -0
- package/docs/design/templates/progress-bar/tones.svg +1 -0
- package/docs/design/templates/progress-bar-dark.svg +1 -0
- package/docs/design/templates/progress-bar.svg +1 -0
- package/docs/design/templates/progress-ring/sizes-dark.svg +1 -0
- package/docs/design/templates/progress-ring/sizes.svg +1 -0
- package/docs/design/templates/progress-ring/tones-dark.svg +1 -0
- package/docs/design/templates/progress-ring/tones.svg +1 -0
- package/docs/design/templates/progress-ring-dark.svg +1 -0
- package/docs/design/templates/progress-ring.svg +1 -0
- package/docs/design/templates/radio-group/horizontal-dark.svg +1 -0
- package/docs/design/templates/radio-group/horizontal.svg +1 -0
- package/docs/design/templates/radio-group/vertical-dark.svg +1 -0
- package/docs/design/templates/radio-group/vertical.svg +1 -0
- package/docs/design/templates/radio-group-dark.svg +1 -0
- package/docs/design/templates/radio-group.svg +1 -0
- 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/select/compact-dark.svg +1 -0
- package/docs/design/templates/select/compact.svg +1 -0
- package/docs/design/templates/select/form-dark.svg +1 -0
- package/docs/design/templates/select/form.svg +1 -0
- package/docs/design/templates/select/icons-dark.svg +1 -0
- package/docs/design/templates/select/icons.svg +1 -0
- package/docs/design/templates/select-dark.svg +1 -0
- package/docs/design/templates/select.svg +1 -0
- package/docs/design/templates/slider/compact-dark.svg +1 -0
- package/docs/design/templates/slider/compact.svg +1 -0
- package/docs/design/templates/slider/readout-dark.svg +1 -0
- package/docs/design/templates/slider/readout.svg +1 -0
- package/docs/design/templates/slider/ticks-dark.svg +1 -0
- package/docs/design/templates/slider/ticks.svg +1 -0
- package/docs/design/templates/slider-dark.svg +1 -0
- package/docs/design/templates/slider.svg +1 -0
- package/docs/design/templates/switch/compact-dark.svg +1 -0
- package/docs/design/templates/switch/compact.svg +1 -0
- package/docs/design/templates/switch/states-dark.svg +1 -0
- package/docs/design/templates/switch/states.svg +1 -0
- package/docs/design/templates/switch-dark.svg +1 -0
- package/docs/design/templates/switch.svg +1 -0
- package/docs/design/templates/tag-field/error-dark.svg +1 -0
- package/docs/design/templates/tag-field/error.svg +1 -0
- package/docs/design/templates/tag-field/tags-dark.svg +1 -0
- package/docs/design/templates/tag-field/tags.svg +1 -0
- package/docs/design/templates/tag-field-dark.svg +1 -0
- package/docs/design/templates/tag-field.svg +1 -0
- package/docs/design/templates/text-field/compact-dark.svg +1 -0
- package/docs/design/templates/text-field/compact.svg +1 -0
- package/docs/design/templates/text-field/error-dark.svg +1 -0
- package/docs/design/templates/text-field/error.svg +1 -0
- package/docs/design/templates/text-field/labeled-dark.svg +1 -0
- package/docs/design/templates/text-field/labeled.svg +1 -0
- package/docs/design/templates/text-field/multiline-dark.svg +1 -0
- package/docs/design/templates/text-field/multiline.svg +1 -0
- package/docs/design/templates/text-field/search-dark.svg +1 -0
- package/docs/design/templates/text-field/search.svg +1 -0
- package/docs/design/templates/text-field-dark.svg +1 -0
- package/docs/design/templates/text-field.svg +1 -0
- 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/width-visibility-320-dark.svg +1 -1
- package/docs/design/templates/toolbar/width-visibility-320.svg +1 -1
- package/docs/design/templates/toolbar/width-visibility-600-dark.svg +1 -1
- package/docs/design/templates/toolbar/width-visibility-600.svg +1 -1
- package/docs/design/templates/toolbar-dark.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/design/templates.md +19 -6
- package/docs/design-philosophy.md +6 -6
- package/docs/disclosure.md +63 -0
- package/docs/examples/component-catalog-extension.json +2 -2
- package/docs/layout.md +16 -7
- package/docs/list-detail-dialog.md +96 -0
- package/docs/manual-test-plan.md +1 -1
- package/docs/{composer.md → message-composer.md} +41 -28
- package/docs/overlay-toast.md +62 -0
- package/docs/overlay-tooltip.md +53 -0
- package/docs/progress.md +62 -0
- package/docs/recipes.md +15 -21
- package/docs/slider.md +64 -0
- package/docs/surface-scaffold.md +155 -88
- package/docs/tag-field.md +66 -0
- package/docs/type-contracts.md +8 -8
- package/docs/ui-analyzer.md +1 -1
- package/docs/ui-doctor.md +11 -6
- package/docs/ux-demo.md +6 -6
- package/docs/webawesome-migration.md +80 -0
- package/docs/webawesome-theme.md +57 -35
- package/docs/workbench-dialog.md +85 -0
- package/docs/workbench.md +10 -6
- package/docs/writing.md +10 -8
- package/doctor/copy-capitalization-checks.mjs +18 -9
- package/llms.txt +127 -57
- package/package.json +156 -39
- package/ux-demo/recipes/composer-form.tsx +18 -19
- package/ux-demo/recipes/list-detail-dialog.tsx +55 -162
- package/ux-demo/recipes/mount-recipe.ts +7 -6
- package/ux-demo/recipes/types.ts +1 -0
- package/ai/components/icon-button.md +0 -82
- package/ai/components/icon-toggle-button.md +0 -80
- package/dist/app-tab.js +0 -6
- package/dist/app-tab.js.map +0 -1
- package/dist/browser/app-tab.js +0 -4
- package/dist/browser/composer.js +0 -4
- package/dist/browser/icon-toggle-button.js +0 -4
- package/dist/browser/token-search-field.js +0 -4
- package/dist/chunk-2MSPNRWJ.js.map +0 -1
- package/dist/chunk-7IUEBNCO.js.map +0 -1
- package/dist/chunk-AV7CPAPT.js +0 -82
- package/dist/chunk-AV7CPAPT.js.map +0 -1
- package/dist/chunk-BYFTHA4I.js.map +0 -1
- package/dist/chunk-CA7LNX3J.js +0 -44
- package/dist/chunk-CA7LNX3J.js.map +0 -1
- package/dist/chunk-CR5U5FV6.js.map +0 -1
- package/dist/chunk-ELCMSQNJ.js.map +0 -1
- package/dist/chunk-ETCWQLJV.js.map +0 -1
- package/dist/chunk-FDZNYD4C.js.map +0 -1
- package/dist/chunk-FR76ZJQC.js +0 -90
- package/dist/chunk-FR76ZJQC.js.map +0 -1
- package/dist/chunk-HQZYKJ56.js.map +0 -1
- package/dist/chunk-HZPHCSCS.js.map +0 -1
- package/dist/chunk-JOR5LGYE.js.map +0 -1
- package/dist/chunk-K4AT3V3J.js.map +0 -1
- package/dist/chunk-LL45C7BB.js.map +0 -1
- package/dist/chunk-LOSRXZAH.js.map +0 -1
- package/dist/chunk-LPHU44S3.js.map +0 -1
- package/dist/chunk-M5KZ26VV.js.map +0 -1
- package/dist/chunk-MXNIVEVL.js.map +0 -1
- package/dist/chunk-NS762OVM.js +0 -222
- package/dist/chunk-NS762OVM.js.map +0 -1
- package/dist/chunk-QTSMHH5J.js.map +0 -1
- package/dist/chunk-T5BJBMW7.js.map +0 -1
- package/dist/chunk-TDMHA7C3.js.map +0 -1
- package/dist/chunk-TGLUDQP2.js.map +0 -1
- package/dist/chunk-U6QYTMDB.js.map +0 -1
- package/dist/chunk-VFYO3UGZ.js +0 -45
- package/dist/chunk-VFYO3UGZ.js.map +0 -1
- package/dist/chunk-W4IK7AWD.js.map +0 -1
- package/dist/chunk-YBWQR2OK.js.map +0 -1
- package/dist/chunk-ZJC5ND3M.js.map +0 -1
- package/dist/composer.js +0 -5
- package/dist/composer.js.map +0 -1
- package/dist/icon-button.d.ts +0 -46
- package/dist/icon-button.js +0 -6
- package/dist/icon-button.js.map +0 -1
- package/dist/icon-toggle-button.d.ts +0 -42
- package/dist/icon-toggle-button.js +0 -6
- package/dist/icon-toggle-button.js.map +0 -1
- package/dist/styles/components/actions/icon-button/icon-button.css +0 -22
- package/dist/styles/components/actions/icon-toggle-button/icon-toggle-button.css +0 -83
- package/dist/styles/icon-button.css +0 -22
- package/dist/styles/icon-toggle-button.css +0 -83
- package/dist/token-search-field.d.ts +0 -3
- package/dist/token-search-field.js +0 -5
- package/dist/token-search-field.js.map +0 -1
- package/dist/token-search-model.d.ts +0 -3
- package/dist/token-search-model.js +0 -3
- package/dist/token-search-model.js.map +0 -1
- package/dist/wire-composers.js +0 -3
- package/dist/wire-token-search-fields.js +0 -6
- package/docs/design/templates/composer/chat-dark.svg +0 -1
- package/docs/design/templates/composer/chat.svg +0 -1
- package/docs/design/templates/composer-dark.svg +0 -1
- package/docs/design/templates/composer.svg +0 -1
- /package/docs/design/templates/{token-search-field → search-field}/empty-dark.svg +0 -0
- /package/docs/design/templates/{token-search-field → search-field}/empty.svg +0 -0
- /package/docs/design/templates/{token-search-field → search-field}/tokens-dark.svg +0 -0
- /package/docs/design/templates/{token-search-field → search-field}/tokens.svg +0 -0
- /package/docs/design/templates/{token-search-field-dark.svg → search-field-dark.svg} +0 -0
- /package/docs/design/templates/{token-search-field.svg → search-field.svg} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/surfaces/list-detail-dialog/list-detail-dialog.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAqHA,IAAM,kBAAA,GAAyC,EAAE,IAAA,EAAM,GAAA,EAAK,aAAa,GAAA,EAAI;AAE7E,SAAS,WAAW,UAAA,EAAoB;AACtC,EAAA,uBACE,GAAA,CAAC,uBAAoB,UAAA,EAAW,YAAA,EAAa,QAAM,IAAA,EACjD,QAAA,kBAAA,GAAA,CAAC,YAAO,IAAA,EAAK,QAAA,EAAS,cAAY,UAAA,EAAY,mBAAA,EAAkB,IAC9D,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,MAAM,CAAA,EAAG,IAAA,EAAK,GAAA,EAAI,CAAA,EAChC,CAAA,EACF,CAAA;AAEJ;AAaO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,EAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,YAAA,GAAe,KAAA;AAAA,EACf,SAAA,GAAY,MAAA;AAAA,EACZ,UAAA,GAAa,OAAA;AAAA,EACb,YAAA,GAAe,KAAA;AAAA,EACf,IAAA,GAAO,OAAA;AAAA,EACP,cAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ;AACF,CAAA,EAA0B;AACxB,EAAA,MAAM,KAAA,GAAQ,WAAW,UAAU,CAAA;AACnC,EAAA,MAAM,QAAQ,OAAA,mBACZ,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,GAAG,EAAE,CAAA,MAAA,CAAA;AAAA,MACT,KAAA;AAAA,MACA,OAAA,EAAO,IAAA;AAAA,MACP,YAAA;AAAA,MACA,WAAW,IAAA,CAAK,KAAA;AAAA,MAChB,aAAa,MAAA,CAAO,KAAA;AAAA,MACpB,SAAA;AAAA,MACA,YAAA,EAAc;AAAA,QACZ,IAAA,EAAM;AAAA,UACJ,OAAA,EAAS;AAAA,YACP,0BACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,cAAA,IAAA,CAAK,OAAA;AAAA,cACL;AAAA,aAAA,EACH;AAAA,WAEJ;AAAA,UACA,QAAQ,IAAA,CAAK;AAAA,SACf;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,OAAA,EAAS;AAAA,YACP,0BACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,cAAA,MAAA,CAAO,OAAA;AAAA,cACP;AAAA,aAAA,EACH;AAAA,WAEJ;AAAA,UACA,QAAQ,MAAA,CAAO;AAAA;AACjB,OACF;AAAA,MACA,MAAM,IAAA,CAAK,OAAA;AAAA,MACX,QAAQ,MAAA,CAAO;AAAA;AAAA,GACjB,mBAEA,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAI,GAAG,EAAE,CAAA,MAAA,CAAA;AAAA,MACT,KAAA;AAAA,MACA,WAAW,IAAA,CAAK,KAAA;AAAA,MAChB,aAAa,MAAA,CAAO,KAAA;AAAA,MACpB,SAAA,EAAW,KAAK,KAAA,IAAS,kBAAA;AAAA,MACzB,IAAA,kBACE,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,OAAO,IAAA,CAAK,KAAA;AAAA,UACZ,MAAA,kBACE,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,OAAO,IAAA,CAAK,KAAA;AAAA,cACZ,OAAA,kBAAS,GAAA,CAAC,WAAA,EAAA,EAAY,IAAA,EAAM,KAAK,KAAA,EAAO,CAAA;AAAA,cACxC,UAAU,IAAA,CAAK;AAAA;AAAA,WACjB;AAAA,UAEF,QAAQ,IAAA,CAAK,MAAA;AAAA,UAEZ,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,OACR;AAAA,MAEF,MAAA,kBACE,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACC,OAAO,MAAA,CAAO,KAAA;AAAA,UACd,MAAA,kBACE,GAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,OAAO,MAAA,CAAO,KAAA;AAAA,cACd,OAAA,kBACE,GAAA;AAAA,gBAAC,WAAA;AAAA,gBAAA;AAAA,kBACC,MAAM,MAAA,CAAO,KAAA;AAAA,kBACb,aAAa,MAAA,CAAO,WAAA;AAAA,kBACpB,IAAA,EAAK,QAAA;AAAA,kBACL,EAAA,EAAI,GAAG,EAAE,CAAA,MAAA,CAAA;AAAA,kBACT,YAAA,EAAc;AAAA;AAAA,eAChB;AAAA,cAEF,0BACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,gBAAA,MAAA,CAAO,OAAA;AAAA,gBACP;AAAA,eAAA,EACH;AAAA;AAAA,WAEJ;AAAA,UAEF,QAAQ,MAAA,CAAO,MAAA;AAAA,UAEd,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA;AACV;AAAA,GAEJ;AAEF,EAAA,uBACE,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,KAAA;AAAA,MACA,aAAA,EAAa,IAAA;AAAA,MACb,YAAA;AAAA,MACA,UAAA;AAAA,MACA,IAAA;AAAA,MACA,YAAA,EAAc,UAAU,YAAA,GAAe,OAAA;AAAA,MACvC,cAAA;AAAA,MACA,MAAA,EACE,UACI,MAAA,GACA,SAAA,KAAc,SACX,MAAA,IAAU,MAAA,CAAO,GAAG,CAAA,GACrB,MAAA;AAAA,MAER,SAAA,EAAW,UAAU,MAAA,GAAY,SAAA;AAAA,MACjC,cAAA,EAAgB,UAAU,MAAA,GAAY,cAAA;AAAA,MACtC,SAAA,EAAU,MAAA;AAAA,MACV,UAAA,EAAW,MAAA;AAAA,MACX,cAAA,EAAgB;AAAA,QACd,GAAG,cAAA;AAAA,QACH,oBAAA,EAAsB;AAAA,OACxB;AAAA,MACA,SAAA;AAAA,MACA,IAAA;AAAA,MAEC,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ","file":"list-detail-dialog.js","sourcesContent":["import { X } from 'lucide';\n\nimport type { KerfUiContent } from '../../../shared/content/semantic-content.js';\nimport type { CssLength } from '../../../shared/styles/css-values.js';\nimport { remify } from '../../../shared/styles/css-values.js';\nimport { Toolbar } from '../../actions/toolbar/toolbar.js';\nimport { ToolbarControlGroup } from '../../actions/toolbar-control-group/toolbar-control-group.js';\nimport { ToolbarText } from '../../actions/toolbar-text/toolbar-text.js';\nimport { Pane } from '../../layout/pane/pane.js';\nimport {\n SplitView,\n type SplitViewListWidth,\n} from '../../layout/split-view/split-view.js';\nimport { LucideIcon } from '../../media/lucide-icon/lucide-icon.js';\nimport {\n DialogSurface,\n type DialogSurfaceHeight,\n type DialogSurfaceMaxHeight,\n type DialogSurfaceRootAttributes,\n type DialogSurfaceSize,\n} from '../surface-scaffold/surface-scaffold.js';\n\n// Open and close it like any DialogSurface, from the same import.\nexport {\n closeDialog,\n type DialogCloseSource,\n type DialogRequestCloseDetail,\n openDialog,\n} from '../surface-scaffold/surface-scaffold.js';\n\n/** The list column: a secondary title, its own controls, and the list. */\nexport interface ListDetailDialogList {\n /**\n * The column's title, at the default toolbar size so it reads as pane\n * identity beside the detail's primary title. On compact devices it titles\n * the root view.\n */\n title: string;\n /** Controls after the title in the column's header, such as a `ToolbarControlGroup`. */\n toolbar?: KerfUiContent;\n /** The list, usually a `List` of selectable `ListItem`s. */\n content: KerfUiContent;\n /** Content pinned below the list, such as an add control. */\n footer?: KerfUiContent;\n /**\n * The column's width on roomy devices (default 280px, at most 40% of the\n * dialog's width).\n */\n width?: SplitViewListWidth;\n}\n\n/** The detail column: the dialog's primary title, actions, and close control. */\nexport interface ListDetailDialogDetail {\n /**\n * The dialog's primary title: an xl heading at the top of the detail\n * column on roomy devices, and the pushed view's title on compact devices.\n */\n title: string;\n /** A short supporting line under the roomy title. */\n description?: string;\n /**\n * Header controls before the close control, such as a\n * `ToolbarControlGroup`. Primary record actions usually go in `footer`.\n */\n actions?: KerfUiContent;\n /** The selected item's detail. */\n content: KerfUiContent;\n /** Content pinned below the detail, usually its buttons. */\n footer?: KerfUiContent;\n}\n\n/**\n * Application `data-*` identity on the dialog root, such as `data-key`; the\n * dialog's own configuration attributes stay protected.\n */\nexport type ListDetailDialogRootAttributes = DialogSurfaceRootAttributes;\n\nexport interface ListDetailDialogProps {\n /**\n * The dialog's id, for `openDialog(document.getElementById(id))`. Also\n * prefixes the ids of the split and the detail title.\n */\n id: string;\n /** The dialog's accessible name. */\n label: string;\n list: ListDetailDialogList;\n detail: ListDetailDialogDetail;\n /**\n * One pane at a time: derive from `deviceClass().value.compact`. The dialog\n * fills the screen and drills from the list into the detail as a\n * `NavStack`; every view keeps the close control.\n */\n compact?: boolean;\n /** On compact devices, whether the detail is pushed over the list. */\n detailActive?: boolean;\n /** The compact back control's accessible name (default `Back`). */\n backLabel?: string;\n /** The close control's accessible name (default `Close`). */\n closeLabel?: string;\n /** Close on a press on the backdrop; otherwise the panel pulses. */\n lightDismiss?: boolean;\n /** Roomy preferred width preset (default `large`). */\n size?: DialogSurfaceSize;\n /** Roomy preferred width; takes precedence over `size`. */\n preferredWidth?: CssLength;\n /** Roomy definite height (default 560px), bounded by the viewport. */\n height?: DialogSurfaceHeight;\n /** Roomy height cap in place of a definite height. */\n maxHeight?: DialogSurfaceMaxHeight;\n /** Roomy edge clearance from the viewport. */\n viewportGutter?: CssLength;\n rootAttributes?: ListDetailDialogRootAttributes;\n className?: string;\n /** Native named-slot assignment when composed inside a web component. */\n slot?: string;\n}\n\nconst DEFAULT_LIST_WIDTH: SplitViewListWidth = { size: 280, maxFraction: 0.4 };\n\nfunction closeGroup(closeLabel: string) {\n return (\n <ToolbarControlGroup appearance=\"borderless\" single>\n <button type=\"button\" aria-label={closeLabel} data-dialog-close=\"\">\n <LucideIcon icon={X} name=\"x\" />\n </button>\n </ToolbarControlGroup>\n );\n}\n\n/**\n * A list-detail dialog: a modal whose list column and detail column each run\n * its full height. The list column carries a secondary title and its own\n * controls; the detail column carries the dialog's primary title, its\n * actions, and the close control, so the divider between them runs from top\n * to bottom. On compact devices it fills the screen and becomes a `NavStack`\n * that drills from the list into the detail. Open it with `openDialog()`;\n * the app owns the selection and, on compact devices, `detailActive` (the\n * stack's back control dispatches `nav-back`). Built from `DialogSurface`,\n * `SplitView`, and `Pane`.\n */\nexport function ListDetailDialog({\n id,\n label,\n list,\n detail,\n compact = false,\n detailActive = false,\n backLabel = 'Back',\n closeLabel = 'Close',\n lightDismiss = false,\n size = 'large',\n preferredWidth,\n height,\n maxHeight,\n viewportGutter,\n rootAttributes,\n className = '',\n slot,\n}: ListDetailDialogProps) {\n const close = closeGroup(closeLabel);\n const split = compact ? (\n <SplitView\n id={`${id}-split`}\n label={label}\n compact\n detailActive={detailActive}\n listTitle={list.title}\n detailTitle={detail.title}\n backLabel={backLabel}\n compactStack={{\n list: {\n toolbar: {\n trailing: (\n <>\n {list.toolbar}\n {close}\n </>\n ),\n },\n footer: list.footer,\n },\n detail: {\n toolbar: {\n trailing: (\n <>\n {detail.actions}\n {close}\n </>\n ),\n },\n footer: detail.footer,\n },\n }}\n list={list.content}\n detail={detail.content}\n />\n ) : (\n <SplitView\n id={`${id}-split`}\n label={label}\n listTitle={list.title}\n detailTitle={detail.title}\n listWidth={list.width ?? DEFAULT_LIST_WIDTH}\n list={\n <Pane\n label={list.title}\n header={\n <Toolbar\n label={list.title}\n leading={<ToolbarText text={list.title} />}\n trailing={list.toolbar}\n />\n }\n footer={list.footer}\n >\n {list.content}\n </Pane>\n }\n detail={\n <Pane\n label={detail.title}\n header={\n <Toolbar\n label={detail.title}\n leading={\n <ToolbarText\n text={detail.title}\n description={detail.description}\n size=\"xlarge\"\n id={`${id}-title`}\n headingLevel={2}\n />\n }\n trailing={\n <>\n {detail.actions}\n {close}\n </>\n }\n />\n }\n footer={detail.footer}\n >\n {detail.content}\n </Pane>\n }\n />\n );\n return (\n <DialogSurface\n id={id}\n label={label}\n withoutHeader\n lightDismiss={lightDismiss}\n closeLabel={closeLabel}\n size={size}\n presentation={compact ? 'fullscreen' : 'modal'}\n preferredWidth={preferredWidth}\n height={\n compact\n ? undefined\n : maxHeight === undefined\n ? (height ?? remify(560))\n : height\n }\n maxHeight={compact ? undefined : maxHeight}\n viewportGutter={compact ? undefined : viewportGutter}\n bodyInset=\"none\"\n bodyLayout=\"fill\"\n rootAttributes={{\n ...rootAttributes,\n 'data-dialog-layout': 'list-detail',\n }}\n className={className}\n slot={slot}\n >\n {split}\n </DialogSurface>\n );\n}\n"]}
|
package/dist/list-header.js
CHANGED
package/dist/list-item.js
CHANGED
package/dist/list.d.ts
CHANGED
|
@@ -20,6 +20,8 @@ type ListRootAttributes = StructuralRootAttributes & Readonly<{
|
|
|
20
20
|
'data-frame'?: never;
|
|
21
21
|
'data-surface'?: never;
|
|
22
22
|
'data-inset'?: never;
|
|
23
|
+
'data-content-width'?: never;
|
|
24
|
+
'data-content-align'?: never;
|
|
23
25
|
'data-text-insets'?: never;
|
|
24
26
|
'data-control-insets'?: never;
|
|
25
27
|
}>;
|
|
@@ -35,6 +37,12 @@ type ListSurface = 'base' | 'raised';
|
|
|
35
37
|
* 16px inline below 576px. It replaces any `textInsets`/`controlInsets`.
|
|
36
38
|
*/
|
|
37
39
|
type ListInset = 'document';
|
|
40
|
+
/**
|
|
41
|
+
* A readable measure for a page's content column: `compact` 440px, `medium`
|
|
42
|
+
* 640px, or `wide` 864px of content, the same steps as a catalog example's
|
|
43
|
+
* `contentWidth`.
|
|
44
|
+
*/
|
|
45
|
+
type ListContentWidth = 'compact' | 'medium' | 'wide';
|
|
38
46
|
interface ListProps {
|
|
39
47
|
children?: KerfUiContent;
|
|
40
48
|
/** Make this list a labeled multi-select grid for `ContentItem selectionMode="multiple"` rows. */
|
|
@@ -100,6 +108,13 @@ interface ListProps {
|
|
|
100
108
|
/** Physical divider edges in canonical top/right/bottom/left order. */
|
|
101
109
|
dividerSides?: Sides;
|
|
102
110
|
/** A preset four-sided inset; see `ListInset`. */
|
|
111
|
+
/**
|
|
112
|
+
* Cap the list's content at a readable measure, plus its insets, so a page
|
|
113
|
+
* column needs no application CSS. Composes with `inset="document"`.
|
|
114
|
+
*/
|
|
115
|
+
contentWidth?: ListContentWidth;
|
|
116
|
+
/** Where a `contentWidth` column sits: `center` (default) or `start`. */
|
|
117
|
+
contentAlign?: 'start' | 'center';
|
|
103
118
|
inset?: ListInset;
|
|
104
119
|
/** Physical sides that receive the standard 17px text inset. */
|
|
105
120
|
textInsets?: Sides;
|
|
@@ -123,6 +138,6 @@ interface ListProps {
|
|
|
123
138
|
*/
|
|
124
139
|
type ListConfig = Pick<ListProps, 'gap' | 'hAlign' | 'vAlign' | 'dividerSides' | 'textInsets' | 'controlInsets'>;
|
|
125
140
|
/** A stretch-aligned vertical stack with optional gap, flex, fill, scroll, and dividers. */
|
|
126
|
-
declare function List({ children, selectionMode, ariaLabel, gap, flex, fill, hAlign, vAlign, scrollable, scrollClearance, frame, maxHeight, minHeight, surface, inset, dividerSides, textInsets, controlInsets, className, rootAttributes, slot, }: ListProps): kerfjs.SafeHtml;
|
|
141
|
+
declare function List({ children, selectionMode, ariaLabel, gap, flex, fill, hAlign, vAlign, scrollable, scrollClearance, frame, maxHeight, minHeight, surface, inset, contentWidth, contentAlign, dividerSides, textInsets, controlInsets, className, rootAttributes, slot, }: ListProps): kerfjs.SafeHtml;
|
|
127
142
|
|
|
128
|
-
export { CssFlex, CssFlexKeyword, CssLength, HorizontalAlignment, List, type ListConfig, type ListInset, type ListProps, type ListSurface, ListVerticalAlignment, ScrollClearance, Sides, UiGap };
|
|
143
|
+
export { CssFlex, CssFlexKeyword, CssLength, HorizontalAlignment, List, type ListConfig, type ListContentWidth, type ListInset, type ListProps, type ListSurface, ListVerticalAlignment, ScrollClearance, Sides, UiGap };
|
package/dist/list.js
CHANGED
package/dist/lucide-icon.d.ts
CHANGED
|
@@ -14,13 +14,21 @@ interface LucideIconProps {
|
|
|
14
14
|
color?: CssForegroundColor;
|
|
15
15
|
/** Flow with surrounding text instead of occupying a block. */
|
|
16
16
|
inline?: boolean;
|
|
17
|
+
/** The icon's accessible name; without it the icon is decorative. */
|
|
17
18
|
label?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Hover text, as an SVG `<title>`: a status icon's explanation ("Session
|
|
21
|
+
* halted"). With `label`, the label stays the accessible name; alone, the
|
|
22
|
+
* title also names the icon. The whole icon box shows it, not just its
|
|
23
|
+
* strokes.
|
|
24
|
+
*/
|
|
25
|
+
title?: string;
|
|
18
26
|
/** Named icon scale or positive pixel size, converted to rem. Omit for 1em. */
|
|
19
27
|
size?: LucideIconSize;
|
|
20
28
|
/** Native named-slot assignment when composed inside a web component. */
|
|
21
29
|
slot?: string;
|
|
22
30
|
}
|
|
23
31
|
/** Render a Lucide-compatible icon node without copying icon SVG strings. */
|
|
24
|
-
declare function LucideIcon({ icon, name, appearance, className, color, inline, label, size, slot, }: LucideIconProps): SafeHtml;
|
|
32
|
+
declare function LucideIcon({ icon, name, appearance, className, color, inline, label, title, size, slot, }: LucideIconProps): SafeHtml;
|
|
25
33
|
|
|
26
34
|
export { LucideIcon, type LucideIconProps, type LucideIconSize, type LucideNode };
|
package/dist/lucide-icon.js
CHANGED
|
@@ -2,11 +2,11 @@ import * as kerfjs from 'kerfjs';
|
|
|
2
2
|
import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Application `data-*` identity on the
|
|
5
|
+
* Application `data-*` identity on the MessageComposer root, such as `data-key`;
|
|
6
6
|
* the composer's own configuration attributes stay protected.
|
|
7
7
|
*/
|
|
8
|
-
type
|
|
9
|
-
interface
|
|
8
|
+
type MessageComposerRootAttributes = Readonly<Record<`data-${string}`, string | undefined>>;
|
|
9
|
+
interface MessageComposerProps {
|
|
10
10
|
/** The message field's accessible name, in title style ("Message"). */
|
|
11
11
|
label: string;
|
|
12
12
|
/** Native textarea `name`: the form field the message submits under. */
|
|
@@ -30,14 +30,22 @@ interface ComposerProps {
|
|
|
30
30
|
* `minRows`.
|
|
31
31
|
*/
|
|
32
32
|
maxRows?: number;
|
|
33
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Quiet, sentence-style supporting copy in the action row's leading zone,
|
|
35
|
+
* after any `leading` controls.
|
|
36
|
+
*/
|
|
34
37
|
hint?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Controls at the start of the action row, such as an attach button or a
|
|
40
|
+
* model `Select`, normally in a `ToolbarControlGroup`.
|
|
41
|
+
*/
|
|
42
|
+
leading?: KerfUiContent;
|
|
35
43
|
/** Trailing controls in the action row, normally one brand Send button. */
|
|
36
|
-
|
|
44
|
+
trailing: KerfUiContent;
|
|
37
45
|
/** Disable the field; the app disables its own actions. */
|
|
38
46
|
disabled?: boolean;
|
|
39
47
|
/**
|
|
40
|
-
* Opt in to Enter-to-send: with `
|
|
48
|
+
* Opt in to Enter-to-send: with `wireMessageComposers` running over an ancestor,
|
|
41
49
|
* Enter (or Cmd/Ctrl+Enter) in the field activates the first trailing
|
|
42
50
|
* action, Shift+Enter inserts a newline, and an Enter that commits an IME
|
|
43
51
|
* composition or meets an empty message does not send. The field announces
|
|
@@ -45,7 +53,7 @@ interface ComposerProps {
|
|
|
45
53
|
*/
|
|
46
54
|
submitOnEnter?: boolean;
|
|
47
55
|
/** Safe `data-*` identity on the root. */
|
|
48
|
-
rootAttributes?:
|
|
56
|
+
rootAttributes?: MessageComposerRootAttributes;
|
|
49
57
|
className?: string;
|
|
50
58
|
/** Native named-slot assignment, such as a `wa-dialog`'s `footer`. */
|
|
51
59
|
slot?: string;
|
|
@@ -53,10 +61,10 @@ interface ComposerProps {
|
|
|
53
61
|
/**
|
|
54
62
|
* A chat or prompt composer: a raised frame whose border turns brand while
|
|
55
63
|
* focus is within, holding a borderless message field that grows with its
|
|
56
|
-
* content between `minRows` and `maxRows` lines, above
|
|
57
|
-
* optional
|
|
58
|
-
* `submitOnEnter` with `
|
|
64
|
+
* content between `minRows` and `maxRows` lines, above a compact `Toolbar`
|
|
65
|
+
* action row: optional `leading` controls and `hint`, then `trailing` actions. The app owns the value and sending;
|
|
66
|
+
* `submitOnEnter` with `wireMessageComposers` adds Enter-to-send.
|
|
59
67
|
*/
|
|
60
|
-
declare function
|
|
68
|
+
declare function MessageComposer({ label, name, id, value, placeholder, minRows, maxRows, hint, leading, trailing, disabled, submitOnEnter, rootAttributes, className, slot, }: MessageComposerProps): kerfjs.SafeHtml;
|
|
61
69
|
|
|
62
|
-
export {
|
|
70
|
+
export { MessageComposer, type MessageComposerProps, type MessageComposerRootAttributes };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"message-composer.js"}
|
package/dist/nav-stack.js
CHANGED
package/dist/pane.d.ts
CHANGED
|
@@ -67,9 +67,27 @@ type PaneRootAttributes = Readonly<Record<`data-${string}`, string | undefined>
|
|
|
67
67
|
'data-scroll-edge'?: never;
|
|
68
68
|
'data-scroll-edge-distance'?: never;
|
|
69
69
|
'data-header-overlay'?: never;
|
|
70
|
+
'data-compact-header'?: never;
|
|
71
|
+
'data-compact-footer'?: never;
|
|
72
|
+
'data-compact-header-open'?: never;
|
|
73
|
+
'data-compact-footer-open'?: never;
|
|
70
74
|
}>;
|
|
71
75
|
/** How a Pane's header and footer relate to its scrolling content. */
|
|
72
76
|
type PaneChromePlacement = 'fixed' | 'auto';
|
|
77
|
+
/**
|
|
78
|
+
* How a header or footer behaves when the pane's container presents
|
|
79
|
+
* compactly (a `NavStack` view, a `TabNavigator` scene, a full-screen dialog,
|
|
80
|
+
* or a compact `Workbench`): `fixed` stays docked and shrinks the content
|
|
81
|
+
* area; `scroll` sits inline with the content (a footer settles at the end
|
|
82
|
+
* and scrolls past when the content is longer); `overlay` lies over the
|
|
83
|
+
* content on the chrome material, shown only while the app opens it.
|
|
84
|
+
*/
|
|
85
|
+
type PaneCompactChrome = 'fixed' | 'scroll' | 'overlay';
|
|
86
|
+
/** The compact chrome policy for a Pane's header and footer. */
|
|
87
|
+
interface PaneCompactChromePolicy {
|
|
88
|
+
header?: PaneCompactChrome;
|
|
89
|
+
footer?: PaneCompactChrome;
|
|
90
|
+
}
|
|
73
91
|
/**
|
|
74
92
|
* When a Pane draws the divider between its pinned header or footer and its
|
|
75
93
|
* scrolling content: `scroll` while content is scrolled away beneath that
|
|
@@ -130,6 +148,21 @@ interface PaneProps {
|
|
|
130
148
|
* text in the normal text color: quiet text can fall below AA over the
|
|
131
149
|
* content passing beneath it.
|
|
132
150
|
*/
|
|
151
|
+
/**
|
|
152
|
+
* What the header and footer do when the pane's container presents
|
|
153
|
+
* compactly (default `fixed`); roomy containers ignore it. The container
|
|
154
|
+
* interprets it, so set it on panes inside a `NavStack`, `TabNavigator`,
|
|
155
|
+
* full-screen dialog, or `Workbench`.
|
|
156
|
+
*/
|
|
157
|
+
compactChrome?: PaneCompactChromePolicy;
|
|
158
|
+
/**
|
|
159
|
+
* Which `overlay` compact chrome is showing. The app owns it and flips it
|
|
160
|
+
* from a control the person can reach while the chrome is hidden.
|
|
161
|
+
*/
|
|
162
|
+
compactChromeOpen?: {
|
|
163
|
+
header?: boolean;
|
|
164
|
+
footer?: boolean;
|
|
165
|
+
};
|
|
133
166
|
headerPresentation?: PaneHeaderPresentation;
|
|
134
167
|
/**
|
|
135
168
|
* With `headerPresentation="clear"`, `material` fades the chrome material
|
|
@@ -213,13 +246,13 @@ interface PaneProps {
|
|
|
213
246
|
* or a CollapsiblePanel) forwards, so the app configures that pane instead of
|
|
214
247
|
* styling it. An omitted or `undefined` field keeps the composite's default.
|
|
215
248
|
*/
|
|
216
|
-
type PaneConfig = Pick<PaneProps, 'contentElement' | 'contentLabel' | 'separators' | 'safeAreaEdges' | 'chromeDividers' | 'headerPresentation' | 'scrollEdge' | 'scrollEdgeDistance' | 'appearance' | 'background' | 'tint' | 'deepInset' | 'scrollClearance' | 'tabIndex' | 'outlined'>;
|
|
249
|
+
type PaneConfig = Pick<PaneProps, 'contentElement' | 'contentLabel' | 'separators' | 'safeAreaEdges' | 'chromeDividers' | 'compactChrome' | 'compactChromeOpen' | 'headerPresentation' | 'scrollEdge' | 'scrollEdgeDistance' | 'appearance' | 'background' | 'tint' | 'deepInset' | 'scrollClearance' | 'tabIndex' | 'outlined'>;
|
|
217
250
|
/**
|
|
218
251
|
* An unpadded application column with optional fixed header/footer slots and one
|
|
219
252
|
* scrolling vertical content owner. Separator lines are independently opt-in on
|
|
220
253
|
* each logical edge, so the same component works as a sidebar, main area,
|
|
221
254
|
* inspector, or dialog column.
|
|
222
255
|
*/
|
|
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;
|
|
256
|
+
declare function Pane({ header, children, footer, chromePlacement, chromeDividers, compactChrome, compactChromeOpen, 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
257
|
|
|
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 };
|
|
258
|
+
export { Pane, type PaneAppearance, type PaneChromeDividers, type PaneChromePlacement, type PaneCompactChrome, type PaneCompactChromePolicy, type PaneConfig, type PaneContentElement, type PaneElement, type PaneHeaderPresentation, type PaneProps, type PaneSeparatorSide, ScrollClearance, type ScrollEdge, type SurfaceTint, type SurfaceTintScheme };
|
package/dist/pane.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Marker export for tests and tooling; importing this module
|
|
3
|
-
*
|
|
4
|
-
* `
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* Marker export for tests and tooling; importing this module wires every
|
|
3
|
+
* `PopupMenu` in the document: opening from its trigger and from
|
|
4
|
+
* `openPopupMenu` / `openPopupMenuAt` / `closePopupMenu`, top-layer placement,
|
|
5
|
+
* keyboard navigation and typeahead, hover-opened submenus, the `kui-menu-select`
|
|
6
|
+
* choice event, and focus return. It also registers the help tag an
|
|
7
|
+
* icon-only trigger shows on hover or keyboard focus.
|
|
7
8
|
*/
|
|
8
9
|
declare const popupMenuElementsRegistered = true;
|
|
9
10
|
|
|
@@ -1,333 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import '
|
|
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';
|
|
1
|
+
import { installPopupMenus } from './chunk-C3RLKKFQ.js';
|
|
2
|
+
import { installHelpTags } from './chunk-SQ2Q3OQI.js';
|
|
7
3
|
|
|
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
4
|
|
|
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
5
|
|
|
323
6
|
// src/components/actions/popup-menu/register/popup-menu-register.ts
|
|
324
|
-
|
|
325
|
-
installPopupMenuLifecycle(WaDropdown.prototype);
|
|
326
|
-
installDropdownShowFocus(WaDropdown.prototype);
|
|
327
|
-
installPopupMenuSubmenuFocus(WaDropdownItem.prototype);
|
|
328
|
-
installPopupMenuSubmenuPlacement(WaDropdown.prototype);
|
|
329
|
-
installPopupMenuAccessibleName(WaDropdown.prototype);
|
|
330
|
-
installPopupMenuSubmenuName(WaDropdownItem.prototype);
|
|
7
|
+
installPopupMenus();
|
|
331
8
|
installHelpTags();
|
|
332
9
|
var popupMenuElementsRegistered = true;
|
|
333
10
|
|