@ds-mo/ui 14.19.0 → 14.20.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 (363) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +24 -8
  4. package/dist/angular/ds-filter-menu.d.ts +1 -1
  5. package/dist/angular/ds-filter-menu.js +3 -3
  6. package/dist/components/ds-agent-activity.js +1 -1
  7. package/dist/components/ds-agent-questionnaire.js +1 -1
  8. package/dist/components/ds-agent-response.js +1 -1
  9. package/dist/components/ds-agent-source-list.js +1 -1
  10. package/dist/components/ds-agent-tool-call.js +1 -1
  11. package/dist/components/ds-attachment-list.js +1 -1
  12. package/dist/components/ds-avatar.js +1 -1
  13. package/dist/components/ds-badge.js +1 -1
  14. package/dist/components/ds-banner.js +1 -1
  15. package/dist/components/ds-banner.js.map +1 -1
  16. package/dist/components/ds-bar-action.js +1 -1
  17. package/dist/components/ds-bar-action.js.map +1 -1
  18. package/dist/components/ds-bar-nav.js +1 -1
  19. package/dist/components/ds-bar-title.js +1 -1
  20. package/dist/components/ds-bar-workflow.js +1 -1
  21. package/dist/components/ds-bar-workflow.js.map +1 -1
  22. package/dist/components/ds-breadcrumb.js +1 -1
  23. package/dist/components/ds-button-filled.js +1 -1
  24. package/dist/components/ds-button-unfilled.js +1 -1
  25. package/dist/components/ds-card-chart.js +1 -1
  26. package/dist/components/ds-card-chart.js.map +1 -1
  27. package/dist/components/ds-card-overview.js +1 -1
  28. package/dist/components/ds-card-overview.js.map +1 -1
  29. package/dist/components/ds-card-setting.js +1 -1
  30. package/dist/components/ds-card-setting.js.map +1 -1
  31. package/dist/components/ds-chart-legend.js +1 -1
  32. package/dist/components/ds-chart-legend.js.map +1 -1
  33. package/dist/components/ds-chart.js +1 -1
  34. package/dist/components/ds-chart.js.map +1 -1
  35. package/dist/components/ds-checkbox.js +1 -1
  36. package/dist/components/ds-chip.js +1 -1
  37. package/dist/components/ds-chip.js.map +1 -1
  38. package/dist/components/ds-code-block.js +1 -1
  39. package/dist/components/ds-conversation-list-item.js +1 -1
  40. package/dist/components/ds-conversation-list-item.js.map +1 -1
  41. package/dist/components/ds-conversation-list-section.js +1 -1
  42. package/dist/components/ds-conversation-list.js +1 -1
  43. package/dist/components/ds-conversation-list.js.map +1 -1
  44. package/dist/components/ds-divider.js +1 -1
  45. package/dist/components/ds-empty-state.js +1 -1
  46. package/dist/components/ds-field.js +1 -1
  47. package/dist/components/ds-filter-menu.js +1 -1
  48. package/dist/components/ds-icon.js +1 -1
  49. package/dist/components/ds-input.js +1 -1
  50. package/dist/components/ds-loader.js +1 -1
  51. package/dist/components/ds-markdown.js +1 -1
  52. package/dist/components/ds-menu.js +1 -1
  53. package/dist/components/ds-message-actions.js +1 -1
  54. package/dist/components/ds-message-bubble.js +1 -1
  55. package/dist/components/ds-message-bubble.js.map +1 -1
  56. package/dist/components/ds-message-composer.js +1 -1
  57. package/dist/components/ds-message-composer.js.map +1 -1
  58. package/dist/components/ds-message-scroller.js +1 -1
  59. package/dist/components/ds-message-scroller.js.map +1 -1
  60. package/dist/components/ds-message.js +1 -1
  61. package/dist/components/ds-mobile-bar-nav.js +1 -1
  62. package/dist/components/ds-mobile-header.js +1 -1
  63. package/dist/components/ds-mobile-section-switcher.js +1 -1
  64. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  65. package/dist/components/ds-modal.js +1 -1
  66. package/dist/components/ds-pagination.js +1 -1
  67. package/dist/components/ds-panel-nav.js +1 -1
  68. package/dist/components/ds-panel-sub-nav.js +1 -1
  69. package/dist/components/ds-panel-sub-nav.js.map +1 -1
  70. package/dist/components/ds-panel-tool-header.js +1 -1
  71. package/dist/components/ds-panel-tool-search.js +1 -1
  72. package/dist/components/ds-panel-tool-search.js.map +1 -1
  73. package/dist/components/ds-panel-tools.js +1 -1
  74. package/dist/components/ds-radio.js +1 -1
  75. package/dist/components/ds-scroll-overlay.js +1 -1
  76. package/dist/components/ds-scroll-overlay.js.map +1 -1
  77. package/dist/components/ds-select.js +1 -1
  78. package/dist/components/ds-shell-app.js +1 -1
  79. package/dist/components/ds-shell-app.js.map +1 -1
  80. package/dist/components/ds-shell-page.js +1 -1
  81. package/dist/components/ds-shell-tools.js +1 -1
  82. package/dist/components/ds-skeleton.js +1 -1
  83. package/dist/components/ds-slider.js +1 -1
  84. package/dist/components/ds-slider.js.map +1 -1
  85. package/dist/components/ds-swatch-picker.js +1 -1
  86. package/dist/components/ds-switch.js +1 -1
  87. package/dist/components/ds-tab-group.js +1 -1
  88. package/dist/components/ds-table-filter.js +1 -1
  89. package/dist/components/ds-table-filter.js.map +1 -1
  90. package/dist/components/ds-table-saved-views.js +1 -1
  91. package/dist/components/ds-table-sort.js +1 -1
  92. package/dist/components/ds-table-sort.js.map +1 -1
  93. package/dist/components/ds-table-toolbar.js +1 -1
  94. package/dist/components/ds-table.js +1 -1
  95. package/dist/components/ds-table.js.map +1 -1
  96. package/dist/components/ds-tag.js +1 -1
  97. package/dist/components/ds-text.js +1 -1
  98. package/dist/components/ds-toast.js +1 -1
  99. package/dist/components/ds-toast.js.map +1 -1
  100. package/dist/components/ds-tooltip-chart.js +1 -1
  101. package/dist/components/ds-tooltip.js +1 -1
  102. package/dist/components/ds-typing-indicator.js +1 -1
  103. package/dist/components/p-0XTyQNRG.js +2 -0
  104. package/dist/components/{p-JPTkZ3Ji.js.map → p-0XTyQNRG.js.map} +1 -1
  105. package/dist/components/{p-DaAXY-XS.js → p-1UAVanY9.js} +2 -2
  106. package/dist/components/p-1UAVanY9.js.map +1 -0
  107. package/dist/components/{p-BNiuAMeh.js → p-AtUP95E_.js} +2 -2
  108. package/dist/components/p-AtUP95E_.js.map +1 -0
  109. package/dist/components/p-B-HsfQOK.js +2 -0
  110. package/dist/components/p-B-HsfQOK.js.map +1 -0
  111. package/dist/components/{p-B_jZIC9R.js → p-B2FT4Da6.js} +2 -2
  112. package/dist/components/{p-B_jZIC9R.js.map → p-B2FT4Da6.js.map} +1 -1
  113. package/dist/components/p-B4wTnsUL.js +2 -0
  114. package/dist/components/p-B4wTnsUL.js.map +1 -0
  115. package/dist/components/p-B5-R5mb8.js +2 -0
  116. package/dist/components/p-B5-R5mb8.js.map +1 -0
  117. package/dist/components/p-B6rSDhJY.js +2 -0
  118. package/dist/components/p-B6rSDhJY.js.map +1 -0
  119. package/dist/components/{p-B1JRCDHS.js → p-BHhmB9-4.js} +2 -2
  120. package/dist/components/{p-B1JRCDHS.js.map → p-BHhmB9-4.js.map} +1 -1
  121. package/dist/components/p-BUexfjjg.js +2 -0
  122. package/dist/components/{p-DOUDRJbE.js.map → p-BUexfjjg.js.map} +1 -1
  123. package/dist/components/{p-BBG6Sswb.js → p-BYFS2qWb.js} +2 -2
  124. package/dist/components/{p-BBG6Sswb.js.map → p-BYFS2qWb.js.map} +1 -1
  125. package/dist/components/{p-uI6z53BE.js → p-Bb4KnRy0.js} +2 -2
  126. package/dist/components/{p-HB_cf_aR.js → p-BeA6Jv-3.js} +2 -2
  127. package/dist/components/{p-HB_cf_aR.js.map → p-BeA6Jv-3.js.map} +1 -1
  128. package/dist/components/{p-Bbb9A3NV.js → p-BjRD57w3.js} +2 -2
  129. package/dist/components/p-BjRD57w3.js.map +1 -0
  130. package/dist/components/p-BkelrY4-.js +2 -0
  131. package/dist/components/{p-CwjVgUqy.js.map → p-BkelrY4-.js.map} +1 -1
  132. package/dist/components/{p-r8PMqlqm.js → p-BmssRAEZ.js} +2 -2
  133. package/dist/components/p-BmssRAEZ.js.map +1 -0
  134. package/dist/components/{p-BNkU9dcc.js → p-Bv6FSDPR.js} +2 -2
  135. package/dist/components/{p-BNkU9dcc.js.map → p-Bv6FSDPR.js.map} +1 -1
  136. package/dist/components/{p-D3fMaUJ3.js → p-Bx5BSd6F.js} +2 -2
  137. package/dist/components/p-Bx5BSd6F.js.map +1 -0
  138. package/dist/components/{p-B8q-6a03.js → p-C0qN3PSb.js} +1 -1
  139. package/dist/components/{p-B8q-6a03.js.map → p-C0qN3PSb.js.map} +1 -1
  140. package/dist/components/p-CCmgtju-.js +2 -0
  141. package/dist/components/p-CCmgtju-.js.map +1 -0
  142. package/dist/components/p-CDw_WEVt.js +2 -0
  143. package/dist/components/p-CDw_WEVt.js.map +1 -0
  144. package/dist/components/{p-DFQ9mcbK.js → p-CUL5_8JM.js} +2 -2
  145. package/dist/components/p-CUL5_8JM.js.map +1 -0
  146. package/dist/components/{p-BFfLvMZd.js → p-Cea7rROU.js} +2 -2
  147. package/dist/components/{p-BFfLvMZd.js.map → p-Cea7rROU.js.map} +1 -1
  148. package/dist/components/{p-B0Byw6OX.js → p-CgGcgMjs.js} +1 -1
  149. package/dist/components/{p-B0Byw6OX.js.map → p-CgGcgMjs.js.map} +1 -1
  150. package/dist/components/{p-C-Y7gYgz.js → p-ChfVRPHw.js} +2 -2
  151. package/dist/components/p-ChfVRPHw.js.map +1 -0
  152. package/dist/components/{p-CJq3n5kA.js → p-Ck1hgD6g.js} +2 -2
  153. package/dist/components/p-Ck1hgD6g.js.map +1 -0
  154. package/dist/components/{p-BMc0DE59.js → p-CochmPyg.js} +1 -1
  155. package/dist/components/p-CochmPyg.js.map +1 -0
  156. package/dist/components/{p-DDgeXGbB.js → p-CptSB-tA.js} +2 -2
  157. package/dist/components/p-CptSB-tA.js.map +1 -0
  158. package/dist/components/{p-DBue3ISk.js → p-CyZqk196.js} +2 -2
  159. package/dist/components/p-CyZqk196.js.map +1 -0
  160. package/dist/components/{p-Cxr0IQjC.js → p-CzbsTZt7.js} +2 -2
  161. package/dist/components/p-CzbsTZt7.js.map +1 -0
  162. package/dist/components/{p-ZpQBAwZC.js → p-D7QlTWbN.js} +2 -2
  163. package/dist/components/p-D7QlTWbN.js.map +1 -0
  164. package/dist/components/{p-C6DNhlES.js → p-DA5H_Iq_.js} +1 -1
  165. package/dist/components/p-DA5H_Iq_.js.map +1 -0
  166. package/dist/components/p-DBYv7fRq.js +2 -0
  167. package/dist/components/p-DBYv7fRq.js.map +1 -0
  168. package/dist/components/{p-CY4YFAT3.js → p-DCbKsABt.js} +1 -1
  169. package/dist/components/p-DCbKsABt.js.map +1 -0
  170. package/dist/components/{p-C6R5Lft0.js → p-DFC0sRM-.js} +2 -2
  171. package/dist/components/p-DFC0sRM-.js.map +1 -0
  172. package/dist/components/p-DGe5oXR0.js +2 -0
  173. package/dist/components/p-DGe5oXR0.js.map +1 -0
  174. package/dist/components/{p-CsBICYmt.js → p-DGkn8FwV.js} +2 -2
  175. package/dist/components/p-DGkn8FwV.js.map +1 -0
  176. package/dist/components/p-DIlScMvI.js +2 -0
  177. package/dist/components/p-DIlScMvI.js.map +1 -0
  178. package/dist/components/p-DKt_8s-U.js +2 -0
  179. package/dist/components/p-DKt_8s-U.js.map +1 -0
  180. package/dist/components/p-DLbHgbVj.js +2 -0
  181. package/dist/components/p-DLbHgbVj.js.map +1 -0
  182. package/dist/components/{p-Bu3dOjpW.js → p-DM1Z_hh0.js} +2 -2
  183. package/dist/components/{p-Bu3dOjpW.js.map → p-DM1Z_hh0.js.map} +1 -1
  184. package/dist/components/p-DOUk4KoT.js.map +1 -1
  185. package/dist/components/p-DQBT1Jkf.js +2 -0
  186. package/dist/components/p-DQBT1Jkf.js.map +1 -0
  187. package/dist/components/p-DW5Ita-P.js +2 -0
  188. package/dist/components/{p-DUdOmSFR.js.map → p-DW5Ita-P.js.map} +1 -1
  189. package/dist/components/{p-BS0AbMNK.js → p-DWjTOoXs.js} +2 -2
  190. package/dist/components/p-DWjTOoXs.js.map +1 -0
  191. package/dist/components/{p-DNpLDbWY.js → p-DZ58Sg5a.js} +1 -1
  192. package/dist/components/p-DZ58Sg5a.js.map +1 -0
  193. package/dist/components/{p-BknXYAEc.js → p-DdH7b4JF.js} +2 -2
  194. package/dist/components/p-DdH7b4JF.js.map +1 -0
  195. package/dist/components/p-DfDoqOlx.js +2 -0
  196. package/dist/components/p-DfDoqOlx.js.map +1 -0
  197. package/dist/components/p-Do8wbFff.js +2 -0
  198. package/dist/components/p-Do8wbFff.js.map +1 -0
  199. package/dist/components/p-Is1lFmwp.js +2 -0
  200. package/dist/components/p-Is1lFmwp.js.map +1 -0
  201. package/dist/components/p-L8IIeDXM.js +2 -0
  202. package/dist/components/p-L8IIeDXM.js.map +1 -0
  203. package/dist/components/{p-BUDAwJVV.js → p-caLOcQUK.js} +2 -2
  204. package/dist/components/p-caLOcQUK.js.map +1 -0
  205. package/dist/components/{p-D1eEgwcP.js → p-etg-Uk1u.js} +1 -1
  206. package/dist/components/{p-D1eEgwcP.js.map → p-etg-Uk1u.js.map} +1 -1
  207. package/dist/components/{p-C9gC4haA.js → p-fRDzpfi9.js} +2 -2
  208. package/dist/components/p-fRDzpfi9.js.map +1 -0
  209. package/dist/components/{p-C-vRkDyn.js → p-rCeztgVn.js} +1 -1
  210. package/dist/components/{p-C-vRkDyn.js.map → p-rCeztgVn.js.map} +1 -1
  211. package/dist/components/{p-BKp__CQX.js → p-rw0ZxIE4.js} +2 -2
  212. package/dist/components/p-rw0ZxIE4.js.map +1 -0
  213. package/dist/components/p-v4oqkJms.js +2 -0
  214. package/dist/components/p-v4oqkJms.js.map +1 -0
  215. package/dist/docs/components.json +117 -19
  216. package/dist/lib/shell/index.d.ts +2 -2
  217. package/dist/lib/shell/index.js +8 -6
  218. package/dist/lib/shell/index.js.map +2 -2
  219. package/dist/lib/toast/index.js +1 -4
  220. package/dist/lib/toast/index.js.map +2 -2
  221. package/dist/lib/utils/date-filter-value.d.ts +57 -0
  222. package/dist/lib/utils/index.d.ts +3 -1
  223. package/dist/lib/utils/index.js +171 -22
  224. package/dist/lib/utils/index.js.map +3 -3
  225. package/dist/mcp/cli.js +70 -31
  226. package/dist/mcp-data/registry/agent-activity.json +1 -1
  227. package/dist/mcp-data/registry/agent-questionnaire.json +3 -3
  228. package/dist/mcp-data/registry/agent-source-list.json +2 -2
  229. package/dist/mcp-data/registry/agent-tool-call.json +2 -2
  230. package/dist/mcp-data/registry/attachment-list.json +1 -1
  231. package/dist/mcp-data/registry/badge.json +1 -1
  232. package/dist/mcp-data/registry/banner.json +2 -2
  233. package/dist/mcp-data/registry/bar-action.json +1 -1
  234. package/dist/mcp-data/registry/bar-nav.json +3 -3
  235. package/dist/mcp-data/registry/bar-workflow.json +1 -1
  236. package/dist/mcp-data/registry/breadcrumb.json +1 -1
  237. package/dist/mcp-data/registry/button-filled.json +1 -1
  238. package/dist/mcp-data/registry/button-unfilled.json +1 -1
  239. package/dist/mcp-data/registry/card-chart.json +2 -2
  240. package/dist/mcp-data/registry/card-overview.json +3 -3
  241. package/dist/mcp-data/registry/card-setting.json +1 -1
  242. package/dist/mcp-data/registry/chart-legend.json +1 -1
  243. package/dist/mcp-data/registry/chart.json +1 -1
  244. package/dist/mcp-data/registry/checkbox.json +1 -1
  245. package/dist/mcp-data/registry/chip.json +1 -1
  246. package/dist/mcp-data/registry/code-block.json +1 -1
  247. package/dist/mcp-data/registry/conversation-list-item.json +1 -1
  248. package/dist/mcp-data/registry/conversation-list.json +2 -2
  249. package/dist/mcp-data/registry/divider.json +1 -1
  250. package/dist/mcp-data/registry/empty-state.json +1 -1
  251. package/dist/mcp-data/registry/field.json +1 -1
  252. package/dist/mcp-data/registry/filter-menu.json +56 -9
  253. package/dist/mcp-data/registry/icon.json +2 -2
  254. package/dist/mcp-data/registry/input.json +2 -2
  255. package/dist/mcp-data/registry/loader.json +1 -1
  256. package/dist/mcp-data/registry/menu.json +3 -3
  257. package/dist/mcp-data/registry/message-bubble.json +1 -1
  258. package/dist/mcp-data/registry/message-composer.json +2 -2
  259. package/dist/mcp-data/registry/message-scroller.json +3 -3
  260. package/dist/mcp-data/registry/mobile-bar-nav.json +1 -1
  261. package/dist/mcp-data/registry/mobile-header.json +2 -2
  262. package/dist/mcp-data/registry/mobile-section-switcher.json +2 -2
  263. package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
  264. package/dist/mcp-data/registry/modal.json +2 -2
  265. package/dist/mcp-data/registry/pagination.json +2 -2
  266. package/dist/mcp-data/registry/panel-nav.json +2 -2
  267. package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
  268. package/dist/mcp-data/registry/panel-tool-header.json +1 -1
  269. package/dist/mcp-data/registry/panel-tool-search.json +1 -1
  270. package/dist/mcp-data/registry/panel-tools.json +2 -2
  271. package/dist/mcp-data/registry/radio.json +1 -1
  272. package/dist/mcp-data/registry/registry.json +23 -7
  273. package/dist/mcp-data/registry/select.json +1 -1
  274. package/dist/mcp-data/registry/shell-app.json +2 -2
  275. package/dist/mcp-data/registry/shell-page.json +1 -1
  276. package/dist/mcp-data/registry/shell-tools.json +1 -1
  277. package/dist/mcp-data/registry/skeleton.json +2 -2
  278. package/dist/mcp-data/registry/slider.json +2 -2
  279. package/dist/mcp-data/registry/swatch-picker.json +3 -3
  280. package/dist/mcp-data/registry/switch.json +2 -2
  281. package/dist/mcp-data/registry/tab-group.json +2 -2
  282. package/dist/mcp-data/registry/table-filter.json +5 -3
  283. package/dist/mcp-data/registry/table-sort.json +1 -1
  284. package/dist/mcp-data/registry/table.json +18 -18
  285. package/dist/mcp-data/registry/tag.json +2 -2
  286. package/dist/mcp-data/registry/text.json +4 -4
  287. package/dist/mcp-data/registry/toast.json +2 -2
  288. package/dist/mcp-data/registry/tooltip-chart.json +2 -2
  289. package/dist/mcp-data/registry/tooltip.json +2 -2
  290. package/dist/styles/prose.css +42 -38
  291. package/dist/styles/table.css +39 -67
  292. package/dist/types/components/CardSetting/index.d.ts +1 -1
  293. package/dist/types/components/FilterMenu/FilterMenu.d.ts +20 -1
  294. package/dist/types/components/FilterMenu/filter-menu-calendar.d.ts +13 -0
  295. package/dist/types/components/TooltipChart/index.d.ts +1 -1
  296. package/dist/types/components.d.ts +26 -4
  297. package/dist/types/shell/index.d.ts +2 -2
  298. package/dist/types/utils/date-filter-value.d.ts +58 -0
  299. package/dist/types/utils/index.d.ts +3 -1
  300. package/dist/vue/ds-filter-menu.js +2 -0
  301. package/package.json +11 -1
  302. package/dist/components/p--CRAu9fJ.js +0 -2
  303. package/dist/components/p--CRAu9fJ.js.map +0 -1
  304. package/dist/components/p-BCOl1x0_.js +0 -2
  305. package/dist/components/p-BCOl1x0_.js.map +0 -1
  306. package/dist/components/p-BHVOiWz5.js +0 -2
  307. package/dist/components/p-BHVOiWz5.js.map +0 -1
  308. package/dist/components/p-BKp__CQX.js.map +0 -1
  309. package/dist/components/p-BMc0DE59.js.map +0 -1
  310. package/dist/components/p-BNiuAMeh.js.map +0 -1
  311. package/dist/components/p-BPG0r_mC.js +0 -2
  312. package/dist/components/p-BPG0r_mC.js.map +0 -1
  313. package/dist/components/p-BS0AbMNK.js.map +0 -1
  314. package/dist/components/p-BUDAwJVV.js.map +0 -1
  315. package/dist/components/p-BZVWmzKf.js +0 -2
  316. package/dist/components/p-BZVWmzKf.js.map +0 -1
  317. package/dist/components/p-Bbb9A3NV.js.map +0 -1
  318. package/dist/components/p-BhYS_Ump.js +0 -2
  319. package/dist/components/p-BhYS_Ump.js.map +0 -1
  320. package/dist/components/p-BknXYAEc.js.map +0 -1
  321. package/dist/components/p-BxGQ3cRJ.js +0 -2
  322. package/dist/components/p-BxGQ3cRJ.js.map +0 -1
  323. package/dist/components/p-BysVBVQv.js +0 -2
  324. package/dist/components/p-BysVBVQv.js.map +0 -1
  325. package/dist/components/p-C-Y7gYgz.js.map +0 -1
  326. package/dist/components/p-C6DNhlES.js.map +0 -1
  327. package/dist/components/p-C6R5Lft0.js.map +0 -1
  328. package/dist/components/p-C9gC4haA.js.map +0 -1
  329. package/dist/components/p-CAnnQL1F.js +0 -2
  330. package/dist/components/p-CAnnQL1F.js.map +0 -1
  331. package/dist/components/p-CJq3n5kA.js.map +0 -1
  332. package/dist/components/p-CY4YFAT3.js.map +0 -1
  333. package/dist/components/p-Cg0kimXZ.js +0 -2
  334. package/dist/components/p-Cg0kimXZ.js.map +0 -1
  335. package/dist/components/p-CsBICYmt.js.map +0 -1
  336. package/dist/components/p-CwjVgUqy.js +0 -2
  337. package/dist/components/p-Cxr0IQjC.js.map +0 -1
  338. package/dist/components/p-D3fMaUJ3.js.map +0 -1
  339. package/dist/components/p-D7R4yE2C.js +0 -2
  340. package/dist/components/p-D7R4yE2C.js.map +0 -1
  341. package/dist/components/p-DAvh38E4.js +0 -2
  342. package/dist/components/p-DAvh38E4.js.map +0 -1
  343. package/dist/components/p-DBue3ISk.js.map +0 -1
  344. package/dist/components/p-DDgeXGbB.js.map +0 -1
  345. package/dist/components/p-DFQ9mcbK.js.map +0 -1
  346. package/dist/components/p-DNpLDbWY.js.map +0 -1
  347. package/dist/components/p-DOUDRJbE.js +0 -2
  348. package/dist/components/p-DUdOmSFR.js +0 -2
  349. package/dist/components/p-DaAXY-XS.js.map +0 -1
  350. package/dist/components/p-DlYw4UGQ.js +0 -2
  351. package/dist/components/p-DlYw4UGQ.js.map +0 -1
  352. package/dist/components/p-DtndC9f1.js +0 -2
  353. package/dist/components/p-DtndC9f1.js.map +0 -1
  354. package/dist/components/p-JPTkZ3Ji.js +0 -2
  355. package/dist/components/p-ZpQBAwZC.js.map +0 -1
  356. package/dist/components/p-ag6Io-kL.js +0 -2
  357. package/dist/components/p-ag6Io-kL.js.map +0 -1
  358. package/dist/components/p-fg9EKoZp.js +0 -2
  359. package/dist/components/p-fg9EKoZp.js.map +0 -1
  360. package/dist/components/p-iMuFgSoM.js +0 -2
  361. package/dist/components/p-iMuFgSoM.js.map +0 -1
  362. package/dist/components/p-r8PMqlqm.js.map +0 -1
  363. /package/dist/components/{p-uI6z53BE.js.map → p-Bb4KnRy0.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DATE_FILTER_RELATIVE_PRESETS","label","value","days","offset","ISO_DATE_PATTERN","isIsoCalendarDate","test","year","month","day","split","map","Number","date","Date","UTC","getUTCFullYear","getUTCMonth","getUTCDate","shiftIsoCalendarDate","toISOString","slice","dateFilterRelativeValue","preset","dateFilterRangeValue","start","end","ordered","parseDateFilterValue","startsWith","length","some","candidate","kind","rest","FILTER_MENU_WEEKDAYS","MONTH_FORMATTER","Intl","DateTimeFormat","timeZone","DATE_FORMATTER","weekday","filterMenuToday","today","getFullYear","String","getMonth","padStart","getDate","filterMenuCalendarMonth","shiftFilterMenuCalendarMonth","filterMenuCalendarMonthLabel","format","filterMenuCalendarDays","firstOfMonth","firstWeekday","getUTCDay","gridStart","Array","from","_","index","dateValue","inMonth","filterMenuCss","filterMenuId","ICON_SIZE","lg","md","sm","xs","DATE_MODE_TABS","id","RELATIVE_DATE_OPTIONS","FilterMenu","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","open","triggerLabel","showSelectedCount","icon","size","width","hasBorder","activeFill","collapseLabel","ariaLabel","filters","values","side","align","sideOffset","TOKEN_CSS_LENGTHS","space050","alignOffset","menuWidth","menuWidthLg","menuLabel","categoriesLabel","clearLabel","footerLayout","initialFocusVisible","shouldRender","closing","positionReady","pos","x","y","focusRingVisible","activeOptionIndex","captionCompact","dateModeByFilter","calendarMonthByFilter","pendingRangeStartByFilter","generatedId","triggerElement","pendingInitialFocusVisible","closeTimer","hasLoaded","closingSnapshot","position","AnchoredPositionController","getAnchor","resolvedAnchor","getPopup","el","querySelector","getOwnerDocument","ownerDocument","measure","anchor","popup","anchorRect","getBoundingClientRect","sectionInsetPx","resolveCssLengthPx","TOKEN_DEFAULTS","popupWidth","offsetWidth","popupFallbackWidth","popupHeight","offsetHeight","popupFallbackHeight","sideOffsetPx","alignOffsetPx","resolveChoicePopupAlignOffset","viewportPadPx","viewportPad","viewportWidth","window","innerWidth","viewportHeight","innerHeight","collisionRect","resolveAnchoredOverlayBoundaryRect","boundary","apply","onReady","liveUpdate","observeResize","topLayer","interaction","AnchoredOverlayInteractionController","onOutsideActivation","close","componentDidLoad","syncCaptionCompactObserver","onOpenChange","connectedCallback","disconnectedCallback","disconnectCaptionCompactObserver","unobserve","teardownListeners","onCollapseLabelChange","isOpen","setupListeners","schedule","focusInitialCategory","cancel","captureClosingSnapshot","duration","resolveMotionTimeMs","motionShort2","animationDurationShort3","finishClose","setTimeout","onPositionInputChange","handleKeyDown","event","key","preventDefault","tabLeavesPopup","moveFocusAfterTab","shiftKey","anchorId","document","getElementById","usesInternalTrigger","menuFallbackHeight","connect","observe","disconnect","clearTimeout","restoreFocus","focusAnchor","dsOpenChange","emit","dsClose","toggleFromTrigger","detail","handleTriggerKeyDown","matches","hidePopover","dsAfterClose","filter","options","option","Object","fromEntries","entries","isArray","activeFilterId","requestAnimationFrame","focus","selectedFilter","find","selectedCount","totalSelected","reduce","total","activeFilterCount","selectCategory","filterId","dsActiveFilterChange","handleCategoryKeyDown","currentIndex","findIndex","nextIndex","handlePanelKeyDown","handleOptionKeyDown","selectOption","includes","enabled","optionIndex","isInactive","current","indexOf","next","direction","toggleMultiple","checked","selected","Set","add","delete","has","dsChange","dateMode","setDateMode","mode","parsed","initialDate","calendarMonth","moveCalendarMonth","selectCalendarDate","pendingStart","focusCalendarDate","targetMonth","handleCalendarDayKeyDown","target","renderRelativeDateOptions","relativeFilter","h","class","role","ChoiceOptionRow","active","usesSubtext","tabIndex","onFocus","onKeyDown","onHover","onSelect","renderDateCalendar","range","preferredFocus","focusDate","variant","onDsClick","as","emphasis","color","inRange","Boolean","rangeEdge","textColor","type","onClick","renderDateFilter","tabs","onDsChange","stopPropagation","renderOptions","choiceListUsesSubtext","subtext","description","isSelected","leading","presentation","undefined","fieldLabel","captionIconOnly","captionCompactDisconnect","observeTableCaptionCompact","compact","renderCaptionTooltip","trigger","renderFooter","categoriesClear","dsClear","render","state","activeFilter","hasActiveFilters","categoriesClearFooter","textVariant","CONTROL_TEXT_VARIANT","iconSize","popupId","popupStyle","left","top","transform","Math","round","zIndex","visibility","Host","controlWidthClass","ref","element","inputId","name","lineTruncation","popover","style","count","divider","onMouseDown","hasRing","intent","contrast","isInset","rounded"],"sources":["src/wc/utils/date-filter-value.ts","src/wc/components/FilterMenu/filter-menu-calendar.ts","src/wc/components/FilterMenu/FilterMenu.css?tag=ds-filter-menu&encapsulation=scoped","src/wc/components/FilterMenu/FilterMenu.tsx"],"sourcesContent":["export const DATE_FILTER_RELATIVE_PRESETS = [\n { label: 'Today', value: 'today', days: 1, offset: 0 },\n { label: 'Yesterday', value: 'yesterday', days: 1, offset: -1 },\n { label: 'Last 7 days', value: 'last-7-days', days: 7, offset: 0 },\n { label: 'Last 14 days', value: 'last-14-days', days: 14, offset: 0 },\n { label: 'Last 30 days', value: 'last-30-days', days: 30, offset: 0 },\n { label: 'Last 60 days', value: 'last-60-days', days: 60, offset: 0 },\n { label: 'Last 90 days', value: 'last-90-days', days: 90, offset: 0 },\n] as const;\n\nexport type DateFilterRelativePreset = (typeof DATE_FILTER_RELATIVE_PRESETS)[number]['value'];\nexport type DateFilterRelativeValue = `relative:${DateFilterRelativePreset}`;\nexport type DateFilterRangeValue = `range:${string}/${string}`;\nexport type DateFilterValue = DateFilterRelativeValue | DateFilterRangeValue;\n\nexport interface DateFilterRange {\n start: string;\n end: string;\n}\n\nexport type ParsedDateFilterValue =\n | { kind: 'relative'; preset: DateFilterRelativePreset }\n | ({ kind: 'range' } & DateFilterRange);\n\nconst ISO_DATE_PATTERN = /^\\d{4}-\\d{2}-\\d{2}$/;\n\nexport function isIsoCalendarDate(value: string): boolean {\n if (!ISO_DATE_PATTERN.test(value)) return false;\n const [year, month, day] = value.split('-').map(Number);\n const date = new Date(Date.UTC(year, month - 1, day));\n return (\n date.getUTCFullYear() === year && date.getUTCMonth() === month - 1 && date.getUTCDate() === day\n );\n}\n\nexport function shiftIsoCalendarDate(value: string, days: number): string {\n if (!isIsoCalendarDate(value)) return '';\n const [year, month, day] = value.split('-').map(Number);\n const date = new Date(Date.UTC(year, month - 1, day + days));\n return date.toISOString().slice(0, 10);\n}\n\nexport function dateFilterRelativeValue(preset: DateFilterRelativePreset): DateFilterRelativeValue {\n return `relative:${preset}`;\n}\n\nexport function dateFilterRangeValue(start: string, end: string = start): DateFilterRangeValue {\n const ordered = start <= end ? [start, end] : [end, start];\n return `range:${ordered[0]}/${ordered[1]}`;\n}\n\nexport function parseDateFilterValue(value: unknown): ParsedDateFilterValue | null {\n if (typeof value !== 'string' || !value) return null;\n\n if (value.startsWith('relative:')) {\n const preset = value.slice('relative:'.length) as DateFilterRelativePreset;\n return DATE_FILTER_RELATIVE_PRESETS.some(candidate => candidate.value === preset)\n ? { kind: 'relative', preset }\n : null;\n }\n\n if (value.startsWith('range:')) {\n const [start, end, ...rest] = value.slice('range:'.length).split('/');\n if (rest.length || !isIsoCalendarDate(start) || !isIsoCalendarDate(end)) return null;\n return start <= end ? { kind: 'range', start, end } : { kind: 'range', start: end, end: start };\n }\n\n // Preserve the previous single-date contract as a one-day range.\n return isIsoCalendarDate(value) ? { kind: 'range', start: value, end: value } : null;\n}\n\nexport function normalizeDateFilterValue(value: unknown): DateFilterValue | '' {\n const parsed = parseDateFilterValue(value);\n if (!parsed) return '';\n return parsed.kind === 'relative'\n ? dateFilterRelativeValue(parsed.preset)\n : dateFilterRangeValue(parsed.start, parsed.end);\n}\n\nexport function resolveDateFilterRange(\n value: unknown,\n referenceDate: string\n): DateFilterRange | null {\n if (!isIsoCalendarDate(referenceDate)) return null;\n const parsed = parseDateFilterValue(value);\n if (!parsed) return null;\n if (parsed.kind === 'range') return { start: parsed.start, end: parsed.end };\n\n const preset = DATE_FILTER_RELATIVE_PRESETS.find(candidate => candidate.value === parsed.preset);\n if (!preset) return null;\n const end = shiftIsoCalendarDate(referenceDate, preset.offset);\n return { start: shiftIsoCalendarDate(end, -(preset.days - 1)), end };\n}\n","import { isIsoCalendarDate, shiftIsoCalendarDate } from '../../utils';\n\nexport interface FilterMenuCalendarDay {\n value: string;\n day: number;\n inMonth: boolean;\n label: string;\n}\n\nexport const FILTER_MENU_WEEKDAYS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\nconst MONTH_FORMATTER = new Intl.DateTimeFormat('en-US', {\n month: 'long',\n year: 'numeric',\n timeZone: 'UTC',\n});\nconst DATE_FORMATTER = new Intl.DateTimeFormat('en-US', {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n timeZone: 'UTC',\n});\n\nexport function filterMenuToday(): string {\n const today = new Date();\n const year = today.getFullYear();\n const month = String(today.getMonth() + 1).padStart(2, '0');\n const day = String(today.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n}\n\nexport function filterMenuCalendarMonth(value: string): string {\n return isIsoCalendarDate(value) ? value.slice(0, 7) : filterMenuToday().slice(0, 7);\n}\n\nexport function shiftFilterMenuCalendarMonth(value: string, offset: number): string {\n const [year, month] = value.split('-').map(Number);\n const date = new Date(Date.UTC(year, month - 1 + offset, 1));\n return `${date.getUTCFullYear()}-${String(date.getUTCMonth() + 1).padStart(2, '0')}`;\n}\n\nexport function filterMenuCalendarMonthLabel(value: string): string {\n const [year, month] = value.split('-').map(Number);\n return MONTH_FORMATTER.format(new Date(Date.UTC(year, month - 1, 1)));\n}\n\nexport function filterMenuCalendarDays(value: string): FilterMenuCalendarDay[] {\n const [year, month] = value.split('-').map(Number);\n const firstOfMonth = `${year}-${String(month).padStart(2, '0')}-01`;\n const firstWeekday = new Date(`${firstOfMonth}T00:00:00Z`).getUTCDay();\n const gridStart = shiftIsoCalendarDate(firstOfMonth, -firstWeekday);\n return Array.from({ length: 42 }, (_, index) => {\n const dateValue = shiftIsoCalendarDate(gridStart, index);\n const date = new Date(`${dateValue}T00:00:00Z`);\n return {\n value: dateValue,\n day: date.getUTCDate(),\n inMonth: dateValue.startsWith(`${value}-`),\n label: DATE_FORMATTER.format(date),\n };\n });\n}\n","@import '../../utils/choice-list.css';\n@import '../../utils/chrome-header.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/control-width.css';\n@import '../../utils/select-trigger.css';\n@import '../../utils/table-caption-control.css';\n\n:host(.filter-menu-host--external-trigger) {\n display: contents;\n}\n\n.filter-menu {\n display: flex;\n min-height: 0;\n flex-direction: column;\n color: var(--color-foreground-secondary);\n}\n\n.filter-menu__body {\n display: grid;\n grid-template-columns: var(--dimension-menu-width-xs) var(--dimension-menu-width-sm);\n min-height: calc(var(--dimension-size-800) * 4 + var(--dimension-space-150));\n max-height: calc(100vh - var(--dimension-size-800) - var(--dimension-size-600));\n}\n\n.filter-menu__category-pane {\n display: flex;\n min-width: 0;\n min-height: 0;\n flex-direction: column;\n border-inline-end: var(--dimension-stroke-width-012) solid var(--color-border-tertiary);\n}\n\n.filter-menu__categories {\n flex: 1 1 auto;\n min-width: 0;\n}\n\n.filter-menu__category-section {\n display: flex;\n min-width: 0;\n flex-direction: column;\n}\n\n.filter-menu__category-section.ds-choice-section--divided {\n padding-block-end: var(--dimension-space-050);\n}\n\n.filter-menu__category {\n justify-content: space-between;\n width: 100%;\n border: 0;\n background: transparent;\n color: var(--color-foreground-secondary);\n cursor: default;\n text-align: start;\n}\n\n.filter-menu__category--active {\n color: var(--color-foreground-primary);\n}\n\n.filter-menu__category-dot-box {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--ds-control-icon, var(--dimension-iconography-md));\n height: var(--ds-control-icon, var(--dimension-iconography-md));\n pointer-events: none;\n}\n\n.filter-menu__options {\n min-width: 0;\n overflow: hidden;\n}\n\n.filter-menu__options--date,\n.filter-menu__option-list--date,\n.filter-menu__date {\n display: flex;\n min-width: 0;\n min-height: 0;\n flex-direction: column;\n}\n\n.filter-menu__option-list--date,\n.filter-menu__date {\n flex: 1 1 auto;\n}\n\n.filter-menu__date-header {\n flex: 0 0 var(--dimension-size-600);\n justify-content: center;\n}\n\n.filter-menu__date-body {\n display: flex;\n flex: 1 1 auto;\n min-height: 0;\n flex-direction: column;\n}\n\n.filter-menu__date-relative {\n flex: 1 1 auto;\n}\n\n.filter-menu__calendar {\n display: flex;\n min-height: 0;\n flex-direction: column;\n padding: var(--dimension-space-100);\n}\n\n.filter-menu__calendar-heading {\n display: grid;\n grid-template-columns: var(--dimension-size-400) minmax(0, 1fr) var(--dimension-size-400);\n align-items: center;\n text-align: center;\n}\n\n.filter-menu__calendar-nav--previous {\n justify-self: start;\n}\n\n.filter-menu__calendar-nav--next {\n justify-self: end;\n}\n\n.filter-menu__calendar-weekdays,\n.filter-menu__calendar-grid {\n display: grid;\n grid-template-columns: repeat(7, minmax(0, 1fr));\n column-gap: var(--dimension-space-050);\n}\n\n.filter-menu__calendar-grid {\n row-gap: var(--dimension-space-050);\n}\n\n.filter-menu__calendar-weekdays {\n align-items: center;\n min-height: var(--dimension-size-400);\n margin-block-start: var(--dimension-space-050);\n color: var(--color-foreground-secondary);\n text-align: center;\n}\n\n.filter-menu__calendar-day {\n appearance: none;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: 0;\n width: 100%;\n height: var(--dimension-size-400);\n padding: 0;\n border: 0;\n border-radius: var(--dimension-radius-025);\n background: transparent;\n color: var(--color-foreground-primary);\n cursor: default;\n}\n\n.filter-menu__calendar-day--outside {\n color: var(--color-foreground-tertiary);\n}\n\n.filter-menu__calendar-day--in-range {\n background: var(--color-background-faint-brand);\n color: var(--color-foreground-primary);\n}\n\n.filter-menu__calendar-day--today {\n color: var(--color-foreground-primary);\n}\n\n.filter-menu__calendar-day--range-edge {\n background: var(--color-background-bold-brand);\n color: var(--color-foreground-on-bold-background-primary);\n}\n\n.filter-menu__footer {\n flex: 0 0 auto;\n}\n\n.filter-menu__footer--categories-clear .ds-choice-footer__content {\n justify-content: flex-start;\n}\n\n.filter-menu__footer--categories-clear[aria-hidden='true']::before {\n visibility: hidden;\n}\n\n.filter-menu__clear {\n color: var(--color-foreground-bold-brand);\n}\n\n@media (forced-colors: active) {\n .filter-menu__category-pane {\n border-inline-end-color: var(--ds-forced-color-content);\n }\n\n .filter-menu__calendar-day--range-edge {\n outline: var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n type VNode,\n Watch,\n} from '@stencil/core';\nimport {\n CONTROL_TEXT_VARIANT,\n DATE_FILTER_RELATIVE_PRESETS,\n controlWidthClass,\n dateFilterRangeValue,\n dateFilterRelativeValue,\n parseDateFilterValue,\n resolveChoicePopupAlignOffset,\n resolveCssLengthPx,\n resolveMotionTimeMs,\n shiftIsoCalendarDate,\n TOKEN_CSS_LENGTHS,\n TOKEN_DEFAULTS,\n type ControlWidth,\n} from '../../utils';\nimport { observeTableCaptionCompact } from '../../utils/table-caption-compact';\nimport type { AnchoredAlign, AnchoredSide } from '../../utils/anchored-position';\nimport { AnchoredPositionController } from '../../utils/anchored-position-controller';\nimport { AnchoredOverlayInteractionController } from '../../utils/anchored-overlay-interaction-controller';\nimport { resolveAnchoredOverlayBoundaryRect } from '../../utils/anchored-overlay-boundary';\nimport { ChoiceOptionRow } from '../../utils/choice-list-parts';\nimport { choiceListUsesSubtext } from '../../utils/choice-list';\nimport {\n FILTER_MENU_WEEKDAYS,\n filterMenuCalendarDays,\n filterMenuCalendarMonth,\n filterMenuCalendarMonthLabel,\n filterMenuToday,\n shiftFilterMenuCalendarMonth,\n} from './filter-menu-calendar';\n\nexport type FilterMenuFilterKind = 'single' | 'multiple' | 'boolean' | 'date';\nexport type FilterMenuSize = 'lg' | 'md' | 'sm' | 'xs';\nexport type FilterMenuWidth = ControlWidth;\nexport type FilterMenuFooterLayout = 'summary' | 'categories-clear';\ntype FilterMenuDateMode = 'range' | 'relative';\n\nexport interface FilterMenuOption {\n label: string;\n value: string;\n description?: string;\n isInactive?: boolean;\n}\n\nexport interface FilterMenuFilter {\n id: string;\n label: string;\n kind: FilterMenuFilterKind;\n options?: FilterMenuOption[];\n description?: string;\n fieldLabel?: string;\n /** Draw a standard menu-section divider after this category. */\n divider?: boolean;\n}\n\nexport type FilterMenuValue = string[] | boolean | string;\nexport type FilterMenuValues = Record<string, FilterMenuValue | undefined>;\n\nexport interface FilterMenuChangeDetail {\n filterId: string;\n value: FilterMenuValue;\n}\n\nlet filterMenuId = 0;\n\nconst ICON_SIZE: Record<FilterMenuSize, 'lg' | 'md' | 'sm' | 'xs'> = {\n lg: 'lg',\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n};\n\nconst DATE_MODE_TABS = [\n { id: 'relative', label: 'Relative' },\n { id: 'range', label: 'Range' },\n];\n\nconst RELATIVE_DATE_OPTIONS: FilterMenuOption[] = DATE_FILTER_RELATIVE_PRESETS.map(preset => ({\n label: preset.label,\n value: dateFilterRelativeValue(preset.value),\n}));\n\n@Component({\n tag: 'ds-filter-menu',\n styleUrl: 'FilterMenu.css',\n scoped: true,\n})\nexport class FilterMenu {\n @Element() el!: HTMLElement;\n\n /** Controlled popup visibility. */\n @Prop({ mutable: true }) open: boolean = false;\n /** Select trigger text. */\n @Prop() triggerLabel: string = 'Filters';\n /** Append the active-filter count to the visible trigger label. */\n @Prop() showSelectedCount: boolean = true;\n /** Optional select trigger prefix icon name. */\n @Prop() icon: string | undefined = 'Filters';\n /** Select trigger density. */\n @Prop() size: FilterMenuSize = 'md';\n /** Select trigger width fit. */\n @Prop() width: FilterMenuWidth = 'hug';\n /** Show the surface-aware inset border around the select trigger. */\n @Prop() hasBorder: boolean = true;\n /** Show selected interaction fill when one or more criteria are active. */\n @Prop() activeFill: boolean = false;\n /**\n * Opt into table-caption icon-only chrome below 900px. The trigger omits its\n * visible label and chevron; keep an accessible name via aria-label.\n */\n @Prop({ reflect: true }) collapseLabel: boolean = false;\n /** ID applied to the internal select trigger. */\n @Prop() inputId: string | undefined;\n /** Direct accessible name for the internal select trigger. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** Product-owned filter categories and option definitions. */\n @Prop() filters: FilterMenuFilter[] = [];\n /** Controlled values keyed by filter id. */\n @Prop() values: FilterMenuValues = {};\n /** Controlled category shown in the option pane. */\n @Prop() activeFilterId: string | undefined;\n /** External trigger element to position against. */\n @Prop() anchor: HTMLElement | undefined;\n /** ID of the external trigger element used for positioning and focus return. */\n @Prop() anchorId: string | undefined;\n /** Explicit collision owner; otherwise the nearest data-ds-overlay-boundary ancestor is used. */\n @Prop() boundary: HTMLElement | undefined;\n /** Preferred popup side; collision handling may flip it. */\n @Prop() side: AnchoredSide = 'bottom';\n /** Cross-axis alignment against the trigger. */\n @Prop() align: AnchoredAlign = 'end';\n /** Gap between trigger and popup — number in px or a TokoMo length. */\n @Prop() sideOffset: number | string = TOKEN_CSS_LENGTHS.space050;\n /** Cross-axis offset — number in px or a TokoMo length. */\n @Prop() alignOffset: number | string = 0;\n /** Popup width. It remains clamped to its collision boundary by the component recipe. */\n @Prop() menuWidth: string = TOKEN_CSS_LENGTHS.menuWidthLg;\n /** Accessible name for the non-modal filter dialog. */\n @Prop() menuLabel: string = 'Filters';\n /** Accessible name for the category tab list. */\n @Prop() categoriesLabel: string = 'Filter categories';\n /** Footer action and date-clear accessible label. */\n @Prop() clearLabel: string = 'Clear';\n /** Footer recipe: full-width selected summary or reserved category-pane Clear action. */\n @Prop() footerLayout: FilterMenuFooterLayout = 'summary';\n /** Show a visible focus ring on initial entry after keyboard activation. */\n @Prop() initialFocusVisible: boolean = false;\n\n @State() private shouldRender = false;\n @State() private closing = false;\n @State() private positionReady = false;\n @State() private pos: { x: number; y: number } = { x: 0, y: 0 };\n @State() private focusRingVisible = false;\n @State() private activeOptionIndex = 0;\n @State() private captionCompact = false;\n @State() private dateModeByFilter: Record<string, FilterMenuDateMode> = {};\n @State() private calendarMonthByFilter: Record<string, string> = {};\n @State() private pendingRangeStartByFilter: Record<string, string> = {};\n\n /** Requests a controlled value replacement without closing the popup. */\n @Event() dsChange!: EventEmitter<FilterMenuChangeDetail>;\n /** Requests that the consumer clear every filter value. */\n @Event() dsClear!: EventEmitter<void>;\n /** Requests a controlled active-category replacement. */\n @Event() dsActiveFilterChange!: EventEmitter<string>;\n /** Requests that the controlled popup close. */\n @Event() dsClose!: EventEmitter<void>;\n /** Emitted whenever internal select-trigger activation changes popup visibility. */\n @Event() dsOpenChange!: EventEmitter<boolean>;\n /** Emitted after exit motion and rendered popup removal complete. */\n @Event() dsAfterClose!: EventEmitter<void>;\n\n private readonly generatedId = `ds-filter-menu-${++filterMenuId}`;\n private triggerElement: HTMLButtonElement | null = null;\n private pendingInitialFocusVisible = false;\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\n private captionCompactDisconnect: (() => void) | undefined;\n private hasLoaded = false;\n private closingSnapshot: {\n filters: FilterMenuFilter[];\n values: FilterMenuValues;\n activeFilterId: string | undefined;\n } | null = null;\n\n private readonly position = new AnchoredPositionController({\n getAnchor: () => this.resolvedAnchor,\n getPopup: () => this.el.querySelector<HTMLElement>('.filter-menu-popup'),\n getOwnerDocument: () => this.el.ownerDocument,\n measure: (anchor, popup) => {\n if (!this.open) return null;\n const anchorRect = anchor.getBoundingClientRect();\n const sectionInsetPx = resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n return {\n anchorRect,\n popupWidth: popup.offsetWidth || this.popupFallbackWidth,\n popupHeight: popup.offsetHeight || this.popupFallbackHeight,\n side: this.side,\n align: this.align,\n sideOffsetPx: resolveCssLengthPx(this.sideOffset, TOKEN_DEFAULTS.space050),\n alignOffsetPx: resolveChoicePopupAlignOffset({\n align: this.align,\n alignOffsetPx: resolveCssLengthPx(this.alignOffset, 0),\n sectionInsetPx,\n }),\n viewportPadPx: this.viewportPad,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(anchor, this.boundary),\n };\n },\n apply: ({ x, y }) => {\n this.pos = { x, y };\n },\n onReady: () => {\n this.positionReady = true;\n },\n liveUpdate: 'double-frame',\n observeResize: true,\n topLayer: true,\n });\n private readonly interaction = new AnchoredOverlayInteractionController({\n getAnchor: () => this.resolvedAnchor,\n getPopup: () => this.el.querySelector<HTMLElement>('.filter-menu-popup'),\n getOwnerDocument: () => this.el.ownerDocument,\n onOutsideActivation: () => this.close(),\n });\n\n componentDidLoad() {\n this.hasLoaded = true;\n this.syncCaptionCompactObserver();\n if (this.open) this.onOpenChange(true);\n }\n\n connectedCallback() {\n if (!this.hasLoaded) return;\n this.syncCaptionCompactObserver();\n if (this.open) this.onOpenChange(true);\n }\n\n disconnectedCallback() {\n this.disconnectCaptionCompactObserver();\n this.position.unobserve();\n this.teardownListeners();\n }\n\n @Watch('collapseLabel')\n onCollapseLabelChange() {\n this.syncCaptionCompactObserver();\n }\n\n @Watch('open')\n onOpenChange(isOpen: boolean) {\n if (isOpen) {\n this.teardownListeners();\n this.closingSnapshot = null;\n this.shouldRender = true;\n this.closing = false;\n this.positionReady = false;\n this.focusRingVisible = this.pendingInitialFocusVisible || this.initialFocusVisible;\n this.setupListeners();\n this.position.schedule(() => this.focusInitialCategory());\n return;\n }\n\n if (!this.shouldRender) return;\n this.position.cancel();\n this.captureClosingSnapshot();\n this.closing = true;\n this.teardownListeners();\n const duration = resolveMotionTimeMs(\n TOKEN_DEFAULTS.motionShort2,\n TOKEN_DEFAULTS.animationDurationShort3\n );\n if (duration <= 0) {\n this.finishClose();\n return;\n }\n this.closeTimer = setTimeout(() => this.finishClose(), duration);\n }\n\n @Watch('anchor')\n @Watch('anchorId')\n @Watch('boundary')\n @Watch('side')\n @Watch('align')\n @Watch('sideOffset')\n @Watch('alignOffset')\n @Watch('menuWidth')\n onPositionInputChange() {\n if (this.open) this.position.schedule();\n }\n\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (!this.shouldRender || this.closing) return;\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n return;\n }\n if (event.key !== 'Tab' || !this.tabLeavesPopup(event)) return;\n event.preventDefault();\n this.close(false);\n this.interaction.moveFocusAfterTab(event.shiftKey);\n }\n\n private get resolvedAnchor(): HTMLElement | null {\n if (this.anchor) return this.anchor;\n if (this.anchorId) return document.getElementById(this.anchorId);\n return this.triggerElement;\n }\n\n private get usesInternalTrigger(): boolean {\n return !this.anchor && !this.anchorId;\n }\n\n private get viewportPad(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n }\n\n private get popupFallbackWidth(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.menuWidthLg, TOKEN_DEFAULTS.menuWidthLg);\n }\n\n private get popupFallbackHeight(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.menuFallbackHeight, TOKEN_DEFAULTS.menuFallbackHeight);\n }\n\n private setupListeners() {\n this.interaction.connect();\n this.position.observe();\n }\n\n private teardownListeners() {\n this.position.unobserve();\n this.interaction.disconnect();\n if (this.closeTimer) {\n clearTimeout(this.closeTimer);\n this.closeTimer = null;\n }\n }\n\n private close(restoreFocus = true) {\n this.captureClosingSnapshot();\n if (restoreFocus) this.interaction.focusAnchor();\n this.dsOpenChange.emit(false);\n this.dsClose.emit();\n this.open = false;\n this.onOpenChange(false);\n }\n\n private toggleFromTrigger(event: MouseEvent) {\n if (this.open) {\n this.close();\n return;\n }\n this.pendingInitialFocusVisible = event.detail === 0;\n this.open = true;\n this.dsOpenChange.emit(true);\n this.onOpenChange(true);\n }\n\n private handleTriggerKeyDown(event: KeyboardEvent) {\n if (event.key !== 'ArrowDown' || this.open) return;\n event.preventDefault();\n this.pendingInitialFocusVisible = true;\n this.open = true;\n this.dsOpenChange.emit(true);\n this.onOpenChange(true);\n }\n\n private finishClose() {\n const popup = this.el.querySelector<HTMLElement>('.filter-menu-popup');\n if (popup?.matches(':popover-open')) popup.hidePopover();\n this.shouldRender = false;\n this.closing = false;\n this.closingSnapshot = null;\n this.closeTimer = null;\n this.dateModeByFilter = {};\n this.calendarMonthByFilter = {};\n this.pendingRangeStartByFilter = {};\n this.dsAfterClose.emit();\n }\n\n private captureClosingSnapshot() {\n if (this.closingSnapshot) return;\n this.closingSnapshot = {\n filters: this.filters.map(filter => ({\n ...filter,\n options: filter.options?.map(option => ({ ...option })),\n })),\n values: Object.fromEntries(\n Object.entries(this.values).map(([key, value]) => [\n key,\n Array.isArray(value) ? [...value] : value,\n ])\n ),\n activeFilterId: this.activeFilterId,\n };\n }\n\n private focusInitialCategory() {\n requestAnimationFrame(() => {\n this.el.querySelector<HTMLElement>('.filter-menu__category[tabindex=\"0\"]')?.focus();\n this.pendingInitialFocusVisible = false;\n });\n }\n\n private tabLeavesPopup(event: KeyboardEvent): boolean {\n return this.interaction.tabLeavesPopup(event);\n }\n\n private selectedFilter(filters: FilterMenuFilter[], activeFilterId: string | undefined) {\n return filters.find(filter => filter.id === activeFilterId) ?? filters[0];\n }\n\n private selectedCount(filter: FilterMenuFilter, values: FilterMenuValues): number {\n const value = values[filter.id];\n if (filter.kind === 'multiple') return Array.isArray(value) ? value.length : 0;\n if (filter.kind === 'boolean') return value === true ? 1 : 0;\n return typeof value === 'string' && value.length > 0 ? 1 : 0;\n }\n\n private totalSelected(filters: FilterMenuFilter[], values: FilterMenuValues): number {\n return filters.reduce((total, filter) => total + this.selectedCount(filter, values), 0);\n }\n\n private activeFilterCount(filters: FilterMenuFilter[], values: FilterMenuValues): number {\n return filters.filter(filter => this.selectedCount(filter, values) > 0).length;\n }\n\n private selectCategory(filterId: string, focus = false) {\n this.activeOptionIndex = 0;\n this.dsActiveFilterChange.emit(filterId);\n if (!focus) return;\n requestAnimationFrame(() => {\n this.el.querySelector<HTMLElement>(`[data-filter-category=\"${filterId}\"]`)?.focus();\n });\n }\n\n private handleCategoryKeyDown(\n event: KeyboardEvent,\n filters: FilterMenuFilter[],\n filterId: string\n ) {\n const currentIndex = filters.findIndex(filter => filter.id === filterId);\n let nextIndex: number;\n if (event.key === 'ArrowDown') nextIndex = (currentIndex + 1) % filters.length;\n else if (event.key === 'ArrowUp')\n nextIndex = (currentIndex - 1 + filters.length) % filters.length;\n else if (event.key === 'Home') nextIndex = 0;\n else if (event.key === 'End') nextIndex = filters.length - 1;\n else if (event.key === 'ArrowRight') {\n event.preventDefault();\n requestAnimationFrame(() => {\n this.el\n .querySelector<HTMLElement>(\n '.filter-menu__options [role=\"option\"], .filter-menu__options [data-date-option], .filter-menu__options input'\n )\n ?.focus();\n });\n return;\n } else return;\n\n event.preventDefault();\n this.focusRingVisible = true;\n this.selectCategory(filters[nextIndex].id, true);\n }\n\n private handlePanelKeyDown(event: KeyboardEvent, filterId: string) {\n if (event.key !== 'ArrowLeft') return;\n event.preventDefault();\n this.el.querySelector<HTMLElement>(`[data-filter-category=\"${filterId}\"]`)?.focus();\n }\n\n private handleOptionKeyDown(\n event: KeyboardEvent,\n filter: FilterMenuFilter,\n option: FilterMenuOption,\n index: number,\n values: FilterMenuValues\n ) {\n const options = filter.options ?? [];\n if (event.key === 'ArrowLeft') {\n this.handlePanelKeyDown(event, filter.id);\n return;\n }\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.selectOption(filter, option, values);\n return;\n }\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) return;\n event.preventDefault();\n const enabled = options\n .map((candidate, optionIndex) => ({ candidate, optionIndex }))\n .filter(({ candidate }) => !candidate.isInactive)\n .map(({ optionIndex }) => optionIndex);\n if (!enabled.length) return;\n const current = enabled.indexOf(index);\n let next: number;\n if (event.key === 'Home') next = enabled[0];\n else if (event.key === 'End') next = enabled[enabled.length - 1];\n else {\n const direction = event.key === 'ArrowDown' ? 1 : -1;\n const start = current >= 0 ? current : direction === 1 ? -1 : 0;\n next = enabled[(start + direction + enabled.length) % enabled.length];\n }\n this.activeOptionIndex = next;\n this.focusRingVisible = true;\n requestAnimationFrame(() => {\n this.el\n .querySelector<HTMLElement>(`#${this.generatedId}-${filter.id}-option-${next}`)\n ?.focus();\n });\n }\n\n private toggleMultiple(\n filter: FilterMenuFilter,\n option: FilterMenuOption,\n checked: boolean,\n values: FilterMenuValues\n ) {\n if (option.isInactive) return;\n const current = Array.isArray(values[filter.id]) ? (values[filter.id] as string[]) : [];\n const selected = new Set(current);\n if (checked) selected.add(option.value);\n else selected.delete(option.value);\n const ordered = (filter.options ?? [])\n .map(candidate => candidate.value)\n .filter(value => selected.has(value));\n this.dsChange.emit({ filterId: filter.id, value: ordered });\n }\n\n private selectOption(\n filter: FilterMenuFilter,\n option: FilterMenuOption,\n values: FilterMenuValues\n ) {\n if (option.isInactive) return;\n if (filter.kind === 'single') {\n this.dsChange.emit({ filterId: filter.id, value: option.value });\n return;\n }\n const selected = Array.isArray(values[filter.id])\n ? (values[filter.id] as string[]).includes(option.value)\n : false;\n this.toggleMultiple(filter, option, !selected, values);\n }\n\n private dateMode(filterId: string, value: FilterMenuValue | undefined): FilterMenuDateMode {\n return this.dateModeByFilter[filterId] ?? parseDateFilterValue(value)?.kind ?? 'relative';\n }\n\n private setDateMode(filter: FilterMenuFilter, value: FilterMenuValue | undefined, mode: string) {\n if (mode !== 'range' && mode !== 'relative') return;\n this.dateModeByFilter = { ...this.dateModeByFilter, [filter.id]: mode };\n this.activeOptionIndex = 0;\n if (mode === 'range' && !this.calendarMonthByFilter[filter.id]) {\n const parsed = parseDateFilterValue(value);\n const initialDate = parsed?.kind === 'range' ? parsed.start : filterMenuToday();\n this.calendarMonthByFilter = {\n ...this.calendarMonthByFilter,\n [filter.id]: filterMenuCalendarMonth(initialDate),\n };\n }\n if (mode === 'relative' && this.pendingRangeStartByFilter[filter.id]) {\n const next = { ...this.pendingRangeStartByFilter };\n delete next[filter.id];\n this.pendingRangeStartByFilter = next;\n }\n }\n\n private calendarMonth(filterId: string, value: FilterMenuValue | undefined): string {\n const parsed = parseDateFilterValue(value);\n const initialDate = parsed?.kind === 'range' ? parsed.start : filterMenuToday();\n return this.calendarMonthByFilter[filterId] ?? filterMenuCalendarMonth(initialDate);\n }\n\n private moveCalendarMonth(filterId: string, month: string, offset: number) {\n this.calendarMonthByFilter = {\n ...this.calendarMonthByFilter,\n [filterId]: shiftFilterMenuCalendarMonth(month, offset),\n };\n }\n\n private selectCalendarDate(filterId: string, value: string) {\n const pendingStart = this.pendingRangeStartByFilter[filterId];\n const next = { ...this.pendingRangeStartByFilter };\n if (pendingStart) delete next[filterId];\n else next[filterId] = value;\n this.pendingRangeStartByFilter = next;\n this.dsChange.emit({\n filterId,\n value: dateFilterRangeValue(pendingStart ?? value, value),\n });\n }\n\n private focusCalendarDate(filterId: string, value: string) {\n const targetMonth = filterMenuCalendarMonth(value);\n if (this.calendarMonthByFilter[filterId] !== targetMonth) {\n this.calendarMonthByFilter = { ...this.calendarMonthByFilter, [filterId]: targetMonth };\n }\n requestAnimationFrame(() => {\n this.el.querySelector<HTMLElement>(`[data-date-option=\"${value}\"]`)?.focus();\n });\n }\n\n private handleCalendarDayKeyDown(event: KeyboardEvent, filterId: string, value: string) {\n let offset: number | null = null;\n if (event.key === 'ArrowLeft') offset = -1;\n else if (event.key === 'ArrowRight') offset = 1;\n else if (event.key === 'ArrowUp') offset = -7;\n else if (event.key === 'ArrowDown') offset = 7;\n else if (event.key === 'Home') {\n offset = -new Date(`${value}T00:00:00Z`).getUTCDay();\n } else if (event.key === 'End') {\n offset = 6 - new Date(`${value}T00:00:00Z`).getUTCDay();\n } else if (event.key === 'PageUp') {\n const month = shiftFilterMenuCalendarMonth(filterMenuCalendarMonth(value), -1);\n const day = value.slice(8, 10);\n const candidate = `${month}-${day}`;\n const target = parseDateFilterValue(candidate) ? candidate : `${month}-01`;\n event.preventDefault();\n this.focusCalendarDate(filterId, target);\n return;\n } else if (event.key === 'PageDown') {\n const month = shiftFilterMenuCalendarMonth(filterMenuCalendarMonth(value), 1);\n const day = value.slice(8, 10);\n const candidate = `${month}-${day}`;\n const target = parseDateFilterValue(candidate) ? candidate : `${month}-01`;\n event.preventDefault();\n this.focusCalendarDate(filterId, target);\n return;\n }\n if (offset === null) return;\n event.preventDefault();\n this.focusCalendarDate(filterId, shiftIsoCalendarDate(value, offset));\n }\n\n private renderRelativeDateOptions(filter: FilterMenuFilter, value: FilterMenuValue | undefined) {\n const relativeFilter: FilterMenuFilter = {\n ...filter,\n kind: 'single',\n options: RELATIVE_DATE_OPTIONS,\n };\n return (\n <div\n class=\"filter-menu__date-relative ds-choice-list ds-chrome-column ds-chrome-space--sm\"\n role=\"listbox\"\n aria-label=\"Relative date\"\n >\n {RELATIVE_DATE_OPTIONS.map((option, index) => (\n <ChoiceOptionRow\n size=\"md\"\n id={`${this.generatedId}-${filter.id}-relative-${index}`}\n option={option}\n selected={value === option.value}\n active={index === this.activeOptionIndex}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={false}\n tabIndex={index === this.activeOptionIndex ? 0 : -1}\n onFocus={() => {\n this.activeOptionIndex = index;\n }}\n onKeyDown={(event: KeyboardEvent) =>\n this.handleOptionKeyDown(event, relativeFilter, option, index, {\n [filter.id]: value,\n })\n }\n onHover={() => {\n this.focusRingVisible = false;\n this.activeOptionIndex = index;\n }}\n onSelect={() => this.dsChange.emit({ filterId: filter.id, value: option.value })}\n />\n ))}\n </div>\n );\n }\n\n private renderDateCalendar(filter: FilterMenuFilter, value: FilterMenuValue | undefined) {\n const parsed = parseDateFilterValue(value);\n const range = parsed?.kind === 'range' ? parsed : null;\n const month = this.calendarMonth(filter.id, value);\n const days = filterMenuCalendarDays(month);\n const today = filterMenuToday();\n const preferredFocus =\n this.pendingRangeStartByFilter[filter.id] ??\n range?.end ??\n (month === today.slice(0, 7) ? today : '');\n const focusDate = days.some(day => day.value === preferredFocus)\n ? preferredFocus\n : (days.find(day => day.inMonth)?.value ?? days[0]?.value);\n\n return (\n <div class=\"filter-menu__calendar\">\n <div class=\"filter-menu__calendar-heading ds-control--md\">\n <ds-button-unfilled\n class=\"filter-menu__calendar-nav filter-menu__calendar-nav--previous\"\n variant=\"icon\"\n icon=\"ChevronLeft\"\n size=\"md\"\n hasBorder={false}\n ariaLabel=\"Previous month\"\n onDsClick={() => this.moveCalendarMonth(filter.id, month, -1)}\n />\n <ds-text as=\"span\" variant=\"text-body-medium\" emphasis color=\"primary\">\n {filterMenuCalendarMonthLabel(month)}\n </ds-text>\n <ds-button-unfilled\n class=\"filter-menu__calendar-nav filter-menu__calendar-nav--next\"\n variant=\"icon\"\n icon=\"ChevronRight\"\n size=\"md\"\n hasBorder={false}\n ariaLabel=\"Next month\"\n onDsClick={() => this.moveCalendarMonth(filter.id, month, 1)}\n />\n </div>\n <div class=\"filter-menu__calendar-weekdays\" aria-hidden=\"true\">\n {FILTER_MENU_WEEKDAYS.map(day => (\n <ds-text as=\"span\" variant=\"text-body-small\" color=\"secondary\">\n {day}\n </ds-text>\n ))}\n </div>\n <div\n class=\"filter-menu__calendar-grid\"\n role=\"grid\"\n aria-label={filterMenuCalendarMonthLabel(month)}\n >\n {days.map(day => {\n const inRange = Boolean(range && day.value >= range.start && day.value <= range.end);\n const rangeEdge = Boolean(\n range && (day.value === range.start || day.value === range.end)\n );\n const textColor = rangeEdge\n ? 'on-bold'\n : inRange || day.value === today\n ? 'primary'\n : day.inMonth\n ? 'secondary'\n : 'tertiary';\n return (\n <button\n type=\"button\"\n role=\"gridcell\"\n data-date-option={day.value}\n class={{\n 'filter-menu__calendar-day': true,\n 'filter-menu__calendar-day--outside': !day.inMonth,\n 'filter-menu__calendar-day--today': day.value === today,\n 'filter-menu__calendar-day--in-range': inRange,\n 'filter-menu__calendar-day--range-edge': rangeEdge,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n }}\n aria-label={day.label}\n aria-selected={inRange ? 'true' : 'false'}\n tabIndex={day.value === focusDate ? 0 : -1}\n onClick={() => this.selectCalendarDate(filter.id, day.value)}\n onKeyDown={(event: KeyboardEvent) =>\n this.handleCalendarDayKeyDown(event, filter.id, day.value)\n }\n >\n <ds-text\n class=\"ds-interaction-fill__content\"\n as=\"span\"\n variant=\"text-body-medium\"\n color={textColor}\n emphasis={day.value === today}\n >\n {day.day}\n </ds-text>\n </button>\n );\n })}\n </div>\n </div>\n );\n }\n\n private renderDateFilter(filter: FilterMenuFilter, value: FilterMenuValue | undefined) {\n const mode = this.dateMode(filter.id, value);\n return (\n <div class=\"filter-menu__date\">\n <header class=\"filter-menu__date-header ds-chrome-header ds-chrome-header--bounded\">\n <ds-tab-group\n ariaLabel=\"Date filter mode\"\n size=\"md\"\n width=\"fill\"\n value={mode}\n tabs={DATE_MODE_TABS}\n onDsChange={(event: CustomEvent<string>) => {\n event.stopPropagation();\n this.setDateMode(filter, value, event.detail);\n }}\n />\n </header>\n <div class=\"filter-menu__date-body\">\n {mode === 'relative'\n ? this.renderRelativeDateOptions(filter, value)\n : this.renderDateCalendar(filter, value)}\n </div>\n </div>\n );\n }\n\n private renderOptions(filter: FilterMenuFilter, values: FilterMenuValues) {\n const value = values[filter.id];\n if (filter.kind === 'multiple' || filter.kind === 'single') {\n const selected = Array.isArray(value) ? value : [];\n const options = filter.options ?? [];\n const usesSubtext = choiceListUsesSubtext(\n options.map(option => ({\n label: option.label,\n value: option.value,\n subtext: option.description,\n }))\n );\n return options.map((option, index) => {\n const isSelected =\n filter.kind === 'multiple' ? selected.includes(option.value) : value === option.value;\n return (\n <ChoiceOptionRow\n size=\"md\"\n id={`${this.generatedId}-${filter.id}-option-${index}`}\n option={{\n label: option.label,\n value: option.value,\n subtext: option.description,\n isInactive: option.isInactive,\n }}\n selected={isSelected}\n active={index === this.activeOptionIndex}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={usesSubtext}\n tabIndex={index === this.activeOptionIndex ? 0 : -1}\n leading={\n filter.kind === 'multiple' ? (\n <span\n class=\"ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-checkbox label=\"\" size=\"md\" checked={isSelected} presentation />\n </span>\n ) : undefined\n }\n onFocus={() => {\n this.activeOptionIndex = index;\n }}\n onKeyDown={(event: KeyboardEvent) =>\n this.handleOptionKeyDown(event, filter, option, index, values)\n }\n onHover={() => {\n this.focusRingVisible = false;\n this.activeOptionIndex = index;\n }}\n onSelect={() => this.selectOption(filter, option, values)}\n />\n );\n });\n }\n\n if (filter.kind === 'boolean') {\n const option: FilterMenuOption = {\n label: filter.fieldLabel ?? filter.label,\n value: 'true',\n description: filter.description,\n };\n return (\n <ChoiceOptionRow\n size=\"md\"\n id={`${this.generatedId}-${filter.id}-option-0`}\n option={{\n label: option.label,\n value: option.value,\n subtext: option.description,\n }}\n selected={value === true}\n active\n focusRingVisible={this.focusRingVisible}\n usesSubtext={Boolean(option.description)}\n tabIndex={0}\n leading={\n <span\n class=\"ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-checkbox label=\"\" size=\"md\" checked={value === true} presentation />\n </span>\n }\n onKeyDown={(event: KeyboardEvent) => {\n if (event.key === 'ArrowLeft') this.handlePanelKeyDown(event, filter.id);\n else if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.dsChange.emit({ filterId: filter.id, value: value !== true });\n }\n }}\n onHover={() => {\n this.focusRingVisible = false;\n }}\n onSelect={() => this.dsChange.emit({ filterId: filter.id, value: value !== true })}\n />\n );\n }\n\n return this.renderDateFilter(filter, value);\n }\n\n private get captionIconOnly(): boolean {\n return (\n this.collapseLabel && this.captionCompact && this.usesInternalTrigger && Boolean(this.icon)\n );\n }\n\n private syncCaptionCompactObserver(): void {\n this.disconnectCaptionCompactObserver();\n if (!this.collapseLabel) {\n if (this.captionCompact) this.captionCompact = false;\n return;\n }\n this.captionCompactDisconnect = observeTableCaptionCompact(this.el, compact => {\n if (this.captionCompact !== compact) this.captionCompact = compact;\n });\n }\n\n private disconnectCaptionCompactObserver(): void {\n this.captionCompactDisconnect?.();\n this.captionCompactDisconnect = undefined;\n }\n\n private renderCaptionTooltip(trigger: VNode, label: string): VNode {\n if (!this.collapseLabel) return trigger;\n return (\n <ds-tooltip label={label} side=\"top\" size=\"sm\">\n {trigger}\n </ds-tooltip>\n );\n }\n\n private renderFooter(totalSelected: number, categoriesClear: boolean) {\n return (\n <div\n class={{\n 'filter-menu__footer': true,\n 'filter-menu__footer--categories-clear': categoriesClear,\n 'ds-choice-footer': true,\n }}\n aria-hidden={categoriesClear && totalSelected === 0 ? 'true' : undefined}\n >\n <div class=\"ds-choice-footer__content ds-control--md\">\n {!categoriesClear ? (\n <ds-text\n class=\"ds-choice-footer__summary\"\n as=\"span\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n aria-live=\"polite\"\n >\n {totalSelected} selected\n </ds-text>\n ) : null}\n {totalSelected > 0 ? (\n <button\n class=\"filter-menu__clear ds-choice-footer__clear ds-text-action\"\n type=\"button\"\n onClick={() => {\n this.pendingRangeStartByFilter = {};\n this.dsClear.emit();\n }}\n >\n <ds-text as=\"span\" variant=\"text-body-medium\" color=\"inherit\">\n {this.clearLabel}\n </ds-text>\n </button>\n ) : null}\n </div>\n </div>\n );\n }\n\n render() {\n const state =\n this.closing && this.closingSnapshot\n ? this.closingSnapshot\n : {\n filters: this.filters,\n values: this.values,\n activeFilterId: this.activeFilterId,\n };\n const activeFilter = this.selectedFilter(state.filters, state.activeFilterId);\n const totalSelected = this.totalSelected(state.filters, state.values);\n const activeFilterCount = this.activeFilterCount(state.filters, state.values);\n const hasActiveFilters = activeFilterCount > 0;\n const categoriesClearFooter = this.footerLayout === 'categories-clear';\n const label = `${this.triggerLabel}${\n this.showSelectedCount && hasActiveFilters ? ` · ${activeFilterCount}` : ''\n }`;\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const iconSize = ICON_SIZE[this.size];\n const popupId = `${this.generatedId}-popup`;\n const popupStyle: Record<string, string> = {\n position: 'fixed',\n left: '0',\n top: '0',\n width: this.menuWidth,\n transform: `translate(${Math.round(this.pos.x)}px, ${Math.round(this.pos.y)}px)`,\n zIndex: '9998',\n visibility: this.positionReady ? 'visible' : 'hidden',\n };\n\n return (\n <Host\n class={{\n 'filter-menu-host': true,\n 'filter-menu-host--external-trigger': !this.usesInternalTrigger,\n 'ds-select-trigger-host': this.usesInternalTrigger,\n [`ds-control--${this.size}`]: true,\n 'ds-table-caption-control': this.collapseLabel,\n 'ds-table-caption-control--compact': this.captionIconOnly,\n ...controlWidthClass(this.width),\n }}\n >\n {this.usesInternalTrigger\n ? this.renderCaptionTooltip(\n <button\n ref={element => {\n this.triggerElement = (element as HTMLButtonElement) ?? null;\n }}\n id={this.inputId ?? `${this.generatedId}-trigger`}\n type=\"button\"\n class={{\n trigger: true,\n 'ds-control-frame': true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--selected': this.activeFill && hasActiveFilters,\n 'trigger--expanded': this.open || this.closing,\n 'trigger--bordered': this.hasBorder,\n 'trigger--has-value': hasActiveFilters,\n [`ds-control--${this.size}`]: true,\n }}\n role=\"combobox\"\n aria-haspopup=\"dialog\"\n aria-expanded={String(this.open)}\n aria-controls={this.open ? popupId : undefined}\n aria-label={this.ariaLabel ?? this.menuLabel}\n onClick={(event: MouseEvent) => this.toggleFromTrigger(event)}\n onKeyDown={(event: KeyboardEvent) => this.handleTriggerKeyDown(event)}\n >\n {this.icon ? (\n <span\n class=\"trigger__prefix ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon name={this.icon} size={iconSize} color=\"inherit\" />\n </span>\n ) : null}\n {this.captionIconOnly ? null : (\n <ds-text\n class=\"trigger__label-box trigger__label trigger__label-content ds-control-label-box ds-interaction-fill__content\"\n as=\"span\"\n variant={textVariant}\n color=\"inherit\"\n lineTruncation={1}\n >\n {label}\n </ds-text>\n )}\n {this.captionIconOnly ? null : (\n <span\n class=\"trigger__chevron ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon name=\"ChevronDown\" size={iconSize} color=\"inherit\" />\n </span>\n )}\n </button>,\n this.captionIconOnly ? label : ''\n )\n : null}\n\n {this.shouldRender ? (\n <div\n id={popupId}\n popover=\"manual\"\n class={{\n 'filter-menu-popup': true,\n 'ds-choice-popup': true,\n 'ds-choice-popup--closing': this.closing,\n }}\n style={popupStyle}\n role=\"dialog\"\n aria-label={this.menuLabel}\n >\n {activeFilter ? (\n <div class=\"filter-menu\">\n <div class=\"filter-menu__body\">\n <div class=\"filter-menu__category-pane\">\n <div\n class=\"filter-menu__categories ds-choice-list ds-chrome-column ds-chrome-space--sm\"\n role=\"tablist\"\n aria-label={this.categoriesLabel}\n aria-orientation=\"vertical\"\n >\n {state.filters.map(filter => {\n const active = filter.id === activeFilter.id;\n const count = this.selectedCount(filter, state.values);\n return (\n <div\n key={filter.id}\n class={{\n 'filter-menu__category-section': true,\n 'ds-choice-section--divided': Boolean(filter.divider),\n }}\n >\n <button\n id={`${this.generatedId}-${filter.id}-tab`}\n type=\"button\"\n role=\"tab\"\n data-filter-category={filter.id}\n class={{\n 'filter-menu__category': true,\n 'filter-menu__category--active': active,\n 'ds-choice-item': true,\n 'ds-control-frame': true,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-focus-ring--visible': active && this.focusRingVisible,\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--selected': active,\n }}\n aria-selected={String(active)}\n aria-controls={`${this.generatedId}-panel`}\n tabIndex={active ? 0 : -1}\n onMouseDown={() => {\n this.focusRingVisible = false;\n }}\n onClick={() => this.selectCategory(filter.id)}\n onKeyDown={(event: KeyboardEvent) =>\n this.handleCategoryKeyDown(event, state.filters, filter.id)\n }\n >\n <ds-text\n class=\"ds-choice-item__content ds-choice-item__label ds-control-label-box ds-interaction-fill__content\"\n as=\"span\"\n variant=\"text-body-medium\"\n color={active ? 'primary' : 'secondary'}\n >\n {filter.label}\n </ds-text>\n {count > 0 && filter.kind === 'date' ? (\n <span\n class=\"filter-menu__category-dot-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-badge variant=\"dot\" hasRing={false} label=\"\" />\n </span>\n ) : count > 0 ? (\n <ds-tag\n class=\"ds-choice-item__tag ds-interaction-fill__content\"\n label={String(count)}\n size=\"sm\"\n intent=\"brand\"\n contrast=\"bold\"\n isInset\n rounded\n />\n ) : null}\n </button>\n </div>\n );\n })}\n </div>\n {categoriesClearFooter ? this.renderFooter(totalSelected, true) : null}\n </div>\n\n <div\n id={`${this.generatedId}-panel`}\n class={{\n 'filter-menu__options': true,\n 'filter-menu__options--date': activeFilter.kind === 'date',\n }}\n role=\"tabpanel\"\n aria-labelledby={`${this.generatedId}-${activeFilter.id}-tab`}\n >\n {activeFilter.kind === 'date' ? (\n <div key={activeFilter.id} class=\"filter-menu__option-list--date\">\n {this.renderOptions(activeFilter, state.values)}\n </div>\n ) : (\n <div\n key={activeFilter.id}\n class=\"filter-menu__option-list ds-choice-list ds-chrome-column ds-chrome-space--sm\"\n role=\"listbox\"\n aria-label={activeFilter.label}\n aria-multiselectable={activeFilter.kind === 'multiple' ? 'true' : undefined}\n >\n {this.renderOptions(activeFilter, state.values)}\n </div>\n )}\n </div>\n </div>\n\n {!categoriesClearFooter && totalSelected > 0\n ? this.renderFooter(totalSelected, false)\n : null}\n </div>\n ) : null}\n </div>\n ) : null}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{p as e,H as o,h as s,a,t}from"./index.js";import{C as i}from"./p-BnhGV__o.js";import{d}from"./p-caLOcQUK.js";import{d as c}from"./p-v4oqkJms.js";import{d as n}from"./p-Cea7rROU.js";import{d as r}from"./p-0XTyQNRG.js";import{d as l}from"./p-B-HsfQOK.js";import{d as f}from"./p-DLbHgbVj.js";const b=()=>`.sc-ds-code-block-h{display:block;width:100%;min-width:0;box-sizing:border-box;-webkit-user-select:none;user-select:none}.code-block.sc-ds-code-block{width:100%;min-width:0;margin:0;overflow:hidden;border-radius:var(--dimension-radius-050);background:var(--color-background-strong-neutral);color:var(--color-foreground-faint-neutral);box-sizing:border-box}.code-block__header.sc-ds-code-block{display:flex;align-items:center;justify-content:space-between;gap:var(--dimension-space-100);min-height:var(--dimension-size-400);padding:var(--dimension-space-050) var(--dimension-space-100);background:var(--color-background-strong-neutral);box-sizing:border-box}pre.sc-ds-code-block{margin:0;padding:var(--dimension-space-150);overflow:auto;font-family:var( --typography-font-family-code, 'Fira Code', ui-monospace, 'SFMono-Regular', 'Cascadia Code', 'Roboto Mono', Menlo, Monaco, Consolas, 'Liberation Mono', monospace );font-size:var(--typography-fontsize-sm);font-variant-ligatures:var(--ds-code-font-variant-ligatures, normal);font-weight:var(--typography-weight-regular);line-height:var(--typography-lineheight-sm);letter-spacing:var(--typography-letterspacing-none);tab-size:2;-webkit-user-select:text;user-select:text}code.sc-ds-code-block{font:inherit;white-space:pre}`;const p=e(class e extends o{constructor(e){super();if(e!==false){this.__registerHost()}this.code="";this.language="";this.filename="";this.copied=false;this.copyFeedback=new i((e=>{this.copied=e}));this.copy=async()=>{await this.copyFeedback.copy(this.code)}}connectedCallback(){this.copyFeedback.connect()}handleCodeChange(){this.copyFeedback.reset()}disconnectedCallback(){this.copyFeedback.disconnect()}render(){const e=this.filename||this.language||"Code";return s(a,{key:"41c5951e5a4e09ea51ed97ef1d854414f3c7c8ec"},s("figure",{key:"75e3c994e514fb4c826d1407570532bf75f0e105",class:"code-block"},s("figcaption",{key:"f4ab8af3b1c95ad7f29d029f34fed417f288f45a",class:"code-block__header"},s("ds-text",{key:"4fb53ac3148c6027e5aa8de64fe0727cdcac6328",as:"span",variant:"text-caption",emphasis:true,color:"on-strong"},e),s("ds-tooltip",{key:"ced28b4b62b7d8a3f9a2644c3f042d3f6d5a7985",label:this.copied?"Copied":"Copy code",side:"bottom",size:"sm"},s("ds-button-unfilled",{key:"3c975a75d201d816e05351ded66e39327ab8114f",variant:"icon",icon:this.copied?"Check":"Copy",size:"xs","aria-label":this.copied?"Copied":"Copy code",hasBorder:false,onDsClick:this.copy}))),s("pre",{key:"499cfaac4eb2e61a492a6cbdebb5e0ab096f3651"},s("code",{key:"811ad5a7b87d7816aa7a7b30524a2eeaf584554f"},this.code))))}static get watchers(){return{code:[{handleCodeChange:0}]}}static get style(){return b()}},[2,"ds-code-block",{code:[1],language:[1],filename:[1],copied:[32]},undefined,{code:[{handleCodeChange:0}]}]);function m(){if(typeof customElements==="undefined"){return}const e=["ds-code-block","ds-badge","ds-button-unfilled","ds-icon","ds-loader","ds-text","ds-tooltip"];e.forEach((e=>{switch(e){case"ds-code-block":if(!customElements.get(t(e))){customElements.define(t(e),p)}break;case"ds-badge":if(!customElements.get(t(e))){d()}break;case"ds-button-unfilled":if(!customElements.get(t(e))){c()}break;case"ds-icon":if(!customElements.get(t(e))){n()}break;case"ds-loader":if(!customElements.get(t(e))){r()}break;case"ds-text":if(!customElements.get(t(e))){l()}break;case"ds-tooltip":if(!customElements.get(t(e))){f()}break}}))}m();export{p as C,m as d};
2
+ //# sourceMappingURL=p-B6rSDhJY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["codeBlockCss","CodeBlock","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","code","language","filename","copied","copyFeedback","ClipboardFeedbackController","copy","async","connectedCallback","connect","handleCodeChange","reset","disconnectedCallback","disconnect","render","label","h","Host","key","class","as","variant","emphasis","color","side","size","icon","hasBorder","onDsClick"],"sources":["src/wc/components/CodeBlock/CodeBlock.css?tag=ds-code-block&encapsulation=scoped","src/wc/components/CodeBlock/CodeBlock.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n -webkit-user-select: none;\n user-select: none;\n}\n\n.code-block {\n width: 100%;\n min-width: 0;\n margin: 0;\n overflow: hidden;\n border-radius: var(--dimension-radius-050);\n background: var(--color-background-strong-neutral);\n color: var(--color-foreground-faint-neutral);\n box-sizing: border-box;\n}\n\n.code-block__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--dimension-space-100);\n min-height: var(--dimension-size-400);\n padding: var(--dimension-space-050) var(--dimension-space-100);\n background: var(--color-background-strong-neutral);\n box-sizing: border-box;\n}\n\npre {\n margin: 0;\n padding: var(--dimension-space-150);\n overflow: auto;\n font-family: var(\n --typography-font-family-code,\n 'Fira Code',\n ui-monospace,\n 'SFMono-Regular',\n 'Cascadia Code',\n 'Roboto Mono',\n Menlo,\n Monaco,\n Consolas,\n 'Liberation Mono',\n monospace\n );\n font-size: var(--typography-fontsize-sm);\n font-variant-ligatures: var(--ds-code-font-variant-ligatures, normal);\n font-weight: var(--typography-weight-regular);\n line-height: var(--typography-lineheight-sm);\n letter-spacing: var(--typography-letterspacing-none);\n tab-size: 2;\n -webkit-user-select: text;\n user-select: text;\n}\n\ncode {\n font: inherit;\n white-space: pre;\n}\n","import { Component, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { ClipboardFeedbackController } from '../../utils/clipboard';\n\n@Component({\n tag: 'ds-code-block',\n styleUrl: 'CodeBlock.css',\n scoped: true,\n})\nexport class CodeBlock {\n @Prop() code: string = '';\n @Prop() language: string = '';\n @Prop() filename: string = '';\n\n @State() private copied: boolean = false;\n private readonly copyFeedback = new ClipboardFeedbackController(copied => {\n this.copied = copied;\n });\n\n connectedCallback() {\n this.copyFeedback.connect();\n }\n\n @Watch('code')\n handleCodeChange() {\n this.copyFeedback.reset();\n }\n\n disconnectedCallback() {\n this.copyFeedback.disconnect();\n }\n\n private copy = async () => {\n await this.copyFeedback.copy(this.code);\n };\n\n render() {\n const label = this.filename || this.language || 'Code';\n return (\n <Host>\n <figure class=\"code-block\">\n <figcaption class=\"code-block__header\">\n <ds-text as=\"span\" variant=\"text-caption\" emphasis color=\"on-strong\">\n {label}\n </ds-text>\n <ds-tooltip label={this.copied ? 'Copied' : 'Copy code'} side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n variant=\"icon\"\n icon={this.copied ? 'Check' : 'Copy'}\n size=\"xs\"\n aria-label={this.copied ? 'Copied' : 'Copy code'}\n hasBorder={false}\n onDsClick={this.copy}\n />\n </ds-tooltip>\n </figcaption>\n <pre>\n <code>{this.code}</code>\n </pre>\n </figure>\n </Host>\n );\n }\n}\n"],"mappings":"wSAAA,MAAMA,EAAe,IAAM,wyC,MCQdC,EAASC,EAAA,MAAAD,UAAAE,EALtB,WAAAC,CAAAC,G,4CAMUC,KAAAC,KAAe,GACfD,KAAAE,SAAmB,GACnBF,KAAAG,SAAmB,GAEVH,KAAAI,OAAkB,MAClBJ,KAAAK,aAAe,IAAIC,GAA4BF,IAC9DJ,KAAKI,OAASA,CAAM,IAgBdJ,KAAAO,KAAOC,gBACPR,KAAKK,aAAaE,KAAKP,KAAKC,KAAK,CA8B1C,CA5CC,iBAAAQ,GACET,KAAKK,aAAaK,S,CAIpB,gBAAAC,GACEX,KAAKK,aAAaO,O,CAGpB,oBAAAC,GACEb,KAAKK,aAAaS,Y,CAOpB,MAAAC,GACE,MAAMC,EAAQhB,KAAKG,UAAYH,KAAKE,UAAY,OAChD,OACEe,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,UAAAE,IAAA,2CAAQC,MAAM,cACZH,EAAA,cAAAE,IAAA,2CAAYC,MAAM,sBAChBH,EAAA,WAAAE,IAAA,2CAASE,GAAG,OAAOC,QAAQ,eAAeC,SAAQ,KAACC,MAAM,aACtDR,GAEHC,EAAA,cAAAE,IAAA,2CAAYH,MAAOhB,KAAKI,OAAS,SAAW,YAAaqB,KAAK,SAASC,KAAK,MAC1ET,EAAA,sBAAAE,IAAA,2CACEG,QAAQ,OACRK,KAAM3B,KAAKI,OAAS,QAAU,OAC9BsB,KAAK,KAAI,aACG1B,KAAKI,OAAS,SAAW,YACrCwB,UAAW,MACXC,UAAW7B,KAAKO,SAItBU,EAAA,OAAAE,IAAA,4CACEF,EAAA,QAAAE,IAAA,4CAAOnB,KAAKC,Q","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{p as t,H as s,h as e,a,t as i}from"./index.js";import{d as n}from"./p-BFfLvMZd.js";import{d as o}from"./p-CAnnQL1F.js";import{r}from"./p-C-vRkDyn.js";const c=()=>`.sc-ds-attachment-list-h{display:block;min-width:0;box-sizing:border-box}.attachment-list.sc-ds-attachment-list{display:flex;flex-wrap:wrap;gap:var(--dimension-space-050)}.attachment-list__item.sc-ds-attachment-list{display:flex;max-width:var(--dimension-form-width-sm);padding:var(--dimension-space-075);border-radius:var(--dimension-radius-025);background:var(--color-background-secondary);color:inherit;box-shadow:inset 0 0 0 var(--dimension-stroke-width-012) var(--color-border-tertiary);text-decoration:none;box-sizing:border-box}a.attachment-list__item.sc-ds-attachment-list:focus-visible{outline:var(--dimension-stroke-width-025) solid var(--color-border-bold-brand);outline-offset:var(--dimension-stroke-width-012)}.attachment-list__item-content.sc-ds-attachment-list{display:flex;align-items:center;gap:var(--dimension-space-075);min-width:0}.attachment-list__copy.sc-ds-attachment-list{display:flex;flex-direction:column;min-width:0}`;const d=t(class t extends s{constructor(t){super();if(t!==false){this.__registerHost()}this.items=[];this.label="Attachments"}renderItem(t){const s=r(t.url,{protocols:["http:","https:","blob:"]});const a=e("span",{class:"attachment-list__item-content"},e("ds-icon",{name:"Document",size:"sm",color:"secondary"}),e("span",{class:"attachment-list__copy"},e("ds-text",{as:"span",variant:"text-body-small",emphasis:true,color:"primary",lineTruncation:1},t.name),t.mediaType||t.size?e("ds-text",{as:"span",variant:"text-caption",color:"secondary"},[t.mediaType,t.size].filter(Boolean).join(" · ")):null));return s?e("a",{class:"attachment-list__item",href:s,target:"_blank",rel:"noopener noreferrer"},a):e("div",{class:"attachment-list__item"},a)}render(){return e(a,{key:"e42f7a53e9247aff7407da66baa1a1a4d3ec668f"},e("div",{key:"7847fb41611cd331727792226f49dd1dfe0df386",class:"attachment-list",role:"list","aria-label":this.label},this.items.map((t=>e("div",{role:"listitem",key:t.id},this.renderItem(t))))))}static get style(){return c()}},[2,"ds-attachment-list",{items:[16],label:[1]}]);function l(){if(typeof customElements==="undefined"){return}const t=["ds-attachment-list","ds-icon","ds-text"];t.forEach((t=>{switch(t){case"ds-attachment-list":if(!customElements.get(i(t))){customElements.define(i(t),d)}break;case"ds-icon":if(!customElements.get(i(t))){n()}break;case"ds-text":if(!customElements.get(i(t))){o()}break}}))}l();export{d as A,l as d};
2
- //# sourceMappingURL=p-B1JRCDHS.js.map
1
+ import{p as t,H as s,h as e,a,t as i}from"./index.js";import{d as n}from"./p-Cea7rROU.js";import{d as o}from"./p-B-HsfQOK.js";import{r}from"./p-rCeztgVn.js";const c=()=>`.sc-ds-attachment-list-h{display:block;min-width:0;box-sizing:border-box}.attachment-list.sc-ds-attachment-list{display:flex;flex-wrap:wrap;gap:var(--dimension-space-050)}.attachment-list__item.sc-ds-attachment-list{display:flex;max-width:var(--dimension-form-width-sm);padding:var(--dimension-space-075);border-radius:var(--dimension-radius-025);background:var(--color-background-secondary);color:inherit;box-shadow:inset 0 0 0 var(--dimension-stroke-width-012) var(--color-border-tertiary);text-decoration:none;box-sizing:border-box}a.attachment-list__item.sc-ds-attachment-list:focus-visible{outline:var(--dimension-stroke-width-025) solid var(--color-border-bold-brand);outline-offset:var(--dimension-stroke-width-012)}.attachment-list__item-content.sc-ds-attachment-list{display:flex;align-items:center;gap:var(--dimension-space-075);min-width:0}.attachment-list__copy.sc-ds-attachment-list{display:flex;flex-direction:column;min-width:0}`;const l=t(class t extends s{constructor(t){super();if(t!==false){this.__registerHost()}this.items=[];this.label="Attachments"}renderItem(t){const s=r(t.url,{protocols:["http:","https:","blob:"]});const a=e("span",{class:"attachment-list__item-content"},e("ds-icon",{name:"Document",size:"sm",color:"secondary"}),e("span",{class:"attachment-list__copy"},e("ds-text",{as:"span",variant:"text-body-small",emphasis:true,color:"primary",lineTruncation:1},t.name),t.mediaType||t.size?e("ds-text",{as:"span",variant:"text-caption",color:"secondary"},[t.mediaType,t.size].filter(Boolean).join(" · ")):null));return s?e("a",{class:"attachment-list__item",href:s,target:"_blank",rel:"noopener noreferrer"},a):e("div",{class:"attachment-list__item"},a)}render(){return e(a,{key:"5cca5f1c885e3c2105c7e1a1a0c855923ced0188"},e("div",{key:"93c0f879acefc62d5d8a892253b57bbf419b89b7",class:"attachment-list",role:"list","aria-label":this.label},this.items.map((t=>e("div",{role:"listitem",key:t.id},this.renderItem(t))))))}static get style(){return c()}},[2,"ds-attachment-list",{items:[16],label:[1]}]);function d(){if(typeof customElements==="undefined"){return}const t=["ds-attachment-list","ds-icon","ds-text"];t.forEach((t=>{switch(t){case"ds-attachment-list":if(!customElements.get(i(t))){customElements.define(i(t),l)}break;case"ds-icon":if(!customElements.get(i(t))){n()}break;case"ds-text":if(!customElements.get(i(t))){o()}break}}))}d();export{l as A,d};
2
+ //# sourceMappingURL=p-BHhmB9-4.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["attachmentListCss","AttachmentList","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","items","label","renderItem","item","url","resolveSafeUrl","protocols","content","h","class","name","size","color","as","variant","emphasis","lineTruncation","mediaType","filter","Boolean","join","href","target","rel","render","Host","key","role","map","id"],"sources":["src/wc/components/AttachmentList/AttachmentList.css?tag=ds-attachment-list&encapsulation=scoped","src/wc/components/AttachmentList/AttachmentList.tsx"],"sourcesContent":[":host {\n display: block;\n min-width: 0;\n box-sizing: border-box;\n}\n\n.attachment-list {\n display: flex;\n flex-wrap: wrap;\n gap: var(--dimension-space-050);\n}\n\n.attachment-list__item {\n display: flex;\n max-width: var(--dimension-form-width-sm);\n padding: var(--dimension-space-075);\n border-radius: var(--dimension-radius-025);\n background: var(--color-background-secondary);\n color: inherit;\n box-shadow: inset 0 0 0 var(--dimension-stroke-width-012) var(--color-border-tertiary);\n text-decoration: none;\n box-sizing: border-box;\n}\n\na.attachment-list__item:focus-visible {\n outline: var(--dimension-stroke-width-025) solid var(--color-border-bold-brand);\n outline-offset: var(--dimension-stroke-width-012);\n}\n\n.attachment-list__item-content {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-075);\n min-width: 0;\n}\n\n.attachment-list__copy {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\nimport { resolveSafeUrl } from '../../utils';\nimport type { ConversationAttachment } from '../conversation-types';\n\n@Component({\n tag: 'ds-attachment-list',\n styleUrl: 'AttachmentList.css',\n scoped: true,\n})\nexport class AttachmentList {\n @Prop() items: ConversationAttachment[] = [];\n @Prop() label: string = 'Attachments';\n\n private renderItem(item: ConversationAttachment) {\n const url = resolveSafeUrl(item.url, {\n protocols: ['http:', 'https:', 'blob:'],\n });\n const content = (\n <span class=\"attachment-list__item-content\">\n <ds-icon name=\"Document\" size=\"sm\" color=\"secondary\" />\n <span class=\"attachment-list__copy\">\n <ds-text as=\"span\" variant=\"text-body-small\" emphasis color=\"primary\" lineTruncation={1}>{item.name}</ds-text>\n {item.mediaType || item.size ? (\n <ds-text as=\"span\" variant=\"text-caption\" color=\"secondary\">\n {[item.mediaType, item.size].filter(Boolean).join(' · ')}\n </ds-text>\n ) : null}\n </span>\n </span>\n );\n return url ? (\n <a class=\"attachment-list__item\" href={url} target=\"_blank\" rel=\"noopener noreferrer\">{content}</a>\n ) : (\n <div class=\"attachment-list__item\">{content}</div>\n );\n }\n\n render() {\n return (\n <Host>\n <div class=\"attachment-list\" role=\"list\" aria-label={this.label}>\n {this.items.map(item => <div role=\"listitem\" key={item.id}>{this.renderItem(item)}</div>)}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"6JAAA,MAAMA,EAAoB,IAAM,k7B,MCSnBC,EAAcC,EAAA,MAAAD,UAAAE,EAL3B,WAAAC,CAAAC,G,4CAMUC,KAAAC,MAAkC,GAClCD,KAAAE,MAAgB,aAmCzB,CAjCS,UAAAC,CAAWC,GACjB,MAAMC,EAAMC,EAAeF,EAAKC,IAAK,CACnCE,UAAW,CAAC,QAAS,SAAU,WAEjC,MAAMC,EACJC,EAAA,QAAMC,MAAM,iCACVD,EAAA,WAASE,KAAK,WAAWC,KAAK,KAAKC,MAAM,cACzCJ,EAAA,QAAMC,MAAM,yBACVD,EAAA,WAASK,GAAG,OAAOC,QAAQ,kBAAkBC,SAAQ,KAACH,MAAM,UAAUI,eAAgB,GAAIb,EAAKO,MAC9FP,EAAKc,WAAad,EAAKQ,KACtBH,EAAA,WAASK,GAAG,OAAOC,QAAQ,eAAeF,MAAM,aAC7C,CAACT,EAAKc,UAAWd,EAAKQ,MAAMO,OAAOC,SAASC,KAAK,QAElD,OAIV,OAAOhB,EACLI,EAAA,KAAGC,MAAM,wBAAwBY,KAAMjB,EAAKkB,OAAO,SAASC,IAAI,uBAAuBhB,GAEvFC,EAAA,OAAKC,MAAM,yBAAyBF,E,CAIxC,MAAAiB,GACE,OACEhB,EAACiB,EAAI,CAAAC,IAAA,4CACHlB,EAAA,OAAAkB,IAAA,2CAAKjB,MAAM,kBAAkBkB,KAAK,OAAM,aAAa5B,KAAKE,OACvDF,KAAKC,MAAM4B,KAAIzB,GAAQK,EAAA,OAAKmB,KAAK,WAAWD,IAAKvB,EAAK0B,IAAK9B,KAAKG,WAAWC,O","ignoreList":[]}
1
+ {"version":3,"names":["attachmentListCss","AttachmentList","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","items","label","renderItem","item","url","resolveSafeUrl","protocols","content","h","class","name","size","color","as","variant","emphasis","lineTruncation","mediaType","filter","Boolean","join","href","target","rel","render","Host","key","role","map","id"],"sources":["src/wc/components/AttachmentList/AttachmentList.css?tag=ds-attachment-list&encapsulation=scoped","src/wc/components/AttachmentList/AttachmentList.tsx"],"sourcesContent":[":host {\n display: block;\n min-width: 0;\n box-sizing: border-box;\n}\n\n.attachment-list {\n display: flex;\n flex-wrap: wrap;\n gap: var(--dimension-space-050);\n}\n\n.attachment-list__item {\n display: flex;\n max-width: var(--dimension-form-width-sm);\n padding: var(--dimension-space-075);\n border-radius: var(--dimension-radius-025);\n background: var(--color-background-secondary);\n color: inherit;\n box-shadow: inset 0 0 0 var(--dimension-stroke-width-012) var(--color-border-tertiary);\n text-decoration: none;\n box-sizing: border-box;\n}\n\na.attachment-list__item:focus-visible {\n outline: var(--dimension-stroke-width-025) solid var(--color-border-bold-brand);\n outline-offset: var(--dimension-stroke-width-012);\n}\n\n.attachment-list__item-content {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-075);\n min-width: 0;\n}\n\n.attachment-list__copy {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\nimport { resolveSafeUrl } from '../../utils';\nimport type { ConversationAttachment } from '../conversation-types';\n\n@Component({\n tag: 'ds-attachment-list',\n styleUrl: 'AttachmentList.css',\n scoped: true,\n})\nexport class AttachmentList {\n @Prop() items: ConversationAttachment[] = [];\n @Prop() label: string = 'Attachments';\n\n private renderItem(item: ConversationAttachment) {\n const url = resolveSafeUrl(item.url, {\n protocols: ['http:', 'https:', 'blob:'],\n });\n const content = (\n <span class=\"attachment-list__item-content\">\n <ds-icon name=\"Document\" size=\"sm\" color=\"secondary\" />\n <span class=\"attachment-list__copy\">\n <ds-text as=\"span\" variant=\"text-body-small\" emphasis color=\"primary\" lineTruncation={1}>\n {item.name}\n </ds-text>\n {item.mediaType || item.size ? (\n <ds-text as=\"span\" variant=\"text-caption\" color=\"secondary\">\n {[item.mediaType, item.size].filter(Boolean).join(' · ')}\n </ds-text>\n ) : null}\n </span>\n </span>\n );\n return url ? (\n <a class=\"attachment-list__item\" href={url} target=\"_blank\" rel=\"noopener noreferrer\">\n {content}\n </a>\n ) : (\n <div class=\"attachment-list__item\">{content}</div>\n );\n }\n\n render() {\n return (\n <Host>\n <div class=\"attachment-list\" role=\"list\" aria-label={this.label}>\n {this.items.map(item => (\n <div role=\"listitem\" key={item.id}>\n {this.renderItem(item)}\n </div>\n ))}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"6JAAA,MAAMA,EAAoB,IAAM,k7B,MCSnBC,EAAcC,EAAA,MAAAD,UAAAE,EAL3B,WAAAC,CAAAC,G,4CAMUC,KAAAC,MAAkC,GAClCD,KAAAE,MAAgB,aA2CzB,CAzCS,UAAAC,CAAWC,GACjB,MAAMC,EAAMC,EAAeF,EAAKC,IAAK,CACnCE,UAAW,CAAC,QAAS,SAAU,WAEjC,MAAMC,EACJC,EAAA,QAAMC,MAAM,iCACVD,EAAA,WAASE,KAAK,WAAWC,KAAK,KAAKC,MAAM,cACzCJ,EAAA,QAAMC,MAAM,yBACVD,EAAA,WAASK,GAAG,OAAOC,QAAQ,kBAAkBC,SAAQ,KAACH,MAAM,UAAUI,eAAgB,GACnFb,EAAKO,MAEPP,EAAKc,WAAad,EAAKQ,KACtBH,EAAA,WAASK,GAAG,OAAOC,QAAQ,eAAeF,MAAM,aAC7C,CAACT,EAAKc,UAAWd,EAAKQ,MAAMO,OAAOC,SAASC,KAAK,QAElD,OAIV,OAAOhB,EACLI,EAAA,KAAGC,MAAM,wBAAwBY,KAAMjB,EAAKkB,OAAO,SAASC,IAAI,uBAC7DhB,GAGHC,EAAA,OAAKC,MAAM,yBAAyBF,E,CAIxC,MAAAiB,GACE,OACEhB,EAACiB,EAAI,CAAAC,IAAA,4CACHlB,EAAA,OAAAkB,IAAA,2CAAKjB,MAAM,kBAAkBkB,KAAK,OAAM,aAAa5B,KAAKE,OACvDF,KAAKC,MAAM4B,KAAIzB,GACdK,EAAA,OAAKmB,KAAK,WAAWD,IAAKvB,EAAK0B,IAC5B9B,KAAKG,WAAWC,O","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{p as i,H as t,c as e,h as s,a as r,t as n}from"./index.js";import{d as o}from"./p-caLOcQUK.js";import{d as a}from"./p-Bx5BSd6F.js";import{d}from"./p-DW5Ita-P.js";import{d as c}from"./p-v4oqkJms.js";import{d as l}from"./p-Cea7rROU.js";import{d as h}from"./p-0XTyQNRG.js";import{d as b}from"./p-DBYv7fRq.js";import{d as f}from"./p-Do8wbFff.js";import{d as u}from"./p-DGkn8FwV.js";import{d as v}from"./p-DQBT1Jkf.js";import{d as m}from"./p-B-HsfQOK.js";import{d as p}from"./p-DLbHgbVj.js";function g(i){return"type"in i&&i.type==="divider"}const _=()=>`.ds-control--lg.sc-ds-bar-title,.ds-control--lg.sc-ds-bar-title-h,.ds-control--md.sc-ds-bar-title-h,.ds-control--md.sc-ds-bar-title,.ds-control--sm.sc-ds-bar-title-h,.ds-control--sm.sc-ds-bar-title,.ds-control--xs.sc-ds-bar-title-h,.ds-control--xs.sc-ds-bar-title{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-bar-title-h,.ds-control--lg.sc-ds-bar-title{--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-bar-title-h,.ds-control--md.sc-ds-bar-title{--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-bar-title-h,.ds-control--sm.sc-ds-bar-title{--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-bar-title-h,.ds-control--xs.sc-ds-bar-title{--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}.ds-control--lg.sc-ds-bar-title,.ds-control--lg.sc-ds-bar-title-h,.ds-control--md.sc-ds-bar-title-h,.ds-control--md.sc-ds-bar-title,.ds-control--sm.sc-ds-bar-title-h,.ds-control--sm.sc-ds-bar-title,.ds-control--xs.sc-ds-bar-title-h,.ds-control--xs.sc-ds-bar-title{--ds-control-radius:var(--dimension-radius-025)}.ds-control--lg.sc-ds-bar-title-h,.ds-control--lg.sc-ds-bar-title{--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-bar-title-h,.ds-control--md.sc-ds-bar-title{--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-bar-title-h,.ds-control--sm.sc-ds-bar-title{--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-bar-title-h,.ds-control--xs.sc-ds-bar-title{--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}.ds-chrome-header.sc-ds-bar-title{display:flex;align-items:center;box-sizing:border-box;min-width:0;min-block-size:var(--dimension-size-600);padding:var(--dimension-space-100);gap:var(--dimension-space-100)}.ds-chrome-header--wrapping.sc-ds-bar-title{flex-wrap:wrap}.ds-chrome-header--bounded.sc-ds-bar-title{border-block-end:var(--dimension-stroke-width-012) solid var(--color-border-tertiary)}.ds-chrome-header__leading.sc-ds-bar-title,.ds-chrome-header__trailing.sc-ds-bar-title{display:flex;align-items:center;flex:0 0 auto;min-width:0}.ds-chrome-header__trailing.sc-ds-bar-title{margin-inline-start:auto;gap:var(--dimension-space-100)}.ds-chrome-header__copy.sc-ds-bar-title{display:flex;flex:1 1 0;min-width:0;padding:var(--ds-control-padding-inline, var(--dimension-space-075));box-sizing:border-box}.ds-chrome-header__copy--wrapping.sc-ds-bar-title{align-items:baseline;flex-wrap:wrap;column-gap:var(--dimension-space-100);row-gap:var(--dimension-space-050)}.ds-chrome-header__copy--stacked.sc-ds-bar-title{align-items:stretch;flex-direction:column;gap:var(--dimension-space-050)}.ds-chrome-header__heading.sc-ds-bar-title,.ds-chrome-header__description.sc-ds-bar-title{width:auto;min-width:0;padding-inline:var(--ds-control-label-inset, var(--dimension-space-025));box-sizing:border-box}.ds-chrome-header__heading.sc-ds-bar-title{flex:0 1 auto}.ds-chrome-header__copy--wrapping.sc-ds-bar-title .ds-chrome-header__description.sc-ds-bar-title{flex:1 1 var(--dimension-card-width-xs)}@media (forced-colors: active){.sc-ds-bar-title:root,.sc-ds-bar-title-h,.ds-forced-colors-scope.sc-ds-bar-title{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.sc-ds-bar-title-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-bar-title-h,.ds-focus-ring.sc-ds-bar-title,.ds-focus-ring-inset.sc-ds-bar-title-h,.ds-focus-ring-inset.sc-ds-bar-title{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-bar-title-h:focus-visible,.ds-focus-ring.sc-ds-bar-title: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-bar-title-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-bar-title{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-bar-title-h:focus-visible,.ds-focus-ring-inset.sc-ds-bar-title:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-bar-title-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-bar-title: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-bar-title-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-bar-title{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-bar-title-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-bar-title::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}@media (forced-colors: active){.sc-ds-bar-title-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-bar-title:root,.sc-ds-bar-title-h,.ds-forced-colors-scope.sc-ds-bar-title{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.ds-interaction-fill.sc-ds-bar-title-h,.ds-interaction-fill.sc-ds-bar-title{position:var(--ds-interaction-position, relative);z-index:var(--ds-interaction-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-divider-width:0px;--ds-interaction-divider-color:transparent;--ds-interaction-divider-inline-start-width:0px;--ds-interaction-divider-inline-start-color:transparent;--ds-interaction-divider-inline-end-width:0px;--ds-interaction-divider-inline-end-color:transparent}.ds-interaction-fill.sc-ds-bar-title-h::before,.ds-interaction-fill.sc-ds-bar-title::before,.ds-interaction-fill.sc-ds-bar-title-h::after,.ds-interaction-fill.sc-ds-bar-title::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-bar-title-h::before,.ds-interaction-fill.sc-ds-bar-title::before{z-index:1}.ds-interaction-fill.sc-ds-bar-title-h::after,.ds-interaction-fill.sc-ds-bar-title::after{z-index:3;box-shadow:inset 0 calc(-1 * var(--ds-interaction-divider-width)) 0 var(--ds-interaction-divider-color), inset var(--ds-interaction-divider-inline-start-width) 0 0 var(--ds-interaction-divider-inline-start-color), inset calc(-1 * var(--ds-interaction-divider-inline-end-width)) 0 0 var(--ds-interaction-divider-inline-end-color), inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-bar-title-h,.ds-interaction-fill--bordered.sc-ds-bar-title{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-bar-title-h::before,.ds-interaction-fill--selected.sc-ds-bar-title::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-bar-title-h,.ds-interaction-fill--selected.sc-ds-bar-title{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-bar-title-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-bar-title:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-bar-title-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-bar-title:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill--grouped.sc-ds-bar-title-h::after,.ds-interaction-fill--grouped.sc-ds-bar-title::after,.ds-interaction-fill--grouped.sc-ds-bar-title-h:active:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-bar-title:active:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill--grouped.sc-ds-bar-title-h:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-bar-title:hover:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}}.ds-interaction-fill--grouped.sc-ds-bar-title-h,.ds-interaction-fill--grouped.sc-ds-bar-title{--ds-interaction-divider-width:var(--ds-interaction-group-divider-width, 0px);--ds-interaction-divider-color:var(--ds-interaction-group-divider-color, transparent);--ds-interaction-divider-inline-start-width:var( --ds-interaction-group-divider-inline-start-width, 0px );--ds-interaction-divider-inline-start-color:var( --ds-interaction-group-divider-inline-start-color, transparent );--ds-interaction-divider-inline-end-width:var( --ds-interaction-group-divider-inline-end-width, 0px );--ds-interaction-divider-inline-end-color:var( --ds-interaction-group-divider-inline-end-color, transparent )}.ds-interaction-fill.sc-ds-bar-title-h>.ds-interaction-fill__content.sc-ds-bar-title,.ds-interaction-fill.sc-ds-bar-title>.ds-interaction-fill__content.sc-ds-bar-title,.ds-interaction-fill__content.sc-ds-bar-title{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-bar-title-h,.ds-interaction-fill--on-faint.sc-ds-bar-title{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-bar-title-h,.ds-interaction-fill--on-medium.sc-ds-bar-title{--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-bar-title-h,.ds-interaction-fill--on-bold.sc-ds-bar-title{--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-bar-title-h,.ds-interaction-fill--on-strong.sc-ds-bar-title{--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-bar-title-h,.ds-interaction-fill--on-translucent.sc-ds-bar-title{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active-brand);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-bar-title-h,.ds-interaction-fill--on-inverted.sc-ds-bar-title{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active-brand);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-bar-title-h,.ds-interaction-fill--on-media.sc-ds-bar-title{--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-bar-title-h,.ds-interaction-fill--on-always-dark.sc-ds-bar-title{--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-brand);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-bar-title-h,.ds-interaction-fill--on-navigation.sc-ds-bar-title{--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)}@media (forced-colors: active){.ds-interaction-fill.sc-ds-bar-title-h::after,.ds-interaction-fill.sc-ds-bar-title::after{box-shadow:none;outline:var(--ds-interaction-border-width) solid var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--ds-interaction-border-width))}.ds-interaction-fill--selected.sc-ds-bar-title-h::before,.ds-interaction-fill--selected.sc-ds-bar-title::before{background:transparent;outline:var(--dimension-stroke-width-025) solid var(--ds-forced-color-selected);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}}@media (forced-colors: active) and (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-bar-title-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-bar-title:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline-color:var(--ds-forced-color-selected);outline-width:var(--dimension-stroke-width-012)}}.sc-ds-bar-title-h{display:block;min-width:0;box-sizing:border-box;background:var(--_shell-page-header-background, var(--color-background-primary))}[data-shell-page-syncing].sc-ds-bar-title-h{visibility:hidden}.bar-title.sc-ds-bar-title{position:relative;min-width:0;box-sizing:border-box;background:var(--_shell-page-header-background, var(--color-background-primary))}.bar-title.sc-ds-bar-title::after{content:'';position:absolute;inset:auto var(--ds-bar-title-divider-inset, var(--dimension-space-400)) 0;height:var(--dimension-stroke-width-012);background:var(--color-border-tertiary);pointer-events:none}.bar-title--divider-hidden.sc-ds-bar-title::after{display:none}.bar-title__inner.sc-ds-bar-title{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:var(--dimension-space-100);padding:var(--dimension-space-400);box-sizing:border-box}.bar-title__row.sc-ds-bar-title{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--dimension-space-100);min-height:var(--dimension-size-400);min-width:0}.bar-title-host--expanded.sc-ds-bar-title-h .bar-title__row.sc-ds-bar-title{gap:var(--dimension-space-400)}.bar-title__leading.sc-ds-bar-title{display:flex;flex:1 1 auto;flex-direction:column;gap:var(--dimension-space-100);min-width:0}.bar-title__title-row.sc-ds-bar-title{display:flex;align-items:center;gap:var(--dimension-space-100);min-width:0;min-height:var(--dimension-size-400)}.bar-title__identity.sc-ds-bar-title{display:flex;flex:0 1 auto;align-items:center;gap:var(--dimension-space-050);min-width:0}.bar-title__back.sc-ds-bar-title,.bar-title__section-chevron.sc-ds-bar-title{flex:0 0 auto}.bar-title__breadcrumb.sc-ds-bar-title{display:block;width:100%;min-width:0}.bar-title__heading.sc-ds-bar-title{display:block;width:auto;min-width:0;user-select:none}.bar-title__divider.sc-ds-bar-title{width:var(--dimension-stroke-width-012);height:var(--dimension-size-250);margin-inline-start:var(--dimension-space-100);flex:0 0 var(--dimension-stroke-width-012);background:var(--color-border-tertiary)}.bar-title__section-selector.sc-ds-bar-title{display:flex;flex:0 1 auto;min-width:0;max-width:var(--dimension-panel-width-sm)}.bar-title__section-trigger.sc-ds-bar-title{--ds-control-radius:var(--dimension-radius-half);display:inline-flex;align-items:center;justify-content:center;gap:var(--ds-control-gap);height:var(--ds-control-height);min-width:0;max-width:100%;padding-inline:var(--ds-control-padding-inline);border:none;border-radius:var(--ds-control-radius);box-sizing:border-box;background:transparent;color:var(--color-foreground-secondary);cursor:default;font-family:inherit;user-select:none}.bar-title__section-trigger--expanded.sc-ds-bar-title{color:var(--color-foreground-primary);--ds-interaction-hover:var(--ds-interaction-pressed)}.bar-title__section-trigger--expanded.sc-ds-bar-title::after{background:var(--ds-interaction-pressed)}.bar-title__section-label.sc-ds-bar-title{min-width:0;padding-inline:var(--ds-control-label-inset)}.bar-title__actions.sc-ds-bar-title{display:flex;align-items:center;gap:var(--dimension-space-100);flex:0 0 auto}.bar-title__description.sc-ds-bar-title{display:block;min-width:0;max-width:100%}.bar-title-host--compact.sc-ds-bar-title-h .bar-title.sc-ds-bar-title{height:var(--dimension-size-600)}.bar-title-host--compact.sc-ds-bar-title-h .bar-title.sc-ds-bar-title::after{inset-inline:0}.bar-title-host--compact.sc-ds-bar-title-h .bar-title__inner.sc-ds-bar-title{flex:1 1 auto;height:100%;min-width:0;padding:0;gap:0}.bar-title-host--compact.sc-ds-bar-title-h .bar-title__row.sc-ds-bar-title{height:100%;align-items:center}.bar-title-host--compact.sc-ds-bar-title-h .bar-title__identity.sc-ds-bar-title{height:var(--dimension-size-400)}.bar-title-host--compact.sc-ds-bar-title-h .bar-title__divider.sc-ds-bar-title{margin-inline-start:0}.bar-title-host--compact.sc-ds-bar-title-h .bar-title__heading.sc-ds-bar-title{display:inline-flex;flex:1 1 auto;align-items:center;height:var(--dimension-size-400);padding-inline:calc(var(--ds-control-padding-inline) + var(--ds-control-label-inset));box-sizing:border-box}`;let x=0;const w=i(class i extends t{constructor(i){super();if(i!==false){this.__registerHost()}this.dsBack=e(this,"dsBack",7);this.dsBreadcrumbSelect=e(this,"dsBreadcrumbSelect",7);this.dsSectionChange=e(this,"dsSectionChange",7);this.dsAction=e(this,"dsAction",7);this.description="";this.showBack=false;this.backAriaLabel="Back";this.backLabel="Back";this.breadcrumbs=[];this.breadcrumbAriaLabel="Breadcrumb";this.sections=[];this.value="";this.sectionsAriaLabel="Change page section";this.primaryAction=null;this.actions=[];this.actionsAriaLabel="More page actions";this.variant="expanded";this.showDivider=true;this.sectionMenuOpen=false;this.actionMenuOpen=false;this.sectionMenuInitialFocusVisible=false;this.actionMenuInitialFocusVisible=false;this.instanceId=x++;this.sectionMenuTriggerId=`bar-title-section-trigger-${this.instanceId}`;this.sectionMenuId=`bar-title-section-menu-${this.instanceId}`;this.actionMenuTriggerId=`bar-title-action-trigger-${this.instanceId}`;this.actionMenuId=`bar-title-action-menu-${this.instanceId}`;this.sectionTriggerEl=null;this.actionTriggerEl=null;this.toggleSectionMenu=i=>{this.sectionMenuInitialFocusVisible=i.detail===0;this.actionMenuOpen=false;this.sectionMenuOpen=!this.sectionMenuOpen};this.closeSectionMenu=()=>{this.sectionMenuOpen=false};this.handleSectionSelect=i=>{const t=String(i.detail?.value??"");const e=this.selectableSections.find((i=>i.id===t));if(!e||e.isInactive)return;this.closeSectionMenu();this.dsSectionChange.emit(t);requestAnimationFrame((()=>this.sectionTriggerEl?.focus()))};this.toggleActionMenu=i=>{this.actionMenuInitialFocusVisible=i.detail===0;this.sectionMenuOpen=false;this.actionMenuOpen=!this.actionMenuOpen};this.closeActionMenu=()=>{this.actionMenuOpen=false};this.handleActionSelect=i=>{const t=String(i.detail?.value??"");const e=this.primaryCollapsed&&this.primaryAction?.id===t;const s=this.selectableActions.find((i=>i.id===t));if(!e&&!s)return;if(e&&(this.primaryAction?.isInactive||this.primaryAction?.isLoading)||s?.isInactive){return}this.closeActionMenu();this.dsAction.emit(t);requestAnimationFrame((()=>void this.actionTriggerEl?.setFocus?.()))};this.handleBreadcrumbSelect=i=>{if(this.breadcrumbs.length===0){this.dsBack.emit(i.detail.originalEvent);return}const t=this.dsBreadcrumbSelect.emit(i.detail);if(t.defaultPrevented)i.preventDefault()}}componentWillLoad(){if(this.el.closest("ds-shell-page")){this.el.setAttribute("data-shell-page-syncing","")}}handleSectionsChange(){if(!this.hasSectionSelector)this.closeSectionMenu()}handleActionsChange(){if(!this.showActionMenuTrigger)this.closeActionMenu()}get compact(){return this.variant!=="expanded"}get dividerVisible(){return this.compact?this.showCompactDivider??this.showDivider:this.showDivider}get expandedBreadcrumbItems(){if(this.breadcrumbs.length>0)return this.breadcrumbs;if(!this.showBack)return[];return[{id:"back",label:this.backLabel,ariaLabel:this.backAriaLabel}]}get backTooltipLabel(){return"Go back"}get primaryCollapsed(){return this.variant==="constrained"&&this.primaryAction!==null&&(this.primaryAction.collapse??"auto")==="auto"}get selectableSections(){return this.sections.filter((i=>!g(i)))}get hasSectionSelector(){return this.selectableSections.length>1}get effectiveValue(){return this.selectableSections.some((i=>i.id===this.value))?this.value:this.selectableSections[0]?.id??""}get selectedSectionLabel(){return this.selectableSections.find((i=>i.id===this.effectiveValue))?.label??""}get sectionTriggerAriaLabel(){return`${this.sectionsAriaLabel}. Current section: ${this.selectedSectionLabel}`}groupsFromItems(i,t){const e=[];let s=[];const r=()=>{if(s.length>0)e.push({items:s});s=[]};for(const e of i){if(g(e)){r()}else{s.push(t(e))}}r();return e}get sectionMenuSections(){return this.groupsFromItems(this.sections,(i=>({label:i.label,value:i.id,isSelected:i.id===this.effectiveValue,isInactive:i.isInactive})))}get selectableActions(){return this.actions.filter((i=>!g(i)))}get showActionMenuTrigger(){return this.selectableActions.length>0||this.primaryCollapsed&&this.primaryAction!==null}actionMenuItem(i){const t=i;return{label:i.label,value:i.id,isInactive:i.isInactive||t.isLoading,isDestructive:i.isDestructive||t.intent==="negative"}}get actionMenuSections(){const i=this.groupsFromItems(this.actions,(i=>this.actionMenuItem(i)));if(!this.primaryCollapsed||!this.primaryAction)return i;return[{items:[this.actionMenuItem(this.primaryAction)]},...i]}renderSectionSelector(){if(!this.hasSectionSelector)return null;return[s("div",{class:"bar-title__divider","aria-hidden":"true"}),s("div",{class:"bar-title__section-selector"},s("button",{ref:i=>{this.sectionTriggerEl=i??null},id:this.sectionMenuTriggerId,class:{"bar-title__section-trigger":true,"bar-title__section-trigger--expanded":this.sectionMenuOpen,"ds-control--md":true,"ds-focus-ring-inset":true,"ds-interaction-fill":true},type:"button","aria-haspopup":"menu","aria-controls":this.sectionMenuId,"aria-expanded":String(this.sectionMenuOpen),"aria-label":this.sectionTriggerAriaLabel,onClick:this.toggleSectionMenu},s("ds-text",{class:"bar-title__section-label ds-interaction-fill__content",as:"span",variant:"text-body-medium",emphasis:true,color:"primary",lineTruncation:1},this.selectedSectionLabel),s("ds-icon",{class:"bar-title__section-chevron ds-interaction-fill__content",name:"ChevronUpDown",size:"md",color:"inherit","aria-hidden":"true"})))]}renderActions(){const i=this.primaryAction;if(!i&&!this.showActionMenuTrigger)return null;return s("div",{class:"bar-title__actions"},i&&!this.primaryCollapsed?s("ds-button-filled",{class:"bar-title__primary-action",variant:i.icon?"icon-label":"label",icon:i.icon??"",label:i.label,intent:i.intent??"brand",contrast:i.contrast??"bold",size:"md",type:i.type??"button",isInactive:i.isInactive,isLoading:i.isLoading,onDsClick:()=>this.dsAction.emit(i.id)}):null,this.showActionMenuTrigger?s("ds-tooltip",{label:"Page options",side:"bottom",size:"sm"},s("ds-button-unfilled",{ref:i=>{this.actionTriggerEl=i??null},id:this.actionMenuTriggerId,class:"bar-title__more-actions",variant:"icon",icon:"Ellipses","aria-label":this.actionsAriaLabel,size:"md",activeFill:!this.compact,hasBorder:i!==null&&!this.primaryCollapsed,haspopup:"menu",controls:this.actionMenuId,expanded:this.actionMenuOpen,onDsClick:i=>this.toggleActionMenu(i.detail)})):null)}renderBreadcrumb(){const i=this.expandedBreadcrumbItems;if(i.length===0)return null;return s("ds-breadcrumb",{class:"bar-title__breadcrumb",items:i,ariaLabel:this.breadcrumbAriaLabel,onDsSelect:this.handleBreadcrumbSelect})}renderBack(){if(!this.showBack)return null;return s("ds-tooltip",{label:this.backTooltipLabel,side:"bottom",size:"sm"},s("ds-button-unfilled",{class:"bar-title__back",variant:"icon",icon:"ChevronLeft","aria-label":this.backAriaLabel,size:"md",activeFill:false,hasBorder:false,onDsClick:i=>this.dsBack.emit(i.detail)}))}render(){const i=this.compact;return s(r,{key:"bd411b2a6b20ec25a3db6819f91b6dc3d1ea6c99",class:{"bar-title-host--compact":i,"bar-title-host--expanded":this.variant==="expanded","bar-title-host--constrained":this.variant==="constrained","bar-title-host--has-description":!!this.description,"bar-title-host--has-back":this.showBack,"bar-title-host--has-breadcrumb":!i&&this.expandedBreadcrumbItems.length>0}},s("div",{key:"b489024eac757db0b96148e3cdf25c84ac81c366",class:{"bar-title":true,"bar-title--divider-hidden":!this.dividerVisible,"ds-chrome-header":i}},s("div",{key:"5c43097e41b15fdec9fcb087df4aafcb96ad5526",class:"bar-title__inner"},!i?this.renderBreadcrumb():null,s("div",{key:"a561eab4cc584f3897f56251da7e70d63dd48741",class:"bar-title__row"},s("div",{key:"b8b8352d17d048d9eb4a6afc2d04a384efe663a0",class:"bar-title__leading"},s("div",{key:"ff5e1e3b70f5a034a0d7316318bdbf1ff70ce970",class:"bar-title__title-row","data-shell-page-header-anchor":true},s("div",{key:"18d75498ffd938d660950261611586e2620b1d71",class:"bar-title__identity"},i?this.renderBack():null,s("ds-text",{key:"b5dd375bb691fb58253dea3fe25764571f1858e4",class:"bar-title__heading ds-control--md",variant:i?"text-title-small":"text-title-medium",emphasis:true,color:"primary",as:"h1",lineTruncation:1},this.heading)),this.renderSectionSelector()),this.description&&!i?s("ds-text",{class:"bar-title__description",variant:"text-body-small",color:"secondary",lineTruncation:2,wrap:"wrap",as:"p"},this.description):null),this.renderActions()))),this.hasSectionSelector?s("ds-menu",{id:this.sectionMenuId,class:"bar-title__section-menu",anchorId:this.sectionMenuTriggerId,menuLabel:this.sectionsAriaLabel,open:this.sectionMenuOpen,initialFocusVisible:this.sectionMenuInitialFocusVisible,sections:this.sectionMenuSections,onDsClose:this.closeSectionMenu,onDsSelect:this.handleSectionSelect}):null,this.showActionMenuTrigger?s("ds-menu",{id:this.actionMenuId,class:"bar-title__action-menu",anchorId:this.actionMenuTriggerId,align:"end",menuLabel:this.actionsAriaLabel,open:this.actionMenuOpen,initialFocusVisible:this.actionMenuInitialFocusVisible,sections:this.actionMenuSections,onDsClose:this.closeActionMenu,onDsSelect:this.handleActionSelect}):null)}get el(){return this}static get watchers(){return{sections:[{handleSectionsChange:0}],actions:[{handleActionsChange:0}],primaryAction:[{handleActionsChange:0}]}}static get style(){return _()}},[2,"ds-bar-title",{heading:[1],description:[1],showBack:[4,"show-back"],backAriaLabel:[1,"back-aria-label"],backLabel:[1,"back-label"],breadcrumbs:[16],breadcrumbAriaLabel:[1,"breadcrumb-aria-label"],sections:[16],value:[1],sectionsAriaLabel:[1,"sections-aria-label"],primaryAction:[16],actions:[16],actionsAriaLabel:[1,"actions-aria-label"],variant:[1],showDivider:[4,"show-divider"],showCompactDivider:[4,"show-compact-divider"],sectionMenuOpen:[32],actionMenuOpen:[32],sectionMenuInitialFocusVisible:[32],actionMenuInitialFocusVisible:[32]},undefined,{sections:[{handleSectionsChange:0}],actions:[{handleActionsChange:0}],primaryAction:[{handleActionsChange:0}]}]);function k(){if(typeof customElements==="undefined"){return}const i=["ds-bar-title","ds-badge","ds-breadcrumb","ds-button-filled","ds-button-unfilled","ds-icon","ds-loader","ds-menu","ds-swatch-picker","ds-switch","ds-tag","ds-text","ds-tooltip"];i.forEach((i=>{switch(i){case"ds-bar-title":if(!customElements.get(n(i))){customElements.define(n(i),w)}break;case"ds-badge":if(!customElements.get(n(i))){o()}break;case"ds-breadcrumb":if(!customElements.get(n(i))){a()}break;case"ds-button-filled":if(!customElements.get(n(i))){d()}break;case"ds-button-unfilled":if(!customElements.get(n(i))){c()}break;case"ds-icon":if(!customElements.get(n(i))){l()}break;case"ds-loader":if(!customElements.get(n(i))){h()}break;case"ds-menu":if(!customElements.get(n(i))){b()}break;case"ds-swatch-picker":if(!customElements.get(n(i))){f()}break;case"ds-switch":if(!customElements.get(n(i))){u()}break;case"ds-tag":if(!customElements.get(n(i))){v()}break;case"ds-text":if(!customElements.get(n(i))){m()}break;case"ds-tooltip":if(!customElements.get(n(i))){p()}break}}))}k();export{w as B,k as d};
2
+ //# sourceMappingURL=p-BUexfjjg.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["isBarTitleDivider","item","type","barTitleCss","nextBarTitleId","BarTitle","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","description","showBack","backAriaLabel","backLabel","breadcrumbs","breadcrumbAriaLabel","sections","value","sectionsAriaLabel","primaryAction","actions","actionsAriaLabel","variant","showDivider","sectionMenuOpen","actionMenuOpen","sectionMenuInitialFocusVisible","actionMenuInitialFocusVisible","instanceId","sectionMenuTriggerId","sectionMenuId","actionMenuTriggerId","actionMenuId","sectionTriggerEl","actionTriggerEl","toggleSectionMenu","event","detail","closeSectionMenu","handleSectionSelect","id","String","selected","selectableSections","find","section","isInactive","dsSectionChange","emit","requestAnimationFrame","focus","toggleActionMenu","closeActionMenu","handleActionSelect","primaryMatches","primaryCollapsed","action","selectableActions","candidate","isLoading","dsAction","setFocus","handleBreadcrumbSelect","length","dsBack","originalEvent","forwarded","dsBreadcrumbSelect","defaultPrevented","preventDefault","componentWillLoad","el","closest","setAttribute","handleSectionsChange","hasSectionSelector","handleActionsChange","showActionMenuTrigger","compact","dividerVisible","showCompactDivider","expandedBreadcrumbItems","label","ariaLabel","backTooltipLabel","collapse","filter","effectiveValue","some","selectedSectionLabel","sectionTriggerAriaLabel","groupsFromItems","source","map","groups","items","commit","push","sectionMenuSections","isSelected","actionMenuItem","primary","isDestructive","intent","actionMenuSections","renderSectionSelector","h","class","ref","onClick","as","emphasis","color","lineTruncation","name","size","renderActions","icon","contrast","onDsClick","side","activeFill","hasBorder","haspopup","controls","expanded","renderBreadcrumb","onDsSelect","renderBack","render","Host","key","heading","wrap","anchorId","menuLabel","open","initialFocusVisible","onDsClose","align"],"sources":["src/wc/components/BarTitle/bar-title-types.ts","src/wc/components/BarTitle/BarTitle.css?tag=ds-bar-title&encapsulation=scoped","src/wc/components/BarTitle/BarTitle.tsx"],"sourcesContent":["import type { ButtonFilledContrast, ButtonFilledIntent } from '../ButtonFilled/ButtonFilled';\n\nexport interface BarTitleSection {\n id: string;\n label: string;\n isInactive?: boolean;\n}\n\nexport interface BarTitleDivider {\n type: 'divider';\n}\n\nexport type BarTitleSectionItem = BarTitleSection | BarTitleDivider;\n\nexport interface BarTitleAction {\n id: string;\n label: string;\n isInactive?: boolean;\n isDestructive?: boolean;\n}\n\nexport interface BarTitlePrimaryAction extends BarTitleAction {\n icon?: string;\n intent?: ButtonFilledIntent;\n contrast?: ButtonFilledContrast;\n isLoading?: boolean;\n type?: 'button' | 'submit' | 'reset';\n collapse?: BarTitlePrimaryActionCollapse;\n}\n\nexport type BarTitleActionItem = BarTitleAction | BarTitleDivider;\n\nexport type BarTitleVariant = 'expanded' | 'compact' | 'constrained';\n\nexport type BarTitlePrimaryActionCollapse = 'auto' | 'never';\n\nexport function isBarTitleDivider(\n item: BarTitleSectionItem | BarTitleActionItem\n): item is BarTitleDivider {\n return 'type' in item && item.type === 'divider';\n}\n","@import '../../utils/control-density.css';\n@import '../../utils/chrome-header.css';\n@import '../../utils/focus-ring.css';\n@import '../../utils/interaction-fill.css';\n\n:host {\n display: block;\n min-width: 0;\n box-sizing: border-box;\n background: var(--_shell-page-header-background, var(--color-background-primary));\n}\n\n:host([data-shell-page-syncing]) {\n visibility: hidden;\n}\n\n.bar-title {\n position: relative;\n min-width: 0;\n box-sizing: border-box;\n background: var(--_shell-page-header-background, var(--color-background-primary));\n}\n\n.bar-title::after {\n content: '';\n position: absolute;\n inset: auto var(--ds-bar-title-divider-inset, var(--dimension-space-400)) 0;\n height: var(--dimension-stroke-width-012);\n background: var(--color-border-tertiary);\n pointer-events: none;\n}\n\n.bar-title--divider-hidden::after {\n display: none;\n}\n\n.bar-title__inner {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--dimension-space-100);\n padding: var(--dimension-space-400);\n box-sizing: border-box;\n}\n\n.bar-title__row {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--dimension-space-100);\n min-height: var(--dimension-size-400);\n min-width: 0;\n}\n\n:host(.bar-title-host--expanded) .bar-title__row {\n gap: var(--dimension-space-400);\n}\n\n.bar-title__leading {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n gap: var(--dimension-space-100);\n min-width: 0;\n}\n\n.bar-title__title-row {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-100);\n min-width: 0;\n min-height: var(--dimension-size-400);\n}\n\n.bar-title__identity {\n display: flex;\n flex: 0 1 auto;\n align-items: center;\n gap: var(--dimension-space-050);\n min-width: 0;\n}\n\n.bar-title__back,\n.bar-title__section-chevron {\n flex: 0 0 auto;\n}\n\n.bar-title__breadcrumb {\n display: block;\n width: 100%;\n min-width: 0;\n}\n\n.bar-title__heading {\n display: block;\n width: auto;\n min-width: 0;\n user-select: none;\n}\n\n.bar-title__divider {\n width: var(--dimension-stroke-width-012);\n height: var(--dimension-size-250);\n margin-inline-start: var(--dimension-space-100);\n flex: 0 0 var(--dimension-stroke-width-012);\n background: var(--color-border-tertiary);\n}\n\n.bar-title__section-selector {\n display: flex;\n flex: 0 1 auto;\n min-width: 0;\n max-width: var(--dimension-panel-width-sm);\n}\n\n.bar-title__section-trigger {\n --ds-control-radius: var(--dimension-radius-half);\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--ds-control-gap);\n height: var(--ds-control-height);\n min-width: 0;\n max-width: 100%;\n padding-inline: var(--ds-control-padding-inline);\n border: none;\n border-radius: var(--ds-control-radius);\n box-sizing: border-box;\n background: transparent;\n color: var(--color-foreground-secondary);\n cursor: default;\n font-family: inherit;\n user-select: none;\n}\n\n.bar-title__section-trigger--expanded {\n color: var(--color-foreground-primary);\n --ds-interaction-hover: var(--ds-interaction-pressed);\n}\n\n.bar-title__section-trigger--expanded::after {\n background: var(--ds-interaction-pressed);\n}\n\n.bar-title__section-label {\n min-width: 0;\n padding-inline: var(--ds-control-label-inset);\n}\n\n.bar-title__actions {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-100);\n flex: 0 0 auto;\n}\n\n.bar-title__description {\n display: block;\n min-width: 0;\n max-width: 100%;\n}\n\n:host(.bar-title-host--compact) .bar-title {\n height: var(--dimension-size-600);\n}\n\n:host(.bar-title-host--compact) .bar-title::after {\n inset-inline: 0;\n}\n\n:host(.bar-title-host--compact) .bar-title__inner {\n flex: 1 1 auto;\n height: 100%;\n min-width: 0;\n padding: 0;\n gap: 0;\n}\n\n:host(.bar-title-host--compact) .bar-title__row {\n height: 100%;\n align-items: center;\n}\n\n:host(.bar-title-host--compact) .bar-title__identity {\n height: var(--dimension-size-400);\n}\n\n:host(.bar-title-host--compact) .bar-title__divider {\n margin-inline-start: 0;\n}\n\n:host(.bar-title-host--compact) .bar-title__heading {\n display: inline-flex;\n flex: 1 1 auto;\n align-items: center;\n height: var(--dimension-size-400);\n padding-inline: calc(var(--ds-control-padding-inline) + var(--ds-control-label-inset));\n box-sizing: border-box;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport type { BreadcrumbItem, BreadcrumbSelectDetail } from '../Breadcrumb/breadcrumb-types';\nimport type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport {\n isBarTitleDivider,\n type BarTitleAction,\n type BarTitleActionItem,\n type BarTitlePrimaryAction,\n type BarTitleSection,\n type BarTitleSectionItem,\n type BarTitleVariant,\n} from './bar-title-types';\n\nlet nextBarTitleId = 0;\n\ntype FocusableButton = HTMLElement & { setFocus?: () => Promise<void> };\n\n@Component({\n tag: 'ds-bar-title',\n styleUrl: 'BarTitle.css',\n scoped: true,\n})\nexport class BarTitle {\n @Element() el!: HTMLElement;\n\n /** The page's single visible h1. */\n @Prop() heading!: string;\n\n /** Optional supporting copy shown in the expanded presentation. */\n @Prop() description: string = '';\n\n /** Show the leading page-level Back action. */\n @Prop({ attribute: 'show-back' }) showBack: boolean = false;\n\n /** Accessible name for the leading Back action. */\n @Prop() backAriaLabel: string = 'Back';\n\n /** Visible parent-page label used by the expanded breadcrumb when breadcrumbs is empty. */\n @Prop() backLabel: string = 'Back';\n\n /** Optional expanded ancestor path. Compact variants continue to use the Back action. */\n @Prop() breadcrumbs: BreadcrumbItem[] = [];\n\n /** Accessible name for the expanded breadcrumb navigation landmark. */\n @Prop() breadcrumbAriaLabel: string = 'Breadcrumb';\n\n /** Optional page sections exposed through the active-section menu. */\n @Prop() sections: BarTitleSectionItem[] = [];\n\n /** Id of the active page section. */\n @Prop() value: string = '';\n\n /** Accessible name for the page-section menu. */\n @Prop() sectionsAriaLabel: string = 'Change page section';\n\n /** The one highest-emphasis page action. */\n @Prop() primaryAction: BarTitlePrimaryAction | null = null;\n\n /** Secondary page actions shown in the overflow menu. Dividers create groups. */\n @Prop() actions: BarTitleActionItem[] = [];\n\n /** Accessible name for the page-actions menu. */\n @Prop() actionsAriaLabel: string = 'More page actions';\n\n /** Explicit visual/capacity variant. ShellPage owns automatic selection. */\n @Prop() variant: BarTitleVariant = 'expanded';\n\n /** Draw the page-title divider beneath the header. */\n @Prop() showDivider: boolean = true;\n\n /** Override divider visibility for compact and constrained variants. */\n @Prop() showCompactDivider?: boolean;\n\n /** Emitted when the leading Back action is activated. */\n @Event() dsBack!: EventEmitter<MouseEvent>;\n\n /** Emitted when an authored expanded breadcrumb item is activated. */\n @Event({ cancelable: true }) dsBreadcrumbSelect!: EventEmitter<BreadcrumbSelectDetail>;\n\n /** Emitted with the newly selected page-section id. */\n @Event() dsSectionChange!: EventEmitter<string>;\n\n /** Emitted with the activated primary or overflow action id. */\n @Event() dsAction!: EventEmitter<string>;\n\n @State() private sectionMenuOpen = false;\n @State() private actionMenuOpen = false;\n @State() private sectionMenuInitialFocusVisible = false;\n @State() private actionMenuInitialFocusVisible = false;\n\n private readonly instanceId = nextBarTitleId++;\n private readonly sectionMenuTriggerId = `bar-title-section-trigger-${this.instanceId}`;\n private readonly sectionMenuId = `bar-title-section-menu-${this.instanceId}`;\n private readonly actionMenuTriggerId = `bar-title-action-trigger-${this.instanceId}`;\n private readonly actionMenuId = `bar-title-action-menu-${this.instanceId}`;\n private sectionTriggerEl: HTMLButtonElement | null = null;\n private actionTriggerEl: FocusableButton | null = null;\n\n componentWillLoad() {\n if (this.el.closest('ds-shell-page')) {\n this.el.setAttribute('data-shell-page-syncing', '');\n }\n }\n\n @Watch('sections')\n handleSectionsChange() {\n if (!this.hasSectionSelector) this.closeSectionMenu();\n }\n\n @Watch('actions')\n @Watch('primaryAction')\n handleActionsChange() {\n if (!this.showActionMenuTrigger) this.closeActionMenu();\n }\n\n private get compact(): boolean {\n return this.variant !== 'expanded';\n }\n\n private get dividerVisible(): boolean {\n return this.compact ? (this.showCompactDivider ?? this.showDivider) : this.showDivider;\n }\n\n private get expandedBreadcrumbItems(): BreadcrumbItem[] {\n if (this.breadcrumbs.length > 0) return this.breadcrumbs;\n if (!this.showBack) return [];\n return [\n {\n id: 'back',\n label: this.backLabel,\n ariaLabel: this.backAriaLabel,\n },\n ];\n }\n\n /** Tooltip copy is fixed and generic; backAriaLabel/actionsAriaLabel stay page-specific. */\n private get backTooltipLabel(): string {\n return 'Go back';\n }\n\n private get primaryCollapsed(): boolean {\n return (\n this.variant === 'constrained' &&\n this.primaryAction !== null &&\n (this.primaryAction.collapse ?? 'auto') === 'auto'\n );\n }\n\n private get selectableSections(): BarTitleSection[] {\n return this.sections.filter((item): item is BarTitleSection => !isBarTitleDivider(item));\n }\n\n private get hasSectionSelector(): boolean {\n return this.selectableSections.length > 1;\n }\n\n private get effectiveValue(): string {\n return this.selectableSections.some(section => section.id === this.value)\n ? this.value\n : (this.selectableSections[0]?.id ?? '');\n }\n\n private get selectedSectionLabel(): string {\n return this.selectableSections.find(section => section.id === this.effectiveValue)?.label ?? '';\n }\n\n private get sectionTriggerAriaLabel(): string {\n return `${this.sectionsAriaLabel}. Current section: ${this.selectedSectionLabel}`;\n }\n\n private groupsFromItems<T extends BarTitleSection | BarTitleAction>(\n source: Array<T | { type: 'divider' }>,\n map: (item: T) => MenuItemData\n ): MenuSection[] {\n const groups: MenuSection[] = [];\n let items: MenuItemData[] = [];\n const commit = () => {\n if (items.length > 0) groups.push({ items });\n items = [];\n };\n\n for (const item of source) {\n if (isBarTitleDivider(item)) {\n commit();\n } else {\n items.push(map(item));\n }\n }\n commit();\n return groups;\n }\n\n private get sectionMenuSections(): MenuSection[] {\n return this.groupsFromItems(this.sections, section => ({\n label: section.label,\n value: section.id,\n isSelected: section.id === this.effectiveValue,\n isInactive: section.isInactive,\n }));\n }\n\n private get selectableActions(): BarTitleAction[] {\n return this.actions.filter((item): item is BarTitleAction => !isBarTitleDivider(item));\n }\n\n private get showActionMenuTrigger(): boolean {\n return (\n this.selectableActions.length > 0 || (this.primaryCollapsed && this.primaryAction !== null)\n );\n }\n\n private actionMenuItem(action: BarTitleAction | BarTitlePrimaryAction): MenuItemData {\n const primary = action as BarTitlePrimaryAction;\n return {\n label: action.label,\n value: action.id,\n isInactive: action.isInactive || primary.isLoading,\n isDestructive: action.isDestructive || primary.intent === 'negative',\n };\n }\n\n private get actionMenuSections(): MenuSection[] {\n const groups = this.groupsFromItems(this.actions, action => this.actionMenuItem(action));\n if (!this.primaryCollapsed || !this.primaryAction) return groups;\n return [{ items: [this.actionMenuItem(this.primaryAction)] }, ...groups];\n }\n\n private toggleSectionMenu = (event: MouseEvent) => {\n this.sectionMenuInitialFocusVisible = event.detail === 0;\n this.actionMenuOpen = false;\n this.sectionMenuOpen = !this.sectionMenuOpen;\n };\n\n private closeSectionMenu = () => {\n this.sectionMenuOpen = false;\n };\n\n private handleSectionSelect = (event: CustomEvent<MenuItemData>) => {\n const id = String(event.detail?.value ?? '');\n const selected = this.selectableSections.find(section => section.id === id);\n if (!selected || selected.isInactive) return;\n this.closeSectionMenu();\n this.dsSectionChange.emit(id);\n requestAnimationFrame(() => this.sectionTriggerEl?.focus());\n };\n\n private toggleActionMenu = (event: MouseEvent) => {\n this.actionMenuInitialFocusVisible = event.detail === 0;\n this.sectionMenuOpen = false;\n this.actionMenuOpen = !this.actionMenuOpen;\n };\n\n private closeActionMenu = () => {\n this.actionMenuOpen = false;\n };\n\n private handleActionSelect = (event: CustomEvent<MenuItemData>) => {\n const id = String(event.detail?.value ?? '');\n const primaryMatches = this.primaryCollapsed && this.primaryAction?.id === id;\n const action = this.selectableActions.find(candidate => candidate.id === id);\n if (!primaryMatches && !action) return;\n if (\n (primaryMatches && (this.primaryAction?.isInactive || this.primaryAction?.isLoading)) ||\n action?.isInactive\n ) {\n return;\n }\n this.closeActionMenu();\n this.dsAction.emit(id);\n requestAnimationFrame(() => void this.actionTriggerEl?.setFocus?.());\n };\n\n private renderSectionSelector() {\n if (!this.hasSectionSelector) return null;\n return [\n <div class=\"bar-title__divider\" aria-hidden=\"true\" />,\n <div class=\"bar-title__section-selector\">\n <button\n ref={el => {\n this.sectionTriggerEl = el ?? null;\n }}\n id={this.sectionMenuTriggerId}\n class={{\n 'bar-title__section-trigger': true,\n 'bar-title__section-trigger--expanded': this.sectionMenuOpen,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n }}\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-controls={this.sectionMenuId}\n aria-expanded={String(this.sectionMenuOpen)}\n aria-label={this.sectionTriggerAriaLabel}\n onClick={this.toggleSectionMenu}\n >\n <ds-text\n class=\"bar-title__section-label ds-interaction-fill__content\"\n as=\"span\"\n variant=\"text-body-medium\"\n emphasis\n color=\"primary\"\n lineTruncation={1}\n >\n {this.selectedSectionLabel}\n </ds-text>\n <ds-icon\n class=\"bar-title__section-chevron ds-interaction-fill__content\"\n name=\"ChevronUpDown\"\n size=\"md\"\n color=\"inherit\"\n aria-hidden=\"true\"\n />\n </button>\n </div>,\n ];\n }\n\n private renderActions() {\n const primary = this.primaryAction;\n if (!primary && !this.showActionMenuTrigger) return null;\n\n return (\n <div class=\"bar-title__actions\">\n {primary && !this.primaryCollapsed ? (\n <ds-button-filled\n class=\"bar-title__primary-action\"\n variant={primary.icon ? 'icon-label' : 'label'}\n icon={primary.icon ?? ''}\n label={primary.label}\n intent={primary.intent ?? 'brand'}\n contrast={primary.contrast ?? 'bold'}\n size=\"md\"\n type={primary.type ?? 'button'}\n isInactive={primary.isInactive}\n isLoading={primary.isLoading}\n onDsClick={() => this.dsAction.emit(primary.id)}\n />\n ) : null}\n {this.showActionMenuTrigger ? (\n <ds-tooltip label=\"Page options\" side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n ref={el => {\n this.actionTriggerEl = el ?? null;\n }}\n id={this.actionMenuTriggerId}\n class=\"bar-title__more-actions\"\n variant=\"icon\"\n icon=\"Ellipses\"\n aria-label={this.actionsAriaLabel}\n size=\"md\"\n activeFill={!this.compact}\n hasBorder={primary !== null && !this.primaryCollapsed}\n haspopup=\"menu\"\n controls={this.actionMenuId}\n expanded={this.actionMenuOpen}\n onDsClick={(event: CustomEvent<MouseEvent>) => this.toggleActionMenu(event.detail)}\n />\n </ds-tooltip>\n ) : null}\n </div>\n );\n }\n\n private handleBreadcrumbSelect = (event: CustomEvent<BreadcrumbSelectDetail>) => {\n if (this.breadcrumbs.length === 0) {\n this.dsBack.emit(event.detail.originalEvent);\n return;\n }\n const forwarded = this.dsBreadcrumbSelect.emit(event.detail);\n if (forwarded.defaultPrevented) event.preventDefault();\n };\n\n private renderBreadcrumb() {\n const items = this.expandedBreadcrumbItems;\n if (items.length === 0) return null;\n return (\n <ds-breadcrumb\n class=\"bar-title__breadcrumb\"\n items={items}\n ariaLabel={this.breadcrumbAriaLabel}\n onDsSelect={this.handleBreadcrumbSelect}\n />\n );\n }\n\n private renderBack() {\n if (!this.showBack) return null;\n return (\n <ds-tooltip label={this.backTooltipLabel} side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n class=\"bar-title__back\"\n variant=\"icon\"\n icon=\"ChevronLeft\"\n aria-label={this.backAriaLabel}\n size=\"md\"\n activeFill={false}\n hasBorder={false}\n onDsClick={(event: CustomEvent<MouseEvent>) => this.dsBack.emit(event.detail)}\n />\n </ds-tooltip>\n );\n }\n\n render() {\n const compact = this.compact;\n return (\n <Host\n class={{\n 'bar-title-host--compact': compact,\n 'bar-title-host--expanded': this.variant === 'expanded',\n 'bar-title-host--constrained': this.variant === 'constrained',\n 'bar-title-host--has-description': !!this.description,\n 'bar-title-host--has-back': this.showBack,\n 'bar-title-host--has-breadcrumb': !compact && this.expandedBreadcrumbItems.length > 0,\n }}\n >\n <div\n class={{\n 'bar-title': true,\n 'bar-title--divider-hidden': !this.dividerVisible,\n 'ds-chrome-header': compact,\n }}\n >\n <div class=\"bar-title__inner\">\n {!compact ? this.renderBreadcrumb() : null}\n <div class=\"bar-title__row\">\n <div class=\"bar-title__leading\">\n <div class=\"bar-title__title-row\" data-shell-page-header-anchor>\n <div class=\"bar-title__identity\">\n {compact ? this.renderBack() : null}\n <ds-text\n class=\"bar-title__heading ds-control--md\"\n variant={compact ? 'text-title-small' : 'text-title-medium'}\n emphasis\n color=\"primary\"\n as=\"h1\"\n lineTruncation={1}\n >\n {this.heading}\n </ds-text>\n </div>\n {this.renderSectionSelector()}\n </div>\n {this.description && !compact ? (\n <ds-text\n class=\"bar-title__description\"\n variant=\"text-body-small\"\n color=\"secondary\"\n lineTruncation={2}\n wrap=\"wrap\"\n as=\"p\"\n >\n {this.description}\n </ds-text>\n ) : null}\n </div>\n {this.renderActions()}\n </div>\n </div>\n </div>\n\n {this.hasSectionSelector ? (\n <ds-menu\n id={this.sectionMenuId}\n class=\"bar-title__section-menu\"\n anchorId={this.sectionMenuTriggerId}\n menuLabel={this.sectionsAriaLabel}\n open={this.sectionMenuOpen}\n initialFocusVisible={this.sectionMenuInitialFocusVisible}\n sections={this.sectionMenuSections}\n onDsClose={this.closeSectionMenu}\n onDsSelect={this.handleSectionSelect}\n />\n ) : null}\n\n {this.showActionMenuTrigger ? (\n <ds-menu\n id={this.actionMenuId}\n class=\"bar-title__action-menu\"\n anchorId={this.actionMenuTriggerId}\n align=\"end\"\n menuLabel={this.actionsAriaLabel}\n open={this.actionMenuOpen}\n initialFocusVisible={this.actionMenuInitialFocusVisible}\n sections={this.actionMenuSections}\n onDsClose={this.closeActionMenu}\n onDsSelect={this.handleActionSelect}\n />\n ) : null}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isBarTitleDivider","item","type","barTitleCss","nextBarTitleId","BarTitle","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","description","showBack","backAriaLabel","backLabel","breadcrumbs","breadcrumbAriaLabel","sections","value","sectionsAriaLabel","primaryAction","actions","actionsAriaLabel","variant","showDivider","sectionMenuOpen","actionMenuOpen","sectionMenuInitialFocusVisible","actionMenuInitialFocusVisible","instanceId","sectionMenuTriggerId","sectionMenuId","actionMenuTriggerId","actionMenuId","sectionTriggerEl","actionTriggerEl","toggleSectionMenu","event","detail","closeSectionMenu","handleSectionSelect","id","String","selected","selectableSections","find","section","isInactive","dsSectionChange","emit","requestAnimationFrame","focus","toggleActionMenu","closeActionMenu","handleActionSelect","primaryMatches","primaryCollapsed","action","selectableActions","candidate","isLoading","dsAction","setFocus","handleBreadcrumbSelect","length","dsBack","originalEvent","forwarded","dsBreadcrumbSelect","defaultPrevented","preventDefault","componentWillLoad","el","closest","setAttribute","handleSectionsChange","hasSectionSelector","handleActionsChange","showActionMenuTrigger","compact","dividerVisible","showCompactDivider","expandedBreadcrumbItems","label","ariaLabel","backTooltipLabel","collapse","filter","effectiveValue","some","selectedSectionLabel","sectionTriggerAriaLabel","groupsFromItems","source","map","groups","items","commit","push","sectionMenuSections","isSelected","actionMenuItem","primary","isDestructive","intent","actionMenuSections","renderSectionSelector","h","class","ref","onClick","as","emphasis","color","lineTruncation","name","size","renderActions","icon","contrast","onDsClick","side","activeFill","hasBorder","haspopup","controls","expanded","renderBreadcrumb","onDsSelect","renderBack","render","Host","key","heading","wrap","anchorId","menuLabel","open","initialFocusVisible","onDsClose","align"],"sources":["src/wc/components/BarTitle/bar-title-types.ts","src/wc/components/BarTitle/BarTitle.css?tag=ds-bar-title&encapsulation=scoped","src/wc/components/BarTitle/BarTitle.tsx"],"sourcesContent":["import type { ButtonFilledContrast, ButtonFilledIntent } from '../ButtonFilled/ButtonFilled';\n\nexport interface BarTitleSection {\n id: string;\n label: string;\n isInactive?: boolean;\n}\n\nexport interface BarTitleDivider {\n type: 'divider';\n}\n\nexport type BarTitleSectionItem = BarTitleSection | BarTitleDivider;\n\nexport interface BarTitleAction {\n id: string;\n label: string;\n isInactive?: boolean;\n isDestructive?: boolean;\n}\n\nexport interface BarTitlePrimaryAction extends BarTitleAction {\n icon?: string;\n intent?: ButtonFilledIntent;\n contrast?: ButtonFilledContrast;\n isLoading?: boolean;\n type?: 'button' | 'submit' | 'reset';\n collapse?: BarTitlePrimaryActionCollapse;\n}\n\nexport type BarTitleActionItem = BarTitleAction | BarTitleDivider;\n\nexport type BarTitleVariant = 'expanded' | 'compact' | 'constrained';\n\nexport type BarTitlePrimaryActionCollapse = 'auto' | 'never';\n\nexport function isBarTitleDivider(\n item: BarTitleSectionItem | BarTitleActionItem\n): item is BarTitleDivider {\n return 'type' in item && item.type === 'divider';\n}\n","@import '../../utils/control-density.css';\n@import '../../utils/chrome-header.css';\n@import '../../utils/focus-ring.css';\n@import '../../utils/interaction-fill.css';\n\n:host {\n display: block;\n min-width: 0;\n box-sizing: border-box;\n background: var(--_shell-page-header-background, var(--color-background-primary));\n}\n\n:host([data-shell-page-syncing]) {\n visibility: hidden;\n}\n\n.bar-title {\n position: relative;\n min-width: 0;\n box-sizing: border-box;\n background: var(--_shell-page-header-background, var(--color-background-primary));\n}\n\n.bar-title::after {\n content: '';\n position: absolute;\n inset: auto var(--ds-bar-title-divider-inset, var(--dimension-space-400)) 0;\n height: var(--dimension-stroke-width-012);\n background: var(--color-border-tertiary);\n pointer-events: none;\n}\n\n.bar-title--divider-hidden::after {\n display: none;\n}\n\n.bar-title__inner {\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n gap: var(--dimension-space-100);\n padding: var(--dimension-space-400);\n box-sizing: border-box;\n}\n\n.bar-title__row {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: var(--dimension-space-100);\n min-height: var(--dimension-size-400);\n min-width: 0;\n}\n\n:host(.bar-title-host--expanded) .bar-title__row {\n gap: var(--dimension-space-400);\n}\n\n.bar-title__leading {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n gap: var(--dimension-space-100);\n min-width: 0;\n}\n\n.bar-title__title-row {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-100);\n min-width: 0;\n min-height: var(--dimension-size-400);\n}\n\n.bar-title__identity {\n display: flex;\n flex: 0 1 auto;\n align-items: center;\n gap: var(--dimension-space-050);\n min-width: 0;\n}\n\n.bar-title__back,\n.bar-title__section-chevron {\n flex: 0 0 auto;\n}\n\n.bar-title__breadcrumb {\n display: block;\n width: 100%;\n min-width: 0;\n}\n\n.bar-title__heading {\n display: block;\n width: auto;\n min-width: 0;\n user-select: none;\n}\n\n.bar-title__divider {\n width: var(--dimension-stroke-width-012);\n height: var(--dimension-size-250);\n margin-inline-start: var(--dimension-space-100);\n flex: 0 0 var(--dimension-stroke-width-012);\n background: var(--color-border-tertiary);\n}\n\n.bar-title__section-selector {\n display: flex;\n flex: 0 1 auto;\n min-width: 0;\n max-width: var(--dimension-panel-width-sm);\n}\n\n.bar-title__section-trigger {\n --ds-control-radius: var(--dimension-radius-half);\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--ds-control-gap);\n height: var(--ds-control-height);\n min-width: 0;\n max-width: 100%;\n padding-inline: var(--ds-control-padding-inline);\n border: none;\n border-radius: var(--ds-control-radius);\n box-sizing: border-box;\n background: transparent;\n color: var(--color-foreground-secondary);\n cursor: default;\n font-family: inherit;\n user-select: none;\n}\n\n.bar-title__section-trigger--expanded {\n color: var(--color-foreground-primary);\n --ds-interaction-hover: var(--ds-interaction-pressed);\n}\n\n.bar-title__section-trigger--expanded::after {\n background: var(--ds-interaction-pressed);\n}\n\n.bar-title__section-label {\n min-width: 0;\n padding-inline: var(--ds-control-label-inset);\n}\n\n.bar-title__actions {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-100);\n flex: 0 0 auto;\n}\n\n.bar-title__description {\n display: block;\n min-width: 0;\n max-width: 100%;\n}\n\n:host(.bar-title-host--compact) .bar-title {\n height: var(--dimension-size-600);\n}\n\n:host(.bar-title-host--compact) .bar-title::after {\n inset-inline: 0;\n}\n\n:host(.bar-title-host--compact) .bar-title__inner {\n flex: 1 1 auto;\n height: 100%;\n min-width: 0;\n padding: 0;\n gap: 0;\n}\n\n:host(.bar-title-host--compact) .bar-title__row {\n height: 100%;\n align-items: center;\n}\n\n:host(.bar-title-host--compact) .bar-title__identity {\n height: var(--dimension-size-400);\n}\n\n:host(.bar-title-host--compact) .bar-title__divider {\n margin-inline-start: 0;\n}\n\n:host(.bar-title-host--compact) .bar-title__heading {\n display: inline-flex;\n flex: 1 1 auto;\n align-items: center;\n height: var(--dimension-size-400);\n padding-inline: calc(var(--ds-control-padding-inline) + var(--ds-control-label-inset));\n box-sizing: border-box;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport type { BreadcrumbItem, BreadcrumbSelectDetail } from '../Breadcrumb/breadcrumb-types';\nimport type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport {\n isBarTitleDivider,\n type BarTitleAction,\n type BarTitleActionItem,\n type BarTitlePrimaryAction,\n type BarTitleSection,\n type BarTitleSectionItem,\n type BarTitleVariant,\n} from './bar-title-types';\n\nlet nextBarTitleId = 0;\n\ntype FocusableButton = HTMLElement & { setFocus?: () => Promise<void> };\n\n@Component({\n tag: 'ds-bar-title',\n styleUrl: 'BarTitle.css',\n scoped: true,\n})\nexport class BarTitle {\n @Element() el!: HTMLElement;\n\n /** The page's single visible h1. */\n @Prop() heading!: string;\n\n /** Optional supporting copy shown in the expanded presentation. */\n @Prop() description: string = '';\n\n /** Show the leading page-level Back action. */\n @Prop({ attribute: 'show-back' }) showBack: boolean = false;\n\n /** Accessible name for the leading Back action. */\n @Prop() backAriaLabel: string = 'Back';\n\n /** Visible parent-page label used by the expanded breadcrumb when breadcrumbs is empty. */\n @Prop() backLabel: string = 'Back';\n\n /** Optional expanded ancestor path. Compact variants continue to use the Back action. */\n @Prop() breadcrumbs: BreadcrumbItem[] = [];\n\n /** Accessible name for the expanded breadcrumb navigation landmark. */\n @Prop() breadcrumbAriaLabel: string = 'Breadcrumb';\n\n /** Optional page sections exposed through the active-section menu. */\n @Prop() sections: BarTitleSectionItem[] = [];\n\n /** Id of the active page section. */\n @Prop() value: string = '';\n\n /** Accessible name for the page-section menu. */\n @Prop() sectionsAriaLabel: string = 'Change page section';\n\n /** The one highest-emphasis page action. */\n @Prop() primaryAction: BarTitlePrimaryAction | null = null;\n\n /** Secondary page actions shown in the overflow menu. Dividers create groups. */\n @Prop() actions: BarTitleActionItem[] = [];\n\n /** Accessible name for the page-actions menu. */\n @Prop() actionsAriaLabel: string = 'More page actions';\n\n /** Explicit visual/capacity variant. ShellPage owns automatic selection. */\n @Prop() variant: BarTitleVariant = 'expanded';\n\n /** Draw the page-title divider beneath the header. */\n @Prop() showDivider: boolean = true;\n\n /** Override divider visibility for compact and constrained variants. */\n @Prop() showCompactDivider?: boolean;\n\n /** Emitted when the leading Back action is activated. */\n @Event() dsBack!: EventEmitter<MouseEvent>;\n\n /** Emitted when an authored expanded breadcrumb item is activated. */\n @Event({ cancelable: true }) dsBreadcrumbSelect!: EventEmitter<BreadcrumbSelectDetail>;\n\n /** Emitted with the newly selected page-section id. */\n @Event() dsSectionChange!: EventEmitter<string>;\n\n /** Emitted with the activated primary or overflow action id. */\n @Event() dsAction!: EventEmitter<string>;\n\n @State() private sectionMenuOpen = false;\n @State() private actionMenuOpen = false;\n @State() private sectionMenuInitialFocusVisible = false;\n @State() private actionMenuInitialFocusVisible = false;\n\n private readonly instanceId = nextBarTitleId++;\n private readonly sectionMenuTriggerId = `bar-title-section-trigger-${this.instanceId}`;\n private readonly sectionMenuId = `bar-title-section-menu-${this.instanceId}`;\n private readonly actionMenuTriggerId = `bar-title-action-trigger-${this.instanceId}`;\n private readonly actionMenuId = `bar-title-action-menu-${this.instanceId}`;\n private sectionTriggerEl: HTMLButtonElement | null = null;\n private actionTriggerEl: FocusableButton | null = null;\n\n componentWillLoad() {\n if (this.el.closest('ds-shell-page')) {\n this.el.setAttribute('data-shell-page-syncing', '');\n }\n }\n\n @Watch('sections')\n handleSectionsChange() {\n if (!this.hasSectionSelector) this.closeSectionMenu();\n }\n\n @Watch('actions')\n @Watch('primaryAction')\n handleActionsChange() {\n if (!this.showActionMenuTrigger) this.closeActionMenu();\n }\n\n private get compact(): boolean {\n return this.variant !== 'expanded';\n }\n\n private get dividerVisible(): boolean {\n return this.compact ? (this.showCompactDivider ?? this.showDivider) : this.showDivider;\n }\n\n private get expandedBreadcrumbItems(): BreadcrumbItem[] {\n if (this.breadcrumbs.length > 0) return this.breadcrumbs;\n if (!this.showBack) return [];\n return [\n {\n id: 'back',\n label: this.backLabel,\n ariaLabel: this.backAriaLabel,\n },\n ];\n }\n\n /** Tooltip copy is fixed and generic; backAriaLabel/actionsAriaLabel stay page-specific. */\n private get backTooltipLabel(): string {\n return 'Go back';\n }\n\n private get primaryCollapsed(): boolean {\n return (\n this.variant === 'constrained' &&\n this.primaryAction !== null &&\n (this.primaryAction.collapse ?? 'auto') === 'auto'\n );\n }\n\n private get selectableSections(): BarTitleSection[] {\n return this.sections.filter((item): item is BarTitleSection => !isBarTitleDivider(item));\n }\n\n private get hasSectionSelector(): boolean {\n return this.selectableSections.length > 1;\n }\n\n private get effectiveValue(): string {\n return this.selectableSections.some(section => section.id === this.value)\n ? this.value\n : (this.selectableSections[0]?.id ?? '');\n }\n\n private get selectedSectionLabel(): string {\n return this.selectableSections.find(section => section.id === this.effectiveValue)?.label ?? '';\n }\n\n private get sectionTriggerAriaLabel(): string {\n return `${this.sectionsAriaLabel}. Current section: ${this.selectedSectionLabel}`;\n }\n\n private groupsFromItems<T extends BarTitleSection | BarTitleAction>(\n source: Array<T | { type: 'divider' }>,\n map: (item: T) => MenuItemData\n ): MenuSection[] {\n const groups: MenuSection[] = [];\n let items: MenuItemData[] = [];\n const commit = () => {\n if (items.length > 0) groups.push({ items });\n items = [];\n };\n\n for (const item of source) {\n if (isBarTitleDivider(item)) {\n commit();\n } else {\n items.push(map(item));\n }\n }\n commit();\n return groups;\n }\n\n private get sectionMenuSections(): MenuSection[] {\n return this.groupsFromItems(this.sections, section => ({\n label: section.label,\n value: section.id,\n isSelected: section.id === this.effectiveValue,\n isInactive: section.isInactive,\n }));\n }\n\n private get selectableActions(): BarTitleAction[] {\n return this.actions.filter((item): item is BarTitleAction => !isBarTitleDivider(item));\n }\n\n private get showActionMenuTrigger(): boolean {\n return (\n this.selectableActions.length > 0 || (this.primaryCollapsed && this.primaryAction !== null)\n );\n }\n\n private actionMenuItem(action: BarTitleAction | BarTitlePrimaryAction): MenuItemData {\n const primary = action as BarTitlePrimaryAction;\n return {\n label: action.label,\n value: action.id,\n isInactive: action.isInactive || primary.isLoading,\n isDestructive: action.isDestructive || primary.intent === 'negative',\n };\n }\n\n private get actionMenuSections(): MenuSection[] {\n const groups = this.groupsFromItems(this.actions, action => this.actionMenuItem(action));\n if (!this.primaryCollapsed || !this.primaryAction) return groups;\n return [{ items: [this.actionMenuItem(this.primaryAction)] }, ...groups];\n }\n\n private toggleSectionMenu = (event: MouseEvent) => {\n this.sectionMenuInitialFocusVisible = event.detail === 0;\n this.actionMenuOpen = false;\n this.sectionMenuOpen = !this.sectionMenuOpen;\n };\n\n private closeSectionMenu = () => {\n this.sectionMenuOpen = false;\n };\n\n private handleSectionSelect = (event: CustomEvent<MenuItemData>) => {\n const id = String(event.detail?.value ?? '');\n const selected = this.selectableSections.find(section => section.id === id);\n if (!selected || selected.isInactive) return;\n this.closeSectionMenu();\n this.dsSectionChange.emit(id);\n requestAnimationFrame(() => this.sectionTriggerEl?.focus());\n };\n\n private toggleActionMenu = (event: MouseEvent) => {\n this.actionMenuInitialFocusVisible = event.detail === 0;\n this.sectionMenuOpen = false;\n this.actionMenuOpen = !this.actionMenuOpen;\n };\n\n private closeActionMenu = () => {\n this.actionMenuOpen = false;\n };\n\n private handleActionSelect = (event: CustomEvent<MenuItemData>) => {\n const id = String(event.detail?.value ?? '');\n const primaryMatches = this.primaryCollapsed && this.primaryAction?.id === id;\n const action = this.selectableActions.find(candidate => candidate.id === id);\n if (!primaryMatches && !action) return;\n if (\n (primaryMatches && (this.primaryAction?.isInactive || this.primaryAction?.isLoading)) ||\n action?.isInactive\n ) {\n return;\n }\n this.closeActionMenu();\n this.dsAction.emit(id);\n requestAnimationFrame(() => void this.actionTriggerEl?.setFocus?.());\n };\n\n private renderSectionSelector() {\n if (!this.hasSectionSelector) return null;\n return [\n <div class=\"bar-title__divider\" aria-hidden=\"true\" />,\n <div class=\"bar-title__section-selector\">\n <button\n ref={el => {\n this.sectionTriggerEl = el ?? null;\n }}\n id={this.sectionMenuTriggerId}\n class={{\n 'bar-title__section-trigger': true,\n 'bar-title__section-trigger--expanded': this.sectionMenuOpen,\n 'ds-control--md': true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n }}\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-controls={this.sectionMenuId}\n aria-expanded={String(this.sectionMenuOpen)}\n aria-label={this.sectionTriggerAriaLabel}\n onClick={this.toggleSectionMenu}\n >\n <ds-text\n class=\"bar-title__section-label ds-interaction-fill__content\"\n as=\"span\"\n variant=\"text-body-medium\"\n emphasis\n color=\"primary\"\n lineTruncation={1}\n >\n {this.selectedSectionLabel}\n </ds-text>\n <ds-icon\n class=\"bar-title__section-chevron ds-interaction-fill__content\"\n name=\"ChevronUpDown\"\n size=\"md\"\n color=\"inherit\"\n aria-hidden=\"true\"\n />\n </button>\n </div>,\n ];\n }\n\n private renderActions() {\n const primary = this.primaryAction;\n if (!primary && !this.showActionMenuTrigger) return null;\n\n return (\n <div class=\"bar-title__actions\">\n {primary && !this.primaryCollapsed ? (\n <ds-button-filled\n class=\"bar-title__primary-action\"\n variant={primary.icon ? 'icon-label' : 'label'}\n icon={primary.icon ?? ''}\n label={primary.label}\n intent={primary.intent ?? 'brand'}\n contrast={primary.contrast ?? 'bold'}\n size=\"md\"\n type={primary.type ?? 'button'}\n isInactive={primary.isInactive}\n isLoading={primary.isLoading}\n onDsClick={() => this.dsAction.emit(primary.id)}\n />\n ) : null}\n {this.showActionMenuTrigger ? (\n <ds-tooltip label=\"Page options\" side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n ref={el => {\n this.actionTriggerEl = el ?? null;\n }}\n id={this.actionMenuTriggerId}\n class=\"bar-title__more-actions\"\n variant=\"icon\"\n icon=\"Ellipses\"\n aria-label={this.actionsAriaLabel}\n size=\"md\"\n activeFill={!this.compact}\n hasBorder={primary !== null && !this.primaryCollapsed}\n haspopup=\"menu\"\n controls={this.actionMenuId}\n expanded={this.actionMenuOpen}\n onDsClick={(event: CustomEvent<MouseEvent>) => this.toggleActionMenu(event.detail)}\n />\n </ds-tooltip>\n ) : null}\n </div>\n );\n }\n\n private handleBreadcrumbSelect = (event: CustomEvent<BreadcrumbSelectDetail>) => {\n if (this.breadcrumbs.length === 0) {\n this.dsBack.emit(event.detail.originalEvent);\n return;\n }\n const forwarded = this.dsBreadcrumbSelect.emit(event.detail);\n if (forwarded.defaultPrevented) event.preventDefault();\n };\n\n private renderBreadcrumb() {\n const items = this.expandedBreadcrumbItems;\n if (items.length === 0) return null;\n return (\n <ds-breadcrumb\n class=\"bar-title__breadcrumb\"\n items={items}\n ariaLabel={this.breadcrumbAriaLabel}\n onDsSelect={this.handleBreadcrumbSelect}\n />\n );\n }\n\n private renderBack() {\n if (!this.showBack) return null;\n return (\n <ds-tooltip label={this.backTooltipLabel} side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n class=\"bar-title__back\"\n variant=\"icon\"\n icon=\"ChevronLeft\"\n aria-label={this.backAriaLabel}\n size=\"md\"\n activeFill={false}\n hasBorder={false}\n onDsClick={(event: CustomEvent<MouseEvent>) => this.dsBack.emit(event.detail)}\n />\n </ds-tooltip>\n );\n }\n\n render() {\n const compact = this.compact;\n return (\n <Host\n class={{\n 'bar-title-host--compact': compact,\n 'bar-title-host--expanded': this.variant === 'expanded',\n 'bar-title-host--constrained': this.variant === 'constrained',\n 'bar-title-host--has-description': !!this.description,\n 'bar-title-host--has-back': this.showBack,\n 'bar-title-host--has-breadcrumb': !compact && this.expandedBreadcrumbItems.length > 0,\n }}\n >\n <div\n class={{\n 'bar-title': true,\n 'bar-title--divider-hidden': !this.dividerVisible,\n 'ds-chrome-header': compact,\n }}\n >\n <div class=\"bar-title__inner\">\n {!compact ? this.renderBreadcrumb() : null}\n <div class=\"bar-title__row\">\n <div class=\"bar-title__leading\">\n <div class=\"bar-title__title-row\" data-shell-page-header-anchor>\n <div class=\"bar-title__identity\">\n {compact ? this.renderBack() : null}\n <ds-text\n class=\"bar-title__heading ds-control--md\"\n variant={compact ? 'text-title-small' : 'text-title-medium'}\n emphasis\n color=\"primary\"\n as=\"h1\"\n lineTruncation={1}\n >\n {this.heading}\n </ds-text>\n </div>\n {this.renderSectionSelector()}\n </div>\n {this.description && !compact ? (\n <ds-text\n class=\"bar-title__description\"\n variant=\"text-body-small\"\n color=\"secondary\"\n lineTruncation={2}\n wrap=\"wrap\"\n as=\"p\"\n >\n {this.description}\n </ds-text>\n ) : null}\n </div>\n {this.renderActions()}\n </div>\n </div>\n </div>\n\n {this.hasSectionSelector ? (\n <ds-menu\n id={this.sectionMenuId}\n class=\"bar-title__section-menu\"\n anchorId={this.sectionMenuTriggerId}\n menuLabel={this.sectionsAriaLabel}\n open={this.sectionMenuOpen}\n initialFocusVisible={this.sectionMenuInitialFocusVisible}\n sections={this.sectionMenuSections}\n onDsClose={this.closeSectionMenu}\n onDsSelect={this.handleSectionSelect}\n />\n ) : null}\n\n {this.showActionMenuTrigger ? (\n <ds-menu\n id={this.actionMenuId}\n class=\"bar-title__action-menu\"\n anchorId={this.actionMenuTriggerId}\n align=\"end\"\n menuLabel={this.actionsAriaLabel}\n open={this.actionMenuOpen}\n initialFocusVisible={this.actionMenuInitialFocusVisible}\n sections={this.actionMenuSections}\n onDsClose={this.closeActionMenu}\n onDsSelect={this.handleActionSelect}\n />\n ) : null}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{p as t,H as e,h as s,a,t as c}from"./index.js";import{d as i}from"./p-BFfLvMZd.js";import{d}from"./p-CAnnQL1F.js";const n=()=>`.sc-ds-empty-state-h{display:block;width:100%;height:100%}.sc-ds-empty-state-h,.empty-state.sc-ds-empty-state,.empty-state__text.sc-ds-empty-state{box-sizing:border-box}.empty-state.sc-ds-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--dimension-space-100);height:100%;width:100%;text-align:center}.empty-state__icon.sc-ds-empty-state{flex:0 0 auto}.empty-state__text.sc-ds-empty-state{display:flex;flex-direction:column;align-items:center;gap:var(--dimension-space-050);width:100%}`;const o=t(class t extends e{constructor(t){super();if(t!==false){this.__registerHost()}this.body=""}render(){const t=Boolean(this.heading?.trim());const e=t&&Boolean(this.icon);return s(a,{key:"ad6ae3a8417d6cad540f386dd040056597b20294"},s("div",{key:"d9fbc497a94833f8ed2e7f28fc14959850f082d1",class:"empty-state"},e&&s("ds-icon",{key:"3a05a0b35c57500ff7b32f4fae4e0a73a59ce502",class:"empty-state__icon",name:this.icon,size:"xl",color:"primary"}),s("div",{key:"87b80a3b54aefc7fda18eead61c08c1a697dfb84",class:"empty-state__text"},t&&s("ds-text",{key:"24ea12d89e07169839f99ac6df82d2e144a5aa48",class:"empty-state__title",as:"div",variant:"text-title-small",color:"primary",align:"center"},this.heading),this.body&&s("ds-text",{key:"5772f460a123feced6681df47e7f772dcfe3ad5b",class:"empty-state__body",as:"p",variant:"text-body-medium",color:"secondary",align:"center"},this.body))))}static get style(){return n()}},[2,"ds-empty-state",{icon:[1],heading:[1],body:[1]}]);function m(){if(typeof customElements==="undefined"){return}const t=["ds-empty-state","ds-icon","ds-text"];t.forEach((t=>{switch(t){case"ds-empty-state":if(!customElements.get(c(t))){customElements.define(c(t),o)}break;case"ds-icon":if(!customElements.get(c(t))){i()}break;case"ds-text":if(!customElements.get(c(t))){d()}break}}))}m();export{o as E,m as d};
2
- //# sourceMappingURL=p-BBG6Sswb.js.map
1
+ import{p as t,H as e,h as s,a,t as c}from"./index.js";import{d}from"./p-Cea7rROU.js";import{d as i}from"./p-B-HsfQOK.js";const n=()=>`.sc-ds-empty-state-h{display:block;width:100%;height:100%}.sc-ds-empty-state-h,.empty-state.sc-ds-empty-state,.empty-state__text.sc-ds-empty-state{box-sizing:border-box}.empty-state.sc-ds-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--dimension-space-100);height:100%;width:100%;text-align:center}.empty-state__icon.sc-ds-empty-state{flex:0 0 auto}.empty-state__text.sc-ds-empty-state{display:flex;flex-direction:column;align-items:center;gap:var(--dimension-space-050);width:100%}`;const o=t(class t extends e{constructor(t){super();if(t!==false){this.__registerHost()}this.body=""}render(){const t=Boolean(this.heading?.trim());const e=t&&Boolean(this.icon);return s(a,{key:"ad6ae3a8417d6cad540f386dd040056597b20294"},s("div",{key:"d9fbc497a94833f8ed2e7f28fc14959850f082d1",class:"empty-state"},e&&s("ds-icon",{key:"69895220f39a7a0790d05b6b6a385a1aeb433254",class:"empty-state__icon",name:this.icon,size:"xl",color:"primary"}),s("div",{key:"8218d8e5b36740de8187eba17acd550990c5e752",class:"empty-state__text"},t&&s("ds-text",{key:"6fa1260806ff542716306db29ccf0d0ac13e6b82",class:"empty-state__title",as:"div",variant:"text-title-small",color:"primary",align:"center"},this.heading),this.body&&s("ds-text",{key:"8fc3f5e04c3d8cdd3667b4a0154232b5fd2d025d",class:"empty-state__body",as:"p",variant:"text-body-medium",color:"secondary",align:"center"},this.body))))}static get style(){return n()}},[2,"ds-empty-state",{icon:[1],heading:[1],body:[1]}]);function m(){if(typeof customElements==="undefined"){return}const t=["ds-empty-state","ds-icon","ds-text"];t.forEach((t=>{switch(t){case"ds-empty-state":if(!customElements.get(c(t))){customElements.define(c(t),o)}break;case"ds-icon":if(!customElements.get(c(t))){d()}break;case"ds-text":if(!customElements.get(c(t))){i()}break}}))}m();export{o as E,m as d};
2
+ //# sourceMappingURL=p-BYFS2qWb.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["emptyStateCss","EmptyState","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","body","render","showHeading","Boolean","heading","trim","showIcon","icon","h","Host","key","class","name","size","color","as","variant","align"],"sources":["src/wc/components/EmptyState/EmptyState.css?tag=ds-empty-state&encapsulation=scoped","src/wc/components/EmptyState/EmptyState.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n:host,\n.empty-state,\n.empty-state__text {\n box-sizing: border-box;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--dimension-space-100);\n height: 100%;\n width: 100%;\n text-align: center;\n}\n\n.empty-state__icon {\n flex: 0 0 auto;\n}\n\n.empty-state__text {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--dimension-space-050);\n width: 100%;\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n@Component({\n tag: 'ds-empty-state',\n styleUrl: 'EmptyState.css',\n scoped: true,\n})\nexport class EmptyState {\n /** Optional decorative prefix glyph for the complete icon + title + body variant. */\n @Prop() icon: string | undefined;\n /** Optional visual title. Use with body; required when icon is provided. */\n @Prop() heading: string | undefined;\n /** Explanatory empty-state copy. Every supported variant includes body text. */\n @Prop() body: string = '';\n\n render() {\n const showHeading = Boolean(this.heading?.trim());\n const showIcon = showHeading && Boolean(this.icon);\n\n return (\n <Host>\n <div class=\"empty-state\">\n {showIcon && (\n <ds-icon\n class=\"empty-state__icon\"\n name={this.icon}\n size=\"xl\"\n color=\"primary\"\n />\n )}\n <div class=\"empty-state__text\">\n {showHeading && (\n <ds-text\n class=\"empty-state__title\"\n as=\"div\"\n variant=\"text-title-small\"\n color=\"primary\"\n align=\"center\"\n >\n {this.heading}\n </ds-text>\n )}\n {this.body && (\n <ds-text\n class=\"empty-state__body\"\n as=\"p\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n align=\"center\"\n >\n {this.body}\n </ds-text>\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"yHAAA,MAAMA,EAAgB,IAAM,whB,MCOfC,EAAUC,EAAA,MAAAD,UAAAE,EALvB,WAAAC,CAAAC,G,4CAWUC,KAAAC,KAAe,EA6CxB,CA3CC,MAAAC,GACE,MAAMC,EAAcC,QAAQJ,KAAKK,SAASC,QAC1C,MAAMC,EAAWJ,GAAeC,QAAQJ,KAAKQ,MAE7C,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,eACRL,GACCE,EAAA,WAAAE,IAAA,2CACEC,MAAM,oBACNC,KAAMb,KAAKQ,KACXM,KAAK,KACLC,MAAM,YAGVN,EAAA,OAAAE,IAAA,2CAAKC,MAAM,qBACRT,GACCM,EAAA,WAAAE,IAAA,2CACEC,MAAM,qBACNI,GAAG,MACHC,QAAQ,mBACRF,MAAM,UACNG,MAAM,UAELlB,KAAKK,SAGTL,KAAKC,MACJQ,EAAA,WAAAE,IAAA,2CACEC,MAAM,oBACNI,GAAG,IACHC,QAAQ,mBACRF,MAAM,YACNG,MAAM,UAELlB,KAAKC,Q","ignoreList":[]}
1
+ {"version":3,"names":["emptyStateCss","EmptyState","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","body","render","showHeading","Boolean","heading","trim","showIcon","icon","h","Host","key","class","name","size","color","as","variant","align"],"sources":["src/wc/components/EmptyState/EmptyState.css?tag=ds-empty-state&encapsulation=scoped","src/wc/components/EmptyState/EmptyState.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n:host,\n.empty-state,\n.empty-state__text {\n box-sizing: border-box;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--dimension-space-100);\n height: 100%;\n width: 100%;\n text-align: center;\n}\n\n.empty-state__icon {\n flex: 0 0 auto;\n}\n\n.empty-state__text {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--dimension-space-050);\n width: 100%;\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n@Component({\n tag: 'ds-empty-state',\n styleUrl: 'EmptyState.css',\n scoped: true,\n})\nexport class EmptyState {\n /** Optional decorative prefix glyph for the complete icon + title + body variant. */\n @Prop() icon: string | undefined;\n /** Optional visual title. Use with body; required when icon is provided. */\n @Prop() heading: string | undefined;\n /** Explanatory empty-state copy. Every supported variant includes body text. */\n @Prop() body: string = '';\n\n render() {\n const showHeading = Boolean(this.heading?.trim());\n const showIcon = showHeading && Boolean(this.icon);\n\n return (\n <Host>\n <div class=\"empty-state\">\n {showIcon && (\n <ds-icon class=\"empty-state__icon\" name={this.icon} size=\"xl\" color=\"primary\" />\n )}\n <div class=\"empty-state__text\">\n {showHeading && (\n <ds-text\n class=\"empty-state__title\"\n as=\"div\"\n variant=\"text-title-small\"\n color=\"primary\"\n align=\"center\"\n >\n {this.heading}\n </ds-text>\n )}\n {this.body && (\n <ds-text\n class=\"empty-state__body\"\n as=\"p\"\n variant=\"text-body-medium\"\n color=\"secondary\"\n align=\"center\"\n >\n {this.body}\n </ds-text>\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"yHAAA,MAAMA,EAAgB,IAAM,whB,MCOfC,EAAUC,EAAA,MAAAD,UAAAE,EALvB,WAAAC,CAAAC,G,4CAWUC,KAAAC,KAAe,EAwCxB,CAtCC,MAAAC,GACE,MAAMC,EAAcC,QAAQJ,KAAKK,SAASC,QAC1C,MAAMC,EAAWJ,GAAeC,QAAQJ,KAAKQ,MAE7C,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,eACRL,GACCE,EAAA,WAAAE,IAAA,2CAASC,MAAM,oBAAoBC,KAAMb,KAAKQ,KAAMM,KAAK,KAAKC,MAAM,YAEtEN,EAAA,OAAAE,IAAA,2CAAKC,MAAM,qBACRT,GACCM,EAAA,WAAAE,IAAA,2CACEC,MAAM,qBACNI,GAAG,MACHC,QAAQ,mBACRF,MAAM,UACNG,MAAM,UAELlB,KAAKK,SAGTL,KAAKC,MACJQ,EAAA,WAAAE,IAAA,2CACEC,MAAM,oBACNI,GAAG,IACHC,QAAQ,mBACRF,MAAM,YACNG,MAAM,UAELlB,KAAKC,Q","ignoreList":[]}