@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,311 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
3
|
+
"name": "tooltip",
|
|
4
|
+
"title": "Tooltip",
|
|
5
|
+
"description": "Supplementary, non-interactive visual label for an already named action, shown on mouse or hover-capable pen and keyboard focus.",
|
|
6
|
+
"type": "registry:ui",
|
|
7
|
+
"meta": {
|
|
8
|
+
"library": "@ds-mo/ui",
|
|
9
|
+
"distribution": "npm",
|
|
10
|
+
"storybook": "https://zainadeel.github.io/compomo/?path=/story/tooltip",
|
|
11
|
+
"source": "src/wc/components/Tooltip/Tooltip.tsx",
|
|
12
|
+
"intentStatus": "complete",
|
|
13
|
+
"intent": {
|
|
14
|
+
"audience": "general",
|
|
15
|
+
"status": "stable",
|
|
16
|
+
"summary": "Supplementary, non-interactive visual label for an already named action, shown on mouse or hover-capable pen and keyboard focus.",
|
|
17
|
+
"useWhen": [
|
|
18
|
+
"An icon-only or dense control benefits from a short visual label for sighted mouse, pen, and keyboard users.",
|
|
19
|
+
"A non-essential keyboard shortcut should appear beside a concise visual label.",
|
|
20
|
+
"Adjacent chrome actions need delayed first disclosure with instant warm handoff between tooltips."
|
|
21
|
+
],
|
|
22
|
+
"avoidWhen": [
|
|
23
|
+
"The tooltip would be the trigger's only accessible name or contain information required to complete the task.",
|
|
24
|
+
"The popup needs links, buttons, rich content, a close action, click-to-open behavior, or touch access.",
|
|
25
|
+
"The callout follows a chart cursor or data point rather than a slotted control."
|
|
26
|
+
],
|
|
27
|
+
"alternatives": [
|
|
28
|
+
{
|
|
29
|
+
"when": "The popup contains a contextual list of actions or options.",
|
|
30
|
+
"component": "component:ds-menu",
|
|
31
|
+
"reason": "Menu provides interactive content, keyboard navigation, selection, and close behavior."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"when": "The content requires focus management, substantial explanation, confirmation, or a form.",
|
|
35
|
+
"component": "component:ds-modal",
|
|
36
|
+
"reason": "Modal provides dialog semantics and focus containment."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"when": "A chart needs a cursor- or data-point-positioned value callout.",
|
|
40
|
+
"component": "component:ds-tooltip-data-viz",
|
|
41
|
+
"reason": "TooltipDataViz accepts chart coordinates and is designed for data visualization hover feedback."
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"commonlyComposedWith": [
|
|
45
|
+
"component:ds-button-filled",
|
|
46
|
+
"component:ds-button-unfilled",
|
|
47
|
+
"component:ds-panel-nav",
|
|
48
|
+
"component:ds-panel-tools"
|
|
49
|
+
],
|
|
50
|
+
"accessibility": [
|
|
51
|
+
"The slotted trigger must have its own accessible name, usually an aria-label that closely matches the visual tooltip label.",
|
|
52
|
+
"Tooltip content is supplementary and non-essential; touch input intentionally does not open it.",
|
|
53
|
+
"While open, the trigger is linked to the role=tooltip popup with aria-describedby; the relationship is removed when the popup leaves the DOM without disturbing consumer description IDs.",
|
|
54
|
+
"Keyboard focus opens the tooltip and Escape dismisses it without moving focus."
|
|
55
|
+
],
|
|
56
|
+
"states": [
|
|
57
|
+
"The first hover or keyboard focus waits for delay; moving to another tooltip shortly after dismissal opens it immediately.",
|
|
58
|
+
"An empty or whitespace-only label suppresses the popup while preserving the wrapper.",
|
|
59
|
+
"Only one tooltip remains active globally; warm handoff removes the previous popup before showing the next.",
|
|
60
|
+
"The preferred side flips when it cannot fit, then alignment is clamped to viewport padding.",
|
|
61
|
+
"Reduced motion removes enter and exit fades while retaining the final visible or hidden state."
|
|
62
|
+
],
|
|
63
|
+
"responsiveBehavior": [
|
|
64
|
+
"The portaled popup follows trigger and popup resize, viewport resize, and nested scrolling while open.",
|
|
65
|
+
"Touch users rely on the trigger's accessible and visible context rather than tooltip disclosure.",
|
|
66
|
+
"Keep labels concise and non-wrapping; use inline text or a larger disclosure component for essential explanation."
|
|
67
|
+
],
|
|
68
|
+
"frameworkCaveats": {
|
|
69
|
+
"customElements": [
|
|
70
|
+
"Place exactly one trigger element as the component's light-DOM child.",
|
|
71
|
+
"Replacing the slotted trigger rebinds pointer and focus behavior automatically.",
|
|
72
|
+
"sideOffset, alignOffset, and delay accept numbers or TokoMo CSS values."
|
|
73
|
+
],
|
|
74
|
+
"react": [
|
|
75
|
+
"Wrap one focusable trigger with DsTooltip; keep the trigger's aria-label independent from the tooltip label."
|
|
76
|
+
],
|
|
77
|
+
"angular": [
|
|
78
|
+
"Wrap one focusable trigger with DsTooltip and use property binding when offset or delay values are not plain strings."
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
"references": [
|
|
82
|
+
{
|
|
83
|
+
"label": "Storybook behavior examples",
|
|
84
|
+
"path": "src/wc/components/Tooltip/Tooltip.stories.ts"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"label": "Cross-browser behavior and accessibility coverage",
|
|
88
|
+
"path": "tests/e2e/tooltip.spec.ts"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"label": "Positioning unit coverage",
|
|
92
|
+
"path": "tests/tooltip-position.test.ts"
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
"api": {
|
|
97
|
+
"props": {
|
|
98
|
+
"align": {
|
|
99
|
+
"type": "TooltipAlign",
|
|
100
|
+
"resolvedType": "\"center\" | \"end\" | \"start\"",
|
|
101
|
+
"attribute": "align",
|
|
102
|
+
"default": "'center'",
|
|
103
|
+
"required": false,
|
|
104
|
+
"mutable": false
|
|
105
|
+
},
|
|
106
|
+
"alignOffset": {
|
|
107
|
+
"type": "number | string",
|
|
108
|
+
"resolvedType": "number | string",
|
|
109
|
+
"attribute": "align-offset",
|
|
110
|
+
"default": "0",
|
|
111
|
+
"required": false,
|
|
112
|
+
"mutable": false,
|
|
113
|
+
"description": "Cross-axis offset — number (px) or TokoMo length."
|
|
114
|
+
},
|
|
115
|
+
"delay": {
|
|
116
|
+
"type": "number | string",
|
|
117
|
+
"resolvedType": "number | string",
|
|
118
|
+
"attribute": "delay",
|
|
119
|
+
"default": "TOKEN_DEFAULTS.animationDelayMedium3",
|
|
120
|
+
"required": false,
|
|
121
|
+
"mutable": false,
|
|
122
|
+
"description": "Hover show delay before the tooltip appears.\nDefault: `--effect-animation-delay-medium-3` (1000ms). Accepts a number (ms)\nor a TokoMo time token / `var(--effect-animation-delay-*)`. Applies to the\ninitial hover/focus show only — after a recent dismiss, reopen is instant.\nPrefer the default; override only for denser chrome or rare/destructive actions."
|
|
123
|
+
},
|
|
124
|
+
"label": {
|
|
125
|
+
"type": "string",
|
|
126
|
+
"resolvedType": "string",
|
|
127
|
+
"attribute": "label",
|
|
128
|
+
"required": true,
|
|
129
|
+
"mutable": false,
|
|
130
|
+
"description": "Tooltip text. Empty/whitespace skips show — useful when the wrapper must stay\nmounted for layout/animation stability (e.g. PanelNav expand/collapse)."
|
|
131
|
+
},
|
|
132
|
+
"shortcutKey": {
|
|
133
|
+
"type": "string | undefined",
|
|
134
|
+
"resolvedType": "string | undefined",
|
|
135
|
+
"attribute": "shortcut-key",
|
|
136
|
+
"required": false,
|
|
137
|
+
"mutable": false
|
|
138
|
+
},
|
|
139
|
+
"shortcutKeyPosition": {
|
|
140
|
+
"type": "'start' | 'end'",
|
|
141
|
+
"resolvedType": "\"end\" | \"start\"",
|
|
142
|
+
"attribute": "shortcut-key-position",
|
|
143
|
+
"default": "'end'",
|
|
144
|
+
"required": false,
|
|
145
|
+
"mutable": false
|
|
146
|
+
},
|
|
147
|
+
"side": {
|
|
148
|
+
"type": "TooltipSide",
|
|
149
|
+
"resolvedType": "\"bottom\" | \"left\" | \"right\" | \"top\"",
|
|
150
|
+
"attribute": "side",
|
|
151
|
+
"default": "'top'",
|
|
152
|
+
"required": false,
|
|
153
|
+
"mutable": false
|
|
154
|
+
},
|
|
155
|
+
"sideOffset": {
|
|
156
|
+
"type": "number | string",
|
|
157
|
+
"resolvedType": "number | string",
|
|
158
|
+
"attribute": "side-offset",
|
|
159
|
+
"default": "TOKEN_CSS_LENGTHS.space050",
|
|
160
|
+
"required": false,
|
|
161
|
+
"mutable": false,
|
|
162
|
+
"description": "Gap between anchor and tooltip — number (px) or TokoMo length."
|
|
163
|
+
},
|
|
164
|
+
"size": {
|
|
165
|
+
"type": "TooltipSize",
|
|
166
|
+
"resolvedType": "\"md\" | \"sm\" | \"xs\"",
|
|
167
|
+
"attribute": "size",
|
|
168
|
+
"default": "'md'",
|
|
169
|
+
"required": false,
|
|
170
|
+
"mutable": false,
|
|
171
|
+
"description": "Control density (height, padding, type)."
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
"events": [],
|
|
175
|
+
"methods": [],
|
|
176
|
+
"slots": []
|
|
177
|
+
},
|
|
178
|
+
"props": {
|
|
179
|
+
"align": {
|
|
180
|
+
"type": "TooltipAlign",
|
|
181
|
+
"resolvedType": "\"center\" | \"end\" | \"start\"",
|
|
182
|
+
"attribute": "align",
|
|
183
|
+
"default": "'center'",
|
|
184
|
+
"required": false,
|
|
185
|
+
"mutable": false
|
|
186
|
+
},
|
|
187
|
+
"alignOffset": {
|
|
188
|
+
"type": "number | string",
|
|
189
|
+
"resolvedType": "number | string",
|
|
190
|
+
"attribute": "align-offset",
|
|
191
|
+
"default": "0",
|
|
192
|
+
"required": false,
|
|
193
|
+
"mutable": false,
|
|
194
|
+
"description": "Cross-axis offset — number (px) or TokoMo length."
|
|
195
|
+
},
|
|
196
|
+
"delay": {
|
|
197
|
+
"type": "number | string",
|
|
198
|
+
"resolvedType": "number | string",
|
|
199
|
+
"attribute": "delay",
|
|
200
|
+
"default": "TOKEN_DEFAULTS.animationDelayMedium3",
|
|
201
|
+
"required": false,
|
|
202
|
+
"mutable": false,
|
|
203
|
+
"description": "Hover show delay before the tooltip appears.\nDefault: `--effect-animation-delay-medium-3` (1000ms). Accepts a number (ms)\nor a TokoMo time token / `var(--effect-animation-delay-*)`. Applies to the\ninitial hover/focus show only — after a recent dismiss, reopen is instant.\nPrefer the default; override only for denser chrome or rare/destructive actions."
|
|
204
|
+
},
|
|
205
|
+
"label": {
|
|
206
|
+
"type": "string",
|
|
207
|
+
"resolvedType": "string",
|
|
208
|
+
"attribute": "label",
|
|
209
|
+
"required": true,
|
|
210
|
+
"mutable": false,
|
|
211
|
+
"description": "Tooltip text. Empty/whitespace skips show — useful when the wrapper must stay\nmounted for layout/animation stability (e.g. PanelNav expand/collapse)."
|
|
212
|
+
},
|
|
213
|
+
"shortcutKey": {
|
|
214
|
+
"type": "string | undefined",
|
|
215
|
+
"resolvedType": "string | undefined",
|
|
216
|
+
"attribute": "shortcut-key",
|
|
217
|
+
"required": false,
|
|
218
|
+
"mutable": false
|
|
219
|
+
},
|
|
220
|
+
"shortcutKeyPosition": {
|
|
221
|
+
"type": "'start' | 'end'",
|
|
222
|
+
"resolvedType": "\"end\" | \"start\"",
|
|
223
|
+
"attribute": "shortcut-key-position",
|
|
224
|
+
"default": "'end'",
|
|
225
|
+
"required": false,
|
|
226
|
+
"mutable": false
|
|
227
|
+
},
|
|
228
|
+
"side": {
|
|
229
|
+
"type": "TooltipSide",
|
|
230
|
+
"resolvedType": "\"bottom\" | \"left\" | \"right\" | \"top\"",
|
|
231
|
+
"attribute": "side",
|
|
232
|
+
"default": "'top'",
|
|
233
|
+
"required": false,
|
|
234
|
+
"mutable": false
|
|
235
|
+
},
|
|
236
|
+
"sideOffset": {
|
|
237
|
+
"type": "number | string",
|
|
238
|
+
"resolvedType": "number | string",
|
|
239
|
+
"attribute": "side-offset",
|
|
240
|
+
"default": "TOKEN_CSS_LENGTHS.space050",
|
|
241
|
+
"required": false,
|
|
242
|
+
"mutable": false,
|
|
243
|
+
"description": "Gap between anchor and tooltip — number (px) or TokoMo length."
|
|
244
|
+
},
|
|
245
|
+
"size": {
|
|
246
|
+
"type": "TooltipSize",
|
|
247
|
+
"resolvedType": "\"md\" | \"sm\" | \"xs\"",
|
|
248
|
+
"attribute": "size",
|
|
249
|
+
"default": "'md'",
|
|
250
|
+
"required": false,
|
|
251
|
+
"mutable": false,
|
|
252
|
+
"description": "Control density (height, padding, type)."
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
"events": [],
|
|
256
|
+
"methods": [],
|
|
257
|
+
"slots": [],
|
|
258
|
+
"exports": {
|
|
259
|
+
"customElement": "ds-tooltip",
|
|
260
|
+
"react": "DsTooltip",
|
|
261
|
+
"angular": "DsTooltip"
|
|
262
|
+
},
|
|
263
|
+
"consumption": {
|
|
264
|
+
"install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
|
|
265
|
+
"cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
|
|
266
|
+
"customElements": {
|
|
267
|
+
"import": "import '@ds-mo/ui/dist/components/ds-tooltip.js';",
|
|
268
|
+
"example": "<ds-tooltip></ds-tooltip>"
|
|
269
|
+
},
|
|
270
|
+
"react": {
|
|
271
|
+
"import": "import { DsTooltip } from '@ds-mo/ui/react';",
|
|
272
|
+
"example": "<DsTooltip />"
|
|
273
|
+
},
|
|
274
|
+
"angular": {
|
|
275
|
+
"import": "import { DsTooltip } from '@ds-mo/ui/angular/ds-tooltip';",
|
|
276
|
+
"example": "<ds-tooltip></ds-tooltip>"
|
|
277
|
+
},
|
|
278
|
+
"peerDependencies": {
|
|
279
|
+
"required": [
|
|
280
|
+
"@ds-mo/tokens ^3.1.1",
|
|
281
|
+
"@ds-mo/icons ^6.2.0"
|
|
282
|
+
],
|
|
283
|
+
"frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
"dependencies": [
|
|
288
|
+
"@ds-mo/ui",
|
|
289
|
+
"@ds-mo/tokens"
|
|
290
|
+
],
|
|
291
|
+
"registryDependencies": [
|
|
292
|
+
"text"
|
|
293
|
+
],
|
|
294
|
+
"files": [
|
|
295
|
+
{
|
|
296
|
+
"path": "src/wc/components/Tooltip/Tooltip.css",
|
|
297
|
+
"content": "@import '../../utils/control-density.css';\n@import '../../utils/key-hint.css';\n\n.tooltip-popup {\n box-sizing: border-box;\n background-color: var(--color-background-primary);\n border-radius: var(--ds-control-radius, var(--dimension-radius-025));\n box-shadow: var(--effect-elevation-elevated-floating);\n white-space: nowrap;\n pointer-events: none;\n animation: tooltipFadeIn var(--effect-motion-short-2) forwards;\n will-change: transform;\n backface-visibility: hidden;\n}\n\n/* Warm handoff between nearby triggers — no enter fade (avoids 20–100ms lag). */\n.tooltip-popup--instant {\n animation: none;\n opacity: 1;\n}\n\n.tooltip-popup--closing {\n animation: tooltipFadeOut var(--effect-motion-short-3) forwards;\n}\n\n/* Density: md / sm / xs via `.ds-control--*` on `.tooltip-inner`. */\n.tooltip-inner {\n box-sizing: border-box;\n height: var(--ds-control-height, var(--dimension-size-400));\n display: flex;\n align-items: center;\n gap: var(--ds-control-gap, var(--dimension-space-050));\n padding: 0 var(--ds-control-padding-inline, var(--dimension-space-075));\n}\n\n/*\n * Label layout lives on ds-text (metric-box + control label-inset).\n * NOTE: Stencil scopes this to `ds-text.sc-ds-tooltip`, but portaled\n * createElement ds-text loses that class when Text's <Host class> renders.\n * `renderPopupContent` therefore also sets these as inline styles.\n */\n.tooltip-inner > ds-text {\n flex-shrink: 0;\n min-width: max-content;\n max-width: none;\n padding: 0 var(--ds-control-label-inset, var(--dimension-space-025));\n color: var(--color-foreground-primary);\n}\n\n@keyframes tooltipFadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n@keyframes tooltipFadeOut {\n from { opacity: 1; }\n to { opacity: 0; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .tooltip-popup,\n .tooltip-popup--instant {\n animation: none;\n opacity: 1;\n }\n\n .tooltip-popup--closing {\n animation: none;\n opacity: 0;\n }\n}\n",
|
|
298
|
+
"type": "registry:ui"
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"path": "src/wc/components/Tooltip/Tooltip.tsx",
|
|
302
|
+
"content": "import { Component, Prop, Element, Watch, h, Host } from '@stencil/core';\nimport {\n CONTROL_TEXT_VARIANT,\n resolveCssLengthPx,\n resolveCssTimeMs,\n resolveMotionTimeMs,\n TOKEN_CSS_LENGTHS,\n TOKEN_DEFAULTS,\n} from '../../utils';\nimport type { TextVariant } from '../Text/text-types';\nimport { shortcutKeyLabels } from '../../utils/shortcut-key';\nimport { computeTooltipPosition } from './tooltip-position';\n// Side-effect: register `ds-text` — the portal builds it via createElement, not JSX.\nimport '../Text/Text';\n\nexport type TooltipSide = 'top' | 'right' | 'bottom' | 'left';\nexport type TooltipAlign = 'start' | 'center' | 'end';\nexport type TooltipSize = 'md' | 'sm' | 'xs';\n\nconst FALLBACK_HEIGHT: Record<TooltipSize, string> = {\n md: TOKEN_DEFAULTS.size400,\n sm: TOKEN_DEFAULTS.size300,\n xs: TOKEN_DEFAULTS.size200,\n};\n\nlet lastDismissedAt = 0;\nlet tooltipIdCounter = 0;\n/** Currently open tooltip — force-cleared on warm handoff so tips don't cross-fade. */\nlet activeTooltip: Tooltip | null = null;\n\ntype DsTextEl = HTMLElement & {\n as: string;\n variant: TextVariant;\n emphasis: boolean;\n color: string;\n wrap: string;\n};\n\nfunction createDsText(opts: {\n variant: TextVariant;\n emphasis?: boolean;\n color?: string;\n wrap?: 'wrap' | 'nowrap' | 'balance' | 'pretty';\n text: string;\n}): DsTextEl {\n const el = document.createElement('ds-text') as DsTextEl;\n el.as = 'span';\n el.variant = opts.variant;\n el.emphasis = opts.emphasis ?? false;\n el.color = opts.color ?? 'inherit';\n if (opts.wrap) el.wrap = opts.wrap;\n el.textContent = opts.text;\n return el;\n}\n\n/**\n * Control-density label styles for portaled ds-text.\n * Scoped CSS requires `sc-ds-tooltip` on the host, but Text's `<Host class>`\n * overwrites imperative className — so these must be inline to stick.\n */\nfunction styleTooltipLabel(el: HTMLElement) {\n el.style.flexShrink = '0';\n el.style.minWidth = 'max-content';\n el.style.maxWidth = 'none';\n el.style.padding = '0 var(--ds-control-label-inset, var(--dimension-space-025))';\n el.style.color = 'var(--color-foreground-primary)';\n}\n\n/**\n * Imperative body portal for the popup.\n * Stencil must not own the portaled node — moving a VDOM child to `document.body`\n * causes recreate → re-portal → @State loops that freeze the page.\n */\n@Component({\n tag: 'ds-tooltip',\n styleUrl: 'Tooltip.css',\n scoped: true,\n})\nexport class Tooltip {\n @Element() el!: HTMLElement;\n\n /**\n * Tooltip text. Empty/whitespace skips show — useful when the wrapper must stay\n * mounted for layout/animation stability (e.g. PanelNav expand/collapse).\n */\n @Prop() label!: string;\n\n /** Control density (height, padding, type). */\n @Prop() size: TooltipSize = 'md';\n\n @Prop() side: TooltipSide = 'top';\n @Prop() align: TooltipAlign = 'center';\n /** Gap between anchor and tooltip — number (px) or TokoMo length. */\n @Prop() sideOffset: number | string = TOKEN_CSS_LENGTHS.space050;\n /** Cross-axis offset — number (px) or TokoMo length. */\n @Prop() alignOffset: number | string = 0;\n /**\n * Hover show delay before the tooltip appears.\n * Default: `--effect-animation-delay-medium-3` (1000ms). Accepts a number (ms)\n * or a TokoMo time token / `var(--effect-animation-delay-*)`. Applies to the\n * initial hover/focus show only — after a recent dismiss, reopen is instant.\n * Prefer the default; override only for denser chrome or rare/destructive actions.\n */\n @Prop() delay: number | string = TOKEN_DEFAULTS.animationDelayMedium3;\n @Prop() shortcutKey: string | undefined;\n @Prop() shortcutKeyPosition: 'start' | 'end' = 'end';\n\n private tooltipId = `ds-tooltip-${++tooltipIdCounter}`;\n private delayTimer: ReturnType<typeof setTimeout> | null = null;\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\n private anchor: HTMLElement | null = null;\n private popupEl: HTMLElement | null = null;\n private positionObserver: ResizeObserver | null = null;\n private anchorObserver: MutationObserver | null = null;\n private positionFrame: number | null = null;\n private skipEnterAnimation = false;\n private isOpen = false;\n private lastInteractionWasKeyboard = false;\n private pointerEnterHandler = (event: PointerEvent) => {\n if (event.pointerType === 'touch') return;\n this.show();\n };\n private pointerLeaveHandler = (event: PointerEvent) => {\n if (event.pointerType === 'touch') return;\n this.hide();\n };\n private pointerDownHandler = (event: PointerEvent) => {\n this.lastInteractionWasKeyboard = false;\n if (event.pointerType === 'touch' && (this.isOpen || this.popupEl)) this.hideInstant();\n };\n private keyDownHandler = () => {\n this.lastInteractionWasKeyboard = true;\n };\n /** focusin/focusout so nested focus targets (e.g. ds-button-* inner button) still open the tip. */\n private focusHandler = () => {\n if (this.lastInteractionWasKeyboard || this.anchor?.matches(':focus-visible')) this.show();\n };\n private blurHandler: (e: FocusEvent) => void = (e) => {\n const next = e.relatedTarget as Node | null;\n if (next && this.anchor?.contains(next)) return;\n this.hide();\n };\n private scrollResizeHandler = () => {\n if (this.positionFrame !== null) return;\n this.positionFrame = requestAnimationFrame(() => {\n this.positionFrame = null;\n this.calculatePosition();\n });\n };\n private escapeHandler = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || !this.isOpen) return;\n event.preventDefault();\n this.hide();\n };\n\n componentDidLoad() {\n this.bindAnchor();\n this.anchorObserver = new MutationObserver(() => this.handleSlotChange());\n this.anchorObserver.observe(this.el, { childList: true });\n }\n\n disconnectedCallback() {\n if (activeTooltip === this) activeTooltip = null;\n this.anchorObserver?.disconnect();\n this.anchorObserver = null;\n this.unbindAnchor();\n this.clearTimers();\n this.destroyPopup();\n }\n\n @Watch('label')\n @Watch('size')\n @Watch('side')\n @Watch('align')\n @Watch('sideOffset')\n @Watch('alignOffset')\n @Watch('shortcutKey')\n @Watch('shortcutKeyPosition')\n onContentOrPositionChange() {\n if (!this.label?.trim()) {\n if (this.isOpen || this.popupEl) this.hideInstant();\n return;\n }\n if (!this.popupEl || !this.isOpen) return;\n this.renderPopupContent();\n this.schedulePosition();\n }\n\n private get viewportPadPx(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n }\n\n private get sideOffsetPx(): number {\n return resolveCssLengthPx(this.sideOffset, TOKEN_DEFAULTS.space050);\n }\n\n private get alignOffsetPx(): number {\n return resolveCssLengthPx(this.alignOffset, 0);\n }\n\n private get hoverDelayMs(): number {\n return resolveCssTimeMs(this.delay, TOKEN_DEFAULTS.animationDelayMedium3);\n }\n\n private get instantReopenMs(): number {\n return resolveCssTimeMs(\n TOKEN_DEFAULTS.animationDurationMedium1,\n TOKEN_DEFAULTS.animationDurationMedium1,\n );\n }\n\n private get fadeOutMs(): number {\n return resolveMotionTimeMs(TOKEN_DEFAULTS.motionShort3, TOKEN_DEFAULTS.animationDurationShort3);\n }\n\n private get tooltipFallbackWidthPx(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.tooltipFallbackWidth, TOKEN_DEFAULTS.tooltipFallbackWidth);\n }\n\n private get tooltipFallbackHeightPx(): number {\n const token = FALLBACK_HEIGHT[this.size];\n return resolveCssLengthPx(token, token);\n }\n\n private bindAnchor() {\n const slot = this.el.querySelector('slot') as HTMLSlotElement | null;\n const slotted = slot?.assignedElements?.() ?? [];\n const child = (slotted[0] ?? this.el.firstElementChild) as HTMLElement | null;\n if (!child || child === this.anchor) return;\n this.anchor = child;\n child.addEventListener('pointerenter', this.pointerEnterHandler);\n child.addEventListener('pointerleave', this.pointerLeaveHandler);\n child.addEventListener('pointerdown', this.pointerDownHandler);\n child.addEventListener('keydown', this.keyDownHandler);\n child.addEventListener('focusin', this.focusHandler);\n child.addEventListener('focusout', this.blurHandler);\n }\n\n private unbindAnchor() {\n if (!this.anchor) return;\n this.unlinkDescribedBy();\n this.anchor.removeEventListener('pointerenter', this.pointerEnterHandler);\n this.anchor.removeEventListener('pointerleave', this.pointerLeaveHandler);\n this.anchor.removeEventListener('pointerdown', this.pointerDownHandler);\n this.anchor.removeEventListener('keydown', this.keyDownHandler);\n this.anchor.removeEventListener('focusin', this.focusHandler);\n this.anchor.removeEventListener('focusout', this.blurHandler);\n this.anchor = null;\n }\n\n private linkDescribedBy() {\n if (!this.anchor || !this.popupEl) return;\n const ids = new Set((this.anchor.getAttribute('aria-describedby') ?? '').split(/\\s+/).filter(Boolean));\n ids.add(this.tooltipId);\n this.anchor.setAttribute('aria-describedby', Array.from(ids).join(' '));\n }\n\n private unlinkDescribedBy() {\n if (!this.anchor) return;\n const ids = (this.anchor.getAttribute('aria-describedby') ?? '')\n .split(/\\s+/)\n .filter(id => id && id !== this.tooltipId);\n if (ids.length) this.anchor.setAttribute('aria-describedby', ids.join(' '));\n else this.anchor.removeAttribute('aria-describedby');\n }\n\n private handleSlotChange = () => {\n const slot = this.el.querySelector('slot') as HTMLSlotElement | null;\n const next = (slot?.assignedElements?.()[0] ?? this.el.firstElementChild) as HTMLElement | null;\n if (next === this.anchor) return;\n if (this.isOpen || this.popupEl) this.hideInstant();\n this.unbindAnchor();\n this.bindAnchor();\n };\n\n private clearTimers() {\n if (this.delayTimer) { clearTimeout(this.delayTimer); this.delayTimer = null; }\n if (this.closeTimer) { clearTimeout(this.closeTimer); this.closeTimer = null; }\n }\n\n private setupOpenListeners() {\n window.addEventListener('scroll', this.scrollResizeHandler, true);\n window.addEventListener('resize', this.scrollResizeHandler);\n document.addEventListener('keydown', this.escapeHandler);\n }\n\n private teardownOpenListeners() {\n window.removeEventListener('scroll', this.scrollResizeHandler, true);\n window.removeEventListener('resize', this.scrollResizeHandler);\n document.removeEventListener('keydown', this.escapeHandler);\n if (this.positionFrame !== null) {\n cancelAnimationFrame(this.positionFrame);\n this.positionFrame = null;\n }\n }\n\n private destroyPopup() {\n this.teardownOpenListeners();\n this.positionObserver?.disconnect();\n this.positionObserver = null;\n this.unlinkDescribedBy();\n if (!this.popupEl) return;\n this.popupEl.remove();\n this.popupEl = null;\n }\n\n /**\n * Position after `ds-text` upgrades and lays out. Measuring synchronously in\n * `mountPopup` reads a collapsed/fallback width and places left/right tips wrong.\n */\n private schedulePosition() {\n if (!this.popupEl) return;\n\n const reapplyLabelStyles = () => {\n const label = this.popupEl?.querySelector(':scope > .tooltip-inner > ds-text');\n if (label instanceof HTMLElement) styleTooltipLabel(label);\n };\n\n requestAnimationFrame(() => {\n reapplyLabelStyles();\n this.calculatePosition();\n requestAnimationFrame(() => {\n reapplyLabelStyles();\n this.calculatePosition();\n });\n });\n\n this.positionObserver?.disconnect();\n this.positionObserver = new ResizeObserver(() => this.calculatePosition());\n this.positionObserver.observe(this.popupEl);\n if (this.anchor) this.positionObserver.observe(this.anchor);\n }\n\n /** Drop the open tip immediately (warm handoff to another tooltip). */\n private hideInstant() {\n this.clearTimers();\n lastDismissedAt = Date.now();\n if (activeTooltip === this) activeTooltip = null;\n this.destroyPopup();\n this.isOpen = false;\n this.skipEnterAnimation = false;\n }\n\n private show() {\n // Empty label = wrapper present for DOM stability (e.g. PanelNav expand/collapse)\n // but no tip should appear.\n if (!this.label?.trim()) return;\n this.clearTimers();\n let instant = Date.now() - lastDismissedAt < this.instantReopenMs;\n if (activeTooltip && activeTooltip !== this) {\n activeTooltip.hideInstant();\n instant = true;\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- module singleton tracks the active instance\n activeTooltip = this;\n this.skipEnterAnimation = instant;\n if (instant) {\n this.mountPopup();\n return;\n }\n this.delayTimer = setTimeout(() => {\n this.delayTimer = null;\n if (!this.label?.trim()) return;\n this.mountPopup();\n }, this.hoverDelayMs);\n }\n\n private hide() {\n this.clearTimers();\n if (!this.popupEl && !this.isOpen) return;\n lastDismissedAt = Date.now();\n if (!this.popupEl) {\n this.isOpen = false;\n return;\n }\n this.popupEl.classList.remove('tooltip-popup--instant');\n this.popupEl.classList.add('tooltip-popup--closing');\n if (this.fadeOutMs === 0) {\n if (activeTooltip === this) activeTooltip = null;\n this.destroyPopup();\n this.isOpen = false;\n this.skipEnterAnimation = false;\n return;\n }\n this.closeTimer = setTimeout(() => {\n this.closeTimer = null;\n if (activeTooltip === this) activeTooltip = null;\n this.destroyPopup();\n this.isOpen = false;\n this.skipEnterAnimation = false;\n }, this.fadeOutMs);\n }\n\n private mountPopup() {\n if (!this.popupEl) {\n const tip = document.createElement('div');\n tip.id = this.tooltipId;\n tip.setAttribute('role', 'tooltip');\n // `sc-ds-tooltip` is required for Stencil scoped CSS to match outside the host.\n tip.className = 'tooltip-popup sc-ds-tooltip';\n Object.assign(tip.style, {\n position: 'fixed',\n left: '0',\n top: '0',\n zIndex: 'var(--dimension-z-index-tooltip)',\n pointerEvents: 'none',\n });\n document.body.appendChild(tip);\n this.popupEl = tip;\n }\n\n this.setupOpenListeners();\n this.linkDescribedBy();\n this.popupEl.classList.toggle('tooltip-popup--instant', this.skipEnterAnimation);\n this.popupEl.classList.remove('tooltip-popup--closing');\n this.renderPopupContent();\n this.schedulePosition();\n this.isOpen = true;\n }\n\n private renderPopupContent() {\n if (!this.popupEl) return;\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const density =\n this.size === 'md' ? 'ds-control--md' : this.size === 'sm' ? 'ds-control--sm' : 'ds-control--xs';\n // Every layout node needs `sc-ds-tooltip` so scoped selectors (`.foo.sc-ds-tooltip`) match.\n const sc = 'sc-ds-tooltip';\n\n const inner = document.createElement('div');\n inner.className = `tooltip-inner ${density} ${sc}`;\n\n const appendShortcut = (position: 'start' | 'end') => {\n if (!this.shortcutKey || this.shortcutKeyPosition !== position) return;\n const group = document.createElement('span');\n group.className = `key-hint-group ${sc}`;\n group.setAttribute('aria-hidden', 'true');\n\n for (const label of shortcutKeyLabels(this.shortcutKey)) {\n const hint = document.createElement('span');\n const wide = Array.from(label).length > 1 ? ' key-hint--wide' : '';\n hint.className = `key-hint${wide} ${sc}`;\n const text = document.createElement('span');\n text.className = `key-hint__label ${sc}`;\n text.textContent = label;\n hint.appendChild(text);\n group.appendChild(hint);\n }\n inner.appendChild(group);\n };\n\n appendShortcut('start');\n\n // ds-text is the layout box (metric-box + 2px control label-inset).\n // Inline styles required — see styleTooltipLabel.\n const label = createDsText({ variant: textVariant, wrap: 'nowrap', text: this.label });\n styleTooltipLabel(label);\n inner.appendChild(label);\n\n appendShortcut('end');\n\n this.popupEl.replaceChildren(inner);\n }\n\n private calculatePosition() {\n if (!this.anchor || !this.popupEl) return;\n const tip = this.popupEl;\n const a = this.anchor.getBoundingClientRect();\n const tw = tip.offsetWidth || this.tooltipFallbackWidthPx;\n const th = tip.offsetHeight || this.tooltipFallbackHeightPx;\n const { x, y, resolvedSide } = computeTooltipPosition({\n anchorRect: a,\n popupWidth: tw,\n popupHeight: th,\n side: this.side,\n align: this.align,\n sideOffsetPx: this.sideOffsetPx,\n alignOffsetPx: this.alignOffsetPx,\n viewportPadPx: this.viewportPadPx,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n });\n tip.dataset.side = resolvedSide;\n tip.style.transform = `translate(${Math.round(x)}px, ${Math.round(y)}px)`;\n }\n\n render() {\n return (\n <Host style={{ display: 'contents' }}>\n <slot onSlotchange={this.handleSlotChange} />\n </Host>\n );\n }\n}\n",
|
|
303
|
+
"type": "registry:ui"
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"path": "src/wc/components/Tooltip/tooltip-position.ts",
|
|
307
|
+
"content": "import type { TooltipAlign, TooltipSide } from './Tooltip';\n\nexport interface TooltipPositionInput {\n anchorRect: Pick<DOMRectReadOnly, 'top' | 'left' | 'right' | 'bottom' | 'width' | 'height'>;\n popupWidth: number;\n popupHeight: number;\n side: TooltipSide;\n align: TooltipAlign;\n sideOffsetPx: number;\n alignOffsetPx: number;\n viewportPadPx: number;\n viewportWidth: number;\n viewportHeight: number;\n}\n\nexport interface TooltipPosition {\n x: number;\n y: number;\n resolvedSide: TooltipSide;\n}\n\nconst OPPOSITE_SIDE: Record<TooltipSide, TooltipSide> = {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n};\n\nfunction rawPosition(\n input: TooltipPositionInput,\n side: TooltipSide,\n): Pick<TooltipPosition, 'x' | 'y'> {\n const {\n anchorRect: anchor,\n popupWidth,\n popupHeight,\n align,\n sideOffsetPx,\n alignOffsetPx,\n } = input;\n\n if (side === 'top' || side === 'bottom') {\n return {\n x:\n align === 'start'\n ? anchor.left + alignOffsetPx\n : align === 'end'\n ? anchor.right - popupWidth + alignOffsetPx\n : anchor.left + anchor.width / 2 - popupWidth / 2 + alignOffsetPx,\n y: side === 'top'\n ? anchor.top - popupHeight - sideOffsetPx\n : anchor.bottom + sideOffsetPx,\n };\n }\n\n return {\n x: side === 'left'\n ? anchor.left - popupWidth - sideOffsetPx\n : anchor.right + sideOffsetPx,\n y:\n align === 'start'\n ? anchor.top + alignOffsetPx\n : align === 'end'\n ? anchor.bottom - popupHeight + alignOffsetPx\n : anchor.top + anchor.height / 2 - popupHeight / 2 + alignOffsetPx,\n };\n}\n\nfunction mainAxisOverflow(\n input: TooltipPositionInput,\n side: TooltipSide,\n position: Pick<TooltipPosition, 'x' | 'y'>,\n): number {\n const {\n popupWidth,\n popupHeight,\n viewportPadPx,\n viewportWidth,\n viewportHeight,\n } = input;\n\n if (side === 'top' || side === 'bottom') {\n return Math.max(viewportPadPx - position.y, 0) +\n Math.max(position.y + popupHeight - (viewportHeight - viewportPadPx), 0);\n }\n\n return Math.max(viewportPadPx - position.x, 0) +\n Math.max(position.x + popupWidth - (viewportWidth - viewportPadPx), 0);\n}\n\n/** Flip on the preferred axis when needed, then clamp within the viewport. */\nexport function computeTooltipPosition(input: TooltipPositionInput): TooltipPosition {\n const preferred = rawPosition(input, input.side);\n const oppositeSide = OPPOSITE_SIDE[input.side];\n const opposite = rawPosition(input, oppositeSide);\n const preferredOverflow = mainAxisOverflow(input, input.side, preferred);\n const oppositeOverflow = mainAxisOverflow(input, oppositeSide, opposite);\n const useOpposite = preferredOverflow > 0 && oppositeOverflow < preferredOverflow;\n const resolvedSide = useOpposite ? oppositeSide : input.side;\n const position = useOpposite ? opposite : preferred;\n const maxX = Math.max(input.viewportPadPx, input.viewportWidth - input.popupWidth - input.viewportPadPx);\n const maxY = Math.max(input.viewportPadPx, input.viewportHeight - input.popupHeight - input.viewportPadPx);\n\n return {\n x: Math.min(Math.max(position.x, input.viewportPadPx), maxX),\n y: Math.min(Math.max(position.y, input.viewportPadPx), maxY),\n resolvedSide,\n };\n}\n",
|
|
308
|
+
"type": "registry:ui"
|
|
309
|
+
}
|
|
310
|
+
]
|
|
311
|
+
}
|
|
@@ -2,7 +2,13 @@
|
|
|
2
2
|
* This file was automatically generated by the Stencil React Output Target.
|
|
3
3
|
* Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
|
|
4
4
|
*/
|
|
5
|
+
export { DsAgentActivity } from "./ds-agent-activity.js";
|
|
6
|
+
export { DsAgentResponse } from "./ds-agent-response.js";
|
|
7
|
+
export { DsAgentSourceList } from "./ds-agent-source-list.js";
|
|
8
|
+
export { DsAgentToolCall } from "./ds-agent-tool-call.js";
|
|
5
9
|
export { DsAppShell } from "./ds-app-shell.js";
|
|
10
|
+
export { DsAttachmentList } from "./ds-attachment-list.js";
|
|
11
|
+
export { DsAvatar } from "./ds-avatar.js";
|
|
6
12
|
export { DsBadge } from "./ds-badge.js";
|
|
7
13
|
export { DsBanner } from "./ds-banner.js";
|
|
8
14
|
export { DsBarNav } from "./ds-bar-nav.js";
|
|
@@ -18,16 +24,27 @@ export { DsChartLegend } from "./ds-chart-legend.js";
|
|
|
18
24
|
export { DsChartLine } from "./ds-chart-line.js";
|
|
19
25
|
export { DsCheckbox } from "./ds-checkbox.js";
|
|
20
26
|
export { DsChip } from "./ds-chip.js";
|
|
27
|
+
export { DsCodeBlock } from "./ds-code-block.js";
|
|
28
|
+
export { DsConversationListItem } from "./ds-conversation-list-item.js";
|
|
29
|
+
export { DsConversationListSection } from "./ds-conversation-list-section.js";
|
|
30
|
+
export { DsConversationList } from "./ds-conversation-list.js";
|
|
21
31
|
export { DsDivider } from "./ds-divider.js";
|
|
22
32
|
export { DsEmptyState } from "./ds-empty-state.js";
|
|
23
33
|
export { DsField } from "./ds-field.js";
|
|
24
34
|
export { DsIcon } from "./ds-icon.js";
|
|
25
35
|
export { DsInput } from "./ds-input.js";
|
|
26
36
|
export { DsLoader } from "./ds-loader.js";
|
|
37
|
+
export { DsMarkdown } from "./ds-markdown.js";
|
|
27
38
|
export { DsMenu } from "./ds-menu.js";
|
|
39
|
+
export { DsMessageBubble } from "./ds-message-bubble.js";
|
|
40
|
+
export { DsMessageComposer } from "./ds-message-composer.js";
|
|
41
|
+
export { DsMessageScroller } from "./ds-message-scroller.js";
|
|
42
|
+
export { DsMessage } from "./ds-message.js";
|
|
28
43
|
export { DsModal } from "./ds-modal.js";
|
|
29
44
|
export { DsPanelNav } from "./ds-panel-nav.js";
|
|
30
45
|
export { DsPanelSubNav } from "./ds-panel-sub-nav.js";
|
|
46
|
+
export { DsPanelToolHeader } from "./ds-panel-tool-header.js";
|
|
47
|
+
export { DsPanelToolSearch } from "./ds-panel-tool-search.js";
|
|
31
48
|
export { DsPanelTools } from "./ds-panel-tools.js";
|
|
32
49
|
export { DsRadio } from "./ds-radio.js";
|
|
33
50
|
export { DsSelectMulti } from "./ds-select-multi.js";
|
|
@@ -36,6 +53,7 @@ export { DsShellGradientPicker } from "./ds-shell-gradient-picker.js";
|
|
|
36
53
|
export { DsShellGradientSwatch } from "./ds-shell-gradient-swatch.js";
|
|
37
54
|
export { DsSkeleton } from "./ds-skeleton.js";
|
|
38
55
|
export { DsSlider } from "./ds-slider.js";
|
|
56
|
+
export { DsSwatchPicker } from "./ds-swatch-picker.js";
|
|
39
57
|
export { DsSwitch } from "./ds-switch.js";
|
|
40
58
|
export { DsTabGroup } from "./ds-tab-group.js";
|
|
41
59
|
export { DsTag } from "./ds-tag.js";
|
package/dist/react/components.js
CHANGED
|
@@ -3,7 +3,13 @@
|
|
|
3
3
|
* Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
|
|
4
4
|
*/
|
|
5
5
|
/* eslint-disable */
|
|
6
|
+
export { DsAgentActivity } from "./ds-agent-activity.js";
|
|
7
|
+
export { DsAgentResponse } from "./ds-agent-response.js";
|
|
8
|
+
export { DsAgentSourceList } from "./ds-agent-source-list.js";
|
|
9
|
+
export { DsAgentToolCall } from "./ds-agent-tool-call.js";
|
|
6
10
|
export { DsAppShell } from "./ds-app-shell.js";
|
|
11
|
+
export { DsAttachmentList } from "./ds-attachment-list.js";
|
|
12
|
+
export { DsAvatar } from "./ds-avatar.js";
|
|
7
13
|
export { DsBadge } from "./ds-badge.js";
|
|
8
14
|
export { DsBanner } from "./ds-banner.js";
|
|
9
15
|
export { DsBarNav } from "./ds-bar-nav.js";
|
|
@@ -19,16 +25,27 @@ export { DsChartLegend } from "./ds-chart-legend.js";
|
|
|
19
25
|
export { DsChartLine } from "./ds-chart-line.js";
|
|
20
26
|
export { DsCheckbox } from "./ds-checkbox.js";
|
|
21
27
|
export { DsChip } from "./ds-chip.js";
|
|
28
|
+
export { DsCodeBlock } from "./ds-code-block.js";
|
|
29
|
+
export { DsConversationListItem } from "./ds-conversation-list-item.js";
|
|
30
|
+
export { DsConversationListSection } from "./ds-conversation-list-section.js";
|
|
31
|
+
export { DsConversationList } from "./ds-conversation-list.js";
|
|
22
32
|
export { DsDivider } from "./ds-divider.js";
|
|
23
33
|
export { DsEmptyState } from "./ds-empty-state.js";
|
|
24
34
|
export { DsField } from "./ds-field.js";
|
|
25
35
|
export { DsIcon } from "./ds-icon.js";
|
|
26
36
|
export { DsInput } from "./ds-input.js";
|
|
27
37
|
export { DsLoader } from "./ds-loader.js";
|
|
38
|
+
export { DsMarkdown } from "./ds-markdown.js";
|
|
28
39
|
export { DsMenu } from "./ds-menu.js";
|
|
40
|
+
export { DsMessageBubble } from "./ds-message-bubble.js";
|
|
41
|
+
export { DsMessageComposer } from "./ds-message-composer.js";
|
|
42
|
+
export { DsMessageScroller } from "./ds-message-scroller.js";
|
|
43
|
+
export { DsMessage } from "./ds-message.js";
|
|
29
44
|
export { DsModal } from "./ds-modal.js";
|
|
30
45
|
export { DsPanelNav } from "./ds-panel-nav.js";
|
|
31
46
|
export { DsPanelSubNav } from "./ds-panel-sub-nav.js";
|
|
47
|
+
export { DsPanelToolHeader } from "./ds-panel-tool-header.js";
|
|
48
|
+
export { DsPanelToolSearch } from "./ds-panel-tool-search.js";
|
|
32
49
|
export { DsPanelTools } from "./ds-panel-tools.js";
|
|
33
50
|
export { DsRadio } from "./ds-radio.js";
|
|
34
51
|
export { DsSelectMulti } from "./ds-select-multi.js";
|
|
@@ -37,6 +54,7 @@ export { DsShellGradientPicker } from "./ds-shell-gradient-picker.js";
|
|
|
37
54
|
export { DsShellGradientSwatch } from "./ds-shell-gradient-swatch.js";
|
|
38
55
|
export { DsSkeleton } from "./ds-skeleton.js";
|
|
39
56
|
export { DsSlider } from "./ds-slider.js";
|
|
57
|
+
export { DsSwatchPicker } from "./ds-swatch-picker.js";
|
|
40
58
|
export { DsSwitch } from "./ds-switch.js";
|
|
41
59
|
export { DsTabGroup } from "./ds-tab-group.js";
|
|
42
60
|
export { DsTag } from "./ds-tag.js";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was automatically generated by the Stencil React Output Target.
|
|
3
|
+
* Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
|
|
4
|
+
*/
|
|
5
|
+
import type { StencilReactComponent } from '@stencil/react-output-target/runtime';
|
|
6
|
+
import type { Components } from "@ds-mo/ui/dist/components";
|
|
7
|
+
import { DsAgentActivity as DsAgentActivityElement } from "@ds-mo/ui/dist/components/ds-agent-activity.js";
|
|
8
|
+
export type DsAgentActivityEvents = NonNullable<unknown>;
|
|
9
|
+
export declare const DsAgentActivity: StencilReactComponent<DsAgentActivityElement, DsAgentActivityEvents, Components.DsAgentActivity>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createComponent } from '@stencil/react-output-target/runtime';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { DsAgentActivity as DsAgentActivityElement, defineCustomElement as defineDsAgentActivity } from "@ds-mo/ui/dist/components/ds-agent-activity.js";
|
|
5
|
+
export const DsAgentActivity = /*@__PURE__*/ createComponent({
|
|
6
|
+
tagName: 'ds-agent-activity',
|
|
7
|
+
elementClass: DsAgentActivityElement,
|
|
8
|
+
// @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
|
|
9
|
+
react: React,
|
|
10
|
+
events: {},
|
|
11
|
+
defineCustomElement: defineDsAgentActivity
|
|
12
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was automatically generated by the Stencil React Output Target.
|
|
3
|
+
* Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
|
|
4
|
+
*/
|
|
5
|
+
import type { StencilReactComponent } from '@stencil/react-output-target/runtime';
|
|
6
|
+
import type { Components } from "@ds-mo/ui/dist/components";
|
|
7
|
+
import { DsAgentResponse as DsAgentResponseElement } from "@ds-mo/ui/dist/components/ds-agent-response.js";
|
|
8
|
+
export type DsAgentResponseEvents = NonNullable<unknown>;
|
|
9
|
+
export declare const DsAgentResponse: StencilReactComponent<DsAgentResponseElement, DsAgentResponseEvents, Components.DsAgentResponse>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createComponent } from '@stencil/react-output-target/runtime';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { DsAgentResponse as DsAgentResponseElement, defineCustomElement as defineDsAgentResponse } from "@ds-mo/ui/dist/components/ds-agent-response.js";
|
|
5
|
+
export const DsAgentResponse = /*@__PURE__*/ createComponent({
|
|
6
|
+
tagName: 'ds-agent-response',
|
|
7
|
+
elementClass: DsAgentResponseElement,
|
|
8
|
+
// @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
|
|
9
|
+
react: React,
|
|
10
|
+
events: {},
|
|
11
|
+
defineCustomElement: defineDsAgentResponse
|
|
12
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was automatically generated by the Stencil React Output Target.
|
|
3
|
+
* Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
|
|
4
|
+
*/
|
|
5
|
+
import type { StencilReactComponent } from '@stencil/react-output-target/runtime';
|
|
6
|
+
import type { Components } from "@ds-mo/ui/dist/components";
|
|
7
|
+
import { DsAgentSourceList as DsAgentSourceListElement } from "@ds-mo/ui/dist/components/ds-agent-source-list.js";
|
|
8
|
+
export type DsAgentSourceListEvents = NonNullable<unknown>;
|
|
9
|
+
export declare const DsAgentSourceList: StencilReactComponent<DsAgentSourceListElement, DsAgentSourceListEvents, Components.DsAgentSourceList>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createComponent } from '@stencil/react-output-target/runtime';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { DsAgentSourceList as DsAgentSourceListElement, defineCustomElement as defineDsAgentSourceList } from "@ds-mo/ui/dist/components/ds-agent-source-list.js";
|
|
5
|
+
export const DsAgentSourceList = /*@__PURE__*/ createComponent({
|
|
6
|
+
tagName: 'ds-agent-source-list',
|
|
7
|
+
elementClass: DsAgentSourceListElement,
|
|
8
|
+
// @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
|
|
9
|
+
react: React,
|
|
10
|
+
events: {},
|
|
11
|
+
defineCustomElement: defineDsAgentSourceList
|
|
12
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was automatically generated by the Stencil React Output Target.
|
|
3
|
+
* Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
|
|
4
|
+
*/
|
|
5
|
+
import type { StencilReactComponent } from '@stencil/react-output-target/runtime';
|
|
6
|
+
import type { Components } from "@ds-mo/ui/dist/components";
|
|
7
|
+
import { DsAgentToolCall as DsAgentToolCallElement } from "@ds-mo/ui/dist/components/ds-agent-tool-call.js";
|
|
8
|
+
export type DsAgentToolCallEvents = NonNullable<unknown>;
|
|
9
|
+
export declare const DsAgentToolCall: StencilReactComponent<DsAgentToolCallElement, DsAgentToolCallEvents, Components.DsAgentToolCall>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createComponent } from '@stencil/react-output-target/runtime';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { DsAgentToolCall as DsAgentToolCallElement, defineCustomElement as defineDsAgentToolCall } from "@ds-mo/ui/dist/components/ds-agent-tool-call.js";
|
|
5
|
+
export const DsAgentToolCall = /*@__PURE__*/ createComponent({
|
|
6
|
+
tagName: 'ds-agent-tool-call',
|
|
7
|
+
elementClass: DsAgentToolCallElement,
|
|
8
|
+
// @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
|
|
9
|
+
react: React,
|
|
10
|
+
events: {},
|
|
11
|
+
defineCustomElement: defineDsAgentToolCall
|
|
12
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was automatically generated by the Stencil React Output Target.
|
|
3
|
+
* Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
|
|
4
|
+
*/
|
|
5
|
+
import type { StencilReactComponent } from '@stencil/react-output-target/runtime';
|
|
6
|
+
import type { Components } from "@ds-mo/ui/dist/components";
|
|
7
|
+
import { DsAttachmentList as DsAttachmentListElement } from "@ds-mo/ui/dist/components/ds-attachment-list.js";
|
|
8
|
+
export type DsAttachmentListEvents = NonNullable<unknown>;
|
|
9
|
+
export declare const DsAttachmentList: StencilReactComponent<DsAttachmentListElement, DsAttachmentListEvents, Components.DsAttachmentList>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createComponent } from '@stencil/react-output-target/runtime';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { DsAttachmentList as DsAttachmentListElement, defineCustomElement as defineDsAttachmentList } from "@ds-mo/ui/dist/components/ds-attachment-list.js";
|
|
5
|
+
export const DsAttachmentList = /*@__PURE__*/ createComponent({
|
|
6
|
+
tagName: 'ds-attachment-list',
|
|
7
|
+
elementClass: DsAttachmentListElement,
|
|
8
|
+
// @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
|
|
9
|
+
react: React,
|
|
10
|
+
events: {},
|
|
11
|
+
defineCustomElement: defineDsAttachmentList
|
|
12
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was automatically generated by the Stencil React Output Target.
|
|
3
|
+
* Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
|
|
4
|
+
*/
|
|
5
|
+
import type { StencilReactComponent } from '@stencil/react-output-target/runtime';
|
|
6
|
+
import type { Components } from "@ds-mo/ui/dist/components";
|
|
7
|
+
import { DsAvatar as DsAvatarElement } from "@ds-mo/ui/dist/components/ds-avatar.js";
|
|
8
|
+
export type DsAvatarEvents = NonNullable<unknown>;
|
|
9
|
+
export declare const DsAvatar: StencilReactComponent<DsAvatarElement, DsAvatarEvents, Components.DsAvatar>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createComponent } from '@stencil/react-output-target/runtime';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { DsAvatar as DsAvatarElement, defineCustomElement as defineDsAvatar } from "@ds-mo/ui/dist/components/ds-avatar.js";
|
|
5
|
+
export const DsAvatar = /*@__PURE__*/ createComponent({
|
|
6
|
+
tagName: 'ds-avatar',
|
|
7
|
+
elementClass: DsAvatarElement,
|
|
8
|
+
// @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
|
|
9
|
+
react: React,
|
|
10
|
+
events: {},
|
|
11
|
+
defineCustomElement: defineDsAvatar
|
|
12
|
+
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was automatically generated by the Stencil React Output Target.
|
|
3
|
+
* Changes to this file may cause incorrect behavior and will be lost if the code is regenerated.
|
|
4
|
+
*/
|
|
5
|
+
import type { StencilReactComponent } from '@stencil/react-output-target/runtime';
|
|
6
|
+
import type { Components } from "@ds-mo/ui/dist/components";
|
|
7
|
+
import { DsCodeBlock as DsCodeBlockElement } from "@ds-mo/ui/dist/components/ds-code-block.js";
|
|
8
|
+
export type DsCodeBlockEvents = NonNullable<unknown>;
|
|
9
|
+
export declare const DsCodeBlock: StencilReactComponent<DsCodeBlockElement, DsCodeBlockEvents, Components.DsCodeBlock>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { createComponent } from '@stencil/react-output-target/runtime';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { DsCodeBlock as DsCodeBlockElement, defineCustomElement as defineDsCodeBlock } from "@ds-mo/ui/dist/components/ds-code-block.js";
|
|
5
|
+
export const DsCodeBlock = /*@__PURE__*/ createComponent({
|
|
6
|
+
tagName: 'ds-code-block',
|
|
7
|
+
elementClass: DsCodeBlockElement,
|
|
8
|
+
// @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project.
|
|
9
|
+
react: React,
|
|
10
|
+
events: {},
|
|
11
|
+
defineCustomElement: defineDsCodeBlock
|
|
12
|
+
});
|