@ds-mo/ui 14.32.1 → 14.33.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.
Files changed (205) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +116 -1
  4. package/dist/angular/ds-card-action-center.d.ts +20 -0
  5. package/dist/angular/ds-card-action-center.js +42 -0
  6. package/dist/angular/index.d.ts +1 -1
  7. package/dist/angular/index.js +1 -0
  8. package/dist/angular/proxies.d.ts +1 -0
  9. package/dist/angular/proxies.js +1 -0
  10. package/dist/components/ds-agent-activity.js +1 -1
  11. package/dist/components/ds-agent-questionnaire.js +1 -1
  12. package/dist/components/ds-agent-response.js +1 -1
  13. package/dist/components/ds-agent-source-list.js +1 -1
  14. package/dist/components/ds-agent-tool-call.js +1 -1
  15. package/dist/components/ds-attachment-list.js +1 -1
  16. package/dist/components/ds-badge.js +1 -1
  17. package/dist/components/ds-banner.js +1 -1
  18. package/dist/components/ds-bar-action.js +1 -1
  19. package/dist/components/ds-bar-nav.js +1 -1
  20. package/dist/components/ds-bar-page-title.js +1 -1
  21. package/dist/components/ds-bar-title.js +1 -1
  22. package/dist/components/ds-bar-workflow.js +1 -1
  23. package/dist/components/ds-breadcrumb.js +1 -1
  24. package/dist/components/ds-button-filled.js +1 -1
  25. package/dist/components/ds-button-unfilled.js +1 -1
  26. package/dist/components/ds-card-action-center.d.ts +11 -0
  27. package/dist/components/ds-card-action-center.js +2 -0
  28. package/dist/components/ds-card-action-center.js.map +1 -0
  29. package/dist/components/ds-card-chart.js +1 -1
  30. package/dist/components/ds-card-navigation.js +1 -1
  31. package/dist/components/ds-card-overview.js +1 -1
  32. package/dist/components/ds-card-setting.js +1 -1
  33. package/dist/components/ds-card-settings-scope.js +1 -1
  34. package/dist/components/ds-chart-legend.js +1 -1
  35. package/dist/components/ds-chart.js +1 -1
  36. package/dist/components/ds-checkbox.js +1 -1
  37. package/dist/components/ds-chip.js +1 -1
  38. package/dist/components/ds-code-block.js +1 -1
  39. package/dist/components/ds-conversation-list-item.js +1 -1
  40. package/dist/components/ds-conversation-list-section.js +1 -1
  41. package/dist/components/ds-conversation-list.js +1 -1
  42. package/dist/components/ds-divider.js +1 -1
  43. package/dist/components/ds-empty-state.js +1 -1
  44. package/dist/components/ds-field.js +1 -1
  45. package/dist/components/ds-filter-menu.js +1 -1
  46. package/dist/components/ds-input.js +1 -1
  47. package/dist/components/ds-markdown.js +1 -1
  48. package/dist/components/ds-menu.js +1 -1
  49. package/dist/components/ds-message-actions.js +1 -1
  50. package/dist/components/ds-message-actions.js.map +1 -1
  51. package/dist/components/ds-message-bubble.js +1 -1
  52. package/dist/components/ds-message-bubble.js.map +1 -1
  53. package/dist/components/ds-message-composer.js +1 -1
  54. package/dist/components/ds-message-scroller.js +1 -1
  55. package/dist/components/ds-message.js +1 -1
  56. package/dist/components/ds-mobile-bar-nav.js +1 -1
  57. package/dist/components/ds-mobile-header.js +1 -1
  58. package/dist/components/ds-mobile-section-switcher.js +1 -1
  59. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  60. package/dist/components/ds-modal.js +1 -1
  61. package/dist/components/ds-pagination.js +1 -1
  62. package/dist/components/ds-panel-nav.js +1 -1
  63. package/dist/components/ds-panel-sub-nav.js +1 -1
  64. package/dist/components/ds-panel-tool-header.js +1 -1
  65. package/dist/components/ds-panel-tool-search.js +1 -1
  66. package/dist/components/ds-panel-tools.js +1 -1
  67. package/dist/components/ds-paper-texture.js +1 -1
  68. package/dist/components/ds-radio.js +1 -1
  69. package/dist/components/ds-score.js +1 -1
  70. package/dist/components/ds-scroll-overlay.js +1 -1
  71. package/dist/components/ds-select.js +1 -1
  72. package/dist/components/ds-shell-app.js +1 -1
  73. package/dist/components/ds-shell-app.js.map +1 -1
  74. package/dist/components/ds-shell-page.js +1 -1
  75. package/dist/components/ds-shell-tools.js +1 -1
  76. package/dist/components/ds-skeleton.js +1 -1
  77. package/dist/components/ds-slider.js +1 -1
  78. package/dist/components/ds-swatch-picker.js +1 -1
  79. package/dist/components/ds-switch.js +1 -1
  80. package/dist/components/ds-tab-group.js +1 -1
  81. package/dist/components/ds-table-filter.js +1 -1
  82. package/dist/components/ds-table-group.js +1 -1
  83. package/dist/components/ds-table-saved-views.js +1 -1
  84. package/dist/components/ds-table-search.js +1 -1
  85. package/dist/components/ds-table-sort.js +1 -1
  86. package/dist/components/ds-table-toolbar.js +1 -1
  87. package/dist/components/ds-table.js +1 -1
  88. package/dist/components/ds-tag.js +1 -1
  89. package/dist/components/ds-text.js +1 -1
  90. package/dist/components/ds-textarea.js +1 -1
  91. package/dist/components/ds-toast.js +1 -1
  92. package/dist/components/ds-tooltip-chart.js +1 -1
  93. package/dist/components/ds-tooltip.js +1 -1
  94. package/dist/components/ds-typing-indicator.js +1 -1
  95. package/dist/components/{p-P60MGUqZ.js → p-4DNyCYKM.js} +2 -2
  96. package/dist/components/{p-B9oadFSC.js → p-AkSwrAKR.js} +2 -2
  97. package/dist/components/{p-DPPM5T7q.js → p-B5QVra1K.js} +2 -2
  98. package/dist/components/{p-zunBF381.js → p-BNZsZ6gV.js} +2 -2
  99. package/dist/components/{p-DwxKwC5i.js → p-B_nPct4G.js} +2 -2
  100. package/dist/components/{p-B5W_r4vV.js → p-BlWNMytv.js} +2 -2
  101. package/dist/components/{p-9rzbZP-F.js → p-BqGdNrVl.js} +2 -2
  102. package/dist/components/{p-CakRq92x.js → p-Br0dx2uP.js} +2 -2
  103. package/dist/components/{p-gR6G5azA.js → p-BwsS_Hyr.js} +2 -2
  104. package/dist/components/{p-CN3roaMg.js → p-ByoywoBH.js} +2 -2
  105. package/dist/components/{p-BPTqn5zL.js → p-C1QHxVvP.js} +2 -2
  106. package/dist/components/{p-CumGY3uN.js → p-C51ytXM6.js} +2 -2
  107. package/dist/components/{p-DJHshyyC.js → p-C8XJgV1n.js} +2 -2
  108. package/dist/components/{p-BINlT3xz.js → p-C9_8-DHV.js} +2 -2
  109. package/dist/components/{p-oFbI_M5B.js → p-CBQzTgvI.js} +2 -2
  110. package/dist/components/p-CHBuzAYH.js +2 -0
  111. package/dist/components/{p-DzHXk0IG.js.map → p-CHBuzAYH.js.map} +1 -1
  112. package/dist/components/p-CHUdAW1Q.js +2 -0
  113. package/dist/components/{p-skVhQk9d.js.map → p-CHUdAW1Q.js.map} +1 -1
  114. package/dist/components/p-CIYJhyKt.js +2 -0
  115. package/dist/components/{p--VKxPUoV.js.map → p-CIYJhyKt.js.map} +1 -1
  116. package/dist/components/{p-DFWJmuaR.js → p-CIoeHcCk.js} +2 -2
  117. package/dist/components/{p-BG_n-zQT.js → p-CK2S28gU.js} +2 -2
  118. package/dist/components/{p-DC69DgAR.js → p-CKo2nySr.js} +2 -2
  119. package/dist/components/{p-BGGIEmQj.js → p-CMq-jKEI.js} +2 -2
  120. package/dist/components/{p-r5td84fg.js → p-CNDTHTf6.js} +2 -2
  121. package/dist/components/{p-ZG1KTkZw.js → p-CQqZgTYk.js} +2 -2
  122. package/dist/components/{p-BnWxbhFP.js → p-CXAa9TUM.js} +2 -2
  123. package/dist/components/{p-14sMoeTr.js → p-CnK36Be0.js} +2 -2
  124. package/dist/components/{p-DEuu954R.js → p-CoE7yza3.js} +2 -2
  125. package/dist/components/{p-BonnrRtE.js → p-CqeMumqy.js} +2 -2
  126. package/dist/components/{p-DGQUm3WL.js → p-Cw_npFwN.js} +2 -2
  127. package/dist/components/{p-BYVydAx2.js → p-CweS0FfJ.js} +2 -2
  128. package/dist/components/{p-B5OP31eo.js → p-DBZwI7HY.js} +2 -2
  129. package/dist/components/{p-B9WwU5vu.js → p-DEyvEIYL.js} +2 -2
  130. package/dist/components/{p-D59xX7JN.js → p-DVWOUQfT.js} +2 -2
  131. package/dist/components/{p-DQpw21HO.js → p-Da9VpZX2.js} +2 -2
  132. package/dist/components/{p-DVRL3oem.js → p-Dj296RmE.js} +2 -2
  133. package/dist/components/{p-z7Zj26BA.js → p-DjCnGxSd.js} +2 -2
  134. package/dist/components/{p-BFd18avA.js → p-DrjY8Mpy.js} +2 -2
  135. package/dist/components/{p-B66JqjpI.js → p-Dx7WcWW1.js} +2 -2
  136. package/dist/components/{p-DceM6xWR.js → p-DyyfWSLB.js} +2 -2
  137. package/dist/components/{p-UxIgD24y.js → p-DzbEJN1A.js} +2 -2
  138. package/dist/components/{p-BCRPg1Xs.js → p-LZ8F08Fj.js} +2 -2
  139. package/dist/components/{p-YFrD62Ml.js → p-OxdAzO4v.js} +2 -2
  140. package/dist/components/{p-uqsR98po.js → p-eo_pmPqp.js} +2 -2
  141. package/dist/components/{p-CR7G2BI6.js → p-lv4YQEsa.js} +2 -2
  142. package/dist/components/{p-OHT7lQVt.js → p-xxuHxP3u.js} +2 -2
  143. package/dist/components/{p-CD9AbaHQ.js → p-ya8A_SMw.js} +2 -2
  144. package/dist/docs/components.json +165 -21
  145. package/dist/mcp-data/registry/card-action-center.json +206 -0
  146. package/dist/mcp-data/registry/registry.json +118 -0
  147. package/dist/mcp-data/registry/shell-app.json +1 -1
  148. package/dist/react/components.d.ts +1 -0
  149. package/dist/react/components.js +1 -0
  150. package/dist/react/ds-card-action-center.d.ts +12 -0
  151. package/dist/react/ds-card-action-center.js +12 -0
  152. package/dist/types/components/CardActionCenter/CardActionCenter.d.ts +45 -0
  153. package/dist/types/components/CardActionCenter/index.d.ts +2 -0
  154. package/dist/types/components.d.ts +57 -0
  155. package/dist/vue/components.d.ts +1 -0
  156. package/dist/vue/components.js +1 -0
  157. package/dist/vue/ds-card-action-center.d.ts +3 -0
  158. package/dist/vue/ds-card-action-center.js +12 -0
  159. package/package.json +1 -1
  160. package/dist/components/p--VKxPUoV.js +0 -2
  161. package/dist/components/p-DzHXk0IG.js +0 -2
  162. package/dist/components/p-skVhQk9d.js +0 -2
  163. /package/dist/components/{p-P60MGUqZ.js.map → p-4DNyCYKM.js.map} +0 -0
  164. /package/dist/components/{p-B9oadFSC.js.map → p-AkSwrAKR.js.map} +0 -0
  165. /package/dist/components/{p-DPPM5T7q.js.map → p-B5QVra1K.js.map} +0 -0
  166. /package/dist/components/{p-zunBF381.js.map → p-BNZsZ6gV.js.map} +0 -0
  167. /package/dist/components/{p-DwxKwC5i.js.map → p-B_nPct4G.js.map} +0 -0
  168. /package/dist/components/{p-B5W_r4vV.js.map → p-BlWNMytv.js.map} +0 -0
  169. /package/dist/components/{p-9rzbZP-F.js.map → p-BqGdNrVl.js.map} +0 -0
  170. /package/dist/components/{p-CakRq92x.js.map → p-Br0dx2uP.js.map} +0 -0
  171. /package/dist/components/{p-gR6G5azA.js.map → p-BwsS_Hyr.js.map} +0 -0
  172. /package/dist/components/{p-CN3roaMg.js.map → p-ByoywoBH.js.map} +0 -0
  173. /package/dist/components/{p-BPTqn5zL.js.map → p-C1QHxVvP.js.map} +0 -0
  174. /package/dist/components/{p-CumGY3uN.js.map → p-C51ytXM6.js.map} +0 -0
  175. /package/dist/components/{p-DJHshyyC.js.map → p-C8XJgV1n.js.map} +0 -0
  176. /package/dist/components/{p-BINlT3xz.js.map → p-C9_8-DHV.js.map} +0 -0
  177. /package/dist/components/{p-oFbI_M5B.js.map → p-CBQzTgvI.js.map} +0 -0
  178. /package/dist/components/{p-DFWJmuaR.js.map → p-CIoeHcCk.js.map} +0 -0
  179. /package/dist/components/{p-BG_n-zQT.js.map → p-CK2S28gU.js.map} +0 -0
  180. /package/dist/components/{p-DC69DgAR.js.map → p-CKo2nySr.js.map} +0 -0
  181. /package/dist/components/{p-BGGIEmQj.js.map → p-CMq-jKEI.js.map} +0 -0
  182. /package/dist/components/{p-r5td84fg.js.map → p-CNDTHTf6.js.map} +0 -0
  183. /package/dist/components/{p-ZG1KTkZw.js.map → p-CQqZgTYk.js.map} +0 -0
  184. /package/dist/components/{p-BnWxbhFP.js.map → p-CXAa9TUM.js.map} +0 -0
  185. /package/dist/components/{p-14sMoeTr.js.map → p-CnK36Be0.js.map} +0 -0
  186. /package/dist/components/{p-DEuu954R.js.map → p-CoE7yza3.js.map} +0 -0
  187. /package/dist/components/{p-BonnrRtE.js.map → p-CqeMumqy.js.map} +0 -0
  188. /package/dist/components/{p-DGQUm3WL.js.map → p-Cw_npFwN.js.map} +0 -0
  189. /package/dist/components/{p-BYVydAx2.js.map → p-CweS0FfJ.js.map} +0 -0
  190. /package/dist/components/{p-B5OP31eo.js.map → p-DBZwI7HY.js.map} +0 -0
  191. /package/dist/components/{p-B9WwU5vu.js.map → p-DEyvEIYL.js.map} +0 -0
  192. /package/dist/components/{p-D59xX7JN.js.map → p-DVWOUQfT.js.map} +0 -0
  193. /package/dist/components/{p-DQpw21HO.js.map → p-Da9VpZX2.js.map} +0 -0
  194. /package/dist/components/{p-DVRL3oem.js.map → p-Dj296RmE.js.map} +0 -0
  195. /package/dist/components/{p-z7Zj26BA.js.map → p-DjCnGxSd.js.map} +0 -0
  196. /package/dist/components/{p-BFd18avA.js.map → p-DrjY8Mpy.js.map} +0 -0
  197. /package/dist/components/{p-B66JqjpI.js.map → p-Dx7WcWW1.js.map} +0 -0
  198. /package/dist/components/{p-DceM6xWR.js.map → p-DyyfWSLB.js.map} +0 -0
  199. /package/dist/components/{p-UxIgD24y.js.map → p-DzbEJN1A.js.map} +0 -0
  200. /package/dist/components/{p-BCRPg1Xs.js.map → p-LZ8F08Fj.js.map} +0 -0
  201. /package/dist/components/{p-YFrD62Ml.js.map → p-OxdAzO4v.js.map} +0 -0
  202. /package/dist/components/{p-uqsR98po.js.map → p-eo_pmPqp.js.map} +0 -0
  203. /package/dist/components/{p-CR7G2BI6.js.map → p-lv4YQEsa.js.map} +0 -0
  204. /package/dist/components/{p-OHT7lQVt.js.map → p-xxuHxP3u.js.map} +0 -0
  205. /package/dist/components/{p-CD9AbaHQ.js.map → p-ya8A_SMw.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2026-09-09T01:27:50",
2
+ "timestamp": "2026-09-09T03:12:36",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.43.5",
@@ -6924,6 +6924,128 @@
6924
6924
  ]
6925
6925
  }
6926
6926
  },
6927
+ {
6928
+ "filePath": "src/wc/components/CardActionCenter/CardActionCenter.tsx",
6929
+ "encapsulation": "scoped",
6930
+ "tag": "ds-card-action-center",
6931
+ "docs": "",
6932
+ "docsTags": [],
6933
+ "usage": {},
6934
+ "props": [
6935
+ {
6936
+ "name": "emptyMessage",
6937
+ "type": "string",
6938
+ "complexType": {
6939
+ "original": "string",
6940
+ "resolved": "string",
6941
+ "references": {}
6942
+ },
6943
+ "mutable": false,
6944
+ "attr": "empty-message",
6945
+ "reflectToAttr": false,
6946
+ "docs": "Copy shown when no section contains an action.",
6947
+ "docsTags": [
6948
+ {
6949
+ "name": "default",
6950
+ "text": "'No actions available'"
6951
+ }
6952
+ ],
6953
+ "default": "'No actions available'",
6954
+ "values": [
6955
+ {
6956
+ "type": "string"
6957
+ }
6958
+ ],
6959
+ "optional": false,
6960
+ "required": false,
6961
+ "getter": false,
6962
+ "setter": false
6963
+ },
6964
+ {
6965
+ "name": "sections",
6966
+ "type": "readonly CardActionCenterSection[]",
6967
+ "complexType": {
6968
+ "original": "ReadonlyArray<CardActionCenterSection>",
6969
+ "resolved": "readonly CardActionCenterSection[]",
6970
+ "references": {
6971
+ "ReadonlyArray": {
6972
+ "location": "global",
6973
+ "id": "global::ReadonlyArray"
6974
+ },
6975
+ "CardActionCenterSection": {
6976
+ "location": "local",
6977
+ "path": "/home/runner/work/compomo/compomo/src/wc/components/CardActionCenter/CardActionCenter.tsx",
6978
+ "id": "src/wc/components/CardActionCenter/CardActionCenter.tsx::CardActionCenterSection"
6979
+ }
6980
+ }
6981
+ },
6982
+ "mutable": false,
6983
+ "reflectToAttr": false,
6984
+ "docs": "Ordered groups of actions rendered in the card. Empty groups are omitted.",
6985
+ "docsTags": [
6986
+ {
6987
+ "name": "default",
6988
+ "text": "[]"
6989
+ }
6990
+ ],
6991
+ "default": "[]",
6992
+ "values": [
6993
+ {
6994
+ "type": "readonly CardActionCenterSection[]"
6995
+ }
6996
+ ],
6997
+ "optional": false,
6998
+ "required": false,
6999
+ "getter": false,
7000
+ "setter": false
7001
+ }
7002
+ ],
7003
+ "methods": [],
7004
+ "events": [
7005
+ {
7006
+ "event": "dsAction",
7007
+ "detail": "CardActionCenterActionDetail",
7008
+ "bubbles": true,
7009
+ "complexType": {
7010
+ "original": "CardActionCenterActionDetail",
7011
+ "resolved": "CardActionCenterActionDetail",
7012
+ "references": {
7013
+ "CardActionCenterActionDetail": {
7014
+ "location": "local",
7015
+ "path": "/home/runner/work/compomo/compomo/src/wc/components/CardActionCenter/CardActionCenter.tsx",
7016
+ "id": "src/wc/components/CardActionCenter/CardActionCenter.tsx::CardActionCenterActionDetail"
7017
+ }
7018
+ }
7019
+ },
7020
+ "cancelable": true,
7021
+ "composed": true,
7022
+ "docs": "Emitted when an available row is activated. When a row has an `href`,\nprevent this event to take over navigation with an application router.",
7023
+ "docsTags": []
7024
+ }
7025
+ ],
7026
+ "listeners": [],
7027
+ "styles": [],
7028
+ "slots": [],
7029
+ "parts": [],
7030
+ "states": [],
7031
+ "dependents": [],
7032
+ "dependencies": [
7033
+ "ds-tag",
7034
+ "ds-text",
7035
+ "ds-divider"
7036
+ ],
7037
+ "dependencyGraph": {
7038
+ "ds-card-action-center": [
7039
+ "ds-tag",
7040
+ "ds-text",
7041
+ "ds-divider"
7042
+ ],
7043
+ "ds-tag": [
7044
+ "ds-icon",
7045
+ "ds-text"
7046
+ ]
7047
+ }
7048
+ },
6927
7049
  {
6928
7050
  "filePath": "src/wc/components/CardChart/CardChart.tsx",
6929
7051
  "encapsulation": "scoped",
@@ -10586,6 +10708,7 @@
10586
10708
  "parts": [],
10587
10709
  "states": [],
10588
10710
  "dependents": [
10711
+ "ds-card-action-center",
10589
10712
  "ds-pagination",
10590
10713
  "ds-panel-tool-search",
10591
10714
  "ds-panel-tools",
@@ -10595,6 +10718,9 @@
10595
10718
  ],
10596
10719
  "dependencies": [],
10597
10720
  "dependencyGraph": {
10721
+ "ds-card-action-center": [
10722
+ "ds-divider"
10723
+ ],
10598
10724
  "ds-pagination": [
10599
10725
  "ds-divider"
10600
10726
  ],
@@ -33014,6 +33140,7 @@
33014
33140
  "parts": [],
33015
33141
  "states": [],
33016
33142
  "dependents": [
33143
+ "ds-card-action-center",
33017
33144
  "ds-filter-menu",
33018
33145
  "ds-menu",
33019
33146
  "ds-table"
@@ -33027,6 +33154,9 @@
33027
33154
  "ds-icon",
33028
33155
  "ds-text"
33029
33156
  ],
33157
+ "ds-card-action-center": [
33158
+ "ds-tag"
33159
+ ],
33030
33160
  "ds-filter-menu": [
33031
33161
  "ds-tag"
33032
33162
  ],
@@ -33687,6 +33817,7 @@
33687
33817
  "ds-breadcrumb",
33688
33818
  "ds-button-filled",
33689
33819
  "ds-button-unfilled",
33820
+ "ds-card-action-center",
33690
33821
  "ds-card-chart",
33691
33822
  "ds-card-navigation",
33692
33823
  "ds-card-overview",
@@ -33777,6 +33908,9 @@
33777
33908
  "ds-button-unfilled": [
33778
33909
  "ds-text"
33779
33910
  ],
33911
+ "ds-card-action-center": [
33912
+ "ds-text"
33913
+ ],
33780
33914
  "ds-card-chart": [
33781
33915
  "ds-text"
33782
33916
  ],
@@ -36073,6 +36207,36 @@
36073
36207
  "docstring": "",
36074
36208
  "path": "src/wc/components/ButtonUnfilled/ButtonUnfilled.tsx"
36075
36209
  },
36210
+ "src/wc/components/Tag/Tag.tsx::TagIntent": {
36211
+ "declaration": "export type TagIntent =\n | 'neutral'\n | 'brand'\n | 'ai'\n | 'negative'\n | 'warning'\n | 'caution'\n | 'positive';",
36212
+ "docstring": "",
36213
+ "path": "src/wc/components/Tag/Tag.tsx"
36214
+ },
36215
+ "src/wc/components/Tag/Tag.tsx::TagContrast": {
36216
+ "declaration": "export type TagContrast = 'strong' | 'bold' | 'medium' | 'faint';",
36217
+ "docstring": "",
36218
+ "path": "src/wc/components/Tag/Tag.tsx"
36219
+ },
36220
+ "src/wc/components/Tag/Tag.tsx::TagSize": {
36221
+ "declaration": "export type TagSize = 'md' | 'sm' | 'xs';",
36222
+ "docstring": "",
36223
+ "path": "src/wc/components/Tag/Tag.tsx"
36224
+ },
36225
+ "src/wc/utils/index.ts::ControlInsetDepth": {
36226
+ "declaration": "any",
36227
+ "docstring": "",
36228
+ "path": "src/wc/utils/index.ts"
36229
+ },
36230
+ "src/wc/components/CardActionCenter/CardActionCenter.tsx::CardActionCenterSection": {
36231
+ "declaration": "export interface CardActionCenterSection {\n id: string;\n heading: string;\n items: ReadonlyArray<CardActionCenterItem>;\n}",
36232
+ "docstring": "",
36233
+ "path": "src/wc/components/CardActionCenter/CardActionCenter.tsx"
36234
+ },
36235
+ "src/wc/components/CardActionCenter/CardActionCenter.tsx::CardActionCenterActionDetail": {
36236
+ "declaration": "export interface CardActionCenterActionDetail {\n sectionId: string;\n itemId: string;\n item: CardActionCenterItem;\n href?: string;\n originalEvent: MouseEvent;\n}",
36237
+ "docstring": "",
36238
+ "path": "src/wc/components/CardActionCenter/CardActionCenter.tsx"
36239
+ },
36076
36240
  "src/wc/components/CardChart/CardChart.tsx::CardChartVariant": {
36077
36241
  "declaration": "export type CardChartVariant = 'custom' | 'chart';",
36078
36242
  "docstring": "",
@@ -36153,11 +36317,6 @@
36153
36317
  "docstring": "",
36154
36318
  "path": "src/wc/components/Chip/Chip.tsx"
36155
36319
  },
36156
- "src/wc/utils/index.ts::ControlInsetDepth": {
36157
- "declaration": "any",
36158
- "docstring": "",
36159
- "path": "src/wc/utils/index.ts"
36160
- },
36161
36320
  "src/wc/components/ConversationList/ConversationList.tsx::ConversationListActionLayout": {
36162
36321
  "declaration": "export type ConversationListActionLayout = 'floating' | 'footer';",
36163
36322
  "docstring": "",
@@ -36263,21 +36422,6 @@
36263
36422
  "docstring": "",
36264
36423
  "path": "src/wc/components/Loader/Loader.tsx"
36265
36424
  },
36266
- "src/wc/components/Tag/Tag.tsx::TagIntent": {
36267
- "declaration": "export type TagIntent =\n | 'neutral'\n | 'brand'\n | 'ai'\n | 'negative'\n | 'warning'\n | 'caution'\n | 'positive';",
36268
- "docstring": "",
36269
- "path": "src/wc/components/Tag/Tag.tsx"
36270
- },
36271
- "src/wc/components/Tag/Tag.tsx::TagContrast": {
36272
- "declaration": "export type TagContrast = 'strong' | 'bold' | 'medium' | 'faint';",
36273
- "docstring": "",
36274
- "path": "src/wc/components/Tag/Tag.tsx"
36275
- },
36276
- "src/wc/components/Tag/Tag.tsx::TagSize": {
36277
- "declaration": "export type TagSize = 'md' | 'sm' | 'xs';",
36278
- "docstring": "",
36279
- "path": "src/wc/components/Tag/Tag.tsx"
36280
- },
36281
36425
  "src/wc/components/Menu/menu-types.ts::MenuItemData": {
36282
36426
  "declaration": "export interface MenuItemData {\n label: string;\n value?: string;\n subtext?: string;\n /** Leading decorative icon. Ignored when `reorderable` is true. */\n icon?: string;\n /** Show a supplemental brand notification dot. */\n dot?: boolean;\n /** Show a non-interactive tag at the trailing edge of the row. */\n tag?: MenuItemTagData;\n isSelected?: boolean;\n isInactive?: boolean;\n isDestructive?: boolean;\n /** Render a compact switch indicator; the menu row owns interaction. */\n showSwitch?: boolean;\n switchValue?: boolean;\n /** Prefix a drag handle and allow pointer and keyboard reorder within the contiguous reorderable run. */\n reorderable?: boolean;\n}",
36283
36427
  "docstring": "",
@@ -0,0 +1,206 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "card-action-center",
4
+ "title": "CardActionCenter",
5
+ "description": "Compact bordered card that groups overview-page actions, optional values or status tags, and native destinations into named sections.",
6
+ "type": "registry:ui",
7
+ "meta": {
8
+ "library": "@ds-mo/ui",
9
+ "distribution": "npm",
10
+ "storybook": "https://zainadeel.github.io/compomo/?path=/story/card-action-center",
11
+ "source": "src/wc/components/CardActionCenter/CardActionCenter.tsx",
12
+ "intentStatus": "complete",
13
+ "intent": {
14
+ "audience": "general",
15
+ "status": "experimental",
16
+ "summary": "Compact bordered card that groups overview-page actions, optional values or status tags, and native destinations into named sections.",
17
+ "useWhen": [
18
+ "An overview rail needs a compact action center with multiple named groups.",
19
+ "Action rows need optional counts or short values aligned at the trailing edge.",
20
+ "Related reports or resource destinations belong beside attention items in one bounded surface."
21
+ ],
22
+ "avoidWhen": [
23
+ "The complete card leads to one destination; use CardNavigation.",
24
+ "The surface edits settings in place; use CardSetting.",
25
+ "The content is a chart, legend, metric visualization, or other data-visualization composition; use CardChart or CardOverview.",
26
+ "Rows require descriptions, nested controls, menus, or selection state instead of one direct action."
27
+ ],
28
+ "alternatives": [
29
+ {
30
+ "when": "The entire surface represents one destination.",
31
+ "component": "component:ds-card-navigation",
32
+ "reason": "CardNavigation provides the single native-link card contract."
33
+ },
34
+ {
35
+ "when": "The card presents page-level score and metric summaries.",
36
+ "component": "component:ds-card-overview",
37
+ "reason": "CardOverview owns summary metrics, comparison periods, and selectable metric cells."
38
+ }
39
+ ],
40
+ "commonlyComposedWith": [
41
+ "component:ds-tag",
42
+ "component:ds-text"
43
+ ],
44
+ "accessibility": [
45
+ "Each non-empty group is a section labelled by an h2 heading, and each row is a native button or link.",
46
+ "Use href for real destinations so link context menus, modified clicks, and native browser semantics remain available.",
47
+ "Prevent the cancelable dsAction event only when an application router takes ownership of the same link activation.",
48
+ "Inactive items become disabled buttons and are removed from keyboard navigation rather than exposing a false destination.",
49
+ "Keep item labels concise; a visible trailing value participates in the action's accessible name."
50
+ ],
51
+ "states": [
52
+ "Rows expose distinct rest, hover, pressed, keyboard-focus, and inactive states.",
53
+ "An empty sections array or groups with no items render the configured empty message.",
54
+ "The application owns loading, error, permission, routing, and post-activation consequences and reflects availability through the supplied item data."
55
+ ],
56
+ "responsiveBehavior": [
57
+ "The card fills its parent width and never establishes a product breakpoint.",
58
+ "Long labels wrap while trailing values remain visible; the page owns rail width and movement below primary content.",
59
+ "Groups retain their order when the parent layout moves the complete card between desktop and mobile regions."
60
+ ],
61
+ "frameworkCaveats": {
62
+ "customElements": [
63
+ "Assign sections as a JavaScript property; complex arrays are not supported as string attributes.",
64
+ "Listen for dsAction and inspect sectionId, itemId, item, and the original pointer event."
65
+ ],
66
+ "react": [
67
+ "Pass sections as an array and handle onDsAction for product actions or client-side routing.",
68
+ "Prevent the event only when replacing native navigation for an item with href."
69
+ ],
70
+ "angular": [
71
+ "Bind [sections] through the generated standalone adapter and inspect $event.detail from (dsAction).",
72
+ "Keep product data and activation consequences in the Angular owner rather than embedding them in the component contract."
73
+ ]
74
+ },
75
+ "references": [
76
+ {
77
+ "label": "Storybook grouped, value, and empty examples",
78
+ "path": "src/wc/components/CardActionCenter/CardActionCenter.stories.ts"
79
+ },
80
+ {
81
+ "label": "Rendered semantics, interaction, and geometry coverage",
82
+ "path": "tests/e2e/card-action-center.spec.ts"
83
+ }
84
+ ]
85
+ },
86
+ "api": {
87
+ "props": {
88
+ "emptyMessage": {
89
+ "type": "string",
90
+ "resolvedType": "string",
91
+ "attribute": "empty-message",
92
+ "default": "'No actions available'",
93
+ "required": false,
94
+ "mutable": false,
95
+ "description": "Copy shown when no section contains an action."
96
+ },
97
+ "sections": {
98
+ "type": "ReadonlyArray<CardActionCenterSection>",
99
+ "resolvedType": "readonly CardActionCenterSection[]",
100
+ "default": "[]",
101
+ "required": false,
102
+ "mutable": false,
103
+ "description": "Ordered groups of actions rendered in the card. Empty groups are omitted."
104
+ }
105
+ },
106
+ "events": [
107
+ {
108
+ "name": "dsAction",
109
+ "detail": "CardActionCenterActionDetail",
110
+ "bubbles": true,
111
+ "cancelable": true,
112
+ "composed": true,
113
+ "description": "Emitted when an available row is activated. When a row has an `href`,\nprevent this event to take over navigation with an application router."
114
+ }
115
+ ],
116
+ "methods": [],
117
+ "slots": []
118
+ },
119
+ "props": {
120
+ "emptyMessage": {
121
+ "type": "string",
122
+ "resolvedType": "string",
123
+ "attribute": "empty-message",
124
+ "default": "'No actions available'",
125
+ "required": false,
126
+ "mutable": false,
127
+ "description": "Copy shown when no section contains an action."
128
+ },
129
+ "sections": {
130
+ "type": "ReadonlyArray<CardActionCenterSection>",
131
+ "resolvedType": "readonly CardActionCenterSection[]",
132
+ "default": "[]",
133
+ "required": false,
134
+ "mutable": false,
135
+ "description": "Ordered groups of actions rendered in the card. Empty groups are omitted."
136
+ }
137
+ },
138
+ "events": [
139
+ {
140
+ "name": "dsAction",
141
+ "detail": "CardActionCenterActionDetail",
142
+ "bubbles": true,
143
+ "cancelable": true,
144
+ "composed": true,
145
+ "description": "Emitted when an available row is activated. When a row has an `href`,\nprevent this event to take over navigation with an application router."
146
+ }
147
+ ],
148
+ "methods": [],
149
+ "slots": [],
150
+ "exports": {
151
+ "customElement": "ds-card-action-center",
152
+ "react": "DsCardActionCenter",
153
+ "vue": "DsCardActionCenter",
154
+ "angular": "DsCardActionCenter"
155
+ },
156
+ "consumption": {
157
+ "install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
158
+ "cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
159
+ "customElements": {
160
+ "import": "import '@ds-mo/ui/dist/components/ds-card-action-center.js';",
161
+ "example": "<ds-card-action-center></ds-card-action-center>"
162
+ },
163
+ "react": {
164
+ "import": "import { DsCardActionCenter } from '@ds-mo/ui/react';",
165
+ "example": "<DsCardActionCenter />"
166
+ },
167
+ "vue": {
168
+ "import": "import { DsCardActionCenter } from '@ds-mo/ui/vue';",
169
+ "example": "<DsCardActionCenter />"
170
+ },
171
+ "angular": {
172
+ "import": "import { DsCardActionCenter } from '@ds-mo/ui/angular/ds-card-action-center';",
173
+ "example": "<ds-card-action-center></ds-card-action-center>"
174
+ },
175
+ "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: sections.",
176
+ "peerDependencies": {
177
+ "required": [
178
+ "@ds-mo/tokens ^6.5.1",
179
+ "@ds-mo/icons ^7.0.0"
180
+ ],
181
+ "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
182
+ }
183
+ }
184
+ },
185
+ "dependencies": [
186
+ "@ds-mo/ui",
187
+ "@ds-mo/tokens"
188
+ ],
189
+ "registryDependencies": [
190
+ "divider",
191
+ "tag",
192
+ "text"
193
+ ],
194
+ "files": [
195
+ {
196
+ "path": "src/wc/components/CardActionCenter/CardActionCenter.css",
197
+ "content": "@import '../../utils/radius.css';\n@import '../../utils/interaction-fill.css';\n@import '../../utils/focus-ring.css';\n@import '../../utils/control-inactive.css';\n@import '../../utils/forced-colors.css';\n\n:host {\n display: flex;\n flex-direction: column;\n gap: 0;\n min-width: 0;\n padding: calc(var(--dimension-space-100) - var(--dimension-stroke-width-012));\n box-sizing: border-box;\n border: var(--dimension-stroke-width-012) solid var(--color-border-tertiary);\n border-radius: var(--ds-radius-card);\n background: var(--color-background-primary);\n}\n\n.card-action-center__group,\n.card-action-center__section {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n\n.card-action-center__section {\n gap: var(--dimension-space-050);\n}\n\n.card-action-center__divider {\n display: flex;\n flex: 0 0 var(--dimension-space-400);\n align-items: center;\n min-width: 0;\n}\n\n.card-action-center__section-heading {\n display: flex;\n flex: 1 1 auto;\n align-items: center;\n min-width: 0;\n min-height: var(--dimension-size-400);\n padding-inline: var(--dimension-space-100);\n box-sizing: border-box;\n user-select: none;\n}\n\n.card-action-center__list {\n display: flex;\n flex-direction: column;\n gap: var(--dimension-space-050);\n margin: 0;\n padding: 0;\n list-style: none;\n}\n\n.card-action-center__item {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-050);\n width: 100%;\n height: var(--dimension-size-400);\n padding: 0 var(--dimension-space-075);\n overflow: hidden;\n box-sizing: border-box;\n appearance: none;\n border: none;\n border-radius: var(--dimension-radius-025);\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: start;\n text-decoration: none;\n}\n\n.card-action-center__item--tagged {\n padding-inline-end: var(--dimension-space-075);\n}\n\n.card-action-center__item-content {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n gap: var(--dimension-space-025);\n min-width: 0;\n padding-inline: var(--dimension-space-025);\n}\n\n.card-action-center__item-label {\n display: block;\n min-width: 0;\n}\n\n.card-action-center__item-value {\n flex: 0 0 auto;\n}\n\nds-tag.card-action-center__item-value {\n font-variant-numeric: tabular-nums;\n font-feature-settings: 'tnum';\n}\n\n.card-action-center__empty {\n margin: 0;\n padding: var(--dimension-space-100);\n text-align: center;\n}\n\n@media (forced-colors: active) {\n :host {\n border-color: var(--ds-forced-color-content);\n background: var(--ds-forced-color-surface);\n }\n}\n",
198
+ "type": "registry:ui"
199
+ },
200
+ {
201
+ "path": "src/wc/components/CardActionCenter/CardActionCenter.tsx",
202
+ "content": "import { Component, Event, EventEmitter, h, Host, Prop } from '@stencil/core';\nimport { resolveSafeUrl } from '../../utils';\nimport type { TagContrast, TagIntent } from '../Tag/Tag';\n\nexport interface CardActionCenterTag {\n intent?: TagIntent;\n contrast?: TagContrast;\n}\n\nexport interface CardActionCenterItem {\n id: string;\n label: string;\n value?: string | number;\n tag?: CardActionCenterTag;\n href?: string;\n isInactive?: boolean;\n}\n\nexport interface CardActionCenterSection {\n id: string;\n heading: string;\n items: ReadonlyArray<CardActionCenterItem>;\n}\n\nexport interface CardActionCenterActionDetail {\n sectionId: string;\n itemId: string;\n item: CardActionCenterItem;\n href?: string;\n originalEvent: MouseEvent;\n}\n\nlet nextCardActionCenterId = 0;\n\n@Component({\n tag: 'ds-card-action-center',\n styleUrl: 'CardActionCenter.css',\n scoped: true,\n})\nexport class CardActionCenter {\n /** Ordered groups of actions rendered in the card. Empty groups are omitted. */\n @Prop() sections: ReadonlyArray<CardActionCenterSection> = [];\n\n /** Copy shown when no section contains an action. */\n @Prop() emptyMessage: string = 'No actions available';\n\n /**\n * Emitted when an available row is activated. When a row has an `href`,\n * prevent this event to take over navigation with an application router.\n */\n @Event({ cancelable: true }) dsAction!: EventEmitter<CardActionCenterActionDetail>;\n\n private readonly instanceId = ++nextCardActionCenterId;\n\n private get visibleSections(): ReadonlyArray<CardActionCenterSection> {\n return this.sections.filter(section => section.items.length > 0);\n }\n\n private headingId(section: CardActionCenterSection, index: number): string {\n const sectionId = section.id.replace(/[^a-zA-Z0-9_-]/g, '-');\n return `ds-card-action-center-${this.instanceId}-${index}-${sectionId}`;\n }\n\n private handleAction(\n section: CardActionCenterSection,\n item: CardActionCenterItem,\n href: string | undefined,\n originalEvent: MouseEvent\n ) {\n if (item.isInactive) return;\n\n const actionEvent = this.dsAction.emit({\n sectionId: section.id,\n itemId: item.id,\n item,\n href,\n originalEvent,\n });\n if (href && actionEvent.defaultPrevented) originalEvent.preventDefault();\n }\n\n private renderValue(item: CardActionCenterItem) {\n if (item.value === undefined || item.value === null) return null;\n const value = String(item.value);\n\n if (item.tag) {\n return (\n <ds-tag\n class=\"card-action-center__item-value ds-interaction-fill__content\"\n label={value}\n intent={item.tag.intent ?? 'neutral'}\n contrast={item.tag.contrast ?? 'faint'}\n size=\"sm\"\n isInset\n rounded\n ></ds-tag>\n );\n }\n\n return (\n <ds-text\n class=\"card-action-center__item-value ds-interaction-fill__content\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n emphasis\n wrap=\"nowrap\"\n fontFeature=\"tabular-nums\"\n as=\"span\"\n >\n {value}\n </ds-text>\n );\n }\n\n private renderItem(section: CardActionCenterSection, item: CardActionCenterItem) {\n const href = item.isInactive ? undefined : resolveSafeUrl(item.href);\n const classes = {\n 'card-action-center__item': true,\n 'card-action-center__item--tagged': !!item.tag && item.value != null,\n 'ds-interaction-fill': true,\n 'ds-focus-ring-inset': true,\n 'ds-control-inactive': !!item.isInactive,\n };\n const content = [\n <ds-text\n class=\"card-action-center__item-content card-action-center__item-label ds-interaction-fill__content\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n wrap=\"balance\"\n as=\"span\"\n >\n {item.label}\n </ds-text>,\n this.renderValue(item),\n ];\n\n if (href) {\n return (\n <a\n class={classes}\n href={href}\n onClick={(event: MouseEvent) => this.handleAction(section, item, href, event)}\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n type=\"button\"\n class={classes}\n disabled={item.isInactive || undefined}\n onClick={(event: MouseEvent) => this.handleAction(section, item, undefined, event)}\n >\n {content}\n </button>\n );\n }\n\n render() {\n const sections = this.visibleSections;\n\n return (\n <Host>\n {sections.length ? (\n sections.map((section, sectionIndex) => (\n <div class=\"card-action-center__group\">\n {sectionIndex > 0 ? (\n <div class=\"card-action-center__divider\">\n <ds-divider\n inset=\"space-100\"\n length=\"calc(100% - var(--dimension-space-200))\"\n ></ds-divider>\n </div>\n ) : null}\n <section\n class=\"card-action-center__section\"\n aria-labelledby={this.headingId(section, sectionIndex)}\n >\n <ds-text\n id={this.headingId(section, sectionIndex)}\n class=\"card-action-center__section-heading\"\n variant=\"text-title-small\"\n emphasis\n color=\"primary\"\n wrap=\"balance\"\n as=\"h2\"\n >\n {section.heading}\n </ds-text>\n <ul class=\"card-action-center__list\">\n {section.items.map(item => (\n <li>{this.renderItem(section, item)}</li>\n ))}\n </ul>\n </section>\n </div>\n ))\n ) : (\n <ds-text\n class=\"card-action-center__empty\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n wrap=\"balance\"\n as=\"p\"\n >\n {this.emptyMessage}\n </ds-text>\n )}\n </Host>\n );\n }\n}\n",
203
+ "type": "registry:ui"
204
+ }
205
+ ]
206
+ }
@@ -2497,6 +2497,124 @@
2497
2497
  "tooltip"
2498
2498
  ]
2499
2499
  },
2500
+ {
2501
+ "name": "card-action-center",
2502
+ "title": "CardActionCenter",
2503
+ "description": "Compact bordered card that groups overview-page actions, optional values or status tags, and native destinations into named sections.",
2504
+ "type": "registry:ui",
2505
+ "meta": {
2506
+ "library": "@ds-mo/ui",
2507
+ "distribution": "npm",
2508
+ "storybook": "https://zainadeel.github.io/compomo/?path=/story/card-action-center",
2509
+ "source": "src/wc/components/CardActionCenter/CardActionCenter.tsx",
2510
+ "intentStatus": "complete",
2511
+ "intent": {
2512
+ "audience": "general",
2513
+ "status": "experimental",
2514
+ "summary": "Compact bordered card that groups overview-page actions, optional values or status tags, and native destinations into named sections.",
2515
+ "useWhen": [
2516
+ "An overview rail needs a compact action center with multiple named groups.",
2517
+ "Action rows need optional counts or short values aligned at the trailing edge.",
2518
+ "Related reports or resource destinations belong beside attention items in one bounded surface."
2519
+ ],
2520
+ "avoidWhen": [
2521
+ "The complete card leads to one destination; use CardNavigation.",
2522
+ "The surface edits settings in place; use CardSetting.",
2523
+ "The content is a chart, legend, metric visualization, or other data-visualization composition; use CardChart or CardOverview.",
2524
+ "Rows require descriptions, nested controls, menus, or selection state instead of one direct action."
2525
+ ],
2526
+ "alternatives": [
2527
+ {
2528
+ "when": "The entire surface represents one destination.",
2529
+ "component": "component:ds-card-navigation",
2530
+ "reason": "CardNavigation provides the single native-link card contract."
2531
+ },
2532
+ {
2533
+ "when": "The card presents page-level score and metric summaries.",
2534
+ "component": "component:ds-card-overview",
2535
+ "reason": "CardOverview owns summary metrics, comparison periods, and selectable metric cells."
2536
+ }
2537
+ ],
2538
+ "commonlyComposedWith": [
2539
+ "component:ds-tag",
2540
+ "component:ds-text"
2541
+ ],
2542
+ "accessibility": [
2543
+ "Each non-empty group is a section labelled by an h2 heading, and each row is a native button or link.",
2544
+ "Use href for real destinations so link context menus, modified clicks, and native browser semantics remain available.",
2545
+ "Prevent the cancelable dsAction event only when an application router takes ownership of the same link activation.",
2546
+ "Inactive items become disabled buttons and are removed from keyboard navigation rather than exposing a false destination.",
2547
+ "Keep item labels concise; a visible trailing value participates in the action's accessible name."
2548
+ ],
2549
+ "states": [
2550
+ "Rows expose distinct rest, hover, pressed, keyboard-focus, and inactive states.",
2551
+ "An empty sections array or groups with no items render the configured empty message.",
2552
+ "The application owns loading, error, permission, routing, and post-activation consequences and reflects availability through the supplied item data."
2553
+ ],
2554
+ "responsiveBehavior": [
2555
+ "The card fills its parent width and never establishes a product breakpoint.",
2556
+ "Long labels wrap while trailing values remain visible; the page owns rail width and movement below primary content.",
2557
+ "Groups retain their order when the parent layout moves the complete card between desktop and mobile regions."
2558
+ ],
2559
+ "frameworkCaveats": {
2560
+ "customElements": [
2561
+ "Assign sections as a JavaScript property; complex arrays are not supported as string attributes.",
2562
+ "Listen for dsAction and inspect sectionId, itemId, item, and the original pointer event."
2563
+ ],
2564
+ "react": [
2565
+ "Pass sections as an array and handle onDsAction for product actions or client-side routing.",
2566
+ "Prevent the event only when replacing native navigation for an item with href."
2567
+ ],
2568
+ "angular": [
2569
+ "Bind [sections] through the generated standalone adapter and inspect $event.detail from (dsAction).",
2570
+ "Keep product data and activation consequences in the Angular owner rather than embedding them in the component contract."
2571
+ ]
2572
+ },
2573
+ "references": [
2574
+ {
2575
+ "label": "Storybook grouped, value, and empty examples",
2576
+ "path": "src/wc/components/CardActionCenter/CardActionCenter.stories.ts"
2577
+ },
2578
+ {
2579
+ "label": "Rendered semantics, interaction, and geometry coverage",
2580
+ "path": "tests/e2e/card-action-center.spec.ts"
2581
+ }
2582
+ ]
2583
+ },
2584
+ "props": {
2585
+ "emptyMessage": {
2586
+ "type": "string",
2587
+ "required": false
2588
+ },
2589
+ "sections": {
2590
+ "type": "ReadonlyArray<CardActionCenterSection>",
2591
+ "required": false
2592
+ }
2593
+ },
2594
+ "events": [
2595
+ {
2596
+ "name": "dsAction",
2597
+ "detail": "CardActionCenterActionDetail"
2598
+ }
2599
+ ],
2600
+ "slots": [],
2601
+ "exports": {
2602
+ "customElement": "ds-card-action-center",
2603
+ "react": "DsCardActionCenter",
2604
+ "vue": "DsCardActionCenter",
2605
+ "angular": "DsCardActionCenter"
2606
+ }
2607
+ },
2608
+ "dependencies": [
2609
+ "@ds-mo/ui",
2610
+ "@ds-mo/tokens"
2611
+ ],
2612
+ "registryDependencies": [
2613
+ "divider",
2614
+ "tag",
2615
+ "text"
2616
+ ]
2617
+ },
2500
2618
  {
2501
2619
  "name": "card-chart",
2502
2620
  "title": "CardChart",
@@ -694,7 +694,7 @@
694
694
  "files": [
695
695
  {
696
696
  "path": "src/wc/components/ShellApp/ShellApp.css",
697
- "content": ":host {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n overflow: hidden;\n overscroll-behavior: none;\n font-family: var(--typography-font-family-ui, system-ui);\n --ds-shell-panel-tools-width: var(--dimension-panel-width-xs);\n --ds-shell-gradient-context: flat;\n}\n\n:host {\n --_shell-chrome-bg: var(--color-background-secondary);\n}\n\n:host(.shell-app--gradient) {\n --ds-shell-gradient-context: gradient;\n}\n\n.shell-app__row {\n display: flex;\n flex: 1 1 0;\n min-height: 0;\n position: relative;\n}\n\n.shell-app__banner {\n --_shell-banner-edge-display: none;\n flex: 0 0 auto;\n min-width: 0;\n position: relative;\n z-index: 5;\n}\n\n.shell-app__banner ::slotted(ds-banner) {\n display: grid;\n width: 100%;\n}\n\n/*\n * One chrome layer behind the shell row. Wash uses background-attachment: fixed\n * so the pattern is locked to the viewport — panel/tools collapse only changes the\n * transparent window, not the pattern phase. JS sets wash background-size from\n * readShellViewportDimensions(), not the shell element box.\n */\n.shell-app__chrome {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 0;\n overflow: hidden;\n background-color: var(--_shell-chrome-bg);\n}\n\n:host(.shell-app--gradient) .shell-app__chrome::before {\n content: '';\n position: absolute;\n inset: 0;\n pointer-events: none;\n background-position: 0 0;\n background-attachment: fixed;\n z-index: 1;\n opacity: var(--ds-shell-gradient-opacity, 1);\n background-image: var(--ds-shell-gradient-image, none);\n background-size: var(--ds-shell-gradient-size, auto);\n background-repeat: no-repeat;\n}\n\n.shell-app__paper-texture {\n z-index: 2;\n}\n\n.shell-app__panel {\n flex: 0 0 auto;\n min-height: 0;\n height: 100%;\n position: relative;\n /* Above main so resize handle line can paint over the workspace edge */\n z-index: 2;\n}\n\n.shell-app__panel ::slotted(ds-panel-nav) {\n display: block;\n height: 100%;\n}\n\n.shell-app__panel > ds-panel-nav {\n display: block;\n height: 100%;\n}\n\n.shell-app__main {\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n grid-template-rows: auto minmax(0, 1fr);\n grid-template-areas:\n 'bar tools'\n 'content tools';\n position: relative;\n z-index: 1;\n}\n\n.shell-app__mobile-sheet-nav,\n.shell-app__mobile-bar-nav {\n display: none;\n}\n\n.shell-app__bar {\n grid-area: bar;\n flex: 0 0 auto;\n min-width: 0;\n}\n\n.shell-app__bar ::slotted(ds-bar-nav) {\n display: block;\n}\n\n.shell-app__bar ::slotted(ds-bar-title),\n.shell-app__bar ::slotted(ds-bar-page-title) {\n display: block;\n}\n\n.shell-app__bar > ds-bar-nav {\n display: block;\n}\n\n.shell-app__bar > ds-bar-title,\n.shell-app__bar > ds-bar-page-title {\n display: block;\n}\n\n.shell-app__content {\n grid-area: content;\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n overflow: auto;\n overscroll-behavior: none;\n /* Limit reflow to the page column — not on __main (breaks tools flex shrink). */\n contain: layout;\n}\n\n/* Layout scroller, not a control: keep it keyboard-focusable without a page-sized ring. */\n.shell-app__content:focus,\n.shell-app__content:focus-visible {\n outline: none;\n}\n\n/* Opaque page surface — masks the fixed chrome layer in the content column. */\n.shell-app__content {\n position: relative;\n z-index: 1;\n background-color: var(--color-background-primary);\n}\n\n.shell-app__tools {\n grid-area: tools;\n flex: 0 0 auto;\n min-width: 0;\n min-height: 0;\n height: 100%;\n display: flex;\n position: relative;\n z-index: 0;\n overflow: hidden;\n}\n\n.shell-app__tools ::slotted(ds-panel-tools) {\n display: block;\n height: 100%;\n min-height: 0;\n}\n\n.shell-app__tools ::slotted(ds-shell-tools) {\n display: block;\n height: 100%;\n min-height: 0;\n}\n\n.shell-app__tools > ds-shell-tools {\n display: block;\n height: 100%;\n min-height: 0;\n}\n\n.shell-app__tool-slot-proxy {\n display: block;\n width: 100%;\n height: 100%;\n min-width: 0;\n min-height: 0;\n}\n\n.shell-app__content > ds-shell-page {\n display: block;\n min-height: 100%;\n}\n\n:host(.shell-app--tools-fullscreen) .shell-app__panel,\n:host(.shell-app--tools-fullscreen) .shell-app__bar,\n:host(.shell-app--tools-fullscreen) .shell-app__content {\n visibility: hidden;\n}\n\n:host(.shell-app--mobile) {\n --_shell-chrome-bg: var(--color-background-primary);\n padding-block-start: env(safe-area-inset-top);\n background: var(--ds-shell-safe-area-background, var(--color-background-primary));\n}\n\n:host(.shell-app--mobile) .shell-app__banner {\n --_shell-banner-edge-display: block;\n}\n\n/* Refresh the Mobile WebKit stage layer without remounting app content. */\n:host(.shell-app--mobile.shell-app--foreground-refresh) .shell-app__main {\n transform: translateZ(0);\n}\n\n:host(.shell-app--mobile) .shell-app__chrome,\n:host(.shell-app--mobile) .shell-app__panel,\n:host(.shell-app--mobile) .shell-app__bar {\n display: none;\n}\n\n:host(.shell-app--mobile) .shell-app__main {\n width: 100%;\n box-sizing: border-box;\n grid-template-columns: minmax(0, 1fr);\n grid-template-rows: minmax(0, 1fr) auto;\n grid-template-areas:\n 'stage'\n 'mobile-bar-nav';\n background: var(--color-background-primary);\n}\n\n:host(.shell-app--mobile) .shell-app__content,\n:host(.shell-app--mobile) .shell-app__tools,\n:host(.shell-app--mobile) .shell-app__mobile-sheet-nav {\n grid-area: stage;\n min-width: 0;\n min-height: 0;\n height: 100%;\n position: relative;\n}\n\n:host(.shell-app--mobile) .shell-app__content {\n z-index: 1;\n overflow: auto;\n}\n\n:host(.shell-app--mobile) .shell-app__tools {\n z-index: 2;\n width: 100%;\n overflow: hidden;\n background: var(--color-background-primary);\n}\n\n:host(.shell-app--mobile) .shell-app__mobile-sheet-nav {\n display: block;\n z-index: 3;\n overflow: hidden;\n background: var(--color-background-primary);\n}\n\n:host(.shell-app--mobile) .shell-app__mobile-bar-nav {\n grid-area: mobile-bar-nav;\n display: block;\n min-width: 0;\n position: relative;\n z-index: 4;\n}\n\n:host(.shell-app--mobile) .shell-app__tools[hidden],\n:host(.shell-app--mobile) .shell-app__mobile-sheet-nav[hidden],\n:host(.shell-app--mobile) .shell-app__mobile-bar-nav[hidden] {\n display: none;\n}\n\n:host(.shell-app--mobile-tool-active) .shell-app__content,\n:host(.shell-app--mobile-sheet-nav-open) .shell-app__content,\n:host(.shell-app--mobile-sheet-nav-open) .shell-app__tools {\n visibility: hidden;\n}\n",
697
+ "content": ":host {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n overflow: hidden;\n overscroll-behavior: none;\n font-family: var(--typography-font-family-ui, system-ui);\n --ds-shell-panel-tools-width: var(--dimension-panel-width-xs);\n --ds-shell-gradient-context: flat;\n}\n\n:host {\n --_shell-chrome-bg: var(--color-background-secondary);\n}\n\n:host(.shell-app--gradient) {\n --ds-shell-gradient-context: gradient;\n}\n\n.shell-app__row {\n display: flex;\n flex: 1 1 0;\n min-height: 0;\n position: relative;\n}\n\n.shell-app__banner {\n --_shell-banner-edge-display: none;\n flex: 0 0 auto;\n min-width: 0;\n position: relative;\n z-index: 5;\n}\n\n.shell-app__banner ::slotted(ds-banner) {\n display: grid;\n width: 100%;\n}\n\n/*\n * One chrome layer behind the shell row. Wash uses background-attachment: fixed\n * so the pattern is locked to the viewport — panel/tools collapse only changes the\n * transparent window, not the pattern phase. JS sets wash background-size from\n * readShellViewportDimensions(), not the shell element box.\n */\n.shell-app__chrome {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 0;\n overflow: hidden;\n background-color: var(--_shell-chrome-bg);\n}\n\n:host(.shell-app--gradient) .shell-app__chrome::before {\n content: '';\n position: absolute;\n inset: 0;\n pointer-events: none;\n background-position: 0 0;\n background-attachment: fixed;\n z-index: 1;\n opacity: var(--ds-shell-gradient-opacity, 1);\n background-image: var(--ds-shell-gradient-image, none);\n background-size: var(--ds-shell-gradient-size, auto);\n background-repeat: no-repeat;\n}\n\n.shell-app__paper-texture {\n z-index: 2;\n}\n\n.shell-app__panel {\n flex: 0 0 auto;\n min-height: 0;\n height: 100%;\n position: relative;\n /* Above main so resize handle line can paint over the workspace edge */\n z-index: 2;\n}\n\n.shell-app__panel ::slotted(ds-panel-nav) {\n display: block;\n height: 100%;\n}\n\n.shell-app__panel > ds-panel-nav {\n display: block;\n height: 100%;\n}\n\n.shell-app__main {\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n grid-template-rows: auto minmax(0, 1fr);\n grid-template-areas:\n 'bar tools'\n 'content tools';\n position: relative;\n z-index: 1;\n}\n\n.shell-app__mobile-sheet-nav,\n.shell-app__mobile-bar-nav {\n display: none;\n}\n\n.shell-app__bar {\n grid-area: bar;\n flex: 0 0 auto;\n min-width: 0;\n}\n\n.shell-app__bar ::slotted(ds-bar-nav) {\n display: block;\n}\n\n.shell-app__bar ::slotted(ds-bar-title),\n.shell-app__bar ::slotted(ds-bar-page-title) {\n display: block;\n}\n\n.shell-app__bar > ds-bar-nav {\n display: block;\n}\n\n.shell-app__bar > ds-bar-title,\n.shell-app__bar > ds-bar-page-title {\n display: block;\n}\n\n.shell-app__content {\n grid-area: content;\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n overflow: auto;\n overscroll-behavior: none;\n /* Limit reflow to the page column — not on __main (breaks tools flex shrink). */\n contain: layout;\n}\n\n/* Layout scroller, not a control: keep it keyboard-focusable without a page-sized ring. */\n.shell-app__content:focus,\n.shell-app__content:focus-visible {\n outline: none;\n}\n\n/* Opaque page surface — masks the fixed chrome layer in the content column. */\n.shell-app__content {\n position: relative;\n z-index: 1;\n background-color: var(--color-background-primary);\n}\n\n.shell-app__tools {\n grid-area: tools;\n flex: 0 0 auto;\n min-width: 0;\n min-height: 0;\n height: 100%;\n display: flex;\n position: relative;\n z-index: 0;\n overflow: hidden;\n}\n\n.shell-app__tools ::slotted(ds-panel-tools) {\n display: block;\n height: 100%;\n min-height: 0;\n}\n\n.shell-app__tools ::slotted(ds-shell-tools) {\n display: block;\n height: 100%;\n min-height: 0;\n}\n\n.shell-app__tools > ds-shell-tools {\n display: block;\n height: 100%;\n min-height: 0;\n}\n\n.shell-app__tool-slot-proxy {\n display: block;\n width: 100%;\n height: 100%;\n min-width: 0;\n min-height: 0;\n}\n\n.shell-app__content > ds-shell-page {\n display: block;\n min-height: 100%;\n}\n\n:host(.shell-app--tools-fullscreen) .shell-app__main {\n /* Above panel chrome while remaining below the global banner layer. */\n z-index: 3;\n}\n\n:host(.shell-app--tools-fullscreen) .shell-app__tools {\n /* Fullscreen tools must outrank retained page-owned overlays in content. */\n z-index: 2;\n}\n\n:host(.shell-app--tools-fullscreen) .shell-app__panel,\n:host(.shell-app--tools-fullscreen) .shell-app__bar,\n:host(.shell-app--tools-fullscreen) .shell-app__content {\n visibility: hidden;\n}\n\n:host(.shell-app--mobile) {\n --_shell-chrome-bg: var(--color-background-primary);\n padding-block-start: env(safe-area-inset-top);\n background: var(--ds-shell-safe-area-background, var(--color-background-primary));\n}\n\n:host(.shell-app--mobile) .shell-app__banner {\n --_shell-banner-edge-display: block;\n}\n\n/* Refresh the Mobile WebKit stage layer without remounting app content. */\n:host(.shell-app--mobile.shell-app--foreground-refresh) .shell-app__main {\n transform: translateZ(0);\n}\n\n:host(.shell-app--mobile) .shell-app__chrome,\n:host(.shell-app--mobile) .shell-app__panel,\n:host(.shell-app--mobile) .shell-app__bar {\n display: none;\n}\n\n:host(.shell-app--mobile) .shell-app__main {\n width: 100%;\n box-sizing: border-box;\n grid-template-columns: minmax(0, 1fr);\n grid-template-rows: minmax(0, 1fr) auto;\n grid-template-areas:\n 'stage'\n 'mobile-bar-nav';\n background: var(--color-background-primary);\n}\n\n:host(.shell-app--mobile) .shell-app__content,\n:host(.shell-app--mobile) .shell-app__tools,\n:host(.shell-app--mobile) .shell-app__mobile-sheet-nav {\n grid-area: stage;\n min-width: 0;\n min-height: 0;\n height: 100%;\n position: relative;\n}\n\n:host(.shell-app--mobile) .shell-app__content {\n z-index: 1;\n overflow: auto;\n}\n\n:host(.shell-app--mobile) .shell-app__tools {\n z-index: 2;\n width: 100%;\n overflow: hidden;\n background: var(--color-background-primary);\n}\n\n:host(.shell-app--mobile) .shell-app__mobile-sheet-nav {\n display: block;\n z-index: 3;\n overflow: hidden;\n background: var(--color-background-primary);\n}\n\n:host(.shell-app--mobile) .shell-app__mobile-bar-nav {\n grid-area: mobile-bar-nav;\n display: block;\n min-width: 0;\n position: relative;\n z-index: 4;\n}\n\n:host(.shell-app--mobile) .shell-app__tools[hidden],\n:host(.shell-app--mobile) .shell-app__mobile-sheet-nav[hidden],\n:host(.shell-app--mobile) .shell-app__mobile-bar-nav[hidden] {\n display: none;\n}\n\n:host(.shell-app--mobile-tool-active) .shell-app__content,\n:host(.shell-app--mobile-sheet-nav-open) .shell-app__content,\n:host(.shell-app--mobile-sheet-nav-open) .shell-app__tools {\n visibility: hidden;\n}\n",
698
698
  "type": "registry:ui"
699
699
  },
700
700
  {
@@ -19,6 +19,7 @@ export { DsBarWorkflow } from "./ds-bar-workflow.js";
19
19
  export { DsBreadcrumb } from "./ds-breadcrumb.js";
20
20
  export { DsButtonFilled } from "./ds-button-filled.js";
21
21
  export { DsButtonUnfilled } from "./ds-button-unfilled.js";
22
+ export { DsCardActionCenter } from "./ds-card-action-center.js";
22
23
  export { DsCardChart } from "./ds-card-chart.js";
23
24
  export { DsCardNavigation } from "./ds-card-navigation.js";
24
25
  export { DsCardOverview } from "./ds-card-overview.js";