@ds-mo/ui 14.35.0 → 14.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +1105 -187
  4. package/dist/angular/ds-button-inverted.d.ts +17 -0
  5. package/dist/angular/ds-button-inverted.js +46 -0
  6. package/dist/angular/ds-calendar.d.ts +15 -0
  7. package/dist/angular/ds-calendar.js +43 -0
  8. package/dist/angular/ds-field.d.ts +1 -1
  9. package/dist/angular/ds-field.js +1 -1
  10. package/dist/angular/ds-input-date.d.ts +15 -0
  11. package/dist/angular/ds-input-date.js +43 -0
  12. package/dist/angular/ds-input-time.d.ts +15 -0
  13. package/dist/angular/ds-input-time.js +43 -0
  14. package/dist/angular/ds-input.d.ts +1 -1
  15. package/dist/angular/ds-input.js +3 -3
  16. package/dist/angular/ds-select.d.ts +1 -1
  17. package/dist/angular/ds-select.js +3 -3
  18. package/dist/angular/ds-time-picker.d.ts +15 -0
  19. package/dist/angular/ds-time-picker.js +43 -0
  20. package/dist/angular/index.d.ts +1 -1
  21. package/dist/angular/index.js +5 -0
  22. package/dist/angular/proxies.d.ts +5 -0
  23. package/dist/angular/proxies.js +5 -0
  24. package/dist/angular/text-value-accessor.d.ts +1 -1
  25. package/dist/angular/text-value-accessor.js +2 -2
  26. package/dist/components/ds-agent-activity.js +1 -1
  27. package/dist/components/ds-agent-questionnaire.js +1 -1
  28. package/dist/components/ds-agent-response.js +1 -1
  29. package/dist/components/ds-agent-source-list.js +1 -1
  30. package/dist/components/ds-agent-tool-call.js +1 -1
  31. package/dist/components/ds-attachment-list.js +1 -1
  32. package/dist/components/ds-badge.js +1 -1
  33. package/dist/components/ds-banner.js +1 -1
  34. package/dist/components/ds-bar-action.js +1 -1
  35. package/dist/components/ds-bar-nav.js +1 -1
  36. package/dist/components/ds-bar-page-title.js +1 -1
  37. package/dist/components/ds-bar-title.js +1 -1
  38. package/dist/components/ds-bar-workflow.js +1 -1
  39. package/dist/components/ds-breadcrumb.js +1 -1
  40. package/dist/components/ds-button-filled.js +1 -1
  41. package/dist/components/ds-button-inverted.d.ts +11 -0
  42. package/dist/components/ds-button-inverted.js +2 -0
  43. package/dist/components/ds-button-inverted.js.map +1 -0
  44. package/dist/components/ds-button-unfilled.js +1 -1
  45. package/dist/components/ds-calendar.d.ts +11 -0
  46. package/dist/components/ds-calendar.js +2 -0
  47. package/dist/components/ds-calendar.js.map +1 -0
  48. package/dist/components/ds-card-action-center.js +1 -1
  49. package/dist/components/ds-card-chart.js +1 -1
  50. package/dist/components/ds-card-navigation.js +1 -1
  51. package/dist/components/ds-card-navigation.js.map +1 -1
  52. package/dist/components/ds-card-overview.js +1 -1
  53. package/dist/components/ds-card-setting.js +1 -1
  54. package/dist/components/ds-card-settings-scope.js +1 -1
  55. package/dist/components/ds-card-settings-scope.js.map +1 -1
  56. package/dist/components/ds-chart-legend.js +1 -1
  57. package/dist/components/ds-chart.js +1 -1
  58. package/dist/components/ds-checkbox.js +1 -1
  59. package/dist/components/ds-chip.js +1 -1
  60. package/dist/components/ds-code-block.js +1 -1
  61. package/dist/components/ds-conversation-list-item.js +1 -1
  62. package/dist/components/ds-conversation-list-item.js.map +1 -1
  63. package/dist/components/ds-conversation-list-section.js +1 -1
  64. package/dist/components/ds-conversation-list.js +1 -1
  65. package/dist/components/ds-divider.js +1 -1
  66. package/dist/components/ds-empty-state.js +1 -1
  67. package/dist/components/ds-field.js +1 -1
  68. package/dist/components/ds-filter-menu.js +1 -1
  69. package/dist/components/ds-input-date.d.ts +11 -0
  70. package/dist/components/ds-input-date.js +2 -0
  71. package/dist/components/ds-input-date.js.map +1 -0
  72. package/dist/components/ds-input-time.d.ts +11 -0
  73. package/dist/components/ds-input-time.js +2 -0
  74. package/dist/components/ds-input-time.js.map +1 -0
  75. package/dist/components/ds-input.js +1 -1
  76. package/dist/components/ds-markdown.js +1 -1
  77. package/dist/components/ds-menu.js +1 -1
  78. package/dist/components/ds-message-actions.js +1 -1
  79. package/dist/components/ds-message-bubble.js +1 -1
  80. package/dist/components/ds-message-bubble.js.map +1 -1
  81. package/dist/components/ds-message-composer.js +1 -1
  82. package/dist/components/ds-message-scroller.js +1 -1
  83. package/dist/components/ds-message.js +1 -1
  84. package/dist/components/ds-mobile-bar-nav.js +1 -1
  85. package/dist/components/ds-mobile-header.js +1 -1
  86. package/dist/components/ds-mobile-section-switcher.js +1 -1
  87. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  88. package/dist/components/ds-modal.js +1 -1
  89. package/dist/components/ds-pagination.js +1 -1
  90. package/dist/components/ds-panel-nav.js +1 -1
  91. package/dist/components/ds-panel-sub-nav.js +1 -1
  92. package/dist/components/ds-panel-tool-header.js +1 -1
  93. package/dist/components/ds-panel-tool-search.js +1 -1
  94. package/dist/components/ds-panel-tools.js +1 -1
  95. package/dist/components/ds-paper-texture.js +1 -1
  96. package/dist/components/ds-radio.js +1 -1
  97. package/dist/components/ds-score.js +1 -1
  98. package/dist/components/ds-scroll-overlay.js +1 -1
  99. package/dist/components/ds-select.js +1 -1
  100. package/dist/components/ds-shell-app.js +1 -1
  101. package/dist/components/ds-shell-page.js +1 -1
  102. package/dist/components/ds-shell-tools.js +1 -1
  103. package/dist/components/ds-skeleton.js +1 -1
  104. package/dist/components/ds-slider.js +1 -1
  105. package/dist/components/ds-slider.js.map +1 -1
  106. package/dist/components/ds-swatch-picker.js +1 -1
  107. package/dist/components/ds-switch.js +1 -1
  108. package/dist/components/ds-tab-group.js +1 -1
  109. package/dist/components/ds-table-filter.js +1 -1
  110. package/dist/components/ds-table-filter.js.map +1 -1
  111. package/dist/components/ds-table-group.js +1 -1
  112. package/dist/components/ds-table-preferences.js +1 -1
  113. package/dist/components/ds-table-preferences.js.map +1 -1
  114. package/dist/components/ds-table-saved-views.js +1 -1
  115. package/dist/components/ds-table-saved-views.js.map +1 -1
  116. package/dist/components/ds-table-search.js +1 -1
  117. package/dist/components/ds-table-search.js.map +1 -1
  118. package/dist/components/ds-table-sort.js +1 -1
  119. package/dist/components/ds-table-sort.js.map +1 -1
  120. package/dist/components/ds-table-toolbar.js +1 -1
  121. package/dist/components/ds-table.js +1 -1
  122. package/dist/components/ds-tag.js +1 -1
  123. package/dist/components/ds-text.js +1 -1
  124. package/dist/components/ds-textarea.js +1 -1
  125. package/dist/components/ds-textarea.js.map +1 -1
  126. package/dist/components/ds-time-picker.d.ts +11 -0
  127. package/dist/components/ds-time-picker.js +2 -0
  128. package/dist/components/ds-time-picker.js.map +1 -0
  129. package/dist/components/ds-toast.js +1 -1
  130. package/dist/components/ds-tooltip-chart.js +1 -1
  131. package/dist/components/ds-tooltip.js +1 -1
  132. package/dist/components/ds-typing-indicator.js +1 -1
  133. package/dist/components/{p-CI7VfYC3.js → p-2GVGhrh0.js} +2 -2
  134. package/dist/components/p-7O-2D29W.js +2 -0
  135. package/dist/components/p-7O-2D29W.js.map +1 -0
  136. package/dist/components/{p-CE540WZ7.js → p-8oRkhvjy.js} +2 -2
  137. package/dist/components/p-B27_chI7.js +2 -0
  138. package/dist/components/p-B27_chI7.js.map +1 -0
  139. package/dist/components/{p-xHGqrz_p.js → p-BOhpMUwO.js} +2 -2
  140. package/dist/components/{p-DdspY23v.js → p-BV5T1hzN.js} +2 -2
  141. package/dist/components/{p-DTDLlinw.js → p-BWfzaSc3.js} +2 -2
  142. package/dist/components/{p-CLGtPE0K.js → p-BgLI9JoT.js} +2 -2
  143. package/dist/components/{p-DGzn4k4h.js → p-C-dHtQMi.js} +2 -2
  144. package/dist/components/p-C0CE2v5D.js +2 -0
  145. package/dist/components/{p-yZRXPHDe.js → p-C2JnoaWI.js} +2 -2
  146. package/dist/components/{p-umAf0fBn.js → p-C4m8y9ki.js} +2 -2
  147. package/dist/components/{p-CAxDdYjh.js → p-CDJ2Ntcq.js} +2 -2
  148. package/dist/components/{p-DQQFN2sw.js → p-CMQUuGvl.js} +2 -2
  149. package/dist/components/{p-BQaO7cg_.js → p-CQ5RwY2C.js} +2 -2
  150. package/dist/components/p-CQIh2yRP.js +2 -0
  151. package/dist/components/{p-C1_3CVma.js.map → p-CQIh2yRP.js.map} +1 -1
  152. package/dist/components/{p-DEGNrPLe.js → p-CWPT3aOB.js} +2 -2
  153. package/dist/components/p-CWog26I_.js +2 -0
  154. package/dist/components/p-CWog26I_.js.map +1 -0
  155. package/dist/components/{p-beRFLHbB.js → p-CaNCGKEJ.js} +2 -2
  156. package/dist/components/p-CbSUyv5B.js +2 -0
  157. package/dist/components/{p-BINSI_KF.js.map → p-CbSUyv5B.js.map} +1 -1
  158. package/dist/components/{p-Dhw_W8nk.js → p-Cc3ZUQlJ.js} +2 -2
  159. package/dist/components/p-Cc3ZUQlJ.js.map +1 -0
  160. package/dist/components/{p-DFjIBS5B.js → p-Ce4zy8q1.js} +2 -2
  161. package/dist/components/{p-BcdHgPi5.js → p-CeXf9-X3.js} +2 -2
  162. package/dist/components/{p-omPm8_vx.js → p-Cga6Ex0E.js} +2 -2
  163. package/dist/components/{p-y06IxxoN.js → p-Cl9phSf0.js} +2 -2
  164. package/dist/components/{p-Dk-8Ju0Q.js → p-ClJhuG5Y.js} +2 -2
  165. package/dist/components/{p-BmFeeR4q.js → p-CqW2eyiF.js} +2 -2
  166. package/dist/components/p-Cus1Sigh.js +2 -0
  167. package/dist/components/{p-N5SHSVo2.js.map → p-Cus1Sigh.js.map} +1 -1
  168. package/dist/components/{p-CzbsTZt7.js → p-Cxr0IQjC.js} +2 -2
  169. package/dist/components/{p-CwqFJMvP.js → p-D7yBIPB6.js} +2 -2
  170. package/dist/components/p-D8rpKod8.js +2 -0
  171. package/dist/components/p-D8rpKod8.js.map +1 -0
  172. package/dist/components/{p-DtLQIMsa.js → p-DBwa1OXP.js} +2 -2
  173. package/dist/components/{p-BQsVI_vO.js → p-DK9Ex3aY.js} +2 -2
  174. package/dist/components/{p-CqlBlv55.js → p-DLXXGgmf.js} +2 -2
  175. package/dist/components/{p-BnzsBNUY.js → p-DVd1TIxi.js} +2 -2
  176. package/dist/components/p-DZ58Sg5a.js.map +1 -1
  177. package/dist/components/{p-CZOiTaNa.js → p-DgG9W9N4.js} +2 -2
  178. package/dist/components/{p-mpk_Mm8_.js → p-DkfM55x8.js} +2 -2
  179. package/dist/components/p-DkikNSSO.js +2 -0
  180. package/dist/components/p-DkikNSSO.js.map +1 -0
  181. package/dist/components/{p-C7CZ9pnP.js → p-Dryt3COt.js} +2 -2
  182. package/dist/components/{p-eo_pmPqp.js → p-Ds51RgCi.js} +2 -2
  183. package/dist/components/p-DtkLtKY0.js +2 -0
  184. package/dist/components/p-DtkLtKY0.js.map +1 -0
  185. package/dist/components/{p-C8ek-1SP.js → p-DvzI2A_M.js} +2 -2
  186. package/dist/components/p-J5x-QtlD.js +2 -0
  187. package/dist/components/{p-beCz9OnD.js.map → p-J5x-QtlD.js.map} +1 -1
  188. package/dist/components/{p-CSnsz3Eb.js → p-Jaqdfw4E.js} +2 -2
  189. package/dist/components/p-MQ36mEgn.js +2 -0
  190. package/dist/components/{p-UAIxh67Q.js.map → p-MQ36mEgn.js.map} +1 -1
  191. package/dist/components/{p-BnWxbhFP.js → p-PmcUwTQ_.js} +2 -2
  192. package/dist/components/p-TjXGRPik.js +2 -0
  193. package/dist/components/{p-B-9fdIWv.js.map → p-TjXGRPik.js.map} +1 -1
  194. package/dist/components/{p-Cq_Qpe_C.js → p-bM3LH3kc.js} +2 -2
  195. package/dist/components/{p-BPhbwXOv.js → p-ji09W9el.js} +2 -2
  196. package/dist/components/{p-n68x-ZKp.js → p-neWTRxmf.js} +2 -2
  197. package/dist/components/{p-BPlWEidl.js → p-rYePOPbJ.js} +2 -2
  198. package/dist/components/{p-D44g2Kw1.js → p-su6y4hLK.js} +2 -2
  199. package/dist/components/p-su6y4hLK.js.map +1 -0
  200. package/dist/components/{p-DC69DgAR.js → p-tNQ0YulU.js} +2 -2
  201. package/dist/components/{p-Cwz9TPVS.js → p-x1wf38q3.js} +2 -2
  202. package/dist/docs/components.json +6485 -3451
  203. package/dist/lib/utils/button-render.d.ts +1 -1
  204. package/dist/lib/utils/clock-time.d.ts +22 -0
  205. package/dist/lib/utils/date-filter-value.d.ts +4 -0
  206. package/dist/lib/utils/index.d.ts +3 -1
  207. package/dist/lib/utils/index.js +133 -0
  208. package/dist/lib/utils/index.js.map +4 -4
  209. package/dist/mcp-data/registry/bar-title.json +2 -2
  210. package/dist/mcp-data/registry/button-inverted.json +580 -0
  211. package/dist/mcp-data/registry/calendar.json +273 -0
  212. package/dist/mcp-data/registry/card-navigation.json +4 -2
  213. package/dist/mcp-data/registry/field.json +19 -14
  214. package/dist/mcp-data/registry/filter-menu.json +6 -10
  215. package/dist/mcp-data/registry/input-date.json +516 -0
  216. package/dist/mcp-data/registry/input-time.json +535 -0
  217. package/dist/mcp-data/registry/input.json +56 -8
  218. package/dist/mcp-data/registry/registry.json +1118 -185
  219. package/dist/mcp-data/registry/select.json +63 -7
  220. package/dist/mcp-data/registry/table-saved-views.json +6 -4
  221. package/dist/mcp-data/registry/textarea.json +2 -2
  222. package/dist/mcp-data/registry/time-picker.json +259 -0
  223. package/dist/react/components.d.ts +5 -0
  224. package/dist/react/components.js +5 -0
  225. package/dist/react/ds-button-inverted.d.ts +13 -0
  226. package/dist/react/ds-button-inverted.js +15 -0
  227. package/dist/react/ds-calendar.d.ts +12 -0
  228. package/dist/react/ds-calendar.js +12 -0
  229. package/dist/react/ds-field.d.ts +1 -1
  230. package/dist/react/ds-input-date.d.ts +12 -0
  231. package/dist/react/ds-input-date.js +12 -0
  232. package/dist/react/ds-input-time.d.ts +12 -0
  233. package/dist/react/ds-input-time.js +12 -0
  234. package/dist/react/ds-time-picker.d.ts +12 -0
  235. package/dist/react/ds-time-picker.js +12 -0
  236. package/dist/types/components/BarTitle/BarTitle.d.ts +1 -0
  237. package/dist/types/components/BarTitle/bar-title-action-chrome.d.ts +2 -0
  238. package/dist/types/components/ButtonInverted/ButtonInverted.d.ts +83 -0
  239. package/dist/types/components/ButtonInverted/index.d.ts +2 -0
  240. package/dist/types/components/Calendar/Calendar.d.ts +32 -0
  241. package/dist/types/components/Calendar/calendar-grid.d.ts +19 -0
  242. package/dist/types/components/Field/Field.d.ts +7 -2
  243. package/dist/types/components/FilterMenu/FilterMenu.d.ts +0 -10
  244. package/dist/types/components/Input/Input.d.ts +10 -0
  245. package/dist/types/components/InputDate/InputDate.d.ts +78 -0
  246. package/dist/types/components/InputTime/InputTime.d.ts +80 -0
  247. package/dist/types/components/Select/Select.d.ts +8 -1
  248. package/dist/types/components/TimePicker/TimePicker.d.ts +33 -0
  249. package/dist/types/components.d.ts +858 -27
  250. package/dist/types/utils/button-render.d.ts +1 -1
  251. package/dist/types/utils/clock-time.d.ts +23 -0
  252. package/dist/types/utils/date-filter-value.d.ts +4 -0
  253. package/dist/types/utils/index.d.ts +3 -1
  254. package/dist/vue/components.d.ts +5 -0
  255. package/dist/vue/components.js +5 -0
  256. package/dist/vue/ds-button-inverted.d.ts +3 -0
  257. package/dist/vue/ds-button-inverted.js +33 -0
  258. package/dist/vue/ds-calendar.d.ts +3 -0
  259. package/dist/vue/ds-calendar.js +16 -0
  260. package/dist/vue/ds-input-date.d.ts +3 -0
  261. package/dist/vue/ds-input-date.js +31 -0
  262. package/dist/vue/ds-input-time.d.ts +3 -0
  263. package/dist/vue/ds-input-time.js +32 -0
  264. package/dist/vue/ds-input.js +2 -0
  265. package/dist/vue/ds-select.js +3 -0
  266. package/dist/vue/ds-time-picker.d.ts +3 -0
  267. package/dist/vue/ds-time-picker.js +16 -0
  268. package/package.json +1 -1
  269. package/dist/components/p-B-9fdIWv.js +0 -2
  270. package/dist/components/p-BINSI_KF.js +0 -2
  271. package/dist/components/p-BbfBvMRR.js +0 -2
  272. package/dist/components/p-BbfBvMRR.js.map +0 -1
  273. package/dist/components/p-C1_3CVma.js +0 -2
  274. package/dist/components/p-Cmj04E5Q.js +0 -2
  275. package/dist/components/p-Cmj04E5Q.js.map +0 -1
  276. package/dist/components/p-D44g2Kw1.js.map +0 -1
  277. package/dist/components/p-D_u8WhlU.js +0 -2
  278. package/dist/components/p-Dhw_W8nk.js.map +0 -1
  279. package/dist/components/p-FPZbS19l.js +0 -2
  280. package/dist/components/p-FPZbS19l.js.map +0 -1
  281. package/dist/components/p-N5SHSVo2.js +0 -2
  282. package/dist/components/p-QjkufCcn.js +0 -2
  283. package/dist/components/p-QjkufCcn.js.map +0 -1
  284. package/dist/components/p-UAIxh67Q.js +0 -2
  285. package/dist/components/p-beCz9OnD.js +0 -2
  286. package/dist/types/components/FilterMenu/filter-menu-calendar.d.ts +0 -13
  287. /package/dist/components/{p-CI7VfYC3.js.map → p-2GVGhrh0.js.map} +0 -0
  288. /package/dist/components/{p-CE540WZ7.js.map → p-8oRkhvjy.js.map} +0 -0
  289. /package/dist/components/{p-xHGqrz_p.js.map → p-BOhpMUwO.js.map} +0 -0
  290. /package/dist/components/{p-DdspY23v.js.map → p-BV5T1hzN.js.map} +0 -0
  291. /package/dist/components/{p-DTDLlinw.js.map → p-BWfzaSc3.js.map} +0 -0
  292. /package/dist/components/{p-CLGtPE0K.js.map → p-BgLI9JoT.js.map} +0 -0
  293. /package/dist/components/{p-DGzn4k4h.js.map → p-C-dHtQMi.js.map} +0 -0
  294. /package/dist/components/{p-D_u8WhlU.js.map → p-C0CE2v5D.js.map} +0 -0
  295. /package/dist/components/{p-yZRXPHDe.js.map → p-C2JnoaWI.js.map} +0 -0
  296. /package/dist/components/{p-umAf0fBn.js.map → p-C4m8y9ki.js.map} +0 -0
  297. /package/dist/components/{p-CAxDdYjh.js.map → p-CDJ2Ntcq.js.map} +0 -0
  298. /package/dist/components/{p-DQQFN2sw.js.map → p-CMQUuGvl.js.map} +0 -0
  299. /package/dist/components/{p-BQaO7cg_.js.map → p-CQ5RwY2C.js.map} +0 -0
  300. /package/dist/components/{p-DEGNrPLe.js.map → p-CWPT3aOB.js.map} +0 -0
  301. /package/dist/components/{p-beRFLHbB.js.map → p-CaNCGKEJ.js.map} +0 -0
  302. /package/dist/components/{p-DFjIBS5B.js.map → p-Ce4zy8q1.js.map} +0 -0
  303. /package/dist/components/{p-BcdHgPi5.js.map → p-CeXf9-X3.js.map} +0 -0
  304. /package/dist/components/{p-omPm8_vx.js.map → p-Cga6Ex0E.js.map} +0 -0
  305. /package/dist/components/{p-y06IxxoN.js.map → p-Cl9phSf0.js.map} +0 -0
  306. /package/dist/components/{p-Dk-8Ju0Q.js.map → p-ClJhuG5Y.js.map} +0 -0
  307. /package/dist/components/{p-BmFeeR4q.js.map → p-CqW2eyiF.js.map} +0 -0
  308. /package/dist/components/{p-CzbsTZt7.js.map → p-Cxr0IQjC.js.map} +0 -0
  309. /package/dist/components/{p-CwqFJMvP.js.map → p-D7yBIPB6.js.map} +0 -0
  310. /package/dist/components/{p-DtLQIMsa.js.map → p-DBwa1OXP.js.map} +0 -0
  311. /package/dist/components/{p-BQsVI_vO.js.map → p-DK9Ex3aY.js.map} +0 -0
  312. /package/dist/components/{p-CqlBlv55.js.map → p-DLXXGgmf.js.map} +0 -0
  313. /package/dist/components/{p-BnzsBNUY.js.map → p-DVd1TIxi.js.map} +0 -0
  314. /package/dist/components/{p-CZOiTaNa.js.map → p-DgG9W9N4.js.map} +0 -0
  315. /package/dist/components/{p-mpk_Mm8_.js.map → p-DkfM55x8.js.map} +0 -0
  316. /package/dist/components/{p-C7CZ9pnP.js.map → p-Dryt3COt.js.map} +0 -0
  317. /package/dist/components/{p-eo_pmPqp.js.map → p-Ds51RgCi.js.map} +0 -0
  318. /package/dist/components/{p-C8ek-1SP.js.map → p-DvzI2A_M.js.map} +0 -0
  319. /package/dist/components/{p-CSnsz3Eb.js.map → p-Jaqdfw4E.js.map} +0 -0
  320. /package/dist/components/{p-BnWxbhFP.js.map → p-PmcUwTQ_.js.map} +0 -0
  321. /package/dist/components/{p-Cq_Qpe_C.js.map → p-bM3LH3kc.js.map} +0 -0
  322. /package/dist/components/{p-BPhbwXOv.js.map → p-ji09W9el.js.map} +0 -0
  323. /package/dist/components/{p-n68x-ZKp.js.map → p-neWTRxmf.js.map} +0 -0
  324. /package/dist/components/{p-BPlWEidl.js.map → p-rYePOPbJ.js.map} +0 -0
  325. /package/dist/components/{p-DC69DgAR.js.map → p-tNQ0YulU.js.map} +0 -0
  326. /package/dist/components/{p-Cwz9TPVS.js.map → p-x1wf38q3.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{p as o,H as r,c as t,h as s,a as i,t as n}from"./index.js";import{g as e,i as a}from"./p-BQq26pt9.js";import{d}from"./p-DtLQIMsa.js";import{d as c}from"./p-Cea7rROU.js";import{d as l}from"./p-CLGtPE0K.js";import{C as u}from"./p-CuwopElg.js";import{c as b}from"./p-DuFm-ieS.js";const g=()=>`.sc-ds-tab-group-h,.sc-ds-tab-group:where(.ds-table),.sc-ds-tab-group:where(.tooltip-popup),.sc-ds-tab-group:where(.ds-radius){--ds-radius-control:var(--dimension-radius-025);--ds-radius-card:var(--dimension-radius-050);--ds-radius-modal:var(--dimension-radius-050);--ds-radius-menu:var(--dimension-radius-075);--ds-radius-tooltip-control:var(--dimension-radius-025);--ds-radius-tooltip-menu:var(--dimension-radius-075);--ds-radius-table:var(--dimension-radius-050)}.ds-control--lg.sc-ds-tab-group,.ds-control--lg.sc-ds-tab-group-h,.ds-control--md.sc-ds-tab-group-h,.ds-control--md.sc-ds-tab-group,.ds-control--sm.sc-ds-tab-group-h,.ds-control--sm.sc-ds-tab-group,.ds-control--xs.sc-ds-tab-group-h,.ds-control--xs.sc-ds-tab-group{--ds-control-radius:var(--ds-radius-control)}.ds-control--lg.sc-ds-tab-group-h,.ds-control--lg.sc-ds-tab-group{--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-tab-group-h,.ds-control--md.sc-ds-tab-group{--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-tab-group-h,.ds-control--sm.sc-ds-tab-group{--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-tab-group-h,.ds-control--xs.sc-ds-tab-group{--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.ds-control--inset.sc-ds-tab-group-h,.ds-control--lg.ds-control--inset.sc-ds-tab-group{--ds-control-height:calc(var(--dimension-size-500) - var(--dimension-space-050));--ds-control-padding-inline:calc(var(--dimension-space-100) - var(--dimension-space-025))}.ds-control--md.ds-control--inset.sc-ds-tab-group-h,.ds-control--md.ds-control--inset.sc-ds-tab-group{--ds-control-height:calc(var(--dimension-size-400) - var(--dimension-space-050));--ds-control-padding-inline:calc(var(--dimension-space-075) - var(--dimension-space-025))}.ds-control--sm.ds-control--inset.sc-ds-tab-group-h,.ds-control--sm.ds-control--inset.sc-ds-tab-group{--ds-control-height:calc(var(--dimension-size-300) - var(--dimension-space-050));--ds-control-padding-inline:calc(var(--dimension-space-050) - var(--dimension-space-025))}.ds-control--xs.ds-control--inset.sc-ds-tab-group-h,.ds-control--xs.ds-control--inset.sc-ds-tab-group{--ds-control-height:calc(var(--dimension-size-200) - var(--dimension-space-050));--ds-control-padding-inline:calc(var(--dimension-space-025) - var(--dimension-space-025))}.ds-control--lg.ds-control--inset-double.sc-ds-tab-group-h,.ds-control--lg.ds-control--inset-double.sc-ds-tab-group{--ds-control-height:calc(var(--dimension-size-500) - var(--dimension-space-100));--ds-control-padding-inline:calc(var(--dimension-space-100) - var(--dimension-space-050))}.ds-control--md.ds-control--inset-double.sc-ds-tab-group-h,.ds-control--md.ds-control--inset-double.sc-ds-tab-group{--ds-control-height:calc(var(--dimension-size-400) - var(--dimension-space-100));--ds-control-padding-inline:calc(var(--dimension-space-075) - var(--dimension-space-050))}.ds-control--sm.ds-control--inset-double.sc-ds-tab-group-h,.ds-control--sm.ds-control--inset-double.sc-ds-tab-group{--ds-control-height:calc(var(--dimension-size-300) - var(--dimension-space-100));--ds-control-padding-inline:calc(var(--dimension-space-050) - var(--dimension-space-050))}.ds-control-width--hug.sc-ds-tab-group-h,.ds-control-width--hug.sc-ds-tab-group{width:fit-content;max-width:100%;flex:0 0 auto}.ds-control-width--fill.sc-ds-tab-group-h,.ds-control-width--fill.sc-ds-tab-group{width:100%;min-width:0;flex:1 1 auto;align-self:stretch}@media (forced-colors: active){.sc-ds-tab-group:root,.sc-ds-tab-group-h,.ds-forced-colors-scope.sc-ds-tab-group{--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-tab-group-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-tab-group-h,.ds-focus-ring.sc-ds-tab-group,.ds-focus-ring-inset.sc-ds-tab-group-h,.ds-focus-ring-inset.sc-ds-tab-group{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-tab-group-h:focus-visible,.ds-focus-ring.sc-ds-tab-group: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-tab-group-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-tab-group{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-tab-group-h:focus-visible,.ds-focus-ring-inset.sc-ds-tab-group:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-tab-group-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-tab-group: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-tab-group-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-tab-group{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-tab-group-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-tab-group::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-tab-group-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-tab-group:root,.sc-ds-tab-group-h,.ds-forced-colors-scope.sc-ds-tab-group{--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-tab-group-h,.ds-interaction-fill.sc-ds-tab-group{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-tab-group-h::before,.ds-interaction-fill.sc-ds-tab-group::before,.ds-interaction-fill.sc-ds-tab-group-h::after,.ds-interaction-fill.sc-ds-tab-group::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-tab-group-h::before,.ds-interaction-fill.sc-ds-tab-group::before{z-index:1}.ds-interaction-fill.sc-ds-tab-group-h::after,.ds-interaction-fill.sc-ds-tab-group::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-tab-group-h,.ds-interaction-fill--bordered.sc-ds-tab-group{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-tab-group-h::before,.ds-interaction-fill--selected.sc-ds-tab-group::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-tab-group-h,.ds-interaction-fill--selected.sc-ds-tab-group{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-tab-group-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-tab-group:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-tab-group-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-tab-group:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill--grouped.sc-ds-tab-group-h::after,.ds-interaction-fill--grouped.sc-ds-tab-group::after,.ds-interaction-fill--grouped.sc-ds-tab-group-h:active:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-tab-group:active:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill--grouped.sc-ds-tab-group-h:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-tab-group:hover:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}}.ds-interaction-fill--grouped.sc-ds-tab-group-h,.ds-interaction-fill--grouped.sc-ds-tab-group{--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-tab-group-h>.ds-interaction-fill__content.sc-ds-tab-group,.ds-interaction-fill.sc-ds-tab-group>.ds-interaction-fill__content.sc-ds-tab-group,.ds-interaction-fill__content.sc-ds-tab-group{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-tab-group-h,.ds-interaction-fill--on-faint.sc-ds-tab-group{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-tab-group-h,.ds-interaction-fill--on-medium.sc-ds-tab-group{--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-tab-group-h,.ds-interaction-fill--on-bold.sc-ds-tab-group{--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-tab-group-h,.ds-interaction-fill--on-strong.sc-ds-tab-group{--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-tab-group-h,.ds-interaction-fill--on-translucent.sc-ds-tab-group{--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-tab-group-h,.ds-interaction-fill--on-inverted.sc-ds-tab-group{--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-tab-group-h,.ds-interaction-fill--on-media.sc-ds-tab-group{--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-tab-group-h,.ds-interaction-fill--on-always-dark.sc-ds-tab-group{--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-tab-group-h,.ds-interaction-fill--on-navigation.sc-ds-tab-group{--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)}.ds-interaction-fill.ds-interaction-fill--surface-open.sc-ds-tab-group-h:not(:disabled)::after,.ds-interaction-fill.ds-interaction-fill--surface-open.sc-ds-tab-group:not(:disabled)::after{background:var(--ds-interaction-pressed)}@media (forced-colors: active){.ds-interaction-fill.sc-ds-tab-group-h::after,.ds-interaction-fill.sc-ds-tab-group::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--surface-open.sc-ds-tab-group-h:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill--surface-open.sc-ds-tab-group:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline:var(--dimension-stroke-width-025) dashed var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}.ds-interaction-fill--selected.sc-ds-tab-group-h::before,.ds-interaction-fill--selected.sc-ds-tab-group::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-tab-group-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-tab-group: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)}}@media (forced-colors: active){.sc-ds-tab-group:root,.sc-ds-tab-group-h,.ds-forced-colors-scope.sc-ds-tab-group{--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-control-inactive.sc-ds-tab-group-h,.ds-control-inactive.sc-ds-tab-group{opacity:var(--effect-opacity-medium);pointer-events:none;cursor:not-allowed}@media (forced-colors: active){.ds-control-inactive.sc-ds-tab-group-h,.ds-control-inactive.sc-ds-tab-group{color:var(--ds-forced-color-disabled);opacity:1}}.sc-ds-tab-group-h{display:block;--_tab-group-surface-border:var(--color-border-tertiary);--_tab-group-divider:var(--color-border-secondary)}.tab-group-host--on-faint.sc-ds-tab-group-h{--_tab-group-selected-fill:var(--color-interaction-active)}.tab-group-host--on-medium.sc-ds-tab-group-h{--_tab-group-surface-border:var(--color-border-on-medium-background-tertiary);--_tab-group-divider:var(--color-border-on-medium-background-secondary);--_tab-group-selected-fill:var(--color-interaction-on-medium-background-active)}.tab-group-host--on-bold.sc-ds-tab-group-h{--_tab-group-surface-border:var(--color-border-on-bold-background-tertiary);--_tab-group-divider:var(--color-border-on-bold-background-secondary);--_tab-group-selected-fill:var(--color-interaction-on-bold-background-active)}.tab-group-host--on-strong.sc-ds-tab-group-h{--_tab-group-surface-border:var(--color-border-on-strong-background-tertiary);--_tab-group-divider:var(--color-border-on-strong-background-secondary);--_tab-group-selected-fill:var(--color-interaction-on-strong-background-active)}.tab-group-host--on-translucent.sc-ds-tab-group-h{--_tab-group-surface-border:var(--color-translucent-border-tertiary);--_tab-group-divider:var(--color-translucent-border-secondary);--_tab-group-selected-fill:var(--color-translucent-interaction-active)}.tab-group-host--on-inverted.sc-ds-tab-group-h{--_tab-group-surface-border:var(--color-inverted-border-tertiary);--_tab-group-divider:var(--color-inverted-border-secondary);--_tab-group-selected-fill:var(--color-inverted-interaction-active)}.tab-group-host--on-media.sc-ds-tab-group-h{--_tab-group-surface-border:var(--color-media-border-tertiary);--_tab-group-divider:var(--color-media-border-secondary);--_tab-group-selected-fill:var(--color-media-interaction-active)}.tab-group-host--on-always-dark.sc-ds-tab-group-h{--_tab-group-surface-border:var(--color-always-dark-border-tertiary);--_tab-group-divider:var(--color-always-dark-border-secondary);--_tab-group-selected-fill:var(--color-always-dark-interaction-active)}.tab-list.sc-ds-tab-group{display:flex;align-items:center;gap:var(--ds-control-gap);position:relative;width:max-content;max-width:100%;height:var(--ds-control-height);padding:calc(var(--dimension-space-025) - var(--dimension-stroke-width-012));background-color:var(--color-background-secondary);border:var(--dimension-stroke-width-012) solid var(--_tab-group-surface-border);border-radius:var(--dimension-radius-half);box-sizing:border-box}.ds-control-width--fill.sc-ds-tab-group-h .tab-list.sc-ds-tab-group{width:100%}.tab-group-host--surface.sc-ds-tab-group-h .tab-list.sc-ds-tab-group{background-color:transparent}.tab-group-host--containerless.sc-ds-tab-group-h .tab-list.sc-ds-tab-group{padding:0;border:0;background-color:transparent}.tab.sc-ds-tab-group{display:flex;align-items:center;justify-content:center;gap:var(--ds-control-gap);padding:0 var(--ds-control-padding-inline);background-color:transparent;border:none;border-radius:var(--dimension-radius-half);cursor:default;-webkit-user-select:none;user-select:none;color:var(--color-foreground-secondary);transition:color var(--effect-motion-short-2);flex-shrink:0;height:var(--ds-control-height);min-width:var(--ds-control-height);box-sizing:border-box;--_dot:var(--color-foreground-bold-brand)}.ds-control-width--fill.sc-ds-tab-group-h .tab.sc-ds-tab-group{flex:1 1 0;min-width:0;overflow:hidden}.ds-control-width--fill.sc-ds-tab-group-h .tab__content.sc-ds-tab-group{max-width:100%;overflow:hidden}.ds-control-width--fill.sc-ds-tab-group-h .tab__label.sc-ds-tab-group{overflow:hidden;text-overflow:ellipsis}.tab--selected.sc-ds-tab-group{color:var(--color-foreground-primary);background-color:var(--color-background-primary);--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--_tab-group-surface-border)}.tab-group-host--surface.sc-ds-tab-group-h .tab--selected.sc-ds-tab-group{background-color:var(--_tab-group-selected-fill)}.tab--selected.sc-ds-tab-group:not(.ds-interaction-fill){box-shadow:inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.tab__content.sc-ds-tab-group{position:relative;z-index:2;display:inline-flex;align-items:center;justify-content:center;gap:var(--ds-control-gap);min-width:0}.tab__content--dot.sc-ds-tab-group{padding-right:var(--dimension-space-050)}.tab__label.sc-ds-tab-group{padding:0 var(--ds-control-label-inset);white-space:nowrap}.tab__icon.sc-ds-tab-group{flex-shrink:0}.tab__dot.sc-ds-tab-group{position:absolute;top:0;right:0;z-index:2;pointer-events:none}.on-medium.sc-ds-tab-group{color:var(--color-foreground-on-medium-background-secondary)}.on-medium.tab--selected.sc-ds-tab-group{color:var(--color-foreground-on-medium-background-primary)}.on-bold.sc-ds-tab-group{color:var(--color-foreground-on-bold-background-secondary)}.on-bold.tab--selected.sc-ds-tab-group{color:var(--color-foreground-on-bold-background-primary)}.on-strong.sc-ds-tab-group{color:var(--color-foreground-on-strong-background-secondary)}.on-strong.tab--selected.sc-ds-tab-group{color:var(--color-foreground-on-strong-background-primary)}.on-translucent.sc-ds-tab-group{color:var(--color-translucent-foreground-secondary)}.on-translucent.tab--selected.sc-ds-tab-group{color:var(--color-translucent-foreground-primary)}.on-inverted.sc-ds-tab-group{color:var(--color-inverted-foreground-secondary)}.on-inverted.tab--selected.sc-ds-tab-group{color:var(--color-inverted-foreground-primary)}.on-media.sc-ds-tab-group{color:var(--color-media-foreground-secondary)}.on-media.tab--selected.sc-ds-tab-group{color:var(--color-media-foreground-primary)}.on-always-dark.sc-ds-tab-group{color:var(--color-always-dark-foreground-secondary)}.on-always-dark.tab--selected.sc-ds-tab-group{color:var(--color-always-dark-foreground-primary)}.tab-divider.sc-ds-tab-group{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:var(--dimension-stroke-width-012);align-self:center;padding:0;flex-shrink:0;pointer-events:none}.tab-divider__line.sc-ds-tab-group{width:var(--dimension-stroke-width-012);height:var(--typography-lineheight-sm);flex-shrink:0;background-color:var(--_tab-group-divider)}.tab-group-host--tabs.sc-ds-tab-group-h .tab-list.sc-ds-tab-group{gap:var(--dimension-space-050);border-radius:0}.tab-group-host--tabs.sc-ds-tab-group-h .tab.sc-ds-tab-group{border-radius:var(--ds-control-radius)}.tab-group-host--tabs.sc-ds-tab-group-h .tab--selected.sc-ds-tab-group{background-color:transparent;--ds-interaction-border-width:0px}`;const p=o(class o extends r{constructor(o){super();if(o!==false){this.__registerHost()}this.dsChange=t(this,"dsChange",7);this.value="";this.tabs=[];this.size="md";this.width="hug";this.presentation="segmented";this.hasContainer=true;this.ariaLabel=null}get selectableTabs(){return e(this.tabs)}get focusableTabId(){return this.selectableTabs.some((o=>o.id===this.value&&!o.isInactive))?this.value:this.selectableTabs.find((o=>!o.isInactive))?.id??""}selectTab(o,r){this.value=o;this.dsChange.emit(o);if(r?.focus!==false){this.focusTab(o)}}focusTab(o){const r=this.el.querySelector(`[data-tab-id="${o}"]`);r?.focus({preventScroll:true})}onValueChange(o,r){if(r===undefined||o===r)return;requestAnimationFrame((()=>{const r=document.activeElement;if(!r||!this.el.contains(r))return;const t=r.getAttribute("data-tab-id");if(t===o)return;const s=this.selectableTabs.some((r=>r.id===o&&!r.isInactive))?o:this.focusableTabId;const i=this.el.querySelector(`[data-tab-id="${s}"]`);if(i){i.focus({preventScroll:true})}else{r.blur()}}))}findEnabled(o,r){const t=this.selectableTabs;const s=t.length;for(let i=0;i<s;i++){const n=(o+r*(i+1)+s*(i+1))%s;if(!t[n]?.isInactive)return n}return o}handleKeyDown(o){const r=this.selectableTabs;if(!r.length)return;const t=o.target?.closest("[data-tab-id]")?.dataset["tabId"];const s=r.findIndex((o=>o.id===(t??this.focusableTabId)));let i=null;if(o.key==="ArrowRight"){i=this.findEnabled(s,1)}else if(o.key==="ArrowLeft"){i=this.findEnabled(s,-1)}if(o.key==="Home"){const o=r.findIndex((o=>!o.isInactive));i=o===-1?null:o}else if(o.key==="End"){const o=[...r].reverse().findIndex((o=>!o.isInactive));i=o===-1?null:r.length-1-o}if(i!==null){o.preventDefault();const t=r[i];this.selectTab(t.id)}}getBgClass(){if(!this.background)return"";if(this.background==="always-dark")return"on-always-dark";return`on-${this.background}`}render(){const o=this.getBgClass();const r=this.focusableTabId;return s(i,{key:"be9bdeb12168b3c4b6e81289a86d8f1a913a989d",class:{"tab-group-host":true,[`tab-group-host--${this.size}`]:true,[`ds-control--${this.size}`]:true,"tab-group-host--containerless":!this.hasContainer||this.presentation==="tabs","tab-group-host--tabs":this.presentation==="tabs","tab-group-host--surface":!!o,[`tab-group-host--${o}`]:!!o,...b(this.width)}},s("div",{key:"44576d2566d1277c7aacacd00459e4e247212342",role:"tablist",class:"tab-list","aria-label":this.ariaLabel,"aria-labelledby":this.ariaLabelledby},this.tabs.map(((t,i)=>{if(a(t)){return s("div",{key:`divider-${i}`,class:"tab-divider","aria-hidden":"true"},s("div",{class:"tab-divider__line"}))}const n=t.id===this.value;const e=t.variant??"label";const d=e==="icon"||e==="icon-label";const c=e==="label"||e==="icon-label";const l=n&&!o;return s("button",{key:t.id,type:"button",role:"tab","data-tab-id":t.id,class:{tab:true,"tab--selected":n,[`ds-control--${this.size}`]:true,"ds-control--inset":this.presentation!=="tabs","ds-focus-ring-inset":true,"ds-interaction-fill":!t.isInactive,"ds-interaction-fill--on-faint":o==="on-faint","ds-interaction-fill--on-medium":o==="on-medium","ds-interaction-fill--on-bold":o==="on-bold","ds-interaction-fill--on-strong":o==="on-strong","ds-interaction-fill--on-translucent":o==="on-translucent","ds-interaction-fill--on-inverted":o==="on-inverted","ds-interaction-fill--on-media":o==="on-media","ds-interaction-fill--on-always-dark":o==="on-always-dark","ds-control-inactive":!!t.isInactive,[o]:!!o},"aria-label":e==="icon"?t.label:undefined,"aria-selected":String(n),"aria-disabled":t.isInactive?"true":undefined,"aria-controls":t.panelId??undefined,disabled:t.isInactive,tabIndex:t.id===r?0:-1,onClick:()=>!t.isInactive&&this.selectTab(t.id)},s("span",{class:{tab__content:true,[`tab__content--${e}`]:true,"tab__content--dot":!!t.dot}},d&&s("ds-icon",{class:"tab__icon",name:t.icon,size:this.size,color:"inherit"}),c&&s("ds-text",{class:"tab__label",as:"span",variant:u[this.size],emphasis:l,color:"inherit"},t.label),t.dot&&s("ds-badge",{class:"tab__dot",variant:"dot",hasRing:false,label:"","aria-hidden":"true"})))}))))}get el(){return this}static get watchers(){return{value:[{onValueChange:0}]}}static get style(){return g()}},[2,"ds-tab-group",{value:[1025],tabs:[16],size:[1],width:[1],presentation:[1],hasContainer:[4,"has-container"],background:[1],ariaLabel:[1,"aria-label"],ariaLabelledby:[1,"aria-labelledby"]},[[0,"keydown","handleKeyDown"]],{value:[{onValueChange:0}]}]);function v(){if(typeof customElements==="undefined"){return}const o=["ds-tab-group","ds-badge","ds-icon","ds-text"];o.forEach((o=>{switch(o){case"ds-tab-group":if(!customElements.get(n(o))){customElements.define(n(o),p)}break;case"ds-badge":if(!customElements.get(n(o))){d()}break;case"ds-icon":if(!customElements.get(n(o))){c()}break;case"ds-text":if(!customElements.get(n(o))){l()}break}}))}v();export{p as T,v as d};
2
- //# sourceMappingURL=p-beRFLHbB.js.map
1
+ import{p as o,H as r,c as t,h as s,a as i,t as n}from"./index.js";import{g as e,i as a}from"./p-BQq26pt9.js";import{d}from"./p-DBwa1OXP.js";import{d as c}from"./p-Cea7rROU.js";import{d as l}from"./p-BgLI9JoT.js";import{C as u}from"./p-CuwopElg.js";import{c as b}from"./p-DuFm-ieS.js";const g=()=>`.sc-ds-tab-group-h,.sc-ds-tab-group:where(.ds-table),.sc-ds-tab-group:where(.tooltip-popup),.sc-ds-tab-group:where(.ds-radius){--ds-radius-control:var(--dimension-radius-025);--ds-radius-card:var(--dimension-radius-050);--ds-radius-modal:var(--dimension-radius-050);--ds-radius-menu:var(--dimension-radius-075);--ds-radius-tooltip-control:var(--dimension-radius-025);--ds-radius-tooltip-menu:var(--dimension-radius-075);--ds-radius-table:var(--dimension-radius-050)}.ds-control--lg.sc-ds-tab-group,.ds-control--lg.sc-ds-tab-group-h,.ds-control--md.sc-ds-tab-group-h,.ds-control--md.sc-ds-tab-group,.ds-control--sm.sc-ds-tab-group-h,.ds-control--sm.sc-ds-tab-group,.ds-control--xs.sc-ds-tab-group-h,.ds-control--xs.sc-ds-tab-group{--ds-control-radius:var(--ds-radius-control)}.ds-control--lg.sc-ds-tab-group-h,.ds-control--lg.sc-ds-tab-group{--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-tab-group-h,.ds-control--md.sc-ds-tab-group{--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-tab-group-h,.ds-control--sm.sc-ds-tab-group{--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-tab-group-h,.ds-control--xs.sc-ds-tab-group{--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.ds-control--inset.sc-ds-tab-group-h,.ds-control--lg.ds-control--inset.sc-ds-tab-group{--ds-control-height:calc(var(--dimension-size-500) - var(--dimension-space-050));--ds-control-padding-inline:calc(var(--dimension-space-100) - var(--dimension-space-025))}.ds-control--md.ds-control--inset.sc-ds-tab-group-h,.ds-control--md.ds-control--inset.sc-ds-tab-group{--ds-control-height:calc(var(--dimension-size-400) - var(--dimension-space-050));--ds-control-padding-inline:calc(var(--dimension-space-075) - var(--dimension-space-025))}.ds-control--sm.ds-control--inset.sc-ds-tab-group-h,.ds-control--sm.ds-control--inset.sc-ds-tab-group{--ds-control-height:calc(var(--dimension-size-300) - var(--dimension-space-050));--ds-control-padding-inline:calc(var(--dimension-space-050) - var(--dimension-space-025))}.ds-control--xs.ds-control--inset.sc-ds-tab-group-h,.ds-control--xs.ds-control--inset.sc-ds-tab-group{--ds-control-height:calc(var(--dimension-size-200) - var(--dimension-space-050));--ds-control-padding-inline:calc(var(--dimension-space-025) - var(--dimension-space-025))}.ds-control--lg.ds-control--inset-double.sc-ds-tab-group-h,.ds-control--lg.ds-control--inset-double.sc-ds-tab-group{--ds-control-height:calc(var(--dimension-size-500) - var(--dimension-space-100));--ds-control-padding-inline:calc(var(--dimension-space-100) - var(--dimension-space-050))}.ds-control--md.ds-control--inset-double.sc-ds-tab-group-h,.ds-control--md.ds-control--inset-double.sc-ds-tab-group{--ds-control-height:calc(var(--dimension-size-400) - var(--dimension-space-100));--ds-control-padding-inline:calc(var(--dimension-space-075) - var(--dimension-space-050))}.ds-control--sm.ds-control--inset-double.sc-ds-tab-group-h,.ds-control--sm.ds-control--inset-double.sc-ds-tab-group{--ds-control-height:calc(var(--dimension-size-300) - var(--dimension-space-100));--ds-control-padding-inline:calc(var(--dimension-space-050) - var(--dimension-space-050))}.ds-control-width--hug.sc-ds-tab-group-h,.ds-control-width--hug.sc-ds-tab-group{width:fit-content;max-width:100%;flex:0 0 auto}.ds-control-width--fill.sc-ds-tab-group-h,.ds-control-width--fill.sc-ds-tab-group{width:100%;min-width:0;flex:1 1 auto;align-self:stretch}@media (forced-colors: active){.sc-ds-tab-group:root,.sc-ds-tab-group-h,.ds-forced-colors-scope.sc-ds-tab-group{--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-tab-group-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-tab-group-h,.ds-focus-ring.sc-ds-tab-group,.ds-focus-ring-inset.sc-ds-tab-group-h,.ds-focus-ring-inset.sc-ds-tab-group{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-tab-group-h:focus-visible,.ds-focus-ring.sc-ds-tab-group: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-tab-group-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-tab-group{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-tab-group-h:focus-visible,.ds-focus-ring-inset.sc-ds-tab-group:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-tab-group-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-tab-group: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-tab-group-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-tab-group{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-tab-group-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-tab-group::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-tab-group-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-tab-group:root,.sc-ds-tab-group-h,.ds-forced-colors-scope.sc-ds-tab-group{--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-tab-group-h,.ds-interaction-fill.sc-ds-tab-group{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-tab-group-h::before,.ds-interaction-fill.sc-ds-tab-group::before,.ds-interaction-fill.sc-ds-tab-group-h::after,.ds-interaction-fill.sc-ds-tab-group::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-tab-group-h::before,.ds-interaction-fill.sc-ds-tab-group::before{z-index:1}.ds-interaction-fill.sc-ds-tab-group-h::after,.ds-interaction-fill.sc-ds-tab-group::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-tab-group-h,.ds-interaction-fill--bordered.sc-ds-tab-group{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-tab-group-h::before,.ds-interaction-fill--selected.sc-ds-tab-group::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-tab-group-h,.ds-interaction-fill--selected.sc-ds-tab-group{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-tab-group-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-tab-group:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-tab-group-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-tab-group:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill--grouped.sc-ds-tab-group-h::after,.ds-interaction-fill--grouped.sc-ds-tab-group::after,.ds-interaction-fill--grouped.sc-ds-tab-group-h:active:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-tab-group:active:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill--grouped.sc-ds-tab-group-h:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-tab-group:hover:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}}.ds-interaction-fill--grouped.sc-ds-tab-group-h,.ds-interaction-fill--grouped.sc-ds-tab-group{--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-tab-group-h>.ds-interaction-fill__content.sc-ds-tab-group,.ds-interaction-fill.sc-ds-tab-group>.ds-interaction-fill__content.sc-ds-tab-group,.ds-interaction-fill__content.sc-ds-tab-group{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-tab-group-h,.ds-interaction-fill--on-faint.sc-ds-tab-group{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-tab-group-h,.ds-interaction-fill--on-medium.sc-ds-tab-group{--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-tab-group-h,.ds-interaction-fill--on-bold.sc-ds-tab-group{--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-tab-group-h,.ds-interaction-fill--on-strong.sc-ds-tab-group{--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-tab-group-h,.ds-interaction-fill--on-translucent.sc-ds-tab-group{--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-tab-group-h,.ds-interaction-fill--on-inverted.sc-ds-tab-group{--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-tab-group-h,.ds-interaction-fill--on-media.sc-ds-tab-group{--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-tab-group-h,.ds-interaction-fill--on-always-dark.sc-ds-tab-group{--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-tab-group-h,.ds-interaction-fill--on-navigation.sc-ds-tab-group{--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)}.ds-interaction-fill.ds-interaction-fill--surface-open.sc-ds-tab-group-h:not(:disabled)::after,.ds-interaction-fill.ds-interaction-fill--surface-open.sc-ds-tab-group:not(:disabled)::after{background:var(--ds-interaction-pressed)}@media (forced-colors: active){.ds-interaction-fill.sc-ds-tab-group-h::after,.ds-interaction-fill.sc-ds-tab-group::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--surface-open.sc-ds-tab-group-h:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill--surface-open.sc-ds-tab-group:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline:var(--dimension-stroke-width-025) dashed var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}.ds-interaction-fill--selected.sc-ds-tab-group-h::before,.ds-interaction-fill--selected.sc-ds-tab-group::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-tab-group-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-tab-group: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)}}@media (forced-colors: active){.sc-ds-tab-group:root,.sc-ds-tab-group-h,.ds-forced-colors-scope.sc-ds-tab-group{--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-control-inactive.sc-ds-tab-group-h,.ds-control-inactive.sc-ds-tab-group{opacity:var(--effect-opacity-medium);pointer-events:none;cursor:not-allowed}@media (forced-colors: active){.ds-control-inactive.sc-ds-tab-group-h,.ds-control-inactive.sc-ds-tab-group{color:var(--ds-forced-color-disabled);opacity:1}}.sc-ds-tab-group-h{display:block;--_tab-group-surface-border:var(--color-border-tertiary);--_tab-group-divider:var(--color-border-secondary)}.tab-group-host--on-faint.sc-ds-tab-group-h{--_tab-group-selected-fill:var(--color-interaction-active)}.tab-group-host--on-medium.sc-ds-tab-group-h{--_tab-group-surface-border:var(--color-border-on-medium-background-tertiary);--_tab-group-divider:var(--color-border-on-medium-background-secondary);--_tab-group-selected-fill:var(--color-interaction-on-medium-background-active)}.tab-group-host--on-bold.sc-ds-tab-group-h{--_tab-group-surface-border:var(--color-border-on-bold-background-tertiary);--_tab-group-divider:var(--color-border-on-bold-background-secondary);--_tab-group-selected-fill:var(--color-interaction-on-bold-background-active)}.tab-group-host--on-strong.sc-ds-tab-group-h{--_tab-group-surface-border:var(--color-border-on-strong-background-tertiary);--_tab-group-divider:var(--color-border-on-strong-background-secondary);--_tab-group-selected-fill:var(--color-interaction-on-strong-background-active)}.tab-group-host--on-translucent.sc-ds-tab-group-h{--_tab-group-surface-border:var(--color-translucent-border-tertiary);--_tab-group-divider:var(--color-translucent-border-secondary);--_tab-group-selected-fill:var(--color-translucent-interaction-active)}.tab-group-host--on-inverted.sc-ds-tab-group-h{--_tab-group-surface-border:var(--color-inverted-border-tertiary);--_tab-group-divider:var(--color-inverted-border-secondary);--_tab-group-selected-fill:var(--color-inverted-interaction-active)}.tab-group-host--on-media.sc-ds-tab-group-h{--_tab-group-surface-border:var(--color-media-border-tertiary);--_tab-group-divider:var(--color-media-border-secondary);--_tab-group-selected-fill:var(--color-media-interaction-active)}.tab-group-host--on-always-dark.sc-ds-tab-group-h{--_tab-group-surface-border:var(--color-always-dark-border-tertiary);--_tab-group-divider:var(--color-always-dark-border-secondary);--_tab-group-selected-fill:var(--color-always-dark-interaction-active)}.tab-list.sc-ds-tab-group{display:flex;align-items:center;gap:var(--ds-control-gap);position:relative;width:max-content;max-width:100%;height:var(--ds-control-height);padding:calc(var(--dimension-space-025) - var(--dimension-stroke-width-012));background-color:var(--color-background-secondary);border:var(--dimension-stroke-width-012) solid var(--_tab-group-surface-border);border-radius:var(--dimension-radius-half);box-sizing:border-box}.ds-control-width--fill.sc-ds-tab-group-h .tab-list.sc-ds-tab-group{width:100%}.tab-group-host--surface.sc-ds-tab-group-h .tab-list.sc-ds-tab-group{background-color:transparent}.tab-group-host--containerless.sc-ds-tab-group-h .tab-list.sc-ds-tab-group{padding:0;border:0;background-color:transparent}.tab.sc-ds-tab-group{display:flex;align-items:center;justify-content:center;gap:var(--ds-control-gap);padding:0 var(--ds-control-padding-inline);background-color:transparent;border:none;border-radius:var(--dimension-radius-half);cursor:default;-webkit-user-select:none;user-select:none;color:var(--color-foreground-secondary);transition:color var(--effect-motion-short-2);flex-shrink:0;height:var(--ds-control-height);min-width:var(--ds-control-height);box-sizing:border-box;--_dot:var(--color-foreground-bold-brand)}.ds-control-width--fill.sc-ds-tab-group-h .tab.sc-ds-tab-group{flex:1 1 0;min-width:0;overflow:hidden}.ds-control-width--fill.sc-ds-tab-group-h .tab__content.sc-ds-tab-group{max-width:100%;overflow:hidden}.ds-control-width--fill.sc-ds-tab-group-h .tab__label.sc-ds-tab-group{overflow:hidden;text-overflow:ellipsis}.tab--selected.sc-ds-tab-group{color:var(--color-foreground-primary);background-color:var(--color-background-primary);--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--_tab-group-surface-border)}.tab-group-host--surface.sc-ds-tab-group-h .tab--selected.sc-ds-tab-group{background-color:var(--_tab-group-selected-fill)}.tab--selected.sc-ds-tab-group:not(.ds-interaction-fill){box-shadow:inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.tab__content.sc-ds-tab-group{position:relative;z-index:2;display:inline-flex;align-items:center;justify-content:center;gap:var(--ds-control-gap);min-width:0}.tab__content--dot.sc-ds-tab-group{padding-right:var(--dimension-space-050)}.tab__label.sc-ds-tab-group{padding:0 var(--ds-control-label-inset);white-space:nowrap}.tab__icon.sc-ds-tab-group{flex-shrink:0}.tab__dot.sc-ds-tab-group{position:absolute;top:0;right:0;z-index:2;pointer-events:none}.on-medium.sc-ds-tab-group{color:var(--color-foreground-on-medium-background-secondary)}.on-medium.tab--selected.sc-ds-tab-group{color:var(--color-foreground-on-medium-background-primary)}.on-bold.sc-ds-tab-group{color:var(--color-foreground-on-bold-background-secondary)}.on-bold.tab--selected.sc-ds-tab-group{color:var(--color-foreground-on-bold-background-primary)}.on-strong.sc-ds-tab-group{color:var(--color-foreground-on-strong-background-secondary)}.on-strong.tab--selected.sc-ds-tab-group{color:var(--color-foreground-on-strong-background-primary)}.on-translucent.sc-ds-tab-group{color:var(--color-translucent-foreground-secondary)}.on-translucent.tab--selected.sc-ds-tab-group{color:var(--color-translucent-foreground-primary)}.on-inverted.sc-ds-tab-group{color:var(--color-inverted-foreground-secondary)}.on-inverted.tab--selected.sc-ds-tab-group{color:var(--color-inverted-foreground-primary)}.on-media.sc-ds-tab-group{color:var(--color-media-foreground-secondary)}.on-media.tab--selected.sc-ds-tab-group{color:var(--color-media-foreground-primary)}.on-always-dark.sc-ds-tab-group{color:var(--color-always-dark-foreground-secondary)}.on-always-dark.tab--selected.sc-ds-tab-group{color:var(--color-always-dark-foreground-primary)}.tab-divider.sc-ds-tab-group{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:var(--dimension-stroke-width-012);align-self:center;padding:0;flex-shrink:0;pointer-events:none}.tab-divider__line.sc-ds-tab-group{width:var(--dimension-stroke-width-012);height:var(--typography-lineheight-sm);flex-shrink:0;background-color:var(--_tab-group-divider)}.tab-group-host--tabs.sc-ds-tab-group-h .tab-list.sc-ds-tab-group{gap:var(--dimension-space-050);border-radius:0}.tab-group-host--tabs.sc-ds-tab-group-h .tab.sc-ds-tab-group{border-radius:var(--ds-control-radius)}.tab-group-host--tabs.sc-ds-tab-group-h .tab--selected.sc-ds-tab-group{background-color:transparent;--ds-interaction-border-width:0px}`;const p=o(class o extends r{constructor(o){super();if(o!==false){this.__registerHost()}this.dsChange=t(this,"dsChange",7);this.value="";this.tabs=[];this.size="md";this.width="hug";this.presentation="segmented";this.hasContainer=true;this.ariaLabel=null}get selectableTabs(){return e(this.tabs)}get focusableTabId(){return this.selectableTabs.some((o=>o.id===this.value&&!o.isInactive))?this.value:this.selectableTabs.find((o=>!o.isInactive))?.id??""}selectTab(o,r){this.value=o;this.dsChange.emit(o);if(r?.focus!==false){this.focusTab(o)}}focusTab(o){const r=this.el.querySelector(`[data-tab-id="${o}"]`);r?.focus({preventScroll:true})}onValueChange(o,r){if(r===undefined||o===r)return;requestAnimationFrame((()=>{const r=document.activeElement;if(!r||!this.el.contains(r))return;const t=r.getAttribute("data-tab-id");if(t===o)return;const s=this.selectableTabs.some((r=>r.id===o&&!r.isInactive))?o:this.focusableTabId;const i=this.el.querySelector(`[data-tab-id="${s}"]`);if(i){i.focus({preventScroll:true})}else{r.blur()}}))}findEnabled(o,r){const t=this.selectableTabs;const s=t.length;for(let i=0;i<s;i++){const n=(o+r*(i+1)+s*(i+1))%s;if(!t[n]?.isInactive)return n}return o}handleKeyDown(o){const r=this.selectableTabs;if(!r.length)return;const t=o.target?.closest("[data-tab-id]")?.dataset["tabId"];const s=r.findIndex((o=>o.id===(t??this.focusableTabId)));let i=null;if(o.key==="ArrowRight"){i=this.findEnabled(s,1)}else if(o.key==="ArrowLeft"){i=this.findEnabled(s,-1)}if(o.key==="Home"){const o=r.findIndex((o=>!o.isInactive));i=o===-1?null:o}else if(o.key==="End"){const o=[...r].reverse().findIndex((o=>!o.isInactive));i=o===-1?null:r.length-1-o}if(i!==null){o.preventDefault();const t=r[i];this.selectTab(t.id)}}getBgClass(){if(!this.background)return"";if(this.background==="always-dark")return"on-always-dark";return`on-${this.background}`}render(){const o=this.getBgClass();const r=this.focusableTabId;return s(i,{key:"520fcde8054a09148bd086a592fa581a62826706",class:{"tab-group-host":true,[`tab-group-host--${this.size}`]:true,[`ds-control--${this.size}`]:true,"tab-group-host--containerless":!this.hasContainer||this.presentation==="tabs","tab-group-host--tabs":this.presentation==="tabs","tab-group-host--surface":!!o,[`tab-group-host--${o}`]:!!o,...b(this.width)}},s("div",{key:"4056958533b6ae68a54b1809ebaaed205768a632",role:"tablist",class:"tab-list","aria-label":this.ariaLabel,"aria-labelledby":this.ariaLabelledby},this.tabs.map(((t,i)=>{if(a(t)){return s("div",{key:`divider-${i}`,class:"tab-divider","aria-hidden":"true"},s("div",{class:"tab-divider__line"}))}const n=t.id===this.value;const e=t.variant??"label";const d=e==="icon"||e==="icon-label";const c=e==="label"||e==="icon-label";const l=n&&!o;return s("button",{key:t.id,type:"button",role:"tab","data-tab-id":t.id,class:{tab:true,"tab--selected":n,[`ds-control--${this.size}`]:true,"ds-control--inset":this.presentation!=="tabs","ds-focus-ring-inset":true,"ds-interaction-fill":!t.isInactive,"ds-interaction-fill--on-faint":o==="on-faint","ds-interaction-fill--on-medium":o==="on-medium","ds-interaction-fill--on-bold":o==="on-bold","ds-interaction-fill--on-strong":o==="on-strong","ds-interaction-fill--on-translucent":o==="on-translucent","ds-interaction-fill--on-inverted":o==="on-inverted","ds-interaction-fill--on-media":o==="on-media","ds-interaction-fill--on-always-dark":o==="on-always-dark","ds-control-inactive":!!t.isInactive,[o]:!!o},"aria-label":e==="icon"?t.label:undefined,"aria-selected":String(n),"aria-disabled":t.isInactive?"true":undefined,"aria-controls":t.panelId??undefined,disabled:t.isInactive,tabIndex:t.id===r?0:-1,onClick:()=>!t.isInactive&&this.selectTab(t.id)},s("span",{class:{tab__content:true,[`tab__content--${e}`]:true,"tab__content--dot":!!t.dot}},d&&s("ds-icon",{class:"tab__icon",name:t.icon,size:this.size,color:"inherit"}),c&&s("ds-text",{class:"tab__label",as:"span",variant:u[this.size],emphasis:l,color:"inherit"},t.label),t.dot&&s("ds-badge",{class:"tab__dot",variant:"dot",hasRing:false,label:"","aria-hidden":"true"})))}))))}get el(){return this}static get watchers(){return{value:[{onValueChange:0}]}}static get style(){return g()}},[2,"ds-tab-group",{value:[1025],tabs:[16],size:[1],width:[1],presentation:[1],hasContainer:[4,"has-container"],background:[1],ariaLabel:[1,"aria-label"],ariaLabelledby:[1,"aria-labelledby"]},[[0,"keydown","handleKeyDown"]],{value:[{onValueChange:0}]}]);function v(){if(typeof customElements==="undefined"){return}const o=["ds-tab-group","ds-badge","ds-icon","ds-text"];o.forEach((o=>{switch(o){case"ds-tab-group":if(!customElements.get(n(o))){customElements.define(n(o),p)}break;case"ds-badge":if(!customElements.get(n(o))){d()}break;case"ds-icon":if(!customElements.get(n(o))){c()}break;case"ds-text":if(!customElements.get(n(o))){l()}break}}))}v();export{p as T,v as d};
2
+ //# sourceMappingURL=p-CaNCGKEJ.js.map
@@ -0,0 +1,2 @@
1
+ import{p as t,H as i,h as o,a as s,t as n}from"./index.js";import{A as e,r}from"./p-B8ZonS3S.js";import{d}from"./p-BgLI9JoT.js";import{a,T as l,r as c,b as h}from"./p-CeXf9-X3.js";import{r as p}from"./p-CochmPyg.js";import{C as u}from"./p-CuwopElg.js";const m=new Set(["⌘","⇧","⌥","⌃"]);const f={alt:"⌥",cmd:"⌘",command:"⌘",control:"⌃",ctrl:"⌃",option:"⌥",shift:"⇧"};function g(t){return f[t.toLowerCase()]??t}function v(t){const i=t.trim();if(!i)return[];if(i.includes("+")){return i.split("+").map((t=>t.trim())).filter(Boolean).map(g)}if(/\s/.test(i)){return i.split(/\s+/).filter(Boolean).map(g)}const o=Array.from(i);const s=[];while(o.length>1&&m.has(o[0])){s.push(o.shift())}s.push(o.join(""));return s}const y=()=>`.sc-ds-tooltip-h,.sc-ds-tooltip:where(.ds-table),.sc-ds-tooltip:where(.tooltip-popup),.sc-ds-tooltip:where(.ds-radius){--ds-radius-control:var(--dimension-radius-025);--ds-radius-card:var(--dimension-radius-050);--ds-radius-modal:var(--dimension-radius-050);--ds-radius-menu:var(--dimension-radius-075);--ds-radius-tooltip-control:var(--dimension-radius-025);--ds-radius-tooltip-menu:var(--dimension-radius-075);--ds-radius-table:var(--dimension-radius-050)}.ds-control--lg.sc-ds-tooltip,.ds-control--lg.sc-ds-tooltip-h,.ds-control--md.sc-ds-tooltip-h,.ds-control--md.sc-ds-tooltip,.ds-control--sm.sc-ds-tooltip-h,.ds-control--sm.sc-ds-tooltip,.ds-control--xs.sc-ds-tooltip-h,.ds-control--xs.sc-ds-tooltip{--ds-control-radius:var(--ds-radius-control)}.ds-control--lg.sc-ds-tooltip-h,.ds-control--lg.sc-ds-tooltip{--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-tooltip-h,.ds-control--md.sc-ds-tooltip{--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-tooltip-h,.ds-control--sm.sc-ds-tooltip{--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-tooltip-h,.ds-control--xs.sc-ds-tooltip{--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-tooltip,.ds-control--lg.sc-ds-tooltip-h,.ds-control--md.sc-ds-tooltip-h,.ds-control--md.sc-ds-tooltip,.ds-control--sm.sc-ds-tooltip-h,.ds-control--sm.sc-ds-tooltip,.ds-control--xs.sc-ds-tooltip-h,.ds-control--xs.sc-ds-tooltip{--ds-control-radius:var(--ds-radius-control)}.ds-control--lg.sc-ds-tooltip-h,.ds-control--lg.sc-ds-tooltip{--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-tooltip-h,.ds-control--md.sc-ds-tooltip{--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-tooltip-h,.ds-control--sm.sc-ds-tooltip{--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-tooltip-h,.ds-control--xs.sc-ds-tooltip{--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}.key-hint-group.sc-ds-tooltip{display:inline-flex;align-items:center;gap:var(--dimension-stroke-width-012);width:max-content;flex-shrink:0}.key-hint.sc-ds-tooltip{box-sizing:border-box;min-width:var(--ds-control-icon, var(--dimension-iconography-md));width:var(--ds-control-icon, var(--dimension-iconography-md));height:var(--ds-control-icon, var(--dimension-iconography-md));padding-inline:0;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;background-color:var(--color-background-secondary);border:var(--dimension-stroke-width-015) solid var(--color-border-tertiary);border-bottom-width:var(--dimension-stroke-width-025);border-radius:var(--dimension-radius-025);color:var(--color-foreground-secondary)}.key-hint--wide.sc-ds-tooltip{width:calc(var(--ds-control-icon, var(--dimension-iconography-md)) * 1.5)}.key-hint__label.sc-ds-tooltip{display:inline-flex;width:max-content;min-width:max-content;font-family:var(--typography-font-family-ui);font-size:var(--typography-fontsize-xs);line-height:1;font-weight:var(--typography-weight-regular);letter-spacing:0;text-transform:uppercase;color:inherit}.ds-control--xs.sc-ds-tooltip .key-hint__label.sc-ds-tooltip{font-size:calc(var(--typography-fontsize-xs) * 0.78)}@media (forced-colors: active){.sc-ds-tooltip:root,.sc-ds-tooltip-h,.ds-forced-colors-scope.sc-ds-tooltip{--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}}.tooltip-popup.sc-ds-tooltip{box-sizing:border-box;background-color:var(--color-background-primary);border-radius:var(--ds-radius-tooltip-control, var(--dimension-radius-025));box-shadow:var(--effect-elevation-elevated-floating);white-space:nowrap;pointer-events:none;animation:tooltipFadeIn var(--effect-motion-short-2) forwards;will-change:transform;backface-visibility:hidden}.tooltip-popup--instant.sc-ds-tooltip{animation:none;opacity:1}.tooltip-popup--closing.sc-ds-tooltip{animation:tooltipFadeOut var(--effect-motion-short-3) forwards}.tooltip-inner.sc-ds-tooltip{box-sizing:border-box;height:var(--ds-control-height, var(--dimension-size-400));display:flex;align-items:center;gap:var(--ds-control-gap, var(--dimension-space-050));padding:0 var(--ds-control-padding-inline, var(--dimension-space-075))}.tooltip-inner.sc-ds-tooltip>ds-text.sc-ds-tooltip{flex-shrink:0;min-width:max-content;max-width:none;padding:0 var(--ds-control-label-inset, var(--dimension-space-025));color:var(--color-foreground-primary)}.tooltip-popup--wrap.sc-ds-tooltip{white-space:normal;max-inline-size:var(--dimension-panel-width-xs)}.tooltip-popup--wrap.sc-ds-tooltip .tooltip-inner.sc-ds-tooltip{height:auto;min-height:var(--ds-control-height, var(--dimension-size-400));padding-block:var(--dimension-space-050);align-items:flex-start}.tooltip-popup--wrap.sc-ds-tooltip .tooltip-inner.sc-ds-tooltip>ds-text.sc-ds-tooltip{flex:1 1 auto;min-width:0;max-width:100%;white-space:pre-line}@keyframes tooltipFadeIn{from{opacity:0}to{opacity:1}}@keyframes tooltipFadeOut{from{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){.tooltip-popup.sc-ds-tooltip,.tooltip-popup--instant.sc-ds-tooltip{animation:none;opacity:1}.tooltip-popup--closing.sc-ds-tooltip{animation:none;opacity:0}}@media (forced-colors: active){.tooltip-popup.sc-ds-tooltip{box-shadow:none;outline:var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);outline-offset:calc(-1 * var(--dimension-stroke-width-012))}}`;const b={md:l.size400,sm:l.size300,xs:l.size200};let w=0;let x=0;let C=null;function k(t){const i=document.createElement("ds-text");i.as="span";i.variant=t.variant;i.emphasis=t.emphasis??false;i.color=t.color??"inherit";if(t.wrap)i.wrap=t.wrap;i.textContent=t.text;return i}function O(t,i=false){t.style.flexShrink=i?"1":"0";t.style.minWidth=i?"0":"max-content";t.style.maxWidth=i?"100%":"none";t.style.whiteSpace=i?"pre-line":"";t.style.padding="0 var(--ds-control-label-inset, var(--dimension-space-025))";t.style.color="var(--color-foreground-primary)"}const P=t(class t extends i{constructor(t){super();if(t!==false){this.__registerHost()}this.size="md";this.side="top";this.align="center";this.sideOffset=a.space050;this.alignOffset=0;this.delay=l.animationDelayMedium3;this.shortcutKeyPosition="end";this.describedBy=true;this.wrapLabel=false;this.tooltipId=`ds-tooltip-${++x}`;this.delayTimer=null;this.closeTimer=null;this.anchor=null;this.popupEl=null;this.anchorObserver=null;this.didLoad=false;this.position=new e({getAnchor:()=>this.anchor,getPopup:()=>this.popupEl,getOwnerDocument:()=>this.el.ownerDocument,measure:(t,i)=>({anchorRect:t.getBoundingClientRect(),popupWidth:i.offsetWidth||this.tooltipFallbackWidthPx,popupHeight:i.offsetHeight||this.tooltipFallbackHeightPx,side:this.side,align:this.align,sideOffsetPx:this.sideOffsetPx,alignOffsetPx:this.alignOffsetPx,viewportPadPx:this.viewportPadPx,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight,collisionRect:r(t,this.boundary)}),apply:({x:t,y:i,resolvedSide:o})=>{if(!this.popupEl)return;this.popupEl.dataset.side=o;this.popupEl.style.transform=`translate(${Math.round(t)}px, ${Math.round(i)}px)`},liveUpdate:"frame",observeResize:true});this.skipEnterAnimation=false;this.isOpen=false;this.programmaticAnchor=false;this.lastInteractionWasKeyboard=false;this.pointerEnterHandler=t=>{if(t.pointerType==="touch")return;this.show()};this.pointerLeaveHandler=t=>{if(t.pointerType==="touch")return;this.hide()};this.pointerDownHandler=t=>{this.lastInteractionWasKeyboard=false;if(t.pointerType==="touch"&&(this.isOpen||this.popupEl))this.hideInstant()};this.keyDownHandler=()=>{this.lastInteractionWasKeyboard=true};this.focusHandler=()=>{if(this.lastInteractionWasKeyboard||this.anchor?.matches(":focus-visible"))this.show()};this.blurHandler=t=>{const i=t.relatedTarget;if(i&&this.anchor?.contains(i))return;this.hide()};this.escapeHandler=t=>{if(t.key!=="Escape"||!this.isOpen)return;t.preventDefault();this.hide()};this.handleSlotChange=()=>{if(this.programmaticAnchor)return;const t=this.el.querySelector("slot");const i=t?.assignedElements?.()[0]??this.el.firstElementChild;if(i===this.anchor||i?.tagName==="SLOT")return;if(this.isOpen||this.popupEl)this.hideInstant();this.unbindAnchor();this.bindAnchor()}}connectedCallback(){if(!this.didLoad)return;this.connectAnchor()}componentDidLoad(){this.didLoad=true;this.connectAnchor()}connectAnchor(){this.bindAnchor();if(this.anchorObserver)return;this.anchorObserver=new MutationObserver((()=>this.handleSlotChange()));this.anchorObserver.observe(this.el,{childList:true})}disconnectedCallback(){if(C===this)C=null;this.anchorObserver?.disconnect();this.anchorObserver=null;this.unbindAnchor();this.clearTimers();this.destroyPopup()}onContentOrPositionChange(){if(!this.label?.trim()){if(this.isOpen||this.popupEl)this.hideInstant();return}if(!this.popupEl||!this.isOpen)return;this.renderPopupContent();this.schedulePosition()}get viewportPadPx(){return p(l.space050,l.space050)}get sideOffsetPx(){return p(this.sideOffset,l.space050)}get alignOffsetPx(){return p(this.alignOffset,0)}get hoverDelayMs(){return c(this.delay,l.animationDelayMedium3)}get instantReopenMs(){return c(l.animationDurationMedium1,l.animationDurationMedium1)}get fadeOutMs(){return h(l.motionShort3,l.animationDurationShort3)}get tooltipFallbackWidthPx(){return p(l.tooltipFallbackWidth,l.tooltipFallbackWidth)}get tooltipFallbackHeightPx(){const t=b[this.size];return p(t,t)}async presentFrom(t,i){if(i!=null)this.label=i;if(!this.label?.trim()){this.hide();return}const o=this.anchor===t;if(!o){this.unbindAnchor();this.anchor=t;this.programmaticAnchor=true;if(this.popupEl&&this.describedBy)this.linkDescribedBy()}if(this.popupEl){this.renderPopupContent();this.schedulePosition();return}if(this.delayTimer&&o)return;this.show()}async dismiss(){this.hide()}bindAnchor(){if(this.programmaticAnchor)return;const t=this.el.querySelector("slot");const i=t?.assignedElements?.()??[];const o=i[0]??this.el.firstElementChild;if(!o||o.tagName==="SLOT"||o===this.anchor)return;this.anchor=o;o.addEventListener("pointerenter",this.pointerEnterHandler);o.addEventListener("pointerleave",this.pointerLeaveHandler);o.addEventListener("pointerdown",this.pointerDownHandler);o.addEventListener("keydown",this.keyDownHandler);o.addEventListener("focusin",this.focusHandler);o.addEventListener("focusout",this.blurHandler)}unbindAnchor(){if(!this.anchor)return;this.unlinkDescribedBy();if(!this.programmaticAnchor){this.anchor.removeEventListener("pointerenter",this.pointerEnterHandler);this.anchor.removeEventListener("pointerleave",this.pointerLeaveHandler);this.anchor.removeEventListener("pointerdown",this.pointerDownHandler);this.anchor.removeEventListener("keydown",this.keyDownHandler);this.anchor.removeEventListener("focusin",this.focusHandler);this.anchor.removeEventListener("focusout",this.blurHandler)}this.anchor=null;this.programmaticAnchor=false}linkDescribedBy(){if(!this.describedBy||!this.anchor||!this.popupEl)return;const t=new Set((this.anchor.getAttribute("aria-describedby")??"").split(/\s+/).filter(Boolean));t.add(this.tooltipId);this.anchor.setAttribute("aria-describedby",Array.from(t).join(" "))}unlinkDescribedBy(){if(!this.anchor)return;const t=(this.anchor.getAttribute("aria-describedby")??"").split(/\s+/).filter((t=>t&&t!==this.tooltipId));if(t.length)this.anchor.setAttribute("aria-describedby",t.join(" "));else this.anchor.removeAttribute("aria-describedby")}clearTimers(){if(this.delayTimer){clearTimeout(this.delayTimer);this.delayTimer=null}if(this.closeTimer){clearTimeout(this.closeTimer);this.closeTimer=null}}setupOpenListeners(){this.position.observe();document.addEventListener("keydown",this.escapeHandler)}teardownOpenListeners(){this.position.unobserve();document.removeEventListener("keydown",this.escapeHandler)}destroyPopup(){this.teardownOpenListeners();this.unlinkDescribedBy();if(!this.popupEl)return;this.popupEl.remove();this.popupEl=null}schedulePosition(){if(!this.popupEl)return;const t=()=>{const t=this.popupEl?.querySelector(":scope > .tooltip-inner > ds-text");if(t instanceof i)O(t,this.wrapLabel)};requestAnimationFrame((()=>{t();this.position.update();requestAnimationFrame((()=>{t();this.position.update()}))}));this.position.observeResizeTargets()}hideInstant(){this.clearTimers();w=Date.now();if(C===this)C=null;this.destroyPopup();this.isOpen=false;this.skipEnterAnimation=false}show(){if(!this.label?.trim())return;this.clearTimers();let t=Date.now()-w<this.instantReopenMs;if(C&&C!==this){C.hideInstant();t=true}C=this;this.skipEnterAnimation=t;if(t){this.mountPopup();return}this.delayTimer=setTimeout((()=>{this.delayTimer=null;if(!this.label?.trim())return;this.mountPopup()}),this.hoverDelayMs)}hide(){this.clearTimers();if(!this.popupEl&&!this.isOpen)return;w=Date.now();if(!this.popupEl){this.isOpen=false;return}this.popupEl.classList.remove("tooltip-popup--instant");this.popupEl.classList.add("tooltip-popup--closing");if(this.fadeOutMs===0){if(C===this)C=null;this.destroyPopup();this.isOpen=false;this.skipEnterAnimation=false;return}this.closeTimer=setTimeout((()=>{this.closeTimer=null;if(C===this)C=null;this.destroyPopup();this.isOpen=false;this.skipEnterAnimation=false}),this.fadeOutMs)}mountPopup(){if(!this.popupEl){const t=document.createElement("div");t.id=this.tooltipId;t.setAttribute("role","tooltip");t.className="tooltip-popup ds-forced-colors-scope sc-ds-tooltip";Object.assign(t.style,{position:"fixed",left:"0",top:"0",zIndex:"var(--dimension-z-index-tooltip)",pointerEvents:"none"});document.body.appendChild(t);this.popupEl=t}this.setupOpenListeners();this.linkDescribedBy();this.popupEl.classList.toggle("tooltip-popup--instant",this.skipEnterAnimation);this.popupEl.classList.toggle("tooltip-popup--wrap",this.wrapLabel);this.popupEl.classList.remove("tooltip-popup--closing");this.renderPopupContent();this.schedulePosition();this.isOpen=true}renderPopupContent(){if(!this.popupEl)return;this.popupEl.classList.toggle("tooltip-popup--wrap",this.wrapLabel);const t=u[this.size];const i=this.size==="md"?"ds-control--md":this.size==="sm"?"ds-control--sm":"ds-control--xs";const o="sc-ds-tooltip";const s=document.createElement("div");s.className=`tooltip-inner ${i} ${o}`;const n=t=>{if(!this.shortcutKey||this.shortcutKeyPosition!==t)return;const i=document.createElement("span");i.className=`key-hint-group ${o}`;i.setAttribute("aria-hidden","true");for(const t of v(this.shortcutKey)){const s=document.createElement("span");const n=Array.from(t).length>1?" key-hint--wide":"";s.className=`key-hint${n} ${o}`;const e=document.createElement("span");e.className=`key-hint__label ${o}`;e.textContent=t;s.appendChild(e);i.appendChild(s)}s.appendChild(i)};n("start");const e=k({variant:t,wrap:this.wrapLabel?"wrap":"nowrap",text:this.label});O(e,this.wrapLabel);s.appendChild(e);n("end");this.popupEl.replaceChildren(s)}render(){return o(s,{key:"f01dcc0966d596cd63b69d1bbd7a24fc71ecc0dd",style:{display:"contents"}},o("slot",{key:"4b136aaa068d4f1af8852b4c6e76db59e2987a33",onSlotchange:this.handleSlotChange}))}get el(){return this}static get watchers(){return{label:[{onContentOrPositionChange:0}],size:[{onContentOrPositionChange:0}],side:[{onContentOrPositionChange:0}],align:[{onContentOrPositionChange:0}],sideOffset:[{onContentOrPositionChange:0}],alignOffset:[{onContentOrPositionChange:0}],boundary:[{onContentOrPositionChange:0}],shortcutKey:[{onContentOrPositionChange:0}],shortcutKeyPosition:[{onContentOrPositionChange:0}],wrapLabel:[{onContentOrPositionChange:0}]}}static get style(){return y()}},[262,"ds-tooltip",{label:[1],size:[1],side:[1],align:[1],sideOffset:[8,"side-offset"],alignOffset:[8,"align-offset"],boundary:[1],delay:[8],shortcutKey:[1,"shortcut-key"],shortcutKeyPosition:[1,"shortcut-key-position"],describedBy:[4,"described-by"],wrapLabel:[4,"wrap-label"],presentFrom:[64],dismiss:[64]},undefined,{label:[{onContentOrPositionChange:0}],size:[{onContentOrPositionChange:0}],side:[{onContentOrPositionChange:0}],align:[{onContentOrPositionChange:0}],sideOffset:[{onContentOrPositionChange:0}],alignOffset:[{onContentOrPositionChange:0}],boundary:[{onContentOrPositionChange:0}],shortcutKey:[{onContentOrPositionChange:0}],shortcutKeyPosition:[{onContentOrPositionChange:0}],wrapLabel:[{onContentOrPositionChange:0}]}]);function z(){if(typeof customElements==="undefined"){return}const t=["ds-tooltip","ds-text"];t.forEach((t=>{switch(t){case"ds-tooltip":if(!customElements.get(n(t))){customElements.define(n(t),P)}break;case"ds-text":if(!customElements.get(n(t))){d()}break}}))}z();export{P as T,z as d};
2
+ //# sourceMappingURL=p-CbSUyv5B.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["MODIFIER_GLYPHS","Set","MODIFIER_LABELS","alt","cmd","command","control","ctrl","option","shift","canonicalKeyLabel","label","toLowerCase","shortcutKeyLabels","shortcut","normalized","trim","includes","split","map","part","filter","Boolean","test","characters","Array","from","labels","length","has","push","join","tooltipCss","FALLBACK_HEIGHT","md","TOKEN_DEFAULTS","size400","sm","size300","xs","size200","lastDismissedAt","tooltipIdCounter","activeTooltip","createDsText","opts","el","document","createElement","as","variant","emphasis","color","wrap","textContent","text","styleTooltipLabel","wrapLabel","style","flexShrink","minWidth","maxWidth","whiteSpace","padding","Tooltip","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","size","side","align","sideOffset","TOKEN_CSS_LENGTHS","space050","alignOffset","delay","animationDelayMedium3","shortcutKeyPosition","describedBy","tooltipId","delayTimer","closeTimer","anchor","popupEl","anchorObserver","didLoad","position","AnchoredPositionController","getAnchor","getPopup","getOwnerDocument","ownerDocument","measure","tip","anchorRect","getBoundingClientRect","popupWidth","offsetWidth","tooltipFallbackWidthPx","popupHeight","offsetHeight","tooltipFallbackHeightPx","sideOffsetPx","alignOffsetPx","viewportPadPx","viewportWidth","window","innerWidth","viewportHeight","innerHeight","collisionRect","resolveAnchoredOverlayBoundaryRect","boundary","apply","x","y","resolvedSide","dataset","transform","Math","round","liveUpdate","observeResize","skipEnterAnimation","isOpen","programmaticAnchor","lastInteractionWasKeyboard","pointerEnterHandler","event","pointerType","show","pointerLeaveHandler","hide","pointerDownHandler","hideInstant","keyDownHandler","focusHandler","matches","blurHandler","e","next","relatedTarget","contains","escapeHandler","key","preventDefault","handleSlotChange","slot","querySelector","assignedElements","firstElementChild","tagName","unbindAnchor","bindAnchor","connectedCallback","connectAnchor","componentDidLoad","MutationObserver","observe","childList","disconnectedCallback","disconnect","clearTimers","destroyPopup","onContentOrPositionChange","renderPopupContent","schedulePosition","resolveCssLengthPx","hoverDelayMs","resolveCssTimeMs","instantReopenMs","animationDurationMedium1","fadeOutMs","resolveMotionTimeMs","motionShort3","animationDurationShort3","tooltipFallbackWidth","token","presentFrom","sameAnchor","linkDescribedBy","dismiss","slotted","child","addEventListener","unlinkDescribedBy","removeEventListener","ids","getAttribute","add","setAttribute","id","removeAttribute","clearTimeout","setupOpenListeners","teardownOpenListeners","unobserve","remove","reapplyLabelStyles","requestAnimationFrame","update","observeResizeTargets","Date","now","instant","mountPopup","setTimeout","classList","className","Object","assign","left","top","zIndex","pointerEvents","body","appendChild","toggle","textVariant","CONTROL_TEXT_VARIANT","density","sc","inner","appendShortcut","shortcutKey","group","hint","wide","replaceChildren","render","h","Host","display","onSlotchange"],"sources":["src/wc/utils/shortcut-key.ts","src/wc/components/Tooltip/Tooltip.css?tag=ds-tooltip&encapsulation=scoped","src/wc/components/Tooltip/Tooltip.tsx"],"sourcesContent":["const MODIFIER_GLYPHS = new Set(['⌘', '⇧', '⌥', '⌃']);\nconst MODIFIER_LABELS: Readonly<Record<string, string>> = {\n alt: '⌥',\n cmd: '⌘',\n command: '⌘',\n control: '⌃',\n ctrl: '⌃',\n option: '⌥',\n shift: '⇧',\n};\n\nfunction canonicalKeyLabel(label: string): string {\n return MODIFIER_LABELS[label.toLowerCase()] ?? label;\n}\n\n/** Split a shortcut chord into the labels rendered on individual keycaps. */\nexport function shortcutKeyLabels(shortcut: string): string[] {\n const normalized = shortcut.trim();\n if (!normalized) return [];\n\n if (normalized.includes('+')) {\n return normalized\n .split('+')\n .map(part => part.trim())\n .filter(Boolean)\n .map(canonicalKeyLabel);\n }\n\n if (/\\s/.test(normalized)) {\n return normalized.split(/\\s+/).filter(Boolean).map(canonicalKeyLabel);\n }\n\n const characters = Array.from(normalized);\n const labels: string[] = [];\n while (characters.length > 1 && MODIFIER_GLYPHS.has(characters[0])) {\n labels.push(characters.shift()!);\n }\n labels.push(characters.join(''));\n return labels;\n}\n","@import '../../utils/radius.css';\n@import '../../utils/control-density.css';\n@import '../../utils/key-hint.css';\n@import '../../utils/forced-colors.css';\n\n.tooltip-popup {\n box-sizing: border-box;\n background-color: var(--color-background-primary);\n border-radius: var(--ds-radius-tooltip-control, var(--dimension-radius-025));\n box-shadow: var(--effect-elevation-elevated-floating);\n white-space: nowrap;\n pointer-events: none;\n animation: tooltipFadeIn var(--effect-motion-short-2) forwards;\n will-change: transform;\n backface-visibility: hidden;\n}\n\n/* Warm handoff between nearby triggers — no enter fade (avoids 20–100ms lag). */\n.tooltip-popup--instant {\n animation: none;\n opacity: 1;\n}\n\n.tooltip-popup--closing {\n animation: tooltipFadeOut var(--effect-motion-short-3) forwards;\n}\n\n/* Density: md / sm / xs via `.ds-control--*` on `.tooltip-inner`. */\n.tooltip-inner {\n box-sizing: border-box;\n height: var(--ds-control-height, var(--dimension-size-400));\n display: flex;\n align-items: center;\n gap: var(--ds-control-gap, var(--dimension-space-050));\n padding: 0 var(--ds-control-padding-inline, var(--dimension-space-075));\n}\n\n/*\n * Label layout lives on ds-text (metric-box + control label-inset).\n * NOTE: Stencil scopes this to `ds-text.sc-ds-tooltip`, but portaled\n * createElement ds-text loses that class when Text's <Host class> renders.\n * `renderPopupContent` therefore also sets these as inline styles.\n */\n.tooltip-inner > ds-text {\n flex-shrink: 0;\n min-width: max-content;\n max-width: none;\n padding: 0 var(--ds-control-label-inset, var(--dimension-space-025));\n color: var(--color-foreground-primary);\n}\n\n.tooltip-popup--wrap {\n white-space: normal;\n max-inline-size: var(--dimension-panel-width-xs);\n}\n\n.tooltip-popup--wrap .tooltip-inner {\n height: auto;\n min-height: var(--ds-control-height, var(--dimension-size-400));\n padding-block: var(--dimension-space-050);\n align-items: flex-start;\n}\n\n.tooltip-popup--wrap .tooltip-inner > ds-text {\n flex: 1 1 auto;\n min-width: 0;\n max-width: 100%;\n white-space: pre-line;\n}\n\n@keyframes tooltipFadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes tooltipFadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .tooltip-popup,\n .tooltip-popup--instant {\n animation: none;\n opacity: 1;\n }\n\n .tooltip-popup--closing {\n animation: none;\n opacity: 0;\n }\n}\n\n@media (forced-colors: active) {\n .tooltip-popup {\n box-shadow: none;\n outline: var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);\n outline-offset: calc(-1 * var(--dimension-stroke-width-012));\n }\n}\n","import { Component, Prop, Element, Method, Watch, h, Host } from '@stencil/core';\nimport {\n CONTROL_TEXT_VARIANT,\n resolveCssLengthPx,\n resolveCssTimeMs,\n resolveMotionTimeMs,\n TOKEN_CSS_LENGTHS,\n TOKEN_DEFAULTS,\n} from '../../utils';\nimport type { TextVariant } from '../Text/text-types';\nimport { shortcutKeyLabels } from '../../utils/shortcut-key';\nimport { AnchoredPositionController } from '../../utils/anchored-position-controller';\nimport {\n resolveAnchoredOverlayBoundaryRect,\n type AnchoredOverlayBoundary,\n} from '../../utils/anchored-overlay-boundary';\n// Side-effect: register `ds-text` — the portal builds it via createElement, not JSX.\nimport '../Text/Text';\n\nexport type TooltipSide = 'top' | 'right' | 'bottom' | 'left';\nexport type TooltipAlign = 'start' | 'center' | 'end';\nexport type TooltipSize = 'md' | 'sm' | 'xs';\n\nconst FALLBACK_HEIGHT: Record<TooltipSize, string> = {\n md: TOKEN_DEFAULTS.size400,\n sm: TOKEN_DEFAULTS.size300,\n xs: TOKEN_DEFAULTS.size200,\n};\n\nlet lastDismissedAt = 0;\nlet tooltipIdCounter = 0;\n/** Currently open tooltip — force-cleared on warm handoff so tips don't cross-fade. */\nlet activeTooltip: Tooltip | null = null;\n\ntype DsTextEl = HTMLElement & {\n as: string;\n variant: TextVariant;\n emphasis: boolean;\n color: string;\n wrap: string;\n};\n\nfunction createDsText(opts: {\n variant: TextVariant;\n emphasis?: boolean;\n color?: string;\n wrap?: 'wrap' | 'nowrap' | 'balance' | 'pretty';\n text: string;\n}): DsTextEl {\n const el = document.createElement('ds-text') as DsTextEl;\n el.as = 'span';\n el.variant = opts.variant;\n el.emphasis = opts.emphasis ?? false;\n el.color = opts.color ?? 'inherit';\n if (opts.wrap) el.wrap = opts.wrap;\n el.textContent = opts.text;\n return el;\n}\n\n/**\n * Control-density label styles for portaled ds-text.\n * Scoped CSS requires `sc-ds-tooltip` on the host, but Text's `<Host class>`\n * overwrites imperative className — so these must be inline to stick.\n */\nfunction styleTooltipLabel(el: HTMLElement, wrapLabel = false) {\n el.style.flexShrink = wrapLabel ? '1' : '0';\n el.style.minWidth = wrapLabel ? '0' : 'max-content';\n el.style.maxWidth = wrapLabel ? '100%' : 'none';\n el.style.whiteSpace = wrapLabel ? 'pre-line' : '';\n el.style.padding = '0 var(--ds-control-label-inset, var(--dimension-space-025))';\n el.style.color = 'var(--color-foreground-primary)';\n}\n\n/**\n * Imperative body portal for the popup.\n * Stencil must not own the portaled node — moving a VDOM child to `document.body`\n * causes recreate → re-portal → @State loops that freeze the page.\n */\n@Component({\n tag: 'ds-tooltip',\n styleUrl: 'Tooltip.css',\n scoped: true,\n})\nexport class Tooltip {\n @Element() el!: HTMLElement;\n\n /**\n * Tooltip text. Empty/whitespace skips show — useful when the wrapper must stay\n * mounted for layout/animation stability (e.g. PanelNav expand/collapse).\n */\n @Prop() label!: string;\n\n /** Control density (height, padding, type). */\n @Prop() size: TooltipSize = 'md';\n\n @Prop() side: TooltipSide = 'top';\n @Prop() align: TooltipAlign = 'center';\n /** Gap between anchor and tooltip — number (px) or TokoMo length. */\n @Prop() sideOffset: number | string = TOKEN_CSS_LENGTHS.space050;\n /** Cross-axis offset — number (px) or TokoMo length. */\n @Prop() alignOffset: number | string = 0;\n /** Explicit collision owner, `viewport`, or the nearest data-ds-overlay-boundary ancestor. */\n @Prop() boundary: AnchoredOverlayBoundary | undefined;\n /**\n * Hover show delay before the tooltip appears.\n * Default: `--effect-animation-delay-medium-3` (1000ms). Accepts a number (ms)\n * or a TokoMo time token / `var(--effect-animation-delay-*)`. Applies to the\n * initial hover/focus show only — after a recent dismiss, reopen is instant.\n * Prefer the default; override only for denser chrome or rare/destructive actions.\n */\n @Prop() delay: number | string = TOKEN_DEFAULTS.animationDelayMedium3;\n @Prop() shortcutKey: string | undefined;\n @Prop() shortcutKeyPosition: 'start' | 'end' = 'end';\n /**\n * Link the trigger with aria-describedby while the popup is open. Disable when\n * the label is already in the DOM, such as a truncated table cell.\n */\n @Prop() describedBy = true;\n /** Allow wrapping at a panel-xs max width and preserve explicit line breaks. */\n @Prop() wrapLabel = false;\n\n private tooltipId = `ds-tooltip-${++tooltipIdCounter}`;\n private delayTimer: ReturnType<typeof setTimeout> | null = null;\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\n private anchor: HTMLElement | null = null;\n private popupEl: HTMLElement | null = null;\n private anchorObserver: MutationObserver | null = null;\n private didLoad = false;\n private readonly position = new AnchoredPositionController({\n getAnchor: () => this.anchor,\n getPopup: () => this.popupEl,\n getOwnerDocument: () => this.el.ownerDocument,\n measure: (anchor, tip) => ({\n anchorRect: anchor.getBoundingClientRect(),\n // Fall back to token metrics until `ds-text` upgrades and reports a width.\n popupWidth: tip.offsetWidth || this.tooltipFallbackWidthPx,\n popupHeight: tip.offsetHeight || this.tooltipFallbackHeightPx,\n side: this.side,\n align: this.align,\n sideOffsetPx: this.sideOffsetPx,\n alignOffsetPx: this.alignOffsetPx,\n viewportPadPx: this.viewportPadPx,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(anchor, this.boundary),\n }),\n apply: ({ x, y, resolvedSide }) => {\n if (!this.popupEl) return;\n this.popupEl.dataset.side = resolvedSide;\n this.popupEl.style.transform = `translate(${Math.round(x)}px, ${Math.round(y)}px)`;\n },\n liveUpdate: 'frame',\n observeResize: true,\n });\n private skipEnterAnimation = false;\n private isOpen = false;\n private programmaticAnchor = false;\n private lastInteractionWasKeyboard = false;\n private pointerEnterHandler = (event: PointerEvent) => {\n if (event.pointerType === 'touch') return;\n this.show();\n };\n private pointerLeaveHandler = (event: PointerEvent) => {\n if (event.pointerType === 'touch') return;\n this.hide();\n };\n private pointerDownHandler = (event: PointerEvent) => {\n this.lastInteractionWasKeyboard = false;\n if (event.pointerType === 'touch' && (this.isOpen || this.popupEl)) this.hideInstant();\n };\n private keyDownHandler = () => {\n this.lastInteractionWasKeyboard = true;\n };\n /** focusin/focusout so nested focus targets (e.g. ds-button-* inner button) still open the tip. */\n private focusHandler = () => {\n if (this.lastInteractionWasKeyboard || this.anchor?.matches(':focus-visible')) this.show();\n };\n private blurHandler: (e: FocusEvent) => void = e => {\n const next = e.relatedTarget as Node | null;\n if (next && this.anchor?.contains(next)) return;\n this.hide();\n };\n private escapeHandler = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || !this.isOpen) return;\n event.preventDefault();\n this.hide();\n };\n\n connectedCallback() {\n if (!this.didLoad) return;\n this.connectAnchor();\n }\n\n componentDidLoad() {\n this.didLoad = true;\n this.connectAnchor();\n }\n\n private connectAnchor() {\n this.bindAnchor();\n if (this.anchorObserver) return;\n this.anchorObserver = new MutationObserver(() => this.handleSlotChange());\n this.anchorObserver.observe(this.el, { childList: true });\n }\n\n disconnectedCallback() {\n if (activeTooltip === this) activeTooltip = null;\n this.anchorObserver?.disconnect();\n this.anchorObserver = null;\n this.unbindAnchor();\n this.clearTimers();\n this.destroyPopup();\n }\n\n @Watch('label')\n @Watch('size')\n @Watch('side')\n @Watch('align')\n @Watch('sideOffset')\n @Watch('alignOffset')\n @Watch('boundary')\n @Watch('shortcutKey')\n @Watch('shortcutKeyPosition')\n @Watch('wrapLabel')\n onContentOrPositionChange() {\n if (!this.label?.trim()) {\n if (this.isOpen || this.popupEl) this.hideInstant();\n return;\n }\n if (!this.popupEl || !this.isOpen) return;\n this.renderPopupContent();\n this.schedulePosition();\n }\n\n private get viewportPadPx(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n }\n\n private get sideOffsetPx(): number {\n return resolveCssLengthPx(this.sideOffset, TOKEN_DEFAULTS.space050);\n }\n\n private get alignOffsetPx(): number {\n return resolveCssLengthPx(this.alignOffset, 0);\n }\n\n private get hoverDelayMs(): number {\n return resolveCssTimeMs(this.delay, TOKEN_DEFAULTS.animationDelayMedium3);\n }\n\n private get instantReopenMs(): number {\n return resolveCssTimeMs(\n TOKEN_DEFAULTS.animationDurationMedium1,\n TOKEN_DEFAULTS.animationDurationMedium1\n );\n }\n\n private get fadeOutMs(): number {\n return resolveMotionTimeMs(TOKEN_DEFAULTS.motionShort3, TOKEN_DEFAULTS.animationDurationShort3);\n }\n\n private get tooltipFallbackWidthPx(): number {\n return resolveCssLengthPx(\n TOKEN_DEFAULTS.tooltipFallbackWidth,\n TOKEN_DEFAULTS.tooltipFallbackWidth\n );\n }\n\n private get tooltipFallbackHeightPx(): number {\n const token = FALLBACK_HEIGHT[this.size];\n return resolveCssLengthPx(token, token);\n }\n\n /**\n * Present against an external anchor the host already measured.\n * Does not bind hover or focus on that anchor — the owner drives show/hide.\n */\n @Method()\n async presentFrom(anchor: HTMLElement, label?: string) {\n if (label != null) this.label = label;\n if (!this.label?.trim()) {\n this.hide();\n return;\n }\n const sameAnchor = this.anchor === anchor;\n if (!sameAnchor) {\n this.unbindAnchor();\n this.anchor = anchor;\n this.programmaticAnchor = true;\n if (this.popupEl && this.describedBy) this.linkDescribedBy();\n }\n if (this.popupEl) {\n this.renderPopupContent();\n this.schedulePosition();\n return;\n }\n if (this.delayTimer && sameAnchor) return;\n this.show();\n }\n\n /** Dismiss a popup opened through presentFrom or the slotted trigger. */\n @Method()\n async dismiss() {\n this.hide();\n }\n\n private bindAnchor() {\n if (this.programmaticAnchor) return;\n const slot = this.el.querySelector('slot') as HTMLSlotElement | null;\n const slotted = slot?.assignedElements?.() ?? [];\n const child = (slotted[0] ?? this.el.firstElementChild) as HTMLElement | null;\n if (!child || child.tagName === 'SLOT' || child === this.anchor) return;\n this.anchor = child;\n child.addEventListener('pointerenter', this.pointerEnterHandler);\n child.addEventListener('pointerleave', this.pointerLeaveHandler);\n child.addEventListener('pointerdown', this.pointerDownHandler);\n child.addEventListener('keydown', this.keyDownHandler);\n child.addEventListener('focusin', this.focusHandler);\n child.addEventListener('focusout', this.blurHandler);\n }\n\n private unbindAnchor() {\n if (!this.anchor) return;\n this.unlinkDescribedBy();\n if (!this.programmaticAnchor) {\n this.anchor.removeEventListener('pointerenter', this.pointerEnterHandler);\n this.anchor.removeEventListener('pointerleave', this.pointerLeaveHandler);\n this.anchor.removeEventListener('pointerdown', this.pointerDownHandler);\n this.anchor.removeEventListener('keydown', this.keyDownHandler);\n this.anchor.removeEventListener('focusin', this.focusHandler);\n this.anchor.removeEventListener('focusout', this.blurHandler);\n }\n this.anchor = null;\n this.programmaticAnchor = false;\n }\n\n private linkDescribedBy() {\n if (!this.describedBy || !this.anchor || !this.popupEl) return;\n const ids = new Set(\n (this.anchor.getAttribute('aria-describedby') ?? '').split(/\\s+/).filter(Boolean)\n );\n ids.add(this.tooltipId);\n this.anchor.setAttribute('aria-describedby', Array.from(ids).join(' '));\n }\n\n private unlinkDescribedBy() {\n if (!this.anchor) return;\n const ids = (this.anchor.getAttribute('aria-describedby') ?? '')\n .split(/\\s+/)\n .filter(id => id && id !== this.tooltipId);\n if (ids.length) this.anchor.setAttribute('aria-describedby', ids.join(' '));\n else this.anchor.removeAttribute('aria-describedby');\n }\n\n private handleSlotChange = () => {\n if (this.programmaticAnchor) return;\n const slot = this.el.querySelector('slot') as HTMLSlotElement | null;\n const next = (slot?.assignedElements?.()[0] ?? this.el.firstElementChild) as HTMLElement | null;\n if (next === this.anchor || next?.tagName === 'SLOT') return;\n if (this.isOpen || this.popupEl) this.hideInstant();\n this.unbindAnchor();\n this.bindAnchor();\n };\n\n private clearTimers() {\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = null;\n }\n if (this.closeTimer) {\n clearTimeout(this.closeTimer);\n this.closeTimer = null;\n }\n }\n\n private setupOpenListeners() {\n // Binds scroll/resize + the resize observer; placement itself is scheduled\n // by schedulePosition() so the label restyle stays interleaved.\n this.position.observe();\n document.addEventListener('keydown', this.escapeHandler);\n }\n\n private teardownOpenListeners() {\n this.position.unobserve();\n document.removeEventListener('keydown', this.escapeHandler);\n }\n\n private destroyPopup() {\n this.teardownOpenListeners();\n this.unlinkDescribedBy();\n if (!this.popupEl) return;\n this.popupEl.remove();\n this.popupEl = null;\n }\n\n /**\n * Position after `ds-text` upgrades and lays out. Measuring synchronously in\n * `mountPopup` reads a collapsed/fallback width and places left/right tips wrong.\n */\n private schedulePosition() {\n if (!this.popupEl) return;\n\n const reapplyLabelStyles = () => {\n const label = this.popupEl?.querySelector(':scope > .tooltip-inner > ds-text');\n if (label instanceof HTMLElement) styleTooltipLabel(label, this.wrapLabel);\n };\n\n requestAnimationFrame(() => {\n reapplyLabelStyles();\n this.position.update();\n requestAnimationFrame(() => {\n reapplyLabelStyles();\n this.position.update();\n });\n });\n\n // The popup remounts on every show, so re-target the observer bound in start().\n this.position.observeResizeTargets();\n }\n\n /** Drop the open tip immediately (warm handoff to another tooltip). */\n private hideInstant() {\n this.clearTimers();\n lastDismissedAt = Date.now();\n if (activeTooltip === this) activeTooltip = null;\n this.destroyPopup();\n this.isOpen = false;\n this.skipEnterAnimation = false;\n }\n\n private show() {\n // Empty label = wrapper present for DOM stability (e.g. PanelNav expand/collapse)\n // but no tip should appear.\n if (!this.label?.trim()) return;\n this.clearTimers();\n let instant = Date.now() - lastDismissedAt < this.instantReopenMs;\n if (activeTooltip && activeTooltip !== this) {\n activeTooltip.hideInstant();\n instant = true;\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- module singleton tracks the active instance\n activeTooltip = this;\n this.skipEnterAnimation = instant;\n if (instant) {\n this.mountPopup();\n return;\n }\n this.delayTimer = setTimeout(() => {\n this.delayTimer = null;\n if (!this.label?.trim()) return;\n this.mountPopup();\n }, this.hoverDelayMs);\n }\n\n private hide() {\n this.clearTimers();\n if (!this.popupEl && !this.isOpen) return;\n lastDismissedAt = Date.now();\n if (!this.popupEl) {\n this.isOpen = false;\n return;\n }\n this.popupEl.classList.remove('tooltip-popup--instant');\n this.popupEl.classList.add('tooltip-popup--closing');\n if (this.fadeOutMs === 0) {\n if (activeTooltip === this) activeTooltip = null;\n this.destroyPopup();\n this.isOpen = false;\n this.skipEnterAnimation = false;\n return;\n }\n this.closeTimer = setTimeout(() => {\n this.closeTimer = null;\n if (activeTooltip === this) activeTooltip = null;\n this.destroyPopup();\n this.isOpen = false;\n this.skipEnterAnimation = false;\n }, this.fadeOutMs);\n }\n\n private mountPopup() {\n if (!this.popupEl) {\n const tip = document.createElement('div');\n tip.id = this.tooltipId;\n tip.setAttribute('role', 'tooltip');\n // `sc-ds-tooltip` is required for Stencil scoped CSS to match outside the host.\n tip.className = 'tooltip-popup ds-forced-colors-scope sc-ds-tooltip';\n Object.assign(tip.style, {\n position: 'fixed',\n left: '0',\n top: '0',\n zIndex: 'var(--dimension-z-index-tooltip)',\n pointerEvents: 'none',\n });\n document.body.appendChild(tip);\n this.popupEl = tip;\n }\n\n this.setupOpenListeners();\n this.linkDescribedBy();\n this.popupEl.classList.toggle('tooltip-popup--instant', this.skipEnterAnimation);\n this.popupEl.classList.toggle('tooltip-popup--wrap', this.wrapLabel);\n this.popupEl.classList.remove('tooltip-popup--closing');\n this.renderPopupContent();\n this.schedulePosition();\n this.isOpen = true;\n }\n\n private renderPopupContent() {\n if (!this.popupEl) return;\n this.popupEl.classList.toggle('tooltip-popup--wrap', this.wrapLabel);\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const density =\n this.size === 'md'\n ? 'ds-control--md'\n : this.size === 'sm'\n ? 'ds-control--sm'\n : 'ds-control--xs';\n // Every layout node needs `sc-ds-tooltip` so scoped selectors (`.foo.sc-ds-tooltip`) match.\n const sc = 'sc-ds-tooltip';\n\n const inner = document.createElement('div');\n inner.className = `tooltip-inner ${density} ${sc}`;\n\n const appendShortcut = (position: 'start' | 'end') => {\n if (!this.shortcutKey || this.shortcutKeyPosition !== position) return;\n const group = document.createElement('span');\n group.className = `key-hint-group ${sc}`;\n group.setAttribute('aria-hidden', 'true');\n\n for (const label of shortcutKeyLabels(this.shortcutKey)) {\n const hint = document.createElement('span');\n const wide = Array.from(label).length > 1 ? ' key-hint--wide' : '';\n hint.className = `key-hint${wide} ${sc}`;\n const text = document.createElement('span');\n text.className = `key-hint__label ${sc}`;\n text.textContent = label;\n hint.appendChild(text);\n group.appendChild(hint);\n }\n inner.appendChild(group);\n };\n\n appendShortcut('start');\n\n // ds-text is the layout box (metric-box + 2px control label-inset).\n // Inline styles required — see styleTooltipLabel.\n const label = createDsText({\n variant: textVariant,\n wrap: this.wrapLabel ? 'wrap' : 'nowrap',\n text: this.label,\n });\n styleTooltipLabel(label, this.wrapLabel);\n inner.appendChild(label);\n\n appendShortcut('end');\n\n this.popupEl.replaceChildren(inner);\n }\n\n render() {\n return (\n <Host style={{ display: 'contents' }}>\n <slot onSlotchange={this.handleSlotChange} />\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["MODIFIER_GLYPHS","Set","MODIFIER_LABELS","alt","cmd","command","control","ctrl","option","shift","canonicalKeyLabel","label","toLowerCase","shortcutKeyLabels","shortcut","normalized","trim","includes","split","map","part","filter","Boolean","test","characters","Array","from","labels","length","has","push","join","tooltipCss","FALLBACK_HEIGHT","md","TOKEN_DEFAULTS","size400","sm","size300","xs","size200","lastDismissedAt","tooltipIdCounter","activeTooltip","createDsText","opts","el","document","createElement","as","variant","emphasis","color","wrap","textContent","text","styleTooltipLabel","wrapLabel","style","flexShrink","minWidth","maxWidth","whiteSpace","padding","Tooltip","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","size","side","align","sideOffset","TOKEN_CSS_LENGTHS","space050","alignOffset","delay","animationDelayMedium3","shortcutKeyPosition","describedBy","tooltipId","delayTimer","closeTimer","anchor","popupEl","anchorObserver","didLoad","position","AnchoredPositionController","getAnchor","getPopup","getOwnerDocument","ownerDocument","measure","tip","anchorRect","getBoundingClientRect","popupWidth","offsetWidth","tooltipFallbackWidthPx","popupHeight","offsetHeight","tooltipFallbackHeightPx","sideOffsetPx","alignOffsetPx","viewportPadPx","viewportWidth","window","innerWidth","viewportHeight","innerHeight","collisionRect","resolveAnchoredOverlayBoundaryRect","boundary","apply","x","y","resolvedSide","dataset","transform","Math","round","liveUpdate","observeResize","skipEnterAnimation","isOpen","programmaticAnchor","lastInteractionWasKeyboard","pointerEnterHandler","event","pointerType","show","pointerLeaveHandler","hide","pointerDownHandler","hideInstant","keyDownHandler","focusHandler","matches","blurHandler","e","next","relatedTarget","contains","escapeHandler","key","preventDefault","handleSlotChange","slot","querySelector","assignedElements","firstElementChild","tagName","unbindAnchor","bindAnchor","connectedCallback","connectAnchor","componentDidLoad","MutationObserver","observe","childList","disconnectedCallback","disconnect","clearTimers","destroyPopup","onContentOrPositionChange","renderPopupContent","schedulePosition","resolveCssLengthPx","hoverDelayMs","resolveCssTimeMs","instantReopenMs","animationDurationMedium1","fadeOutMs","resolveMotionTimeMs","motionShort3","animationDurationShort3","tooltipFallbackWidth","token","presentFrom","sameAnchor","linkDescribedBy","dismiss","slotted","child","addEventListener","unlinkDescribedBy","removeEventListener","ids","getAttribute","add","setAttribute","id","removeAttribute","clearTimeout","setupOpenListeners","teardownOpenListeners","unobserve","remove","reapplyLabelStyles","requestAnimationFrame","update","observeResizeTargets","Date","now","instant","mountPopup","setTimeout","classList","className","Object","assign","left","top","zIndex","pointerEvents","body","appendChild","toggle","textVariant","CONTROL_TEXT_VARIANT","density","sc","inner","appendShortcut","shortcutKey","group","hint","wide","replaceChildren","render","h","Host","display","onSlotchange"],"sources":["src/wc/utils/shortcut-key.ts","src/wc/components/Tooltip/Tooltip.css?tag=ds-tooltip&encapsulation=scoped","src/wc/components/Tooltip/Tooltip.tsx"],"sourcesContent":["const MODIFIER_GLYPHS = new Set(['⌘', '⇧', '⌥', '⌃']);\nconst MODIFIER_LABELS: Readonly<Record<string, string>> = {\n alt: '⌥',\n cmd: '⌘',\n command: '⌘',\n control: '⌃',\n ctrl: '⌃',\n option: '⌥',\n shift: '⇧',\n};\n\nfunction canonicalKeyLabel(label: string): string {\n return MODIFIER_LABELS[label.toLowerCase()] ?? label;\n}\n\n/** Split a shortcut chord into the labels rendered on individual keycaps. */\nexport function shortcutKeyLabels(shortcut: string): string[] {\n const normalized = shortcut.trim();\n if (!normalized) return [];\n\n if (normalized.includes('+')) {\n return normalized\n .split('+')\n .map(part => part.trim())\n .filter(Boolean)\n .map(canonicalKeyLabel);\n }\n\n if (/\\s/.test(normalized)) {\n return normalized.split(/\\s+/).filter(Boolean).map(canonicalKeyLabel);\n }\n\n const characters = Array.from(normalized);\n const labels: string[] = [];\n while (characters.length > 1 && MODIFIER_GLYPHS.has(characters[0])) {\n labels.push(characters.shift()!);\n }\n labels.push(characters.join(''));\n return labels;\n}\n","@import '../../utils/radius.css';\n@import '../../utils/control-density.css';\n@import '../../utils/key-hint.css';\n@import '../../utils/forced-colors.css';\n\n.tooltip-popup {\n box-sizing: border-box;\n background-color: var(--color-background-primary);\n border-radius: var(--ds-radius-tooltip-control, var(--dimension-radius-025));\n box-shadow: var(--effect-elevation-elevated-floating);\n white-space: nowrap;\n pointer-events: none;\n animation: tooltipFadeIn var(--effect-motion-short-2) forwards;\n will-change: transform;\n backface-visibility: hidden;\n}\n\n/* Warm handoff between nearby triggers — no enter fade (avoids 20–100ms lag). */\n.tooltip-popup--instant {\n animation: none;\n opacity: 1;\n}\n\n.tooltip-popup--closing {\n animation: tooltipFadeOut var(--effect-motion-short-3) forwards;\n}\n\n/* Density: md / sm / xs via `.ds-control--*` on `.tooltip-inner`. */\n.tooltip-inner {\n box-sizing: border-box;\n height: var(--ds-control-height, var(--dimension-size-400));\n display: flex;\n align-items: center;\n gap: var(--ds-control-gap, var(--dimension-space-050));\n padding: 0 var(--ds-control-padding-inline, var(--dimension-space-075));\n}\n\n/*\n * Label layout lives on ds-text (metric-box + control label-inset).\n * NOTE: Stencil scopes this to `ds-text.sc-ds-tooltip`, but portaled\n * createElement ds-text loses that class when Text's <Host class> renders.\n * `renderPopupContent` therefore also sets these as inline styles.\n */\n.tooltip-inner > ds-text {\n flex-shrink: 0;\n min-width: max-content;\n max-width: none;\n padding: 0 var(--ds-control-label-inset, var(--dimension-space-025));\n color: var(--color-foreground-primary);\n}\n\n.tooltip-popup--wrap {\n white-space: normal;\n max-inline-size: var(--dimension-panel-width-xs);\n}\n\n.tooltip-popup--wrap .tooltip-inner {\n height: auto;\n min-height: var(--ds-control-height, var(--dimension-size-400));\n padding-block: var(--dimension-space-050);\n align-items: flex-start;\n}\n\n.tooltip-popup--wrap .tooltip-inner > ds-text {\n flex: 1 1 auto;\n min-width: 0;\n max-width: 100%;\n white-space: pre-line;\n}\n\n@keyframes tooltipFadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes tooltipFadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .tooltip-popup,\n .tooltip-popup--instant {\n animation: none;\n opacity: 1;\n }\n\n .tooltip-popup--closing {\n animation: none;\n opacity: 0;\n }\n}\n\n@media (forced-colors: active) {\n .tooltip-popup {\n box-shadow: none;\n outline: var(--dimension-stroke-width-012) solid var(--ds-forced-color-content);\n outline-offset: calc(-1 * var(--dimension-stroke-width-012));\n }\n}\n","import { Component, Prop, Element, Method, Watch, h, Host } from '@stencil/core';\nimport {\n CONTROL_TEXT_VARIANT,\n resolveCssLengthPx,\n resolveCssTimeMs,\n resolveMotionTimeMs,\n TOKEN_CSS_LENGTHS,\n TOKEN_DEFAULTS,\n} from '../../utils';\nimport type { TextVariant } from '../Text/text-types';\nimport { shortcutKeyLabels } from '../../utils/shortcut-key';\nimport { AnchoredPositionController } from '../../utils/anchored-position-controller';\nimport {\n resolveAnchoredOverlayBoundaryRect,\n type AnchoredOverlayBoundary,\n} from '../../utils/anchored-overlay-boundary';\n// Side-effect: register `ds-text` — the portal builds it via createElement, not JSX.\nimport '../Text/Text';\n\nexport type TooltipSide = 'top' | 'right' | 'bottom' | 'left';\nexport type TooltipAlign = 'start' | 'center' | 'end';\nexport type TooltipSize = 'md' | 'sm' | 'xs';\n\nconst FALLBACK_HEIGHT: Record<TooltipSize, string> = {\n md: TOKEN_DEFAULTS.size400,\n sm: TOKEN_DEFAULTS.size300,\n xs: TOKEN_DEFAULTS.size200,\n};\n\nlet lastDismissedAt = 0;\nlet tooltipIdCounter = 0;\n/** Currently open tooltip — force-cleared on warm handoff so tips don't cross-fade. */\nlet activeTooltip: Tooltip | null = null;\n\ntype DsTextEl = HTMLElement & {\n as: string;\n variant: TextVariant;\n emphasis: boolean;\n color: string;\n wrap: string;\n};\n\nfunction createDsText(opts: {\n variant: TextVariant;\n emphasis?: boolean;\n color?: string;\n wrap?: 'wrap' | 'nowrap' | 'balance' | 'pretty';\n text: string;\n}): DsTextEl {\n const el = document.createElement('ds-text') as DsTextEl;\n el.as = 'span';\n el.variant = opts.variant;\n el.emphasis = opts.emphasis ?? false;\n el.color = opts.color ?? 'inherit';\n if (opts.wrap) el.wrap = opts.wrap;\n el.textContent = opts.text;\n return el;\n}\n\n/**\n * Control-density label styles for portaled ds-text.\n * Scoped CSS requires `sc-ds-tooltip` on the host, but Text's `<Host class>`\n * overwrites imperative className — so these must be inline to stick.\n */\nfunction styleTooltipLabel(el: HTMLElement, wrapLabel = false) {\n el.style.flexShrink = wrapLabel ? '1' : '0';\n el.style.minWidth = wrapLabel ? '0' : 'max-content';\n el.style.maxWidth = wrapLabel ? '100%' : 'none';\n el.style.whiteSpace = wrapLabel ? 'pre-line' : '';\n el.style.padding = '0 var(--ds-control-label-inset, var(--dimension-space-025))';\n el.style.color = 'var(--color-foreground-primary)';\n}\n\n/**\n * Imperative body portal for the popup.\n * Stencil must not own the portaled node — moving a VDOM child to `document.body`\n * causes recreate → re-portal → @State loops that freeze the page.\n */\n@Component({\n tag: 'ds-tooltip',\n styleUrl: 'Tooltip.css',\n scoped: true,\n})\nexport class Tooltip {\n @Element() el!: HTMLElement;\n\n /**\n * Tooltip text. Empty/whitespace skips show — useful when the wrapper must stay\n * mounted for layout/animation stability (e.g. PanelNav expand/collapse).\n */\n @Prop() label!: string;\n\n /** Control density (height, padding, type). */\n @Prop() size: TooltipSize = 'md';\n\n @Prop() side: TooltipSide = 'top';\n @Prop() align: TooltipAlign = 'center';\n /** Gap between anchor and tooltip — number (px) or TokoMo length. */\n @Prop() sideOffset: number | string = TOKEN_CSS_LENGTHS.space050;\n /** Cross-axis offset — number (px) or TokoMo length. */\n @Prop() alignOffset: number | string = 0;\n /** Explicit collision owner, `viewport`, or the nearest data-ds-overlay-boundary ancestor. */\n @Prop() boundary: AnchoredOverlayBoundary | undefined;\n /**\n * Hover show delay before the tooltip appears.\n * Default: `--effect-animation-delay-medium-3` (1000ms). Accepts a number (ms)\n * or a TokoMo time token / `var(--effect-animation-delay-*)`. Applies to the\n * initial hover/focus show only — after a recent dismiss, reopen is instant.\n * Prefer the default; override only for denser chrome or rare/destructive actions.\n */\n @Prop() delay: number | string = TOKEN_DEFAULTS.animationDelayMedium3;\n @Prop() shortcutKey: string | undefined;\n @Prop() shortcutKeyPosition: 'start' | 'end' = 'end';\n /**\n * Link the trigger with aria-describedby while the popup is open. Disable when\n * the label is already in the DOM, such as a truncated table cell.\n */\n @Prop() describedBy = true;\n /** Allow wrapping at a panel-xs max width and preserve explicit line breaks. */\n @Prop() wrapLabel = false;\n\n private tooltipId = `ds-tooltip-${++tooltipIdCounter}`;\n private delayTimer: ReturnType<typeof setTimeout> | null = null;\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\n private anchor: HTMLElement | null = null;\n private popupEl: HTMLElement | null = null;\n private anchorObserver: MutationObserver | null = null;\n private didLoad = false;\n private readonly position = new AnchoredPositionController({\n getAnchor: () => this.anchor,\n getPopup: () => this.popupEl,\n getOwnerDocument: () => this.el.ownerDocument,\n measure: (anchor, tip) => ({\n anchorRect: anchor.getBoundingClientRect(),\n // Fall back to token metrics until `ds-text` upgrades and reports a width.\n popupWidth: tip.offsetWidth || this.tooltipFallbackWidthPx,\n popupHeight: tip.offsetHeight || this.tooltipFallbackHeightPx,\n side: this.side,\n align: this.align,\n sideOffsetPx: this.sideOffsetPx,\n alignOffsetPx: this.alignOffsetPx,\n viewportPadPx: this.viewportPadPx,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(anchor, this.boundary),\n }),\n apply: ({ x, y, resolvedSide }) => {\n if (!this.popupEl) return;\n this.popupEl.dataset.side = resolvedSide;\n this.popupEl.style.transform = `translate(${Math.round(x)}px, ${Math.round(y)}px)`;\n },\n liveUpdate: 'frame',\n observeResize: true,\n });\n private skipEnterAnimation = false;\n private isOpen = false;\n private programmaticAnchor = false;\n private lastInteractionWasKeyboard = false;\n private pointerEnterHandler = (event: PointerEvent) => {\n if (event.pointerType === 'touch') return;\n this.show();\n };\n private pointerLeaveHandler = (event: PointerEvent) => {\n if (event.pointerType === 'touch') return;\n this.hide();\n };\n private pointerDownHandler = (event: PointerEvent) => {\n this.lastInteractionWasKeyboard = false;\n if (event.pointerType === 'touch' && (this.isOpen || this.popupEl)) this.hideInstant();\n };\n private keyDownHandler = () => {\n this.lastInteractionWasKeyboard = true;\n };\n /** focusin/focusout so nested focus targets (e.g. ds-button-* inner button) still open the tip. */\n private focusHandler = () => {\n if (this.lastInteractionWasKeyboard || this.anchor?.matches(':focus-visible')) this.show();\n };\n private blurHandler: (e: FocusEvent) => void = e => {\n const next = e.relatedTarget as Node | null;\n if (next && this.anchor?.contains(next)) return;\n this.hide();\n };\n private escapeHandler = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || !this.isOpen) return;\n event.preventDefault();\n this.hide();\n };\n\n connectedCallback() {\n if (!this.didLoad) return;\n this.connectAnchor();\n }\n\n componentDidLoad() {\n this.didLoad = true;\n this.connectAnchor();\n }\n\n private connectAnchor() {\n this.bindAnchor();\n if (this.anchorObserver) return;\n this.anchorObserver = new MutationObserver(() => this.handleSlotChange());\n this.anchorObserver.observe(this.el, { childList: true });\n }\n\n disconnectedCallback() {\n if (activeTooltip === this) activeTooltip = null;\n this.anchorObserver?.disconnect();\n this.anchorObserver = null;\n this.unbindAnchor();\n this.clearTimers();\n this.destroyPopup();\n }\n\n @Watch('label')\n @Watch('size')\n @Watch('side')\n @Watch('align')\n @Watch('sideOffset')\n @Watch('alignOffset')\n @Watch('boundary')\n @Watch('shortcutKey')\n @Watch('shortcutKeyPosition')\n @Watch('wrapLabel')\n onContentOrPositionChange() {\n if (!this.label?.trim()) {\n if (this.isOpen || this.popupEl) this.hideInstant();\n return;\n }\n if (!this.popupEl || !this.isOpen) return;\n this.renderPopupContent();\n this.schedulePosition();\n }\n\n private get viewportPadPx(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n }\n\n private get sideOffsetPx(): number {\n return resolveCssLengthPx(this.sideOffset, TOKEN_DEFAULTS.space050);\n }\n\n private get alignOffsetPx(): number {\n return resolveCssLengthPx(this.alignOffset, 0);\n }\n\n private get hoverDelayMs(): number {\n return resolveCssTimeMs(this.delay, TOKEN_DEFAULTS.animationDelayMedium3);\n }\n\n private get instantReopenMs(): number {\n return resolveCssTimeMs(\n TOKEN_DEFAULTS.animationDurationMedium1,\n TOKEN_DEFAULTS.animationDurationMedium1\n );\n }\n\n private get fadeOutMs(): number {\n return resolveMotionTimeMs(TOKEN_DEFAULTS.motionShort3, TOKEN_DEFAULTS.animationDurationShort3);\n }\n\n private get tooltipFallbackWidthPx(): number {\n return resolveCssLengthPx(\n TOKEN_DEFAULTS.tooltipFallbackWidth,\n TOKEN_DEFAULTS.tooltipFallbackWidth\n );\n }\n\n private get tooltipFallbackHeightPx(): number {\n const token = FALLBACK_HEIGHT[this.size];\n return resolveCssLengthPx(token, token);\n }\n\n /**\n * Present against an external anchor the host already measured.\n * Does not bind hover or focus on that anchor — the owner drives show/hide.\n */\n @Method()\n async presentFrom(anchor: HTMLElement, label?: string) {\n if (label != null) this.label = label;\n if (!this.label?.trim()) {\n this.hide();\n return;\n }\n const sameAnchor = this.anchor === anchor;\n if (!sameAnchor) {\n this.unbindAnchor();\n this.anchor = anchor;\n this.programmaticAnchor = true;\n if (this.popupEl && this.describedBy) this.linkDescribedBy();\n }\n if (this.popupEl) {\n this.renderPopupContent();\n this.schedulePosition();\n return;\n }\n if (this.delayTimer && sameAnchor) return;\n this.show();\n }\n\n /** Dismiss a popup opened through presentFrom or the slotted trigger. */\n @Method()\n async dismiss() {\n this.hide();\n }\n\n private bindAnchor() {\n if (this.programmaticAnchor) return;\n const slot = this.el.querySelector('slot') as HTMLSlotElement | null;\n const slotted = slot?.assignedElements?.() ?? [];\n const child = (slotted[0] ?? this.el.firstElementChild) as HTMLElement | null;\n if (!child || child.tagName === 'SLOT' || child === this.anchor) return;\n this.anchor = child;\n child.addEventListener('pointerenter', this.pointerEnterHandler);\n child.addEventListener('pointerleave', this.pointerLeaveHandler);\n child.addEventListener('pointerdown', this.pointerDownHandler);\n child.addEventListener('keydown', this.keyDownHandler);\n child.addEventListener('focusin', this.focusHandler);\n child.addEventListener('focusout', this.blurHandler);\n }\n\n private unbindAnchor() {\n if (!this.anchor) return;\n this.unlinkDescribedBy();\n if (!this.programmaticAnchor) {\n this.anchor.removeEventListener('pointerenter', this.pointerEnterHandler);\n this.anchor.removeEventListener('pointerleave', this.pointerLeaveHandler);\n this.anchor.removeEventListener('pointerdown', this.pointerDownHandler);\n this.anchor.removeEventListener('keydown', this.keyDownHandler);\n this.anchor.removeEventListener('focusin', this.focusHandler);\n this.anchor.removeEventListener('focusout', this.blurHandler);\n }\n this.anchor = null;\n this.programmaticAnchor = false;\n }\n\n private linkDescribedBy() {\n if (!this.describedBy || !this.anchor || !this.popupEl) return;\n const ids = new Set(\n (this.anchor.getAttribute('aria-describedby') ?? '').split(/\\s+/).filter(Boolean)\n );\n ids.add(this.tooltipId);\n this.anchor.setAttribute('aria-describedby', Array.from(ids).join(' '));\n }\n\n private unlinkDescribedBy() {\n if (!this.anchor) return;\n const ids = (this.anchor.getAttribute('aria-describedby') ?? '')\n .split(/\\s+/)\n .filter(id => id && id !== this.tooltipId);\n if (ids.length) this.anchor.setAttribute('aria-describedby', ids.join(' '));\n else this.anchor.removeAttribute('aria-describedby');\n }\n\n private handleSlotChange = () => {\n if (this.programmaticAnchor) return;\n const slot = this.el.querySelector('slot') as HTMLSlotElement | null;\n const next = (slot?.assignedElements?.()[0] ?? this.el.firstElementChild) as HTMLElement | null;\n if (next === this.anchor || next?.tagName === 'SLOT') return;\n if (this.isOpen || this.popupEl) this.hideInstant();\n this.unbindAnchor();\n this.bindAnchor();\n };\n\n private clearTimers() {\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = null;\n }\n if (this.closeTimer) {\n clearTimeout(this.closeTimer);\n this.closeTimer = null;\n }\n }\n\n private setupOpenListeners() {\n // Binds scroll/resize + the resize observer; placement itself is scheduled\n // by schedulePosition() so the label restyle stays interleaved.\n this.position.observe();\n document.addEventListener('keydown', this.escapeHandler);\n }\n\n private teardownOpenListeners() {\n this.position.unobserve();\n document.removeEventListener('keydown', this.escapeHandler);\n }\n\n private destroyPopup() {\n this.teardownOpenListeners();\n this.unlinkDescribedBy();\n if (!this.popupEl) return;\n this.popupEl.remove();\n this.popupEl = null;\n }\n\n /**\n * Position after `ds-text` upgrades and lays out. Measuring synchronously in\n * `mountPopup` reads a collapsed/fallback width and places left/right tips wrong.\n */\n private schedulePosition() {\n if (!this.popupEl) return;\n\n const reapplyLabelStyles = () => {\n const label = this.popupEl?.querySelector(':scope > .tooltip-inner > ds-text');\n if (label instanceof HTMLElement) styleTooltipLabel(label, this.wrapLabel);\n };\n\n requestAnimationFrame(() => {\n reapplyLabelStyles();\n this.position.update();\n requestAnimationFrame(() => {\n reapplyLabelStyles();\n this.position.update();\n });\n });\n\n // The popup remounts on every show, so re-target the observer bound in start().\n this.position.observeResizeTargets();\n }\n\n /** Drop the open tip immediately (warm handoff to another tooltip). */\n private hideInstant() {\n this.clearTimers();\n lastDismissedAt = Date.now();\n if (activeTooltip === this) activeTooltip = null;\n this.destroyPopup();\n this.isOpen = false;\n this.skipEnterAnimation = false;\n }\n\n private show() {\n // Empty label = wrapper present for DOM stability (e.g. PanelNav expand/collapse)\n // but no tip should appear.\n if (!this.label?.trim()) return;\n this.clearTimers();\n let instant = Date.now() - lastDismissedAt < this.instantReopenMs;\n if (activeTooltip && activeTooltip !== this) {\n activeTooltip.hideInstant();\n instant = true;\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- module singleton tracks the active instance\n activeTooltip = this;\n this.skipEnterAnimation = instant;\n if (instant) {\n this.mountPopup();\n return;\n }\n this.delayTimer = setTimeout(() => {\n this.delayTimer = null;\n if (!this.label?.trim()) return;\n this.mountPopup();\n }, this.hoverDelayMs);\n }\n\n private hide() {\n this.clearTimers();\n if (!this.popupEl && !this.isOpen) return;\n lastDismissedAt = Date.now();\n if (!this.popupEl) {\n this.isOpen = false;\n return;\n }\n this.popupEl.classList.remove('tooltip-popup--instant');\n this.popupEl.classList.add('tooltip-popup--closing');\n if (this.fadeOutMs === 0) {\n if (activeTooltip === this) activeTooltip = null;\n this.destroyPopup();\n this.isOpen = false;\n this.skipEnterAnimation = false;\n return;\n }\n this.closeTimer = setTimeout(() => {\n this.closeTimer = null;\n if (activeTooltip === this) activeTooltip = null;\n this.destroyPopup();\n this.isOpen = false;\n this.skipEnterAnimation = false;\n }, this.fadeOutMs);\n }\n\n private mountPopup() {\n if (!this.popupEl) {\n const tip = document.createElement('div');\n tip.id = this.tooltipId;\n tip.setAttribute('role', 'tooltip');\n // `sc-ds-tooltip` is required for Stencil scoped CSS to match outside the host.\n tip.className = 'tooltip-popup ds-forced-colors-scope sc-ds-tooltip';\n Object.assign(tip.style, {\n position: 'fixed',\n left: '0',\n top: '0',\n zIndex: 'var(--dimension-z-index-tooltip)',\n pointerEvents: 'none',\n });\n document.body.appendChild(tip);\n this.popupEl = tip;\n }\n\n this.setupOpenListeners();\n this.linkDescribedBy();\n this.popupEl.classList.toggle('tooltip-popup--instant', this.skipEnterAnimation);\n this.popupEl.classList.toggle('tooltip-popup--wrap', this.wrapLabel);\n this.popupEl.classList.remove('tooltip-popup--closing');\n this.renderPopupContent();\n this.schedulePosition();\n this.isOpen = true;\n }\n\n private renderPopupContent() {\n if (!this.popupEl) return;\n this.popupEl.classList.toggle('tooltip-popup--wrap', this.wrapLabel);\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const density =\n this.size === 'md'\n ? 'ds-control--md'\n : this.size === 'sm'\n ? 'ds-control--sm'\n : 'ds-control--xs';\n // Every layout node needs `sc-ds-tooltip` so scoped selectors (`.foo.sc-ds-tooltip`) match.\n const sc = 'sc-ds-tooltip';\n\n const inner = document.createElement('div');\n inner.className = `tooltip-inner ${density} ${sc}`;\n\n const appendShortcut = (position: 'start' | 'end') => {\n if (!this.shortcutKey || this.shortcutKeyPosition !== position) return;\n const group = document.createElement('span');\n group.className = `key-hint-group ${sc}`;\n group.setAttribute('aria-hidden', 'true');\n\n for (const label of shortcutKeyLabels(this.shortcutKey)) {\n const hint = document.createElement('span');\n const wide = Array.from(label).length > 1 ? ' key-hint--wide' : '';\n hint.className = `key-hint${wide} ${sc}`;\n const text = document.createElement('span');\n text.className = `key-hint__label ${sc}`;\n text.textContent = label;\n hint.appendChild(text);\n group.appendChild(hint);\n }\n inner.appendChild(group);\n };\n\n appendShortcut('start');\n\n // ds-text is the layout box (metric-box + 2px control label-inset).\n // Inline styles required — see styleTooltipLabel.\n const label = createDsText({\n variant: textVariant,\n wrap: this.wrapLabel ? 'wrap' : 'nowrap',\n text: this.label,\n });\n styleTooltipLabel(label, this.wrapLabel);\n inner.appendChild(label);\n\n appendShortcut('end');\n\n this.popupEl.replaceChildren(inner);\n }\n\n render() {\n return (\n <Host style={{ display: 'contents' }}>\n <slot onSlotchange={this.handleSlotChange} />\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{h as n}from"./index.js";function e(n){return"type"in n&&n.type==="divider"}function t(n,e,t){if(n!==undefined)return n;const i=[];if(e){const{type:n,...t}=e;i.push({...t,type:"button",buttonType:n,appearance:"filled"})}for(const n of t){i.push("type"in n?n:{...n,type:"overflow"})}return i}function i(n){return n.type==="menu"||n.type==="split"?n.choices:undefined}function o(n){const t=new Set;const o=[];const s=n=>{if(!n.trim()){o.push("Action ids must be non-empty.");return}if(t.has(n)){o.push(`Duplicate action id: ${n}`);return}t.add(n)};for(const t of n){if(e(t))continue;s(t.id);for(const n of i(t)??[]){if(!e(n))s(n.id)}}return o}function s(n,t){if(e(n)||n.type==="overflow")return false;if(t==="mobile"){if(n.type!=="icon")return true;return(n.mobile??"auto")==="overflow"}return t==="constrained"&&(n.collapse??"auto")==="auto"}function r(n,t){const i=n.find((n=>!e(n)&&n.type!=="overflow"&&!s(n,t)));return i?[i]:[]}function c(n,e=true){return{label:n.label,value:n.id,icon:e?n.icon:undefined,isInactive:n.isInactive,isDestructive:n.isDestructive}}function u(n,t,i=true){for(const o of t){n.push(e(o)?o:c(o,i))}}function l(n){const e=[];let t=[];const i=()=>{if(t.length>0)e.push({items:t});t=[]};for(const e of n){if("type"in e&&e.type==="divider")i();else t.push(e)}i();return e}function a(n){const e=[];u(e,n);return l(e)}function f(n,t){const i=[];const[o]=r(n,t);for(const t of n){if(e(t)){i.push(t);continue}if(t.type==="overflow"){i.push(c(t,false));continue}if(t===o)continue;if(t.type==="menu"){u(i,t.choices,false);continue}if(t.type==="split"){i.push(c(t,false));u(i,t.choices,false);continue}i.push(c(t,false))}return l(i)}function d(n,t){const i=new Set;if(t)i.add("__overflow");for(const t of n){if(!e(t)&&(t.type==="menu"||t.type==="split")){i.add(t.id)}}return i}function p(n,t){for(const o of n){if(e(o))continue;if(o.id===t)return o;const n=i(o)?.find((n=>!e(n)&&n.id===t));if(n&&!e(n))return n}return undefined}function b(n){return"type"in n&&n.type==="divider"}function m(n,e,t,i){const o=t.findIndex((n=>!b(n)&&n.id===i));return`${n}-action-menu-${e}-${o}`}function v(n,e,t){if(n==="__overflow")return e??undefined;const i=t.get(n);if(!i)return undefined;const o=i.querySelector(".ds-button-split__menu");return o??i}async function y(n){if(n.menuId==="__overflow"){await(n.overflowTrigger?.setFocus?.());return}const e=n.actionTriggers.get(n.menuId);if(!e||!("setFocus"in e))return;const t=n.resolvedActionItems.some((e=>!b(e)&&e.id===n.menuId&&e.type==="split"));await(e.setFocus?.(t?"menu":undefined))}function $(n,e){return`${n}__${e}`}function _(e){if(!e.showBack)return null;return n("ds-tooltip",{label:"Go back",side:"bottom",size:"sm"},n("ds-button-unfilled",{class:$(e.classPrefix,"back"),variant:"icon",icon:"ChevronLeft","aria-label":e.backAriaLabel,size:"md",activeFill:false,hasBorder:false,onDsClick:n=>e.onBack(n.detail)}))}function w(e){const t=e.classPrefix;return n("div",{class:$(t,"section-selector")},n("button",{ref:n=>{e.setTriggerEl(n??null)},id:e.triggerId,class:{[$(t,"section-trigger")]:true,[`${$(t,"section-trigger")}--expanded`]:e.open,"ds-interaction-fill--surface-open":e.surfaceOpen,"ds-control--md":true,"ds-focus-ring-inset":true,"ds-interaction-fill":true},type:"button","aria-haspopup":"menu","aria-controls":e.menuId,"aria-expanded":String(e.open),"aria-label":e.ariaLabel,onClick:e.onToggle},n("ds-text",{class:`${$(t,"section-label")} ds-interaction-fill__content`,as:"span",variant:"text-body-medium",emphasis:true,color:"primary",lineTruncation:1},e.selectedLabel),n("ds-icon",{class:`${$(t,"section-chevron")} ds-interaction-fill__content`,name:"ChevronUpDown",size:"md",color:"inherit","aria-hidden":"true"})))}function h(e,t){if(b(e)||e.type==="overflow")return null;const i=e.appearance??(e.type==="split"?"filled":"unfilled");const o=e.type==="icon"?"icon":e.icon?"icon-label":"label";const s=e.type==="menu";const r=s?m(t.classPrefix,t.instanceId,t.resolvedActionItems,e.id):undefined;const c=t.classPrefix;if(e.type==="split"){const s=m(t.classPrefix,t.instanceId,t.resolvedActionItems,e.id);const r={key:e.id,ref:n=>{if(n)t.actionTriggers.set(e.id,n);else t.actionTriggers.delete(e.id)},class:`${$(c,"action")} ${$(c,"split-action")}`,split:true,variant:o,label:e.label,icon:e.icon??"",menuAriaLabel:e.menuAriaLabel,controls:s,expanded:t.openActionMenuId===e.id,surfaceOpen:t.surfaceActionMenuId===e.id,size:"md",type:e.buttonType??"button",isInactive:e.isInactive,isLoading:e.isLoading,onDsClick:()=>t.emitAction(e.id),onDsMenuClick:n=>t.toggleActionMenu(e.id,n.detail)};return i==="filled"?n("ds-button-filled",{...r,intent:e.intent??"brand",contrast:e.contrast??"bold"}):n("ds-button-unfilled",{...r})}const u={key:e.id,ref:n=>{if(n)t.actionTriggers.set(e.id,n);else t.actionTriggers.delete(e.id)},class:`${$(c,"action")} ${$(c,"action")}--${e.type}${t.actionItems===undefined&&e.id===t.primaryAction?.id?` ${$(c,"primary-action")}`:""}`,variant:o,icon:e.icon??"",label:e.label,ariaLabel:e.ariaLabel??(e.type==="icon"?e.label:undefined),size:"md",type:e.buttonType??"button",isInactive:e.isInactive,isLoading:e.isLoading,controls:r,expanded:s?t.openActionMenuId===e.id:undefined,surfaceOpen:s&&t.surfaceActionMenuId===e.id,hasMenu:s,onDsClick:n=>{if(s)t.toggleActionMenu(e.id,n.detail);else t.emitAction(e.id)}};const l=i==="filled"?n("ds-button-filled",{...u,intent:e.intent??"brand",contrast:e.contrast??"bold"}):n("ds-button-unfilled",{...u});return e.type==="icon"?n("ds-tooltip",{key:e.id,label:e.label,side:"bottom",size:"sm"},l):l}function D(e){if(e.visibleActions.length===0&&!e.showOverflowTrigger)return null;const t=e.classPrefix;return n("div",{class:$(t,"actions")},e.visibleActions.map((n=>h(n,e))),e.showOverflowTrigger?n("ds-tooltip",{label:"Page options",side:"bottom",size:"sm"},n("ds-button-unfilled",{ref:n=>{e.setOverflowTriggerEl(n??null)},id:e.actionMenuTriggerId,class:$(t,"more-actions"),variant:"icon",icon:"Ellipses","aria-label":e.actionsAriaLabel,size:"md",activeFill:!e.compact,hasBorder:e.visibleActions.length>0,haspopup:"menu",controls:e.actionMenuId,expanded:e.openActionMenuId==="__overflow",surfaceOpen:e.surfaceActionMenuId==="__overflow",onDsClick:n=>e.toggleActionMenu("__overflow",n.detail)})):null)}function k(e){const t=e.classPrefix;return e.visibleActions.flatMap((i=>{if(b(i)||i.type!=="menu"&&i.type!=="split"){return[]}const o=i;const s=o.menuAriaLabel??o.ariaLabel??o.label;return[n("ds-menu",{key:i.id,id:m(e.classPrefix,e.instanceId,e.resolvedActionItems,i.id),class:$(t,"action-menu"),anchor:v(i.id,e.overflowTrigger,e.actionTriggers),align:"end",menuLabel:s,open:e.openActionMenuId===i.id,initialFocusVisible:e.actionMenuInitialFocusVisible,sections:a(o.choices),onDsClose:e.closeActionMenu,onDsAfterClose:e.finishActionMenuClose,onDsSelect:e.handleActionSelect})]}))}function C(e){if(!e.showOverflowTrigger)return null;return n("ds-menu",{id:e.actionMenuId,class:$(e.classPrefix,"action-menu"),anchorId:e.actionMenuTriggerId,align:"end",menuLabel:e.actionsAriaLabel,open:e.open,initialFocusVisible:e.actionMenuInitialFocusVisible,sections:e.actionMenuSections,onDsClose:e.closeActionMenu,onDsAfterClose:e.finishActionMenuClose,onDsSelect:e.handleActionSelect})}function g(n){return n.filter((n=>!b(n)))}function x(n,e){const t=g(n);return t.some((n=>n.id===e))?e:t[0]?.id??""}function z(n,e){const t=x(n,e);return g(n).find((n=>n.id===t))?.label??""}function L(n,e){return`${n}. Current section: ${e}`}function I(n,e){const t=[];let i=[];const o=()=>{if(i.length>0)t.push({items:i});i=[]};for(const t of n){if(b(t)){o()}else{i.push({label:t.label,value:t.id,isSelected:t.id===e,isInactive:t.isInactive})}}o();return t}function S(n){return n.map((n=>b(n)?{type:"divider"}:{id:n.id,label:n.label,isInactive:n.isInactive}))}function F(n){return(n??[]).map((n=>b(n)?"|":`${n.id}\0${n.label}\0${n.isInactive?"1":"0"}`)).join("\n")}export{F as a,m as b,o as c,S as d,x as e,p as f,z as g,L as h,I as i,t as j,d as k,_ as l,w as m,C as n,f as o,k as p,D as q,y as r,g as s,r as v};
2
- //# sourceMappingURL=p-Dhw_W8nk.js.map
1
+ import{h as n}from"./index.js";function e(n){return"type"in n&&n.type==="divider"}function t(n,e,t){if(n!==undefined)return n;const i=[];if(e){const{type:n,...t}=e;i.push({...t,type:"button",buttonType:n,appearance:"filled"})}for(const n of t){i.push("type"in n?n:{...n,type:"overflow"})}return i}function i(n){return n.type==="menu"||n.type==="split"?n.choices:undefined}function o(n){const t=new Set;const o=[];const s=n=>{if(!n.trim()){o.push("Action ids must be non-empty.");return}if(t.has(n)){o.push(`Duplicate action id: ${n}`);return}t.add(n)};for(const t of n){if(e(t))continue;s(t.id);for(const n of i(t)??[]){if(!e(n))s(n.id)}}return o}function s(n,t){if(e(n)||n.type==="overflow")return false;if(t==="mobile"){if(n.type!=="icon")return true;return(n.mobile??"auto")==="overflow"}return t==="constrained"&&(n.collapse??"auto")==="auto"}function r(n,t){const i=n.find((n=>!e(n)&&n.type!=="overflow"&&!s(n,t)));return i?[i]:[]}function c(n,e=true){return{label:n.label,value:n.id,icon:e?n.icon:undefined,isInactive:n.isInactive,isDestructive:n.isDestructive}}function u(n,t,i=true){for(const o of t){n.push(e(o)?o:c(o,i))}}function l(n){const e=[];let t=[];const i=()=>{if(t.length>0)e.push({items:t});t=[]};for(const e of n){if("type"in e&&e.type==="divider")i();else t.push(e)}i();return e}function a(n){const e=[];u(e,n);return l(e)}function f(n,t){const i=[];const[o]=r(n,t);for(const t of n){if(e(t)){i.push(t);continue}if(t.type==="overflow"){i.push(c(t,false));continue}if(t===o)continue;if(t.type==="menu"){u(i,t.choices,false);continue}if(t.type==="split"){i.push(c(t,false));u(i,t.choices,false);continue}i.push(c(t,false))}return l(i)}function d(n,t){const i=new Set;if(t)i.add("__overflow");for(const t of n){if(!e(t)&&(t.type==="menu"||t.type==="split")){i.add(t.id)}}return i}function p(n,t){for(const o of n){if(e(o))continue;if(o.id===t)return o;const n=i(o)?.find((n=>!e(n)&&n.id===t));if(n&&!e(n))return n}return undefined}function b(n){return"type"in n&&n.type==="divider"}function m(n,e,t,i){const o=t.findIndex((n=>!b(n)&&n.id===i));return`${n}-action-menu-${e}-${o}`}function v(n,e,t){if(n==="__overflow")return e??undefined;const i=t.get(n);if(!i)return undefined;const o=i.querySelector(".ds-button-split__menu");return o??i}async function y(n){if(n.menuId==="__overflow"){await(n.overflowTrigger?.setFocus?.());return}const e=n.actionTriggers.get(n.menuId);if(!e||!("setFocus"in e))return;const t=n.resolvedActionItems.some((e=>!b(e)&&e.id===n.menuId&&e.type==="split"));await(e.setFocus?.(t?"menu":undefined))}function $(n,e){return`${n}__${e}`}function _(e){if(!e.showBack)return null;return n("ds-tooltip",{label:"Go back",side:"bottom",size:"sm"},n("ds-button-unfilled",{class:$(e.classPrefix,"back"),variant:"icon",icon:"ChevronLeft","aria-label":e.backAriaLabel,size:"md",activeFill:false,hasBorder:false,onDsClick:n=>e.onBack(n.detail)}))}function w(e){const t=e.classPrefix;return n("div",{class:$(t,"section-selector")},n("button",{ref:n=>{e.setTriggerEl(n??null)},id:e.triggerId,class:{[$(t,"section-trigger")]:true,[`${$(t,"section-trigger")}--expanded`]:e.open,"ds-interaction-fill--surface-open":e.surfaceOpen,"ds-control--md":true,"ds-focus-ring-inset":true,"ds-interaction-fill":true},type:"button","aria-haspopup":"menu","aria-controls":e.menuId,"aria-expanded":String(e.open),"aria-label":e.ariaLabel,onClick:e.onToggle},n("ds-text",{class:`${$(t,"section-label")} ds-interaction-fill__content`,as:"span",variant:"text-body-medium",emphasis:true,color:"primary",lineTruncation:1},e.selectedLabel),n("ds-icon",{class:`${$(t,"section-chevron")} ds-interaction-fill__content`,name:"ChevronUpDown",size:"md",color:"inherit","aria-hidden":"true"})))}function h(e,t){if(b(e)||e.type==="overflow")return null;const i=e.appearance??(e.type==="split"?"filled":"unfilled");const o=e.type==="icon"?"icon":e.icon?"icon-label":"label";const s=e.type==="menu";const r=s?m(t.classPrefix,t.instanceId,t.resolvedActionItems,e.id):undefined;const c=t.classPrefix;if(e.type==="split"){const s=m(t.classPrefix,t.instanceId,t.resolvedActionItems,e.id);const r={key:e.id,ref:n=>{if(n)t.actionTriggers.set(e.id,n);else t.actionTriggers.delete(e.id)},class:`${$(c,"action")} ${$(c,"split-action")}`,split:true,variant:o,label:e.label,icon:e.icon??"",menuAriaLabel:e.menuAriaLabel,controls:s,expanded:t.openActionMenuId===e.id,surfaceOpen:t.surfaceActionMenuId===e.id,size:"md",type:e.buttonType??"button",isInactive:e.isInactive,isLoading:e.isLoading,onDsClick:()=>t.emitAction(e.id),onDsMenuClick:n=>t.toggleActionMenu(e.id,n.detail)};return i==="filled"?n("ds-button-filled",{...r,intent:e.intent??"brand",contrast:e.contrast??"bold"}):n("ds-button-unfilled",{...r})}const u={key:e.id,ref:n=>{if(n)t.actionTriggers.set(e.id,n);else t.actionTriggers.delete(e.id)},class:`${$(c,"action")} ${$(c,"action")}--${e.type}${t.actionItems===undefined&&e.id===t.primaryAction?.id?` ${$(c,"primary-action")}`:""}`,variant:o,icon:e.icon??"",label:e.label,ariaLabel:e.ariaLabel??(e.type==="icon"?e.label:undefined),size:"md",type:e.buttonType??"button",isInactive:e.isInactive,isLoading:e.isLoading,controls:r,expanded:s?t.openActionMenuId===e.id:undefined,surfaceOpen:s&&t.surfaceActionMenuId===e.id,hasMenu:s,onDsClick:n=>{if(s)t.toggleActionMenu(e.id,n.detail);else t.emitAction(e.id)}};const l=i==="filled"?n("ds-button-filled",{...u,intent:e.intent??"brand",contrast:e.contrast??"bold"}):n("ds-button-unfilled",{...u});return e.type==="icon"?n("ds-tooltip",{key:e.id,label:e.label,side:"bottom",size:"sm"},l):l}function D(e){if(e.visibleActions.length===0&&!e.showOverflowTrigger)return null;const t=e.classPrefix;return n("div",{class:$(t,"actions")},e.visibleActions.map((n=>h(n,e))),e.showOverflowTrigger?n("ds-tooltip",{label:"Page options",side:"bottom",size:"sm"},n("ds-button-unfilled",{ref:n=>{e.setOverflowTriggerEl(n??null)},id:e.actionMenuTriggerId,class:$(t,"more-actions"),variant:"icon",icon:"Ellipses","aria-label":e.actionsAriaLabel,size:"md",activeFill:!e.compact,hasBorder:e.visibleActions.length>0,haspopup:"menu",controls:e.actionMenuId,expanded:e.openActionMenuId==="__overflow",surfaceOpen:e.surfaceActionMenuId==="__overflow",onDsClick:n=>e.toggleActionMenu("__overflow",n.detail)})):null)}function k(e){const t=e.classPrefix;return e.visibleActions.flatMap((i=>{if(b(i)||i.type!=="menu"&&i.type!=="split"){return[]}const o=i;const s=o.menuAriaLabel??o.ariaLabel??o.label;return[n("ds-menu",{key:i.id,id:m(e.classPrefix,e.instanceId,e.resolvedActionItems,i.id),class:$(t,"action-menu"),anchor:v(i.id,e.overflowTrigger,e.actionTriggers),align:"end",sideOffset:e.sideOffset,menuLabel:s,open:e.openActionMenuId===i.id,initialFocusVisible:e.actionMenuInitialFocusVisible,sections:a(o.choices),onDsClose:e.closeActionMenu,onDsAfterClose:e.finishActionMenuClose,onDsSelect:e.handleActionSelect})]}))}function C(e){if(!e.showOverflowTrigger)return null;return n("ds-menu",{id:e.actionMenuId,class:$(e.classPrefix,"action-menu"),anchorId:e.actionMenuTriggerId,align:"end",sideOffset:e.sideOffset,menuLabel:e.actionsAriaLabel,open:e.open,initialFocusVisible:e.actionMenuInitialFocusVisible,sections:e.actionMenuSections,onDsClose:e.closeActionMenu,onDsAfterClose:e.finishActionMenuClose,onDsSelect:e.handleActionSelect})}function g(n){return n.filter((n=>!b(n)))}function x(n,e){const t=g(n);return t.some((n=>n.id===e))?e:t[0]?.id??""}function z(n,e){const t=x(n,e);return g(n).find((n=>n.id===t))?.label??""}function L(n,e){return`${n}. Current section: ${e}`}function I(n,e){const t=[];let i=[];const o=()=>{if(i.length>0)t.push({items:i});i=[]};for(const t of n){if(b(t)){o()}else{i.push({label:t.label,value:t.id,isSelected:t.id===e,isInactive:t.isInactive})}}o();return t}function S(n){return n.map((n=>b(n)?{type:"divider"}:{id:n.id,label:n.label,isInactive:n.isInactive}))}function F(n){return(n??[]).map((n=>b(n)?"|":`${n.id}\0${n.label}\0${n.isInactive?"1":"0"}`)).join("\n")}export{F as a,m as b,o as c,S as d,x as e,p as f,z as g,L as h,I as i,t as j,d as k,_ as l,w as m,C as n,f as o,k as p,D as q,y as r,g as s,r as v};
2
+ //# sourceMappingURL=p-Cc3ZUQlJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isBarTitleActionDivider","item","type","resolveBarTitleActionItems","actionItems","primaryAction","actions","undefined","resolved","primary","push","buttonType","appearance","action","nestedChoices","choices","barTitleActionIdIssues","items","seen","Set","issues","visit","id","trim","has","add","choice","actionCollapses","presentation","mobile","collapse","visibleBarTitleActions","find","menuItem","includeIcon","label","value","icon","isInactive","isDestructive","appendChoices","output","includeIcons","toSections","sections","current","commit","length","barTitleChoiceSections","rows","overflowBarTitleActionSections","visibleAction","availableBarTitleActionMenuIds","visibleActions","showOverflowTrigger","ids","findBarTitleAction","candidate","isBarTitleDivider","barTitleActionMenuDomId","classPrefix","instanceId","resolvedActionItems","index","findIndex","barTitleActionMenuAnchor","overflowTrigger","actionTriggers","trigger","get","splitMenu","querySelector","async","restoreBarTitleActionFocus","options","menuId","setFocus","split","some","className","prefix","part","renderBarTitleBack","showBack","h","side","size","class","variant","backAriaLabel","activeFill","hasBorder","onDsClick","event","onBack","detail","renderBarTitleSectionTrigger","ref","el","setTriggerEl","triggerId","open","surfaceOpen","String","ariaLabel","onClick","onToggle","as","emphasis","color","lineTruncation","selectedLabel","name","renderVisibleAction","menu","splitMenuId","splitProps","key","set","delete","menuAriaLabel","controls","expanded","openActionMenuId","surfaceActionMenuId","isLoading","emitAction","onDsMenuClick","toggleActionMenu","intent","contrast","buttonProps","hasMenu","button","renderBarTitleActions","map","setOverflowTriggerEl","actionMenuTriggerId","actionsAriaLabel","compact","haspopup","actionMenuId","renderBarTitleActionMenus","flatMap","menuAction","menuLabel","anchor","align","sideOffset","initialFocusVisible","actionMenuInitialFocusVisible","onDsClose","closeActionMenu","onDsAfterClose","finishActionMenuClose","onDsSelect","handleActionSelect","renderBarTitleOverflowMenu","anchorId","actionMenuSections","selectableBarTitleSections","filter","effectiveBarTitleSectionValue","selectable","section","selectedBarTitleSectionLabel","selectedId","barTitleSectionTriggerAriaLabel","sectionsAriaLabel","barTitleSectionMenuSections","groups","isSelected","barTitleSectionsToTabs","barTitleSectionsDigest","join"],"sources":["src/wc/components/BarTitle/bar-title-actions.ts","src/wc/components/BarTitle/bar-title-types.ts","src/wc/components/BarTitle/bar-title-action-chrome.tsx","src/wc/components/BarTitle/bar-title-sections.ts"],"sourcesContent":["import type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport type {\n BarTitleAction,\n BarTitleActionConfigItem,\n BarTitleActionItem,\n BarTitleDivider,\n BarTitleMenuChoiceItem,\n BarTitlePrimaryAction,\n BarTitleVariant,\n} from './bar-title-types';\n\nexport type BarTitleActionPresentation = BarTitleVariant | 'mobile';\n\nexport function isBarTitleActionDivider(\n item: BarTitleActionConfigItem | BarTitleMenuChoiceItem\n): item is BarTitleDivider {\n return 'type' in item && item.type === 'divider';\n}\n\nexport function resolveBarTitleActionItems(\n actionItems: BarTitleActionConfigItem[] | undefined,\n primaryAction: BarTitlePrimaryAction | null,\n actions: BarTitleActionItem[]\n): BarTitleActionConfigItem[] {\n if (actionItems !== undefined) return actionItems;\n\n const resolved: BarTitleActionConfigItem[] = [];\n if (primaryAction) {\n const { type, ...primary } = primaryAction;\n resolved.push({\n ...primary,\n type: 'button',\n buttonType: type,\n appearance: 'filled',\n });\n }\n for (const action of actions) {\n resolved.push(\n 'type' in action\n ? action\n : {\n ...action,\n type: 'overflow',\n }\n );\n }\n return resolved;\n}\n\nfunction nestedChoices(item: BarTitleActionConfigItem): BarTitleMenuChoiceItem[] | undefined {\n return item.type === 'menu' || item.type === 'split' ? item.choices : undefined;\n}\n\nexport function barTitleActionIdIssues(items: BarTitleActionConfigItem[]): string[] {\n const seen = new Set<string>();\n const issues: string[] = [];\n const visit = (id: string) => {\n if (!id.trim()) {\n issues.push('Action ids must be non-empty.');\n return;\n }\n if (seen.has(id)) {\n issues.push(`Duplicate action id: ${id}`);\n return;\n }\n seen.add(id);\n };\n\n for (const item of items) {\n if (isBarTitleActionDivider(item)) continue;\n visit(item.id);\n for (const choice of nestedChoices(item) ?? []) {\n if (!isBarTitleActionDivider(choice)) visit(choice.id);\n }\n }\n return issues;\n}\n\nfunction actionCollapses(\n item: BarTitleActionConfigItem,\n presentation: BarTitleActionPresentation\n): boolean {\n if (isBarTitleActionDivider(item) || item.type === 'overflow') return false;\n if (presentation === 'mobile') {\n if (item.type !== 'icon') return true;\n return (item.mobile ?? 'auto') === 'overflow';\n }\n return presentation === 'constrained' && (item.collapse ?? 'auto') === 'auto';\n}\n\nexport function visibleBarTitleActions(\n items: BarTitleActionConfigItem[],\n presentation: BarTitleActionPresentation\n): BarTitleActionConfigItem[] {\n const primary = items.find(\n item =>\n !isBarTitleActionDivider(item) &&\n item.type !== 'overflow' &&\n !actionCollapses(item, presentation)\n );\n return primary ? [primary] : [];\n}\n\nfunction menuItem(action: BarTitleAction, includeIcon: boolean = true): MenuItemData {\n return {\n label: action.label,\n value: action.id,\n icon: includeIcon ? action.icon : undefined,\n isInactive: action.isInactive,\n isDestructive: action.isDestructive,\n };\n}\n\nfunction appendChoices(\n output: Array<MenuItemData | BarTitleDivider>,\n choices: BarTitleMenuChoiceItem[],\n includeIcons: boolean = true\n) {\n for (const choice of choices) {\n output.push(isBarTitleActionDivider(choice) ? choice : menuItem(choice, includeIcons));\n }\n}\n\nfunction toSections(items: Array<MenuItemData | BarTitleDivider>): MenuSection[] {\n const sections: MenuSection[] = [];\n let current: MenuItemData[] = [];\n const commit = () => {\n if (current.length > 0) sections.push({ items: current });\n current = [];\n };\n\n for (const item of items) {\n if ('type' in item && item.type === 'divider') commit();\n else current.push(item as MenuItemData);\n }\n commit();\n return sections;\n}\n\nexport function barTitleChoiceSections(choices: BarTitleMenuChoiceItem[]): MenuSection[] {\n const rows: Array<MenuItemData | BarTitleDivider> = [];\n appendChoices(rows, choices);\n return toSections(rows);\n}\n\nexport function overflowBarTitleActionSections(\n items: BarTitleActionConfigItem[],\n presentation: BarTitleActionPresentation\n): MenuSection[] {\n const rows: Array<MenuItemData | BarTitleDivider> = [];\n const [visibleAction] = visibleBarTitleActions(items, presentation);\n\n for (const item of items) {\n if (isBarTitleActionDivider(item)) {\n rows.push(item);\n continue;\n }\n if (item.type === 'overflow') {\n rows.push(menuItem(item, false));\n continue;\n }\n if (item === visibleAction) continue;\n\n if (item.type === 'menu') {\n appendChoices(rows, item.choices, false);\n continue;\n }\n if (item.type === 'split') {\n rows.push(menuItem(item, false));\n appendChoices(rows, item.choices, false);\n continue;\n }\n rows.push(menuItem(item, false));\n }\n\n return toSections(rows);\n}\n\nexport function availableBarTitleActionMenuIds(\n visibleActions: BarTitleActionConfigItem[],\n showOverflowTrigger: boolean\n): Set<string> {\n const ids = new Set<string>();\n if (showOverflowTrigger) ids.add('__overflow');\n for (const item of visibleActions) {\n if (!isBarTitleActionDivider(item) && (item.type === 'menu' || item.type === 'split')) {\n ids.add(item.id);\n }\n }\n return ids;\n}\n\nexport function findBarTitleAction(\n items: BarTitleActionConfigItem[],\n id: string\n): BarTitleAction | undefined {\n for (const item of items) {\n if (isBarTitleActionDivider(item)) continue;\n if (item.id === id) return item;\n const choice = nestedChoices(item)?.find(\n candidate => !isBarTitleActionDivider(candidate) && candidate.id === id\n );\n if (choice && !isBarTitleActionDivider(choice)) return choice;\n }\n return undefined;\n}\n","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 ariaLabel?: string;\n icon?: string;\n isInactive?: boolean;\n isDestructive?: boolean;\n}\n\nexport interface BarTitlePrimaryAction extends BarTitleAction {\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 BarTitleActionAppearance = 'filled' | 'unfilled';\nexport type BarTitleActionCollapse = 'auto' | 'never';\nexport type BarTitleActionMobile = 'auto' | 'visible' | 'overflow';\n\ninterface BarTitleVisibleActionBase extends BarTitleAction {\n appearance?: BarTitleActionAppearance;\n intent?: ButtonFilledIntent;\n contrast?: ButtonFilledContrast;\n isLoading?: boolean;\n buttonType?: 'button' | 'submit' | 'reset';\n /** Auto moves the action into overflow only in constrained presentation. */\n collapse?: BarTitleActionCollapse;\n /**\n * Mobile defaults icon actions to visible and all labeled actions to overflow.\n * `visible` is supported only by icon actions.\n */\n mobile?: BarTitleActionMobile;\n}\n\n/** Visible labeled command in the authored action order. */\nexport interface BarTitleButtonAction extends BarTitleVisibleActionBase {\n type: 'button';\n}\n\n/** Visible icon-only command. ariaLabel is required because label is not rendered. */\nexport interface BarTitleIconAction extends BarTitleVisibleActionBase {\n type: 'icon';\n icon: string;\n ariaLabel: string;\n}\n\nexport type BarTitleMenuChoice = BarTitleAction;\nexport type BarTitleMenuChoiceItem = BarTitleMenuChoice | BarTitleDivider;\n\n/** Visible labeled menu button. Selecting a choice emits that choice's flat id. */\nexport interface BarTitleMenuAction extends BarTitleVisibleActionBase {\n type: 'menu';\n choices: BarTitleMenuChoiceItem[];\n menuAriaLabel?: string;\n}\n\n/** Command with a dedicated menu segment; defaults filled when appearance is omitted. */\nexport interface BarTitleSplitAction extends BarTitleVisibleActionBase {\n type: 'split';\n choices: BarTitleMenuChoiceItem[];\n menuAriaLabel: string;\n}\n\n/** Command that is always presented in the shared overflow menu. */\nexport interface BarTitleOverflowAction extends BarTitleAction {\n type: 'overflow';\n}\n\n/**\n * Ordered page-header action model. IDs must be non-empty and unique across\n * top-level actions and every nested menu choice. At most the first eligible\n * action renders beside the title; remaining actions use the text-only overflow.\n */\nexport type BarTitleActionConfigItem =\n | BarTitleButtonAction\n | BarTitleIconAction\n | BarTitleMenuAction\n | BarTitleSplitAction\n | BarTitleOverflowAction\n | BarTitleDivider;\n\nexport type BarTitleVariant = 'expanded' | 'compact' | 'constrained';\nexport type BarTitlePlacement = 'page' | 'shell-bar';\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 { h } from '@stencil/core';\nimport type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport { isBarTitleDivider } from './bar-title-types';\nimport type {\n BarTitleActionConfigItem,\n BarTitleMenuAction,\n BarTitlePrimaryAction,\n BarTitleSplitAction,\n} from './bar-title-types';\nimport { barTitleChoiceSections } from './bar-title-actions';\n\nexport type FocusableBarTitleButton = HTMLElement & {\n setFocus?: (segment?: 'primary' | 'menu') => Promise<void>;\n};\n\nexport function barTitleActionMenuDomId(\n classPrefix: string,\n instanceId: number,\n resolvedActionItems: BarTitleActionConfigItem[],\n id: string\n): string {\n const index = resolvedActionItems.findIndex(item => !isBarTitleDivider(item) && item.id === id);\n return `${classPrefix}-action-menu-${instanceId}-${index}`;\n}\n\nexport function barTitleActionMenuAnchor(\n id: string,\n overflowTrigger: FocusableBarTitleButton | null,\n actionTriggers: Map<string, FocusableBarTitleButton>\n): HTMLElement | undefined {\n if (id === '__overflow') return overflowTrigger ?? undefined;\n const trigger = actionTriggers.get(id);\n if (!trigger) return undefined;\n const splitMenu = trigger.querySelector<HTMLElement>('.ds-button-split__menu');\n return splitMenu ?? trigger;\n}\n\nexport async function restoreBarTitleActionFocus(options: {\n menuId: string;\n overflowTrigger: FocusableBarTitleButton | null;\n actionTriggers: Map<string, FocusableBarTitleButton>;\n resolvedActionItems: BarTitleActionConfigItem[];\n}): Promise<void> {\n if (options.menuId === '__overflow') {\n await options.overflowTrigger?.setFocus?.();\n return;\n }\n const trigger = options.actionTriggers.get(options.menuId);\n if (!trigger || !('setFocus' in trigger)) return;\n const split = options.resolvedActionItems.some(\n item => !isBarTitleDivider(item) && item.id === options.menuId && item.type === 'split'\n );\n await trigger.setFocus?.(split ? 'menu' : undefined);\n}\n\nfunction className(prefix: string, part: string): string {\n return `${prefix}__${part}`;\n}\n\nexport function renderBarTitleBack(options: {\n classPrefix: string;\n showBack: boolean;\n backAriaLabel: string;\n onBack: (event: MouseEvent) => void;\n}) {\n if (!options.showBack) return null;\n return (\n <ds-tooltip label=\"Go back\" side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n class={className(options.classPrefix, 'back')}\n variant=\"icon\"\n icon=\"ChevronLeft\"\n aria-label={options.backAriaLabel}\n size=\"md\"\n activeFill={false}\n hasBorder={false}\n onDsClick={(event: CustomEvent<MouseEvent>) => options.onBack(event.detail)}\n />\n </ds-tooltip>\n );\n}\n\nexport function renderBarTitleSectionTrigger(options: {\n classPrefix: string;\n triggerId: string;\n menuId: string;\n open: boolean;\n surfaceOpen: boolean;\n ariaLabel: string;\n selectedLabel: string;\n setTriggerEl: (el: HTMLButtonElement | null) => void;\n onToggle: (event: MouseEvent) => void;\n}) {\n const prefix = options.classPrefix;\n return (\n <div class={className(prefix, 'section-selector')}>\n <button\n ref={el => {\n options.setTriggerEl((el as HTMLButtonElement | null) ?? null);\n }}\n id={options.triggerId}\n class={{\n [className(prefix, 'section-trigger')]: true,\n [`${className(prefix, 'section-trigger')}--expanded`]: options.open,\n 'ds-interaction-fill--surface-open': options.surfaceOpen,\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={options.menuId}\n aria-expanded={String(options.open)}\n aria-label={options.ariaLabel}\n onClick={options.onToggle}\n >\n <ds-text\n class={`${className(prefix, 'section-label')} ds-interaction-fill__content`}\n as=\"span\"\n variant=\"text-body-medium\"\n emphasis\n color=\"primary\"\n lineTruncation={1}\n >\n {options.selectedLabel}\n </ds-text>\n <ds-icon\n class={`${className(prefix, '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\nfunction renderVisibleAction(\n action: BarTitleActionConfigItem,\n options: {\n classPrefix: string;\n compact: boolean;\n actionItems: BarTitleActionConfigItem[] | undefined;\n primaryAction: BarTitlePrimaryAction | null;\n resolvedActionItems: BarTitleActionConfigItem[];\n instanceId: number;\n openActionMenuId: string;\n surfaceActionMenuId: string;\n actionTriggers: Map<string, FocusableBarTitleButton>;\n toggleActionMenu: (id: string, event: MouseEvent) => void;\n emitAction: (id: string) => void;\n }\n) {\n if (isBarTitleDivider(action) || action.type === 'overflow') return null;\n const appearance = action.appearance ?? (action.type === 'split' ? 'filled' : 'unfilled');\n const variant: 'icon' | 'icon-label' | 'label' =\n action.type === 'icon' ? 'icon' : action.icon ? 'icon-label' : 'label';\n const menu = action.type === 'menu';\n const menuId = menu\n ? barTitleActionMenuDomId(\n options.classPrefix,\n options.instanceId,\n options.resolvedActionItems,\n action.id\n )\n : undefined;\n const prefix = options.classPrefix;\n\n if (action.type === 'split') {\n const splitMenuId = barTitleActionMenuDomId(\n options.classPrefix,\n options.instanceId,\n options.resolvedActionItems,\n action.id\n );\n const splitProps = {\n key: action.id,\n ref: (el: FocusableBarTitleButton | undefined) => {\n if (el) options.actionTriggers.set(action.id, el);\n else options.actionTriggers.delete(action.id);\n },\n class: `${className(prefix, 'action')} ${className(prefix, 'split-action')}`,\n split: true,\n variant,\n label: action.label,\n icon: action.icon ?? '',\n menuAriaLabel: action.menuAriaLabel,\n controls: splitMenuId,\n expanded: options.openActionMenuId === action.id,\n surfaceOpen: options.surfaceActionMenuId === action.id,\n size: 'md' as const,\n type: action.buttonType ?? 'button',\n isInactive: action.isInactive,\n isLoading: action.isLoading,\n onDsClick: () => options.emitAction(action.id),\n onDsMenuClick: (event: CustomEvent<MouseEvent>) =>\n options.toggleActionMenu(action.id, event.detail),\n };\n return appearance === 'filled' ? (\n <ds-button-filled\n {...splitProps}\n intent={action.intent ?? 'brand'}\n contrast={action.contrast ?? 'bold'}\n />\n ) : (\n <ds-button-unfilled {...splitProps} />\n );\n }\n\n const buttonProps = {\n key: action.id,\n ref: (el: FocusableBarTitleButton | undefined) => {\n if (el) options.actionTriggers.set(action.id, el);\n else options.actionTriggers.delete(action.id);\n },\n class: `${className(prefix, 'action')} ${className(prefix, 'action')}--${action.type}${\n options.actionItems === undefined && action.id === options.primaryAction?.id\n ? ` ${className(prefix, 'primary-action')}`\n : ''\n }`,\n variant,\n icon: action.icon ?? '',\n label: action.label,\n ariaLabel: action.ariaLabel ?? (action.type === 'icon' ? action.label : undefined),\n size: 'md' as const,\n type: action.buttonType ?? 'button',\n isInactive: action.isInactive,\n isLoading: action.isLoading,\n controls: menuId,\n expanded: menu ? options.openActionMenuId === action.id : undefined,\n surfaceOpen: menu && options.surfaceActionMenuId === action.id,\n hasMenu: menu,\n onDsClick: (event: CustomEvent<MouseEvent>) => {\n if (menu) options.toggleActionMenu(action.id, event.detail);\n else options.emitAction(action.id);\n },\n };\n\n const button =\n appearance === 'filled' ? (\n <ds-button-filled\n {...buttonProps}\n intent={action.intent ?? 'brand'}\n contrast={action.contrast ?? 'bold'}\n />\n ) : (\n <ds-button-unfilled {...buttonProps} />\n );\n\n return action.type === 'icon' ? (\n <ds-tooltip key={action.id} label={action.label} side=\"bottom\" size=\"sm\">\n {button}\n </ds-tooltip>\n ) : (\n button\n );\n}\n\nexport function renderBarTitleActions(options: {\n classPrefix: string;\n compact: boolean;\n visibleActions: BarTitleActionConfigItem[];\n showOverflowTrigger: boolean;\n actionItems: BarTitleActionConfigItem[] | undefined;\n primaryAction: BarTitlePrimaryAction | null;\n resolvedActionItems: BarTitleActionConfigItem[];\n instanceId: number;\n openActionMenuId: string;\n surfaceActionMenuId: string;\n actionsAriaLabel: string;\n actionMenuTriggerId: string;\n actionMenuId: string;\n actionTriggers: Map<string, FocusableBarTitleButton>;\n setOverflowTriggerEl: (el: FocusableBarTitleButton | null) => void;\n toggleActionMenu: (id: string, event: MouseEvent) => void;\n emitAction: (id: string) => void;\n}) {\n if (options.visibleActions.length === 0 && !options.showOverflowTrigger) return null;\n const prefix = options.classPrefix;\n\n return (\n <div class={className(prefix, 'actions')}>\n {options.visibleActions.map(action => renderVisibleAction(action, options))}\n {options.showOverflowTrigger ? (\n <ds-tooltip label=\"Page options\" side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n ref={el => {\n options.setOverflowTriggerEl((el as FocusableBarTitleButton | null) ?? null);\n }}\n id={options.actionMenuTriggerId}\n class={className(prefix, 'more-actions')}\n variant=\"icon\"\n icon=\"Ellipses\"\n aria-label={options.actionsAriaLabel}\n size=\"md\"\n activeFill={!options.compact}\n hasBorder={options.visibleActions.length > 0}\n haspopup=\"menu\"\n controls={options.actionMenuId}\n expanded={options.openActionMenuId === '__overflow'}\n surfaceOpen={options.surfaceActionMenuId === '__overflow'}\n onDsClick={(event: CustomEvent<MouseEvent>) =>\n options.toggleActionMenu('__overflow', event.detail)\n }\n />\n </ds-tooltip>\n ) : null}\n </div>\n );\n}\n\nexport function renderBarTitleActionMenus(options: {\n classPrefix: string;\n visibleActions: BarTitleActionConfigItem[];\n instanceId: number;\n resolvedActionItems: BarTitleActionConfigItem[];\n sideOffset?: number | string;\n openActionMenuId: string;\n actionMenuInitialFocusVisible: boolean;\n overflowTrigger: FocusableBarTitleButton | null;\n actionTriggers: Map<string, FocusableBarTitleButton>;\n closeActionMenu: () => void;\n finishActionMenuClose: (event: CustomEvent<void>) => void;\n handleActionSelect: (event: CustomEvent<MenuItemData>) => void;\n}) {\n const prefix = options.classPrefix;\n return options.visibleActions.flatMap(action => {\n if (isBarTitleDivider(action) || (action.type !== 'menu' && action.type !== 'split')) {\n return [];\n }\n const menuAction = action as BarTitleMenuAction | BarTitleSplitAction;\n const menuLabel = menuAction.menuAriaLabel ?? menuAction.ariaLabel ?? menuAction.label;\n return [\n <ds-menu\n key={action.id}\n id={barTitleActionMenuDomId(\n options.classPrefix,\n options.instanceId,\n options.resolvedActionItems,\n action.id\n )}\n class={className(prefix, 'action-menu')}\n anchor={barTitleActionMenuAnchor(\n action.id,\n options.overflowTrigger,\n options.actionTriggers\n )}\n align=\"end\"\n sideOffset={options.sideOffset}\n menuLabel={menuLabel}\n open={options.openActionMenuId === action.id}\n initialFocusVisible={options.actionMenuInitialFocusVisible}\n sections={barTitleChoiceSections(menuAction.choices)}\n onDsClose={options.closeActionMenu}\n onDsAfterClose={options.finishActionMenuClose}\n onDsSelect={options.handleActionSelect}\n />,\n ];\n });\n}\n\nexport function renderBarTitleOverflowMenu(options: {\n classPrefix: string;\n showOverflowTrigger: boolean;\n actionMenuId: string;\n actionMenuTriggerId: string;\n sideOffset?: number | string;\n actionsAriaLabel: string;\n open: boolean;\n actionMenuInitialFocusVisible: boolean;\n actionMenuSections: MenuSection[];\n closeActionMenu: () => void;\n finishActionMenuClose: (event: CustomEvent<void>) => void;\n handleActionSelect: (event: CustomEvent<MenuItemData>) => void;\n}) {\n if (!options.showOverflowTrigger) return null;\n return (\n <ds-menu\n id={options.actionMenuId}\n class={className(options.classPrefix, 'action-menu')}\n anchorId={options.actionMenuTriggerId}\n align=\"end\"\n sideOffset={options.sideOffset}\n menuLabel={options.actionsAriaLabel}\n open={options.open}\n initialFocusVisible={options.actionMenuInitialFocusVisible}\n sections={options.actionMenuSections}\n onDsClose={options.closeActionMenu}\n onDsAfterClose={options.finishActionMenuClose}\n onDsSelect={options.handleActionSelect}\n />\n );\n}\n","import type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport type { TabItem } from '../TabGroup/tab-item-utils';\nimport {\n isBarTitleDivider,\n type BarTitleSection,\n type BarTitleSectionItem,\n} from './bar-title-types';\n\nexport function selectableBarTitleSections(sections: BarTitleSectionItem[]): BarTitleSection[] {\n return sections.filter((item): item is BarTitleSection => !isBarTitleDivider(item));\n}\n\nexport function effectiveBarTitleSectionValue(\n sections: BarTitleSectionItem[],\n value: string\n): string {\n const selectable = selectableBarTitleSections(sections);\n return selectable.some(section => section.id === value) ? value : (selectable[0]?.id ?? '');\n}\n\nexport function selectedBarTitleSectionLabel(\n sections: BarTitleSectionItem[],\n value: string\n): string {\n const selectedId = effectiveBarTitleSectionValue(sections, value);\n return (\n selectableBarTitleSections(sections).find(section => section.id === selectedId)?.label ?? ''\n );\n}\n\nexport function barTitleSectionTriggerAriaLabel(\n sectionsAriaLabel: string,\n selectedLabel: string\n): string {\n return `${sectionsAriaLabel}. Current section: ${selectedLabel}`;\n}\n\nexport function barTitleSectionMenuSections(\n sections: BarTitleSectionItem[],\n selectedId: string\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 sections) {\n if (isBarTitleDivider(item)) {\n commit();\n } else {\n items.push({\n label: item.label,\n value: item.id,\n isSelected: item.id === selectedId,\n isInactive: item.isInactive,\n });\n }\n }\n commit();\n return groups;\n}\n\nexport function barTitleSectionsToTabs(sections: BarTitleSectionItem[]): TabItem[] {\n return sections.map(item =>\n isBarTitleDivider(item)\n ? { type: 'divider' }\n : {\n id: item.id,\n label: item.label,\n isInactive: item.isInactive,\n }\n );\n}\n\nexport function barTitleSectionsDigest(sections: BarTitleSectionItem[] | undefined): string {\n return (sections ?? [])\n .map(item =>\n isBarTitleDivider(item) ? '|' : `${item.id}\\0${item.label}\\0${item.isInactive ? '1' : '0'}`\n )\n .join('\\n');\n}\n"],"mappings":"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","ignoreList":[]}