@ds-mo/ui 9.0.0 → 9.2.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 +28 -0
- package/dist/.build-stamp +1 -1
- package/dist/agent-patterns.json +397 -0
- package/dist/agent.json +2347 -735
- package/dist/angular/ds-agent-activity.d.ts +12 -0
- package/dist/angular/ds-agent-activity.js +38 -0
- package/dist/angular/ds-agent-response.d.ts +12 -0
- package/dist/angular/ds-agent-response.js +38 -0
- package/dist/angular/ds-agent-source-list.d.ts +12 -0
- package/dist/angular/ds-agent-source-list.js +38 -0
- package/dist/angular/ds-agent-tool-call.d.ts +12 -0
- package/dist/angular/ds-agent-tool-call.js +38 -0
- package/dist/angular/ds-attachment-list.d.ts +12 -0
- package/dist/angular/ds-attachment-list.js +38 -0
- package/dist/angular/ds-avatar.d.ts +12 -0
- package/dist/angular/ds-avatar.js +38 -0
- package/dist/angular/ds-code-block.d.ts +12 -0
- package/dist/angular/ds-code-block.js +38 -0
- package/dist/angular/ds-conversation-list-item.d.ts +19 -0
- package/dist/angular/ds-conversation-list-item.js +42 -0
- package/dist/angular/ds-conversation-list-section.d.ts +12 -0
- package/dist/angular/ds-conversation-list-section.js +38 -0
- package/dist/angular/ds-conversation-list.d.ts +12 -0
- package/dist/angular/ds-conversation-list.js +37 -0
- package/dist/angular/ds-markdown.d.ts +12 -0
- package/dist/angular/ds-markdown.js +38 -0
- package/dist/angular/ds-menu.d.ts +6 -1
- package/dist/angular/ds-menu.js +7 -4
- package/dist/angular/ds-message-bubble.d.ts +12 -0
- package/dist/angular/ds-message-bubble.js +38 -0
- package/dist/angular/ds-message-composer.d.ts +23 -0
- package/dist/angular/ds-message-composer.js +49 -0
- package/dist/angular/ds-message-scroller.d.ts +15 -0
- package/dist/angular/ds-message-scroller.js +43 -0
- package/dist/angular/ds-message.d.ts +12 -0
- package/dist/angular/ds-message.js +38 -0
- package/dist/angular/ds-panel-tool-header.d.ts +25 -0
- package/dist/angular/ds-panel-tool-header.js +49 -0
- package/dist/angular/ds-panel-tool-search.d.ts +19 -0
- package/dist/angular/ds-panel-tool-search.js +49 -0
- package/dist/angular/ds-panel-tools.d.ts +30 -1
- package/dist/angular/ds-panel-tools.js +14 -5
- package/dist/angular/ds-swatch-picker.d.ts +15 -0
- package/dist/angular/ds-swatch-picker.js +42 -0
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +18 -0
- package/dist/angular/proxies.d.ts +18 -0
- package/dist/angular/proxies.js +18 -0
- package/dist/components/ds-agent-activity.d.ts +11 -0
- package/dist/components/ds-agent-activity.js +2 -0
- package/dist/components/ds-agent-activity.js.map +1 -0
- package/dist/components/ds-agent-response.d.ts +11 -0
- package/dist/components/ds-agent-response.js +2 -0
- package/dist/components/ds-agent-response.js.map +1 -0
- package/dist/components/ds-agent-source-list.d.ts +11 -0
- package/dist/components/ds-agent-source-list.js +2 -0
- package/dist/components/ds-agent-source-list.js.map +1 -0
- package/dist/components/ds-agent-tool-call.d.ts +11 -0
- package/dist/components/ds-agent-tool-call.js +2 -0
- package/dist/components/ds-agent-tool-call.js.map +1 -0
- package/dist/components/ds-app-shell.js +1 -1
- package/dist/components/ds-app-shell.js.map +1 -1
- package/dist/components/ds-attachment-list.d.ts +11 -0
- package/dist/components/ds-attachment-list.js +2 -0
- package/dist/components/ds-attachment-list.js.map +1 -0
- package/dist/components/ds-avatar.d.ts +11 -0
- package/dist/components/ds-avatar.js +2 -0
- package/dist/components/ds-avatar.js.map +1 -0
- package/dist/components/ds-badge.js +1 -1
- package/dist/components/ds-banner.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-button-filled.js +1 -1
- package/dist/components/ds-button-unfilled.js +1 -1
- package/dist/components/ds-card-data-viz-donut.js +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-card-shell-data-viz.js +1 -1
- package/dist/components/ds-card.js +1 -1
- package/dist/components/ds-chart-bar.js +1 -1
- package/dist/components/ds-chart-bar.js.map +1 -1
- package/dist/components/ds-chart-donut.js +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart-line.js +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-code-block.d.ts +11 -0
- package/dist/components/ds-code-block.js +2 -0
- package/dist/components/ds-code-block.js.map +1 -0
- package/dist/components/ds-conversation-list-item.d.ts +11 -0
- package/dist/components/ds-conversation-list-item.js +2 -0
- package/dist/components/ds-conversation-list-item.js.map +1 -0
- package/dist/components/ds-conversation-list-section.d.ts +11 -0
- package/dist/components/ds-conversation-list-section.js +2 -0
- package/dist/components/ds-conversation-list-section.js.map +1 -0
- package/dist/components/ds-conversation-list.d.ts +11 -0
- package/dist/components/ds-conversation-list.js +2 -0
- package/dist/components/ds-conversation-list.js.map +1 -0
- package/dist/components/ds-divider.js +1 -1
- package/dist/components/ds-divider.js.map +1 -1
- package/dist/components/ds-empty-state.js +1 -1
- package/dist/components/ds-field.js +1 -1
- package/dist/components/ds-icon.js +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-markdown.d.ts +11 -0
- package/dist/components/ds-markdown.js +2 -0
- package/dist/components/ds-markdown.js.map +1 -0
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-bubble.d.ts +11 -0
- package/dist/components/ds-message-bubble.js +2 -0
- package/dist/components/ds-message-bubble.js.map +1 -0
- package/dist/components/ds-message-composer.d.ts +11 -0
- package/dist/components/ds-message-composer.js +2 -0
- package/dist/components/ds-message-composer.js.map +1 -0
- package/dist/components/ds-message-scroller.d.ts +11 -0
- package/dist/components/ds-message-scroller.js +2 -0
- package/dist/components/ds-message-scroller.js.map +1 -0
- package/dist/components/ds-message.d.ts +11 -0
- package/dist/components/ds-message.js +2 -0
- package/dist/components/ds-message.js.map +1 -0
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-nav.js.map +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-tool-header.d.ts +11 -0
- package/dist/components/ds-panel-tool-header.js +2 -0
- package/dist/components/ds-panel-tool-header.js.map +1 -0
- package/dist/components/ds-panel-tool-search.d.ts +11 -0
- package/dist/components/ds-panel-tool-search.js +2 -0
- package/dist/components/ds-panel-tool-search.js.map +1 -0
- package/dist/components/ds-panel-tools.js +1 -1
- package/dist/components/ds-panel-tools.js.map +1 -1
- package/dist/components/ds-radio.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-gradient-picker.js +1 -1
- package/dist/components/ds-shell-gradient-picker.js.map +1 -1
- package/dist/components/ds-shell-gradient-swatch.js +1 -1
- package/dist/components/ds-shell-gradient-swatch.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.d.ts +11 -0
- package/dist/components/ds-swatch-picker.js +2 -0
- package/dist/components/ds-swatch-picker.js.map +1 -0
- package/dist/components/ds-switch.js +1 -1
- package/dist/components/ds-tab-group.js +1 -1
- package/dist/components/ds-tab-group.js.map +1 -1
- package/dist/components/ds-tag.js +1 -1
- package/dist/components/ds-text.js +1 -1
- package/dist/components/ds-tooltip-data-viz.js +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/index.d.ts +14 -0
- package/dist/components/p--KbMQblZ.js +2 -0
- package/dist/components/p--KbMQblZ.js.map +1 -0
- package/dist/components/p-2br9YDbG.js +2 -0
- package/dist/components/p-2br9YDbG.js.map +1 -0
- package/dist/components/p-41UAx2eq.js +2 -0
- package/dist/components/p-41UAx2eq.js.map +1 -0
- package/dist/components/p-B1pWGQn1.js +2 -0
- package/dist/components/p-B1pWGQn1.js.map +1 -0
- package/dist/components/p-B7NbIYjS.js +2 -0
- package/dist/components/p-B7NbIYjS.js.map +1 -0
- package/dist/components/p-BBu_Svz7.js +2 -0
- package/dist/components/p-BBu_Svz7.js.map +1 -0
- package/dist/components/p-BEQB8EnB.js +2 -0
- package/dist/components/p-BEQB8EnB.js.map +1 -0
- package/dist/components/{p-CZ9wemOA.js → p-BFWC17em.js} +2 -2
- package/dist/components/{p-KRGBGTu5.js → p-BO6C8abO.js} +2 -2
- package/dist/components/{p-CbS_WWs2.js → p-BSOZXagj.js} +2 -2
- package/dist/components/p-BSOZXagj.js.map +1 -0
- package/dist/components/{p-DT2MK8Kt.js → p-BZAEZENv.js} +2 -2
- package/dist/components/p-BhC1YyId.js +2 -0
- package/dist/components/p-BhC1YyId.js.map +1 -0
- package/dist/components/p-BjtXYFhw.js +2 -0
- package/dist/components/p-BjtXYFhw.js.map +1 -0
- package/dist/components/{p-B-zhgAvL.js → p-Bo5wikia.js} +2 -2
- package/dist/components/p-Bx1G7P6W.js +2 -0
- package/dist/components/p-Bx1G7P6W.js.map +1 -0
- package/dist/components/p-C0sq948W.js +2 -0
- package/dist/components/p-C0sq948W.js.map +1 -0
- package/dist/components/p-CC1C8s6m.js +2 -0
- package/dist/components/p-CC1C8s6m.js.map +1 -0
- package/dist/components/p-CKaJx0IX.js +2 -0
- package/dist/components/p-CKaJx0IX.js.map +1 -0
- package/dist/components/{p-DyZj3k9S.js → p-CZMEhdlA.js} +2 -2
- package/dist/components/{p-BbV68F23.js → p-CiwdnKKp.js} +2 -2
- package/dist/components/{p-BLzivrE3.js → p-CnM9SW_8.js} +2 -2
- package/dist/components/{p-C7UFYvsO.js → p-CuKn9I5f.js} +2 -2
- package/dist/components/p-D1HFMTdC.js +2 -0
- package/dist/components/p-D1HFMTdC.js.map +1 -0
- package/dist/components/p-DFMM60My.js +2 -0
- package/dist/components/p-DFMM60My.js.map +1 -0
- package/dist/components/p-DIsDiGcp.js +2 -0
- package/dist/components/p-DIsDiGcp.js.map +1 -0
- package/dist/components/p-DVsje4AY.js +2 -0
- package/dist/components/p-DVsje4AY.js.map +1 -0
- package/dist/components/p-Di-ThR90.js +2 -0
- package/dist/components/p-Di-ThR90.js.map +1 -0
- package/dist/components/{p-C7RObioO.js → p-Di4HBckb.js} +2 -2
- package/dist/components/p-a9nGf1s6.js +2 -0
- package/dist/components/p-a9nGf1s6.js.map +1 -0
- package/dist/components/p-gidVv1FX.js +2 -0
- package/dist/components/p-gidVv1FX.js.map +1 -0
- package/dist/components/p-l6PmnW_P.js +2 -0
- package/dist/components/p-l6PmnW_P.js.map +1 -0
- package/dist/components/p-rEe-3KR_.js +2 -0
- package/dist/components/p-rEe-3KR_.js.map +1 -0
- package/dist/components/p-t9Ei1kHP.js +2 -0
- package/dist/components/p-t9Ei1kHP.js.map +1 -0
- package/dist/docs/components.json +8097 -3924
- package/dist/lib/components/Menu/menu-placement.d.ts +19 -3
- package/dist/lib/shell/index.d.ts +3 -3
- package/dist/lib/shell/index.js +48 -39
- package/dist/lib/shell/index.js.map +3 -3
- package/dist/lib/shell/shell-gradient-presets.d.ts +15 -0
- package/dist/lib/utils/choice-popup-alignment.d.ts +20 -0
- package/dist/lib/utils/index.d.ts +2 -0
- package/dist/lib/utils/index.js +16 -0
- package/dist/lib/utils/index.js.map +3 -3
- package/dist/mcp/cli.js +31409 -0
- package/dist/mcp-data/registry/agent-activity.json +158 -0
- package/dist/mcp-data/registry/agent-response.json +211 -0
- package/dist/mcp-data/registry/agent-source-list.json +153 -0
- package/dist/mcp-data/registry/agent-tool-call.json +213 -0
- package/dist/mcp-data/registry/app-shell.json +210 -0
- package/dist/mcp-data/registry/attachment-list.json +137 -0
- package/dist/mcp-data/registry/avatar.json +136 -0
- package/dist/mcp-data/registry/badge.json +289 -0
- package/dist/mcp-data/registry/banner.json +206 -0
- package/dist/mcp-data/registry/bar-nav.json +341 -0
- package/dist/mcp-data/registry/button-filled.json +386 -0
- package/dist/mcp-data/registry/button-unfilled.json +537 -0
- package/dist/mcp-data/registry/card-data-viz-donut.json +143 -0
- package/dist/mcp-data/registry/card-setting.json +194 -0
- package/dist/mcp-data/registry/card-shell-data-viz.json +173 -0
- package/dist/mcp-data/registry/card.json +126 -0
- package/dist/mcp-data/registry/chart-bar.json +121 -0
- package/dist/mcp-data/registry/chart-donut.json +257 -0
- package/dist/mcp-data/registry/chart-legend.json +209 -0
- package/dist/mcp-data/registry/chart-line.json +153 -0
- package/dist/mcp-data/registry/checkbox.json +361 -0
- package/dist/mcp-data/registry/chip.json +276 -0
- package/dist/mcp-data/registry/code-block.json +150 -0
- package/dist/mcp-data/registry/conversation-list-item.json +265 -0
- package/dist/mcp-data/registry/conversation-list-section.json +139 -0
- package/dist/mcp-data/registry/conversation-list.json +101 -0
- package/dist/mcp-data/registry/divider.json +225 -0
- package/dist/mcp-data/registry/empty-state.json +197 -0
- package/dist/mcp-data/registry/field.json +222 -0
- package/dist/mcp-data/registry/icon.json +242 -0
- package/dist/mcp-data/registry/input.json +597 -0
- package/dist/mcp-data/registry/loader.json +192 -0
- package/dist/mcp-data/registry/markdown.json +141 -0
- package/dist/mcp-data/registry/menu.json +479 -0
- package/dist/mcp-data/registry/message-bubble.json +119 -0
- package/dist/mcp-data/registry/message-composer.json +265 -0
- package/dist/mcp-data/registry/message-scroller.json +217 -0
- package/dist/mcp-data/registry/message.json +255 -0
- package/dist/mcp-data/registry/modal.json +150 -0
- package/dist/mcp-data/registry/panel-nav.json +622 -0
- package/dist/mcp-data/registry/panel-sub-nav.json +249 -0
- package/dist/mcp-data/registry/panel-tool-header.json +342 -0
- package/dist/mcp-data/registry/panel-tool-search.json +387 -0
- package/dist/mcp-data/registry/panel-tools.json +514 -0
- package/dist/mcp-data/registry/radio.json +374 -0
- package/dist/mcp-data/registry/registry.json +6916 -0
- package/dist/mcp-data/registry/select-multi.json +755 -0
- package/dist/mcp-data/registry/select.json +740 -0
- package/dist/mcp-data/registry/shell-gradient-picker.json +195 -0
- package/dist/mcp-data/registry/shell-gradient-swatch.json +215 -0
- package/dist/mcp-data/registry/skeleton.json +282 -0
- package/dist/mcp-data/registry/slider.json +657 -0
- package/dist/mcp-data/registry/swatch-picker.json +231 -0
- package/dist/mcp-data/registry/switch.json +361 -0
- package/dist/mcp-data/registry/tab-group.json +255 -0
- package/dist/mcp-data/registry/tag.json +352 -0
- package/dist/mcp-data/registry/text.json +371 -0
- package/dist/mcp-data/registry/tooltip-data-viz.json +158 -0
- package/dist/mcp-data/registry/tooltip.json +311 -0
- package/dist/react/components.d.ts +18 -0
- package/dist/react/components.js +18 -0
- package/dist/react/ds-agent-activity.d.ts +9 -0
- package/dist/react/ds-agent-activity.js +12 -0
- package/dist/react/ds-agent-response.d.ts +9 -0
- package/dist/react/ds-agent-response.js +12 -0
- package/dist/react/ds-agent-source-list.d.ts +9 -0
- package/dist/react/ds-agent-source-list.js +12 -0
- package/dist/react/ds-agent-tool-call.d.ts +9 -0
- package/dist/react/ds-agent-tool-call.js +12 -0
- package/dist/react/ds-attachment-list.d.ts +9 -0
- package/dist/react/ds-attachment-list.js +12 -0
- package/dist/react/ds-avatar.d.ts +9 -0
- package/dist/react/ds-avatar.js +12 -0
- package/dist/react/ds-code-block.d.ts +9 -0
- package/dist/react/ds-code-block.js +12 -0
- package/dist/react/ds-conversation-list-item.d.ts +14 -0
- package/dist/react/ds-conversation-list-item.js +12 -0
- package/dist/react/ds-conversation-list-section.d.ts +9 -0
- package/dist/react/ds-conversation-list-section.js +12 -0
- package/dist/react/ds-conversation-list.d.ts +9 -0
- package/dist/react/ds-conversation-list.js +12 -0
- package/dist/react/ds-markdown.d.ts +9 -0
- package/dist/react/ds-markdown.js +12 -0
- package/dist/react/ds-menu.d.ts +1 -0
- package/dist/react/ds-menu.js +2 -1
- package/dist/react/ds-message-bubble.d.ts +9 -0
- package/dist/react/ds-message-bubble.js +12 -0
- package/dist/react/ds-message-composer.d.ts +16 -0
- package/dist/react/ds-message-composer.js +16 -0
- package/dist/react/ds-message-scroller.d.ts +12 -0
- package/dist/react/ds-message-scroller.js +12 -0
- package/dist/react/ds-message.d.ts +9 -0
- package/dist/react/ds-message.js +12 -0
- package/dist/react/ds-panel-tool-header.d.ts +17 -0
- package/dist/react/ds-panel-tool-header.js +16 -0
- package/dist/react/ds-panel-tool-search.d.ts +14 -0
- package/dist/react/ds-panel-tool-search.js +16 -0
- package/dist/react/ds-panel-tools.d.ts +10 -0
- package/dist/react/ds-panel-tools.js +3 -0
- package/dist/react/ds-swatch-picker.d.ts +12 -0
- package/dist/react/ds-swatch-picker.js +12 -0
- package/dist/types/components/AgentActivity/AgentActivity.d.ts +14 -0
- package/dist/types/components/AgentResponse/AgentResponse.d.ts +12 -0
- package/dist/types/components/AgentSourceList/AgentSourceList.d.ts +9 -0
- package/dist/types/components/AgentToolCall/AgentToolCall.d.ts +13 -0
- package/dist/types/components/AppShell/AppShell.d.ts +4 -0
- package/dist/types/components/AttachmentList/AttachmentList.d.ts +8 -0
- package/dist/types/components/Avatar/Avatar.d.ts +8 -0
- package/dist/types/components/CodeBlock/CodeBlock.d.ts +11 -0
- package/dist/types/components/ConversationList/ConversationList.d.ts +4 -0
- package/dist/types/components/ConversationListItem/ConversationListItem.d.ts +22 -0
- package/dist/types/components/ConversationListSection/ConversationListSection.d.ts +9 -0
- package/dist/types/components/Markdown/Markdown.d.ts +15 -0
- package/dist/types/components/Menu/Menu.d.ts +10 -1
- package/dist/types/components/Menu/menu-placement.d.ts +19 -3
- package/dist/types/components/Menu/menu-types.d.ts +15 -2
- package/dist/types/components/Message/Message.d.ts +17 -0
- package/dist/types/components/MessageBubble/MessageBubble.d.ts +6 -0
- package/dist/types/components/MessageComposer/MessageComposer.d.ts +29 -0
- package/dist/types/components/MessageScroller/MessageScroller.d.ts +37 -0
- package/dist/types/components/PanelNav/PanelNav.d.ts +3 -0
- package/dist/types/components/PanelToolHeader/PanelToolHeader.d.ts +34 -0
- package/dist/types/components/PanelToolSearch/PanelToolSearch.d.ts +35 -0
- package/dist/types/components/PanelTools/PanelTools.d.ts +40 -1
- package/dist/types/components/PanelTools/panel-tools-types.d.ts +20 -0
- package/dist/types/components/PanelTools/panel-tools-utils.d.ts +2 -0
- package/dist/types/components/ShellGradientPicker/ShellGradientPicker.d.ts +2 -5
- package/dist/types/components/ShellGradientSwatch/ShellGradientSwatch.d.ts +1 -0
- package/dist/types/components/Slider/Slider.d.ts +1 -1
- package/dist/types/components/SwatchPicker/SwatchPicker.d.ts +21 -0
- package/dist/types/components/SwatchPicker/swatch-picker-types.d.ts +26 -0
- package/dist/types/components/conversation-types.d.ts +55 -0
- package/dist/types/components.d.ts +1298 -4
- package/dist/types/shell/index.d.ts +3 -3
- package/dist/types/shell/shell-gradient-presets.d.ts +15 -0
- package/dist/types/utils/choice-list-parts.d.ts +4 -1
- package/dist/types/utils/choice-popup-alignment.d.ts +21 -0
- package/dist/types/utils/index.d.ts +2 -0
- package/package.json +9 -2
- package/dist/components/p-Bafp65bw.js +0 -2
- package/dist/components/p-Bafp65bw.js.map +0 -1
- package/dist/components/p-BdnR3jxi.js +0 -2
- package/dist/components/p-BdnR3jxi.js.map +0 -1
- package/dist/components/p-CXF8yd-g.js +0 -2
- package/dist/components/p-CXF8yd-g.js.map +0 -1
- package/dist/components/p-C_cu-HIT.js +0 -2
- package/dist/components/p-C_cu-HIT.js.map +0 -1
- package/dist/components/p-CbS_WWs2.js.map +0 -1
- package/dist/components/p-D0B9uDTP.js +0 -2
- package/dist/components/p-D0B9uDTP.js.map +0 -1
- package/dist/components/p-DF0yLZG_.js +0 -2
- package/dist/components/p-DF0yLZG_.js.map +0 -1
- package/dist/components/p-VKIsOVza.js +0 -2
- package/dist/components/p-VKIsOVza.js.map +0 -1
- /package/dist/components/{p-CZ9wemOA.js.map → p-BFWC17em.js.map} +0 -0
- /package/dist/components/{p-KRGBGTu5.js.map → p-BO6C8abO.js.map} +0 -0
- /package/dist/components/{p-DT2MK8Kt.js.map → p-BZAEZENv.js.map} +0 -0
- /package/dist/components/{p-B-zhgAvL.js.map → p-Bo5wikia.js.map} +0 -0
- /package/dist/components/{p-DyZj3k9S.js.map → p-CZMEhdlA.js.map} +0 -0
- /package/dist/components/{p-BbV68F23.js.map → p-CiwdnKKp.js.map} +0 -0
- /package/dist/components/{p-BLzivrE3.js.map → p-CnM9SW_8.js.map} +0 -0
- /package/dist/components/{p-C7UFYvsO.js.map → p-CuKn9I5f.js.map} +0 -0
- /package/dist/components/{p-C7RObioO.js.map → p-Di4HBckb.js.map} +0 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "card-data-viz-donut",
|
|
4
|
+
"title": "CardDataVizDonut",
|
|
5
|
+
"description": "Donut data-viz card on dedicated ds-card-shell-data-viz chrome — fill chart region, content-sized legend, header filter action, and chart↔legend hover sync.",
|
|
6
|
+
"type": "registry:ui",
|
|
7
|
+
"meta": {
|
|
8
|
+
"library": "@ds-mo/ui",
|
|
9
|
+
"distribution": "npm",
|
|
10
|
+
"storybook": "https://zainadeel.github.io/compomo/?path=/story/card-data-viz-donut",
|
|
11
|
+
"source": "src/wc/components/CardDataVizDonut/CardDataVizDonut.tsx",
|
|
12
|
+
"intentStatus": "migration-pending",
|
|
13
|
+
"intent": null,
|
|
14
|
+
"api": {
|
|
15
|
+
"props": {
|
|
16
|
+
"cardWidth": {
|
|
17
|
+
"type": "CardDataVizDonutWidth",
|
|
18
|
+
"resolvedType": "\"lg\" | \"md\" | \"sm\"",
|
|
19
|
+
"attribute": "card-width",
|
|
20
|
+
"default": "'md'",
|
|
21
|
+
"required": false,
|
|
22
|
+
"mutable": false,
|
|
23
|
+
"description": "Card width token — also sets matching min-height."
|
|
24
|
+
},
|
|
25
|
+
"filterLabel": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"resolvedType": "string",
|
|
28
|
+
"attribute": "filter-label",
|
|
29
|
+
"default": "'Filter'",
|
|
30
|
+
"required": false,
|
|
31
|
+
"mutable": false
|
|
32
|
+
},
|
|
33
|
+
"heading": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"resolvedType": "string",
|
|
36
|
+
"attribute": "heading",
|
|
37
|
+
"required": true,
|
|
38
|
+
"mutable": false,
|
|
39
|
+
"description": "Widget heading shown in the card header."
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"events": [
|
|
43
|
+
{
|
|
44
|
+
"name": "dsFilterClick",
|
|
45
|
+
"detail": "void",
|
|
46
|
+
"bubbles": true,
|
|
47
|
+
"cancelable": true,
|
|
48
|
+
"composed": true,
|
|
49
|
+
"description": "Emits when the header filter control is activated."
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"methods": [],
|
|
53
|
+
"slots": []
|
|
54
|
+
},
|
|
55
|
+
"props": {
|
|
56
|
+
"cardWidth": {
|
|
57
|
+
"type": "CardDataVizDonutWidth",
|
|
58
|
+
"resolvedType": "\"lg\" | \"md\" | \"sm\"",
|
|
59
|
+
"attribute": "card-width",
|
|
60
|
+
"default": "'md'",
|
|
61
|
+
"required": false,
|
|
62
|
+
"mutable": false,
|
|
63
|
+
"description": "Card width token — also sets matching min-height."
|
|
64
|
+
},
|
|
65
|
+
"filterLabel": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"resolvedType": "string",
|
|
68
|
+
"attribute": "filter-label",
|
|
69
|
+
"default": "'Filter'",
|
|
70
|
+
"required": false,
|
|
71
|
+
"mutable": false
|
|
72
|
+
},
|
|
73
|
+
"heading": {
|
|
74
|
+
"type": "string",
|
|
75
|
+
"resolvedType": "string",
|
|
76
|
+
"attribute": "heading",
|
|
77
|
+
"required": true,
|
|
78
|
+
"mutable": false,
|
|
79
|
+
"description": "Widget heading shown in the card header."
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"events": [
|
|
83
|
+
{
|
|
84
|
+
"name": "dsFilterClick",
|
|
85
|
+
"detail": "void",
|
|
86
|
+
"bubbles": true,
|
|
87
|
+
"cancelable": true,
|
|
88
|
+
"composed": true,
|
|
89
|
+
"description": "Emits when the header filter control is activated."
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
"methods": [],
|
|
93
|
+
"slots": [],
|
|
94
|
+
"exports": {
|
|
95
|
+
"customElement": "ds-card-data-viz-donut",
|
|
96
|
+
"react": "DsCardDataVizDonut",
|
|
97
|
+
"angular": "DsCardDataVizDonut"
|
|
98
|
+
},
|
|
99
|
+
"consumption": {
|
|
100
|
+
"install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
|
|
101
|
+
"cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
|
|
102
|
+
"customElements": {
|
|
103
|
+
"import": "import '@ds-mo/ui/dist/components/ds-card-data-viz-donut.js';",
|
|
104
|
+
"example": "<ds-card-data-viz-donut></ds-card-data-viz-donut>"
|
|
105
|
+
},
|
|
106
|
+
"react": {
|
|
107
|
+
"import": "import { DsCardDataVizDonut } from '@ds-mo/ui/react';",
|
|
108
|
+
"example": "<DsCardDataVizDonut />"
|
|
109
|
+
},
|
|
110
|
+
"angular": {
|
|
111
|
+
"import": "import { DsCardDataVizDonut } from '@ds-mo/ui/angular/ds-card-data-viz-donut';",
|
|
112
|
+
"example": "<ds-card-data-viz-donut></ds-card-data-viz-donut>"
|
|
113
|
+
},
|
|
114
|
+
"peerDependencies": {
|
|
115
|
+
"required": [
|
|
116
|
+
"@ds-mo/tokens ^3.1.1",
|
|
117
|
+
"@ds-mo/icons ^6.2.0"
|
|
118
|
+
],
|
|
119
|
+
"frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"dependencies": [
|
|
124
|
+
"@ds-mo/ui",
|
|
125
|
+
"@ds-mo/tokens"
|
|
126
|
+
],
|
|
127
|
+
"registryDependencies": [
|
|
128
|
+
"button-unfilled",
|
|
129
|
+
"card-shell-data-viz"
|
|
130
|
+
],
|
|
131
|
+
"files": [
|
|
132
|
+
{
|
|
133
|
+
"path": "src/wc/components/CardDataVizDonut/CardDataVizDonut.css",
|
|
134
|
+
"content": ":host {\n display: contents;\n}\n\n.card-data-viz-donut__layout {\n display: flex;\n flex-direction: column;\n flex: 1 1 auto;\n min-height: 0;\n height: 100%;\n gap: var(--dimension-space-200);\n box-sizing: border-box;\n}\n\n/*\n * Chart region fills leftover space; legend stays content-sized.\n * Padding is per-region so the body gap isn't doubled at the shared edge.\n */\n.card-data-viz-donut__chart-region {\n flex: 1 1 auto;\n min-height: 0;\n /* Stretch the slotted donut to the full region; the donut centers its own SVG. */\n display: grid;\n padding: var(--dimension-space-400) var(--dimension-space-400) 0 var(--dimension-space-400);\n box-sizing: border-box;\n}\n\n/* Make the slotted donut stretch to the region so ResizeObserver can measure fill size. */\n.card-data-viz-donut__chart-region > * {\n width: 100%;\n height: 100%;\n min-width: 0;\n min-height: 0;\n max-width: 100%;\n max-height: 100%;\n}\n\n.card-data-viz-donut__legend-region {\n flex: 0 0 auto;\n padding: 0 var(--dimension-space-100) var(--dimension-space-100) var(--dimension-space-100);\n box-sizing: border-box;\n}\n",
|
|
135
|
+
"type": "registry:ui"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"path": "src/wc/components/CardDataVizDonut/CardDataVizDonut.tsx",
|
|
139
|
+
"content": "import { Component, Element, Event, EventEmitter, State, h, Host, Prop } from '@stencil/core';\nimport type { CardShellDataVizWidth } from '../CardShellDataViz/CardShellDataViz';\n\nexport type CardDataVizDonutWidth = CardShellDataVizWidth;\n\n/** Matches the `dsSliceHover`/`dsItemHover` detail shape emitted by `ds-chart-*` and `ds-chart-legend`. */\ntype HoveredDatum = { label: string } | null;\n\n/** A slotted chart/legend that opts into hover sync by exposing an `activeLabel` prop. */\ntype SyncableSlot = HTMLElement & { activeLabel?: string | null };\n\n/**\n * Donut data-viz card — dedicated `ds-card-shell-data-viz` chrome with a fill chart region and\n * content-sized legend. Hover sync between chart and legend stays here.\n */\n@Component({\n tag: 'ds-card-data-viz-donut',\n styleUrl: 'CardDataVizDonut.css',\n scoped: true,\n})\nexport class CardDataVizDonut {\n @Element() el!: HTMLElement;\n\n /** Widget heading shown in the card header. */\n @Prop() heading!: string;\n\n /** Card width token — also sets matching min-height. */\n @Prop() cardWidth: CardDataVizDonutWidth = 'md';\n @Prop() filterLabel: string = 'Filter';\n\n /** Emits when the header filter control is activated. */\n @Event() dsFilterClick!: EventEmitter<void>;\n\n // Scoped (light-DOM) components have no native slot projection to detect emptiness from CSS —\n // check the actual children so an unused region (e.g. no legend) doesn't render a dangling\n // padded box plus a body gap next to nothing.\n @State() private hasChartSlot = false;\n @State() private hasLegendSlot = false;\n\n componentWillRender() {\n // Not `:scope >` — Stencil's scoped slot polyfill relocates slotted children into\n // region wrappers (and here into nested `ds-card`), so they may not stay direct\n // host children across renders.\n this.hasChartSlot = !!this.el.querySelector('[slot=\"chart\"]');\n this.hasLegendSlot = !!this.el.querySelector('[slot=\"legend\"]');\n }\n\n componentDidLoad() {\n // Sync the chart's and legend's `activeLabel` from each other's hover events, so any\n // ds-chart-donut + ds-chart-legend pair cross-highlights without every consumer having to\n // wire it up by hand. Delegated on the host (rather than bound to the specific slotted\n // elements) since Stencil events bubble and the slot content can be swapped at runtime.\n this.el.addEventListener('dsSliceHover', this.handleChartHover);\n this.el.addEventListener('dsItemHover', this.handleLegendHover);\n }\n\n disconnectedCallback() {\n this.el.removeEventListener('dsSliceHover', this.handleChartHover);\n this.el.removeEventListener('dsItemHover', this.handleLegendHover);\n }\n\n private handleChartHover = (e: Event) => {\n // Not `:scope >` — Stencil's slot polyfill for scoped (non-shadow) components relocates\n // slotted children into an inner region wrapper on render, so they're no longer direct\n // children of the host by the time this fires.\n const legend = this.el.querySelector('[slot=\"legend\"]') as SyncableSlot | null;\n if (!legend || !('activeLabel' in legend)) return;\n legend.activeLabel = (e as CustomEvent<HoveredDatum>).detail?.label ?? null;\n };\n\n private handleLegendHover = (e: Event) => {\n const chart = this.el.querySelector('[slot=\"chart\"]') as SyncableSlot | null;\n if (!chart || !('activeLabel' in chart)) return;\n chart.activeLabel = (e as CustomEvent<HoveredDatum>).detail?.label ?? null;\n };\n\n private handleFilterClick = () => {\n this.dsFilterClick.emit();\n };\n\n render() {\n return (\n <Host class=\"card-data-viz-donut\">\n <ds-card-shell-data-viz heading={this.heading} cardWidth={this.cardWidth}>\n <ds-button-unfilled\n slot=\"actions\"\n variant=\"icon\"\n type=\"button\"\n icon=\"Filters\"\n aria-label={this.filterLabel}\n onDsClick={this.handleFilterClick}\n />\n <div class=\"card-data-viz-donut__layout\">\n {this.hasChartSlot && (\n <div class=\"card-data-viz-donut__chart-region\">\n <slot name=\"chart\" />\n </div>\n )}\n {this.hasLegendSlot && (\n <div class=\"card-data-viz-donut__legend-region\">\n <slot name=\"legend\" />\n </div>\n )}\n </div>\n </ds-card-shell-data-viz>\n </Host>\n );\n }\n}\n",
|
|
140
|
+
"type": "registry:ui"
|
|
141
|
+
}
|
|
142
|
+
]
|
|
143
|
+
}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "card-setting",
|
|
4
|
+
"title": "CardSetting",
|
|
5
|
+
"description": "Settings page section shell composed on ds-card with view/edit header actions. Edit state is controlled by the parent.",
|
|
6
|
+
"type": "registry:ui",
|
|
7
|
+
"meta": {
|
|
8
|
+
"library": "@ds-mo/ui",
|
|
9
|
+
"distribution": "npm",
|
|
10
|
+
"storybook": "https://zainadeel.github.io/compomo/?path=/story/card-setting",
|
|
11
|
+
"source": "src/wc/components/CardSetting/CardSetting.tsx",
|
|
12
|
+
"intentStatus": "migration-pending",
|
|
13
|
+
"intent": null,
|
|
14
|
+
"api": {
|
|
15
|
+
"props": {
|
|
16
|
+
"cancelLabel": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"resolvedType": "string",
|
|
19
|
+
"attribute": "cancel-label",
|
|
20
|
+
"default": "'Cancel'",
|
|
21
|
+
"required": false,
|
|
22
|
+
"mutable": false
|
|
23
|
+
},
|
|
24
|
+
"cardWidth": {
|
|
25
|
+
"type": "CardSettingWidth",
|
|
26
|
+
"resolvedType": "\"lg\" | \"md\" | \"sm\"",
|
|
27
|
+
"attribute": "card-width",
|
|
28
|
+
"default": "'md'",
|
|
29
|
+
"required": false,
|
|
30
|
+
"mutable": false,
|
|
31
|
+
"description": "Card width token (`sm` / `md` / `lg`). Also sets host `min-height` to the\nmatching `--dimension-card-height-*` so the body fills available space\neven when the slot is empty."
|
|
32
|
+
},
|
|
33
|
+
"editLabel": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"resolvedType": "string",
|
|
36
|
+
"attribute": "edit-label",
|
|
37
|
+
"default": "'Edit'",
|
|
38
|
+
"required": false,
|
|
39
|
+
"mutable": false
|
|
40
|
+
},
|
|
41
|
+
"editing": {
|
|
42
|
+
"type": "boolean",
|
|
43
|
+
"resolvedType": "boolean",
|
|
44
|
+
"attribute": "editing",
|
|
45
|
+
"default": "false",
|
|
46
|
+
"required": false,
|
|
47
|
+
"mutable": false,
|
|
48
|
+
"description": "Controlled edit state — parent owns single-edit orchestration."
|
|
49
|
+
},
|
|
50
|
+
"heading": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"resolvedType": "string",
|
|
53
|
+
"attribute": "heading",
|
|
54
|
+
"required": true,
|
|
55
|
+
"mutable": false,
|
|
56
|
+
"description": "Section heading shown in the card header."
|
|
57
|
+
},
|
|
58
|
+
"saveLabel": {
|
|
59
|
+
"type": "string",
|
|
60
|
+
"resolvedType": "string",
|
|
61
|
+
"attribute": "save-label",
|
|
62
|
+
"default": "'Save'",
|
|
63
|
+
"required": false,
|
|
64
|
+
"mutable": false
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
"events": [
|
|
68
|
+
{
|
|
69
|
+
"name": "dsEditingChange",
|
|
70
|
+
"detail": "boolean",
|
|
71
|
+
"bubbles": true,
|
|
72
|
+
"cancelable": true,
|
|
73
|
+
"composed": true,
|
|
74
|
+
"description": "Emits when the user enters or exits edit mode."
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"methods": [],
|
|
78
|
+
"slots": []
|
|
79
|
+
},
|
|
80
|
+
"props": {
|
|
81
|
+
"cancelLabel": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"resolvedType": "string",
|
|
84
|
+
"attribute": "cancel-label",
|
|
85
|
+
"default": "'Cancel'",
|
|
86
|
+
"required": false,
|
|
87
|
+
"mutable": false
|
|
88
|
+
},
|
|
89
|
+
"cardWidth": {
|
|
90
|
+
"type": "CardSettingWidth",
|
|
91
|
+
"resolvedType": "\"lg\" | \"md\" | \"sm\"",
|
|
92
|
+
"attribute": "card-width",
|
|
93
|
+
"default": "'md'",
|
|
94
|
+
"required": false,
|
|
95
|
+
"mutable": false,
|
|
96
|
+
"description": "Card width token (`sm` / `md` / `lg`). Also sets host `min-height` to the\nmatching `--dimension-card-height-*` so the body fills available space\neven when the slot is empty."
|
|
97
|
+
},
|
|
98
|
+
"editLabel": {
|
|
99
|
+
"type": "string",
|
|
100
|
+
"resolvedType": "string",
|
|
101
|
+
"attribute": "edit-label",
|
|
102
|
+
"default": "'Edit'",
|
|
103
|
+
"required": false,
|
|
104
|
+
"mutable": false
|
|
105
|
+
},
|
|
106
|
+
"editing": {
|
|
107
|
+
"type": "boolean",
|
|
108
|
+
"resolvedType": "boolean",
|
|
109
|
+
"attribute": "editing",
|
|
110
|
+
"default": "false",
|
|
111
|
+
"required": false,
|
|
112
|
+
"mutable": false,
|
|
113
|
+
"description": "Controlled edit state — parent owns single-edit orchestration."
|
|
114
|
+
},
|
|
115
|
+
"heading": {
|
|
116
|
+
"type": "string",
|
|
117
|
+
"resolvedType": "string",
|
|
118
|
+
"attribute": "heading",
|
|
119
|
+
"required": true,
|
|
120
|
+
"mutable": false,
|
|
121
|
+
"description": "Section heading shown in the card header."
|
|
122
|
+
},
|
|
123
|
+
"saveLabel": {
|
|
124
|
+
"type": "string",
|
|
125
|
+
"resolvedType": "string",
|
|
126
|
+
"attribute": "save-label",
|
|
127
|
+
"default": "'Save'",
|
|
128
|
+
"required": false,
|
|
129
|
+
"mutable": false
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
"events": [
|
|
133
|
+
{
|
|
134
|
+
"name": "dsEditingChange",
|
|
135
|
+
"detail": "boolean",
|
|
136
|
+
"bubbles": true,
|
|
137
|
+
"cancelable": true,
|
|
138
|
+
"composed": true,
|
|
139
|
+
"description": "Emits when the user enters or exits edit mode."
|
|
140
|
+
}
|
|
141
|
+
],
|
|
142
|
+
"methods": [],
|
|
143
|
+
"slots": [],
|
|
144
|
+
"exports": {
|
|
145
|
+
"customElement": "ds-card-setting",
|
|
146
|
+
"react": "DsCardSetting",
|
|
147
|
+
"angular": "DsCardSetting"
|
|
148
|
+
},
|
|
149
|
+
"consumption": {
|
|
150
|
+
"install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
|
|
151
|
+
"cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
|
|
152
|
+
"customElements": {
|
|
153
|
+
"import": "import '@ds-mo/ui/dist/components/ds-card-setting.js';",
|
|
154
|
+
"example": "<ds-card-setting></ds-card-setting>"
|
|
155
|
+
},
|
|
156
|
+
"react": {
|
|
157
|
+
"import": "import { DsCardSetting } from '@ds-mo/ui/react';",
|
|
158
|
+
"example": "<DsCardSetting />"
|
|
159
|
+
},
|
|
160
|
+
"angular": {
|
|
161
|
+
"import": "import { DsCardSetting } from '@ds-mo/ui/angular/ds-card-setting';",
|
|
162
|
+
"example": "<ds-card-setting></ds-card-setting>"
|
|
163
|
+
},
|
|
164
|
+
"peerDependencies": {
|
|
165
|
+
"required": [
|
|
166
|
+
"@ds-mo/tokens ^3.1.1",
|
|
167
|
+
"@ds-mo/icons ^6.2.0"
|
|
168
|
+
],
|
|
169
|
+
"frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
"dependencies": [
|
|
174
|
+
"@ds-mo/ui",
|
|
175
|
+
"@ds-mo/tokens"
|
|
176
|
+
],
|
|
177
|
+
"registryDependencies": [
|
|
178
|
+
"button-filled",
|
|
179
|
+
"button-unfilled",
|
|
180
|
+
"card"
|
|
181
|
+
],
|
|
182
|
+
"files": [
|
|
183
|
+
{
|
|
184
|
+
"path": "src/wc/components/CardSetting/CardSetting.css",
|
|
185
|
+
"content": ":host {\n display: contents;\n}\n\n.card-setting__actions {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n gap: var(--dimension-space-100);\n}\n",
|
|
186
|
+
"type": "registry:ui"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"path": "src/wc/components/CardSetting/CardSetting.tsx",
|
|
190
|
+
"content": "import { Component, Event, EventEmitter, h, Host, Prop } from '@stencil/core';\nimport type { CardWidth } from '../Card/Card';\n\nexport type CardSettingWidth = CardWidth;\n\n@Component({\n tag: 'ds-card-setting',\n styleUrl: 'CardSetting.css',\n scoped: true,\n})\nexport class CardSetting {\n /** Section heading shown in the card header. */\n @Prop() heading!: string;\n\n /**\n * Card width token (`sm` / `md` / `lg`). Also sets host `min-height` to the\n * matching `--dimension-card-height-*` so the body fills available space\n * even when the slot is empty.\n */\n @Prop() cardWidth: CardSettingWidth = 'md';\n\n /** Controlled edit state — parent owns single-edit orchestration. */\n @Prop() editing = false;\n @Prop() editLabel: string = 'Edit';\n @Prop() cancelLabel: string = 'Cancel';\n @Prop() saveLabel: string = 'Save';\n\n /** Emits when the user enters or exits edit mode. */\n @Event() dsEditingChange!: EventEmitter<boolean>;\n\n private enterEdit = () => {\n this.dsEditingChange.emit(true);\n };\n\n private exitEdit = () => {\n this.dsEditingChange.emit(false);\n };\n\n render() {\n const editing = this.editing;\n\n return (\n <Host class=\"card-setting\">\n <ds-card\n heading={this.heading}\n cardWidth={this.cardWidth}\n appearance={editing ? 'editing' : 'default'}\n >\n {!editing ? (\n <ds-button-unfilled\n slot=\"actions\"\n variant=\"icon\"\n type=\"button\"\n icon=\"Pencil\"\n aria-label={this.editLabel}\n onDsClick={this.enterEdit}\n />\n ) : (\n <div slot=\"actions\" class=\"card-setting__actions\">\n <ds-button-unfilled\n variant=\"icon\"\n type=\"button\"\n icon=\"Cross\"\n background=\"bold\"\n aria-label={this.cancelLabel}\n onDsClick={this.exitEdit}\n />\n <ds-button-filled\n variant=\"icon\"\n type=\"button\"\n icon=\"Check\"\n intent=\"brand\"\n contrast=\"faint\"\n aria-label={this.saveLabel}\n onDsClick={this.exitEdit}\n />\n </div>\n )}\n <slot />\n </ds-card>\n </Host>\n );\n }\n}\n",
|
|
191
|
+
"type": "registry:ui"
|
|
192
|
+
}
|
|
193
|
+
]
|
|
194
|
+
}
|
|
@@ -0,0 +1,173 @@
|
|
|
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 will evolve independently from general and settings cards.",
|
|
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 will evolve independently from general and settings cards.",
|
|
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 general or settings cards."
|
|
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 the general card shell.",
|
|
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 card contains general content rather than data visualization.",
|
|
30
|
+
"component": "component:ds-card",
|
|
31
|
+
"reason": "Card owns the existing general and settings-compatible chrome contract."
|
|
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
|
+
"commonlyComposedWith": [
|
|
40
|
+
"component:ds-chart-bar",
|
|
41
|
+
"component:ds-chart-donut",
|
|
42
|
+
"component:ds-chart-line",
|
|
43
|
+
"component:ds-chart-legend",
|
|
44
|
+
"component:ds-button-unfilled"
|
|
45
|
+
],
|
|
46
|
+
"accessibility": [
|
|
47
|
+
"Provide a concise visible heading that identifies the visualization; the shell renders it as a section heading.",
|
|
48
|
+
"Header actions must provide their own accessible names and communicate any controlled state or popup relationship.",
|
|
49
|
+
"The shell does not add landmark or chart semantics; composing charts retain their own accessible names and descriptions.",
|
|
50
|
+
"Do not duplicate chart data in the heading. Provide an accessible summary through the chart or adjacent composition when visual encoding alone is insufficient."
|
|
51
|
+
],
|
|
52
|
+
"states": [
|
|
53
|
+
"The shell owns default data-visualization surface chrome only; loading, empty, error, selected, and interactive states belong to the composing card or chart.",
|
|
54
|
+
"The actions slot collapses when empty so headings retain the available header width."
|
|
55
|
+
],
|
|
56
|
+
"responsiveBehavior": [
|
|
57
|
+
"The selected sm, md, or lg width sets the matching token-based minimum height while max-width prevents overflow from a narrower parent.",
|
|
58
|
+
"The parent layout chooses card width, wrapping, stacking, and breakpoint changes; the shell does not switch sizes automatically.",
|
|
59
|
+
"The body is a flexible column so specialized data-viz cards can allocate remaining height between charts, legends, and supporting content."
|
|
60
|
+
],
|
|
61
|
+
"frameworkCaveats": {
|
|
62
|
+
"customElements": [
|
|
63
|
+
"Place header controls in the actions slot and data-visualization composition in the default slot."
|
|
64
|
+
],
|
|
65
|
+
"react": [
|
|
66
|
+
"Pass header controls with slot=\"actions\" and keep chart state in the composing React component."
|
|
67
|
+
],
|
|
68
|
+
"angular": [
|
|
69
|
+
"Project header controls with slot=\"actions\" and keep chart state in the composing Angular component."
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
"references": [
|
|
73
|
+
{
|
|
74
|
+
"label": "Storybook examples",
|
|
75
|
+
"path": "src/wc/components/CardShellDataViz/CardShellDataViz.stories.ts"
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
"api": {
|
|
80
|
+
"props": {
|
|
81
|
+
"cardWidth": {
|
|
82
|
+
"type": "CardShellDataVizWidth",
|
|
83
|
+
"resolvedType": "\"lg\" | \"md\" | \"sm\"",
|
|
84
|
+
"attribute": "card-width",
|
|
85
|
+
"default": "'md'",
|
|
86
|
+
"required": false,
|
|
87
|
+
"mutable": false,
|
|
88
|
+
"description": "Width token with the matching data-visualization shell min-height."
|
|
89
|
+
},
|
|
90
|
+
"heading": {
|
|
91
|
+
"type": "string",
|
|
92
|
+
"resolvedType": "string",
|
|
93
|
+
"attribute": "heading",
|
|
94
|
+
"required": true,
|
|
95
|
+
"mutable": false,
|
|
96
|
+
"description": "Data-visualization heading shown in the shell header."
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"events": [],
|
|
100
|
+
"methods": [],
|
|
101
|
+
"slots": []
|
|
102
|
+
},
|
|
103
|
+
"props": {
|
|
104
|
+
"cardWidth": {
|
|
105
|
+
"type": "CardShellDataVizWidth",
|
|
106
|
+
"resolvedType": "\"lg\" | \"md\" | \"sm\"",
|
|
107
|
+
"attribute": "card-width",
|
|
108
|
+
"default": "'md'",
|
|
109
|
+
"required": false,
|
|
110
|
+
"mutable": false,
|
|
111
|
+
"description": "Width token with the matching data-visualization shell min-height."
|
|
112
|
+
},
|
|
113
|
+
"heading": {
|
|
114
|
+
"type": "string",
|
|
115
|
+
"resolvedType": "string",
|
|
116
|
+
"attribute": "heading",
|
|
117
|
+
"required": true,
|
|
118
|
+
"mutable": false,
|
|
119
|
+
"description": "Data-visualization heading shown in the shell header."
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"events": [],
|
|
123
|
+
"methods": [],
|
|
124
|
+
"slots": [],
|
|
125
|
+
"exports": {
|
|
126
|
+
"customElement": "ds-card-shell-data-viz",
|
|
127
|
+
"react": "DsCardShellDataViz",
|
|
128
|
+
"angular": "DsCardShellDataViz"
|
|
129
|
+
},
|
|
130
|
+
"consumption": {
|
|
131
|
+
"install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
|
|
132
|
+
"cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
|
|
133
|
+
"customElements": {
|
|
134
|
+
"import": "import '@ds-mo/ui/dist/components/ds-card-shell-data-viz.js';",
|
|
135
|
+
"example": "<ds-card-shell-data-viz></ds-card-shell-data-viz>"
|
|
136
|
+
},
|
|
137
|
+
"react": {
|
|
138
|
+
"import": "import { DsCardShellDataViz } from '@ds-mo/ui/react';",
|
|
139
|
+
"example": "<DsCardShellDataViz />"
|
|
140
|
+
},
|
|
141
|
+
"angular": {
|
|
142
|
+
"import": "import { DsCardShellDataViz } from '@ds-mo/ui/angular/ds-card-shell-data-viz';",
|
|
143
|
+
"example": "<ds-card-shell-data-viz></ds-card-shell-data-viz>"
|
|
144
|
+
},
|
|
145
|
+
"peerDependencies": {
|
|
146
|
+
"required": [
|
|
147
|
+
"@ds-mo/tokens ^3.1.1",
|
|
148
|
+
"@ds-mo/icons ^6.2.0"
|
|
149
|
+
],
|
|
150
|
+
"frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"dependencies": [
|
|
155
|
+
"@ds-mo/ui",
|
|
156
|
+
"@ds-mo/tokens"
|
|
157
|
+
],
|
|
158
|
+
"registryDependencies": [
|
|
159
|
+
"text"
|
|
160
|
+
],
|
|
161
|
+
"files": [
|
|
162
|
+
{
|
|
163
|
+
"path": "src/wc/components/CardShellDataViz/CardShellDataViz.css",
|
|
164
|
+
"content": ":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 display: flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: space-between;\n box-sizing: border-box;\n height: var(--dimension-size-600);\n padding: var(--dimension-space-100);\n gap: var(--dimension-space-100);\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",
|
|
165
|
+
"type": "registry:ui"
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"path": "src/wc/components/CardShellDataViz/CardShellDataViz.tsx",
|
|
169
|
+
"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\">\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",
|
|
170
|
+
"type": "registry:ui"
|
|
171
|
+
}
|
|
172
|
+
]
|
|
173
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "card",
|
|
4
|
+
"title": "Card",
|
|
5
|
+
"description": "General and settings-compatible card chrome — width + matching min-height tokens, header (title + actions slot), and a flex body that fills leftover space.",
|
|
6
|
+
"type": "registry:ui",
|
|
7
|
+
"meta": {
|
|
8
|
+
"library": "@ds-mo/ui",
|
|
9
|
+
"distribution": "npm",
|
|
10
|
+
"storybook": "https://zainadeel.github.io/compomo/?path=/story/card",
|
|
11
|
+
"source": "src/wc/components/Card/Card.tsx",
|
|
12
|
+
"intentStatus": "migration-pending",
|
|
13
|
+
"intent": null,
|
|
14
|
+
"api": {
|
|
15
|
+
"props": {
|
|
16
|
+
"appearance": {
|
|
17
|
+
"type": "CardAppearance",
|
|
18
|
+
"resolvedType": "\"default\" | \"editing\"",
|
|
19
|
+
"attribute": "appearance",
|
|
20
|
+
"default": "'default'",
|
|
21
|
+
"required": false,
|
|
22
|
+
"mutable": false,
|
|
23
|
+
"description": "Chrome recipe — `editing` applies the settings edit wash."
|
|
24
|
+
},
|
|
25
|
+
"cardWidth": {
|
|
26
|
+
"type": "CardWidth",
|
|
27
|
+
"resolvedType": "\"lg\" | \"md\" | \"sm\"",
|
|
28
|
+
"attribute": "card-width",
|
|
29
|
+
"default": "'md'",
|
|
30
|
+
"required": false,
|
|
31
|
+
"mutable": false,
|
|
32
|
+
"description": "Card width token (`sm` / `md` / `lg`). Also sets host `min-height` to the\nmatching `--dimension-card-height-*` so empty bodies still fill the card."
|
|
33
|
+
},
|
|
34
|
+
"heading": {
|
|
35
|
+
"type": "string",
|
|
36
|
+
"resolvedType": "string",
|
|
37
|
+
"attribute": "heading",
|
|
38
|
+
"required": true,
|
|
39
|
+
"mutable": false,
|
|
40
|
+
"description": "Section heading shown in the card header."
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"events": [],
|
|
44
|
+
"methods": [],
|
|
45
|
+
"slots": []
|
|
46
|
+
},
|
|
47
|
+
"props": {
|
|
48
|
+
"appearance": {
|
|
49
|
+
"type": "CardAppearance",
|
|
50
|
+
"resolvedType": "\"default\" | \"editing\"",
|
|
51
|
+
"attribute": "appearance",
|
|
52
|
+
"default": "'default'",
|
|
53
|
+
"required": false,
|
|
54
|
+
"mutable": false,
|
|
55
|
+
"description": "Chrome recipe — `editing` applies the settings edit wash."
|
|
56
|
+
},
|
|
57
|
+
"cardWidth": {
|
|
58
|
+
"type": "CardWidth",
|
|
59
|
+
"resolvedType": "\"lg\" | \"md\" | \"sm\"",
|
|
60
|
+
"attribute": "card-width",
|
|
61
|
+
"default": "'md'",
|
|
62
|
+
"required": false,
|
|
63
|
+
"mutable": false,
|
|
64
|
+
"description": "Card width token (`sm` / `md` / `lg`). Also sets host `min-height` to the\nmatching `--dimension-card-height-*` so empty bodies still fill the card."
|
|
65
|
+
},
|
|
66
|
+
"heading": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"resolvedType": "string",
|
|
69
|
+
"attribute": "heading",
|
|
70
|
+
"required": true,
|
|
71
|
+
"mutable": false,
|
|
72
|
+
"description": "Section heading shown in the card header."
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"events": [],
|
|
76
|
+
"methods": [],
|
|
77
|
+
"slots": [],
|
|
78
|
+
"exports": {
|
|
79
|
+
"customElement": "ds-card",
|
|
80
|
+
"react": "DsCard",
|
|
81
|
+
"angular": "DsCard"
|
|
82
|
+
},
|
|
83
|
+
"consumption": {
|
|
84
|
+
"install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
|
|
85
|
+
"cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
|
|
86
|
+
"customElements": {
|
|
87
|
+
"import": "import '@ds-mo/ui/dist/components/ds-card.js';",
|
|
88
|
+
"example": "<ds-card></ds-card>"
|
|
89
|
+
},
|
|
90
|
+
"react": {
|
|
91
|
+
"import": "import { DsCard } from '@ds-mo/ui/react';",
|
|
92
|
+
"example": "<DsCard />"
|
|
93
|
+
},
|
|
94
|
+
"angular": {
|
|
95
|
+
"import": "import { DsCard } from '@ds-mo/ui/angular/ds-card';",
|
|
96
|
+
"example": "<ds-card></ds-card>"
|
|
97
|
+
},
|
|
98
|
+
"peerDependencies": {
|
|
99
|
+
"required": [
|
|
100
|
+
"@ds-mo/tokens ^3.1.1",
|
|
101
|
+
"@ds-mo/icons ^6.2.0"
|
|
102
|
+
],
|
|
103
|
+
"frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
"dependencies": [
|
|
108
|
+
"@ds-mo/ui",
|
|
109
|
+
"@ds-mo/tokens"
|
|
110
|
+
],
|
|
111
|
+
"registryDependencies": [
|
|
112
|
+
"text"
|
|
113
|
+
],
|
|
114
|
+
"files": [
|
|
115
|
+
{
|
|
116
|
+
"path": "src/wc/components/Card/Card.css",
|
|
117
|
+
"content": ":host {\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n width: var(--_card-width);\n min-height: var(--_card-min-height);\n max-width: 100%;\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 overflow: hidden;\n}\n\n:host(.card--editing) {\n background-color: var(--color-background-bold-brand);\n box-shadow: 0 0 0 var(--dimension-stroke-width-025) var(--color-border-bold-brand);\n}\n\n.card__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--dimension-space-100);\n height: var(--dimension-size-600);\n flex-shrink: 0;\n padding: var(--dimension-space-100);\n background-color: var(--color-background-secondary);\n border-bottom: var(--dimension-stroke-width-012) solid var(--color-border-tertiary);\n box-sizing: border-box;\n}\n\n:host(.card--editing) .card__header {\n background-color: transparent;\n border-bottom-color: transparent;\n}\n\n/* Title owns wrap + label inset (was nested wrap 075 + title 025 before metric-box).\n Beat Text’s block/inline-box display so flex centering still applies. */\nds-text.card__title {\n flex: 1 1 auto;\n min-width: 0;\n display: flex;\n align-items: center;\n box-sizing: border-box;\n padding: calc(\n var(--dimension-space-075) + var(--dimension-space-025)\n );\n -webkit-user-select: none;\n user-select: none;\n}\n\n.card__actions {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n gap: var(--dimension-space-100);\n}\n\n.card__actions:empty {\n display: none;\n}\n\n.card__body {\n flex: 1 1 auto;\n min-height: 0;\n display: flex;\n flex-direction: column;\n border-radius: 0 0 var(--dimension-radius-025) var(--dimension-radius-025);\n background-color: var(--color-background-primary);\n box-sizing: border-box;\n}\n\n:host(.card--editing) .card__body {\n border-radius: var(--dimension-radius-025);\n}\n",
|
|
118
|
+
"type": "registry:ui"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"path": "src/wc/components/Card/Card.tsx",
|
|
122
|
+
"content": "import { Component, h, Host, Prop } from '@stencil/core';\n\nexport type CardWidth = 'sm' | 'md' | 'lg';\n\n/** Visual chrome recipe — default app surface, or settings edit wash. */\nexport type CardAppearance = 'default' | 'editing';\n\nconst CARD_WIDTH_VARS: Record<CardWidth, 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<CardWidth, string> = {\n sm: 'var(--dimension-card-height-sm)',\n md: 'var(--dimension-card-height-md)',\n lg: 'var(--dimension-card-height-lg)',\n};\n\nconst FAINT_BRAND_TITLE_COLOR = 'var(--color-foreground-faint-brand)';\n\n/**\n * Shared card chrome — width + matching min-height tokens, header (title + actions),\n * and a flex body that fills leftover space. Data-visualization cards use their\n * dedicated `ds-card-shell-data-viz` boundary instead.\n */\n@Component({\n tag: 'ds-card',\n styleUrl: 'Card.css',\n scoped: true,\n})\nexport class Card {\n /** Section heading shown in the card header. */\n @Prop() heading!: string;\n\n /**\n * Card width token (`sm` / `md` / `lg`). Also sets host `min-height` to the\n * matching `--dimension-card-height-*` so empty bodies still fill the card.\n */\n @Prop() cardWidth: CardWidth = 'md';\n\n /** Chrome recipe — `editing` applies the settings edit wash. */\n @Prop() appearance: CardAppearance = 'default';\n\n render() {\n const editing = this.appearance === 'editing';\n\n return (\n <Host\n class={{\n card: true,\n 'card--editing': editing,\n }}\n style={{\n '--_card-width': CARD_WIDTH_VARS[this.cardWidth],\n '--_card-min-height': CARD_HEIGHT_VARS[this.cardWidth],\n }}\n >\n <header class=\"card__header\">\n <ds-text\n class=\"card__title\"\n variant=\"text-title-small\"\n emphasis\n color={editing ? FAINT_BRAND_TITLE_COLOR : 'primary'}\n as=\"h2\"\n >\n {this.heading}\n </ds-text>\n <div class=\"card__actions\">\n <slot name=\"actions\" />\n </div>\n </header>\n <div class=\"card__body\">\n <slot />\n </div>\n </Host>\n );\n }\n}\n",
|
|
123
|
+
"type": "registry:ui"
|
|
124
|
+
}
|
|
125
|
+
]
|
|
126
|
+
}
|