@ds-mo/ui 14.35.0 → 14.36.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 (326) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +1105 -187
  4. package/dist/angular/ds-button-inverted.d.ts +17 -0
  5. package/dist/angular/ds-button-inverted.js +46 -0
  6. package/dist/angular/ds-calendar.d.ts +15 -0
  7. package/dist/angular/ds-calendar.js +43 -0
  8. package/dist/angular/ds-field.d.ts +1 -1
  9. package/dist/angular/ds-field.js +1 -1
  10. package/dist/angular/ds-input-date.d.ts +15 -0
  11. package/dist/angular/ds-input-date.js +43 -0
  12. package/dist/angular/ds-input-time.d.ts +15 -0
  13. package/dist/angular/ds-input-time.js +43 -0
  14. package/dist/angular/ds-input.d.ts +1 -1
  15. package/dist/angular/ds-input.js +3 -3
  16. package/dist/angular/ds-select.d.ts +1 -1
  17. package/dist/angular/ds-select.js +3 -3
  18. package/dist/angular/ds-time-picker.d.ts +15 -0
  19. package/dist/angular/ds-time-picker.js +43 -0
  20. package/dist/angular/index.d.ts +1 -1
  21. package/dist/angular/index.js +5 -0
  22. package/dist/angular/proxies.d.ts +5 -0
  23. package/dist/angular/proxies.js +5 -0
  24. package/dist/angular/text-value-accessor.d.ts +1 -1
  25. package/dist/angular/text-value-accessor.js +2 -2
  26. package/dist/components/ds-agent-activity.js +1 -1
  27. package/dist/components/ds-agent-questionnaire.js +1 -1
  28. package/dist/components/ds-agent-response.js +1 -1
  29. package/dist/components/ds-agent-source-list.js +1 -1
  30. package/dist/components/ds-agent-tool-call.js +1 -1
  31. package/dist/components/ds-attachment-list.js +1 -1
  32. package/dist/components/ds-badge.js +1 -1
  33. package/dist/components/ds-banner.js +1 -1
  34. package/dist/components/ds-bar-action.js +1 -1
  35. package/dist/components/ds-bar-nav.js +1 -1
  36. package/dist/components/ds-bar-page-title.js +1 -1
  37. package/dist/components/ds-bar-title.js +1 -1
  38. package/dist/components/ds-bar-workflow.js +1 -1
  39. package/dist/components/ds-breadcrumb.js +1 -1
  40. package/dist/components/ds-button-filled.js +1 -1
  41. package/dist/components/ds-button-inverted.d.ts +11 -0
  42. package/dist/components/ds-button-inverted.js +2 -0
  43. package/dist/components/ds-button-inverted.js.map +1 -0
  44. package/dist/components/ds-button-unfilled.js +1 -1
  45. package/dist/components/ds-calendar.d.ts +11 -0
  46. package/dist/components/ds-calendar.js +2 -0
  47. package/dist/components/ds-calendar.js.map +1 -0
  48. package/dist/components/ds-card-action-center.js +1 -1
  49. package/dist/components/ds-card-chart.js +1 -1
  50. package/dist/components/ds-card-navigation.js +1 -1
  51. package/dist/components/ds-card-navigation.js.map +1 -1
  52. package/dist/components/ds-card-overview.js +1 -1
  53. package/dist/components/ds-card-setting.js +1 -1
  54. package/dist/components/ds-card-settings-scope.js +1 -1
  55. package/dist/components/ds-card-settings-scope.js.map +1 -1
  56. package/dist/components/ds-chart-legend.js +1 -1
  57. package/dist/components/ds-chart.js +1 -1
  58. package/dist/components/ds-checkbox.js +1 -1
  59. package/dist/components/ds-chip.js +1 -1
  60. package/dist/components/ds-code-block.js +1 -1
  61. package/dist/components/ds-conversation-list-item.js +1 -1
  62. package/dist/components/ds-conversation-list-item.js.map +1 -1
  63. package/dist/components/ds-conversation-list-section.js +1 -1
  64. package/dist/components/ds-conversation-list.js +1 -1
  65. package/dist/components/ds-divider.js +1 -1
  66. package/dist/components/ds-empty-state.js +1 -1
  67. package/dist/components/ds-field.js +1 -1
  68. package/dist/components/ds-filter-menu.js +1 -1
  69. package/dist/components/ds-input-date.d.ts +11 -0
  70. package/dist/components/ds-input-date.js +2 -0
  71. package/dist/components/ds-input-date.js.map +1 -0
  72. package/dist/components/ds-input-time.d.ts +11 -0
  73. package/dist/components/ds-input-time.js +2 -0
  74. package/dist/components/ds-input-time.js.map +1 -0
  75. package/dist/components/ds-input.js +1 -1
  76. package/dist/components/ds-markdown.js +1 -1
  77. package/dist/components/ds-menu.js +1 -1
  78. package/dist/components/ds-message-actions.js +1 -1
  79. package/dist/components/ds-message-bubble.js +1 -1
  80. package/dist/components/ds-message-bubble.js.map +1 -1
  81. package/dist/components/ds-message-composer.js +1 -1
  82. package/dist/components/ds-message-scroller.js +1 -1
  83. package/dist/components/ds-message.js +1 -1
  84. package/dist/components/ds-mobile-bar-nav.js +1 -1
  85. package/dist/components/ds-mobile-header.js +1 -1
  86. package/dist/components/ds-mobile-section-switcher.js +1 -1
  87. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  88. package/dist/components/ds-modal.js +1 -1
  89. package/dist/components/ds-pagination.js +1 -1
  90. package/dist/components/ds-panel-nav.js +1 -1
  91. package/dist/components/ds-panel-sub-nav.js +1 -1
  92. package/dist/components/ds-panel-tool-header.js +1 -1
  93. package/dist/components/ds-panel-tool-search.js +1 -1
  94. package/dist/components/ds-panel-tools.js +1 -1
  95. package/dist/components/ds-paper-texture.js +1 -1
  96. package/dist/components/ds-radio.js +1 -1
  97. package/dist/components/ds-score.js +1 -1
  98. package/dist/components/ds-scroll-overlay.js +1 -1
  99. package/dist/components/ds-select.js +1 -1
  100. package/dist/components/ds-shell-app.js +1 -1
  101. package/dist/components/ds-shell-page.js +1 -1
  102. package/dist/components/ds-shell-tools.js +1 -1
  103. package/dist/components/ds-skeleton.js +1 -1
  104. package/dist/components/ds-slider.js +1 -1
  105. package/dist/components/ds-slider.js.map +1 -1
  106. package/dist/components/ds-swatch-picker.js +1 -1
  107. package/dist/components/ds-switch.js +1 -1
  108. package/dist/components/ds-tab-group.js +1 -1
  109. package/dist/components/ds-table-filter.js +1 -1
  110. package/dist/components/ds-table-filter.js.map +1 -1
  111. package/dist/components/ds-table-group.js +1 -1
  112. package/dist/components/ds-table-preferences.js +1 -1
  113. package/dist/components/ds-table-preferences.js.map +1 -1
  114. package/dist/components/ds-table-saved-views.js +1 -1
  115. package/dist/components/ds-table-saved-views.js.map +1 -1
  116. package/dist/components/ds-table-search.js +1 -1
  117. package/dist/components/ds-table-search.js.map +1 -1
  118. package/dist/components/ds-table-sort.js +1 -1
  119. package/dist/components/ds-table-sort.js.map +1 -1
  120. package/dist/components/ds-table-toolbar.js +1 -1
  121. package/dist/components/ds-table.js +1 -1
  122. package/dist/components/ds-tag.js +1 -1
  123. package/dist/components/ds-text.js +1 -1
  124. package/dist/components/ds-textarea.js +1 -1
  125. package/dist/components/ds-textarea.js.map +1 -1
  126. package/dist/components/ds-time-picker.d.ts +11 -0
  127. package/dist/components/ds-time-picker.js +2 -0
  128. package/dist/components/ds-time-picker.js.map +1 -0
  129. package/dist/components/ds-toast.js +1 -1
  130. package/dist/components/ds-tooltip-chart.js +1 -1
  131. package/dist/components/ds-tooltip.js +1 -1
  132. package/dist/components/ds-typing-indicator.js +1 -1
  133. package/dist/components/{p-CI7VfYC3.js → p-2GVGhrh0.js} +2 -2
  134. package/dist/components/p-7O-2D29W.js +2 -0
  135. package/dist/components/p-7O-2D29W.js.map +1 -0
  136. package/dist/components/{p-CE540WZ7.js → p-8oRkhvjy.js} +2 -2
  137. package/dist/components/p-B27_chI7.js +2 -0
  138. package/dist/components/p-B27_chI7.js.map +1 -0
  139. package/dist/components/{p-xHGqrz_p.js → p-BOhpMUwO.js} +2 -2
  140. package/dist/components/{p-DdspY23v.js → p-BV5T1hzN.js} +2 -2
  141. package/dist/components/{p-DTDLlinw.js → p-BWfzaSc3.js} +2 -2
  142. package/dist/components/{p-CLGtPE0K.js → p-BgLI9JoT.js} +2 -2
  143. package/dist/components/{p-DGzn4k4h.js → p-C-dHtQMi.js} +2 -2
  144. package/dist/components/p-C0CE2v5D.js +2 -0
  145. package/dist/components/{p-yZRXPHDe.js → p-C2JnoaWI.js} +2 -2
  146. package/dist/components/{p-umAf0fBn.js → p-C4m8y9ki.js} +2 -2
  147. package/dist/components/{p-CAxDdYjh.js → p-CDJ2Ntcq.js} +2 -2
  148. package/dist/components/{p-DQQFN2sw.js → p-CMQUuGvl.js} +2 -2
  149. package/dist/components/{p-BQaO7cg_.js → p-CQ5RwY2C.js} +2 -2
  150. package/dist/components/p-CQIh2yRP.js +2 -0
  151. package/dist/components/{p-C1_3CVma.js.map → p-CQIh2yRP.js.map} +1 -1
  152. package/dist/components/{p-DEGNrPLe.js → p-CWPT3aOB.js} +2 -2
  153. package/dist/components/p-CWog26I_.js +2 -0
  154. package/dist/components/p-CWog26I_.js.map +1 -0
  155. package/dist/components/{p-beRFLHbB.js → p-CaNCGKEJ.js} +2 -2
  156. package/dist/components/p-CbSUyv5B.js +2 -0
  157. package/dist/components/{p-BINSI_KF.js.map → p-CbSUyv5B.js.map} +1 -1
  158. package/dist/components/{p-Dhw_W8nk.js → p-Cc3ZUQlJ.js} +2 -2
  159. package/dist/components/p-Cc3ZUQlJ.js.map +1 -0
  160. package/dist/components/{p-DFjIBS5B.js → p-Ce4zy8q1.js} +2 -2
  161. package/dist/components/{p-BcdHgPi5.js → p-CeXf9-X3.js} +2 -2
  162. package/dist/components/{p-omPm8_vx.js → p-Cga6Ex0E.js} +2 -2
  163. package/dist/components/{p-y06IxxoN.js → p-Cl9phSf0.js} +2 -2
  164. package/dist/components/{p-Dk-8Ju0Q.js → p-ClJhuG5Y.js} +2 -2
  165. package/dist/components/{p-BmFeeR4q.js → p-CqW2eyiF.js} +2 -2
  166. package/dist/components/p-Cus1Sigh.js +2 -0
  167. package/dist/components/{p-N5SHSVo2.js.map → p-Cus1Sigh.js.map} +1 -1
  168. package/dist/components/{p-CzbsTZt7.js → p-Cxr0IQjC.js} +2 -2
  169. package/dist/components/{p-CwqFJMvP.js → p-D7yBIPB6.js} +2 -2
  170. package/dist/components/p-D8rpKod8.js +2 -0
  171. package/dist/components/p-D8rpKod8.js.map +1 -0
  172. package/dist/components/{p-DtLQIMsa.js → p-DBwa1OXP.js} +2 -2
  173. package/dist/components/{p-BQsVI_vO.js → p-DK9Ex3aY.js} +2 -2
  174. package/dist/components/{p-CqlBlv55.js → p-DLXXGgmf.js} +2 -2
  175. package/dist/components/{p-BnzsBNUY.js → p-DVd1TIxi.js} +2 -2
  176. package/dist/components/p-DZ58Sg5a.js.map +1 -1
  177. package/dist/components/{p-CZOiTaNa.js → p-DgG9W9N4.js} +2 -2
  178. package/dist/components/{p-mpk_Mm8_.js → p-DkfM55x8.js} +2 -2
  179. package/dist/components/p-DkikNSSO.js +2 -0
  180. package/dist/components/p-DkikNSSO.js.map +1 -0
  181. package/dist/components/{p-C7CZ9pnP.js → p-Dryt3COt.js} +2 -2
  182. package/dist/components/{p-eo_pmPqp.js → p-Ds51RgCi.js} +2 -2
  183. package/dist/components/p-DtkLtKY0.js +2 -0
  184. package/dist/components/p-DtkLtKY0.js.map +1 -0
  185. package/dist/components/{p-C8ek-1SP.js → p-DvzI2A_M.js} +2 -2
  186. package/dist/components/p-J5x-QtlD.js +2 -0
  187. package/dist/components/{p-beCz9OnD.js.map → p-J5x-QtlD.js.map} +1 -1
  188. package/dist/components/{p-CSnsz3Eb.js → p-Jaqdfw4E.js} +2 -2
  189. package/dist/components/p-MQ36mEgn.js +2 -0
  190. package/dist/components/{p-UAIxh67Q.js.map → p-MQ36mEgn.js.map} +1 -1
  191. package/dist/components/{p-BnWxbhFP.js → p-PmcUwTQ_.js} +2 -2
  192. package/dist/components/p-TjXGRPik.js +2 -0
  193. package/dist/components/{p-B-9fdIWv.js.map → p-TjXGRPik.js.map} +1 -1
  194. package/dist/components/{p-Cq_Qpe_C.js → p-bM3LH3kc.js} +2 -2
  195. package/dist/components/{p-BPhbwXOv.js → p-ji09W9el.js} +2 -2
  196. package/dist/components/{p-n68x-ZKp.js → p-neWTRxmf.js} +2 -2
  197. package/dist/components/{p-BPlWEidl.js → p-rYePOPbJ.js} +2 -2
  198. package/dist/components/{p-D44g2Kw1.js → p-su6y4hLK.js} +2 -2
  199. package/dist/components/p-su6y4hLK.js.map +1 -0
  200. package/dist/components/{p-DC69DgAR.js → p-tNQ0YulU.js} +2 -2
  201. package/dist/components/{p-Cwz9TPVS.js → p-x1wf38q3.js} +2 -2
  202. package/dist/docs/components.json +6485 -3451
  203. package/dist/lib/utils/button-render.d.ts +1 -1
  204. package/dist/lib/utils/clock-time.d.ts +22 -0
  205. package/dist/lib/utils/date-filter-value.d.ts +4 -0
  206. package/dist/lib/utils/index.d.ts +3 -1
  207. package/dist/lib/utils/index.js +133 -0
  208. package/dist/lib/utils/index.js.map +4 -4
  209. package/dist/mcp-data/registry/bar-title.json +2 -2
  210. package/dist/mcp-data/registry/button-inverted.json +580 -0
  211. package/dist/mcp-data/registry/calendar.json +273 -0
  212. package/dist/mcp-data/registry/card-navigation.json +4 -2
  213. package/dist/mcp-data/registry/field.json +19 -14
  214. package/dist/mcp-data/registry/filter-menu.json +6 -10
  215. package/dist/mcp-data/registry/input-date.json +516 -0
  216. package/dist/mcp-data/registry/input-time.json +535 -0
  217. package/dist/mcp-data/registry/input.json +56 -8
  218. package/dist/mcp-data/registry/registry.json +1118 -185
  219. package/dist/mcp-data/registry/select.json +63 -7
  220. package/dist/mcp-data/registry/table-saved-views.json +6 -4
  221. package/dist/mcp-data/registry/textarea.json +2 -2
  222. package/dist/mcp-data/registry/time-picker.json +259 -0
  223. package/dist/react/components.d.ts +5 -0
  224. package/dist/react/components.js +5 -0
  225. package/dist/react/ds-button-inverted.d.ts +13 -0
  226. package/dist/react/ds-button-inverted.js +15 -0
  227. package/dist/react/ds-calendar.d.ts +12 -0
  228. package/dist/react/ds-calendar.js +12 -0
  229. package/dist/react/ds-field.d.ts +1 -1
  230. package/dist/react/ds-input-date.d.ts +12 -0
  231. package/dist/react/ds-input-date.js +12 -0
  232. package/dist/react/ds-input-time.d.ts +12 -0
  233. package/dist/react/ds-input-time.js +12 -0
  234. package/dist/react/ds-time-picker.d.ts +12 -0
  235. package/dist/react/ds-time-picker.js +12 -0
  236. package/dist/types/components/BarTitle/BarTitle.d.ts +1 -0
  237. package/dist/types/components/BarTitle/bar-title-action-chrome.d.ts +2 -0
  238. package/dist/types/components/ButtonInverted/ButtonInverted.d.ts +83 -0
  239. package/dist/types/components/ButtonInverted/index.d.ts +2 -0
  240. package/dist/types/components/Calendar/Calendar.d.ts +32 -0
  241. package/dist/types/components/Calendar/calendar-grid.d.ts +19 -0
  242. package/dist/types/components/Field/Field.d.ts +7 -2
  243. package/dist/types/components/FilterMenu/FilterMenu.d.ts +0 -10
  244. package/dist/types/components/Input/Input.d.ts +10 -0
  245. package/dist/types/components/InputDate/InputDate.d.ts +78 -0
  246. package/dist/types/components/InputTime/InputTime.d.ts +80 -0
  247. package/dist/types/components/Select/Select.d.ts +8 -1
  248. package/dist/types/components/TimePicker/TimePicker.d.ts +33 -0
  249. package/dist/types/components.d.ts +858 -27
  250. package/dist/types/utils/button-render.d.ts +1 -1
  251. package/dist/types/utils/clock-time.d.ts +23 -0
  252. package/dist/types/utils/date-filter-value.d.ts +4 -0
  253. package/dist/types/utils/index.d.ts +3 -1
  254. package/dist/vue/components.d.ts +5 -0
  255. package/dist/vue/components.js +5 -0
  256. package/dist/vue/ds-button-inverted.d.ts +3 -0
  257. package/dist/vue/ds-button-inverted.js +33 -0
  258. package/dist/vue/ds-calendar.d.ts +3 -0
  259. package/dist/vue/ds-calendar.js +16 -0
  260. package/dist/vue/ds-input-date.d.ts +3 -0
  261. package/dist/vue/ds-input-date.js +31 -0
  262. package/dist/vue/ds-input-time.d.ts +3 -0
  263. package/dist/vue/ds-input-time.js +32 -0
  264. package/dist/vue/ds-input.js +2 -0
  265. package/dist/vue/ds-select.js +3 -0
  266. package/dist/vue/ds-time-picker.d.ts +3 -0
  267. package/dist/vue/ds-time-picker.js +16 -0
  268. package/package.json +1 -1
  269. package/dist/components/p-B-9fdIWv.js +0 -2
  270. package/dist/components/p-BINSI_KF.js +0 -2
  271. package/dist/components/p-BbfBvMRR.js +0 -2
  272. package/dist/components/p-BbfBvMRR.js.map +0 -1
  273. package/dist/components/p-C1_3CVma.js +0 -2
  274. package/dist/components/p-Cmj04E5Q.js +0 -2
  275. package/dist/components/p-Cmj04E5Q.js.map +0 -1
  276. package/dist/components/p-D44g2Kw1.js.map +0 -1
  277. package/dist/components/p-D_u8WhlU.js +0 -2
  278. package/dist/components/p-Dhw_W8nk.js.map +0 -1
  279. package/dist/components/p-FPZbS19l.js +0 -2
  280. package/dist/components/p-FPZbS19l.js.map +0 -1
  281. package/dist/components/p-N5SHSVo2.js +0 -2
  282. package/dist/components/p-QjkufCcn.js +0 -2
  283. package/dist/components/p-QjkufCcn.js.map +0 -1
  284. package/dist/components/p-UAIxh67Q.js +0 -2
  285. package/dist/components/p-beCz9OnD.js +0 -2
  286. package/dist/types/components/FilterMenu/filter-menu-calendar.d.ts +0 -13
  287. /package/dist/components/{p-CI7VfYC3.js.map → p-2GVGhrh0.js.map} +0 -0
  288. /package/dist/components/{p-CE540WZ7.js.map → p-8oRkhvjy.js.map} +0 -0
  289. /package/dist/components/{p-xHGqrz_p.js.map → p-BOhpMUwO.js.map} +0 -0
  290. /package/dist/components/{p-DdspY23v.js.map → p-BV5T1hzN.js.map} +0 -0
  291. /package/dist/components/{p-DTDLlinw.js.map → p-BWfzaSc3.js.map} +0 -0
  292. /package/dist/components/{p-CLGtPE0K.js.map → p-BgLI9JoT.js.map} +0 -0
  293. /package/dist/components/{p-DGzn4k4h.js.map → p-C-dHtQMi.js.map} +0 -0
  294. /package/dist/components/{p-D_u8WhlU.js.map → p-C0CE2v5D.js.map} +0 -0
  295. /package/dist/components/{p-yZRXPHDe.js.map → p-C2JnoaWI.js.map} +0 -0
  296. /package/dist/components/{p-umAf0fBn.js.map → p-C4m8y9ki.js.map} +0 -0
  297. /package/dist/components/{p-CAxDdYjh.js.map → p-CDJ2Ntcq.js.map} +0 -0
  298. /package/dist/components/{p-DQQFN2sw.js.map → p-CMQUuGvl.js.map} +0 -0
  299. /package/dist/components/{p-BQaO7cg_.js.map → p-CQ5RwY2C.js.map} +0 -0
  300. /package/dist/components/{p-DEGNrPLe.js.map → p-CWPT3aOB.js.map} +0 -0
  301. /package/dist/components/{p-beRFLHbB.js.map → p-CaNCGKEJ.js.map} +0 -0
  302. /package/dist/components/{p-DFjIBS5B.js.map → p-Ce4zy8q1.js.map} +0 -0
  303. /package/dist/components/{p-BcdHgPi5.js.map → p-CeXf9-X3.js.map} +0 -0
  304. /package/dist/components/{p-omPm8_vx.js.map → p-Cga6Ex0E.js.map} +0 -0
  305. /package/dist/components/{p-y06IxxoN.js.map → p-Cl9phSf0.js.map} +0 -0
  306. /package/dist/components/{p-Dk-8Ju0Q.js.map → p-ClJhuG5Y.js.map} +0 -0
  307. /package/dist/components/{p-BmFeeR4q.js.map → p-CqW2eyiF.js.map} +0 -0
  308. /package/dist/components/{p-CzbsTZt7.js.map → p-Cxr0IQjC.js.map} +0 -0
  309. /package/dist/components/{p-CwqFJMvP.js.map → p-D7yBIPB6.js.map} +0 -0
  310. /package/dist/components/{p-DtLQIMsa.js.map → p-DBwa1OXP.js.map} +0 -0
  311. /package/dist/components/{p-BQsVI_vO.js.map → p-DK9Ex3aY.js.map} +0 -0
  312. /package/dist/components/{p-CqlBlv55.js.map → p-DLXXGgmf.js.map} +0 -0
  313. /package/dist/components/{p-BnzsBNUY.js.map → p-DVd1TIxi.js.map} +0 -0
  314. /package/dist/components/{p-CZOiTaNa.js.map → p-DgG9W9N4.js.map} +0 -0
  315. /package/dist/components/{p-mpk_Mm8_.js.map → p-DkfM55x8.js.map} +0 -0
  316. /package/dist/components/{p-C7CZ9pnP.js.map → p-Dryt3COt.js.map} +0 -0
  317. /package/dist/components/{p-eo_pmPqp.js.map → p-Ds51RgCi.js.map} +0 -0
  318. /package/dist/components/{p-C8ek-1SP.js.map → p-DvzI2A_M.js.map} +0 -0
  319. /package/dist/components/{p-CSnsz3Eb.js.map → p-Jaqdfw4E.js.map} +0 -0
  320. /package/dist/components/{p-BnWxbhFP.js.map → p-PmcUwTQ_.js.map} +0 -0
  321. /package/dist/components/{p-Cq_Qpe_C.js.map → p-bM3LH3kc.js.map} +0 -0
  322. /package/dist/components/{p-BPhbwXOv.js.map → p-ji09W9el.js.map} +0 -0
  323. /package/dist/components/{p-n68x-ZKp.js.map → p-neWTRxmf.js.map} +0 -0
  324. /package/dist/components/{p-BPlWEidl.js.map → p-rYePOPbJ.js.map} +0 -0
  325. /package/dist/components/{p-DC69DgAR.js.map → p-tNQ0YulU.js.map} +0 -0
  326. /package/dist/components/{p-Cwz9TPVS.js.map → p-x1wf38q3.js.map} +0 -0
@@ -0,0 +1,580 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "button-inverted",
4
+ "title": "ButtonInverted",
5
+ "description": "Single-recipe filled command button with an inverted background and primary foreground for actions that must remain legible across ordinary surfaces.",
6
+ "type": "registry:ui",
7
+ "meta": {
8
+ "library": "@ds-mo/ui",
9
+ "distribution": "npm",
10
+ "storybook": "https://zainadeel.github.io/compomo/?path=/story/button-inverted",
11
+ "source": "src/wc/components/ButtonInverted/ButtonInverted.tsx",
12
+ "intentStatus": "complete",
13
+ "intent": {
14
+ "audience": "general",
15
+ "status": "stable",
16
+ "summary": "Single-recipe filled command button with an inverted background and primary foreground for actions that must remain legible across ordinary surfaces.",
17
+ "useWhen": [
18
+ "A command needs the filled button structure with the fixed inverted background treatment.",
19
+ "The action should use primary foreground content on the inverted surface without exposing intent or contrast choices.",
20
+ "A compact, icon-only inverted action needs an explicit accessible name.",
21
+ "The command has closely related alternatives and needs split mode while keeping the same inverted recipe."
22
+ ],
23
+ "avoidWhen": [
24
+ "The action needs semantic intent or contrast-specific filled treatments; use ButtonFilled.",
25
+ "The action is unfilled icon-only shell, navigation, overflow, or tool-rail chrome; use ButtonUnfilled.",
26
+ "The element represents navigation rather than a command.",
27
+ "The content is a persistent selected state rather than an action."
28
+ ],
29
+ "alternatives": [
30
+ {
31
+ "when": "The action's consequence needs a semantic intent or the fill must adapt through contrast.",
32
+ "component": "component:ds-button-filled",
33
+ "reason": "ButtonFilled owns intent and contrast-aware filled command treatments."
34
+ },
35
+ {
36
+ "when": "The action is shell, navigation, overflow, or tool-rail chrome.",
37
+ "component": "component:ds-button-unfilled",
38
+ "reason": "ButtonUnfilled owns unfilled chrome, active state, borders, and surface-aware interaction states."
39
+ },
40
+ {
41
+ "when": "The user is choosing a destination in application navigation.",
42
+ "component": "component:ds-panel-nav",
43
+ "reason": "PanelNav owns destination selection and navigation semantics."
44
+ }
45
+ ],
46
+ "commonlyComposedWith": [
47
+ "component:ds-modal",
48
+ "component:ds-field",
49
+ "component:ds-menu"
50
+ ],
51
+ "patterns": [
52
+ "pattern:menu-trigger"
53
+ ],
54
+ "accessibility": [
55
+ "Provide an explicit accessible name for icon-only buttons.",
56
+ "In split mode, provide menuAriaLabel for the appended ChevronDown segment, pass controls with the Menu id, and synchronize expanded with the Menu open state.",
57
+ "Set hasMenu when the action opens a Menu; it implies aria-haspopup of menu and renders the trailing chevron. Pass controls with the Menu id and expanded from the same open state given to Menu.",
58
+ "Use haspopup directly for a non-menu popup such as a dialog; that case gets no chevron.",
59
+ "Loading keeps the action focused and named, exposes busy and disabled state, and blocks activation.",
60
+ "Use native submit behavior for form submission and handle the form submit event rather than submitting from the button click event."
61
+ ],
62
+ "states": [
63
+ "Every size applies one complete control-density recipe across frame height, inline padding, icon zone, text-container inset, gap, and radius.",
64
+ "The inverted background and primary foreground are fixed; ButtonInverted has no intent, contrast, parent-surface, or optional-border props.",
65
+ "Every button has a minimum inline size equal to its resolved height. Short labels therefore form a square control while longer labels continue to hug their content.",
66
+ "Set isInset only when the button is nested inside a same-size control. The default single inset removes 4px overall; insetDepth double removes 8px overall and falls back to single at xs.",
67
+ "Rounded changes only the control radius to the half-radius treatment; it does not change the inverted recipe, size, variant, or interaction semantics.",
68
+ "Loading prevents duplicate activation without applying inactive opacity or removing the current keyboard focus.",
69
+ "Icon and icon-label loading replace the icon in place. Label-only loading centers the loader while preserving the button's measured width.",
70
+ "Physical press scaling is on by default. Disable it only when an owning composite must keep child or background geometry fixed; hover and pressed interaction washes remain available.",
71
+ "ButtonInverted has no active, pressed, or selected state; a filled action is a command, not a toggle or persistent selection.",
72
+ "An open popup is a transient pressed state. While surfaceOpen is true the pressed wash is held for the popup's complete rendered lifecycle without introducing selected styling.",
73
+ "Split mode supports label, icon, and icon-label primary segments. The primary segment emits dsClick and the appended menu segment emits dsMenuClick."
74
+ ],
75
+ "responsiveBehavior": [
76
+ "Use fill width only when the parent layout calls for a full-width action, commonly on narrow form layouts.",
77
+ "Choose density from the containing layout so the inverted action matches neighboring controls."
78
+ ],
79
+ "frameworkCaveats": {
80
+ "customElements": [
81
+ "For form submission, use the native submit type and listen to the form submit event; use dsClick for non-submit commands."
82
+ ],
83
+ "react": [
84
+ "Keep async state in the owner and pass it to the loading state until the command settles."
85
+ ],
86
+ "angular": [
87
+ "Keep async state in the owner and pass it to the loading state until the command settles."
88
+ ]
89
+ },
90
+ "references": [
91
+ {
92
+ "label": "Storybook examples",
93
+ "path": "src/wc/components/ButtonInverted/ButtonInverted.stories.ts"
94
+ },
95
+ {
96
+ "label": "Surface ownership and trigger state",
97
+ "path": "src/docs/SurfaceOwnership.mdx"
98
+ }
99
+ ]
100
+ },
101
+ "api": {
102
+ "props": {
103
+ "ariaLabel": {
104
+ "type": "string | null",
105
+ "resolvedType": "null | string",
106
+ "attribute": "aria-label",
107
+ "default": "null",
108
+ "required": false,
109
+ "mutable": false,
110
+ "description": "Accessible name override. Required for icon-only buttons."
111
+ },
112
+ "controls": {
113
+ "type": "string | undefined",
114
+ "resolvedType": "string | undefined",
115
+ "attribute": "controls",
116
+ "required": false,
117
+ "mutable": false,
118
+ "description": "ID of the popup this button controls."
119
+ },
120
+ "expanded": {
121
+ "type": "boolean | undefined",
122
+ "resolvedType": "boolean | undefined",
123
+ "attribute": "expanded",
124
+ "required": false,
125
+ "mutable": false,
126
+ "description": "Controlled disclosure state forwarded to aria-expanded."
127
+ },
128
+ "hasMenu": {
129
+ "type": "boolean",
130
+ "resolvedType": "boolean",
131
+ "attribute": "has-menu",
132
+ "default": "false",
133
+ "required": false,
134
+ "mutable": false,
135
+ "description": "This action has a menu: implies `aria-haspopup=\"menu\"` and adds the\ntrailing chevron that carries the affordance.\n\nOnly `label` and `icon-label` are supported. Icon-only menu triggers belong\nto ButtonUnfilled so the glyph can communicate the overflow affordance."
136
+ },
137
+ "haspopup": {
138
+ "type": "ButtonInvertedPopup | undefined",
139
+ "resolvedType": "\"dialog\" | \"grid\" | \"listbox\" | \"menu\" | \"tree\" | \"true\" | undefined",
140
+ "attribute": "haspopup",
141
+ "required": false,
142
+ "mutable": false,
143
+ "description": "Popup type exposed to assistive technology."
144
+ },
145
+ "icon": {
146
+ "type": "string",
147
+ "resolvedType": "string",
148
+ "attribute": "icon",
149
+ "default": "''",
150
+ "required": false,
151
+ "mutable": false,
152
+ "description": "Icon name passed to <ds-icon> for `icon` / `icon-label` variants."
153
+ },
154
+ "insetDepth": {
155
+ "type": "ControlInsetDepth",
156
+ "resolvedType": "\"double\" | \"single\"",
157
+ "attribute": "inset-depth",
158
+ "default": "'single'",
159
+ "required": false,
160
+ "mutable": false,
161
+ "description": "Single removes 4px overall; double removes 8px overall (xs stays single)."
162
+ },
163
+ "isInactive": {
164
+ "type": "boolean",
165
+ "resolvedType": "boolean",
166
+ "attribute": "is-inactive",
167
+ "default": "false",
168
+ "required": false,
169
+ "mutable": false,
170
+ "description": "Disables interaction."
171
+ },
172
+ "isInset": {
173
+ "type": "boolean",
174
+ "resolvedType": "boolean",
175
+ "attribute": "is-inset",
176
+ "default": "false",
177
+ "required": false,
178
+ "mutable": false,
179
+ "description": "Use reduced outer geometry when nested inside a control of the same size."
180
+ },
181
+ "isLoading": {
182
+ "type": "boolean",
183
+ "resolvedType": "boolean",
184
+ "attribute": "is-loading",
185
+ "default": "false",
186
+ "required": false,
187
+ "mutable": false,
188
+ "description": "Shows an inline loader and prevents interaction without applying inactive opacity."
189
+ },
190
+ "label": {
191
+ "type": "string",
192
+ "resolvedType": "string",
193
+ "attribute": "label",
194
+ "default": "''",
195
+ "required": false,
196
+ "mutable": false,
197
+ "description": "Visible text for `label` / `icon-label` variants."
198
+ },
199
+ "labelEmphasis": {
200
+ "type": "boolean",
201
+ "resolvedType": "boolean",
202
+ "attribute": "label-emphasis",
203
+ "default": "true",
204
+ "required": false,
205
+ "mutable": false,
206
+ "description": "Whether the visible label uses the emphasized weight."
207
+ },
208
+ "menuAriaLabel": {
209
+ "type": "string",
210
+ "resolvedType": "string",
211
+ "attribute": "menu-aria-label",
212
+ "default": "'More options'",
213
+ "required": false,
214
+ "mutable": false,
215
+ "description": "Accessible name for the appended menu segment in split mode."
216
+ },
217
+ "pressScale": {
218
+ "type": "boolean",
219
+ "resolvedType": "boolean",
220
+ "attribute": "press-scale",
221
+ "default": "true",
222
+ "required": false,
223
+ "mutable": false,
224
+ "description": "Scale down during a physical pointer press.\nDisable when an owning composite requires fixed child or background geometry."
225
+ },
226
+ "rounded": {
227
+ "type": "boolean",
228
+ "resolvedType": "boolean",
229
+ "attribute": "rounded",
230
+ "default": "false",
231
+ "required": false,
232
+ "mutable": false,
233
+ "description": "Use the half-radius treatment instead of the default control radius."
234
+ },
235
+ "size": {
236
+ "type": "ButtonInvertedSize",
237
+ "resolvedType": "\"lg\" | \"md\" | \"sm\" | \"xs\"",
238
+ "attribute": "size",
239
+ "default": "'md'",
240
+ "required": false,
241
+ "mutable": false,
242
+ "description": "Control density (height, padding, icon, type)."
243
+ },
244
+ "split": {
245
+ "type": "boolean",
246
+ "resolvedType": "boolean",
247
+ "attribute": "split",
248
+ "default": "false",
249
+ "required": false,
250
+ "mutable": false,
251
+ "description": "Append a separate ChevronDown menu segment while preserving the inverted\nrecipe, variant, size, loading, inactive, and width treatment."
252
+ },
253
+ "surfaceOpen": {
254
+ "type": "boolean | undefined",
255
+ "resolvedType": "boolean | undefined",
256
+ "attribute": "surface-open",
257
+ "required": false,
258
+ "mutable": false,
259
+ "description": "The associated menu, picker, or panel is visible, including its exit motion.\nHolds only the pressed wash and does not set ARIA or selection state."
260
+ },
261
+ "type": {
262
+ "type": "'button' | 'submit' | 'reset'",
263
+ "resolvedType": "\"button\" | \"reset\" | \"submit\"",
264
+ "attribute": "type",
265
+ "default": "'button'",
266
+ "required": false,
267
+ "mutable": false,
268
+ "description": "Native button type."
269
+ },
270
+ "variant": {
271
+ "type": "ButtonInvertedVariant",
272
+ "resolvedType": "\"icon\" | \"icon-label\" | \"label\"",
273
+ "attribute": "variant",
274
+ "default": "'label'",
275
+ "required": false,
276
+ "mutable": false,
277
+ "description": "Content layout. Default is label-only; pass `icon` for icon-only chrome\nor `icon-label` for leading icon + text."
278
+ },
279
+ "width": {
280
+ "type": "ButtonInvertedWidth",
281
+ "resolvedType": "\"fill\" | \"hug\"",
282
+ "attribute": "width",
283
+ "default": "'hug'",
284
+ "required": false,
285
+ "mutable": false,
286
+ "description": "Width fit — hug content (default) or fill the parent."
287
+ }
288
+ },
289
+ "events": [
290
+ {
291
+ "name": "dsClick",
292
+ "detail": "MouseEvent",
293
+ "bubbles": true,
294
+ "cancelable": true,
295
+ "composed": true
296
+ },
297
+ {
298
+ "name": "dsMenuClick",
299
+ "detail": "MouseEvent",
300
+ "bubbles": true,
301
+ "cancelable": true,
302
+ "composed": true
303
+ }
304
+ ],
305
+ "methods": [
306
+ {
307
+ "name": "setFocus",
308
+ "signature": "setFocus(segment?: \"primary\" | \"menu\") => Promise<void>"
309
+ }
310
+ ],
311
+ "slots": []
312
+ },
313
+ "props": {
314
+ "ariaLabel": {
315
+ "type": "string | null",
316
+ "resolvedType": "null | string",
317
+ "attribute": "aria-label",
318
+ "default": "null",
319
+ "required": false,
320
+ "mutable": false,
321
+ "description": "Accessible name override. Required for icon-only buttons."
322
+ },
323
+ "controls": {
324
+ "type": "string | undefined",
325
+ "resolvedType": "string | undefined",
326
+ "attribute": "controls",
327
+ "required": false,
328
+ "mutable": false,
329
+ "description": "ID of the popup this button controls."
330
+ },
331
+ "expanded": {
332
+ "type": "boolean | undefined",
333
+ "resolvedType": "boolean | undefined",
334
+ "attribute": "expanded",
335
+ "required": false,
336
+ "mutable": false,
337
+ "description": "Controlled disclosure state forwarded to aria-expanded."
338
+ },
339
+ "hasMenu": {
340
+ "type": "boolean",
341
+ "resolvedType": "boolean",
342
+ "attribute": "has-menu",
343
+ "default": "false",
344
+ "required": false,
345
+ "mutable": false,
346
+ "description": "This action has a menu: implies `aria-haspopup=\"menu\"` and adds the\ntrailing chevron that carries the affordance.\n\nOnly `label` and `icon-label` are supported. Icon-only menu triggers belong\nto ButtonUnfilled so the glyph can communicate the overflow affordance."
347
+ },
348
+ "haspopup": {
349
+ "type": "ButtonInvertedPopup | undefined",
350
+ "resolvedType": "\"dialog\" | \"grid\" | \"listbox\" | \"menu\" | \"tree\" | \"true\" | undefined",
351
+ "attribute": "haspopup",
352
+ "required": false,
353
+ "mutable": false,
354
+ "description": "Popup type exposed to assistive technology."
355
+ },
356
+ "icon": {
357
+ "type": "string",
358
+ "resolvedType": "string",
359
+ "attribute": "icon",
360
+ "default": "''",
361
+ "required": false,
362
+ "mutable": false,
363
+ "description": "Icon name passed to <ds-icon> for `icon` / `icon-label` variants."
364
+ },
365
+ "insetDepth": {
366
+ "type": "ControlInsetDepth",
367
+ "resolvedType": "\"double\" | \"single\"",
368
+ "attribute": "inset-depth",
369
+ "default": "'single'",
370
+ "required": false,
371
+ "mutable": false,
372
+ "description": "Single removes 4px overall; double removes 8px overall (xs stays single)."
373
+ },
374
+ "isInactive": {
375
+ "type": "boolean",
376
+ "resolvedType": "boolean",
377
+ "attribute": "is-inactive",
378
+ "default": "false",
379
+ "required": false,
380
+ "mutable": false,
381
+ "description": "Disables interaction."
382
+ },
383
+ "isInset": {
384
+ "type": "boolean",
385
+ "resolvedType": "boolean",
386
+ "attribute": "is-inset",
387
+ "default": "false",
388
+ "required": false,
389
+ "mutable": false,
390
+ "description": "Use reduced outer geometry when nested inside a control of the same size."
391
+ },
392
+ "isLoading": {
393
+ "type": "boolean",
394
+ "resolvedType": "boolean",
395
+ "attribute": "is-loading",
396
+ "default": "false",
397
+ "required": false,
398
+ "mutable": false,
399
+ "description": "Shows an inline loader and prevents interaction without applying inactive opacity."
400
+ },
401
+ "label": {
402
+ "type": "string",
403
+ "resolvedType": "string",
404
+ "attribute": "label",
405
+ "default": "''",
406
+ "required": false,
407
+ "mutable": false,
408
+ "description": "Visible text for `label` / `icon-label` variants."
409
+ },
410
+ "labelEmphasis": {
411
+ "type": "boolean",
412
+ "resolvedType": "boolean",
413
+ "attribute": "label-emphasis",
414
+ "default": "true",
415
+ "required": false,
416
+ "mutable": false,
417
+ "description": "Whether the visible label uses the emphasized weight."
418
+ },
419
+ "menuAriaLabel": {
420
+ "type": "string",
421
+ "resolvedType": "string",
422
+ "attribute": "menu-aria-label",
423
+ "default": "'More options'",
424
+ "required": false,
425
+ "mutable": false,
426
+ "description": "Accessible name for the appended menu segment in split mode."
427
+ },
428
+ "pressScale": {
429
+ "type": "boolean",
430
+ "resolvedType": "boolean",
431
+ "attribute": "press-scale",
432
+ "default": "true",
433
+ "required": false,
434
+ "mutable": false,
435
+ "description": "Scale down during a physical pointer press.\nDisable when an owning composite requires fixed child or background geometry."
436
+ },
437
+ "rounded": {
438
+ "type": "boolean",
439
+ "resolvedType": "boolean",
440
+ "attribute": "rounded",
441
+ "default": "false",
442
+ "required": false,
443
+ "mutable": false,
444
+ "description": "Use the half-radius treatment instead of the default control radius."
445
+ },
446
+ "size": {
447
+ "type": "ButtonInvertedSize",
448
+ "resolvedType": "\"lg\" | \"md\" | \"sm\" | \"xs\"",
449
+ "attribute": "size",
450
+ "default": "'md'",
451
+ "required": false,
452
+ "mutable": false,
453
+ "description": "Control density (height, padding, icon, type)."
454
+ },
455
+ "split": {
456
+ "type": "boolean",
457
+ "resolvedType": "boolean",
458
+ "attribute": "split",
459
+ "default": "false",
460
+ "required": false,
461
+ "mutable": false,
462
+ "description": "Append a separate ChevronDown menu segment while preserving the inverted\nrecipe, variant, size, loading, inactive, and width treatment."
463
+ },
464
+ "surfaceOpen": {
465
+ "type": "boolean | undefined",
466
+ "resolvedType": "boolean | undefined",
467
+ "attribute": "surface-open",
468
+ "required": false,
469
+ "mutable": false,
470
+ "description": "The associated menu, picker, or panel is visible, including its exit motion.\nHolds only the pressed wash and does not set ARIA or selection state."
471
+ },
472
+ "type": {
473
+ "type": "'button' | 'submit' | 'reset'",
474
+ "resolvedType": "\"button\" | \"reset\" | \"submit\"",
475
+ "attribute": "type",
476
+ "default": "'button'",
477
+ "required": false,
478
+ "mutable": false,
479
+ "description": "Native button type."
480
+ },
481
+ "variant": {
482
+ "type": "ButtonInvertedVariant",
483
+ "resolvedType": "\"icon\" | \"icon-label\" | \"label\"",
484
+ "attribute": "variant",
485
+ "default": "'label'",
486
+ "required": false,
487
+ "mutable": false,
488
+ "description": "Content layout. Default is label-only; pass `icon` for icon-only chrome\nor `icon-label` for leading icon + text."
489
+ },
490
+ "width": {
491
+ "type": "ButtonInvertedWidth",
492
+ "resolvedType": "\"fill\" | \"hug\"",
493
+ "attribute": "width",
494
+ "default": "'hug'",
495
+ "required": false,
496
+ "mutable": false,
497
+ "description": "Width fit — hug content (default) or fill the parent."
498
+ }
499
+ },
500
+ "events": [
501
+ {
502
+ "name": "dsClick",
503
+ "detail": "MouseEvent",
504
+ "bubbles": true,
505
+ "cancelable": true,
506
+ "composed": true
507
+ },
508
+ {
509
+ "name": "dsMenuClick",
510
+ "detail": "MouseEvent",
511
+ "bubbles": true,
512
+ "cancelable": true,
513
+ "composed": true
514
+ }
515
+ ],
516
+ "methods": [
517
+ {
518
+ "name": "setFocus",
519
+ "signature": "setFocus(segment?: \"primary\" | \"menu\") => Promise<void>"
520
+ }
521
+ ],
522
+ "slots": [],
523
+ "exports": {
524
+ "customElement": "ds-button-inverted",
525
+ "react": "DsButtonInverted",
526
+ "vue": "DsButtonInverted",
527
+ "angular": "DsButtonInverted"
528
+ },
529
+ "consumption": {
530
+ "install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
531
+ "cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
532
+ "customElements": {
533
+ "import": "import '@ds-mo/ui/dist/components/ds-button-inverted.js';",
534
+ "example": "<ds-button-inverted></ds-button-inverted>"
535
+ },
536
+ "react": {
537
+ "import": "import { DsButtonInverted } from '@ds-mo/ui/react';",
538
+ "example": "<DsButtonInverted />"
539
+ },
540
+ "vue": {
541
+ "import": "import { DsButtonInverted } from '@ds-mo/ui/vue';",
542
+ "example": "<DsButtonInverted />"
543
+ },
544
+ "angular": {
545
+ "import": "import { DsButtonInverted } from '@ds-mo/ui/angular/ds-button-inverted';",
546
+ "example": "<ds-button-inverted></ds-button-inverted>"
547
+ },
548
+ "peerDependencies": {
549
+ "required": [
550
+ "@ds-mo/tokens ^6.5.1",
551
+ "@ds-mo/icons ^7.0.0"
552
+ ],
553
+ "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
554
+ }
555
+ }
556
+ },
557
+ "dependencies": [
558
+ "@ds-mo/ui",
559
+ "@ds-mo/tokens",
560
+ "@ds-mo/icons"
561
+ ],
562
+ "registryDependencies": [
563
+ "badge",
564
+ "icon",
565
+ "loader",
566
+ "text"
567
+ ],
568
+ "files": [
569
+ {
570
+ "path": "src/wc/components/ButtonInverted/ButtonInverted.css",
571
+ "content": "@import '../../utils/radius.css';\n@import '../../utils/button-base.css';\n@import '../../utils/button-split.css';\n\n:host {\n --ds-button-split-divider: var(--color-inverted-border-tertiary);\n}\n\n.button-inverted {\n background-color: var(--color-inverted-background);\n color: var(--color-inverted-foreground-primary);\n transition:\n background-color var(--effect-motion-short-2),\n color var(--effect-motion-short-2);\n}\n",
572
+ "type": "registry:ui"
573
+ },
574
+ {
575
+ "path": "src/wc/components/ButtonInverted/ButtonInverted.tsx",
576
+ "content": "import { Component, Event, EventEmitter, h, Host, Method, Prop } from '@stencil/core';\nimport { controlWidthClass } from '../../utils';\nimport { beginElevatedControlPress } from '../../utils/control-press';\nimport { renderButtonContent } from '../../utils/button-render';\nimport type { ControlInsetDepth } from '../../utils/control-text';\nimport type { ButtonPopup, ButtonSize, ButtonVariant, ButtonWidth } from '../../utils/button-types';\n\nexport type ButtonInvertedVariant = ButtonVariant;\nexport type ButtonInvertedSize = ButtonSize;\nexport type ButtonInvertedWidth = ButtonWidth;\nexport type ButtonInvertedPopup = ButtonPopup;\n\n@Component({\n tag: 'ds-button-inverted',\n styleUrl: 'ButtonInverted.css',\n scoped: true,\n})\nexport class ButtonInverted {\n /**\n * Content layout. Default is label-only; pass `icon` for icon-only chrome\n * or `icon-label` for leading icon + text.\n */\n @Prop() variant: ButtonInvertedVariant = 'label';\n\n /** Control density (height, padding, icon, type). */\n @Prop() size: ButtonInvertedSize = 'md';\n\n /** Use reduced outer geometry when nested inside a control of the same size. */\n @Prop() isInset: boolean = false;\n\n /** Single removes 4px overall; double removes 8px overall (xs stays single). */\n @Prop() insetDepth: ControlInsetDepth = 'single';\n\n /** Width fit — hug content (default) or fill the parent. */\n @Prop() width: ButtonInvertedWidth = 'hug';\n\n /** Visible text for `label` / `icon-label` variants. */\n @Prop() label: string = '';\n\n /** Whether the visible label uses the emphasized weight. */\n @Prop() labelEmphasis: boolean = true;\n\n /** Icon name passed to <ds-icon> for `icon` / `icon-label` variants. */\n @Prop() icon: string = '';\n\n /** Use the half-radius treatment instead of the default control radius. */\n @Prop() rounded: boolean = false;\n\n /**\n * Scale down during a physical pointer press.\n * Disable when an owning composite requires fixed child or background geometry.\n */\n @Prop() pressScale: boolean = true;\n\n /** Disables interaction. */\n @Prop() isInactive: boolean = false;\n\n /** Shows an inline loader and prevents interaction without applying inactive opacity. */\n @Prop() isLoading: boolean = false;\n\n /** Native button type. */\n @Prop() type: 'button' | 'submit' | 'reset' = 'button';\n\n /** Accessible name override. Required for icon-only buttons. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n\n /** ID of the popup this button controls. */\n @Prop() controls: string | undefined;\n\n /** Controlled disclosure state forwarded to aria-expanded. */\n @Prop() expanded: boolean | undefined;\n\n /**\n * The associated menu, picker, or panel is visible, including its exit motion.\n * Holds only the pressed wash and does not set ARIA or selection state.\n */\n @Prop() surfaceOpen: boolean | undefined;\n\n /** Popup type exposed to assistive technology. */\n @Prop() haspopup: ButtonInvertedPopup | undefined;\n\n /**\n * Append a separate ChevronDown menu segment while preserving the inverted\n * recipe, variant, size, loading, inactive, and width treatment.\n */\n @Prop() split: boolean = false;\n\n /** Accessible name for the appended menu segment in split mode. */\n @Prop() menuAriaLabel: string = 'More options';\n\n /**\n * This action has a menu: implies `aria-haspopup=\"menu\"` and adds the\n * trailing chevron that carries the affordance.\n *\n * Only `label` and `icon-label` are supported. Icon-only menu triggers belong\n * to ButtonUnfilled so the glyph can communicate the overflow affordance.\n */\n @Prop() hasMenu: boolean = false;\n\n @Event() dsClick!: EventEmitter<MouseEvent>;\n @Event() dsMenuClick!: EventEmitter<MouseEvent>;\n\n private buttonEl: HTMLButtonElement | null = null;\n private menuButtonEl: HTMLButtonElement | null = null;\n\n @Method()\n async setFocus(segment: 'primary' | 'menu' = 'primary') {\n (segment === 'menu' ? this.menuButtonEl : this.buttonEl)?.focus();\n }\n\n private handleClick = (event: MouseEvent) => {\n if (this.isInactive || this.isLoading) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.dsClick.emit(event);\n };\n\n private handleMenuClick = (event: MouseEvent) => {\n if (this.isInactive || this.isLoading) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.dsMenuClick.emit(event);\n };\n\n private get resolvedHaspopup(): ButtonInvertedPopup | undefined {\n return this.haspopup ?? (this.hasMenu ? 'menu' : undefined);\n }\n\n private get resolvedSurfaceOpen(): boolean {\n return (this.surfaceOpen ?? this.expanded === true) && !this.isInactive;\n }\n\n private get accessibleName(): string | undefined {\n if (this.ariaLabel) return this.ariaLabel;\n if (this.isLoading && this.variant === 'label' && this.label) return this.label;\n return undefined;\n }\n\n private get doubleInset(): boolean {\n return this.isInset && this.insetDepth === 'double' && this.size !== 'xs';\n }\n\n private buttonClass(variant: ButtonInvertedVariant, expanded: boolean): Record<string, boolean> {\n return {\n 'button-inverted': true,\n 'ds-button': true,\n 'ds-focus-ring-inset': true,\n 'ds-control-press-scale': this.pressScale && !this.split,\n 'ds-interaction-fill': !this.isInactive,\n 'ds-interaction-fill--on-inverted': true,\n 'button-inverted--expanded': expanded,\n 'ds-interaction-fill--surface-open': expanded,\n 'ds-button--expanded': expanded,\n 'ds-control-inactive': this.isInactive,\n 'ds-control--lg': this.size === 'lg',\n 'ds-control--md': this.size === 'md',\n 'ds-control--sm': this.size === 'sm',\n 'ds-control--xs': this.size === 'xs',\n 'ds-control--inset': this.isInset && !this.doubleInset,\n 'ds-control--inset-double': this.doubleInset,\n 'ds-control-frame': true,\n 'button-inverted--icon': variant === 'icon',\n 'ds-button--icon': variant === 'icon',\n 'button-inverted--label': variant === 'label',\n 'button-inverted--icon-label': variant === 'icon-label',\n 'button-inverted--rounded': this.rounded,\n 'ds-button--rounded': this.rounded,\n };\n }\n\n render() {\n const primaryButton = (\n <button\n ref={el => {\n this.buttonEl = el ?? null;\n }}\n type={this.type}\n class={{\n ...this.buttonClass(this.variant, !this.split && this.resolvedSurfaceOpen),\n 'ds-button-split__primary': this.split,\n }}\n disabled={this.isInactive}\n aria-label={this.accessibleName}\n aria-busy={this.isLoading ? 'true' : undefined}\n aria-disabled={this.isLoading ? 'true' : undefined}\n aria-controls={this.split ? undefined : this.controls}\n aria-expanded={\n this.split || this.expanded === undefined ? undefined : String(this.expanded)\n }\n aria-haspopup={this.split ? undefined : this.resolvedHaspopup}\n onPointerDown={event =>\n beginElevatedControlPress(\n event,\n this.pressScale && !this.split && !this.isInactive && !this.isLoading\n )\n }\n onClick={this.handleClick}\n >\n {renderButtonContent({\n namespace: 'button-inverted',\n variant: this.variant,\n size: this.size,\n label: this.label,\n labelEmphasis: this.labelEmphasis,\n icon: this.icon,\n hasMenu: !this.split && this.hasMenu,\n isLoading: this.isLoading,\n })}\n </button>\n );\n\n const control = this.split ? (\n <div\n class={{\n 'ds-button-split': true,\n 'ds-button-split--rounded': this.rounded,\n }}\n >\n {primaryButton}\n <span class=\"ds-button-split__divider\" aria-hidden=\"true\" />\n <button\n ref={el => {\n this.menuButtonEl = el ?? null;\n }}\n class={{\n ...this.buttonClass('icon', this.resolvedSurfaceOpen),\n 'ds-button-split__menu': true,\n }}\n type=\"button\"\n disabled={this.isInactive || this.isLoading}\n aria-label={this.menuAriaLabel}\n aria-controls={this.controls}\n aria-expanded={String(this.expanded === true)}\n aria-haspopup=\"menu\"\n onClick={this.handleMenuClick}\n >\n {renderButtonContent({\n namespace: 'button-inverted',\n variant: 'icon',\n size: this.size,\n label: '',\n labelEmphasis: true,\n icon: 'ChevronDown',\n hasMenu: false,\n isLoading: false,\n })}\n </button>\n </div>\n ) : (\n primaryButton\n );\n\n return (\n <Host\n class={{\n 'button-inverted-host': true,\n 'button-inverted-host--icon': this.variant === 'icon' && !this.split,\n 'ds-button-host--icon': this.variant === 'icon' && !this.split,\n 'ds-button-split-host': this.split,\n 'ds-button-split-host--primary-icon': this.split && this.variant === 'icon',\n 'ds-control--lg': this.size === 'lg',\n 'ds-control--md': this.size === 'md',\n 'ds-control--sm': this.size === 'sm',\n 'ds-control--xs': this.size === 'xs',\n 'ds-control--inset': this.isInset && !this.doubleInset,\n 'ds-control--inset-double': this.doubleInset,\n ...controlWidthClass(this.width),\n }}\n tabIndex={-1}\n >\n {control}\n </Host>\n );\n }\n}\n",
577
+ "type": "registry:ui"
578
+ }
579
+ ]
580
+ }