@ds-mo/ui 10.0.0 → 11.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.build-stamp +1 -1
- package/dist/agent-patterns.json +15 -9
- package/dist/agent.json +523 -36
- package/dist/angular/ds-button-filled.d.ts +1 -1
- package/dist/angular/ds-button-filled.js +3 -3
- package/dist/angular/ds-chart-donut.d.ts +1 -1
- package/dist/angular/ds-chart-donut.js +3 -3
- package/dist/angular/ds-typing-indicator.d.ts +12 -0
- package/dist/angular/ds-typing-indicator.js +38 -0
- package/dist/angular/index.d.ts +1 -1
- package/dist/angular/index.js +2 -1
- package/dist/angular/proxies.d.ts +1 -0
- package/dist/angular/proxies.js +1 -0
- package/dist/components/ds-agent-response.js +1 -1
- package/dist/components/ds-agent-response.js.map +1 -1
- package/dist/components/ds-agent-tool-call.js +1 -1
- package/dist/components/ds-app-shell.js +1 -1
- package/dist/components/ds-attachment-list.js +1 -1
- package/dist/components/ds-avatar.js +1 -1
- package/dist/components/ds-avatar.js.map +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-data-viz-donut.js.map +1 -1
- package/dist/components/ds-card-setting.js +1 -1
- package/dist/components/ds-chart-bar.js +1 -1
- package/dist/components/ds-chart-donut.js +1 -1
- package/dist/components/ds-chart-donut.js.map +1 -1
- package/dist/components/ds-chart-legend.js +1 -1
- package/dist/components/ds-chart-legend.js.map +1 -1
- package/dist/components/ds-checkbox.js +1 -1
- package/dist/components/ds-chip.js +1 -1
- package/dist/components/ds-chip.js.map +1 -1
- package/dist/components/ds-code-block.js +1 -1
- package/dist/components/ds-conversation-list-item.js +1 -1
- package/dist/components/ds-conversation-list-item.js.map +1 -1
- package/dist/components/ds-input.js +1 -1
- package/dist/components/ds-input.js.map +1 -1
- package/dist/components/ds-markdown.js +1 -1
- package/dist/components/ds-menu.js +1 -1
- package/dist/components/ds-message-bubble.js +1 -1
- package/dist/components/ds-message-bubble.js.map +1 -1
- package/dist/components/ds-message-composer.js +1 -1
- package/dist/components/ds-message-composer.js.map +1 -1
- package/dist/components/ds-message-scroller.js +1 -1
- package/dist/components/ds-modal.js +1 -1
- package/dist/components/ds-modal.js.map +1 -1
- package/dist/components/ds-panel-nav.js +1 -1
- package/dist/components/ds-panel-nav.js.map +1 -1
- package/dist/components/ds-panel-sub-nav.js +1 -1
- package/dist/components/ds-panel-sub-nav.js.map +1 -1
- package/dist/components/ds-panel-tool-header.js +1 -1
- package/dist/components/ds-panel-tool-search.js +1 -1
- package/dist/components/ds-panel-tool-search.js.map +1 -1
- 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-radio.js.map +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-skeleton.js +1 -1
- package/dist/components/ds-skeleton.js.map +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-tag.js.map +1 -1
- package/dist/components/ds-toast.js +1 -1
- package/dist/components/ds-toast.js.map +1 -1
- package/dist/components/ds-tooltip-data-viz.js +1 -1
- package/dist/components/ds-tooltip-data-viz.js.map +1 -1
- package/dist/components/ds-tooltip.js +1 -1
- package/dist/components/ds-typing-indicator.d.ts +11 -0
- package/dist/components/ds-typing-indicator.js +2 -0
- package/dist/components/ds-typing-indicator.js.map +1 -0
- package/dist/components/p-BCCt2eT_.js +2 -0
- package/dist/components/{p-DM-95BX1.js.map → p-BCCt2eT_.js.map} +1 -1
- package/dist/components/{p-CxyjoTN1.js → p-BEWtqFX7.js} +2 -2
- package/dist/components/{p-DZAtgSZo.js → p-B_qVPsEU.js} +2 -2
- package/dist/components/p-BaZRP4Oo.js +2 -0
- package/dist/components/p-BaZRP4Oo.js.map +1 -0
- package/dist/components/p-BsnezUUC.js +2 -0
- package/dist/components/{p-DhsO0939.js.map → p-BsnezUUC.js.map} +1 -1
- package/dist/components/{p-B4RQoNmL.js → p-C1K5QGUZ.js} +2 -2
- package/dist/components/p-CjP8sYlo.js +2 -0
- package/dist/components/{p-CS12e52R.js.map → p-CjP8sYlo.js.map} +1 -1
- package/dist/components/p-CrwU83-g.js +2 -0
- package/dist/components/{p-C_0Q8Cnp.js.map → p-CrwU83-g.js.map} +1 -1
- package/dist/components/{p-BTo4pNdp.js → p-DJ78wdNv.js} +2 -2
- package/dist/components/p-DTqCBjUj.js +2 -0
- package/dist/components/{p-CKnoWZd9.js.map → p-DTqCBjUj.js.map} +1 -1
- package/dist/components/p-ZTugT4as.js +2 -0
- package/dist/components/{p-BJUcsBHt.js.map → p-ZTugT4as.js.map} +1 -1
- package/dist/components/p-bNpFhP5L.js +2 -0
- package/dist/components/p-bNpFhP5L.js.map +1 -0
- package/dist/docs/components.json +215 -30
- package/dist/mcp/cli.js +8 -12
- package/dist/mcp-data/registry/agent-response.json +5 -5
- package/dist/mcp-data/registry/button-filled.json +38 -2
- package/dist/mcp-data/registry/card-data-viz-donut.json +73 -4
- package/dist/mcp-data/registry/chart-bar.json +67 -3
- package/dist/mcp-data/registry/chart-donut.json +94 -8
- package/dist/mcp-data/registry/chart-legend.json +73 -3
- package/dist/mcp-data/registry/chart-line.json +67 -3
- package/dist/mcp-data/registry/conversation-list-item.json +2 -2
- package/dist/mcp-data/registry/message-bubble.json +19 -14
- package/dist/mcp-data/registry/message-composer.json +5 -3
- package/dist/mcp-data/registry/message-scroller.json +1 -1
- package/dist/mcp-data/registry/panel-nav.json +3 -2
- package/dist/mcp-data/registry/registry.json +525 -35
- package/dist/mcp-data/registry/skeleton.json +2 -2
- package/dist/mcp-data/registry/tooltip-data-viz.json +68 -4
- package/dist/mcp-data/registry/typing-indicator.json +127 -0
- package/dist/react/components.d.ts +1 -0
- package/dist/react/components.js +1 -0
- package/dist/react/ds-typing-indicator.d.ts +9 -0
- package/dist/react/ds-typing-indicator.js +12 -0
- package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +9 -0
- package/dist/types/components/ButtonFilled/index.d.ts +1 -1
- package/dist/types/components/CardDataVizDonut/CardDataVizDonut.d.ts +1 -0
- package/dist/types/components/ChartDonut/ChartDonut.d.ts +12 -2
- package/dist/types/components/MessageBubble/MessageBubble.d.ts +1 -1
- package/dist/types/components/TooltipDataViz/TooltipDataViz.d.ts +3 -2
- package/dist/types/components/TypingIndicator/TypingIndicator.d.ts +6 -0
- package/dist/types/components.d.ts +75 -14
- package/package.json +1 -1
- package/dist/components/p-BHtg1fh3.js +0 -2
- package/dist/components/p-BHtg1fh3.js.map +0 -1
- package/dist/components/p-BJUcsBHt.js +0 -2
- package/dist/components/p-CKnoWZd9.js +0 -2
- package/dist/components/p-CS12e52R.js +0 -2
- package/dist/components/p-C_0Q8Cnp.js +0 -2
- package/dist/components/p-DBJ2I3mH.js +0 -2
- package/dist/components/p-DBJ2I3mH.js.map +0 -1
- package/dist/components/p-DM-95BX1.js +0 -2
- package/dist/components/p-DhsO0939.js +0 -2
- package/dist/components/p-DsbhBb5F.js +0 -2
- package/dist/components/p-DsbhBb5F.js.map +0 -1
- /package/dist/components/{p-CxyjoTN1.js.map → p-BEWtqFX7.js.map} +0 -0
- /package/dist/components/{p-DZAtgSZo.js.map → p-B_qVPsEU.js.map} +0 -0
- /package/dist/components/{p-B4RQoNmL.js.map → p-C1K5QGUZ.js.map} +0 -0
- /package/dist/components/{p-BTo4pNdp.js.map → p-DJ78wdNv.js.map} +0 -0
|
@@ -135,10 +135,11 @@
|
|
|
135
135
|
"Streaming state supplements rather than replaces meaningful textual status."
|
|
136
136
|
],
|
|
137
137
|
"states": [
|
|
138
|
-
"The owner replaces immutable part arrays as scripted or live output changes."
|
|
138
|
+
"The owner replaces immutable part arrays as scripted or live output changes.",
|
|
139
|
+
"AgentResponse renders directly in Message without borrowing a plain MessageBubble surface."
|
|
139
140
|
],
|
|
140
141
|
"responsiveBehavior": [
|
|
141
|
-
"Rich content uses the
|
|
142
|
+
"Rich content uses the available transcript width while respecting readable measure and overflow constraints."
|
|
142
143
|
],
|
|
143
144
|
"references": [
|
|
144
145
|
{
|
|
@@ -191,8 +192,7 @@
|
|
|
191
192
|
"agent-tool-call",
|
|
192
193
|
"attachment-list",
|
|
193
194
|
"markdown",
|
|
194
|
-
"message"
|
|
195
|
-
"message-bubble"
|
|
195
|
+
"message"
|
|
196
196
|
]
|
|
197
197
|
},
|
|
198
198
|
{
|
|
@@ -980,6 +980,8 @@
|
|
|
980
980
|
"Use only one filled action per local decision area; render all secondary actions with ButtonUnfilled.",
|
|
981
981
|
"Choose brand or neutral for general commands. Reserve positive, negative, warning, and caution for matching action consequences, and AI, guide, or walkthrough for actions that enter those feature experiences.",
|
|
982
982
|
"Contrast serves both surface adaptation and hierarchy, but never permits a second filled action in the same decision area.",
|
|
983
|
+
"The optional inset border is off by default. Enable it only when the filled action needs an explicit edge against its parent surface.",
|
|
984
|
+
"Parent surface context changes only the optional inset border color. Contrast continues to own the button fill, foreground, hover, pressed, and focus treatments; never use surface context to change action hierarchy.",
|
|
983
985
|
"Rounded changes only the control radius to the half-radius treatment; it does not change hierarchy, size, variant, intent, or interaction semantics.",
|
|
984
986
|
"Loading prevents duplicate activation without applying inactive opacity or removing the current keyboard focus.",
|
|
985
987
|
"Icon and icon-label loading replace the icon in place. Label-only loading centers the loader while preserving the button's measured width."
|
|
@@ -1010,10 +1012,18 @@
|
|
|
1010
1012
|
"type": "string | null",
|
|
1011
1013
|
"required": false
|
|
1012
1014
|
},
|
|
1015
|
+
"background": {
|
|
1016
|
+
"type": "ButtonFilledBackground | undefined",
|
|
1017
|
+
"required": false
|
|
1018
|
+
},
|
|
1013
1019
|
"contrast": {
|
|
1014
1020
|
"type": "ButtonFilledContrast",
|
|
1015
1021
|
"required": false
|
|
1016
1022
|
},
|
|
1023
|
+
"hasBorder": {
|
|
1024
|
+
"type": "boolean",
|
|
1025
|
+
"required": false
|
|
1026
|
+
},
|
|
1017
1027
|
"icon": {
|
|
1018
1028
|
"type": "string",
|
|
1019
1029
|
"required": false
|
|
@@ -1284,15 +1294,84 @@
|
|
|
1284
1294
|
{
|
|
1285
1295
|
"name": "card-data-viz-donut",
|
|
1286
1296
|
"title": "CardDataVizDonut",
|
|
1287
|
-
"description": "
|
|
1297
|
+
"description": "Canonical donut-plus-legend dashboard card with shared data-viz chrome, a filter action, fill chart region, content-sized legend, and built-in hover synchronization.",
|
|
1288
1298
|
"type": "registry:ui",
|
|
1289
1299
|
"meta": {
|
|
1290
1300
|
"library": "@ds-mo/ui",
|
|
1291
1301
|
"distribution": "npm",
|
|
1292
1302
|
"storybook": "https://zainadeel.github.io/compomo/?path=/story/card-data-viz-donut",
|
|
1293
1303
|
"source": "src/wc/components/CardDataVizDonut/CardDataVizDonut.tsx",
|
|
1294
|
-
"intentStatus": "
|
|
1295
|
-
"intent":
|
|
1304
|
+
"intentStatus": "complete",
|
|
1305
|
+
"intent": {
|
|
1306
|
+
"audience": "specialized",
|
|
1307
|
+
"status": "experimental",
|
|
1308
|
+
"summary": "Canonical donut-plus-legend dashboard card with shared data-viz chrome, a filter action, fill chart region, content-sized legend, and built-in hover synchronization.",
|
|
1309
|
+
"useWhen": [
|
|
1310
|
+
"A dashboard widget needs the standard donut and visible legend composition in one data-viz card.",
|
|
1311
|
+
"Chart slices and legend rows should cross-highlight without application hover wiring.",
|
|
1312
|
+
"The card needs the shared header filter action while the application owns filter state and menu content."
|
|
1313
|
+
],
|
|
1314
|
+
"avoidWhen": [
|
|
1315
|
+
"The visualization is a bar, line, metric, or custom chart; compose CardShellDataViz directly.",
|
|
1316
|
+
"The product needs a custom legend treatment such as chips, external stat callouts, or selectable filters.",
|
|
1317
|
+
"The surface is a settings section or generic content card."
|
|
1318
|
+
],
|
|
1319
|
+
"alternatives": [
|
|
1320
|
+
{
|
|
1321
|
+
"when": "The visualization needs shared data-viz chrome without the canonical donut layout.",
|
|
1322
|
+
"component": "component:ds-card-shell-data-viz",
|
|
1323
|
+
"reason": "CardShellDataViz owns only the header, actions, width, and body boundary."
|
|
1324
|
+
},
|
|
1325
|
+
{
|
|
1326
|
+
"when": "A donut and legend need a custom layout without card chrome.",
|
|
1327
|
+
"component": "component:ds-chart-donut",
|
|
1328
|
+
"reason": "Compose the chart and ChartLegend directly and own their layout and hover synchronization."
|
|
1329
|
+
}
|
|
1330
|
+
],
|
|
1331
|
+
"commonlyComposedWith": [
|
|
1332
|
+
"component:ds-card-shell-data-viz",
|
|
1333
|
+
"component:ds-chart-donut",
|
|
1334
|
+
"component:ds-chart-legend",
|
|
1335
|
+
"component:ds-empty-state",
|
|
1336
|
+
"component:ds-skeleton"
|
|
1337
|
+
],
|
|
1338
|
+
"accessibility": [
|
|
1339
|
+
"Provide a concise card heading and a localized filter label for the icon-only header action.",
|
|
1340
|
+
"Keep essential values available through the chart and visible legend rather than encoding meaning through slice color alone.",
|
|
1341
|
+
"The application owns meaningful loading, empty, and error status copy when either content region is temporarily replaced or absent."
|
|
1342
|
+
],
|
|
1343
|
+
"states": [
|
|
1344
|
+
"The chart region fills remaining card height while the legend remains content-sized.",
|
|
1345
|
+
"Chart and legend regions render only when their corresponding slots contain content, allowing the owner to substitute loading, empty, or error presentations without dangling region padding.",
|
|
1346
|
+
"Hover synchronization changes highlight only; it never represents selection, filtering, or navigation.",
|
|
1347
|
+
"The filter action emits intent while the parent owns popup content, applied constraints, and data updates."
|
|
1348
|
+
],
|
|
1349
|
+
"responsiveBehavior": [
|
|
1350
|
+
"Select the token-based card width appropriate to the parent grid; the matching minimum height preserves the chart region.",
|
|
1351
|
+
"The parent dashboard owns wrapping and column changes while the internal chart-over-legend arrangement remains stable."
|
|
1352
|
+
],
|
|
1353
|
+
"frameworkCaveats": {
|
|
1354
|
+
"customElements": [
|
|
1355
|
+
"Assign chart data and legend items as JavaScript properties and place the components in the chart and legend slots."
|
|
1356
|
+
],
|
|
1357
|
+
"react": [
|
|
1358
|
+
"Keep filter and dataset state in the owner; the card handles hover synchronization for the canonical slotted pair."
|
|
1359
|
+
],
|
|
1360
|
+
"angular": [
|
|
1361
|
+
"Keep filter and dataset state in the owner; the card handles hover synchronization for the canonical slotted pair."
|
|
1362
|
+
]
|
|
1363
|
+
},
|
|
1364
|
+
"references": [
|
|
1365
|
+
{
|
|
1366
|
+
"label": "Storybook examples",
|
|
1367
|
+
"path": "src/wc/components/CardDataVizDonut/CardDataVizDonut.stories.ts"
|
|
1368
|
+
},
|
|
1369
|
+
{
|
|
1370
|
+
"label": "Dashboard review examples",
|
|
1371
|
+
"path": "src/wc/stories/DataViz/OverviewReview.stories.ts"
|
|
1372
|
+
}
|
|
1373
|
+
]
|
|
1374
|
+
},
|
|
1296
1375
|
"props": {
|
|
1297
1376
|
"cardWidth": {
|
|
1298
1377
|
"type": "CardDataVizDonutWidth",
|
|
@@ -1582,15 +1661,79 @@
|
|
|
1582
1661
|
{
|
|
1583
1662
|
"name": "chart-bar",
|
|
1584
1663
|
"title": "ChartBar",
|
|
1585
|
-
"description": "
|
|
1664
|
+
"description": "Single-series bar chart for comparing discrete categories or evenly spaced time buckets on a band-scaled axis.",
|
|
1586
1665
|
"type": "registry:ui",
|
|
1587
1666
|
"meta": {
|
|
1588
1667
|
"library": "@ds-mo/ui",
|
|
1589
1668
|
"distribution": "npm",
|
|
1590
1669
|
"storybook": "https://zainadeel.github.io/compomo/?path=/story/chart-bar",
|
|
1591
1670
|
"source": "src/wc/components/ChartBar/ChartBar.tsx",
|
|
1592
|
-
"intentStatus": "
|
|
1593
|
-
"intent":
|
|
1671
|
+
"intentStatus": "complete",
|
|
1672
|
+
"intent": {
|
|
1673
|
+
"audience": "specialized",
|
|
1674
|
+
"status": "experimental",
|
|
1675
|
+
"summary": "Single-series bar chart for comparing discrete categories or evenly spaced time buckets on a band-scaled axis.",
|
|
1676
|
+
"useWhen": [
|
|
1677
|
+
"Users need to compare one numeric measure across a small set of categories.",
|
|
1678
|
+
"Values are grouped into ordered time buckets such as hours, days, weeks, or months and equal visual spacing is appropriate.",
|
|
1679
|
+
"A data-viz card needs a compact magnitude comparison rather than a continuous trend."
|
|
1680
|
+
],
|
|
1681
|
+
"avoidWhen": [
|
|
1682
|
+
"Timestamp positions must reflect irregular elapsed time; pre-bucket the data or use a future continuous time-scale chart.",
|
|
1683
|
+
"The visualization needs stacked, grouped, or multi-series bars.",
|
|
1684
|
+
"The interaction requires selection, drill-down, brushing, or zoom.",
|
|
1685
|
+
"The data communicates a part-to-whole relationship."
|
|
1686
|
+
],
|
|
1687
|
+
"alternatives": [
|
|
1688
|
+
{
|
|
1689
|
+
"when": "Users need to follow one or more trends across ordered categories.",
|
|
1690
|
+
"component": "component:ds-chart-line",
|
|
1691
|
+
"reason": "ChartLine connects ordered observations and supports multiple named series."
|
|
1692
|
+
},
|
|
1693
|
+
{
|
|
1694
|
+
"when": "The data communicates parts of a total.",
|
|
1695
|
+
"component": "component:ds-chart-donut",
|
|
1696
|
+
"reason": "ChartDonut provides the part-to-whole composition and center aggregate."
|
|
1697
|
+
}
|
|
1698
|
+
],
|
|
1699
|
+
"commonlyComposedWith": [
|
|
1700
|
+
"component:ds-card-shell-data-viz",
|
|
1701
|
+
"component:ds-tooltip-data-viz"
|
|
1702
|
+
],
|
|
1703
|
+
"accessibility": [
|
|
1704
|
+
"Keep category labels concise and provide an adjacent textual summary when exact values are critical to completing a task.",
|
|
1705
|
+
"Do not rely on bar color alone to communicate category meaning.",
|
|
1706
|
+
"A future interactive tooltip must supplement rather than replace the chart's accessible value representation."
|
|
1707
|
+
],
|
|
1708
|
+
"states": [
|
|
1709
|
+
"The chart is currently a static single-series rendering without hover, selection, loading, or empty-state policy.",
|
|
1710
|
+
"An empty dataset renders no bars; the owning card or product supplies meaningful empty-state messaging.",
|
|
1711
|
+
"Use one consistent bar color across time buckets when every bar is the same measure at a different interval; categorical color changes are for genuinely distinct categories.",
|
|
1712
|
+
"Authored datum colors override the shared categorical palette."
|
|
1713
|
+
],
|
|
1714
|
+
"responsiveBehavior": [
|
|
1715
|
+
"The owner supplies dimensions and updates them with its layout; the chart does not measure its container.",
|
|
1716
|
+
"Limit or pre-format long category labels so they remain legible at the chosen width.",
|
|
1717
|
+
"Time labels remain ordered, pre-formatted buckets with equal spacing rather than raw continuous timestamps."
|
|
1718
|
+
],
|
|
1719
|
+
"frameworkCaveats": {
|
|
1720
|
+
"customElements": [
|
|
1721
|
+
"Assign data as a JavaScript property; arrays are not supported as HTML attributes."
|
|
1722
|
+
],
|
|
1723
|
+
"react": [
|
|
1724
|
+
"Pass a stable data array and dimensions derived from the containing layout."
|
|
1725
|
+
],
|
|
1726
|
+
"angular": [
|
|
1727
|
+
"Bind data as a property and update dimensions from the containing layout."
|
|
1728
|
+
]
|
|
1729
|
+
},
|
|
1730
|
+
"references": [
|
|
1731
|
+
{
|
|
1732
|
+
"label": "Storybook examples",
|
|
1733
|
+
"path": "src/wc/components/ChartBar/ChartBar.stories.ts"
|
|
1734
|
+
}
|
|
1735
|
+
]
|
|
1736
|
+
},
|
|
1594
1737
|
"props": {
|
|
1595
1738
|
"data": {
|
|
1596
1739
|
"type": "ChartDatum[]",
|
|
@@ -1622,15 +1765,81 @@
|
|
|
1622
1765
|
{
|
|
1623
1766
|
"name": "chart-donut",
|
|
1624
1767
|
"title": "ChartDonut",
|
|
1625
|
-
"description": "
|
|
1768
|
+
"description": "Part-to-whole donut chart with a center aggregate, responsive fill sizing, local slice tooltip feedback, and externally controlled legend highlighting.",
|
|
1626
1769
|
"type": "registry:ui",
|
|
1627
1770
|
"meta": {
|
|
1628
1771
|
"library": "@ds-mo/ui",
|
|
1629
1772
|
"distribution": "npm",
|
|
1630
1773
|
"storybook": "https://zainadeel.github.io/compomo/?path=/story/chart-donut",
|
|
1631
1774
|
"source": "src/wc/components/ChartDonut/ChartDonut.tsx",
|
|
1632
|
-
"intentStatus": "
|
|
1633
|
-
"intent":
|
|
1775
|
+
"intentStatus": "complete",
|
|
1776
|
+
"intent": {
|
|
1777
|
+
"audience": "specialized",
|
|
1778
|
+
"status": "experimental",
|
|
1779
|
+
"summary": "Part-to-whole donut chart with a center aggregate, responsive fill sizing, local slice tooltip feedback, and externally controlled legend highlighting.",
|
|
1780
|
+
"useWhen": [
|
|
1781
|
+
"Users need to understand a small part-to-whole breakdown with a prominent total or status in the center.",
|
|
1782
|
+
"A standalone donut needs pointer and keyboard-focus value feedback through a chart-owned data-viz tooltip.",
|
|
1783
|
+
"A donut and visible ChartLegend should cross-highlight by matching stable labels."
|
|
1784
|
+
],
|
|
1785
|
+
"avoidWhen": [
|
|
1786
|
+
"The data is a trend, time sequence, or independent magnitude comparison.",
|
|
1787
|
+
"The category count creates slices too small to understand reliably.",
|
|
1788
|
+
"Hover is intended to select, filter, or navigate rather than temporarily highlight data."
|
|
1789
|
+
],
|
|
1790
|
+
"alternatives": [
|
|
1791
|
+
{
|
|
1792
|
+
"when": "The product needs the canonical card, filter action, visible legend, and built-in hover synchronization.",
|
|
1793
|
+
"component": "component:ds-card-data-viz-donut",
|
|
1794
|
+
"reason": "The dedicated card owns that complete composition and suppresses redundant slice tooltips."
|
|
1795
|
+
},
|
|
1796
|
+
{
|
|
1797
|
+
"when": "Users need to compare independent category magnitudes.",
|
|
1798
|
+
"component": "component:ds-chart-bar",
|
|
1799
|
+
"reason": "Bars make category magnitude differences easier to compare."
|
|
1800
|
+
}
|
|
1801
|
+
],
|
|
1802
|
+
"commonlyComposedWith": [
|
|
1803
|
+
"component:ds-chart-legend",
|
|
1804
|
+
"component:ds-tooltip-data-viz",
|
|
1805
|
+
"component:ds-card-data-viz-donut"
|
|
1806
|
+
],
|
|
1807
|
+
"accessibility": [
|
|
1808
|
+
"Every non-empty slice remains keyboard focusable and exposes its label and value without depending on the visual tooltip.",
|
|
1809
|
+
"Use a visible legend when the full set of labels, values, or percentages must remain continuously available.",
|
|
1810
|
+
"Provide localized no-data text for the neutral empty ring.",
|
|
1811
|
+
"Center text is a visual summary and must not be the only source of essential category detail."
|
|
1812
|
+
],
|
|
1813
|
+
"states": [
|
|
1814
|
+
"Genuine local pointer or keyboard focus may show a chart-owned tooltip; externally synchronized highlight never opens it.",
|
|
1815
|
+
"When a visible legend already owns label and value detail, suppress the redundant donut tooltip. CardDataVizDonut does this automatically.",
|
|
1816
|
+
"Local hover and external highlight remain separate while both may dim non-matching slices.",
|
|
1817
|
+
"Zero or negative totals render a neutral empty ring without interactive slices.",
|
|
1818
|
+
"Center value and caption truncate when they exceed the safe inner-circle measure."
|
|
1819
|
+
],
|
|
1820
|
+
"responsiveBehavior": [
|
|
1821
|
+
"Prefer container-fill sizing inside data-viz cards and explicit sizing only in layouts that own a stable diameter.",
|
|
1822
|
+
"Fill sizing remains centered and constrained to the shared donut size band.",
|
|
1823
|
+
"The owner adapts category count and legend placement for available space."
|
|
1824
|
+
],
|
|
1825
|
+
"frameworkCaveats": {
|
|
1826
|
+
"customElements": [
|
|
1827
|
+
"Assign data as a JavaScript property and wire slice-hover detail to a sibling legend only when not using CardDataVizDonut."
|
|
1828
|
+
],
|
|
1829
|
+
"react": [
|
|
1830
|
+
"Keep synchronized highlight controlled by the composition and disable slice tooltips when a sibling legend continuously shows the same details."
|
|
1831
|
+
],
|
|
1832
|
+
"angular": [
|
|
1833
|
+
"Keep synchronized highlight controlled by the composition and disable slice tooltips when a sibling legend continuously shows the same details."
|
|
1834
|
+
]
|
|
1835
|
+
},
|
|
1836
|
+
"references": [
|
|
1837
|
+
{
|
|
1838
|
+
"label": "Storybook examples",
|
|
1839
|
+
"path": "src/wc/components/ChartDonut/ChartDonut.stories.ts"
|
|
1840
|
+
}
|
|
1841
|
+
]
|
|
1842
|
+
},
|
|
1634
1843
|
"props": {
|
|
1635
1844
|
"activeLabel": {
|
|
1636
1845
|
"type": "string | null",
|
|
@@ -1664,6 +1873,10 @@
|
|
|
1664
1873
|
"type": "string",
|
|
1665
1874
|
"required": false
|
|
1666
1875
|
},
|
|
1876
|
+
"showTooltip": {
|
|
1877
|
+
"type": "boolean",
|
|
1878
|
+
"required": false
|
|
1879
|
+
},
|
|
1667
1880
|
"size": {
|
|
1668
1881
|
"type": "number | undefined",
|
|
1669
1882
|
"required": false
|
|
@@ -1690,20 +1903,92 @@
|
|
|
1690
1903
|
"@ds-mo/ui",
|
|
1691
1904
|
"@ds-mo/tokens"
|
|
1692
1905
|
],
|
|
1693
|
-
"registryDependencies": [
|
|
1906
|
+
"registryDependencies": [
|
|
1907
|
+
"tooltip-data-viz"
|
|
1908
|
+
]
|
|
1694
1909
|
},
|
|
1695
1910
|
{
|
|
1696
1911
|
"name": "chart-legend",
|
|
1697
1912
|
"title": "ChartLegend",
|
|
1698
|
-
"description": "
|
|
1913
|
+
"description": "Display-first chart legend with swatches, labels, optional values and percentages, explicit deep links, and highlight-only chart synchronization.",
|
|
1699
1914
|
"type": "registry:ui",
|
|
1700
1915
|
"meta": {
|
|
1701
1916
|
"library": "@ds-mo/ui",
|
|
1702
1917
|
"distribution": "npm",
|
|
1703
1918
|
"storybook": "https://zainadeel.github.io/compomo/?path=/story/chart-legend",
|
|
1704
1919
|
"source": "src/wc/components/ChartLegend/ChartLegend.tsx",
|
|
1705
|
-
"intentStatus": "
|
|
1706
|
-
"intent":
|
|
1920
|
+
"intentStatus": "complete",
|
|
1921
|
+
"intent": {
|
|
1922
|
+
"audience": "specialized",
|
|
1923
|
+
"status": "experimental",
|
|
1924
|
+
"summary": "Display-first chart legend with swatches, labels, optional values and percentages, explicit deep links, and highlight-only chart synchronization.",
|
|
1925
|
+
"useWhen": [
|
|
1926
|
+
"A chart needs the standard swatch, label, and optional numeric-detail legend.",
|
|
1927
|
+
"Donut slices or line series need a continuously visible key beside or below the visualization.",
|
|
1928
|
+
"A category has an explicit deep-link destination and should render as an accessible link."
|
|
1929
|
+
],
|
|
1930
|
+
"avoidWhen": [
|
|
1931
|
+
"The design calls for chips, bare swatches, external stat callouts, or another custom legend treatment.",
|
|
1932
|
+
"Rows need to toggle visibility, filter data, or represent selection.",
|
|
1933
|
+
"The content is a command menu or navigation list unrelated to chart data."
|
|
1934
|
+
],
|
|
1935
|
+
"alternatives": [
|
|
1936
|
+
{
|
|
1937
|
+
"when": "The product needs a nonstandard legend treatment.",
|
|
1938
|
+
"component": "component:ds-text",
|
|
1939
|
+
"reason": "Compose product-owned semantic markup from the same chart data rather than forcing it into this row recipe."
|
|
1940
|
+
},
|
|
1941
|
+
{
|
|
1942
|
+
"when": "The donut belongs in the canonical dashboard card.",
|
|
1943
|
+
"component": "component:ds-card-data-viz-donut",
|
|
1944
|
+
"reason": "The dedicated card places the legend and handles bidirectional highlight synchronization."
|
|
1945
|
+
}
|
|
1946
|
+
],
|
|
1947
|
+
"commonlyComposedWith": [
|
|
1948
|
+
"component:ds-chart-donut",
|
|
1949
|
+
"component:ds-chart-line",
|
|
1950
|
+
"component:ds-card-data-viz-donut",
|
|
1951
|
+
"component:ds-card-shell-data-viz"
|
|
1952
|
+
],
|
|
1953
|
+
"accessibility": [
|
|
1954
|
+
"Rows remain non-interactive unless the item supplies an actual link destination.",
|
|
1955
|
+
"Synced highlight changes opacity only and never moves focus or announces selection.",
|
|
1956
|
+
"Keep full labels available when visible text truncates, and retain stable tabular numeric columns.",
|
|
1957
|
+
"Do not rely on swatch color alone; every entry requires a meaningful visible label."
|
|
1958
|
+
],
|
|
1959
|
+
"states": [
|
|
1960
|
+
"Local pointer or focus interaction and external chart highlight remain separate; both may dim peers, but only a real link row receives interactive affordances.",
|
|
1961
|
+
"Hover synchronization is temporary emphasis, never filtering, toggling, or selected state.",
|
|
1962
|
+
"Percentage values use one consistent precision across the complete legend.",
|
|
1963
|
+
"The list owns pointer leave so moving across row gaps does not clear and reapply highlight."
|
|
1964
|
+
],
|
|
1965
|
+
"responsiveBehavior": [
|
|
1966
|
+
"Vertical legends let the label yield width and truncate before right-aligned value and percentage columns.",
|
|
1967
|
+
"Horizontal legends wrap complete entries and suit compact series keys below a chart.",
|
|
1968
|
+
"The parent constrains width and decides when a custom condensed treatment is necessary."
|
|
1969
|
+
],
|
|
1970
|
+
"frameworkCaveats": {
|
|
1971
|
+
"customElements": [
|
|
1972
|
+
"Assign items as a JavaScript property and set href only for genuine navigation."
|
|
1973
|
+
],
|
|
1974
|
+
"react": [
|
|
1975
|
+
"Intercept the item-click event only when application routing must replace native link navigation."
|
|
1976
|
+
],
|
|
1977
|
+
"angular": [
|
|
1978
|
+
"Intercept the item-click event only when application routing must replace native link navigation."
|
|
1979
|
+
]
|
|
1980
|
+
},
|
|
1981
|
+
"references": [
|
|
1982
|
+
{
|
|
1983
|
+
"label": "Storybook examples",
|
|
1984
|
+
"path": "src/wc/components/ChartLegend/ChartLegend.stories.ts"
|
|
1985
|
+
},
|
|
1986
|
+
{
|
|
1987
|
+
"label": "Rendered interaction tests",
|
|
1988
|
+
"path": "tests/e2e/chart-legend.spec.ts"
|
|
1989
|
+
}
|
|
1990
|
+
]
|
|
1991
|
+
},
|
|
1707
1992
|
"props": {
|
|
1708
1993
|
"activeLabel": {
|
|
1709
1994
|
"type": "string | null",
|
|
@@ -1758,15 +2043,79 @@
|
|
|
1758
2043
|
{
|
|
1759
2044
|
"name": "chart-line",
|
|
1760
2045
|
"title": "ChartLine",
|
|
1761
|
-
"description": "
|
|
2046
|
+
"description": "Static single- or multi-series line chart for trends across ordered, evenly spaced categories, including preformatted time-period labels.",
|
|
1762
2047
|
"type": "registry:ui",
|
|
1763
2048
|
"meta": {
|
|
1764
2049
|
"library": "@ds-mo/ui",
|
|
1765
2050
|
"distribution": "npm",
|
|
1766
2051
|
"storybook": "https://zainadeel.github.io/compomo/?path=/story/chart-line",
|
|
1767
2052
|
"source": "src/wc/components/ChartLine/ChartLine.tsx",
|
|
1768
|
-
"intentStatus": "
|
|
1769
|
-
"intent":
|
|
2053
|
+
"intentStatus": "complete",
|
|
2054
|
+
"intent": {
|
|
2055
|
+
"audience": "specialized",
|
|
2056
|
+
"status": "experimental",
|
|
2057
|
+
"summary": "Static single- or multi-series line chart for trends across ordered, evenly spaced categories, including preformatted time-period labels.",
|
|
2058
|
+
"useWhen": [
|
|
2059
|
+
"Users need to follow one or more numeric trends across a shared ordered x-axis.",
|
|
2060
|
+
"Time periods are already grouped into equally spaced labels such as months, weeks, or days.",
|
|
2061
|
+
"A horizontal ChartLegend should identify multiple series."
|
|
2062
|
+
],
|
|
2063
|
+
"avoidWhen": [
|
|
2064
|
+
"Pixel position must reflect irregular elapsed time or continuous timestamps.",
|
|
2065
|
+
"The primary task is comparing unrelated category magnitudes rather than following a trend.",
|
|
2066
|
+
"The chart needs built-in zoom, brushing, selection, or drill-down.",
|
|
2067
|
+
"Series lengths do not align with the shared category list."
|
|
2068
|
+
],
|
|
2069
|
+
"alternatives": [
|
|
2070
|
+
{
|
|
2071
|
+
"when": "Users need to compare one measure across discrete categories or time buckets.",
|
|
2072
|
+
"component": "component:ds-chart-bar",
|
|
2073
|
+
"reason": "Bars emphasize independent bucket magnitudes."
|
|
2074
|
+
},
|
|
2075
|
+
{
|
|
2076
|
+
"when": "The data communicates parts of a total.",
|
|
2077
|
+
"component": "component:ds-chart-donut",
|
|
2078
|
+
"reason": "Donut provides the part-to-whole and center-summary treatment."
|
|
2079
|
+
}
|
|
2080
|
+
],
|
|
2081
|
+
"commonlyComposedWith": [
|
|
2082
|
+
"component:ds-chart-legend",
|
|
2083
|
+
"component:ds-card-shell-data-viz",
|
|
2084
|
+
"component:ds-tooltip-data-viz"
|
|
2085
|
+
],
|
|
2086
|
+
"accessibility": [
|
|
2087
|
+
"Provide a visible legend or adjacent textual summary when exact series values are important; the chart image name alone is not a complete data table.",
|
|
2088
|
+
"Do not rely on series color alone to communicate meaning.",
|
|
2089
|
+
"A future point tooltip must supplement rather than replace accessible series and value context."
|
|
2090
|
+
],
|
|
2091
|
+
"states": [
|
|
2092
|
+
"The chart is currently static and does not own hover, selection, loading, or empty-state policy.",
|
|
2093
|
+
"Point markers may be shown or hidden without changing the underlying series meaning.",
|
|
2094
|
+
"Authored series colors override the shared categorical palette."
|
|
2095
|
+
],
|
|
2096
|
+
"responsiveBehavior": [
|
|
2097
|
+
"The owner supplies dimensions and updates them when its layout changes.",
|
|
2098
|
+
"Category positions are always equally spaced, even when labels represent time.",
|
|
2099
|
+
"Reduce or pre-format dense labels before passing them; the chart renders authored labels without a continuous time scale."
|
|
2100
|
+
],
|
|
2101
|
+
"frameworkCaveats": {
|
|
2102
|
+
"customElements": [
|
|
2103
|
+
"Assign series and categories as JavaScript properties and keep every series aligned to the category count."
|
|
2104
|
+
],
|
|
2105
|
+
"react": [
|
|
2106
|
+
"Pass stable series and category arrays with dimensions derived from the containing layout."
|
|
2107
|
+
],
|
|
2108
|
+
"angular": [
|
|
2109
|
+
"Bind series and categories as properties with dimensions derived from the containing layout."
|
|
2110
|
+
]
|
|
2111
|
+
},
|
|
2112
|
+
"references": [
|
|
2113
|
+
{
|
|
2114
|
+
"label": "Storybook examples",
|
|
2115
|
+
"path": "src/wc/components/ChartLine/ChartLine.stories.ts"
|
|
2116
|
+
}
|
|
2117
|
+
]
|
|
2118
|
+
},
|
|
1770
2119
|
"props": {
|
|
1771
2120
|
"categories": {
|
|
1772
2121
|
"type": "string[]",
|
|
@@ -2260,7 +2609,7 @@
|
|
|
2260
2609
|
"Busy and error are generic channel-neutral states; the owning product supplies suitable status wording. A busy row pairs its body-small status with the sm 16px Loader at an 8px gap.",
|
|
2261
2610
|
"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.",
|
|
2262
2611
|
"Hover and press use the shared interaction hover and pressed overlays. Only the selected conversation uses the persistent active fill.",
|
|
2263
|
-
"The title uses body-medium
|
|
2612
|
+
"The title uses body-medium, not title-small, and the body-small preview truncates after one line. Unread titles use emphasis with primary foreground; read titles use regular weight with secondary foreground.",
|
|
2264
2613
|
"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."
|
|
2265
2614
|
],
|
|
2266
2615
|
"responsiveBehavior": [
|
|
@@ -3573,7 +3922,7 @@
|
|
|
3573
3922
|
{
|
|
3574
3923
|
"name": "message-bubble",
|
|
3575
3924
|
"title": "MessageBubble",
|
|
3576
|
-
"description": "Visible message
|
|
3925
|
+
"description": "Visible plain-message surface with a body-medium default, separated from message-row direction and metadata.",
|
|
3577
3926
|
"type": "registry:ui",
|
|
3578
3927
|
"meta": {
|
|
3579
3928
|
"library": "@ds-mo/ui",
|
|
@@ -3584,18 +3933,18 @@
|
|
|
3584
3933
|
"intent": {
|
|
3585
3934
|
"audience": "general",
|
|
3586
3935
|
"status": "experimental",
|
|
3587
|
-
"summary": "Visible message
|
|
3936
|
+
"summary": "Visible plain-message surface with a body-medium default, separated from message-row direction and metadata.",
|
|
3588
3937
|
"useWhen": [
|
|
3589
|
-
"
|
|
3590
|
-
"Plain
|
|
3938
|
+
"Plain user-sent or received person-to-person message copy needs a visible surface within a Message row.",
|
|
3939
|
+
"Plain conversation copy should use the shared body-medium regular typography recipe without application styling."
|
|
3591
3940
|
],
|
|
3592
3941
|
"avoidWhen": [
|
|
3593
3942
|
"The surface is a general card, callout, or form container.",
|
|
3594
|
-
"The
|
|
3943
|
+
"The content is a rich agent response; compose AgentResponse directly in Message.",
|
|
3944
|
+
"The state only indicates that another participant is typing; use TypingIndicator."
|
|
3595
3945
|
],
|
|
3596
3946
|
"commonlyComposedWith": [
|
|
3597
|
-
"component:ds-message"
|
|
3598
|
-
"component:ds-markdown"
|
|
3947
|
+
"component:ds-message"
|
|
3599
3948
|
],
|
|
3600
3949
|
"patterns": [
|
|
3601
3950
|
"pattern:conversation"
|
|
@@ -3603,8 +3952,13 @@
|
|
|
3603
3952
|
"accessibility": [
|
|
3604
3953
|
"Surface styling does not add semantics; failed delivery belongs in Message metadata below the unchanged bubble rather than in an error bubble treatment."
|
|
3605
3954
|
],
|
|
3955
|
+
"states": [
|
|
3956
|
+
"The user variant represents user-sent copy in agent and person-to-person channels and uses secondary foreground.",
|
|
3957
|
+
"The received variant represents ordinary incoming person-to-person copy.",
|
|
3958
|
+
"Typing and rich agent output are not MessageBubble variants."
|
|
3959
|
+
],
|
|
3606
3960
|
"responsiveBehavior": [
|
|
3607
|
-
"The bubble wraps
|
|
3961
|
+
"The bubble wraps plain message copy within the transcript width."
|
|
3608
3962
|
],
|
|
3609
3963
|
"references": [
|
|
3610
3964
|
{
|
|
@@ -3669,7 +4023,9 @@
|
|
|
3669
4023
|
],
|
|
3670
4024
|
"states": [
|
|
3671
4025
|
"The owner controls draft value and transport state; the composer emits intent without performing transport.",
|
|
3672
|
-
"Use the tools slot for leading actions such as add and the actions slot for trailing actions such as dictation; the built-in submit or stop action remains last.",
|
|
4026
|
+
"Use the tools slot for leading actions such as add and the actions slot for trailing actions such as dictation; the built-in submit or stop action remains last with an 8px gap from the preceding action. These icon buttons use the standard non-rounded control radius.",
|
|
4027
|
+
"The composer surface uses the 10px --dimension-radius-125 token.",
|
|
4028
|
+
"Mouse or keyboard focus on the textarea gives the complete composer surface the same bold-brand inset stroke width and color as an active Input; the native textarea never draws a separate outline.",
|
|
3673
4029
|
"The submit action defaults to brand for both agent and person-to-person conversations; change submitIntent only when the action consequence has a different semantic intent."
|
|
3674
4030
|
],
|
|
3675
4031
|
"responsiveBehavior": [
|
|
@@ -3778,7 +4134,7 @@
|
|
|
3778
4134
|
"Selection and transcript interaction release automatic following.",
|
|
3779
4135
|
"Opening saved history, message jumps, and prepended history preserve deliberate position.",
|
|
3780
4136
|
"The scroll-to-latest action is absent at the live edge, appears only after the reader moves away, and disappears again after returning to the newest message.",
|
|
3781
|
-
"Place a composer container in the overlay slot so messages scroll behind it; the scroller measures its live height, reserves matching transcript clearance, and keeps scroll-to-latest above it."
|
|
4137
|
+
"Place a composer container with 8px padding on every side in the overlay slot so messages scroll behind it; the scroller measures its live height, reserves matching transcript clearance, and keeps scroll-to-latest above it."
|
|
3782
4138
|
],
|
|
3783
4139
|
"responsiveBehavior": [
|
|
3784
4140
|
"Transcript width is readable while the scroll region fills available height."
|
|
@@ -4051,6 +4407,7 @@
|
|
|
4051
4407
|
"Dashboard presents day-to-day operational destinations; Settings presents administrative and configuration destinations.",
|
|
4052
4408
|
"The standard footer switches the entire destination collection and navStyle between Dashboard and Settings and exposes the user/account entry.",
|
|
4053
4409
|
"The host owns the external user menu opened from dsNavUserAction.",
|
|
4410
|
+
"Item and header controls inherit the shared md control radius while local shell geometry continues to own collapsed layout and footer animation positioning.",
|
|
4054
4411
|
"On desktop, allow user-controlled expand and collapse and persist the preference with storageKey when cross-session persistence is appropriate."
|
|
4055
4412
|
],
|
|
4056
4413
|
"responsiveBehavior": [
|
|
@@ -5772,7 +6129,7 @@
|
|
|
5772
6129
|
"The owner preserves focus and meaningful reading order when replacing placeholders with real content."
|
|
5773
6130
|
],
|
|
5774
6131
|
"states": [
|
|
5775
|
-
"Text, icon, and control variants are atomic metric canvases aligned to their corresponding design-system recipes.",
|
|
6132
|
+
"Text, icon, and control variants are atomic metric canvases aligned to their corresponding design-system recipes; control atoms inherit the selected control density's default radius.",
|
|
5776
6133
|
"Compose approximate line count, hierarchy, widths, and control placement without simulating actual values.",
|
|
5777
6134
|
"Shimmer is on by default and may be disabled for a static placeholder. Reduced motion always produces the static final shape.",
|
|
5778
6135
|
"Rounded is an optional visual treatment for icon and control atoms rather than a semantic state.",
|
|
@@ -7127,15 +7484,79 @@
|
|
|
7127
7484
|
{
|
|
7128
7485
|
"name": "tooltip-data-viz",
|
|
7129
7486
|
"title": "TooltipDataViz",
|
|
7130
|
-
"description": "
|
|
7487
|
+
"description": "Chart-owned, non-interactive label and value callout positioned from pointer or focused-mark coordinates inside a visualization wrapper.",
|
|
7131
7488
|
"type": "registry:ui",
|
|
7132
7489
|
"meta": {
|
|
7133
7490
|
"library": "@ds-mo/ui",
|
|
7134
7491
|
"distribution": "npm",
|
|
7135
7492
|
"storybook": "https://zainadeel.github.io/compomo/?path=/story/tooltip-data-viz",
|
|
7136
7493
|
"source": "src/wc/components/TooltipDataViz/TooltipDataViz.tsx",
|
|
7137
|
-
"intentStatus": "
|
|
7138
|
-
"intent":
|
|
7494
|
+
"intentStatus": "complete",
|
|
7495
|
+
"intent": {
|
|
7496
|
+
"audience": "specialized",
|
|
7497
|
+
"status": "experimental",
|
|
7498
|
+
"summary": "Chart-owned, non-interactive label and value callout positioned from pointer or focused-mark coordinates inside a visualization wrapper.",
|
|
7499
|
+
"useWhen": [
|
|
7500
|
+
"A chart needs immediate visual value feedback for a genuinely hovered or keyboard-focused mark.",
|
|
7501
|
+
"The anchor lives inside SVG or chart coordinates rather than on a slotted HTML trigger.",
|
|
7502
|
+
"The owning chart can mount the callout for one interaction session and update its coordinates while tracking."
|
|
7503
|
+
],
|
|
7504
|
+
"avoidWhen": [
|
|
7505
|
+
"A normal control or text trigger needs supplemental explanation; use Tooltip.",
|
|
7506
|
+
"The content needs links, actions, focus, or touch-primary disclosure.",
|
|
7507
|
+
"An externally synchronized highlight has no genuine local pointer or keyboard interaction.",
|
|
7508
|
+
"The callout would be the only accessible source of an essential value."
|
|
7509
|
+
],
|
|
7510
|
+
"alternatives": [
|
|
7511
|
+
{
|
|
7512
|
+
"when": "A slotted control or text trigger needs a conventional tooltip.",
|
|
7513
|
+
"component": "component:ds-tooltip",
|
|
7514
|
+
"reason": "Tooltip owns trigger semantics, focus behavior, and anchored overlay lifecycle."
|
|
7515
|
+
},
|
|
7516
|
+
{
|
|
7517
|
+
"when": "Donut details should remain continuously visible beside the chart.",
|
|
7518
|
+
"component": "component:ds-chart-legend",
|
|
7519
|
+
"reason": "A visible legend avoids redundant transient slice callouts."
|
|
7520
|
+
}
|
|
7521
|
+
],
|
|
7522
|
+
"commonlyComposedWith": [
|
|
7523
|
+
"component:ds-chart-bar",
|
|
7524
|
+
"component:ds-chart-line",
|
|
7525
|
+
"component:ds-chart-donut"
|
|
7526
|
+
],
|
|
7527
|
+
"accessibility": [
|
|
7528
|
+
"The callout is presentation-only and never replaces the owning chart mark's accessible label or an adjacent data summary.",
|
|
7529
|
+
"Keyboard-focused marks receive the same visual feedback as pointer-hovered marks.",
|
|
7530
|
+
"The callout never receives focus or contains interactive descendants."
|
|
7531
|
+
],
|
|
7532
|
+
"states": [
|
|
7533
|
+
"The owning chart mounts the callout when a local interaction starts and unmounts it when that interaction ends.",
|
|
7534
|
+
"Coordinate updates track within one mounted interaction session without restarting the show delay.",
|
|
7535
|
+
"Placement flips horizontally or vertically when the rendered callout approaches a viewport edge.",
|
|
7536
|
+
"Reduced motion preserves the final visible state without an opacity transition."
|
|
7537
|
+
],
|
|
7538
|
+
"responsiveBehavior": [
|
|
7539
|
+
"Render inside a positioned chart wrapper and pass coordinates relative to that wrapper.",
|
|
7540
|
+
"Keep labels concise enough for the single-line callout; persistent or long explanations belong outside the chart."
|
|
7541
|
+
],
|
|
7542
|
+
"frameworkCaveats": {
|
|
7543
|
+
"customElements": [
|
|
7544
|
+
"The owning chart computes coordinates and conditionally mounts the component; applications should not use it as a standalone overlay."
|
|
7545
|
+
],
|
|
7546
|
+
"react": [
|
|
7547
|
+
"Keep callout lifecycle and coordinates inside the chart wrapper rather than application-global tooltip state."
|
|
7548
|
+
],
|
|
7549
|
+
"angular": [
|
|
7550
|
+
"Keep callout lifecycle and coordinates inside the chart wrapper rather than application-global tooltip state."
|
|
7551
|
+
]
|
|
7552
|
+
},
|
|
7553
|
+
"references": [
|
|
7554
|
+
{
|
|
7555
|
+
"label": "Storybook example",
|
|
7556
|
+
"path": "src/wc/components/TooltipDataViz/TooltipDataViz.stories.ts"
|
|
7557
|
+
}
|
|
7558
|
+
]
|
|
7559
|
+
},
|
|
7139
7560
|
"props": {
|
|
7140
7561
|
"delay": {
|
|
7141
7562
|
"type": "number | string",
|
|
@@ -7173,6 +7594,75 @@
|
|
|
7173
7594
|
"registryDependencies": [
|
|
7174
7595
|
"text"
|
|
7175
7596
|
]
|
|
7597
|
+
},
|
|
7598
|
+
{
|
|
7599
|
+
"name": "typing-indicator",
|
|
7600
|
+
"title": "TypingIndicator",
|
|
7601
|
+
"description": "Dedicated transient status for another participant actively composing a message.",
|
|
7602
|
+
"type": "registry:ui",
|
|
7603
|
+
"meta": {
|
|
7604
|
+
"library": "@ds-mo/ui",
|
|
7605
|
+
"distribution": "npm",
|
|
7606
|
+
"storybook": "https://zainadeel.github.io/compomo/?path=/story/typing-indicator",
|
|
7607
|
+
"source": "src/wc/components/TypingIndicator/TypingIndicator.tsx",
|
|
7608
|
+
"intentStatus": "complete",
|
|
7609
|
+
"intent": {
|
|
7610
|
+
"audience": "general",
|
|
7611
|
+
"status": "experimental",
|
|
7612
|
+
"summary": "Dedicated transient status for another participant actively composing a message.",
|
|
7613
|
+
"useWhen": [
|
|
7614
|
+
"An agent or person-to-person conversation needs to show that another participant is currently typing."
|
|
7615
|
+
],
|
|
7616
|
+
"avoidWhen": [
|
|
7617
|
+
"An operation is loading or streaming a response; use Loader or the owning region's busy state.",
|
|
7618
|
+
"The status represents persisted message content; use Message and MessageBubble."
|
|
7619
|
+
],
|
|
7620
|
+
"commonlyComposedWith": [
|
|
7621
|
+
"component:ds-message",
|
|
7622
|
+
"component:ds-message-scroller"
|
|
7623
|
+
],
|
|
7624
|
+
"patterns": [
|
|
7625
|
+
"pattern:conversation"
|
|
7626
|
+
],
|
|
7627
|
+
"accessibility": [
|
|
7628
|
+
"Provide concise localized status text that names the participant when that context is not otherwise clear.",
|
|
7629
|
+
"The polite atomic status announces typing without representing it as a message bubble."
|
|
7630
|
+
],
|
|
7631
|
+
"states": [
|
|
7632
|
+
"TypingIndicator is transient conversation status, never persisted message content.",
|
|
7633
|
+
"Its body-small secondary text may shimmer, while reduced-motion preferences retain a static readable status."
|
|
7634
|
+
],
|
|
7635
|
+
"responsiveBehavior": [
|
|
7636
|
+
"The indicator fills the message content width and wraps only when localized status text requires it."
|
|
7637
|
+
],
|
|
7638
|
+
"references": [
|
|
7639
|
+
{
|
|
7640
|
+
"label": "Storybook example",
|
|
7641
|
+
"path": "src/wc/components/TypingIndicator/TypingIndicator.stories.ts"
|
|
7642
|
+
}
|
|
7643
|
+
]
|
|
7644
|
+
},
|
|
7645
|
+
"props": {
|
|
7646
|
+
"label": {
|
|
7647
|
+
"type": "string",
|
|
7648
|
+
"required": false
|
|
7649
|
+
}
|
|
7650
|
+
},
|
|
7651
|
+
"events": [],
|
|
7652
|
+
"slots": [],
|
|
7653
|
+
"exports": {
|
|
7654
|
+
"customElement": "ds-typing-indicator",
|
|
7655
|
+
"react": "DsTypingIndicator",
|
|
7656
|
+
"angular": "DsTypingIndicator"
|
|
7657
|
+
}
|
|
7658
|
+
},
|
|
7659
|
+
"dependencies": [
|
|
7660
|
+
"@ds-mo/ui",
|
|
7661
|
+
"@ds-mo/tokens"
|
|
7662
|
+
],
|
|
7663
|
+
"registryDependencies": [
|
|
7664
|
+
"text"
|
|
7665
|
+
]
|
|
7176
7666
|
}
|
|
7177
7667
|
]
|
|
7178
7668
|
}
|