@ds-mo/ui 9.0.0 → 9.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/README.md +28 -0
  2. package/dist/.build-stamp +1 -1
  3. package/dist/agent-patterns.json +397 -0
  4. package/dist/agent.json +2347 -735
  5. package/dist/angular/ds-agent-activity.d.ts +12 -0
  6. package/dist/angular/ds-agent-activity.js +38 -0
  7. package/dist/angular/ds-agent-response.d.ts +12 -0
  8. package/dist/angular/ds-agent-response.js +38 -0
  9. package/dist/angular/ds-agent-source-list.d.ts +12 -0
  10. package/dist/angular/ds-agent-source-list.js +38 -0
  11. package/dist/angular/ds-agent-tool-call.d.ts +12 -0
  12. package/dist/angular/ds-agent-tool-call.js +38 -0
  13. package/dist/angular/ds-attachment-list.d.ts +12 -0
  14. package/dist/angular/ds-attachment-list.js +38 -0
  15. package/dist/angular/ds-avatar.d.ts +12 -0
  16. package/dist/angular/ds-avatar.js +38 -0
  17. package/dist/angular/ds-code-block.d.ts +12 -0
  18. package/dist/angular/ds-code-block.js +38 -0
  19. package/dist/angular/ds-conversation-list-item.d.ts +19 -0
  20. package/dist/angular/ds-conversation-list-item.js +42 -0
  21. package/dist/angular/ds-conversation-list-section.d.ts +12 -0
  22. package/dist/angular/ds-conversation-list-section.js +38 -0
  23. package/dist/angular/ds-conversation-list.d.ts +12 -0
  24. package/dist/angular/ds-conversation-list.js +37 -0
  25. package/dist/angular/ds-markdown.d.ts +12 -0
  26. package/dist/angular/ds-markdown.js +38 -0
  27. package/dist/angular/ds-menu.d.ts +6 -1
  28. package/dist/angular/ds-menu.js +7 -4
  29. package/dist/angular/ds-message-bubble.d.ts +12 -0
  30. package/dist/angular/ds-message-bubble.js +38 -0
  31. package/dist/angular/ds-message-composer.d.ts +23 -0
  32. package/dist/angular/ds-message-composer.js +49 -0
  33. package/dist/angular/ds-message-scroller.d.ts +15 -0
  34. package/dist/angular/ds-message-scroller.js +43 -0
  35. package/dist/angular/ds-message.d.ts +12 -0
  36. package/dist/angular/ds-message.js +38 -0
  37. package/dist/angular/ds-panel-tool-header.d.ts +25 -0
  38. package/dist/angular/ds-panel-tool-header.js +49 -0
  39. package/dist/angular/ds-panel-tool-search.d.ts +19 -0
  40. package/dist/angular/ds-panel-tool-search.js +49 -0
  41. package/dist/angular/ds-panel-tools.d.ts +30 -1
  42. package/dist/angular/ds-panel-tools.js +14 -5
  43. package/dist/angular/ds-swatch-picker.d.ts +15 -0
  44. package/dist/angular/ds-swatch-picker.js +42 -0
  45. package/dist/angular/index.d.ts +1 -1
  46. package/dist/angular/index.js +18 -0
  47. package/dist/angular/proxies.d.ts +18 -0
  48. package/dist/angular/proxies.js +18 -0
  49. package/dist/components/ds-agent-activity.d.ts +11 -0
  50. package/dist/components/ds-agent-activity.js +2 -0
  51. package/dist/components/ds-agent-activity.js.map +1 -0
  52. package/dist/components/ds-agent-response.d.ts +11 -0
  53. package/dist/components/ds-agent-response.js +2 -0
  54. package/dist/components/ds-agent-response.js.map +1 -0
  55. package/dist/components/ds-agent-source-list.d.ts +11 -0
  56. package/dist/components/ds-agent-source-list.js +2 -0
  57. package/dist/components/ds-agent-source-list.js.map +1 -0
  58. package/dist/components/ds-agent-tool-call.d.ts +11 -0
  59. package/dist/components/ds-agent-tool-call.js +2 -0
  60. package/dist/components/ds-agent-tool-call.js.map +1 -0
  61. package/dist/components/ds-app-shell.js +1 -1
  62. package/dist/components/ds-app-shell.js.map +1 -1
  63. package/dist/components/ds-attachment-list.d.ts +11 -0
  64. package/dist/components/ds-attachment-list.js +2 -0
  65. package/dist/components/ds-attachment-list.js.map +1 -0
  66. package/dist/components/ds-avatar.d.ts +11 -0
  67. package/dist/components/ds-avatar.js +2 -0
  68. package/dist/components/ds-avatar.js.map +1 -0
  69. package/dist/components/ds-badge.js +1 -1
  70. package/dist/components/ds-banner.js +1 -1
  71. package/dist/components/ds-bar-nav.js +1 -1
  72. package/dist/components/ds-bar-nav.js.map +1 -1
  73. package/dist/components/ds-button-filled.js +1 -1
  74. package/dist/components/ds-button-unfilled.js +1 -1
  75. package/dist/components/ds-card-data-viz-donut.js +1 -1
  76. package/dist/components/ds-card-setting.js +1 -1
  77. package/dist/components/ds-card-shell-data-viz.js +1 -1
  78. package/dist/components/ds-card.js +1 -1
  79. package/dist/components/ds-chart-bar.js +1 -1
  80. package/dist/components/ds-chart-bar.js.map +1 -1
  81. package/dist/components/ds-chart-donut.js +1 -1
  82. package/dist/components/ds-chart-legend.js +1 -1
  83. package/dist/components/ds-chart-line.js +1 -1
  84. package/dist/components/ds-checkbox.js +1 -1
  85. package/dist/components/ds-chip.js +1 -1
  86. package/dist/components/ds-code-block.d.ts +11 -0
  87. package/dist/components/ds-code-block.js +2 -0
  88. package/dist/components/ds-code-block.js.map +1 -0
  89. package/dist/components/ds-conversation-list-item.d.ts +11 -0
  90. package/dist/components/ds-conversation-list-item.js +2 -0
  91. package/dist/components/ds-conversation-list-item.js.map +1 -0
  92. package/dist/components/ds-conversation-list-section.d.ts +11 -0
  93. package/dist/components/ds-conversation-list-section.js +2 -0
  94. package/dist/components/ds-conversation-list-section.js.map +1 -0
  95. package/dist/components/ds-conversation-list.d.ts +11 -0
  96. package/dist/components/ds-conversation-list.js +2 -0
  97. package/dist/components/ds-conversation-list.js.map +1 -0
  98. package/dist/components/ds-divider.js +1 -1
  99. package/dist/components/ds-divider.js.map +1 -1
  100. package/dist/components/ds-empty-state.js +1 -1
  101. package/dist/components/ds-field.js +1 -1
  102. package/dist/components/ds-icon.js +1 -1
  103. package/dist/components/ds-input.js +1 -1
  104. package/dist/components/ds-markdown.d.ts +11 -0
  105. package/dist/components/ds-markdown.js +2 -0
  106. package/dist/components/ds-markdown.js.map +1 -0
  107. package/dist/components/ds-menu.js +1 -1
  108. package/dist/components/ds-message-bubble.d.ts +11 -0
  109. package/dist/components/ds-message-bubble.js +2 -0
  110. package/dist/components/ds-message-bubble.js.map +1 -0
  111. package/dist/components/ds-message-composer.d.ts +11 -0
  112. package/dist/components/ds-message-composer.js +2 -0
  113. package/dist/components/ds-message-composer.js.map +1 -0
  114. package/dist/components/ds-message-scroller.d.ts +11 -0
  115. package/dist/components/ds-message-scroller.js +2 -0
  116. package/dist/components/ds-message-scroller.js.map +1 -0
  117. package/dist/components/ds-message.d.ts +11 -0
  118. package/dist/components/ds-message.js +2 -0
  119. package/dist/components/ds-message.js.map +1 -0
  120. package/dist/components/ds-modal.js +1 -1
  121. package/dist/components/ds-panel-nav.js +1 -1
  122. package/dist/components/ds-panel-nav.js.map +1 -1
  123. package/dist/components/ds-panel-sub-nav.js +1 -1
  124. package/dist/components/ds-panel-tool-header.d.ts +11 -0
  125. package/dist/components/ds-panel-tool-header.js +2 -0
  126. package/dist/components/ds-panel-tool-header.js.map +1 -0
  127. package/dist/components/ds-panel-tool-search.d.ts +11 -0
  128. package/dist/components/ds-panel-tool-search.js +2 -0
  129. package/dist/components/ds-panel-tool-search.js.map +1 -0
  130. package/dist/components/ds-panel-tools.js +1 -1
  131. package/dist/components/ds-panel-tools.js.map +1 -1
  132. package/dist/components/ds-radio.js +1 -1
  133. package/dist/components/ds-select-multi.js +1 -1
  134. package/dist/components/ds-select-multi.js.map +1 -1
  135. package/dist/components/ds-select.js +1 -1
  136. package/dist/components/ds-select.js.map +1 -1
  137. package/dist/components/ds-shell-gradient-picker.js +1 -1
  138. package/dist/components/ds-shell-gradient-picker.js.map +1 -1
  139. package/dist/components/ds-shell-gradient-swatch.js +1 -1
  140. package/dist/components/ds-shell-gradient-swatch.js.map +1 -1
  141. package/dist/components/ds-skeleton.js +1 -1
  142. package/dist/components/ds-slider.js +1 -1
  143. package/dist/components/ds-slider.js.map +1 -1
  144. package/dist/components/ds-swatch-picker.d.ts +11 -0
  145. package/dist/components/ds-swatch-picker.js +2 -0
  146. package/dist/components/ds-swatch-picker.js.map +1 -0
  147. package/dist/components/ds-switch.js +1 -1
  148. package/dist/components/ds-tab-group.js +1 -1
  149. package/dist/components/ds-tab-group.js.map +1 -1
  150. package/dist/components/ds-tag.js +1 -1
  151. package/dist/components/ds-text.js +1 -1
  152. package/dist/components/ds-tooltip-data-viz.js +1 -1
  153. package/dist/components/ds-tooltip.js +1 -1
  154. package/dist/components/index.d.ts +14 -0
  155. package/dist/components/p--KbMQblZ.js +2 -0
  156. package/dist/components/p--KbMQblZ.js.map +1 -0
  157. package/dist/components/p-2br9YDbG.js +2 -0
  158. package/dist/components/p-2br9YDbG.js.map +1 -0
  159. package/dist/components/p-41UAx2eq.js +2 -0
  160. package/dist/components/p-41UAx2eq.js.map +1 -0
  161. package/dist/components/p-B1pWGQn1.js +2 -0
  162. package/dist/components/p-B1pWGQn1.js.map +1 -0
  163. package/dist/components/p-B7NbIYjS.js +2 -0
  164. package/dist/components/p-B7NbIYjS.js.map +1 -0
  165. package/dist/components/p-BBu_Svz7.js +2 -0
  166. package/dist/components/p-BBu_Svz7.js.map +1 -0
  167. package/dist/components/p-BEQB8EnB.js +2 -0
  168. package/dist/components/p-BEQB8EnB.js.map +1 -0
  169. package/dist/components/{p-CZ9wemOA.js → p-BFWC17em.js} +2 -2
  170. package/dist/components/{p-KRGBGTu5.js → p-BO6C8abO.js} +2 -2
  171. package/dist/components/{p-CbS_WWs2.js → p-BSOZXagj.js} +2 -2
  172. package/dist/components/p-BSOZXagj.js.map +1 -0
  173. package/dist/components/{p-DT2MK8Kt.js → p-BZAEZENv.js} +2 -2
  174. package/dist/components/p-BhC1YyId.js +2 -0
  175. package/dist/components/p-BhC1YyId.js.map +1 -0
  176. package/dist/components/p-BjtXYFhw.js +2 -0
  177. package/dist/components/p-BjtXYFhw.js.map +1 -0
  178. package/dist/components/{p-B-zhgAvL.js → p-Bo5wikia.js} +2 -2
  179. package/dist/components/p-Bx1G7P6W.js +2 -0
  180. package/dist/components/p-Bx1G7P6W.js.map +1 -0
  181. package/dist/components/p-C0sq948W.js +2 -0
  182. package/dist/components/p-C0sq948W.js.map +1 -0
  183. package/dist/components/p-CC1C8s6m.js +2 -0
  184. package/dist/components/p-CC1C8s6m.js.map +1 -0
  185. package/dist/components/p-CKaJx0IX.js +2 -0
  186. package/dist/components/p-CKaJx0IX.js.map +1 -0
  187. package/dist/components/{p-DyZj3k9S.js → p-CZMEhdlA.js} +2 -2
  188. package/dist/components/{p-BbV68F23.js → p-CiwdnKKp.js} +2 -2
  189. package/dist/components/{p-BLzivrE3.js → p-CnM9SW_8.js} +2 -2
  190. package/dist/components/{p-C7UFYvsO.js → p-CuKn9I5f.js} +2 -2
  191. package/dist/components/p-D1HFMTdC.js +2 -0
  192. package/dist/components/p-D1HFMTdC.js.map +1 -0
  193. package/dist/components/p-DFMM60My.js +2 -0
  194. package/dist/components/p-DFMM60My.js.map +1 -0
  195. package/dist/components/p-DIsDiGcp.js +2 -0
  196. package/dist/components/p-DIsDiGcp.js.map +1 -0
  197. package/dist/components/p-DVsje4AY.js +2 -0
  198. package/dist/components/p-DVsje4AY.js.map +1 -0
  199. package/dist/components/p-Di-ThR90.js +2 -0
  200. package/dist/components/p-Di-ThR90.js.map +1 -0
  201. package/dist/components/{p-C7RObioO.js → p-Di4HBckb.js} +2 -2
  202. package/dist/components/p-a9nGf1s6.js +2 -0
  203. package/dist/components/p-a9nGf1s6.js.map +1 -0
  204. package/dist/components/p-gidVv1FX.js +2 -0
  205. package/dist/components/p-gidVv1FX.js.map +1 -0
  206. package/dist/components/p-l6PmnW_P.js +2 -0
  207. package/dist/components/p-l6PmnW_P.js.map +1 -0
  208. package/dist/components/p-rEe-3KR_.js +2 -0
  209. package/dist/components/p-rEe-3KR_.js.map +1 -0
  210. package/dist/components/p-t9Ei1kHP.js +2 -0
  211. package/dist/components/p-t9Ei1kHP.js.map +1 -0
  212. package/dist/docs/components.json +8097 -3924
  213. package/dist/lib/components/Menu/menu-placement.d.ts +19 -3
  214. package/dist/lib/shell/index.d.ts +3 -3
  215. package/dist/lib/shell/index.js +48 -39
  216. package/dist/lib/shell/index.js.map +3 -3
  217. package/dist/lib/shell/shell-gradient-presets.d.ts +15 -0
  218. package/dist/lib/utils/choice-popup-alignment.d.ts +20 -0
  219. package/dist/lib/utils/index.d.ts +2 -0
  220. package/dist/lib/utils/index.js +16 -0
  221. package/dist/lib/utils/index.js.map +3 -3
  222. package/dist/mcp/cli.js +31409 -0
  223. package/dist/mcp-data/registry/agent-activity.json +158 -0
  224. package/dist/mcp-data/registry/agent-response.json +211 -0
  225. package/dist/mcp-data/registry/agent-source-list.json +153 -0
  226. package/dist/mcp-data/registry/agent-tool-call.json +213 -0
  227. package/dist/mcp-data/registry/app-shell.json +210 -0
  228. package/dist/mcp-data/registry/attachment-list.json +137 -0
  229. package/dist/mcp-data/registry/avatar.json +136 -0
  230. package/dist/mcp-data/registry/badge.json +289 -0
  231. package/dist/mcp-data/registry/banner.json +206 -0
  232. package/dist/mcp-data/registry/bar-nav.json +341 -0
  233. package/dist/mcp-data/registry/button-filled.json +386 -0
  234. package/dist/mcp-data/registry/button-unfilled.json +537 -0
  235. package/dist/mcp-data/registry/card-data-viz-donut.json +143 -0
  236. package/dist/mcp-data/registry/card-setting.json +194 -0
  237. package/dist/mcp-data/registry/card-shell-data-viz.json +173 -0
  238. package/dist/mcp-data/registry/card.json +126 -0
  239. package/dist/mcp-data/registry/chart-bar.json +121 -0
  240. package/dist/mcp-data/registry/chart-donut.json +257 -0
  241. package/dist/mcp-data/registry/chart-legend.json +209 -0
  242. package/dist/mcp-data/registry/chart-line.json +153 -0
  243. package/dist/mcp-data/registry/checkbox.json +361 -0
  244. package/dist/mcp-data/registry/chip.json +276 -0
  245. package/dist/mcp-data/registry/code-block.json +150 -0
  246. package/dist/mcp-data/registry/conversation-list-item.json +265 -0
  247. package/dist/mcp-data/registry/conversation-list-section.json +139 -0
  248. package/dist/mcp-data/registry/conversation-list.json +101 -0
  249. package/dist/mcp-data/registry/divider.json +225 -0
  250. package/dist/mcp-data/registry/empty-state.json +197 -0
  251. package/dist/mcp-data/registry/field.json +222 -0
  252. package/dist/mcp-data/registry/icon.json +242 -0
  253. package/dist/mcp-data/registry/input.json +597 -0
  254. package/dist/mcp-data/registry/loader.json +192 -0
  255. package/dist/mcp-data/registry/markdown.json +141 -0
  256. package/dist/mcp-data/registry/menu.json +479 -0
  257. package/dist/mcp-data/registry/message-bubble.json +119 -0
  258. package/dist/mcp-data/registry/message-composer.json +265 -0
  259. package/dist/mcp-data/registry/message-scroller.json +217 -0
  260. package/dist/mcp-data/registry/message.json +255 -0
  261. package/dist/mcp-data/registry/modal.json +150 -0
  262. package/dist/mcp-data/registry/panel-nav.json +622 -0
  263. package/dist/mcp-data/registry/panel-sub-nav.json +249 -0
  264. package/dist/mcp-data/registry/panel-tool-header.json +342 -0
  265. package/dist/mcp-data/registry/panel-tool-search.json +387 -0
  266. package/dist/mcp-data/registry/panel-tools.json +514 -0
  267. package/dist/mcp-data/registry/radio.json +374 -0
  268. package/dist/mcp-data/registry/registry.json +6916 -0
  269. package/dist/mcp-data/registry/select-multi.json +755 -0
  270. package/dist/mcp-data/registry/select.json +740 -0
  271. package/dist/mcp-data/registry/shell-gradient-picker.json +195 -0
  272. package/dist/mcp-data/registry/shell-gradient-swatch.json +215 -0
  273. package/dist/mcp-data/registry/skeleton.json +282 -0
  274. package/dist/mcp-data/registry/slider.json +657 -0
  275. package/dist/mcp-data/registry/swatch-picker.json +231 -0
  276. package/dist/mcp-data/registry/switch.json +361 -0
  277. package/dist/mcp-data/registry/tab-group.json +255 -0
  278. package/dist/mcp-data/registry/tag.json +352 -0
  279. package/dist/mcp-data/registry/text.json +371 -0
  280. package/dist/mcp-data/registry/tooltip-data-viz.json +158 -0
  281. package/dist/mcp-data/registry/tooltip.json +311 -0
  282. package/dist/react/components.d.ts +18 -0
  283. package/dist/react/components.js +18 -0
  284. package/dist/react/ds-agent-activity.d.ts +9 -0
  285. package/dist/react/ds-agent-activity.js +12 -0
  286. package/dist/react/ds-agent-response.d.ts +9 -0
  287. package/dist/react/ds-agent-response.js +12 -0
  288. package/dist/react/ds-agent-source-list.d.ts +9 -0
  289. package/dist/react/ds-agent-source-list.js +12 -0
  290. package/dist/react/ds-agent-tool-call.d.ts +9 -0
  291. package/dist/react/ds-agent-tool-call.js +12 -0
  292. package/dist/react/ds-attachment-list.d.ts +9 -0
  293. package/dist/react/ds-attachment-list.js +12 -0
  294. package/dist/react/ds-avatar.d.ts +9 -0
  295. package/dist/react/ds-avatar.js +12 -0
  296. package/dist/react/ds-code-block.d.ts +9 -0
  297. package/dist/react/ds-code-block.js +12 -0
  298. package/dist/react/ds-conversation-list-item.d.ts +14 -0
  299. package/dist/react/ds-conversation-list-item.js +12 -0
  300. package/dist/react/ds-conversation-list-section.d.ts +9 -0
  301. package/dist/react/ds-conversation-list-section.js +12 -0
  302. package/dist/react/ds-conversation-list.d.ts +9 -0
  303. package/dist/react/ds-conversation-list.js +12 -0
  304. package/dist/react/ds-markdown.d.ts +9 -0
  305. package/dist/react/ds-markdown.js +12 -0
  306. package/dist/react/ds-menu.d.ts +1 -0
  307. package/dist/react/ds-menu.js +2 -1
  308. package/dist/react/ds-message-bubble.d.ts +9 -0
  309. package/dist/react/ds-message-bubble.js +12 -0
  310. package/dist/react/ds-message-composer.d.ts +16 -0
  311. package/dist/react/ds-message-composer.js +16 -0
  312. package/dist/react/ds-message-scroller.d.ts +12 -0
  313. package/dist/react/ds-message-scroller.js +12 -0
  314. package/dist/react/ds-message.d.ts +9 -0
  315. package/dist/react/ds-message.js +12 -0
  316. package/dist/react/ds-panel-tool-header.d.ts +17 -0
  317. package/dist/react/ds-panel-tool-header.js +16 -0
  318. package/dist/react/ds-panel-tool-search.d.ts +14 -0
  319. package/dist/react/ds-panel-tool-search.js +16 -0
  320. package/dist/react/ds-panel-tools.d.ts +10 -0
  321. package/dist/react/ds-panel-tools.js +3 -0
  322. package/dist/react/ds-swatch-picker.d.ts +12 -0
  323. package/dist/react/ds-swatch-picker.js +12 -0
  324. package/dist/types/components/AgentActivity/AgentActivity.d.ts +14 -0
  325. package/dist/types/components/AgentResponse/AgentResponse.d.ts +12 -0
  326. package/dist/types/components/AgentSourceList/AgentSourceList.d.ts +9 -0
  327. package/dist/types/components/AgentToolCall/AgentToolCall.d.ts +13 -0
  328. package/dist/types/components/AppShell/AppShell.d.ts +4 -0
  329. package/dist/types/components/AttachmentList/AttachmentList.d.ts +8 -0
  330. package/dist/types/components/Avatar/Avatar.d.ts +8 -0
  331. package/dist/types/components/CodeBlock/CodeBlock.d.ts +11 -0
  332. package/dist/types/components/ConversationList/ConversationList.d.ts +4 -0
  333. package/dist/types/components/ConversationListItem/ConversationListItem.d.ts +22 -0
  334. package/dist/types/components/ConversationListSection/ConversationListSection.d.ts +9 -0
  335. package/dist/types/components/Markdown/Markdown.d.ts +15 -0
  336. package/dist/types/components/Menu/Menu.d.ts +10 -1
  337. package/dist/types/components/Menu/menu-placement.d.ts +19 -3
  338. package/dist/types/components/Menu/menu-types.d.ts +15 -2
  339. package/dist/types/components/Message/Message.d.ts +17 -0
  340. package/dist/types/components/MessageBubble/MessageBubble.d.ts +6 -0
  341. package/dist/types/components/MessageComposer/MessageComposer.d.ts +29 -0
  342. package/dist/types/components/MessageScroller/MessageScroller.d.ts +37 -0
  343. package/dist/types/components/PanelNav/PanelNav.d.ts +3 -0
  344. package/dist/types/components/PanelToolHeader/PanelToolHeader.d.ts +34 -0
  345. package/dist/types/components/PanelToolSearch/PanelToolSearch.d.ts +35 -0
  346. package/dist/types/components/PanelTools/PanelTools.d.ts +40 -1
  347. package/dist/types/components/PanelTools/panel-tools-types.d.ts +20 -0
  348. package/dist/types/components/PanelTools/panel-tools-utils.d.ts +2 -0
  349. package/dist/types/components/ShellGradientPicker/ShellGradientPicker.d.ts +2 -5
  350. package/dist/types/components/ShellGradientSwatch/ShellGradientSwatch.d.ts +1 -0
  351. package/dist/types/components/Slider/Slider.d.ts +1 -1
  352. package/dist/types/components/SwatchPicker/SwatchPicker.d.ts +21 -0
  353. package/dist/types/components/SwatchPicker/swatch-picker-types.d.ts +26 -0
  354. package/dist/types/components/conversation-types.d.ts +55 -0
  355. package/dist/types/components.d.ts +1298 -4
  356. package/dist/types/shell/index.d.ts +3 -3
  357. package/dist/types/shell/shell-gradient-presets.d.ts +15 -0
  358. package/dist/types/utils/choice-list-parts.d.ts +4 -1
  359. package/dist/types/utils/choice-popup-alignment.d.ts +21 -0
  360. package/dist/types/utils/index.d.ts +2 -0
  361. package/package.json +9 -2
  362. package/dist/components/p-Bafp65bw.js +0 -2
  363. package/dist/components/p-Bafp65bw.js.map +0 -1
  364. package/dist/components/p-BdnR3jxi.js +0 -2
  365. package/dist/components/p-BdnR3jxi.js.map +0 -1
  366. package/dist/components/p-CXF8yd-g.js +0 -2
  367. package/dist/components/p-CXF8yd-g.js.map +0 -1
  368. package/dist/components/p-C_cu-HIT.js +0 -2
  369. package/dist/components/p-C_cu-HIT.js.map +0 -1
  370. package/dist/components/p-CbS_WWs2.js.map +0 -1
  371. package/dist/components/p-D0B9uDTP.js +0 -2
  372. package/dist/components/p-D0B9uDTP.js.map +0 -1
  373. package/dist/components/p-DF0yLZG_.js +0 -2
  374. package/dist/components/p-DF0yLZG_.js.map +0 -1
  375. package/dist/components/p-VKIsOVza.js +0 -2
  376. package/dist/components/p-VKIsOVza.js.map +0 -1
  377. /package/dist/components/{p-CZ9wemOA.js.map → p-BFWC17em.js.map} +0 -0
  378. /package/dist/components/{p-KRGBGTu5.js.map → p-BO6C8abO.js.map} +0 -0
  379. /package/dist/components/{p-DT2MK8Kt.js.map → p-BZAEZENv.js.map} +0 -0
  380. /package/dist/components/{p-B-zhgAvL.js.map → p-Bo5wikia.js.map} +0 -0
  381. /package/dist/components/{p-DyZj3k9S.js.map → p-CZMEhdlA.js.map} +0 -0
  382. /package/dist/components/{p-BbV68F23.js.map → p-CiwdnKKp.js.map} +0 -0
  383. /package/dist/components/{p-BLzivrE3.js.map → p-CnM9SW_8.js.map} +0 -0
  384. /package/dist/components/{p-C7UFYvsO.js.map → p-CuKn9I5f.js.map} +0 -0
  385. /package/dist/components/{p-C7RObioO.js.map → p-Di4HBckb.js.map} +0 -0
@@ -0,0 +1,225 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "divider",
4
+ "title": "Divider",
5
+ "description": "Horizontal or vertical separator between sibling content groups, decorative by default with optional structural semantics.",
6
+ "type": "registry:ui",
7
+ "meta": {
8
+ "library": "@ds-mo/ui",
9
+ "distribution": "npm",
10
+ "storybook": "https://zainadeel.github.io/compomo/?path=/story/divider",
11
+ "source": "src/wc/components/Divider/Divider.tsx",
12
+ "intentStatus": "complete",
13
+ "intent": {
14
+ "audience": "general",
15
+ "status": "stable",
16
+ "summary": "Horizontal or vertical separator between sibling content groups, decorative by default with optional structural semantics.",
17
+ "useWhen": [
18
+ "Related sibling content groups on one surface need stronger visual separation than spacing alone provides.",
19
+ "A list or panel needs an inset separator that does not define the outer edge of its container.",
20
+ "Meaningful document or group structure requires an explicit horizontal or vertical separator."
21
+ ],
22
+ "avoidWhen": [
23
+ "Spacing alone communicates the grouping clearly.",
24
+ "The line defines a container edge, control outline, or selected state; use the owning component's border treatment.",
25
+ "The divider would compensate for weak headings or unclear information hierarchy.",
26
+ "A decorative flourish does not clarify grouping."
27
+ ],
28
+ "alternatives": [
29
+ {
30
+ "when": "Content needs an enclosing surface and outer boundary.",
31
+ "component": "component:ds-card",
32
+ "reason": "Card owns container chrome, structure, and edge treatment."
33
+ },
34
+ {
35
+ "when": "A static compact label is being used to name a group.",
36
+ "component": "component:ds-text",
37
+ "reason": "Text communicates hierarchy directly instead of relying on a line."
38
+ }
39
+ ],
40
+ "commonlyComposedWith": [
41
+ "component:ds-card",
42
+ "component:ds-menu",
43
+ "component:ds-panel-sub-nav"
44
+ ],
45
+ "accessibility": [
46
+ "Keep purely visual dividers hidden from assistive technology.",
47
+ "Expose separator semantics only when the line represents meaningful document or group structure.",
48
+ "Semantic orientation must match the divider's visual orientation.",
49
+ "Do not use a semantic divider as a substitute for headings, landmarks, or explicit group labels."
50
+ ],
51
+ "states": [
52
+ "Horizontal and vertical variants separate sibling groups along the parent's layout axis.",
53
+ "The omitted background context is for primary and secondary surfaces. Explicit faint documents a faint surface while using the same standard divider token.",
54
+ "Other background contexts select their matching divider token, including navigation where Divider is composed inside app chrome.",
55
+ "Inset is symmetric along the line axis. Explicit length is reserved for layout-specific separators; otherwise the line fills the available axis."
56
+ ],
57
+ "responsiveBehavior": [
58
+ "The parent layout decides whether to change orientation, visibility, inset, or length at responsive breakpoints.",
59
+ "Divider does not infer layout direction or hide itself responsively."
60
+ ],
61
+ "frameworkCaveats": {
62
+ "customElements": [
63
+ "Set semantic mode only from known document structure; presentation alone should remain hidden from assistive technology."
64
+ ],
65
+ "react": [
66
+ "Derive orientation and visibility from the parent layout rather than viewport logic inside Divider."
67
+ ],
68
+ "angular": [
69
+ "Derive orientation and visibility from the parent layout rather than viewport logic inside Divider."
70
+ ]
71
+ },
72
+ "references": [
73
+ {
74
+ "label": "Storybook examples",
75
+ "path": "src/wc/components/Divider/Divider.stories.ts"
76
+ }
77
+ ]
78
+ },
79
+ "api": {
80
+ "props": {
81
+ "background": {
82
+ "type": "DividerBackground | undefined",
83
+ "resolvedType": "\"always-dark\" | \"bold\" | \"faint\" | \"inverted\" | \"media\" | \"medium\" | \"navigation\" | \"strong\" | \"translucent\" | undefined",
84
+ "attribute": "background",
85
+ "required": false,
86
+ "mutable": false,
87
+ "description": "Actual parent surface context. Omit on primary and secondary surfaces."
88
+ },
89
+ "inset": {
90
+ "type": "DividerInset",
91
+ "resolvedType": "\"none\" | \"space-000\" | \"space-012\" | \"space-025\" | \"space-050\" | \"space-075\" | \"space-100\" | \"space-125\" | \"space-150\" | \"space-175\" | \"space-200\" | \"space-250\" | \"space-300\" | \"space-400\" | \"space-600\" | \"space-800\" | string & {}",
92
+ "attribute": "inset",
93
+ "default": "'none'",
94
+ "required": false,
95
+ "mutable": false,
96
+ "description": "Insets the divider from its start/end edges. Accepts spacing token names or any CSS length."
97
+ },
98
+ "length": {
99
+ "type": "DividerLength",
100
+ "resolvedType": "\"auto\" | \"full\" | string & {}",
101
+ "attribute": "length",
102
+ "default": "'auto'",
103
+ "required": false,
104
+ "mutable": false,
105
+ "description": "Visual line length. Defaults to filling the available axis. Accepts any CSS length."
106
+ },
107
+ "orientation": {
108
+ "type": "DividerOrientation",
109
+ "resolvedType": "\"horizontal\" | \"vertical\"",
110
+ "attribute": "orientation",
111
+ "default": "'horizontal'",
112
+ "required": false,
113
+ "mutable": false,
114
+ "description": "Direction of the divider line. Defaults to 'horizontal'."
115
+ },
116
+ "semantic": {
117
+ "type": "boolean",
118
+ "resolvedType": "boolean",
119
+ "attribute": "semantic",
120
+ "default": "false",
121
+ "required": false,
122
+ "mutable": false,
123
+ "description": "Expose the divider as a semantic separator. Visual-only dividers are hidden from assistive tech by default."
124
+ }
125
+ },
126
+ "events": [],
127
+ "methods": [],
128
+ "slots": []
129
+ },
130
+ "props": {
131
+ "background": {
132
+ "type": "DividerBackground | undefined",
133
+ "resolvedType": "\"always-dark\" | \"bold\" | \"faint\" | \"inverted\" | \"media\" | \"medium\" | \"navigation\" | \"strong\" | \"translucent\" | undefined",
134
+ "attribute": "background",
135
+ "required": false,
136
+ "mutable": false,
137
+ "description": "Actual parent surface context. Omit on primary and secondary surfaces."
138
+ },
139
+ "inset": {
140
+ "type": "DividerInset",
141
+ "resolvedType": "\"none\" | \"space-000\" | \"space-012\" | \"space-025\" | \"space-050\" | \"space-075\" | \"space-100\" | \"space-125\" | \"space-150\" | \"space-175\" | \"space-200\" | \"space-250\" | \"space-300\" | \"space-400\" | \"space-600\" | \"space-800\" | string & {}",
142
+ "attribute": "inset",
143
+ "default": "'none'",
144
+ "required": false,
145
+ "mutable": false,
146
+ "description": "Insets the divider from its start/end edges. Accepts spacing token names or any CSS length."
147
+ },
148
+ "length": {
149
+ "type": "DividerLength",
150
+ "resolvedType": "\"auto\" | \"full\" | string & {}",
151
+ "attribute": "length",
152
+ "default": "'auto'",
153
+ "required": false,
154
+ "mutable": false,
155
+ "description": "Visual line length. Defaults to filling the available axis. Accepts any CSS length."
156
+ },
157
+ "orientation": {
158
+ "type": "DividerOrientation",
159
+ "resolvedType": "\"horizontal\" | \"vertical\"",
160
+ "attribute": "orientation",
161
+ "default": "'horizontal'",
162
+ "required": false,
163
+ "mutable": false,
164
+ "description": "Direction of the divider line. Defaults to 'horizontal'."
165
+ },
166
+ "semantic": {
167
+ "type": "boolean",
168
+ "resolvedType": "boolean",
169
+ "attribute": "semantic",
170
+ "default": "false",
171
+ "required": false,
172
+ "mutable": false,
173
+ "description": "Expose the divider as a semantic separator. Visual-only dividers are hidden from assistive tech by default."
174
+ }
175
+ },
176
+ "events": [],
177
+ "methods": [],
178
+ "slots": [],
179
+ "exports": {
180
+ "customElement": "ds-divider",
181
+ "react": "DsDivider",
182
+ "angular": "DsDivider"
183
+ },
184
+ "consumption": {
185
+ "install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
186
+ "cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
187
+ "customElements": {
188
+ "import": "import '@ds-mo/ui/dist/components/ds-divider.js';",
189
+ "example": "<ds-divider></ds-divider>"
190
+ },
191
+ "react": {
192
+ "import": "import { DsDivider } from '@ds-mo/ui/react';",
193
+ "example": "<DsDivider />"
194
+ },
195
+ "angular": {
196
+ "import": "import { DsDivider } from '@ds-mo/ui/angular/ds-divider';",
197
+ "example": "<ds-divider></ds-divider>"
198
+ },
199
+ "peerDependencies": {
200
+ "required": [
201
+ "@ds-mo/tokens ^3.1.1",
202
+ "@ds-mo/icons ^6.2.0"
203
+ ],
204
+ "frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
205
+ }
206
+ }
207
+ },
208
+ "dependencies": [
209
+ "@ds-mo/ui",
210
+ "@ds-mo/tokens"
211
+ ],
212
+ "registryDependencies": [],
213
+ "files": [
214
+ {
215
+ "path": "src/wc/components/Divider/Divider.css",
216
+ "content": ":host {\n --_divider-color: var(--color-divider-divider);\n --_divider-inset: 0;\n --_divider-length: 100%;\n\n display: block;\n flex-shrink: 0;\n width: var(--_divider-length);\n height: var(--dimension-stroke-width-012);\n margin: 0 var(--_divider-inset);\n border: none;\n background-color: var(--_divider-color);\n}\n\n:host(.divider--vertical) {\n width: var(--dimension-stroke-width-012);\n height: var(--_divider-length);\n min-height: var(--dimension-stroke-width-012);\n margin: var(--_divider-inset) 0;\n align-self: stretch;\n}\n\n:host(.divider--vertical.divider--custom-length) {\n align-self: center;\n}\n\n:host([background='bold']),\n:host(.divider--background-bold) {\n --_divider-color: var(--color-divider-divider-on-bold-background);\n}\n\n:host([background='strong']),\n:host(.divider--background-strong) {\n --_divider-color: var(--color-divider-divider-on-strong-background);\n}\n\n:host([background='medium']),\n:host(.divider--background-medium) {\n --_divider-color: var(--color-divider-divider-on-medium-background);\n}\n\n:host([background='translucent']),\n:host(.divider--background-translucent) {\n --_divider-color: var(--color-translucent-divider);\n}\n\n:host([background='navigation']),\n:host(.divider--background-navigation) {\n --_divider-color: var(--color-navigation-divider);\n}\n\n:host([background='media']),\n:host(.divider--background-media) {\n --_divider-color: var(--color-media-divider);\n}\n\n:host([background='always-dark']),\n:host(.divider--background-always-dark) {\n --_divider-color: var(--color-always-dark-divider);\n}\n\n:host([background='inverted']),\n:host(.divider--background-inverted) {\n --_divider-color: var(--color-inverted-divider);\n}\n",
217
+ "type": "registry:ui"
218
+ },
219
+ {
220
+ "path": "src/wc/components/Divider/Divider.tsx",
221
+ "content": "import { Component, Prop, h, Host } from '@stencil/core';\n\nexport type DividerOrientation = 'horizontal' | 'vertical';\nexport type DividerBackground =\n | 'faint'\n | 'medium'\n | 'bold'\n | 'strong'\n | 'translucent'\n | 'inverted'\n | 'media'\n | 'navigation'\n | 'always-dark';\nexport type DividerInsetToken =\n | 'space-000'\n | 'space-012'\n | 'space-025'\n | 'space-050'\n | 'space-075'\n | 'space-100'\n | 'space-125'\n | 'space-150'\n | 'space-175'\n | 'space-200'\n | 'space-250'\n | 'space-300'\n | 'space-400'\n | 'space-600'\n | 'space-800';\nexport type DividerInset = 'none' | DividerInsetToken | (string & {});\nexport type DividerLength = 'auto' | 'full' | (string & {});\n\nconst INSET_VALUE: Record<'none' | DividerInsetToken, string> = {\n none: '0',\n 'space-000': 'var(--dimension-space-000)',\n 'space-012': 'var(--dimension-space-012)',\n 'space-025': 'var(--dimension-space-025)',\n 'space-050': 'var(--dimension-space-050)',\n 'space-075': 'var(--dimension-space-075)',\n 'space-100': 'var(--dimension-space-100)',\n 'space-125': 'var(--dimension-space-125)',\n 'space-150': 'var(--dimension-space-150)',\n 'space-175': 'var(--dimension-space-175)',\n 'space-200': 'var(--dimension-space-200)',\n 'space-250': 'var(--dimension-space-250)',\n 'space-300': 'var(--dimension-space-300)',\n 'space-400': 'var(--dimension-space-400)',\n 'space-600': 'var(--dimension-space-600)',\n 'space-800': 'var(--dimension-space-800)',\n};\n\n@Component({\n tag: 'ds-divider',\n styleUrl: 'Divider.css',\n scoped: true,\n})\nexport class Divider {\n /** Direction of the divider line. Defaults to 'horizontal'. */\n @Prop() orientation: DividerOrientation = 'horizontal';\n\n /** Actual parent surface context. Omit on primary and secondary surfaces. */\n @Prop() background: DividerBackground | undefined;\n\n /** Insets the divider from its start/end edges. Accepts spacing token names or any CSS length. */\n @Prop() inset: DividerInset = 'none';\n\n /** Visual line length. Defaults to filling the available axis. Accepts any CSS length. */\n @Prop() length: DividerLength = 'auto';\n\n /** Expose the divider as a semantic separator. Visual-only dividers are hidden from assistive tech by default. */\n @Prop() semantic: boolean = false;\n\n private resolveInset(): string {\n return Object.prototype.hasOwnProperty.call(INSET_VALUE, this.inset)\n ? INSET_VALUE[this.inset as keyof typeof INSET_VALUE]\n : this.inset;\n }\n\n private resolveLength(): string {\n return this.length === 'auto' || this.length === 'full'\n ? '100%'\n : this.length;\n }\n\n render() {\n const isVertical = this.orientation === 'vertical';\n const hasCustomLength = this.length !== 'auto' && this.length !== 'full';\n\n return (\n <Host\n role={this.semantic ? 'separator' : undefined}\n aria-orientation={this.semantic ? this.orientation : undefined}\n aria-hidden={this.semantic ? undefined : 'true'}\n class={{\n divider: true,\n 'divider--vertical': isVertical,\n 'divider--custom-length': hasCustomLength,\n [`divider--background-${this.background}`]: !!this.background,\n }}\n style={{\n '--_divider-inset': this.resolveInset(),\n '--_divider-length': this.resolveLength(),\n }}\n />\n );\n }\n}\n",
222
+ "type": "registry:ui"
223
+ }
224
+ ]
225
+ }
@@ -0,0 +1,197 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "empty-state",
4
+ "title": "EmptyState",
5
+ "description": "Centered empty-content message composed as icon plus title plus body, title plus body, or compact body-only content.",
6
+ "type": "registry:ui",
7
+ "meta": {
8
+ "library": "@ds-mo/ui",
9
+ "distribution": "npm",
10
+ "storybook": "https://zainadeel.github.io/compomo/?path=/story/empty-state",
11
+ "source": "src/wc/components/EmptyState/EmptyState.tsx",
12
+ "intentStatus": "complete",
13
+ "intent": {
14
+ "audience": "general",
15
+ "status": "stable",
16
+ "summary": "Centered empty-content message composed as icon plus title plus body, title plus body, or compact body-only content.",
17
+ "useWhen": [
18
+ "A bounded content area is in a first-use, no-content, filtered no-results, or no-access state and needs a calm explanatory message tailored to that cause.",
19
+ "A prominent empty region benefits from a decorative icon, visual title, and supporting body copy.",
20
+ "A compact owner such as a Select popup needs only centered body copy."
21
+ ],
22
+ "avoidWhen": [
23
+ "Content is still loading; use Skeleton for predictable structure or Loader for an indeterminate operation.",
24
+ "The state is an error, warning, or confirmation that needs semantic intent and announcement from the owning workflow.",
25
+ "The state needs a recovery action, link, or other interactive content; the current EmptyState pattern is intentionally message-only.",
26
+ "A decorative illustration, arbitrary rich content, or custom layout is required."
27
+ ],
28
+ "alternatives": [
29
+ {
30
+ "when": "A content region is waiting for structured data.",
31
+ "component": "component:ds-skeleton",
32
+ "reason": "Skeleton preserves expected geometry while content is pending."
33
+ },
34
+ {
35
+ "when": "An operation is progressing without predictable content structure.",
36
+ "component": "component:ds-loader",
37
+ "reason": "Loader owns indeterminate progress rather than an empty outcome."
38
+ },
39
+ {
40
+ "when": "Only ordinary prose is needed without empty-state layout.",
41
+ "component": "component:ds-text",
42
+ "reason": "Text owns typography without adding centered empty-state composition."
43
+ }
44
+ ],
45
+ "commonlyComposedWith": [
46
+ "component:ds-select",
47
+ "component:ds-text",
48
+ "component:ds-icon"
49
+ ],
50
+ "accessibility": [
51
+ "The optional icon is decorative; the title and body provide all meaning in text.",
52
+ "EmptyState does not create a live region or alert automatically. The owner decides whether a dynamic transition requires announcement.",
53
+ "The visual title does not impose a document heading level because the correct hierarchy belongs to the consuming page or region.",
54
+ "Keep localized body copy concise and sufficient when using the body-only variant."
55
+ ],
56
+ "states": [
57
+ "Supported compositions are icon plus title plus body, title plus body, and body only; body copy is present in every supported composition.",
58
+ "The decorative icon renders at xl in the primary foreground with an 8px gap before the text group and only when a title is also provided.",
59
+ "The visual title uses title-small primary text; body uses body-medium secondary text with a 4px title-to-body gap.",
60
+ "All content is centered. The owner supplies container size and surrounding padding; do not compose actions into or immediately alongside the current EmptyState pattern.",
61
+ "First-use, no-content, no-results, and no-access states reuse this primitive with cause-specific localized messages rather than visual variants."
62
+ ],
63
+ "responsiveBehavior": [
64
+ "The owner controls available width and height; text wraps naturally while remaining centered.",
65
+ "EmptyState does not infer breakpoints or change composition automatically."
66
+ ],
67
+ "frameworkCaveats": {
68
+ "customElements": [
69
+ "Pass canonical IcoMo icon names and localized heading/body strings through properties or attributes."
70
+ ],
71
+ "react": [
72
+ "Choose one supported composition by passing body with optional heading and icon props."
73
+ ],
74
+ "angular": [
75
+ "Choose one supported composition by binding body with optional heading and icon inputs."
76
+ ]
77
+ },
78
+ "references": [
79
+ {
80
+ "label": "Storybook examples",
81
+ "path": "src/wc/components/EmptyState/EmptyState.stories.ts"
82
+ }
83
+ ]
84
+ },
85
+ "api": {
86
+ "props": {
87
+ "body": {
88
+ "type": "string",
89
+ "resolvedType": "string",
90
+ "attribute": "body",
91
+ "default": "''",
92
+ "required": false,
93
+ "mutable": false,
94
+ "description": "Explanatory empty-state copy. Every supported variant includes body text."
95
+ },
96
+ "heading": {
97
+ "type": "string | undefined",
98
+ "resolvedType": "string | undefined",
99
+ "attribute": "heading",
100
+ "required": false,
101
+ "mutable": false,
102
+ "description": "Optional visual title. Use with body; required when icon is provided."
103
+ },
104
+ "icon": {
105
+ "type": "string | undefined",
106
+ "resolvedType": "string | undefined",
107
+ "attribute": "icon",
108
+ "required": false,
109
+ "mutable": false,
110
+ "description": "Optional decorative prefix glyph for the complete icon + title + body variant."
111
+ }
112
+ },
113
+ "events": [],
114
+ "methods": [],
115
+ "slots": []
116
+ },
117
+ "props": {
118
+ "body": {
119
+ "type": "string",
120
+ "resolvedType": "string",
121
+ "attribute": "body",
122
+ "default": "''",
123
+ "required": false,
124
+ "mutable": false,
125
+ "description": "Explanatory empty-state copy. Every supported variant includes body text."
126
+ },
127
+ "heading": {
128
+ "type": "string | undefined",
129
+ "resolvedType": "string | undefined",
130
+ "attribute": "heading",
131
+ "required": false,
132
+ "mutable": false,
133
+ "description": "Optional visual title. Use with body; required when icon is provided."
134
+ },
135
+ "icon": {
136
+ "type": "string | undefined",
137
+ "resolvedType": "string | undefined",
138
+ "attribute": "icon",
139
+ "required": false,
140
+ "mutable": false,
141
+ "description": "Optional decorative prefix glyph for the complete icon + title + body variant."
142
+ }
143
+ },
144
+ "events": [],
145
+ "methods": [],
146
+ "slots": [],
147
+ "exports": {
148
+ "customElement": "ds-empty-state",
149
+ "react": "DsEmptyState",
150
+ "angular": "DsEmptyState"
151
+ },
152
+ "consumption": {
153
+ "install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
154
+ "cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
155
+ "customElements": {
156
+ "import": "import '@ds-mo/ui/dist/components/ds-empty-state.js';",
157
+ "example": "<ds-empty-state></ds-empty-state>"
158
+ },
159
+ "react": {
160
+ "import": "import { DsEmptyState } from '@ds-mo/ui/react';",
161
+ "example": "<DsEmptyState />"
162
+ },
163
+ "angular": {
164
+ "import": "import { DsEmptyState } from '@ds-mo/ui/angular/ds-empty-state';",
165
+ "example": "<ds-empty-state></ds-empty-state>"
166
+ },
167
+ "peerDependencies": {
168
+ "required": [
169
+ "@ds-mo/tokens ^3.1.1",
170
+ "@ds-mo/icons ^6.2.0"
171
+ ],
172
+ "frameworks": "Custom Elements; React 18/19 wrappers; Angular 19-22 standalone adapters."
173
+ }
174
+ }
175
+ },
176
+ "dependencies": [
177
+ "@ds-mo/ui",
178
+ "@ds-mo/tokens",
179
+ "@ds-mo/icons"
180
+ ],
181
+ "registryDependencies": [
182
+ "icon",
183
+ "text"
184
+ ],
185
+ "files": [
186
+ {
187
+ "path": "src/wc/components/EmptyState/EmptyState.css",
188
+ "content": ":host {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n:host,\n.empty-state,\n.empty-state__text {\n box-sizing: border-box;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--dimension-space-100);\n height: 100%;\n width: 100%;\n text-align: center;\n}\n\n.empty-state__icon {\n flex: 0 0 auto;\n}\n\n.empty-state__text {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--dimension-space-050);\n width: 100%;\n}\n",
189
+ "type": "registry:ui"
190
+ },
191
+ {
192
+ "path": "src/wc/components/EmptyState/EmptyState.tsx",
193
+ "content": "import { Component, Prop, h, Host } from '@stencil/core';\n\n@Component({\n tag: 'ds-empty-state',\n styleUrl: 'EmptyState.css',\n scoped: true,\n})\nexport class EmptyState {\n /** Optional decorative prefix glyph for the complete icon + title + body variant. */\n @Prop() icon: string | undefined;\n /** Optional visual title. Use with body; required when icon is provided. */\n @Prop() heading: string | undefined;\n /** Explanatory empty-state copy. Every supported variant includes body text. */\n @Prop() body: string = '';\n\n render() {\n const showHeading = Boolean(this.heading?.trim());\n const showIcon = showHeading && Boolean(this.icon);\n\n return (\n <Host>\n <div class=\"empty-state\">\n {showIcon && (\n <ds-icon\n class=\"empty-state__icon\"\n name={this.icon}\n size=\"xl\"\n color=\"primary\"\n />\n )}\n <div class=\"empty-state__text\">\n {showHeading && (\n <ds-text\n class=\"empty-state__title\"\n as=\"div\"\n variant=\"text-title-small\"\n color=\"primary\"\n align=\"center\"\n >\n {this.heading}\n </ds-text>\n )}\n {this.body && (\n <ds-text\n class=\"empty-state__body\"\n as=\"p\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n align=\"center\"\n >\n {this.body}\n </ds-text>\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n",
194
+ "type": "registry:ui"
195
+ }
196
+ ]
197
+ }