@ds-mo/ui 12.9.0 → 13.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (470) hide show
  1. package/README.md +1 -0
  2. package/dist/.package-ready.json +1 -0
  3. package/dist/agent-patterns.json +124 -135
  4. package/dist/agent.json +249 -1108
  5. package/dist/angular/ds-bar-nav.d.ts +1 -1
  6. package/dist/angular/ds-bar-nav.js +3 -3
  7. package/dist/angular/ds-button-filled.d.ts +1 -1
  8. package/dist/angular/ds-button-filled.js +3 -3
  9. package/dist/angular/ds-card-data-viz.d.ts +18 -0
  10. package/dist/angular/{ds-card-data-viz-donut.js → ds-card-data-viz.js} +12 -12
  11. package/dist/angular/ds-card-overview.d.ts +1 -1
  12. package/dist/angular/ds-card-overview.js +3 -3
  13. package/dist/angular/ds-chart-bar.d.ts +1 -1
  14. package/dist/angular/ds-chart-bar.js +3 -3
  15. package/dist/angular/ds-menu.d.ts +1 -7
  16. package/dist/angular/ds-menu.js +2 -5
  17. package/dist/angular/ds-mobile-header.d.ts +1 -1
  18. package/dist/angular/ds-mobile-header.js +3 -3
  19. package/dist/angular/ds-mobile-section-switcher.d.ts +1 -1
  20. package/dist/angular/ds-mobile-section-switcher.js +3 -3
  21. package/dist/angular/ds-panel-tools.d.ts +1 -1
  22. package/dist/angular/ds-panel-tools.js +3 -3
  23. package/dist/angular/ds-select.d.ts +5 -4
  24. package/dist/angular/ds-select.js +3 -3
  25. package/dist/angular/ds-shell-app.d.ts +90 -1
  26. package/dist/angular/ds-shell-app.js +44 -4
  27. package/dist/angular/ds-shell-tools.d.ts +1 -1
  28. package/dist/angular/ds-shell-tools.js +3 -3
  29. package/dist/angular/index.d.ts +1 -1
  30. package/dist/angular/index.js +1 -8
  31. package/dist/angular/proxies.d.ts +1 -8
  32. package/dist/angular/proxies.js +1 -8
  33. package/dist/components/ds-agent-activity.js +1 -1
  34. package/dist/components/ds-agent-response.js +1 -1
  35. package/dist/components/ds-agent-source-list.js +1 -1
  36. package/dist/components/ds-agent-tool-call.js +1 -1
  37. package/dist/components/ds-attachment-list.js +1 -1
  38. package/dist/components/ds-badge.js +1 -1
  39. package/dist/components/ds-bar-nav.js +1 -1
  40. package/dist/components/ds-bar-nav.js.map +1 -1
  41. package/dist/components/ds-bar-title.js +1 -1
  42. package/dist/components/ds-bar-title.js.map +1 -1
  43. package/dist/components/ds-bar-workflow.js +1 -1
  44. package/dist/components/ds-breadcrumb.js +1 -1
  45. package/dist/components/ds-button-filled.js +1 -1
  46. package/dist/components/ds-button-unfilled.js +1 -1
  47. package/dist/components/{ds-select-multi.d.ts → ds-card-data-viz.d.ts} +4 -4
  48. package/dist/components/ds-card-data-viz.js +2 -0
  49. package/dist/components/ds-card-data-viz.js.map +1 -0
  50. package/dist/components/ds-card-overview.js +1 -1
  51. package/dist/components/ds-card-overview.js.map +1 -1
  52. package/dist/components/ds-card-setting.js +1 -1
  53. package/dist/components/ds-chart-bar.js +1 -1
  54. package/dist/components/ds-chart-bar.js.map +1 -1
  55. package/dist/components/ds-chart-donut.js +1 -1
  56. package/dist/components/ds-chart-donut.js.map +1 -1
  57. package/dist/components/ds-chart-legend.js +1 -1
  58. package/dist/components/ds-chart-legend.js.map +1 -1
  59. package/dist/components/ds-chart-line.js +1 -1
  60. package/dist/components/ds-chart-line.js.map +1 -1
  61. package/dist/components/ds-checkbox.js +1 -1
  62. package/dist/components/ds-chip.js +1 -1
  63. package/dist/components/ds-chip.js.map +1 -1
  64. package/dist/components/ds-code-block.js +1 -1
  65. package/dist/components/ds-conversation-list-item.js +1 -1
  66. package/dist/components/ds-conversation-list-item.js.map +1 -1
  67. package/dist/components/ds-conversation-list-section.js +1 -1
  68. package/dist/components/ds-conversation-list.js +1 -1
  69. package/dist/components/ds-divider.js +1 -1
  70. package/dist/components/ds-empty-state.js +1 -1
  71. package/dist/components/ds-field.js +1 -1
  72. package/dist/components/ds-input.js +1 -1
  73. package/dist/components/ds-input.js.map +1 -1
  74. package/dist/components/ds-markdown.js +1 -1
  75. package/dist/components/ds-menu.js +1 -1
  76. package/dist/components/ds-message-bubble.js +1 -1
  77. package/dist/components/ds-message-composer.js +1 -1
  78. package/dist/components/ds-message-composer.js.map +1 -1
  79. package/dist/components/ds-message-scroller.js +1 -1
  80. package/dist/components/ds-message.js +1 -1
  81. package/dist/components/ds-mobile-bar-nav.js +1 -1
  82. package/dist/components/ds-mobile-bar-nav.js.map +1 -1
  83. package/dist/components/ds-mobile-header.js +1 -1
  84. package/dist/components/ds-mobile-section-switcher.js +1 -1
  85. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  86. package/dist/components/ds-mobile-sheet-nav.js.map +1 -1
  87. package/dist/components/ds-modal.js +1 -1
  88. package/dist/components/ds-panel-nav.js +1 -1
  89. package/dist/components/ds-panel-nav.js.map +1 -1
  90. package/dist/components/ds-panel-sub-nav.js +1 -1
  91. package/dist/components/ds-panel-sub-nav.js.map +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-radio.js +1 -1
  96. package/dist/components/ds-radio.js.map +1 -1
  97. package/dist/components/ds-scroll-overlay.js +1 -1
  98. package/dist/components/ds-select.js +1 -1
  99. package/dist/components/ds-select.js.map +1 -1
  100. package/dist/components/ds-shell-app.js +1 -1
  101. package/dist/components/ds-shell-app.js.map +1 -1
  102. package/dist/components/ds-shell-page.js +1 -1
  103. package/dist/components/ds-shell-page.js.map +1 -1
  104. package/dist/components/ds-shell-tools.js +1 -1
  105. package/dist/components/ds-shell-tools.js.map +1 -1
  106. package/dist/components/ds-skeleton.js +1 -1
  107. package/dist/components/ds-slider.js +1 -1
  108. package/dist/components/ds-slider.js.map +1 -1
  109. package/dist/components/ds-swatch-picker.js +1 -1
  110. package/dist/components/ds-switch.js +1 -1
  111. package/dist/components/ds-tab-group.js +1 -1
  112. package/dist/components/ds-tag.js +1 -1
  113. package/dist/components/ds-tag.js.map +1 -1
  114. package/dist/components/ds-text.js +1 -1
  115. package/dist/components/ds-toast.js +1 -1
  116. package/dist/components/ds-tooltip-data-viz.js +1 -1
  117. package/dist/components/ds-tooltip.js +1 -1
  118. package/dist/components/ds-typing-indicator.js +1 -1
  119. package/dist/components/{p-CgEYdMee.js → p-6qXDqCj_.js} +2 -2
  120. package/dist/components/{p-Cr3tEx7o.js → p-Ay1AX7Ql.js} +2 -2
  121. package/dist/components/p-B-qDb_Zo.js +2 -0
  122. package/dist/components/p-B-qDb_Zo.js.map +1 -0
  123. package/dist/components/{p-BOCfICln.js → p-B1XW4VSn.js} +2 -2
  124. package/dist/components/p-B9p6w-_T.js +2 -0
  125. package/dist/components/p-B9p6w-_T.js.map +1 -0
  126. package/dist/components/p-BBFEhNzM.js +2 -0
  127. package/dist/components/p-BBFEhNzM.js.map +1 -0
  128. package/dist/components/p-BGUK8-Qm.js +2 -0
  129. package/dist/components/p-BGUK8-Qm.js.map +1 -0
  130. package/dist/components/p-BO4cj3iX.js +2 -0
  131. package/dist/components/{p-DCvA3Dc9.js.map → p-BO4cj3iX.js.map} +1 -1
  132. package/dist/components/{p-BKOlvCGS.js → p-BUZXuod2.js} +2 -2
  133. package/dist/components/p-BYWkksDO.js +2 -0
  134. package/dist/components/p-BYWkksDO.js.map +1 -0
  135. package/dist/components/p-BbMJTilO.js +2 -0
  136. package/dist/components/p-BbMJTilO.js.map +1 -0
  137. package/dist/components/{p-BO5aqZcf.js → p-BcTYhmku.js} +2 -2
  138. package/dist/components/p-BnQXAbif.js +2 -0
  139. package/dist/components/p-BnQXAbif.js.map +1 -0
  140. package/dist/components/p-BnbbnuVC.js +2 -0
  141. package/dist/components/p-BnbbnuVC.js.map +1 -0
  142. package/dist/components/{p-BDKtu6Wb.js → p-BroVnDzE.js} +2 -2
  143. package/dist/components/{p-CIiBpjCn.js → p-BsoqsbBh.js} +2 -2
  144. package/dist/components/p-BybqPD8K.js +2 -0
  145. package/dist/components/p-BybqPD8K.js.map +1 -0
  146. package/dist/components/{p-CCzG5xDD.js → p-C-aCzwhA.js} +2 -2
  147. package/dist/components/p-C-aCzwhA.js.map +1 -0
  148. package/dist/components/p-C-kzknkR.js +2 -0
  149. package/dist/components/p-C-kzknkR.js.map +1 -0
  150. package/dist/components/p-C-vRkDyn.js +2 -0
  151. package/dist/components/p-C-vRkDyn.js.map +1 -0
  152. package/dist/components/p-C4uYvyq6.js +2 -0
  153. package/dist/components/p-C4uYvyq6.js.map +1 -0
  154. package/dist/components/{p-C8HU4W8q.js → p-CBazaRlE.js} +2 -2
  155. package/dist/components/p-CH9yArA1.js +2 -0
  156. package/dist/components/p-CH9yArA1.js.map +1 -0
  157. package/dist/components/p-CHpNyAo1.js +2 -0
  158. package/dist/components/{p-CChcuL04.js.map → p-CHpNyAo1.js.map} +1 -1
  159. package/dist/components/{p-BhV5e6vF.js → p-CHuh71-U.js} +2 -2
  160. package/dist/components/p-CJDTh9Tg.js +2 -0
  161. package/dist/components/p-CJDTh9Tg.js.map +1 -0
  162. package/dist/components/p-CJbLY1tu.js +2 -0
  163. package/dist/components/p-CJbLY1tu.js.map +1 -0
  164. package/dist/components/p-CreGah0j.js +2 -0
  165. package/dist/components/p-Cvxm1OZB.js +2 -0
  166. package/dist/components/p-Cvxm1OZB.js.map +1 -0
  167. package/dist/components/p-D2xWcVv6.js +2 -0
  168. package/dist/components/p-D2xWcVv6.js.map +1 -0
  169. package/dist/components/p-DAW6G8Sl.js +2 -0
  170. package/dist/components/p-DAW6G8Sl.js.map +1 -0
  171. package/dist/components/p-DEaszb15.js +2 -0
  172. package/dist/components/p-DEaszb15.js.map +1 -0
  173. package/dist/components/{p-BgGP65Nn.js → p-DOUk4KoT.js} +1 -1
  174. package/dist/components/p-DOUk4KoT.js.map +1 -0
  175. package/dist/components/p-DbQr7Kwr.js +2 -0
  176. package/dist/components/p-DbQr7Kwr.js.map +1 -0
  177. package/dist/components/{p-Cuih680v.js → p-Df17mJqI.js} +2 -2
  178. package/dist/components/p-DhEdICfD.js +2 -0
  179. package/dist/components/p-DhEdICfD.js.map +1 -0
  180. package/dist/components/p-bxoryr-3.js +2 -0
  181. package/dist/components/p-bxoryr-3.js.map +1 -0
  182. package/dist/components/p-eAfNzlMa.js +2 -0
  183. package/dist/components/p-eAfNzlMa.js.map +1 -0
  184. package/dist/components/p-gZni7A2L.js +2 -0
  185. package/dist/components/p-gZni7A2L.js.map +1 -0
  186. package/dist/components/{p-YR1XeuZf.js → p-ohsLFap_.js} +2 -2
  187. package/dist/components/{p-DjbTFy2B.js → p-ymtdhOU5.js} +1 -1
  188. package/dist/components/p-ymtdhOU5.js.map +1 -0
  189. package/dist/docs/components.json +929 -2371
  190. package/dist/framework/angular.d.ts +0 -1
  191. package/dist/framework/angular.js +0 -1
  192. package/dist/lib/components/BarTitle/bar-title-types.d.ts +28 -0
  193. package/dist/lib/components/Breadcrumb/breadcrumb-types.d.ts +16 -0
  194. package/dist/lib/components/ButtonFilled/ButtonFilled.d.ts +83 -0
  195. package/dist/lib/components/MobileHeader/mobile-header-types.d.ts +4 -0
  196. package/dist/lib/components/PanelTools/panel-tools-types.d.ts +21 -7
  197. package/dist/lib/components/ShellApp/shell-app-types.d.ts +91 -0
  198. package/dist/lib/shell/index.d.ts +5 -13
  199. package/dist/lib/shell/index.js +87 -358
  200. package/dist/lib/shell/index.js.map +3 -3
  201. package/dist/lib/shell/shell-responsive.d.ts +2 -1
  202. package/dist/lib/utils/button-render.d.ts +17 -0
  203. package/dist/lib/utils/button-types.d.ts +10 -0
  204. package/dist/lib/utils/choice-list.d.ts +25 -0
  205. package/dist/lib/utils/control-press.d.ts +8 -0
  206. package/dist/lib/utils/form-association.d.ts +22 -0
  207. package/dist/lib/utils/index.d.ts +4 -0
  208. package/dist/lib/utils/index.js +63 -0
  209. package/dist/lib/utils/index.js.map +3 -3
  210. package/dist/lib/utils/required-validity.d.ts +1 -1
  211. package/dist/lib/utils/safe-url.d.ts +11 -0
  212. package/dist/mcp/cli.js +38 -10
  213. package/dist/mcp-data/registry/agent-activity.json +1 -1
  214. package/dist/mcp-data/registry/agent-response.json +1 -1
  215. package/dist/mcp-data/registry/agent-source-list.json +2 -2
  216. package/dist/mcp-data/registry/agent-tool-call.json +1 -1
  217. package/dist/mcp-data/registry/attachment-list.json +2 -2
  218. package/dist/mcp-data/registry/avatar.json +1 -1
  219. package/dist/mcp-data/registry/badge.json +1 -1
  220. package/dist/mcp-data/registry/bar-nav.json +4 -22
  221. package/dist/mcp-data/registry/bar-title.json +1 -1
  222. package/dist/mcp-data/registry/bar-workflow.json +1 -1
  223. package/dist/mcp-data/registry/breadcrumb.json +2 -2
  224. package/dist/mcp-data/registry/button-filled.json +5 -20
  225. package/dist/mcp-data/registry/button-unfilled.json +15 -12
  226. package/dist/mcp-data/registry/card-data-viz.json +241 -0
  227. package/dist/mcp-data/registry/card-overview.json +39 -11
  228. package/dist/mcp-data/registry/card-setting.json +3 -3
  229. package/dist/mcp-data/registry/chart-bar.json +67 -19
  230. package/dist/mcp-data/registry/chart-donut.json +8 -8
  231. package/dist/mcp-data/registry/chart-legend.json +9 -11
  232. package/dist/mcp-data/registry/chart-line.json +2 -3
  233. package/dist/mcp-data/registry/checkbox.json +3 -3
  234. package/dist/mcp-data/registry/chip.json +1 -1
  235. package/dist/mcp-data/registry/code-block.json +1 -1
  236. package/dist/mcp-data/registry/conversation-list-item.json +2 -2
  237. package/dist/mcp-data/registry/conversation-list-section.json +1 -1
  238. package/dist/mcp-data/registry/conversation-list.json +1 -1
  239. package/dist/mcp-data/registry/divider.json +1 -1
  240. package/dist/mcp-data/registry/empty-state.json +1 -1
  241. package/dist/mcp-data/registry/field.json +3 -4
  242. package/dist/mcp-data/registry/icon.json +1 -1
  243. package/dist/mcp-data/registry/input.json +2 -2
  244. package/dist/mcp-data/registry/loader.json +1 -1
  245. package/dist/mcp-data/registry/markdown.json +2 -2
  246. package/dist/mcp-data/registry/menu.json +11 -22
  247. package/dist/mcp-data/registry/message-bubble.json +1 -1
  248. package/dist/mcp-data/registry/message-composer.json +1 -1
  249. package/dist/mcp-data/registry/message-scroller.json +1 -1
  250. package/dist/mcp-data/registry/message.json +1 -1
  251. package/dist/mcp-data/registry/mobile-bar-nav.json +2 -2
  252. package/dist/mcp-data/registry/mobile-header.json +2 -38
  253. package/dist/mcp-data/registry/mobile-section-switcher.json +2 -20
  254. package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
  255. package/dist/mcp-data/registry/modal.json +1 -1
  256. package/dist/mcp-data/registry/panel-nav.json +3 -3
  257. package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
  258. package/dist/mcp-data/registry/panel-tool-header.json +1 -1
  259. package/dist/mcp-data/registry/panel-tool-search.json +2 -2
  260. package/dist/mcp-data/registry/panel-tools.json +20 -56
  261. package/dist/mcp-data/registry/radio.json +2 -2
  262. package/dist/mcp-data/registry/registry.json +295 -1175
  263. package/dist/mcp-data/registry/scroll-overlay.json +1 -1
  264. package/dist/mcp-data/registry/select.json +60 -26
  265. package/dist/mcp-data/registry/shell-app.json +346 -21
  266. package/dist/mcp-data/registry/shell-page.json +2 -2
  267. package/dist/mcp-data/registry/shell-tools.json +13 -44
  268. package/dist/mcp-data/registry/skeleton.json +1 -1
  269. package/dist/mcp-data/registry/slider.json +2 -2
  270. package/dist/mcp-data/registry/swatch-picker.json +1 -1
  271. package/dist/mcp-data/registry/switch.json +2 -2
  272. package/dist/mcp-data/registry/tab-group.json +1 -1
  273. package/dist/mcp-data/registry/tag.json +1 -1
  274. package/dist/mcp-data/registry/text.json +1 -1
  275. package/dist/mcp-data/registry/toast.json +1 -1
  276. package/dist/mcp-data/registry/tooltip-data-viz.json +1 -1
  277. package/dist/mcp-data/registry/tooltip.json +1 -1
  278. package/dist/mcp-data/registry/typing-indicator.json +1 -1
  279. package/dist/react/components.d.ts +1 -8
  280. package/dist/react/components.js +1 -8
  281. package/dist/react/ds-card-data-viz.d.ts +12 -0
  282. package/dist/react/ds-card-data-viz.js +12 -0
  283. package/dist/react/ds-menu.d.ts +1 -2
  284. package/dist/react/ds-menu.js +0 -1
  285. package/dist/react/ds-select.d.ts +2 -2
  286. package/dist/react/ds-shell-app.d.ts +24 -1
  287. package/dist/react/ds-shell-app.js +16 -1
  288. package/dist/types/components/AgentSourceList/AgentSourceList.d.ts +0 -1
  289. package/dist/types/components/BarNav/BarNav.d.ts +0 -2
  290. package/dist/types/components/BarNav/bar-nav-utils.d.ts +2 -4
  291. package/dist/types/components/ButtonFilled/ButtonFilled.d.ts +5 -11
  292. package/dist/types/components/ButtonUnfilled/ButtonUnfilled.d.ts +13 -10
  293. package/dist/types/components/CardDataViz/CardDataViz.d.ts +32 -0
  294. package/dist/types/components/CardDataViz/index.d.ts +2 -0
  295. package/dist/types/components/CardOverview/CardOverview.d.ts +17 -0
  296. package/dist/types/components/CardOverview/card-overview-controller.d.ts +16 -0
  297. package/dist/types/components/ChartBar/ChartBar.d.ts +12 -1
  298. package/dist/types/components/ChartBar/index.d.ts +2 -1
  299. package/dist/types/components/Menu/Menu.d.ts +0 -4
  300. package/dist/types/components/Menu/menu-sections.d.ts +4 -0
  301. package/dist/types/components/Menu/menu-types.d.ts +2 -11
  302. package/dist/types/components/MobileHeader/MobileHeader.d.ts +0 -5
  303. package/dist/types/components/MobileSectionSwitcher/MobileSectionSwitcher.d.ts +0 -2
  304. package/dist/types/components/PanelTools/PanelTools.d.ts +0 -4
  305. package/dist/types/components/PanelTools/index.d.ts +1 -1
  306. package/dist/types/components/PanelTools/panel-tools-types.d.ts +21 -7
  307. package/dist/types/components/PanelTools/panel-tools-utils.d.ts +1 -1
  308. package/dist/types/components/Select/Select.d.ts +12 -4
  309. package/dist/types/components/Select/index.d.ts +1 -1
  310. package/dist/types/components/ShellApp/ShellApp.d.ts +98 -0
  311. package/dist/types/components/ShellApp/shell-app-types.d.ts +92 -0
  312. package/dist/types/components/ShellPage/ShellPage.d.ts +5 -0
  313. package/dist/types/components/ShellTools/ShellTools.d.ts +2 -2
  314. package/dist/types/components.d.ts +210 -889
  315. package/dist/types/shell/index.d.ts +5 -13
  316. package/dist/types/shell/shell-responsive.d.ts +2 -1
  317. package/dist/types/utils/button-render.d.ts +18 -0
  318. package/dist/types/utils/button-story-foundation.d.ts +9 -0
  319. package/dist/types/utils/button-types.d.ts +11 -0
  320. package/dist/types/utils/form-association.d.ts +23 -0
  321. package/dist/types/utils/index.d.ts +4 -0
  322. package/dist/types/utils/required-validity.d.ts +1 -1
  323. package/dist/types/utils/safe-url.d.ts +12 -0
  324. package/dist/types/utils/select-controller.d.ts +1 -1
  325. package/package.json +18 -10
  326. package/dist/.build-stamp +0 -1
  327. package/dist/angular/ds-card-data-viz-bar.d.ts +0 -18
  328. package/dist/angular/ds-card-data-viz-bar.js +0 -42
  329. package/dist/angular/ds-card-data-viz-donut.d.ts +0 -18
  330. package/dist/angular/ds-card-data-viz-line.d.ts +0 -18
  331. package/dist/angular/ds-card-data-viz-line.js +0 -42
  332. package/dist/angular/ds-card-shell-data-viz.d.ts +0 -12
  333. package/dist/angular/ds-card-shell-data-viz.js +0 -38
  334. package/dist/angular/ds-chart-bar-stacked.d.ts +0 -12
  335. package/dist/angular/ds-chart-bar-stacked.js +0 -38
  336. package/dist/angular/ds-select-multi.d.ts +0 -28
  337. package/dist/angular/ds-select-multi.js +0 -49
  338. package/dist/angular/ds-shell-gradient-picker.d.ts +0 -16
  339. package/dist/angular/ds-shell-gradient-picker.js +0 -42
  340. package/dist/angular/ds-shell-gradient-swatch.d.ts +0 -16
  341. package/dist/angular/ds-shell-gradient-swatch.js +0 -42
  342. package/dist/components/ds-card-data-viz-bar.d.ts +0 -11
  343. package/dist/components/ds-card-data-viz-bar.js +0 -2
  344. package/dist/components/ds-card-data-viz-bar.js.map +0 -1
  345. package/dist/components/ds-card-data-viz-donut.d.ts +0 -11
  346. package/dist/components/ds-card-data-viz-donut.js +0 -2
  347. package/dist/components/ds-card-data-viz-donut.js.map +0 -1
  348. package/dist/components/ds-card-data-viz-line.d.ts +0 -11
  349. package/dist/components/ds-card-data-viz-line.js +0 -2
  350. package/dist/components/ds-card-data-viz-line.js.map +0 -1
  351. package/dist/components/ds-card-shell-data-viz.d.ts +0 -11
  352. package/dist/components/ds-card-shell-data-viz.js +0 -2
  353. package/dist/components/ds-card-shell-data-viz.js.map +0 -1
  354. package/dist/components/ds-chart-bar-stacked.d.ts +0 -11
  355. package/dist/components/ds-chart-bar-stacked.js +0 -2
  356. package/dist/components/ds-chart-bar-stacked.js.map +0 -1
  357. package/dist/components/ds-select-multi.js +0 -2
  358. package/dist/components/ds-select-multi.js.map +0 -1
  359. package/dist/components/ds-shell-gradient-picker.d.ts +0 -11
  360. package/dist/components/ds-shell-gradient-picker.js +0 -2
  361. package/dist/components/ds-shell-gradient-picker.js.map +0 -1
  362. package/dist/components/ds-shell-gradient-swatch.d.ts +0 -11
  363. package/dist/components/ds-shell-gradient-swatch.js +0 -2
  364. package/dist/components/ds-shell-gradient-swatch.js.map +0 -1
  365. package/dist/components/p-2foAUsDN.js +0 -2
  366. package/dist/components/p-2foAUsDN.js.map +0 -1
  367. package/dist/components/p-8GK7B7K4.js +0 -2
  368. package/dist/components/p-8GK7B7K4.js.map +0 -1
  369. package/dist/components/p-B5tMlca-.js +0 -2
  370. package/dist/components/p-B5tMlca-.js.map +0 -1
  371. package/dist/components/p-B88n0pO3.js +0 -2
  372. package/dist/components/p-B88n0pO3.js.map +0 -1
  373. package/dist/components/p-BBePKRHC.js +0 -2
  374. package/dist/components/p-BBePKRHC.js.map +0 -1
  375. package/dist/components/p-BOQnc-M4.js +0 -2
  376. package/dist/components/p-BOQnc-M4.js.map +0 -1
  377. package/dist/components/p-BgGP65Nn.js.map +0 -1
  378. package/dist/components/p-BrusnEYP.js +0 -2
  379. package/dist/components/p-BrusnEYP.js.map +0 -1
  380. package/dist/components/p-C61yJkfr.js +0 -2
  381. package/dist/components/p-C61yJkfr.js.map +0 -1
  382. package/dist/components/p-CChcuL04.js +0 -2
  383. package/dist/components/p-CCzG5xDD.js.map +0 -1
  384. package/dist/components/p-CGVXbXv9.js +0 -2
  385. package/dist/components/p-CGVXbXv9.js.map +0 -1
  386. package/dist/components/p-CH3w-P2H.js +0 -2
  387. package/dist/components/p-CH3w-P2H.js.map +0 -1
  388. package/dist/components/p-Cuqxh-Tq.js +0 -2
  389. package/dist/components/p-Cuqxh-Tq.js.map +0 -1
  390. package/dist/components/p-D1HFMTdC.js +0 -2
  391. package/dist/components/p-D1HFMTdC.js.map +0 -1
  392. package/dist/components/p-D2x17ei-.js +0 -2
  393. package/dist/components/p-D2x17ei-.js.map +0 -1
  394. package/dist/components/p-DCvA3Dc9.js +0 -2
  395. package/dist/components/p-DLZm_-sU.js +0 -2
  396. package/dist/components/p-DLZm_-sU.js.map +0 -1
  397. package/dist/components/p-DRnIuCiT.js +0 -2
  398. package/dist/components/p-DjKkSqrG.js +0 -2
  399. package/dist/components/p-DjKkSqrG.js.map +0 -1
  400. package/dist/components/p-DjbTFy2B.js.map +0 -1
  401. package/dist/components/p-DlscFn2m.js +0 -2
  402. package/dist/components/p-DlscFn2m.js.map +0 -1
  403. package/dist/components/p-DxkEC0hR.js +0 -2
  404. package/dist/components/p-DxkEC0hR.js.map +0 -1
  405. package/dist/components/p-Re2kPrXm.js +0 -2
  406. package/dist/components/p-Re2kPrXm.js.map +0 -1
  407. package/dist/components/p-XMZCaXs7.js +0 -2
  408. package/dist/components/p-XMZCaXs7.js.map +0 -1
  409. package/dist/components/p-dyUp3Adm.js +0 -2
  410. package/dist/components/p-dyUp3Adm.js.map +0 -1
  411. package/dist/components/p-nkYN0Bub.js +0 -2
  412. package/dist/components/p-nkYN0Bub.js.map +0 -1
  413. package/dist/framework/select-multi-value-accessor.d.ts +0 -9
  414. package/dist/framework/select-multi-value-accessor.js +0 -40
  415. package/dist/lib/shell/badge-gradient-ring.d.ts +0 -27
  416. package/dist/lib/shell/chrome-transition.d.ts +0 -32
  417. package/dist/lib/shell/shell-chrome-metrics.d.ts +0 -11
  418. package/dist/lib/shell/shell-gradient.d.ts +0 -41
  419. package/dist/lib/shell/shell-view-transition.d.ts +0 -23
  420. package/dist/mcp-data/registry/card-data-viz-bar.json +0 -213
  421. package/dist/mcp-data/registry/card-data-viz-donut.json +0 -214
  422. package/dist/mcp-data/registry/card-data-viz-line.json +0 -207
  423. package/dist/mcp-data/registry/card-shell-data-viz.json +0 -180
  424. package/dist/mcp-data/registry/chart-bar-stacked.json +0 -230
  425. package/dist/mcp-data/registry/select-multi.json +0 -758
  426. package/dist/mcp-data/registry/shell-gradient-picker.json +0 -195
  427. package/dist/mcp-data/registry/shell-gradient-swatch.json +0 -215
  428. package/dist/react/ds-card-data-viz-bar.d.ts +0 -12
  429. package/dist/react/ds-card-data-viz-bar.js +0 -12
  430. package/dist/react/ds-card-data-viz-donut.d.ts +0 -12
  431. package/dist/react/ds-card-data-viz-donut.js +0 -12
  432. package/dist/react/ds-card-data-viz-line.d.ts +0 -12
  433. package/dist/react/ds-card-data-viz-line.js +0 -12
  434. package/dist/react/ds-card-shell-data-viz.d.ts +0 -9
  435. package/dist/react/ds-card-shell-data-viz.js +0 -12
  436. package/dist/react/ds-chart-bar-stacked.d.ts +0 -9
  437. package/dist/react/ds-chart-bar-stacked.js +0 -12
  438. package/dist/react/ds-select-multi.d.ts +0 -14
  439. package/dist/react/ds-select-multi.js +0 -16
  440. package/dist/react/ds-shell-gradient-picker.d.ts +0 -12
  441. package/dist/react/ds-shell-gradient-picker.js +0 -12
  442. package/dist/react/ds-shell-gradient-swatch.d.ts +0 -12
  443. package/dist/react/ds-shell-gradient-swatch.js +0 -12
  444. package/dist/types/components/CardDataVizBar/CardDataVizBar.d.ts +0 -24
  445. package/dist/types/components/CardDataVizBar/index.d.ts +0 -2
  446. package/dist/types/components/CardDataVizDonut/CardDataVizDonut.d.ts +0 -28
  447. package/dist/types/components/CardDataVizDonut/index.d.ts +0 -2
  448. package/dist/types/components/CardDataVizLine/CardDataVizLine.d.ts +0 -24
  449. package/dist/types/components/CardDataVizLine/index.d.ts +0 -2
  450. package/dist/types/components/CardShellDataViz/CardShellDataViz.d.ts +0 -13
  451. package/dist/types/components/CardShellDataViz/index.d.ts +0 -2
  452. package/dist/types/components/ChartBarStacked/ChartBarStacked.d.ts +0 -26
  453. package/dist/types/components/ChartBarStacked/index.d.ts +0 -3
  454. package/dist/types/components/SelectMulti/SelectMulti.d.ts +0 -121
  455. package/dist/types/components/SelectMulti/index.d.ts +0 -2
  456. package/dist/types/components/ShellGradientPicker/ShellGradientPicker.d.ts +0 -12
  457. package/dist/types/components/ShellGradientSwatch/ShellGradientSwatch.d.ts +0 -15
  458. package/dist/types/components/ShellGradientSwatch/shell-gradient-swatch-types.d.ts +0 -4
  459. /package/dist/components/{p-CgEYdMee.js.map → p-6qXDqCj_.js.map} +0 -0
  460. /package/dist/components/{p-Cr3tEx7o.js.map → p-Ay1AX7Ql.js.map} +0 -0
  461. /package/dist/components/{p-BOCfICln.js.map → p-B1XW4VSn.js.map} +0 -0
  462. /package/dist/components/{p-BKOlvCGS.js.map → p-BUZXuod2.js.map} +0 -0
  463. /package/dist/components/{p-BO5aqZcf.js.map → p-BcTYhmku.js.map} +0 -0
  464. /package/dist/components/{p-BDKtu6Wb.js.map → p-BroVnDzE.js.map} +0 -0
  465. /package/dist/components/{p-CIiBpjCn.js.map → p-BsoqsbBh.js.map} +0 -0
  466. /package/dist/components/{p-C8HU4W8q.js.map → p-CBazaRlE.js.map} +0 -0
  467. /package/dist/components/{p-BhV5e6vF.js.map → p-CHuh71-U.js.map} +0 -0
  468. /package/dist/components/{p-DRnIuCiT.js.map → p-CreGah0j.js.map} +0 -0
  469. /package/dist/components/{p-Cuih680v.js.map → p-Df17mJqI.js.map} +0 -0
  470. /package/dist/components/{p-YR1XeuZf.js.map → p-ohsLFap_.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["PANEL_TOOLS_TOOL_IDS","PANEL_TOOLS_PRIMARY_TOOL_ID","PANEL_TOOLS_FOOTER_TOOL_ID","PANEL_TOOLS_LABELS","search","messages","stacks","activity","agents","help","PANEL_TOOLS_SHORTCUTS","parsePanelToolsItems","items","itemsJson","parseJsonArrayProp","orderPanelToolsItems","firstById","Map","item","has","id","set","flatMap","get","isPanelToolsToolId","value","includes","reconcilePanelToolsAvailability","open","activeTool","some","removedTool","panelToolsDrawerTransitionMs","style","properties","transitionProperty","split","map","trim","durations","transitionDuration","parseCssTimeMs","delays","transitionDelay","reduce","max","property","index","duration","length","delay","Math","panelToolsDrawerResting","motion","panelToolsDrawerAtTerminal","width","targetWidth","resolvePanelToolActivation","selected","panelToolsCss","PanelTools","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","presentation","fullscreenHeaderMode","toolsLabel","toolShortcutsLabel","headers","headersJson","storageKey","drawerSurfaceRetained","readyForMotion","presentationMotionSuppressed","rovingIndex","fullViewToolIds","motionEnableGeneration","presentationMotionGeneration","transitionGeneration","transitionFallbackTimer","ignoreReplacementTerminal","focusBeforeFullscreen","fullViewObserver","handleComposedHeaderAction","event","detail","stopPropagation","dsHeaderAction","emit","tool","handleTransitionEnd","drawer","el","querySelector","target","propertyName","type","drawerTransitionAtTerminal","finishDrawerTransition","handleToolChange","next","dsToolChange","handleRailKeyDown","e","orderedRailItems","key","preventDefault","focusRailAt","railItems","headerItem","find","footerItem","bodyItems","filter","ordered","push","disconnectedCallback","removeEventListener","clearTransitionCompletion","disconnect","presentationChanged","previous","getAttribute","setAttribute","presentationGeneration","requestAnimationFrame","document","activeElement","fallbackActionId","activeHeader","actions","async","isConnected","focus","preventScroll","focusRestored","contains","focusHeaderAction","dsPresentationChange","handleFullscreenEscape","deferMotionEnable","generation","connectedCallback","addEventListener","componentWillLoad","restoreLastActiveTool","openChanged","isOpen","wasOpen","undefined","startDrawerTransition","activeToolChanged","persistLastActiveTool","storageKeyChanged","componentDidLoad","syncFullViewTools","MutationObserver","observe","childList","attributes","attributeFilter","itemsChanged","reconcileActiveTool","stored","localStorage","getItem","setItem","clearPersistedTool","removeItem","phase","dsChromeTransitionStart","source","fallbackMs","getComputedStyle","window","setTimeout","getBoundingClientRect","surface","completedPhase","wasTransitioning","dsChromeTransitionEnd","clearTimeout","isRailSelected","isDrawerPresent","isViewActive","hasFullView","ids","Boolean","join","headerLabel","resolvedHeaders","Object","keys","parsed","JSON","parse","Array","isArray","activateTool","entry","isInactive","closeDrawer","action","CSS","escape","setFocus","bounded","min","from","querySelectorAll","renderRailAction","label","ariaLabel","h","shortcutKey","side","size","variant","class","icon","isActive","activeFill","hasBorder","pressScale","dot","focusTabIndex","pressed","onFocusin","onKeyDown","onDsClick","render","header","headerTitle","title","headerActions","footerIndex","showDrawerChrome","drawerResting","activeFullView","toolIds","Host","role","bodyIdx","inert","heading","showBack","backIcon","backAriaLabel","showMenu","ref","element","toolHeader","onDsBack","dsHeaderBack","hidden","active","name"],"sources":["src/wc/components/PanelTools/panel-tools-types.ts","src/wc/components/PanelTools/panel-tools-utils.ts","src/wc/components/PanelTools/PanelTools.css?tag=ds-panel-tools&encapsulation=scoped","src/wc/components/PanelTools/PanelTools.tsx"],"sourcesContent":["/** Tool ids for the `ds-panel-tools` rail and drawer views. */\nexport type PanelToolsToolId = 'search' | 'agents' | 'messages' | 'stacks' | 'activity' | 'help';\n\nexport const PANEL_TOOLS_TOOL_IDS: PanelToolsToolId[] = [\n 'search',\n 'agents',\n 'messages',\n 'stacks',\n 'activity',\n 'help',\n];\n\n/** Rail header slot — mirrors panel-nav M logo row. */\nexport const PANEL_TOOLS_PRIMARY_TOOL_ID: PanelToolsToolId = 'search';\n\n/** Rail footer slot — flush to the bottom of the tools column. */\nexport const PANEL_TOOLS_FOOTER_TOOL_ID: PanelToolsToolId = 'help';\n\nexport const PANEL_TOOLS_LABELS: Record<PanelToolsToolId, string> = {\n search: 'Search',\n messages: 'Messages',\n stacks: 'Stacks',\n activity: 'Activity',\n agents: 'Agents',\n help: 'Help & Support',\n};\n\nexport const PANEL_TOOLS_SHORTCUTS: Partial<Record<PanelToolsToolId, string>> = {\n search: 'K',\n agents: 'A',\n messages: 'M',\n stacks: 'S',\n activity: 'N',\n help: '/',\n};\n\nexport interface PanelToolsItem {\n id: PanelToolsToolId;\n /** Icon name for <ds-icon>. */\n icon: string;\n /** Whether this rail button is currently pressed/active. */\n selected?: boolean;\n /** Show a notification dot. */\n dot?: boolean;\n isInactive?: boolean;\n ariaLabel?: string;\n}\n\nexport interface PanelToolsHeaderAction {\n id: string;\n icon: string;\n ariaLabel: string;\n triggerId?: string;\n controls?: string;\n expanded?: boolean;\n haspopup?: 'menu' | 'dialog' | 'listbox' | 'tree' | 'grid';\n pressed?: boolean;\n isInactive?: boolean;\n}\n\nexport interface PanelToolsHeaderConfig {\n title?: string;\n showBack?: boolean;\n backIcon?: string;\n backAriaLabel?: string;\n actions?: PanelToolsHeaderAction[];\n}\n\n/** Per-tool header state. The application replaces the object when a tool changes depth or actions. */\nexport type PanelToolsHeaders = Partial<Record<PanelToolsToolId, PanelToolsHeaderConfig>>;\n","import { parseJsonArrayProp } from '../BarNav/bar-nav-utils';\nimport { parseCssTimeMs } from '../../utils/resolve-css-time-ms';\nimport {\n PANEL_TOOLS_TOOL_IDS,\n type PanelToolsItem,\n type PanelToolsToolId,\n} from './panel-tools-types';\n\nexport function parsePanelToolsItems(items: PanelToolsItem[], itemsJson: string): PanelToolsItem[] {\n if (itemsJson) {\n return parseJsonArrayProp<PanelToolsItem>(itemsJson, []);\n }\n return items ?? [];\n}\n\nexport function orderPanelToolsItems(items: PanelToolsItem[]): PanelToolsItem[] {\n const firstById = new Map<PanelToolsToolId, PanelToolsItem>();\n for (const item of items) {\n if (!firstById.has(item.id)) firstById.set(item.id, item);\n }\n return PANEL_TOOLS_TOOL_IDS.flatMap(id => {\n const item = firstById.get(id);\n return item ? [item] : [];\n });\n}\n\nexport function isPanelToolsToolId(value: string | null): value is PanelToolsToolId {\n return value !== null && PANEL_TOOLS_TOOL_IDS.includes(value as PanelToolsToolId);\n}\n\nexport function reconcilePanelToolsAvailability(\n items: PanelToolsItem[],\n open: boolean,\n activeTool: PanelToolsToolId | ''\n): { open: boolean; activeTool: PanelToolsToolId | ''; removedTool: PanelToolsToolId | '' } {\n if (!activeTool || items.some(item => item.id === activeTool)) {\n return { open, activeTool, removedTool: '' };\n }\n return { open: false, activeTool: '', removedTool: activeTool };\n}\n\nexport function shouldResyncPanelToolsItems(\n prev: PanelToolsItem[],\n next: PanelToolsItem[]\n): boolean {\n if (prev.length !== next.length) return true;\n return next.some((item, index) => {\n const prior = prev[index];\n if (!prior) return true;\n return (\n prior.id !== item.id ||\n prior.icon !== item.icon ||\n prior.selected !== item.selected ||\n prior.dot !== item.dot ||\n prior.isInactive !== item.isInactive ||\n prior.ariaLabel !== item.ariaLabel\n );\n });\n}\n\nexport type PanelToolsMotion = 'opening' | 'closing' | 'idle';\n\nexport interface PanelToolsTransitionStyle {\n transitionProperty: string;\n transitionDuration: string;\n transitionDelay: string;\n}\n\n/** Maximum computed time for the drawer's max-width transition, including delay. */\nexport function panelToolsDrawerTransitionMs(style: PanelToolsTransitionStyle): number {\n const properties = style.transitionProperty.split(',').map(item => item.trim());\n const durations = style.transitionDuration.split(',').map(item => parseCssTimeMs(item.trim(), 0));\n const delays = style.transitionDelay.split(',').map(item => parseCssTimeMs(item.trim(), 0));\n\n return properties.reduce((max, property, index) => {\n if (property !== 'all' && property !== 'max-width') return max;\n const duration = durations[index % durations.length] ?? 0;\n const delay = delays[index % delays.length] ?? 0;\n return Math.max(max, duration + delay, 0);\n }, 0);\n}\n\n/** True when the drawer clip is fully closed — safe to skip painting slot content. */\nexport function panelToolsDrawerResting(open: boolean, motion: PanelToolsMotion): boolean {\n return !open && motion === 'idle';\n}\n\n/** True only when the animated clip has reached the terminal width for its motion phase. */\nexport function panelToolsDrawerAtTerminal(\n width: number,\n targetWidth: number,\n motion: PanelToolsMotion\n): boolean {\n if (motion === 'closing') return width <= 0.5;\n if (motion === 'opening') return targetWidth > 0 && width >= targetWidth - 0.5;\n return true;\n}\n\n/** Toggle or switch rail tool selection — repeat activation closes the active tool. */\nexport function resolvePanelToolActivation(\n open: boolean,\n activeTool: PanelToolsToolId | '',\n id: PanelToolsToolId\n): { open: boolean; activeTool: PanelToolsToolId; selected: boolean } {\n if (open && activeTool === id) {\n return { open: false, activeTool: id, selected: false };\n }\n return { open: true, activeTool: id, selected: true };\n}\n","@import '../../utils/control-density.css';\n@import '../../utils/chrome-layout.css';\n@import '../../utils/scrollbar-hidden.css';\n\n:host {\n display: block;\n flex: 0 0 auto;\n box-sizing: border-box;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n --_panel-tools-rail-width: var(--dimension-size-600);\n --_panel-tools-drawer-width: var(--ds-shell-panel-tools-width, var(--dimension-panel-width-xs));\n --_panel-tools-border: var(--dimension-stroke-width-012, 1px) solid var(--color-border-tertiary);\n /* Match panel-nav expand timing (medium-1); easing differs by direction. */\n --_panel-tools-expand-dur: var(--effect-animation-duration-medium-1, 300ms);\n}\n\n.panel-tools__layout {\n display: flex;\n flex-direction: row-reverse;\n align-items: stretch;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n}\n\n/* Clip frame — only max-width animates (slide reveal, same as pre-rail :host). */\n.panel-tools__drawer {\n flex: 0 0 auto;\n max-width: 0;\n min-width: 0;\n height: 100%;\n min-height: 0;\n overflow: hidden;\n box-sizing: border-box;\n transition: none;\n}\n\n:host(.panel-tools--ready) .panel-tools__drawer {\n transition: max-width var(--_panel-tools-expand-dur)\n var(--effect-animation-easing-ease-in-out, ease);\n}\n\n:host(.panel-tools--ready.panel-tools--motion-opening) .panel-tools__drawer {\n transition: max-width var(--_panel-tools-expand-dur)\n var(--effect-animation-easing-ease-out, ease-out);\n}\n\n:host(.panel-tools--ready.panel-tools--motion-closing) .panel-tools__drawer {\n transition: max-width var(--_panel-tools-expand-dur)\n var(--effect-animation-easing-ease-in, ease-in);\n}\n\n:host(.panel-tools--open) .panel-tools__drawer {\n max-width: var(--_panel-tools-drawer-width);\n}\n\n.panel-tools__drawer--visible {\n border-left: var(--_panel-tools-border);\n}\n\n/* Fixed-width surface — ShellApp supplies the standard 300px tools width. */\n.panel-tools__drawer-surface {\n display: flex;\n flex-direction: column;\n width: var(--_panel-tools-drawer-width);\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n background-color: transparent;\n}\n\n.panel-tools__full-views,\n.panel-tools__full-view {\n flex: 1 1 auto;\n min-height: 0;\n overflow: hidden;\n}\n\n.panel-tools__full-view {\n height: 100%;\n}\n\n.panel-tools__full-view {\n display: none;\n}\n.panel-tools__full-view--active {\n display: block;\n}\n\n:host([presentation='fullscreen']) {\n height: 100vh;\n inset: 0;\n position: fixed;\n width: 100vw;\n z-index: var(--dimension-z-index-modal);\n}\n\n:host([presentation='fullscreen']) .panel-tools__rail {\n display: none;\n}\n:host([presentation='fullscreen']) .panel-tools__drawer {\n max-width: 100vw;\n transition: none;\n width: 100vw;\n}\n:host([presentation='fullscreen']) .panel-tools__drawer--visible {\n border-left: none;\n}\n:host([presentation='fullscreen']) .panel-tools__drawer-surface {\n background-color: transparent;\n width: 100vw;\n}\n\n/*\n * A framework can update the reflected presentation attribute before Stencil\n * commits the matching render class. Conceal that single inconsistent frame so\n * slotted master/detail content never paints against the previous geometry.\n */\n:host([presentation='fullscreen']:not(.panel-tools--fullscreen)) .panel-tools__drawer-surface,\n:host(.panel-tools--fullscreen:not([presentation='fullscreen'])) .panel-tools__drawer-surface {\n visibility: hidden;\n}\n\n:host(.panel-tools--presentation-snap) .panel-tools__drawer {\n transition: none;\n}\n\n.panel-tools__body {\n flex: 1 1 auto;\n min-height: 0;\n overflow: auto;\n position: relative;\n}\n\n/* Skip paint while fully closed; cleared during open/close motion for WYSIWYG slide. */\n:host(.panel-tools--drawer-resting) .panel-tools__body {\n content-visibility: auto;\n contain-intrinsic-size: auto 200px;\n}\n\n.panel-tools__view {\n display: none;\n height: 100%;\n min-height: 0;\n box-sizing: border-box;\n padding: var(--dimension-space-200);\n color: var(--color-foreground-secondary);\n font-family: var(--typography-font-family);\n font-size: var(--typography-fontsize-md);\n line-height: var(--typography-lineheight-md);\n font-weight: var(--typography-weight-regular);\n letter-spacing: var(--typography-letterspacing-negative-half);\n}\n\n.panel-tools__view ::slotted(*) {\n margin: 0;\n color: var(--color-foreground-secondary);\n font-family: var(--typography-font-family);\n font-size: var(--typography-fontsize-md);\n line-height: var(--typography-lineheight-md);\n font-weight: var(--typography-weight-regular);\n letter-spacing: var(--typography-letterspacing-negative-half);\n}\n\n.panel-tools__view--active {\n display: block;\n}\n\n/* Rail — mirrors collapsed panel-nav width, padding, and item rhythm. */\n.panel-tools__rail {\n flex: 0 0 var(--_panel-tools-rail-width);\n width: var(--_panel-tools-rail-width);\n min-width: var(--_panel-tools-rail-width);\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n height: 100%;\n min-height: 0;\n border-left: var(--_panel-tools-border);\n background-color: transparent;\n}\n\n.panel-tools__rail-header {\n justify-content: center;\n height: var(--dimension-size-600);\n flex-shrink: 0;\n border-bottom: var(--_panel-tools-border);\n}\n\n.panel-tools__rail-body {\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n.panel-tools__rail-actions {\n display: flex;\n flex-direction: column;\n gap: var(--dimension-space-050);\n width: 100%;\n}\n\n/* Flush to the bottom of the rail — mirrors Search header pin. */\n.panel-tools__rail-footer {\n justify-content: center;\n flex-shrink: 0;\n margin-top: auto;\n}\n\n.panel-tools__rail-action {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: var(--ds-control-height);\n flex-shrink: 0;\n}\n\n@media (prefers-reduced-motion: reduce) {\n :host(.panel-tools--ready.panel-tools--motion-opening) .panel-tools__drawer,\n :host(.panel-tools--ready.panel-tools--motion-closing) .panel-tools__drawer {\n transition: none;\n }\n}\n","import {\n Component,\n Prop,\n Event,\n EventEmitter,\n Element,\n State,\n Watch,\n Method,\n Listen,\n h,\n Host,\n} from '@stencil/core';\nimport type { ChromeTransitionDetail } from '../../shell/chrome-transition';\nimport {\n PANEL_TOOLS_FOOTER_TOOL_ID,\n PANEL_TOOLS_LABELS,\n PANEL_TOOLS_PRIMARY_TOOL_ID,\n PANEL_TOOLS_SHORTCUTS,\n type PanelToolsHeaderAction,\n type PanelToolsHeaderConfig,\n type PanelToolsHeaders,\n type PanelToolsItem,\n type PanelToolsToolId,\n} from './panel-tools-types';\nimport {\n isPanelToolsToolId,\n orderPanelToolsItems,\n panelToolsDrawerAtTerminal,\n parsePanelToolsItems,\n panelToolsDrawerResting,\n panelToolsDrawerTransitionMs,\n reconcilePanelToolsAvailability,\n resolvePanelToolActivation,\n} from './panel-tools-utils';\n\n@Component({\n tag: 'ds-panel-tools',\n styleUrl: 'PanelTools.css',\n scoped: true,\n})\nexport class PanelTools {\n @Element() el!: HTMLElement;\n\n /** When false, only the icon rail is shown. */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n /** Drawer presentation or viewport-covering presentation for the active tool. */\n @Prop({ mutable: true, reflect: true }) presentation: 'drawer' | 'fullscreen' = 'drawer';\n\n /** Let a fullscreen product supply independent master/detail headers inside its view. */\n @Prop({ attribute: 'fullscreen-header-mode', reflect: true })\n fullscreenHeaderMode: 'shared' | 'split' = 'shared';\n\n /** Active tool view — `search`, `agents`, `messages`, `stacks`, `activity`, or `help`. */\n @Prop({ mutable: true, attribute: 'active-tool', reflect: true })\n activeTool: PanelToolsToolId | '' = '';\n\n /**\n * Rail items rendered in the right column.\n * Set via JS property: `el.items = [...]`. Replace the array reference to update.\n */\n @Prop() items: PanelToolsItem[] = [];\n\n /** JSON fallback for `items` — useful when framework bindings don't propagate arrays. */\n @Prop({ attribute: 'items-json' }) itemsJson: string = '';\n @Prop() toolsLabel: string = 'Tools';\n @Prop() toolShortcutsLabel: string = 'Tool shortcuts';\n\n /** Active header state per tool. Replace the object when title, depth, or actions change. */\n @Prop() headers: PanelToolsHeaders = {};\n\n /** JSON fallback for `headers`. The `headers` property takes precedence when non-empty. */\n @Prop({ attribute: 'headers-json' }) headersJson: string = '';\n\n /**\n * Optional localStorage key for the last active tool. The drawer always starts\n * closed; only the tool identity is restored for continuity within this browser.\n */\n @Prop({ attribute: 'storage-key' }) storageKey: string = '';\n\n /** Emitted when a rail button is toggled. Detail = { id, selected }. */\n @Event({ bubbles: true, composed: true }) dsToolChange!: EventEmitter<{\n id: PanelToolsToolId;\n selected: boolean;\n }>;\n\n /** Emitted when fullscreen changes, including Escape-initiated exits. */\n @Event({ bubbles: true, composed: true }) dsPresentationChange!: EventEmitter<{\n presentation: 'drawer' | 'fullscreen';\n }>;\n\n /** Requests navigation to the active tool's parent view. */\n @Event({ bubbles: true, composed: true }) dsHeaderBack!: EventEmitter<{\n tool: PanelToolsToolId;\n }>;\n\n /** Requests one application-owned action from the active tool header. */\n @Event({ bubbles: true, composed: true }) dsHeaderAction!: EventEmitter<{\n tool: PanelToolsToolId;\n id: string;\n }>;\n\n /** Bubbling lifecycle — `ds-bar-nav` defers overflow checks during drawer motion. */\n @Event({ bubbles: true, composed: true })\n dsChromeTransitionStart!: EventEmitter<ChromeTransitionDetail>;\n\n @Event({ bubbles: true, composed: true })\n dsChromeTransitionEnd!: EventEmitter<ChromeTransitionDetail>;\n\n /** Arms open vs close easing for the in-flight width transition. */\n @State() private motion: 'opening' | 'closing' | 'idle' = 'idle';\n\n /** Keeps header and slotted content painted until the closing clip transition completes. */\n @State() private drawerSurfaceRetained = false;\n\n /** Suppresses width transition until the host has painted its initial open state. */\n @State() private readyForMotion = false;\n\n /** Fullscreen presentation changes snap without borrowing drawer width motion. */\n @State() private presentationMotionSuppressed = false;\n\n @State() private rovingIndex = 0;\n @State() private fullViewToolIds: PanelToolsToolId[] = [];\n\n private motionEnableGeneration = 0;\n private presentationMotionGeneration = 0;\n private transitionGeneration = 0;\n private transitionFallbackTimer: number | null = null;\n /** Ignores the old transition's terminal event when reversing direction. */\n private ignoreReplacementTerminal = false;\n private focusBeforeFullscreen: HTMLElement | null = null;\n private fullViewObserver: MutationObserver | null = null;\n\n private get railItems(): PanelToolsItem[] {\n return parsePanelToolsItems(this.items, this.itemsJson);\n }\n\n private get orderedRailItems(): PanelToolsItem[] {\n const railItems = orderPanelToolsItems(this.railItems);\n const headerItem = railItems.find(item => item.id === PANEL_TOOLS_PRIMARY_TOOL_ID);\n const footerItem = railItems.find(item => item.id === PANEL_TOOLS_FOOTER_TOOL_ID);\n const bodyItems = railItems.filter(\n item => item.id !== PANEL_TOOLS_PRIMARY_TOOL_ID && item.id !== PANEL_TOOLS_FOOTER_TOOL_ID\n );\n const ordered: PanelToolsItem[] = [];\n if (headerItem) ordered.push(headerItem);\n ordered.push(...bodyItems);\n if (footerItem) ordered.push(footerItem);\n return ordered;\n }\n\n disconnectedCallback() {\n this.el.removeEventListener('transitionend', this.handleTransitionEnd);\n this.el.removeEventListener('transitioncancel', this.handleTransitionEnd);\n this.el.removeEventListener('dsAction', this.handleComposedHeaderAction);\n this.clearTransitionCompletion();\n this.motionEnableGeneration += 1;\n this.fullViewObserver?.disconnect();\n this.fullViewObserver = null;\n }\n\n @Watch('presentation')\n presentationChanged(next: 'drawer' | 'fullscreen', previous?: 'drawer' | 'fullscreen') {\n if (next === previous) return;\n // Framework property bindings can update slotted master/detail content in\n // the same render that requests fullscreen. Reflect the host selector\n // immediately so that content cannot paint once in the drawer geometry\n // while Stencil waits to commit its next render.\n if (this.el.getAttribute('presentation') !== next) {\n this.el.setAttribute('presentation', next);\n }\n const presentationGeneration = ++this.presentationMotionGeneration;\n this.presentationMotionSuppressed = true;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (presentationGeneration !== this.presentationMotionGeneration) return;\n this.presentationMotionSuppressed = false;\n });\n });\n if (next === 'fullscreen') {\n this.focusBeforeFullscreen =\n document.activeElement instanceof HTMLElement ? document.activeElement : null;\n this.open = true;\n } else if (previous === 'fullscreen') {\n const focusBeforeFullscreen = this.focusBeforeFullscreen;\n const fallbackActionId = this.activeHeader().actions?.[0]?.id;\n requestAnimationFrame(async () => {\n if (focusBeforeFullscreen?.isConnected) {\n focusBeforeFullscreen.focus({ preventScroll: true });\n }\n const focusRestored = focusBeforeFullscreen\n ? document.activeElement === focusBeforeFullscreen ||\n focusBeforeFullscreen.contains(document.activeElement)\n : false;\n if (!focusRestored && fallbackActionId) await this.focusHeaderAction(fallbackActionId);\n this.focusBeforeFullscreen = null;\n });\n }\n this.dsPresentationChange.emit({ presentation: next });\n }\n\n @Listen('keydown', { target: 'window', capture: true })\n handleFullscreenEscape(event: KeyboardEvent) {\n if (this.presentation !== 'fullscreen' || event.key !== 'Escape') return;\n event.preventDefault();\n event.stopPropagation();\n this.presentation = 'drawer';\n }\n\n private deferMotionEnable() {\n if (this.readyForMotion) return;\n const generation = ++this.motionEnableGeneration;\n requestAnimationFrame(() => {\n if (generation !== this.motionEnableGeneration) return;\n requestAnimationFrame(() => {\n if (generation !== this.motionEnableGeneration) return;\n this.readyForMotion = true;\n });\n });\n }\n\n connectedCallback() {\n this.el.addEventListener('transitionend', this.handleTransitionEnd);\n this.el.addEventListener('transitioncancel', this.handleTransitionEnd);\n this.el.addEventListener('dsAction', this.handleComposedHeaderAction);\n }\n\n private handleComposedHeaderAction = (event: Event) => {\n const detail = (event as CustomEvent<{ id?: string }>).detail;\n if (!this.activeTool || !detail?.id) return;\n event.stopPropagation();\n this.dsHeaderAction.emit({ tool: this.activeTool, id: detail.id });\n };\n\n componentWillLoad() {\n this.restoreLastActiveTool();\n this.drawerSurfaceRetained = this.open;\n }\n\n @Watch('open')\n openChanged(isOpen: boolean, wasOpen?: boolean) {\n if (isOpen) this.drawerSurfaceRetained = true;\n if (this.readyForMotion && wasOpen !== undefined && wasOpen !== isOpen) {\n this.startDrawerTransition(isOpen ? 'opening' : 'closing');\n } else if (!isOpen) {\n this.drawerSurfaceRetained = false;\n }\n this.deferMotionEnable();\n }\n\n @Watch('activeTool')\n activeToolChanged() {\n this.persistLastActiveTool();\n this.deferMotionEnable();\n }\n\n @Watch('storageKey')\n storageKeyChanged() {\n this.restoreLastActiveTool();\n }\n\n componentDidLoad() {\n this.deferMotionEnable();\n this.syncFullViewTools();\n this.fullViewObserver = new MutationObserver(() => this.syncFullViewTools());\n this.fullViewObserver.observe(this.el, {\n childList: true,\n attributes: true,\n attributeFilter: ['slot'],\n });\n }\n\n @Watch('items')\n @Watch('itemsJson')\n itemsChanged() {\n this.rovingIndex = 0;\n this.reconcileActiveTool();\n this.deferMotionEnable();\n }\n\n private restoreLastActiveTool() {\n if (!this.storageKey || this.activeTool) return;\n try {\n const stored = localStorage.getItem(this.storageKey);\n if (isPanelToolsToolId(stored)) this.activeTool = stored;\n } catch {\n /* localStorage unavailable */\n }\n }\n\n private persistLastActiveTool() {\n if (!this.storageKey || !this.activeTool) return;\n try {\n localStorage.setItem(this.storageKey, this.activeTool);\n } catch {\n /* unavailable */\n }\n }\n\n private clearPersistedTool() {\n if (!this.storageKey) return;\n try {\n localStorage.removeItem(this.storageKey);\n } catch {\n /* unavailable */\n }\n }\n\n private reconcileActiveTool() {\n const next = reconcilePanelToolsAvailability(this.railItems, this.open, this.activeTool);\n if (!next.removedTool) return;\n this.clearPersistedTool();\n this.open = next.open;\n this.activeTool = next.activeTool;\n this.dsToolChange.emit({ id: next.removedTool, selected: false });\n }\n\n private startDrawerTransition(phase: 'opening' | 'closing') {\n const drawer = this.el.querySelector('.panel-tools__drawer') as HTMLElement | null;\n if (this.motion !== 'idle') {\n this.finishDrawerTransition();\n this.ignoreReplacementTerminal = true;\n }\n this.motion = phase;\n this.dsChromeTransitionStart.emit({ source: 'panel-tools', phase });\n const generation = ++this.transitionGeneration;\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (generation !== this.transitionGeneration || this.motion !== phase) return;\n if (!drawer) {\n this.finishDrawerTransition();\n return;\n }\n\n if (this.drawerTransitionAtTerminal(drawer, phase)) {\n this.finishDrawerTransition();\n return;\n }\n\n const fallbackMs = panelToolsDrawerTransitionMs(getComputedStyle(drawer));\n if (fallbackMs <= 0) {\n this.finishDrawerTransition();\n return;\n }\n this.transitionFallbackTimer = window.setTimeout(() => {\n this.finishDrawerTransition();\n }, fallbackMs);\n });\n });\n }\n\n private handleTransitionEnd = (event: TransitionEvent) => {\n const drawer = this.el.querySelector('.panel-tools__drawer') as HTMLElement | null;\n if (event.target !== drawer) return;\n if (event.propertyName !== 'max-width') return;\n if (this.ignoreReplacementTerminal) {\n this.ignoreReplacementTerminal = false;\n return;\n }\n // Changing from the neutral transition recipe to the direction-specific\n // easing can cancel the transition that the reflected `open` class began.\n // The replacement transition and its watchdog still own completion; ending\n // motion here would hide the fixed-width tool surface while it is visible.\n if (event.type === 'transitioncancel') return;\n if (drawer && !this.drawerTransitionAtTerminal(drawer, this.motion)) return;\n this.finishDrawerTransition();\n };\n\n private drawerTransitionAtTerminal(\n drawer: HTMLElement,\n phase: 'opening' | 'closing' | 'idle'\n ): boolean {\n const width = drawer.getBoundingClientRect().width;\n const surface = drawer.querySelector('.panel-tools__drawer-surface') as HTMLElement | null;\n const targetWidth = surface?.getBoundingClientRect().width ?? 0;\n return panelToolsDrawerAtTerminal(width, targetWidth, phase);\n }\n\n private finishDrawerTransition() {\n const completedPhase = this.motion;\n const wasTransitioning = completedPhase !== 'idle';\n this.clearTransitionCompletion();\n if (!wasTransitioning) return;\n this.ignoreReplacementTerminal = false;\n this.motion = 'idle';\n if (completedPhase === 'closing' && !this.open) {\n this.drawerSurfaceRetained = false;\n }\n this.dsChromeTransitionEnd.emit({ source: 'panel-tools' });\n }\n\n private clearTransitionCompletion() {\n this.transitionGeneration += 1;\n if (this.transitionFallbackTimer !== null) {\n window.clearTimeout(this.transitionFallbackTimer);\n this.transitionFallbackTimer = null;\n }\n }\n\n /** Rail selection follows `open` immediately — independent of the slide animation. */\n private isRailSelected(id: PanelToolsToolId): boolean {\n return this.open && this.activeTool === id;\n }\n\n /** Drawer body stays mounted while the clip frame animates closed. */\n private isDrawerPresent(): boolean {\n return this.open || this.drawerSurfaceRetained;\n }\n\n private isViewActive(id: PanelToolsToolId): boolean {\n return this.isDrawerPresent() && this.activeTool === id;\n }\n\n private hasFullView(id: PanelToolsToolId): boolean {\n return this.fullViewToolIds.includes(id);\n }\n\n private syncFullViewTools() {\n const ids: PanelToolsToolId[] = ['search', 'messages', 'stacks', 'activity', 'agents', 'help'];\n const next = ids.filter(id => Boolean(this.el.querySelector(`[slot=\"${id}-view\"]`)));\n if (next.join('|') !== this.fullViewToolIds.join('|')) this.fullViewToolIds = next;\n }\n\n private headerLabel(): string {\n if (!this.isDrawerPresent() || !this.activeTool) return '';\n return PANEL_TOOLS_LABELS[this.activeTool as PanelToolsToolId] ?? '';\n }\n\n private resolvedHeaders(): PanelToolsHeaders {\n if (Object.keys(this.headers).length) return this.headers;\n if (!this.headersJson.trim()) return {};\n try {\n const parsed = JSON.parse(this.headersJson);\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed)\n ? (parsed as PanelToolsHeaders)\n : {};\n } catch {\n return {};\n }\n }\n\n private activeHeader(): PanelToolsHeaderConfig {\n if (!this.activeTool) return {};\n return this.resolvedHeaders()[this.activeTool] ?? {};\n }\n\n private handleToolChange = (id: PanelToolsToolId) => {\n const next = resolvePanelToolActivation(this.open, this.activeTool, id);\n this.open = next.open;\n this.activeTool = next.activeTool;\n this.dsToolChange.emit({ id, selected: next.selected });\n };\n\n /** Toggle any rail tool open/closed — shell shortcuts K/A/S/M/N call this. */\n @Method()\n async activateTool(id: PanelToolsToolId) {\n const item = this.railItems.find(entry => entry.id === id);\n if (!item || item.isInactive) return;\n this.handleToolChange(id);\n }\n\n /** Close the tools drawer when open — used by shell keyboard shortcuts. */\n @Method()\n async closeDrawer() {\n if (!this.open) return;\n const id = this.activeTool;\n this.open = false;\n if (id) {\n this.dsToolChange.emit({ id, selected: false });\n }\n }\n\n /** Focus an active tool-header action by its application-owned id. */\n @Method()\n async focusHeaderAction(id: string) {\n const action = this.el.querySelector(`[data-header-action-id=\"${CSS.escape(id)}\"]`) as\n | (HTMLElement & { setFocus?: () => Promise<void> })\n | null;\n await action?.setFocus?.();\n }\n\n private focusRailAt(index: number) {\n const items = this.orderedRailItems;\n if (!items.length) return;\n const bounded = Math.max(0, Math.min(index, items.length - 1));\n if (bounded === this.rovingIndex) return;\n this.rovingIndex = bounded;\n const actions = Array.from(\n this.el.querySelectorAll<HTMLElement>('.panel-tools__rail-action .button-icon')\n );\n actions[bounded]?.focus({ preventScroll: true });\n }\n\n private handleRailKeyDown = (e: KeyboardEvent, index: number) => {\n const items = this.orderedRailItems;\n if (!items.length) return;\n\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this.handleToolChange(items[index].id);\n return;\n }\n\n if (e.key === 'ArrowDown') {\n if (index >= items.length - 1) return;\n e.preventDefault();\n this.focusRailAt(index + 1);\n return;\n }\n\n if (e.key === 'ArrowUp') {\n if (index <= 0) return;\n e.preventDefault();\n this.focusRailAt(index - 1);\n }\n };\n\n private renderRailAction(item: PanelToolsItem, index: number) {\n const label = item.ariaLabel ?? PANEL_TOOLS_LABELS[item.id];\n return (\n <ds-tooltip\n key={item.id}\n label={label}\n shortcutKey={PANEL_TOOLS_SHORTCUTS[item.id]}\n side=\"left\"\n size=\"sm\"\n >\n <ds-button-unfilled\n variant=\"icon\"\n class=\"panel-tools__rail-action\"\n icon={item.icon}\n isActive={this.isRailSelected(item.id)}\n activeFill={false}\n hasBorder={false}\n pressScale={false}\n dot={item.dot ?? false}\n isInactive={item.isInactive}\n focusTabIndex={index === this.rovingIndex ? 0 : -1}\n aria-label={label}\n pressed={this.isRailSelected(item.id)}\n onFocusin={() => {\n this.rovingIndex = index;\n }}\n onKeyDown={(e: KeyboardEvent) => this.handleRailKeyDown(e, index)}\n onDsClick={() => this.handleToolChange(item.id)}\n />\n </ds-tooltip>\n );\n }\n\n render() {\n const headerLabel = this.headerLabel();\n const header = this.activeHeader();\n const headerTitle = header.title?.trim() || headerLabel;\n const headerActions = header.actions ?? [];\n const orderedRailItems = this.orderedRailItems;\n const headerItem = orderedRailItems.find(item => item.id === PANEL_TOOLS_PRIMARY_TOOL_ID);\n const footerItem = orderedRailItems.find(item => item.id === PANEL_TOOLS_FOOTER_TOOL_ID);\n const bodyItems = orderedRailItems.filter(\n item => item.id !== PANEL_TOOLS_PRIMARY_TOOL_ID && item.id !== PANEL_TOOLS_FOOTER_TOOL_ID\n );\n const footerIndex = footerItem ? (headerItem ? 1 : 0) + bodyItems.length : -1;\n const showDrawerChrome = this.isDrawerPresent();\n const drawerResting = panelToolsDrawerResting(this.open, this.motion);\n const activeFullView = Boolean(\n showDrawerChrome && this.activeTool && this.hasFullView(this.activeTool)\n );\n const toolIds: PanelToolsToolId[] = [\n 'search',\n 'messages',\n 'stacks',\n 'activity',\n 'agents',\n 'help',\n ];\n\n return (\n <Host\n class={{\n 'panel-tools': true,\n 'panel-tools--open': this.open,\n 'panel-tools--ready': this.readyForMotion,\n 'panel-tools--motion-opening': this.motion === 'opening',\n 'panel-tools--motion-closing': this.motion === 'closing',\n 'panel-tools--drawer-resting': drawerResting,\n 'panel-tools--fullscreen': this.presentation === 'fullscreen',\n 'panel-tools--presentation-snap': this.presentationMotionSuppressed,\n }}\n role={this.presentation === 'fullscreen' ? 'dialog' : 'complementary'}\n aria-modal={this.presentation === 'fullscreen' ? 'true' : undefined}\n aria-label={this.toolsLabel}\n >\n <div class=\"panel-tools__layout\">\n <nav class=\"panel-tools__rail\" aria-label={this.toolShortcutsLabel}>\n {headerItem ? (\n <div class=\"panel-tools__rail-header ds-chrome-row ds-chrome-space--md\">\n {this.renderRailAction(headerItem, 0)}\n </div>\n ) : null}\n <div class=\"panel-tools__rail-body ds-chrome-column ds-chrome-space--md ds-scrollbar-hidden\">\n <div class=\"panel-tools__rail-actions\">\n {bodyItems.map((item, bodyIdx) =>\n this.renderRailAction(item, headerItem ? bodyIdx + 1 : bodyIdx)\n )}\n </div>\n </div>\n {footerItem ? (\n <div class=\"panel-tools__rail-footer ds-chrome-row ds-chrome-space--md\">\n {this.renderRailAction(footerItem, footerIndex)}\n </div>\n ) : null}\n </nav>\n\n <div\n class={{\n 'panel-tools__drawer': true,\n 'panel-tools__drawer--visible': showDrawerChrome,\n }}\n aria-hidden={showDrawerChrome ? null : 'true'}\n inert={showDrawerChrome ? undefined : true}\n >\n <div class=\"panel-tools__drawer-surface\">\n {this.presentation !== 'fullscreen' || this.fullscreenHeaderMode === 'shared' ? (\n <ds-panel-tool-header\n class=\"panel-tools__header\"\n heading={headerTitle}\n showBack={header.showBack ?? false}\n backIcon={header.backIcon || 'ChevronLeft'}\n backAriaLabel={header.backAriaLabel || 'Back'}\n showMenu={false}\n ref={element => {\n const toolHeader = element as\n | (HTMLDsPanelToolHeaderElement & {\n actions: PanelToolsHeaderAction[];\n })\n | undefined;\n if (toolHeader) toolHeader.actions = headerActions;\n }}\n onDsBack={() => {\n if (this.activeTool) this.dsHeaderBack.emit({ tool: this.activeTool });\n }}\n />\n ) : null}\n <div class=\"panel-tools__body\" hidden={activeFullView}>\n {toolIds.map(id => {\n const active = this.isViewActive(id);\n return (\n <div\n class={{\n 'panel-tools__view': true,\n 'panel-tools__view--active': active,\n }}\n hidden={!active}\n >\n <slot name={id} />\n </div>\n );\n })}\n </div>\n <div class=\"panel-tools__full-views\" hidden={!activeFullView}>\n {toolIds.map(id => (\n <div\n class={{\n 'panel-tools__full-view': true,\n 'panel-tools__full-view--active':\n this.isViewActive(id) && this.hasFullView(id),\n }}\n hidden={!(this.isViewActive(id) && this.hasFullView(id))}\n >\n <slot name={`${id}-view`} />\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{p as s,H as i,c as t,h as e,a as n,t as o}from"./index.js";import{D as r,s as a}from"./p-BgGP65Nn.js";const d=()=>`:host{--ds-focus-ring-width:var(--dimension-stroke-width-025, 2px);--ds-focus-ring-offset:var(--dimension-space-025, 2px);--ds-focus-ring-color:var(--color-interaction-focus)}:host(.ds-focus-ring),.ds-focus-ring,:host(.ds-focus-ring-inset),.ds-focus-ring-inset{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}:host(.ds-focus-ring:focus-visible),.ds-focus-ring:focus-visible{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}:host(.ds-focus-ring.ds-focus-ring--visible),.ds-focus-ring.ds-focus-ring--visible{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}:host(.ds-focus-ring-inset:focus-visible),.ds-focus-ring-inset:focus-visible{outline:none}:host(.ds-focus-ring-inset:focus-visible)::after,.ds-focus-ring-inset:focus-visible::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}:host(.ds-focus-ring-inset.ds-focus-ring--visible),.ds-focus-ring-inset.ds-focus-ring--visible{outline:none}:host(.ds-focus-ring-inset.ds-focus-ring--visible)::after,.ds-focus-ring-inset.ds-focus-ring--visible::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}:host(.ds-control-inactive),.ds-control-inactive{opacity:0.5;pointer-events:none;cursor:not-allowed}:host{--ds-switch-width:var(--dimension-size-400);--ds-switch-height:var(--dimension-size-250);--ds-switch-thumb-size:var(--dimension-size-150);--ds-switch-gap:var(--dimension-space-050);--ds-switch-stroke:var(--dimension-stroke-width-012);--ds-switch-inset:var(--ds-switch-gap);--ds-switch-thumb-hover:var(--color-interaction-hover);--ds-switch-thumb-pressed:var(--color-interaction-pressed);--ds-switch-travel:calc( var(--ds-switch-width) - var(--ds-switch-thumb-size) - var(--ds-switch-inset) - var(--ds-switch-inset) );position:relative;display:inline-flex;width:var(--ds-switch-width);height:var(--ds-switch-height);padding:0;border:none;border-radius:var(--dimension-radius-half);box-sizing:border-box;flex-shrink:0;overflow:visible;cursor:default;user-select:none;outline:none;background-color:transparent;box-shadow:inset 0 0 0 var(--ds-switch-stroke) var(--color-border-secondary);transition:background-color var(--effect-motion-short-3), box-shadow var(--effect-motion-short-3)}:host(.switch--lg){--ds-switch-width:var(--dimension-size-500);--ds-switch-height:var(--dimension-size-300);--ds-switch-thumb-size:var(--dimension-iconography-sm);--ds-switch-gap:var(--dimension-space-050)}:host(.switch--sm){--ds-switch-width:var(--dimension-size-300);--ds-switch-height:var(--dimension-size-200);--ds-switch-thumb-size:calc(var(--dimension-size-base) * 5 / 4);--ds-switch-gap:calc(var(--dimension-space-025) + var(--dimension-space-012))}:host(.switch--xs){--ds-switch-width:var(--dimension-size-250);--ds-switch-height:var(--dimension-size-150);--ds-switch-thumb-size:var(--dimension-size-100);--ds-switch-gap:var(--dimension-space-025)}:host(.checked){background-color:var(--color-background-bold-brand);box-shadow:none}:host(.switch--readonly),:host(.switch--presentation){cursor:default}:host(.switch--presentation){pointer-events:none}.thumb{position:absolute;top:50%;left:var(--ds-switch-inset);width:var(--ds-switch-thumb-size);height:var(--ds-switch-thumb-size);border-radius:var(--dimension-radius-half);background-color:var(--color-foreground-tertiary);box-shadow:none;transform:translateY(-50%);transition:background-color var(--effect-motion-short-3), transform var(--effect-motion-short-3);pointer-events:none}.thumb::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none}:host(:hover:not(:disabled):not(.ds-control-inactive):not(.switch--readonly):not(.switch--presentation)) .thumb::after{background:var(--ds-switch-thumb-hover)}:host(:active:not(:disabled):not(.ds-control-inactive):not(.switch--readonly):not(.switch--presentation)) .thumb::after{background:var(--ds-switch-thumb-pressed)}:host(.checked) .thumb{background-color:var(--color-background-primary);box-shadow:none;transform:translate3d(var(--ds-switch-travel), -50%, 0)}@media (prefers-reduced-motion: reduce){:host{transition:none}.thumb{transition:none}}`;let h=0;const c=s(class s extends i{constructor(s){super();if(s!==false){this.__registerHost()}this.__attachShadow();this.dsChange=t(this,"dsChange");this.internals=this.attachInternals();this.checked=false;this.value="on";this.disabled=false;this.readOnly=false;this.required=false;this.requiredMessage=r;this.isInactive=false;this.size="md";this.presentation=false;this.initialChecked=false;this.formDisabled=false;this.focused=false;this.touched=false;this.handleClick=()=>{if(this.presentation||this.readOnly||this.isInactive||this.disabled||this.formDisabled)return;this.checked=!this.checked;this.dsChange.emit(this.checked)};this.handleKeyDown=s=>{if(this.presentation||this.readOnly||this.isInactive||this.disabled||this.formDisabled)return;if(s.key===" "||s.key==="Enter"){s.preventDefault();this.handleClick()}};this.handleFocus=()=>{if(!this.presentation)this.focused=true};this.handleBlur=()=>{if(this.presentation)return;this.focused=false;this.touched=true}}componentWillLoad(){this.initialChecked=this.checked;this.syncFormValue()}componentDidLoad(){this.syncNativeLabels()}syncFormValue(){const s=this.presentation||this.isInactive||this.disabled||this.formDisabled;const i=this.checked?this.value:this.uncheckedValue??null;const t=this.checked?"checked":"unchecked";this.internals.setFormValue(s?null:i,t);const e=this.required&&!s&&!this.checked;a(this.internals,e,this.requiredMessage)}formDisabledCallback(s){this.formDisabled=s;this.syncFormValue()}formResetCallback(){this.checked=this.initialChecked;this.focused=false;this.touched=false}formStateRestoreCallback(s){this.checked=s==="checked"}syncNativeLabels(){if(this.presentation)return;if(this.el.hasAttribute("aria-label")||this.el.hasAttribute("aria-labelledby"))return;const s=Array.from(this.internals.labels).map((s=>{if(!s.id)s.id=`ds-switch-label-${++h}`;return s.id}));if(s.length)this.el.setAttribute("aria-labelledby",s.join(" "))}render(){const s=this.isInactive||this.disabled||this.formDisabled;const i=this.required&&!s&&!this.checked;const t=this.checked!==this.initialChecked;return e(n,{key:"b12eac4dd6fa727dd2f509e5e45c671fc0c32b67",role:this.presentation?undefined:"switch","aria-checked":this.presentation?undefined:String(this.checked),"aria-disabled":!this.presentation&&s?"true":undefined,"aria-readonly":!this.presentation&&this.readOnly?"true":undefined,"aria-required":!this.presentation&&this.required?"true":undefined,"aria-invalid":!this.presentation&&i?"true":undefined,"aria-hidden":this.presentation?"true":undefined,"data-checked":this.checked?"":undefined,"data-unchecked":!this.checked?"":undefined,"data-disabled":s?"":undefined,"data-readonly":this.readOnly?"":undefined,"data-required":this.required?"":undefined,"data-focused":!this.presentation&&this.focused?"":undefined,"data-filled":!this.presentation&&this.checked?"":undefined,"data-dirty":!this.presentation&&t?"":undefined,"data-touched":!this.presentation&&this.touched?"":undefined,"data-valid":!this.presentation&&!s&&!i?"":undefined,"data-invalid":!this.presentation&&i?"":undefined,tabIndex:this.presentation||s?-1:0,class:{switch:true,checked:this.checked,"switch--lg":this.size==="lg","switch--md":this.size==="md","switch--sm":this.size==="sm","switch--xs":this.size==="xs","switch--readonly":this.readOnly,"switch--presentation":this.presentation,"ds-focus-ring":true,"ds-control-inactive":s},onClick:this.handleClick,onKeyDown:this.handleKeyDown,onFocus:this.handleFocus,onBlur:this.handleBlur},e("span",{key:"270b291feb10174969aee3b092a0365444e63fb8",class:"thumb"}))}static get formAssociated(){return true}get el(){return this}static get watchers(){return{checked:[{syncFormValue:0}],value:[{syncFormValue:0}],uncheckedValue:[{syncFormValue:0}],disabled:[{syncFormValue:0}],isInactive:[{syncFormValue:0}],presentation:[{syncFormValue:0}],required:[{syncFormValue:0}]}}static get style(){return d()}},[65,"ds-switch",{checked:[1028],name:[513],value:[1],uncheckedValue:[1,"unchecked-value"],form:[513],disabled:[516],readOnly:[516,"read-only"],required:[516],requiredMessage:[1,"required-message"],isInactive:[4,"is-inactive"],size:[1],presentation:[4],formDisabled:[32],focused:[32],touched:[32]},undefined,{checked:[{syncFormValue:0}],value:[{syncFormValue:0}],uncheckedValue:[{syncFormValue:0}],disabled:[{syncFormValue:0}],isInactive:[{syncFormValue:0}],presentation:[{syncFormValue:0}],required:[{syncFormValue:0}]}]);function u(){if(typeof customElements==="undefined"){return}const s=["ds-switch"];s.forEach((s=>{switch(s){case"ds-switch":if(!customElements.get(o(s))){customElements.define(o(s),c)}break}}))}u();export{c as S,u as d};
2
- //# sourceMappingURL=p-Re2kPrXm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["switchCss","generatedLabelId","Switch","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","checked","value","disabled","readOnly","required","requiredMessage","DEFAULT_REQUIRED_MESSAGE","isInactive","size","presentation","initialChecked","formDisabled","focused","touched","handleClick","dsChange","emit","handleKeyDown","event","key","preventDefault","handleFocus","handleBlur","componentWillLoad","syncFormValue","componentDidLoad","syncNativeLabels","inactive","submissionValue","uncheckedValue","state","internals","setFormValue","missing","setRequiredValidity","formDisabledCallback","formResetCallback","formStateRestoreCallback","el","hasAttribute","labelIds","Array","from","labels","map","label","id","length","setAttribute","join","render","invalid","dirty","h","Host","role","undefined","String","tabIndex","class","switch","onClick","onKeyDown","onFocus","onBlur"],"sources":["src/wc/components/Switch/Switch.css?tag=ds-switch&encapsulation=shadow","src/wc/components/Switch/Switch.tsx"],"sourcesContent":["@import '../../utils/focus-ring.css';\n@import '../../utils/control-inactive.css';\n\n:host {\n --ds-switch-width: var(--dimension-size-400);\n --ds-switch-height: var(--dimension-size-250);\n --ds-switch-thumb-size: var(--dimension-size-150);\n --ds-switch-gap: var(--dimension-space-050);\n --ds-switch-stroke: var(--dimension-stroke-width-012);\n --ds-switch-inset: var(--ds-switch-gap);\n --ds-switch-thumb-hover: var(--color-interaction-hover);\n --ds-switch-thumb-pressed: var(--color-interaction-pressed);\n --ds-switch-travel: calc(\n var(--ds-switch-width) - var(--ds-switch-thumb-size) - var(--ds-switch-inset) -\n var(--ds-switch-inset)\n );\n position: relative;\n display: inline-flex;\n width: var(--ds-switch-width);\n height: var(--ds-switch-height);\n padding: 0;\n border: none;\n border-radius: var(--dimension-radius-half);\n box-sizing: border-box;\n flex-shrink: 0;\n overflow: visible;\n cursor: default;\n user-select: none;\n outline: none;\n background-color: transparent;\n box-shadow: inset 0 0 0 var(--ds-switch-stroke) var(--color-border-secondary);\n transition:\n background-color var(--effect-motion-short-3),\n box-shadow var(--effect-motion-short-3);\n}\n\n:host(.switch--lg) {\n --ds-switch-width: var(--dimension-size-500);\n --ds-switch-height: var(--dimension-size-300);\n --ds-switch-thumb-size: var(--dimension-iconography-sm);\n --ds-switch-gap: var(--dimension-space-050);\n}\n\n:host(.switch--sm) {\n --ds-switch-width: var(--dimension-size-300);\n --ds-switch-height: var(--dimension-size-200);\n --ds-switch-thumb-size: calc(var(--dimension-size-base) * 5 / 4);\n --ds-switch-gap: calc(var(--dimension-space-025) + var(--dimension-space-012));\n}\n\n:host(.switch--xs) {\n --ds-switch-width: var(--dimension-size-250);\n --ds-switch-height: var(--dimension-size-150);\n --ds-switch-thumb-size: var(--dimension-size-100);\n --ds-switch-gap: var(--dimension-space-025);\n}\n\n:host(.checked) {\n background-color: var(--color-background-bold-brand);\n box-shadow: none;\n}\n\n:host(.switch--readonly),\n:host(.switch--presentation) {\n cursor: default;\n}\n\n:host(.switch--presentation) {\n pointer-events: none;\n}\n\n/* Inactive: `.ds-control-inactive` (50% opacity). */\n\n.thumb {\n position: absolute;\n top: 50%;\n left: var(--ds-switch-inset);\n width: var(--ds-switch-thumb-size);\n height: var(--ds-switch-thumb-size);\n border-radius: var(--dimension-radius-half);\n background-color: var(--color-foreground-tertiary);\n box-shadow: none;\n transform: translateY(-50%);\n transition:\n background-color var(--effect-motion-short-3),\n transform var(--effect-motion-short-3);\n pointer-events: none;\n}\n\n.thumb::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: inherit;\n background: transparent;\n pointer-events: none;\n}\n\n:host(:hover:not(:disabled):not(.ds-control-inactive):not(.switch--readonly):not(.switch--presentation))\n .thumb::after {\n background: var(--ds-switch-thumb-hover);\n}\n\n:host(:active:not(:disabled):not(.ds-control-inactive):not(.switch--readonly):not(.switch--presentation))\n .thumb::after {\n background: var(--ds-switch-thumb-pressed);\n}\n\n:host(.checked) .thumb {\n background-color: var(--color-background-primary);\n box-shadow: none;\n transform: translate3d(var(--ds-switch-travel), -50%, 0);\n}\n\n@media (prefers-reduced-motion: reduce) {\n :host {\n transition: none;\n }\n\n .thumb {\n transition: none;\n }\n}\n","import { AttachInternals, Component, Element, Prop, State, Event, EventEmitter, Watch, h, Host } from '@stencil/core';\nimport { DEFAULT_REQUIRED_MESSAGE, setRequiredValidity } from '../../utils';\n\nexport type SwitchSize = 'lg' | 'md' | 'sm' | 'xs';\n\nlet generatedLabelId = 0;\n\n@Component({\n tag: 'ds-switch',\n styleUrl: 'Switch.css',\n shadow: true,\n formAssociated: true,\n})\nexport class Switch {\n @Element() el!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n /** Current on/off state. The initial value is restored when the owning form resets. */\n @Prop({ mutable: true }) checked: boolean = false;\n\n @Prop({ reflect: true }) name: string | undefined;\n @Prop() value: string = 'on';\n\n /** Optional value submitted when unchecked; omitted by default like a native checkbox. */\n @Prop() uncheckedValue: string | undefined;\n\n /** Associates the switch with a form by id when it is rendered outside that form. */\n @Prop({ reflect: true }) form: string | undefined;\n\n @Prop({ reflect: true }) disabled: boolean = false;\n @Prop({ reflect: true }) readOnly: boolean = false;\n @Prop({ reflect: true }) required: boolean = false;\n @Prop() requiredMessage: string = DEFAULT_REQUIRED_MESSAGE;\n @Prop() isInactive: boolean = false;\n\n /** Compact track size for placement inside controls, menus, and form rows. */\n @Prop() size: SwitchSize = 'md';\n\n /**\n * Removes standalone control semantics so a composite owner such as a\n * `menuitemcheckbox` can use the switch as an aria-hidden visual indicator.\n */\n @Prop() presentation: boolean = false;\n\n @Event() dsChange!: EventEmitter<boolean>;\n\n private initialChecked = false;\n @State() private formDisabled = false;\n @State() private focused = false;\n @State() private touched = false;\n\n componentWillLoad() {\n this.initialChecked = this.checked;\n this.syncFormValue();\n }\n\n componentDidLoad() {\n this.syncNativeLabels();\n }\n\n @Watch('checked')\n @Watch('value')\n @Watch('uncheckedValue')\n @Watch('disabled')\n @Watch('isInactive')\n @Watch('presentation')\n @Watch('required')\n syncFormValue() {\n const inactive = this.presentation || this.isInactive || this.disabled || this.formDisabled;\n const submissionValue = this.checked ? this.value : this.uncheckedValue ?? null;\n const state = this.checked ? 'checked' : 'unchecked';\n this.internals.setFormValue(inactive ? null : submissionValue, state);\n\n const missing = this.required && !inactive && !this.checked;\n setRequiredValidity(this.internals, missing, this.requiredMessage);\n }\n\n formDisabledCallback(disabled: boolean) {\n this.formDisabled = disabled;\n this.syncFormValue();\n }\n\n formResetCallback() {\n this.checked = this.initialChecked;\n this.focused = false;\n this.touched = false;\n }\n\n formStateRestoreCallback(state: string | File | FormData | null) {\n this.checked = state === 'checked';\n }\n\n private syncNativeLabels() {\n if (this.presentation) return;\n if (this.el.hasAttribute('aria-label') || this.el.hasAttribute('aria-labelledby')) return;\n\n const labelIds = (Array.from(this.internals.labels) as HTMLLabelElement[]).map(label => {\n if (!label.id) label.id = `ds-switch-label-${++generatedLabelId}`;\n return label.id;\n });\n if (labelIds.length) this.el.setAttribute('aria-labelledby', labelIds.join(' '));\n }\n\n private handleClick = () => {\n if (this.presentation || this.readOnly || this.isInactive || this.disabled || this.formDisabled) return;\n this.checked = !this.checked;\n this.dsChange.emit(this.checked);\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (this.presentation || this.readOnly || this.isInactive || this.disabled || this.formDisabled) return;\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.handleClick();\n }\n };\n\n private handleFocus = () => {\n if (!this.presentation) this.focused = true;\n };\n\n private handleBlur = () => {\n if (this.presentation) return;\n this.focused = false;\n this.touched = true;\n };\n\n render() {\n const inactive = this.isInactive || this.disabled || this.formDisabled;\n const invalid = this.required && !inactive && !this.checked;\n const dirty = this.checked !== this.initialChecked;\n // Switch owns its structural track and thumb strokes so nested interaction layers cannot cover them.\n return (\n <Host\n role={this.presentation ? undefined : 'switch'}\n aria-checked={this.presentation ? undefined : String(this.checked)}\n aria-disabled={!this.presentation && inactive ? 'true' : undefined}\n aria-readonly={!this.presentation && this.readOnly ? 'true' : undefined}\n aria-required={!this.presentation && this.required ? 'true' : undefined}\n aria-invalid={!this.presentation && invalid ? 'true' : undefined}\n aria-hidden={this.presentation ? 'true' : undefined}\n data-checked={this.checked ? '' : undefined}\n data-unchecked={!this.checked ? '' : undefined}\n data-disabled={inactive ? '' : undefined}\n data-readonly={this.readOnly ? '' : undefined}\n data-required={this.required ? '' : undefined}\n data-focused={!this.presentation && this.focused ? '' : undefined}\n data-filled={!this.presentation && this.checked ? '' : undefined}\n data-dirty={!this.presentation && dirty ? '' : undefined}\n data-touched={!this.presentation && this.touched ? '' : undefined}\n data-valid={!this.presentation && !inactive && !invalid ? '' : undefined}\n data-invalid={!this.presentation && invalid ? '' : undefined}\n tabIndex={this.presentation || inactive ? -1 : 0}\n class={{\n switch: true,\n checked: this.checked,\n 'switch--lg': this.size === 'lg',\n 'switch--md': this.size === 'md',\n 'switch--sm': this.size === 'sm',\n 'switch--xs': this.size === 'xs',\n 'switch--readonly': this.readOnly,\n 'switch--presentation': this.presentation,\n 'ds-focus-ring': true,\n 'ds-control-inactive': inactive,\n }}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n >\n <span class=\"thumb\" />\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{p as o,H as s,c as e,h as i,a as c,t as n}from"./index.js";import{d as t}from"./p-Cr3tEx7o.js";import{D as r,s as d}from"./p-BgGP65Nn.js";import{C as a}from"./p-CuwopElg.js";const l=()=>`.ds-control-inactive.sc-ds-checkbox-h,.ds-control-inactive.sc-ds-checkbox{opacity:0.5;pointer-events:none;cursor:not-allowed}.ds-control--lg.sc-ds-checkbox,.ds-control--lg.sc-ds-checkbox-h,.ds-control--md.sc-ds-checkbox-h,.ds-control--md.sc-ds-checkbox,.ds-control--sm.sc-ds-checkbox-h,.ds-control--sm.sc-ds-checkbox,.ds-control--xs.sc-ds-checkbox-h,.ds-control--xs.sc-ds-checkbox{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-checkbox-h,.ds-control--lg.sc-ds-checkbox{--ds-control-height:var(--dimension-size-500);--ds-control-icon:var(--dimension-iconography-lg);--ds-control-padding-inline:var(--dimension-space-100);--ds-control-label-inset:var(--dimension-space-050);--ds-control-gap:var(--dimension-space-050)}.ds-control--md.sc-ds-checkbox-h,.ds-control--md.sc-ds-checkbox{--ds-control-height:var(--dimension-size-400);--ds-control-icon:var(--dimension-iconography-md);--ds-control-padding-inline:var(--dimension-space-075);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-050)}.ds-control--sm.sc-ds-checkbox-h,.ds-control--sm.sc-ds-checkbox{--ds-control-height:var(--dimension-size-300);--ds-control-icon:var(--dimension-iconography-sm);--ds-control-padding-inline:var(--dimension-space-050);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:var(--dimension-space-025)}.ds-control--xs.sc-ds-checkbox-h,.ds-control--xs.sc-ds-checkbox{--ds-control-height:var(--dimension-size-200);--ds-control-icon:var(--dimension-iconography-xs);--ds-control-padding-inline:var(--dimension-space-025);--ds-control-label-inset:var(--dimension-space-025);--ds-control-gap:0}.sc-ds-checkbox-h{--ds-focus-ring-width:var(--dimension-stroke-width-025, 2px);--ds-focus-ring-offset:var(--dimension-space-025, 2px);--ds-focus-ring-color:var(--color-interaction-focus)}.ds-focus-ring.sc-ds-checkbox-h,.ds-focus-ring.sc-ds-checkbox,.ds-focus-ring-inset.sc-ds-checkbox-h,.ds-focus-ring-inset.sc-ds-checkbox{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-checkbox-h:focus-visible,.ds-focus-ring.sc-ds-checkbox:focus-visible{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring.ds-focus-ring--visible.sc-ds-checkbox-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-checkbox{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring-inset.sc-ds-checkbox-h:focus-visible,.ds-focus-ring-inset.sc-ds-checkbox:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-checkbox-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-checkbox:focus-visible::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-checkbox-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-checkbox{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-checkbox-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-checkbox::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-interaction-fill.sc-ds-checkbox-h,.ds-interaction-fill.sc-ds-checkbox{position:relative;z-index:0;cursor:default;--ds-interaction-hover:var(--color-interaction-hover);--ds-interaction-pressed:var(--color-interaction-pressed);--ds-interaction-active:var(--color-interaction-active-brand);--ds-interaction-border-width:0px;--ds-interaction-border-color:transparent}.ds-interaction-fill.sc-ds-checkbox-h::before,.ds-interaction-fill.sc-ds-checkbox::before,.ds-interaction-fill.sc-ds-checkbox-h::after,.ds-interaction-fill.sc-ds-checkbox::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-checkbox-h::before,.ds-interaction-fill.sc-ds-checkbox::before{z-index:1}.ds-interaction-fill.sc-ds-checkbox-h::after,.ds-interaction-fill.sc-ds-checkbox::after{z-index:3;box-shadow:inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-checkbox-h,.ds-interaction-fill--bordered.sc-ds-checkbox{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-checkbox-h::before,.ds-interaction-fill--selected.sc-ds-checkbox::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-checkbox-h,.ds-interaction-fill--selected.sc-ds-checkbox{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-checkbox-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-checkbox:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-checkbox-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-checkbox:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill.sc-ds-checkbox-h>.ds-interaction-fill__content.sc-ds-checkbox,.ds-interaction-fill.sc-ds-checkbox>.ds-interaction-fill__content.sc-ds-checkbox,.ds-interaction-fill__content.sc-ds-checkbox{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-checkbox-h,.ds-interaction-fill--on-faint.sc-ds-checkbox{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-checkbox-h,.ds-interaction-fill--on-medium.sc-ds-checkbox{--ds-interaction-hover:var(--color-interaction-on-medium-background-hover);--ds-interaction-pressed:var(--color-interaction-on-medium-background-pressed);--ds-interaction-active:var(--color-interaction-on-medium-background-active);--ds-focus-ring-color:var(--color-interaction-on-medium-background-focus)}.ds-interaction-fill--on-bold.sc-ds-checkbox-h,.ds-interaction-fill--on-bold.sc-ds-checkbox{--ds-interaction-hover:var(--color-interaction-on-bold-background-hover);--ds-interaction-pressed:var(--color-interaction-on-bold-background-pressed);--ds-interaction-active:var(--color-interaction-on-bold-background-active);--ds-focus-ring-color:var(--color-interaction-on-bold-background-focus)}.ds-interaction-fill--on-strong.sc-ds-checkbox-h,.ds-interaction-fill--on-strong.sc-ds-checkbox{--ds-interaction-hover:var(--color-interaction-on-strong-background-hover);--ds-interaction-pressed:var(--color-interaction-on-strong-background-pressed);--ds-interaction-active:var(--color-interaction-on-strong-background-active);--ds-focus-ring-color:var(--color-interaction-on-strong-background-focus)}.ds-interaction-fill--on-translucent.sc-ds-checkbox-h,.ds-interaction-fill--on-translucent.sc-ds-checkbox{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-checkbox-h,.ds-interaction-fill--on-inverted.sc-ds-checkbox{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-checkbox-h,.ds-interaction-fill--on-media.sc-ds-checkbox{--ds-interaction-hover:var(--color-media-interaction-hover);--ds-interaction-pressed:var(--color-media-interaction-pressed);--ds-interaction-active:var(--color-media-interaction-active);--ds-focus-ring-color:var(--color-media-interaction-focus)}.ds-interaction-fill--on-always-dark.sc-ds-checkbox-h,.ds-interaction-fill--on-always-dark.sc-ds-checkbox{--ds-interaction-hover:var(--color-always-dark-interaction-hover);--ds-interaction-pressed:var(--color-always-dark-interaction-pressed);--ds-interaction-active:var(--color-always-dark-interaction-active);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-checkbox-h,.ds-interaction-fill--on-navigation.sc-ds-checkbox{--ds-interaction-hover:var(--color-navigation-interaction-hover);--ds-interaction-pressed:var(--color-navigation-interaction-pressed);--ds-interaction-active:var(--color-navigation-interaction-active);--ds-focus-ring-color:var(--color-navigation-interaction-focus)}.sc-ds-checkbox-h{display:inline-flex;align-items:center;box-sizing:border-box;gap:var(--ds-control-gap);height:var(--ds-control-height);padding:0 var(--ds-control-padding-inline);border-radius:var(--ds-control-radius);cursor:default;user-select:none}.checkbox--presentation.sc-ds-checkbox-h{width:var(--ds-control-icon);height:var(--ds-control-icon);padding:0;gap:0;pointer-events:none}.checkbox--lg.sc-ds-checkbox-h{--_checkbox-box:var(--dimension-iconography-md);--_checkbox-stroke:var(--dimension-stroke-width-018)}.checkbox--md.sc-ds-checkbox-h{--_checkbox-box:var(--dimension-iconography-sm);--_checkbox-stroke:var(--dimension-stroke-width-015)}.checkbox--sm.sc-ds-checkbox-h{--_checkbox-box:var(--dimension-iconography-xs);--_checkbox-stroke:var(--dimension-stroke-width-012)}.checkbox--xs.sc-ds-checkbox-h{--_checkbox-box:var(--dimension-size-100);--_checkbox-stroke:calc(var(--dimension-stroke-width-base) * 3 / 32)}.checkbox__placement.sc-ds-checkbox{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--ds-control-icon);height:var(--ds-control-icon)}.box.sc-ds-checkbox{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;width:var(--_checkbox-box);height:var(--_checkbox-box);border:0;border-radius:var(--dimension-radius-025);box-shadow:inset 0 0 0 var(--_checkbox-stroke) var(--color-foreground-tertiary);transition:background-color var(--effect-motion-short-2), box-shadow var(--effect-motion-short-2)}.box--marked.sc-ds-checkbox{color:var(--color-foreground-on-bold-background-primary);background-color:var(--color-background-bold-brand);box-shadow:none}.checkbox__mark.sc-ds-checkbox{width:100%;height:100%;flex-shrink:0;stroke:currentColor;stroke-width:var(--_checkbox-stroke);stroke-linecap:butt;stroke-linejoin:round}.checkbox__mark--checked.sc-ds-checkbox{transform:translateY(-0.5px)}.checkbox__label.sc-ds-checkbox{flex:1;min-width:0;padding:0 var(--ds-control-label-inset)}`;let h=0;const b=o(class o extends s{constructor(o){super();if(o!==false){this.__registerHost()}this.dsChange=e(this,"dsChange");this.internals=this.attachInternals();this.labelId=`ds-checkbox-label-${++h}`;this.checked=false;this.size="md";this.value="on";this.disabled=false;this.required=false;this.requiredMessage=r;this.indeterminate=false;this.isInactive=false;this.presentation=false;this.initialChecked=false;this.initialIndeterminate=false;this.formDisabled=false;this.handleActivate=()=>{if(this.isInactive||this.disabled||this.formDisabled||this.presentation)return;if(this.indeterminate)this.indeterminate=false;this.checked=!this.checked;this.dsChange.emit(this.checked)};this.handleKeyDown=o=>{if(o.key==="Enter"||o.key===" "){o.preventDefault();this.handleActivate()}}}componentWillLoad(){this.initialChecked=this.checked;this.initialIndeterminate=this.indeterminate;this.syncFormValue()}syncFormValue(){const o=this.isInactive||this.disabled||this.formDisabled||this.presentation;this.internals.setFormValue(!o&&this.checked?this.value:null);const s=this.required&&!o&&!this.checked;d(this.internals,s,this.requiredMessage)}formDisabledCallback(o){this.formDisabled=o;this.syncFormValue()}formResetCallback(){this.checked=this.initialChecked;this.indeterminate=this.initialIndeterminate}render(){const o=this.isInactive||this.disabled||this.formDisabled;const s=this.checked||this.indeterminate;const e=this.required&&!o&&!this.checked;return i(c,{key:"65bded534a9a6a7642191f01c5256a28400dd79d",role:this.presentation?undefined:"checkbox","aria-checked":this.presentation?undefined:this.indeterminate?"mixed":String(this.checked),"aria-disabled":!this.presentation&&o?"true":undefined,"aria-required":!this.presentation&&this.required?"true":undefined,"aria-invalid":!this.presentation&&e?"true":undefined,"aria-labelledby":this.presentation?undefined:this.labelId,"aria-hidden":this.presentation?"true":undefined,tabIndex:this.presentation||o?-1:0,class:{checkbox:true,"checkbox--presentation":this.presentation,[`checkbox--${this.size}`]:true,[`ds-control--${this.size}`]:true,"ds-control-inactive":o&&!this.presentation,"ds-focus-ring-inset":!this.presentation,"ds-interaction-fill":!o&&!this.presentation},onClick:this.presentation?undefined:this.handleActivate,onKeyDown:this.presentation?undefined:this.handleKeyDown},i("span",{key:"9bc51308774b3a5c2889c7a4485aced53f14511a",class:"checkbox__placement ds-interaction-fill__content","aria-hidden":"true"},i("span",{key:"ee4a23fcf9cf1ff2e6ac1918f205eb71b4871cf6",class:{box:true,"box--marked":s}},s&&i("svg",{key:"84fa69e3c42dd6320f52c599d29caf729bd5d1cc",class:{checkbox__mark:true,"checkbox__mark--checked":!this.indeterminate},viewBox:"0 0 16 16",fill:"none",focusable:"false"},i("path",{key:"e5eea9bd3d14a14968571fe6d917dbaa473bdb3a",d:this.indeterminate?"M4 8H12":"M3.5 8.25L6.75 11.5L12.5 4.75","vector-effect":"non-scaling-stroke"})))),!this.presentation&&i("ds-text",{key:"de35f7c434a6a2c3d704071292dbd6594ef96dbf",class:"checkbox__label ds-interaction-fill__content",as:"span",variant:a[this.size],textId:this.labelId},this.label))}static get formAssociated(){return true}static get watchers(){return{checked:[{syncFormValue:0}],value:[{syncFormValue:0}],disabled:[{syncFormValue:0}],isInactive:[{syncFormValue:0}],required:[{syncFormValue:0}],presentation:[{syncFormValue:0}]}}static get style(){return l()}},[66,"ds-checkbox",{label:[1],checked:[1028],size:[1],name:[513],value:[1],disabled:[516],required:[516],requiredMessage:[1,"required-message"],indeterminate:[1028],isInactive:[4,"is-inactive"],presentation:[4],formDisabled:[32]},undefined,{checked:[{syncFormValue:0}],value:[{syncFormValue:0}],disabled:[{syncFormValue:0}],isInactive:[{syncFormValue:0}],required:[{syncFormValue:0}],presentation:[{syncFormValue:0}]}]);function f(){if(typeof customElements==="undefined"){return}const o=["ds-checkbox","ds-text"];o.forEach((o=>{switch(o){case"ds-checkbox":if(!customElements.get(n(o))){customElements.define(n(o),b)}break;case"ds-text":if(!customElements.get(n(o))){t()}break}}))}f();export{b as C,f as d};
2
- //# sourceMappingURL=p-XMZCaXs7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["checkboxCss","idCounter","Checkbox","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","labelId","checked","size","value","disabled","required","requiredMessage","DEFAULT_REQUIRED_MESSAGE","indeterminate","isInactive","presentation","initialChecked","initialIndeterminate","formDisabled","handleActivate","dsChange","emit","handleKeyDown","e","key","preventDefault","componentWillLoad","syncFormValue","inactive","internals","setFormValue","missing","setRequiredValidity","formDisabledCallback","formResetCallback","render","isMarked","invalid","h","Host","role","undefined","String","tabIndex","class","checkbox","onClick","onKeyDown","box","checkbox__mark","viewBox","fill","focusable","d","as","variant","CONTROL_TEXT_VARIANT","textId","label"],"sources":["src/wc/components/Checkbox/Checkbox.css?tag=ds-checkbox&encapsulation=scoped","src/wc/components/Checkbox/Checkbox.tsx"],"sourcesContent":["@import '../../utils/control-inactive.css';\n@import '../../utils/control-density.css';\n@import '../../utils/focus-ring.css';\n@import '../../utils/interaction-fill.css';\n\n:host {\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n gap: var(--ds-control-gap);\n height: var(--ds-control-height);\n padding: 0 var(--ds-control-padding-inline);\n border-radius: var(--ds-control-radius);\n cursor: default;\n user-select: none;\n}\n\n:host(.checkbox--presentation) {\n width: var(--ds-control-icon);\n height: var(--ds-control-icon);\n padding: 0;\n gap: 0;\n pointer-events: none;\n}\n\n/* Inactive: `.ds-control-inactive` (50% opacity). */\n\n:host(.checkbox--lg) {\n --_checkbox-box: var(--dimension-iconography-md);\n --_checkbox-stroke: var(--dimension-stroke-width-018);\n}\n\n:host(.checkbox--md) {\n --_checkbox-box: var(--dimension-iconography-sm);\n --_checkbox-stroke: var(--dimension-stroke-width-015);\n}\n\n:host(.checkbox--sm) {\n --_checkbox-box: var(--dimension-iconography-xs);\n --_checkbox-stroke: var(--dimension-stroke-width-012);\n}\n\n:host(.checkbox--xs) {\n --_checkbox-box: var(--dimension-size-100);\n --_checkbox-stroke: calc(var(--dimension-stroke-width-base) * 3 / 32);\n}\n\n.checkbox__placement {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--ds-control-icon);\n height: var(--ds-control-icon);\n}\n\n.box {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: var(--_checkbox-box);\n height: var(--_checkbox-box);\n border: 0;\n border-radius: var(--dimension-radius-025);\n box-shadow: inset 0 0 0 var(--_checkbox-stroke) var(--color-foreground-tertiary);\n transition:\n background-color var(--effect-motion-short-2),\n box-shadow var(--effect-motion-short-2);\n}\n\n.box--marked {\n color: var(--color-foreground-on-bold-background-primary);\n background-color: var(--color-background-bold-brand);\n box-shadow: none;\n}\n\n.checkbox__mark {\n width: 100%;\n height: 100%;\n flex-shrink: 0;\n stroke: currentColor;\n stroke-width: var(--_checkbox-stroke);\n stroke-linecap: butt;\n stroke-linejoin: round;\n}\n\n.checkbox__mark--checked {\n transform: translateY(-0.5px);\n}\n\n.checkbox__label {\n flex: 1;\n min-width: 0;\n padding: 0 var(--ds-control-label-inset);\n}\n","import { AttachInternals, Component, Prop, State, Event, EventEmitter, Watch, h, Host } from '@stencil/core';\nimport { CONTROL_TEXT_VARIANT, DEFAULT_REQUIRED_MESSAGE, setRequiredValidity } from '../../utils';\n\nexport type CheckboxSize = 'lg' | 'md' | 'sm' | 'xs';\n\nlet idCounter = 0;\n\n@Component({\n tag: 'ds-checkbox',\n styleUrl: 'Checkbox.css',\n scoped: true,\n formAssociated: true,\n})\nexport class Checkbox {\n @AttachInternals() internals!: ElementInternals;\n private labelId = `ds-checkbox-label-${++idCounter}`;\n\n /** Visible label and accessible name. Omitted only in presentation mode. */\n @Prop() label!: string;\n /** Current checked state. */\n @Prop({ mutable: true }) checked: boolean = false;\n /** Visual and placement density. */\n @Prop() size: CheckboxSize = 'md';\n /** Native form field name. */\n @Prop({ reflect: true }) name: string | undefined;\n /** Submitted value when checked. */\n @Prop() value: string = 'on';\n /** Native disabled state. */\n @Prop({ reflect: true }) disabled: boolean = false;\n /** Require the checkbox to be checked for form validity. */\n @Prop({ reflect: true }) required: boolean = false;\n /** Validation message used when a required checkbox is unchecked. */\n @Prop() requiredMessage: string = DEFAULT_REQUIRED_MESSAGE;\n /** Mixed visual state. Activation clears it before toggling checked. */\n @Prop({ mutable: true }) indeterminate: boolean = false;\n /** Design-system inactive state. */\n @Prop() isInactive: boolean = false;\n /** Visual-only indicator for a composite control that owns selection semantics. */\n @Prop() presentation: boolean = false;\n\n /** Emitted after user activation with the new checked state. */\n @Event() dsChange!: EventEmitter<boolean>;\n\n private initialChecked = false;\n private initialIndeterminate = false;\n @State() private formDisabled = false;\n\n componentWillLoad() {\n this.initialChecked = this.checked;\n this.initialIndeterminate = this.indeterminate;\n this.syncFormValue();\n }\n\n @Watch('checked')\n @Watch('value')\n @Watch('disabled')\n @Watch('isInactive')\n @Watch('required')\n @Watch('presentation')\n syncFormValue() {\n const inactive = this.isInactive || this.disabled || this.formDisabled || this.presentation;\n this.internals.setFormValue(!inactive && this.checked ? this.value : null);\n const missing = this.required && !inactive && !this.checked;\n setRequiredValidity(this.internals, missing, this.requiredMessage);\n }\n\n formDisabledCallback(disabled: boolean) {\n this.formDisabled = disabled;\n this.syncFormValue();\n }\n\n formResetCallback() {\n this.checked = this.initialChecked;\n this.indeterminate = this.initialIndeterminate;\n }\n\n private handleActivate = () => {\n if (this.isInactive || this.disabled || this.formDisabled || this.presentation) return;\n if (this.indeterminate) this.indeterminate = false;\n this.checked = !this.checked;\n this.dsChange.emit(this.checked);\n };\n\n private handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this.handleActivate();\n }\n };\n\n render() {\n const inactive = this.isInactive || this.disabled || this.formDisabled;\n const isMarked = this.checked || this.indeterminate;\n const invalid = this.required && !inactive && !this.checked;\n\n return (\n <Host\n role={this.presentation ? undefined : 'checkbox'}\n aria-checked={this.presentation ? undefined : this.indeterminate ? 'mixed' : String(this.checked)}\n aria-disabled={!this.presentation && inactive ? 'true' : undefined}\n aria-required={!this.presentation && this.required ? 'true' : undefined}\n aria-invalid={!this.presentation && invalid ? 'true' : undefined}\n aria-labelledby={this.presentation ? undefined : this.labelId}\n aria-hidden={this.presentation ? 'true' : undefined}\n tabIndex={this.presentation || inactive ? -1 : 0}\n class={{\n checkbox: true,\n 'checkbox--presentation': this.presentation,\n [`checkbox--${this.size}`]: true,\n [`ds-control--${this.size}`]: true,\n 'ds-control-inactive': inactive && !this.presentation,\n 'ds-focus-ring-inset': !this.presentation,\n 'ds-interaction-fill': !inactive && !this.presentation,\n }}\n onClick={this.presentation ? undefined : this.handleActivate}\n onKeyDown={this.presentation ? undefined : this.handleKeyDown}\n >\n <span class=\"checkbox__placement ds-interaction-fill__content\" aria-hidden=\"true\">\n <span class={{ box: true, 'box--marked': isMarked }}>\n {isMarked && (\n // eslint-disable-next-line local/prefer-ds-icon -- Checkbox owns this density-specific state mark and its optical stroke.\n <svg\n class={{\n checkbox__mark: true,\n 'checkbox__mark--checked': !this.indeterminate,\n }}\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n focusable=\"false\"\n >\n <path\n d={this.indeterminate ? 'M4 8H12' : 'M3.5 8.25L6.75 11.5L12.5 4.75'}\n vector-effect=\"non-scaling-stroke\"\n />\n </svg>\n )}\n </span>\n </span>\n {!this.presentation && (\n <ds-text\n class=\"checkbox__label ds-interaction-fill__content\"\n as=\"span\"\n variant={CONTROL_TEXT_VARIANT[this.size]}\n textId={this.labelId}\n >\n {this.label}\n </ds-text>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{p as e,H as s,h as r,a as o,t as a}from"./index.js";import{d}from"./p-CIiBpjCn.js";import{d as n}from"./p-8GK7B7K4.js";import{d as t}from"./p-DRnIuCiT.js";import{d as i}from"./p-BAfG3M8z.js";import{d as c}from"./p-Ca-I2UnB.js";import{d as h}from"./p-Cr3tEx7o.js";import{d as m}from"./p-YR1XeuZf.js";const l=()=>`.sc-ds-markdown:where(.ds-prose){display:block;box-sizing:border-box;max-inline-size:100%;min-inline-size:0;color:inherit;overflow-wrap:anywhere}.sc-ds-markdown:where(.ds-prose) :where(p,ul.sc-ds-markdown,ol.sc-ds-markdown,dl.sc-ds-markdown,blockquote.sc-ds-markdown,figure.sc-ds-markdown,figcaption.sc-ds-markdown,table).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin:0;color:inherit;font-family:var(--typography-font-family);font-size:var(--typography-fontsize-md);font-weight:var(--typography-weight-regular);line-height:var(--typography-lineheight-md);letter-spacing:var(--typography-letterspacing-negative-half)}.sc-ds-markdown:where(.ds-prose) :where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin:0;color:var(--color-foreground-primary);font-family:var(--typography-font-family);font-weight:var(--typography-weight-semibold)}.sc-ds-markdown:where(.ds-prose) :where(h1,h2).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-size:var(--typography-fontsize-xl);line-height:var(--typography-lineheight-xl);letter-spacing:var(--typography-letterspacing-negative-double)}.sc-ds-markdown:where(.ds-prose) :where(h3,h4).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-size:var(--typography-fontsize-lg);line-height:var(--typography-lineheight-lg);letter-spacing:var(--typography-letterspacing-negative)}.sc-ds-markdown:where(.ds-prose) :where(h5,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-size:var(--typography-fontsize-md);line-height:var(--typography-lineheight-md);letter-spacing:var(--typography-letterspacing-negative)}.sc-ds-markdown:where(.ds-prose)>.sc-ds-markdown:where(*+*){margin-block-start:var(--dimension-space-150)}.sc-ds-markdown:where(.ds-prose)>:where(*)+:where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-200)}.sc-ds-markdown:where(.ds-prose)>:where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown+.sc-ds-markdown:where(*){margin-block-start:var(--dimension-space-100)}.sc-ds-markdown:where(.ds-prose) :where(blockquote,li.sc-ds-markdown,dd)>.sc-ds-markdown:where(*+*):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(li+li.sc-ds-markdown,dt+dd).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(ul,ol).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding-inline-start:var(--dimension-space-300)}.sc-ds-markdown:where(.ds-prose) :where(li>ul.sc-ds-markdown,li>ol).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(li>input[type='checkbox']):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-inline-end:var(--dimension-space-050)}.sc-ds-markdown:where(.ds-prose) :where(blockquote):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding-inline-start:var(--dimension-space-150);border-inline-start:var(--dimension-stroke-width-025) solid var(--color-border-secondary);color:var(--color-foreground-secondary)}.sc-ds-markdown:where(.ds-prose) :where(strong,b).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-weight:var(--typography-weight-medium)}.sc-ds-markdown:where(.ds-prose) :where(h1,h2.sc-ds-markdown,h3.sc-ds-markdown,h4.sc-ds-markdown,h5.sc-ds-markdown,h6) .sc-ds-markdown:where(strong,b).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{font-weight:inherit}.sc-ds-markdown:where(.ds-prose) :where(a):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{color:var(--color-foreground-brand);text-decoration:underline;text-decoration-color:var(--color-foreground-tertiary)}.sc-ds-markdown:where(.ds-prose) :where(code):not(:where(pre code.sc-ds-markdown,[data-ds-prose='off'].sc-ds-markdown,[data-ds-prose='off'] *)).sc-ds-markdown{padding:var(--dimension-space-012) var(--dimension-space-025);border-radius:var(--dimension-radius-025);background:var(--color-background-secondary);font-family:var(--typography-fontfamily-mono);font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none)}.sc-ds-markdown:where(.ds-prose) :where(pre):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{box-sizing:border-box;max-inline-size:100%;min-inline-size:0;margin:0;padding:var(--dimension-space-150);overflow:auto;border-radius:var(--dimension-radius-050);background:var(--color-background-strong-neutral);color:var(--color-foreground-faint-neutral);font-family:var(--typography-fontfamily-mono);font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none);tab-size:2}.sc-ds-markdown:where(.ds-prose) :where(pre code):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding:0;background:transparent;color:inherit;font:inherit;letter-spacing:inherit;white-space:pre}.sc-ds-markdown:where(.ds-prose) :where(hr):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin:0;border:0;border-block-start:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.sc-ds-markdown:where(.ds-prose__table-scroll){box-sizing:border-box;max-inline-size:100%;min-inline-size:0;overflow-x:auto}.sc-ds-markdown:where(.ds-prose) :where(table):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{inline-size:100%;border-collapse:collapse}.sc-ds-markdown:where(.ds-prose) :where(th,td).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{padding:var(--dimension-space-075);border:var(--dimension-stroke-width-012) solid var(--color-border-tertiary);text-align:start;vertical-align:top;overflow-wrap:anywhere}.sc-ds-markdown:where(.ds-prose) :where(th):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{color:var(--color-foreground-primary);font-weight:var(--typography-weight-medium)}.sc-ds-markdown:where(.ds-prose) :where(img,video.sc-ds-markdown,svg).sc-ds-markdown:not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{max-inline-size:100%;block-size:auto}.sc-ds-markdown:where(.ds-prose) :where(figcaption):not(:where([data-ds-prose='off'],[data-ds-prose='off'] *)).sc-ds-markdown{margin-block-start:var(--dimension-space-050);color:var(--color-foreground-secondary);font-size:var(--typography-fontsize-sm);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none)}.sc-ds-markdown-h{display:block;min-width:0;color:inherit;box-sizing:border-box;-webkit-user-select:text;user-select:text}`;let w;function p(){w??(w=Promise.all([import("./p-BjtXYFhw.js"),import("./p-DVsje4AY.js"),import("./p-gidVv1FX.js")]).then((([e,s,r])=>({fromMarkdown:e.fromMarkdown,gfmFromMarkdown:s.gfmFromMarkdown,gfm:r.gfm}))));return w}function f(e){if(!e)return undefined;try{const s=new URL(e,document.baseURI);if(!["http:","https:","mailto:"].includes(s.protocol))return undefined;return s.href}catch{return undefined}}const k=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.content="";this.streaming=false;this.tree=null;this.parseRevision=0}componentWillLoad(){if(typeof document!=="undefined")return this.parse()}disconnectedCallback(){this.parseRevision+=1;if(this.parseFrame&&typeof cancelAnimationFrame==="function"){cancelAnimationFrame(this.parseFrame)}}scheduleParse(){if(typeof requestAnimationFrame!=="function")return;if(this.parseFrame)cancelAnimationFrame(this.parseFrame);this.parseFrame=requestAnimationFrame((()=>{this.parseFrame=undefined;void this.parse()}))}async parse(){const e=++this.parseRevision;try{const{fromMarkdown:s,gfmFromMarkdown:r,gfm:o}=await p();const a=s(this.content,{extensions:[o()],mdastExtensions:[r()]});if(e===this.parseRevision)this.tree=a}catch{if(e===this.parseRevision)this.tree=null}}children(e){if(!("children"in e))return[];return e.children.map((e=>this.renderNode(e)))}renderNode(e){switch(e.type){case"root":return this.children(e);case"text":return r("span",{class:"markdown__text"},e.value);case"paragraph":return r("p",{class:"markdown__paragraph"},this.children(e));case"heading":{const s=`h${e.depth}`;return r(s,{class:"markdown__heading"},this.children(e))}case"strong":return r("strong",{class:"markdown__strong"},this.children(e));case"emphasis":return r("em",{class:"markdown__emphasis"},this.children(e));case"delete":return r("del",{class:"markdown__delete"},this.children(e));case"blockquote":return r("blockquote",{class:"markdown__blockquote"},this.children(e));case"break":return r("br",{class:"markdown__break"});case"thematicBreak":return r("hr",{class:"markdown__thematic-break"});case"inlineCode":return r("code",{class:"markdown__inline-code"},e.value);case"code":return r("ds-code-block",{class:"markdown__code-block","data-ds-prose":"off",code:e.value,language:e.lang??"",filename:e.meta??""});case"link":{const s=f(e.url);return s?r("a",{class:"markdown__link",href:s,target:"_blank",rel:"noopener noreferrer"},this.children(e)):this.children(e)}case"list":{const s=e.ordered?"ol":"ul";return r(s,{class:"markdown__list",start:e.ordered&&e.start?e.start:undefined},this.children(e))}case"listItem":return r("li",{class:"markdown__list-item"},typeof e.checked==="boolean"?r("input",{class:"markdown__task-indicator",type:"checkbox",checked:e.checked,disabled:true,"aria-hidden":"true",tabIndex:-1}):null,this.children(e));case"table":{const[s,...o]=e.children;return r("div",{class:"markdown__table-wrap ds-prose__table-scroll",tabIndex:0},r("table",{class:"markdown__table"},s?r("thead",{class:"markdown__table-head"},r("tr",{class:"markdown__table-row"},s.children.map((e=>r("th",{class:"markdown__table-heading",scope:"col"},this.children(e)))))):null,r("tbody",{class:"markdown__table-body"},o.map((e=>this.renderNode(e))))))}case"tableRow":return r("tr",{class:"markdown__table-row"},this.children(e));case"tableCell":return r("td",{class:"markdown__table-cell"},this.children(e));case"image":{const s=f(e.url);return s?r("a",{class:"markdown__image-link",href:s,target:"_blank",rel:"noopener noreferrer"},e.alt||"View image"):e.alt||null}case"html":case"definition":case"footnoteDefinition":return null;case"footnoteReference":return r("sup",{class:"markdown__footnote"},e.label);default:return this.children(e)}}render(){return r(o,{key:"6e1dcf3dabb1e3d3fbc94f21db2d6d92b66acc07","aria-busy":this.streaming?"true":undefined},r("div",{key:"f1989e791dea0551202dc8d8f1faaa917093cb39",class:"markdown ds-prose"},this.tree?this.renderNode(this.tree):r("p",{class:"markdown__paragraph"},r("span",{class:"markdown__text"},this.content))))}static get watchers(){return{content:[{scheduleParse:0}]}}static get style(){return l()}},[2,"ds-markdown",{content:[1],streaming:[4],tree:[32]},undefined,{content:[{scheduleParse:0}]}]);function g(){if(typeof customElements==="undefined"){return}const e=["ds-markdown","ds-badge","ds-button-unfilled","ds-code-block","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-markdown":if(!customElements.get(a(e))){customElements.define(a(e),k)}break;case"ds-badge":if(!customElements.get(a(e))){d()}break;case"ds-button-unfilled":if(!customElements.get(a(e))){n()}break;case"ds-code-block":if(!customElements.get(a(e))){t()}break;case"ds-icon":if(!customElements.get(a(e))){i()}break;case"ds-loader":if(!customElements.get(a(e))){c()}break;case"ds-text":if(!customElements.get(a(e))){h()}break;case"ds-tooltip":if(!customElements.get(a(e))){m()}break}}))}g();export{k as M,g as d};
2
- //# sourceMappingURL=p-dyUp3Adm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["markdownCss","parserPromise","loadParser","Promise","all","import","then","fromMarkdownModule","gfmFromMarkdownModule","gfmModule","fromMarkdown","gfmFromMarkdown","gfm","safeHref","value","undefined","url","URL","document","baseURI","includes","protocol","href","Markdown","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","content","streaming","tree","parseRevision","componentWillLoad","parse","disconnectedCallback","parseFrame","cancelAnimationFrame","scheduleParse","requestAnimationFrame","revision","extensions","mdastExtensions","children","node","map","child","renderNode","type","h","class","Tag","depth","code","language","lang","filename","meta","target","rel","ordered","start","checked","disabled","tabIndex","heading","rows","cell","scope","row","alt","label","render","Host","key"],"sources":["src/wc/components/Markdown/Markdown.css?tag=ds-markdown&encapsulation=scoped","src/wc/components/Markdown/Markdown.tsx"],"sourcesContent":["@import '../../styles/prose.css';\n\n:host {\n display: block;\n min-width: 0;\n color: inherit;\n box-sizing: border-box;\n -webkit-user-select: text;\n user-select: text;\n}\n","import { Component, h, Host, Prop, State, VNode, Watch } from '@stencil/core';\nimport type { Nodes, Root } from 'mdast';\n\ntype MarkdownRender = VNode | string | null | MarkdownRender[];\ntype MarkdownParser = {\n fromMarkdown: typeof import('mdast-util-from-markdown').fromMarkdown;\n gfmFromMarkdown: typeof import('mdast-util-gfm').gfmFromMarkdown;\n gfm: typeof import('micromark-extension-gfm').gfm;\n};\n\nlet parserPromise: Promise<MarkdownParser> | undefined;\n\nfunction loadParser(): Promise<MarkdownParser> {\n parserPromise ??= Promise.all([\n import('mdast-util-from-markdown'),\n import('mdast-util-gfm'),\n import('micromark-extension-gfm'),\n ]).then(([fromMarkdownModule, gfmFromMarkdownModule, gfmModule]) => ({\n fromMarkdown: fromMarkdownModule.fromMarkdown,\n gfmFromMarkdown: gfmFromMarkdownModule.gfmFromMarkdown,\n gfm: gfmModule.gfm,\n }));\n return parserPromise;\n}\n\nfunction safeHref(value: string | null | undefined): string | undefined {\n if (!value) return undefined;\n try {\n const url = new URL(value, document.baseURI);\n if (!['http:', 'https:', 'mailto:'].includes(url.protocol)) return undefined;\n return url.href;\n } catch {\n return undefined;\n }\n}\n\n@Component({\n tag: 'ds-markdown',\n styleUrl: 'Markdown.css',\n scoped: true,\n})\nexport class Markdown {\n @Prop() content: string = '';\n @Prop() streaming: boolean = false;\n\n @State() private tree: Root | null = null;\n private parseFrame?: number;\n private parseRevision = 0;\n\n componentWillLoad() {\n // The browser-targeted named-character decoder used by the Markdown parser\n // creates a DOM element when its module is evaluated. Keep public package\n // imports server-safe by loading that parser only in a browser context.\n if (typeof document !== 'undefined') return this.parse();\n }\n\n disconnectedCallback() {\n this.parseRevision += 1;\n if (this.parseFrame && typeof cancelAnimationFrame === 'function') {\n cancelAnimationFrame(this.parseFrame);\n }\n }\n\n @Watch('content')\n scheduleParse() {\n if (typeof requestAnimationFrame !== 'function') return;\n if (this.parseFrame) cancelAnimationFrame(this.parseFrame);\n this.parseFrame = requestAnimationFrame(() => {\n this.parseFrame = undefined;\n void this.parse();\n });\n }\n\n private async parse() {\n const revision = ++this.parseRevision;\n try {\n const { fromMarkdown, gfmFromMarkdown, gfm } = await loadParser();\n const tree = fromMarkdown(this.content, {\n extensions: [gfm()],\n mdastExtensions: [gfmFromMarkdown()],\n });\n if (revision === this.parseRevision) this.tree = tree;\n } catch {\n if (revision === this.parseRevision) this.tree = null;\n }\n }\n\n private children(node: Nodes): MarkdownRender[] {\n if (!('children' in node)) return [];\n return node.children.map(child => this.renderNode(child));\n }\n\n private renderNode(node: Nodes): MarkdownRender {\n switch (node.type) {\n case 'root':\n return this.children(node);\n case 'text':\n // Keep prose text on an element boundary. Besides giving streaming updates a\n // stable render target, this avoids axe-core treating a bare Stencil text\n // vnode as an element while it generates a contrast-result selector.\n return <span class=\"markdown__text\">{node.value}</span>;\n case 'paragraph':\n return <p class=\"markdown__paragraph\">{this.children(node)}</p>;\n case 'heading': {\n const Tag = `h${node.depth}`;\n return <Tag class=\"markdown__heading\">{this.children(node)}</Tag>;\n }\n case 'strong':\n return <strong class=\"markdown__strong\">{this.children(node)}</strong>;\n case 'emphasis':\n return <em class=\"markdown__emphasis\">{this.children(node)}</em>;\n case 'delete':\n return <del class=\"markdown__delete\">{this.children(node)}</del>;\n case 'blockquote':\n return <blockquote class=\"markdown__blockquote\">{this.children(node)}</blockquote>;\n case 'break':\n return <br class=\"markdown__break\" />;\n case 'thematicBreak':\n return <hr class=\"markdown__thematic-break\" />;\n case 'inlineCode':\n return <code class=\"markdown__inline-code\">{node.value}</code>;\n case 'code':\n return (\n <ds-code-block\n class=\"markdown__code-block\"\n data-ds-prose=\"off\"\n code={node.value}\n language={node.lang ?? ''}\n filename={node.meta ?? ''}\n />\n );\n case 'link': {\n const href = safeHref(node.url);\n return href ? (\n <a class=\"markdown__link\" href={href} target=\"_blank\" rel=\"noopener noreferrer\">\n {this.children(node)}\n </a>\n ) : (\n this.children(node)\n );\n }\n case 'list': {\n const Tag = node.ordered ? 'ol' : 'ul';\n return (\n <Tag class=\"markdown__list\" start={node.ordered && node.start ? node.start : undefined}>\n {this.children(node)}\n </Tag>\n );\n }\n case 'listItem':\n return (\n <li class=\"markdown__list-item\">\n {typeof node.checked === 'boolean' ? (\n <input\n class=\"markdown__task-indicator\"\n type=\"checkbox\"\n checked={node.checked}\n disabled\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n ) : null}\n {this.children(node)}\n </li>\n );\n case 'table': {\n const [heading, ...rows] = node.children;\n return (\n <div class=\"markdown__table-wrap ds-prose__table-scroll\" tabIndex={0}>\n <table class=\"markdown__table\">\n {heading ? (\n <thead class=\"markdown__table-head\">\n <tr class=\"markdown__table-row\">\n {heading.children.map(cell => (\n <th class=\"markdown__table-heading\" scope=\"col\">\n {this.children(cell)}\n </th>\n ))}\n </tr>\n </thead>\n ) : null}\n <tbody class=\"markdown__table-body\">{rows.map(row => this.renderNode(row))}</tbody>\n </table>\n </div>\n );\n }\n case 'tableRow':\n return <tr class=\"markdown__table-row\">{this.children(node)}</tr>;\n case 'tableCell':\n return <td class=\"markdown__table-cell\">{this.children(node)}</td>;\n case 'image': {\n const href = safeHref(node.url);\n return href ? (\n <a class=\"markdown__image-link\" href={href} target=\"_blank\" rel=\"noopener noreferrer\">\n {node.alt || 'View image'}\n </a>\n ) : (\n node.alt || null\n );\n }\n case 'html':\n case 'definition':\n case 'footnoteDefinition':\n return null;\n case 'footnoteReference':\n return <sup class=\"markdown__footnote\">{node.label}</sup>;\n default:\n return this.children(node);\n }\n }\n\n render() {\n return (\n <Host aria-busy={this.streaming ? 'true' : undefined}>\n <div class=\"markdown ds-prose\">\n {this.tree ? (\n this.renderNode(this.tree)\n ) : (\n <p class=\"markdown__paragraph\">\n <span class=\"markdown__text\">{this.content}</span>\n </p>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{p as e,H as s,c as i,h as a,a as d,t as o}from"./index.js";import{g as r}from"./p-BQq26pt9.js";import{d as t}from"./p-CIiBpjCn.js";import{d as n}from"./p-CGVXbXv9.js";import{d as c}from"./p-CCzG5xDD.js";import{d as h}from"./p-DCvA3Dc9.js";import{d as m}from"./p-Re2kPrXm.js";import{d as l}from"./p-Cr3tEx7o.js";const b=()=>`.ds-chrome-space--sm.sc-ds-mobile-header-h,.ds-chrome-space--sm.sc-ds-mobile-header{--ds-chrome-padding:var(--dimension-space-050);--ds-chrome-gap:var(--dimension-space-050)}.ds-chrome-space--md.sc-ds-mobile-header-h,.ds-chrome-space--md.sc-ds-mobile-header{--ds-chrome-padding:var(--dimension-space-100);--ds-chrome-gap:var(--dimension-space-100)}.ds-chrome-space--lg.sc-ds-mobile-header-h,.ds-chrome-space--lg.sc-ds-mobile-header{--ds-chrome-padding:var(--dimension-space-200);--ds-chrome-gap:var(--dimension-space-200)}.ds-chrome-row.sc-ds-mobile-header-h,.ds-chrome-row.sc-ds-mobile-header,.ds-chrome-column.sc-ds-mobile-header-h,.ds-chrome-column.sc-ds-mobile-header,.ds-chrome-grid.sc-ds-mobile-header-h,.ds-chrome-grid.sc-ds-mobile-header{display:flex;box-sizing:border-box;gap:var(--ds-chrome-gap, var(--dimension-space-100));padding:var(--ds-chrome-padding, var(--dimension-space-100))}.ds-chrome-row.sc-ds-mobile-header-h,.ds-chrome-row.sc-ds-mobile-header{flex-direction:row;align-items:center}.ds-chrome-column.sc-ds-mobile-header-h,.ds-chrome-column.sc-ds-mobile-header{flex-direction:column}.ds-chrome-grid.sc-ds-mobile-header-h,.ds-chrome-grid.sc-ds-mobile-header{display:grid;align-items:center}.sc-ds-mobile-header-h{display:block;min-width:0;box-sizing:border-box;background:var(--color-background-primary);color:var(--color-foreground-primary)}[tone='brand'].sc-ds-mobile-header-h{background:var(--color-background-bold-brand);color:var(--color-foreground-on-bold)}.mobile-header.sc-ds-mobile-header{position:relative;display:flex;flex-direction:column;width:100%;min-width:0;box-sizing:border-box;background:inherit;color:inherit}.mobile-header__primary.sc-ds-mobile-header{grid-template-columns:minmax(var(--dimension-size-400), 1fr) minmax(0, auto) minmax(var(--dimension-size-400), 1fr);width:100%;height:var(--dimension-size-600);min-width:0;background:inherit;color:inherit}.sc-ds-mobile-header-h:not([tone='brand']) .mobile-header.sc-ds-mobile-header::after{content:'';position:absolute;inset-inline:0;inset-block-end:0;height:var(--dimension-stroke-width-012);background:var(--color-border-tertiary);pointer-events:none}.mobile-header__subsections.sc-ds-mobile-header{display:flex;align-items:center;justify-content:center;min-width:0;height:var(--dimension-size-600);padding:var(--dimension-space-100) var(--dimension-space-200);box-sizing:border-box}.mobile-header__subsections.sc-ds-mobile-header ds-mobile-section-switcher.sc-ds-mobile-header{min-width:0;max-width:100%}.mobile-header__lane.sc-ds-mobile-header{display:flex;align-items:center;gap:var(--dimension-space-050);min-width:0}.mobile-header__lane--leading.sc-ds-mobile-header{justify-content:flex-start}.mobile-header__lane--trailing.sc-ds-mobile-header{justify-content:flex-end}.mobile-header__center.sc-ds-mobile-header{position:relative;min-width:0;max-width:100%;justify-self:center}.mobile-header__heading.sc-ds-mobile-header{display:block;min-width:0;max-width:100%;text-align:center}.mobile-header__semantic-heading.sc-ds-mobile-header{position:absolute;width:var(--dimension-stroke-width-012);height:var(--dimension-stroke-width-012);padding:0;margin:calc(var(--dimension-stroke-width-012) * -1);overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.sc-ds-mobile-header-s>[slot='leading'],.sc-ds-mobile-header-s>[slot='trailing']{flex:0 0 auto}`;const p=e(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.dsSectionChange=i(this,"dsSectionChange");this.dsSubsectionChange=i(this,"dsSubsectionChange");this.heading="";this.headingLevel="h1";this.sections=[];this.sectionsJson="";this.value="";this.sectionsAriaLabel="Change page section";this.subsections=[];this.subsectionsJson="";this.subvalue="";this.subsectionsAriaLabel="Change page subsection";this.tone="default";this.handleSectionChange=e=>{e.stopPropagation();this.dsSectionChange.emit(e.detail)};this.handleSubsectionChange=e=>{e.stopPropagation();this.dsSubsectionChange.emit(e.detail)}}parseSections(e,s){if(!s.trim())return e??[];try{const e=JSON.parse(s);return Array.isArray(e)?e:[]}catch{return[]}}get resolvedSections(){return this.parseSections(this.sections,this.sectionsJson)}get resolvedSubsections(){return this.parseSections(this.subsections,this.subsectionsJson)}get selectedLabel(){const e=r(this.resolvedSections);return e.find((e=>e.id===this.value))?.label??e[0]?.label??this.heading}render(){const e=this.headingLevel;const s=r(this.resolvedSections);const i=s.length>1;const o=r(this.resolvedSubsections).length>1;const t=this.tone==="brand"?"on-bold":"primary";return a(d,{key:"3a5bc4c056ac9ce7cb037d701d90f989aa3f0a48"},a("header",{key:"055e80af39073fd30c9e3188ece7c81513007727",class:"mobile-header"},a("div",{key:"896092422f21ae17ec964316ba81d92179e67e76",class:"mobile-header__primary ds-chrome-grid ds-chrome-space--md"},a("div",{key:"4d1acc9f5d05cd192a107f666da43192da29a51e",class:"mobile-header__lane mobile-header__lane--leading"},a("slot",{key:"3c8aa694eb5038de0630aa98da0135fa2f2488ec",name:"leading"})),a("div",{key:"a68e7f46d2f130cd62ba4bcc87b6c976fee07840",class:"mobile-header__center"},i?[a("span",{class:"mobile-header__semantic-heading",role:"heading","aria-level":this.headingLevel==="h1"?"1":"2"},this.selectedLabel),a("ds-mobile-section-switcher",{sections:this.resolvedSections,value:this.value,navigationLabel:this.sectionsAriaLabel,onDsChange:this.handleSectionChange})]:a("ds-text",{class:"mobile-header__heading",as:e,variant:"text-body-medium",emphasis:true,color:t,lineTruncation:1},this.selectedLabel)),a("div",{key:"f2145d0861c38b7b87106c6f74a2cd3f6acd101b",class:"mobile-header__lane mobile-header__lane--trailing"},a("slot",{key:"3780b94a26a1cf3fa2a831cb3b7832b4fd9bc484",name:"trailing"}))),o?a("nav",{class:"mobile-header__subsections","aria-label":this.subsectionsAriaLabel},a("ds-mobile-section-switcher",{sections:this.resolvedSubsections,value:this.subvalue,navigationLabel:this.subsectionsAriaLabel,onDsChange:this.handleSubsectionChange})):null))}static get style(){return b()}},[262,"ds-mobile-header",{heading:[1],headingLevel:[1,"heading-level"],sections:[16],sectionsJson:[1,"sections-json"],value:[1],sectionsAriaLabel:[1,"sections-aria-label"],subsections:[16],subsectionsJson:[1,"subsections-json"],subvalue:[1],subsectionsAriaLabel:[1,"subsections-aria-label"],tone:[513]}]);function g(){if(typeof customElements==="undefined"){return}const e=["ds-mobile-header","ds-badge","ds-menu","ds-mobile-section-switcher","ds-swatch-picker","ds-switch","ds-text"];e.forEach((e=>{switch(e){case"ds-mobile-header":if(!customElements.get(o(e))){customElements.define(o(e),p)}break;case"ds-badge":if(!customElements.get(o(e))){t()}break;case"ds-menu":if(!customElements.get(o(e))){n()}break;case"ds-mobile-section-switcher":if(!customElements.get(o(e))){c()}break;case"ds-swatch-picker":if(!customElements.get(o(e))){h()}break;case"ds-switch":if(!customElements.get(o(e))){m()}break;case"ds-text":if(!customElements.get(o(e))){l()}break}}))}g();export{p as M,g as d};
2
- //# sourceMappingURL=p-nkYN0Bub.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["mobileHeaderCss","MobileHeader","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","heading","headingLevel","sections","sectionsJson","value","sectionsAriaLabel","subsections","subsectionsJson","subvalue","subsectionsAriaLabel","tone","handleSectionChange","event","stopPropagation","dsSectionChange","emit","detail","handleSubsectionChange","dsSubsectionChange","parseSections","json","trim","parsed","JSON","parse","Array","isArray","resolvedSections","resolvedSubsections","selectedLabel","selectable","getSelectableTabs","find","section","id","label","render","Heading","hasSwitcher","length","hasSubsections","foreground","h","Host","key","class","name","role","navigationLabel","onDsChange","as","variant","emphasis","color","lineTruncation"],"sources":["src/wc/components/MobileHeader/MobileHeader.css?tag=ds-mobile-header&encapsulation=scoped","src/wc/components/MobileHeader/MobileHeader.tsx"],"sourcesContent":["@import '../../utils/chrome-layout.css';\n\n:host {\n display: block;\n min-width: 0;\n box-sizing: border-box;\n background: var(--color-background-primary);\n color: var(--color-foreground-primary);\n}\n\n:host([tone='brand']) {\n background: var(--color-background-bold-brand);\n color: var(--color-foreground-on-bold);\n}\n\n.mobile-header {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n background: inherit;\n color: inherit;\n}\n\n.mobile-header__primary {\n grid-template-columns: minmax(var(--dimension-size-400), 1fr) minmax(0, auto) minmax(var(--dimension-size-400), 1fr);\n width: 100%;\n height: var(--dimension-size-600);\n min-width: 0;\n background: inherit;\n color: inherit;\n}\n\n:host(:not([tone='brand'])) .mobile-header::after {\n content: '';\n position: absolute;\n inset-inline: 0;\n inset-block-end: 0;\n height: var(--dimension-stroke-width-012);\n background: var(--color-border-tertiary);\n pointer-events: none;\n}\n\n.mobile-header__subsections {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 0;\n height: var(--dimension-size-600);\n padding: var(--dimension-space-100) var(--dimension-space-200);\n box-sizing: border-box;\n}\n\n.mobile-header__subsections ds-mobile-section-switcher {\n min-width: 0;\n max-width: 100%;\n}\n\n.mobile-header__lane {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-050);\n min-width: 0;\n}\n\n.mobile-header__lane--leading {\n justify-content: flex-start;\n}\n\n.mobile-header__lane--trailing {\n justify-content: flex-end;\n}\n\n.mobile-header__center {\n position: relative;\n min-width: 0;\n max-width: 100%;\n justify-self: center;\n}\n\n.mobile-header__heading {\n display: block;\n min-width: 0;\n max-width: 100%;\n text-align: center;\n}\n\n.mobile-header__semantic-heading {\n position: absolute;\n width: var(--dimension-stroke-width-012);\n height: var(--dimension-stroke-width-012);\n padding: 0;\n margin: calc(var(--dimension-stroke-width-012) * -1);\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n::slotted([slot='leading']),\n::slotted([slot='trailing']) {\n flex: 0 0 auto;\n}\n","import { Component, Event, EventEmitter, h, Host, Prop } from '@stencil/core';\nimport { getSelectableTabs, type TabItem } from '../TabGroup/tab-item-utils';\nimport type {\n MobileHeaderHeadingLevel,\n MobileHeaderTone,\n} from './mobile-header-types';\n\n@Component({\n tag: 'ds-mobile-header',\n styleUrl: 'MobileHeader.css',\n scoped: true,\n})\nexport class MobileHeader {\n /** Static title used when no peer sections are supplied. */\n @Prop() heading: string = '';\n /** Semantic heading level for the active mobile screen. */\n @Prop() headingLevel: MobileHeaderHeadingLevel = 'h1';\n /** Controlled peer sections. Their selected label replaces the static title. */\n @Prop() sections: TabItem[] = [];\n /** JSON fallback for `sections`. */\n @Prop({ attribute: 'sections-json' }) sectionsJson: string = '';\n /** Controlled selected section id. */\n @Prop() value: string = '';\n /** Accessible name for the section chooser. */\n @Prop() sectionsAriaLabel: string = 'Change page section';\n /** Controlled child sections within the selected page or detail screen. */\n @Prop() subsections: TabItem[] = [];\n /** JSON fallback for `subsections`. */\n @Prop({ attribute: 'subsections-json' }) subsectionsJson: string = '';\n /** Controlled selected child-section id. */\n @Prop() subvalue: string = '';\n /** Accessible name for the child-section chooser. */\n @Prop() subsectionsAriaLabel: string = 'Change page subsection';\n /** Default page chrome or bold-brand workflow chrome. */\n @Prop({ reflect: true }) tone: MobileHeaderTone = 'default';\n\n /** Section selection intent. */\n @Event() dsSectionChange!: EventEmitter<string>;\n /** Child-section selection intent. */\n @Event() dsSubsectionChange!: EventEmitter<string>;\n\n private parseSections(value: TabItem[], json: string): TabItem[] {\n if (!json.trim()) return value ?? [];\n try {\n const parsed = JSON.parse(json);\n return Array.isArray(parsed) ? (parsed as TabItem[]) : [];\n } catch {\n return [];\n }\n }\n\n private get resolvedSections(): TabItem[] {\n return this.parseSections(this.sections, this.sectionsJson);\n }\n\n private get resolvedSubsections(): TabItem[] {\n return this.parseSections(this.subsections, this.subsectionsJson);\n }\n\n private get selectedLabel(): string {\n const selectable = getSelectableTabs(this.resolvedSections);\n return selectable.find(section => section.id === this.value)?.label ??\n selectable[0]?.label ??\n this.heading;\n }\n\n private handleSectionChange = (event: CustomEvent<string>) => {\n event.stopPropagation();\n this.dsSectionChange.emit(event.detail);\n };\n\n private handleSubsectionChange = (event: CustomEvent<string>) => {\n event.stopPropagation();\n this.dsSubsectionChange.emit(event.detail);\n };\n\n render() {\n const Heading = this.headingLevel;\n const selectable = getSelectableTabs(this.resolvedSections);\n const hasSwitcher = selectable.length > 1;\n const hasSubsections = getSelectableTabs(this.resolvedSubsections).length > 1;\n const foreground = this.tone === 'brand' ? 'on-bold' : 'primary';\n\n return (\n <Host>\n <header class=\"mobile-header\">\n <div class=\"mobile-header__primary ds-chrome-grid ds-chrome-space--md\">\n <div class=\"mobile-header__lane mobile-header__lane--leading\">\n <slot name=\"leading\" />\n </div>\n <div class=\"mobile-header__center\">\n {hasSwitcher ? (\n [\n <span\n class=\"mobile-header__semantic-heading\"\n role=\"heading\"\n aria-level={this.headingLevel === 'h1' ? '1' : '2'}\n >\n {this.selectedLabel}\n </span>,\n <ds-mobile-section-switcher\n sections={this.resolvedSections}\n value={this.value}\n navigationLabel={this.sectionsAriaLabel}\n onDsChange={this.handleSectionChange}\n />,\n ]\n ) : (\n <ds-text\n class=\"mobile-header__heading\"\n as={Heading}\n variant=\"text-body-medium\"\n emphasis\n color={foreground}\n lineTruncation={1}\n >\n {this.selectedLabel}\n </ds-text>\n )}\n </div>\n <div class=\"mobile-header__lane mobile-header__lane--trailing\">\n <slot name=\"trailing\" />\n </div>\n </div>\n {hasSubsections ? (\n <nav class=\"mobile-header__subsections\" aria-label={this.subsectionsAriaLabel}>\n <ds-mobile-section-switcher\n sections={this.resolvedSubsections}\n value={this.subvalue}\n navigationLabel={this.subsectionsAriaLabel}\n onDsChange={this.handleSubsectionChange}\n />\n </nav>\n ) : null}\n </header>\n </Host>\n );\n }\n}\n"],"mappings":"8TAAA,MAAMA,EAAkB,IAAM,+xG,MCYjBC,EAAYC,EAAA,MAAAD,UAAAE,EALzB,WAAAC,CAAAC,G,gJAOUC,KAAAC,QAAkB,GAElBD,KAAAE,aAAyC,KAEzCF,KAAAG,SAAsB,GAEQH,KAAAI,aAAuB,GAErDJ,KAAAK,MAAgB,GAEhBL,KAAAM,kBAA4B,sBAE5BN,KAAAO,YAAyB,GAEQP,KAAAQ,gBAA0B,GAE3DR,KAAAS,SAAmB,GAEnBT,KAAAU,qBAA+B,yBAEdV,KAAAW,KAAyB,UAgC1CX,KAAAY,oBAAuBC,IAC7BA,EAAMC,kBACNd,KAAKe,gBAAgBC,KAAKH,EAAMI,OAAO,EAGjCjB,KAAAkB,uBAA0BL,IAChCA,EAAMC,kBACNd,KAAKmB,mBAAmBH,KAAKH,EAAMI,OAAO,CAiE7C,CAjGS,aAAAG,CAAcf,EAAkBgB,GACtC,IAAKA,EAAKC,OAAQ,OAAOjB,GAAS,GAClC,IACE,MAAMkB,EAASC,KAAKC,MAAMJ,GAC1B,OAAOK,MAAMC,QAAQJ,GAAWA,EAAuB,E,CACvD,MACA,MAAO,E,EAIX,oBAAYK,GACV,OAAO5B,KAAKoB,cAAcpB,KAAKG,SAAUH,KAAKI,a,CAGhD,uBAAYyB,GACV,OAAO7B,KAAKoB,cAAcpB,KAAKO,YAAaP,KAAKQ,gB,CAGnD,iBAAYsB,GACV,MAAMC,EAAaC,EAAkBhC,KAAK4B,kBAC1C,OAAOG,EAAWE,MAAKC,GAAWA,EAAQC,KAAOnC,KAAKK,SAAQ+B,OAC5DL,EAAW,IAAIK,OACfpC,KAAKC,O,CAaT,MAAAoC,GACE,MAAMC,EAAUtC,KAAKE,aACrB,MAAM6B,EAAaC,EAAkBhC,KAAK4B,kBAC1C,MAAMW,EAAcR,EAAWS,OAAS,EACxC,MAAMC,EAAiBT,EAAkBhC,KAAK6B,qBAAqBW,OAAS,EAC5E,MAAME,EAAa1C,KAAKW,OAAS,QAAU,UAAY,UAEvD,OACEgC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,UAAAE,IAAA,2CAAQC,MAAM,iBACZH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,6DACTH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,oDACTH,EAAA,QAAAE,IAAA,2CAAME,KAAK,aAEbJ,EAAA,OAAAE,IAAA,2CAAKC,MAAM,yBACRP,EAAW,CAERI,EAAA,QACEG,MAAM,kCACNE,KAAK,UAAS,aACFhD,KAAKE,eAAiB,KAAO,IAAM,KAE9CF,KAAK8B,eAERa,EAAA,8BACExC,SAAUH,KAAK4B,iBACfvB,MAAOL,KAAKK,MACZ4C,gBAAiBjD,KAAKM,kBACtB4C,WAAYlD,KAAKY,uBAIrB+B,EAAA,WACEG,MAAM,yBACNK,GAAIb,EACJc,QAAQ,mBACRC,SAAQ,KACRC,MAAOZ,EACPa,eAAgB,GAEfvD,KAAK8B,gBAIZa,EAAA,OAAAE,IAAA,2CAAKC,MAAM,qDACTH,EAAA,QAAAE,IAAA,2CAAME,KAAK,eAGdN,EACCE,EAAA,OAAKG,MAAM,6BAA4B,aAAa9C,KAAKU,sBACvDiC,EAAA,8BACExC,SAAUH,KAAK6B,oBACfxB,MAAOL,KAAKS,SACZwC,gBAAiBjD,KAAKU,qBACtBwC,WAAYlD,KAAKkB,0BAGnB,M","ignoreList":[]}
@@ -1,9 +0,0 @@
1
- import { ElementRef } from '@angular/core';
2
- import { ValueAccessor } from '../angular/value-accessor';
3
- import * as i0 from "@angular/core";
4
- export declare class SelectMultiValueAccessor extends ValueAccessor {
5
- constructor(el: ElementRef<HTMLDsSelectMultiElement>);
6
- writeValue(value: unknown): void;
7
- static ɵfac: i0.ɵɵFactoryDeclaration<SelectMultiValueAccessor, never>;
8
- static ɵdir: i0.ɵɵDirectiveDeclaration<SelectMultiValueAccessor, "ds-select-multi", never, {}, {}, never, never, true, never>;
9
- }
@@ -1,40 +0,0 @@
1
- import { Directive, forwardRef } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { ValueAccessor } from '../angular/value-accessor.js';
4
- import * as i0 from "@angular/core";
5
- export class SelectMultiValueAccessor extends ValueAccessor {
6
- constructor(el) {
7
- super(el);
8
- }
9
- writeValue(value) {
10
- const values = Array.isArray(value)
11
- ? value.filter((item) => typeof item === 'string')
12
- : [];
13
- this.el.nativeElement.values = values;
14
- this.lastValue = values;
15
- }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SelectMultiValueAccessor, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
17
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: SelectMultiValueAccessor, isStandalone: true, selector: "ds-select-multi", host: { listeners: { "dsChange": "handleChangeEvent($event.target?.[\"values\"])" } }, providers: [
18
- {
19
- provide: NG_VALUE_ACCESSOR,
20
- useExisting: forwardRef(() => SelectMultiValueAccessor),
21
- multi: true,
22
- },
23
- ], usesInheritance: true, ngImport: i0 }); }
24
- }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: SelectMultiValueAccessor, decorators: [{
26
- type: Directive,
27
- args: [{
28
- selector: 'ds-select-multi',
29
- host: {
30
- '(dsChange)': 'handleChangeEvent($event.target?.["values"])',
31
- },
32
- providers: [
33
- {
34
- provide: NG_VALUE_ACCESSOR,
35
- useExisting: forwardRef(() => SelectMultiValueAccessor),
36
- multi: true,
37
- },
38
- ],
39
- }]
40
- }], ctorParameters: () => [{ type: i0.ElementRef }] });
@@ -1,27 +0,0 @@
1
- /** Per-badge background-position for shell gradient ring sampling. */
2
- export declare const BADGE_GRADIENT_POSITION_VAR = "--_badge-gradient-position";
3
- export interface GradientSurface {
4
- element: HTMLElement;
5
- chromeHost: HTMLElement;
6
- positionVar: string;
7
- }
8
- /** Whether the badge sits under a shell with an active wash preset. */
9
- export declare function isShellGradientActive(from: HTMLElement): boolean;
10
- /** Bar or panel chrome surface that owns the shell gradient stack. */
11
- export declare function findGradientSurface(from: HTMLElement): GradientSurface | null;
12
- interface ParsedPosition {
13
- x: number;
14
- y: number;
15
- }
16
- /** Parse a two-value CSS background-position (e.g. `-200px 0`). */
17
- export declare function parseCssBackgroundPosition(value: string): ParsedPosition;
18
- /**
19
- * Background position for a badge ring so the shell gradient aligns with nav chrome.
20
- * Uses badge center relative to the painted chrome surface.
21
- */
22
- export declare function badgeGradientPosition(badgeHost: HTMLElement, surface: GradientSurface, shellPosition: string): string;
23
- /** Resolve shell gradient position from chrome host custom properties. */
24
- export declare function readShellGradientPosition(surface: GradientSurface): string;
25
- /** Stamp `--_badge-gradient-position` on the badge host (fixed viewport chrome). */
26
- export declare function syncBadgeGradientPosition(badgeHost: HTMLElement): void;
27
- export {};
@@ -1,32 +0,0 @@
1
- /** Bubbling/composed events — `ds-shell-app` and `ds-bar-nav` coordinate during width motion. */
2
- export declare const CHROME_TRANSITION_START = "dsChromeTransitionStart";
3
- export declare const CHROME_TRANSITION_END = "dsChromeTransitionEnd";
4
- export type ChromeTransitionSource = 'panel-nav' | 'panel-tools';
5
- export interface ChromeTransitionDetail {
6
- source: ChromeTransitionSource;
7
- /** Panel-tools drawer motion direction; omitted for panel-nav. */
8
- phase?: 'opening' | 'closing';
9
- }
10
- /** Reference-counted gate — used while panel-nav width is transitioning. */
11
- export declare class ChromeTransitionDepth {
12
- private depth;
13
- enter(): void;
14
- exit(): void;
15
- get isActive(): boolean;
16
- }
17
- /** Idempotent gate for one physical chrome surface.
18
- * Duplicate start notifications still require only one matching end. */
19
- export declare class ChromeTransitionGate {
20
- private active;
21
- enter(): void;
22
- exit(): void;
23
- get isActive(): boolean;
24
- }
25
- export interface RafCoalescer {
26
- schedule(): void;
27
- cancel(): void;
28
- }
29
- /** Coalesce bursty layout work (ResizeObserver, prop churn) to one callback per frame. */
30
- export declare function createRafCoalescer(onFrame: () => void): RafCoalescer;
31
- export declare function readChromeTransitionSource(event: Event): ChromeTransitionSource | undefined;
32
- export declare function readChromeTransitionPhase(event: Event): ChromeTransitionDetail['phase'];
@@ -1,11 +0,0 @@
1
- /** Read a `var(--token)` width in px using a hidden probe (works with calc() tokens). */
2
- export declare function readCssVarWidthPx(context: HTMLElement, cssVarName: string): number;
3
- export interface PanelNavWidthTokens {
4
- expandedPx: number;
5
- collapsedPx: number;
6
- }
7
- /** Resolve panel-nav expanded/collapsed widths from scoped CSS vars on `.panel-nav`. */
8
- export declare function readPanelNavWidthTokens(navRoot: HTMLElement): PanelNavWidthTokens;
9
- export declare function isPanelNavCollapsed(panelNavHost: HTMLElement | null, navRoot: HTMLElement | null): boolean;
10
- export declare function panelWidthPxFromTokens(tokens: PanelNavWidthTokens, collapsed: boolean): number;
11
- export declare function barGradientPositionFromPanelWidth(panelWidthPx: number): string;
@@ -1,41 +0,0 @@
1
- /** CSS var names consumed by `ds-panel-nav` / `ds-bar-nav` inside `ds-shell-app`. */
2
- import type { ShellGradientPreset } from './shell-gradient-presets';
3
- export type { ShellGradientPreset } from './shell-gradient-presets';
4
- export { DEFAULT_SHELL_GRADIENT_PRESET, SHELL_GRADIENT_PRESETS, SHELL_GRADIENT_PRESET_LABELS, buildShellRadialGradientForPreset, buildShellRadialGradientFromStops, isShellGradientPreset, shellGradientPresetOpacity, shellGradientPresetRecipe, shellGradientPresetStopToken, } from './shell-gradient-presets';
5
- export declare const SHELL_GRADIENT_IMAGE_VAR = "--ds-shell-gradient-image";
6
- export declare const SHELL_GRADIENT_SIZE_VAR = "--ds-shell-gradient-size";
7
- export declare const SHELL_GRADIENT_POSITION_PANEL_VAR = "--ds-shell-gradient-position-panel";
8
- export declare const SHELL_GRADIENT_POSITION_BAR_VAR = "--ds-shell-gradient-position-bar";
9
- export declare const SHELL_GRADIENT_OPACITY_VAR = "--ds-shell-gradient-opacity";
10
- /** Per chrome-surface background-position — offsets wash + grid to shell row origin. */
11
- export declare const SHELL_CHROME_SURFACE_POSITION_VAR = "--ds-shell-chrome-surface-position";
12
- /** Whether the shared chrome layer (secondary bg + optional wash) should mount. */
13
- export declare function shellChromeLayerActive(preset: ShellGradientPreset): boolean;
14
- /**
15
- * Shell radial wash — same for panel and bar nav.
16
- * Tokens follow `data-theme` (light/dark intent stops).
17
- */
18
- export declare function buildShellRadialGradient(preset?: ShellGradientPreset): string;
19
- /** Built-in radial image for the selected shell preset. */
20
- export declare function shellGradientImage(preset?: ShellGradientPreset): string;
21
- export interface ShellViewportDimensions {
22
- width: number;
23
- height: number;
24
- }
25
- /**
26
- * Viewport size for shell chrome with `background-attachment: fixed`.
27
- * Must not use the `ds-shell-app` element box — the shell can be shorter or
28
- * taller than the viewport when host height chains break or content overflows.
29
- */
30
- export declare function readShellViewportDimensions(win?: Window): ShellViewportDimensions;
31
- export interface ShellGradientLayout {
32
- width: number;
33
- height: number;
34
- panelWidth: number;
35
- }
36
- /** Pixel `background-size` for the fixed-attachment radial wash. */
37
- export declare function shellGradientSize(layout: Pick<ShellGradientLayout, 'width' | 'height'>): string;
38
- export declare function shellGradientPositionPanel(): string;
39
- export declare function shellGradientPositionBar(panelWidth: number): string;
40
- /** Phase-lock a chrome rect to the shell row coordinate system (wash + grid). */
41
- export declare function shellChromeSurfacePosition(leftPx: number, topPx: number): string;
@@ -1,23 +0,0 @@
1
- import { parseCssTimeMs } from '../utils/resolve-css-time-ms';
2
- /** `view-transition-name` on `ds-bar-nav` — pairs with root reveal in shell apps. */
3
- export declare const SHELL_BAR_NAV_VT_NAME = "ds-shell-bar-nav";
4
- export { parseCssTimeMs };
5
- /** TokoMo tokens for the dashboard ↔ settings radial reveal (WAAPI). */
6
- export declare const SHELL_NAV_REVEAL_DURATION_VAR = "--effect-animation-duration-medium-3";
7
- export declare const SHELL_NAV_REVEAL_EASING_VAR = "--effect-animation-easing-ease-in-out";
8
- /** Suppress default cross-fade and pin new snapshots to a 0px circle for WAAPI reveal. */
9
- export declare function ensureShellNavVtStyle(): void;
10
- export interface ShellNavRevealOrigin {
11
- x: number;
12
- y: number;
13
- maxRadius: number;
14
- }
15
- /** Origin for the radial reveal — defaults to panel-nav footer gear, then viewport center. */
16
- export declare function resolveShellNavRevealOrigin(originEl?: HTMLElement | null): ShellNavRevealOrigin;
17
- export declare function setShellNavRevealOriginVars(origin: ShellNavRevealOrigin): void;
18
- /** Animate root + bar-nav snapshots with the same radial clip-path reveal. */
19
- export declare function animateShellNavRadialReveal(origin: ShellNavRevealOrigin, durationMs?: number): void;
20
- /** Run radial reveal when a view transition's `ready` promise settles (app/router driver). */
21
- export declare function runShellNavStyleRevealOnReady(transition: {
22
- ready: Promise<void>;
23
- }, originEl?: HTMLElement | null): void;