@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,265 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "conversation-list-item",
|
|
4
|
+
"title": "ConversationListItem",
|
|
5
|
+
"description": "Selectable conversation row with one-line preview, recency, unread presence, generic busy or error status, and channel-owned accessory slots.",
|
|
6
|
+
"type": "registry:ui",
|
|
7
|
+
"meta": {
|
|
8
|
+
"library": "@ds-mo/ui",
|
|
9
|
+
"distribution": "npm",
|
|
10
|
+
"storybook": "https://zainadeel.github.io/compomo/?path=/story/conversation-list-item",
|
|
11
|
+
"source": "src/wc/components/ConversationListItem/ConversationListItem.tsx",
|
|
12
|
+
"intentStatus": "complete",
|
|
13
|
+
"intent": {
|
|
14
|
+
"audience": "general",
|
|
15
|
+
"status": "experimental",
|
|
16
|
+
"summary": "Selectable conversation row with one-line preview, recency, unread presence, generic busy or error status, and channel-owned accessory slots.",
|
|
17
|
+
"useWhen": [
|
|
18
|
+
"A conversation history needs a compact row that opens one thread."
|
|
19
|
+
],
|
|
20
|
+
"avoidWhen": [
|
|
21
|
+
"The row represents a command rather than a persisted conversation."
|
|
22
|
+
],
|
|
23
|
+
"commonlyComposedWith": [
|
|
24
|
+
"component:ds-conversation-list-section",
|
|
25
|
+
"component:ds-avatar",
|
|
26
|
+
"component:ds-badge",
|
|
27
|
+
"component:ds-loader"
|
|
28
|
+
],
|
|
29
|
+
"patterns": [
|
|
30
|
+
"pattern:conversation"
|
|
31
|
+
],
|
|
32
|
+
"accessibility": [
|
|
33
|
+
"The conversation surface is one button with its title as the primary accessible name; actions are sibling controls so buttons are never nested.",
|
|
34
|
+
"An action in the actions slot remains keyboard-focusable and appears on row focus as well as pointer hover; touch layouts keep it visible.",
|
|
35
|
+
"Status copy must make busy or error meaning available without relying on motion or color."
|
|
36
|
+
],
|
|
37
|
+
"states": [
|
|
38
|
+
"Rows reuse the md choice-item label/subtext recipe used by Menu, including 6px row padding, 2px text inset, and the shared content gap. The enclosing conversation-list scroll region supplies the larger 8px outer container padding.",
|
|
39
|
+
"Busy and error are generic channel-neutral states; the owning product supplies suitable status wording.",
|
|
40
|
+
"Any positive unreadCount renders one dot on the title row rather than a visible counter; the accessible row name may still announce the exact unread quantity.",
|
|
41
|
+
"Hover and press use the shared interaction hover and pressed overlays. Only the selected conversation uses the persistent active fill.",
|
|
42
|
+
"The title uses body-medium emphasis, not title-small, and the body-small preview truncates after one line. Unread titles use primary foreground; read titles use secondary foreground.",
|
|
43
|
+
"The actions slot overlays the row at an 8px right inset without changing title or preview measure, and paints above the row interaction wash while that wash remains active."
|
|
44
|
+
],
|
|
45
|
+
"responsiveBehavior": [
|
|
46
|
+
"Long titles and previews truncate without displacing trailing status."
|
|
47
|
+
],
|
|
48
|
+
"references": [
|
|
49
|
+
{
|
|
50
|
+
"label": "Storybook examples",
|
|
51
|
+
"path": "src/wc/components/ConversationList/ConversationList.stories.ts"
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
"api": {
|
|
56
|
+
"props": {
|
|
57
|
+
"conversationId": {
|
|
58
|
+
"type": "string",
|
|
59
|
+
"resolvedType": "string",
|
|
60
|
+
"attribute": "conversation-id",
|
|
61
|
+
"default": "''",
|
|
62
|
+
"required": false,
|
|
63
|
+
"mutable": false
|
|
64
|
+
},
|
|
65
|
+
"conversationTitle": {
|
|
66
|
+
"type": "string",
|
|
67
|
+
"resolvedType": "string",
|
|
68
|
+
"attribute": "conversation-title",
|
|
69
|
+
"default": "''",
|
|
70
|
+
"required": false,
|
|
71
|
+
"mutable": false,
|
|
72
|
+
"description": "Visible conversation title. Named to avoid the native HTMLElement.title contract."
|
|
73
|
+
},
|
|
74
|
+
"preview": {
|
|
75
|
+
"type": "string",
|
|
76
|
+
"resolvedType": "string",
|
|
77
|
+
"attribute": "preview",
|
|
78
|
+
"default": "''",
|
|
79
|
+
"required": false,
|
|
80
|
+
"mutable": false
|
|
81
|
+
},
|
|
82
|
+
"selected": {
|
|
83
|
+
"type": "boolean",
|
|
84
|
+
"resolvedType": "boolean",
|
|
85
|
+
"attribute": "selected",
|
|
86
|
+
"default": "false",
|
|
87
|
+
"required": false,
|
|
88
|
+
"mutable": false
|
|
89
|
+
},
|
|
90
|
+
"state": {
|
|
91
|
+
"type": "ConversationItemState",
|
|
92
|
+
"resolvedType": "\"busy\" | \"default\" | \"error\"",
|
|
93
|
+
"attribute": "state",
|
|
94
|
+
"default": "'default'",
|
|
95
|
+
"required": false,
|
|
96
|
+
"mutable": false
|
|
97
|
+
},
|
|
98
|
+
"statusLabel": {
|
|
99
|
+
"type": "string",
|
|
100
|
+
"resolvedType": "string",
|
|
101
|
+
"attribute": "status-label",
|
|
102
|
+
"default": "''",
|
|
103
|
+
"required": false,
|
|
104
|
+
"mutable": false
|
|
105
|
+
},
|
|
106
|
+
"unreadCount": {
|
|
107
|
+
"type": "number",
|
|
108
|
+
"resolvedType": "number",
|
|
109
|
+
"attribute": "unread-count",
|
|
110
|
+
"default": "0",
|
|
111
|
+
"required": false,
|
|
112
|
+
"mutable": false
|
|
113
|
+
},
|
|
114
|
+
"updatedAt": {
|
|
115
|
+
"type": "string",
|
|
116
|
+
"resolvedType": "string",
|
|
117
|
+
"attribute": "updated-at",
|
|
118
|
+
"default": "''",
|
|
119
|
+
"required": false,
|
|
120
|
+
"mutable": false,
|
|
121
|
+
"description": "ISO timestamp for semantic activity metadata."
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
"events": [
|
|
125
|
+
{
|
|
126
|
+
"name": "dsSelect",
|
|
127
|
+
"detail": "{ id: string }",
|
|
128
|
+
"bubbles": true,
|
|
129
|
+
"cancelable": true,
|
|
130
|
+
"composed": true
|
|
131
|
+
}
|
|
132
|
+
],
|
|
133
|
+
"methods": [],
|
|
134
|
+
"slots": []
|
|
135
|
+
},
|
|
136
|
+
"props": {
|
|
137
|
+
"conversationId": {
|
|
138
|
+
"type": "string",
|
|
139
|
+
"resolvedType": "string",
|
|
140
|
+
"attribute": "conversation-id",
|
|
141
|
+
"default": "''",
|
|
142
|
+
"required": false,
|
|
143
|
+
"mutable": false
|
|
144
|
+
},
|
|
145
|
+
"conversationTitle": {
|
|
146
|
+
"type": "string",
|
|
147
|
+
"resolvedType": "string",
|
|
148
|
+
"attribute": "conversation-title",
|
|
149
|
+
"default": "''",
|
|
150
|
+
"required": false,
|
|
151
|
+
"mutable": false,
|
|
152
|
+
"description": "Visible conversation title. Named to avoid the native HTMLElement.title contract."
|
|
153
|
+
},
|
|
154
|
+
"preview": {
|
|
155
|
+
"type": "string",
|
|
156
|
+
"resolvedType": "string",
|
|
157
|
+
"attribute": "preview",
|
|
158
|
+
"default": "''",
|
|
159
|
+
"required": false,
|
|
160
|
+
"mutable": false
|
|
161
|
+
},
|
|
162
|
+
"selected": {
|
|
163
|
+
"type": "boolean",
|
|
164
|
+
"resolvedType": "boolean",
|
|
165
|
+
"attribute": "selected",
|
|
166
|
+
"default": "false",
|
|
167
|
+
"required": false,
|
|
168
|
+
"mutable": false
|
|
169
|
+
},
|
|
170
|
+
"state": {
|
|
171
|
+
"type": "ConversationItemState",
|
|
172
|
+
"resolvedType": "\"busy\" | \"default\" | \"error\"",
|
|
173
|
+
"attribute": "state",
|
|
174
|
+
"default": "'default'",
|
|
175
|
+
"required": false,
|
|
176
|
+
"mutable": false
|
|
177
|
+
},
|
|
178
|
+
"statusLabel": {
|
|
179
|
+
"type": "string",
|
|
180
|
+
"resolvedType": "string",
|
|
181
|
+
"attribute": "status-label",
|
|
182
|
+
"default": "''",
|
|
183
|
+
"required": false,
|
|
184
|
+
"mutable": false
|
|
185
|
+
},
|
|
186
|
+
"unreadCount": {
|
|
187
|
+
"type": "number",
|
|
188
|
+
"resolvedType": "number",
|
|
189
|
+
"attribute": "unread-count",
|
|
190
|
+
"default": "0",
|
|
191
|
+
"required": false,
|
|
192
|
+
"mutable": false
|
|
193
|
+
},
|
|
194
|
+
"updatedAt": {
|
|
195
|
+
"type": "string",
|
|
196
|
+
"resolvedType": "string",
|
|
197
|
+
"attribute": "updated-at",
|
|
198
|
+
"default": "''",
|
|
199
|
+
"required": false,
|
|
200
|
+
"mutable": false,
|
|
201
|
+
"description": "ISO timestamp for semantic activity metadata."
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
"events": [
|
|
205
|
+
{
|
|
206
|
+
"name": "dsSelect",
|
|
207
|
+
"detail": "{ id: string }",
|
|
208
|
+
"bubbles": true,
|
|
209
|
+
"cancelable": true,
|
|
210
|
+
"composed": true
|
|
211
|
+
}
|
|
212
|
+
],
|
|
213
|
+
"methods": [],
|
|
214
|
+
"slots": [],
|
|
215
|
+
"exports": {
|
|
216
|
+
"customElement": "ds-conversation-list-item",
|
|
217
|
+
"react": "DsConversationListItem",
|
|
218
|
+
"angular": "DsConversationListItem"
|
|
219
|
+
},
|
|
220
|
+
"consumption": {
|
|
221
|
+
"install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
|
|
222
|
+
"cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
|
|
223
|
+
"customElements": {
|
|
224
|
+
"import": "import '@ds-mo/ui/dist/components/ds-conversation-list-item.js';",
|
|
225
|
+
"example": "<ds-conversation-list-item></ds-conversation-list-item>"
|
|
226
|
+
},
|
|
227
|
+
"react": {
|
|
228
|
+
"import": "import { DsConversationListItem } from '@ds-mo/ui/react';",
|
|
229
|
+
"example": "<DsConversationListItem />"
|
|
230
|
+
},
|
|
231
|
+
"angular": {
|
|
232
|
+
"import": "import { DsConversationListItem } from '@ds-mo/ui/angular/ds-conversation-list-item';",
|
|
233
|
+
"example": "<ds-conversation-list-item></ds-conversation-list-item>"
|
|
234
|
+
},
|
|
235
|
+
"peerDependencies": {
|
|
236
|
+
"required": [
|
|
237
|
+
"@ds-mo/tokens ^3.1.1",
|
|
238
|
+
"@ds-mo/icons ^6.2.0"
|
|
239
|
+
],
|
|
240
|
+
"frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
"dependencies": [
|
|
245
|
+
"@ds-mo/ui",
|
|
246
|
+
"@ds-mo/tokens"
|
|
247
|
+
],
|
|
248
|
+
"registryDependencies": [
|
|
249
|
+
"badge",
|
|
250
|
+
"loader",
|
|
251
|
+
"text"
|
|
252
|
+
],
|
|
253
|
+
"files": [
|
|
254
|
+
{
|
|
255
|
+
"path": "src/wc/components/ConversationListItem/ConversationListItem.css",
|
|
256
|
+
"content": "@import '../../utils/choice-list.css';\n\n:host {\n display: block;\n box-sizing: border-box;\n}\n\n.conversation-list-item__row {\n position: relative;\n isolation: isolate;\n}\n\n.conversation-list-item {\n color: var(--color-foreground-primary);\n}\n\n.conversation-list-item--error {\n --ds-interaction-border-width: var(--dimension-stroke-width-012);\n --ds-interaction-border-color: var(--color-border-bold-negative);\n}\n\n.conversation-list-item__leading:empty,\n.conversation-list-item__trailing:empty {\n display: none;\n}\n\n.conversation-list-item__leading,\n.conversation-list-item__trailing,\n.conversation-list-item__preview-row {\n display: flex;\n align-items: center;\n}\n\n.conversation-list-item__leading {\n align-self: center;\n width: auto;\n height: auto;\n margin-inline-start: var(--ds-control-label-inset, var(--dimension-space-025));\n margin-inline-end: var(--dimension-space-050);\n}\n\n.conversation-list-item__content {\n min-width: 0;\n}\n\n.conversation-list-item__title-row {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.conversation-list-item__preview-row {\n min-width: 0;\n gap: var(--dimension-space-050);\n}\n\nds-text.conversation-list-item__title,\nds-text.conversation-list-item__preview {\n display: block;\n min-width: 0;\n}\n\nds-text.conversation-list-item__title {\n flex: 1;\n}\n\n.conversation-list-item__unread {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--dimension-size-200);\n margin-inline-end: var(--dimension-space-025);\n}\n\nds-text.conversation-list-item__preview.ds-choice-item__subtext {\n -webkit-line-clamp: 1;\n}\n\n.conversation-list-item__actions {\n position: absolute;\n top: 50%;\n right: var(--dimension-space-100);\n z-index: var(--dimension-z-index-floating);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dimension-radius-half);\n background: var(--color-background-transparent);\n box-shadow: var(--effect-elevation-elevated-md);\n -webkit-backdrop-filter: blur(var(--effect-blur-sm));\n backdrop-filter: blur(var(--effect-blur-sm));\n opacity: 0;\n pointer-events: none;\n transform: translateY(-50%);\n}\n\n.conversation-list-item__row:hover .conversation-list-item__actions,\n.conversation-list-item__row:has(:focus-visible) .conversation-list-item__actions {\n opacity: 1;\n pointer-events: auto;\n}\n\n/* Keep the row wash continuous while the pointer moves onto its sibling action. */\n.conversation-list-item__row:hover .conversation-list-item::after {\n background: var(--ds-interaction-hover);\n}\n\n.conversation-list-item__row:active .conversation-list-item::after {\n background: var(--ds-interaction-pressed);\n}\n\n@media (hover: none) {\n .conversation-list-item__actions {\n opacity: 1;\n pointer-events: auto;\n }\n\n :host(.conversation-list-item--has-actions) .conversation-list-item__title-row {\n padding-inline-end: var(--dimension-size-400);\n }\n}\n\n.conversation-list-item__time {\n position: absolute;\n width: var(--dimension-size-050);\n height: var(--dimension-size-050);\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n",
|
|
257
|
+
"type": "registry:ui"
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
"path": "src/wc/components/ConversationListItem/ConversationListItem.tsx",
|
|
261
|
+
"content": "import { Component, Element, Event, EventEmitter, h, Host, Prop } from '@stencil/core';\nimport type { ConversationItemState } from '../conversation-types';\n\n@Component({\n tag: 'ds-conversation-list-item',\n styleUrl: 'ConversationListItem.css',\n scoped: true,\n})\nexport class ConversationListItem {\n @Element() el!: HTMLElement;\n\n @Prop() conversationId: string = '';\n /** Visible conversation title. Named to avoid the native HTMLElement.title contract. */\n @Prop() conversationTitle: string = '';\n @Prop() preview: string = '';\n /** ISO timestamp for semantic activity metadata. */\n @Prop() updatedAt: string = '';\n @Prop() selected: boolean = false;\n @Prop() state: ConversationItemState = 'default';\n @Prop() statusLabel: string = '';\n @Prop() unreadCount: number = 0;\n\n @Event() dsSelect!: EventEmitter<{ id: string }>;\n\n private handleClick = () => this.dsSelect.emit({ id: this.conversationId });\n\n private handleActionsSlotChange = (event: Event) => {\n const slot = event.target as HTMLSlotElement;\n this.el.classList.toggle(\n 'conversation-list-item--has-actions',\n slot.assignedElements({ flatten: true }).length > 0\n );\n };\n\n render() {\n const busy = this.state === 'busy';\n const subtext = busy && this.statusLabel ? this.statusLabel : this.preview;\n const accessibleName = [\n this.conversationTitle,\n subtext,\n this.unreadCount > 0 ? `${this.unreadCount} unread` : '',\n ]\n .filter(Boolean)\n .join('. ');\n\n return (\n <Host role=\"listitem\">\n <div class=\"conversation-list-item__row\">\n <button\n type=\"button\"\n class={{\n 'conversation-list-item': true,\n 'ds-choice-item': true,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--selected': this.selected,\n 'conversation-list-item--error': this.state === 'error',\n }}\n aria-label={accessibleName}\n aria-current={this.selected ? 'true' : undefined}\n aria-busy={busy ? 'true' : undefined}\n onClick={this.handleClick}\n >\n <span class=\"conversation-list-item__leading ds-choice-item__icon ds-interaction-fill__content\">\n <slot name=\"leading\" />\n </span>\n <span class=\"conversation-list-item__content ds-choice-item__content ds-interaction-fill__content\">\n <span class=\"conversation-list-item__title-row\">\n <ds-text\n class=\"conversation-list-item__title ds-choice-item__label\"\n as=\"span\"\n variant=\"text-body-medium\"\n emphasis\n color={this.unreadCount > 0 ? 'primary' : 'secondary'}\n lineTruncation={1}\n >\n {this.conversationTitle}\n </ds-text>\n {this.unreadCount > 0 ? (\n <span class=\"conversation-list-item__unread\">\n <ds-badge variant=\"dot\" surface=\"secondary\" />\n </span>\n ) : null}\n </span>\n <span class=\"conversation-list-item__preview-row\">\n {busy ? <ds-loader size=\"xs\" color=\"secondary\" /> : null}\n <ds-text\n class=\"conversation-list-item__preview ds-choice-item__subtext\"\n as=\"span\"\n variant=\"text-body-small\"\n color={this.state === 'error' ? 'negative' : 'secondary'}\n lineTruncation={1}\n >\n {subtext}\n </ds-text>\n </span>\n {this.updatedAt ? (\n <time class=\"conversation-list-item__time\" dateTime={this.updatedAt}>\n {this.updatedAt}\n </time>\n ) : null}\n </span>\n <span class=\"conversation-list-item__trailing ds-interaction-fill__content\">\n <slot name=\"trailing\" />\n </span>\n </button>\n <div class=\"conversation-list-item__actions\">\n <slot name=\"actions\" onSlotchange={this.handleActionsSlotChange} />\n </div>\n </div>\n </Host>\n );\n }\n}\n",
|
|
262
|
+
"type": "registry:ui"
|
|
263
|
+
}
|
|
264
|
+
]
|
|
265
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "conversation-list-section",
|
|
4
|
+
"title": "ConversationListSection",
|
|
5
|
+
"description": "Semantically labelled section for grouping conversation rows by meaningful chronology or category.",
|
|
6
|
+
"type": "registry:ui",
|
|
7
|
+
"meta": {
|
|
8
|
+
"library": "@ds-mo/ui",
|
|
9
|
+
"distribution": "npm",
|
|
10
|
+
"storybook": "https://zainadeel.github.io/compomo/?path=/story/conversation-list-section",
|
|
11
|
+
"source": "src/wc/components/ConversationListSection/ConversationListSection.tsx",
|
|
12
|
+
"intentStatus": "complete",
|
|
13
|
+
"intent": {
|
|
14
|
+
"audience": "general",
|
|
15
|
+
"status": "experimental",
|
|
16
|
+
"summary": "Semantically labelled section for grouping conversation rows by meaningful chronology or category.",
|
|
17
|
+
"useWhen": [
|
|
18
|
+
"A conversation list needs visible groups such as Today, Yesterday, or Older."
|
|
19
|
+
],
|
|
20
|
+
"avoidWhen": [
|
|
21
|
+
"A flat list is clearer or the proposed grouping has no meaning to readers."
|
|
22
|
+
],
|
|
23
|
+
"commonlyComposedWith": [
|
|
24
|
+
"component:ds-conversation-list",
|
|
25
|
+
"component:ds-conversation-list-item"
|
|
26
|
+
],
|
|
27
|
+
"patterns": [
|
|
28
|
+
"pattern:conversation"
|
|
29
|
+
],
|
|
30
|
+
"accessibility": [
|
|
31
|
+
"The visible heading labels the section and must describe the relationship shared by its rows."
|
|
32
|
+
],
|
|
33
|
+
"responsiveBehavior": [
|
|
34
|
+
"Rows remain full width while the heading stays visible in document order."
|
|
35
|
+
],
|
|
36
|
+
"references": [
|
|
37
|
+
{
|
|
38
|
+
"label": "Storybook examples",
|
|
39
|
+
"path": "src/wc/components/ConversationList/ConversationList.stories.ts"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
"api": {
|
|
44
|
+
"props": {
|
|
45
|
+
"heading": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"resolvedType": "string",
|
|
48
|
+
"attribute": "heading",
|
|
49
|
+
"default": "''",
|
|
50
|
+
"required": false,
|
|
51
|
+
"mutable": false,
|
|
52
|
+
"description": "Visible section heading."
|
|
53
|
+
},
|
|
54
|
+
"sectionId": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"resolvedType": "string",
|
|
57
|
+
"attribute": "section-id",
|
|
58
|
+
"default": "''",
|
|
59
|
+
"required": false,
|
|
60
|
+
"mutable": false,
|
|
61
|
+
"description": "Optional stable id used for the section heading."
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"events": [],
|
|
65
|
+
"methods": [],
|
|
66
|
+
"slots": []
|
|
67
|
+
},
|
|
68
|
+
"props": {
|
|
69
|
+
"heading": {
|
|
70
|
+
"type": "string",
|
|
71
|
+
"resolvedType": "string",
|
|
72
|
+
"attribute": "heading",
|
|
73
|
+
"default": "''",
|
|
74
|
+
"required": false,
|
|
75
|
+
"mutable": false,
|
|
76
|
+
"description": "Visible section heading."
|
|
77
|
+
},
|
|
78
|
+
"sectionId": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"resolvedType": "string",
|
|
81
|
+
"attribute": "section-id",
|
|
82
|
+
"default": "''",
|
|
83
|
+
"required": false,
|
|
84
|
+
"mutable": false,
|
|
85
|
+
"description": "Optional stable id used for the section heading."
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"events": [],
|
|
89
|
+
"methods": [],
|
|
90
|
+
"slots": [],
|
|
91
|
+
"exports": {
|
|
92
|
+
"customElement": "ds-conversation-list-section",
|
|
93
|
+
"react": "DsConversationListSection",
|
|
94
|
+
"angular": "DsConversationListSection"
|
|
95
|
+
},
|
|
96
|
+
"consumption": {
|
|
97
|
+
"install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
|
|
98
|
+
"cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
|
|
99
|
+
"customElements": {
|
|
100
|
+
"import": "import '@ds-mo/ui/dist/components/ds-conversation-list-section.js';",
|
|
101
|
+
"example": "<ds-conversation-list-section></ds-conversation-list-section>"
|
|
102
|
+
},
|
|
103
|
+
"react": {
|
|
104
|
+
"import": "import { DsConversationListSection } from '@ds-mo/ui/react';",
|
|
105
|
+
"example": "<DsConversationListSection />"
|
|
106
|
+
},
|
|
107
|
+
"angular": {
|
|
108
|
+
"import": "import { DsConversationListSection } from '@ds-mo/ui/angular/ds-conversation-list-section';",
|
|
109
|
+
"example": "<ds-conversation-list-section></ds-conversation-list-section>"
|
|
110
|
+
},
|
|
111
|
+
"peerDependencies": {
|
|
112
|
+
"required": [
|
|
113
|
+
"@ds-mo/tokens ^3.1.1",
|
|
114
|
+
"@ds-mo/icons ^6.2.0"
|
|
115
|
+
],
|
|
116
|
+
"frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"dependencies": [
|
|
121
|
+
"@ds-mo/ui",
|
|
122
|
+
"@ds-mo/tokens"
|
|
123
|
+
],
|
|
124
|
+
"registryDependencies": [
|
|
125
|
+
"text"
|
|
126
|
+
],
|
|
127
|
+
"files": [
|
|
128
|
+
{
|
|
129
|
+
"path": "src/wc/components/ConversationListSection/ConversationListSection.css",
|
|
130
|
+
"content": ":host {\n display: block;\n box-sizing: border-box;\n}\n\n:host(:not(:first-child)) {\n /* Match the 16px separation between PanelNav groups. */\n margin-top: var(--dimension-space-200);\n}\n\n.conversation-list-section {\n display: flex;\n flex-direction: column;\n gap: var(--dimension-space-050);\n}\n\nds-text.conversation-list-section__heading {\n display: block;\n padding: var(--dimension-space-050) var(--dimension-space-100);\n}\n\n.conversation-list-section__items {\n display: flex;\n flex-direction: column;\n gap: var(--dimension-space-025);\n}\n",
|
|
131
|
+
"type": "registry:ui"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"path": "src/wc/components/ConversationListSection/ConversationListSection.tsx",
|
|
135
|
+
"content": "import { Component, h, Host, Prop } from '@stencil/core';\n\nlet sectionId = 0;\n\n@Component({\n tag: 'ds-conversation-list-section',\n styleUrl: 'ConversationListSection.css',\n scoped: true,\n})\nexport class ConversationListSection {\n /** Visible section heading. */\n @Prop() heading: string = '';\n /** Optional stable id used for the section heading. */\n @Prop() sectionId: string = '';\n\n private readonly generatedId = `ds-conversation-section-${++sectionId}`;\n\n render() {\n const headingId = this.sectionId || this.generatedId;\n return (\n <Host>\n <section class=\"conversation-list-section\" aria-labelledby={headingId}>\n <ds-text\n class=\"conversation-list-section__heading\"\n textId={headingId}\n as=\"h3\"\n variant=\"text-caption\"\n emphasis\n color=\"secondary\"\n >\n {this.heading}\n </ds-text>\n <div class=\"conversation-list-section__items\" role=\"list\">\n <slot />\n </div>\n </section>\n </Host>\n );\n }\n}\n",
|
|
136
|
+
"type": "registry:ui"
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "conversation-list",
|
|
4
|
+
"title": "ConversationList",
|
|
5
|
+
"description": "Scrollable conversation-list region with dedicated empty and floating-action placement.",
|
|
6
|
+
"type": "registry:ui",
|
|
7
|
+
"meta": {
|
|
8
|
+
"library": "@ds-mo/ui",
|
|
9
|
+
"distribution": "npm",
|
|
10
|
+
"storybook": "https://zainadeel.github.io/compomo/?path=/story/conversation-list",
|
|
11
|
+
"source": "src/wc/components/ConversationList/ConversationList.tsx",
|
|
12
|
+
"intentStatus": "complete",
|
|
13
|
+
"intent": {
|
|
14
|
+
"audience": "general",
|
|
15
|
+
"status": "experimental",
|
|
16
|
+
"summary": "Scrollable conversation-list region with dedicated empty and floating-action placement.",
|
|
17
|
+
"useWhen": [
|
|
18
|
+
"A messaging-like surface needs a reusable history list with empty and action regions."
|
|
19
|
+
],
|
|
20
|
+
"avoidWhen": [
|
|
21
|
+
"The content is not a collection of conversations or threads."
|
|
22
|
+
],
|
|
23
|
+
"commonlyComposedWith": [
|
|
24
|
+
"component:ds-conversation-list-section",
|
|
25
|
+
"component:ds-conversation-list-item",
|
|
26
|
+
"component:ds-empty-state"
|
|
27
|
+
],
|
|
28
|
+
"patterns": [
|
|
29
|
+
"pattern:conversation"
|
|
30
|
+
],
|
|
31
|
+
"accessibility": [
|
|
32
|
+
"Provide an accessible list label through the surrounding heading or region.",
|
|
33
|
+
"Keep the empty message descriptive and the floating action explicitly named."
|
|
34
|
+
],
|
|
35
|
+
"responsiveBehavior": [
|
|
36
|
+
"The list fills its owner, scrolls independently, and keeps its action at the lower end corner."
|
|
37
|
+
],
|
|
38
|
+
"references": [
|
|
39
|
+
{
|
|
40
|
+
"label": "Storybook examples",
|
|
41
|
+
"path": "src/wc/components/ConversationList/ConversationList.stories.ts"
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"api": {
|
|
46
|
+
"props": {},
|
|
47
|
+
"events": [],
|
|
48
|
+
"methods": [],
|
|
49
|
+
"slots": []
|
|
50
|
+
},
|
|
51
|
+
"props": {},
|
|
52
|
+
"events": [],
|
|
53
|
+
"methods": [],
|
|
54
|
+
"slots": [],
|
|
55
|
+
"exports": {
|
|
56
|
+
"customElement": "ds-conversation-list",
|
|
57
|
+
"react": "DsConversationList",
|
|
58
|
+
"angular": "DsConversationList"
|
|
59
|
+
},
|
|
60
|
+
"consumption": {
|
|
61
|
+
"install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
|
|
62
|
+
"cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
|
|
63
|
+
"customElements": {
|
|
64
|
+
"import": "import '@ds-mo/ui/dist/components/ds-conversation-list.js';",
|
|
65
|
+
"example": "<ds-conversation-list></ds-conversation-list>"
|
|
66
|
+
},
|
|
67
|
+
"react": {
|
|
68
|
+
"import": "import { DsConversationList } from '@ds-mo/ui/react';",
|
|
69
|
+
"example": "<DsConversationList />"
|
|
70
|
+
},
|
|
71
|
+
"angular": {
|
|
72
|
+
"import": "import { DsConversationList } from '@ds-mo/ui/angular/ds-conversation-list';",
|
|
73
|
+
"example": "<ds-conversation-list></ds-conversation-list>"
|
|
74
|
+
},
|
|
75
|
+
"peerDependencies": {
|
|
76
|
+
"required": [
|
|
77
|
+
"@ds-mo/tokens ^3.1.1",
|
|
78
|
+
"@ds-mo/icons ^6.2.0"
|
|
79
|
+
],
|
|
80
|
+
"frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"dependencies": [
|
|
85
|
+
"@ds-mo/ui",
|
|
86
|
+
"@ds-mo/tokens"
|
|
87
|
+
],
|
|
88
|
+
"registryDependencies": [],
|
|
89
|
+
"files": [
|
|
90
|
+
{
|
|
91
|
+
"path": "src/wc/components/ConversationList/ConversationList.css",
|
|
92
|
+
"content": ":host {\n display: block;\n width: 100%;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n}\n\n.conversation-list {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n}\n\n.conversation-list__content {\n position: relative;\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n padding: var(--dimension-space-100);\n padding-bottom: calc(var(--dimension-size-600) + var(--dimension-size-100));\n box-sizing: border-box;\n}\n\n.conversation-list__empty {\n display: contents;\n}\n\n.conversation-list__actions {\n position: absolute;\n right: var(--dimension-space-100);\n bottom: var(--dimension-space-100);\n z-index: var(--dimension-z-index-floating);\n}\n\n.conversation-list__actions-surface {\n display: flex;\n border-radius: var(--dimension-radius-half);\n box-shadow: var(--effect-elevation-elevated-floating);\n}\n\n.conversation-list__actions-surface:empty {\n display: none;\n}\n",
|
|
93
|
+
"type": "registry:ui"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"path": "src/wc/components/ConversationList/ConversationList.tsx",
|
|
97
|
+
"content": "import { Component, h, Host } from '@stencil/core';\n\n@Component({\n tag: 'ds-conversation-list',\n styleUrl: 'ConversationList.css',\n scoped: true,\n})\nexport class ConversationList {\n render() {\n return (\n <Host>\n <div class=\"conversation-list\">\n <div class=\"conversation-list__content\">\n <slot />\n <div class=\"conversation-list__empty\">\n <slot name=\"empty\" />\n </div>\n </div>\n <div class=\"conversation-list__actions\">\n <div class=\"conversation-list__actions-surface\">\n <slot name=\"actions\" />\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n",
|
|
98
|
+
"type": "registry:ui"
|
|
99
|
+
}
|
|
100
|
+
]
|
|
101
|
+
}
|