@ds-mo/ui 12.9.0 → 13.1.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 +249 -1108
- 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-donut.js.map +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-chip.js.map +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-sub-nav.js.map +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-tag.js.map +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-CgEYdMee.js → p-6qXDqCj_.js} +2 -2
- package/dist/components/{p-Cr3tEx7o.js → p-Ay1AX7Ql.js} +2 -2
- 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-BOCfICln.js → p-B1XW4VSn.js} +2 -2
- package/dist/components/p-B9p6w-_T.js +2 -0
- package/dist/components/p-B9p6w-_T.js.map +1 -0
- package/dist/components/p-BBFEhNzM.js +2 -0
- package/dist/components/p-BBFEhNzM.js.map +1 -0
- package/dist/components/p-BGUK8-Qm.js +2 -0
- package/dist/components/p-BGUK8-Qm.js.map +1 -0
- package/dist/components/p-BO4cj3iX.js +2 -0
- package/dist/components/{p-DCvA3Dc9.js.map → p-BO4cj3iX.js.map} +1 -1
- package/dist/components/{p-BKOlvCGS.js → p-BUZXuod2.js} +2 -2
- package/dist/components/p-BYWkksDO.js +2 -0
- package/dist/components/p-BYWkksDO.js.map +1 -0
- 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-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-BDKtu6Wb.js → p-BroVnDzE.js} +2 -2
- package/dist/components/{p-CIiBpjCn.js → p-BsoqsbBh.js} +2 -2
- package/dist/components/p-BybqPD8K.js +2 -0
- package/dist/components/p-BybqPD8K.js.map +1 -0
- package/dist/components/{p-CCzG5xDD.js → p-C-aCzwhA.js} +2 -2
- package/dist/components/p-C-aCzwhA.js.map +1 -0
- package/dist/components/p-C-kzknkR.js +2 -0
- package/dist/components/p-C-kzknkR.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-C4uYvyq6.js +2 -0
- package/dist/components/p-C4uYvyq6.js.map +1 -0
- package/dist/components/{p-C8HU4W8q.js → p-CBazaRlE.js} +2 -2
- package/dist/components/p-CH9yArA1.js +2 -0
- package/dist/components/p-CH9yArA1.js.map +1 -0
- package/dist/components/p-CHpNyAo1.js +2 -0
- package/dist/components/{p-CChcuL04.js.map → p-CHpNyAo1.js.map} +1 -1
- package/dist/components/{p-BhV5e6vF.js → p-CHuh71-U.js} +2 -2
- package/dist/components/p-CJDTh9Tg.js +2 -0
- package/dist/components/p-CJDTh9Tg.js.map +1 -0
- package/dist/components/p-CJbLY1tu.js +2 -0
- package/dist/components/p-CJbLY1tu.js.map +1 -0
- package/dist/components/p-CreGah0j.js +2 -0
- package/dist/components/p-Cvxm1OZB.js +2 -0
- package/dist/components/p-Cvxm1OZB.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-Cuih680v.js → p-Df17mJqI.js} +2 -2
- package/dist/components/p-DhEdICfD.js +2 -0
- package/dist/components/p-DhEdICfD.js.map +1 -0
- package/dist/components/p-bxoryr-3.js +2 -0
- package/dist/components/p-bxoryr-3.js.map +1 -0
- package/dist/components/p-eAfNzlMa.js +2 -0
- package/dist/components/p-eAfNzlMa.js.map +1 -0
- package/dist/components/p-gZni7A2L.js +2 -0
- package/dist/components/p-gZni7A2L.js.map +1 -0
- package/dist/components/{p-YR1XeuZf.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/docs/components.json +929 -2371
- 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-activity.json +1 -1
- package/dist/mcp-data/registry/agent-response.json +1 -1
- package/dist/mcp-data/registry/agent-source-list.json +2 -2
- package/dist/mcp-data/registry/agent-tool-call.json +1 -1
- package/dist/mcp-data/registry/attachment-list.json +2 -2
- package/dist/mcp-data/registry/avatar.json +1 -1
- package/dist/mcp-data/registry/badge.json +1 -1
- package/dist/mcp-data/registry/bar-nav.json +4 -22
- package/dist/mcp-data/registry/bar-title.json +1 -1
- package/dist/mcp-data/registry/bar-workflow.json +1 -1
- package/dist/mcp-data/registry/breadcrumb.json +2 -2
- package/dist/mcp-data/registry/button-filled.json +5 -20
- package/dist/mcp-data/registry/button-unfilled.json +15 -12
- package/dist/mcp-data/registry/card-data-viz.json +241 -0
- package/dist/mcp-data/registry/card-overview.json +39 -11
- package/dist/mcp-data/registry/card-setting.json +3 -3
- package/dist/mcp-data/registry/chart-bar.json +67 -19
- package/dist/mcp-data/registry/chart-donut.json +8 -8
- package/dist/mcp-data/registry/chart-legend.json +9 -11
- package/dist/mcp-data/registry/chart-line.json +2 -3
- package/dist/mcp-data/registry/checkbox.json +3 -3
- package/dist/mcp-data/registry/chip.json +1 -1
- package/dist/mcp-data/registry/code-block.json +1 -1
- package/dist/mcp-data/registry/conversation-list-item.json +2 -2
- package/dist/mcp-data/registry/conversation-list-section.json +1 -1
- package/dist/mcp-data/registry/conversation-list.json +1 -1
- package/dist/mcp-data/registry/divider.json +1 -1
- package/dist/mcp-data/registry/empty-state.json +1 -1
- package/dist/mcp-data/registry/field.json +3 -4
- package/dist/mcp-data/registry/icon.json +1 -1
- package/dist/mcp-data/registry/input.json +2 -2
- package/dist/mcp-data/registry/loader.json +1 -1
- package/dist/mcp-data/registry/markdown.json +2 -2
- package/dist/mcp-data/registry/menu.json +11 -22
- package/dist/mcp-data/registry/message-bubble.json +1 -1
- package/dist/mcp-data/registry/message-composer.json +1 -1
- package/dist/mcp-data/registry/message-scroller.json +1 -1
- package/dist/mcp-data/registry/message.json +1 -1
- package/dist/mcp-data/registry/mobile-bar-nav.json +2 -2
- package/dist/mcp-data/registry/mobile-header.json +2 -38
- package/dist/mcp-data/registry/mobile-section-switcher.json +2 -20
- package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
- package/dist/mcp-data/registry/modal.json +1 -1
- package/dist/mcp-data/registry/panel-nav.json +3 -3
- package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
- package/dist/mcp-data/registry/panel-tool-header.json +1 -1
- package/dist/mcp-data/registry/panel-tool-search.json +2 -2
- package/dist/mcp-data/registry/panel-tools.json +20 -56
- package/dist/mcp-data/registry/radio.json +2 -2
- package/dist/mcp-data/registry/registry.json +295 -1175
- package/dist/mcp-data/registry/scroll-overlay.json +1 -1
- package/dist/mcp-data/registry/select.json +60 -26
- package/dist/mcp-data/registry/shell-app.json +346 -21
- package/dist/mcp-data/registry/shell-page.json +2 -2
- package/dist/mcp-data/registry/shell-tools.json +13 -44
- package/dist/mcp-data/registry/skeleton.json +1 -1
- package/dist/mcp-data/registry/slider.json +2 -2
- package/dist/mcp-data/registry/swatch-picker.json +1 -1
- package/dist/mcp-data/registry/switch.json +2 -2
- package/dist/mcp-data/registry/tab-group.json +1 -1
- package/dist/mcp-data/registry/tag.json +1 -1
- package/dist/mcp-data/registry/text.json +1 -1
- package/dist/mcp-data/registry/toast.json +1 -1
- package/dist/mcp-data/registry/tooltip-data-viz.json +1 -1
- package/dist/mcp-data/registry/tooltip.json +1 -1
- package/dist/mcp-data/registry/typing-indicator.json +1 -1
- 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 +17 -0
- package/dist/types/components/CardOverview/card-overview-controller.d.ts +16 -0
- 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 -4
- 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 +210 -889
- package/dist/types/shell/index.d.ts +5 -13
- package/dist/types/shell/shell-responsive.d.ts +2 -1
- 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 +18 -10
- 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-8GK7B7K4.js +0 -2
- package/dist/components/p-8GK7B7K4.js.map +0 -1
- package/dist/components/p-B5tMlca-.js +0 -2
- package/dist/components/p-B5tMlca-.js.map +0 -1
- package/dist/components/p-B88n0pO3.js +0 -2
- package/dist/components/p-B88n0pO3.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-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-C61yJkfr.js +0 -2
- package/dist/components/p-C61yJkfr.js.map +0 -1
- package/dist/components/p-CChcuL04.js +0 -2
- package/dist/components/p-CCzG5xDD.js.map +0 -1
- package/dist/components/p-CGVXbXv9.js +0 -2
- package/dist/components/p-CGVXbXv9.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-Cuqxh-Tq.js +0 -2
- package/dist/components/p-Cuqxh-Tq.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-D2x17ei-.js +0 -2
- package/dist/components/p-D2x17ei-.js.map +0 -1
- package/dist/components/p-DCvA3Dc9.js +0 -2
- package/dist/components/p-DLZm_-sU.js +0 -2
- package/dist/components/p-DLZm_-sU.js.map +0 -1
- package/dist/components/p-DRnIuCiT.js +0 -2
- package/dist/components/p-DjKkSqrG.js +0 -2
- package/dist/components/p-DjKkSqrG.js.map +0 -1
- package/dist/components/p-DjbTFy2B.js.map +0 -1
- package/dist/components/p-DlscFn2m.js +0 -2
- package/dist/components/p-DlscFn2m.js.map +0 -1
- package/dist/components/p-DxkEC0hR.js +0 -2
- package/dist/components/p-DxkEC0hR.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-XMZCaXs7.js +0 -2
- package/dist/components/p-XMZCaXs7.js.map +0 -1
- package/dist/components/p-dyUp3Adm.js +0 -2
- package/dist/components/p-dyUp3Adm.js.map +0 -1
- package/dist/components/p-nkYN0Bub.js +0 -2
- package/dist/components/p-nkYN0Bub.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-CgEYdMee.js.map → p-6qXDqCj_.js.map} +0 -0
- /package/dist/components/{p-Cr3tEx7o.js.map → p-Ay1AX7Ql.js.map} +0 -0
- /package/dist/components/{p-BOCfICln.js.map → p-B1XW4VSn.js.map} +0 -0
- /package/dist/components/{p-BKOlvCGS.js.map → p-BUZXuod2.js.map} +0 -0
- /package/dist/components/{p-BO5aqZcf.js.map → p-BcTYhmku.js.map} +0 -0
- /package/dist/components/{p-BDKtu6Wb.js.map → p-BroVnDzE.js.map} +0 -0
- /package/dist/components/{p-CIiBpjCn.js.map → p-BsoqsbBh.js.map} +0 -0
- /package/dist/components/{p-C8HU4W8q.js.map → p-CBazaRlE.js.map} +0 -0
- /package/dist/components/{p-BhV5e6vF.js.map → p-CHuh71-U.js.map} +0 -0
- /package/dist/components/{p-DRnIuCiT.js.map → p-CreGah0j.js.map} +0 -0
- /package/dist/components/{p-Cuih680v.js.map → p-Df17mJqI.js.map} +0 -0
- /package/dist/components/{p-YR1XeuZf.js.map → p-ohsLFap_.js.map} +0 -0
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
-
"name": "card-shell-data-viz",
|
|
4
|
-
"title": "CardShellDataViz",
|
|
5
|
-
"description": "Dedicated header, action, sizing, and body chrome for data-visualization cards whose layouts evolve independently from settings sections.",
|
|
6
|
-
"type": "registry:ui",
|
|
7
|
-
"meta": {
|
|
8
|
-
"library": "@ds-mo/ui",
|
|
9
|
-
"distribution": "npm",
|
|
10
|
-
"storybook": "https://zainadeel.github.io/compomo/?path=/story/card-shell-data-viz",
|
|
11
|
-
"source": "src/wc/components/CardShellDataViz/CardShellDataViz.tsx",
|
|
12
|
-
"intentStatus": "complete",
|
|
13
|
-
"intent": {
|
|
14
|
-
"audience": "specialized",
|
|
15
|
-
"status": "experimental",
|
|
16
|
-
"summary": "Dedicated header, action, sizing, and body chrome for data-visualization cards whose layouts evolve independently from settings sections.",
|
|
17
|
-
"useWhen": [
|
|
18
|
-
"A card contains a chart, data-visualization legend, metric visualization, or a specialized data-viz composition.",
|
|
19
|
-
"A data-visualization card needs a heading and optional header actions while retaining a flexible body for its composing component.",
|
|
20
|
-
"Several chart-specific cards need one shell boundary that can evolve without changing settings sections."
|
|
21
|
-
],
|
|
22
|
-
"avoidWhen": [
|
|
23
|
-
"The card contains settings or editable form content; use the settings card composition.",
|
|
24
|
-
"The surface is ordinary content without data visualization; use a product-owned layout rather than data-viz card chrome.",
|
|
25
|
-
"The shell would own chart-specific layout, hover synchronization, legends, or empty-state policy; keep those in the composing data-viz card."
|
|
26
|
-
],
|
|
27
|
-
"alternatives": [
|
|
28
|
-
{
|
|
29
|
-
"when": "The surface contains editable settings rather than data visualization.",
|
|
30
|
-
"component": "component:ds-card-setting",
|
|
31
|
-
"reason": "CardSetting owns the persistent controlled settings-section workflow."
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"when": "The composition is the standard donut chart plus synchronized legend.",
|
|
35
|
-
"component": "component:ds-card-data-viz-donut",
|
|
36
|
-
"reason": "CardDataVizDonut composes this shell with donut-specific regions and hover synchronization."
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"when": "The composition is the standard line chart plus static horizontal legend.",
|
|
40
|
-
"component": "component:ds-card-data-viz-line",
|
|
41
|
-
"reason": "CardDataVizLine composes this shell with line-specific regions and disables decorative legend hover."
|
|
42
|
-
}
|
|
43
|
-
],
|
|
44
|
-
"commonlyComposedWith": [
|
|
45
|
-
"component:ds-chart-bar",
|
|
46
|
-
"component:ds-chart-bar-stacked",
|
|
47
|
-
"component:ds-chart-donut",
|
|
48
|
-
"component:ds-chart-line",
|
|
49
|
-
"component:ds-chart-legend",
|
|
50
|
-
"component:ds-card-data-viz-line",
|
|
51
|
-
"component:ds-button-unfilled"
|
|
52
|
-
],
|
|
53
|
-
"accessibility": [
|
|
54
|
-
"Provide a concise visible heading that identifies the visualization; the shell renders it as a section heading.",
|
|
55
|
-
"Header actions must provide their own accessible names and communicate any controlled state or popup relationship.",
|
|
56
|
-
"The shell does not add landmark or chart semantics; composing charts retain their own accessible names and descriptions.",
|
|
57
|
-
"Do not duplicate chart data in the heading. Provide an accessible summary through the chart or adjacent composition when visual encoding alone is insufficient."
|
|
58
|
-
],
|
|
59
|
-
"states": [
|
|
60
|
-
"The shell owns default data-visualization surface chrome only; loading, empty, error, selected, and interactive states belong to the composing card or chart.",
|
|
61
|
-
"The actions slot collapses when empty so headings retain the available header width."
|
|
62
|
-
],
|
|
63
|
-
"responsiveBehavior": [
|
|
64
|
-
"The selected sm, md, or lg width sets the matching token-based minimum height while max-width prevents overflow from a narrower parent.",
|
|
65
|
-
"The parent layout chooses card width, wrapping, stacking, and breakpoint changes; the shell does not switch sizes automatically.",
|
|
66
|
-
"The body is a flexible column so specialized data-viz cards can allocate remaining height between charts, legends, and supporting content."
|
|
67
|
-
],
|
|
68
|
-
"frameworkCaveats": {
|
|
69
|
-
"customElements": [
|
|
70
|
-
"Place header controls in the actions slot and data-visualization composition in the default slot."
|
|
71
|
-
],
|
|
72
|
-
"react": [
|
|
73
|
-
"Pass header controls with slot=\"actions\" and keep chart state in the composing React component."
|
|
74
|
-
],
|
|
75
|
-
"angular": [
|
|
76
|
-
"Project header controls with slot=\"actions\" and keep chart state in the composing Angular component."
|
|
77
|
-
]
|
|
78
|
-
},
|
|
79
|
-
"references": [
|
|
80
|
-
{
|
|
81
|
-
"label": "Storybook examples",
|
|
82
|
-
"path": "src/wc/components/CardShellDataViz/CardShellDataViz.stories.ts"
|
|
83
|
-
}
|
|
84
|
-
]
|
|
85
|
-
},
|
|
86
|
-
"api": {
|
|
87
|
-
"props": {
|
|
88
|
-
"cardWidth": {
|
|
89
|
-
"type": "CardShellDataVizWidth",
|
|
90
|
-
"resolvedType": "\"lg\" | \"md\" | \"sm\"",
|
|
91
|
-
"attribute": "card-width",
|
|
92
|
-
"default": "'md'",
|
|
93
|
-
"required": false,
|
|
94
|
-
"mutable": false,
|
|
95
|
-
"description": "Width token with the matching data-visualization shell min-height."
|
|
96
|
-
},
|
|
97
|
-
"heading": {
|
|
98
|
-
"type": "string",
|
|
99
|
-
"resolvedType": "string",
|
|
100
|
-
"attribute": "heading",
|
|
101
|
-
"required": true,
|
|
102
|
-
"mutable": false,
|
|
103
|
-
"description": "Data-visualization heading shown in the shell header."
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
"events": [],
|
|
107
|
-
"methods": [],
|
|
108
|
-
"slots": []
|
|
109
|
-
},
|
|
110
|
-
"props": {
|
|
111
|
-
"cardWidth": {
|
|
112
|
-
"type": "CardShellDataVizWidth",
|
|
113
|
-
"resolvedType": "\"lg\" | \"md\" | \"sm\"",
|
|
114
|
-
"attribute": "card-width",
|
|
115
|
-
"default": "'md'",
|
|
116
|
-
"required": false,
|
|
117
|
-
"mutable": false,
|
|
118
|
-
"description": "Width token with the matching data-visualization shell min-height."
|
|
119
|
-
},
|
|
120
|
-
"heading": {
|
|
121
|
-
"type": "string",
|
|
122
|
-
"resolvedType": "string",
|
|
123
|
-
"attribute": "heading",
|
|
124
|
-
"required": true,
|
|
125
|
-
"mutable": false,
|
|
126
|
-
"description": "Data-visualization heading shown in the shell header."
|
|
127
|
-
}
|
|
128
|
-
},
|
|
129
|
-
"events": [],
|
|
130
|
-
"methods": [],
|
|
131
|
-
"slots": [],
|
|
132
|
-
"exports": {
|
|
133
|
-
"customElement": "ds-card-shell-data-viz",
|
|
134
|
-
"react": "DsCardShellDataViz",
|
|
135
|
-
"angular": "DsCardShellDataViz"
|
|
136
|
-
},
|
|
137
|
-
"consumption": {
|
|
138
|
-
"install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
|
|
139
|
-
"cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
|
|
140
|
-
"customElements": {
|
|
141
|
-
"import": "import '@ds-mo/ui/dist/components/ds-card-shell-data-viz.js';",
|
|
142
|
-
"example": "<ds-card-shell-data-viz></ds-card-shell-data-viz>"
|
|
143
|
-
},
|
|
144
|
-
"react": {
|
|
145
|
-
"import": "import { DsCardShellDataViz } from '@ds-mo/ui/react';",
|
|
146
|
-
"example": "<DsCardShellDataViz />"
|
|
147
|
-
},
|
|
148
|
-
"angular": {
|
|
149
|
-
"import": "import { DsCardShellDataViz } from '@ds-mo/ui/angular/ds-card-shell-data-viz';",
|
|
150
|
-
"example": "<ds-card-shell-data-viz></ds-card-shell-data-viz>"
|
|
151
|
-
},
|
|
152
|
-
"peerDependencies": {
|
|
153
|
-
"required": [
|
|
154
|
-
"@ds-mo/tokens ^5.0.0",
|
|
155
|
-
"@ds-mo/icons ^6.4.0"
|
|
156
|
-
],
|
|
157
|
-
"frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
},
|
|
161
|
-
"dependencies": [
|
|
162
|
-
"@ds-mo/ui",
|
|
163
|
-
"@ds-mo/tokens"
|
|
164
|
-
],
|
|
165
|
-
"registryDependencies": [
|
|
166
|
-
"text"
|
|
167
|
-
],
|
|
168
|
-
"files": [
|
|
169
|
-
{
|
|
170
|
-
"path": "src/wc/components/CardShellDataViz/CardShellDataViz.css",
|
|
171
|
-
"content": "@import '../../utils/chrome-layout.css';\n\n:host {\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n width: var(--_card-shell-data-viz-width);\n min-height: var(--_card-shell-data-viz-min-height);\n max-width: 100%;\n overflow: hidden;\n border: none;\n border-radius: var(--dimension-radius-025);\n background-color: var(--color-background-primary);\n box-shadow: 0 0 0 var(--dimension-stroke-width-012) var(--color-border-tertiary);\n}\n\n.card-shell-data-viz__header {\n flex-shrink: 0;\n justify-content: space-between;\n height: var(--dimension-size-600);\n border-bottom: var(--dimension-stroke-width-012) solid var(--color-border-tertiary);\n background-color: var(--color-background-secondary);\n}\n\nds-text.card-shell-data-viz__title {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n box-sizing: border-box;\n min-width: 0;\n padding: calc(var(--dimension-space-075) + var(--dimension-space-025));\n -webkit-user-select: none;\n user-select: none;\n}\n\n.card-shell-data-viz__actions {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n gap: var(--dimension-space-100);\n}\n\n.card-shell-data-viz__actions:empty {\n display: none;\n}\n\n.card-shell-data-viz__body {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n box-sizing: border-box;\n min-height: 0;\n border-radius: 0 0 var(--dimension-radius-025) var(--dimension-radius-025);\n background-color: var(--color-background-primary);\n}\n",
|
|
172
|
-
"type": "registry:ui"
|
|
173
|
-
},
|
|
174
|
-
{
|
|
175
|
-
"path": "src/wc/components/CardShellDataViz/CardShellDataViz.tsx",
|
|
176
|
-
"content": "import { Component, h, Host, Prop } from '@stencil/core';\n\nexport type CardShellDataVizWidth = 'sm' | 'md' | 'lg';\n\nconst CARD_WIDTH_VARS: Record<CardShellDataVizWidth, string> = {\n sm: 'var(--dimension-card-width-sm)',\n md: 'var(--dimension-card-width-md)',\n lg: 'var(--dimension-card-width-lg)',\n};\n\nconst CARD_HEIGHT_VARS: Record<CardShellDataVizWidth, string> = {\n sm: 'var(--dimension-card-height-sm)',\n md: 'var(--dimension-card-height-md)',\n lg: 'var(--dimension-card-height-lg)',\n};\n\n/**\n * Dedicated shell chrome for data-visualization cards. Chart-specific layout,\n * legends, hover synchronization, and empty states belong to composing cards.\n */\n@Component({\n tag: 'ds-card-shell-data-viz',\n styleUrl: 'CardShellDataViz.css',\n scoped: true,\n})\nexport class CardShellDataViz {\n /** Data-visualization heading shown in the shell header. */\n @Prop() heading!: string;\n\n /** Width token with the matching data-visualization shell min-height. */\n @Prop() cardWidth: CardShellDataVizWidth = 'md';\n\n render() {\n return (\n <Host\n class=\"card-shell-data-viz\"\n style={{\n '--_card-shell-data-viz-width': CARD_WIDTH_VARS[this.cardWidth],\n '--_card-shell-data-viz-min-height': CARD_HEIGHT_VARS[this.cardWidth],\n }}\n >\n <header class=\"card-shell-data-viz__header ds-chrome-row ds-chrome-space--md\">\n <ds-text\n class=\"card-shell-data-viz__title\"\n variant=\"text-title-small\"\n emphasis\n color=\"primary\"\n as=\"h2\"\n >\n {this.heading}\n </ds-text>\n <div class=\"card-shell-data-viz__actions\">\n <slot name=\"actions\" />\n </div>\n </header>\n <div class=\"card-shell-data-viz__body\">\n <slot />\n </div>\n </Host>\n );\n }\n}\n",
|
|
177
|
-
"type": "registry:ui"
|
|
178
|
-
}
|
|
179
|
-
]
|
|
180
|
-
}
|
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
-
"name": "chart-bar-stacked",
|
|
4
|
-
"title": "ChartBarStacked",
|
|
5
|
-
"description": "Multi-series stacked bar chart for comparing raw totals or normalized 0–100% composition across ordered categories and time buckets.",
|
|
6
|
-
"type": "registry:ui",
|
|
7
|
-
"meta": {
|
|
8
|
-
"library": "@ds-mo/ui",
|
|
9
|
-
"distribution": "npm",
|
|
10
|
-
"storybook": "https://zainadeel.github.io/compomo/?path=/story/chart-bar-stacked",
|
|
11
|
-
"source": "src/wc/components/ChartBarStacked/ChartBarStacked.tsx",
|
|
12
|
-
"intentStatus": "complete",
|
|
13
|
-
"intent": {
|
|
14
|
-
"audience": "specialized",
|
|
15
|
-
"status": "experimental",
|
|
16
|
-
"summary": "Multi-series stacked bar chart for comparing raw totals or normalized 0–100% composition across ordered categories and time buckets.",
|
|
17
|
-
"useWhen": [
|
|
18
|
-
"Users need to compare both a category total and the contribution of several consistent series.",
|
|
19
|
-
"A time series needs to show how its composition changes across equal time buckets.",
|
|
20
|
-
"Every category should normalize to 100% so proportional composition can be compared independently of total magnitude."
|
|
21
|
-
],
|
|
22
|
-
"avoidWhen": [
|
|
23
|
-
"Users need to compare individual series values precisely across categories; use grouped bars or separate charts.",
|
|
24
|
-
"The visualization has only one measure per category; use ChartBar.",
|
|
25
|
-
"The primary task is following continuous trends; use ChartLine.",
|
|
26
|
-
"Series contain negative values or do not align with the shared category list."
|
|
27
|
-
],
|
|
28
|
-
"alternatives": [
|
|
29
|
-
{
|
|
30
|
-
"when": "Each category contains one independent value.",
|
|
31
|
-
"component": "component:ds-chart-bar",
|
|
32
|
-
"reason": "ChartBar provides the simpler single-series magnitude comparison."
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"when": "Users need to follow one or more trends rather than compare stack composition.",
|
|
36
|
-
"component": "component:ds-chart-line",
|
|
37
|
-
"reason": "ChartLine preserves each series as a continuous path across the ordered axis."
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"when": "One category's parts-to-whole composition is the focus.",
|
|
41
|
-
"component": "component:ds-chart-donut",
|
|
42
|
-
"reason": "ChartDonut provides the dedicated single-total composition treatment."
|
|
43
|
-
}
|
|
44
|
-
],
|
|
45
|
-
"commonlyComposedWith": [
|
|
46
|
-
"component:ds-chart-legend",
|
|
47
|
-
"component:ds-card-shell-data-viz",
|
|
48
|
-
"component:ds-tooltip-data-viz"
|
|
49
|
-
],
|
|
50
|
-
"accessibility": [
|
|
51
|
-
"Provide a visible legend or adjacent textual summary that names every series; do not rely on segment color alone.",
|
|
52
|
-
"The chart image name includes each category and series value, using normalized percentages in percentage mode.",
|
|
53
|
-
"Use an adjacent data table when exact cross-category comparisons are necessary to complete the task."
|
|
54
|
-
],
|
|
55
|
-
"states": [
|
|
56
|
-
"Stacked mode preserves raw magnitudes and scales the y-axis to the largest category total.",
|
|
57
|
-
"Percentage mode normalizes each non-empty category independently and renders a fixed 0%, 25%, 50%, 75%, and 100% axis.",
|
|
58
|
-
"Series render bottom-to-top in authored order; keep that order and color mapping stable across categories.",
|
|
59
|
-
"Stacked mode gives only the top visible segment 2px top corners. Percentage mode keeps every corner square because the normalized stack touches both axis edges.",
|
|
60
|
-
"Adjacent segments are separated by a non-scaling 1px gap; the stack's outer edges do not receive that separator.",
|
|
61
|
-
"Negative values are unsupported and render as zero; the owning product supplies loading, empty, and error states."
|
|
62
|
-
],
|
|
63
|
-
"responsiveBehavior": [
|
|
64
|
-
"Width and height provide the standalone intrinsic viewport; constrained card regions are measured and reflow both axes to their rendered pixel dimensions.",
|
|
65
|
-
"Responsive layout changes stack positions and plot extents without scaling SVG text, strokes, separators, corner radii, or margins.",
|
|
66
|
-
"The parent chooses how many time buckets remain legible at each width.",
|
|
67
|
-
"Pre-format category labels and reduce bucket count before rendering when horizontal space becomes constrained."
|
|
68
|
-
],
|
|
69
|
-
"frameworkCaveats": {
|
|
70
|
-
"customElements": [
|
|
71
|
-
"Assign series and categories as JavaScript properties and keep every series aligned to the category count."
|
|
72
|
-
],
|
|
73
|
-
"react": [
|
|
74
|
-
"Pass stable series and category arrays; choose percentage variant only when each category represents a meaningful whole."
|
|
75
|
-
],
|
|
76
|
-
"angular": [
|
|
77
|
-
"Bind series and categories as properties; choose percentage variant only when each category represents a meaningful whole."
|
|
78
|
-
]
|
|
79
|
-
},
|
|
80
|
-
"references": [
|
|
81
|
-
{
|
|
82
|
-
"label": "Storybook examples",
|
|
83
|
-
"path": "src/wc/components/ChartBarStacked/ChartBarStacked.stories.ts"
|
|
84
|
-
}
|
|
85
|
-
]
|
|
86
|
-
},
|
|
87
|
-
"api": {
|
|
88
|
-
"props": {
|
|
89
|
-
"categories": {
|
|
90
|
-
"type": "string[]",
|
|
91
|
-
"resolvedType": "string[]",
|
|
92
|
-
"default": "[]",
|
|
93
|
-
"required": false,
|
|
94
|
-
"mutable": false,
|
|
95
|
-
"description": "X-axis labels — must match each series' `data` length. Set as a JS property."
|
|
96
|
-
},
|
|
97
|
-
"height": {
|
|
98
|
-
"type": "number",
|
|
99
|
-
"resolvedType": "number",
|
|
100
|
-
"attribute": "height",
|
|
101
|
-
"default": "240",
|
|
102
|
-
"required": false,
|
|
103
|
-
"mutable": false,
|
|
104
|
-
"description": "Standalone intrinsic height. Container constraints reflow the plot at rendered pixel size."
|
|
105
|
-
},
|
|
106
|
-
"series": {
|
|
107
|
-
"type": "ChartSeries[]",
|
|
108
|
-
"resolvedType": "ChartSeries[]",
|
|
109
|
-
"default": "[]",
|
|
110
|
-
"required": false,
|
|
111
|
-
"mutable": false,
|
|
112
|
-
"description": "Ordered stack series. Set as a JS property (not an HTML attribute)."
|
|
113
|
-
},
|
|
114
|
-
"variant": {
|
|
115
|
-
"type": "ChartBarStackedVariant",
|
|
116
|
-
"resolvedType": "\"percentage\" | \"stacked\"",
|
|
117
|
-
"attribute": "variant",
|
|
118
|
-
"default": "'stacked'",
|
|
119
|
-
"required": false,
|
|
120
|
-
"mutable": false
|
|
121
|
-
},
|
|
122
|
-
"width": {
|
|
123
|
-
"type": "number",
|
|
124
|
-
"resolvedType": "number",
|
|
125
|
-
"attribute": "width",
|
|
126
|
-
"default": "480",
|
|
127
|
-
"required": false,
|
|
128
|
-
"mutable": false,
|
|
129
|
-
"description": "Standalone intrinsic width. Container constraints reflow the plot at rendered pixel size."
|
|
130
|
-
}
|
|
131
|
-
},
|
|
132
|
-
"events": [],
|
|
133
|
-
"methods": [],
|
|
134
|
-
"slots": []
|
|
135
|
-
},
|
|
136
|
-
"props": {
|
|
137
|
-
"categories": {
|
|
138
|
-
"type": "string[]",
|
|
139
|
-
"resolvedType": "string[]",
|
|
140
|
-
"default": "[]",
|
|
141
|
-
"required": false,
|
|
142
|
-
"mutable": false,
|
|
143
|
-
"description": "X-axis labels — must match each series' `data` length. Set as a JS property."
|
|
144
|
-
},
|
|
145
|
-
"height": {
|
|
146
|
-
"type": "number",
|
|
147
|
-
"resolvedType": "number",
|
|
148
|
-
"attribute": "height",
|
|
149
|
-
"default": "240",
|
|
150
|
-
"required": false,
|
|
151
|
-
"mutable": false,
|
|
152
|
-
"description": "Standalone intrinsic height. Container constraints reflow the plot at rendered pixel size."
|
|
153
|
-
},
|
|
154
|
-
"series": {
|
|
155
|
-
"type": "ChartSeries[]",
|
|
156
|
-
"resolvedType": "ChartSeries[]",
|
|
157
|
-
"default": "[]",
|
|
158
|
-
"required": false,
|
|
159
|
-
"mutable": false,
|
|
160
|
-
"description": "Ordered stack series. Set as a JS property (not an HTML attribute)."
|
|
161
|
-
},
|
|
162
|
-
"variant": {
|
|
163
|
-
"type": "ChartBarStackedVariant",
|
|
164
|
-
"resolvedType": "\"percentage\" | \"stacked\"",
|
|
165
|
-
"attribute": "variant",
|
|
166
|
-
"default": "'stacked'",
|
|
167
|
-
"required": false,
|
|
168
|
-
"mutable": false
|
|
169
|
-
},
|
|
170
|
-
"width": {
|
|
171
|
-
"type": "number",
|
|
172
|
-
"resolvedType": "number",
|
|
173
|
-
"attribute": "width",
|
|
174
|
-
"default": "480",
|
|
175
|
-
"required": false,
|
|
176
|
-
"mutable": false,
|
|
177
|
-
"description": "Standalone intrinsic width. Container constraints reflow the plot at rendered pixel size."
|
|
178
|
-
}
|
|
179
|
-
},
|
|
180
|
-
"events": [],
|
|
181
|
-
"methods": [],
|
|
182
|
-
"slots": [],
|
|
183
|
-
"exports": {
|
|
184
|
-
"customElement": "ds-chart-bar-stacked",
|
|
185
|
-
"react": "DsChartBarStacked",
|
|
186
|
-
"angular": "DsChartBarStacked"
|
|
187
|
-
},
|
|
188
|
-
"consumption": {
|
|
189
|
-
"install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
|
|
190
|
-
"cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
|
|
191
|
-
"customElements": {
|
|
192
|
-
"import": "import '@ds-mo/ui/dist/components/ds-chart-bar-stacked.js';",
|
|
193
|
-
"example": "<ds-chart-bar-stacked></ds-chart-bar-stacked>"
|
|
194
|
-
},
|
|
195
|
-
"react": {
|
|
196
|
-
"import": "import { DsChartBarStacked } from '@ds-mo/ui/react';",
|
|
197
|
-
"example": "<DsChartBarStacked />"
|
|
198
|
-
},
|
|
199
|
-
"angular": {
|
|
200
|
-
"import": "import { DsChartBarStacked } from '@ds-mo/ui/angular/ds-chart-bar-stacked';",
|
|
201
|
-
"example": "<ds-chart-bar-stacked></ds-chart-bar-stacked>"
|
|
202
|
-
},
|
|
203
|
-
"complexPropertyNote": "Assign these non-primitive values as JavaScript properties: categories, series.",
|
|
204
|
-
"peerDependencies": {
|
|
205
|
-
"required": [
|
|
206
|
-
"@ds-mo/tokens ^5.0.0",
|
|
207
|
-
"@ds-mo/icons ^6.4.0"
|
|
208
|
-
],
|
|
209
|
-
"frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
},
|
|
213
|
-
"dependencies": [
|
|
214
|
-
"@ds-mo/ui",
|
|
215
|
-
"@ds-mo/tokens"
|
|
216
|
-
],
|
|
217
|
-
"registryDependencies": [],
|
|
218
|
-
"files": [
|
|
219
|
-
{
|
|
220
|
-
"path": "src/wc/components/ChartBarStacked/ChartBarStacked.css",
|
|
221
|
-
"content": ":host {\n display: inline-flex;\n max-width: 100%;\n font-family: var(--typography-font-family);\n}\n\n.chart-bar-stacked__svg {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.chart-bar-stacked__gridline {\n stroke: var(--color-border-tertiary);\n stroke-width: var(--dimension-stroke-width-012);\n vector-effect: non-scaling-stroke;\n}\n\n/* Matches ds-text text-caption regular (SVG cannot host ds-text). */\n.chart-bar-stacked__axis-label {\n fill: var(--color-foreground-secondary);\n font-family: var(--typography-font-family);\n font-size: var(--typography-fontsize-xs);\n font-weight: var(--typography-weight-medium);\n letter-spacing: var(--typography-letterspacing-positive);\n text-transform: uppercase;\n}\n\n.chart-bar-stacked__segment-shape--rounded {\n rx: var(--dimension-radius-025);\n}\n\n.chart-bar-stacked__segment-separator {\n stroke: var(--color-background-primary);\n stroke-width: var(--dimension-stroke-width-012);\n stroke-linecap: butt;\n vector-effect: non-scaling-stroke;\n}\n",
|
|
222
|
-
"type": "registry:ui"
|
|
223
|
-
},
|
|
224
|
-
{
|
|
225
|
-
"path": "src/wc/components/ChartBarStacked/ChartBarStacked.tsx",
|
|
226
|
-
"content": "import { Component, Prop, State, Watch, h, Host } from '@stencil/core';\nimport { scaleBand, scaleLinear } from 'd3-scale';\nimport { categoryColor } from '../../utils/chart-colors';\nimport { formatPercentage } from '../../utils';\nimport { resolveCartesianChartLayout } from '../../utils/cartesian-chart-layout';\nimport {\n ChartViewportController,\n type ChartViewportSize,\n} from '../../utils/chart-viewport-controller';\nimport type { ChartSeries } from '../../utils/chart-types';\n\nexport type ChartBarStackedVariant = 'stacked' | 'percentage';\n\nconst PERCENTAGE_TICKS = [0, 25, 50, 75, 100];\n\n@Component({\n tag: 'ds-chart-bar-stacked',\n styleUrl: 'ChartBarStacked.css',\n scoped: true,\n})\nexport class ChartBarStacked {\n /** Ordered stack series. Set as a JS property (not an HTML attribute). */\n @Prop() series: ChartSeries[] = [];\n /** X-axis labels — must match each series' `data` length. Set as a JS property. */\n @Prop() categories: string[] = [];\n @Prop() variant: ChartBarStackedVariant = 'stacked';\n /** Standalone intrinsic width. Container constraints reflow the plot at rendered pixel size. */\n @Prop() width: number = 480;\n /** Standalone intrinsic height. Container constraints reflow the plot at rendered pixel size. */\n @Prop() height: number = 240;\n\n @State() private viewport: ChartViewportSize | undefined;\n\n private viewportController: ChartViewportController | null = null;\n private svgEl: SVGElement | null = null;\n\n componentDidLoad() {\n this.connectViewportController();\n }\n\n connectedCallback() {\n if (this.svgEl && !this.viewportController) this.connectViewportController();\n }\n\n componentDidRender() {\n if (!this.viewportController) this.connectViewportController();\n }\n\n private connectViewportController() {\n if (!this.svgEl) return;\n this.viewportController = new ChartViewportController(this.svgEl, viewport => {\n if (\n viewport.width !== this.viewport?.width ||\n viewport.height !== this.viewport?.height\n ) {\n this.viewport = viewport;\n }\n });\n this.viewportController.connect();\n }\n\n disconnectedCallback() {\n this.viewportController?.disconnect();\n this.viewportController = null;\n }\n\n @Watch('width')\n @Watch('height')\n handleIntrinsicSizeChange() {\n this.viewport = undefined;\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(() => this.viewportController?.measure());\n }\n }\n\n private valuesForCategory(categoryIndex: number) {\n return this.series.map(series => Math.max(0, series.data[categoryIndex] ?? 0));\n }\n\n private accessibleLabel() {\n return this.categories\n .map((category, categoryIndex) => {\n const values = this.valuesForCategory(categoryIndex);\n const total = values.reduce((sum, value) => sum + value, 0);\n const details = this.series\n .map((series, seriesIndex) => {\n const value = values[seriesIndex];\n const visibleValue = this.variant === 'percentage'\n ? formatPercentage(total ? value / total : 0, 1)\n : String(value);\n return `${series.name}: ${visibleValue}`;\n })\n .join(', ');\n return `${category}: ${details}`;\n })\n .join('; ');\n }\n\n render() {\n const viewportWidth = this.viewport?.width ?? this.width;\n const viewportHeight = this.viewport?.height ?? this.height;\n const { margin, axisLabelGap, categoryLabelOffset } =\n resolveCartesianChartLayout();\n const innerWidth = Math.max(0, viewportWidth - margin.left - margin.right);\n const innerHeight = Math.max(0, viewportHeight - margin.top - margin.bottom);\n const categoryValues = this.categories.map((_, index) => this.valuesForCategory(index));\n const totals = categoryValues.map(values =>\n values.reduce((sum, value) => sum + value, 0)\n );\n const yMax = this.variant === 'percentage' ? 100 : Math.max(0, ...totals);\n\n const xScale = scaleBand()\n .domain(this.categories)\n .range([0, innerWidth])\n .padding(0.35);\n\n const yScale = scaleLinear()\n .domain([0, yMax || 1])\n .range([innerHeight, 0])\n .nice();\n\n const yTicks = this.variant === 'percentage' ? PERCENTAGE_TICKS : yScale.ticks(4);\n\n return (\n <Host class=\"chart-bar-stacked\">\n <svg\n class=\"chart-bar-stacked__svg\"\n ref={element => {\n this.svgEl = element ?? null;\n }}\n width={viewportWidth}\n height={viewportHeight}\n role=\"img\"\n aria-label={this.accessibleLabel()}\n >\n <g transform={`translate(${margin.left}, ${margin.top})`}>\n {yTicks.map(tick => (\n <g key={`grid-${tick}`} transform={`translate(0, ${yScale(tick)})`}>\n <line class=\"chart-bar-stacked__gridline\" x1={0} x2={innerWidth} />\n <text\n class=\"chart-bar-stacked__axis-label\"\n x={-axisLabelGap}\n text-anchor=\"end\"\n dominant-baseline=\"middle\"\n >\n {this.variant === 'percentage' ? `${tick}%` : tick}\n </text>\n </g>\n ))}\n\n {this.categories.map((category, categoryIndex) => {\n const barWidth = xScale.bandwidth();\n const barX = xScale(category) ?? 0;\n const values = categoryValues[categoryIndex];\n const total = totals[categoryIndex];\n const topSeriesIndex = values.reduce(\n (topIndex, value, seriesIndex) => (value > 0 ? seriesIndex : topIndex),\n -1\n );\n let cumulativeValue = 0;\n\n return (\n <g class=\"chart-bar-stacked__stack\" data-category={category} key={category}>\n {this.series.map((series, seriesIndex) => {\n const rawValue = values[seriesIndex];\n const value = this.variant === 'percentage'\n ? total\n ? (rawValue / total) * 100\n : 0\n : rawValue;\n const segmentStart = cumulativeValue;\n const segmentEnd = cumulativeValue + value;\n cumulativeValue = segmentEnd;\n\n const segmentY = yScale(segmentEnd);\n const segmentBottom = yScale(segmentStart);\n const segmentHeight = Math.max(0, segmentBottom - segmentY);\n if (!segmentHeight) return null;\n\n const fill = series.color ?? categoryColor(seriesIndex);\n const isTopSegment = seriesIndex === topSeriesIndex;\n const hasRoundedTop =\n this.variant === 'stacked' && isTopSegment;\n const squareBaseY = segmentY + segmentHeight / 2;\n const squareBaseHeight = segmentHeight / 2;\n\n return (\n <g\n class=\"chart-bar-stacked__segment\"\n data-series={series.name}\n key={series.name}\n >\n <rect\n class={{\n 'chart-bar-stacked__segment-shape': true,\n 'chart-bar-stacked__segment-shape--rounded': hasRoundedTop,\n }}\n x={barX}\n y={segmentY}\n width={barWidth}\n height={segmentHeight}\n fill={fill}\n />\n {hasRoundedTop ? (\n <rect\n class=\"chart-bar-stacked__segment-square-base\"\n x={barX}\n y={squareBaseY}\n width={barWidth}\n height={squareBaseHeight}\n fill={fill}\n />\n ) : null}\n {segmentStart > 0 ? (\n <line\n class=\"chart-bar-stacked__segment-separator\"\n x1={barX}\n x2={barX + barWidth}\n y1={segmentBottom}\n y2={segmentBottom}\n vector-effect=\"non-scaling-stroke\"\n />\n ) : null}\n </g>\n );\n })}\n <text\n class=\"chart-bar-stacked__axis-label\"\n x={barX + barWidth / 2}\n y={innerHeight + categoryLabelOffset}\n text-anchor=\"middle\"\n >\n {category}\n </text>\n </g>\n );\n })}\n </g>\n </svg>\n </Host>\n );\n }\n}\n",
|
|
227
|
-
"type": "registry:ui"
|
|
228
|
-
}
|
|
229
|
-
]
|
|
230
|
-
}
|