@ds-mo/ui 12.8.0 → 13.0.0
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 +1 -0
- package/dist/.package-ready.json +1 -0
- package/dist/agent-patterns.json +124 -135
- package/dist/agent.json +260 -1104
- package/dist/angular/ds-bar-nav.d.ts +1 -1
- package/dist/angular/ds-bar-nav.js +3 -3
- package/dist/angular/ds-button-filled.d.ts +1 -1
- package/dist/angular/ds-button-filled.js +3 -3
- package/dist/angular/ds-card-data-viz.d.ts +18 -0
- package/dist/angular/{ds-card-data-viz-donut.js → ds-card-data-viz.js} +12 -12
- package/dist/angular/ds-card-overview.d.ts +1 -1
- package/dist/angular/ds-card-overview.js +3 -3
- package/dist/angular/ds-chart-bar.d.ts +1 -1
- package/dist/angular/ds-chart-bar.js +3 -3
- package/dist/angular/ds-menu.d.ts +1 -7
- package/dist/angular/ds-menu.js +2 -5
- package/dist/angular/ds-mobile-header.d.ts +1 -1
- package/dist/angular/ds-mobile-header.js +3 -3
- package/dist/angular/ds-mobile-section-switcher.d.ts +1 -1
- package/dist/angular/ds-mobile-section-switcher.js +3 -3
- package/dist/angular/ds-panel-tools.d.ts +1 -1
- package/dist/angular/ds-panel-tools.js +3 -3
- package/dist/angular/ds-select.d.ts +5 -4
- package/dist/angular/ds-select.js +3 -3
- package/dist/angular/ds-shell-app.d.ts +90 -1
- package/dist/angular/ds-shell-app.js +44 -4
- package/dist/angular/ds-shell-tools.d.ts +1 -1
- package/dist/angular/ds-shell-tools.js +3 -3
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +1 -8
- package/dist/angular/proxies.d.ts +1 -8
- package/dist/angular/proxies.js +1 -8
- package/dist/components/ds-agent-activity.js +1 -1
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-agent-source-list.js +1 -1
- package/dist/components/ds-agent-tool-call.js +1 -1
- package/dist/components/ds-attachment-list.js +1 -1
- package/dist/components/ds-badge.js +1 -1
- package/dist/components/ds-bar-nav.js +1 -1
- package/dist/components/ds-bar-nav.js.map +1 -1
- package/dist/components/ds-bar-title.js +1 -1
- package/dist/components/ds-bar-title.js.map +1 -1
- package/dist/components/ds-bar-workflow.js +1 -1
- package/dist/components/ds-breadcrumb.js +1 -1
- package/dist/components/ds-button-filled.js +1 -1
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/{ds-select-multi.d.ts → ds-card-data-viz.d.ts} +4 -4
- package/dist/components/ds-card-data-viz.js +2 -0
- package/dist/components/ds-card-data-viz.js.map +1 -0
- package/dist/components/ds-card-overview.js +1 -1
- package/dist/components/ds-card-overview.js.map +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-chart-bar.js +1 -1
- package/dist/components/ds-chart-bar.js.map +1 -1
- package/dist/components/ds-chart-donut.js +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart-legend.js.map +1 -1
- package/dist/components/ds-chart-line.js +1 -1
- package/dist/components/ds-chart-line.js.map +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-code-block.js +1 -1
- package/dist/components/ds-conversation-list-item.js +1 -1
- package/dist/components/ds-conversation-list-item.js.map +1 -1
- package/dist/components/ds-conversation-list-section.js +1 -1
- package/dist/components/ds-conversation-list.js +1 -1
- package/dist/components/ds-divider.js +1 -1
- package/dist/components/ds-empty-state.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-input.js.map +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-bubble.js +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-composer.js.map +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-message.js +1 -1
- package/dist/components/ds-mobile-bar-nav.js +1 -1
- package/dist/components/ds-mobile-bar-nav.js.map +1 -1
- package/dist/components/ds-mobile-header.js +1 -1
- package/dist/components/ds-mobile-section-switcher.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js +1 -1
- package/dist/components/ds-mobile-sheet-nav.js.map +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-nav.js.map +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-radio.js +1 -1
- package/dist/components/ds-radio.js.map +1 -1
- package/dist/components/ds-scroll-overlay.js +1 -1
- package/dist/components/ds-select.js +1 -1
- package/dist/components/ds-select.js.map +1 -1
- package/dist/components/ds-shell-app.js +1 -1
- package/dist/components/ds-shell-app.js.map +1 -1
- package/dist/components/ds-shell-page.js +1 -1
- package/dist/components/ds-shell-page.js.map +1 -1
- package/dist/components/ds-shell-tools.js +1 -1
- package/dist/components/ds-shell-tools.js.map +1 -1
- package/dist/components/ds-skeleton.js +1 -1
- package/dist/components/ds-slider.js +1 -1
- package/dist/components/ds-slider.js.map +1 -1
- package/dist/components/ds-swatch-picker.js +1 -1
- package/dist/components/ds-switch.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-tooltip-data-viz.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.js +1 -1
- package/dist/components/{p-DB9XJm2c.js → p-6qXDqCj_.js} +2 -2
- package/dist/components/{p-CPwpgUWT.js → p-Ay1AX7Ql.js} +2 -2
- package/dist/components/p-Ay1AX7Ql.js.map +1 -0
- package/dist/components/p-B-qDb_Zo.js +2 -0
- package/dist/components/p-B-qDb_Zo.js.map +1 -0
- package/dist/components/{p-DhLmoCe_.js → p-B1cbQ0SG.js} +2 -2
- package/dist/components/p-BBxcMVqk.js +2 -0
- package/dist/components/p-BBxcMVqk.js.map +1 -0
- package/dist/components/{p-BKOlvCGS.js → p-BUZXuod2.js} +2 -2
- package/dist/components/{p-Utr23NC-.js → p-BaUsq_VK.js} +2 -2
- package/dist/components/p-BbMJTilO.js +2 -0
- package/dist/components/p-BbMJTilO.js.map +1 -0
- package/dist/components/{p-BO5aqZcf.js → p-BcTYhmku.js} +2 -2
- package/dist/components/p-Bkv3UjZz.js +2 -0
- package/dist/components/p-Bkv3UjZz.js.map +1 -0
- package/dist/components/p-BnQXAbif.js +2 -0
- package/dist/components/p-BnQXAbif.js.map +1 -0
- package/dist/components/p-BnbbnuVC.js +2 -0
- package/dist/components/p-BnbbnuVC.js.map +1 -0
- package/dist/components/{p-BlHzmszE.js → p-BroVnDzE.js} +2 -2
- package/dist/components/{p-BFRMwl93.js → p-BsoqsbBh.js} +2 -2
- package/dist/components/p-BwT6B5Fi.js +2 -0
- package/dist/components/p-BwT6B5Fi.js.map +1 -0
- package/dist/components/p-BybqPD8K.js +2 -0
- package/dist/components/p-BybqPD8K.js.map +1 -0
- package/dist/components/p-C-vRkDyn.js +2 -0
- package/dist/components/p-C-vRkDyn.js.map +1 -0
- package/dist/components/p-C3ArcO50.js +2 -0
- package/dist/components/p-C3ArcO50.js.map +1 -0
- package/dist/components/p-C4uYvyq6.js +2 -0
- package/dist/components/p-C4uYvyq6.js.map +1 -0
- package/dist/components/{p-ukB-dPOK.js → p-CBazaRlE.js} +2 -2
- package/dist/components/{p-CNgPwd11.js → p-CHuh71-U.js} +2 -2
- package/dist/components/{p-D9u1_OEZ.js → p-CMWata9g.js} +2 -2
- package/dist/components/p-CS6CHlHK.js +2 -0
- package/dist/components/p-CS6CHlHK.js.map +1 -0
- package/dist/components/p-CTTnM7cE.js +2 -0
- package/dist/components/p-CTTnM7cE.js.map +1 -0
- package/dist/components/{p-CsX3ICz7.js → p-CWoXKe_h.js} +2 -2
- package/dist/components/p-CWoXKe_h.js.map +1 -0
- package/dist/components/p-CwwuSGER.js +2 -0
- package/dist/components/p-CwwuSGER.js.map +1 -0
- package/dist/components/p-D09HINr_.js +2 -0
- package/dist/components/p-D09HINr_.js.map +1 -0
- package/dist/components/p-D2xWcVv6.js +2 -0
- package/dist/components/p-D2xWcVv6.js.map +1 -0
- package/dist/components/p-DAW6G8Sl.js +2 -0
- package/dist/components/p-DAW6G8Sl.js.map +1 -0
- package/dist/components/p-DEaszb15.js +2 -0
- package/dist/components/p-DEaszb15.js.map +1 -0
- package/dist/components/{p-BgGP65Nn.js → p-DOUk4KoT.js} +1 -1
- package/dist/components/p-DOUk4KoT.js.map +1 -0
- package/dist/components/p-DbQr7Kwr.js +2 -0
- package/dist/components/p-DbQr7Kwr.js.map +1 -0
- package/dist/components/p-DdvEZyX4.js +2 -0
- package/dist/components/p-DdvEZyX4.js.map +1 -0
- package/dist/components/{p-38PfdMkF.js → p-DeQwkbT1.js} +2 -2
- package/dist/components/{p-Vdufoj7G.js → p-Df17mJqI.js} +2 -2
- package/dist/components/p-Dg1LBXJ2.js +2 -0
- package/dist/components/p-Dg1LBXJ2.js.map +1 -0
- package/dist/components/p-DsiCDzoF.js +2 -0
- package/dist/components/p-DsiCDzoF.js.map +1 -0
- package/dist/components/p-_DzUXA86.js +2 -0
- package/dist/components/p-_DzUXA86.js.map +1 -0
- package/dist/components/p-lyZNvRvO.js +2 -0
- package/dist/components/p-lyZNvRvO.js.map +1 -0
- package/dist/components/{p-69lHhJiX.js → p-ohsLFap_.js} +2 -2
- package/dist/components/{p-DjbTFy2B.js → p-ymtdhOU5.js} +1 -1
- package/dist/components/p-ymtdhOU5.js.map +1 -0
- package/dist/components/p-z5RIrXuX.js +2 -0
- package/dist/components/p-z5RIrXuX.js.map +1 -0
- package/dist/docs/components.json +1006 -2356
- package/dist/framework/angular.d.ts +0 -1
- package/dist/framework/angular.js +0 -1
- package/dist/lib/components/BarTitle/bar-title-types.d.ts +28 -0
- package/dist/lib/components/Breadcrumb/breadcrumb-types.d.ts +16 -0
- package/dist/lib/components/ButtonFilled/ButtonFilled.d.ts +83 -0
- package/dist/lib/components/MobileHeader/mobile-header-types.d.ts +4 -0
- package/dist/lib/components/PanelTools/panel-tools-types.d.ts +21 -7
- package/dist/lib/components/ShellApp/shell-app-types.d.ts +91 -0
- package/dist/lib/shell/index.d.ts +5 -13
- package/dist/lib/shell/index.js +87 -358
- package/dist/lib/shell/index.js.map +3 -3
- package/dist/lib/shell/shell-responsive.d.ts +2 -1
- package/dist/lib/utils/button-render.d.ts +17 -0
- package/dist/lib/utils/button-types.d.ts +10 -0
- package/dist/lib/utils/choice-list.d.ts +25 -0
- package/dist/lib/utils/control-press.d.ts +8 -0
- package/dist/lib/utils/form-association.d.ts +22 -0
- package/dist/lib/utils/index.d.ts +4 -0
- package/dist/lib/utils/index.js +63 -0
- package/dist/lib/utils/index.js.map +3 -3
- package/dist/lib/utils/required-validity.d.ts +1 -1
- package/dist/lib/utils/safe-url.d.ts +11 -0
- package/dist/mcp/cli.js +38 -10
- package/dist/mcp-data/registry/agent-source-list.json +1 -1
- package/dist/mcp-data/registry/attachment-list.json +1 -1
- package/dist/mcp-data/registry/bar-nav.json +3 -21
- package/dist/mcp-data/registry/breadcrumb.json +1 -1
- package/dist/mcp-data/registry/button-filled.json +4 -19
- package/dist/mcp-data/registry/button-unfilled.json +14 -11
- package/dist/mcp-data/registry/card-data-viz.json +241 -0
- package/dist/mcp-data/registry/card-overview.json +87 -16
- package/dist/mcp-data/registry/card-setting.json +2 -2
- package/dist/mcp-data/registry/chart-bar.json +66 -18
- package/dist/mcp-data/registry/chart-donut.json +5 -5
- package/dist/mcp-data/registry/chart-legend.json +7 -9
- package/dist/mcp-data/registry/chart-line.json +1 -2
- package/dist/mcp-data/registry/checkbox.json +2 -2
- package/dist/mcp-data/registry/conversation-list-item.json +1 -1
- package/dist/mcp-data/registry/field.json +2 -3
- package/dist/mcp-data/registry/input.json +1 -1
- package/dist/mcp-data/registry/markdown.json +1 -1
- package/dist/mcp-data/registry/menu.json +10 -21
- package/dist/mcp-data/registry/mobile-bar-nav.json +1 -1
- package/dist/mcp-data/registry/mobile-header.json +1 -37
- package/dist/mcp-data/registry/mobile-section-switcher.json +1 -19
- package/dist/mcp-data/registry/panel-nav.json +2 -2
- package/dist/mcp-data/registry/panel-tool-search.json +1 -1
- package/dist/mcp-data/registry/panel-tools.json +19 -55
- package/dist/mcp-data/registry/radio.json +1 -1
- package/dist/mcp-data/registry/registry.json +309 -1174
- package/dist/mcp-data/registry/select.json +59 -25
- package/dist/mcp-data/registry/shell-app.json +345 -20
- package/dist/mcp-data/registry/shell-page.json +1 -1
- package/dist/mcp-data/registry/shell-tools.json +12 -43
- package/dist/mcp-data/registry/slider.json +1 -1
- package/dist/mcp-data/registry/switch.json +1 -1
- package/dist/mcp-data/registry/text.json +2 -2
- package/dist/react/components.d.ts +1 -8
- package/dist/react/components.js +1 -8
- package/dist/react/ds-card-data-viz.d.ts +12 -0
- package/dist/react/ds-card-data-viz.js +12 -0
- package/dist/react/ds-menu.d.ts +1 -2
- package/dist/react/ds-menu.js +0 -1
- package/dist/react/ds-select.d.ts +2 -2
- package/dist/react/ds-shell-app.d.ts +24 -1
- package/dist/react/ds-shell-app.js +16 -1
- package/dist/types/components/AgentSourceList/AgentSourceList.d.ts +0 -1
- package/dist/types/components/BarNav/BarNav.d.ts +0 -2
- package/dist/types/components/BarNav/bar-nav-utils.d.ts +2 -4
- package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +5 -11
- package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +13 -10
- package/dist/types/components/CardDataViz/CardDataViz.d.ts +32 -0
- package/dist/types/components/CardDataViz/index.d.ts +2 -0
- package/dist/types/components/CardOverview/CardOverview.d.ts +25 -3
- package/dist/types/components/CardOverview/card-overview-controller.d.ts +16 -0
- package/dist/types/components/CardOverview/card-overview-types.d.ts +2 -0
- package/dist/types/components/CardOverview/index.d.ts +1 -1
- package/dist/types/components/ChartBar/ChartBar.d.ts +12 -1
- package/dist/types/components/ChartBar/index.d.ts +2 -1
- package/dist/types/components/Menu/Menu.d.ts +0 -5
- package/dist/types/components/Menu/menu-sections.d.ts +4 -0
- package/dist/types/components/Menu/menu-types.d.ts +2 -11
- package/dist/types/components/MobileHeader/MobileHeader.d.ts +0 -5
- package/dist/types/components/MobileSectionSwitcher/MobileSectionSwitcher.d.ts +0 -2
- package/dist/types/components/PanelTools/PanelTools.d.ts +0 -4
- package/dist/types/components/PanelTools/index.d.ts +1 -1
- package/dist/types/components/PanelTools/panel-tools-types.d.ts +21 -7
- package/dist/types/components/PanelTools/panel-tools-utils.d.ts +1 -1
- package/dist/types/components/Select/Select.d.ts +12 -4
- package/dist/types/components/Select/index.d.ts +1 -1
- package/dist/types/components/ShellApp/ShellApp.d.ts +98 -0
- package/dist/types/components/ShellApp/shell-app-types.d.ts +92 -0
- package/dist/types/components/ShellPage/ShellPage.d.ts +5 -0
- package/dist/types/components/ShellTools/ShellTools.d.ts +2 -2
- package/dist/types/components.d.ts +238 -895
- package/dist/types/shell/index.d.ts +5 -13
- package/dist/types/shell/shell-responsive.d.ts +2 -1
- package/dist/types/utils/anchored-position-controller.d.ts +9 -0
- package/dist/types/utils/button-render.d.ts +18 -0
- package/dist/types/utils/button-story-foundation.d.ts +9 -0
- package/dist/types/utils/button-types.d.ts +11 -0
- package/dist/types/utils/form-association.d.ts +23 -0
- package/dist/types/utils/index.d.ts +4 -0
- package/dist/types/utils/required-validity.d.ts +1 -1
- package/dist/types/utils/safe-url.d.ts +12 -0
- package/dist/types/utils/select-controller.d.ts +1 -1
- package/package.json +16 -8
- package/dist/.build-stamp +0 -1
- package/dist/angular/ds-card-data-viz-bar.d.ts +0 -18
- package/dist/angular/ds-card-data-viz-bar.js +0 -42
- package/dist/angular/ds-card-data-viz-donut.d.ts +0 -18
- package/dist/angular/ds-card-data-viz-line.d.ts +0 -18
- package/dist/angular/ds-card-data-viz-line.js +0 -42
- package/dist/angular/ds-card-shell-data-viz.d.ts +0 -12
- package/dist/angular/ds-card-shell-data-viz.js +0 -38
- package/dist/angular/ds-chart-bar-stacked.d.ts +0 -12
- package/dist/angular/ds-chart-bar-stacked.js +0 -38
- package/dist/angular/ds-select-multi.d.ts +0 -28
- package/dist/angular/ds-select-multi.js +0 -49
- package/dist/angular/ds-shell-gradient-picker.d.ts +0 -16
- package/dist/angular/ds-shell-gradient-picker.js +0 -42
- package/dist/angular/ds-shell-gradient-swatch.d.ts +0 -16
- package/dist/angular/ds-shell-gradient-swatch.js +0 -42
- package/dist/components/ds-card-data-viz-bar.d.ts +0 -11
- package/dist/components/ds-card-data-viz-bar.js +0 -2
- package/dist/components/ds-card-data-viz-bar.js.map +0 -1
- package/dist/components/ds-card-data-viz-donut.d.ts +0 -11
- package/dist/components/ds-card-data-viz-donut.js +0 -2
- package/dist/components/ds-card-data-viz-donut.js.map +0 -1
- package/dist/components/ds-card-data-viz-line.d.ts +0 -11
- package/dist/components/ds-card-data-viz-line.js +0 -2
- package/dist/components/ds-card-data-viz-line.js.map +0 -1
- package/dist/components/ds-card-shell-data-viz.d.ts +0 -11
- package/dist/components/ds-card-shell-data-viz.js +0 -2
- package/dist/components/ds-card-shell-data-viz.js.map +0 -1
- package/dist/components/ds-chart-bar-stacked.d.ts +0 -11
- package/dist/components/ds-chart-bar-stacked.js +0 -2
- package/dist/components/ds-chart-bar-stacked.js.map +0 -1
- package/dist/components/ds-select-multi.js +0 -2
- package/dist/components/ds-select-multi.js.map +0 -1
- package/dist/components/ds-shell-gradient-picker.d.ts +0 -11
- package/dist/components/ds-shell-gradient-picker.js +0 -2
- package/dist/components/ds-shell-gradient-picker.js.map +0 -1
- package/dist/components/ds-shell-gradient-swatch.d.ts +0 -11
- package/dist/components/ds-shell-gradient-swatch.js +0 -2
- package/dist/components/ds-shell-gradient-swatch.js.map +0 -1
- package/dist/components/p-2foAUsDN.js +0 -2
- package/dist/components/p-2foAUsDN.js.map +0 -1
- package/dist/components/p-B6NvVdeO.js +0 -2
- package/dist/components/p-B6NvVdeO.js.map +0 -1
- package/dist/components/p-B6vE3ujd.js +0 -2
- package/dist/components/p-B6vE3ujd.js.map +0 -1
- package/dist/components/p-BBePKRHC.js +0 -2
- package/dist/components/p-BBePKRHC.js.map +0 -1
- package/dist/components/p-BOQnc-M4.js +0 -2
- package/dist/components/p-BOQnc-M4.js.map +0 -1
- package/dist/components/p-BXaieghV.js +0 -2
- package/dist/components/p-BXaieghV.js.map +0 -1
- package/dist/components/p-BgGP65Nn.js.map +0 -1
- package/dist/components/p-BrusnEYP.js +0 -2
- package/dist/components/p-BrusnEYP.js.map +0 -1
- package/dist/components/p-By_s1wNN.js +0 -2
- package/dist/components/p-By_s1wNN.js.map +0 -1
- package/dist/components/p-C61yJkfr.js +0 -2
- package/dist/components/p-C61yJkfr.js.map +0 -1
- package/dist/components/p-CH3w-P2H.js +0 -2
- package/dist/components/p-CH3w-P2H.js.map +0 -1
- package/dist/components/p-CNjOyUQu.js +0 -2
- package/dist/components/p-CNjOyUQu.js.map +0 -1
- package/dist/components/p-CPwpgUWT.js.map +0 -1
- package/dist/components/p-CU2673IJ.js +0 -2
- package/dist/components/p-CU2673IJ.js.map +0 -1
- package/dist/components/p-CsX3ICz7.js.map +0 -1
- package/dist/components/p-D0e77tkd.js +0 -2
- package/dist/components/p-D0e77tkd.js.map +0 -1
- package/dist/components/p-D1HFMTdC.js +0 -2
- package/dist/components/p-D1HFMTdC.js.map +0 -1
- package/dist/components/p-D1bNvIpb.js +0 -2
- package/dist/components/p-D1bNvIpb.js.map +0 -1
- package/dist/components/p-D2x17ei-.js +0 -2
- package/dist/components/p-D2x17ei-.js.map +0 -1
- package/dist/components/p-DIFUsoM-.js +0 -2
- package/dist/components/p-DIFUsoM-.js.map +0 -1
- package/dist/components/p-DjbTFy2B.js.map +0 -1
- package/dist/components/p-DmAHufd5.js +0 -2
- package/dist/components/p-DmAHufd5.js.map +0 -1
- package/dist/components/p-DzM3SzPz.js +0 -2
- package/dist/components/p-DzM3SzPz.js.map +0 -1
- package/dist/components/p-G3qIxpQj.js +0 -2
- package/dist/components/p-G3qIxpQj.js.map +0 -1
- package/dist/components/p-Re2kPrXm.js +0 -2
- package/dist/components/p-Re2kPrXm.js.map +0 -1
- package/dist/components/p-huw1oRbt.js +0 -2
- package/dist/components/p-huw1oRbt.js.map +0 -1
- package/dist/framework/select-multi-value-accessor.d.ts +0 -9
- package/dist/framework/select-multi-value-accessor.js +0 -40
- package/dist/lib/shell/badge-gradient-ring.d.ts +0 -27
- package/dist/lib/shell/chrome-transition.d.ts +0 -32
- package/dist/lib/shell/shell-chrome-metrics.d.ts +0 -11
- package/dist/lib/shell/shell-gradient.d.ts +0 -41
- package/dist/lib/shell/shell-view-transition.d.ts +0 -23
- package/dist/mcp-data/registry/card-data-viz-bar.json +0 -213
- package/dist/mcp-data/registry/card-data-viz-donut.json +0 -214
- package/dist/mcp-data/registry/card-data-viz-line.json +0 -207
- package/dist/mcp-data/registry/card-shell-data-viz.json +0 -180
- package/dist/mcp-data/registry/chart-bar-stacked.json +0 -230
- package/dist/mcp-data/registry/select-multi.json +0 -758
- package/dist/mcp-data/registry/shell-gradient-picker.json +0 -195
- package/dist/mcp-data/registry/shell-gradient-swatch.json +0 -215
- package/dist/react/ds-card-data-viz-bar.d.ts +0 -12
- package/dist/react/ds-card-data-viz-bar.js +0 -12
- package/dist/react/ds-card-data-viz-donut.d.ts +0 -12
- package/dist/react/ds-card-data-viz-donut.js +0 -12
- package/dist/react/ds-card-data-viz-line.d.ts +0 -12
- package/dist/react/ds-card-data-viz-line.js +0 -12
- package/dist/react/ds-card-shell-data-viz.d.ts +0 -9
- package/dist/react/ds-card-shell-data-viz.js +0 -12
- package/dist/react/ds-chart-bar-stacked.d.ts +0 -9
- package/dist/react/ds-chart-bar-stacked.js +0 -12
- package/dist/react/ds-select-multi.d.ts +0 -14
- package/dist/react/ds-select-multi.js +0 -16
- package/dist/react/ds-shell-gradient-picker.d.ts +0 -12
- package/dist/react/ds-shell-gradient-picker.js +0 -12
- package/dist/react/ds-shell-gradient-swatch.d.ts +0 -12
- package/dist/react/ds-shell-gradient-swatch.js +0 -12
- package/dist/types/components/CardDataVizBar/CardDataVizBar.d.ts +0 -24
- package/dist/types/components/CardDataVizBar/index.d.ts +0 -2
- package/dist/types/components/CardDataVizDonut/CardDataVizDonut.d.ts +0 -28
- package/dist/types/components/CardDataVizDonut/index.d.ts +0 -2
- package/dist/types/components/CardDataVizLine/CardDataVizLine.d.ts +0 -24
- package/dist/types/components/CardDataVizLine/index.d.ts +0 -2
- package/dist/types/components/CardShellDataViz/CardShellDataViz.d.ts +0 -13
- package/dist/types/components/CardShellDataViz/index.d.ts +0 -2
- package/dist/types/components/ChartBarStacked/ChartBarStacked.d.ts +0 -26
- package/dist/types/components/ChartBarStacked/index.d.ts +0 -3
- package/dist/types/components/SelectMulti/SelectMulti.d.ts +0 -121
- package/dist/types/components/SelectMulti/index.d.ts +0 -2
- package/dist/types/components/ShellGradientPicker/ShellGradientPicker.d.ts +0 -12
- package/dist/types/components/ShellGradientSwatch/ShellGradientSwatch.d.ts +0 -15
- package/dist/types/components/ShellGradientSwatch/shell-gradient-swatch-types.d.ts +0 -4
- /package/dist/components/{p-DB9XJm2c.js.map → p-6qXDqCj_.js.map} +0 -0
- /package/dist/components/{p-DhLmoCe_.js.map → p-B1cbQ0SG.js.map} +0 -0
- /package/dist/components/{p-BKOlvCGS.js.map → p-BUZXuod2.js.map} +0 -0
- /package/dist/components/{p-Utr23NC-.js.map → p-BaUsq_VK.js.map} +0 -0
- /package/dist/components/{p-BO5aqZcf.js.map → p-BcTYhmku.js.map} +0 -0
- /package/dist/components/{p-BlHzmszE.js.map → p-BroVnDzE.js.map} +0 -0
- /package/dist/components/{p-BFRMwl93.js.map → p-BsoqsbBh.js.map} +0 -0
- /package/dist/components/{p-ukB-dPOK.js.map → p-CBazaRlE.js.map} +0 -0
- /package/dist/components/{p-CNgPwd11.js.map → p-CHuh71-U.js.map} +0 -0
- /package/dist/components/{p-D9u1_OEZ.js.map → p-CMWata9g.js.map} +0 -0
- /package/dist/components/{p-38PfdMkF.js.map → p-DeQwkbT1.js.map} +0 -0
- /package/dist/components/{p-Vdufoj7G.js.map → p-Df17mJqI.js.map} +0 -0
- /package/dist/components/{p-69lHhJiX.js.map → p-ohsLFap_.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["textVariantClass","variant","replace","textDisplayClass","element","textCss","Text","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","emphasis","color","italic","shimmer","lineTruncation","fontFeature","as","render","Tag","isCustomColor","c","startsWith","truncationLines","Number","cls","wrap","decoration","align","style","undefined","extraProps","for","textId","h","Host","key","class"],"sources":["src/wc/components/Text/text-utils.ts","src/wc/components/Text/Text.css?tag=ds-text&encapsulation=scoped","src/wc/components/Text/Text.tsx"],"sourcesContent":["import type { TextElement, TextVariant } from './text-types';\n\n/** `text-body-medium` → `ds-text--body-medium` */\nexport function textVariantClass(variant: TextVariant): string {\n return `ds-text--${variant.replace(/^text-/, '')}`;\n}\n\n/** Inline semantics get a measurable inline box; paragraphs/headings get a block box. */\nexport function textDisplayClass(element: TextElement): string {\n return element === 'span' || element === 'label'\n ? 'ds-text--inline-box'\n : 'ds-text--block-box';\n}\n","@import '../../utils/typography.css';\n@import '../../utils/shimmer.css';\n\n:host {\n box-sizing: border-box;\n max-width: 100%;\n min-width: 0;\n margin: 0;\n padding: 0;\n border: 0;\n font-family: var(--typography-font-family);\n}\n\n:host(:where(.ds-text--inline-box)) {\n display: inline-block;\n}\n\n:host(:where(.ds-text--block-box)) {\n display: block;\n width: 100%;\n}\n\n/*\n * The host is the measurable typography box. The semantic inner element fills\n * it and inherits every text metric without adding margins, padding, or its own\n * line-height strut. One rendered line therefore measures exactly one token\n * line-height; N lines measure N × that token.\n */\n.ds-text__element {\n display: block;\n box-sizing: border-box;\n width: 100%;\n min-width: 0;\n margin: 0;\n padding: 0;\n border: 0;\n font: inherit;\n line-height: inherit;\n letter-spacing: inherit;\n color: inherit;\n text-transform: inherit;\n text-align: inherit;\n text-decoration: inherit;\n font-style: inherit;\n font-variant-numeric: inherit;\n font-feature-settings: inherit;\n -webkit-user-select: inherit;\n user-select: inherit;\n white-space: inherit;\n text-wrap: inherit;\n overflow-wrap: inherit;\n word-break: inherit;\n /* Consumer truncation on the host (PanelNav, ChartLegend, …) must reach the\n text node — overflow/text-overflow are not inherited by default. */\n overflow: inherit;\n text-overflow: inherit;\n}\n\n/* ── Truncation ─────────────────────────────────────────────────────────── */\n\n:host(.ds-text--truncate-1) {\n overflow: hidden;\n}\n\n:host(.ds-text--truncate-1) .ds-text__element {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n:host(.ds-text--truncate-2),\n:host(.ds-text--truncate-3),\n:host(.ds-text--truncate-4),\n:host(.ds-text--truncate-5) {\n overflow: hidden;\n}\n\n:host(.ds-text--truncate-2) .ds-text__element,\n:host(.ds-text--truncate-3) .ds-text__element,\n:host(.ds-text--truncate-4) .ds-text__element,\n:host(.ds-text--truncate-5) .ds-text__element {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-word;\n}\n\n:host(.ds-text--truncate-2) .ds-text__element { -webkit-line-clamp: 2; }\n:host(.ds-text--truncate-3) .ds-text__element { -webkit-line-clamp: 3; }\n:host(.ds-text--truncate-4) .ds-text__element { -webkit-line-clamp: 4; }\n:host(.ds-text--truncate-5) .ds-text__element { -webkit-line-clamp: 5; }\n\n/* ── Wrap ───────────────────────────────────────────────────────────────── */\n\n:host(.ds-text--nowrap),\n:host(.ds-text--nowrap) .ds-text__element {\n white-space: nowrap;\n word-break: normal;\n overflow: hidden;\n text-overflow: ellipsis;\n min-width: 0;\n}\n\n:host(.ds-text--balance),\n:host(.ds-text--balance) .ds-text__element { text-wrap: balance; }\n\n:host(.ds-text--pretty),\n:host(.ds-text--pretty) .ds-text__element { text-wrap: pretty; }\n\n/* ── Color ──────────────────────────────────────────────────────────────── */\n\n:host(.ds-text--color-primary) { color: var(--color-foreground-primary); }\n:host(.ds-text--color-secondary) { color: var(--color-foreground-secondary); }\n:host(.ds-text--color-tertiary) { color: var(--color-foreground-tertiary); }\n:host(.ds-text--color-quaternary) { color: var(--color-foreground-quaternary); }\n:host(.ds-text--color-brand) { color: var(--color-foreground-bold-brand); }\n:host(.ds-text--color-negative) { color: var(--color-foreground-bold-negative); }\n:host(.ds-text--color-positive) { color: var(--color-foreground-bold-positive); }\n:host(.ds-text--color-warning) { color: var(--color-foreground-bold-warning); }\n:host(.ds-text--color-caution) { color: var(--color-foreground-bold-caution); }\n:host(.ds-text--color-ai) { color: var(--color-foreground-bold-ai); }\n:host(.ds-text--color-on-strong) { color: var(--color-foreground-on-strong-background-primary); }\n:host(.ds-text--color-on-bold) { color: var(--color-foreground-on-bold-background-primary); }\n:host(.ds-text--color-inherit) { color: inherit; }\n\n/* ── Decorations ─────────────────────────────────────────────────────────── */\n\n:host(.ds-text--decoration-underline) {\n text-decoration: underline;\n text-decoration-color: var(--color-foreground-tertiary);\n text-underline-offset: 2px;\n text-decoration-thickness: 1px;\n}\n\n:host(.ds-text--decoration-dotted-underline) {\n text-decoration: underline dotted;\n text-decoration-color: var(--color-foreground-tertiary);\n text-underline-offset: 2px;\n text-decoration-thickness: 1px;\n}\n\n/* ── Style ──────────────────────────────────────────────────────────────── */\n\n:host(.ds-text--italic) { font-style: italic; }\n\n:host(.ds-text--font-feature-tabular-nums) {\n font-variant-numeric: tabular-nums;\n font-feature-settings: 'tnum';\n}\n\n/* ── Align ──────────────────────────────────────────────────────────────── */\n\n:host(.ds-text--align-left) { text-align: left; }\n:host(.ds-text--align-center) { text-align: center; }\n:host(.ds-text--align-right) { text-align: right; }\n","import { Component, Prop, h, Host } from '@stencil/core';\nimport { textDisplayClass, textVariantClass } from './text-utils';\nimport type {\n TextAlign,\n TextColor,\n TextDecoration,\n TextElement,\n TextFontFeature,\n TextVariant,\n LineTruncation,\n TextWrap,\n} from './text-types';\n\n@Component({\n tag: 'ds-text',\n styleUrl: 'Text.css',\n scoped: true,\n})\nexport class Text {\n @Prop() variant: TextVariant = 'text-body-medium';\n /**\n * Heavier weight + tighter letter-spacing for the variant.\n * `false` (default): one step below emphasis (display semibold, title/body\n * medium, caption medium).\n * `true`: display bold, title/caption semibold, body medium.\n */\n @Prop() emphasis: boolean = false;\n /**\n * Semantic foreground color token or CSS variable. `tertiary` and the\n * still-fainter `quaternary` are restricted to genuinely inactive/disabled\n * UI content or purely decorative content; prefer the owning control's\n * inactive state whenever one exists.\n */\n @Prop() color: TextColor = 'inherit';\n /** Link underline or dotted hidden-interaction affordance; does not add semantics. */\n @Prop() decoration: TextDecoration | undefined;\n @Prop() italic: boolean = false;\n /** Animate the visible glyphs with the shared loading shimmer treatment. */\n @Prop() shimmer: boolean = false;\n @Prop() align: TextAlign | undefined;\n @Prop() lineTruncation: LineTruncation = 'none';\n @Prop() wrap: TextWrap | undefined;\n @Prop() fontFeature: TextFontFeature = 'normal';\n @Prop() as: TextElement = 'p';\n /** Maps to `for` attribute on <label> elements. */\n @Prop() for: string | undefined;\n /** Forwarded to the inner element (e.g. aria-labelledby targets). */\n @Prop() textId: string | undefined;\n\n render() {\n // Polymorphic element: TSX treats a variable tag as a component, so a\n // dynamic intrinsic element name must be cast to `any` to render.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const Tag = this.as as any;\n const isCustomColor = (c: TextColor) => typeof c === 'string' && c.startsWith('var(--');\n const truncationLines = Number(this.lineTruncation);\n\n const cls: Record<string, boolean> = {\n 'ds-text': true,\n [textDisplayClass(this.as)]: true,\n [textVariantClass(this.variant)]: true,\n 'ds-text--emphasis': this.emphasis,\n 'ds-text--regular': !this.emphasis,\n 'ds-text--nowrap': this.wrap === 'nowrap',\n 'ds-text--balance': this.wrap === 'balance',\n 'ds-text--pretty': this.wrap === 'pretty',\n 'ds-text--truncate-1': truncationLines === 1 && this.wrap !== 'nowrap',\n 'ds-text--truncate-2': truncationLines === 2 && this.wrap !== 'nowrap',\n 'ds-text--truncate-3': truncationLines === 3 && this.wrap !== 'nowrap',\n 'ds-text--truncate-4': truncationLines === 4 && this.wrap !== 'nowrap',\n 'ds-text--truncate-5': truncationLines === 5 && this.wrap !== 'nowrap',\n 'ds-text--color-primary': this.color === 'primary',\n 'ds-text--color-secondary': this.color === 'secondary',\n 'ds-text--color-tertiary': this.color === 'tertiary',\n 'ds-text--color-quaternary': this.color === 'quaternary',\n 'ds-text--color-brand': this.color === 'brand',\n 'ds-text--color-negative': this.color === 'negative',\n 'ds-text--color-positive': this.color === 'positive',\n 'ds-text--color-warning': this.color === 'warning',\n 'ds-text--color-caution': this.color === 'caution',\n 'ds-text--color-ai': this.color === 'ai',\n 'ds-text--color-on-strong': this.color === 'on-strong',\n 'ds-text--color-on-bold': this.color === 'on-bold',\n 'ds-text--color-inherit': this.color === 'inherit',\n 'ds-text--decoration-underline': this.decoration === 'underline',\n 'ds-text--decoration-dotted-underline': this.decoration === 'dotted-underline',\n 'ds-text--italic': this.italic,\n 'ds-text--align-left': this.align === 'left',\n 'ds-text--align-center': this.align === 'center',\n 'ds-text--align-right': this.align === 'right',\n 'ds-text--font-feature-tabular-nums': this.fontFeature === 'tabular-nums',\n };\n\n const style = this.color && isCustomColor(this.color)\n ? { color: this.color as string }\n : undefined;\n\n const extraProps: Record<string, string> = {};\n if (this.as === 'label' && this.for) extraProps['for'] = this.for;\n if (this.textId) extraProps['id'] = this.textId;\n\n return (\n <Host class={cls} style={style}>\n <Tag\n class={{\n 'ds-text__element': true,\n 'ds-shimmer-text': this.shimmer,\n }}\n {...extraProps}\n >\n <slot />\n </Tag>\n </Host>\n );\n }\n}\n"],"mappings":"2DAGM,SAAUA,EAAiBC,GAC/B,MAAO,YAAYA,EAAQC,QAAQ,SAAU,KAC/C,CAGM,SAAUC,EAAiBC,GAC/B,OAAOA,IAAY,QAAUA,IAAY,QACrC,sBACA,oBACN,CCZA,MAAMC,EAAU,IAAM,u3V,MCkBTC,EAAIC,EAAA,MAAAD,UAAAE,EALjB,WAAAC,CAAAC,G,4CAMUC,KAAAV,QAAuB,mBAOvBU,KAAAC,SAAoB,MAOpBD,KAAAE,MAAmB,UAGnBF,KAAAG,OAAkB,MAElBH,KAAAI,QAAmB,MAEnBJ,KAAAK,eAAiC,OAEjCL,KAAAM,YAA+B,SAC/BN,KAAAO,GAAkB,GAwE3B,CAlEC,MAAAC,GAIE,MAAMC,EAAMT,KAAKO,GACjB,MAAMG,EAAiBC,UAAwBA,IAAM,UAAYA,EAAEC,WAAW,UAC9E,MAAMC,EAAkBC,OAAOd,KAAKK,gBAEpC,MAAMU,EAA+B,CACnC,UAAW,KACX,CAACvB,EAAiBQ,KAAKO,KAAM,KAC7B,CAAClB,EAAiBW,KAAKV,UAAW,KAClC,oBAAqBU,KAAKC,SAC1B,oBAAqBD,KAAKC,SAC1B,kBAAmBD,KAAKgB,OAAS,SACjC,mBAAoBhB,KAAKgB,OAAS,UAClC,kBAAmBhB,KAAKgB,OAAS,SACjC,sBAAuBH,IAAoB,GAAKb,KAAKgB,OAAS,SAC9D,sBAAuBH,IAAoB,GAAKb,KAAKgB,OAAS,SAC9D,sBAAuBH,IAAoB,GAAKb,KAAKgB,OAAS,SAC9D,sBAAuBH,IAAoB,GAAKb,KAAKgB,OAAS,SAC9D,sBAAuBH,IAAoB,GAAKb,KAAKgB,OAAS,SAC9D,yBAA4BhB,KAAKE,QAAU,UAC3C,2BAA4BF,KAAKE,QAAU,YAC3C,0BAA4BF,KAAKE,QAAU,WAC3C,4BAA6BF,KAAKE,QAAU,aAC5C,uBAA4BF,KAAKE,QAAU,QAC3C,0BAA4BF,KAAKE,QAAU,WAC3C,0BAA4BF,KAAKE,QAAU,WAC3C,yBAA4BF,KAAKE,QAAU,UAC3C,yBAA4BF,KAAKE,QAAU,UAC3C,oBAA4BF,KAAKE,QAAU,KAC3C,2BAA4BF,KAAKE,QAAU,YAC3C,yBAA4BF,KAAKE,QAAU,UAC3C,yBAA4BF,KAAKE,QAAU,UAC3C,gCAAwCF,KAAKiB,aAAe,YAC5D,uCAAwCjB,KAAKiB,aAAe,mBAC5D,kBAAmBjB,KAAKG,OACxB,sBAAyBH,KAAKkB,QAAU,OACxC,wBAAyBlB,KAAKkB,QAAU,SACxC,uBAAyBlB,KAAKkB,QAAU,QACxC,qCAAsClB,KAAKM,cAAgB,gBAG7D,MAAMa,EAAQnB,KAAKE,OAASQ,EAAcV,KAAKE,OAC3C,CAAEA,MAAOF,KAAKE,OACdkB,UAEJ,MAAMC,EAAqC,GAC3C,GAAIrB,KAAKO,KAAO,SAAWP,KAAKsB,IAAKD,EAAW,OAASrB,KAAKsB,IAC9D,GAAItB,KAAKuB,OAAQF,EAAW,MAAQrB,KAAKuB,OAEzC,OACEC,EAACC,EAAI,CAAAC,IAAA,2CAACC,MAAOZ,EAAKI,MAAOA,GACvBK,EAACf,EAAG,CAAAiB,IAAA,2CACFC,MAAO,CACL,mBAAoB,KACpB,kBAAmB3B,KAAKI,YAEtBiB,GAEJG,EAAA,QAAAE,IAAA,8C","ignoreList":[]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as o,H as s,c as e,h as i,a as c,t as n}from"./index.js";import{d as t}from"./p-CPwpgUWT.js";import{D as r,s as d}from"./p-BgGP65Nn.js";import{C as a}from"./p-CuwopElg.js";const l=()=>`.ds-control-inactive.sc-ds-checkbox-h,.ds-control-inactive.sc-ds-checkbox{opacity:0.5;pointer-events:none;cursor:not-allowed}.ds-control--lg.sc-ds-checkbox,.ds-control--lg.sc-ds-checkbox-h,.ds-control--md.sc-ds-checkbox-h,.ds-control--md.sc-ds-checkbox,.ds-control--sm.sc-ds-checkbox-h,.ds-control--sm.sc-ds-checkbox,.ds-control--xs.sc-ds-checkbox-h,.ds-control--xs.sc-ds-checkbox{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-checkbox-h,.ds-control--lg.sc-ds-checkbox{--ds-control-height:var(--dimension-size-500);--ds-control-icon:var(--dimension-iconography-lg);--ds-control-padding-inline:var(--dimension-space-100);--ds-control-label-inset:var(--dimension-space-050);--ds-control-gap:var(--dimension-space-050)}.ds-control--md.sc-ds-checkbox-h,.ds-control--md.sc-ds-checkbox{--ds-control-height:var(--dimension-size-400);--ds-control-icon:var(--dimension-iconography-md);--ds-control-padding-inline:var(--dimension-space-075);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-050)}.ds-control--sm.sc-ds-checkbox-h,.ds-control--sm.sc-ds-checkbox{--ds-control-height:var(--dimension-size-300);--ds-control-icon:var(--dimension-iconography-sm);--ds-control-padding-inline:var(--dimension-space-050);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-025)}.ds-control--xs.sc-ds-checkbox-h,.ds-control--xs.sc-ds-checkbox{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}.sc-ds-checkbox-h{--ds-focus-ring-width:var(--dimension-stroke-width-025, 2px);--ds-focus-ring-offset:var(--dimension-space-025, 2px);--ds-focus-ring-color:var(--color-interaction-focus)}.ds-focus-ring.sc-ds-checkbox-h,.ds-focus-ring.sc-ds-checkbox,.ds-focus-ring-inset.sc-ds-checkbox-h,.ds-focus-ring-inset.sc-ds-checkbox{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-checkbox-h:focus-visible,.ds-focus-ring.sc-ds-checkbox:focus-visible{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring.ds-focus-ring--visible.sc-ds-checkbox-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-checkbox{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring-inset.sc-ds-checkbox-h:focus-visible,.ds-focus-ring-inset.sc-ds-checkbox:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-checkbox-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-checkbox:focus-visible::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-checkbox-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-checkbox{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-checkbox-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-checkbox::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-interaction-fill.sc-ds-checkbox-h,.ds-interaction-fill.sc-ds-checkbox{position:relative;z-index:0;cursor:default;--ds-interaction-hover:var(--color-interaction-hover);--ds-interaction-pressed:var(--color-interaction-pressed);--ds-interaction-active:var(--color-interaction-active-brand);--ds-interaction-border-width:0px;--ds-interaction-border-color:transparent}.ds-interaction-fill.sc-ds-checkbox-h::before,.ds-interaction-fill.sc-ds-checkbox::before,.ds-interaction-fill.sc-ds-checkbox-h::after,.ds-interaction-fill.sc-ds-checkbox::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-checkbox-h::before,.ds-interaction-fill.sc-ds-checkbox::before{z-index:1}.ds-interaction-fill.sc-ds-checkbox-h::after,.ds-interaction-fill.sc-ds-checkbox::after{z-index:3;box-shadow:inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-checkbox-h,.ds-interaction-fill--bordered.sc-ds-checkbox{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-checkbox-h::before,.ds-interaction-fill--selected.sc-ds-checkbox::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-checkbox-h,.ds-interaction-fill--selected.sc-ds-checkbox{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-checkbox-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-checkbox:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-checkbox-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-checkbox:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill.sc-ds-checkbox-h>.ds-interaction-fill__content.sc-ds-checkbox,.ds-interaction-fill.sc-ds-checkbox>.ds-interaction-fill__content.sc-ds-checkbox,.ds-interaction-fill__content.sc-ds-checkbox{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-checkbox-h,.ds-interaction-fill--on-faint.sc-ds-checkbox{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-checkbox-h,.ds-interaction-fill--on-medium.sc-ds-checkbox{--ds-interaction-hover:var(--color-interaction-on-medium-background-hover);--ds-interaction-pressed:var(--color-interaction-on-medium-background-pressed);--ds-interaction-active:var(--color-interaction-on-medium-background-active);--ds-focus-ring-color:var(--color-interaction-on-medium-background-focus)}.ds-interaction-fill--on-bold.sc-ds-checkbox-h,.ds-interaction-fill--on-bold.sc-ds-checkbox{--ds-interaction-hover:var(--color-interaction-on-bold-background-hover);--ds-interaction-pressed:var(--color-interaction-on-bold-background-pressed);--ds-interaction-active:var(--color-interaction-on-bold-background-active);--ds-focus-ring-color:var(--color-interaction-on-bold-background-focus)}.ds-interaction-fill--on-strong.sc-ds-checkbox-h,.ds-interaction-fill--on-strong.sc-ds-checkbox{--ds-interaction-hover:var(--color-interaction-on-strong-background-hover);--ds-interaction-pressed:var(--color-interaction-on-strong-background-pressed);--ds-interaction-active:var(--color-interaction-on-strong-background-active);--ds-focus-ring-color:var(--color-interaction-on-strong-background-focus)}.ds-interaction-fill--on-translucent.sc-ds-checkbox-h,.ds-interaction-fill--on-translucent.sc-ds-checkbox{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-checkbox-h,.ds-interaction-fill--on-inverted.sc-ds-checkbox{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-checkbox-h,.ds-interaction-fill--on-media.sc-ds-checkbox{--ds-interaction-hover:var(--color-media-interaction-hover);--ds-interaction-pressed:var(--color-media-interaction-pressed);--ds-interaction-active:var(--color-media-interaction-active);--ds-focus-ring-color:var(--color-media-interaction-focus)}.ds-interaction-fill--on-always-dark.sc-ds-checkbox-h,.ds-interaction-fill--on-always-dark.sc-ds-checkbox{--ds-interaction-hover:var(--color-always-dark-interaction-hover);--ds-interaction-pressed:var(--color-always-dark-interaction-pressed);--ds-interaction-active:var(--color-always-dark-interaction-active);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-checkbox-h,.ds-interaction-fill--on-navigation.sc-ds-checkbox{--ds-interaction-hover:var(--color-navigation-interaction-hover);--ds-interaction-pressed:var(--color-navigation-interaction-pressed);--ds-interaction-active:var(--color-navigation-interaction-active);--ds-focus-ring-color:var(--color-navigation-interaction-focus)}.sc-ds-checkbox-h{display:inline-flex;align-items:center;box-sizing:border-box;gap:var(--ds-control-gap);height:var(--ds-control-height);padding:0 var(--ds-control-padding-inline);border-radius:var(--ds-control-radius);cursor:default;user-select:none}.checkbox--presentation.sc-ds-checkbox-h{width:var(--ds-control-icon);height:var(--ds-control-icon);padding:0;gap:0;pointer-events:none}.checkbox--lg.sc-ds-checkbox-h{--_checkbox-box:var(--dimension-iconography-md);--_checkbox-stroke:var(--dimension-stroke-width-018)}.checkbox--md.sc-ds-checkbox-h{--_checkbox-box:var(--dimension-iconography-sm);--_checkbox-stroke:var(--dimension-stroke-width-015)}.checkbox--sm.sc-ds-checkbox-h{--_checkbox-box:var(--dimension-iconography-xs);--_checkbox-stroke:var(--dimension-stroke-width-012)}.checkbox--xs.sc-ds-checkbox-h{--_checkbox-box:var(--dimension-size-100);--_checkbox-stroke:calc(var(--dimension-stroke-width-base) * 3 / 32)}.checkbox__placement.sc-ds-checkbox{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon);height:var(--ds-control-icon)}.box.sc-ds-checkbox{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:var(--_checkbox-box);height:var(--_checkbox-box);border:0;border-radius:var(--dimension-radius-025);box-shadow:inset 0 0 0 var(--_checkbox-stroke) var(--color-foreground-tertiary);transition:background-color var(--effect-motion-short-2), box-shadow var(--effect-motion-short-2)}.box--marked.sc-ds-checkbox{color:var(--color-foreground-on-bold-background-primary);background-color:var(--color-background-bold-brand);box-shadow:none}.checkbox__mark.sc-ds-checkbox{width:100%;height:100%;flex-shrink:0;stroke:currentColor;stroke-width:var(--_checkbox-stroke);stroke-linecap:butt;stroke-linejoin:round}.checkbox__mark--checked.sc-ds-checkbox{transform:translateY(-0.5px)}.checkbox__label.sc-ds-checkbox{flex:1;min-width:0;padding:0 var(--ds-control-label-inset)}`;let h=0;const b=o(class o extends s{constructor(o){super();if(o!==false){this.__registerHost()}this.dsChange=e(this,"dsChange");this.internals=this.attachInternals();this.labelId=`ds-checkbox-label-${++h}`;this.checked=false;this.size="md";this.value="on";this.disabled=false;this.required=false;this.requiredMessage=r;this.indeterminate=false;this.isInactive=false;this.presentation=false;this.initialChecked=false;this.initialIndeterminate=false;this.formDisabled=false;this.handleActivate=()=>{if(this.isInactive||this.disabled||this.formDisabled||this.presentation)return;if(this.indeterminate)this.indeterminate=false;this.checked=!this.checked;this.dsChange.emit(this.checked)};this.handleKeyDown=o=>{if(o.key==="Enter"||o.key===" "){o.preventDefault();this.handleActivate()}}}componentWillLoad(){this.initialChecked=this.checked;this.initialIndeterminate=this.indeterminate;this.syncFormValue()}syncFormValue(){const o=this.isInactive||this.disabled||this.formDisabled||this.presentation;this.internals.setFormValue(!o&&this.checked?this.value:null);const s=this.required&&!o&&!this.checked;d(this.internals,s,this.requiredMessage)}formDisabledCallback(o){this.formDisabled=o;this.syncFormValue()}formResetCallback(){this.checked=this.initialChecked;this.indeterminate=this.initialIndeterminate}render(){const o=this.isInactive||this.disabled||this.formDisabled;const s=this.checked||this.indeterminate;const e=this.required&&!o&&!this.checked;return i(c,{key:"65bded534a9a6a7642191f01c5256a28400dd79d",role:this.presentation?undefined:"checkbox","aria-checked":this.presentation?undefined:this.indeterminate?"mixed":String(this.checked),"aria-disabled":!this.presentation&&o?"true":undefined,"aria-required":!this.presentation&&this.required?"true":undefined,"aria-invalid":!this.presentation&&e?"true":undefined,"aria-labelledby":this.presentation?undefined:this.labelId,"aria-hidden":this.presentation?"true":undefined,tabIndex:this.presentation||o?-1:0,class:{checkbox:true,"checkbox--presentation":this.presentation,[`checkbox--${this.size}`]:true,[`ds-control--${this.size}`]:true,"ds-control-inactive":o&&!this.presentation,"ds-focus-ring-inset":!this.presentation,"ds-interaction-fill":!o&&!this.presentation},onClick:this.presentation?undefined:this.handleActivate,onKeyDown:this.presentation?undefined:this.handleKeyDown},i("span",{key:"9bc51308774b3a5c2889c7a4485aced53f14511a",class:"checkbox__placement ds-interaction-fill__content","aria-hidden":"true"},i("span",{key:"ee4a23fcf9cf1ff2e6ac1918f205eb71b4871cf6",class:{box:true,"box--marked":s}},s&&i("svg",{key:"84fa69e3c42dd6320f52c599d29caf729bd5d1cc",class:{checkbox__mark:true,"checkbox__mark--checked":!this.indeterminate},viewBox:"0 0 16 16",fill:"none",focusable:"false"},i("path",{key:"e5eea9bd3d14a14968571fe6d917dbaa473bdb3a",d:this.indeterminate?"M4 8H12":"M3.5 8.25L6.75 11.5L12.5 4.75","vector-effect":"non-scaling-stroke"})))),!this.presentation&&i("ds-text",{key:"de35f7c434a6a2c3d704071292dbd6594ef96dbf",class:"checkbox__label ds-interaction-fill__content",as:"span",variant:a[this.size],textId:this.labelId},this.label))}static get formAssociated(){return true}static get watchers(){return{checked:[{syncFormValue:0}],value:[{syncFormValue:0}],disabled:[{syncFormValue:0}],isInactive:[{syncFormValue:0}],required:[{syncFormValue:0}],presentation:[{syncFormValue:0}]}}static get style(){return l()}},[66,"ds-checkbox",{label:[1],checked:[1028],size:[1],name:[513],value:[1],disabled:[516],required:[516],requiredMessage:[1,"required-message"],indeterminate:[1028],isInactive:[4,"is-inactive"],presentation:[4],formDisabled:[32]},undefined,{checked:[{syncFormValue:0}],value:[{syncFormValue:0}],disabled:[{syncFormValue:0}],isInactive:[{syncFormValue:0}],required:[{syncFormValue:0}],presentation:[{syncFormValue:0}]}]);function f(){if(typeof customElements==="undefined"){return}const o=["ds-checkbox","ds-text"];o.forEach((o=>{switch(o){case"ds-checkbox":if(!customElements.get(n(o))){customElements.define(n(o),b)}break;case"ds-text":if(!customElements.get(n(o))){t()}break}}))}f();export{b as C,f as d};
|
|
2
|
-
//# sourceMappingURL=p-CU2673IJ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["checkboxCss","idCounter","Checkbox","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","labelId","checked","size","value","disabled","required","requiredMessage","DEFAULT_REQUIRED_MESSAGE","indeterminate","isInactive","presentation","initialChecked","initialIndeterminate","formDisabled","handleActivate","dsChange","emit","handleKeyDown","e","key","preventDefault","componentWillLoad","syncFormValue","inactive","internals","setFormValue","missing","setRequiredValidity","formDisabledCallback","formResetCallback","render","isMarked","invalid","h","Host","role","undefined","String","tabIndex","class","checkbox","onClick","onKeyDown","box","checkbox__mark","viewBox","fill","focusable","d","as","variant","CONTROL_TEXT_VARIANT","textId","label"],"sources":["src/wc/components/Checkbox/Checkbox.css?tag=ds-checkbox&encapsulation=scoped","src/wc/components/Checkbox/Checkbox.tsx"],"sourcesContent":["@import '../../utils/control-inactive.css';\n@import '../../utils/control-density.css';\n@import '../../utils/focus-ring.css';\n@import '../../utils/interaction-fill.css';\n\n:host {\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n gap: var(--ds-control-gap);\n height: var(--ds-control-height);\n padding: 0 var(--ds-control-padding-inline);\n border-radius: var(--ds-control-radius);\n cursor: default;\n user-select: none;\n}\n\n:host(.checkbox--presentation) {\n width: var(--ds-control-icon);\n height: var(--ds-control-icon);\n padding: 0;\n gap: 0;\n pointer-events: none;\n}\n\n/* Inactive: `.ds-control-inactive` (50% opacity). */\n\n:host(.checkbox--lg) {\n --_checkbox-box: var(--dimension-iconography-md);\n --_checkbox-stroke: var(--dimension-stroke-width-018);\n}\n\n:host(.checkbox--md) {\n --_checkbox-box: var(--dimension-iconography-sm);\n --_checkbox-stroke: var(--dimension-stroke-width-015);\n}\n\n:host(.checkbox--sm) {\n --_checkbox-box: var(--dimension-iconography-xs);\n --_checkbox-stroke: var(--dimension-stroke-width-012);\n}\n\n:host(.checkbox--xs) {\n --_checkbox-box: var(--dimension-size-100);\n --_checkbox-stroke: calc(var(--dimension-stroke-width-base) * 3 / 32);\n}\n\n.checkbox__placement {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--ds-control-icon);\n height: var(--ds-control-icon);\n}\n\n.box {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--_checkbox-box);\n height: var(--_checkbox-box);\n border: 0;\n border-radius: var(--dimension-radius-025);\n box-shadow: inset 0 0 0 var(--_checkbox-stroke) var(--color-foreground-tertiary);\n transition:\n background-color var(--effect-motion-short-2),\n box-shadow var(--effect-motion-short-2);\n}\n\n.box--marked {\n color: var(--color-foreground-on-bold-background-primary);\n background-color: var(--color-background-bold-brand);\n box-shadow: none;\n}\n\n.checkbox__mark {\n width: 100%;\n height: 100%;\n flex-shrink: 0;\n stroke: currentColor;\n stroke-width: var(--_checkbox-stroke);\n stroke-linecap: butt;\n stroke-linejoin: round;\n}\n\n.checkbox__mark--checked {\n transform: translateY(-0.5px);\n}\n\n.checkbox__label {\n flex: 1;\n min-width: 0;\n padding: 0 var(--ds-control-label-inset);\n}\n","import { AttachInternals, Component, Prop, State, Event, EventEmitter, Watch, h, Host } from '@stencil/core';\nimport { CONTROL_TEXT_VARIANT, DEFAULT_REQUIRED_MESSAGE, setRequiredValidity } from '../../utils';\n\nexport type CheckboxSize = 'lg' | 'md' | 'sm' | 'xs';\n\nlet idCounter = 0;\n\n@Component({\n tag: 'ds-checkbox',\n styleUrl: 'Checkbox.css',\n scoped: true,\n formAssociated: true,\n})\nexport class Checkbox {\n @AttachInternals() internals!: ElementInternals;\n private labelId = `ds-checkbox-label-${++idCounter}`;\n\n /** Visible label and accessible name. Omitted only in presentation mode. */\n @Prop() label!: string;\n /** Current checked state. */\n @Prop({ mutable: true }) checked: boolean = false;\n /** Visual and placement density. */\n @Prop() size: CheckboxSize = 'md';\n /** Native form field name. */\n @Prop({ reflect: true }) name: string | undefined;\n /** Submitted value when checked. */\n @Prop() value: string = 'on';\n /** Native disabled state. */\n @Prop({ reflect: true }) disabled: boolean = false;\n /** Require the checkbox to be checked for form validity. */\n @Prop({ reflect: true }) required: boolean = false;\n /** Validation message used when a required checkbox is unchecked. */\n @Prop() requiredMessage: string = DEFAULT_REQUIRED_MESSAGE;\n /** Mixed visual state. Activation clears it before toggling checked. */\n @Prop({ mutable: true }) indeterminate: boolean = false;\n /** Design-system inactive state. */\n @Prop() isInactive: boolean = false;\n /** Visual-only indicator for a composite control that owns selection semantics. */\n @Prop() presentation: boolean = false;\n\n /** Emitted after user activation with the new checked state. */\n @Event() dsChange!: EventEmitter<boolean>;\n\n private initialChecked = false;\n private initialIndeterminate = false;\n @State() private formDisabled = false;\n\n componentWillLoad() {\n this.initialChecked = this.checked;\n this.initialIndeterminate = this.indeterminate;\n this.syncFormValue();\n }\n\n @Watch('checked')\n @Watch('value')\n @Watch('disabled')\n @Watch('isInactive')\n @Watch('required')\n @Watch('presentation')\n syncFormValue() {\n const inactive = this.isInactive || this.disabled || this.formDisabled || this.presentation;\n this.internals.setFormValue(!inactive && this.checked ? this.value : null);\n const missing = this.required && !inactive && !this.checked;\n setRequiredValidity(this.internals, missing, this.requiredMessage);\n }\n\n formDisabledCallback(disabled: boolean) {\n this.formDisabled = disabled;\n this.syncFormValue();\n }\n\n formResetCallback() {\n this.checked = this.initialChecked;\n this.indeterminate = this.initialIndeterminate;\n }\n\n private handleActivate = () => {\n if (this.isInactive || this.disabled || this.formDisabled || this.presentation) return;\n if (this.indeterminate) this.indeterminate = false;\n this.checked = !this.checked;\n this.dsChange.emit(this.checked);\n };\n\n private handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this.handleActivate();\n }\n };\n\n render() {\n const inactive = this.isInactive || this.disabled || this.formDisabled;\n const isMarked = this.checked || this.indeterminate;\n const invalid = this.required && !inactive && !this.checked;\n\n return (\n <Host\n role={this.presentation ? undefined : 'checkbox'}\n aria-checked={this.presentation ? undefined : this.indeterminate ? 'mixed' : String(this.checked)}\n aria-disabled={!this.presentation && inactive ? 'true' : undefined}\n aria-required={!this.presentation && this.required ? 'true' : undefined}\n aria-invalid={!this.presentation && invalid ? 'true' : undefined}\n aria-labelledby={this.presentation ? undefined : this.labelId}\n aria-hidden={this.presentation ? 'true' : undefined}\n tabIndex={this.presentation || inactive ? -1 : 0}\n class={{\n checkbox: true,\n 'checkbox--presentation': this.presentation,\n [`checkbox--${this.size}`]: true,\n [`ds-control--${this.size}`]: true,\n 'ds-control-inactive': inactive && !this.presentation,\n 'ds-focus-ring-inset': !this.presentation,\n 'ds-interaction-fill': !inactive && !this.presentation,\n }}\n onClick={this.presentation ? undefined : this.handleActivate}\n onKeyDown={this.presentation ? undefined : this.handleKeyDown}\n >\n <span class=\"checkbox__placement ds-interaction-fill__content\" aria-hidden=\"true\">\n <span class={{ box: true, 'box--marked': isMarked }}>\n {isMarked && (\n // eslint-disable-next-line local/prefer-ds-icon -- Checkbox owns this density-specific state mark and its optical stroke.\n <svg\n class={{\n checkbox__mark: true,\n 'checkbox__mark--checked': !this.indeterminate,\n }}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n focusable=\"false\"\n >\n <path\n d={this.indeterminate ? 'M4 8H12' : 'M3.5 8.25L6.75 11.5L12.5 4.75'}\n vector-effect=\"non-scaling-stroke\"\n />\n </svg>\n )}\n </span>\n </span>\n {!this.presentation && (\n <ds-text\n class=\"checkbox__label ds-interaction-fill__content\"\n as=\"span\"\n variant={CONTROL_TEXT_VARIANT[this.size]}\n textId={this.labelId}\n >\n {this.label}\n </ds-text>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["resolveMobileSectionPosition","sections","value","selectable","getSelectableTabs","matchedIndex","findIndex","section","id","selectedIndex","selected","hasPrevious","hasNext","length","mobileSectionSwitcherCss","nextMobileSectionSwitcherId","MobileSectionSwitcher","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","sectionsJson","navigationLabel","menuOpen","initialFocusVisible","instanceId","triggerId","menuId","triggerEl","toggleMenu","event","selectableSections","detail","closeMenu","handleSelect","String","find","candidate","isInactive","selectedSection","dsChange","emit","requestAnimationFrame","focus","resolvedSections","trim","parsed","JSON","parse","Array","isArray","triggerAriaLabel","label","menuSections","groups","items","commit","push","isTabDivider","dot","isSelected","handleSectionsChange","render","h","Host","ref","element","class","type","onClick","as","variant","emphasis","color","lineTruncation","anchorId","align","menuLabel","open","onDsClose","onDsSelect"],"sources":["src/wc/components/MobileSectionSwitcher/mobile-section-switcher-utils.ts","src/wc/components/MobileSectionSwitcher/MobileSectionSwitcher.css?tag=ds-mobile-section-switcher&encapsulation=scoped","src/wc/components/MobileSectionSwitcher/MobileSectionSwitcher.tsx"],"sourcesContent":["import { getSelectableTabs, type TabItem, type TabItemTab } from '../TabGroup/tab-item-utils';\n\nexport interface MobileSectionPosition {\n selectedIndex: number;\n selected?: TabItemTab;\n hasPrevious: boolean;\n hasNext: boolean;\n}\n\n/** Resolve ordered selectable neighbors while ignoring visual divider entries. */\nexport function resolveMobileSectionPosition(\n sections: TabItem[],\n value: string\n): MobileSectionPosition {\n const selectable = getSelectableTabs(sections);\n const matchedIndex = selectable.findIndex(section => section.id === value);\n const selectedIndex = matchedIndex >= 0 ? matchedIndex : 0;\n return {\n selectedIndex,\n selected: selectable[selectedIndex],\n hasPrevious: selectedIndex > 0,\n hasNext: selectedIndex < selectable.length - 1,\n };\n}\n\n","@import '../../utils/focus-ring.css';\n@import '../../utils/interaction-fill.css';\n\n:host {\n display: block;\n min-width: 0;\n max-width: 100%;\n color: var(--color-foreground-primary);\n}\n\n.mobile-section-switcher {\n appearance: none;\n display: grid;\n grid-template-columns: var(--dimension-size-100) minmax(0, auto) var(--dimension-size-100);\n align-items: center;\n justify-content: center;\n gap: var(--dimension-space-050);\n max-width: 100%;\n min-height: var(--dimension-size-400);\n padding-inline: var(--dimension-space-100);\n border: 0;\n border-radius: var(--dimension-radius-100);\n background: var(--color-background-secondary);\n color: inherit;\n box-sizing: border-box;\n cursor: default;\n}\n\n.mobile-section-switcher--expanded {\n background: var(--color-background-tertiary);\n}\n\n.mobile-section-switcher__label {\n min-width: 0;\n max-width: 100%;\n text-align: center;\n}\n\n.mobile-section-switcher__position {\n width: var(--dimension-size-050);\n height: var(--dimension-size-050);\n border-radius: var(--dimension-radius-half);\n background: currentColor;\n opacity: 0;\n}\n\n.mobile-section-switcher__position--visible {\n opacity: 1;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport {\n getSelectableTabs,\n isTabDivider,\n type TabItem,\n type TabItemTab,\n} from '../TabGroup/tab-item-utils';\nimport { resolveMobileSectionPosition } from './mobile-section-switcher-utils';\n\nlet nextMobileSectionSwitcherId = 0;\n\n@Component({\n tag: 'ds-mobile-section-switcher',\n styleUrl: 'MobileSectionSwitcher.css',\n scoped: true,\n})\nexport class MobileSectionSwitcher {\n @Element() el!: HTMLElement;\n\n /** Ordered controlled sections. Divider entries group the popup menu. */\n @Prop() sections: TabItem[] = [];\n /** JSON fallback for `sections`. */\n @Prop({ attribute: 'sections-json' }) sectionsJson: string = '';\n /** Controlled selected section id. */\n @Prop() value: string = '';\n /** Accessible name for the section chooser. */\n @Prop() navigationLabel: string = 'Change page section';\n\n /** Selection intent. The route, tool, or workflow owner updates `value`. */\n @Event() dsChange!: EventEmitter<string>;\n\n @State() private menuOpen = false;\n @State() private initialFocusVisible = false;\n\n private readonly instanceId = nextMobileSectionSwitcherId++;\n private readonly triggerId = `ds-mobile-section-switcher-trigger-${this.instanceId}`;\n private readonly menuId = `ds-mobile-section-switcher-menu-${this.instanceId}`;\n private triggerEl: HTMLButtonElement | null = null;\n\n private get resolvedSections(): TabItem[] {\n if (!this.sectionsJson.trim()) return this.sections ?? [];\n try {\n const parsed = JSON.parse(this.sectionsJson);\n return Array.isArray(parsed) ? (parsed as TabItem[]) : [];\n } catch {\n return [];\n }\n }\n\n private get selectableSections(): TabItemTab[] {\n return getSelectableTabs(this.resolvedSections);\n }\n\n private get selectedIndex(): number {\n return resolveMobileSectionPosition(this.resolvedSections, this.value).selectedIndex;\n }\n\n private get selectedSection(): TabItemTab | undefined {\n return this.selectableSections[this.selectedIndex];\n }\n\n private get hasPrevious(): boolean {\n return resolveMobileSectionPosition(this.resolvedSections, this.value).hasPrevious;\n }\n\n private get hasNext(): boolean {\n return resolveMobileSectionPosition(this.resolvedSections, this.value).hasNext;\n }\n\n private get triggerAriaLabel(): string {\n return `${this.navigationLabel}. Current section: ${this.selectedSection?.label ?? ''}`;\n }\n\n private get menuSections(): MenuSection[] {\n const groups: MenuSection[] = [];\n let items: MenuItemData[] = [];\n const commit = () => {\n if (items.length) groups.push({ items });\n items = [];\n };\n\n for (const section of this.resolvedSections) {\n if (isTabDivider(section)) {\n commit();\n continue;\n }\n items.push({\n label: section.label,\n value: section.id,\n dot: section.dot,\n isSelected: section.id === this.selectedSection?.id,\n isInactive: section.isInactive,\n });\n }\n commit();\n return groups;\n }\n\n @Watch('sections')\n @Watch('sectionsJson')\n handleSectionsChange() {\n if (this.selectableSections.length <= 1) this.closeMenu();\n }\n\n private toggleMenu = (event: MouseEvent) => {\n if (this.selectableSections.length <= 1) return;\n this.initialFocusVisible = event.detail === 0;\n this.menuOpen = !this.menuOpen;\n };\n\n private closeMenu = () => {\n this.menuOpen = false;\n };\n\n private handleSelect = (event: CustomEvent<MenuItemData>) => {\n const id = String(event.detail.value ?? '');\n const section = this.selectableSections.find(candidate => candidate.id === id);\n if (!section || section.isInactive) return;\n this.closeMenu();\n if (id !== this.selectedSection?.id) this.dsChange.emit(id);\n requestAnimationFrame(() => this.triggerEl?.focus());\n };\n\n render() {\n const selected = this.selectedSection;\n if (!selected) return <Host />;\n\n return (\n <Host>\n <button\n ref={element => {\n this.triggerEl = element ?? null;\n }}\n id={this.triggerId}\n class={{\n 'mobile-section-switcher': true,\n 'mobile-section-switcher--expanded': this.menuOpen,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n }}\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-controls={this.menuId}\n aria-expanded={String(this.menuOpen)}\n aria-label={this.triggerAriaLabel}\n onClick={this.toggleMenu}\n >\n <span\n class={{\n 'mobile-section-switcher__position': true,\n 'mobile-section-switcher__position--visible': this.hasPrevious,\n 'ds-interaction-fill__content': true,\n }}\n aria-hidden=\"true\"\n />\n <ds-text\n class=\"mobile-section-switcher__label ds-interaction-fill__content\"\n as=\"span\"\n variant=\"text-body-medium\"\n emphasis\n color=\"inherit\"\n lineTruncation={1}\n >\n {selected.label}\n </ds-text>\n <span\n class={{\n 'mobile-section-switcher__position': true,\n 'mobile-section-switcher__position--visible': this.hasNext,\n 'ds-interaction-fill__content': true,\n }}\n aria-hidden=\"true\"\n />\n </button>\n\n {this.selectableSections.length > 1 ? (\n <ds-menu\n id={this.menuId}\n anchorId={this.triggerId}\n align=\"center\"\n menuLabel={this.navigationLabel}\n open={this.menuOpen}\n initialFocusVisible={this.initialFocusVisible}\n sections={this.menuSections}\n onDsClose={this.closeMenu}\n onDsSelect={this.handleSelect}\n />\n ) : null}\n </Host>\n );\n }\n}\n"],"mappings":"4RAUM,SAAUA,EACdC,EACAC,GAEA,MAAMC,EAAaC,EAAkBH,GACrC,MAAMI,EAAeF,EAAWG,WAAUC,GAAWA,EAAQC,KAAON,IACpE,MAAMO,EAAgBJ,GAAgB,EAAIA,EAAe,EACzD,MAAO,CACLI,gBACAC,SAAUP,EAAWM,GACrBE,YAAaF,EAAgB,EAC7BG,QAASH,EAAgBN,EAAWU,OAAS,EAEjD,CCvBA,MAAMC,EAA2B,IAAM,mpRCoBvC,IAAIC,EAA8B,E,MAOrBC,EAAqBC,EAAA,MAAAD,UAAAE,EALlC,WAAAC,CAAAC,G,6EASUC,KAAApB,SAAsB,GAEQoB,KAAAC,aAAuB,GAErDD,KAAAnB,MAAgB,GAEhBmB,KAAAE,gBAA0B,sBAKjBF,KAAAG,SAAW,MACXH,KAAAI,oBAAsB,MAEtBJ,KAAAK,WAAaX,IACbM,KAAAM,UAAY,sCAAsCN,KAAKK,aACvDL,KAAAO,OAAS,mCAAmCP,KAAKK,aAC1DL,KAAAQ,UAAsC,KAmEtCR,KAAAS,WAAcC,IACpB,GAAIV,KAAKW,mBAAmBnB,QAAU,EAAG,OACzCQ,KAAKI,oBAAsBM,EAAME,SAAW,EAC5CZ,KAAKG,UAAYH,KAAKG,QAAQ,EAGxBH,KAAAa,UAAY,KAClBb,KAAKG,SAAW,KAAK,EAGfH,KAAAc,aAAgBJ,IACtB,MAAMvB,EAAK4B,OAAOL,EAAME,OAAO/B,OAAS,IACxC,MAAMK,EAAUc,KAAKW,mBAAmBK,MAAKC,GAAaA,EAAU9B,KAAOA,IAC3E,IAAKD,GAAWA,EAAQgC,WAAY,OACpClB,KAAKa,YACL,GAAI1B,IAAOa,KAAKmB,iBAAiBhC,GAAIa,KAAKoB,SAASC,KAAKlC,GACxDmC,uBAAsB,IAAMtB,KAAKQ,WAAWe,SAAQ,CAuEvD,CAxJC,oBAAYC,GACV,IAAKxB,KAAKC,aAAawB,OAAQ,OAAOzB,KAAKpB,UAAY,GACvD,IACE,MAAM8C,EAASC,KAAKC,MAAM5B,KAAKC,cAC/B,OAAO4B,MAAMC,QAAQJ,GAAWA,EAAuB,E,CACvD,MACA,MAAO,E,EAIX,sBAAYf,GACV,OAAO5B,EAAkBiB,KAAKwB,iB,CAGhC,iBAAYpC,GACV,OAAOT,EAA6BqB,KAAKwB,iBAAkBxB,KAAKnB,OAAOO,a,CAGzE,mBAAY+B,GACV,OAAOnB,KAAKW,mBAAmBX,KAAKZ,c,CAGtC,eAAYE,GACV,OAAOX,EAA6BqB,KAAKwB,iBAAkBxB,KAAKnB,OAAOS,W,CAGzE,WAAYC,GACV,OAAOZ,EAA6BqB,KAAKwB,iBAAkBxB,KAAKnB,OAAOU,O,CAGzE,oBAAYwC,GACV,MAAO,GAAG/B,KAAKE,qCAAqCF,KAAKmB,iBAAiBa,OAAS,I,CAGrF,gBAAYC,GACV,MAAMC,EAAwB,GAC9B,IAAIC,EAAwB,GAC5B,MAAMC,EAAS,KACb,GAAID,EAAM3C,OAAQ0C,EAAOG,KAAK,CAAEF,UAChCA,EAAQ,EAAE,EAGZ,IAAK,MAAMjD,KAAWc,KAAKwB,iBAAkB,CAC3C,GAAIc,EAAapD,GAAU,CACzBkD,IACA,Q,CAEFD,EAAME,KAAK,CACTL,MAAO9C,EAAQ8C,MACfnD,MAAOK,EAAQC,GACfoD,IAAKrD,EAAQqD,IACbC,WAAYtD,EAAQC,KAAOa,KAAKmB,iBAAiBhC,GACjD+B,WAAYhC,EAAQgC,Y,CAGxBkB,IACA,OAAOF,C,CAKT,oBAAAO,GACE,GAAIzC,KAAKW,mBAAmBnB,QAAU,EAAGQ,KAAKa,W,CAsBhD,MAAA6B,GACE,MAAMrD,EAAWW,KAAKmB,gBACtB,IAAK9B,EAAU,OAAOsD,EAACC,EAAI,MAE3B,OACED,EAACC,EAAI,KACHD,EAAA,UACEE,IAAKC,IACH9C,KAAKQ,UAAYsC,GAAW,IAAI,EAElC3D,GAAIa,KAAKM,UACTyC,MAAO,CACL,0BAA2B,KAC3B,oCAAqC/C,KAAKG,SAC1C,sBAAuB,KACvB,sBAAuB,MAEzB6C,KAAK,SAAQ,gBACC,OAAM,gBACLhD,KAAKO,OAAM,gBACXQ,OAAOf,KAAKG,UAAS,aACxBH,KAAK+B,iBACjBkB,QAASjD,KAAKS,YAEdkC,EAAA,QACEI,MAAO,CACL,oCAAqC,KACrC,6CAA8C/C,KAAKV,YACnD,+BAAgC,MACjC,cACW,SAEdqD,EAAA,WACEI,MAAM,8DACNG,GAAG,OACHC,QAAQ,mBACRC,SAAQ,KACRC,MAAM,UACNC,eAAgB,GAEfjE,EAAS2C,OAEZW,EAAA,QACEI,MAAO,CACL,oCAAqC,KACrC,6CAA8C/C,KAAKT,QACnD,+BAAgC,MACjC,cACW,UAIfS,KAAKW,mBAAmBnB,OAAS,EAChCmD,EAAA,WACExD,GAAIa,KAAKO,OACTgD,SAAUvD,KAAKM,UACfkD,MAAM,SACNC,UAAWzD,KAAKE,gBAChBwD,KAAM1D,KAAKG,SACXC,oBAAqBJ,KAAKI,oBAC1BxB,SAAUoB,KAAKiC,aACf0B,UAAW3D,KAAKa,UAChB+C,WAAY5D,KAAKc,eAEjB,K","ignoreList":[]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as t,H as e,h as s,a,t as i}from"./index.js";import{d as n}from"./p-BAfG3M8z.js";import{d as o}from"./p-CPwpgUWT.js";const r=()=>`.sc-ds-attachment-list-h{display:block;min-width:0;box-sizing:border-box}.attachment-list.sc-ds-attachment-list{display:flex;flex-wrap:wrap;gap:var(--dimension-space-050)}.attachment-list__item.sc-ds-attachment-list{display:flex;max-width:var(--dimension-form-width-sm);padding:var(--dimension-space-075);border-radius:var(--dimension-radius-025);background:var(--color-background-secondary);color:inherit;box-shadow:inset 0 0 0 var(--dimension-stroke-width-012) var(--color-border-tertiary);text-decoration:none;box-sizing:border-box}a.attachment-list__item.sc-ds-attachment-list:focus-visible{outline:var(--dimension-stroke-width-025) solid var(--color-border-bold-brand);outline-offset:var(--dimension-stroke-width-012)}.attachment-list__item-content.sc-ds-attachment-list{display:flex;align-items:center;gap:var(--dimension-space-075);min-width:0}.attachment-list__copy.sc-ds-attachment-list{display:flex;flex-direction:column;min-width:0}`;function c(t){if(!t)return undefined;try{const e=new URL(t,document.baseURI);return["http:","https:","blob:"].includes(e.protocol)?e.href:undefined}catch{return undefined}}const d=t(class t extends e{constructor(t){super();if(t!==false){this.__registerHost()}this.items=[];this.label="Attachments"}renderItem(t){const e=c(t.url);const a=s("span",{class:"attachment-list__item-content"},s("ds-icon",{name:"Document",size:"sm",color:"secondary"}),s("span",{class:"attachment-list__copy"},s("ds-text",{as:"span",variant:"text-body-small",emphasis:true,color:"primary",lineTruncation:1},t.name),t.mediaType||t.size?s("ds-text",{as:"span",variant:"text-caption",color:"secondary"},[t.mediaType,t.size].filter(Boolean).join(" · ")):null));return e?s("a",{class:"attachment-list__item",href:e,target:"_blank",rel:"noopener noreferrer"},a):s("div",{class:"attachment-list__item"},a)}render(){return s(a,{key:"4de910e1b50527168a700c1fa54ffd999b92f412"},s("div",{key:"cb134113d53ee79dec85ef3b4d8d17aaef80020f",class:"attachment-list",role:"list","aria-label":this.label},this.items.map((t=>s("div",{role:"listitem",key:t.id},this.renderItem(t))))))}static get style(){return r()}},[2,"ds-attachment-list",{items:[16],label:[1]}]);function l(){if(typeof customElements==="undefined"){return}const t=["ds-attachment-list","ds-icon","ds-text"];t.forEach((t=>{switch(t){case"ds-attachment-list":if(!customElements.get(i(t))){customElements.define(i(t),d)}break;case"ds-icon":if(!customElements.get(i(t))){n()}break;case"ds-text":if(!customElements.get(i(t))){o()}break}}))}l();export{d as A,l as d};
|
|
2
|
-
//# sourceMappingURL=p-D0e77tkd.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["attachmentListCss","safeAttachmentUrl","value","undefined","url","URL","document","baseURI","includes","protocol","href","AttachmentList","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","items","label","renderItem","item","content","h","class","name","size","color","as","variant","emphasis","lineTruncation","mediaType","filter","Boolean","join","target","rel","render","Host","key","role","map","id"],"sources":["src/wc/components/AttachmentList/AttachmentList.css?tag=ds-attachment-list&encapsulation=scoped","src/wc/components/AttachmentList/AttachmentList.tsx"],"sourcesContent":[":host {\n display: block;\n min-width: 0;\n box-sizing: border-box;\n}\n\n.attachment-list {\n display: flex;\n flex-wrap: wrap;\n gap: var(--dimension-space-050);\n}\n\n.attachment-list__item {\n display: flex;\n max-width: var(--dimension-form-width-sm);\n padding: var(--dimension-space-075);\n border-radius: var(--dimension-radius-025);\n background: var(--color-background-secondary);\n color: inherit;\n box-shadow: inset 0 0 0 var(--dimension-stroke-width-012) var(--color-border-tertiary);\n text-decoration: none;\n box-sizing: border-box;\n}\n\na.attachment-list__item:focus-visible {\n outline: var(--dimension-stroke-width-025) solid var(--color-border-bold-brand);\n outline-offset: var(--dimension-stroke-width-012);\n}\n\n.attachment-list__item-content {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-075);\n min-width: 0;\n}\n\n.attachment-list__copy {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\nimport type { ConversationAttachment } from '../conversation-types';\n\nfunction safeAttachmentUrl(value: string | undefined): string | undefined {\n if (!value) return undefined;\n try {\n const url = new URL(value, document.baseURI);\n return ['http:', 'https:', 'blob:'].includes(url.protocol) ? url.href : undefined;\n } catch {\n return undefined;\n }\n}\n\n@Component({\n tag: 'ds-attachment-list',\n styleUrl: 'AttachmentList.css',\n scoped: true,\n})\nexport class AttachmentList {\n @Prop() items: ConversationAttachment[] = [];\n @Prop() label: string = 'Attachments';\n\n private renderItem(item: ConversationAttachment) {\n const url = safeAttachmentUrl(item.url);\n const content = (\n <span class=\"attachment-list__item-content\">\n <ds-icon name=\"Document\" size=\"sm\" color=\"secondary\" />\n <span class=\"attachment-list__copy\">\n <ds-text as=\"span\" variant=\"text-body-small\" emphasis color=\"primary\" lineTruncation={1}>{item.name}</ds-text>\n {item.mediaType || item.size ? (\n <ds-text as=\"span\" variant=\"text-caption\" color=\"secondary\">\n {[item.mediaType, item.size].filter(Boolean).join(' · ')}\n </ds-text>\n ) : null}\n </span>\n </span>\n );\n return url ? (\n <a class=\"attachment-list__item\" href={url} target=\"_blank\" rel=\"noopener noreferrer\">{content}</a>\n ) : (\n <div class=\"attachment-list__item\">{content}</div>\n );\n }\n\n render() {\n return (\n <Host>\n <div class=\"attachment-list\" role=\"list\" aria-label={this.label}>\n {this.items.map(item => <div role=\"listitem\" key={item.id}>{this.renderItem(item)}</div>)}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"8HAAA,MAAMA,EAAoB,IAAM,k7BCGhC,SAASC,EAAkBC,GACzB,IAAKA,EAAO,OAAOC,UACnB,IACE,MAAMC,EAAM,IAAIC,IAAIH,EAAOI,SAASC,SACpC,MAAO,CAAC,QAAS,SAAU,SAASC,SAASJ,EAAIK,UAAYL,EAAIM,KAAOP,S,CACxE,MACA,OAAOA,S,CAEX,C,MAOaQ,EAAcC,EAAA,MAAAD,UAAAE,EAL3B,WAAAC,CAAAC,G,4CAMUC,KAAAC,MAAkC,GAClCD,KAAAE,MAAgB,aAiCzB,CA/BS,UAAAC,CAAWC,GACjB,MAAMhB,EAAMH,EAAkBmB,EAAKhB,KACnC,MAAMiB,EACJC,EAAA,QAAMC,MAAM,iCACVD,EAAA,WAASE,KAAK,WAAWC,KAAK,KAAKC,MAAM,cACzCJ,EAAA,QAAMC,MAAM,yBACVD,EAAA,WAASK,GAAG,OAAOC,QAAQ,kBAAkBC,SAAQ,KAACH,MAAM,UAAUI,eAAgB,GAAIV,EAAKI,MAC9FJ,EAAKW,WAAaX,EAAKK,KACtBH,EAAA,WAASK,GAAG,OAAOC,QAAQ,eAAeF,MAAM,aAC7C,CAACN,EAAKW,UAAWX,EAAKK,MAAMO,OAAOC,SAASC,KAAK,QAElD,OAIV,OAAO9B,EACLkB,EAAA,KAAGC,MAAM,wBAAwBb,KAAMN,EAAK+B,OAAO,SAASC,IAAI,uBAAuBf,GAEvFC,EAAA,OAAKC,MAAM,yBAAyBF,E,CAIxC,MAAAgB,GACE,OACEf,EAACgB,EAAI,CAAAC,IAAA,4CACHjB,EAAA,OAAAiB,IAAA,2CAAKhB,MAAM,kBAAkBiB,KAAK,OAAM,aAAaxB,KAAKE,OACvDF,KAAKC,MAAMwB,KAAIrB,GAAQE,EAAA,OAAKkB,KAAK,WAAWD,IAAKnB,EAAKsB,IAAK1B,KAAKG,WAAWC,O","ignoreList":[]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const o=["none","cool","neutral","warm","fresh"];const r=["cool","neutral","warm","fresh"];const n="neutral";const t={none:"None",cool:"Cool",neutral:"Neutral",warm:"Warm",fresh:"Fresh"};const a={cool:{opacity:.1,stops:[{color:"var(--color-background-transparent)",position:0},{color:"var(--color-color-intent-blue-strong-background)",position:100}]},neutral:{opacity:.1,stops:[{color:"var(--color-background-transparent)",position:0},{color:"var(--color-color-intent-grey-strong-background)",position:100}]},warm:{opacity:.1,stops:[{color:"var(--color-background-transparent)",position:0},{color:"var(--color-color-intent-yellow-strong-background)",position:100}]},fresh:{opacity:.4,stops:[{color:"var(--color-color-intent-cyan-faint-background)",position:0},{color:"var(--color-background-transparent)",position:47},{color:"var(--color-background-transparent)",position:58},{color:"var(--color-color-intent-red-faint-background)",position:83},{color:"var(--color-color-intent-pink-faint-background)",position:100}]}};const c="100% 100% at 0% 0%";function l(o){const r=s(o);return r==="none"?null:a[r]}function e(o){return String(l(o)?.opacity??0)}function i(r){return o.includes(r)}function s(o){return o!=null&&i(o)?o:n}function u(o){const r=s(o);if(r==="none")return"none";return p(a[r].stops)}function p(o){const r=o.map((o=>`${o.color} ${o.position}%`)).join(", ");return`radial-gradient(${c}, ${r})`}function g(){return[{options:[{value:"none",label:t.none,preview:{backgroundColor:"var(--color-background-secondary)"}}]},{options:r.map((o=>({value:o,label:t[o],preview:{backgroundColor:"var(--color-background-secondary)",backgroundImage:u(o),opacity:Number(e(o))}})))}]}export{n as D,t as S,e as a,u as b,s as n,g as s};
|
|
2
|
-
//# sourceMappingURL=p-D1HFMTdC.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["SHELL_GRADIENT_PRESETS","SHELL_GRADIENT_WASH_PRESETS","DEFAULT_SHELL_GRADIENT_PRESET","SHELL_GRADIENT_PRESET_LABELS","none","cool","neutral","warm","fresh","SHELL_GRADIENT_RECIPES","opacity","stops","color","position","GRADIENT_GEOMETRY","shellGradientPresetRecipe","preset","normalized","normalizeShellGradientPreset","shellGradientPresetOpacity","String","isShellGradientPreset","value","includes","buildShellRadialGradientForPreset","buildShellRadialGradientFromStops","serialized","map","stop","join","shellGradientPickerSections","options","label","preview","backgroundColor","backgroundImage","Number"],"sources":["src/wc/shell/shell-gradient-presets.ts"],"sourcesContent":["/** Built-in shell chrome wash presets. */\nexport type ShellGradientPreset = 'none' | 'cool' | 'neutral' | 'warm' | 'fresh';\n\nexport const SHELL_GRADIENT_PRESETS: ShellGradientPreset[] = [\n 'none',\n 'cool',\n 'neutral',\n 'warm',\n 'fresh',\n];\n\n/** Wash presets shown after the `none` option in pickers. */\nexport const SHELL_GRADIENT_WASH_PRESETS: Exclude<ShellGradientPreset, 'none'>[] = [\n 'cool',\n 'neutral',\n 'warm',\n 'fresh',\n];\n\n/** Default wash when `gradient-preset` is omitted. */\nexport const DEFAULT_SHELL_GRADIENT_PRESET: ShellGradientPreset = 'neutral';\n\nexport const SHELL_GRADIENT_PRESET_LABELS: Record<ShellGradientPreset, string> = {\n none: 'None',\n cool: 'Cool',\n neutral: 'Neutral',\n warm: 'Warm',\n fresh: 'Fresh',\n};\n\nexport interface ShellGradientStop {\n color: string;\n position: number;\n}\n\nexport interface ShellGradientRecipe {\n opacity: number;\n stops: readonly ShellGradientStop[];\n}\n\nexport interface ShellGradientPickerPreview {\n backgroundColor: string;\n backgroundImage?: string;\n opacity?: number;\n}\n\nexport interface ShellGradientPickerOption {\n value: ShellGradientPreset;\n label: string;\n preview: ShellGradientPickerPreview;\n}\n\nexport interface ShellGradientPickerSection {\n options: ShellGradientPickerOption[];\n}\n\nconst SHELL_GRADIENT_RECIPES: Record<Exclude<ShellGradientPreset, 'none'>, ShellGradientRecipe> = {\n cool: {\n opacity: 0.1,\n stops: [\n { color: 'var(--color-background-transparent)', position: 0 },\n { color: 'var(--color-color-intent-blue-strong-background)', position: 100 },\n ],\n },\n neutral: {\n opacity: 0.1,\n stops: [\n { color: 'var(--color-background-transparent)', position: 0 },\n { color: 'var(--color-color-intent-grey-strong-background)', position: 100 },\n ],\n },\n warm: {\n opacity: 0.1,\n stops: [\n { color: 'var(--color-background-transparent)', position: 0 },\n { color: 'var(--color-color-intent-yellow-strong-background)', position: 100 },\n ],\n },\n fresh: {\n opacity: 0.4,\n stops: [\n { color: 'var(--color-color-intent-cyan-faint-background)', position: 0 },\n { color: 'var(--color-background-transparent)', position: 47 },\n { color: 'var(--color-background-transparent)', position: 58 },\n { color: 'var(--color-color-intent-red-faint-background)', position: 83 },\n { color: 'var(--color-color-intent-pink-faint-background)', position: 100 },\n ],\n },\n};\n\nconst GRADIENT_GEOMETRY = '100% 100% at 0% 0%';\n\nexport function shellGradientPresetStopToken(preset: ShellGradientPreset): string | null {\n if (preset === 'none') return null;\n const stops = SHELL_GRADIENT_RECIPES[preset].stops;\n return stops[stops.length - 1]?.color ?? null;\n}\n\nexport function shellGradientPresetRecipe(preset: ShellGradientPreset): ShellGradientRecipe | null {\n const normalized = normalizeShellGradientPreset(preset);\n return normalized === 'none' ? null : SHELL_GRADIENT_RECIPES[normalized];\n}\n\nexport function shellGradientPresetOpacity(preset: ShellGradientPreset): string {\n return String(shellGradientPresetRecipe(preset)?.opacity ?? 0);\n}\n\nexport function isShellGradientPreset(value: string): value is ShellGradientPreset {\n return (SHELL_GRADIENT_PRESETS as string[]).includes(value);\n}\n\n/**\n * Coerce unknown/absent presets to the default. Runtime values escape the\n * type: removing the reflected `gradient-preset` attribute (e.g. an Angular\n * `[attr.gradient-preset]=\"null\"` binding) drives the prop to null past its\n * field default — without normalization the stop lookup interpolates the\n * literal string \"undefined\" into CSS and the wash silently disappears.\n */\nexport function normalizeShellGradientPreset(\n value: string | null | undefined,\n): ShellGradientPreset {\n return value != null && isShellGradientPreset(value) ? value : DEFAULT_SHELL_GRADIENT_PRESET;\n}\n\n/** Radial wash for a preset — transparent at top-left into the intent stop. `none` returns no image. */\nexport function buildShellRadialGradientForPreset(preset: ShellGradientPreset): string {\n const normalized = normalizeShellGradientPreset(preset);\n if (normalized === 'none') return 'none';\n\n return buildShellRadialGradientFromStops(SHELL_GRADIENT_RECIPES[normalized].stops);\n}\n\n/** Build the production shell geometry from an ordered set of design-time stops. */\nexport function buildShellRadialGradientFromStops(stops: readonly ShellGradientStop[]): string {\n const serialized = stops.map(stop => `${stop.color} ${stop.position}%`).join(', ');\n return `radial-gradient(${GRADIENT_GEOMETRY}, ${serialized})`;\n}\n\n/** Generic SwatchPicker sections for the fixed shell appearance presets. */\nexport function shellGradientPickerSections(): ShellGradientPickerSection[] {\n return [\n {\n options: [{\n value: 'none',\n label: SHELL_GRADIENT_PRESET_LABELS.none,\n preview: {\n backgroundColor: 'var(--color-background-secondary)',\n },\n }],\n },\n {\n options: SHELL_GRADIENT_WASH_PRESETS.map(preset => ({\n value: preset,\n label: SHELL_GRADIENT_PRESET_LABELS[preset],\n preview: {\n backgroundColor: 'var(--color-background-secondary)',\n backgroundImage: buildShellRadialGradientForPreset(preset),\n opacity: Number(shellGradientPresetOpacity(preset)),\n },\n })),\n },\n ];\n}\n"],"mappings":"AAGO,MAAMA,EAAgD,CAC3D,OACA,OACA,UACA,OACA,SAIK,MAAMC,EAAsE,CACjF,OACA,UACA,OACA,SAIK,MAAMC,EAAqD,UAE3D,MAAMC,EAAoE,CAC/EC,KAAM,OACNC,KAAM,OACNC,QAAS,UACTC,KAAM,OACNC,MAAO,SA6BT,MAAMC,EAA4F,CAChGJ,KAAM,CACJK,QAAS,GACTC,MAAO,CACL,CAAEC,MAAO,sCAAuCC,SAAU,GAC1D,CAAED,MAAO,mDAAoDC,SAAU,OAG3EP,QAAS,CACPI,QAAS,GACTC,MAAO,CACL,CAAEC,MAAO,sCAAuCC,SAAU,GAC1D,CAAED,MAAO,mDAAoDC,SAAU,OAG3EN,KAAM,CACJG,QAAS,GACTC,MAAO,CACL,CAAEC,MAAO,sCAAuCC,SAAU,GAC1D,CAAED,MAAO,qDAAsDC,SAAU,OAG7EL,MAAO,CACLE,QAAS,GACTC,MAAO,CACL,CAAEC,MAAO,kDAAmDC,SAAU,GACtE,CAAED,MAAO,sCAAuCC,SAAU,IAC1D,CAAED,MAAO,sCAAuCC,SAAU,IAC1D,CAAED,MAAO,iDAAkDC,SAAU,IACrE,CAAED,MAAO,kDAAmDC,SAAU,QAK5E,MAAMC,EAAoB,qBAQpB,SAAUC,EAA0BC,GACxC,MAAMC,EAAaC,EAA6BF,GAChD,OAAOC,IAAe,OAAS,KAAOR,EAAuBQ,EAC/D,CAEM,SAAUE,EAA2BH,GACzC,OAAOI,OAAOL,EAA0BC,IAASN,SAAW,EAC9D,CAEM,SAAUW,EAAsBC,GACpC,OAAQtB,EAAoCuB,SAASD,EACvD,CASM,SAAUJ,EACdI,GAEA,OAAOA,GAAS,MAAQD,EAAsBC,GAASA,EAAQpB,CACjE,CAGM,SAAUsB,EAAkCR,GAChD,MAAMC,EAAaC,EAA6BF,GAChD,GAAIC,IAAe,OAAQ,MAAO,OAElC,OAAOQ,EAAkChB,EAAuBQ,GAAYN,MAC9E,CAGM,SAAUc,EAAkCd,GAChD,MAAMe,EAAaf,EAAMgB,KAAIC,GAAQ,GAAGA,EAAKhB,SAASgB,EAAKf,cAAagB,KAAK,MAC7E,MAAO,mBAAmBf,MAAsBY,IAClD,C,SAGgBI,IACd,MAAO,CACL,CACEC,QAAS,CAAC,CACRT,MAAO,OACPU,MAAO7B,EAA6BC,KACpC6B,QAAS,CACPC,gBAAiB,wCAIvB,CACEH,QAAS9B,EAA4B0B,KAAIX,IAAM,CAC7CM,MAAON,EACPgB,MAAO7B,EAA6Ba,GACpCiB,QAAS,CACPC,gBAAiB,oCACjBC,gBAAiBX,EAAkCR,GACnDN,QAAS0B,OAAOjB,EAA2BH,UAKrD,Q","ignoreList":[]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{A as t}from"./p-By_s1wNN.js";import{c as i,r as s}from"./p-DhKvqh5G.js";import{r as e}from"./p-BJMRBHKW.js";import{r as n}from"./p-B6Vuayt6.js";import{T as h}from"./p-BBePKRHC.js";function r(t,i){return i.length>0?i:[{options:t}]}function o(t){return t.flatMap((t=>t.options))}function a(t){return t.length>0&&t.every((t=>Boolean(t.icon)))}function u(t){return t.some((t=>Boolean(t.subtext?.trim())))}function c(t,i){const s=i.trim().toLocaleLowerCase();if(!s)return t;return t.map((t=>{const i=t.header?.toLocaleLowerCase().includes(s);return{...t,options:i?t.options:t.options.filter((t=>`${t.label} ${t.subtext??""}`.toLocaleLowerCase().includes(s)))}})).filter((t=>t.options.length>0))}function f(t){return t.map(((t,i)=>({option:t,index:i}))).filter((({option:t})=>!t.isInactive)).map((({index:t})=>t))}function l(t,i,s){const e=f(t);if(!e.length)return-1;const n=e.indexOf(i);const h=n>=0?n:s===1?-1:0;return e[(h+s+e.length)%e.length]}function d(t,i,s){const e=i.toLocaleLowerCase();if(!e)return-1;for(let i=1;i<=t.length;i+=1){const n=(Math.max(s,-1)+i)%t.length;const h=t[n];if(!h.isInactive&&h.label.toLocaleLowerCase().startsWith(e))return n}return-1}function p(t){return{"ds-interaction-fill--on-faint":t==="faint","ds-interaction-fill--on-medium":t==="medium","ds-interaction-fill--on-bold":t==="bold","ds-interaction-fill--on-strong":t==="strong","ds-interaction-fill--on-translucent":t==="translucent","ds-interaction-fill--on-inverted":t==="inverted","ds-interaction-fill--on-media":t==="media","ds-interaction-fill--on-always-dark":t==="always-dark"}}class m{constructor(n){this.state=n;this.triggerEl=null;this.popupEl=null;this.searchEl=null;this.typeahead="";this.typeaheadTimer=null;this.outsideHandler=null;this.setTriggerElement=t=>{this.triggerEl=t};this.setPopupElement=t=>{this.popupEl=t};this.setSearchElement=t=>{this.searchEl=t};this.handleTriggerKeyDown=t=>{if(!this.state.open){if(["ArrowDown","ArrowUp","Enter"," "].includes(t.key)){t.preventDefault();this.openPopup(true,t.key==="ArrowUp"?"last":"first")}else if(this.isTypeaheadKey(t)){t.preventDefault();this.openPopup(true);if(this.state.searchable)this.state.searchTerm=t.key;else this.handleTypeahead(t.key)}return}this.handleListKeyDown(t)};this.handleListKeyDown=t=>{switch(t.key){case"ArrowDown":t.preventDefault();this.state.focusRingVisible=true;this.state.activeIndex=l(this.state.options,this.state.activeIndex,1);break;case"ArrowUp":t.preventDefault();this.state.focusRingVisible=true;this.state.activeIndex=l(this.state.options,this.state.activeIndex,-1);break;case"Home":t.preventDefault();this.state.focusRingVisible=true;this.state.activeIndex=f(this.state.options)[0]??-1;break;case"End":{t.preventDefault();this.state.focusRingVisible=true;const i=f(this.state.options);this.state.activeIndex=i[i.length-1]??-1;break}case"Enter":case" ":{if(t.key===" "&&this.state.searchable&&t.target===this.searchEl)break;t.preventDefault();const i=this.state.options[this.state.activeIndex];if(i)this.state.selectOption(i);break}case"Escape":t.preventDefault();this.closePopup(true);break;case"Tab":this.closePopup();break;default:if(!this.state.searchable&&this.isTypeaheadKey(t)){this.handleTypeahead(t.key)}}};this.position=new t({getAnchor:()=>this.triggerEl,getPopup:()=>this.popupEl,measure:(t,n)=>{if(!this.state.open||!n.isConnected||!this.state.host.contains(n))return null;const r=e(h.space050,h.space050);n.style.minWidth=`${i(t.offsetWidth,r)}px`;return{anchorRect:t.getBoundingClientRect(),popupWidth:n.offsetWidth,popupHeight:n.offsetHeight,side:"bottom",align:"start",sideOffsetPx:r,alignOffsetPx:s({align:"start",alignOffsetPx:0,sectionInsetPx:r}),viewportPadPx:r,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}},apply:({x:t,y:i})=>{this.state.position={x:t,y:i};this.state.positionReady=true}})}get activeOptionId(){return!this.state.isLoading&&this.state.activeIndex>=0?`${this.state.generatedId}-option-${this.state.activeIndex}`:undefined}connect(){if(this.state.open)this.openChanged(true)}disconnect(){this.cancelPositionRetry();this.unbindPopupListeners();if(this.typeaheadTimer)clearTimeout(this.typeaheadTimer)}setFocus(){this.triggerEl?.focus()}optionsChanged(){if(!this.state.open)return;const t=f(this.state.options);if(!t.includes(this.state.activeIndex))this.state.activeIndex=t[0]??-1;requestAnimationFrame((()=>this.updatePosition()))}loadingChanged(){if(this.state.open)requestAnimationFrame((()=>this.updatePosition()))}openChanged(t){if(t){this.bindPopupListeners();this.schedulePositionUpdate((()=>{this.scrollActiveOptionIntoView();if(this.state.searchable)this.searchEl?.focus()}));return}this.cancelPositionRetry();this.unbindPopupListeners();this.state.searchTerm="";this.state.positionReady=false}searchChanged(){this.state.activeIndex=f(this.state.options)[0]??-1;requestAnimationFrame((()=>{this.updatePosition();this.scrollActiveOptionIntoView()}))}activeIndexChanged(){requestAnimationFrame((()=>this.scrollActiveOptionIntoView()))}openPopup(t,i){if(this.state.isDisabled||!this.state.options.length&&!this.state.isLoading)return;const s=f(this.state.options);this.state.activeIndex=i==="last"?s[s.length-1]??-1:this.state.preferredIndex>=0?this.state.preferredIndex:s[0]??-1;this.state.focusRingVisible=t;this.state.open=true}closePopup(t=false){if(!this.state.open)return;this.state.open=false;if(t)requestAnimationFrame((()=>this.triggerEl?.focus()))}focusSearchOrTrigger(){requestAnimationFrame((()=>this.state.searchable?this.searchEl?.focus():this.triggerEl?.focus()))}isTypeaheadKey(t){return t.key.length===1&&!t.metaKey&&!t.ctrlKey&&!t.altKey}handleTypeahead(t){if(this.typeaheadTimer)clearTimeout(this.typeaheadTimer);this.state.focusRingVisible=true;const i=t.toLocaleLowerCase();const s=this.typeahead.length>0&&[...this.typeahead].every((t=>t===i));this.typeahead=s?i:`${this.typeahead}${i}`;const e=d(this.state.options,this.typeahead,this.state.activeIndex);if(e>=0)this.state.activeIndex=e;const r=n(h.animationDurationMedium1,h.animationDurationMedium1);this.typeaheadTimer=setTimeout((()=>{this.typeahead="";this.typeaheadTimer=null}),r)}scrollActiveOptionIntoView(){if(!this.state.open||!this.activeOptionId)return;this.state.host.querySelector(`#${this.activeOptionId}`)?.scrollIntoView({block:"nearest",inline:"nearest"})}bindPopupListeners(){this.unbindPopupListeners();this.outsideHandler=t=>{if(this.state.host.contains(t.target))return;this.closePopup()};document.addEventListener("mousedown",this.outsideHandler,true);this.position.observe()}unbindPopupListeners(){if(this.outsideHandler){document.removeEventListener("mousedown",this.outsideHandler,true);this.outsideHandler=null}this.position.unobserve()}cancelPositionRetry(){this.position.cancel()}schedulePositionUpdate(t){if(!this.state.open)return;this.state.positionReady=false;this.position.schedule(t)}updatePosition(){return this.position.update()}}export{m as S,c as a,u as b,a as c,p as d,f as e,o as f,r};
|
|
2
|
-
//# sourceMappingURL=p-D1bNvIpb.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["resolveChoiceSections","options","sections","length","flattenChoiceSections","flatMap","section","choiceListUsesIcons","every","option","Boolean","icon","choiceListUsesSubtext","some","subtext","trim","filterChoiceSections","searchTerm","normalized","toLocaleLowerCase","map","sectionMatches","header","includes","filter","label","enabledChoiceIndexes","index","isInactive","moveChoiceIndex","currentIndex","direction","enabled","currentEnabledIndex","indexOf","start","findChoiceTypeaheadMatch","query","offset","Math","max","startsWith","choiceBackgroundClassMap","background","SelectController","constructor","state","this","triggerEl","popupEl","searchEl","typeahead","typeaheadTimer","outsideHandler","setTriggerElement","element","setPopupElement","setSearchElement","handleTriggerKeyDown","event","open","key","preventDefault","openPopup","isTypeaheadKey","searchable","handleTypeahead","handleListKeyDown","focusRingVisible","activeIndex","target","selectOption","closePopup","position","AnchoredPositionController","getAnchor","getPopup","measure","trigger","popup","isConnected","host","contains","sectionPadding","resolveCssLengthPx","TOKEN_DEFAULTS","space050","style","minWidth","choicePopupMinWidth","offsetWidth","anchorRect","getBoundingClientRect","popupWidth","popupHeight","offsetHeight","side","align","sideOffsetPx","alignOffsetPx","resolveChoicePopupAlignOffset","sectionInsetPx","viewportPadPx","viewportWidth","window","innerWidth","viewportHeight","innerHeight","apply","x","y","positionReady","activeOptionId","isLoading","generatedId","undefined","connect","openChanged","disconnect","cancelPositionRetry","unbindPopupListeners","clearTimeout","setFocus","focus","optionsChanged","requestAnimationFrame","updatePosition","loadingChanged","bindPopupListeners","schedulePositionUpdate","scrollActiveOptionIntoView","searchChanged","activeIndexChanged","focusVisible","edge","isDisabled","preferredIndex","restoreFocus","focusSearchOrTrigger","metaKey","ctrlKey","altKey","repeatedCharacter","character","match","resetMs","resolveCssTimeMs","animationDurationMedium1","setTimeout","querySelector","scrollIntoView","block","inline","document","addEventListener","observe","removeEventListener","unobserve","cancel","onReady","schedule","update"],"sources":["src/wc/utils/choice-list.ts","src/wc/utils/select-controller.ts"],"sourcesContent":["export interface ChoiceOption {\n label: string;\n value: string;\n subtext?: string;\n /** Rendered only when every option in the complete list supplies an icon. */\n icon?: string;\n isInactive?: boolean;\n}\n\nexport interface ChoiceSection {\n header?: string;\n options: ChoiceOption[];\n divider?: boolean;\n}\n\nexport type ChoiceBackground =\n | 'faint'\n | 'medium'\n | 'bold'\n | 'strong'\n | 'translucent'\n | 'inverted'\n | 'media'\n | 'always-dark';\n\nexport function resolveChoiceSections(\n options: ChoiceOption[],\n sections: ChoiceSection[],\n): ChoiceSection[] {\n return sections.length > 0 ? sections : [{ options }];\n}\n\nexport function flattenChoiceSections(sections: ChoiceSection[]): ChoiceOption[] {\n return sections.flatMap(section => section.options);\n}\n\n/** A choice list has one stable row layout: every option has an icon, or none do. */\nexport function choiceListUsesIcons(options: ChoiceOption[]): boolean {\n return options.length > 0 && options.every(option => Boolean(option.icon));\n}\n\n/** Once one option needs supporting text, every row keeps the same two-line structure. */\nexport function choiceListUsesSubtext(options: ChoiceOption[]): boolean {\n return options.some(option => Boolean(option.subtext?.trim()));\n}\n\nexport function filterChoiceSections(\n sections: ChoiceSection[],\n searchTerm: string,\n): ChoiceSection[] {\n const normalized = searchTerm.trim().toLocaleLowerCase();\n if (!normalized) return sections;\n\n return sections\n .map(section => {\n const sectionMatches = section.header?.toLocaleLowerCase().includes(normalized);\n return {\n ...section,\n options: sectionMatches\n ? section.options\n : section.options.filter(option =>\n `${option.label} ${option.subtext ?? ''}`.toLocaleLowerCase().includes(normalized),\n ),\n };\n })\n .filter(section => section.options.length > 0);\n}\n\nexport function enabledChoiceIndexes(options: ChoiceOption[]): number[] {\n return options\n .map((option, index) => ({ option, index }))\n .filter(({ option }) => !option.isInactive)\n .map(({ index }) => index);\n}\n\nexport function moveChoiceIndex(\n options: ChoiceOption[],\n currentIndex: number,\n direction: 1 | -1,\n): number {\n const enabled = enabledChoiceIndexes(options);\n if (!enabled.length) return -1;\n\n const currentEnabledIndex = enabled.indexOf(currentIndex);\n const start = currentEnabledIndex >= 0 ? currentEnabledIndex : direction === 1 ? -1 : 0;\n return enabled[(start + direction + enabled.length) % enabled.length];\n}\n\nexport function findChoiceTypeaheadMatch(\n options: ChoiceOption[],\n query: string,\n currentIndex: number,\n): number {\n const normalized = query.toLocaleLowerCase();\n if (!normalized) return -1;\n\n for (let offset = 1; offset <= options.length; offset += 1) {\n const index = (Math.max(currentIndex, -1) + offset) % options.length;\n const option = options[index];\n if (!option.isInactive && option.label.toLocaleLowerCase().startsWith(normalized)) return index;\n }\n return -1;\n}\n\nexport function choiceBackgroundClassMap(\n background: ChoiceBackground | undefined,\n): Record<string, boolean> {\n return {\n 'ds-interaction-fill--on-faint': background === 'faint',\n 'ds-interaction-fill--on-medium': background === 'medium',\n 'ds-interaction-fill--on-bold': background === 'bold',\n 'ds-interaction-fill--on-strong': background === 'strong',\n 'ds-interaction-fill--on-translucent': background === 'translucent',\n 'ds-interaction-fill--on-inverted': background === 'inverted',\n 'ds-interaction-fill--on-media': background === 'media',\n 'ds-interaction-fill--on-always-dark': background === 'always-dark',\n };\n}\n","import { AnchoredPositionController } from './anchored-position-controller';\nimport {\n enabledChoiceIndexes,\n findChoiceTypeaheadMatch,\n moveChoiceIndex,\n type ChoiceOption,\n} from './choice-list';\nimport {\n choicePopupMinWidth,\n resolveChoicePopupAlignOffset,\n} from './choice-popup-alignment';\nimport { resolveCssLengthPx } from './resolve-css-length-px';\nimport { resolveCssTimeMs } from './resolve-css-time-ms';\nimport { TOKEN_DEFAULTS } from './token-defaults';\n\ntype PopupPosition = { x: number; y: number };\n\nexport interface SelectControllerState<T extends ChoiceOption> {\n readonly host: HTMLElement;\n readonly generatedId: string;\n readonly options: T[];\n readonly searchable: boolean;\n readonly isLoading: boolean;\n readonly isDisabled: boolean;\n readonly preferredIndex: number;\n open: boolean;\n activeIndex: number;\n searchTerm: string;\n focusRingVisible: boolean;\n position: PopupPosition;\n positionReady: boolean;\n selectOption(option: T): void;\n}\n\n/**\n * Shared Select/SelectMulti interaction controller.\n *\n * Decorated Stencil state and scalar/array selection remain in each component;\n * this controller owns only popup lifecycle, focus, positioning, typeahead,\n * and listbox keyboard traversal. Anchored placement is delegated to\n * `AnchoredPositionController`; only the choice-cell measurement stays here.\n */\nexport class SelectController<T extends ChoiceOption> {\n private triggerEl: HTMLButtonElement | null = null;\n private popupEl: HTMLDivElement | null = null;\n private searchEl: HTMLInputElement | null = null;\n private typeahead = '';\n private typeaheadTimer: ReturnType<typeof setTimeout> | null = null;\n private outsideHandler: ((event: MouseEvent) => void) | null = null;\n private readonly position: AnchoredPositionController;\n\n constructor(private readonly state: SelectControllerState<T>) {\n this.position = new AnchoredPositionController({\n getAnchor: () => this.triggerEl,\n getPopup: () => this.popupEl,\n measure: (trigger, popup) => {\n if (\n !this.state.open ||\n !popup.isConnected ||\n !this.state.host.contains(popup)\n ) return null;\n\n const sectionPadding = resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n popup.style.minWidth = `${choicePopupMinWidth(trigger.offsetWidth, sectionPadding)}px`;\n\n return {\n anchorRect: trigger.getBoundingClientRect(),\n popupWidth: popup.offsetWidth,\n popupHeight: popup.offsetHeight,\n side: 'bottom',\n align: 'start',\n sideOffsetPx: sectionPadding,\n alignOffsetPx: resolveChoicePopupAlignOffset({\n align: 'start',\n alignOffsetPx: 0,\n sectionInsetPx: sectionPadding,\n }),\n viewportPadPx: sectionPadding,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n };\n },\n apply: ({ x, y }) => {\n this.state.position = { x, y };\n this.state.positionReady = true;\n },\n });\n }\n\n get activeOptionId(): string | undefined {\n return !this.state.isLoading && this.state.activeIndex >= 0\n ? `${this.state.generatedId}-option-${this.state.activeIndex}`\n : undefined;\n }\n\n setTriggerElement = (element: HTMLButtonElement | null) => {\n this.triggerEl = element;\n };\n\n setPopupElement = (element: HTMLDivElement | null) => {\n this.popupEl = element;\n };\n\n setSearchElement = (element: HTMLInputElement | null) => {\n this.searchEl = element;\n };\n\n connect() {\n if (this.state.open) this.openChanged(true);\n }\n\n disconnect() {\n this.cancelPositionRetry();\n this.unbindPopupListeners();\n if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\n }\n\n setFocus() {\n this.triggerEl?.focus();\n }\n\n optionsChanged() {\n if (!this.state.open) return;\n const enabled = enabledChoiceIndexes(this.state.options);\n if (!enabled.includes(this.state.activeIndex)) this.state.activeIndex = enabled[0] ?? -1;\n requestAnimationFrame(() => this.updatePosition());\n }\n\n loadingChanged() {\n if (this.state.open) requestAnimationFrame(() => this.updatePosition());\n }\n\n openChanged(open: boolean) {\n if (open) {\n this.bindPopupListeners();\n this.schedulePositionUpdate(() => {\n this.scrollActiveOptionIntoView();\n if (this.state.searchable) this.searchEl?.focus();\n });\n return;\n }\n this.cancelPositionRetry();\n this.unbindPopupListeners();\n this.state.searchTerm = '';\n this.state.positionReady = false;\n }\n\n searchChanged() {\n this.state.activeIndex = enabledChoiceIndexes(this.state.options)[0] ?? -1;\n requestAnimationFrame(() => {\n this.updatePosition();\n this.scrollActiveOptionIntoView();\n });\n }\n\n activeIndexChanged() {\n requestAnimationFrame(() => this.scrollActiveOptionIntoView());\n }\n\n openPopup(focusVisible: boolean, edge?: 'first' | 'last') {\n if (this.state.isDisabled || (!this.state.options.length && !this.state.isLoading)) return;\n const enabled = enabledChoiceIndexes(this.state.options);\n this.state.activeIndex =\n edge === 'last'\n ? (enabled[enabled.length - 1] ?? -1)\n : this.state.preferredIndex >= 0\n ? this.state.preferredIndex\n : (enabled[0] ?? -1);\n this.state.focusRingVisible = focusVisible;\n this.state.open = true;\n }\n\n closePopup(restoreFocus = false) {\n if (!this.state.open) return;\n this.state.open = false;\n if (restoreFocus) requestAnimationFrame(() => this.triggerEl?.focus());\n }\n\n focusSearchOrTrigger() {\n requestAnimationFrame(() =>\n this.state.searchable ? this.searchEl?.focus() : this.triggerEl?.focus()\n );\n }\n\n handleTriggerKeyDown = (event: KeyboardEvent) => {\n if (!this.state.open) {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n this.openPopup(true, event.key === 'ArrowUp' ? 'last' : 'first');\n } else if (this.isTypeaheadKey(event)) {\n event.preventDefault();\n this.openPopup(true);\n if (this.state.searchable) this.state.searchTerm = event.key;\n else this.handleTypeahead(event.key);\n }\n return;\n }\n this.handleListKeyDown(event);\n };\n\n handleListKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = moveChoiceIndex(\n this.state.options,\n this.state.activeIndex,\n 1,\n );\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = moveChoiceIndex(\n this.state.options,\n this.state.activeIndex,\n -1,\n );\n break;\n case 'Home':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = enabledChoiceIndexes(this.state.options)[0] ?? -1;\n break;\n case 'End': {\n event.preventDefault();\n this.state.focusRingVisible = true;\n const enabled = enabledChoiceIndexes(this.state.options);\n this.state.activeIndex = enabled[enabled.length - 1] ?? -1;\n break;\n }\n case 'Enter':\n case ' ': {\n if (event.key === ' ' && this.state.searchable && event.target === this.searchEl) break;\n event.preventDefault();\n const option = this.state.options[this.state.activeIndex];\n if (option) this.state.selectOption(option);\n break;\n }\n case 'Escape':\n event.preventDefault();\n this.closePopup(true);\n break;\n case 'Tab':\n this.closePopup();\n break;\n default:\n if (!this.state.searchable && this.isTypeaheadKey(event)) {\n this.handleTypeahead(event.key);\n }\n }\n };\n\n private isTypeaheadKey(event: KeyboardEvent) {\n return event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey;\n }\n\n private handleTypeahead(key: string) {\n if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\n this.state.focusRingVisible = true;\n const normalized = key.toLocaleLowerCase();\n const repeatedCharacter =\n this.typeahead.length > 0 &&\n [...this.typeahead].every(character => character === normalized);\n this.typeahead = repeatedCharacter ? normalized : `${this.typeahead}${normalized}`;\n const match = findChoiceTypeaheadMatch(\n this.state.options,\n this.typeahead,\n this.state.activeIndex,\n );\n if (match >= 0) this.state.activeIndex = match;\n const resetMs = resolveCssTimeMs(\n TOKEN_DEFAULTS.animationDurationMedium1,\n TOKEN_DEFAULTS.animationDurationMedium1,\n );\n this.typeaheadTimer = setTimeout(() => {\n this.typeahead = '';\n this.typeaheadTimer = null;\n }, resetMs);\n }\n\n private scrollActiveOptionIntoView() {\n if (!this.state.open || !this.activeOptionId) return;\n this.state.host\n .querySelector<HTMLElement>(`#${this.activeOptionId}`)\n ?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n\n private bindPopupListeners() {\n this.unbindPopupListeners();\n this.outsideHandler = event => {\n if (this.state.host.contains(event.target as Node)) return;\n this.closePopup();\n };\n document.addEventListener('mousedown', this.outsideHandler, true);\n this.position.observe();\n }\n\n private unbindPopupListeners() {\n if (this.outsideHandler) {\n document.removeEventListener('mousedown', this.outsideHandler, true);\n this.outsideHandler = null;\n }\n this.position.unobserve();\n }\n\n private cancelPositionRetry() {\n this.position.cancel();\n }\n\n private schedulePositionUpdate(onReady?: () => void) {\n if (!this.state.open) return;\n this.state.positionReady = false;\n this.position.schedule(onReady);\n }\n\n private updatePosition(): boolean {\n return this.position.update();\n }\n}\n"],"mappings":"2LAyBM,SAAUA,EACdC,EACAC,GAEA,OAAOA,EAASC,OAAS,EAAID,EAAW,CAAC,CAAED,WAC7C,CAEM,SAAUG,EAAsBF,GACpC,OAAOA,EAASG,SAAQC,GAAWA,EAAQL,SAC7C,CAGM,SAAUM,EAAoBN,GAClC,OAAOA,EAAQE,OAAS,GAAKF,EAAQO,OAAMC,GAAUC,QAAQD,EAAOE,OACtE,CAGM,SAAUC,EAAsBX,GACpC,OAAOA,EAAQY,MAAKJ,GAAUC,QAAQD,EAAOK,SAASC,SACxD,CAEM,SAAUC,EACdd,EACAe,GAEA,MAAMC,EAAaD,EAAWF,OAAOI,oBACrC,IAAKD,EAAY,OAAOhB,EAExB,OAAOA,EACJkB,KAAId,IACH,MAAMe,EAAiBf,EAAQgB,QAAQH,oBAAoBI,SAASL,GACpE,MAAO,IACFZ,EACHL,QAASoB,EACLf,EAAQL,QACRK,EAAQL,QAAQuB,QAAOf,GACvB,GAAGA,EAAOgB,SAAShB,EAAOK,SAAW,KAAKK,oBAAoBI,SAASL,KAE5E,IAEFM,QAAOlB,GAAWA,EAAQL,QAAQE,OAAS,GAChD,CAEM,SAAUuB,EAAqBzB,GACnC,OAAOA,EACJmB,KAAI,CAACX,EAAQkB,KAAK,CAAQlB,SAAQkB,YAClCH,QAAO,EAAGf,aAAcA,EAAOmB,aAC/BR,KAAI,EAAGO,WAAYA,GACxB,C,SAEgBE,EACd5B,EACA6B,EACAC,GAEA,MAAMC,EAAUN,EAAqBzB,GACrC,IAAK+B,EAAQ7B,OAAQ,OAAO,EAE5B,MAAM8B,EAAsBD,EAAQE,QAAQJ,GAC5C,MAAMK,EAAQF,GAAuB,EAAIA,EAAsBF,IAAc,GAAI,EAAK,EACtF,OAAOC,GAASG,EAAQJ,EAAYC,EAAQ7B,QAAU6B,EAAQ7B,OAChE,C,SAEgBiC,EACdnC,EACAoC,EACAP,GAEA,MAAMZ,EAAamB,EAAMlB,oBACzB,IAAKD,EAAY,OAAO,EAExB,IAAK,IAAIoB,EAAS,EAAGA,GAAUrC,EAAQE,OAAQmC,GAAU,EAAG,CAC1D,MAAMX,GAASY,KAAKC,IAAIV,GAAc,GAAMQ,GAAUrC,EAAQE,OAC9D,MAAMM,EAASR,EAAQ0B,GACvB,IAAKlB,EAAOmB,YAAcnB,EAAOgB,MAAMN,oBAAoBsB,WAAWvB,GAAa,OAAOS,C,CAE5F,OAAO,CACT,CAEM,SAAUe,EACdC,GAEA,MAAO,CACL,gCAAiCA,IAAe,QAChD,iCAAkCA,IAAe,SACjD,+BAAgCA,IAAe,OAC/C,iCAAkCA,IAAe,SACjD,sCAAuCA,IAAe,cACtD,mCAAoCA,IAAe,WACnD,gCAAiCA,IAAe,QAChD,sCAAuCA,IAAe,cAE1D,C,MC3EaC,EASX,WAAAC,CAA6BC,GAAAC,KAAAD,QARrBC,KAAAC,UAAsC,KACtCD,KAAAE,QAAiC,KACjCF,KAAAG,SAAoC,KACpCH,KAAAI,UAAY,GACZJ,KAAAK,eAAuD,KACvDL,KAAAM,eAAuD,KA+C/DN,KAAAO,kBAAqBC,IACnBR,KAAKC,UAAYO,CAAO,EAG1BR,KAAAS,gBAAmBD,IACjBR,KAAKE,QAAUM,CAAO,EAGxBR,KAAAU,iBAAoBF,IAClBR,KAAKG,SAAWK,CAAO,EAgFzBR,KAAAW,qBAAwBC,IACtB,IAAKZ,KAAKD,MAAMc,KAAM,CACpB,GAAI,CAAC,YAAa,UAAW,QAAS,KAAKrC,SAASoC,EAAME,KAAM,CAC9DF,EAAMG,iBACNf,KAAKgB,UAAU,KAAMJ,EAAME,MAAQ,UAAY,OAAS,Q,MACnD,GAAId,KAAKiB,eAAeL,GAAQ,CACrCA,EAAMG,iBACNf,KAAKgB,UAAU,MACf,GAAIhB,KAAKD,MAAMmB,WAAYlB,KAAKD,MAAM7B,WAAa0C,EAAME,SACpDd,KAAKmB,gBAAgBP,EAAME,I,CAElC,M,CAEFd,KAAKoB,kBAAkBR,EAAM,EAG/BZ,KAAAoB,kBAAqBR,IACnB,OAAQA,EAAME,KACZ,IAAK,YACHF,EAAMG,iBACNf,KAAKD,MAAMsB,iBAAmB,KAC9BrB,KAAKD,MAAMuB,YAAcxC,EACvBkB,KAAKD,MAAM7C,QACX8C,KAAKD,MAAMuB,YACX,GAEF,MACF,IAAK,UACHV,EAAMG,iBACNf,KAAKD,MAAMsB,iBAAmB,KAC9BrB,KAAKD,MAAMuB,YAAcxC,EACvBkB,KAAKD,MAAM7C,QACX8C,KAAKD,MAAMuB,aACX,GAEF,MACF,IAAK,OACHV,EAAMG,iBACNf,KAAKD,MAAMsB,iBAAmB,KAC9BrB,KAAKD,MAAMuB,YAAc3C,EAAqBqB,KAAKD,MAAM7C,SAAS,KAAM,EACxE,MACF,IAAK,MAAO,CACV0D,EAAMG,iBACNf,KAAKD,MAAMsB,iBAAmB,KAC9B,MAAMpC,EAAUN,EAAqBqB,KAAKD,MAAM7C,SAChD8C,KAAKD,MAAMuB,YAAcrC,EAAQA,EAAQ7B,OAAS,KAAM,EACxD,K,CAEF,IAAK,QACL,IAAK,IAAK,CACR,GAAIwD,EAAME,MAAQ,KAAOd,KAAKD,MAAMmB,YAAcN,EAAMW,SAAWvB,KAAKG,SAAU,MAClFS,EAAMG,iBACN,MAAMrD,EAASsC,KAAKD,MAAM7C,QAAQ8C,KAAKD,MAAMuB,aAC7C,GAAI5D,EAAQsC,KAAKD,MAAMyB,aAAa9D,GACpC,K,CAEF,IAAK,SACHkD,EAAMG,iBACNf,KAAKyB,WAAW,MAChB,MACF,IAAK,MACHzB,KAAKyB,aACL,MACF,QACE,IAAKzB,KAAKD,MAAMmB,YAAclB,KAAKiB,eAAeL,GAAQ,CACxDZ,KAAKmB,gBAAgBP,EAAME,I,IArMjCd,KAAK0B,SAAW,IAAIC,EAA2B,CAC7CC,UAAW,IAAM5B,KAAKC,UACtB4B,SAAU,IAAM7B,KAAKE,QACrB4B,QAAS,CAACC,EAASC,KACjB,IACGhC,KAAKD,MAAMc,OACXmB,EAAMC,cACNjC,KAAKD,MAAMmC,KAAKC,SAASH,GAC1B,OAAO,KAET,MAAMI,EAAiBC,EAAmBC,EAAeC,SAAUD,EAAeC,UAClFP,EAAMQ,MAAMC,SAAW,GAAGC,EAAoBX,EAAQY,YAAaP,OAEnE,MAAO,CACLQ,WAAYb,EAAQc,wBACpBC,WAAYd,EAAMW,YAClBI,YAAaf,EAAMgB,aACnBC,KAAM,SACNC,MAAO,QACPC,aAAcf,EACdgB,cAAeC,EAA8B,CAC3CH,MAAO,QACPE,cAAe,EACfE,eAAgBlB,IAElBmB,cAAenB,EACfoB,cAAeC,OAAOC,WACtBC,eAAgBF,OAAOG,YACxB,EAEHC,MAAO,EAAGC,IAAGC,QACX/D,KAAKD,MAAM2B,SAAW,CAAEoC,IAAGC,KAC3B/D,KAAKD,MAAMiE,cAAgB,IAAI,G,CAKrC,kBAAIC,GACF,OAAQjE,KAAKD,MAAMmE,WAAalE,KAAKD,MAAMuB,aAAe,EACtD,GAAGtB,KAAKD,MAAMoE,sBAAsBnE,KAAKD,MAAMuB,cAC/C8C,S,CAeN,OAAAC,GACE,GAAIrE,KAAKD,MAAMc,KAAMb,KAAKsE,YAAY,K,CAGxC,UAAAC,GACEvE,KAAKwE,sBACLxE,KAAKyE,uBACL,GAAIzE,KAAKK,eAAgBqE,aAAa1E,KAAKK,e,CAG7C,QAAAsE,GACE3E,KAAKC,WAAW2E,O,CAGlB,cAAAC,GACE,IAAK7E,KAAKD,MAAMc,KAAM,OACtB,MAAM5B,EAAUN,EAAqBqB,KAAKD,MAAM7C,SAChD,IAAK+B,EAAQT,SAASwB,KAAKD,MAAMuB,aAActB,KAAKD,MAAMuB,YAAcrC,EAAQ,KAAM,EACtF6F,uBAAsB,IAAM9E,KAAK+E,kB,CAGnC,cAAAC,GACE,GAAIhF,KAAKD,MAAMc,KAAMiE,uBAAsB,IAAM9E,KAAK+E,kB,CAGxD,WAAAT,CAAYzD,GACV,GAAIA,EAAM,CACRb,KAAKiF,qBACLjF,KAAKkF,wBAAuB,KAC1BlF,KAAKmF,6BACL,GAAInF,KAAKD,MAAMmB,WAAYlB,KAAKG,UAAUyE,OAAO,IAEnD,M,CAEF5E,KAAKwE,sBACLxE,KAAKyE,uBACLzE,KAAKD,MAAM7B,WAAa,GACxB8B,KAAKD,MAAMiE,cAAgB,K,CAG7B,aAAAoB,GACEpF,KAAKD,MAAMuB,YAAc3C,EAAqBqB,KAAKD,MAAM7C,SAAS,KAAM,EACxE4H,uBAAsB,KACpB9E,KAAK+E,iBACL/E,KAAKmF,4BAA4B,G,CAIrC,kBAAAE,GACEP,uBAAsB,IAAM9E,KAAKmF,8B,CAGnC,SAAAnE,CAAUsE,EAAuBC,GAC/B,GAAIvF,KAAKD,MAAMyF,aAAgBxF,KAAKD,MAAM7C,QAAQE,SAAW4C,KAAKD,MAAMmE,UAAY,OACpF,MAAMjF,EAAUN,EAAqBqB,KAAKD,MAAM7C,SAChD8C,KAAKD,MAAMuB,YACTiE,IAAS,OACJtG,EAAQA,EAAQ7B,OAAS,KAAM,EAChC4C,KAAKD,MAAM0F,gBAAkB,EAC3BzF,KAAKD,MAAM0F,eACVxG,EAAQ,KAAM,EACvBe,KAAKD,MAAMsB,iBAAmBiE,EAC9BtF,KAAKD,MAAMc,KAAO,I,CAGpB,UAAAY,CAAWiE,EAAe,OACxB,IAAK1F,KAAKD,MAAMc,KAAM,OACtBb,KAAKD,MAAMc,KAAO,MAClB,GAAI6E,EAAcZ,uBAAsB,IAAM9E,KAAKC,WAAW2E,S,CAGhE,oBAAAe,GACEb,uBAAsB,IACpB9E,KAAKD,MAAMmB,WAAalB,KAAKG,UAAUyE,QAAU5E,KAAKC,WAAW2E,S,CA0E7D,cAAA3D,CAAeL,GACrB,OAAOA,EAAME,IAAI1D,SAAW,IAAMwD,EAAMgF,UAAYhF,EAAMiF,UAAYjF,EAAMkF,M,CAGtE,eAAA3E,CAAgBL,GACtB,GAAId,KAAKK,eAAgBqE,aAAa1E,KAAKK,gBAC3CL,KAAKD,MAAMsB,iBAAmB,KAC9B,MAAMlD,EAAa2C,EAAI1C,oBACvB,MAAM2H,EACJ/F,KAAKI,UAAUhD,OAAS,GACxB,IAAI4C,KAAKI,WAAW3C,OAAMuI,GAAaA,IAAc7H,IACvD6B,KAAKI,UAAY2F,EAAoB5H,EAAa,GAAG6B,KAAKI,YAAYjC,IACtE,MAAM8H,EAAQ5G,EACZW,KAAKD,MAAM7C,QACX8C,KAAKI,UACLJ,KAAKD,MAAMuB,aAEb,GAAI2E,GAAS,EAAGjG,KAAKD,MAAMuB,YAAc2E,EACzC,MAAMC,EAAUC,EACd7D,EAAe8D,yBACf9D,EAAe8D,0BAEjBpG,KAAKK,eAAiBgG,YAAW,KAC/BrG,KAAKI,UAAY,GACjBJ,KAAKK,eAAiB,IAAI,GACzB6F,E,CAGG,0BAAAf,GACN,IAAKnF,KAAKD,MAAMc,OAASb,KAAKiE,eAAgB,OAC9CjE,KAAKD,MAAMmC,KACRoE,cAA2B,IAAItG,KAAKiE,mBACnCsC,eAAe,CAAEC,MAAO,UAAWC,OAAQ,W,CAGzC,kBAAAxB,GACNjF,KAAKyE,uBACLzE,KAAKM,eAAiBM,IACpB,GAAIZ,KAAKD,MAAMmC,KAAKC,SAASvB,EAAMW,QAAiB,OACpDvB,KAAKyB,YAAY,EAEnBiF,SAASC,iBAAiB,YAAa3G,KAAKM,eAAgB,MAC5DN,KAAK0B,SAASkF,S,CAGR,oBAAAnC,GACN,GAAIzE,KAAKM,eAAgB,CACvBoG,SAASG,oBAAoB,YAAa7G,KAAKM,eAAgB,MAC/DN,KAAKM,eAAiB,I,CAExBN,KAAK0B,SAASoF,W,CAGR,mBAAAtC,GACNxE,KAAK0B,SAASqF,Q,CAGR,sBAAA7B,CAAuB8B,GAC7B,IAAKhH,KAAKD,MAAMc,KAAM,OACtBb,KAAKD,MAAMiE,cAAgB,MAC3BhE,KAAK0B,SAASuF,SAASD,E,CAGjB,cAAAjC,GACN,OAAO/E,KAAK0B,SAASwF,Q","ignoreList":[]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const t="dsChromeTransitionStart";const s="dsChromeTransitionEnd";class e{constructor(){this.depth=0}enter(){this.depth+=1}exit(){this.depth=Math.max(0,this.depth-1)}get isActive(){return this.depth>0}}class n{constructor(){this.active=false}enter(){this.active=true}exit(){this.active=false}get isActive(){return this.active}}function r(t){let s=0;return{schedule(){if(s!==0)return;s=requestAnimationFrame((()=>{s=0;t()}))},cancel(){if(s!==0){cancelAnimationFrame(s);s=0}}}}function i(t){return t.detail?.source}function a(t){return t.detail?.phase}export{n as C,t as a,s as b,r as c,a as d,e,i as r};
|
|
2
|
-
//# sourceMappingURL=p-D2x17ei-.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["CHROME_TRANSITION_START","CHROME_TRANSITION_END","ChromeTransitionDepth","constructor","this","depth","enter","exit","Math","max","isActive","ChromeTransitionGate","active","createRafCoalescer","onFrame","rafId","schedule","requestAnimationFrame","cancel","cancelAnimationFrame","readChromeTransitionSource","event","detail","source","readChromeTransitionPhase","phase"],"sources":["src/wc/shell/chrome-transition.ts"],"sourcesContent":["/** Bubbling/composed events — `ds-shell-app` and `ds-bar-nav` coordinate during width motion. */\n\nexport const CHROME_TRANSITION_START = 'dsChromeTransitionStart';\nexport const CHROME_TRANSITION_END = 'dsChromeTransitionEnd';\n\nexport type ChromeTransitionSource = 'panel-nav' | 'panel-tools';\n\nexport interface ChromeTransitionDetail {\n source: ChromeTransitionSource;\n /** Panel-tools drawer motion direction; omitted for panel-nav. */\n phase?: 'opening' | 'closing';\n}\n\n/** Reference-counted gate — used while panel-nav width is transitioning. */\nexport class ChromeTransitionDepth {\n private depth = 0;\n\n enter(): void {\n this.depth += 1;\n }\n\n exit(): void {\n this.depth = Math.max(0, this.depth - 1);\n }\n\n get isActive(): boolean {\n return this.depth > 0;\n }\n}\n\n/** Idempotent gate for one physical chrome surface.\n * Duplicate start notifications still require only one matching end. */\nexport class ChromeTransitionGate {\n private active = false;\n\n enter(): void {\n this.active = true;\n }\n\n exit(): void {\n this.active = false;\n }\n\n get isActive(): boolean {\n return this.active;\n }\n}\n\nexport interface RafCoalescer {\n schedule(): void;\n cancel(): void;\n}\n\n/** Coalesce bursty layout work (ResizeObserver, prop churn) to one callback per frame. */\nexport function createRafCoalescer(onFrame: () => void): RafCoalescer {\n let rafId = 0;\n return {\n schedule() {\n if (rafId !== 0) return;\n rafId = requestAnimationFrame(() => {\n rafId = 0;\n onFrame();\n });\n },\n cancel() {\n if (rafId !== 0) {\n cancelAnimationFrame(rafId);\n rafId = 0;\n }\n },\n };\n}\n\nexport function readChromeTransitionSource(event: Event): ChromeTransitionSource | undefined {\n return (event as CustomEvent<ChromeTransitionDetail>).detail?.source;\n}\n\nexport function readChromeTransitionPhase(event: Event): ChromeTransitionDetail['phase'] {\n return (event as CustomEvent<ChromeTransitionDetail>).detail?.phase;\n}\n"],"mappings":"AAEO,MAAMA,EAA0B,0BAChC,MAAMC,EAAwB,wB,MAWxBC,EAAb,WAAAC,GACUC,KAAAC,MAAQ,C,CAEhB,KAAAC,GACEF,KAAKC,OAAS,C,CAGhB,IAAAE,GACEH,KAAKC,MAAQG,KAAKC,IAAI,EAAGL,KAAKC,MAAQ,E,CAGxC,YAAIK,GACF,OAAON,KAAKC,MAAQ,C,QAMXM,EAAb,WAAAR,GACUC,KAAAQ,OAAS,K,CAEjB,KAAAN,GACEF,KAAKQ,OAAS,I,CAGhB,IAAAL,GACEH,KAAKQ,OAAS,K,CAGhB,YAAIF,GACF,OAAON,KAAKQ,M,EAUV,SAAUC,EAAmBC,GACjC,IAAIC,EAAQ,EACZ,MAAO,CACL,QAAAC,GACE,GAAID,IAAU,EAAG,OACjBA,EAAQE,uBAAsB,KAC5BF,EAAQ,EACRD,GAAS,G,EAGb,MAAAI,GACE,GAAIH,IAAU,EAAG,CACfI,qBAAqBJ,GACrBA,EAAQ,C,GAIhB,CAEM,SAAUK,EAA2BC,GACzC,OAAQA,EAA8CC,QAAQC,MAChE,CAEM,SAAUC,EAA0BH,GACxC,OAAQA,EAA8CC,QAAQG,KAChE,Q","ignoreList":[]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as s,H as e,h as t,a as r,t as n}from"./index.js";import{d as i}from"./p-BAfG3M8z.js";import{d as a}from"./p-CPwpgUWT.js";const o=()=>`.sc-ds-agent-source-list-h{display:block}.agent-sources.sc-ds-agent-source-list{border-block-start:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}summary.sc-ds-agent-source-list{align-items:center;cursor:default;display:flex;gap:var(--dimension-space-050);list-style:none;padding-block:var(--dimension-space-075)}summary.sc-ds-agent-source-list::-webkit-details-marker{display:none}details[open].sc-ds-agent-source-list summary.sc-ds-agent-source-list ds-icon.sc-ds-agent-source-list{transform:rotate(90deg)}ol.sc-ds-agent-source-list{display:grid;gap:var(--dimension-space-075);margin:0;padding:0 0 var(--dimension-space-075) var(--dimension-space-150)}li.sc-ds-agent-source-list{display:grid;gap:var(--dimension-space-025)}a.sc-ds-agent-source-list{align-items:center;color:inherit;display:inline-flex;gap:var(--dimension-space-025);text-decoration-color:var(--color-foreground-tertiary);width:fit-content}@media (prefers-reduced-motion: no-preference){summary.sc-ds-agent-source-list ds-icon.sc-ds-agent-source-list{transition:transform var(--effect-motion-short-2)}}`;const c=s(class s extends e{constructor(s){super();if(s!==false){this.__registerHost()}this.items=[];this.heading="Sources";this.open=false}safeUrl(s){try{const e=new URL(s,document.baseURI);return e.protocol==="http:"||e.protocol==="https:"?e.href:undefined}catch{return undefined}}render(){if(!this.items.length)return null;return t(r,null,t("details",{class:"agent-sources",open:this.open},t("summary",null,t("ds-icon",{name:"ChevronRight",size:"xs",color:"inherit"}),t("ds-text",{variant:"text-body-small",emphasis:true},this.heading," · ",this.items.length)),t("ol",null,this.items.map((s=>{const e=this.safeUrl(s.url);return t("li",null,e?t("a",{href:e,target:"_blank",rel:"noopener noreferrer"},t("ds-text",{variant:"text-body-small",emphasis:true},s.title),t("ds-icon",{name:"ExternalLink",size:"xs",color:"inherit"})):t("ds-text",{variant:"text-body-small",emphasis:true},s.title),s.description?t("ds-text",{variant:"text-caption",color:"secondary"},s.description):null)})))))}static get style(){return o()}},[2,"ds-agent-source-list",{items:[16],heading:[1],open:[4]}]);function d(){if(typeof customElements==="undefined"){return}const s=["ds-agent-source-list","ds-icon","ds-text"];s.forEach((s=>{switch(s){case"ds-agent-source-list":if(!customElements.get(n(s))){customElements.define(n(s),c)}break;case"ds-icon":if(!customElements.get(n(s))){i()}break;case"ds-text":if(!customElements.get(n(s))){a()}break}}))}d();export{c as A,d};
|
|
2
|
-
//# sourceMappingURL=p-DIFUsoM-.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["agentSourceListCss","AgentSourceList","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","items","heading","open","safeUrl","value","parsed","URL","document","baseURI","protocol","href","undefined","render","length","h","Host","class","name","size","color","variant","emphasis","map","source","url","target","rel","title","description"],"sources":["src/wc/components/AgentSourceList/AgentSourceList.css?tag=ds-agent-source-list&encapsulation=scoped","src/wc/components/AgentSourceList/AgentSourceList.tsx"],"sourcesContent":[":host { display: block; }\n.agent-sources { border-block-start: var(--dimension-stroke-width-012) solid var(--color-border-tertiary); }\nsummary { align-items: center; cursor: default; display: flex; gap: var(--dimension-space-050); list-style: none; padding-block: var(--dimension-space-075); }\nsummary::-webkit-details-marker { display: none; }\ndetails[open] summary ds-icon { transform: rotate(90deg); }\nol { display: grid; gap: var(--dimension-space-075); margin: 0; padding: 0 0 var(--dimension-space-075) var(--dimension-space-150); }\nli { display: grid; gap: var(--dimension-space-025); }\na { align-items: center; color: inherit; display: inline-flex; gap: var(--dimension-space-025); text-decoration-color: var(--color-foreground-tertiary); width: fit-content; }\n\n@media (prefers-reduced-motion: no-preference) { summary ds-icon { transition: transform var(--effect-motion-short-2); } }\n","import { Component, Prop, h, Host } from '@stencil/core';\nimport type { AgentSource } from '../conversation-types';\n\n@Component({ tag: 'ds-agent-source-list', styleUrl: 'AgentSourceList.css', scoped: true })\nexport class AgentSourceList {\n @Prop() items: AgentSource[] = [];\n @Prop() heading: string = 'Sources';\n @Prop() open: boolean = false;\n\n private safeUrl(value: string) {\n try {\n const parsed = new URL(value, document.baseURI);\n return parsed.protocol === 'http:' || parsed.protocol === 'https:' ? parsed.href : undefined;\n } catch { return undefined; }\n }\n\n render() {\n if (!this.items.length) return null;\n return (\n <Host>\n <details class=\"agent-sources\" open={this.open}>\n <summary>\n <ds-icon name=\"ChevronRight\" size=\"xs\" color=\"inherit\" />\n <ds-text variant=\"text-body-small\" emphasis>{this.heading} · {this.items.length}</ds-text>\n </summary>\n <ol>\n {this.items.map(source => {\n const href = this.safeUrl(source.url);\n return <li>\n {href\n ? <a href={href} target=\"_blank\" rel=\"noopener noreferrer\"><ds-text variant=\"text-body-small\" emphasis>{source.title}</ds-text><ds-icon name=\"ExternalLink\" size=\"xs\" color=\"inherit\" /></a>\n : <ds-text variant=\"text-body-small\" emphasis>{source.title}</ds-text>}\n {source.description ? <ds-text variant=\"text-caption\" color=\"secondary\">{source.description}</ds-text> : null}\n </li>;\n })}\n </ol>\n </details>\n </Host>\n );\n }\n}\n"],"mappings":"mIAAA,MAAMA,EAAqB,IAAM,ukC,MCIpBC,EAAeC,EAAA,MAAAD,UAAAE,EAD5B,WAAAC,CAAAC,G,4CAEUC,KAAAC,MAAuB,GACvBD,KAAAE,QAAkB,UAClBF,KAAAG,KAAgB,KAiCzB,CA/BS,OAAAC,CAAQC,GACd,IACE,MAAMC,EAAS,IAAIC,IAAIF,EAAOG,SAASC,SACvC,OAAOH,EAAOI,WAAa,SAAWJ,EAAOI,WAAa,SAAWJ,EAAOK,KAAOC,S,CACnF,MAAQ,OAAOA,S,EAGnB,MAAAC,GACE,IAAKb,KAAKC,MAAMa,OAAQ,OAAO,KAC/B,OACEC,EAACC,EAAI,KACHD,EAAA,WAASE,MAAM,gBAAgBd,KAAMH,KAAKG,MACxCY,EAAA,eACEA,EAAA,WAASG,KAAK,eAAeC,KAAK,KAAKC,MAAM,YAC7CL,EAAA,WAASM,QAAQ,kBAAkBC,SAAQ,MAAEtB,KAAKE,QAAO,MAAKF,KAAKC,MAAMa,SAE3EC,EAAA,UACGf,KAAKC,MAAMsB,KAAIC,IACd,MAAMb,EAAOX,KAAKI,QAAQoB,EAAOC,KACjC,OAAOV,EAAA,UACJJ,EACGI,EAAA,KAAGJ,KAAMA,EAAMe,OAAO,SAASC,IAAI,uBAAsBZ,EAAA,WAASM,QAAQ,kBAAkBC,SAAQ,MAAEE,EAAOI,OAAgBb,EAAA,WAASG,KAAK,eAAeC,KAAK,KAAKC,MAAM,aAC1KL,EAAA,WAASM,QAAQ,kBAAkBC,SAAQ,MAAEE,EAAOI,OACvDJ,EAAOK,YAAcd,EAAA,WAASM,QAAQ,eAAeD,MAAM,aAAaI,EAAOK,aAAyB,KACtG,M","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["INSET_ACTION_SIZE","lg","md","sm","xs","ChoiceSearch","size","value","placeholder","ariaLabel","controls","activeDescendant","disabled","inputRef","clearLabel","onValueChange","onClear","onKeyDown","inputElement","h","class","name","color","CONTROL_TEXT_VARIANT","replace","ref","element","type","onInput","event","target","label","side","variant","icon","hasBorder","rounded","onDsChange","stopPropagation","onDsClick","requestAnimationFrame","focus","ChoiceFooter","summary","as","onClick","ChoiceOptionRow","id","option","selected","active","focusRingVisible","usesSubtext","leading","onHover","onSelect","isInactive","role","String","undefined","onMouseDown","preventDefault","onMouseMove","CONTROL_SUPPORTING_TEXT_VARIANT","subtext","trim"],"sources":["src/wc/utils/choice-list-parts.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-unused-vars -- Stencil's configured JSX factory requires h at compile time.\nimport { FunctionalComponent, h, VNode } from '@stencil/core';\nimport type { ChoiceOption } from './choice-list';\nimport {\n CONTROL_SUPPORTING_TEXT_VARIANT,\n CONTROL_TEXT_VARIANT,\n type ControlSize,\n} from './control-text';\n\nconst INSET_ACTION_SIZE: Record<ControlSize, 'md' | 'sm' | 'xs'> = {\n lg: 'md',\n md: 'sm',\n sm: 'xs',\n xs: 'xs',\n};\n\ninterface ChoiceSearchProps {\n size?: ControlSize;\n value: string;\n placeholder: string;\n ariaLabel?: string;\n controls?: string;\n activeDescendant?: string;\n disabled?: boolean;\n inputRef: (element: HTMLInputElement | null) => void;\n clearLabel: string;\n onValueChange: (value: string) => void;\n onClear?: () => void;\n onKeyDown: (event: KeyboardEvent) => void;\n}\n\nexport const ChoiceSearch: FunctionalComponent<ChoiceSearchProps> = ({\n size = 'md',\n value,\n placeholder,\n ariaLabel,\n controls,\n activeDescendant,\n disabled = false,\n inputRef,\n clearLabel,\n onValueChange,\n onClear,\n onKeyDown,\n}) => {\n let inputElement: HTMLInputElement | null = null;\n\n return (\n <div class=\"select-search\">\n <div class={`select-search__control ds-control--${size}`}>\n <ds-icon name=\"MagnifyingGlass\" size={size} color=\"inherit\" />\n <input\n class={`ds-text--${CONTROL_TEXT_VARIANT[size].replace('text-', '')} ds-text--regular`}\n ref={element => {\n inputElement = (element as HTMLInputElement) ?? null;\n inputRef(inputElement);\n }}\n type=\"search\"\n value={value}\n placeholder={placeholder}\n disabled={disabled}\n aria-label={ariaLabel ?? placeholder}\n aria-controls={controls}\n aria-activedescendant={activeDescendant}\n onInput={event => onValueChange((event.target as HTMLInputElement).value)}\n onKeyDown={onKeyDown}\n />\n {value && !disabled && (\n <ds-tooltip\n class=\"select-search__clear-tooltip\"\n label={clearLabel}\n side=\"top\"\n size=\"sm\"\n >\n <ds-button-unfilled\n class=\"select-search__clear\"\n variant=\"icon\"\n size={INSET_ACTION_SIZE[size]}\n icon=\"CrossCircle\"\n hasBorder={false}\n rounded\n ariaLabel={clearLabel}\n onDsChange={event => event.stopPropagation()}\n onDsClick={() => {\n onValueChange('');\n onClear?.();\n requestAnimationFrame(() => inputElement?.focus());\n }}\n />\n </ds-tooltip>\n )}\n </div>\n </div>\n );\n};\n\ninterface ChoiceFooterProps {\n size?: ControlSize;\n clearLabel: string;\n summary?: string;\n onClear: (event: MouseEvent) => void;\n}\n\nexport const ChoiceFooter: FunctionalComponent<ChoiceFooterProps> = ({\n size = 'md',\n clearLabel,\n summary,\n onClear,\n}) => (\n <div class=\"ds-choice-footer\">\n <div class={`ds-choice-footer__content ds-control--${size}`}>\n {summary && (\n <ds-text class=\"ds-choice-footer__summary\" as=\"span\" variant={CONTROL_TEXT_VARIANT[size]} color=\"secondary\">\n {summary}\n </ds-text>\n )}\n <button\n type=\"button\"\n class=\"ds-choice-footer__clear ds-focus-ring\"\n onClick={onClear}\n >\n <ds-text as=\"span\" variant={CONTROL_TEXT_VARIANT[size]} color=\"inherit\">\n {clearLabel}\n </ds-text>\n </button>\n </div>\n </div>\n);\n\ninterface ChoiceOptionRowProps {\n size?: ControlSize;\n id: string;\n option: ChoiceOption;\n selected: boolean;\n active: boolean;\n focusRingVisible: boolean;\n usesSubtext: boolean;\n leading?: VNode;\n onHover: () => void;\n onSelect: () => void;\n}\n\nexport const ChoiceOptionRow: FunctionalComponent<ChoiceOptionRowProps> = ({\n size = 'md',\n id,\n option,\n selected,\n active,\n focusRingVisible,\n usesSubtext,\n leading,\n onHover,\n onSelect,\n}) => (\n <div\n id={id}\n class={{\n 'select-option': true,\n 'ds-choice-item': true,\n 'ds-control-frame': true,\n [`ds-control--${size}`]: true,\n 'ds-focus-ring-inset': true,\n 'ds-focus-ring--visible': active && focusRingVisible,\n 'ds-interaction-fill': !option.isInactive,\n 'ds-interaction-fill--selected': selected && !option.isInactive,\n 'ds-control-inactive': !!option.isInactive,\n 'select-option--active': active,\n }}\n role=\"option\"\n aria-selected={String(selected)}\n aria-disabled={option.isInactive ? 'true' : undefined}\n onMouseDown={event => event.preventDefault()}\n onMouseMove={() => {\n if (!option.isInactive) onHover();\n }}\n onClick={onSelect}\n >\n {leading}\n <div class=\"ds-choice-item__content ds-interaction-fill__content\">\n <ds-text\n class=\"ds-choice-item__label ds-control-label-box\"\n as=\"span\"\n variant={CONTROL_TEXT_VARIANT[size]}\n color={selected ? 'primary' : 'secondary'}\n >\n {option.label}\n </ds-text>\n {usesSubtext && (\n <ds-text class=\"ds-choice-item__subtext ds-control-label-box\" as=\"span\" variant={CONTROL_SUPPORTING_TEXT_VARIANT[size]} color=\"secondary\">\n {option.subtext?.trim() || '—'}\n </ds-text>\n )}\n </div>\n </div>\n);\n"],"mappings":"0EASA,MAAMA,EAA6D,CACjEC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MAkBC,MAAMC,EAAuD,EAClEC,OAAO,KACPC,QACAC,cACAC,YACAC,WACAC,mBACAC,WAAW,MACXC,WACAC,aACAC,gBACAC,UACAC,gBAEA,IAAIC,EAAwC,KAE5C,OACEC,EAAA,OAAKC,MAAM,iBACTD,EAAA,OAAKC,MAAO,sCAAsCd,KAChDa,EAAA,WAASE,KAAK,kBAAkBf,KAAMA,EAAMgB,MAAM,YAClDH,EAAA,SACEC,MAAO,YAAYG,EAAqBjB,GAAMkB,QAAQ,QAAS,uBAC/DC,IAAKC,IACHR,EAAgBQ,GAAgC,KAChDb,EAASK,EAAa,EAExBS,KAAK,SACLpB,MAAOA,EACPC,YAAaA,EACbI,SAAUA,EAAQ,aACNH,GAAaD,EAAW,gBACrBE,EAAQ,wBACAC,EACvBiB,QAASC,GAASd,EAAec,EAAMC,OAA4BvB,OACnEU,UAAWA,IAEZV,IAAUK,GACTO,EAAA,cACEC,MAAM,+BACNW,MAAOjB,EACPkB,KAAK,MACL1B,KAAK,MAELa,EAAA,sBACEC,MAAM,uBACNa,QAAQ,OACR3B,KAAMN,EAAkBM,GACxB4B,KAAK,cACLC,UAAW,MACXC,QAAO,KACP3B,UAAWK,EACXuB,WAAYR,GAASA,EAAMS,kBAC3BC,UAAW,KACTxB,EAAc,IACdC,MACAwB,uBAAsB,IAAMtB,GAAcuB,SAAQ,MAMxD,EAWH,MAAMC,EAAuD,EAClEpC,OAAO,KACPQ,aACA6B,UACA3B,aAEAG,EAAA,OAAKC,MAAM,oBACTD,EAAA,OAAKC,MAAO,yCAAyCd,KAClDqC,GACCxB,EAAA,WAASC,MAAM,4BAA4BwB,GAAG,OAAOX,QAASV,EAAqBjB,GAAOgB,MAAM,aAC7FqB,GAGLxB,EAAA,UACEQ,KAAK,SACLP,MAAM,wCACNyB,QAAS7B,GAETG,EAAA,WAASyB,GAAG,OAAOX,QAASV,EAAqBjB,GAAOgB,MAAM,WAC3DR,MAoBJ,MAAMgC,EAA6D,EACxExC,OAAO,KACPyC,KACAC,SACAC,WACAC,SACAC,mBACAC,cACAC,UACAC,UACAC,cAEApC,EAAA,OACE4B,GAAIA,EACJ3B,MAAO,CACL,gBAAiB,KACjB,iBAAkB,KAClB,mBAAoB,KACpB,CAAC,eAAed,KAAS,KACzB,sBAAuB,KACvB,yBAA0B4C,GAAUC,EACpC,uBAAwBH,EAAOQ,WAC/B,gCAAiCP,IAAaD,EAAOQ,WACrD,wBAAyBR,EAAOQ,WAChC,wBAAyBN,GAE3BO,KAAK,SAAQ,gBACEC,OAAOT,GAAS,gBAChBD,EAAOQ,WAAa,OAASG,UAC5CC,YAAa/B,GAASA,EAAMgC,iBAC5BC,YAAa,KACX,IAAKd,EAAOQ,WAAYF,GAAS,EAEnCT,QAASU,GAERF,EACDlC,EAAA,OAAKC,MAAM,wDACTD,EAAA,WACEC,MAAM,6CACNwB,GAAG,OACHX,QAASV,EAAqBjB,GAC9BgB,MAAO2B,EAAW,UAAY,aAE7BD,EAAOjB,OAETqB,GACCjC,EAAA,WAASC,MAAM,+CAA+CwB,GAAG,OAAOX,QAAS8B,EAAgCzD,GAAOgB,MAAM,aAC3H0B,EAAOgB,SAASC,QAAU,c","ignoreList":[]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as e,H as s,h as r,a as o,t as a}from"./index.js";import{d}from"./p-BFRMwl93.js";import{d as t}from"./p-huw1oRbt.js";import{d as n}from"./p-38PfdMkF.js";import{d as i}from"./p-BAfG3M8z.js";import{d as c}from"./p-Ca-I2UnB.js";import{d as h}from"./p-CPwpgUWT.js";import{d as m}from"./p-69lHhJiX.js";const l=()=>`.sc-ds-markdown:where(.ds-prose){display:block;box-sizing:border-box;max-inline-size:100%;min-inline-size:0;color:inherit;overflow-wrap:anywhere}.sc-ds-markdown:where(.ds-prose) :where(p,ul.sc-ds-markdown,ol.sc-ds-markdown,dl.sc-ds-markdown,blockquote.sc-ds-markdown,figure.sc-ds-markdown,figcaption.sc-ds-markdown,table).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin:0;color:inherit;font-family:var(--typography-font-family);font-size:var(--typography-fontsize-md);font-weight:var(--typography-weight-regular);line-height:var(--typography-lineheight-md);letter-spacing:var(--typography-letterspacing-negative-half)}.sc-ds-markdown:where(.ds-prose) :where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin:0;color:var(--color-foreground-primary);font-family:var(--typography-font-family);font-weight:var(--typography-weight-semibold)}.sc-ds-markdown:where(.ds-prose) :where(h1,h2).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-size:var(--typography-fontsize-xl);line-height:var(--typography-lineheight-xl);letter-spacing:var(--typography-letterspacing-negative-double)}.sc-ds-markdown:where(.ds-prose) :where(h3,h4).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-size:var(--typography-fontsize-lg);line-height:var(--typography-lineheight-lg);letter-spacing:var(--typography-letterspacing-negative)}.sc-ds-markdown:where(.ds-prose) :where(h5,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md);letter-spacing:var(--typography-letterspacing-negative)}.sc-ds-markdown:where(.ds-prose)>.sc-ds-markdown:where(*+*){margin-block-start:var(--dimension-space-150)}.sc-ds-markdown:where(.ds-prose)>:where(*)+:where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-200)}.sc-ds-markdown:where(.ds-prose)>:where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown+.sc-ds-markdown:where(*){margin-block-start:var(--dimension-space-100)}.sc-ds-markdown:where(.ds-prose) :where(blockquote,li.sc-ds-markdown,dd)>.sc-ds-markdown:where(*+*):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(li+li.sc-ds-markdown,dt+dd).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(ul,ol).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding-inline-start:var(--dimension-space-300)}.sc-ds-markdown:where(.ds-prose) :where(li>ul.sc-ds-markdown,li>ol).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(li>input[type='checkbox']):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-inline-end:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(blockquote):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding-inline-start:var(--dimension-space-150);border-inline-start:var(--dimension-stroke-width-025) solid var(--color-border-secondary);color:var(--color-foreground-secondary)}.sc-ds-markdown:where(.ds-prose) :where(strong,b).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-weight:var(--typography-weight-medium)}.sc-ds-markdown:where(.ds-prose) :where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6) .sc-ds-markdown:where(strong,b).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-weight:inherit}.sc-ds-markdown:where(.ds-prose) :where(a):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{color:var(--color-foreground-brand);text-decoration:underline;text-decoration-color:var(--color-foreground-tertiary)}.sc-ds-markdown:where(.ds-prose) :where(code):not(:where(pre code.sc-ds-markdown,[data-ds-prose='off'].sc-ds-markdown,[data-ds-prose='off'] *)).sc-ds-markdown{padding:var(--dimension-space-012) var(--dimension-space-025);border-radius:var(--dimension-radius-025);background:var(--color-background-secondary);font-family:var(--typography-fontfamily-mono);font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none)}.sc-ds-markdown:where(.ds-prose) :where(pre):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{box-sizing:border-box;max-inline-size:100%;min-inline-size:0;margin:0;padding:var(--dimension-space-150);overflow:auto;border-radius:var(--dimension-radius-050);background:var(--color-background-strong-neutral);color:var(--color-foreground-faint-neutral);font-family:var(--typography-fontfamily-mono);font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none);tab-size:2}.sc-ds-markdown:where(.ds-prose) :where(pre code):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding:0;background:transparent;color:inherit;font:inherit;letter-spacing:inherit;white-space:pre}.sc-ds-markdown:where(.ds-prose) :where(hr):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin:0;border:0;border-block-start:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.sc-ds-markdown:where(.ds-prose__table-scroll){box-sizing:border-box;max-inline-size:100%;min-inline-size:0;overflow-x:auto}.sc-ds-markdown:where(.ds-prose) :where(table):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{inline-size:100%;border-collapse:collapse}.sc-ds-markdown:where(.ds-prose) :where(th,td).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding:var(--dimension-space-075);border:var(--dimension-stroke-width-012) solid var(--color-border-tertiary);text-align:start;vertical-align:top;overflow-wrap:anywhere}.sc-ds-markdown:where(.ds-prose) :where(th):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{color:var(--color-foreground-primary);font-weight:var(--typography-weight-medium)}.sc-ds-markdown:where(.ds-prose) :where(img,video.sc-ds-markdown,svg).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{max-inline-size:100%;block-size:auto}.sc-ds-markdown:where(.ds-prose) :where(figcaption):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050);color:var(--color-foreground-secondary);font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none)}.sc-ds-markdown-h{display:block;min-width:0;color:inherit;box-sizing:border-box;-webkit-user-select:text;user-select:text}`;let w;function p(){w??(w=Promise.all([import("./p-BjtXYFhw.js"),import("./p-DVsje4AY.js"),import("./p-gidVv1FX.js")]).then((([e,s,r])=>({fromMarkdown:e.fromMarkdown,gfmFromMarkdown:s.gfmFromMarkdown,gfm:r.gfm}))));return w}function f(e){if(!e)return undefined;try{const s=new URL(e,document.baseURI);if(!["http:","https:","mailto:"].includes(s.protocol))return undefined;return s.href}catch{return undefined}}const k=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.content="";this.streaming=false;this.tree=null;this.parseRevision=0}componentWillLoad(){if(typeof document!=="undefined")return this.parse()}disconnectedCallback(){this.parseRevision+=1;if(this.parseFrame&&typeof cancelAnimationFrame==="function"){cancelAnimationFrame(this.parseFrame)}}scheduleParse(){if(typeof requestAnimationFrame!=="function")return;if(this.parseFrame)cancelAnimationFrame(this.parseFrame);this.parseFrame=requestAnimationFrame((()=>{this.parseFrame=undefined;void this.parse()}))}async parse(){const e=++this.parseRevision;try{const{fromMarkdown:s,gfmFromMarkdown:r,gfm:o}=await p();const a=s(this.content,{extensions:[o()],mdastExtensions:[r()]});if(e===this.parseRevision)this.tree=a}catch{if(e===this.parseRevision)this.tree=null}}children(e){if(!("children"in e))return[];return e.children.map((e=>this.renderNode(e)))}renderNode(e){switch(e.type){case"root":return this.children(e);case"text":return r("span",{class:"markdown__text"},e.value);case"paragraph":return r("p",{class:"markdown__paragraph"},this.children(e));case"heading":{const s=`h${e.depth}`;return r(s,{class:"markdown__heading"},this.children(e))}case"strong":return r("strong",{class:"markdown__strong"},this.children(e));case"emphasis":return r("em",{class:"markdown__emphasis"},this.children(e));case"delete":return r("del",{class:"markdown__delete"},this.children(e));case"blockquote":return r("blockquote",{class:"markdown__blockquote"},this.children(e));case"break":return r("br",{class:"markdown__break"});case"thematicBreak":return r("hr",{class:"markdown__thematic-break"});case"inlineCode":return r("code",{class:"markdown__inline-code"},e.value);case"code":return r("ds-code-block",{class:"markdown__code-block","data-ds-prose":"off",code:e.value,language:e.lang??"",filename:e.meta??""});case"link":{const s=f(e.url);return s?r("a",{class:"markdown__link",href:s,target:"_blank",rel:"noopener noreferrer"},this.children(e)):this.children(e)}case"list":{const s=e.ordered?"ol":"ul";return r(s,{class:"markdown__list",start:e.ordered&&e.start?e.start:undefined},this.children(e))}case"listItem":return r("li",{class:"markdown__list-item"},typeof e.checked==="boolean"?r("input",{class:"markdown__task-indicator",type:"checkbox",checked:e.checked,disabled:true,"aria-hidden":"true",tabIndex:-1}):null,this.children(e));case"table":{const[s,...o]=e.children;return r("div",{class:"markdown__table-wrap ds-prose__table-scroll",tabIndex:0},r("table",{class:"markdown__table"},s?r("thead",{class:"markdown__table-head"},r("tr",{class:"markdown__table-row"},s.children.map((e=>r("th",{class:"markdown__table-heading",scope:"col"},this.children(e)))))):null,r("tbody",{class:"markdown__table-body"},o.map((e=>this.renderNode(e))))))}case"tableRow":return r("tr",{class:"markdown__table-row"},this.children(e));case"tableCell":return r("td",{class:"markdown__table-cell"},this.children(e));case"image":{const s=f(e.url);return s?r("a",{class:"markdown__image-link",href:s,target:"_blank",rel:"noopener noreferrer"},e.alt||"View image"):e.alt||null}case"html":case"definition":case"footnoteDefinition":return null;case"footnoteReference":return r("sup",{class:"markdown__footnote"},e.label);default:return this.children(e)}}render(){return r(o,{key:"d9fdf301dd2d4c5983d1f5435770584b7b59c779","aria-busy":this.streaming?"true":undefined},r("div",{key:"3a039646c8abd991001b16093fc157229beea106",class:"markdown ds-prose"},this.tree?this.renderNode(this.tree):r("p",{class:"markdown__paragraph"},r("span",{class:"markdown__text"},this.content))))}static get watchers(){return{content:[{scheduleParse:0}]}}static get style(){return l()}},[2,"ds-markdown",{content:[1],streaming:[4],tree:[32]},undefined,{content:[{scheduleParse:0}]}]);function g(){if(typeof customElements==="undefined"){return}const e=["ds-markdown","ds-badge","ds-button-unfilled","ds-code-block","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-markdown":if(!customElements.get(a(e))){customElements.define(a(e),k)}break;case"ds-badge":if(!customElements.get(a(e))){d()}break;case"ds-button-unfilled":if(!customElements.get(a(e))){t()}break;case"ds-code-block":if(!customElements.get(a(e))){n()}break;case"ds-icon":if(!customElements.get(a(e))){i()}break;case"ds-loader":if(!customElements.get(a(e))){c()}break;case"ds-text":if(!customElements.get(a(e))){h()}break;case"ds-tooltip":if(!customElements.get(a(e))){m()}break}}))}g();export{k as M,g as d};
|
|
2
|
-
//# sourceMappingURL=p-DmAHufd5.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["markdownCss","parserPromise","loadParser","Promise","all","import","then","fromMarkdownModule","gfmFromMarkdownModule","gfmModule","fromMarkdown","gfmFromMarkdown","gfm","safeHref","value","undefined","url","URL","document","baseURI","includes","protocol","href","Markdown","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","content","streaming","tree","parseRevision","componentWillLoad","parse","disconnectedCallback","parseFrame","cancelAnimationFrame","scheduleParse","requestAnimationFrame","revision","extensions","mdastExtensions","children","node","map","child","renderNode","type","h","class","Tag","depth","code","language","lang","filename","meta","target","rel","ordered","start","checked","disabled","tabIndex","heading","rows","cell","scope","row","alt","label","render","Host","key"],"sources":["src/wc/components/Markdown/Markdown.css?tag=ds-markdown&encapsulation=scoped","src/wc/components/Markdown/Markdown.tsx"],"sourcesContent":["@import '../../styles/prose.css';\n\n:host {\n display: block;\n min-width: 0;\n color: inherit;\n box-sizing: border-box;\n -webkit-user-select: text;\n user-select: text;\n}\n","import { Component, h, Host, Prop, State, VNode, Watch } from '@stencil/core';\nimport type { Nodes, Root } from 'mdast';\n\ntype MarkdownRender = VNode | string | null | MarkdownRender[];\ntype MarkdownParser = {\n fromMarkdown: typeof import('mdast-util-from-markdown').fromMarkdown;\n gfmFromMarkdown: typeof import('mdast-util-gfm').gfmFromMarkdown;\n gfm: typeof import('micromark-extension-gfm').gfm;\n};\n\nlet parserPromise: Promise<MarkdownParser> | undefined;\n\nfunction loadParser(): Promise<MarkdownParser> {\n parserPromise ??= Promise.all([\n import('mdast-util-from-markdown'),\n import('mdast-util-gfm'),\n import('micromark-extension-gfm'),\n ]).then(([fromMarkdownModule, gfmFromMarkdownModule, gfmModule]) => ({\n fromMarkdown: fromMarkdownModule.fromMarkdown,\n gfmFromMarkdown: gfmFromMarkdownModule.gfmFromMarkdown,\n gfm: gfmModule.gfm,\n }));\n return parserPromise;\n}\n\nfunction safeHref(value: string | null | undefined): string | undefined {\n if (!value) return undefined;\n try {\n const url = new URL(value, document.baseURI);\n if (!['http:', 'https:', 'mailto:'].includes(url.protocol)) return undefined;\n return url.href;\n } catch {\n return undefined;\n }\n}\n\n@Component({\n tag: 'ds-markdown',\n styleUrl: 'Markdown.css',\n scoped: true,\n})\nexport class Markdown {\n @Prop() content: string = '';\n @Prop() streaming: boolean = false;\n\n @State() private tree: Root | null = null;\n private parseFrame?: number;\n private parseRevision = 0;\n\n componentWillLoad() {\n // The browser-targeted named-character decoder used by the Markdown parser\n // creates a DOM element when its module is evaluated. Keep public package\n // imports server-safe by loading that parser only in a browser context.\n if (typeof document !== 'undefined') return this.parse();\n }\n\n disconnectedCallback() {\n this.parseRevision += 1;\n if (this.parseFrame && typeof cancelAnimationFrame === 'function') {\n cancelAnimationFrame(this.parseFrame);\n }\n }\n\n @Watch('content')\n scheduleParse() {\n if (typeof requestAnimationFrame !== 'function') return;\n if (this.parseFrame) cancelAnimationFrame(this.parseFrame);\n this.parseFrame = requestAnimationFrame(() => {\n this.parseFrame = undefined;\n void this.parse();\n });\n }\n\n private async parse() {\n const revision = ++this.parseRevision;\n try {\n const { fromMarkdown, gfmFromMarkdown, gfm } = await loadParser();\n const tree = fromMarkdown(this.content, {\n extensions: [gfm()],\n mdastExtensions: [gfmFromMarkdown()],\n });\n if (revision === this.parseRevision) this.tree = tree;\n } catch {\n if (revision === this.parseRevision) this.tree = null;\n }\n }\n\n private children(node: Nodes): MarkdownRender[] {\n if (!('children' in node)) return [];\n return node.children.map(child => this.renderNode(child));\n }\n\n private renderNode(node: Nodes): MarkdownRender {\n switch (node.type) {\n case 'root':\n return this.children(node);\n case 'text':\n // Keep prose text on an element boundary. Besides giving streaming updates a\n // stable render target, this avoids axe-core treating a bare Stencil text\n // vnode as an element while it generates a contrast-result selector.\n return <span class=\"markdown__text\">{node.value}</span>;\n case 'paragraph':\n return <p class=\"markdown__paragraph\">{this.children(node)}</p>;\n case 'heading': {\n const Tag = `h${node.depth}`;\n return <Tag class=\"markdown__heading\">{this.children(node)}</Tag>;\n }\n case 'strong':\n return <strong class=\"markdown__strong\">{this.children(node)}</strong>;\n case 'emphasis':\n return <em class=\"markdown__emphasis\">{this.children(node)}</em>;\n case 'delete':\n return <del class=\"markdown__delete\">{this.children(node)}</del>;\n case 'blockquote':\n return <blockquote class=\"markdown__blockquote\">{this.children(node)}</blockquote>;\n case 'break':\n return <br class=\"markdown__break\" />;\n case 'thematicBreak':\n return <hr class=\"markdown__thematic-break\" />;\n case 'inlineCode':\n return <code class=\"markdown__inline-code\">{node.value}</code>;\n case 'code':\n return (\n <ds-code-block\n class=\"markdown__code-block\"\n data-ds-prose=\"off\"\n code={node.value}\n language={node.lang ?? ''}\n filename={node.meta ?? ''}\n />\n );\n case 'link': {\n const href = safeHref(node.url);\n return href ? (\n <a class=\"markdown__link\" href={href} target=\"_blank\" rel=\"noopener noreferrer\">\n {this.children(node)}\n </a>\n ) : (\n this.children(node)\n );\n }\n case 'list': {\n const Tag = node.ordered ? 'ol' : 'ul';\n return (\n <Tag class=\"markdown__list\" start={node.ordered && node.start ? node.start : undefined}>\n {this.children(node)}\n </Tag>\n );\n }\n case 'listItem':\n return (\n <li class=\"markdown__list-item\">\n {typeof node.checked === 'boolean' ? (\n <input\n class=\"markdown__task-indicator\"\n type=\"checkbox\"\n checked={node.checked}\n disabled\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n ) : null}\n {this.children(node)}\n </li>\n );\n case 'table': {\n const [heading, ...rows] = node.children;\n return (\n <div class=\"markdown__table-wrap ds-prose__table-scroll\" tabIndex={0}>\n <table class=\"markdown__table\">\n {heading ? (\n <thead class=\"markdown__table-head\">\n <tr class=\"markdown__table-row\">\n {heading.children.map(cell => (\n <th class=\"markdown__table-heading\" scope=\"col\">\n {this.children(cell)}\n </th>\n ))}\n </tr>\n </thead>\n ) : null}\n <tbody class=\"markdown__table-body\">{rows.map(row => this.renderNode(row))}</tbody>\n </table>\n </div>\n );\n }\n case 'tableRow':\n return <tr class=\"markdown__table-row\">{this.children(node)}</tr>;\n case 'tableCell':\n return <td class=\"markdown__table-cell\">{this.children(node)}</td>;\n case 'image': {\n const href = safeHref(node.url);\n return href ? (\n <a class=\"markdown__image-link\" href={href} target=\"_blank\" rel=\"noopener noreferrer\">\n {node.alt || 'View image'}\n </a>\n ) : (\n node.alt || null\n );\n }\n case 'html':\n case 'definition':\n case 'footnoteDefinition':\n return null;\n case 'footnoteReference':\n return <sup class=\"markdown__footnote\">{node.label}</sup>;\n default:\n return this.children(node);\n }\n }\n\n render() {\n return (\n <Host aria-busy={this.streaming ? 'true' : undefined}>\n <div class=\"markdown ds-prose\">\n {this.tree ? (\n this.renderNode(this.tree)\n ) : (\n <p class=\"markdown__paragraph\">\n <span class=\"markdown__text\">{this.content}</span>\n </p>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as t,H as o,c as n,h as i,a as e,t as d}from"./index.js";import{b as l,c as s}from"./p-C61yJkfr.js";import{d as r}from"./p-BAfG3M8z.js";import{d as a}from"./p-Ca-I2UnB.js";import{d as c}from"./p-CPwpgUWT.js";import{C as u}from"./p-CuwopElg.js";const f=()=>`.sc-ds-button-filled-h{--ds-focus-ring-width:var(--dimension-stroke-width-025, 2px);--ds-focus-ring-offset:var(--dimension-space-025, 2px);--ds-focus-ring-color:var(--color-interaction-focus)}.ds-focus-ring.sc-ds-button-filled-h,.ds-focus-ring.sc-ds-button-filled,.ds-focus-ring-inset.sc-ds-button-filled-h,.ds-focus-ring-inset.sc-ds-button-filled{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-button-filled-h:focus-visible,.ds-focus-ring.sc-ds-button-filled:focus-visible{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring.ds-focus-ring--visible.sc-ds-button-filled-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-button-filled{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring-inset.sc-ds-button-filled-h:focus-visible,.ds-focus-ring-inset.sc-ds-button-filled:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-button-filled-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-button-filled:focus-visible::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-button-filled-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-button-filled{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-button-filled-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-button-filled::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-interaction-fill.sc-ds-button-filled-h,.ds-interaction-fill.sc-ds-button-filled{position:relative;z-index:0;cursor:default;--ds-interaction-hover:var(--color-interaction-hover);--ds-interaction-pressed:var(--color-interaction-pressed);--ds-interaction-active:var(--color-interaction-active-brand);--ds-interaction-border-width:0px;--ds-interaction-border-color:transparent}.ds-interaction-fill.sc-ds-button-filled-h::before,.ds-interaction-fill.sc-ds-button-filled::before,.ds-interaction-fill.sc-ds-button-filled-h::after,.ds-interaction-fill.sc-ds-button-filled::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-button-filled-h::before,.ds-interaction-fill.sc-ds-button-filled::before{z-index:1}.ds-interaction-fill.sc-ds-button-filled-h::after,.ds-interaction-fill.sc-ds-button-filled::after{z-index:3;box-shadow:inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-button-filled-h,.ds-interaction-fill--bordered.sc-ds-button-filled{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-button-filled-h::before,.ds-interaction-fill--selected.sc-ds-button-filled::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-button-filled-h,.ds-interaction-fill--selected.sc-ds-button-filled{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-button-filled-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-button-filled:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-button-filled-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-button-filled:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill.sc-ds-button-filled-h>.ds-interaction-fill__content.sc-ds-button-filled,.ds-interaction-fill.sc-ds-button-filled>.ds-interaction-fill__content.sc-ds-button-filled,.ds-interaction-fill__content.sc-ds-button-filled{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-button-filled-h,.ds-interaction-fill--on-faint.sc-ds-button-filled{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-button-filled-h,.ds-interaction-fill--on-medium.sc-ds-button-filled{--ds-interaction-hover:var(--color-interaction-on-medium-background-hover);--ds-interaction-pressed:var(--color-interaction-on-medium-background-pressed);--ds-interaction-active:var(--color-interaction-on-medium-background-active);--ds-focus-ring-color:var(--color-interaction-on-medium-background-focus)}.ds-interaction-fill--on-bold.sc-ds-button-filled-h,.ds-interaction-fill--on-bold.sc-ds-button-filled{--ds-interaction-hover:var(--color-interaction-on-bold-background-hover);--ds-interaction-pressed:var(--color-interaction-on-bold-background-pressed);--ds-interaction-active:var(--color-interaction-on-bold-background-active);--ds-focus-ring-color:var(--color-interaction-on-bold-background-focus)}.ds-interaction-fill--on-strong.sc-ds-button-filled-h,.ds-interaction-fill--on-strong.sc-ds-button-filled{--ds-interaction-hover:var(--color-interaction-on-strong-background-hover);--ds-interaction-pressed:var(--color-interaction-on-strong-background-pressed);--ds-interaction-active:var(--color-interaction-on-strong-background-active);--ds-focus-ring-color:var(--color-interaction-on-strong-background-focus)}.ds-interaction-fill--on-translucent.sc-ds-button-filled-h,.ds-interaction-fill--on-translucent.sc-ds-button-filled{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-button-filled-h,.ds-interaction-fill--on-inverted.sc-ds-button-filled{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-button-filled-h,.ds-interaction-fill--on-media.sc-ds-button-filled{--ds-interaction-hover:var(--color-media-interaction-hover);--ds-interaction-pressed:var(--color-media-interaction-pressed);--ds-interaction-active:var(--color-media-interaction-active);--ds-focus-ring-color:var(--color-media-interaction-focus)}.ds-interaction-fill--on-always-dark.sc-ds-button-filled-h,.ds-interaction-fill--on-always-dark.sc-ds-button-filled{--ds-interaction-hover:var(--color-always-dark-interaction-hover);--ds-interaction-pressed:var(--color-always-dark-interaction-pressed);--ds-interaction-active:var(--color-always-dark-interaction-active);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-button-filled-h,.ds-interaction-fill--on-navigation.sc-ds-button-filled{--ds-interaction-hover:var(--color-navigation-interaction-hover);--ds-interaction-pressed:var(--color-navigation-interaction-pressed);--ds-interaction-active:var(--color-navigation-interaction-active);--ds-focus-ring-color:var(--color-navigation-interaction-focus)}.ds-control-press-scale.sc-ds-button-filled{transition:scale var(--effect-motion-short-2)}.ds-control-press-scale.sc-ds-button-filled:active:not(:disabled):not(.ds-control-inactive):not([aria-busy='true']){scale:var(--ds-control-press-active-scale, var(--dimension-scale-subtle))}@media (prefers-reduced-motion: reduce){.ds-control-press-scale.sc-ds-button-filled,.ds-control-press-scale.sc-ds-button-filled:active:not(:disabled):not(.ds-control-inactive):not([aria-busy='true']){scale:none;transition:none}}.ds-control-inactive.sc-ds-button-filled-h,.ds-control-inactive.sc-ds-button-filled{opacity:0.5;pointer-events:none;cursor:not-allowed}.ds-control--lg.sc-ds-button-filled,.ds-control--lg.sc-ds-button-filled-h,.ds-control--md.sc-ds-button-filled-h,.ds-control--md.sc-ds-button-filled,.ds-control--sm.sc-ds-button-filled-h,.ds-control--sm.sc-ds-button-filled,.ds-control--xs.sc-ds-button-filled-h,.ds-control--xs.sc-ds-button-filled{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-button-filled-h,.ds-control--lg.sc-ds-button-filled{--ds-control-height:var(--dimension-size-500);--ds-control-icon:var(--dimension-iconography-lg);--ds-control-padding-inline:var(--dimension-space-100);--ds-control-label-inset:var(--dimension-space-050);--ds-control-gap:var(--dimension-space-050)}.ds-control--md.sc-ds-button-filled-h,.ds-control--md.sc-ds-button-filled{--ds-control-height:var(--dimension-size-400);--ds-control-icon:var(--dimension-iconography-md);--ds-control-padding-inline:var(--dimension-space-075);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-050)}.ds-control--sm.sc-ds-button-filled-h,.ds-control--sm.sc-ds-button-filled{--ds-control-height:var(--dimension-size-300);--ds-control-icon:var(--dimension-iconography-sm);--ds-control-padding-inline:var(--dimension-space-050);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-025)}.ds-control--xs.sc-ds-button-filled-h,.ds-control--xs.sc-ds-button-filled{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}.ds-control-frame.sc-ds-button-filled{display:inline-flex;align-items:center;box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));padding-inline:var(--ds-control-padding-inline, var(--dimension-space-075));gap:var(--ds-control-gap, var(--dimension-space-050));border-radius:var(--ds-control-radius, var(--dimension-radius-025))}.ds-control-icon-box.sc-ds-button-filled{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md))}.ds-control-label-box.sc-ds-button-filled{min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025))}.ds-control-width--hug.sc-ds-button-filled-h,.ds-control-width--hug.sc-ds-button-filled{width:fit-content;max-width:100%;flex:0 0 auto;align-self:flex-start}.ds-control-width--fill.sc-ds-button-filled-h,.ds-control-width--fill.sc-ds-button-filled{width:100%;min-width:0;flex:1 1 auto;align-self:stretch}.sc-ds-button-filled-h{display:inline-flex;outline:none;--ds-button-filled-bg:var(--color-background-bold-brand);--ds-button-filled-fg:var(--color-foreground-faint-brand);--ds-button-filled-border:var(--color-border-secondary)}.button-filled-host--icon.ds-control-width--hug.sc-ds-button-filled-h{width:var(--ds-control-height, var(--dimension-size-400));height:var(--ds-control-height, var(--dimension-size-400));min-width:var(--ds-control-height, var(--dimension-size-400));min-height:var(--ds-control-height, var(--dimension-size-400))}.button-filled-host--icon.ds-control-width--fill.sc-ds-button-filled-h{height:var(--ds-control-height, var(--dimension-size-400));min-height:var(--ds-control-height, var(--dimension-size-400))}.ds-control-width--fill.sc-ds-button-filled-h .button-filled.sc-ds-button-filled{width:100%}.button-filled.sc-ds-button-filled{justify-content:center;border:none;border-radius:var(--ds-control-radius, var(--dimension-radius-025));background-color:var(--ds-button-filled-bg);color:var(--ds-button-filled-fg);cursor:default;-webkit-user-select:none;user-select:none;overflow:hidden;transition:background-color var(--effect-motion-short-2), color var(--effect-motion-short-2)}.button-filled--icon.sc-ds-button-filled{width:100%;height:100%;padding:0}.button-filled--rounded.sc-ds-button-filled{--ds-control-radius:var(--dimension-radius-half)}.button-filled.button-filled--expanded.sc-ds-button-filled::after,.button-filled.button-filled--expanded.sc-ds-button-filled:hover:not(:disabled)::after{background:var(--ds-interaction-pressed)}.button-filled--bordered.sc-ds-button-filled{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--ds-button-filled-border)}.button-filled--bordered.sc-ds-button-filled:not(.ds-interaction-fill){box-shadow:inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.button-filled--background-medium.sc-ds-button-filled{--ds-button-filled-border:var(--color-border-on-medium-background-secondary)}.button-filled--background-bold.sc-ds-button-filled{--ds-button-filled-border:var(--color-border-on-bold-background-secondary)}.button-filled--background-strong.sc-ds-button-filled{--ds-button-filled-border:var(--color-border-on-strong-background-secondary)}.button-filled--background-translucent.sc-ds-button-filled{--ds-button-filled-border:var(--color-translucent-border-secondary)}.button-filled--background-inverted.sc-ds-button-filled{--ds-button-filled-border:var(--color-inverted-border-secondary)}.button-filled--background-media.sc-ds-button-filled{--ds-button-filled-border:var(--color-media-border-secondary)}.button-filled--background-always-dark.sc-ds-button-filled{--ds-button-filled-border:var(--color-always-dark-border-secondary)}.button-filled__icon-wrap.sc-ds-button-filled{position:relative;z-index:2}.button-filled__label.sc-ds-button-filled{position:relative;z-index:2;white-space:nowrap;flex-shrink:0;min-width:0}.button-filled__label--loading.sc-ds-button-filled{visibility:hidden}.button-filled__chevron.sc-ds-button-filled{position:relative;z-index:2}.button-filled__chevron--loading.sc-ds-button-filled{visibility:hidden}.button-filled.sc-ds-button-filled>.button-filled__loader-overlay.sc-ds-button-filled{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;pointer-events:none}.button-filled--intent-neutral.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-neutral);--ds-button-filled-fg:var(--color-foreground-faint-neutral)}.button-filled--intent-brand.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-brand);--ds-button-filled-fg:var(--color-foreground-faint-brand)}.button-filled--intent-ai.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-ai);--ds-button-filled-fg:var(--color-foreground-faint-ai)}.button-filled--intent-negative.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-negative);--ds-button-filled-fg:var(--color-foreground-faint-negative)}.button-filled--intent-warning.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-warning);--ds-button-filled-fg:var(--color-foreground-faint-warning)}.button-filled--intent-caution.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-caution);--ds-button-filled-fg:var(--color-foreground-faint-caution)}.button-filled--intent-positive.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-positive);--ds-button-filled-fg:var(--color-foreground-faint-positive)}.button-filled--intent-guide.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-guide);--ds-button-filled-fg:var(--color-foreground-faint-guide)}.button-filled--intent-walkthrough.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-bold-walkthrough);--ds-button-filled-fg:var(--color-foreground-faint-walkthrough)}.button-filled--contrast-strong.button-filled--intent-neutral.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-neutral);--ds-button-filled-fg:var(--color-foreground-medium-neutral)}.button-filled--contrast-strong.button-filled--intent-brand.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-brand);--ds-button-filled-fg:var(--color-foreground-medium-brand)}.button-filled--contrast-strong.button-filled--intent-ai.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-ai);--ds-button-filled-fg:var(--color-foreground-medium-ai)}.button-filled--contrast-strong.button-filled--intent-negative.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-negative);--ds-button-filled-fg:var(--color-foreground-medium-negative)}.button-filled--contrast-strong.button-filled--intent-warning.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-warning);--ds-button-filled-fg:var(--color-foreground-medium-warning)}.button-filled--contrast-strong.button-filled--intent-caution.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-caution);--ds-button-filled-fg:var(--color-foreground-medium-caution)}.button-filled--contrast-strong.button-filled--intent-positive.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-positive);--ds-button-filled-fg:var(--color-foreground-medium-positive)}.button-filled--contrast-strong.button-filled--intent-guide.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-guide);--ds-button-filled-fg:var(--color-foreground-medium-guide)}.button-filled--contrast-strong.button-filled--intent-walkthrough.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-strong-walkthrough);--ds-button-filled-fg:var(--color-foreground-medium-walkthrough)}.button-filled--contrast-medium.button-filled--intent-neutral.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-neutral);--ds-button-filled-fg:var(--color-foreground-strong-neutral)}.button-filled--contrast-medium.button-filled--intent-brand.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-brand);--ds-button-filled-fg:var(--color-foreground-strong-brand)}.button-filled--contrast-medium.button-filled--intent-ai.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-ai);--ds-button-filled-fg:var(--color-foreground-strong-ai)}.button-filled--contrast-medium.button-filled--intent-negative.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-negative);--ds-button-filled-fg:var(--color-foreground-strong-negative)}.button-filled--contrast-medium.button-filled--intent-warning.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-warning);--ds-button-filled-fg:var(--color-foreground-strong-warning)}.button-filled--contrast-medium.button-filled--intent-caution.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-caution);--ds-button-filled-fg:var(--color-foreground-strong-caution)}.button-filled--contrast-medium.button-filled--intent-positive.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-positive);--ds-button-filled-fg:var(--color-foreground-strong-positive)}.button-filled--contrast-medium.button-filled--intent-guide.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-guide);--ds-button-filled-fg:var(--color-foreground-strong-guide)}.button-filled--contrast-medium.button-filled--intent-walkthrough.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-medium-walkthrough);--ds-button-filled-fg:var(--color-foreground-strong-walkthrough)}.button-filled--contrast-faint.button-filled--intent-neutral.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-neutral);--ds-button-filled-fg:var(--color-foreground-bold-neutral)}.button-filled--contrast-faint.button-filled--intent-brand.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-brand);--ds-button-filled-fg:var(--color-foreground-bold-brand)}.button-filled--contrast-faint.button-filled--intent-ai.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-ai);--ds-button-filled-fg:var(--color-foreground-bold-ai)}.button-filled--contrast-faint.button-filled--intent-negative.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-negative);--ds-button-filled-fg:var(--color-foreground-bold-negative)}.button-filled--contrast-faint.button-filled--intent-warning.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-warning);--ds-button-filled-fg:var(--color-foreground-bold-warning)}.button-filled--contrast-faint.button-filled--intent-caution.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-caution);--ds-button-filled-fg:var(--color-foreground-bold-caution)}.button-filled--contrast-faint.button-filled--intent-positive.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-positive);--ds-button-filled-fg:var(--color-foreground-bold-positive)}.button-filled--contrast-faint.button-filled--intent-guide.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-guide);--ds-button-filled-fg:var(--color-foreground-bold-guide)}.button-filled--contrast-faint.button-filled--intent-walkthrough.sc-ds-button-filled{--ds-button-filled-bg:var(--color-background-faint-walkthrough);--ds-button-filled-fg:var(--color-foreground-bold-walkthrough)}`;const b={lg:"lg",md:"md",sm:"sm",xs:"xs"};const g=t(class t extends o{constructor(t){super();if(t!==false){this.__registerHost()}this.dsClick=n(this,"dsClick");this.variant="label";this.size="md";this.width="hug";this.label="";this.icon="";this.intent="brand";this.contrast="bold";this.hasBorder=false;this.rounded=false;this.pressScale=true;this.isInactive=false;this.isLoading=false;this.type="button";this.ariaLabel=null;this.hasMenu=false;this.buttonEl=null;this.handleClick=t=>{if(this.isInactive||this.isLoading){t.preventDefault();t.stopPropagation();return}this.dsClick.emit(t)}}async setFocus(){this.buttonEl?.focus()}get showIcon(){return this.variant==="icon"||this.variant==="icon-label"}get showLabel(){return this.variant==="label"||this.variant==="icon-label"}get showChevron(){return this.hasMenu&&this.variant!=="icon"}get resolvedHaspopup(){return this.haspopup??(this.hasMenu?"menu":undefined)}get accessibleName(){if(this.ariaLabel)return this.ariaLabel;if(this.isLoading&&this.variant==="label"&&this.label)return this.label;return undefined}render(){const t=u[this.size];const o=b[this.size];const n={"button-filled":true,"ds-focus-ring-inset":true,"ds-control-press-scale":this.pressScale,"ds-interaction-fill":!this.isInactive,"ds-interaction-fill--on-bold":this.contrast==="bold","ds-interaction-fill--on-strong":this.contrast==="strong","ds-interaction-fill--on-medium":this.contrast==="medium","button-filled--bordered":this.hasBorder,"button-filled--expanded":this.expanded===true&&!this.isInactive,"ds-control-inactive":this.isInactive,"ds-control--lg":this.size==="lg","ds-control--md":this.size==="md","ds-control--sm":this.size==="sm","ds-control--xs":this.size==="xs","ds-control-frame":true,"button-filled--icon":this.variant==="icon","button-filled--label":this.variant==="label","button-filled--icon-label":this.variant==="icon-label","button-filled--rounded":this.rounded,[`button-filled--background-${this.background}`]:this.background!==undefined,[`button-filled--intent-${this.intent}`]:true,[`button-filled--contrast-${this.contrast}`]:this.contrast!=="bold"};return i(e,{key:"1d0398c641e31723cfeed8775c10a501cd765170",class:{"button-filled-host":true,"button-filled-host--icon":this.variant==="icon","ds-control--lg":this.size==="lg","ds-control--md":this.size==="md","ds-control--sm":this.size==="sm","ds-control--xs":this.size==="xs",...s(this.width)},tabIndex:-1},i("button",{key:"a72da678f18b8f37e72cbf9898e4c081a78778bb",ref:t=>{this.buttonEl=t??null},type:this.type,class:n,disabled:this.isInactive,"aria-label":this.accessibleName,"aria-busy":this.isLoading?"true":undefined,"aria-disabled":this.isLoading?"true":undefined,"aria-controls":this.controls,"aria-expanded":this.expanded===undefined?undefined:String(this.expanded),"aria-haspopup":this.resolvedHaspopup,"aria-pressed":this.pressed===undefined?undefined:String(this.pressed),onPointerDown:t=>l(t,this.pressScale&&!this.isInactive&&!this.isLoading),onClick:this.handleClick},this.showIcon&&i("span",{key:"a826d5a69e2786023b3e61508688f3ecbcf0b47f",class:"button-filled__icon-wrap ds-control-icon-box ds-interaction-fill__content"},this.isLoading?i("ds-loader",{size:o,color:"inherit"}):i("ds-icon",{name:this.icon,size:o,color:"inherit"})),this.showLabel&&i("ds-text",{key:"34ec0ec777f8b947d3fcd39f85021e50da81455a",class:{"button-filled__label":true,"ds-control-label-box":true,"button-filled__label--loading":this.isLoading&&this.variant==="label","ds-interaction-fill__content":true},as:"span",variant:t,emphasis:true,color:"inherit"},this.label),this.showChevron&&i("span",{key:"869372cf4b0193fadc390ef7902565f2b91cb54d",class:{"button-filled__chevron":true,"ds-control-icon-box":true,"ds-interaction-fill__content":true,"button-filled__chevron--loading":this.isLoading&&this.variant==="label"},"aria-hidden":"true"},i("ds-icon",{key:"9f5eec43de9d460b1437ff1f81b4a1ac46cd4e74",name:"ChevronDown",size:o,color:"inherit"})),this.isLoading&&this.variant==="label"&&i("span",{key:"86c0e854fa8e26191a2c98d023a5192084b96eba",class:"button-filled__loader-overlay ds-interaction-fill__content"},i("ds-loader",{key:"d21f8817ee4f530520594eac52d378cbf19e5075",size:o,color:"inherit"}))))}get el(){return this}static get style(){return f()}},[2,"ds-button-filled",{variant:[1],size:[1],width:[1],label:[1],icon:[1],intent:[1],contrast:[1],hasBorder:[4,"has-border"],background:[1],rounded:[4],pressScale:[4,"press-scale"],isInactive:[4,"is-inactive"],isLoading:[4,"is-loading"],type:[1],ariaLabel:[1,"aria-label"],controls:[1],expanded:[4],haspopup:[1],pressed:[4],hasMenu:[4,"has-menu"],setFocus:[64]}]);function v(){if(typeof customElements==="undefined"){return}const t=["ds-button-filled","ds-icon","ds-loader","ds-text"];t.forEach((t=>{switch(t){case"ds-button-filled":if(!customElements.get(d(t))){customElements.define(d(t),g)}break;case"ds-icon":if(!customElements.get(d(t))){r()}break;case"ds-loader":if(!customElements.get(d(t))){a()}break;case"ds-text":if(!customElements.get(d(t))){c()}break}}))}v();export{g as B,v as d};
|
|
2
|
-
//# sourceMappingURL=p-DzM3SzPz.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["buttonFilledCss","ICON_SIZE","lg","md","sm","xs","ButtonFilled","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","variant","size","width","label","icon","intent","contrast","hasBorder","rounded","pressScale","isInactive","isLoading","type","ariaLabel","hasMenu","buttonEl","handleClick","event","preventDefault","stopPropagation","dsClick","emit","setFocus","focus","showIcon","showLabel","showChevron","resolvedHaspopup","haspopup","undefined","accessibleName","render","textVariant","CONTROL_TEXT_VARIANT","iconSize","cls","expanded","background","h","Host","key","class","controlWidthClass","tabIndex","ref","el","disabled","controls","String","pressed","onPointerDown","beginElevatedControlPress","onClick","color","name","as","emphasis"],"sources":["src/wc/components/ButtonFilled/ButtonFilled.css?tag=ds-button-filled&encapsulation=scoped","src/wc/components/ButtonFilled/ButtonFilled.tsx"],"sourcesContent":["@import '../../utils/focus-ring.css';\n@import '../../utils/interaction-fill.css';\n@import '../../utils/control-press.css';\n@import '../../utils/control-inactive.css';\n@import '../../utils/control-density.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/control-width.css';\n\n:host {\n display: inline-flex;\n outline: none;\n --ds-button-filled-bg: var(--color-background-bold-brand);\n --ds-button-filled-fg: var(--color-foreground-faint-brand);\n --ds-button-filled-border: var(--color-border-secondary);\n}\n\n/* Icon-only: fixed square from density height (hug). Fill stretches the hit target. */\n:host(.button-filled-host--icon.ds-control-width--hug) {\n width: var(--ds-control-height, var(--dimension-size-400));\n height: var(--ds-control-height, var(--dimension-size-400));\n min-width: var(--ds-control-height, var(--dimension-size-400));\n min-height: var(--ds-control-height, var(--dimension-size-400));\n}\n\n:host(.button-filled-host--icon.ds-control-width--fill) {\n height: var(--ds-control-height, var(--dimension-size-400));\n min-height: var(--ds-control-height, var(--dimension-size-400));\n}\n\n:host(.ds-control-width--fill) .button-filled {\n width: 100%;\n}\n\n.button-filled {\n justify-content: center;\n border: none;\n border-radius: var(--ds-control-radius, var(--dimension-radius-025));\n background-color: var(--ds-button-filled-bg);\n color: var(--ds-button-filled-fg);\n cursor: default;\n -webkit-user-select: none;\n user-select: none;\n overflow: hidden;\n transition:\n background-color var(--effect-motion-short-2),\n color var(--effect-motion-short-2);\n /* Hover/press: `.ds-interaction-fill` + contrast → `--on-*` (token overlay, not color-mix). */\n}\n\n.button-filled--icon {\n width: 100%;\n height: 100%;\n padding: 0;\n}\n\n.button-filled--rounded {\n --ds-control-radius: var(--dimension-radius-half);\n}\n\n/*\n * An open popup is a transient pressed state, not a selected state. ButtonFilled\n * deliberately has no active state, so hold the pressed wash for the popup's\n * complete rendered lifecycle instead of promoting any selected treatment.\n */\n.button-filled.button-filled--expanded::after,\n.button-filled.button-filled--expanded:hover:not(:disabled)::after {\n background: var(--ds-interaction-pressed);\n}\n\n/* Inset stroke via interaction-fill ::after (above hover and pressed washes). */\n.button-filled--bordered {\n --ds-interaction-border-width: var(--dimension-stroke-width-012);\n --ds-interaction-border-color: var(--ds-button-filled-border);\n}\n\n/* Preserve the border while inactive, when interaction-fill is intentionally omitted. */\n.button-filled--bordered:not(.ds-interaction-fill) {\n box-shadow: inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color);\n}\n\n/*\n * Parent-surface context affects only the optional inset border.\n * Intent + contrast continue to own fill, foreground, and interaction overlays.\n */\n.button-filled--background-medium {\n --ds-button-filled-border: var(--color-border-on-medium-background-secondary);\n}\n\n.button-filled--background-bold {\n --ds-button-filled-border: var(--color-border-on-bold-background-secondary);\n}\n\n.button-filled--background-strong {\n --ds-button-filled-border: var(--color-border-on-strong-background-secondary);\n}\n\n.button-filled--background-translucent {\n --ds-button-filled-border: var(--color-translucent-border-secondary);\n}\n\n.button-filled--background-inverted {\n --ds-button-filled-border: var(--color-inverted-border-secondary);\n}\n\n.button-filled--background-media {\n --ds-button-filled-border: var(--color-media-border-secondary);\n}\n\n.button-filled--background-always-dark {\n --ds-button-filled-border: var(--color-always-dark-border-secondary);\n}\n\n/* Inactive: `.ds-control-inactive` (50% opacity). */\n\n.button-filled__icon-wrap {\n position: relative;\n z-index: 2;\n}\n\n.button-filled__label {\n position: relative;\n z-index: 2;\n white-space: nowrap;\n flex-shrink: 0;\n min-width: 0;\n}\n\n.button-filled__label--loading {\n visibility: hidden;\n}\n\n.button-filled__chevron {\n position: relative;\n z-index: 2;\n}\n\n/* Hidden, not removed, so the label-only loader keeps the measured button width. */\n.button-filled__chevron--loading {\n visibility: hidden;\n}\n\n.button-filled > .button-filled__loader-overlay {\n position: absolute;\n inset: 0;\n z-index: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n}\n\n/* ── Intent + contrast (bold default) ─────────────────────────────────────── */\n\n.button-filled--intent-neutral {\n --ds-button-filled-bg: var(--color-background-bold-neutral);\n --ds-button-filled-fg: var(--color-foreground-faint-neutral);\n}\n\n.button-filled--intent-brand {\n --ds-button-filled-bg: var(--color-background-bold-brand);\n --ds-button-filled-fg: var(--color-foreground-faint-brand);\n}\n\n.button-filled--intent-ai {\n --ds-button-filled-bg: var(--color-background-bold-ai);\n --ds-button-filled-fg: var(--color-foreground-faint-ai);\n}\n\n.button-filled--intent-negative {\n --ds-button-filled-bg: var(--color-background-bold-negative);\n --ds-button-filled-fg: var(--color-foreground-faint-negative);\n}\n\n.button-filled--intent-warning {\n --ds-button-filled-bg: var(--color-background-bold-warning);\n --ds-button-filled-fg: var(--color-foreground-faint-warning);\n}\n\n.button-filled--intent-caution {\n --ds-button-filled-bg: var(--color-background-bold-caution);\n --ds-button-filled-fg: var(--color-foreground-faint-caution);\n}\n\n.button-filled--intent-positive {\n --ds-button-filled-bg: var(--color-background-bold-positive);\n --ds-button-filled-fg: var(--color-foreground-faint-positive);\n}\n\n.button-filled--intent-guide {\n --ds-button-filled-bg: var(--color-background-bold-guide);\n --ds-button-filled-fg: var(--color-foreground-faint-guide);\n}\n\n.button-filled--intent-walkthrough {\n --ds-button-filled-bg: var(--color-background-bold-walkthrough);\n --ds-button-filled-fg: var(--color-foreground-faint-walkthrough);\n}\n\n/* strong → medium fg */\n.button-filled--contrast-strong.button-filled--intent-neutral {\n --ds-button-filled-bg: var(--color-background-strong-neutral);\n --ds-button-filled-fg: var(--color-foreground-medium-neutral);\n}\n\n.button-filled--contrast-strong.button-filled--intent-brand {\n --ds-button-filled-bg: var(--color-background-strong-brand);\n --ds-button-filled-fg: var(--color-foreground-medium-brand);\n}\n\n.button-filled--contrast-strong.button-filled--intent-ai {\n --ds-button-filled-bg: var(--color-background-strong-ai);\n --ds-button-filled-fg: var(--color-foreground-medium-ai);\n}\n\n.button-filled--contrast-strong.button-filled--intent-negative {\n --ds-button-filled-bg: var(--color-background-strong-negative);\n --ds-button-filled-fg: var(--color-foreground-medium-negative);\n}\n\n.button-filled--contrast-strong.button-filled--intent-warning {\n --ds-button-filled-bg: var(--color-background-strong-warning);\n --ds-button-filled-fg: var(--color-foreground-medium-warning);\n}\n\n.button-filled--contrast-strong.button-filled--intent-caution {\n --ds-button-filled-bg: var(--color-background-strong-caution);\n --ds-button-filled-fg: var(--color-foreground-medium-caution);\n}\n\n.button-filled--contrast-strong.button-filled--intent-positive {\n --ds-button-filled-bg: var(--color-background-strong-positive);\n --ds-button-filled-fg: var(--color-foreground-medium-positive);\n}\n\n.button-filled--contrast-strong.button-filled--intent-guide {\n --ds-button-filled-bg: var(--color-background-strong-guide);\n --ds-button-filled-fg: var(--color-foreground-medium-guide);\n}\n\n.button-filled--contrast-strong.button-filled--intent-walkthrough {\n --ds-button-filled-bg: var(--color-background-strong-walkthrough);\n --ds-button-filled-fg: var(--color-foreground-medium-walkthrough);\n}\n\n/* medium → strong fg */\n.button-filled--contrast-medium.button-filled--intent-neutral {\n --ds-button-filled-bg: var(--color-background-medium-neutral);\n --ds-button-filled-fg: var(--color-foreground-strong-neutral);\n}\n\n.button-filled--contrast-medium.button-filled--intent-brand {\n --ds-button-filled-bg: var(--color-background-medium-brand);\n --ds-button-filled-fg: var(--color-foreground-strong-brand);\n}\n\n.button-filled--contrast-medium.button-filled--intent-ai {\n --ds-button-filled-bg: var(--color-background-medium-ai);\n --ds-button-filled-fg: var(--color-foreground-strong-ai);\n}\n\n.button-filled--contrast-medium.button-filled--intent-negative {\n --ds-button-filled-bg: var(--color-background-medium-negative);\n --ds-button-filled-fg: var(--color-foreground-strong-negative);\n}\n\n.button-filled--contrast-medium.button-filled--intent-warning {\n --ds-button-filled-bg: var(--color-background-medium-warning);\n --ds-button-filled-fg: var(--color-foreground-strong-warning);\n}\n\n.button-filled--contrast-medium.button-filled--intent-caution {\n --ds-button-filled-bg: var(--color-background-medium-caution);\n --ds-button-filled-fg: var(--color-foreground-strong-caution);\n}\n\n.button-filled--contrast-medium.button-filled--intent-positive {\n --ds-button-filled-bg: var(--color-background-medium-positive);\n --ds-button-filled-fg: var(--color-foreground-strong-positive);\n}\n\n.button-filled--contrast-medium.button-filled--intent-guide {\n --ds-button-filled-bg: var(--color-background-medium-guide);\n --ds-button-filled-fg: var(--color-foreground-strong-guide);\n}\n\n.button-filled--contrast-medium.button-filled--intent-walkthrough {\n --ds-button-filled-bg: var(--color-background-medium-walkthrough);\n --ds-button-filled-fg: var(--color-foreground-strong-walkthrough);\n}\n\n/* faint → bold fg */\n.button-filled--contrast-faint.button-filled--intent-neutral {\n --ds-button-filled-bg: var(--color-background-faint-neutral);\n --ds-button-filled-fg: var(--color-foreground-bold-neutral);\n}\n\n.button-filled--contrast-faint.button-filled--intent-brand {\n --ds-button-filled-bg: var(--color-background-faint-brand);\n --ds-button-filled-fg: var(--color-foreground-bold-brand);\n}\n\n.button-filled--contrast-faint.button-filled--intent-ai {\n --ds-button-filled-bg: var(--color-background-faint-ai);\n --ds-button-filled-fg: var(--color-foreground-bold-ai);\n}\n\n.button-filled--contrast-faint.button-filled--intent-negative {\n --ds-button-filled-bg: var(--color-background-faint-negative);\n --ds-button-filled-fg: var(--color-foreground-bold-negative);\n}\n\n.button-filled--contrast-faint.button-filled--intent-warning {\n --ds-button-filled-bg: var(--color-background-faint-warning);\n --ds-button-filled-fg: var(--color-foreground-bold-warning);\n}\n\n.button-filled--contrast-faint.button-filled--intent-caution {\n --ds-button-filled-bg: var(--color-background-faint-caution);\n --ds-button-filled-fg: var(--color-foreground-bold-caution);\n}\n\n.button-filled--contrast-faint.button-filled--intent-positive {\n --ds-button-filled-bg: var(--color-background-faint-positive);\n --ds-button-filled-fg: var(--color-foreground-bold-positive);\n}\n\n.button-filled--contrast-faint.button-filled--intent-guide {\n --ds-button-filled-bg: var(--color-background-faint-guide);\n --ds-button-filled-fg: var(--color-foreground-bold-guide);\n}\n\n.button-filled--contrast-faint.button-filled--intent-walkthrough {\n --ds-button-filled-bg: var(--color-background-faint-walkthrough);\n --ds-button-filled-fg: var(--color-foreground-bold-walkthrough);\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Method, Prop } from '@stencil/core';\nimport { controlWidthClass, CONTROL_TEXT_VARIANT, type ControlWidth } from '../../utils';\nimport type { ChoiceBackground } from '../../utils/choice-list';\nimport { beginElevatedControlPress } from '../../utils/control-press';\n\nexport type ButtonFilledIntent =\n | 'neutral'\n | 'brand'\n | 'ai'\n | 'negative'\n | 'warning'\n | 'caution'\n | 'positive'\n | 'guide'\n | 'walkthrough';\n\nexport type ButtonFilledContrast = 'bold' | 'strong' | 'medium' | 'faint';\n\nexport type ButtonFilledBackground = ChoiceBackground;\n\nexport type ButtonFilledVariant = 'icon' | 'label' | 'icon-label';\n\nexport type ButtonFilledSize = 'lg' | 'md' | 'sm' | 'xs';\n\nexport type ButtonFilledWidth = ControlWidth;\n\nexport type ButtonFilledPopup = 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog';\n\n/**\n * `ds-icon` size prop matching control-density icon metrics\n * (lg→24 / md→20 / sm→16 / xs→12 via `--dimension-iconography-*`).\n */\nconst ICON_SIZE: Record<ButtonFilledSize, 'lg' | 'md' | 'sm' | 'xs'> = {\n lg: 'lg',\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n};\n\n@Component({\n tag: 'ds-button-filled',\n styleUrl: 'ButtonFilled.css',\n scoped: true,\n})\nexport class ButtonFilled {\n @Element() el!: HTMLElement;\n\n /**\n * Content layout. Default is label-only; pass `icon` for icon-only chrome\n * (nav / tool rails) or `icon-label` for leading icon + text.\n */\n @Prop() variant: ButtonFilledVariant = 'label';\n\n /** Control density (height, padding, icon, type). */\n @Prop() size: ButtonFilledSize = 'md';\n\n /** Width fit — hug content (default) or fill the parent. */\n @Prop() width: ButtonFilledWidth = 'hug';\n\n /** Visible text for `label` / `icon-label` variants. */\n @Prop() label: string = '';\n\n /** Icon name passed to <ds-icon> for `icon` / `icon-label` variants. */\n @Prop() icon: string = '';\n\n /** Semantic colour intent. */\n @Prop() intent: ButtonFilledIntent = 'brand';\n\n /**\n * Background fill weight. Foreground uses the paired contrast token:\n * bold → faint, strong → medium, medium → strong, faint → bold.\n */\n @Prop() contrast: ButtonFilledContrast = 'bold';\n\n /** Show a 1px secondary inset border. */\n @Prop() hasBorder: boolean = false;\n\n /**\n * Actual parent surface context for the optional inset border color only.\n * Omit on primary and secondary surfaces.\n */\n @Prop() background: ButtonFilledBackground | undefined;\n\n /** Use the half-radius treatment instead of the default control radius. */\n @Prop() rounded: boolean = false;\n\n /**\n * Scale down during a physical pointer press.\n * Disable when an owning composite requires fixed child or background geometry.\n */\n @Prop() pressScale: boolean = true;\n\n /** Disables interaction. */\n @Prop() isInactive: boolean = false;\n\n /** Shows an inline loader and prevents interaction without applying inactive opacity. */\n @Prop() isLoading: boolean = false;\n\n /** Native button type. */\n @Prop() type: 'button' | 'submit' | 'reset' = 'button';\n\n /** Accessible name override. Required for icon-only buttons. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n\n /** ID of the popup this button controls. */\n @Prop() controls: string | undefined;\n\n /**\n * Controlled open state of the popup this button triggers. Holds the pressed\n * wash for the popup's rendered lifecycle. ButtonFilled has no selected state,\n * so an open popup never promotes to an active treatment.\n */\n @Prop() expanded: boolean | undefined;\n\n /** Popup type exposed to assistive technology. */\n @Prop() haspopup: ButtonFilledPopup | undefined;\n\n /** Pressed semantics for a toggle command that reports state elsewhere. */\n @Prop() pressed: boolean | undefined;\n\n /**\n * This action *has* a menu: implies `aria-haspopup=\"menu\"` and adds the trailing\n * chevron that carries the affordance.\n *\n * Only `label` and `icon-label` are supported. A filled button is never the\n * overflow / more-options control — that role belongs to ButtonUnfilled with an\n * `Ellipses` glyph, which conveys the menu without a chevron.\n *\n * Use `haspopup` directly for non-menu popups.\n */\n @Prop() hasMenu: boolean = false;\n\n @Event() dsClick!: EventEmitter<MouseEvent>;\n\n private buttonEl: HTMLButtonElement | null = null;\n\n @Method()\n async setFocus() {\n this.buttonEl?.focus();\n }\n\n private handleClick = (event: MouseEvent) => {\n if (this.isInactive || this.isLoading) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.dsClick.emit(event);\n };\n\n private get showIcon(): boolean {\n return this.variant === 'icon' || this.variant === 'icon-label';\n }\n\n private get showLabel(): boolean {\n return this.variant === 'label' || this.variant === 'icon-label';\n }\n\n /** Icon-only triggers rely on their own glyph, so the chevron is label-bound. */\n private get showChevron(): boolean {\n return this.hasMenu && this.variant !== 'icon';\n }\n\n private get resolvedHaspopup(): ButtonFilledPopup | undefined {\n return this.haspopup ?? (this.hasMenu ? 'menu' : undefined);\n }\n\n private get accessibleName(): string | undefined {\n if (this.ariaLabel) return this.ariaLabel;\n if (this.isLoading && this.variant === 'label' && this.label) return this.label;\n return undefined;\n }\n\n render() {\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const iconSize = ICON_SIZE[this.size];\n\n const cls: Record<string, boolean> = {\n 'button-filled': true,\n 'ds-focus-ring-inset': true,\n 'ds-control-press-scale': this.pressScale,\n 'ds-interaction-fill': !this.isInactive,\n /* Bold is the default filled contrast — on-bold interaction tokens. */\n 'ds-interaction-fill--on-bold': this.contrast === 'bold',\n 'ds-interaction-fill--on-strong': this.contrast === 'strong',\n 'ds-interaction-fill--on-medium': this.contrast === 'medium',\n /* faint → default app interaction tokens (no --on-*). */\n 'button-filled--bordered': this.hasBorder,\n 'button-filled--expanded': this.expanded === true && !this.isInactive,\n 'ds-control-inactive': this.isInactive,\n 'ds-control--lg': this.size === 'lg',\n 'ds-control--md': this.size === 'md',\n 'ds-control--sm': this.size === 'sm',\n 'ds-control--xs': this.size === 'xs',\n 'ds-control-frame': true,\n 'button-filled--icon': this.variant === 'icon',\n 'button-filled--label': this.variant === 'label',\n 'button-filled--icon-label': this.variant === 'icon-label',\n 'button-filled--rounded': this.rounded,\n [`button-filled--background-${this.background}`]: this.background !== undefined,\n [`button-filled--intent-${this.intent}`]: true,\n [`button-filled--contrast-${this.contrast}`]: this.contrast !== 'bold',\n };\n\n return (\n <Host\n class={{\n 'button-filled-host': true,\n 'button-filled-host--icon': this.variant === 'icon',\n 'ds-control--lg': this.size === 'lg',\n 'ds-control--md': this.size === 'md',\n 'ds-control--sm': this.size === 'sm',\n 'ds-control--xs': this.size === 'xs',\n ...controlWidthClass(this.width),\n }}\n tabIndex={-1}\n >\n <button\n ref={el => {\n this.buttonEl = el ?? null;\n }}\n type={this.type}\n class={cls}\n disabled={this.isInactive}\n aria-label={this.accessibleName}\n aria-busy={this.isLoading ? 'true' : undefined}\n aria-disabled={this.isLoading ? 'true' : undefined}\n aria-controls={this.controls}\n aria-expanded={this.expanded === undefined ? undefined : String(this.expanded)}\n aria-haspopup={this.resolvedHaspopup}\n aria-pressed={this.pressed === undefined ? undefined : String(this.pressed)}\n onPointerDown={event =>\n beginElevatedControlPress(\n event,\n this.pressScale && !this.isInactive && !this.isLoading,\n )\n }\n onClick={this.handleClick}\n >\n {this.showIcon && (\n <span class=\"button-filled__icon-wrap ds-control-icon-box ds-interaction-fill__content\">\n {this.isLoading\n ? <ds-loader size={iconSize} color=\"inherit\" />\n : <ds-icon name={this.icon} size={iconSize} color=\"inherit\" />\n }\n </span>\n )}\n {this.showLabel && (\n <ds-text\n class={{\n 'button-filled__label': true,\n 'ds-control-label-box': true,\n 'button-filled__label--loading': this.isLoading && this.variant === 'label',\n 'ds-interaction-fill__content': true,\n }}\n as=\"span\"\n variant={textVariant}\n emphasis\n color=\"inherit\"\n >\n {this.label}\n </ds-text>\n )}\n {this.showChevron && (\n <span\n class={{\n 'button-filled__chevron': true,\n 'ds-control-icon-box': true,\n 'ds-interaction-fill__content': true,\n 'button-filled__chevron--loading': this.isLoading && this.variant === 'label',\n }}\n aria-hidden=\"true\"\n >\n <ds-icon name=\"ChevronDown\" size={iconSize} color=\"inherit\" />\n </span>\n )}\n {this.isLoading && this.variant === 'label' && (\n <span class=\"button-filled__loader-overlay ds-interaction-fill__content\">\n <ds-loader size={iconSize} color=\"inherit\" />\n </span>\n )}\n </button>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{p as s,H as e,c as i,h as r,a as t,t as n}from"./index.js";import{d as a}from"./p-CPwpgUWT.js";const d=()=>`.sc-ds-breadcrumb-h{--ds-focus-ring-width:var(--dimension-stroke-width-025, 2px);--ds-focus-ring-offset:var(--dimension-space-025, 2px);--ds-focus-ring-color:var(--color-interaction-focus)}.ds-focus-ring.sc-ds-breadcrumb-h,.ds-focus-ring.sc-ds-breadcrumb,.ds-focus-ring-inset.sc-ds-breadcrumb-h,.ds-focus-ring-inset.sc-ds-breadcrumb{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-breadcrumb-h:focus-visible,.ds-focus-ring.sc-ds-breadcrumb:focus-visible{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring.ds-focus-ring--visible.sc-ds-breadcrumb-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-breadcrumb{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring-inset.sc-ds-breadcrumb-h:focus-visible,.ds-focus-ring-inset.sc-ds-breadcrumb:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-breadcrumb-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-breadcrumb:focus-visible::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-breadcrumb-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-breadcrumb{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-breadcrumb-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-breadcrumb::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-visually-hidden.sc-ds-breadcrumb-h,.ds-visually-hidden.sc-ds-breadcrumb{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.sc-ds-breadcrumb-h{position:relative;display:block;min-width:0;box-sizing:border-box}.breadcrumb.sc-ds-breadcrumb{inline-size:100%;min-width:0}.breadcrumb__list.sc-ds-breadcrumb{display:flex;align-items:center;box-sizing:border-box;inline-size:100%;min-width:0;margin:0;padding:0;overflow:hidden;list-style:none}.breadcrumb__item.sc-ds-breadcrumb{display:flex;flex:0 0 auto;align-items:center;min-width:0}.breadcrumb__separator.sc-ds-breadcrumb{flex:0 0 auto;margin-inline:var(--dimension-space-050);user-select:none}.breadcrumb__link.sc-ds-breadcrumb,.breadcrumb__current.sc-ds-breadcrumb{display:inline-flex;flex:0 0 auto;min-width:0;overflow:hidden;padding:0;border:0;border-radius:var(--dimension-radius-025);background:transparent;color:var(--color-foreground-secondary);font:inherit;text-decoration:none}.breadcrumb__link.sc-ds-breadcrumb{cursor:default}a.breadcrumb__link.sc-ds-breadcrumb{cursor:pointer}.breadcrumb__link.sc-ds-breadcrumb:hover .breadcrumb__label.sc-ds-breadcrumb{text-decoration:underline;text-decoration-color:var(--color-foreground-quaternary);text-underline-offset:var(--dimension-space-025);text-decoration-thickness:var(--dimension-stroke-width-012)}.breadcrumb__label.sc-ds-breadcrumb{display:inline-block;inline-size:var(--breadcrumb-label-width, auto);min-width:0}.breadcrumb__measurements.sc-ds-breadcrumb{position:absolute;inset:0 auto auto 0;visibility:hidden;pointer-events:none;white-space:nowrap}.breadcrumb__measurement.sc-ds-breadcrumb{display:inline-block;inline-size:max-content;max-inline-size:none}`;const c=s(class s extends e{constructor(s){super();if(s!==false){this.__registerHost()}this.dsSelect=i(this,"dsSelect");this.items=[];this.ariaLabel="Breadcrumb";this.labelWidths=[];this.collapsedLabels=[];this.measurementElements=[];this.separatorElements=[]}componentDidLoad(){this.observeContainer();this.scheduleMeasurement();void document.fonts?.ready.then((()=>this.scheduleMeasurement()))}componentDidRender(){this.observeContainer();this.scheduleMeasurement()}disconnectedCallback(){this.resizeObserver?.disconnect();this.observedElement=undefined;if(this.measurementFrame!==undefined)cancelAnimationFrame(this.measurementFrame)}handleItemsChange(){this.labelWidths=[];this.collapsedLabels=[];this.scheduleMeasurement()}observeContainer(){if(!this.navElement||this.observedElement===this.navElement)return;this.resizeObserver??(this.resizeObserver=new ResizeObserver((()=>this.scheduleMeasurement())));this.resizeObserver.disconnect();this.resizeObserver.observe(this.navElement);this.observedElement=this.navElement}scheduleMeasurement(){if(this.measurementFrame!==undefined)return;this.measurementFrame=requestAnimationFrame((()=>{this.measurementFrame=undefined;this.measureLabels()}))}measureLabels(){if(!this.navElement||!this.listElement||!this.ellipsisMeasurement||this.items.length===0)return;const s=this.items.map(((s,e)=>this.measurementElements[e]?.getBoundingClientRect().width??0));const e=this.ellipsisMeasurement.getBoundingClientRect().width;if(s.some((s=>s===0))||e===0)return;const i=this.separatorElements.reduce(((s,e)=>{const i=getComputedStyle(e);return s+e.getBoundingClientRect().width+Number.parseFloat(i.marginInlineStart)+Number.parseFloat(i.marginInlineEnd)}),0);const r=Math.max(0,this.navElement.clientWidth-i);const t=s.map((s=>Math.min(s,e)));const n=[...t];let a=Math.max(0,r-t.reduce(((s,e)=>s+e),0));for(let e=s.length-1;e>=0&&a>0;e-=1){const i=Math.min(a,s[e]-t[e]);n[e]+=i;a-=i}const d=n.length!==this.labelWidths.length||n.some(((s,e)=>Math.abs(s-(this.labelWidths[e]??0))>.25));const c=n.map(((e,i)=>s[i]>t[i]&&Math.abs(e-t[i])<=.25));const o=c.length!==this.collapsedLabels.length||c.some(((s,e)=>s!==this.collapsedLabels[e]));if(d)this.labelWidths=n;if(o)this.collapsedLabels=c}handleSelect(s,e){const i=this.dsSelect.emit({item:s,originalEvent:e});if(i.defaultPrevented)e.preventDefault()}renderItem(s,e){const i=this.labelWidths[e];const t=this.collapsedLabels[e]??false;const n=[r("ds-text",{class:"breadcrumb__label",as:"span",variant:"text-caption",color:"inherit",lineTruncation:t?"none":1,"aria-hidden":t?"true":undefined,style:i===undefined?undefined:{"--breadcrumb-label-width":`${i}px`}},t?"…":s.label),t?r("span",{class:"breadcrumb__accessible-label ds-visually-hidden"},s.label):null];if(s.isCurrent){return r("span",{class:"breadcrumb__current","aria-current":"page","aria-label":s.ariaLabel},n)}if(s.href){return r("a",{class:"breadcrumb__link ds-focus-ring",href:s.href,"aria-label":s.ariaLabel,onClick:e=>this.handleSelect(s,e)},n)}return r("button",{class:"breadcrumb__link ds-focus-ring",type:"button","aria-label":s.ariaLabel,onClick:e=>this.handleSelect(s,e)},n)}render(){if(this.items.length===0)return null;this.measurementElements=[];this.separatorElements=[];return r(t,null,r("nav",{class:"breadcrumb","aria-label":this.ariaLabel,ref:s=>{this.navElement=s}},r("div",{class:"breadcrumb__measurements","aria-hidden":"true"},this.items.map(((s,e)=>r("ds-text",{class:"breadcrumb__measurement",as:"span",variant:"text-caption",color:"inherit",ref:s=>{if(s)this.measurementElements[e]=s}},s.label))),r("ds-text",{class:"breadcrumb__measurement",as:"span",variant:"text-caption",color:"inherit",ref:s=>{this.ellipsisMeasurement=s}},"…")),r("ol",{class:"breadcrumb__list",ref:s=>{this.listElement=s}},this.items.map(((s,e)=>r("li",{class:"breadcrumb__item",key:s.id},e>0?r("ds-text",{class:"breadcrumb__separator",as:"span",variant:"text-caption",color:"tertiary","aria-hidden":"true",ref:s=>{if(s)this.separatorElements[e-1]=s}},"/"):null,this.renderItem(s,e)))))))}static get watchers(){return{items:[{handleItemsChange:0}]}}static get style(){return d()}},[2,"ds-breadcrumb",{items:[16],ariaLabel:[1,"aria-label"],labelWidths:[32],collapsedLabels:[32]},undefined,{items:[{handleItemsChange:0}]}]);function o(){if(typeof customElements==="undefined"){return}const s=["ds-breadcrumb","ds-text"];s.forEach((s=>{switch(s){case"ds-breadcrumb":if(!customElements.get(n(s))){customElements.define(n(s),c)}break;case"ds-text":if(!customElements.get(n(s))){a()}break}}))}o();export{c as B,o as d};
|
|
2
|
-
//# sourceMappingURL=p-G3qIxpQj.js.map
|