@ds-mo/ui 12.6.2 → 12.8.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 +44 -115
- package/dist/.build-stamp +1 -1
- package/dist/agent-patterns.json +26 -11
- package/dist/agent.json +285 -49
- package/dist/angular/ds-button-filled.d.ts +1 -1
- package/dist/angular/ds-button-filled.js +3 -3
- package/dist/angular/ds-button-unfilled.d.ts +1 -1
- package/dist/angular/ds-button-unfilled.js +3 -3
- package/dist/angular/ds-card-overview.d.ts +19 -0
- package/dist/angular/ds-card-overview.js +42 -0
- package/dist/angular/ds-menu.d.ts +1 -1
- package/dist/angular/ds-menu.js +3 -3
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +1 -0
- package/dist/angular/proxies.d.ts +1 -0
- package/dist/angular/proxies.js +1 -0
- 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-bar-workflow.js.map +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-card-data-viz-bar.js +1 -1
- package/dist/components/ds-card-data-viz-bar.js.map +1 -1
- package/dist/components/ds-card-data-viz-donut.js +1 -1
- package/dist/components/ds-card-data-viz-donut.js.map +1 -1
- package/dist/components/ds-card-data-viz-line.js +1 -1
- package/dist/components/ds-card-data-viz-line.js.map +1 -1
- package/dist/components/ds-card-overview.d.ts +11 -0
- package/dist/components/ds-card-overview.js +2 -0
- package/dist/components/ds-card-overview.js.map +1 -0
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-card-setting.js.map +1 -1
- package/dist/components/ds-card-shell-data-viz.js +1 -1
- package/dist/components/ds-chart-bar-stacked.js +1 -1
- package/dist/components/ds-chart-bar-stacked.js.map +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-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-conversation-list.js.map +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-field.js.map +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-scroller.js.map +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-modal.js.map +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-tool-search.js.map +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-multi.js +1 -1
- package/dist/components/ds-select-multi.js.map +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-gradient-picker.js +1 -1
- package/dist/components/ds-shell-gradient-swatch.js +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-skeleton.js.map +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-toast.js.map +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-2foAUsDN.js +2 -0
- package/dist/components/p-2foAUsDN.js.map +1 -0
- package/dist/components/{p-Ccj5Op6E.js → p-38PfdMkF.js} +2 -2
- package/dist/components/p-69lHhJiX.js +2 -0
- package/dist/components/p-69lHhJiX.js.map +1 -0
- package/dist/components/p-B6NvVdeO.js +2 -0
- package/dist/components/p-B6NvVdeO.js.map +1 -0
- package/dist/components/p-B6Vuayt6.js +2 -0
- package/dist/components/p-B6Vuayt6.js.map +1 -0
- package/dist/components/p-B6vE3ujd.js +2 -0
- package/dist/components/p-B6vE3ujd.js.map +1 -0
- package/dist/components/p-BBePKRHC.js +2 -0
- package/dist/components/p-BBePKRHC.js.map +1 -0
- package/dist/components/{p-CaRyxTMz.js → p-BFRMwl93.js} +2 -2
- package/dist/components/p-BKOlvCGS.js +2 -0
- package/dist/components/p-BKOlvCGS.js.map +1 -0
- package/dist/components/{p-C7bZ-jiU.js → p-BO5aqZcf.js} +2 -2
- package/dist/components/p-BX0BMhgz.js +2 -0
- package/dist/components/p-BX0BMhgz.js.map +1 -0
- package/dist/components/p-BXaieghV.js +2 -0
- package/dist/components/p-BXaieghV.js.map +1 -0
- package/dist/components/p-BlHzmszE.js +2 -0
- package/dist/components/{p-BkAMkjIR.js.map → p-BlHzmszE.js.map} +1 -1
- package/dist/components/p-By_s1wNN.js +2 -0
- package/dist/components/p-By_s1wNN.js.map +1 -0
- package/dist/components/p-C61yJkfr.js +2 -0
- package/dist/components/p-C61yJkfr.js.map +1 -0
- package/dist/components/{p-DXLWm4PF.js → p-CNgPwd11.js} +2 -2
- package/dist/components/p-CNjOyUQu.js +2 -0
- package/dist/components/p-CNjOyUQu.js.map +1 -0
- package/dist/components/{p-BwGnhInj.js → p-CPwpgUWT.js} +2 -2
- package/dist/components/p-CU2673IJ.js +2 -0
- package/dist/components/p-CU2673IJ.js.map +1 -0
- package/dist/components/{p-B9bxDfZV.js → p-CsX3ICz7.js} +2 -2
- package/dist/components/p-CuwopElg.js +2 -0
- package/dist/components/p-CuwopElg.js.map +1 -0
- package/dist/components/{p-D-xttdpn.js → p-D0e77tkd.js} +2 -2
- package/dist/components/p-D1bNvIpb.js +2 -0
- package/dist/components/p-D1bNvIpb.js.map +1 -0
- package/dist/components/{p-BwsGYxZx.js → p-D9u1_OEZ.js} +2 -2
- package/dist/components/{p-DQDpDYyF.js → p-DB9XJm2c.js} +2 -2
- package/dist/components/{p-CnHrJTD5.js → p-DIFUsoM-.js} +2 -2
- package/dist/components/p-DhKvqh5G.js +2 -0
- package/dist/components/p-DhKvqh5G.js.map +1 -0
- package/dist/components/p-DhLmoCe_.js +2 -0
- package/dist/components/p-DhLmoCe_.js.map +1 -0
- package/dist/components/p-DjbTFy2B.js +2 -0
- package/dist/components/p-DjbTFy2B.js.map +1 -0
- package/dist/components/{p-CWTih3Gc.js → p-DmAHufd5.js} +2 -2
- package/dist/components/p-DzM3SzPz.js +2 -0
- package/dist/components/p-DzM3SzPz.js.map +1 -0
- package/dist/components/{p-DqubRds2.js → p-G3qIxpQj.js} +2 -2
- package/dist/components/p-Re2kPrXm.js +2 -0
- package/dist/components/p-Re2kPrXm.js.map +1 -0
- package/dist/components/{p-DwX7UmLl.js → p-Utr23NC-.js} +2 -2
- package/dist/components/{p-DIoiApa-.js → p-Vdufoj7G.js} +2 -2
- package/dist/components/p-huw1oRbt.js +2 -0
- package/dist/components/p-huw1oRbt.js.map +1 -0
- package/dist/components/p-ukB-dPOK.js +2 -0
- package/dist/components/{p-BY0PzkUp.js.map → p-ukB-dPOK.js.map} +1 -1
- package/dist/components/p-yhj1lIPx.js +2 -0
- package/dist/docs/components.json +760 -87
- package/dist/lib/components/Menu/menu-position.d.ts +6 -6
- package/dist/lib/toast/toast-types.d.ts +3 -3
- package/dist/lib/utils/anchored-position.d.ts +34 -0
- package/dist/lib/utils/choice-popup-alignment.d.ts +2 -2
- package/dist/lib/utils/control-text.d.ts +3 -1
- package/dist/lib/utils/index.d.ts +3 -1
- package/dist/lib/utils/index.js +39 -0
- package/dist/lib/utils/index.js.map +3 -3
- package/dist/lib/utils/metric-change.d.ts +52 -0
- package/dist/lib/utils/token-defaults.d.ts +3 -0
- 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 +1 -1
- package/dist/mcp-data/registry/agent-tool-call.json +1 -1
- package/dist/mcp-data/registry/attachment-list.json +1 -1
- 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 +3 -3
- package/dist/mcp-data/registry/bar-title.json +3 -3
- package/dist/mcp-data/registry/bar-workflow.json +3 -3
- package/dist/mcp-data/registry/breadcrumb.json +1 -1
- package/dist/mcp-data/registry/button-filled.json +125 -8
- package/dist/mcp-data/registry/button-unfilled.json +50 -5
- package/dist/mcp-data/registry/card-data-viz-bar.json +5 -4
- package/dist/mcp-data/registry/card-data-viz-donut.json +5 -3
- package/dist/mcp-data/registry/card-data-viz-line.json +5 -4
- package/dist/mcp-data/registry/card-overview.json +317 -0
- package/dist/mcp-data/registry/card-setting.json +3 -3
- package/dist/mcp-data/registry/card-shell-data-viz.json +3 -3
- package/dist/mcp-data/registry/chart-bar-stacked.json +14 -9
- package/dist/mcp-data/registry/chart-bar.json +15 -10
- package/dist/mcp-data/registry/chart-donut.json +3 -2
- package/dist/mcp-data/registry/chart-legend.json +1 -1
- package/dist/mcp-data/registry/chart-line.json +15 -10
- package/dist/mcp-data/registry/checkbox.json +10 -10
- 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 +3 -3
- package/dist/mcp-data/registry/conversation-list-section.json +1 -1
- package/dist/mcp-data/registry/conversation-list.json +3 -3
- package/dist/mcp-data/registry/divider.json +1 -1
- package/dist/mcp-data/registry/empty-state.json +6 -2
- package/dist/mcp-data/registry/field.json +4 -3
- package/dist/mcp-data/registry/icon.json +1 -1
- package/dist/mcp-data/registry/input.json +9 -8
- package/dist/mcp-data/registry/loader.json +1 -1
- package/dist/mcp-data/registry/markdown.json +1 -1
- package/dist/mcp-data/registry/menu.json +24 -5
- 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 +3 -3
- package/dist/mcp-data/registry/message.json +1 -1
- package/dist/mcp-data/registry/mobile-bar-nav.json +4 -4
- package/dist/mcp-data/registry/mobile-header.json +3 -3
- package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
- package/dist/mcp-data/registry/mobile-sheet-nav.json +6 -4
- package/dist/mcp-data/registry/modal.json +3 -3
- 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 +3 -3
- package/dist/mcp-data/registry/panel-tool-search.json +3 -3
- package/dist/mcp-data/registry/panel-tools.json +4 -3
- package/dist/mcp-data/registry/radio.json +10 -10
- package/dist/mcp-data/registry/registry.json +288 -49
- package/dist/mcp-data/registry/scroll-overlay.json +1 -1
- package/dist/mcp-data/registry/select-multi.json +10 -8
- package/dist/mcp-data/registry/select.json +10 -8
- package/dist/mcp-data/registry/shell-app.json +3 -2
- package/dist/mcp-data/registry/shell-gradient-picker.json +1 -1
- package/dist/mcp-data/registry/shell-gradient-swatch.json +1 -1
- package/dist/mcp-data/registry/shell-page.json +5 -4
- package/dist/mcp-data/registry/shell-tools.json +2 -2
- package/dist/mcp-data/registry/skeleton.json +3 -3
- package/dist/mcp-data/registry/slider.json +4 -3
- package/dist/mcp-data/registry/swatch-picker.json +1 -1
- package/dist/mcp-data/registry/switch.json +8 -8
- 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 +2 -2
- package/dist/mcp-data/registry/tooltip-data-viz.json +3 -1
- package/dist/mcp-data/registry/tooltip.json +3 -8
- package/dist/mcp-data/registry/typing-indicator.json +1 -1
- package/dist/react/components.d.ts +1 -0
- package/dist/react/components.js +1 -0
- package/dist/react/ds-card-overview.d.ts +12 -0
- package/dist/react/ds-card-overview.js +12 -0
- package/dist/styles/control-elevation.css +38 -2
- package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +33 -1
- package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +20 -0
- package/dist/types/components/CardOverview/CardOverview.d.ts +59 -0
- package/dist/types/components/CardOverview/card-overview-types.d.ts +32 -0
- package/dist/types/components/CardOverview/index.d.ts +2 -0
- package/dist/types/components/ChartBar/ChartBar.d.ts +11 -0
- package/dist/types/components/ChartBarStacked/ChartBarStacked.d.ts +11 -0
- package/dist/types/components/ChartLine/ChartLine.d.ts +11 -0
- package/dist/types/components/Checkbox/Checkbox.d.ts +1 -1
- package/dist/types/components/Input/Input.d.ts +1 -1
- package/dist/types/components/Menu/Menu.d.ts +11 -5
- package/dist/types/components/Menu/menu-position.d.ts +6 -6
- package/dist/types/components/MobileSheetNav/MobileSheetNav.d.ts +0 -1
- package/dist/types/components/Radio/Radio.d.ts +1 -1
- package/dist/types/components/Select/Select.d.ts +6 -23
- package/dist/types/components/SelectMulti/SelectMulti.d.ts +5 -20
- package/dist/types/components/ShellPage/ShellPage.d.ts +1 -0
- package/dist/types/components/ShellTools/ShellTools.d.ts +1 -0
- package/dist/types/components/Switch/Switch.d.ts +1 -1
- package/dist/types/components/Tooltip/Tooltip.d.ts +1 -4
- package/dist/types/components.d.ts +225 -4
- package/dist/types/toast/toast-types.d.ts +3 -3
- package/dist/types/utils/anchored-position-controller.d.ts +96 -0
- package/dist/types/utils/anchored-position.d.ts +35 -0
- package/dist/types/utils/cartesian-chart-layout.d.ts +13 -0
- package/dist/types/utils/chart-viewport-controller.d.ts +21 -0
- package/dist/types/utils/choice-list-parts.d.ts +4 -0
- package/dist/types/utils/choice-popup-alignment.d.ts +2 -2
- package/dist/types/utils/control-press.d.ts +9 -0
- package/dist/types/utils/control-text.d.ts +3 -1
- package/dist/types/utils/index.d.ts +3 -1
- package/dist/types/utils/metric-change.d.ts +53 -0
- package/dist/types/utils/select-controller.d.ts +67 -0
- package/dist/types/utils/token-defaults.d.ts +3 -0
- package/package.json +3 -3
- package/dist/components/p-B8C_yfLQ.js +0 -2
- package/dist/components/p-B8C_yfLQ.js.map +0 -1
- package/dist/components/p-B9xVWER6.js +0 -2
- package/dist/components/p-B9xVWER6.js.map +0 -1
- package/dist/components/p-BLea0TrP.js +0 -2
- package/dist/components/p-BLea0TrP.js.map +0 -1
- package/dist/components/p-BY0PzkUp.js +0 -2
- package/dist/components/p-BbgPGF2a.js +0 -2
- package/dist/components/p-BbgPGF2a.js.map +0 -1
- package/dist/components/p-BhC1YyId.js +0 -2
- package/dist/components/p-BhC1YyId.js.map +0 -1
- package/dist/components/p-BkAMkjIR.js +0 -2
- package/dist/components/p-C2ym_Ich.js +0 -2
- package/dist/components/p-C_ewSXTT.js +0 -2
- package/dist/components/p-C_ewSXTT.js.map +0 -1
- package/dist/components/p-CiqnkENu.js +0 -2
- package/dist/components/p-CiqnkENu.js.map +0 -1
- package/dist/components/p-Cx-ywr1e.js +0 -2
- package/dist/components/p-Cx-ywr1e.js.map +0 -1
- package/dist/components/p-CydY-v7X.js +0 -2
- package/dist/components/p-CydY-v7X.js.map +0 -1
- package/dist/components/p-DPME1wUJ.js +0 -2
- package/dist/components/p-DPME1wUJ.js.map +0 -1
- package/dist/components/p-DSa0Hnd3.js +0 -2
- package/dist/components/p-DSa0Hnd3.js.map +0 -1
- package/dist/components/p-DUlqUNbE.js +0 -2
- package/dist/components/p-DUlqUNbE.js.map +0 -1
- package/dist/components/p-DWdRSOBV.js +0 -2
- package/dist/components/p-DWdRSOBV.js.map +0 -1
- package/dist/components/p-DYcC5-R9.js +0 -2
- package/dist/components/p-DYcC5-R9.js.map +0 -1
- package/dist/components/p-DbpfpeQT.js +0 -2
- package/dist/components/p-DbpfpeQT.js.map +0 -1
- package/dist/components/p-Dg3xLna0.js +0 -2
- package/dist/components/p-Dg3xLna0.js.map +0 -1
- package/dist/components/p-DuFm-ieS.js +0 -2
- package/dist/components/p-DuFm-ieS.js.map +0 -1
- package/dist/components/p-uQhuDEVt.js +0 -2
- package/dist/components/p-uQhuDEVt.js.map +0 -1
- package/dist/lib/utils/anchored-popup.d.ts +0 -23
- package/dist/types/components/Tooltip/tooltip-position.d.ts +0 -21
- package/dist/types/utils/anchored-popup.d.ts +0 -24
- /package/dist/components/{p-Ccj5Op6E.js.map → p-38PfdMkF.js.map} +0 -0
- /package/dist/components/{p-CaRyxTMz.js.map → p-BFRMwl93.js.map} +0 -0
- /package/dist/components/{p-C7bZ-jiU.js.map → p-BO5aqZcf.js.map} +0 -0
- /package/dist/components/{p-DXLWm4PF.js.map → p-CNgPwd11.js.map} +0 -0
- /package/dist/components/{p-BwGnhInj.js.map → p-CPwpgUWT.js.map} +0 -0
- /package/dist/components/{p-B9bxDfZV.js.map → p-CsX3ICz7.js.map} +0 -0
- /package/dist/components/{p-D-xttdpn.js.map → p-D0e77tkd.js.map} +0 -0
- /package/dist/components/{p-BwsGYxZx.js.map → p-D9u1_OEZ.js.map} +0 -0
- /package/dist/components/{p-DQDpDYyF.js.map → p-DB9XJm2c.js.map} +0 -0
- /package/dist/components/{p-CnHrJTD5.js.map → p-DIFUsoM-.js.map} +0 -0
- /package/dist/components/{p-CWTih3Gc.js.map → p-DmAHufd5.js.map} +0 -0
- /package/dist/components/{p-DqubRds2.js.map → p-G3qIxpQj.js.map} +0 -0
- /package/dist/components/{p-DwX7UmLl.js.map → p-Utr23NC-.js.map} +0 -0
- /package/dist/components/{p-DIoiApa-.js.map → p-Vdufoj7G.js.map} +0 -0
- /package/dist/components/{p-C2ym_Ich.js.map → p-yhj1lIPx.js.map} +0 -0
package/README.md
CHANGED
|
@@ -2,22 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@ds-mo/ui)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Framework-neutral Stencil web components styled with TokoMo tokens. CompoMo
|
|
6
|
+
ships custom elements plus generated Angular and React adapters.
|
|
6
7
|
|
|
7
8
|
## Install
|
|
8
9
|
|
|
9
10
|
```bash
|
|
10
|
-
npm install @ds-mo/
|
|
11
|
+
npm install @ds-mo/tokens @ds-mo/icons @ds-mo/ui
|
|
11
12
|
```
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
- **`@ds-mo/tokens`** — CSS custom properties (colors, dimensions, typography, effects). Components will not render correctly without it.
|
|
16
|
-
- **`@ds-mo/icons`** — SVG sources for `<ds-icon>` and built-in icon props. Resolved at **your app bundle time** from your installed IcoMo version (not baked into `@ds-mo/ui`).
|
|
17
|
-
|
|
18
|
-
## Setup
|
|
19
|
-
|
|
20
|
-
Import TokoMo tokens globally (once, at your app root):
|
|
14
|
+
Import TokoMo once at the application root:
|
|
21
15
|
|
|
22
16
|
```ts
|
|
23
17
|
import '@ds-mo/tokens';
|
|
@@ -25,131 +19,66 @@ import '@ds-mo/tokens/reset';
|
|
|
25
19
|
import '@ds-mo/tokens/globals';
|
|
26
20
|
```
|
|
27
21
|
|
|
28
|
-
|
|
22
|
+
## Use
|
|
23
|
+
|
|
24
|
+
Custom elements auto-define when their module is imported:
|
|
29
25
|
|
|
30
26
|
```ts
|
|
31
27
|
import '@ds-mo/ui/dist/components/ds-button-filled.js';
|
|
32
|
-
import '@ds-mo/ui/dist/components/ds-button-unfilled.js';
|
|
33
|
-
import '@ds-mo/ui/dist/components/ds-bar-nav.js';
|
|
34
|
-
// …import only the <ds-*> tags your app uses
|
|
35
28
|
```
|
|
36
29
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
### Framework wrappers (optional)
|
|
40
|
-
|
|
41
|
-
| Host | Import | Usage |
|
|
42
|
-
| --- | --- | --- |
|
|
43
|
-
| **Angular** | `@ds-mo/ui/angular` | Stencil proxy directives — property/event bindings in templates |
|
|
44
|
-
| **React** | `@ds-mo/ui/react` | `DsButtonFilled`, `DsBarNav`, … — thin wrappers around the same custom elements |
|
|
45
|
-
| **Any** | `@ds-mo/ui/dist/components/ds-*.js` | Use `<ds-*>` directly (motive-webapp-lab pattern) |
|
|
46
|
-
|
|
47
|
-
There is **no** published `@ds-mo/ui/loader` or global `@ds-mo/ui/css` bundle — styles ship scoped inside each custom-element module.
|
|
48
|
-
|
|
49
|
-
**SPA hosts (Angular / React):** `ds-panel-nav` and `ds-bar-nav` need a [first-paint integration contract](docs/framework-integration.md) on hard reload — seed bar-nav state and stamp `data-nav-style` before custom elements upgrade.
|
|
50
|
-
|
|
51
|
-
## Agent recipes through MCP
|
|
52
|
-
|
|
53
|
-
The package includes a local stdio MCP server that exposes component metadata and
|
|
54
|
-
executable Custom Elements, React, and Angular composition recipes. It runs on the
|
|
55
|
-
developer's machine; no hosted MCP service or API key is required.
|
|
56
|
-
|
|
57
|
-
When `@ds-mo/ui` is installed in the consuming project, point Codex at the package binary:
|
|
58
|
-
|
|
59
|
-
```toml
|
|
60
|
-
# .codex/config.toml
|
|
61
|
-
[mcp_servers.compomo]
|
|
62
|
-
command = "./node_modules/.bin/compomo-mcp"
|
|
30
|
+
```html
|
|
31
|
+
<ds-button-filled label="Save"></ds-button-filled>
|
|
63
32
|
```
|
|
64
33
|
|
|
65
|
-
|
|
34
|
+
Angular applications should prefer per-component standalone adapters:
|
|
66
35
|
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
command = "npx"
|
|
70
|
-
args = ["-y", "--package", "@ds-mo/ui@latest", "compomo-mcp"]
|
|
36
|
+
```ts
|
|
37
|
+
import { DsButtonFilled } from '@ds-mo/ui/angular/ds-button-filled';
|
|
71
38
|
```
|
|
72
39
|
|
|
73
|
-
|
|
74
|
-
`get_component_source`, `list_patterns`, and `get_pattern`. Add a repository
|
|
75
|
-
instruction telling agents to retrieve the applicable pattern before composing
|
|
76
|
-
multiple design-system components; connecting the MCP makes recipes available,
|
|
77
|
-
while the instruction makes their use consistent.
|
|
78
|
-
|
|
79
|
-
Registry-oriented tools return both readable Markdown and schema-validated
|
|
80
|
-
`structuredContent`. Compatible MCP clients can consume the generated component
|
|
81
|
-
API, authored design intent, dependencies, and executable pattern recipes as JSON
|
|
82
|
-
without reparsing prose; text content remains available for older clients. Every
|
|
83
|
-
tool is annotated as read-only, idempotent, and closed-world.
|
|
84
|
-
|
|
85
|
-
## Components
|
|
40
|
+
React applications use the generated wrappers:
|
|
86
41
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
### Primitives
|
|
90
|
-
- **Text**, **Icon**, **Divider**, **Loader**, **Skeleton**
|
|
91
|
-
- **ButtonFilled** — filled button; `variant` (label / icon / icon-label) + `size` + intent×contrast
|
|
92
|
-
- **ButtonUnfilled** — unfilled button; same variants/sizes; surface-aware chrome through `background`
|
|
93
|
-
- **Tag** (static metadata or compact menu trigger), **Chip** (removable metadata on primary surfaces), **Badge**
|
|
94
|
-
|
|
95
|
-
### Controls
|
|
96
|
-
- **Toggle**, **Checkbox**, **Radio**, **Input**, **Slider**, **Field**
|
|
97
|
-
|
|
98
|
-
### Overlays
|
|
99
|
-
- **Modal**, **Menu**, **Tooltip**, **Select**, **Toast**
|
|
100
|
-
|
|
101
|
-
### Navigation
|
|
102
|
-
- **Breadcrumb** (hierarchical page ancestors), **TabGroup** (horizontal local views), **PanelSubNav** (vertical local views)
|
|
103
|
-
- **ShellApp**, **ShellPage**, **PanelNav**, **BarNav**, **BarTitle**, **BarWorkflow**, **PanelTools**
|
|
104
|
-
|
|
105
|
-
### Status & layout
|
|
106
|
-
- **EmptyState**, **Loader**, **Skeleton**, **CardSetting**, **CardDataVizDonut**, **CardDataVizLine**
|
|
107
|
-
|
|
108
|
-
## Token dependency
|
|
109
|
-
|
|
110
|
-
All styling uses TokoMo CSS custom properties. No hardcoded colors, sizes, or shadows — everything maps to the token system. Components will render unstyled if `@ds-mo/tokens` is not imported.
|
|
111
|
-
|
|
112
|
-
## Semantic prose
|
|
113
|
-
|
|
114
|
-
Safe semantic DOM produced by Markdown, CMS, or documentation renderers can use the renderer-neutral prose stylesheet:
|
|
115
|
-
|
|
116
|
-
```css
|
|
117
|
-
@import '@ds-mo/ui/prose.css';
|
|
42
|
+
```tsx
|
|
43
|
+
import { DsButtonFilled } from '@ds-mo/ui/react';
|
|
118
44
|
```
|
|
119
45
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
<h2>Summary</h2>
|
|
123
|
-
<p>Renderer-owned semantic content.</p>
|
|
124
|
-
</article>
|
|
125
|
-
```
|
|
46
|
+
Install `@ds-mo/icons` in the consuming application. `ds-icon` resolves exact
|
|
47
|
+
canonical IcoMo export names at application bundle time.
|
|
126
48
|
|
|
127
|
-
|
|
49
|
+
## Public support surfaces
|
|
128
50
|
|
|
129
|
-
|
|
51
|
+
- `@ds-mo/ui/shell` — framework-neutral shell contracts.
|
|
52
|
+
- `@ds-mo/ui/toast` — toast manager.
|
|
53
|
+
- `@ds-mo/ui/utils` — generic helpers such as `registerIcons`.
|
|
54
|
+
- `@ds-mo/ui/prose.css` — renderer-neutral semantic prose styling.
|
|
55
|
+
- `@ds-mo/ui/control-elevation.css` — elevated outer control wrappers.
|
|
130
56
|
|
|
131
|
-
|
|
57
|
+
There is no global component CSS bundle; styles ship with each custom element.
|
|
132
58
|
|
|
133
|
-
|
|
134
|
-
@import '@ds-mo/ui/control-elevation.css';
|
|
135
|
-
```
|
|
59
|
+
## Agent recipes
|
|
136
60
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
</div>
|
|
141
|
-
```
|
|
61
|
+
The package includes the local `compomo-mcp` executable with generated
|
|
62
|
+
component metadata and executable Custom Elements, Angular, and React
|
|
63
|
+
composition recipes.
|
|
142
64
|
|
|
143
|
-
|
|
65
|
+
```toml
|
|
66
|
+
# .codex/config.toml
|
|
67
|
+
[mcp_servers.compomo]
|
|
68
|
+
command = "./node_modules/.bin/compomo-mcp"
|
|
69
|
+
```
|
|
144
70
|
|
|
145
|
-
|
|
71
|
+
Use registry tools when component selection or a composition contract is
|
|
72
|
+
unclear. API facts come from Stencil metadata; curated intent comes from
|
|
73
|
+
co-located component agent JSON and executable patterns.
|
|
146
74
|
|
|
147
|
-
|
|
75
|
+
## Documentation
|
|
148
76
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
```
|
|
77
|
+
- [Storybook introduction and usage](src/docs/Introduction.mdx)
|
|
78
|
+
- [Framework integration](docs/framework-integration.md)
|
|
79
|
+
- [Maintainer documentation router](docs/index.md)
|
|
80
|
+
- [Repository instructions](AGENTS.md)
|
|
154
81
|
|
|
155
|
-
|
|
82
|
+
Package versions, components, props, events, and exports are intentionally not
|
|
83
|
+
duplicated here. Read `package.json`, Storybook, or the generated registry for
|
|
84
|
+
current facts.
|
package/dist/.build-stamp
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1785353002857
|
package/dist/agent-patterns.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"package": "@ds-mo/ui",
|
|
4
|
-
"packageVersion": "12.
|
|
4
|
+
"packageVersion": "12.8.0",
|
|
5
5
|
"kind": "patterns",
|
|
6
6
|
"entries": [
|
|
7
7
|
{
|
|
@@ -322,7 +322,8 @@
|
|
|
322
322
|
"Do not force the reader back to the live edge after deliberate transcript interaction."
|
|
323
323
|
],
|
|
324
324
|
"responsiveBehavior": [
|
|
325
|
-
"Let the containing product select drawer or full-width layout while keeping transcript measure readable and rich content horizontally scrollable."
|
|
325
|
+
"Let the containing product select drawer or full-width layout while keeping transcript measure readable and rich content horizontally scrollable.",
|
|
326
|
+
"When history and transcript are simultaneously visible, establish one shared master-detail layout contract for pane width, divider, transcript measure, composer containment, and empty-region placement; do not independently recreate that geometry for each conversation channel."
|
|
326
327
|
],
|
|
327
328
|
"implementations": {
|
|
328
329
|
"customElements": {
|
|
@@ -346,16 +347,18 @@
|
|
|
346
347
|
},
|
|
347
348
|
"references": [
|
|
348
349
|
"src/wc/components/ConversationList/ConversationList.stories.ts",
|
|
349
|
-
"src/wc/components/MessageScroller/MessageScroller.stories.ts"
|
|
350
|
+
"src/wc/components/MessageScroller/MessageScroller.stories.ts",
|
|
351
|
+
"docs/layout-recipe-foundation.md"
|
|
350
352
|
]
|
|
351
353
|
},
|
|
352
354
|
{
|
|
353
355
|
"id": "pattern:menu-trigger",
|
|
354
356
|
"status": "stable",
|
|
355
|
-
"summary": "Connect a
|
|
357
|
+
"summary": "Connect a button trigger to an anchored Menu for a compact command or view-selection popup without application-authored positioning.",
|
|
356
358
|
"useWhen": [
|
|
357
359
|
"A button should reveal a short contextual collection of commands.",
|
|
358
|
-
"A compact button should show the current view or mode and let the user choose another one from a menu."
|
|
360
|
+
"A compact button should show the current view or mode and let the user choose another one from a menu.",
|
|
361
|
+
"A row, card, or toolbar needs an overflow or more-options menu."
|
|
359
362
|
],
|
|
360
363
|
"avoidWhen": [
|
|
361
364
|
"The choice is a submitted form value with a field label or validation; use Select.",
|
|
@@ -366,24 +369,36 @@
|
|
|
366
369
|
"components": [
|
|
367
370
|
{
|
|
368
371
|
"component": "component:ds-button-unfilled",
|
|
369
|
-
"role": "Provides the visible trigger, popup relationship attributes, and focus target.",
|
|
372
|
+
"role": "Provides the visible trigger, popup relationship attributes, and focus target. Carries both shapes, and is the only component that carries the icon-only overflow role.",
|
|
370
373
|
"required": true
|
|
371
374
|
},
|
|
372
375
|
{
|
|
373
376
|
"component": "component:ds-menu",
|
|
374
377
|
"role": "Owns anchored placement, menu semantics, keyboard navigation, viewport clamping, selection, and close behavior.",
|
|
375
378
|
"required": true
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
"component": "component:ds-button-filled",
|
|
382
|
+
"role": "Substitutes for the trigger when the menu belongs to the single primary action in a local decision area, using the label or icon-label shape only.",
|
|
383
|
+
"required": false
|
|
376
384
|
}
|
|
377
385
|
],
|
|
378
386
|
"stateOwnership": [
|
|
379
387
|
"The application owns the selected command or view value and derives the trigger label and each item's isSelected state from it.",
|
|
380
|
-
"The application synchronizes one open boolean to
|
|
388
|
+
"The application synchronizes one open boolean to the trigger's expanded prop and Menu.open.",
|
|
389
|
+
"An open popup is a transient pressed state, not a selected one. The trigger holds its pressed wash for the popup's rendered lifecycle from expanded alone, so never also set isActive to represent an open menu.",
|
|
381
390
|
"Menu owns popup placement and keyboard navigation; the application never calculates popup coordinates or applies positional CSS.",
|
|
382
391
|
"On dsSelect, update the selected value, close the Menu, and restore focus to the trigger.",
|
|
383
392
|
"On dsClose, synchronize the application open state to false."
|
|
384
393
|
],
|
|
385
394
|
"accessibility": [
|
|
386
|
-
"
|
|
395
|
+
"A button either has a menu or is a menu, and the trigger's variant selects between the two shapes.",
|
|
396
|
+
"Has a menu: a label or icon-label action that opens a menu. Set hasMenu, which implies aria-haspopup of menu and renders the trailing chevron that communicates the popup. Both button primitives support this shape.",
|
|
397
|
+
"Is a menu: an icon-only overflow or more-options control. Set hasMenu, which adds no chevron, so the glyph must convey the menu alone; use Ellipses. Only ButtonUnfilled carries this shape, because the role is chrome rather than a primary action.",
|
|
398
|
+
"Never pair hasMenu with an icon-only glyph that does not read as a menu on its own; there is no chevron to fall back on.",
|
|
399
|
+
"Set controls to the Menu id and expanded from the same open state passed to Menu.",
|
|
400
|
+
"Give an icon-only trigger an accessible name that states the role, such as More options, because no visible label or chevron carries it.",
|
|
401
|
+
"Use haspopup directly instead of hasMenu for a non-menu popup such as a listbox or dialog; those cases get no chevron.",
|
|
387
402
|
"Give Menu a concise menuLabel describing the available commands or views.",
|
|
388
403
|
"Set Menu.initialFocusVisible only when the trigger MouseEvent detail is zero, indicating keyboard activation.",
|
|
389
404
|
"Keep visible selected styling synchronized with the application's selected value; Menu exposes the selected command through aria-current.",
|
|
@@ -406,7 +421,7 @@
|
|
|
406
421
|
{
|
|
407
422
|
"path": "view-menu.html",
|
|
408
423
|
"language": "html",
|
|
409
|
-
"content": "<ds-button-unfilled\n id=\"view-menu-trigger\"\n label=\"View · Overview\"\n
|
|
424
|
+
"content": "<ds-button-unfilled\n id=\"view-menu-trigger\"\n label=\"View · Overview\"\n has-menu\n controls=\"view-menu\"\n></ds-button-unfilled>\n<ds-menu\n id=\"view-menu\"\n anchor-id=\"view-menu-trigger\"\n menu-label=\"Choose view\"\n></ds-menu>\n\n<!-- Overflow shape: the Ellipses glyph conveys the menu, so no chevron is added. -->\n<ds-button-unfilled\n id=\"row-menu-trigger\"\n variant=\"icon\"\n icon=\"Ellipses\"\n aria-label=\"More options\"\n has-menu\n controls=\"row-menu\"\n></ds-button-unfilled>\n<ds-menu\n id=\"row-menu\"\n anchor-id=\"row-menu-trigger\"\n menu-label=\"More options\"\n align=\"end\"\n></ds-menu>"
|
|
410
425
|
},
|
|
411
426
|
{
|
|
412
427
|
"path": "view-menu.ts",
|
|
@@ -436,7 +451,7 @@
|
|
|
436
451
|
{
|
|
437
452
|
"path": "ViewMenu.tsx",
|
|
438
453
|
"language": "tsx",
|
|
439
|
-
"content": "import { useState } from 'react'\nimport type { HTMLDsButtonUnfilledElement, MenuItemData } from '@ds-mo/ui'\nimport { DsButtonUnfilled, DsMenu } from '@ds-mo/ui/react'\n\nconst choices: MenuItemData[] = [\n { label: 'Overview', value: 'overview' },\n { label: 'Map', value: 'map' },\n { label: 'Timeline', value: 'timeline' },\n]\n\nexport function ViewMenu() {\n const [selectedValue, setSelectedValue] = useState('overview')\n const [open, setOpen] = useState(false)\n const [initialFocusVisible, setInitialFocusVisible] = useState(false)\n const selected = choices.find(item => item.value === selectedValue) ?? choices[0]\n const items = choices.map(item => ({ ...item, isSelected: item.value === selectedValue }))\n\n function focusTrigger() {\n requestAnimationFrame(() => {\n const trigger = document.querySelector<HTMLDsButtonUnfilledElement>('#view-menu-trigger')\n trigger?.setFocus()\n })\n }\n\n return (\n <>\n <DsButtonUnfilled\n id=\"view-menu-trigger\"\n label={`View · ${selected.label}`}\n
|
|
454
|
+
"content": "import { useState } from 'react'\nimport type { HTMLDsButtonUnfilledElement, MenuItemData } from '@ds-mo/ui'\nimport { DsButtonUnfilled, DsMenu } from '@ds-mo/ui/react'\n\nconst choices: MenuItemData[] = [\n { label: 'Overview', value: 'overview' },\n { label: 'Map', value: 'map' },\n { label: 'Timeline', value: 'timeline' },\n]\n\nexport function ViewMenu() {\n const [selectedValue, setSelectedValue] = useState('overview')\n const [open, setOpen] = useState(false)\n const [initialFocusVisible, setInitialFocusVisible] = useState(false)\n const selected = choices.find(item => item.value === selectedValue) ?? choices[0]\n const items = choices.map(item => ({ ...item, isSelected: item.value === selectedValue }))\n\n function focusTrigger() {\n requestAnimationFrame(() => {\n const trigger = document.querySelector<HTMLDsButtonUnfilledElement>('#view-menu-trigger')\n trigger?.setFocus()\n })\n }\n\n return (\n <>\n <DsButtonUnfilled\n id=\"view-menu-trigger\"\n label={`View · ${selected.label}`}\n hasMenu\n controls=\"view-menu\"\n expanded={open}\n onDsClick={event => {\n setInitialFocusVisible(event.detail.detail === 0)\n setOpen(current => !current)\n }}\n />\n <DsMenu\n id=\"view-menu\"\n anchorId=\"view-menu-trigger\"\n menuLabel=\"Choose view\"\n items={items}\n open={open}\n initialFocusVisible={initialFocusVisible}\n onDsClose={() => setOpen(false)}\n onDsSelect={event => {\n setSelectedValue(event.detail.value ?? selectedValue)\n setOpen(false)\n focusTrigger()\n }}\n />\n </>\n )\n}"
|
|
440
455
|
}
|
|
441
456
|
],
|
|
442
457
|
"notes": [
|
|
@@ -461,7 +476,7 @@
|
|
|
461
476
|
{
|
|
462
477
|
"path": "view-menu.component.html",
|
|
463
478
|
"language": "html",
|
|
464
|
-
"content": "<ds-button-unfilled\n id=\"view-menu-trigger\"\n [label]=\"'View · ' + selectedLabel\"\n
|
|
479
|
+
"content": "<ds-button-unfilled\n id=\"view-menu-trigger\"\n [label]=\"'View · ' + selectedLabel\"\n has-menu\n controls=\"view-menu\"\n [expanded]=\"open\"\n (dsClick)=\"toggleMenu($event)\"\n></ds-button-unfilled>\n<ds-menu\n id=\"view-menu\"\n anchorId=\"view-menu-trigger\"\n menuLabel=\"Choose view\"\n [items]=\"menuItems\"\n [open]=\"open\"\n [initialFocusVisible]=\"initialFocusVisible\"\n (dsClose)=\"open = false\"\n (dsSelect)=\"selectView($event)\"\n></ds-menu>"
|
|
465
480
|
},
|
|
466
481
|
{
|
|
467
482
|
"path": "view-menu.component.ts",
|