@pine-ds/core 4.5.0 → 4.6.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 (467) hide show
  1. package/components/attributes.js +1 -1
  2. package/components/mock-pds-modal.js +1 -1
  3. package/components/pds-combobox.js +1 -1
  4. package/components/pds-container.js +1 -1
  5. package/components/pds-copytext.js +1 -1
  6. package/components/pds-datepicker.js +1 -1
  7. package/components/pds-divider.js +1 -1
  8. package/components/pds-drawer-content.js +1 -1
  9. package/components/pds-drawer-footer.js +1 -1
  10. package/components/pds-drawer-header.js +1 -1
  11. package/components/pds-drawer.js +1 -1
  12. package/components/pds-dropdown-menu-item.js +1 -1
  13. package/components/pds-dropdown-menu-separator.js +1 -1
  14. package/components/pds-dropdown-menu.js +1 -1
  15. package/components/pds-filter.js +1 -1
  16. package/components/pds-filters.js +1 -1
  17. package/components/pds-icon2.js +1 -1
  18. package/components/pds-image.js +1 -1
  19. package/components/pds-input2.js +1 -1
  20. package/components/pds-link2.js +1 -1
  21. package/components/pds-loader2.js +1 -1
  22. package/components/pds-modal-content.js +1 -1
  23. package/components/pds-modal-footer.js +1 -1
  24. package/components/pds-modal-header.js +1 -1
  25. package/components/pds-modal2.js +1 -1
  26. package/components/pds-multiselect.js +1 -1
  27. package/components/pds-popover.js +1 -1
  28. package/components/pds-progress.js +1 -1
  29. package/components/pds-property.js +1 -1
  30. package/components/pds-radio-group.js +1 -1
  31. package/components/pds-radio.js +1 -1
  32. package/components/pds-row.js +1 -1
  33. package/components/pds-select.js +1 -1
  34. package/components/pds-sortable-item.js +1 -1
  35. package/components/pds-sortable.js +1 -1
  36. package/components/pds-switch.js +1 -1
  37. package/components/pds-tab.js +1 -1
  38. package/components/pds-table-body.js +1 -1
  39. package/components/pds-table-cell2.js +1 -1
  40. package/components/pds-table-head-cell2.js +1 -1
  41. package/components/pds-table-head.js +1 -1
  42. package/components/pds-table-row.js +1 -1
  43. package/components/pds-tabpanel.js +1 -1
  44. package/components/pds-tabs.js +1 -1
  45. package/components/pds-text2.js +1 -1
  46. package/components/pds-textarea.js +1 -1
  47. package/components/pds-toast.js +1 -1
  48. package/components/pds-tooltip.js +1 -1
  49. package/dist/cjs/{attributes-DXvaSETR.js → attributes-BJ7KBHql.js} +18 -11
  50. package/dist/cjs/{index-D-QQKB0y.js → index-5Azb8EQG.js} +1 -1
  51. package/dist/cjs/{index-BQjWfQXw.js → index-jl_Q819j.js} +1 -1
  52. package/dist/cjs/index.cjs.js +1 -1
  53. package/dist/cjs/keep-hydrated-CiXgkEYd.js +196 -0
  54. package/dist/cjs/loader.cjs.js +3 -3
  55. package/dist/cjs/mock-pds-modal.cjs.entry.js +3 -3
  56. package/dist/cjs/pds-accordion.cjs.entry.js +3 -3
  57. package/dist/cjs/pds-alert.cjs.entry.js +2 -2
  58. package/dist/cjs/pds-avatar.cjs.entry.js +3 -3
  59. package/dist/cjs/pds-box.cjs.entry.js +3 -3
  60. package/dist/cjs/pds-button.cjs.entry.js +3 -3
  61. package/dist/cjs/pds-checkbox.cjs.entry.js +4 -4
  62. package/dist/cjs/pds-chip.cjs.entry.js +4 -4
  63. package/dist/cjs/pds-combobox.cjs.entry.js +156 -27
  64. package/dist/cjs/pds-container.cjs.entry.js +3 -3
  65. package/dist/cjs/pds-copytext.cjs.entry.js +5 -5
  66. package/dist/cjs/pds-datepicker.cjs.entry.js +5 -5
  67. package/dist/cjs/pds-divider.cjs.entry.js +3 -3
  68. package/dist/cjs/pds-drawer-content.cjs.entry.js +3 -3
  69. package/dist/cjs/pds-drawer-footer.cjs.entry.js +3 -3
  70. package/dist/cjs/pds-drawer-header.cjs.entry.js +3 -3
  71. package/dist/cjs/pds-drawer.cjs.entry.js +4 -4
  72. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +3 -3
  73. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +3 -3
  74. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +16 -8
  75. package/dist/cjs/pds-filter.cjs.entry.js +4 -4
  76. package/dist/cjs/pds-filters.cjs.entry.js +3 -3
  77. package/dist/cjs/pds-icon.cjs.entry.js +27 -4
  78. package/dist/cjs/pds-image.cjs.entry.js +4 -4
  79. package/dist/cjs/pds-input.cjs.entry.js +6 -6
  80. package/dist/cjs/pds-link.cjs.entry.js +5 -5
  81. package/dist/cjs/pds-loader.cjs.entry.js +4 -4
  82. package/dist/cjs/pds-modal-content.cjs.entry.js +4 -4
  83. package/dist/cjs/pds-modal-footer.cjs.entry.js +3 -3
  84. package/dist/cjs/pds-modal-header.cjs.entry.js +3 -3
  85. package/dist/cjs/pds-modal.cjs.entry.js +5 -5
  86. package/dist/cjs/pds-multiselect.cjs.entry.js +6 -6
  87. package/dist/cjs/pds-popover.cjs.entry.js +58 -12
  88. package/dist/cjs/pds-progress.cjs.entry.js +4 -4
  89. package/dist/cjs/pds-property.cjs.entry.js +3 -3
  90. package/dist/cjs/pds-radio-group.cjs.entry.js +6 -6
  91. package/dist/cjs/pds-radio.cjs.entry.js +7 -7
  92. package/dist/cjs/pds-row.cjs.entry.js +4 -4
  93. package/dist/cjs/pds-select.cjs.entry.js +5 -5
  94. package/dist/cjs/pds-sortable-item.cjs.entry.js +5 -5
  95. package/dist/cjs/pds-sortable.cjs.entry.js +4 -4
  96. package/dist/cjs/pds-switch.cjs.entry.js +7 -7
  97. package/dist/cjs/pds-tab.cjs.entry.js +13 -2
  98. package/dist/cjs/pds-table-body.cjs.entry.js +3 -3
  99. package/dist/cjs/pds-table-cell.cjs.entry.js +4 -4
  100. package/dist/cjs/pds-table-head-cell.cjs.entry.js +5 -5
  101. package/dist/cjs/pds-table-head.cjs.entry.js +3 -3
  102. package/dist/cjs/pds-table-row.cjs.entry.js +3 -3
  103. package/dist/cjs/pds-table.cjs.entry.js +2 -2
  104. package/dist/cjs/pds-tabpanel.cjs.entry.js +15 -3
  105. package/dist/cjs/pds-tabs.cjs.entry.js +111 -7
  106. package/dist/cjs/pds-text.cjs.entry.js +3 -3
  107. package/dist/cjs/pds-textarea.cjs.entry.js +8 -8
  108. package/dist/cjs/pds-toast.cjs.entry.js +5 -5
  109. package/dist/cjs/pds-tooltip.cjs.entry.js +4 -4
  110. package/dist/cjs/pine-core.cjs.js +3 -3
  111. package/dist/collection/components/pds-combobox/grouped-options-panel.js +21 -3
  112. package/dist/collection/components/pds-combobox/pds-combobox.css +42 -13
  113. package/dist/collection/components/pds-combobox/pds-combobox.js +135 -22
  114. package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +45 -0
  115. package/dist/collection/components/pds-container/pds-container.js +1 -1
  116. package/dist/collection/components/pds-copytext/pds-copytext.js +1 -1
  117. package/dist/collection/components/pds-datepicker/pds-datepicker.js +2 -2
  118. package/dist/collection/components/pds-divider/pds-divider.js +1 -1
  119. package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.js +1 -1
  120. package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.js +1 -1
  121. package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.js +1 -1
  122. package/dist/collection/components/pds-drawer/pds-drawer.js +2 -2
  123. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +1 -1
  124. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +1 -1
  125. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +19 -5
  126. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +16 -5
  127. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +1 -1
  128. package/dist/collection/components/pds-filters/pds-filters.js +1 -1
  129. package/dist/collection/components/pds-image/pds-image.js +2 -2
  130. package/dist/collection/components/pds-input/pds-input.js +2 -2
  131. package/dist/collection/components/pds-link/pds-link.js +2 -2
  132. package/dist/collection/components/pds-loader/pds-loader.js +1 -1
  133. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +2 -2
  134. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +1 -1
  135. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +1 -1
  136. package/dist/collection/components/pds-modal/pds-modal.js +3 -3
  137. package/dist/collection/components/pds-modal/test/mock-pds-modal.js +1 -1
  138. package/dist/collection/components/pds-multiselect/pds-multiselect.js +3 -3
  139. package/dist/collection/components/pds-popover/pds-popover.js +15 -9
  140. package/dist/collection/components/pds-progress/pds-progress.js +1 -1
  141. package/dist/collection/components/pds-property/pds-property.js +1 -1
  142. package/dist/collection/components/pds-radio/pds-radio.js +3 -3
  143. package/dist/collection/components/pds-radio-group/pds-radio-group.js +3 -3
  144. package/dist/collection/components/pds-row/pds-row.js +1 -1
  145. package/dist/collection/components/pds-select/pds-select.js +1 -1
  146. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
  147. package/dist/collection/components/pds-sortable/pds-sortable.js +1 -1
  148. package/dist/collection/components/pds-switch/pds-switch.js +3 -3
  149. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
  150. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +2 -2
  151. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +1 -1
  152. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +2 -2
  153. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +1 -1
  154. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js +11 -0
  155. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +13 -1
  156. package/dist/collection/components/pds-tabs/pds-tabs.js +111 -7
  157. package/dist/collection/components/pds-text/pds-text.js +1 -1
  158. package/dist/collection/components/pds-textarea/pds-textarea.js +4 -4
  159. package/dist/collection/components/pds-toast/pds-toast.js +3 -3
  160. package/dist/collection/components/pds-tooltip/pds-tooltip.js +2 -2
  161. package/dist/collection/utils/attributes.js +18 -11
  162. package/dist/collection/utils/css.js +41 -0
  163. package/dist/collection/utils/keep-hydrated.js +133 -6
  164. package/dist/docs.json +15 -6
  165. package/dist/esm/{attributes-CF5K2pxn.js → attributes-WXw_I_uJ.js} +18 -11
  166. package/dist/esm/{index-DxI-61GK.js → index-BJXk71tO.js} +1 -1
  167. package/dist/esm/{index-2HMD-zUO.js → index-Cw9J31qd.js} +1 -1
  168. package/dist/esm/index.js +1 -1
  169. package/dist/esm/keep-hydrated-BLG6RDBt.js +190 -0
  170. package/dist/esm/loader.js +4 -4
  171. package/dist/esm/mock-pds-modal.entry.js +3 -3
  172. package/dist/esm/pds-accordion.entry.js +3 -3
  173. package/dist/esm/pds-alert.entry.js +2 -2
  174. package/dist/esm/pds-avatar.entry.js +3 -3
  175. package/dist/esm/pds-box.entry.js +3 -3
  176. package/dist/esm/pds-button.entry.js +3 -3
  177. package/dist/esm/pds-checkbox.entry.js +4 -4
  178. package/dist/esm/pds-chip.entry.js +4 -4
  179. package/dist/esm/pds-combobox.entry.js +156 -27
  180. package/dist/esm/pds-container.entry.js +3 -3
  181. package/dist/esm/pds-copytext.entry.js +5 -5
  182. package/dist/esm/pds-datepicker.entry.js +5 -5
  183. package/dist/esm/pds-divider.entry.js +3 -3
  184. package/dist/esm/pds-drawer-content.entry.js +3 -3
  185. package/dist/esm/pds-drawer-footer.entry.js +3 -3
  186. package/dist/esm/pds-drawer-header.entry.js +3 -3
  187. package/dist/esm/pds-drawer.entry.js +4 -4
  188. package/dist/esm/pds-dropdown-menu-item.entry.js +3 -3
  189. package/dist/esm/pds-dropdown-menu-separator.entry.js +3 -3
  190. package/dist/esm/pds-dropdown-menu.entry.js +16 -8
  191. package/dist/esm/pds-filter.entry.js +4 -4
  192. package/dist/esm/pds-filters.entry.js +3 -3
  193. package/dist/esm/pds-icon.entry.js +27 -4
  194. package/dist/esm/pds-image.entry.js +4 -4
  195. package/dist/esm/pds-input.entry.js +6 -6
  196. package/dist/esm/pds-link.entry.js +5 -5
  197. package/dist/esm/pds-loader.entry.js +4 -4
  198. package/dist/esm/pds-modal-content.entry.js +4 -4
  199. package/dist/esm/pds-modal-footer.entry.js +3 -3
  200. package/dist/esm/pds-modal-header.entry.js +3 -3
  201. package/dist/esm/pds-modal.entry.js +5 -5
  202. package/dist/esm/pds-multiselect.entry.js +6 -6
  203. package/dist/esm/pds-popover.entry.js +58 -12
  204. package/dist/esm/pds-progress.entry.js +4 -4
  205. package/dist/esm/pds-property.entry.js +3 -3
  206. package/dist/esm/pds-radio-group.entry.js +6 -6
  207. package/dist/esm/pds-radio.entry.js +7 -7
  208. package/dist/esm/pds-row.entry.js +4 -4
  209. package/dist/esm/pds-select.entry.js +5 -5
  210. package/dist/esm/pds-sortable-item.entry.js +5 -5
  211. package/dist/esm/pds-sortable.entry.js +4 -4
  212. package/dist/esm/pds-switch.entry.js +7 -7
  213. package/dist/esm/pds-tab.entry.js +13 -2
  214. package/dist/esm/pds-table-body.entry.js +3 -3
  215. package/dist/esm/pds-table-cell.entry.js +4 -4
  216. package/dist/esm/pds-table-head-cell.entry.js +5 -5
  217. package/dist/esm/pds-table-head.entry.js +3 -3
  218. package/dist/esm/pds-table-row.entry.js +3 -3
  219. package/dist/esm/pds-table.entry.js +2 -2
  220. package/dist/esm/pds-tabpanel.entry.js +15 -3
  221. package/dist/esm/pds-tabs.entry.js +111 -7
  222. package/dist/esm/pds-text.entry.js +3 -3
  223. package/dist/esm/pds-textarea.entry.js +8 -8
  224. package/dist/esm/pds-toast.entry.js +5 -5
  225. package/dist/esm/pds-tooltip.entry.js +4 -4
  226. package/dist/esm/pine-core.js +4 -4
  227. package/dist/esm-es5/attributes-WXw_I_uJ.js +1 -0
  228. package/dist/esm-es5/{index-2HMD-zUO.js → index-Cw9J31qd.js} +2 -2
  229. package/dist/esm-es5/index.js +1 -1
  230. package/dist/esm-es5/keep-hydrated-BLG6RDBt.js +1 -0
  231. package/dist/esm-es5/loader.js +1 -1
  232. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  233. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  234. package/dist/esm-es5/pds-alert.entry.js +1 -1
  235. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  236. package/dist/esm-es5/pds-box.entry.js +1 -1
  237. package/dist/esm-es5/pds-button.entry.js +1 -1
  238. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  239. package/dist/esm-es5/pds-chip.entry.js +1 -1
  240. package/dist/esm-es5/pds-combobox.entry.js +2 -2
  241. package/dist/esm-es5/pds-container.entry.js +1 -1
  242. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  243. package/dist/esm-es5/pds-datepicker.entry.js +1 -1
  244. package/dist/esm-es5/pds-divider.entry.js +1 -1
  245. package/dist/esm-es5/pds-drawer-content.entry.js +1 -1
  246. package/dist/esm-es5/pds-drawer-footer.entry.js +1 -1
  247. package/dist/esm-es5/pds-drawer-header.entry.js +1 -1
  248. package/dist/esm-es5/pds-drawer.entry.js +1 -1
  249. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  250. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  251. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  252. package/dist/esm-es5/pds-filter.entry.js +1 -1
  253. package/dist/esm-es5/pds-filters.entry.js +1 -1
  254. package/dist/esm-es5/pds-icon.entry.js +1 -1
  255. package/dist/esm-es5/pds-image.entry.js +1 -1
  256. package/dist/esm-es5/pds-input.entry.js +1 -1
  257. package/dist/esm-es5/pds-link.entry.js +1 -1
  258. package/dist/esm-es5/pds-loader.entry.js +1 -1
  259. package/dist/esm-es5/pds-modal-content.entry.js +1 -1
  260. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  261. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  262. package/dist/esm-es5/pds-modal.entry.js +1 -1
  263. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  264. package/dist/esm-es5/pds-popover.entry.js +1 -1
  265. package/dist/esm-es5/pds-progress.entry.js +1 -1
  266. package/dist/esm-es5/pds-property.entry.js +1 -1
  267. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  268. package/dist/esm-es5/pds-radio.entry.js +1 -1
  269. package/dist/esm-es5/pds-row.entry.js +1 -1
  270. package/dist/esm-es5/pds-select.entry.js +1 -1
  271. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  272. package/dist/esm-es5/pds-sortable.entry.js +2 -2
  273. package/dist/esm-es5/pds-switch.entry.js +1 -1
  274. package/dist/esm-es5/pds-tab.entry.js +1 -1
  275. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  276. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  277. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  278. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  279. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  280. package/dist/esm-es5/pds-table.entry.js +1 -1
  281. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  282. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  283. package/dist/esm-es5/pds-text.entry.js +1 -1
  284. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  285. package/dist/esm-es5/pds-toast.entry.js +1 -1
  286. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  287. package/dist/esm-es5/pine-core.js +1 -1
  288. package/dist/pine-core/index.esm.js +1 -1
  289. package/dist/pine-core/{p-9a7ee7cb.system.entry.js → p-0092444c.system.entry.js} +1 -1
  290. package/dist/pine-core/{p-d576e542.system.entry.js → p-01aa382c.system.entry.js} +1 -1
  291. package/dist/pine-core/p-01c9b8f3.entry.js +1 -0
  292. package/dist/pine-core/{p-d69cfaa4.entry.js → p-02088776.entry.js} +1 -1
  293. package/dist/pine-core/p-049f126a.entry.js +1 -0
  294. package/dist/pine-core/{p-8b9d8fb5.system.entry.js → p-080cb087.system.entry.js} +1 -1
  295. package/dist/pine-core/{p-99317375.system.entry.js → p-0913f696.system.entry.js} +1 -1
  296. package/dist/pine-core/{p-5737182f.entry.js → p-0a84d220.entry.js} +1 -1
  297. package/dist/pine-core/{p-4c9cccdb.system.entry.js → p-0b71ecb6.system.entry.js} +2 -2
  298. package/dist/pine-core/{p-37d73369.system.entry.js → p-1437585e.system.entry.js} +1 -1
  299. package/dist/pine-core/{p-22f041ee.system.entry.js → p-1ee86d87.system.entry.js} +1 -1
  300. package/dist/pine-core/{p-5decd81f.entry.js → p-208c7dbf.entry.js} +1 -1
  301. package/dist/pine-core/{p-51dff046.system.entry.js → p-258770cf.system.entry.js} +1 -1
  302. package/dist/pine-core/{p-1f2e5958.entry.js → p-258d5e83.entry.js} +1 -1
  303. package/dist/pine-core/{p-4e05a4f0.entry.js → p-26642718.entry.js} +1 -1
  304. package/dist/pine-core/{p-1b13f69c.system.entry.js → p-2ac2457b.system.entry.js} +1 -1
  305. package/dist/pine-core/p-2cb5483a.system.entry.js +1 -0
  306. package/dist/pine-core/{p-1f263c0b.system.entry.js → p-341c38f1.system.entry.js} +1 -1
  307. package/dist/pine-core/{p-bd7da23e.system.entry.js → p-3a959459.system.entry.js} +1 -1
  308. package/dist/pine-core/p-3c27088f.system.entry.js +1 -0
  309. package/dist/pine-core/{p-1e464117.entry.js → p-432d5ec7.entry.js} +1 -1
  310. package/dist/pine-core/{p-0de74105.entry.js → p-4849fda7.entry.js} +1 -1
  311. package/dist/pine-core/{p-f30d6192.system.entry.js → p-4d03d1e2.system.entry.js} +1 -1
  312. package/dist/pine-core/{p-2cb02706.entry.js → p-4de8f333.entry.js} +1 -1
  313. package/dist/pine-core/{p-152245fa.system.entry.js → p-4f94b4f1.system.entry.js} +1 -1
  314. package/dist/pine-core/{p-66cfef6d.system.entry.js → p-4fa63723.system.entry.js} +1 -1
  315. package/dist/pine-core/p-4fd454f6.entry.js +1 -0
  316. package/dist/pine-core/{p-70c6f0ed.system.entry.js → p-5442d983.system.entry.js} +1 -1
  317. package/dist/pine-core/{p-8027db25.entry.js → p-550c2fd3.entry.js} +1 -1
  318. package/dist/pine-core/{p-7d01e719.entry.js → p-55224683.entry.js} +1 -1
  319. package/dist/pine-core/{p-65e30a4c.entry.js → p-57a2f927.entry.js} +1 -1
  320. package/dist/pine-core/{p-721297b5.system.entry.js → p-5870b092.system.entry.js} +1 -1
  321. package/dist/pine-core/{p-6d83ad2d.system.entry.js → p-5c90091e.system.entry.js} +1 -1
  322. package/dist/pine-core/p-602c197f.entry.js +1 -0
  323. package/dist/pine-core/p-646afbca.system.entry.js +1 -0
  324. package/dist/pine-core/{p-45fcc5b7.entry.js → p-6bf853c9.entry.js} +1 -1
  325. package/dist/pine-core/{p-5d014059.entry.js → p-6d3610f9.entry.js} +1 -1
  326. package/dist/pine-core/{p-343546b1.system.entry.js → p-6eec23a7.system.entry.js} +1 -1
  327. package/dist/pine-core/{p-5132b8a1.entry.js → p-72865997.entry.js} +1 -1
  328. package/dist/pine-core/{p-9d33bb05.entry.js → p-73eb47fa.entry.js} +1 -1
  329. package/dist/pine-core/p-75ee0403.entry.js +1 -0
  330. package/dist/pine-core/p-77395d62.system.entry.js +1 -0
  331. package/dist/pine-core/p-7a287635.system.entry.js +1 -0
  332. package/dist/pine-core/p-7a5b21d2.system.entry.js +1 -0
  333. package/dist/pine-core/{p-a83a6618.system.entry.js → p-7bf6563a.system.entry.js} +1 -1
  334. package/dist/pine-core/{p-347ae53c.system.entry.js → p-7f367db4.system.entry.js} +1 -1
  335. package/dist/pine-core/{p-71e3a89e.system.entry.js → p-8191498f.system.entry.js} +1 -1
  336. package/dist/pine-core/{p-0166c620.entry.js → p-82cf4ec6.entry.js} +1 -1
  337. package/dist/pine-core/{p-16c2aa63.entry.js → p-84e9b7da.entry.js} +1 -1
  338. package/dist/pine-core/{p-bdf68e53.system.entry.js → p-86040cac.system.entry.js} +1 -1
  339. package/dist/pine-core/p-875b0436.system.entry.js +1 -0
  340. package/dist/pine-core/{p-87f91e02.system.entry.js → p-8c8cc079.system.entry.js} +1 -1
  341. package/dist/pine-core/{p-ba1b79c7.system.entry.js → p-8cc302aa.system.entry.js} +1 -1
  342. package/dist/pine-core/{p-5b7f7760.entry.js → p-8d292b48.entry.js} +1 -1
  343. package/dist/pine-core/{p-650ccffb.entry.js → p-8f531063.entry.js} +1 -1
  344. package/dist/pine-core/p-9109b90a.entry.js +1 -0
  345. package/dist/pine-core/p-94593f20.system.entry.js +1 -0
  346. package/dist/pine-core/{p-04fe5da7.system.entry.js → p-9880d251.system.entry.js} +1 -1
  347. package/dist/pine-core/p-99459e27.entry.js +1 -0
  348. package/dist/pine-core/{p-4414d442.system.entry.js → p-9a0083dd.system.entry.js} +1 -1
  349. package/dist/pine-core/{p-9835c74b.entry.js → p-9ab95438.entry.js} +1 -1
  350. package/dist/pine-core/{p-a6d09102.system.entry.js → p-9af131d6.system.entry.js} +1 -1
  351. package/dist/pine-core/{p-59491f98.entry.js → p-9dcd2cdb.entry.js} +1 -1
  352. package/dist/pine-core/{p-c00e46a5.system.entry.js → p-9e0f920a.system.entry.js} +1 -1
  353. package/dist/pine-core/p-BGLP3keB.js +1 -0
  354. package/dist/pine-core/p-BLG6RDBt.js +1 -0
  355. package/dist/pine-core/p-BR5nujVX.system.js +1 -0
  356. package/dist/pine-core/{p-BJlg6wq7.system.js → p-CGRdQc49.system.js} +2 -2
  357. package/dist/pine-core/{p-DeIDZHrg.js → p-CmSJytt1.js} +2 -2
  358. package/dist/pine-core/p-CuSNnuFu.system.js +1 -0
  359. package/dist/pine-core/{p-YQa3CeL9.system.js → p-Cy8cvR7I.system.js} +1 -1
  360. package/dist/pine-core/p-XW4H0W6i.system.js +1 -0
  361. package/dist/pine-core/p-a0960b3d.system.entry.js +1 -0
  362. package/dist/pine-core/p-a1230a74.system.entry.js +1 -0
  363. package/dist/pine-core/{p-fbea5703.entry.js → p-a19cd59c.entry.js} +1 -1
  364. package/dist/pine-core/p-a3735199.entry.js +1 -0
  365. package/dist/pine-core/p-a826f290.entry.js +1 -0
  366. package/dist/pine-core/{p-1ec4eeaf.system.entry.js → p-a85a6ab9.system.entry.js} +1 -1
  367. package/dist/pine-core/p-acce8eb2.entry.js +1 -0
  368. package/dist/pine-core/p-b1548a20.entry.js +1 -0
  369. package/dist/pine-core/{p-93877d4a.entry.js → p-b69f04b7.entry.js} +1 -1
  370. package/dist/pine-core/p-b75b0d09.system.entry.js +1 -0
  371. package/dist/pine-core/{p-02857936.entry.js → p-b8e8a4ce.entry.js} +1 -1
  372. package/dist/pine-core/{p-622e91e3.entry.js → p-b914dde8.entry.js} +2 -2
  373. package/dist/pine-core/{p-5bc670be.system.entry.js → p-ba1f65c2.system.entry.js} +1 -1
  374. package/dist/pine-core/p-bb68431a.entry.js +1 -0
  375. package/dist/pine-core/{p-c8e89b61.system.entry.js → p-bd67156b.system.entry.js} +1 -1
  376. package/dist/pine-core/{p-db4319fd.entry.js → p-beb23781.entry.js} +1 -1
  377. package/dist/pine-core/p-bf30dec0.entry.js +1 -0
  378. package/dist/pine-core/{p-91f712f4.system.entry.js → p-bf7ee3b7.system.entry.js} +1 -1
  379. package/dist/pine-core/{p-b5838211.system.entry.js → p-c5c9ed36.system.entry.js} +1 -1
  380. package/dist/pine-core/{p-21115986.system.entry.js → p-cb6a3e4c.system.entry.js} +1 -1
  381. package/dist/pine-core/{p-1cf1fced.entry.js → p-cde8eb81.entry.js} +1 -1
  382. package/dist/pine-core/{p-1d75a9b1.system.entry.js → p-cf08a6dd.system.entry.js} +1 -1
  383. package/dist/pine-core/p-cfd012d4.entry.js +1 -0
  384. package/dist/pine-core/{p-5e8d73d4.entry.js → p-d2c91e7a.entry.js} +1 -1
  385. package/dist/pine-core/{p-7e115d33.system.entry.js → p-da103a54.system.entry.js} +1 -1
  386. package/dist/pine-core/{p-7bbfb965.system.entry.js → p-db17c626.system.entry.js} +1 -1
  387. package/dist/pine-core/p-df539c42.system.entry.js +3 -0
  388. package/dist/pine-core/p-e0917a26.entry.js +1 -0
  389. package/dist/pine-core/p-e5420660.entry.js +1 -0
  390. package/dist/pine-core/{p-585832b1.entry.js → p-e800a2b1.entry.js} +1 -1
  391. package/dist/pine-core/{p-8b0fbeb3.entry.js → p-e836a041.entry.js} +1 -1
  392. package/dist/pine-core/{p-506d3e80.entry.js → p-e8cb76e8.entry.js} +1 -1
  393. package/dist/pine-core/p-ea4d4741.system.entry.js +1 -0
  394. package/dist/pine-core/{p-419f57c9.entry.js → p-eb5465ce.entry.js} +1 -1
  395. package/dist/pine-core/{p-63119d23.entry.js → p-ebd0bff2.entry.js} +1 -1
  396. package/dist/pine-core/p-ec5428fb.entry.js +1 -0
  397. package/dist/pine-core/{p-4e67e68e.entry.js → p-ed4b979e.entry.js} +1 -1
  398. package/dist/pine-core/p-f029b7da.system.entry.js +1 -0
  399. package/dist/pine-core/{p-e337f32c.system.entry.js → p-f0d24298.system.entry.js} +1 -1
  400. package/dist/pine-core/{p-9b9f66b7.entry.js → p-f1702281.entry.js} +1 -1
  401. package/dist/pine-core/p-f1f17940.entry.js +2 -0
  402. package/dist/pine-core/{p-238e5171.system.entry.js → p-f25e4731.system.entry.js} +1 -1
  403. package/dist/pine-core/{p-37d95be9.entry.js → p-f2c253d8.entry.js} +1 -1
  404. package/dist/pine-core/{p-a22091c4.system.entry.js → p-f77905aa.system.entry.js} +1 -1
  405. package/dist/pine-core/{p-bef04e15.system.entry.js → p-fc25b956.system.entry.js} +1 -1
  406. package/dist/pine-core/{p-f06ca8df.entry.js → p-ff3de72e.entry.js} +1 -1
  407. package/dist/pine-core/pine-core.esm.js +1 -1
  408. package/dist/pine-core/pine-core.js +1 -1
  409. package/dist/types/components/pds-combobox/combobox-interface.d.ts +8 -1
  410. package/dist/types/components/pds-combobox/grouped-options-panel.d.ts +7 -1
  411. package/dist/types/components/pds-combobox/pds-combobox.d.ts +31 -0
  412. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu.d.ts +4 -0
  413. package/dist/types/components/pds-tabs/pds-tab/pds-tab.d.ts +3 -0
  414. package/dist/types/components/pds-tabs/pds-tabpanel/pds-tabpanel.d.ts +3 -0
  415. package/dist/types/components/pds-tabs/pds-tabs.d.ts +14 -2
  416. package/dist/types/components.d.ts +5 -5
  417. package/dist/types/utils/attributes.d.ts +2 -2
  418. package/dist/types/utils/css.d.ts +7 -0
  419. package/dist/types/utils/keep-hydrated.d.ts +29 -2
  420. package/dist/vscode.html-data.json +2 -2
  421. package/hydrate/index.js +604 -135
  422. package/hydrate/index.mjs +604 -135
  423. package/package.json +2 -2
  424. package/dist/cjs/keep-hydrated-iLS88j1Z.js +0 -67
  425. package/dist/esm/keep-hydrated-Dv7ssOTc.js +0 -63
  426. package/dist/esm-es5/attributes-CF5K2pxn.js +0 -1
  427. package/dist/esm-es5/keep-hydrated-Dv7ssOTc.js +0 -1
  428. package/dist/pine-core/p-1cd0acf0.system.entry.js +0 -1
  429. package/dist/pine-core/p-207c94da.entry.js +0 -1
  430. package/dist/pine-core/p-2357758d.system.entry.js +0 -1
  431. package/dist/pine-core/p-281efc69.entry.js +0 -1
  432. package/dist/pine-core/p-2ac9e90a.system.entry.js +0 -1
  433. package/dist/pine-core/p-2f539379.system.entry.js +0 -3
  434. package/dist/pine-core/p-34b575b6.entry.js +0 -2
  435. package/dist/pine-core/p-3b1d8fae.entry.js +0 -1
  436. package/dist/pine-core/p-539ef98c.entry.js +0 -1
  437. package/dist/pine-core/p-56576b6e.entry.js +0 -1
  438. package/dist/pine-core/p-5ac84b2f.entry.js +0 -1
  439. package/dist/pine-core/p-63854c10.system.entry.js +0 -1
  440. package/dist/pine-core/p-73bc6e9f.system.entry.js +0 -1
  441. package/dist/pine-core/p-798839f7.system.entry.js +0 -1
  442. package/dist/pine-core/p-834c678e.system.entry.js +0 -1
  443. package/dist/pine-core/p-912487fa.entry.js +0 -1
  444. package/dist/pine-core/p-969488f5.system.entry.js +0 -1
  445. package/dist/pine-core/p-9bcdfac2.entry.js +0 -1
  446. package/dist/pine-core/p-BMFBF3sJ.system.js +0 -1
  447. package/dist/pine-core/p-D2MUS7JO.js +0 -1
  448. package/dist/pine-core/p-D2yHYrxQ.system.js +0 -1
  449. package/dist/pine-core/p-Dv7ssOTc.js +0 -1
  450. package/dist/pine-core/p-TyevV8iv.system.js +0 -1
  451. package/dist/pine-core/p-afd5e2d7.entry.js +0 -1
  452. package/dist/pine-core/p-bde53290.system.entry.js +0 -1
  453. package/dist/pine-core/p-bf1aea9f.system.entry.js +0 -1
  454. package/dist/pine-core/p-c9395f43.system.entry.js +0 -1
  455. package/dist/pine-core/p-d5dd5599.entry.js +0 -1
  456. package/dist/pine-core/p-dc81ffff.entry.js +0 -1
  457. package/dist/pine-core/p-e46f7541.system.entry.js +0 -1
  458. package/dist/pine-core/p-e7ba30dd.system.entry.js +0 -1
  459. package/dist/pine-core/p-ed3dd3d2.entry.js +0 -1
  460. package/dist/pine-core/p-eee4f146.entry.js +0 -1
  461. package/dist/pine-core/p-f01e35e2.entry.js +0 -1
  462. package/dist/pine-core/p-f2e0da9a.entry.js +0 -1
  463. package/dist/pine-core/p-fc6ac917.entry.js +0 -1
  464. package/dist/pine-core/p-ffe276ef.entry.js +0 -1
  465. /package/dist/esm-es5/{index-DxI-61GK.js → index-BJXk71tO.js} +0 -0
  466. /package/dist/pine-core/{p-DxI-61GK.js → p-BJXk71tO.js} +0 -0
  467. /package/dist/pine-core/{p-CnO10OxH.system.js → p-n3_ytl_p.system.js} +0 -0
package/hydrate/index.mjs CHANGED
@@ -150,6 +150,109 @@ const isStencilClass = (el, name) => {
150
150
  const classNamesOf = (classes) => typeof classes === 'string'
151
151
  ? classes.split(/\s+/).filter(Boolean)
152
152
  : Object.keys(classes).filter((name) => classes[name]);
153
+ // Each restore that writes something counts. A real strip costs one, but a script that undoes the
154
+ // restore as soon as it lands (from a MutationObserver) keeps both going forever, all in
155
+ // microtasks, so the page never renders or takes input. More writes than this before the next task
156
+ // means that kind of fight. A script that undoes it from a timer or animation frame gets a fresh
157
+ // budget each task; the page stays responsive then, so that fight isn't capped.
158
+ const MAX_RESTORES_PER_TASK = 5;
159
+ // Callbacks waiting for the next task, all run by one message. A MessageChannel message isn't slowed
160
+ // down like a timer is in a background tab (or frozen by test fake timers); a timer is the fallback
161
+ // where it's missing. One message for all of them, so a morph that strips many hosts doesn't open a
162
+ // channel for each.
163
+ const nextTaskCallbacks = new Set();
164
+ const runNextTaskCallbacks = () => {
165
+ const callbacks = Array.from(nextTaskCallbacks);
166
+ nextTaskCallbacks.clear();
167
+ callbacks.forEach((callback) => callback());
168
+ };
169
+ const onNextTask = (callback) => {
170
+ nextTaskCallbacks.add(callback);
171
+ if (nextTaskCallbacks.size > 1)
172
+ return;
173
+ if (typeof MessageChannel === 'undefined') {
174
+ setTimeout(runNextTaskCallbacks);
175
+ return;
176
+ }
177
+ const channel = new MessageChannel();
178
+ channel.port1.onmessage = () => {
179
+ channel.port1.close();
180
+ runNextTaskCallbacks();
181
+ };
182
+ channel.port2.postMessage(null);
183
+ };
184
+ /**
185
+ * The restore kind for a host's own classes, styles and attributes, shared by a component's own
186
+ * host restore and `keepPineHydrated`: one fight on a host's classes stops both, and warns once.
187
+ */
188
+ const HOST_RESTORE = 'host';
189
+ /**
190
+ * Remembers the Stencil classes an element has had, and returns all of them. A restore can't read
191
+ * them from the latest mutation alone: after a script's last strip they're gone from its old value
192
+ * too, and the next change would restore nothing.
193
+ */
194
+ const stencilClassesOf = (seen, el, oldValue) => {
195
+ [...classNamesOf(oldValue !== null && oldValue !== void 0 ? oldValue : ''), ...Array.from(el.classList)]
196
+ .filter((name) => isStencilClass(el, name))
197
+ .forEach((name) => seen.add(name));
198
+ return Array.from(seen);
199
+ };
200
+ // What each element has already been warned about, by kind of restore. A host with its own restore
201
+ // is also watched for its Stencil classes, so one fight on its classes stops both and needs one
202
+ // warning; a fight over a trigger's ARIA is a different kind, and warns on its own. On the global
203
+ // object, like `OBSERVER` below, so two copies of Pine on a page share it.
204
+ const WARNED = Symbol.for('@pine-ds/core/restoreWarnings');
205
+ const warnedKinds = () => {
206
+ var _a;
207
+ const store = globalThis;
208
+ return ((_a = store[WARNED]) !== null && _a !== void 0 ? _a : (store[WARNED] = new WeakMap()));
209
+ };
210
+ /** Whether `el` was already warned about for `kind`; records it if not. */
211
+ const alreadyWarned = (el, kind) => {
212
+ var _a;
213
+ const kinds = (_a = warnedKinds().get(el)) !== null && _a !== void 0 ? _a : new Set();
214
+ warnedKinds().set(el, kinds);
215
+ if (kinds.has(kind))
216
+ return true;
217
+ kinds.add(kind);
218
+ return false;
219
+ };
220
+ /**
221
+ * Wraps a restore callback, which returns whether it wrote anything, so that it writes at most
222
+ * `MAX_RESTORES_PER_TASK` times before the next task (until the message posted after its first write
223
+ * runs). Past that, another script is undoing every restore as soon as it lands, so it stops and
224
+ * lets that script win rather than hang the page. What that script left stays until something
225
+ * changes the element again: the count resets on the next task, so a later change is restored, but
226
+ * nothing is restored on its own. The first give-up warns, logging `el` so it can be found in
227
+ * devtools; later ones, and other restores of the same `kind` giving up on the same element, are
228
+ * silent.
229
+ * @param restore - Puts back what something removed; returns `true` if it wrote anything
230
+ * @param warning - What the console warning says was given up
231
+ * @param el - The element being restored, logged with the warning
232
+ * @param kind - What's being restored; one warning per element for each kind
233
+ */
234
+ const limitRestores = (restore, warning, el, kind = warning) => {
235
+ let writes = 0;
236
+ let warned = false;
237
+ return (...args) => {
238
+ if (writes >= MAX_RESTORES_PER_TASK) {
239
+ if (!warned) {
240
+ warned = true;
241
+ if (el && alreadyWarned(el, kind))
242
+ return;
243
+ // The warning as an argument, not the format string: it carries the tag name, which the HTML
244
+ // parser lets contain `%`.
245
+ console.warn('%s', warning, el);
246
+ }
247
+ return;
248
+ }
249
+ if (!restore(...args))
250
+ return;
251
+ if (writes === 0)
252
+ onNextTask(() => (writes = 0));
253
+ writes += 1;
254
+ };
255
+ };
153
256
  // On the global object, not in this module, so a page with two copies of Pine (the CDN build and a
154
257
  // bundled `@pine-ds/react`) still has one observer.
155
258
  const OBSERVER = Symbol.for('@pine-ds/core/keepPineHydrated');
@@ -160,8 +263,9 @@ const OBSERVER = Symbol.for('@pine-ds/core/keepPineHydrated');
160
263
  * host restore of their own. It only restores classes the element had, so it never runs ahead of
161
264
  * Stencil. It can't see inside shadow roots, which a morph doesn't reach either.
162
265
  *
163
- * A script that removes `hydrated` on purpose sees it come back, and one that removes it every time it
164
- * appears never settles: don't strip Pine's classes from a `MutationObserver`.
266
+ * A script that removes `hydrated` on purpose sees it come back. One that removes it every time it
267
+ * appears (from a `MutationObserver`, say) wins after a few rounds, and the component logs a console
268
+ * warning. The component then stays hidden, as that script left it, until its class changes again.
165
269
  *
166
270
  * Pine's global script calls this, so the CDN and `dist` builds get it on load. The custom-elements
167
271
  * build (`@pine-ds/core/components/*`, `@pine-ds/react`) has no global script: call it once yourself.
@@ -174,14 +278,37 @@ const keepPineHydrated = () => {
174
278
  const store = globalThis;
175
279
  if (store[OBSERVER])
176
280
  return;
281
+ // One capped restore per element, so a script fighting one component doesn't stop the others,
282
+ // and the Stencil classes each one has had.
283
+ const restores = new WeakMap();
284
+ const seen = new WeakMap();
285
+ const restoreFor = (el) => {
286
+ let restore = restores.get(el);
287
+ if (!restore) {
288
+ restore = limitRestores((names) => {
289
+ const missing = names.filter((name) => !el.classList.contains(name));
290
+ if (missing.length > 0)
291
+ el.classList.add(...missing);
292
+ return missing.length > 0;
293
+ }, `${el.localName}: stopped putting back its hydrated and scope classes, as another script keeps removing them.`, el, HOST_RESTORE);
294
+ restores.set(el, restore);
295
+ }
296
+ return restore;
297
+ };
177
298
  const observer = new MutationObserver((records) => {
178
299
  records.forEach(({ target, oldValue }) => {
179
300
  const el = target;
180
- if (oldValue == null || !el.localName.startsWith('pds-'))
301
+ if (!el.localName.startsWith('pds-'))
302
+ return;
303
+ // No old value is a `class` being added. Stencil's first `hydrated` arrives that way, which
304
+ // needs nothing; for an element already seen, it's the class coming back after a removal.
305
+ if (oldValue == null && !seen.has(el))
181
306
  return;
182
- const missing = classNamesOf(oldValue).filter((name) => isStencilClass(el, name) && !el.classList.contains(name));
183
- if (missing.length > 0)
184
- el.classList.add(...missing);
307
+ if (!seen.has(el))
308
+ seen.set(el, new Set());
309
+ const names = stencilClassesOf(seen.get(el), el, oldValue);
310
+ if (names.length > 0)
311
+ restoreFor(el)(names);
185
312
  });
186
313
  });
187
314
  // The document rather than its root element, so replacing `<html>` doesn't end the watch.
@@ -5603,7 +5730,7 @@ class MockPdsModal {
5603
5730
  'pds-modal__backdrop': true,
5604
5731
  'open': this.open,
5605
5732
  };
5606
- return (hAsync("div", { key: '1211583aae06cfa7726371ba18796d7704d9e468', class: backdropClasses }, hAsync("div", { key: '8376a213a21b8f5ee78b9e58e2265d27ce957307', class: modalClasses, role: "dialog", "aria-modal": "true", "aria-labelledby": this.componentId ? `${this.componentId}-heading` : null, part: "modal" }, hAsync("div", { key: '4dfcad52e69fa2f207ed09c3ee3a225a1d789e71', class: "pds-modal__header" }, hAsync("slot", { key: '8d9710b91f6f83bc20b2f93b9e4e9fa5f59ae2ce', name: "header" })), hAsync("div", { key: 'f3291bf921619eabb6d63aa80e006f94239325fc', class: "pds-modal-content" }, hAsync("slot", { key: '19dca53455f9943e394d8ed9ea722a1a591e5de6' })), hAsync("div", { key: '835caa9692b1109649edc7d4daf308bb10ed0cd9', class: "pds-modal__footer" }, hAsync("slot", { key: 'f30033b8f842923df9780b893d05428dc14452dc', name: "footer" })))));
5733
+ return (hAsync("div", { key: '3a526f6883d7e7df35985a145962f656621535c1', class: backdropClasses }, hAsync("div", { key: '3af0487dc8c8831903cd7c22ffbf3e708b067ad7', class: modalClasses, role: "dialog", "aria-modal": "true", "aria-labelledby": this.componentId ? `${this.componentId}-heading` : null, part: "modal" }, hAsync("div", { key: '94e6205042ee91dac0823901cc97b79e93a515f2', class: "pds-modal__header" }, hAsync("slot", { key: 'ca04b575ccceabd431e3f5c57189f17f9aae6089', name: "header" })), hAsync("div", { key: 'f8327a261e70b622add1dd4ee21b5f8e8d91e603', class: "pds-modal-content" }, hAsync("slot", { key: 'a1a9c30d0f5479b0004ace4544e3d96ae87465be' })), hAsync("div", { key: 'af5fa59922047eeec7cbf0a0e1ee4b472b16079c', class: "pds-modal__footer" }, hAsync("slot", { key: '3c469bf94bb3a26dfd8046a5eda481f9d55edca1', name: "footer" })))));
5607
5734
  }
5608
5735
  get el() { return getElement(this); }
5609
5736
  static get style() { return pdsModalCss$1(); }
@@ -5625,7 +5752,7 @@ class MockPdsModal {
5625
5752
  }; }
5626
5753
  }
5627
5754
 
5628
- /* pds-icons v10.5.1, ES Modules */
5755
+ /* pds-icons v10.6.0, ES Modules */
5629
5756
 
5630
5757
  const addCircle = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m11-5a1 1 0 0 1 1 1v3h3a1 1 0 1 1 0 2h-3v3a1 1 0 1 1-2 0v-3H8a1 1 0 1 1 0-2h3V8a1 1 0 0 1 1-1'/></svg>";
5631
5758
  const calendarSimple = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M8 1a1 1 0 0 1 1 1v1h6V2a1 1 0 1 1 2 0v1.002c.476.003.891.013 1.252.042.562.046 1.079.145 1.564.392a4 4 0 0 1 1.748 1.748c.247.485.346 1.002.392 1.564C22 7.29 22 7.954 22 8.758v8.483c0 .805 0 1.47-.044 2.01-.046.563-.145 1.08-.392 1.565a4 4 0 0 1-1.748 1.748c-.485.247-1.002.346-1.564.392-.541.044-1.206.044-2.01.044H7.758c-.805 0-1.47 0-2.01-.044-.563-.046-1.08-.145-1.565-.392a4 4 0 0 1-1.748-1.748c-.247-.485-.346-1.002-.392-1.564C2 18.71 2 18.046 2 17.242V8.758c0-.805 0-1.47.044-2.01.046-.563.145-1.08.392-1.565a4 4 0 0 1 1.748-1.748c.485-.247 1.002-.346 1.564-.392.361-.03.777-.04 1.252-.042V2a1 1 0 0 1 1-1M7 5.002c-.446.003-.795.012-1.089.036-.438.035-.663.1-.819.18a2 2 0 0 0-.874.874c-.08.156-.145.38-.18.819C4 7.361 4 7.943 4 8.8V9h16v-.2c0-.857 0-1.439-.038-1.889-.035-.438-.1-.663-.18-.819a2 2 0 0 0-.874-.874c-.156-.08-.38-.145-.819-.18A15 15 0 0 0 17 5.002V6a1 1 0 1 1-2 0V5H9v1a1 1 0 1 1-2 0zM20 11H4v6.2c0 .857 0 1.439.038 1.889.035.438.1.663.18.819a2 2 0 0 0 .874.874c.156.08.38.145.819.18C6.361 21 6.943 21 7.8 21h8.4c.857 0 1.439 0 1.889-.038.438-.035.663-.1.819-.18a2 2 0 0 0 .874-.874c.08-.156.145-.38.18-.819.037-.45.038-1.032.038-1.889z'/></svg>";
@@ -6070,7 +6197,7 @@ const debounce = (func, wait = 0) => {
6070
6197
  * @param options.semanticMap - Optional mapping of semantic names to CSS variables
6071
6198
  * @returns Normalized color value or undefined for invalid inputs
6072
6199
  */
6073
- const normalizeColorValue = (value, options) => {
6200
+ const normalizeColorValue$1 = (value, options) => {
6074
6201
  if (!value)
6075
6202
  return undefined;
6076
6203
  const trimmed = value.trim();
@@ -6114,7 +6241,7 @@ const setColor = (color, customColors) => {
6114
6241
  // Merge defaults with any custom overrides so defaults are preserved
6115
6242
  const semanticMap = Object.assign(Object.assign({}, defaultColors), (customColors || {}));
6116
6243
  // Use the shared normalizer so components accept semantic names, raw tokens, var(...), or literals
6117
- const resolved = normalizeColorValue(color, { semanticMap });
6244
+ const resolved = normalizeColorValue$1(color, { semanticMap });
6118
6245
  // Ensure we never return an undefined style value; if unresolved, omit the property
6119
6246
  if (!resolved)
6120
6247
  return {};
@@ -6130,10 +6257,14 @@ const setColor = (color, customColors) => {
6130
6257
  * @param attributes - Attribute names and the values they should have
6131
6258
  */
6132
6259
  const setAttributesIfChanged = (el, attributes) => {
6260
+ let wrote = false;
6133
6261
  Object.entries(attributes).forEach(([name, value]) => {
6134
- if (el.getAttribute(name) !== value)
6262
+ if (el.getAttribute(name) !== value) {
6135
6263
  el.setAttribute(name, value);
6264
+ wrote = true;
6265
+ }
6136
6266
  });
6267
+ return wrote;
6137
6268
  };
6138
6269
  /**
6139
6270
  * Puts back any of `expected`'s classes or style properties that are missing from `el`. It only
@@ -6146,10 +6277,9 @@ const restoreHostStyling = (el, { classes, styles }) => {
6146
6277
  const missing = classes.filter((name) => !el.classList.contains(name));
6147
6278
  if (missing.length > 0)
6148
6279
  el.classList.add(...missing);
6149
- Object.entries(styles).forEach(([name, value]) => {
6150
- if (value && el.style.getPropertyValue(name) === '')
6151
- el.style.setProperty(name, value);
6152
- });
6280
+ const missingStyles = Object.entries(styles).filter(([name, value]) => value && el.style.getPropertyValue(name) === '');
6281
+ missingStyles.forEach(([name, value]) => el.style.setProperty(name, value));
6282
+ return missing.length > 0 || missingStyles.length > 0;
6153
6283
  };
6154
6284
  /**
6155
6285
  * Watches a component's own host and puts back what it rendered when something strips it. A DOM
@@ -6166,16 +6296,18 @@ const restoreHostStyling = (el, { classes, styles }) => {
6166
6296
  const keepHostStyling = (el, expected) => {
6167
6297
  if (typeof MutationObserver === 'undefined')
6168
6298
  return null;
6169
- const observer = new MutationObserver((records) => {
6299
+ const tag = el.tagName.toLowerCase();
6300
+ const seenStencilClasses = new Set();
6301
+ const observer = new MutationObserver(limitRestores((records) => {
6170
6302
  const styling = expected();
6171
6303
  // A strip takes Stencil's own classes too: without `hydrated` Stencil hides the component, and
6172
6304
  // without its scope classes a scoped component's CSS stops matching. Put back only the ones that
6173
6305
  // were there, so this never runs ahead of Stencil. `keepPineHydrated` does the same for every
6174
6306
  // component, but the custom-elements build only runs it if the consumer calls it, so keep this.
6175
6307
  const stencilClasses = records
6176
- .filter((record) => record.attributeName === 'class' && record.oldValue != null)
6177
- .flatMap((record) => classNamesOf(record.oldValue).filter((name) => isStencilClass(el, name)));
6178
- restoreHostStyling(el, Object.assign(Object.assign({}, styling), { classes: [...styling.classes, ...stencilClasses] }));
6308
+ .filter((record) => record.attributeName === 'class')
6309
+ .flatMap((record) => stencilClassesOf(seenStencilClasses, el, record.oldValue));
6310
+ let wrote = restoreHostStyling(el, Object.assign(Object.assign({}, styling), { classes: [...styling.classes, ...stencilClasses] }));
6179
6311
  // An attribute the component still renders comes back with the value it had, which is what
6180
6312
  // Stencil wrote (a boolean `true` lands as an empty value). One it stopped rendering stays
6181
6313
  // removed, since that was Stencil's own write.
@@ -6185,8 +6317,10 @@ const keepHostStyling = (el, expected) => {
6185
6317
  if (oldValue == null || rendered == null || rendered === false || el.hasAttribute(name))
6186
6318
  return;
6187
6319
  el.setAttribute(name, oldValue);
6320
+ wrote = true;
6188
6321
  });
6189
- });
6322
+ return wrote;
6323
+ }, `${tag}: stopped restoring its host, as another script keeps changing it. Use props instead.`, el, HOST_RESTORE));
6190
6324
  observer.observe(el, { attributes: true, attributeOldValue: true });
6191
6325
  return observer;
6192
6326
  };
@@ -6444,8 +6578,8 @@ class PdsBox {
6444
6578
  this.sizeXl == undefined ? 'pds-box' : ''}
6445
6579
  `;
6446
6580
  // Normalize so pds-box accepts --token, var(--token), or literals (no semantic names)
6447
- const normalizedBackground = normalizeColorValue(this.backgroundColor);
6448
- const normalizedBorder = normalizeColorValue(this.borderColor);
6581
+ const normalizedBackground = normalizeColorValue$1(this.backgroundColor);
6582
+ const normalizedBorder = normalizeColorValue$1(this.borderColor);
6449
6583
  const boxInlineStyles = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (normalizedBackground && { '--color-background-box': normalizedBackground })), (normalizedBorder && { '--color-border-box': normalizedBorder })), (this.minHeight && { '--sizing-min-height-box': this.minHeight })), (this.minWidth && { '--sizing-min-width-box': this.minWidth })), (this.flex && !['none', 'grow', 'shrink'].includes(this.flex) && { 'flex': this.flex }));
6450
6584
  this.hostKeeper.record(boxClasses, boxInlineStyles);
6451
6585
  return (hAsync(Host, { key: 'dc4d939daf38b24ecbfa0eb0a95ab67b97a85665', class: boxClasses, style: boxInlineStyles }));
@@ -9233,11 +9367,11 @@ class PdsChip {
9233
9367
  }
9234
9368
  // Custom properties rather than inline colors on the dot/icon, so a
9235
9369
  // consumer's ::part(dot) or ::part(icon) rule still wins over the prop.
9236
- const dotColor = normalizeColorValue(this.dotColor, { semanticMap: SENTIMENT_DOT_COLORS });
9370
+ const dotColor = normalizeColorValue$1(this.dotColor, { semanticMap: SENTIMENT_DOT_COLORS });
9237
9371
  if (dotColor !== undefined) {
9238
9372
  styles['--pds-chip-dot-color'] = dotColor;
9239
9373
  }
9240
- const iconColor = normalizeColorValue(this.iconColor, { semanticMap: SENTIMENT_DOT_COLORS });
9374
+ const iconColor = normalizeColorValue$1(this.iconColor, { semanticMap: SENTIMENT_DOT_COLORS });
9241
9375
  if (iconColor !== undefined) {
9242
9376
  styles['--pds-chip-icon-color'] = iconColor;
9243
9377
  }
@@ -10734,7 +10868,14 @@ const PINE_ICON_NAME$1 = /^[a-z0-9-]+$/i;
10734
10868
  * only ever passed to `pds-icon` as `name`.
10735
10869
  */
10736
10870
  function groupIconOf(optgroup) {
10737
- const icon = optgroup.getAttribute('data-icon');
10871
+ return iconOf(optgroup);
10872
+ }
10873
+ /** An option's `data-icon` when it's a Pine icon name, or null; the same check as a group's. */
10874
+ function optionIconOf(option) {
10875
+ return iconOf(option);
10876
+ }
10877
+ function iconOf(element) {
10878
+ const icon = element.getAttribute('data-icon');
10738
10879
  return icon !== null && PINE_ICON_NAME$1.test(icon) ? icon : null;
10739
10880
  }
10740
10881
  /** An option is disabled by its own `disabled` or its optgroup's, as in a native select. */
@@ -10752,8 +10893,12 @@ function isGroupDisabled(group) {
10752
10893
  * Groups the combobox's filtered items for the panel: each optgroup becomes one entry holding its
10753
10894
  * options, and ungrouped options stay where they are. Indexes count options in list order, the
10754
10895
  * same as the inline listbox, so `data-option-index` means the same thing in every mode.
10896
+ *
10897
+ * `position`, when given, orders the entries instead: an ungrouped option or an optgroup it knows
10898
+ * goes where it reports, and the rest keep their place after those. Options from the `options` prop
10899
+ * use it, so a row the data lists between two groups is drawn between them.
10755
10900
  */
10756
- function buildPanelEntries(items) {
10901
+ function buildPanelEntries(items, position) {
10757
10902
  const entries = [];
10758
10903
  const groups = new Map();
10759
10904
  let index = 0;
@@ -10775,7 +10920,14 @@ function buildPanelEntries(items) {
10775
10920
  entries.push({ kind: 'option', option, index: index++ });
10776
10921
  }
10777
10922
  });
10778
- return entries;
10923
+ if (position === undefined)
10924
+ return entries;
10925
+ const at = (entry) => { var _a; return (_a = position(entry.kind === 'group' ? entry.group.optgroup : entry.option)) !== null && _a !== void 0 ? _a : Infinity; };
10926
+ // Array.prototype.sort is stable, so entries with no position keep their order.
10927
+ return entries.sort((a, b) => {
10928
+ const [first, second] = [at(a), at(b)];
10929
+ return first === second ? 0 : first < second ? -1 : 1;
10930
+ });
10779
10931
  }
10780
10932
  /** The label of the optgroup an option sits in, or null for an ungrouped option. */
10781
10933
  function groupLabelOf(option) {
@@ -10983,7 +11135,7 @@ class FlyoutController {
10983
11135
  }
10984
11136
  }
10985
11137
 
10986
- const pdsComboboxCss = () => `:host{display:block}:host([aria-disabled=true]) .pds-combobox__input-icon{color:var(--pine-color-text-disabled);pointer-events:none}.pds-combobox{position:relative}.pds-combobox__label{color:var(--pine-color-text-label);display:block;font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing);-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs)}.pds-combobox__input-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;position:relative;width:100%}.pds-combobox__input{background:var(--pine-color-background-container);border:var(--pine-border);border-radius:var(--pine-dimension-125);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--pine-color-text-strong);-ms-flex:1;flex:1;font:var(--pine-typography-body-medium);padding:var(--pine-dimension-xs) var(--pine-dimension-450) var(--pine-dimension-xs) var(--pine-dimension-150);-webkit-transition:border-color var(--pine-motion-duration-base) ease;transition:border-color var(--pine-motion-duration-base) ease;width:100%}.pds-combobox__input:hover:not(:disabled){border-color:var(--pine-color-border-hover)}.pds-combobox__input:disabled{background:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);color:var(--pine-color-text-disabled);cursor:not-allowed}.pds-combobox__input:disabled::-webkit-input-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-combobox__input:disabled::-moz-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-combobox__input:disabled:-ms-input-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-combobox__input:disabled::-ms-input-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-combobox__input:disabled::placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-combobox__input:focus-visible{border-color:var(--pine-color-border-active);outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-combobox__input::-webkit-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__input::-moz-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__input:-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__input::-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__input::placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__input.pds-combobox__input--invalid{background:var(--pine-color-red-050);border-color:var(--pine-color-border-danger)}:host-context([data-theme=dark]) .pds-combobox__input.pds-combobox__input--invalid{background:var(--pine-color-red-950)}.pds-combobox__input.pds-combobox__input--invalid:hover:not(:disabled){border-color:var(--pine-color-border-danger)}.pds-combobox__input.pds-combobox__input--invalid:focus-visible{outline-color:var(--pine-color-focus-ring-danger)}.pds-combobox__input-icon{color:var(--pine-color-text-secondary);inset-inline-end:var(--pine-dimension-150);pointer-events:none;position:absolute;z-index:calc(var(--pine-z-index-raised) - 1)}.pds-combobox__helper{color:var(--pine-color-text-message);font:var(--pine-typography-body-sm-medium);-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs)}.pds-combobox__error{-ms-flex-align:start;align-items:flex-start;color:var(--pine-color-text-message-danger);display:-ms-flexbox;display:flex;font:var(--pine-typography-body-sm-medium);gap:var(--pine-dimension-2xs);-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs)}.pds-combobox__error pds-icon{-ms-flex-negative:0;flex-shrink:0;-webkit-margin-before:var(--pine-dimension-025);margin-block-start:var(--pine-dimension-025)}.pds-combobox__listbox{background:var(--pine-color-background-overlay);border:0;border-radius:var(--pine-dimension-125);-webkit-box-shadow:var(--pine-box-shadow);box-shadow:var(--pine-box-shadow);list-style:none;margin:0;min-width:220px;overflow-y:auto;padding:var(--pine-dimension-xs);position:absolute;z-index:var(--pine-z-index-raised)}.pds-combobox__option{-ms-flex-align:center;align-items:center;background:transparent;border-radius:var(--pine-dimension-125);color:var(--pine-color-text-secondary);cursor:pointer;display:-ms-flexbox;display:flex;font:var(--pine-typography-body-medium);-ms-flex-pack:justify;justify-content:space-between;padding:var(--pine-dimension-xs) var(--pine-dimension-sm);position:relative;-webkit-transition:background 0.15s;transition:background 0.15s}.pds-combobox__option[aria-selected=true]{background:var(--pine-color-background-muted)}.pds-combobox__option:focus-visible{outline:0}.pds-combobox__option.pds-combobox__option--layout .pds-combobox__option-layout-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;width:100%}.pds-combobox__option.pds-combobox__option--chip .pds-combobox__option-chip{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;width:100%}.pds-combobox__option:last-child{-webkit-margin-after:0;margin-block-end:0}.pds-combobox__option--highlighted,.pds-combobox__option[selected],.pds-combobox__option--selected{background:var(--pine-color-background-muted)}.pds-combobox__option--disabled,.pds-combobox__group-row--disabled>.pds-combobox__group-row-trigger,.pds-combobox__group-back--disabled>.pds-combobox__group-back-trigger,.pds-combobox__group--disabled>.pds-combobox__group-label{color:var(--pine-color-text-disabled)}.pds-combobox__option--disabled{cursor:not-allowed}.pds-combobox__option--disabled .pds-combobox__option-chip,.pds-combobox__option--disabled .pds-combobox__option-layout-wrapper{opacity:0.5}.pds-combobox__option-check{color:currentColor;font-size:var(--pine-dimension-150);-webkit-margin-start:var(--pine-dimension-150);margin-inline-start:var(--pine-dimension-150)}.pds-combobox__group-label{color:var(--pine-color-text-tertiary);cursor:default;font:var(--pine-typography-heading-caption);-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs);-webkit-margin-before:var(--pine-dimension-150);margin-block-start:var(--pine-dimension-150);padding:var(--pine-dimension-2xs) var(--pine-dimension-sm);text-transform:uppercase}.pds-combobox__group-label:first-child{-webkit-margin-before:0;margin-block-start:0}.pds-combobox__group{list-style:none;-webkit-margin-before:var(--pine-dimension-150);margin-block-start:var(--pine-dimension-150)}.pds-combobox__group:first-child{-webkit-margin-before:0;margin-block-start:0}.pds-combobox__group-list{list-style:none;margin:0;padding:0}.pds-combobox__listbox--grouped .pds-combobox__group-list{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--pine-dimension-2xs)}.pds-combobox__group-label--with-icon{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs)}.pds-combobox__group-icon{-ms-flex-negative:0;flex-shrink:0}.pds-combobox__group-row{list-style:none;position:relative}.pds-combobox__group-row-trigger{-ms-flex-align:center;align-items:center;border-radius:var(--pine-dimension-125);color:var(--pine-color-text-secondary);cursor:pointer;display:-ms-flexbox;display:flex;font:var(--pine-typography-body-medium);gap:var(--pine-dimension-xs);-ms-flex-pack:justify;justify-content:space-between;padding:var(--pine-dimension-xs) var(--pine-dimension-sm);-webkit-transition:background 0.15s;transition:background 0.15s}.pds-combobox__group-row--open>.pds-combobox__group-row-trigger,.pds-combobox__group-row--has-selection>.pds-combobox__group-row-trigger,.pds-combobox__group-row--highlighted>.pds-combobox__group-row-trigger,.pds-combobox__group-back--highlighted>.pds-combobox__group-row-trigger,.pds-combobox__group-row-trigger:hover{background:var(--pine-color-background-muted)}.pds-combobox__listbox--drill-in,.pds-combobox__listbox--drill-out{overflow-x:hidden}.pds-combobox__listbox--drill-in>.pds-combobox__group-back{-webkit-animation:pds-combobox-drill-from-end var(--pine-motion-duration-base) var(--pine-motion-easing-out);animation:pds-combobox-drill-from-end var(--pine-motion-duration-base) var(--pine-motion-easing-out)}.pds-combobox__listbox--drill-out>li{-webkit-animation:pds-combobox-drill-from-start var(--pine-motion-duration-base) var(--pine-motion-easing-out);animation:pds-combobox-drill-from-start var(--pine-motion-duration-base) var(--pine-motion-easing-out)}@-webkit-keyframes pds-combobox-drill-from-end{from{opacity:0;-webkit-transform:translateX(var(--pine-dimension-sm));transform:translateX(var(--pine-dimension-sm))}}@keyframes pds-combobox-drill-from-end{from{opacity:0;-webkit-transform:translateX(var(--pine-dimension-sm));transform:translateX(var(--pine-dimension-sm))}}@-webkit-keyframes pds-combobox-drill-from-start{from{opacity:0;-webkit-transform:translateX(calc(var(--pine-dimension-sm) * -1));transform:translateX(calc(var(--pine-dimension-sm) * -1))}}@keyframes pds-combobox-drill-from-start{from{opacity:0;-webkit-transform:translateX(calc(var(--pine-dimension-sm) * -1));transform:translateX(calc(var(--pine-dimension-sm) * -1))}}.pds-combobox__group-row--keyboard>.pds-combobox__group-row-trigger,.pds-combobox__group-back--keyboard>.pds-combobox__group-row-trigger{outline:var(--pine-outline-focus);outline-offset:calc(var(--pine-border-width) * -2)}.pds-combobox__group-row-label{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs);min-width:0}.pds-combobox__group-row-caret{-ms-flex-negative:0;flex-shrink:0}.pds-combobox__listbox--grouped,.pds-combobox__flyout{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--pine-dimension-2xs);padding:var(--pine-dimension-2xs)}.pds-combobox__flyout{background:var(--pine-color-background-overlay);border-radius:var(--pine-dimension-125);-webkit-box-shadow:var(--pine-box-shadow);box-shadow:var(--pine-box-shadow);list-style:none;margin:0;overflow-y:auto;position:fixed;visibility:hidden;width:-webkit-max-content;width:-moz-max-content;width:max-content;z-index:1}.pds-combobox__listbox--with-search{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;overflow:hidden;padding:0}.pds-combobox__listbox-options{-ms-flex:1;flex:1;list-style:none;margin:0;min-height:0;overflow-y:auto;padding:var(--pine-dimension-xs)}.pds-combobox__listbox-options.pds-combobox__listbox--grouped{padding:var(--pine-dimension-2xs)}.pds-combobox__panel-search{-ms-flex-align:center;align-items:center;-webkit-border-after:var(--pine-border);border-block-end:var(--pine-border);border-block-end-color:var(--pine-color-border-subtle);display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;gap:var(--pine-dimension-xs);padding:var(--pine-dimension-sm)}.pds-combobox__panel-search pds-icon{color:var(--pine-color-text-muted);-ms-flex-negative:0;flex-shrink:0}.pds-combobox__panel-search:focus-within{border-block-end-color:var(--pine-color-border-active)}.pds-combobox__panel-search-input{background:transparent;border:0;color:var(--pine-color-text-strong);-ms-flex:1;flex:1;font:var(--pine-typography-body);letter-spacing:var(--pine-letter-spacing);min-width:0;outline:none;padding:0}.pds-combobox__panel-search-input::-webkit-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__panel-search-input::-moz-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__panel-search-input:-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__panel-search-input::-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__panel-search-input::placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__group-back{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--pine-dimension-2xs);list-style:none}.pds-combobox__group-back-trigger{-ms-flex-pack:start;justify-content:flex-start}.pds-combobox__listbox-options--drilled-in.pds-combobox__listbox--grouped{-webkit-padding-before:0;padding-block-start:0}.pds-combobox__listbox-options--drilled-in:focus{outline:none}.pds-combobox__listbox-options--drilled-in:focus .pds-combobox__group-back-trigger{border-block-end-color:var(--pine-color-border-active)}:where(.pds-combobox__listbox-options--drilled-in) .pds-combobox__group-back-trigger{background-color:var(--pine-color-background-overlay);-webkit-border-after:var(--pine-border);border-block-end:var(--pine-border);border-block-end-color:var(--pine-color-border-subtle);border-radius:0;color:var(--pine-color-text-strong);font:var(--pine-typography-body);inset-block-start:0;letter-spacing:var(--pine-letter-spacing);margin-inline:calc(var(--pine-dimension-2xs) * -1);padding:var(--pine-dimension-sm);position:-webkit-sticky;position:sticky;z-index:1}.pds-combobox__drill-in-options{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--pine-dimension-2xs);list-style:none;margin:0;padding:0}.visually-hidden{border:0;clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pds-combobox__loading{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding:var(--pine-dimension-150)}.pds-combobox__empty{color:var(--pine-color-text-tertiary);padding:var(--pine-dimension-150) var(--pine-dimension-sm);text-align:center}.pds-combobox__load-more{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding:var(--pine-dimension-150)}:host(.pds-combobox-dropdown-portal) .pds-combobox__listbox{position:fixed;z-index:var(--pine-z-index-priority)}.pds-combobox__button-trigger{-ms-flex-align:center;align-items:center;background:var(--color-background-default, var(--pine-color-secondary));border:var(--pine-border);border-radius:var(--pine-border-radius-full);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--color-text-default, var(--pine-color-text-inverse-emphasis));cursor:pointer;display:-ms-flexbox;display:flex;font:var(--pine-typography-body-medium);-ms-flex-pack:justify;justify-content:space-between;min-height:var(--pine-dimension-450);outline:none;padding:0 var(--pine-dimension-sm);-webkit-transition:border-color 0.15s, background 0.15s, -webkit-box-shadow 0.15s;transition:border-color 0.15s, background 0.15s, -webkit-box-shadow 0.15s;transition:border-color 0.15s, box-shadow 0.15s, background 0.15s;transition:border-color 0.15s, box-shadow 0.15s, background 0.15s, -webkit-box-shadow 0.15s;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.pds-combobox__button-trigger .pds-combobox__button-trigger-layout-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1}.pds-combobox__button-trigger .trigger-content{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;width:100%}.pds-combobox__button-trigger:focus-visible{border-color:var(--color-border-focus, var(--pine-color-border));-webkit-box-shadow:0 0 0 2px var(--color-outline, var(--pine-color-focus-ring));box-shadow:0 0 0 2px var(--color-outline, var(--pine-color-focus-ring))}.pds-combobox__button-trigger:hover{background:var(--color-background-hover, var(--pine-color-secondary-hover));border-color:var(--color-border-hover, var(--pine-color-border-hover))}.pds-combobox__button-trigger[aria-disabled=true],.pds-combobox__button-trigger:disabled{background:var(--color-background-disabled, var(--pine-color-secondary-disabled));border-color:var(--color-border-disabled, var(--pine-color-border-disabled));color:var(--color-text-disabled, var(--pine-color-text-secondary-disabled));cursor:not-allowed;opacity:0.6}.pds-combobox__button-trigger-label{color:inherit;-ms-flex:1 1 auto;flex:1 1 auto;text-align:start}.pds-combobox__button-trigger--input-shape{border-radius:var(--pine-dimension-125);font:var(--pine-typography-body);letter-spacing:var(--pine-letter-spacing);min-height:var(--pine-dimension-450);padding:calc(var(--pine-dimension-xs) - var(--pine-border-width)) var(--pine-dimension-150)}.pds-combobox__button-trigger--secondary.pds-combobox__button-trigger--input-shape:not([aria-disabled=true]) .pds-combobox__button-trigger-label--placeholder{color:var(--pine-color-text-muted)}.pds-combobox__button-trigger-chevron{color:currentColor;-webkit-margin-start:var(--pine-dimension-150);margin-inline-start:var(--pine-dimension-150)}.pds-combobox__button-trigger--primary{--color-background-default:var(--pine-color-primary);--color-background-hover:var(--pine-color-primary-hover);--color-background-disabled:var(--pine-color-primary-disabled);--color-border-default:var(--pine-color-primary);--color-border-hover:var(--pine-color-primary-hover);--color-border-disabled:var(--pine-color-primary-disabled);--color-border-focus:var(--pine-color-primary);--color-text-default:var(--pine-color-text-primary);--color-text-disabled:var(--pine-color-text-primary-disabled);--color-outline:var(--pine-color-focus-ring)}.pds-combobox__button-trigger--accent{--color-background-default:var(--pine-color-accent);--color-background-hover:var(--pine-color-accent-hover);--color-background-disabled:var(--pine-color-accent-disabled);--color-border-default:var(--pine-color-accent);--color-border-hover:var(--pine-color-accent-hover);--color-border-disabled:var(--pine-color-accent-disabled);--color-border-focus:var(--pine-color-accent);--color-text-default:var(--pine-color-text-primary);--color-text-disabled:var(--pine-color-text-accent-disabled);--color-outline:var(--pine-color-focus-ring)}.pds-combobox__button-trigger--secondary{--color-background-default:var(--pine-color-secondary);--color-background-hover:var(--pine-color-secondary-hover);--color-background-disabled:var(--pine-color-secondary-disabled);--color-border-default:var(--pine-color-border);--color-border-hover:var(--pine-color-border-hover);--color-border-disabled:var(--pine-color-border-disabled);--color-border-focus:var(--pine-color-border);--color-text-default:var(--pine-color-text-secondary);--color-text-disabled:var(--pine-color-text-secondary-disabled);--color-outline:var(--pine-color-focus-ring)}.pds-combobox__button-trigger--destructive{--color-background-default:var(--pine-color-danger);--color-background-hover:var(--pine-color-danger-hover);--color-background-disabled:var(--pine-color-danger-disabled);--color-border-default:var(--pine-color-danger);--color-border-hover:var(--pine-color-danger-hover);--color-border-disabled:var(--pine-color-danger-disabled);--color-border-focus:var(--pine-color-danger);--color-text-default:var(--pine-color-white);--color-text-disabled:var(--pine-color-text-danger-disabled);--color-outline:var(--pine-color-focus-ring-danger)}[data-layout]{border-radius:var(--pine-dimension-125);padding-block:var(--pine-dimension-xs)}.pds-combobox__chip-trigger{-ms-flex-align:center;align-items:center;border-radius:var(--pine-dimension-sm);-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:-ms-inline-flexbox;display:inline-flex;font:var(--pine-typography-body-medium);-ms-flex-pack:justify;justify-content:space-between;outline:none;padding-block:var(--pine-dimension-025);padding-inline:var(--pine-dimension-150);-webkit-transition:all 0.15s ease;transition:all 0.15s ease;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.pds-combobox__chip-trigger .pds-combobox__chip-trigger-layout-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1}.pds-combobox__chip-trigger .trigger-content{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;width:100%}.pds-combobox__chip-trigger:focus-visible{outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-combobox__chip-trigger[aria-disabled=true]{cursor:not-allowed;opacity:0.6}.pds-combobox__chip-trigger-label{color:inherit;-ms-flex:1 1 auto;flex:1 1 auto;text-align:start}.pds-combobox__chip-trigger-chevron{color:currentColor;-webkit-margin-start:var(--pine-dimension-150);margin-inline-start:var(--pine-dimension-150)}.pds-combobox__chip-trigger-icon{-webkit-margin-end:var(--pine-dimension-2xs);margin-inline-end:var(--pine-dimension-2xs)}.pds-combobox__chip-trigger--neutral,.pds-combobox__chip-trigger--accent,.pds-combobox__chip-trigger--success,.pds-combobox__chip-trigger--warning,.pds-combobox__chip-trigger--danger,.pds-combobox__chip-trigger--info{background:var(--chip-bg);border:var(--pine-border-width) solid var(--chip-border);color:var(--chip-text)}.pds-combobox__chip-trigger--neutral:hover:not([aria-disabled=true]),.pds-combobox__chip-trigger--accent:hover:not([aria-disabled=true]),.pds-combobox__chip-trigger--success:hover:not([aria-disabled=true]),.pds-combobox__chip-trigger--warning:hover:not([aria-disabled=true]),.pds-combobox__chip-trigger--danger:hover:not([aria-disabled=true]),.pds-combobox__chip-trigger--info:hover:not([aria-disabled=true]){background:var(--chip-bg-hover)}.pds-combobox__chip-trigger--neutral:focus-visible,.pds-combobox__chip-trigger--accent:focus-visible,.pds-combobox__chip-trigger--success:focus-visible,.pds-combobox__chip-trigger--warning:focus-visible,.pds-combobox__chip-trigger--danger:focus-visible,.pds-combobox__chip-trigger--info:focus-visible{border-color:var(--chip-border)}.pds-combobox__chip-trigger--neutral{--chip-bg:var(--pine-chip-color-neutral);--chip-bg-hover:var(--pine-chip-color-neutral-hover);--chip-border:var(--pine-chip-color-neutral-hover);--chip-text:var(--pine-color-text-neutral)}.pds-combobox__chip-trigger--accent{--chip-bg:var(--pine-chip-color-accent);--chip-bg-hover:var(--pine-chip-color-accent-hover);--chip-border:var(--pine-chip-color-accent-hover);--chip-text:var(--pine-color-text-accent)}.pds-combobox__chip-trigger--success{--chip-bg:var(--pine-chip-color-success);--chip-bg-hover:var(--pine-chip-color-success-hover);--chip-border:var(--pine-chip-color-success-hover);--chip-text:var(--pine-color-text-success)}.pds-combobox__chip-trigger--warning{--chip-bg:var(--pine-chip-color-warning);--chip-bg-hover:var(--pine-chip-color-warning-hover);--chip-border:var(--pine-chip-color-warning-hover);--chip-text:var(--pine-color-text-warning)}.pds-combobox__chip-trigger--danger{--chip-bg:var(--pine-chip-color-danger);--chip-bg-hover:var(--pine-chip-color-danger-hover);--chip-border:var(--pine-chip-color-danger-hover);--chip-text:var(--pine-color-text-danger)}.pds-combobox__chip-trigger--info{--chip-bg:var(--pine-chip-color-info);--chip-bg-hover:var(--pine-chip-color-info-hover);--chip-border:var(--pine-chip-color-info-hover);--chip-text:var(--pine-color-text-info)}.pds-combobox__chip-trigger--brand{background:-webkit-gradient(linear, left top, right top, from(#FF3E14), to(#6B62F2));background:linear-gradient(90deg, #FF3E14 0%, #6B62F2 100%);border:0;color:var(--pine-color-text-neutral);padding:1px;position:relative}.pds-combobox__chip-trigger--brand .pds-combobox__chip-trigger-label{background:rgba(255, 255, 255, 0.9);border-radius:calc(var(--pine-dimension-sm) - 1px);color:var(--pine-color-text-neutral);font-weight:var(--pine-font-weight-medium);padding:var(--pine-dimension-025) var(--pine-dimension-150);position:relative;z-index:1}.pds-combobox__chip-trigger--brand .pds-combobox__chip-trigger-chevron{position:relative;z-index:1}.pds-combobox__chip-trigger--brand:hover:not([aria-disabled=true]) .pds-combobox__chip-trigger-label{background:rgba(255, 255, 255, 0.8)}.pds-combobox__chip-trigger--dropdown:not(.pds-combobox__chip-trigger--brand){padding:var(--pine-dimension-none)}.pds-combobox__chip-trigger--dropdown:not(.pds-combobox__chip-trigger--brand) .pds-combobox__chip-trigger-label{padding:var(--pine-dimension-025) var(--pine-dimension-150)}.pds-combobox__chip-trigger--large .pds-combobox__chip-trigger-label{font-family:var(--pine-font-family-heading);font-size:var(--pine-font-size-heading-6);font-weight:var(--pine-font-weight-medium);letter-spacing:var(--pine-letter-spacing-heading-6)}.pds-combobox__chip-trigger--dot .pds-combobox__chip-trigger-label::before{border:var(--pine-border-width) solid transparent;border-radius:var(--pine-border-radius-full);content:"";display:inline-block;height:var(--pine-dimension-2xs);-webkit-margin-end:var(--pine-dimension-2xs);margin-inline-end:var(--pine-dimension-2xs);width:var(--pine-dimension-2xs)}`;
11138
+ const pdsComboboxCss = () => `:host{display:block}:host([aria-disabled=true]) .pds-combobox__input-icon{color:var(--pine-color-text-disabled);pointer-events:none}.pds-combobox{position:relative}.pds-combobox__label{color:var(--pine-color-text-label);display:block;font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing);-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs)}.pds-combobox__input-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;position:relative;width:100%}.pds-combobox__input{background:var(--pine-color-background-container);border:var(--pine-border);border-radius:var(--pine-dimension-125);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--pine-color-text-strong);-ms-flex:1;flex:1;font:var(--pine-typography-body-medium);padding:var(--pine-dimension-xs) var(--pine-dimension-450) var(--pine-dimension-xs) var(--pine-dimension-150);-webkit-transition:border-color var(--pine-motion-duration-base) ease;transition:border-color var(--pine-motion-duration-base) ease;width:100%}.pds-combobox__input:hover:not(:disabled){border-color:var(--pine-color-border-hover)}.pds-combobox__input:disabled{background:var(--pine-color-background-container-disabled);border-color:var(--pine-color-border-disabled);color:var(--pine-color-text-disabled);cursor:not-allowed}.pds-combobox__input:disabled::-webkit-input-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-combobox__input:disabled::-moz-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-combobox__input:disabled:-ms-input-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-combobox__input:disabled::-ms-input-placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-combobox__input:disabled::placeholder{color:var(--pine-color-text-placeholder-disabled)}.pds-combobox__input:focus-visible{border-color:var(--pine-color-border-active);outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-combobox__input::-webkit-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__input::-moz-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__input:-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__input::-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__input::placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__input.pds-combobox__input--invalid{background:var(--pine-color-red-050);border-color:var(--pine-color-border-danger)}:host-context([data-theme=dark]) .pds-combobox__input.pds-combobox__input--invalid{background:var(--pine-color-red-950)}.pds-combobox__input.pds-combobox__input--invalid:hover:not(:disabled){border-color:var(--pine-color-border-danger)}.pds-combobox__input.pds-combobox__input--invalid:focus-visible{outline-color:var(--pine-color-focus-ring-danger)}.pds-combobox__input-icon{color:var(--pine-color-text-secondary);inset-inline-end:var(--pine-dimension-150);pointer-events:none;position:absolute;z-index:calc(var(--pine-z-index-raised) - 1)}.pds-combobox__helper{color:var(--pine-color-text-message);font:var(--pine-typography-body-sm-medium);-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs)}.pds-combobox__error{-ms-flex-align:start;align-items:flex-start;color:var(--pine-color-text-message-danger);display:-ms-flexbox;display:flex;font:var(--pine-typography-body-sm-medium);gap:var(--pine-dimension-2xs);-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs)}.pds-combobox__error pds-icon{-ms-flex-negative:0;flex-shrink:0;-webkit-margin-before:var(--pine-dimension-025);margin-block-start:var(--pine-dimension-025)}.pds-combobox__listbox{background:var(--pine-color-background-overlay);border:0;border-radius:var(--pine-dimension-125);-webkit-box-shadow:var(--pine-box-shadow);box-shadow:var(--pine-box-shadow);list-style:none;margin:0;min-width:220px;overflow-y:auto;padding:var(--pine-dimension-xs);position:absolute;z-index:var(--pine-z-index-raised)}.pds-combobox__option{-ms-flex-align:center;align-items:center;background:transparent;border-radius:var(--pine-dimension-125);color:var(--pine-color-text-secondary);cursor:pointer;display:-ms-flexbox;display:flex;font:var(--pine-typography-body-medium);-ms-flex-pack:justify;justify-content:space-between;padding:var(--pine-dimension-xs) var(--pine-dimension-sm);position:relative;-webkit-transition:background 0.15s;transition:background 0.15s}.pds-combobox__option[aria-selected=true]{background:var(--pine-color-background-muted)}.pds-combobox__option:focus-visible{outline:0}.pds-combobox__option.pds-combobox__option--layout .pds-combobox__option-layout-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;width:100%}.pds-combobox__option.pds-combobox__option--chip .pds-combobox__option-chip{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;width:100%}.pds-combobox__option:last-child{-webkit-margin-after:0;margin-block-end:0}.pds-combobox__option--highlighted,.pds-combobox__option[selected],.pds-combobox__option--selected{background:var(--pine-color-background-muted)}.pds-combobox__option--disabled,.pds-combobox__group-row--disabled>.pds-combobox__group-row-trigger,.pds-combobox__group-back--disabled>.pds-combobox__group-back-trigger,.pds-combobox__group--disabled>.pds-combobox__group-label{color:var(--pine-color-text-disabled)}.pds-combobox__option--disabled{cursor:not-allowed}.pds-combobox__option--disabled .pds-combobox__option-chip,.pds-combobox__option--disabled .pds-combobox__option-layout-wrapper{opacity:0.5}.pds-combobox__option-label{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs);min-width:0;overflow-wrap:anywhere}.pds-combobox__option-icon{-ms-flex-negative:0;flex-shrink:0}.pds-combobox__option-check{color:currentColor;font-size:var(--pine-dimension-150);-webkit-margin-start:var(--pine-dimension-150);margin-inline-start:var(--pine-dimension-150)}.pds-combobox__group-label{color:var(--pine-color-text-tertiary);cursor:default;font:var(--pine-typography-heading-caption);-webkit-margin-after:var(--pine-dimension-2xs);margin-block-end:var(--pine-dimension-2xs);-webkit-margin-before:var(--pine-dimension-150);margin-block-start:var(--pine-dimension-150);padding:var(--pine-dimension-2xs) var(--pine-dimension-sm);text-transform:uppercase}.pds-combobox__group-label:first-child{-webkit-margin-before:0;margin-block-start:0}.pds-combobox__group{list-style:none;-webkit-margin-before:var(--pine-dimension-150);margin-block-start:var(--pine-dimension-150)}.pds-combobox__group:first-child{-webkit-margin-before:0;margin-block-start:0}.pds-combobox__group-list{list-style:none;margin:0;padding:0}.pds-combobox__listbox--grouped .pds-combobox__group-list{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--pine-dimension-2xs)}.pds-combobox__group-label--with-icon{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs)}.pds-combobox__group-icon{-ms-flex-negative:0;flex-shrink:0}.pds-combobox__group-row{list-style:none;position:relative}.pds-combobox__group-row-trigger{-ms-flex-align:center;align-items:center;border-radius:var(--pine-dimension-125);color:var(--pine-color-text-secondary);cursor:pointer;display:-ms-flexbox;display:flex;font:var(--pine-typography-body-medium);gap:var(--pine-dimension-xs);-ms-flex-pack:justify;justify-content:space-between;padding:var(--pine-dimension-xs) var(--pine-dimension-sm);-webkit-transition:background 0.15s;transition:background 0.15s}.pds-combobox__group-row--open>.pds-combobox__group-row-trigger,.pds-combobox__group-row--has-selection>.pds-combobox__group-row-trigger,.pds-combobox__group-row--highlighted>.pds-combobox__group-row-trigger,.pds-combobox__group-back--highlighted>.pds-combobox__group-row-trigger{background:var(--pine-color-background-muted)}.pds-combobox__listbox--pointer-hover .pds-combobox__group-row-trigger:hover{background:var(--pine-color-background-muted)}.pds-combobox__listbox--drill-in,.pds-combobox__listbox--drill-out{overflow-x:hidden}.pds-combobox__listbox--drill-in,.pds-combobox__listbox--drill-out:dir(rtl){--pds-combobox-drill-from:var(--pine-dimension-sm)}.pds-combobox__listbox--drill-out,.pds-combobox__listbox--drill-in:dir(rtl){--pds-combobox-drill-from:calc(var(--pine-dimension-sm) * -1)}.pds-combobox__listbox--drill-in .pds-combobox__drill-in-options>li,.pds-combobox__listbox--drill-in .pds-combobox__group-back-trigger,.pds-combobox__listbox--drill-out>li{-webkit-animation:pds-combobox-drill var(--pine-motion-duration-base) var(--pine-motion-easing-out);animation:pds-combobox-drill var(--pine-motion-duration-base) var(--pine-motion-easing-out)}@-webkit-keyframes pds-combobox-drill{from{opacity:0;-webkit-transform:translateX(var(--pds-combobox-drill-from));transform:translateX(var(--pds-combobox-drill-from))}}@keyframes pds-combobox-drill{from{opacity:0;-webkit-transform:translateX(var(--pds-combobox-drill-from));transform:translateX(var(--pds-combobox-drill-from))}}.pds-combobox__group-row--keyboard>.pds-combobox__group-row-trigger,.pds-combobox__group-back--keyboard>.pds-combobox__group-row-trigger{outline:var(--pine-outline-focus);outline-offset:calc(var(--pine-border-width) * -2)}.pds-combobox__group-row-label{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs);min-width:0}.pds-combobox__group-row-caret{-ms-flex-negative:0;flex-shrink:0}.pds-combobox__listbox--grouped,.pds-combobox__flyout{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--pine-dimension-2xs);padding:var(--pine-dimension-2xs)}.pds-combobox__flyout{background:var(--pine-color-background-overlay);border-radius:var(--pine-dimension-125);-webkit-box-shadow:var(--pine-box-shadow);box-shadow:var(--pine-box-shadow);list-style:none;margin:0;overflow-y:auto;position:fixed;visibility:hidden;width:-webkit-max-content;width:-moz-max-content;width:max-content;z-index:1}.pds-combobox__listbox--with-search{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;overflow:hidden;padding:0}.pds-combobox__listbox-options{-ms-flex:1;flex:1;list-style:none;margin:0;min-height:0;overflow-y:auto;padding:var(--pine-dimension-xs)}.pds-combobox__listbox-options.pds-combobox__listbox--grouped{padding:var(--pine-dimension-2xs)}.pds-combobox__panel-search{-ms-flex-align:center;align-items:center;-webkit-border-after:var(--pine-border);border-block-end:var(--pine-border);border-block-end-color:var(--pine-color-border-subtle);display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;gap:var(--pine-dimension-xs);padding:var(--pine-dimension-sm)}.pds-combobox__panel-search pds-icon{color:var(--pine-color-text-muted);-ms-flex-negative:0;flex-shrink:0}.pds-combobox__panel-search:focus-within{border-block-end-color:var(--pine-color-border-active)}.pds-combobox__panel-search-input{background:transparent;border:0;color:var(--pine-color-text-strong);-ms-flex:1;flex:1;font:var(--pine-typography-body);letter-spacing:var(--pine-letter-spacing);min-width:0;outline:none;padding:0}.pds-combobox__panel-search-input::-webkit-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__panel-search-input::-moz-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__panel-search-input:-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__panel-search-input::-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__panel-search-input::placeholder{color:var(--pine-color-text-placeholder)}.pds-combobox__group-back{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--pine-dimension-2xs);list-style:none}.pds-combobox__group-back-trigger{-ms-flex-pack:start;justify-content:flex-start}.pds-combobox__listbox-options--drilled-in.pds-combobox__listbox--grouped{-webkit-padding-before:0;padding-block-start:0}.pds-combobox__listbox-options--drilled-in:focus{outline:none}.pds-combobox__listbox-options--drilled-in:focus .pds-combobox__group-back-trigger{border-block-end-color:var(--pine-color-border-active)}:where(.pds-combobox__listbox-options--drilled-in) .pds-combobox__group-back-trigger{background-color:var(--pine-color-background-overlay);-webkit-border-after:var(--pine-border);border-block-end:var(--pine-border);border-block-end-color:var(--pine-color-border-subtle);border-radius:0;color:var(--pine-color-text-strong);font:var(--pine-typography-body);inset-block-start:0;letter-spacing:var(--pine-letter-spacing);margin-inline:calc(var(--pine-dimension-2xs) * -1);padding:var(--pine-dimension-sm);position:-webkit-sticky;position:sticky;z-index:1}.pds-combobox__drill-in-options{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--pine-dimension-2xs);list-style:none;margin:0;padding:0}.visually-hidden{border:0;clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pds-combobox__loading{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding:var(--pine-dimension-150)}.pds-combobox__empty{color:var(--pine-color-text-tertiary);padding:var(--pine-dimension-150) var(--pine-dimension-sm);text-align:center}.pds-combobox__load-more{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding:var(--pine-dimension-150)}:host(.pds-combobox-dropdown-portal) .pds-combobox__listbox{position:fixed;z-index:var(--pine-z-index-priority)}.pds-combobox__button-trigger{-ms-flex-align:center;align-items:center;background:var(--color-background-default, var(--pine-color-secondary));border:var(--pine-border);border-radius:var(--pine-border-radius-full);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--color-text-default, var(--pine-color-text-inverse-emphasis));cursor:pointer;display:-ms-flexbox;display:flex;font:var(--pine-typography-body-medium);-ms-flex-pack:justify;justify-content:space-between;min-height:var(--pine-dimension-450);outline:none;padding:0 var(--pine-dimension-sm);-webkit-transition:border-color 0.15s, background 0.15s, -webkit-box-shadow 0.15s;transition:border-color 0.15s, background 0.15s, -webkit-box-shadow 0.15s;transition:border-color 0.15s, box-shadow 0.15s, background 0.15s;transition:border-color 0.15s, box-shadow 0.15s, background 0.15s, -webkit-box-shadow 0.15s;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.pds-combobox__button-trigger .pds-combobox__button-trigger-layout-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1}.pds-combobox__button-trigger .trigger-content{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;width:100%}.pds-combobox__button-trigger:focus-visible{border-color:var(--color-border-focus, var(--pine-color-border));-webkit-box-shadow:0 0 0 2px var(--color-outline, var(--pine-color-focus-ring));box-shadow:0 0 0 2px var(--color-outline, var(--pine-color-focus-ring))}.pds-combobox__button-trigger:hover{background:var(--color-background-hover, var(--pine-color-secondary-hover));border-color:var(--color-border-hover, var(--pine-color-border-hover))}.pds-combobox__button-trigger[aria-disabled=true],.pds-combobox__button-trigger:disabled{background:var(--color-background-disabled, var(--pine-color-secondary-disabled));border-color:var(--color-border-disabled, var(--pine-color-border-disabled));color:var(--color-text-disabled, var(--pine-color-text-secondary-disabled));cursor:not-allowed;opacity:0.6}.pds-combobox__button-trigger-label{color:inherit;-ms-flex:1 1 auto;flex:1 1 auto;min-width:0;overflow-wrap:anywhere;text-align:start}.pds-combobox__button-trigger-label--with-icon{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs)}.pds-combobox__button-trigger-icon{-ms-flex-negative:0;flex-shrink:0}.pds-combobox__button-trigger--input-shape{border-radius:var(--pine-dimension-125);font:var(--pine-typography-body);letter-spacing:var(--pine-letter-spacing);min-height:var(--pine-dimension-450);padding:calc(var(--pine-dimension-xs) - var(--pine-border-width)) var(--pine-dimension-150)}.pds-combobox__button-trigger--secondary.pds-combobox__button-trigger--input-shape:not([aria-disabled=true]) .pds-combobox__button-trigger-label--placeholder{color:var(--pine-color-text-muted)}.pds-combobox__button-trigger-chevron{color:currentColor;-webkit-margin-start:var(--pine-dimension-150);margin-inline-start:var(--pine-dimension-150)}.pds-combobox__button-trigger--primary{--color-background-default:var(--pine-color-primary);--color-background-hover:var(--pine-color-primary-hover);--color-background-disabled:var(--pine-color-primary-disabled);--color-border-default:var(--pine-color-primary);--color-border-hover:var(--pine-color-primary-hover);--color-border-disabled:var(--pine-color-primary-disabled);--color-border-focus:var(--pine-color-primary);--color-text-default:var(--pine-color-text-primary);--color-text-disabled:var(--pine-color-text-primary-disabled);--color-outline:var(--pine-color-focus-ring)}.pds-combobox__button-trigger--accent{--color-background-default:var(--pine-color-accent);--color-background-hover:var(--pine-color-accent-hover);--color-background-disabled:var(--pine-color-accent-disabled);--color-border-default:var(--pine-color-accent);--color-border-hover:var(--pine-color-accent-hover);--color-border-disabled:var(--pine-color-accent-disabled);--color-border-focus:var(--pine-color-accent);--color-text-default:var(--pine-color-text-primary);--color-text-disabled:var(--pine-color-text-accent-disabled);--color-outline:var(--pine-color-focus-ring)}.pds-combobox__button-trigger--secondary{--color-background-default:var(--pine-color-secondary);--color-background-hover:var(--pine-color-secondary-hover);--color-background-disabled:var(--pine-color-secondary-disabled);--color-border-default:var(--pine-color-border);--color-border-hover:var(--pine-color-border-hover);--color-border-disabled:var(--pine-color-border-disabled);--color-border-focus:var(--pine-color-border);--color-text-default:var(--pine-color-text-secondary);--color-text-disabled:var(--pine-color-text-secondary-disabled);--color-outline:var(--pine-color-focus-ring)}.pds-combobox__button-trigger--destructive{--color-background-default:var(--pine-color-danger);--color-background-hover:var(--pine-color-danger-hover);--color-background-disabled:var(--pine-color-danger-disabled);--color-border-default:var(--pine-color-danger);--color-border-hover:var(--pine-color-danger-hover);--color-border-disabled:var(--pine-color-danger-disabled);--color-border-focus:var(--pine-color-danger);--color-text-default:var(--pine-color-white);--color-text-disabled:var(--pine-color-text-danger-disabled);--color-outline:var(--pine-color-focus-ring-danger)}[data-layout]{border-radius:var(--pine-dimension-125);padding-block:var(--pine-dimension-xs)}.pds-combobox__chip-trigger{-ms-flex-align:center;align-items:center;border-radius:var(--pine-dimension-sm);-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:-ms-inline-flexbox;display:inline-flex;font:var(--pine-typography-body-medium);-ms-flex-pack:justify;justify-content:space-between;outline:none;padding-block:var(--pine-dimension-025);padding-inline:var(--pine-dimension-150);-webkit-transition:all 0.15s ease;transition:all 0.15s ease;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.pds-combobox__chip-trigger .pds-combobox__chip-trigger-layout-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex:1;flex:1}.pds-combobox__chip-trigger .trigger-content{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;width:100%}.pds-combobox__chip-trigger:focus-visible{outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-combobox__chip-trigger[aria-disabled=true]{cursor:not-allowed;opacity:0.6}.pds-combobox__chip-trigger-label{color:inherit;-ms-flex:1 1 auto;flex:1 1 auto;text-align:start}.pds-combobox__chip-trigger-chevron{color:currentColor;-webkit-margin-start:var(--pine-dimension-150);margin-inline-start:var(--pine-dimension-150)}.pds-combobox__chip-trigger-icon{-webkit-margin-end:var(--pine-dimension-2xs);margin-inline-end:var(--pine-dimension-2xs)}.pds-combobox__chip-trigger--neutral,.pds-combobox__chip-trigger--accent,.pds-combobox__chip-trigger--success,.pds-combobox__chip-trigger--warning,.pds-combobox__chip-trigger--danger,.pds-combobox__chip-trigger--info{background:var(--chip-bg);border:var(--pine-border-width) solid var(--chip-border);color:var(--chip-text)}.pds-combobox__chip-trigger--neutral:hover:not([aria-disabled=true]),.pds-combobox__chip-trigger--accent:hover:not([aria-disabled=true]),.pds-combobox__chip-trigger--success:hover:not([aria-disabled=true]),.pds-combobox__chip-trigger--warning:hover:not([aria-disabled=true]),.pds-combobox__chip-trigger--danger:hover:not([aria-disabled=true]),.pds-combobox__chip-trigger--info:hover:not([aria-disabled=true]){background:var(--chip-bg-hover)}.pds-combobox__chip-trigger--neutral:focus-visible,.pds-combobox__chip-trigger--accent:focus-visible,.pds-combobox__chip-trigger--success:focus-visible,.pds-combobox__chip-trigger--warning:focus-visible,.pds-combobox__chip-trigger--danger:focus-visible,.pds-combobox__chip-trigger--info:focus-visible{border-color:var(--chip-border)}.pds-combobox__chip-trigger--neutral{--chip-bg:var(--pine-chip-color-neutral);--chip-bg-hover:var(--pine-chip-color-neutral-hover);--chip-border:var(--pine-chip-color-neutral-hover);--chip-text:var(--pine-color-text-neutral)}.pds-combobox__chip-trigger--accent{--chip-bg:var(--pine-chip-color-accent);--chip-bg-hover:var(--pine-chip-color-accent-hover);--chip-border:var(--pine-chip-color-accent-hover);--chip-text:var(--pine-color-text-accent)}.pds-combobox__chip-trigger--success{--chip-bg:var(--pine-chip-color-success);--chip-bg-hover:var(--pine-chip-color-success-hover);--chip-border:var(--pine-chip-color-success-hover);--chip-text:var(--pine-color-text-success)}.pds-combobox__chip-trigger--warning{--chip-bg:var(--pine-chip-color-warning);--chip-bg-hover:var(--pine-chip-color-warning-hover);--chip-border:var(--pine-chip-color-warning-hover);--chip-text:var(--pine-color-text-warning)}.pds-combobox__chip-trigger--danger{--chip-bg:var(--pine-chip-color-danger);--chip-bg-hover:var(--pine-chip-color-danger-hover);--chip-border:var(--pine-chip-color-danger-hover);--chip-text:var(--pine-color-text-danger)}.pds-combobox__chip-trigger--info{--chip-bg:var(--pine-chip-color-info);--chip-bg-hover:var(--pine-chip-color-info-hover);--chip-border:var(--pine-chip-color-info-hover);--chip-text:var(--pine-color-text-info)}.pds-combobox__chip-trigger--brand{background:-webkit-gradient(linear, left top, right top, from(#FF3E14), to(#6B62F2));background:linear-gradient(90deg, #FF3E14 0%, #6B62F2 100%);border:0;color:var(--pine-color-text-neutral);padding:1px;position:relative}.pds-combobox__chip-trigger--brand .pds-combobox__chip-trigger-label{background:rgba(255, 255, 255, 0.9);border-radius:calc(var(--pine-dimension-sm) - 1px);color:var(--pine-color-text-neutral);font-weight:var(--pine-font-weight-medium);padding:var(--pine-dimension-025) var(--pine-dimension-150);position:relative;z-index:1}.pds-combobox__chip-trigger--brand .pds-combobox__chip-trigger-chevron{position:relative;z-index:1}.pds-combobox__chip-trigger--brand:hover:not([aria-disabled=true]) .pds-combobox__chip-trigger-label{background:rgba(255, 255, 255, 0.8)}.pds-combobox__chip-trigger--dropdown:not(.pds-combobox__chip-trigger--brand){padding:var(--pine-dimension-none)}.pds-combobox__chip-trigger--dropdown:not(.pds-combobox__chip-trigger--brand) .pds-combobox__chip-trigger-label{padding:var(--pine-dimension-025) var(--pine-dimension-150)}.pds-combobox__chip-trigger--large .pds-combobox__chip-trigger-label{font-family:var(--pine-font-family-heading);font-size:var(--pine-font-size-heading-6);font-weight:var(--pine-font-weight-medium);letter-spacing:var(--pine-letter-spacing-heading-6)}.pds-combobox__chip-trigger--dot .pds-combobox__chip-trigger-label::before{border:var(--pine-border-width) solid transparent;border-radius:var(--pine-border-radius-full);content:"";display:inline-block;height:var(--pine-dimension-2xs);-webkit-margin-end:var(--pine-dimension-2xs);margin-inline-end:var(--pine-dimension-2xs);width:var(--pine-dimension-2xs)}`;
10987
11139
 
10988
11140
  /**
10989
11141
  * @slot option - Option elements for the combobox dropdown
@@ -11191,6 +11343,17 @@ class PdsCombobox {
11191
11343
  this.highlightedGroup = null;
11192
11344
  /** The keys, not the pointer, moved the highlight last; the focus ring shows only then. */
11193
11345
  this.keyboardNavigating = false;
11346
+ /**
11347
+ * A drill-in group row the first arrow showed rather than moved past. `aria-activedescendant`
11348
+ * already pointed at it, so the status region says it instead.
11349
+ */
11350
+ this.revealedGroupLabel = null;
11351
+ /**
11352
+ * The pointer in the panel can hover: a mouse or pen, not touch. Touch browsers keep a tapped row
11353
+ * hovered, so group rows shade on `:hover` only for a pointer that can hover. Checked on the
11354
+ * pointer itself rather than `(hover: hover)`, which a touch-first device with a trackpad fails.
11355
+ */
11356
+ this.pointerCanHover = true;
11194
11357
  /**
11195
11358
  * What's typed in the dropdown's own search field (`panelSearch`).
11196
11359
  */
@@ -11235,6 +11398,11 @@ class PdsCombobox {
11235
11398
  });
11236
11399
  /** The groups in the flyout panel's last render, so a row's index finds its optgroup. */
11237
11400
  this.renderedGroups = [];
11401
+ /**
11402
+ * Where each ungrouped option and optgroup built from the `options` prop came in the data, so
11403
+ * the flyout and drill-in panels draw them in that order. Slotted markup is already in order.
11404
+ */
11405
+ this.panelPositions = new WeakMap();
11238
11406
  /** Room for a flyout was checked for this open. */
11239
11407
  this.flyoutRoomChecked = false;
11240
11408
  /** The highlighted option sits in a flyout that hasn't rendered yet; focus it after the next render. */
@@ -11248,10 +11416,14 @@ class PdsCombobox {
11248
11416
  * the list shows every option until the user types (then normal filtering applies).
11249
11417
  */
11250
11418
  this.expandFilterListWhileOpen = false;
11419
+ this.onPanelPointer = (event) => {
11420
+ const canHover = event.pointerType !== 'touch';
11421
+ if (this.pointerCanHover !== canHover)
11422
+ this.pointerCanHover = canHover;
11423
+ };
11251
11424
  this.onDrillAnimationEnd = (event) => {
11252
- var _a;
11253
11425
  // Only the slide's own end: slotted consumer content can animate inside the list too.
11254
- if ((_a = event.animationName) === null || _a === void 0 ? void 0 : _a.startsWith('pds-combobox-drill'))
11426
+ if (event.animationName === 'pds-combobox-drill')
11255
11427
  this.drillDirection = null;
11256
11428
  };
11257
11429
  /** `<label for>` only works on the input trigger; for a div trigger a click on the label focuses it. */
@@ -11670,6 +11842,31 @@ class PdsCombobox {
11670
11842
  this.focusPanel(panelFocusEl);
11671
11843
  }
11672
11844
  }
11845
+ /**
11846
+ * Scrolls just enough to show `el`, as `scrollIntoView({ block: 'nearest' })` does. In the drill-in
11847
+ * panel it scrolls the list alone, and never sideways: while a drill-in slide offsets a row past
11848
+ * the list's edge, `scrollIntoView` also scrolls the list horizontally to reach it, which eats most
11849
+ * of the slide. There it keeps clear of the sticky row back, through the scroll padding set for it,
11850
+ * but doesn't scroll the page or a scrolling ancestor.
11851
+ */
11852
+ scrollIntoViewNearest(el, smooth) {
11853
+ const behavior = smooth ? 'smooth' : 'auto';
11854
+ if (!this.showsGroupedPanel || this.effectiveGroupDisplay !== 'drill-in') {
11855
+ el.scrollIntoView({ block: 'nearest', behavior });
11856
+ return;
11857
+ }
11858
+ const list = this.usesPanelSearch ? this.panelTreeEl : this.listboxEl;
11859
+ if (!list)
11860
+ return;
11861
+ const offset = el.getBoundingClientRect().top - list.getBoundingClientRect().top - list.clientTop;
11862
+ // The padding keeps rows clear of the sticky row back; the row back itself doesn't need it.
11863
+ const padding = el.classList.contains('pds-combobox__group-back-trigger') ? 0 : parseFloat(list.style.scrollPaddingBlockStart) || 0;
11864
+ const top = list.scrollTop + offset - padding;
11865
+ const bottom = list.scrollTop + offset + el.offsetHeight - list.clientHeight;
11866
+ const target = top < list.scrollTop ? top : bottom > list.scrollTop ? bottom : null;
11867
+ if (target !== null)
11868
+ list.scrollTo({ top: target, behavior });
11869
+ }
11673
11870
  focusPanel(el) {
11674
11871
  var _a, _b;
11675
11872
  this.panelFocusEl = el;
@@ -11690,6 +11887,7 @@ class PdsCombobox {
11690
11887
  }
11691
11888
  openGroupChanged(next, previous) {
11692
11889
  this.handPanelFocusToList();
11890
+ this.revealedGroupLabel = null;
11693
11891
  // Only moves between the drill-in panel's views slide; search results don't.
11694
11892
  if (!this.isOpen || this.effectiveGroupDisplay !== 'drill-in' || !this.showsGroupedPanel)
11695
11893
  return;
@@ -11712,6 +11910,7 @@ class PdsCombobox {
11712
11910
  }
11713
11911
  isOpenChanged(isOpen) {
11714
11912
  if (!isOpen) {
11913
+ this.revealedGroupLabel = null;
11715
11914
  this.drillDirection = null;
11716
11915
  this.openGroup = null;
11717
11916
  this.highlightedGroup = null;
@@ -11990,20 +12189,25 @@ class PdsCombobox {
11990
12189
  // slotted markup would be, so grouping, filtering and labels work the same either way. Each
11991
12190
  // group is listed where it first appears with all of its options, even when the data
11992
12191
  // interleaves groups, so an option never renders under another group's label. Ungrouped
11993
- // options come first, so none reads as part of the group above it.
12192
+ // options come first, so none reads as part of the group above it. The flyout and drill-in
12193
+ // panels draw groups as rows, where that can't happen, so they keep the data's order instead.
11994
12194
  const asyncOptions = this.options || this.internalOptions;
11995
12195
  const groups = new Map();
11996
12196
  const ungrouped = [];
11997
12197
  const groupEntries = [];
11998
- asyncOptions.forEach(opt => {
12198
+ this.panelPositions = new WeakMap();
12199
+ asyncOptions.forEach((opt, position) => {
11999
12200
  const optionEl = document.createElement('option');
12000
12201
  optionEl.value = String(opt.id);
12001
12202
  optionEl.textContent = opt.text;
12002
12203
  if (opt.disabled === true)
12003
12204
  optionEl.setAttribute('disabled', '');
12004
12205
  // Only strings group an option or name an icon; anything else from JS is ignored, not coerced.
12206
+ if (typeof opt.icon === 'string' && opt.icon !== '')
12207
+ optionEl.setAttribute('data-icon', opt.icon);
12005
12208
  if (typeof opt.group !== 'string' || opt.group === '') {
12006
12209
  ungrouped.push(optionEl);
12210
+ this.panelPositions.set(optionEl, position);
12007
12211
  return;
12008
12212
  }
12009
12213
  let optgroup = groups.get(opt.group);
@@ -12012,6 +12216,7 @@ class PdsCombobox {
12012
12216
  optgroup.label = opt.group;
12013
12217
  groups.set(opt.group, optgroup);
12014
12218
  groupEntries.push(optgroup);
12219
+ this.panelPositions.set(optgroup, position);
12015
12220
  }
12016
12221
  if (!optgroup.hasAttribute('data-icon') && typeof opt.groupIcon === 'string' && opt.groupIcon !== '') {
12017
12222
  optgroup.setAttribute('data-icon', opt.groupIcon);
@@ -12476,6 +12681,7 @@ class PdsCombobox {
12476
12681
  handleGroupedPanelKey(e) {
12477
12682
  if (!this.showsGroupedPanel)
12478
12683
  return false;
12684
+ const highlightShown = this.keyboardNavigating;
12479
12685
  this.keyboardNavigating = true;
12480
12686
  // In the input trigger, Left and Right still move the caret through typed text, and Space,
12481
12687
  // Home and End edit it, as they do in the panel's search field.
@@ -12485,23 +12691,32 @@ class PdsCombobox {
12485
12691
  if (e.key === ' ' || e.key === 'Home' || e.key === 'End')
12486
12692
  return false;
12487
12693
  }
12488
- const entries = buildPanelEntries(this.filteredItems);
12694
+ const entries = this.panelEntries();
12489
12695
  const drilledIn = this.effectiveGroupDisplay === 'drill-in' && this.openGroup !== null;
12490
12696
  const current = this.currentPanelItem();
12491
12697
  const column = panelColumn(entries, this.openGroup, current, drilledIn);
12492
12698
  if (column.length === 0)
12493
12699
  return false;
12494
12700
  const position = current === null ? -1 : column.indexOf(current);
12701
+ // Drill-in doesn't shade a group row the pointer or a click-open highlighted, so the first Up or
12702
+ // Down shows that row rather than moving past one the user never saw.
12703
+ const unseenRow = !highlightShown && this.effectiveGroupDisplay === 'drill-in' && current !== null && typeof current !== 'number' && current !== this.openGroup;
12495
12704
  const moveTo = (to) => {
12496
12705
  e.preventDefault();
12497
12706
  this.highlightPanelItem(column[Math.max(0, Math.min(column.length - 1, to))]);
12707
+ this.revealedGroupLabel = null;
12708
+ return true;
12709
+ };
12710
+ const reveal = () => {
12711
+ e.preventDefault();
12712
+ this.revealedGroupLabel = current.label;
12498
12713
  return true;
12499
12714
  };
12500
12715
  switch (e.key) {
12501
12716
  case 'ArrowDown':
12502
- return moveTo(position < 0 ? 0 : position + 1);
12717
+ return unseenRow ? reveal() : moveTo(position < 0 ? 0 : position + 1);
12503
12718
  case 'ArrowUp':
12504
- return moveTo(position < 0 ? column.length - 1 : position - 1);
12719
+ return unseenRow ? reveal() : moveTo(position < 0 ? column.length - 1 : position - 1);
12505
12720
  case 'Home':
12506
12721
  return moveTo(0);
12507
12722
  case 'End':
@@ -12634,7 +12849,7 @@ class PdsCombobox {
12634
12849
  // In the grouped panel, the first row with something to choose: a group stays closed until
12635
12850
  // it's opened.
12636
12851
  if (this.showsGroupedPanel) {
12637
- const first = buildPanelEntries(this.filteredItems).find(entry => entry.kind === 'group' ? !isGroupDisabled(entry.group) : !isOptionDisabled(entry.option));
12852
+ const first = this.panelEntries().find(entry => entry.kind === 'group' ? !isGroupDisabled(entry.group) : !isOptionDisabled(entry.option));
12638
12853
  this.highlightedIndex = (first === null || first === void 0 ? void 0 : first.kind) === 'option' ? first.index : -1;
12639
12854
  this.highlightedGroup = (first === null || first === void 0 ? void 0 : first.kind) === 'group' ? first.group.optgroup : null;
12640
12855
  return;
@@ -12699,8 +12914,13 @@ class PdsCombobox {
12699
12914
  }
12700
12915
  // Matched by id, not a selector: componentId is consumer text and may not be selector-safe.
12701
12916
  const id = this.groupDomId(groupRow);
12702
- (_a = Array.from(this.listboxEl.querySelectorAll('[role="treeitem"]'))
12703
- .find(row => row.id === id)) === null || _a === void 0 ? void 0 : _a.scrollIntoView({ block: 'nearest' });
12917
+ const row = Array.from(this.listboxEl.querySelectorAll('[role="treeitem"]'))
12918
+ .find(item => item.id === id);
12919
+ // The row's trigger, not its item: the row back's item wraps the group's options, and showing
12920
+ // all of a group taller than the list would scroll the row back itself out of view.
12921
+ const trigger = Array.from((_a = row === null || row === void 0 ? void 0 : row.children) !== null && _a !== void 0 ? _a : []).find(child => child.classList.contains('pds-combobox__group-row-trigger'));
12922
+ if (trigger)
12923
+ this.scrollIntoViewNearest(trigger, false);
12704
12924
  this.updateAriaActiveDescendant();
12705
12925
  return;
12706
12926
  }
@@ -12751,7 +12971,7 @@ class PdsCombobox {
12751
12971
  this.flyout.reveal(flyout, currentOption);
12752
12972
  }
12753
12973
  else {
12754
- currentOption.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
12974
+ this.scrollIntoViewNearest(currentOption, true);
12755
12975
  }
12756
12976
  }
12757
12977
  // Always update aria-activedescendant on the trigger element
@@ -12848,6 +13068,8 @@ class PdsCombobox {
12848
13068
  this.highlightedIndex = -1;
12849
13069
  this.highlightedGroup = group;
12850
13070
  this.keyboardNavigating = false;
13071
+ // So revealing this row again later is announced again.
13072
+ this.revealedGroupLabel = null;
12851
13073
  }
12852
13074
  // Get the label of the selected option
12853
13075
  get selectedLabel() {
@@ -13003,7 +13225,8 @@ class PdsCombobox {
13003
13225
  'pds-combobox__listbox--grouped': this.groupDisplay !== 'inline',
13004
13226
  'pds-combobox__listbox--drill-in': this.drillDirection === 'in',
13005
13227
  'pds-combobox__listbox--drill-out': this.drillDirection === 'out',
13006
- }, onAnimationEnd: this.onDrillAnimationEnd, role: this.showsGroupedPanel ? 'tree' : 'listbox', id: this.listboxId, "aria-label": this.label || 'Options', "aria-multiselectable": "false",
13228
+ 'pds-combobox__listbox--pointer-hover': this.pointerCanHover,
13229
+ }, onAnimationEnd: this.onDrillAnimationEnd, onPointerMove: this.onPanelPointer, onPointerDown: this.onPanelPointer, role: this.showsGroupedPanel ? 'tree' : 'listbox', id: this.listboxId, "aria-label": this.label || 'Options', "aria-multiselectable": "false",
13007
13230
  // Focusable but out of the tab order with panel search, so it can take focus when a
13008
13231
  // drilled-in group hides the field. Dropping it while focused would blur the list and close.
13009
13232
  tabIndex: withSearch ? -1 : undefined, "aria-activedescendant": listTakesFocus ? this.activeDescendantId : undefined, onKeyDown: withSearch ? this.onPanelTreeKeyDown : undefined, ref: el => {
@@ -13169,7 +13392,21 @@ class PdsCombobox {
13169
13392
  'pds-combobox__option--layout': isLayout,
13170
13393
  'pds-combobox__option--chip': isChip,
13171
13394
  'pds-combobox__option--disabled': isDisabled,
13172
- }, "data-option-index": index, onMouseDown: this.onOptionMouseDown, onClick: this.onOptionClick, onMouseEnter: this.onOptionMouseEnter, onKeyDown: this.onOptionKeyDown }, isLayout ? (hAsync("pds-box", { class: "pds-combobox__option-layout-wrapper", innerHTML: this.getOptionLayoutContent(option) })) : isChip ? (this.renderOptionChip(option)) : (this.getOptionLabel(option)), isSelected && hAsync("pds-icon", { icon: "check", size: "regular", class: "pds-combobox__option-check" })));
13395
+ }, "data-option-index": index, onMouseDown: this.onOptionMouseDown, onClick: this.onOptionClick, onMouseEnter: this.onOptionMouseEnter, onKeyDown: this.onOptionKeyDown }, isLayout ? (hAsync("pds-box", { class: "pds-combobox__option-layout-wrapper", innerHTML: this.getOptionLayoutContent(option) })) : isChip ? (this.renderOptionChip(option)) : (this.renderOptionLabel(option)), isSelected && hAsync("pds-icon", { icon: "check", size: "regular", class: "pds-combobox__option-check" })));
13396
+ }
13397
+ /** An option's text, after its `data-icon` when it has one. */
13398
+ renderOptionLabel(option) {
13399
+ const icon = optionIconOf(option);
13400
+ if (icon === null)
13401
+ return this.getOptionLabel(option);
13402
+ return (hAsync("span", { class: "pds-combobox__option-label" }, hAsync("pds-icon", { name: icon, size: "regular", "aria-hidden": "true", class: "pds-combobox__option-icon" }), this.getOptionLabel(option)));
13403
+ }
13404
+ /** The grouped panel's rows, in the order the panel draws them and the keyboard moves through. */
13405
+ panelEntries() {
13406
+ // Slotted markup is already in order; only options from data record positions.
13407
+ if (this.options === undefined && !this.asyncUrl)
13408
+ return buildPanelEntries(this.filteredItems);
13409
+ return buildPanelEntries(this.filteredItems, element => this.panelPositions.get(element));
13173
13410
  }
13174
13411
  /**
13175
13412
  * `flyout`: one row per group, its options in a flyout beside it. `drill-in`: the same rows, and
@@ -13177,7 +13414,7 @@ class PdsCombobox {
13177
13414
  * it's a tree: the rows and ungrouped options are level 1, a group's options level 2.
13178
13415
  */
13179
13416
  renderGroupedPanel() {
13180
- const entries = buildPanelEntries(this.filteredItems);
13417
+ const entries = this.panelEntries();
13181
13418
  const setsize = entries.length;
13182
13419
  if (this.effectiveGroupDisplay === 'drill-in' && this.openGroup !== null) {
13183
13420
  const position = entries.findIndex(entry => entry.kind === 'group' && entry.group.optgroup === this.openGroup);
@@ -13208,22 +13445,26 @@ class PdsCombobox {
13208
13445
  return (hAsync("li", { key: "group-back", id: id, class: {
13209
13446
  'pds-combobox__group-back': true,
13210
13447
  'pds-combobox__group-back--disabled': disabled,
13211
- 'pds-combobox__group-back--highlighted': this.highlightedGroupRow === group.optgroup,
13448
+ // As the group rows: shaded for the keys, and by `:hover` for the pointer.
13449
+ 'pds-combobox__group-back--highlighted': this.keyboardNavigating && this.highlightedGroupRow === group.optgroup,
13212
13450
  'pds-combobox__group-back--keyboard': this.keyboardNavigating && this.highlightedGroupRow === group.optgroup,
13213
13451
  }, role: "treeitem", "aria-expanded": "true", "aria-disabled": disabled ? 'true' : undefined, "aria-level": 1, "aria-posinset": posinset, "aria-setsize": setsize, "aria-labelledby": `${id}-label` }, hAsync("div", { class: "pds-combobox__group-row-trigger pds-combobox__group-back-trigger", onMouseDown: this.onOptionMouseDown, onMouseEnter: this.onGroupBackMouseEnter, onClick: this.onGroupBackClick }, hAsync("span", { class: "pds-combobox__group-row-label", id: `${id}-label` }, hAsync("pds-icon", { name: "caret-left", size: "regular", "aria-hidden": "true", class: "pds-combobox__group-row-caret" }), hAsync("span", { class: "visually-hidden" }, this.drillInBackLabel, ": "), group.label)), hAsync("ul", { class: "pds-combobox__drill-in-options", role: "group", "aria-label": group.label }, this.renderGroupOptions(group))));
13214
13452
  }
13215
13453
  renderGroupRow(group, groupIndex, { posinset, setsize }) {
13216
13454
  const flyout = this.effectiveGroupDisplay === 'flyout';
13217
13455
  const isOpen = flyout && this.openGroup === group.optgroup;
13218
- const hasSelection = group.options.some(({ option }) => this.isOptionSelected(option));
13456
+ // Drill-in shades a group row only for the keys: not for the group holding the selection, or the
13457
+ // row the pointer or a click-open left highlighted, which read as picked. `:hover` covers the pointer.
13458
+ const hasSelection = flyout && group.options.some(({ option }) => this.isOptionSelected(option));
13459
+ const isCurrent = this.highlightedGroupRow === group.optgroup;
13219
13460
  const disabled = isGroupDisabled(group);
13220
13461
  const id = this.groupDomId(group.optgroup);
13221
13462
  return (hAsync("li", { key: `group-${groupIndex}`, id: id, class: {
13222
13463
  'pds-combobox__group-row': true,
13223
13464
  'pds-combobox__group-row--open': isOpen,
13224
13465
  'pds-combobox__group-row--has-selection': hasSelection,
13225
- 'pds-combobox__group-row--highlighted': this.highlightedGroupRow === group.optgroup,
13226
- 'pds-combobox__group-row--keyboard': this.keyboardNavigating && this.highlightedGroupRow === group.optgroup,
13466
+ 'pds-combobox__group-row--highlighted': isCurrent && (flyout || this.keyboardNavigating),
13467
+ 'pds-combobox__group-row--keyboard': isCurrent && this.keyboardNavigating,
13227
13468
  'pds-combobox__group-row--disabled': disabled,
13228
13469
  }, role: "treeitem", "aria-expanded": isOpen ? 'true' : 'false', "aria-disabled": disabled ? 'true' : undefined, "aria-level": 1, "aria-posinset": posinset, "aria-setsize": setsize, "aria-labelledby": `${id}-label`, "data-group-index": groupIndex, onMouseEnter: flyout ? this.onGroupRowMouseEnter : undefined, onMouseLeave: flyout ? this.onGroupRowMouseLeave : undefined }, hAsync("div", { class: "pds-combobox__group-row-trigger", "data-group-index": groupIndex, onMouseDown: this.onOptionMouseDown, onMouseEnter: this.onGroupRowTriggerMouseEnter, onClick: this.onGroupRowClick }, hAsync("span", { class: "pds-combobox__group-row-label", id: `${id}-label` }, group.icon !== null && (
13229
13470
  // `name`, not `icon`: `icon` also loads URLs and data: SVGs, unsanitized.
@@ -13239,7 +13480,23 @@ class PdsCombobox {
13239
13480
  }
13240
13481
  // Helper method to render default text content
13241
13482
  renderDefaultContent() {
13242
- return (hAsync("span", { class: { 'pds-combobox__button-trigger-label': true, 'pds-combobox__button-trigger-label--placeholder': !this.selectedLabel } }, this.selectedLabel || this.placeholder));
13483
+ const icon = this.selectedIcon;
13484
+ return (hAsync("span", { class: {
13485
+ 'pds-combobox__button-trigger-label': true,
13486
+ 'pds-combobox__button-trigger-label--placeholder': !this.selectedLabel,
13487
+ 'pds-combobox__button-trigger-label--with-icon': icon !== null,
13488
+ } }, icon !== null && (
13489
+ // `name`, not `icon`: `icon` also loads URLs and data: SVGs, unsanitized.
13490
+ hAsync("pds-icon", { name: icon, size: "regular", "aria-hidden": "true", class: "pds-combobox__button-trigger-icon" })), this.selectedLabel || this.placeholder));
13491
+ }
13492
+ /** The selection's icon for the button trigger: the option's own, or else its group's. */
13493
+ get selectedIcon() {
13494
+ var _a;
13495
+ const option = this.selectedOption;
13496
+ if (!option)
13497
+ return null;
13498
+ const optgroup = parentOptgroupOf(option);
13499
+ return (_a = optionIconOf(option)) !== null && _a !== void 0 ? _a : (optgroup !== null ? groupIconOf(optgroup) : null);
13243
13500
  }
13244
13501
  // Helper method to check if we should show layout content
13245
13502
  shouldShowLayoutContent() {
@@ -13357,6 +13614,7 @@ class PdsCombobox {
13357
13614
  ];
13358
13615
  }
13359
13616
  render() {
13617
+ var _a;
13360
13618
  const triggerClass = [
13361
13619
  'pds-combobox__button-trigger',
13362
13620
  `pds-combobox__button-trigger--${this.triggerVariant}`,
@@ -13364,13 +13622,18 @@ class PdsCombobox {
13364
13622
  ]
13365
13623
  .filter(Boolean)
13366
13624
  .join(' ');
13367
- return (hAsync(Host, { key: '960558b36010eb059c98acc37439656f2f7ff657', "aria-disabled": this.disabled ? 'true' : null }, hAsync("div", { key: 'b0abcd004aa98b630819cfdd0cfb85ebde2ee2f8', class: "pds-combobox", tabIndex: -1, onFocusout: this.onComboboxFocusOut, part: "combobox" }, this.hasVisibleLabel && (hAsync("label", { key: 'ae42f12fe4d0c498c99c0baae7673ff90e1be576', htmlFor: this.trigger === 'input' ? this.componentId : undefined, id: this.labelId, class: "pds-combobox__label", onClick: this.onLabelClick }, this.label)), this.trigger === 'input' ? (hAsync("div", { class: "pds-combobox__input-wrapper", style: { width: this.triggerWidth } }, hAsync("input", { ref: el => {
13625
+ return (hAsync(Host, { key: 'e934b937916e45f715e6fb54d23a2a5e7c8ce4f6', "aria-disabled": this.disabled ? 'true' : null }, hAsync("div", { key: '79d282907c4f218e124b4f9250e0aedb0e9ea51d', class: "pds-combobox", tabIndex: -1, onFocusout: this.onComboboxFocusOut, part: "combobox" }, this.hasVisibleLabel && (hAsync("label", { key: 'd05a4a8fe5362b2b0a684f36115c127689c35c2f', htmlFor: this.trigger === 'input' ? this.componentId : undefined, id: this.labelId, class: "pds-combobox__label", onClick: this.onLabelClick }, this.label)), this.trigger === 'input' ? (hAsync("div", { class: "pds-combobox__input-wrapper", style: { width: this.triggerWidth } }, hAsync("input", { ref: el => {
13368
13626
  this.inputEl = el;
13369
13627
  this.triggerEl = el;
13370
13628
  }, class: {
13371
13629
  'pds-combobox__input': true,
13372
13630
  'pds-combobox__input--invalid': this.isInvalid(),
13373
- }, type: "text", role: "combobox", "aria-autocomplete": "list", "aria-haspopup": this.inputPopupRole === 'tree' ? 'tree' : undefined, "aria-controls": this.listboxId, "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-activedescendant": this.usesPanelSearch ? undefined : this.activeDescendantId, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, value: this.displayText, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleInput, onClick: this.handleInputClick, onKeyDown: this.handleKeyDown, autocomplete: "off", part: "input" }), hAsync("pds-icon", { icon: "enlarge", "aria-hidden": "true", class: "pds-combobox__input-icon" }))) : this.trigger === 'chip' ? (hAsync("div", { class: this.getChipTriggerClass(), style: { width: this.triggerWidth }, role: this.usesPanelSearch ? 'button' : 'combobox', "aria-haspopup": this.triggerPopupRole, "aria-controls": this.listboxId, "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-activedescendant": this.usesPanelSearch ? undefined : this.activeDescendantId, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.triggerAriaLabel, "aria-labelledby": this.triggerLabelledBy, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "chip-trigger" }, this.renderChipTriggerContent())) : (hAsync("div", { class: triggerClass, style: { width: this.triggerWidth }, role: this.usesPanelSearch ? 'button' : 'combobox', "aria-haspopup": this.triggerPopupRole, "aria-controls": this.listboxId, "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-activedescendant": this.usesPanelSearch ? undefined : this.activeDescendantId, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.triggerAriaLabel, "aria-labelledby": this.triggerLabelledBy, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "button-trigger" }, this.renderButtonTriggerContent())), this.renderMessages(), hAsync("div", { key: 'ab0dba6db0a989cb2e41632cb8412062f96c38cd', style: { display: 'none' } }, hAsync("slot", { key: '337461c5ead6dda1d04911fd4b5a23b1dc6b9726', onSlotchange: () => this.updateOptions() })), this.renderDropdown(), this.groupDisplay !== 'inline' && (hAsync("span", { key: 'd8d82d69381548b2e3266d9109c98ab0397b22e0', class: "visually-hidden", role: "status", "aria-live": "polite" }, this.isOpen && this.effectiveGroupDisplay === 'drill-in' && this.openGroup !== null ? this.openGroup.label : '')))));
13631
+ }, type: "text", role: "combobox", "aria-autocomplete": "list", "aria-haspopup": this.inputPopupRole === 'tree' ? 'tree' : undefined, "aria-controls": this.listboxId, "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-activedescendant": this.usesPanelSearch ? undefined : this.activeDescendantId, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, value: this.displayText, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleInput, onClick: this.handleInputClick, onKeyDown: this.handleKeyDown, autocomplete: "off", part: "input" }), hAsync("pds-icon", { icon: "enlarge", "aria-hidden": "true", class: "pds-combobox__input-icon" }))) : this.trigger === 'chip' ? (hAsync("div", { class: this.getChipTriggerClass(), style: { width: this.triggerWidth }, role: this.usesPanelSearch ? 'button' : 'combobox', "aria-haspopup": this.triggerPopupRole, "aria-controls": this.listboxId, "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-activedescendant": this.usesPanelSearch ? undefined : this.activeDescendantId, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.triggerAriaLabel, "aria-labelledby": this.triggerLabelledBy, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "chip-trigger" }, this.renderChipTriggerContent())) : (hAsync("div", { class: triggerClass, style: { width: this.triggerWidth }, role: this.usesPanelSearch ? 'button' : 'combobox', "aria-haspopup": this.triggerPopupRole, "aria-controls": this.listboxId, "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-activedescendant": this.usesPanelSearch ? undefined : this.activeDescendantId, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.triggerAriaLabel, "aria-labelledby": this.triggerLabelledBy, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "button-trigger" }, this.renderButtonTriggerContent())), this.renderMessages(), hAsync("div", { key: '38d9c018d59472ef8b7eb3facb47bea5c73f5f1e', style: { display: 'none' } }, hAsync("slot", { key: '26acb32e5f301b568485d52e29b68e526ef1d525', onSlotchange: () => this.updateOptions() })), this.renderDropdown(), this.groupDisplay !== 'inline' && [
13632
+ hAsync("span", { key: "drill-status", class: "visually-hidden", role: "status", "aria-live": "polite" }, this.isOpen && this.effectiveGroupDisplay === 'drill-in' && this.openGroup !== null ? this.openGroup.label : ''),
13633
+ // Its own region: sharing one, revealing a row then opening it would leave the text the
13634
+ // same, and opening the group would go unannounced.
13635
+ hAsync("span", { key: "reveal-status", class: "visually-hidden", role: "status", "aria-live": "polite" }, this.isOpen ? (_a = this.revealedGroupLabel) !== null && _a !== void 0 ? _a : '' : ''),
13636
+ ])));
13374
13637
  }
13375
13638
  static get formAssociated() { return true; }
13376
13639
  get el() { return getElement(this); }
@@ -13453,6 +13716,8 @@ class PdsCombobox {
13453
13716
  "drillDirection": [32],
13454
13717
  "highlightedGroup": [32],
13455
13718
  "keyboardNavigating": [32],
13719
+ "revealedGroupLabel": [32],
13720
+ "pointerCanHover": [32],
13456
13721
  "panelQuery": [32],
13457
13722
  "flyoutFallback": [32],
13458
13723
  "selectedOption": [32],
@@ -13500,7 +13765,7 @@ class PdsContainer {
13500
13765
  hostStyle['--pine-container-max-width'] = customSize;
13501
13766
  if (!this.centered)
13502
13767
  hostStyle['margin-inline'] = '0';
13503
- return (hAsync(Host, { key: '8a01369c4d1817dd083b1ac714ff7c02920f817e', class: { [`pds-container--${this.size}`]: isNamed }, style: Object.keys(hostStyle).length ? hostStyle : undefined }, hAsync(Tag, { key: '7428cb0040896dc11004065cf91ae9d3c3a99c49', part: "container" }, hAsync("slot", { key: '5a5b5bbc87c03afc23f1c9a0523fced8c0795efb' }))));
13768
+ return (hAsync(Host, { key: '8a9b10b5d0e348b73f8a6bd7933083c596df10d8', class: { [`pds-container--${this.size}`]: isNamed }, style: Object.keys(hostStyle).length ? hostStyle : undefined }, hAsync(Tag, { key: '55fb22be49377c4cccf08381e7cf954a3f097d08', part: "container" }, hAsync("slot", { key: '4cd9c4fa74a2c6a056e076ab67a0279c395b5c79' }))));
13504
13769
  }
13505
13770
  static get style() { return pdsContainerCss(); }
13506
13771
  static get cmpMeta() { return {
@@ -13620,7 +13885,7 @@ class PdsCopytext {
13620
13885
  render() {
13621
13886
  const hostClass = this.classNames();
13622
13887
  this.hostKeeper.record(hostClass);
13623
- return (hAsync(Host, { key: '1c43941f808f58a53f1c445e0f5693985c793c35', class: hostClass, id: this.componentId }, hAsync("pds-button", { key: 'd771d2587a11f1b27bded17b5df5e649ea93cd90', type: "button", variant: "unstyled", onClick: this.handleClick }, hAsync("span", { key: '0d4fd25220cac636b328fd1ee1aba40d07296265', ref: (el) => this.valueSpanEl = el }, this.value), hAsync("pds-icon", { key: '832a044c10843bb90833301cc3f3ea1f7b755f42', "aria-hidden": "true", icon: copy, size: "16px" }))));
13888
+ return (hAsync(Host, { key: 'd9bd40af6e435d606841cb551341eab33c5983b7', class: hostClass, id: this.componentId }, hAsync("pds-button", { key: '7a42b32678fccb2cbe0d7a68a5da6d5fe5276a4a', type: "button", variant: "unstyled", onClick: this.handleClick }, hAsync("span", { key: '732db283b8075ebad8e1daff70692bac2978aade', ref: (el) => this.valueSpanEl = el }, this.value), hAsync("pds-icon", { key: 'ebfd34b9b5a47b78783302ce97d752af09e3f3e3', "aria-hidden": "true", icon: copy, size: "16px" }))));
13624
13889
  }
13625
13890
  get el() { return getElement(this); }
13626
13891
  static get watchers() { return {
@@ -15622,14 +15887,14 @@ class PdsDatepicker {
15622
15887
  }
15623
15888
  render() {
15624
15889
  const locale = this.resolvedLocale;
15625
- return (hAsync(Host, { key: 'a761f0ca6eeedcac3e4bd90760aa9781cd37dcdc', class: { 'pds-datepicker--range': this.range, 'pds-datepicker--time': this.timePicker }, "full-width": this.fullWidth ? 'true' : null, onFocusin: this.onHostFocusIn, onFocusout: this.onHostFocusOut }, hAsync("pds-input", { key: '2eb04f9fd4e2f7a2437145d250c629c2cc8a0bf6', ref: (el) => (this.inputEl = el), componentId: this.baseId, label: this.label, hideLabel: this.hideLabel, helperMessage: this.helperMessage, errorMessage: this.errorMessage, invalid: this.invalid || !!this.textError || !!this.valueError(), disabled: this.disabled, readonly: this.readonly, required: this.required, placeholder: this.fieldPlaceholder, fullWidth: this.fullWidth, autocomplete: "off", value: this.text, onClick: this.onFieldClick, onPdsInput: this.onTextInput, onPdsChange: this.onTextChange, onPdsKeyDown: this.onTextKeyDown, onPdsFocus: this.stopInnerEvent, onPdsBlur: this.stopInnerEvent }, this.clearable && !!this.value && this.isInteractive && (hAsync("button", {
15890
+ return (hAsync(Host, { key: '82ffd88b7741a90edc28b66a7384178eb2a9a86c', class: { 'pds-datepicker--range': this.range, 'pds-datepicker--time': this.timePicker }, "full-width": this.fullWidth ? 'true' : null, onFocusin: this.onHostFocusIn, onFocusout: this.onHostFocusOut }, hAsync("pds-input", { key: 'f2b9aad64d1fe8d94327cc3d4f87cd6904eb3076', ref: (el) => (this.inputEl = el), componentId: this.baseId, label: this.label, hideLabel: this.hideLabel, helperMessage: this.helperMessage, errorMessage: this.errorMessage, invalid: this.invalid || !!this.textError || !!this.valueError(), disabled: this.disabled, readonly: this.readonly, required: this.required, placeholder: this.fieldPlaceholder, fullWidth: this.fullWidth, autocomplete: "off", value: this.text, onClick: this.onFieldClick, onPdsInput: this.onTextInput, onPdsChange: this.onTextChange, onPdsKeyDown: this.onTextKeyDown, onPdsFocus: this.stopInnerEvent, onPdsBlur: this.stopInnerEvent }, this.clearable && !!this.value && this.isInteractive && (hAsync("button", {
15626
15891
  // Keyed, as is the calendar button: when Clear appears after a pick, the focused
15627
15892
  // calendar button must stay that button rather than be reused as Clear.
15628
15893
  key: "clear", slot: "suffix", type: "button", class: "pds-datepicker__clear", ref: (el) => (this.clearEl = el), "aria-label": this.label ? `${this.clearLabel} ${this.label}` : this.clearLabel,
15629
15894
  // Out of the tab order, as a native search field's clear button is: Tab from a field
15630
15895
  // just emptied would land on it as the change removes it, dropping focus to the page.
15631
15896
  tabindex: "-1", onMouseDown: this.onClearMouseDown, onClick: this.onClearClick
15632
- }, hAsync("pds-icon", { key: '98c325fbba8ea78b2d409bc77099db3206738508', icon: remove, "aria-hidden": "true" }))), hAsync("button", { key: "trigger", slot: "suffix", type: "button", class: "pds-datepicker__trigger", ref: (el) => (this.triggerEl = el), "aria-label": this.triggerAccessibleName(locale), "aria-haspopup": "dialog", "aria-expanded": this.isOpen ? 'true' : 'false', disabled: !this.isInteractive, onClick: this.onTriggerClick, onKeyDown: this.onTriggerKeyDown }, hAsync("pds-icon", { key: 'cb8483febe1b485058b7bb4271b749981a7747a1', icon: calendarSimple, "aria-hidden": "true" }))), this.isOpen && this.renderCalendar(locale)));
15897
+ }, hAsync("pds-icon", { key: 'f2c784e9d6577d4900b7641ee58aa43f5922fc75', icon: remove, "aria-hidden": "true" }))), hAsync("button", { key: "trigger", slot: "suffix", type: "button", class: "pds-datepicker__trigger", ref: (el) => (this.triggerEl = el), "aria-label": this.triggerAccessibleName(locale), "aria-haspopup": "dialog", "aria-expanded": this.isOpen ? 'true' : 'false', disabled: !this.isInteractive, onClick: this.onTriggerClick, onKeyDown: this.onTriggerKeyDown }, hAsync("pds-icon", { key: '98b2e773240c8ea2bbd5a1acfa3c9ba74cb7917b', icon: calendarSimple, "aria-hidden": "true" }))), this.isOpen && this.renderCalendar(locale)));
15633
15898
  }
15634
15899
  static get formAssociated() { return true; }
15635
15900
  get el() { return getElement(this); }
@@ -15771,7 +16036,7 @@ class PdsDivider {
15771
16036
  return classNames.join(' ');
15772
16037
  }
15773
16038
  render() {
15774
- return (hAsync(Host, { key: '072cc8552bd33c4a00d216f15a5a848cfc97fd92', id: this.componentId }, this.hasLabel ? (hAsync("div", { class: this.classNames(), role: "separator", "aria-label": this.label }, hAsync("span", { class: "pds-divider__label", part: "label", "aria-hidden": "true" }, this.label))) : (hAsync("hr", { class: this.classNames() }))));
16039
+ return (hAsync(Host, { key: 'ef2a5ee85e8f37036be5b8df490683636ffb66f0', id: this.componentId }, this.hasLabel ? (hAsync("div", { class: this.classNames(), role: "separator", "aria-label": this.label }, hAsync("span", { class: "pds-divider__label", part: "label", "aria-hidden": "true" }, this.label))) : (hAsync("hr", { class: this.classNames() }))));
15775
16040
  }
15776
16041
  static get style() { return pdsDividerCss(); }
15777
16042
  static get cmpMeta() { return {
@@ -15953,11 +16218,11 @@ class PdsDrawer {
15953
16218
  this.open = false;
15954
16219
  }
15955
16220
  render() {
15956
- return (hAsync(Host, { key: '166bc90b45d29f64f11b6840e7c6ae798bf14261', class: {
16221
+ return (hAsync(Host, { key: 'ae7e67ed196ef95a39c2b729e859712ce5c41144', class: {
15957
16222
  'pds-drawer': true,
15958
16223
  [`pds-drawer--${this.side}`]: true,
15959
16224
  [`pds-drawer--${this.size}`]: true,
15960
- } }, hAsync("pds-modal", { key: '2faa1cee1f34a85e9df0cabb8e78803982414982', class: "pds-drawer__modal", ref: (el) => (this.modalEl = el), componentId: this.componentId, open: this.open, scrollable: this.scrollable, disableTopLayer: true, backdropDismiss: this.lightDismiss, disableInitialFocus: this.initialFocus === 'none' }, hAsync("slot", { key: '93968e612756c398f6d1faf9383f6c88c420da28' }))));
16225
+ } }, hAsync("pds-modal", { key: '9b35ce377c84612a844a561d5540e98b08c0e499', class: "pds-drawer__modal", ref: (el) => (this.modalEl = el), componentId: this.componentId, open: this.open, scrollable: this.scrollable, disableTopLayer: true, backdropDismiss: this.lightDismiss, disableInitialFocus: this.initialFocus === 'none' }, hAsync("slot", { key: 'dda01aa40dc41b3d17073238a8cad8d816571e18' }))));
15961
16226
  }
15962
16227
  get el() { return getElement(this); }
15963
16228
  static get style() { return pdsDrawerCss(); }
@@ -15997,7 +16262,7 @@ class PdsDrawerContent {
15997
16262
  unwrapReconnectedContent(this.el.querySelector('.pds-drawer-content'), '.pds-drawer-content');
15998
16263
  }
15999
16264
  render() {
16000
- return (hAsync("div", { key: 'b15b087506c1292f9d67e531e8d935069749c09d', class: "pds-drawer-content" }, hAsync("slot", { key: '9c60ca75c7905e7e994f9c41eee213b962afb833' })));
16265
+ return (hAsync("div", { key: 'f307939ab0a94f6a0d8a3675c658def0ded68b98', class: "pds-drawer-content" }, hAsync("slot", { key: 'dadac08ac15bb8ded98ea982511e2d57bea9bdca' })));
16001
16266
  }
16002
16267
  get el() { return getElement(this); }
16003
16268
  static get style() { return pdsDrawerContentCss(); }
@@ -16025,7 +16290,7 @@ class PdsDrawerFooter {
16025
16290
  unwrapReconnectedContent(this.el.querySelector('.pds-drawer__footer'), '.pds-drawer__footer');
16026
16291
  }
16027
16292
  render() {
16028
- return (hAsync("footer", { key: 'a4eec0aff617c605b94f8d3b9ec1e2d98cded6fb', class: "pds-drawer__footer" }, hAsync("slot", { key: '6dc379c940e37edfd05d99728be9dff58ca1d717' })));
16293
+ return (hAsync("footer", { key: 'b58c68d88b467e8baa3682d16f97076d06ea2414', class: "pds-drawer__footer" }, hAsync("slot", { key: 'ff2306202c14029b397d40b5bb3d672a8aa571c0' })));
16029
16294
  }
16030
16295
  get el() { return getElement(this); }
16031
16296
  static get style() { return pdsDrawerFooterCss(); }
@@ -16053,7 +16318,7 @@ class PdsDrawerHeader {
16053
16318
  unwrapReconnectedContent(this.el.querySelector('.pds-drawer__header'), '.pds-drawer__header');
16054
16319
  }
16055
16320
  render() {
16056
- return (hAsync("header", { key: '6b9338e5dbf7a7e580c11b28c95ca53693528382', class: "pds-drawer__header" }, hAsync("slot", { key: '0990fbcf94c0c438b98cf1e8945f1e2fd9aa33dc' })));
16321
+ return (hAsync("header", { key: '280e6ca734317d5733e4c595431c8070eff13d58', class: "pds-drawer__header" }, hAsync("slot", { key: 'cc6af6084600c4dc60d7bd99e040376abdf5ffe3' })));
16057
16322
  }
16058
16323
  get el() { return getElement(this); }
16059
16324
  static get style() { return pdsDrawerHeaderCss(); }
@@ -16067,9 +16332,10 @@ class PdsDrawerHeader {
16067
16332
  }; }
16068
16333
  }
16069
16334
 
16070
- const pdsDropdownMenuCss = () => `:host{display:block}.is-hidden{display:none}.pds-dropdown-menu--panel{background-color:var(--pine-color-background-overlay);border-radius:var(--pine-dimension-xs);left:var(--pine-dimension-none);min-width:170px;padding:var(--pine-dimension-xs);position:fixed;z-index:var(--pine-z-index-overlay)}:host-context([data-theme=dark]) .pds-dropdown-menu--panel{border:var(--pine-border)}::slotted(a),::slotted(button){-ms-flex-align:center;align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;border-radius:var(--pine-dimension-xs) !important;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--pine-color-text) !important;cursor:pointer;display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;font:var(--pine-typography-body-medium) !important;gap:var(--pine-dimension-xs);margin:calc(var(--pine-border-width) + 2px) !important;padding:var(--pine-dimension-xs) !important;text-align:start;text-decoration:none !important;width:calc(100% - (var(--pine-border-width) + 2px) * 2)}::slotted(.destructive){color:var(--pine-color-danger) !important}::slotted([aria-disabled=true]),::slotted([disabled]:not([disabled=false])){cursor:not-allowed;opacity:0.5;pointer-events:none}`;
16335
+ const pdsDropdownMenuCss = () => `:host{display:block}.is-hidden{display:none}.pds-dropdown-menu--panel{background-color:var(--pine-color-background-overlay);border-radius:var(--pine-dimension-xs);left:var(--pine-dimension-none);min-width:170px;padding:var(--pine-dimension-xs);position:fixed;z-index:var(--pine-z-index-overlay)}:host-context([data-theme=dark]) .pds-dropdown-menu--panel{border:var(--pine-border)}.pds-dropdown-menu__header{-webkit-border-after:var(--pine-border-width-thin) solid var(--pine-color-border);border-block-end:var(--pine-border-width-thin) solid var(--pine-color-border);-webkit-margin-after:var(--pine-dimension-xs);margin-block-end:var(--pine-dimension-xs);margin-inline:calc(var(--pine-dimension-xs) * -1);-webkit-padding-after:var(--pine-dimension-xs);padding-block-end:var(--pine-dimension-xs);padding-inline:calc(var(--pine-dimension-xs) * 2 + var(--pine-border-width) + 2px);text-align:start}.pds-dropdown-menu__items{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}::slotted(a:not([slot=header])),::slotted(button:not([slot=header])){-ms-flex-align:center;align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;border-radius:var(--pine-dimension-xs) !important;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--pine-color-text) !important;cursor:pointer;display:-ms-flexbox;display:flex;-ms-flex-positive:1;flex-grow:1;font:var(--pine-typography-body-medium) !important;gap:var(--pine-dimension-xs);margin:calc(var(--pine-border-width) + 2px) !important;padding:var(--pine-dimension-xs) !important;text-align:start;text-decoration:none !important;width:calc(100% - (var(--pine-border-width) + 2px) * 2)}::slotted(.destructive:not([slot=header])){color:var(--pine-color-danger) !important}::slotted([aria-disabled=true]:not([slot=header])),::slotted([disabled]:not([disabled=false]):not([slot=header])){cursor:not-allowed;opacity:0.5;pointer-events:none}`;
16071
16336
 
16072
16337
  /**
16338
+ * @slot header - Non-interactive content displayed above the menu items inside the dropdown panel. It renders outside the menu role, so assistive tech reads it as plain content rather than as a menu item.
16073
16339
  * @part menu-panel - Exposes the dropdown menu container for styling.
16074
16340
  */
16075
16341
  class PdsDropdownMenu {
@@ -16080,6 +16346,7 @@ class PdsDropdownMenu {
16080
16346
  this.cleanupAutoUpdate = null;
16081
16347
  this.triggerObserver = null;
16082
16348
  this.currentFocusIndex = -1;
16349
+ this.hasHeader = false;
16083
16350
  /**
16084
16351
  * The placement of the dropdown panel relative to the trigger.
16085
16352
  */
@@ -16098,8 +16365,11 @@ class PdsDropdownMenu {
16098
16365
  // Writes the trigger's ARIA from the menu's state, so the observer's own callback doesn't loop.
16099
16366
  this.syncTriggerAria = () => {
16100
16367
  if (!this.triggerEl)
16101
- return;
16102
- setAttributesIfChanged(this.triggerEl, { 'aria-haspopup': 'menu', 'aria-expanded': String(this.isOpen) });
16368
+ return false;
16369
+ return setAttributesIfChanged(this.triggerEl, { 'aria-haspopup': 'menu', 'aria-expanded': String(this.isOpen) });
16370
+ };
16371
+ this.handleHeaderSlotChange = (event) => {
16372
+ this.hasHeader = event.target.assignedElements().length > 0;
16103
16373
  };
16104
16374
  this.handleSlotChange = (event) => {
16105
16375
  this.slotEl = event.target;
@@ -16178,6 +16448,9 @@ class PdsDropdownMenu {
16178
16448
  this.toggleDropdown();
16179
16449
  };
16180
16450
  }
16451
+ componentWillLoad() {
16452
+ this.hasHeader = Array.from(this.host.children).some(el => el.getAttribute('slot') === 'header');
16453
+ }
16181
16454
  componentDidRender() {
16182
16455
  var _a;
16183
16456
  this.panelEl = (_a = this.host.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('pds-box');
@@ -16206,7 +16479,8 @@ class PdsDropdownMenu {
16206
16479
  this.triggerObserver = null;
16207
16480
  if (!this.triggerEl || typeof MutationObserver === 'undefined')
16208
16481
  return;
16209
- this.triggerObserver = new MutationObserver(this.syncTriggerAria);
16482
+ // Capped against a script that keeps undoing it; opening and closing still write it directly.
16483
+ this.triggerObserver = new MutationObserver(limitRestores(this.syncTriggerAria, 'pds-dropdown-menu: stopped restoring its trigger ARIA, as another script keeps changing it. It may be wrong until the menu opens or closes.', this.triggerEl));
16210
16484
  this.triggerObserver.observe(this.triggerEl, {
16211
16485
  attributes: true,
16212
16486
  attributeFilter: ['aria-haspopup', 'aria-expanded'],
@@ -16412,7 +16686,7 @@ class PdsDropdownMenu {
16412
16686
  }
16413
16687
  }
16414
16688
  render() {
16415
- return (hAsync(Host, { key: '9d67972cf15c22bc666c32b86dcd8f143160ee0a', id: this.componentId }, hAsync("slot", { key: 'e9cbc0612ce0e8c2bf55e1dc7930eda075fcc173', name: "trigger", onSlotchange: this.handleTriggerSlotChange }), hAsync("pds-box", { key: '6fed3f11cf962a97f8ebb3cc69bd76efb425c464', "border-radius": "sm", display: "flex", direction: "column", class: "pds-dropdown-menu--panel is-hidden", shadow: "100", role: "menu", "aria-orientation": "vertical", part: "menu-panel" }, hAsync("slot", { key: 'b8757512713b913f3ee56d9518897e7ed3c3b830', onSlotchange: this.handleSlotChange }))));
16689
+ return (hAsync(Host, { key: '0dd585168e8fa86378c4812ce54fd09108861d5b', id: this.componentId }, hAsync("slot", { key: 'c7144f8d6aaebe37b585c6c6230102c013230a9e', name: "trigger", onSlotchange: this.handleTriggerSlotChange }), hAsync("pds-box", { key: '82292e051337141bc9fd83b90292b188b0bb3489', "border-radius": "sm", display: "flex", direction: "column", class: "pds-dropdown-menu--panel is-hidden", shadow: "100", part: "menu-panel" }, hAsync("div", { key: 'c0f49dca14df0ba3885865c51562c380155bf8a8', class: { 'pds-dropdown-menu__header': true, 'is-hidden': !this.hasHeader } }, hAsync("slot", { key: 'dc80c97a8dbb79ab4563524b3dea68d144e8570c', name: "header", onSlotchange: this.handleHeaderSlotChange })), hAsync("div", { key: '29cb56bdf28a0438296f33e0fa86c9da7b51902c', class: "pds-dropdown-menu__items", role: "menu", "aria-orientation": "vertical" }, hAsync("slot", { key: '8f91ceeb1eedc4acc79f09032dedc69a2ba1f99a', onSlotchange: this.handleSlotChange })))));
16416
16690
  }
16417
16691
  get host() { return getElement(this); }
16418
16692
  static get style() { return pdsDropdownMenuCss(); }
@@ -16422,7 +16696,8 @@ class PdsDropdownMenu {
16422
16696
  "$members$": {
16423
16697
  "componentId": [1, "component-id"],
16424
16698
  "placement": [1],
16425
- "currentFocusIndex": [32]
16699
+ "currentFocusIndex": [32],
16700
+ "hasHeader": [32]
16426
16701
  },
16427
16702
  "$listeners$": [[8, "keydown", "handleKeyDown"], [8, "click", "handleWindowClick"]],
16428
16703
  "$lazyBundleId$": "-",
@@ -16507,7 +16782,7 @@ class PdsDropdownMenuItem {
16507
16782
  }, tabIndex: this.disabled ? -1 : 0, type: "button", part: "button", onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, disabled: this.disabled, "aria-disabled": this.disabled ? 'true' : null }, hAsync("slot", null)));
16508
16783
  }
16509
16784
  render() {
16510
- return (hAsync(Host, { key: 'cf22f97df3869d59820ba0deff9a21bfee2628b8', id: this.componentId, class: { 'is-disabled': this.disabled, 'destructive': !this.disabled && this.destructive }, onClick: () => !this.disabled && this.handleClick(), role: "none", tabIndex: -1, "aria-disabled": this.disabled ? 'true' : null }, this.renderElement()));
16785
+ return (hAsync(Host, { key: '33bd645d7c9547e3fd07429cf795302e6a482296', id: this.componentId, class: { 'is-disabled': this.disabled, 'destructive': !this.disabled && this.destructive }, onClick: () => !this.disabled && this.handleClick(), role: "none", tabIndex: -1, "aria-disabled": this.disabled ? 'true' : null }, this.renderElement()));
16511
16786
  }
16512
16787
  get host() { return getElement(this); }
16513
16788
  static get style() { return pdsDropdownMenuItemCss(); }
@@ -16543,7 +16818,7 @@ class PdsDropdownMenuSeparator {
16543
16818
  this.disabled = false;
16544
16819
  }
16545
16820
  render() {
16546
- return (hAsync(Host, { key: '63bd5fd3112b1030d1e86b331a659ab3a92dd387', id: this.componentId }, hAsync("hr", { key: '0a8504d34a9b91db03abdddd86ce918c00534410' })));
16821
+ return (hAsync(Host, { key: '60407a2edc8b4667d39cbd1ba9a859d09b0b8ff1', id: this.componentId }, hAsync("hr", { key: '8485d1c8508c5fe5e3635505f25e278f45f45b82' })));
16547
16822
  }
16548
16823
  static get style() { return pdsDropdownMenuSeparatorCss(); }
16549
16824
  static get cmpMeta() { return {
@@ -17123,7 +17398,7 @@ class PdsFilter {
17123
17398
  return null;
17124
17399
  }
17125
17400
  render() {
17126
- return (hAsync(Host, { key: '4abb55453c9ab4cd49b21a23047aa5ee4ab70056', id: this.componentId }, hAsync("button", { key: 'e6b6bd81ca3f9d23f490219cf8e81f0bdf511798', class: this.getTriggerClasses(), type: "button", popoverTarget: this.variant !== 'clear' ? `${this.componentId}-popover` : undefined, popoverTargetAction: this.variant !== 'clear' ? 'toggle' : undefined, onKeyDown: this.variant === 'clear' ? this.handleKeyDown : undefined, onClick: (event) => this.handleClick(event), part: "button", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": this.variant !== 'clear' ? 'true' : undefined, "aria-controls": this.variant !== 'clear' ? `${this.componentId}-popover` : undefined }, hAsync("span", { key: '4cea081451f50508cef36e90d4c88cbd94933287', class: "pds-filter__button-content", part: "button-content" }, this.renderIcon(), this.text && (hAsync("span", { key: '479f84087e7969fa555475b240f5e70ce5bcf136', class: "pds-filter__button-text", part: "button-text" }, this.text)), this.renderDropdownIcon())), this.variant !== 'clear' && (hAsync("div", { key: '85aec3d5d7b33a0cfb3602412238830929902eb1', ref: el => this.popoverEl = el, id: `${this.componentId}-popover`, class: "pds-filter__popover", popover: "auto", part: "popover" }, hAsync("slot", { key: 'ede4c3866bfdce974e0d21c6e6a3ae22aee47d2c' })))));
17401
+ return (hAsync(Host, { key: '3cae951aee1f9c75f3e207cf6c68633a23f8f6dc', id: this.componentId }, hAsync("button", { key: 'f4c644710dc936248995be9a49cef8ad13031d61', class: this.getTriggerClasses(), type: "button", popoverTarget: this.variant !== 'clear' ? `${this.componentId}-popover` : undefined, popoverTargetAction: this.variant !== 'clear' ? 'toggle' : undefined, onKeyDown: this.variant === 'clear' ? this.handleKeyDown : undefined, onClick: (event) => this.handleClick(event), part: "button", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": this.variant !== 'clear' ? 'true' : undefined, "aria-controls": this.variant !== 'clear' ? `${this.componentId}-popover` : undefined }, hAsync("span", { key: '2dd87e53f363118becc762051ea1be664258b8b6', class: "pds-filter__button-content", part: "button-content" }, this.renderIcon(), this.text && (hAsync("span", { key: '733ceb5e07198e844fbdc1af294d2046c4c571d8', class: "pds-filter__button-text", part: "button-text" }, this.text)), this.renderDropdownIcon())), this.variant !== 'clear' && (hAsync("div", { key: 'beb65a21192c6f5c16703aec7ab9a92ea378ef3c', ref: el => this.popoverEl = el, id: `${this.componentId}-popover`, class: "pds-filter__popover", popover: "auto", part: "popover" }, hAsync("slot", { key: '5a481cc6b143b059a5fc33d377abe5ab79aefb4e' })))));
17127
17402
  }
17128
17403
  get el() { return getElement(this); }
17129
17404
  static get style() { return pdsFilterCss(); }
@@ -17155,7 +17430,7 @@ class PdsFilters {
17155
17430
  registerInstance(this, hostRef);
17156
17431
  }
17157
17432
  render() {
17158
- return (hAsync(Host, { key: '5587c41a5ca93cc48399d7c1af0762d4a3516b4d', id: this.componentId }, hAsync("div", { key: '43ee499b9c3f49b52cf18beee8ac5cf97b8ad49a', class: "pds-filters" }, hAsync("slot", { key: '79a452042d7aa7e0492d80fd773f71fb820c2211' }))));
17433
+ return (hAsync(Host, { key: '8688235fe7cdea1b4fc540156ff21bb9711b41b6', id: this.componentId }, hAsync("div", { key: 'e51a37977df8c31f99b28d8c7e4bedb0d63e53c6', class: "pds-filters" }, hAsync("slot", { key: '8ce936da4d3f0213408090bc3eeb011920f9aa6c' }))));
17159
17434
  }
17160
17435
  static get style() { return pdsFiltersCss(); }
17161
17436
  static get cmpMeta() { return {
@@ -17284,6 +17559,28 @@ const isRTL = (hostEl) => {
17284
17559
  const isSrc = (str) => str.length > 0 && /(\/|\.)/.test(str);
17285
17560
  const isStr = (val) => typeof val === 'string'; // eslint-disable-line @typescript-eslint/no-explicit-any
17286
17561
  const toLower = (val) => val.toLowerCase();
17562
+ /**
17563
+ * Normalizes a color value for use as a CSS custom property value: a bare
17564
+ * design token (--pine-color-foo) is wrapped in var(...), an already-wrapped
17565
+ * var(--token) is passed through unchanged, and anything else (a literal CSS
17566
+ * color, or currentColor) is passed through as-is. Mirrors the equivalent
17567
+ * utility in the `pine` repo's `libs/core/src/utils/utils.ts`
17568
+ * (`normalizeColorValue`) — duplicated here rather than imported because
17569
+ * `@pine-ds/core` already depends on `@pine-ds/icons`, so the reverse
17570
+ * dependency would be circular.
17571
+ */
17572
+ const normalizeColorValue = (value) => {
17573
+ if (!isStr(value))
17574
+ return undefined;
17575
+ const trimmed = value.trim();
17576
+ if (trimmed === '')
17577
+ return undefined;
17578
+ if (trimmed.startsWith('var('))
17579
+ return trimmed;
17580
+ if (trimmed.startsWith('--'))
17581
+ return `var(${trimmed})`;
17582
+ return trimmed;
17583
+ };
17287
17584
  /**
17288
17585
  * Elements inside of web components sometimes need to inherit global attributes
17289
17586
  * set on the host. For example, the inner input in `pds-input` should inherit
@@ -17445,9 +17742,10 @@ class PdsIcon {
17445
17742
  this.setupInitialAriaLabel();
17446
17743
  }
17447
17744
  setCSSVariables() {
17745
+ var _a;
17448
17746
  this.el.style.setProperty(`--dimension-icon-height`, this.iconSize());
17449
17747
  this.el.style.setProperty(`--dimension-icon-width`, this.iconSize());
17450
- this.el.style.setProperty(`--color-icon-fill`, typeof this.color !== 'undefined' ? this.color : 'currentColor');
17748
+ this.el.style.setProperty(`--color-icon-fill`, (_a = normalizeColorValue(this.color)) !== null && _a !== void 0 ? _a : 'currentColor');
17451
17749
  }
17452
17750
  connectedCallback() {
17453
17751
  // Handle re-connection during client-side navigation
@@ -17492,7 +17790,7 @@ class PdsIcon {
17492
17790
  const shouldFlip = flipRtl || shouldIconAutoFlip;
17493
17791
  // Use inherited aria-label if provided, otherwise fall back to auto-generated one
17494
17792
  const finalAriaLabel = inheritedAttributes['aria-label'] || ariaLabel;
17495
- return (hAsync(Host, Object.assign({ key: '43aa73531314e6529a887468e69362430d006229', "aria-label": finalAriaLabel !== undefined && !this.hasAriaHidden() ? finalAriaLabel : null, alt: "", role: "img", class: Object.assign(Object.assign({}, createColorClasses(this.color)), { 'flip-rtl': shouldFlip, 'icon-rtl': shouldFlip && isRTL(this.el) }) }, inheritedAttributes), (hAsync("div", { class: "icon-inner" }))));
17793
+ return (hAsync(Host, Object.assign({ key: '3af1c02235a2645bc3bb300831b19779cca78827', "aria-label": finalAriaLabel !== undefined && !this.hasAriaHidden() ? finalAriaLabel : null, alt: "", role: "img", class: Object.assign(Object.assign({}, createColorClasses(this.color)), { 'flip-rtl': shouldFlip, 'icon-rtl': shouldFlip && isRTL(this.el) }) }, inheritedAttributes), (hAsync("div", { class: "icon-inner" }))));
17496
17794
  }
17497
17795
  /*****
17498
17796
  * Private Methods
@@ -17628,9 +17926,9 @@ class PdsImage {
17628
17926
  this.loading = 'eager';
17629
17927
  }
17630
17928
  render() {
17631
- return (hAsync(Host, { key: 'fff1a796e59b8e666069e56390e174d7d2861f03', class: {
17929
+ return (hAsync(Host, { key: '1e8bb3882c2a629004ce1441e85d5c5a75a84e98', class: {
17632
17930
  'pds-image': true,
17633
- }, id: this.componentId }, hAsync("img", { key: 'dbeda9da5adca51c58ec5a807cde673d6b479d0f', alt: this.alt, height: this.height, loading: this.loading, sizes: this.sizes, src: this.src, srcset: this.srcset, width: this.width })));
17931
+ }, id: this.componentId }, hAsync("img", { key: 'b50b19d51431d45027c7a918a4ba4c38493741d5', alt: this.alt, height: this.height, loading: this.loading, sizes: this.sizes, src: this.src, srcset: this.srcset, width: this.width })));
17634
17932
  }
17635
17933
  static get style() { return pdsImageCss(); }
17636
17934
  static get cmpMeta() { return {
@@ -17950,10 +18248,10 @@ class PdsInput {
17950
18248
  'has-prepend': this.hasPrepend,
17951
18249
  'has-append': this.hasAppend,
17952
18250
  };
17953
- return (hAsync(Host, { key: '8c0829cc3502e5fa1fe52584d84b9345fcb0f3fd', "aria-disabled": this.disabled ? 'true' : null, "aria-readonly": this.readonly ? 'true' : null, "has-prefix": this.hasPrefix ? 'true' : null, "has-suffix": this.hasSuffix ? 'true' : null, "has-prepend": this.hasPrepend ? 'true' : null, "has-append": this.hasAppend ? 'true' : null, "has-action": this.hasAction && !this.hideLabel ? 'true' : null, "full-width": this.fullWidth ? 'true' : null }, hAsync("div", { key: 'cf754e6fc72d2cf900e541a469a8e0ba62851538', class: "pds-input" }, label && (hAsync("div", { key: 'f55793898eb2840322ec9a79daed186420ef0d90', class: {
18251
+ return (hAsync(Host, { key: '75eb8bc6cda5e947f8677ebefe7995688f03f947', "aria-disabled": this.disabled ? 'true' : null, "aria-readonly": this.readonly ? 'true' : null, "has-prefix": this.hasPrefix ? 'true' : null, "has-suffix": this.hasSuffix ? 'true' : null, "has-prepend": this.hasPrepend ? 'true' : null, "has-append": this.hasAppend ? 'true' : null, "has-action": this.hasAction && !this.hideLabel ? 'true' : null, "full-width": this.fullWidth ? 'true' : null }, hAsync("div", { key: '93d7f90b9a64daccea1533abc08a8cb18825b828', class: "pds-input" }, label && (hAsync("div", { key: '948109b3bfa1a1b8171572da9160425e3e35a7a6', class: {
17954
18252
  'pds-input__label-wrapper': true,
17955
18253
  'visually-hidden': this.hideLabel,
17956
- } }, hAsync("label", { key: '2a7deac2a9443b1a648133a799b69414b96314e3', htmlFor: componentId, class: "pds-input__label" }, hAsync("span", { key: '75dc7787e0132c4f62272307867a8066f9cf6ce2' }, label, this.required && hAsync("span", { key: 'c7c413addd2b3f275031596598b030c02f647969', class: "pds-input__required-indicator" }, " *"))), !this.hideLabel && this.renderAction())), hAsync("div", { key: 'eaf09d07c4fbc84ef835d2c7b4f00e252394f5ed', class: inputWrapperClasses }, this.renderPrepend(), this.renderPrefix(), hAsync("input", Object.assign({ key: 'dca2390b44e430f0ab1d29daa4ce630ac3b12881', ref: (input) => (this.nativeInput = input), class: "pds-input__field", "aria-describedby": assignDescription(componentId, invalid, helperMessage, errorMessage), "aria-invalid": invalid ? "true" : undefined, autocomplete: this.autocomplete, disabled: disabled, id: componentId, max: this.max, maxlength: this.maxlength, min: this.min, minlength: this.minlength, name: this.name, pattern: this.pattern, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, step: this.step, type: this.type, value: value, onInput: this.onInputEvent, onChange: this.onChangeEvent, onBlur: this.onBlurEvent, onFocus: this.onFocusEvent, onKeyDown: this.onKeyDownEvent, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), this.renderSuffix(), this.renderAppend()), helperMessage && (hAsync("p", { key: '0bd7859f44185ed0c1478833518cb5829ffea4ad', class: "pds-input__helper-message", id: messageId(componentId, 'helper') }, helperMessage)), errorMessage && (hAsync("p", { key: 'c40016f5bb03e292e01430c2940aff0ebb98abb5', class: "pds-input__error-message", id: messageId(componentId, 'error') }, hAsync("pds-icon", { key: '54985d775ddf951b50cae4796b7847e98de7434f', "aria-hidden": "true", icon: danger, size: "small" }), errorMessage)))));
18254
+ } }, hAsync("label", { key: 'bb0e6c6febb97ad4aa3942ac5e67ac42dc1bde0a', htmlFor: componentId, class: "pds-input__label" }, hAsync("span", { key: 'c6a122f829aa3b92ccb715c3f3975f6baadb3028' }, label, this.required && hAsync("span", { key: 'dce7d1a9c010a545992734bd238e9f6a4ca7b4ce', class: "pds-input__required-indicator" }, " *"))), !this.hideLabel && this.renderAction())), hAsync("div", { key: '1b92ab5d649a4a9cf8112ea9b8a8a1095714f6d0', class: inputWrapperClasses }, this.renderPrepend(), this.renderPrefix(), hAsync("input", Object.assign({ key: 'bc3c4b907312149d375bb78f9912e4501da59348', ref: (input) => (this.nativeInput = input), class: "pds-input__field", "aria-describedby": assignDescription(componentId, invalid, helperMessage, errorMessage), "aria-invalid": invalid ? "true" : undefined, autocomplete: this.autocomplete, disabled: disabled, id: componentId, max: this.max, maxlength: this.maxlength, min: this.min, minlength: this.minlength, name: this.name, pattern: this.pattern, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, step: this.step, type: this.type, value: value, onInput: this.onInputEvent, onChange: this.onChangeEvent, onBlur: this.onBlurEvent, onFocus: this.onFocusEvent, onKeyDown: this.onKeyDownEvent, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd }, this.inheritedAttributes)), this.renderSuffix(), this.renderAppend()), helperMessage && (hAsync("p", { key: 'f7bcbafc17a20310d602fce14a0adad522acbcb1', class: "pds-input__helper-message", id: messageId(componentId, 'helper') }, helperMessage)), errorMessage && (hAsync("p", { key: 'bbbd6dc3203b89e5759587147de74d2ce3ce6177', class: "pds-input__error-message", id: messageId(componentId, 'error') }, hAsync("pds-icon", { key: '68a6a92c82c1756ad99f431e0cb56756e3cdf75c', "aria-hidden": "true", icon: danger, size: "small" }), errorMessage)))));
17957
18255
  }
17958
18256
  static get formAssociated() { return true; }
17959
18257
  get el() { return getElement(this); }
@@ -18065,8 +18363,8 @@ class PdsLink {
18065
18363
  const targetValue = this.target || (this.external ? '_blank' : undefined);
18066
18364
  const showExternalIcon = this.external;
18067
18365
  const relValue = targetValue === '_blank' ? 'noopener noreferrer' : undefined;
18068
- return (hAsync("a", { key: '4757dc775fb132ea1fed93fed8e3cd18c77d45af', class: this.classNames(), download: this.download, href: this.href, id: this.componentId, part: "link", "aria-current": this.active ? 'page' : undefined, target: targetValue, rel: relValue, style: this.setLinkStyles(), "data-turbo": this.turbo || undefined, "data-turbo-frame": this.turboFrame || undefined, "data-turbo-action": this.turboAction || undefined, "data-turbo-method": this.turboMethod || undefined, "data-turbo-confirm": this.turboConfirm || undefined, "data-turbo-stream": this.turboStream || undefined, "data-turbo-prefetch": this.turboPrefetch || undefined, "data-turbo-preload": this.turboPreload || undefined }, hAsync("slot", { key: '88e5a1ef3b0fc384f7449979029fa45c627aab99' }, this.href), showExternalIcon &&
18069
- hAsync("pds-icon", { key: '6f1b9cf0dab342ea09c1f52c605228ef4d04f829', icon: launch, size: this.fontSize })));
18366
+ return (hAsync("a", { key: '3b6f9d19d7f50d0606cf5f3c3a97b85ee4aa63b0', class: this.classNames(), download: this.download, href: this.href, id: this.componentId, part: "link", "aria-current": this.active ? 'page' : undefined, target: targetValue, rel: relValue, style: this.setLinkStyles(), "data-turbo": this.turbo || undefined, "data-turbo-frame": this.turboFrame || undefined, "data-turbo-action": this.turboAction || undefined, "data-turbo-method": this.turboMethod || undefined, "data-turbo-confirm": this.turboConfirm || undefined, "data-turbo-stream": this.turboStream || undefined, "data-turbo-prefetch": this.turboPrefetch || undefined, "data-turbo-preload": this.turboPreload || undefined }, hAsync("slot", { key: 'a265f1c4c9b6ff089b23906d8f650bfd65b25013' }, this.href), showExternalIcon &&
18367
+ hAsync("pds-icon", { key: '9553a8256b6811296ea4b762e32662c1a2f4aecf', icon: launch, size: this.fontSize })));
18070
18368
  }
18071
18369
  static get style() { return pdsLinkCss(); }
18072
18370
  static get cmpMeta() { return {
@@ -18165,7 +18463,7 @@ class PdsLoader {
18165
18463
  'aria-live': 'polite',
18166
18464
  };
18167
18465
  this.hostKeeper.record(hostClass, {}, hostAttributes);
18168
- return (hAsync(Host, Object.assign({ key: '81f97b8a6adf4d2c0e5516aa2af9054e200629e1', class: hostClass }, hostAttributes), this.variant === 'spinner' && (hAsync("div", { key: '6e25806c83d6ddeb1141acdd083654867c6ff8a2', class: "pds-loader--spinner" }, hAsync("svg", { key: '4798f27facfcf57da8d408319527fc6083489107', style: this.getSvgStyle(), viewBox: "0 0 200 200", fill: "none", part: "loader-svg" }, hAsync("defs", { key: '0c64abfabc18ccd51ef41017e088f6ec10736d61' }, hAsync("linearGradient", { key: '3aa61edf6250dc827bf925938b69008860f96596', id: "spinner-secondHalf" }, hAsync("stop", { key: '2693d8a866492ef4ca98cbc4beb5f9f1a34a8b52', offset: "0%", "stop-opacity": "0", "stop-color": "currentColor" }), hAsync("stop", { key: 'ae229fdc73733e4d6ab15a6663e67b574bd49b40', offset: "100%", "stop-opacity": "0.5", "stop-color": "currentColor" })), hAsync("linearGradient", { key: '8ddbb46a1a387113d74a82cc4e3e0e9c7e12d573', id: "spinner-firstHalf" }, hAsync("stop", { key: 'd166a3c1ae37c3afa898351683b07f5c4d0ee906', offset: "0%", "stop-opacity": "1", "stop-color": "currentColor" }), hAsync("stop", { key: 'e4c9790bc9a645d752aa56c238fb8708310208b5', offset: "100%", "stop-opacity": "0.5", "stop-color": "currentColor" }))), hAsync("g", { key: '8b3897ff925d4207f9060e2fb69afa657b1b8fe3', class: "pds-loader__spinner-path" }, hAsync("path", { key: '603ef195d1fc64d2059d9fbfeb9b14e2bdb1cabe', stroke: "url(#spinner-secondHalf)", d: "M 4 100 A 96 96 0 0 1 196 100" }), hAsync("path", { key: 'a649ac9538248f5a22d48008377e18f4407efad9', stroke: "url(#spinner-firstHalf)", d: "M 196 100 A 96 96 0 0 1 4 100" }), hAsync("path", { key: '37f3772b61d1459959cc4d8c0b5c729dbd6953ff', stroke: "currentColor", "stroke-linecap": "round", d: "M 4 100 A 96 96 0 0 1 4 98" }))))), this.variant === 'typing' && (hAsync("div", { key: 'e510c2e6498a5542ce6e6573fdc03e8770121cd7', class: "pds-loader--typing" }, hAsync("span", { key: 'bbf4f5a328175f06b221d9abc73118505a09455d' }), hAsync("span", { key: '9a7e80b28e1455ef9d0c1bdb330a6425a3037709' }), hAsync("span", { key: 'f8aa1eb4f822a6d0e2a14a982bbe99866a97815b' }))), hAsync("div", { key: '3492189495798a2ea861d0dcb460f1b25d43d565', class: `pds-loader__label ${this.showLabel ? '' : 'pds-loader--hidden'}` }, hAsync("slot", { key: 'c1a19415b513a2a5f76a53d64b0ef5fbb4a5d100', name: "label" }, "Loading..."))));
18466
+ return (hAsync(Host, Object.assign({ key: 'c42c1aeec5c8db9a1065f35492734a8cb265f3ce', class: hostClass }, hostAttributes), this.variant === 'spinner' && (hAsync("div", { key: 'dc1b7943709d03e02467cca0817fb6a7ad5ed10a', class: "pds-loader--spinner" }, hAsync("svg", { key: 'db38e607541ac1eb91be87b2cd0240341c8fb51d', style: this.getSvgStyle(), viewBox: "0 0 200 200", fill: "none", part: "loader-svg" }, hAsync("defs", { key: 'd734ef70b0039758a25881c22bb3e6453ac40012' }, hAsync("linearGradient", { key: '697627f516c5f7b4cd5351dd39de231c0cb9e429', id: "spinner-secondHalf" }, hAsync("stop", { key: '03082c0ec354685eebf7d0132202d54b083d26df', offset: "0%", "stop-opacity": "0", "stop-color": "currentColor" }), hAsync("stop", { key: '181b661b36aeb44943e20dec513f7265a9487004', offset: "100%", "stop-opacity": "0.5", "stop-color": "currentColor" })), hAsync("linearGradient", { key: '67f6c51aefe99bcbfdb741290337364501fc4fcb', id: "spinner-firstHalf" }, hAsync("stop", { key: 'cb6adf27ecb06b42ba572a702153de960491b0b6', offset: "0%", "stop-opacity": "1", "stop-color": "currentColor" }), hAsync("stop", { key: 'aeebabfa1ac00391937388feefa120bd0bb4d26c', offset: "100%", "stop-opacity": "0.5", "stop-color": "currentColor" }))), hAsync("g", { key: 'f06ca75e4df171b6db426fce9bc34076cfee5bca', class: "pds-loader__spinner-path" }, hAsync("path", { key: 'a278b37de8f77a1000efecb62b89e3f751712a98', stroke: "url(#spinner-secondHalf)", d: "M 4 100 A 96 96 0 0 1 196 100" }), hAsync("path", { key: 'a035add4d01b60bcebf7625c8730d6a41ddf40ff', stroke: "url(#spinner-firstHalf)", d: "M 196 100 A 96 96 0 0 1 4 100" }), hAsync("path", { key: '1189c8299d33a2a6bb6a8345b60f22bf4ad9beee', stroke: "currentColor", "stroke-linecap": "round", d: "M 4 100 A 96 96 0 0 1 4 98" }))))), this.variant === 'typing' && (hAsync("div", { key: '39826fae20e8826d9c73cf57ba938583d610e1ea', class: "pds-loader--typing" }, hAsync("span", { key: '8f2b837c79548a1080710a7cc30c3be3a051e1dd' }), hAsync("span", { key: '8efb1193ef51f110950861767eccc3896e90b81e' }), hAsync("span", { key: '366f2d205adbb043691c253cff17d2d29d56a2cc' }))), hAsync("div", { key: 'aeaa4aa12863b34088e84fd2791c2ce32dc05248', class: `pds-loader__label ${this.showLabel ? '' : 'pds-loader--hidden'}` }, hAsync("slot", { key: '7a8ec45aed1cd6f9e60f4db2ec5376439fa41c81', name: "label" }, "Loading..."))));
18169
18467
  }
18170
18468
  get el() { return getElement(this); }
18171
18469
  static get watchers() { return {
@@ -18712,14 +19010,14 @@ class PdsModal {
18712
19010
  }
18713
19011
  render() {
18714
19012
  const [sizeClass = 'md', customSize] = this.resolveSize();
18715
- return (hAsync("dialog", { key: 'b6714c7e77d80bf2370f2170ffce029abe147d81', class: {
19013
+ return (hAsync("dialog", { key: '12ea38928ea287f16ffa33e246caa2bfde6fc130', class: {
18716
19014
  'pds-modal__backdrop': true,
18717
19015
  'open': this.open
18718
- }, "aria-modal": this.disableTopLayer ? 'false' : 'true', "aria-labelledby": `${this.componentId}-heading`, onClick: this.handleBackdropClick }, hAsync("div", { key: '8c3319f53dd8c79c9e952785277e9e82e28b651e', class: {
19016
+ }, "aria-modal": this.disableTopLayer ? 'false' : 'true', "aria-labelledby": `${this.componentId}-heading`, onClick: this.handleBackdropClick }, hAsync("div", { key: 'b9d83cabda56c315d9115f7030e3bdbcf923ec08', class: {
18719
19017
  'pds-modal': true,
18720
19018
  [`pds-modal--${sizeClass}`]: true,
18721
19019
  'pds-modal--scrollable': this.scrollable
18722
- }, style: customSize !== undefined ? { '--pds-modal-max-width': customSize } : undefined, part: "modal" }, hAsync("slot", { key: '8c6f9cc1a20b515659344ad041512de52761800d' }))));
19020
+ }, style: customSize !== undefined ? { '--pds-modal-max-width': customSize } : undefined, part: "modal" }, hAsync("slot", { key: '3c5edad1482cb124e503197adf411890573b076d' }))));
18723
19021
  }
18724
19022
  get el() { return getElement(this); }
18725
19023
  static get watchers() { return {
@@ -18936,10 +19234,10 @@ class PdsModalContent {
18936
19234
  render() {
18937
19235
  // Only apply max-height style if it's not 'none'
18938
19236
  const styleObj = this.contentMaxHeight !== 'none' ? { maxHeight: this.contentMaxHeight } : {};
18939
- return (hAsync(Host, { key: 'f66dbdd08d6af3f87b0a6e8f30e1948b2f674e34' }, hAsync("div", { key: 'ac0469cbfe48002d5bc7f401e0dc30926cfd4421', class: {
19237
+ return (hAsync(Host, { key: 'd41d5632eb6a2dafe921546af60f835d3545cc4f' }, hAsync("div", { key: '741ac9f28149039ecf5051142a939ab62ef26a87', class: {
18940
19238
  'pds-modal-content': true,
18941
19239
  [`pds-modal-content--border-${this.border}`]: true
18942
- }, style: styleObj, tabindex: "-1" }, hAsync("slot", { key: '26a8a45ab4dcd0349da68304fa3cacc64603208a' }))));
19240
+ }, style: styleObj, tabindex: "-1" }, hAsync("slot", { key: '090a52e9425d4df61c2d8216cc19f0925babdffe' }))));
18943
19241
  }
18944
19242
  get el() { return getElement(this); }
18945
19243
  static get style() { return pdsModalContentCss(); }
@@ -18970,7 +19268,7 @@ class PdsModalFooter {
18970
19268
  unwrapReconnectedContent(this.el.querySelector('.pds-modal__footer'), '.pds-modal__footer');
18971
19269
  }
18972
19270
  render() {
18973
- return (hAsync("footer", { key: '1148892c2d6b9a461f6c04a670fceda76c1be53a', class: "pds-modal__footer" }, hAsync("slot", { key: 'ccd754674c82c415f8c056c9dda6327df35dbd03' })));
19271
+ return (hAsync("footer", { key: '030153b84f1ea1cb133c9ccec3ad86583995974f', class: "pds-modal__footer" }, hAsync("slot", { key: '3a479e7047f3e845a65c37d60539648c8ff78602' })));
18974
19272
  }
18975
19273
  get el() { return getElement(this); }
18976
19274
  static get style() { return pdsModalFooterCss(); }
@@ -18998,7 +19296,7 @@ class PdsModalHeader {
18998
19296
  unwrapReconnectedContent(this.el.querySelector('.pds-modal__header'), '.pds-modal__header');
18999
19297
  }
19000
19298
  render() {
19001
- return (hAsync("header", { key: '030153b84f1ea1cb133c9ccec3ad86583995974f', class: "pds-modal__header" }, hAsync("slot", { key: '3a479e7047f3e845a65c37d60539648c8ff78602' })));
19299
+ return (hAsync("header", { key: 'ee3ac5fb9b00a943aa86c3434ea07291b74d776c', class: "pds-modal__header" }, hAsync("slot", { key: '0b0f7ff257635723099c536648a826be8dcc05e7' })));
19002
19300
  }
19003
19301
  get el() { return getElement(this); }
19004
19302
  static get style() { return pdsModalHeaderCss(); }
@@ -20246,10 +20544,10 @@ class PdsMultiselect {
20246
20544
  }
20247
20545
  render() {
20248
20546
  const hasSelections = this.selectedItems.length > 0;
20249
- return (hAsync(Host, { key: '295354c218d03a512ee87a9f19d2267a59731eb1', "aria-disabled": this.disabled ? 'true' : null }, hAsync("div", { key: '8696c02fad869239fa85dcec7f92a3efb402c963', class: "pds-multiselect", onFocusout: this.handleContainerFocusOut }, this.label && (hAsync("label", { key: '2a9cc565c5dbcf78305eb65e94d795669fb0f93b', id: `${this.componentId}-label`, htmlFor: this.componentId, class: {
20547
+ return (hAsync(Host, { key: '0ef6791666063e0d951d28f980b3bca89cf24287', "aria-disabled": this.disabled ? 'true' : null }, hAsync("div", { key: 'f0ccbabfbd2dcf38f6df52f73f2152eb4bd2828e', class: "pds-multiselect", onFocusout: this.handleContainerFocusOut }, this.label && (hAsync("label", { key: '88e01c744644ce1f75c8d5b71dfaeeb79d1ef7df', id: `${this.componentId}-label`, htmlFor: this.componentId, class: {
20250
20548
  'pds-multiselect__label': true,
20251
20549
  'visually-hidden': this.hideLabel,
20252
- } }, this.label)), hAsync("div", { key: '9358ebffb50e74fe4ceb9ca1c13cf819cc3e96e6', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), style: { width: this.triggerWidth } }, this.slottedTriggerEl ? (hAsync("slot", { name: "trigger" })) : this.selectedDisplay === 'pill' && this.pillPosition === 'inline' ? (hAsync("div", { ref: el => (this.pillInlineTriggerEl = el || undefined), part: "trigger", class: {
20550
+ } }, this.label)), hAsync("div", { key: '0bf4a3b1378ff18e6d6b449507ebbae1bfb279e4', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), style: { width: this.triggerWidth } }, this.slottedTriggerEl ? (hAsync("slot", { name: "trigger" })) : this.selectedDisplay === 'pill' && this.pillPosition === 'inline' ? (hAsync("div", { ref: el => (this.pillInlineTriggerEl = el || undefined), part: "trigger", class: {
20253
20551
  'pds-multiselect__trigger': true,
20254
20552
  'pds-multiselect__trigger--open': this.isOpen,
20255
20553
  'pds-multiselect__trigger--disabled': this.disabled,
@@ -20265,7 +20563,7 @@ class PdsMultiselect {
20265
20563
  }, id: this.componentId, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-describedby": assignDescription(this.componentId, this.invalid || !!this.errorMessage, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid || !!this.errorMessage ? 'true' : undefined, onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, hAsync("span", { class: {
20266
20564
  'pds-multiselect__trigger-text': true,
20267
20565
  'pds-multiselect__trigger-text--placeholder': !hasSelections || (this.selectedDisplay === 'pill' && this.pillPosition === 'below'),
20268
- } }, this.getTriggerText()), hAsync("pds-icon", { "aria-hidden": "true", class: "pds-multiselect__icon", icon: enlarge }))), this.renderDropdown()), this.selectedDisplay === 'pill' && this.pillPosition === 'below' && this.renderBelowPills(), hAsync("span", { key: '722da251199792366dc72b6c7f016e24ae807b30', class: "visually-hidden", "aria-live": "polite", "aria-atomic": "true" }, this.removalAnnouncement), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (hAsync("p", { key: '7b4da9b2e04f53f3e8f245c119135f3b664897ec', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (hAsync("p", { key: '95a152f6a350eee2f67dbab2930f19e583ca3b85', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, hAsync("pds-icon", { key: '7b9cded907054757a6f054d0d325811a2199e496', icon: danger, size: "small" }), this.errorMessage)), hAsync("div", { key: '8b07974c8e2d838d76c17c3a52ba4282fb101968', style: { display: 'none' } }, hAsync("slot", { key: '0a34d582bc4dd780072f00ac13bfdce7e297191e' })))));
20566
+ } }, this.getTriggerText()), hAsync("pds-icon", { "aria-hidden": "true", class: "pds-multiselect__icon", icon: enlarge }))), this.renderDropdown()), this.selectedDisplay === 'pill' && this.pillPosition === 'below' && this.renderBelowPills(), hAsync("span", { key: '5202a263b219d06891bda739f98db0162bf33c48', class: "visually-hidden", "aria-live": "polite", "aria-atomic": "true" }, this.removalAnnouncement), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (hAsync("p", { key: '47f7b55863c5b72d41c4ef1893b9364988fc0b56', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (hAsync("p", { key: '3930dc30b2df7179d178873c470aa1da0f6f258c', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, hAsync("pds-icon", { key: 'e31d55db3fd0173c56faa23e34e0be92371983d4', icon: danger, size: "small" }), this.errorMessage)), hAsync("div", { key: 'b3326cc1a5e5886be05327a066e0a7ddd36ccefc', style: { display: 'none' } }, hAsync("slot", { key: '91559cb9510abce6084348a17516460fd8545ef7' })))));
20269
20567
  }
20270
20568
  static get formAssociated() { return true; }
20271
20569
  get el() { return getElement(this); }
@@ -20361,6 +20659,48 @@ class PdsMultiselect {
20361
20659
  }; }
20362
20660
  }
20363
20661
 
20662
+ /**
20663
+ * Escapes a string so it's safe to interpolate into a CSS identifier (an id selector like `#${id}`)
20664
+ * or into CSS text (a stylesheet rule referencing that id). Equivalent to the native `CSS.escape`,
20665
+ * reimplemented because Stencil's unit-test DOM (`newSpecPage`'s mock-doc) doesn't provide it.
20666
+ * @param value - The string to escape, e.g. a consumer-supplied id
20667
+ */
20668
+ const cssEscape = (value) => {
20669
+ const string = String(value);
20670
+ const length = string.length;
20671
+ const firstCodeUnit = string.charCodeAt(0);
20672
+ let result = '';
20673
+ for (let index = 0; index < length; index++) {
20674
+ const codeUnit = string.charCodeAt(index);
20675
+ if (codeUnit === 0x0000) {
20676
+ result += '�';
20677
+ continue;
20678
+ }
20679
+ if ((codeUnit >= 0x0001 && codeUnit <= 0x001f) ||
20680
+ codeUnit === 0x007f ||
20681
+ (index === 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||
20682
+ (index === 1 && codeUnit >= 0x0030 && codeUnit <= 0x0039 && firstCodeUnit === 0x002d)) {
20683
+ result += `\\${codeUnit.toString(16)} `;
20684
+ continue;
20685
+ }
20686
+ if (index === 0 && length === 1 && codeUnit === 0x002d) {
20687
+ result += `\\${string.charAt(index)}`;
20688
+ continue;
20689
+ }
20690
+ if (codeUnit >= 0x0080 ||
20691
+ codeUnit === 0x002d ||
20692
+ codeUnit === 0x005f ||
20693
+ (codeUnit >= 0x0030 && codeUnit <= 0x0039) ||
20694
+ (codeUnit >= 0x0041 && codeUnit <= 0x005a) ||
20695
+ (codeUnit >= 0x0061 && codeUnit <= 0x007a)) {
20696
+ result += string.charAt(index);
20697
+ continue;
20698
+ }
20699
+ result += `\\${string.charAt(index)}`;
20700
+ }
20701
+ return result;
20702
+ };
20703
+
20364
20704
  const pdsPopoverCss = () => `:host{--sizing-max-width-default:352px;display:inline-block}:host .pds-popover__trigger-wrapper{display:inline-block}:host .pds-popover__content-slot-wrapper{display:none}`;
20365
20705
 
20366
20706
  /**
@@ -20530,7 +20870,8 @@ class PdsPopover {
20530
20870
  this.triggerObserver = null;
20531
20871
  if (this.triggerEl == null || typeof MutationObserver === 'undefined')
20532
20872
  return;
20533
- this.triggerObserver = new MutationObserver(() => this.linkTriggerToPortal());
20873
+ // Capped against a script that keeps undoing it; opening and closing still write it directly.
20874
+ this.triggerObserver = new MutationObserver(limitRestores(() => this.linkTriggerToPortal(), 'pds-popover: stopped restoring its trigger ARIA, as another script keeps changing it. It may be wrong until the popover opens or closes.', this.triggerEl));
20534
20875
  this.triggerObserver.observe(this.triggerEl, {
20535
20876
  attributes: true,
20536
20877
  attributeFilter: ['aria-expanded', 'aria-controls'],
@@ -20540,9 +20881,9 @@ class PdsPopover {
20540
20881
  // This mirrors the native Popover API's accessibility behavior
20541
20882
  linkTriggerToPortal() {
20542
20883
  if (this.triggerEl == null || this.portalEl == null)
20543
- return;
20884
+ return false;
20544
20885
  // Skips values already in place, so the trigger observer's own callback doesn't loop.
20545
- setAttributesIfChanged(this.triggerEl, { 'aria-expanded': String(this.active), 'aria-controls': this.portalEl.id });
20886
+ return setAttributesIfChanged(this.triggerEl, { 'aria-expanded': String(this.active), 'aria-controls': this.portalEl.id });
20546
20887
  }
20547
20888
  // componentDidLoad doesn't run again when a popover comes back, so rebuild whatever
20548
20889
  // disconnectedCallback tore down. Each step is a no-op when nothing was.
@@ -20649,22 +20990,25 @@ class PdsPopover {
20649
20990
  if (!this.portalEl)
20650
20991
  return;
20651
20992
  const portalId = this.portalEl.id;
20993
+ // componentId comes from the consumer, so it can carry characters cssEscape needs to
20994
+ // neutralize before the id is used as a selector or interpolated into stylesheet text.
20995
+ const escapedPortalId = cssEscape(portalId);
20652
20996
  // Check if style element already exists
20653
- const existingStyle = document.querySelector(`style[data-pds-popover-focus="${portalId}"]`);
20997
+ const existingStyle = document.querySelector(`style[data-pds-popover-focus="${escapedPortalId}"]`);
20654
20998
  if (existingStyle)
20655
20999
  return;
20656
21000
  // Create style element with Pine's focus ring styles and dark mode border
20657
21001
  const styleEl = document.createElement('style');
20658
21002
  styleEl.setAttribute('data-pds-popover-focus', portalId);
20659
21003
  styleEl.textContent = `
20660
- #${portalId}:focus {
21004
+ #${escapedPortalId}:focus {
20661
21005
  outline: var(--pine-outline-focus, 2px solid var(--pine-color-focus-ring, #6366f1)) !important;
20662
21006
  outline-offset: var(--pine-border-width, 1px);
20663
21007
  }
20664
- #${portalId}:focus:not(:focus-visible) {
21008
+ #${escapedPortalId}:focus:not(:focus-visible) {
20665
21009
  outline: none;
20666
21010
  }
20667
- [data-theme="dark"] #${portalId} {
21011
+ [data-theme="dark"] #${escapedPortalId} {
20668
21012
  border: var(--pine-border);
20669
21013
  }
20670
21014
  `;
@@ -20723,7 +21067,7 @@ class PdsPopover {
20723
21067
  }
20724
21068
  // Remove the associated focus style element
20725
21069
  const portalId = this.portalEl.id;
20726
- const styleEl = document.querySelector(`style[data-pds-popover-focus="${portalId}"]`);
21070
+ const styleEl = document.querySelector(`style[data-pds-popover-focus="${cssEscape(portalId)}"]`);
20727
21071
  if (styleEl && styleEl.parentNode) {
20728
21072
  styleEl.parentNode.removeChild(styleEl);
20729
21073
  }
@@ -20999,7 +21343,7 @@ class PdsPopover {
20999
21343
  }, 16); // ~1 frame at 60fps
21000
21344
  }
21001
21345
  render() {
21002
- return (hAsync(Host, { key: '66347d4922274d25504e5be134b36f05a3f12fdc', id: this.componentId }, hAsync("span", { key: '8f29d54d58cf0c66f86470c77c676716f1ab056f', class: "pds-popover__trigger-wrapper" }, hAsync("slot", { key: '5c89b687cfc01e67d3c11835e77755de88f03584', name: "trigger", onSlotchange: this.handleTriggerSlotChange })), hAsync("div", { key: '0ca9aff3021720098d86ec29eb69cbf149ef79a9', class: "pds-popover__content-slot-wrapper" }, hAsync("slot", { key: 'b73c3324d3322c41c68161e9ada51499c0e49cb0', onSlotchange: this.handleContentSlotChange }))));
21346
+ return (hAsync(Host, { key: 'd804db8c73e0dc2acf0d1bbca20edb77993ff7fd', id: this.componentId }, hAsync("span", { key: '5408d1856c9b13b327ea13b43cffc23af925a82f', class: "pds-popover__trigger-wrapper" }, hAsync("slot", { key: '9d0ff01292c67bdaa88d49114162c3c65ff8a20d', name: "trigger", onSlotchange: this.handleTriggerSlotChange })), hAsync("div", { key: 'cdd38016453ea1838d5718fb8e190cd4304ac8cc', class: "pds-popover__content-slot-wrapper" }, hAsync("slot", { key: '9faf60d7be7a2ff3c5fe6c3e4de374bafadf848a', onSlotchange: this.handleContentSlotChange }))));
21003
21347
  }
21004
21348
  get el() { return getElement(this); }
21005
21349
  static get watchers() { return {
@@ -21061,10 +21405,10 @@ class PdsProgress {
21061
21405
  this.hostKeeper.disconnect();
21062
21406
  }
21063
21407
  render() {
21064
- const normalizedFillColor = normalizeColorValue(this.fillColor);
21408
+ const normalizedFillColor = normalizeColorValue$1(this.fillColor);
21065
21409
  const hostClass = this.animated ? { 'is-animated': this.animated } : '';
21066
21410
  this.hostKeeper.record(hostClass);
21067
- return (hAsync(Host, { key: '5573a5c48eee2f7968835db92afdaebb73c1b85e', class: hostClass }, hAsync("div", { key: 'bb5cf260495be798f4272673884336022c28441e', class: "pds-progress" }, hAsync("label", { key: '017efa649ada73ec724b930e06bbf1ab19a18f61', class: "pds-progress__label", htmlFor: this.componentId }, this.label), hAsync("progress", { key: 'e648d910b072b7b2ca1c4a92c0832bf6e2ef5406', id: this.componentId, max: "100", style: normalizedFillColor ? { '--color-progress-fill': normalizedFillColor } : {}, value: this.percent })), this.showPercent && hAsync("div", { key: '1f9f1733ff2cd6e2ec81e9a46759ff451cf158f7', class: "pds-progress__percentage" }, this.percent, "%")));
21411
+ return (hAsync(Host, { key: 'a224e1e9bc50433553ab8bf4b0d772f01148ee76', class: hostClass }, hAsync("div", { key: '261742044f3d68c204cbf640cc4447eb6d74df11', class: "pds-progress" }, hAsync("label", { key: 'd686bdc6ab450bf8c14dd56077525a3139593f46', class: "pds-progress__label", htmlFor: this.componentId }, this.label), hAsync("progress", { key: 'c716e977a952a628aec600fa680aa9c3b8d0e996', id: this.componentId, max: "100", style: normalizedFillColor ? { '--color-progress-fill': normalizedFillColor } : {}, value: this.percent })), this.showPercent && hAsync("div", { key: '44176a580b435f69993be4a60ee2e888b87e10fb', class: "pds-progress__percentage" }, this.percent, "%")));
21068
21412
  }
21069
21413
  get el() { return getElement(this); }
21070
21414
  static get style() { return pdsProgressCss(); }
@@ -21099,7 +21443,7 @@ class PdsProperty {
21099
21443
  this.icon = 'star';
21100
21444
  }
21101
21445
  render() {
21102
- return (hAsync(Host, { key: '0f6195faaaf3adb11ad14f09a36c78f94e2bdf65', id: this.componentId }, hAsync("pds-box", { key: '0a9670c0e38065f5fbe035b81703e21155396ff8', "align-items": "center", gap: "xs" }, hAsync("pds-icon", { key: '13b497e8670bc5210a752b8c24b9fd6397b1a8c9', icon: this.icon, size: "var(--pine-dimension-sm)", "aria-hidden": "true" }), hAsync("slot", { key: 'a9b3cf5fd830b7551f68866a62341670f8b61b34' }))));
21446
+ return (hAsync(Host, { key: 'd599b62be4bacf1d89afcc26b14fc93bdc9bb3a4', id: this.componentId }, hAsync("pds-box", { key: 'd7f80f6598615c761d672893c8acab09bd9ea33f', "align-items": "center", gap: "xs" }, hAsync("pds-icon", { key: '15a6a6545c2cd2332bd830451106b7b08adc39ff', icon: this.icon, size: "var(--pine-dimension-sm)", "aria-hidden": "true" }), hAsync("slot", { key: '4e5661563b99ec56189447faabcdd1ae631159b2' }))));
21103
21447
  }
21104
21448
  static get style() { return pdsPropertyCss(); }
21105
21449
  static get cmpMeta() { return {
@@ -21218,13 +21562,13 @@ class PdsRadio {
21218
21562
  }
21219
21563
  render() {
21220
21564
  const renderLabelAndMessages = () => [
21221
- hAsync("label", { htmlFor: this.componentId, key: `${this.componentId}-label` }, hAsync("input", { key: 'add893cd82f79b9398589bd5c0a72d5ae4a90475', "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, type: "radio", id: this.componentId, name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, onChange: this.handleRadioChange, class: this.hasImage() ? 'visually-hidden' : '' }), hAsync("span", { key: 'b58eed8681d1932397d38ffe82515987e6486e08', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)),
21565
+ hAsync("label", { htmlFor: this.componentId, key: `${this.componentId}-label` }, hAsync("input", { key: 'ccd618855831bcee309e815f2cd2712fd4e8fe1f', "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, type: "radio", id: this.componentId, name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, onChange: this.handleRadioChange, class: this.hasImage() ? 'visually-hidden' : '' }), hAsync("span", { key: '2e372a880c28f48fb804bac2518208082c141fad', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)),
21222
21566
  this.helperMessage && (hAsync("div", { key: `${this.componentId}-helper`, class: 'pds-radio__message', id: messageId(this.componentId, 'helper') }, this.helperMessage)),
21223
- this.errorMessage && (hAsync("div", { key: `${this.componentId}-error`, class: `pds-radio__message pds-radio__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: '7374924219e59eab46a7ced9e7062c3e674b4451', icon: danger, size: "small" }), this.errorMessage))
21567
+ this.errorMessage && (hAsync("div", { key: `${this.componentId}-error`, class: `pds-radio__message pds-radio__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: '889d502575f6a162f450b6b58d76a6f6f1c74e4b', icon: danger, size: "small" }), this.errorMessage))
21224
21568
  ];
21225
21569
  const hostClass = this.classNames();
21226
21570
  this.hostKeeper.record(hostClass);
21227
- return (hAsync(Host, { key: '24269923f168d1d39ebfc1994619736f0dc8087a', class: hostClass }, this.hasImage() && (hAsync("div", { key: '74a72bef89aa012047cbf3a1744fcd33f13bb464', class: "pds-radio__image-container", part: "image-container" }, hAsync("slot", { key: '99dbcfdac86cb7c012fd44eab607217e21304bab', name: "image", onSlotchange: () => (this._hasImage = this.hasImageSlot()) }))), this.hasImage() ? (hAsync("div", { class: "pds-radio__content-wrapper" }, renderLabelAndMessages())) : (renderLabelAndMessages())));
21571
+ return (hAsync(Host, { key: '374003032b28407581a55f1fb0a304c49acf3c16', class: hostClass }, this.hasImage() && (hAsync("div", { key: '7eeb516267de1afcfa85fc7567999db488c2f4f5', class: "pds-radio__image-container", part: "image-container" }, hAsync("slot", { key: 'a312fea06f0c015bffab3bb392ff04d4913fd1c0', name: "image", onSlotchange: () => (this._hasImage = this.hasImageSlot()) }))), this.hasImage() ? (hAsync("div", { class: "pds-radio__content-wrapper" }, renderLabelAndMessages())) : (renderLabelAndMessages())));
21228
21572
  }
21229
21573
  get el() { return getElement(this); }
21230
21574
  static get style() { return labelCss$3() + pdsRadioCss(); }
@@ -21416,13 +21760,13 @@ class PdsRadioGroup {
21416
21760
  render() {
21417
21761
  const gapValue = this.getGapValue();
21418
21762
  const ariaDescribedBy = this.getAriaDescribedBy();
21419
- return (hAsync(Host, { key: '9dc78eb36bbc1b872f4320203dbbc64e43816ebf', class: this.classNames(), id: this._groupId, role: "group", "aria-describedby": ariaDescribedBy, style: {
21763
+ return (hAsync(Host, { key: 'bf8063c1a99e272bb3f6bc647998a6ef103f8a71', class: this.classNames(), id: this._groupId, role: "group", "aria-describedby": ariaDescribedBy, style: {
21420
21764
  '--pds-radio-group-gap': gapValue,
21421
- } }, this.groupLabel && (hAsync("div", { key: '7b6f95608dcf356b141ef5d590ff3070f83b5975', class: "pds-radio-group__label" }, this.groupLabel)), hAsync("div", { key: '6e1a634c9b81ca3f3bbbe9c6590bcd4efc97e6ea', class: {
21765
+ } }, this.groupLabel && (hAsync("div", { key: '8564ed3f8f99cdc1a0e5b189aacc6960923eb5f7', class: "pds-radio-group__label" }, this.groupLabel)), hAsync("div", { key: '2309c9373790182cde030c1dbda88fa3bdcaaf12', class: {
21422
21766
  'pds-radio-group__radios': true,
21423
21767
  'pds-radio-group__radios--row': this.direction === 'row',
21424
21768
  'pds-radio-group__radios--column': this.direction === 'column',
21425
- } }, hAsync("slot", { key: 'b5b16148f3c77d425a50b7ada8a822e9919ef5c5', onSlotchange: () => this.updateChildRadios() })), this.helperMessage && (hAsync("div", { key: 'ca6b98f926b8d7a53fda630170ac037c99f5ee85', class: "pds-radio-group__message", id: messageId(this._groupId, 'helper') }, this.helperMessage)), this.errorMessage && (hAsync("div", { key: '37b57e2622370364e619ea090712a7b79fe79501', class: "pds-radio-group__message pds-radio-group__message--error", id: messageId(this._groupId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: '6a362d048a67312b1b227f71cc4b8f821ae0817e', icon: danger, size: "small" }), this.errorMessage))));
21769
+ } }, hAsync("slot", { key: 'd88dde3c631e25c01bc7b6d3ef5d517255fabd1a', onSlotchange: () => this.updateChildRadios() })), this.helperMessage && (hAsync("div", { key: 'a229214ed01663b0fc34f35e27c7148b4eb412ab', class: "pds-radio-group__message", id: messageId(this._groupId, 'helper') }, this.helperMessage)), this.errorMessage && (hAsync("div", { key: 'dc092f2e6dbef0cb369cf00a6eccf9a095a0313d', class: "pds-radio-group__message pds-radio-group__message--error", id: messageId(this._groupId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: 'd242da328731e55fa52d8e624fdfc750bfa6cce4', icon: danger, size: "small" }), this.errorMessage))));
21426
21770
  }
21427
21771
  get el() { return getElement(this); }
21428
21772
  static get watchers() { return {
@@ -21531,7 +21875,7 @@ class PdsRow {
21531
21875
  'min-height': this.minHeight,
21532
21876
  }));
21533
21877
  this.hostKeeper.record(`pds-row ${rowClasses}`, rowInlineStyles);
21534
- return hAsync(Host, { key: 'ee3a32ae1376919c7c2d1fcf186a1b7c272ee085', class: `pds-row ${rowClasses}`, style: rowInlineStyles });
21878
+ return hAsync(Host, { key: '78a505fef7132f9545916155d2485a6d2df8f4a5', class: `pds-row ${rowClasses}`, style: rowInlineStyles });
21535
21879
  }
21536
21880
  get el() { return getElement(this); }
21537
21881
  static get style() { return pdsRowCss(); }
@@ -21803,7 +22147,7 @@ class PdsSelect {
21803
22147
  'has-action': hasAction && !this.hideLabel ? 'true' : null,
21804
22148
  };
21805
22149
  this.hostKeeper.record(hostClass, {}, hostAttributes);
21806
- return (hAsync(Host, Object.assign({ key: 'c99bfc000ad351298e154554a8b22635b1abb718', class: hostClass }, hostAttributes), hAsync("div", { key: '35374b150cbef745c6a6068ba5a2fde0803c0314', class: "pds-select" }, !this.hideLabel && (hAsync("div", { key: 'a3b9bae451c5c384606790a29bf8ab5fc70427c0', class: "pds-select__label-wrapper" }, hAsync("label", { key: '80d7740a05a6d3cce6d51224169eb6c2501c4896', htmlFor: this.componentId }, hAsync("span", { key: 'a51c02d7c84f75bb168889dab50cae807271c63d', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), hasAction && this.renderAction())), hAsync("select", { key: '11444dad795bd02c008252a60e701125861e4af0', "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-label": this.hideLabel ? this.label : undefined, autocomplete: this.autocomplete || undefined, class: "pds-select__field", disabled: this.disabled, id: this.componentId, multiple: this.multiple, name: this.name, onBlur: this.onBlur, onChange: this.onSelectUpdate, onFocus: this.onFocus, onKeyDown: this.onKeyDown, part: "select", required: this.required, ref: (el) => (this.selectEl = el) }), hAsync("div", { key: 'ce54fa1df287d96a7503bb19cd2ba6c74a6da638', "aria-hidden": "true", class: "hidden", ref: (el) => (this.slotContainer = el) }, hAsync("slot", { key: '22c55e78999076a37d43fb708dabc7379dd4cee3', onSlotchange: this.handleSlotChange })), this.renderMessages(), !this.multiple && hAsync("pds-icon", { key: '45628074fbcdb259b8bba42299082423309a6968', "aria-hidden": "true", class: "pds-select__select-icon", icon: enlarge }))));
22150
+ return (hAsync(Host, Object.assign({ key: '343ed671e67dd1d6f9eb284b07e06d59877c64e9', class: hostClass }, hostAttributes), hAsync("div", { key: '650aed0869b02f658feb16ee99f17e1cd22e5a8e', class: "pds-select" }, !this.hideLabel && (hAsync("div", { key: '74739461acbea33c92279ec8ec9042d6af1773c1', class: "pds-select__label-wrapper" }, hAsync("label", { key: '1ad96ffd243000358edfbd79054ee770e1ba97d3', htmlFor: this.componentId }, hAsync("span", { key: 'b832868db4f9cd4fd2f8313054d2e96e106189ab', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), hasAction && this.renderAction())), hAsync("select", { key: 'e83c1a1a0a5646fc8abf9e50bc374f52b56be773', "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-label": this.hideLabel ? this.label : undefined, autocomplete: this.autocomplete || undefined, class: "pds-select__field", disabled: this.disabled, id: this.componentId, multiple: this.multiple, name: this.name, onBlur: this.onBlur, onChange: this.onSelectUpdate, onFocus: this.onFocus, onKeyDown: this.onKeyDown, part: "select", required: this.required, ref: (el) => (this.selectEl = el) }), hAsync("div", { key: 'a34880120b88124b5122350856d023368f96abf7', "aria-hidden": "true", class: "hidden", ref: (el) => (this.slotContainer = el) }, hAsync("slot", { key: 'df6abaf6a630761a32b263813181ff3453757e0d', onSlotchange: this.handleSlotChange })), this.renderMessages(), !this.multiple && hAsync("pds-icon", { key: 'f9197284ef9965d693242a652b583f48bc3d7097', "aria-hidden": "true", class: "pds-select__select-icon", icon: enlarge }))));
21807
22151
  }
21808
22152
  static get formAssociated() { return true; }
21809
22153
  get el() { return getElement(this); }
@@ -24562,7 +24906,7 @@ class PdsSortable {
24562
24906
  render() {
24563
24907
  const classNames = this.classNames();
24564
24908
  this.hostKeeper.record(classNames);
24565
- return (hAsync(Host, { key: 'fb6e9a79babf01980c04ee7208d195510493a7dc', class: classNames, id: this.componentId }, hAsync("slot", { key: '5735ca3af531a736f07d1fafde8ae544d00a75bb' })));
24909
+ return (hAsync(Host, { key: 'a0e532d31561748b4632a6be9163562f990af804', class: classNames, id: this.componentId }, hAsync("slot", { key: 'd1b0defb683f841e6708374fff4bf62eb7fd5080' })));
24566
24910
  }
24567
24911
  get el() { return getElement(this); }
24568
24912
  static get watchers() { return {
@@ -24637,7 +24981,7 @@ class PdsSortableItem {
24637
24981
  }
24638
24982
  render() {
24639
24983
  this.hostKeeper.record('pds-sortable-item');
24640
- return (hAsync(Host, { key: '3f9098a7c938bfa6443f08fb8b0a7c7217230890', class: "pds-sortable-item", id: this.componentId }, this.showHandle && (hAsync("div", { key: '77718a6867ddd8bc029bb3ef995f6ee9a5999ce7', class: "pds-sortable-item__handle" }, hAsync("pds-icon", { key: 'aad7f46e776ece85858798f8f1a1a50c9022b84f', "aria-hidden": "true", icon: handle }))), hAsync("slot", { key: 'afa9346ec8fd7aa6132a15dd44d3b1cae24500b9' }), this.enableActions && (hAsync("div", { key: 'c28c85391117542999c12d673879768394002c90', class: "pds-sortable-item__actions" }, hAsync("slot", { key: '88ab53f3ba4ed47715e31935b861d9ab42342b32', name: "sortable-item-actions" })))));
24984
+ return (hAsync(Host, { key: '2065ccb474ae4b7032edc3c37aa6855f3048909d', class: "pds-sortable-item", id: this.componentId }, this.showHandle && (hAsync("div", { key: '32385cc94837a3d0bc1c496615135c79274afe35', class: "pds-sortable-item__handle" }, hAsync("pds-icon", { key: 'ea94e28b2867aa20622ca073dc31d3b4a11eebbb', "aria-hidden": "true", icon: handle }))), hAsync("slot", { key: 'fb18aa90be0b8fa3832a5dd2b02a7b571205341f' }), this.enableActions && (hAsync("div", { key: '4c6e59d77a7b2183552533a544f4a70ce0cc7011', class: "pds-sortable-item__actions" }, hAsync("slot", { key: '497b1ff88436175d9365a28032e109b6fa118e44', name: "sortable-item-actions" })))));
24641
24985
  }
24642
24986
  get el() { return getElement(this); }
24643
24987
  static get style() { return pdsSortableItemCss(); }
@@ -24760,9 +25104,9 @@ class PdsSwitch {
24760
25104
  const hostClass = this.switchClassNames();
24761
25105
  const ariaDisabled = this.disabled ? 'true' : null;
24762
25106
  this.hostKeeper.record(hostClass, {}, { 'aria-disabled': ariaDisabled });
24763
- return (hAsync(Host, { key: '6d4b51307f2619a99981e344f782f69871aabf0f', class: hostClass, "aria-disabled": ariaDisabled }, hAsync("label", { key: '068ef3759e2bc3d9870cff36714de0e9cf558b2b', htmlFor: this.componentId }, hAsync("input", Object.assign({ key: 'aa28fb67332bb2d81c09b6c749c1cb0f079e327f', "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, checked: this.checked, class: "pds-switch__input", disabled: this.disabled, id: this.componentId, name: this.name ? this.name : this.componentId, onChange: this.onSwitchUpdate, required: this.required, type: "checkbox", value: this.value }, this.inheritedAttributes)), hAsync("span", { key: 'd237980a9ce2abc04d57085df022f28dfa2768e4', class: this.hideLabel ? 'visually-hidden' : '' }, hAsync("slot", { key: '83d0e2110cfdcd3208319302af237178dfd419a4', name: "label", onSlotchange: this.updateHasLabelSlot }), !this.hasLabelSlot && this.label)), this.helperMessage &&
24764
- hAsync("div", { key: '137d9e5626b34ade33f68c4c24c3dcb154500dc6', class: `pds-switch__message`, id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
24765
- hAsync("div", { key: '64c3b8884d0568e26953f67a95d045aa5731c41f', class: `pds-switch__message pds-switch__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: 'f99f8045eb33d0c60518f3b4c6a0183170a50f4a', icon: danger, size: "small" }), this.errorMessage)));
25107
+ return (hAsync(Host, { key: 'ee8576e523348ff9eed1b6087626849bb0966608', class: hostClass, "aria-disabled": ariaDisabled }, hAsync("label", { key: '09433b5356d718be65f4f2eb61f35fff1d000e10', htmlFor: this.componentId }, hAsync("input", Object.assign({ key: 'f996a0fad56119674cfb7d95e1444bf411b64396', "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, checked: this.checked, class: "pds-switch__input", disabled: this.disabled, id: this.componentId, name: this.name ? this.name : this.componentId, onChange: this.onSwitchUpdate, required: this.required, type: "checkbox", value: this.value }, this.inheritedAttributes)), hAsync("span", { key: '4b23305d3cc0f5b37b23c6b79a14cfba57c16816', class: this.hideLabel ? 'visually-hidden' : '' }, hAsync("slot", { key: '258b5ccf0d4b01518df3a37772d694cb37569ffa', name: "label", onSlotchange: this.updateHasLabelSlot }), !this.hasLabelSlot && this.label)), this.helperMessage &&
25108
+ hAsync("div", { key: 'c8196fa2ce832de3a8c6d987a78fd65d791c4c59', class: `pds-switch__message`, id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
25109
+ hAsync("div", { key: '948894dd2e642689af6cad545a0b31f7c4711d87', class: `pds-switch__message pds-switch__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, hAsync("pds-icon", { key: 'd4b72b49bfd38a396b8f7c0686e1b2ef92d65491', icon: danger, size: "small" }), this.errorMessage)));
24766
25110
  }
24767
25111
  static get formAssociated() { return true; }
24768
25112
  get el() { return getElement(this); }
@@ -24804,6 +25148,7 @@ class PdsTab {
24804
25148
  constructor(hostRef) {
24805
25149
  registerInstance(this, hostRef);
24806
25150
  this.pdsTabClick = createEvent(this, "pdsTabClick");
25151
+ this.hostKeeper = new HostStylingKeeper();
24807
25152
  /**
24808
25153
  * Determines the tab's disabled state.
24809
25154
  * @defaultValue false
@@ -24822,6 +25167,12 @@ class PdsTab {
24822
25167
  /** @internal */
24823
25168
  this.selected = false;
24824
25169
  }
25170
+ connectedCallback() {
25171
+ this.hostKeeper.connect(this.el);
25172
+ }
25173
+ disconnectedCallback() {
25174
+ this.hostKeeper.disconnect();
25175
+ }
24825
25176
  // Unwraps a nested <a>/<button> left by a page-cache (Turbo, bfcache) reconnect.
24826
25177
  componentDidRender() {
24827
25178
  unwrapReconnectedContent(this.el.querySelector('.pds-tab__content'), 'a.pds-tab, button.pds-tab', '.pds-tab__content');
@@ -24857,6 +25208,9 @@ class PdsTab {
24857
25208
  return classes.filter(Boolean).join(' ');
24858
25209
  }
24859
25210
  render() {
25211
+ // The docs show consumers omitting `slot`, so server HTML doesn't carry it — a DOM morph
25212
+ // that strips it leaves this tab unslotted, and pds-tabs has no default slot. Put it back.
25213
+ this.hostKeeper.record('', {}, { slot: 'tabs' });
24860
25214
  const availabilityTabEdgeInlineStart = (hAsync("span", { class: "pds-tab-edge", role: "presentation" }));
24861
25215
  const availabilityTabEdgeInlineEnd = (hAsync("span", { class: "pds-tab-edge pds-tab-edge--end", role: "presentation" }));
24862
25216
  const content = (hAsync(Fragment, null, this.variant === "availability" && availabilityTabEdgeInlineStart, this.variant === "availability" && availabilityTabEdgeInlineEnd, hAsync("div", { class: "pds-tab__content" }, hAsync("slot", null))));
@@ -25176,7 +25530,7 @@ class PdsTableBody {
25176
25530
  registerInstance(this, hostRef);
25177
25531
  }
25178
25532
  render() {
25179
- return (hAsync(Host, { key: '0278bf4c680e9054748039dddbbb5cfcce3bb4e6', role: "rowgroup", part: "body" }, hAsync("slot", { key: '44cf68f3b0dff78312a3d31d898209544ce8131e' })));
25533
+ return (hAsync(Host, { key: '817532e93c8f91ef64cd0f90aa6c4372c3b7d83f', role: "rowgroup", part: "body" }, hAsync("slot", { key: '296ba876c6716e85252a06008bd55d59624223e3' })));
25180
25534
  }
25181
25535
  static get style() { return pdsTableBodyCss(); }
25182
25536
  static get cmpMeta() { return {
@@ -25314,11 +25668,11 @@ class PdsTableCell {
25314
25668
  return classNames.join(' ');
25315
25669
  }
25316
25670
  render() {
25317
- return (hAsync(Host, { key: 'c32bd43c6080e9a8a98578016973de9025e5d367', class: this.classNames(), role: "gridcell", part: "cell", style: this.tableRef &&
25671
+ return (hAsync(Host, { key: 'bedaeeb5723299656f872a760ed1dd80c7fe8793', class: this.classNames(), role: "gridcell", part: "cell", style: this.tableRef &&
25318
25672
  this.tableRef.fixedColumn &&
25319
25673
  this.tableRef.selectable
25320
25674
  ? { '--fixed-cell-position': '40px' }
25321
- : {} }, hAsync("slot", { key: '5b2af30784f41dcc7a0f66187f222ec2472f207f' })));
25675
+ : {} }, hAsync("slot", { key: '45182ee3e004097660432f552780b3d27671bd46' })));
25322
25676
  }
25323
25677
  get hostElement() { return getElement(this); }
25324
25678
  static get watchers() { return {
@@ -25387,7 +25741,7 @@ class PdsTableHead {
25387
25741
  }
25388
25742
  }
25389
25743
  render() {
25390
- return (hAsync(Host, { key: 'ca88406002f440e9b9eefa639dac056e85403bd8', role: "row", part: "head" }, this.tableRef && this.tableRef.selectable && (hAsync("pds-table-head-cell", { key: '7c1939791a0573c6eccdec66d7b6d5de122a42c1', part: this.tableRef.selectable ? 'checkbox-cell' : '' }, !this.tableRef.disableSelectAll && (hAsync("pds-checkbox", { key: '3a8581bbf9b5fc26396937e7d0bab370f6078090', componentId: this.generateUniqueId(), indeterminate: this.indeterminate, onInput: this.handleInput, label: "Select All Rows", hideLabel: true, checked: this.isSelected, part: "select-all-checkbox" })))), hAsync("slot", { key: 'a736a10378936d4e4de5b139f3f57a345483c1bb' })));
25744
+ return (hAsync(Host, { key: 'de3faae735e90f5fde1258b5acb826f5f9dbd170', role: "row", part: "head" }, this.tableRef && this.tableRef.selectable && (hAsync("pds-table-head-cell", { key: 'e590e57c8b37ec0ad18e96077401c4692bbd45a4', part: this.tableRef.selectable ? 'checkbox-cell' : '' }, !this.tableRef.disableSelectAll && (hAsync("pds-checkbox", { key: '44ca7eda63185672939909e121a86e6502080a7d', componentId: this.generateUniqueId(), indeterminate: this.indeterminate, onInput: this.handleInput, label: "Select All Rows", hideLabel: true, checked: this.isSelected, part: "select-all-checkbox" })))), hAsync("slot", { key: '0671df85d7989cff7266bfd3d1b4d62b332d2e81' })));
25391
25745
  }
25392
25746
  get hostElement() { return getElement(this); }
25393
25747
  static get style() { return pdsTableHeadCss(); }
@@ -25608,11 +25962,11 @@ class PdsTableHeadCell {
25608
25962
  return classNames.join(' ');
25609
25963
  }
25610
25964
  render() {
25611
- return (hAsync(Host, { key: 'de7b2fb674def0a8046e1940488d435176dc9851', class: this.classNames(), role: "columnheader", onClick: this.toggleSort, part: "head-cell", style: this.tableRef &&
25965
+ return (hAsync(Host, { key: '13de42d136c5b037cd1545cd5b789b4660e23b87', class: this.classNames(), role: "columnheader", onClick: this.toggleSort, part: "head-cell", style: this.tableRef &&
25612
25966
  this.tableRef.fixedColumn &&
25613
25967
  this.tableRef.selectable
25614
25968
  ? { '--fixed-cell-position': '40px' }
25615
- : {} }, hAsync("slot", { key: '4ada173faf7d106cca34920540703a1d04f7e5bd' }), this.sortable && this.isActive && (hAsync("pds-icon", { key: '1b0e87d74b6fa359e901a8e66479f37a88cdcf1c', icon: this.sortingDirection === 'asc' ? upSmall : downSmall, part: "sort-icon" }))));
25969
+ : {} }, hAsync("slot", { key: '96084d87a34d7b601a8e8325f344f1fe6601204e' }), this.sortable && this.isActive && (hAsync("pds-icon", { key: 'cba838fa029b280561676c2b57af7f8f00055511', icon: this.sortingDirection === 'asc' ? upSmall : downSmall, part: "sort-icon" }))));
25616
25970
  }
25617
25971
  get hostElement() { return getElement(this); }
25618
25972
  static get style() { return pdsTableHeadCellCss(); }
@@ -25778,7 +26132,7 @@ class PdsTableRow {
25778
26132
  }
25779
26133
  }
25780
26134
  render() {
25781
- return (hAsync(Host, { key: '16ca08eefa74468559a1c084b7619836f01b27af', class: this.classNames(), role: "row", part: "row" }, this.tableRef && this.tableRef.selectable && (hAsync("pds-table-cell", { key: '4b4d2ae15d519e08cd6710ddb6759923d478457c', part: this.tableRef.fixedColumn ? 'checkbox-cell' : 'checkbox-cell', class: this.tableRef.selectable ? 'has-checkbox' : '' }, hAsync("pds-checkbox", { key: '78b9a731113cce82c59f40713561033f563ffc5f', componentId: this.generateUniqueId(), onPdsCheckboxChange: this.handleCheckboxChange, indeterminate: this.indeterminate, label: "Select Row", hideLabel: true, checked: this.isSelected, part: "row-checkbox" }))), hAsync("slot", { key: '5522f2335912f59013e9fc1e1fc6070d645cd519' })));
26135
+ return (hAsync(Host, { key: '5323521abc5c2464299cf77520fb38ec81297866', class: this.classNames(), role: "row", part: "row" }, this.tableRef && this.tableRef.selectable && (hAsync("pds-table-cell", { key: 'eb94dd282f885d3466b6177b2454cbcc4f932466', part: this.tableRef.fixedColumn ? 'checkbox-cell' : 'checkbox-cell', class: this.tableRef.selectable ? 'has-checkbox' : '' }, hAsync("pds-checkbox", { key: '222eaaedd4bebddc18cebf01bf4da81004773a96', componentId: this.generateUniqueId(), onPdsCheckboxChange: this.handleCheckboxChange, indeterminate: this.indeterminate, label: "Select Row", hideLabel: true, checked: this.isSelected, part: "row-checkbox" }))), hAsync("slot", { key: '010f222fa02b1809ff818f7a030c2a12fc3e3abb' })));
25782
26136
  }
25783
26137
  get hostElement() { return getElement(this); }
25784
26138
  static get style() { return pdsTableRowCss(); }
@@ -25805,6 +26159,7 @@ const pdsTabpanelCss = () => `:host{display:block}:host(.pds-tabpanel--stretch-a
25805
26159
  class PdsTabpanel {
25806
26160
  constructor(hostRef) {
25807
26161
  registerInstance(this, hostRef);
26162
+ this.hostKeeper = new HostStylingKeeper();
25808
26163
  /**
25809
26164
  * Keeps track of the tabpanel selected state, this property is passed by parent component
25810
26165
  */
@@ -25816,12 +26171,22 @@ class PdsTabpanel {
25816
26171
  /** @internal */
25817
26172
  this.stretch = false;
25818
26173
  }
26174
+ connectedCallback() {
26175
+ this.hostKeeper.connect(this.el);
26176
+ }
26177
+ disconnectedCallback() {
26178
+ this.hostKeeper.disconnect();
26179
+ }
25819
26180
  // Unwraps a nested .pds-tabpanel left by a page-cache (Turbo, bfcache) reconnect.
25820
26181
  componentDidRender() {
25821
26182
  unwrapReconnectedContent(this.el.querySelector('.pds-tabpanel'), '.pds-tabpanel');
25822
26183
  }
25823
26184
  render() {
25824
- return (hAsync(Host, { key: '87b00d828c9cddbcccd5d6e89dab7541a3c5c839', slot: "tabpanels", class: this.stretch && this.selected ? "pds-tabpanel--stretch-active" : undefined }, hAsync("div", { key: 'd7058a727d010351c73b5287f45991d48ef71151', role: "tabpanel", id: this.parentComponentId + "__" + this.name + '-panel', tabindex: "0", "aria-labelledby": this.parentComponentId + "__" + this.name, class: this.selected ? "pds-tabpanel is-active" : "pds-tabpanel" }, hAsync("slot", { key: '97861fcd8432206a1115135fad919d75dc327112' }))));
26185
+ const hostClass = this.stretch && this.selected ? "pds-tabpanel--stretch-active" : "";
26186
+ // The docs show consumers omitting `slot`, so server HTML doesn't carry it — a DOM morph
26187
+ // that strips it (and the stretch-active class) leaves this panel unslotted. Put both back.
26188
+ this.hostKeeper.record(hostClass, {}, { slot: 'tabpanels' });
26189
+ return (hAsync(Host, { key: '5d867e31d0f5f14e18f1c81035991c90bb5fe529', slot: "tabpanels", class: hostClass || undefined }, hAsync("div", { key: '255d37a73089904cfb170cd89f7b829756f6295f', role: "tabpanel", id: this.parentComponentId + "__" + this.name + '-panel', tabindex: "0", "aria-labelledby": this.parentComponentId + "__" + this.name, class: this.selected ? "pds-tabpanel is-active" : "pds-tabpanel" }, hAsync("slot", { key: '714d3d0cf0fc6173e243a2b077d9b9918ae4acf9' }))));
25825
26190
  }
25826
26191
  get el() { return getElement(this); }
25827
26192
  static get style() { return pdsTabpanelCss(); }
@@ -25852,6 +26217,35 @@ class PdsTabs {
25852
26217
  constructor(hostRef) {
25853
26218
  registerInstance(this, hostRef);
25854
26219
  this.hostKeeper = new HostStylingKeeper();
26220
+ this.slotChangeScheduled = false;
26221
+ // The tab that most recently had focus, tracked continuously via `focusin` rather
26222
+ // than sampled inside handleSlotChange: removing a focused element blurs it to
26223
+ // <body> synchronously, but slotchange only fires later (a microtask checkpoint),
26224
+ // by which point the sample would already read <body>.
26225
+ this.lastFocusedTab = null;
26226
+ this.handleFocusIn = (event) => {
26227
+ var _a;
26228
+ const tab = (_a = event.target) === null || _a === void 0 ? void 0 : _a.closest('pds-tab');
26229
+ if (tab && tab.closest('pds-tabs') === this.el) {
26230
+ this.lastFocusedTab = tab;
26231
+ }
26232
+ };
26233
+ // Focus that leaves a tab forgets it, so replacing the tab later doesn't pull focus back,
26234
+ // including focus that moves into a panel. Focus moving to another tab is tracked again
26235
+ // by focusin, which follows focusout. Removing a focused tab also fires focusout (with no
26236
+ // relatedTarget), while the tab is still connected, so that case is checked a microtask
26237
+ // later: a tab that's gone by then was removed, and is kept so its focus can be restored.
26238
+ this.handleFocusOut = (event) => {
26239
+ const tab = this.lastFocusedTab;
26240
+ if (event.relatedTarget) {
26241
+ this.lastFocusedTab = null;
26242
+ return;
26243
+ }
26244
+ queueMicrotask(() => {
26245
+ if (this.lastFocusedTab === tab && (tab === null || tab === void 0 ? void 0 : tab.isConnected))
26246
+ this.lastFocusedTab = null;
26247
+ });
26248
+ };
25855
26249
  /**
25856
26250
  * Adds a divider rule beneath the tab list.
25857
26251
  * @defaultValue false
@@ -25871,12 +26265,44 @@ class PdsTabs {
25871
26265
  * @defaultValue false
25872
26266
  */
25873
26267
  this.nav = false;
26268
+ // The tabs and tabpanels slots fire slotchange separately, even for the same morph
26269
+ // (both swapped together). Coalesce same-tick firings into one re-collection pass
26270
+ // with a microtask, the way a single DOM mutation already only triggers one event.
26271
+ this.handleSlotChange = () => {
26272
+ if (this.slotChangeScheduled)
26273
+ return;
26274
+ this.slotChangeScheduled = true;
26275
+ this.activeTabNameBeforeSlotChange = this.activeTabName;
26276
+ queueMicrotask(() => {
26277
+ this.slotChangeScheduled = false;
26278
+ this.recollectAfterSlotChange();
26279
+ });
26280
+ };
25874
26281
  }
25875
26282
  connectedCallback() {
25876
26283
  this.hostKeeper.connect(this.el);
26284
+ this.el.addEventListener('focusin', this.handleFocusIn);
26285
+ this.el.addEventListener('focusout', this.handleFocusOut);
26286
+ // componentDidLoad only runs once, so a reconnect (the element moved in the DOM) re-attaches
26287
+ // the slotchange listeners disconnectedCallback removed. Before the first render the slots
26288
+ // don't exist yet, so this is a no-op and componentDidLoad attaches them.
26289
+ const isReconnect = this.tabsSlot != null;
26290
+ this.setupSlotChangeListeners();
26291
+ // Content can change while detached, with no listener to see it — re-collect now
26292
+ // instead of waiting on a slotchange that may never come if nothing changes again.
26293
+ if (isReconnect)
26294
+ this.handleSlotChange();
25877
26295
  }
25878
26296
  disconnectedCallback() {
26297
+ var _a, _b;
25879
26298
  this.hostKeeper.disconnect();
26299
+ this.el.removeEventListener('focusin', this.handleFocusIn);
26300
+ this.el.removeEventListener('focusout', this.handleFocusOut);
26301
+ (_a = this.tabsSlot) === null || _a === void 0 ? void 0 : _a.removeEventListener('slotchange', this.handleSlotChange);
26302
+ (_b = this.tabPanelsSlot) === null || _b === void 0 ? void 0 : _b.removeEventListener('slotchange', this.handleSlotChange);
26303
+ }
26304
+ componentDidLoad() {
26305
+ this.setupSlotChangeListeners();
25880
26306
  }
25881
26307
  tabClickHandler(event) {
25882
26308
  if (this.componentId === event.detail[1]) {
@@ -25904,8 +26330,8 @@ class PdsTabs {
25904
26330
  // Navigation mode is an explicit, single source of truth: `nav` drives both the
25905
26331
  // container (<nav> of links vs role=tablist of buttons) and every child tab (via
25906
26332
  // `navMode`), so the tabs present when the strip initializes can't mix the two.
25907
- // (Child discovery is load-time only, like `variant`/`id`; tabs added after load
25908
- // aren't managed.)
26333
+ // Unlike child discovery (re-run on slotchange), `nav` itself isn't watched — it's
26334
+ // a load-time mode switch, not something a consumer is expected to toggle live.
25909
26335
  get isNav() {
25910
26336
  return !!this.nav;
25911
26337
  }
@@ -25958,9 +26384,52 @@ class PdsTabs {
25958
26384
  this.tabs = allTabs.filter(tab => tab.closest('pds-tabs') === this.el);
25959
26385
  this.tabPanels = allTabPanels.filter(panel => panel.closest('pds-tabs') === this.el);
25960
26386
  }
26387
+ // The initial collection (componentWillLoad) only sees tabs/panels present at load.
26388
+ // A tab or panel added, removed or replaced afterwards — including by a DOM morph
26389
+ // swapping in a fresh copy — needs to be re-collected the same way pds-dropdown-menu,
26390
+ // pds-select and pds-multiselect already do for their own slotted content.
26391
+ setupSlotChangeListeners() {
26392
+ var _a, _b, _c, _d;
26393
+ this.tabsSlot = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot[name="tabs"]');
26394
+ this.tabPanelsSlot = (_b = this.el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('slot[name="tabpanels"]');
26395
+ (_c = this.tabsSlot) === null || _c === void 0 ? void 0 : _c.addEventListener('slotchange', this.handleSlotChange);
26396
+ (_d = this.tabPanelsSlot) === null || _d === void 0 ? void 0 : _d.addEventListener('slotchange', this.handleSlotChange);
26397
+ }
26398
+ recollectAfterSlotChange() {
26399
+ const previousActiveTabName = this.activeTabNameBeforeSlotChange;
26400
+ // A removed node stays referenced but disconnected — checked before
26401
+ // findAllChildren() re-collects, since that doesn't affect this either way.
26402
+ const focusedTabWasRemoved = !this.isNav && this.lastFocusedTab != null && !this.lastFocusedTab.isConnected;
26403
+ this.findAllChildren();
26404
+ this.warnOnNavConfig();
26405
+ // Keep the current selection if it still exists. Otherwise clear it so
26406
+ // passPropsToChildren() falls back to the first enabled tab, the same way
26407
+ // it does when a consumer never set activeTabName in the first place.
26408
+ if (previousActiveTabName != null && !this.tabs.some((tab) => tab.name === previousActiveTabName)) {
26409
+ this.activeTabName = undefined;
26410
+ }
26411
+ this.passPropsToChildren();
26412
+ // If the tab that last had focus was removed (e.g. replaced by a fresh copy),
26413
+ // the browser already silently dropped focus to <body> — restore it to the new
26414
+ // active tab's button so keyboard/screen-reader users don't lose their place.
26415
+ // Deferred a frame since a freshly-created pds-tab's button doesn't exist until
26416
+ // its own render completes; re-checked then in case focus moved on its own, to
26417
+ // the tabs or anywhere else — only focus the removal dropped to <body> is restored.
26418
+ if (focusedTabWasRemoved) {
26419
+ this.lastFocusedTab = null;
26420
+ requestAnimationFrame(() => {
26421
+ var _a;
26422
+ const active = document.activeElement;
26423
+ if (active && active !== document.body)
26424
+ return;
26425
+ const newActiveTab = this.tabs.find((tab) => tab.name === this.activeTabName);
26426
+ (_a = newActiveTab === null || newActiveTab === void 0 ? void 0 : newActiveTab.querySelector('button')) === null || _a === void 0 ? void 0 : _a.focus();
26427
+ });
26428
+ }
26429
+ }
25961
26430
  propGeneration(child, index = 0) {
25962
26431
  child.parentComponentId = this.componentId.toString();
25963
- child.variant = this.variant.toString();
26432
+ child.variant = this.variant;
25964
26433
  child.selected = (this.activeTabName === child.name) ? true : false;
25965
26434
  child['index'] = index;
25966
26435
  }
@@ -26016,7 +26485,7 @@ class PdsTabs {
26016
26485
  // Only the classes: `active-tab-name` backs the mutable activeTabName prop, so a morph that drops
26017
26486
  // it is a prop change, not a strip.
26018
26487
  this.hostKeeper.record(hostClass);
26019
- return (hAsync(Host, { key: 'ea26bc4e4cadd4621511afa01ca2a353a053fd0e', "active-tab-name": this.activeTabName, class: hostClass, id: this.componentId }, tabList, hAsync("slot", { key: '3f920708c647920af3d0d50f74b5409d30d70af8', name: "tabpanels" })));
26488
+ return (hAsync(Host, { key: '91a9a5cf4348b73ef5ec21430db20468fb67906c', "active-tab-name": this.activeTabName, class: hostClass, id: this.componentId }, tabList, hAsync("slot", { key: 'f0ec002e513f3e91956e905c23e35dae0e6328ad', name: "tabpanels" })));
26020
26489
  }
26021
26490
  get el() { return getElement(this); }
26022
26491
  static get style() { return pdsTabsCss(); }
@@ -26142,7 +26611,7 @@ class PdsText {
26142
26611
  ? `pds-text--decoration-${this.decoration}`
26143
26612
  : ''}
26144
26613
  `;
26145
- return (hAsync(Tag, { key: '98269ec5b06387f89026a4f1327688c611b25a46', ref: (el) => (this.contentEl = el), style: this.color && setColor(this.color), class: typeClasses, part: "content" }, hAsync("slot", { key: '73b6169bdd25a73930d1a01db3a0b5359491ab67' })));
26614
+ return (hAsync(Tag, { key: '6ae89af63963745cd4e8fa734a62f37bc27c59ac', ref: (el) => (this.contentEl = el), style: this.color && setColor(this.color), class: typeClasses, part: "content" }, hAsync("slot", { key: '008f5852aeb4b43cff1a2fea9be9d8fbba9f7934' })));
26146
26615
  }
26147
26616
  get el() { return getElement(this); }
26148
26617
  static get watchers() { return {
@@ -26488,10 +26957,10 @@ class PdsTextarea {
26488
26957
  }
26489
26958
  render() {
26490
26959
  const value = this.getValue();
26491
- return (hAsync(Host, { key: '2544624ceb5a51981954b76eb7a96f8bf0a258b5', "aria-disabled": this.disabled ? 'true' : null, "aria-readonly": this.readonly ? 'true' : null, "has-action": this.hasAction && !this.hideLabel ? 'true' : null }, hAsync("div", { key: 'e85e356a15dd11bbea276b122e67da23342e6ceb', class: "pds-textarea" }, this.label &&
26492
- hAsync("div", { key: '452e96073c2045c2cb2dfa0c9ef7f7102096ab51', class: "pds-textarea__label-wrapper" }, hAsync("label", { key: '84f88bb8211120801cab8b0d7a4915a128fadbfb', htmlFor: this.componentId }, hAsync("span", { key: '43038785de0cb8c833ccd546a00bfc8879c94ecb', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), !this.hideLabel && this.renderAction()), hAsync("div", { key: '868a11635731026168c1ff75d81121ddb96ab7a6', class: "pds-textarea__field-wrapper" }, hAsync("textarea", Object.assign({ key: '80cb7da264045aba177d20f18df31b274afbf485', ref: (el) => this.nativeTextarea = el, "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, autocomplete: this.autocomplete, class: this.textareaClassNames(), disabled: this.disabled, id: this.componentId, maxlength: this.maxLength, name: this.name, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, rows: this.rows, onBlur: this.onBlur, onChange: this.onTextareaChange, onFocus: this.onFocus, onInput: this.onInput, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value), this.renderCharacterCounter()), this.helperMessage &&
26493
- hAsync("p", { key: '493b4378b668a96c7c66cbf2435f9c9d06bd0a72', class: "pds-textarea__helper-message", id: messageId(this.componentId, 'helper') }, this.helperMessage), this.invalid &&
26494
- hAsync("p", { key: 'ae6826d389a2a92fbff8de62a0fd55811764eb15', "aria-live": "assertive", class: "pds-textarea__error-message", id: messageId(this.componentId, 'error') }, hAsync("pds-icon", { key: 'e3dd638311ee2617c8b8ae5743b4e87e5a773ebd', icon: danger, size: "small" }), this.errorMessage))));
26960
+ return (hAsync(Host, { key: '5933dab0c3cd25b1cf2f6851ece8e8064bc7f3b9', "aria-disabled": this.disabled ? 'true' : null, "aria-readonly": this.readonly ? 'true' : null, "has-action": this.hasAction && !this.hideLabel ? 'true' : null }, hAsync("div", { key: '4f1752514d8e5b0f0e3439515cb9e5f043607da1', class: "pds-textarea" }, this.label &&
26961
+ hAsync("div", { key: 'd4e6df0b381d781b70eeae72ff2f0e9428c0d901', class: "pds-textarea__label-wrapper" }, hAsync("label", { key: '747d82067eb571d02840cfd981865821099f288b', htmlFor: this.componentId }, hAsync("span", { key: 'bfab6e8ede66d0169dd020b7dd97e125aba417b0', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), !this.hideLabel && this.renderAction()), hAsync("div", { key: 'a18611c03270e7491c1af69f931419c832192c06', class: "pds-textarea__field-wrapper" }, hAsync("textarea", Object.assign({ key: '868382c7b04a4e59c0daa9d98afcdc9048f6224f', ref: (el) => this.nativeTextarea = el, "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, autocomplete: this.autocomplete, class: this.textareaClassNames(), disabled: this.disabled, id: this.componentId, maxlength: this.maxLength, name: this.name, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, rows: this.rows, onBlur: this.onBlur, onChange: this.onTextareaChange, onFocus: this.onFocus, onInput: this.onInput, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value), this.renderCharacterCounter()), this.helperMessage &&
26962
+ hAsync("p", { key: 'dcb36f21443d2a782c25b7c29c4ce6215f3b212b', class: "pds-textarea__helper-message", id: messageId(this.componentId, 'helper') }, this.helperMessage), this.invalid &&
26963
+ hAsync("p", { key: 'be30fb1a38453296e26b775955389c0ec569df67', "aria-live": "assertive", class: "pds-textarea__error-message", id: messageId(this.componentId, 'error') }, hAsync("pds-icon", { key: 'd93dce10d9d9db5815ac5f331848940aed735ba0', icon: danger, size: "small" }), this.errorMessage))));
26495
26964
  }
26496
26965
  static get formAssociated() { return true; }
26497
26966
  get el() { return getElement(this); }
@@ -26665,13 +27134,13 @@ class PdsToast {
26665
27134
  return this.icon && hAsync("pds-icon", { name: this.icon, class: "pds-toast__icon" });
26666
27135
  }
26667
27136
  render() {
26668
- return (hAsync(Host, { key: '250f871e3dfe412a11e8fe4c0e43c5ef7d886e9b', hidden: !this.isVisible }, hAsync("div", { key: '8c9d995cd597544a3c6ded08d18e09ff4619b364', class: {
27137
+ return (hAsync(Host, { key: '754a4583cefca47a3d3fea7dab036c06ea8aabcd', hidden: !this.isVisible }, hAsync("div", { key: '8ac294344ca459202c0883e724e09a4218342cc4', class: {
26669
27138
  'pds-toast': true,
26670
27139
  [`pds-toast--${this.type}`]: this.type !== 'default',
26671
27140
  'pds-toast--animating-out': this.isAnimatingOut
26672
- }, role: "alert", "aria-live": "polite" }, this.renderIcon(), hAsync("span", { key: '83c4cad9b619ca0ad77721b7472e240719459290', class: "pds-toast__message" }, hAsync("slot", { key: 'c2420b955c89eb8e32dd4a1aa8d89bbbbf1b9ca9' })), this.dismissible && (hAsync("button", { key: '940bb9f1d235d7c31a334bec9aefdfdbd1c5ccfd', type: "button", part: "dismiss", class: "pds-toast__button", onClick: () => {
27141
+ }, role: "alert", "aria-live": "polite" }, this.renderIcon(), hAsync("span", { key: 'eaf615d41c138e2c73088d29bac9349f49a63ba7', class: "pds-toast__message" }, hAsync("slot", { key: '33973447154d80b016f5a7954b0473db03228379' })), this.dismissible && (hAsync("button", { key: 'e189834633e1e648282ee43633fd05e53ce38869', type: "button", part: "dismiss", class: "pds-toast__button", onClick: () => {
26673
27142
  this.dismiss();
26674
- }, "aria-label": this.dismissLabel }, hAsync("pds-icon", { key: 'f6b68f4cf9df23b367ade351dd4f00fc6f6e6442', name: "remove" }))))));
27143
+ }, "aria-label": this.dismissLabel }, hAsync("pds-icon", { key: '623a0e4d56e30781fb31bcd085511c17a4777edc', name: "remove" }))))));
26675
27144
  }
26676
27145
  get el() { return getElement(this); }
26677
27146
  static get watchers() { return {
@@ -27046,9 +27515,9 @@ class PdsTooltip {
27046
27515
  }
27047
27516
  render() {
27048
27517
  const hostId = this.componentId || undefined;
27049
- return (hAsync(Host, { key: 'e80abb11248d9bf6aec1ae738c61692594975630', id: hostId, class: { 'pds-tooltip--is-open': this.opened } }, hAsync("span", { key: '9ff484925a1792302eee230a5c37a0268d536935', class: "pds-tooltip__trigger", onMouseEnter: this.handleShow, onMouseLeave: this.handleHide,
27518
+ return (hAsync(Host, { key: '2e28dff93cd22fd3816d71b67e38883061a8b2bc', id: hostId, class: { 'pds-tooltip--is-open': this.opened } }, hAsync("span", { key: '9e7ea50427587f61dcea1ea97e10d71f4d0c9d92', class: "pds-tooltip__trigger", onMouseEnter: this.handleShow, onMouseLeave: this.handleHide,
27050
27519
  /* focusin/out bubble; ensure keyboard users see tooltips */
27051
- onFocusin: this.handleShow, onFocusout: this.handleHide, ref: el => this.triggerEl = el }, hAsync("slot", { key: '738c314a816e82fd81a0c0e9895d51af45b75eb2' })), hAsync("div", { key: '5b0477cd433cae0b53c4d5ce5767dc703be28ee0', class: "pds-tooltip__content-slot-wrapper", hidden: true }, hAsync("slot", { key: '51ad497357c1d1547bba69d07fd7fa1b675c021f', name: "content" }))));
27520
+ onFocusin: this.handleShow, onFocusout: this.handleHide, ref: el => this.triggerEl = el }, hAsync("slot", { key: '08c1ff63c91b97b4df1362eb9b2e42b6fd556b11' })), hAsync("div", { key: '5cfe25e21d1f096b76335570fbb930a7bc8c95f8', class: "pds-tooltip__content-slot-wrapper", hidden: true }, hAsync("slot", { key: 'e7e8728d7c8a0c74933cef070aa38f88a1f53a32', name: "content" }))));
27052
27521
  }
27053
27522
  get el() { return getElement(this); }
27054
27523
  static get watchers() { return {