@pine-ds/core 4.4.4 → 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 (546) hide show
  1. package/components/attributes.js +1 -1
  2. package/components/index.js +1 -1
  3. package/components/mock-pds-modal.js +1 -1
  4. package/components/pds-combobox.js +1 -1
  5. package/components/pds-container.js +1 -1
  6. package/components/pds-copytext.js +1 -1
  7. package/components/pds-datepicker.js +1 -1
  8. package/components/pds-divider.js +1 -1
  9. package/components/pds-drawer-content.js +1 -1
  10. package/components/pds-drawer-footer.js +1 -1
  11. package/components/pds-drawer-header.js +1 -1
  12. package/components/pds-drawer.js +1 -1
  13. package/components/pds-dropdown-menu-item.js +1 -1
  14. package/components/pds-dropdown-menu-separator.js +1 -1
  15. package/components/pds-dropdown-menu.js +1 -1
  16. package/components/pds-filter.js +1 -1
  17. package/components/pds-filters.js +1 -1
  18. package/components/pds-icon2.js +1 -1
  19. package/components/pds-image.js +1 -1
  20. package/components/pds-input2.js +1 -1
  21. package/components/pds-link2.js +1 -1
  22. package/components/pds-loader2.js +1 -1
  23. package/components/pds-modal-content.js +1 -1
  24. package/components/pds-modal-footer.js +1 -1
  25. package/components/pds-modal-header.js +1 -1
  26. package/components/pds-modal2.js +1 -1
  27. package/components/pds-multiselect.js +1 -1
  28. package/components/pds-popover.js +1 -1
  29. package/components/pds-progress.js +1 -1
  30. package/components/pds-property.js +1 -1
  31. package/components/pds-radio-group.js +1 -1
  32. package/components/pds-radio.js +1 -1
  33. package/components/pds-row.js +1 -1
  34. package/components/pds-select.js +1 -1
  35. package/components/pds-sortable-item.js +1 -1
  36. package/components/pds-sortable.js +1 -1
  37. package/components/pds-switch.js +1 -1
  38. package/components/pds-tab.js +1 -1
  39. package/components/pds-table-body.js +1 -1
  40. package/components/pds-table-cell2.js +1 -1
  41. package/components/pds-table-head-cell2.js +1 -1
  42. package/components/pds-table-head.js +1 -1
  43. package/components/pds-table-row.js +1 -1
  44. package/components/pds-tabpanel.js +1 -1
  45. package/components/pds-tabs.js +1 -1
  46. package/components/pds-text2.js +1 -1
  47. package/components/pds-textarea.js +1 -1
  48. package/components/pds-toast.js +1 -1
  49. package/components/pds-tooltip.js +1 -1
  50. package/dist/cjs/{attributes-DrQqSEv4.js → attributes-BJ7KBHql.js} +22 -25
  51. package/dist/cjs/{index-D-QQKB0y.js → index-5Azb8EQG.js} +1 -1
  52. package/dist/cjs/{index-D8Gl0bIB.js → index-jl_Q819j.js} +10 -1
  53. package/dist/cjs/index.cjs.js +3 -0
  54. package/dist/cjs/keep-hydrated-CiXgkEYd.js +196 -0
  55. package/dist/cjs/loader.cjs.js +3 -2
  56. package/dist/cjs/mock-pds-modal.cjs.entry.js +3 -2
  57. package/dist/cjs/pds-accordion.cjs.entry.js +3 -2
  58. package/dist/cjs/pds-alert.cjs.entry.js +2 -1
  59. package/dist/cjs/pds-avatar.cjs.entry.js +3 -2
  60. package/dist/cjs/pds-box.cjs.entry.js +3 -2
  61. package/dist/cjs/pds-button.cjs.entry.js +3 -2
  62. package/dist/cjs/pds-checkbox.cjs.entry.js +4 -3
  63. package/dist/cjs/pds-chip.cjs.entry.js +4 -3
  64. package/dist/cjs/pds-combobox.cjs.entry.js +156 -26
  65. package/dist/cjs/pds-container.cjs.entry.js +3 -2
  66. package/dist/cjs/pds-copytext.cjs.entry.js +5 -4
  67. package/dist/cjs/pds-datepicker.cjs.entry.js +6 -5
  68. package/dist/cjs/pds-divider.cjs.entry.js +3 -2
  69. package/dist/cjs/pds-drawer-content.cjs.entry.js +3 -2
  70. package/dist/cjs/pds-drawer-footer.cjs.entry.js +3 -2
  71. package/dist/cjs/pds-drawer-header.cjs.entry.js +3 -2
  72. package/dist/cjs/pds-drawer.cjs.entry.js +4 -3
  73. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +3 -2
  74. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +3 -2
  75. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +16 -7
  76. package/dist/cjs/pds-filter.cjs.entry.js +4 -3
  77. package/dist/cjs/pds-filters.cjs.entry.js +3 -2
  78. package/dist/cjs/pds-icon.cjs.entry.js +27 -3
  79. package/dist/cjs/pds-image.cjs.entry.js +4 -3
  80. package/dist/cjs/pds-input.cjs.entry.js +6 -5
  81. package/dist/cjs/pds-link.cjs.entry.js +5 -4
  82. package/dist/cjs/pds-loader.cjs.entry.js +4 -3
  83. package/dist/cjs/pds-modal-content.cjs.entry.js +4 -3
  84. package/dist/cjs/pds-modal-footer.cjs.entry.js +3 -2
  85. package/dist/cjs/pds-modal-header.cjs.entry.js +3 -2
  86. package/dist/cjs/pds-modal.cjs.entry.js +5 -4
  87. package/dist/cjs/pds-multiselect.cjs.entry.js +6 -5
  88. package/dist/cjs/pds-popover.cjs.entry.js +58 -11
  89. package/dist/cjs/pds-progress.cjs.entry.js +4 -3
  90. package/dist/cjs/pds-property.cjs.entry.js +3 -2
  91. package/dist/cjs/pds-radio-group.cjs.entry.js +6 -5
  92. package/dist/cjs/pds-radio.cjs.entry.js +7 -6
  93. package/dist/cjs/pds-row.cjs.entry.js +4 -3
  94. package/dist/cjs/pds-select.cjs.entry.js +5 -4
  95. package/dist/cjs/pds-sortable-item.cjs.entry.js +5 -4
  96. package/dist/cjs/pds-sortable.cjs.entry.js +4 -3
  97. package/dist/cjs/pds-switch.cjs.entry.js +7 -6
  98. package/dist/cjs/pds-tab.cjs.entry.js +13 -1
  99. package/dist/cjs/pds-table-body.cjs.entry.js +3 -2
  100. package/dist/cjs/pds-table-cell.cjs.entry.js +4 -3
  101. package/dist/cjs/pds-table-head-cell.cjs.entry.js +5 -4
  102. package/dist/cjs/pds-table-head.cjs.entry.js +3 -2
  103. package/dist/cjs/pds-table-row.cjs.entry.js +3 -2
  104. package/dist/cjs/pds-table.cjs.entry.js +2 -1
  105. package/dist/cjs/pds-tabpanel.cjs.entry.js +15 -2
  106. package/dist/cjs/pds-tabs.cjs.entry.js +111 -6
  107. package/dist/cjs/pds-text.cjs.entry.js +3 -2
  108. package/dist/cjs/pds-textarea.cjs.entry.js +8 -7
  109. package/dist/cjs/pds-toast.cjs.entry.js +5 -4
  110. package/dist/cjs/pds-tooltip.cjs.entry.js +4 -3
  111. package/dist/cjs/pine-core.cjs.js +3 -2
  112. package/dist/collection/collection-manifest.json +2 -1
  113. package/dist/collection/components/pds-combobox/grouped-options-panel.js +21 -3
  114. package/dist/collection/components/pds-combobox/pds-combobox.css +42 -13
  115. package/dist/collection/components/pds-combobox/pds-combobox.js +135 -22
  116. package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +45 -0
  117. package/dist/collection/components/pds-container/pds-container.js +1 -1
  118. package/dist/collection/components/pds-copytext/pds-copytext.js +1 -1
  119. package/dist/collection/components/pds-datepicker/pds-datepicker.css +4 -2
  120. package/dist/collection/components/pds-datepicker/pds-datepicker.js +2 -2
  121. package/dist/collection/components/pds-divider/pds-divider.js +1 -1
  122. package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.js +1 -1
  123. package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.js +1 -1
  124. package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.js +1 -1
  125. package/dist/collection/components/pds-drawer/pds-drawer.js +2 -2
  126. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +1 -1
  127. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +1 -1
  128. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +19 -5
  129. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +16 -5
  130. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +1 -1
  131. package/dist/collection/components/pds-filters/pds-filters.js +1 -1
  132. package/dist/collection/components/pds-image/pds-image.js +2 -2
  133. package/dist/collection/components/pds-input/pds-input.js +2 -2
  134. package/dist/collection/components/pds-link/pds-link.js +2 -2
  135. package/dist/collection/components/pds-loader/pds-loader.js +1 -1
  136. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +2 -2
  137. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +1 -1
  138. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +1 -1
  139. package/dist/collection/components/pds-modal/pds-modal.js +3 -3
  140. package/dist/collection/components/pds-modal/test/mock-pds-modal.js +1 -1
  141. package/dist/collection/components/pds-multiselect/pds-multiselect.js +3 -3
  142. package/dist/collection/components/pds-popover/pds-popover.js +15 -9
  143. package/dist/collection/components/pds-progress/pds-progress.js +1 -1
  144. package/dist/collection/components/pds-property/pds-property.js +1 -1
  145. package/dist/collection/components/pds-radio/pds-radio.js +3 -3
  146. package/dist/collection/components/pds-radio-group/pds-radio-group.js +3 -3
  147. package/dist/collection/components/pds-row/pds-row.js +1 -1
  148. package/dist/collection/components/pds-select/pds-select.js +1 -1
  149. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
  150. package/dist/collection/components/pds-sortable/pds-sortable.js +1 -1
  151. package/dist/collection/components/pds-switch/pds-switch.js +3 -3
  152. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
  153. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +2 -2
  154. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +1 -1
  155. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +2 -2
  156. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +1 -1
  157. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js +11 -0
  158. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +13 -1
  159. package/dist/collection/components/pds-tabs/pds-tabs.js +111 -7
  160. package/dist/collection/components/pds-text/pds-text.js +1 -1
  161. package/dist/collection/components/pds-textarea/pds-textarea.js +4 -4
  162. package/dist/collection/components/pds-toast/pds-toast.js +3 -3
  163. package/dist/collection/components/pds-tooltip/pds-tooltip.js +2 -2
  164. package/dist/collection/global/pine-global.js +6 -0
  165. package/dist/collection/index.js +1 -0
  166. package/dist/collection/utils/attributes.js +20 -24
  167. package/dist/collection/utils/css.js +41 -0
  168. package/dist/collection/utils/keep-hydrated.js +188 -0
  169. package/dist/docs.json +15 -6
  170. package/dist/esm/{attributes-myrJDwbR.js → attributes-WXw_I_uJ.js} +21 -24
  171. package/dist/esm/{index-DxI-61GK.js → index-BJXk71tO.js} +1 -1
  172. package/dist/esm/{index-bLhIfh0N.js → index-Cw9J31qd.js} +10 -1
  173. package/dist/esm/index.js +2 -0
  174. package/dist/esm/keep-hydrated-BLG6RDBt.js +190 -0
  175. package/dist/esm/loader.js +4 -3
  176. package/dist/esm/mock-pds-modal.entry.js +3 -2
  177. package/dist/esm/pds-accordion.entry.js +3 -2
  178. package/dist/esm/pds-alert.entry.js +2 -1
  179. package/dist/esm/pds-avatar.entry.js +3 -2
  180. package/dist/esm/pds-box.entry.js +3 -2
  181. package/dist/esm/pds-button.entry.js +3 -2
  182. package/dist/esm/pds-checkbox.entry.js +4 -3
  183. package/dist/esm/pds-chip.entry.js +4 -3
  184. package/dist/esm/pds-combobox.entry.js +156 -26
  185. package/dist/esm/pds-container.entry.js +3 -2
  186. package/dist/esm/pds-copytext.entry.js +5 -4
  187. package/dist/esm/pds-datepicker.entry.js +6 -5
  188. package/dist/esm/pds-divider.entry.js +3 -2
  189. package/dist/esm/pds-drawer-content.entry.js +3 -2
  190. package/dist/esm/pds-drawer-footer.entry.js +3 -2
  191. package/dist/esm/pds-drawer-header.entry.js +3 -2
  192. package/dist/esm/pds-drawer.entry.js +4 -3
  193. package/dist/esm/pds-dropdown-menu-item.entry.js +3 -2
  194. package/dist/esm/pds-dropdown-menu-separator.entry.js +3 -2
  195. package/dist/esm/pds-dropdown-menu.entry.js +16 -7
  196. package/dist/esm/pds-filter.entry.js +4 -3
  197. package/dist/esm/pds-filters.entry.js +3 -2
  198. package/dist/esm/pds-icon.entry.js +27 -3
  199. package/dist/esm/pds-image.entry.js +4 -3
  200. package/dist/esm/pds-input.entry.js +6 -5
  201. package/dist/esm/pds-link.entry.js +5 -4
  202. package/dist/esm/pds-loader.entry.js +4 -3
  203. package/dist/esm/pds-modal-content.entry.js +4 -3
  204. package/dist/esm/pds-modal-footer.entry.js +3 -2
  205. package/dist/esm/pds-modal-header.entry.js +3 -2
  206. package/dist/esm/pds-modal.entry.js +5 -4
  207. package/dist/esm/pds-multiselect.entry.js +6 -5
  208. package/dist/esm/pds-popover.entry.js +58 -11
  209. package/dist/esm/pds-progress.entry.js +4 -3
  210. package/dist/esm/pds-property.entry.js +3 -2
  211. package/dist/esm/pds-radio-group.entry.js +6 -5
  212. package/dist/esm/pds-radio.entry.js +7 -6
  213. package/dist/esm/pds-row.entry.js +4 -3
  214. package/dist/esm/pds-select.entry.js +5 -4
  215. package/dist/esm/pds-sortable-item.entry.js +5 -4
  216. package/dist/esm/pds-sortable.entry.js +4 -3
  217. package/dist/esm/pds-switch.entry.js +7 -6
  218. package/dist/esm/pds-tab.entry.js +13 -1
  219. package/dist/esm/pds-table-body.entry.js +3 -2
  220. package/dist/esm/pds-table-cell.entry.js +4 -3
  221. package/dist/esm/pds-table-head-cell.entry.js +5 -4
  222. package/dist/esm/pds-table-head.entry.js +3 -2
  223. package/dist/esm/pds-table-row.entry.js +3 -2
  224. package/dist/esm/pds-table.entry.js +2 -1
  225. package/dist/esm/pds-tabpanel.entry.js +15 -2
  226. package/dist/esm/pds-tabs.entry.js +111 -6
  227. package/dist/esm/pds-text.entry.js +3 -2
  228. package/dist/esm/pds-textarea.entry.js +8 -7
  229. package/dist/esm/pds-toast.entry.js +5 -4
  230. package/dist/esm/pds-tooltip.entry.js +4 -3
  231. package/dist/esm/pine-core.js +4 -3
  232. package/dist/esm-es5/attributes-WXw_I_uJ.js +1 -0
  233. package/dist/esm-es5/{index-bLhIfh0N.js → index-Cw9J31qd.js} +2 -2
  234. package/dist/esm-es5/index.js +1 -1
  235. package/dist/esm-es5/keep-hydrated-BLG6RDBt.js +1 -0
  236. package/dist/esm-es5/loader.js +1 -1
  237. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  238. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  239. package/dist/esm-es5/pds-alert.entry.js +1 -1
  240. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  241. package/dist/esm-es5/pds-box.entry.js +1 -1
  242. package/dist/esm-es5/pds-button.entry.js +1 -1
  243. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  244. package/dist/esm-es5/pds-chip.entry.js +1 -1
  245. package/dist/esm-es5/pds-combobox.entry.js +2 -2
  246. package/dist/esm-es5/pds-container.entry.js +1 -1
  247. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  248. package/dist/esm-es5/pds-datepicker.entry.js +1 -1
  249. package/dist/esm-es5/pds-divider.entry.js +1 -1
  250. package/dist/esm-es5/pds-drawer-content.entry.js +1 -1
  251. package/dist/esm-es5/pds-drawer-footer.entry.js +1 -1
  252. package/dist/esm-es5/pds-drawer-header.entry.js +1 -1
  253. package/dist/esm-es5/pds-drawer.entry.js +1 -1
  254. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  255. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  256. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  257. package/dist/esm-es5/pds-filter.entry.js +1 -1
  258. package/dist/esm-es5/pds-filters.entry.js +1 -1
  259. package/dist/esm-es5/pds-icon.entry.js +1 -1
  260. package/dist/esm-es5/pds-image.entry.js +1 -1
  261. package/dist/esm-es5/pds-input.entry.js +1 -1
  262. package/dist/esm-es5/pds-link.entry.js +1 -1
  263. package/dist/esm-es5/pds-loader.entry.js +1 -1
  264. package/dist/esm-es5/pds-modal-content.entry.js +1 -1
  265. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  266. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  267. package/dist/esm-es5/pds-modal.entry.js +1 -1
  268. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  269. package/dist/esm-es5/pds-popover.entry.js +1 -1
  270. package/dist/esm-es5/pds-progress.entry.js +1 -1
  271. package/dist/esm-es5/pds-property.entry.js +1 -1
  272. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  273. package/dist/esm-es5/pds-radio.entry.js +1 -1
  274. package/dist/esm-es5/pds-row.entry.js +1 -1
  275. package/dist/esm-es5/pds-select.entry.js +1 -1
  276. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  277. package/dist/esm-es5/pds-sortable.entry.js +2 -2
  278. package/dist/esm-es5/pds-switch.entry.js +1 -1
  279. package/dist/esm-es5/pds-tab.entry.js +1 -1
  280. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  281. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  282. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  283. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  284. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  285. package/dist/esm-es5/pds-table.entry.js +1 -1
  286. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  287. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  288. package/dist/esm-es5/pds-text.entry.js +1 -1
  289. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  290. package/dist/esm-es5/pds-toast.entry.js +1 -1
  291. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  292. package/dist/esm-es5/pine-core.js +1 -1
  293. package/dist/pine-core/index.esm.js +1 -1
  294. package/dist/pine-core/p-0092444c.system.entry.js +1 -0
  295. package/dist/pine-core/p-01aa382c.system.entry.js +1 -0
  296. package/dist/pine-core/p-01c9b8f3.entry.js +1 -0
  297. package/dist/pine-core/p-02088776.entry.js +1 -0
  298. package/dist/pine-core/p-049f126a.entry.js +1 -0
  299. package/dist/pine-core/p-080cb087.system.entry.js +1 -0
  300. package/dist/pine-core/p-0913f696.system.entry.js +1 -0
  301. package/dist/pine-core/p-0a84d220.entry.js +1 -0
  302. package/dist/pine-core/{p-f3188c57.system.entry.js → p-0b71ecb6.system.entry.js} +2 -2
  303. package/dist/pine-core/p-1437585e.system.entry.js +1 -0
  304. package/dist/pine-core/p-1ee86d87.system.entry.js +1 -0
  305. package/dist/pine-core/p-208c7dbf.entry.js +1 -0
  306. package/dist/pine-core/p-258770cf.system.entry.js +1 -0
  307. package/dist/pine-core/p-258d5e83.entry.js +1 -0
  308. package/dist/pine-core/p-26642718.entry.js +1 -0
  309. package/dist/pine-core/p-2ac2457b.system.entry.js +1 -0
  310. package/dist/pine-core/p-2cb5483a.system.entry.js +1 -0
  311. package/dist/pine-core/p-341c38f1.system.entry.js +1 -0
  312. package/dist/pine-core/p-3a959459.system.entry.js +1 -0
  313. package/dist/pine-core/p-3c27088f.system.entry.js +1 -0
  314. package/dist/pine-core/p-432d5ec7.entry.js +1 -0
  315. package/dist/pine-core/p-4849fda7.entry.js +1 -0
  316. package/dist/pine-core/p-4d03d1e2.system.entry.js +1 -0
  317. package/dist/pine-core/p-4de8f333.entry.js +1 -0
  318. package/dist/pine-core/p-4f94b4f1.system.entry.js +1 -0
  319. package/dist/pine-core/p-4fa63723.system.entry.js +1 -0
  320. package/dist/pine-core/p-4fd454f6.entry.js +1 -0
  321. package/dist/pine-core/p-5442d983.system.entry.js +1 -0
  322. package/dist/pine-core/p-550c2fd3.entry.js +1 -0
  323. package/dist/pine-core/p-55224683.entry.js +1 -0
  324. package/dist/pine-core/p-57a2f927.entry.js +1 -0
  325. package/dist/pine-core/p-5870b092.system.entry.js +1 -0
  326. package/dist/pine-core/p-5c90091e.system.entry.js +1 -0
  327. package/dist/pine-core/p-602c197f.entry.js +1 -0
  328. package/dist/pine-core/p-646afbca.system.entry.js +1 -0
  329. package/dist/pine-core/p-6bf853c9.entry.js +1 -0
  330. package/dist/pine-core/p-6d3610f9.entry.js +1 -0
  331. package/dist/pine-core/p-6eec23a7.system.entry.js +1 -0
  332. package/dist/pine-core/p-72865997.entry.js +1 -0
  333. package/dist/pine-core/p-73eb47fa.entry.js +1 -0
  334. package/dist/pine-core/p-75ee0403.entry.js +1 -0
  335. package/dist/pine-core/p-77395d62.system.entry.js +1 -0
  336. package/dist/pine-core/p-7a287635.system.entry.js +1 -0
  337. package/dist/pine-core/p-7a5b21d2.system.entry.js +1 -0
  338. package/dist/pine-core/p-7bf6563a.system.entry.js +1 -0
  339. package/dist/pine-core/p-7f367db4.system.entry.js +1 -0
  340. package/dist/pine-core/p-8191498f.system.entry.js +1 -0
  341. package/dist/pine-core/p-82cf4ec6.entry.js +1 -0
  342. package/dist/pine-core/p-84e9b7da.entry.js +1 -0
  343. package/dist/pine-core/p-86040cac.system.entry.js +1 -0
  344. package/dist/pine-core/p-875b0436.system.entry.js +1 -0
  345. package/dist/pine-core/p-8c8cc079.system.entry.js +1 -0
  346. package/dist/pine-core/p-8cc302aa.system.entry.js +1 -0
  347. package/dist/pine-core/p-8d292b48.entry.js +1 -0
  348. package/dist/pine-core/p-8f531063.entry.js +1 -0
  349. package/dist/pine-core/p-9109b90a.entry.js +1 -0
  350. package/dist/pine-core/p-94593f20.system.entry.js +1 -0
  351. package/dist/pine-core/p-9880d251.system.entry.js +1 -0
  352. package/dist/pine-core/p-99459e27.entry.js +1 -0
  353. package/dist/pine-core/p-9a0083dd.system.entry.js +1 -0
  354. package/dist/pine-core/p-9ab95438.entry.js +1 -0
  355. package/dist/pine-core/{p-f83fe305.entry.js → p-9af131d6.system.entry.js} +1 -1
  356. package/dist/pine-core/p-9dcd2cdb.entry.js +1 -0
  357. package/dist/pine-core/p-9e0f920a.system.entry.js +1 -0
  358. package/dist/pine-core/p-BGLP3keB.js +1 -0
  359. package/dist/pine-core/p-BLG6RDBt.js +1 -0
  360. package/dist/pine-core/p-BR5nujVX.system.js +1 -0
  361. package/dist/pine-core/p-CGRdQc49.system.js +2 -0
  362. package/dist/pine-core/p-CmSJytt1.js +2 -0
  363. package/dist/pine-core/p-CuSNnuFu.system.js +1 -0
  364. package/dist/pine-core/p-Cy8cvR7I.system.js +1 -0
  365. package/dist/pine-core/p-XW4H0W6i.system.js +1 -0
  366. package/dist/pine-core/p-a0960b3d.system.entry.js +1 -0
  367. package/dist/pine-core/p-a1230a74.system.entry.js +1 -0
  368. package/dist/pine-core/p-a19cd59c.entry.js +1 -0
  369. package/dist/pine-core/p-a3735199.entry.js +1 -0
  370. package/dist/pine-core/p-a826f290.entry.js +1 -0
  371. package/dist/pine-core/p-a85a6ab9.system.entry.js +1 -0
  372. package/dist/pine-core/p-acce8eb2.entry.js +1 -0
  373. package/dist/pine-core/p-b1548a20.entry.js +1 -0
  374. package/dist/pine-core/p-b69f04b7.entry.js +1 -0
  375. package/dist/pine-core/p-b75b0d09.system.entry.js +1 -0
  376. package/dist/pine-core/p-b8e8a4ce.entry.js +1 -0
  377. package/dist/pine-core/{p-09d10e9e.entry.js → p-b914dde8.entry.js} +2 -2
  378. package/dist/pine-core/p-ba1f65c2.system.entry.js +1 -0
  379. package/dist/pine-core/p-bb68431a.entry.js +1 -0
  380. package/dist/pine-core/p-bd67156b.system.entry.js +1 -0
  381. package/dist/pine-core/p-beb23781.entry.js +1 -0
  382. package/dist/pine-core/p-bf30dec0.entry.js +1 -0
  383. package/dist/pine-core/p-bf7ee3b7.system.entry.js +1 -0
  384. package/dist/pine-core/p-c5c9ed36.system.entry.js +1 -0
  385. package/dist/pine-core/p-cb6a3e4c.system.entry.js +1 -0
  386. package/dist/pine-core/p-cde8eb81.entry.js +1 -0
  387. package/dist/pine-core/p-cf08a6dd.system.entry.js +1 -0
  388. package/dist/pine-core/p-cfd012d4.entry.js +1 -0
  389. package/dist/pine-core/p-d2c91e7a.entry.js +1 -0
  390. package/dist/pine-core/p-da103a54.system.entry.js +1 -0
  391. package/dist/pine-core/p-db17c626.system.entry.js +1 -0
  392. package/dist/pine-core/p-df539c42.system.entry.js +3 -0
  393. package/dist/pine-core/p-e0917a26.entry.js +1 -0
  394. package/dist/pine-core/p-e5420660.entry.js +1 -0
  395. package/dist/pine-core/p-e800a2b1.entry.js +1 -0
  396. package/dist/pine-core/p-e836a041.entry.js +1 -0
  397. package/dist/pine-core/p-e8cb76e8.entry.js +1 -0
  398. package/dist/pine-core/p-ea4d4741.system.entry.js +1 -0
  399. package/dist/pine-core/p-eb5465ce.entry.js +1 -0
  400. package/dist/pine-core/{p-48ab7da8.system.entry.js → p-ebd0bff2.entry.js} +1 -1
  401. package/dist/pine-core/p-ec5428fb.entry.js +1 -0
  402. package/dist/pine-core/p-ed4b979e.entry.js +1 -0
  403. package/dist/pine-core/p-f029b7da.system.entry.js +1 -0
  404. package/dist/pine-core/p-f0d24298.system.entry.js +1 -0
  405. package/dist/pine-core/p-f1702281.entry.js +1 -0
  406. package/dist/pine-core/p-f1f17940.entry.js +2 -0
  407. package/dist/pine-core/p-f25e4731.system.entry.js +1 -0
  408. package/dist/pine-core/p-f2c253d8.entry.js +1 -0
  409. package/dist/pine-core/p-f77905aa.system.entry.js +1 -0
  410. package/dist/pine-core/p-fc25b956.system.entry.js +1 -0
  411. package/dist/pine-core/p-ff3de72e.entry.js +1 -0
  412. package/dist/pine-core/pine-core.esm.js +1 -1
  413. package/dist/pine-core/pine-core.js +1 -1
  414. package/dist/types/components/pds-combobox/combobox-interface.d.ts +8 -1
  415. package/dist/types/components/pds-combobox/grouped-options-panel.d.ts +7 -1
  416. package/dist/types/components/pds-combobox/pds-combobox.d.ts +31 -0
  417. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu.d.ts +4 -0
  418. package/dist/types/components/pds-tabs/pds-tab/pds-tab.d.ts +3 -0
  419. package/dist/types/components/pds-tabs/pds-tabpanel/pds-tabpanel.d.ts +3 -0
  420. package/dist/types/components/pds-tabs/pds-tabs.d.ts +14 -2
  421. package/dist/types/components.d.ts +5 -5
  422. package/dist/types/global/pine-global.d.ts +2 -0
  423. package/dist/types/index.d.ts +1 -0
  424. package/dist/types/utils/attributes.d.ts +2 -6
  425. package/dist/types/utils/css.d.ts +7 -0
  426. package/dist/types/utils/keep-hydrated.d.ts +56 -0
  427. package/dist/vscode.html-data.json +2 -2
  428. package/hydrate/index.js +673 -144
  429. package/hydrate/index.mjs +673 -144
  430. package/package.json +2 -2
  431. package/dist/esm-es5/attributes-myrJDwbR.js +0 -1
  432. package/dist/pine-core/p-085c92aa.system.entry.js +0 -1
  433. package/dist/pine-core/p-0bfe152a.entry.js +0 -1
  434. package/dist/pine-core/p-0ce3bcf2.system.entry.js +0 -1
  435. package/dist/pine-core/p-1dd395d8.system.entry.js +0 -1
  436. package/dist/pine-core/p-1feace6a.system.entry.js +0 -1
  437. package/dist/pine-core/p-2126b4e4.system.entry.js +0 -1
  438. package/dist/pine-core/p-21abd971.entry.js +0 -1
  439. package/dist/pine-core/p-2212224a.system.entry.js +0 -1
  440. package/dist/pine-core/p-23044953.system.entry.js +0 -1
  441. package/dist/pine-core/p-26d8c4f7.system.entry.js +0 -1
  442. package/dist/pine-core/p-2806fa55.system.entry.js +0 -1
  443. package/dist/pine-core/p-28abc253.system.entry.js +0 -1
  444. package/dist/pine-core/p-2dd3ab72.entry.js +0 -1
  445. package/dist/pine-core/p-30784d57.entry.js +0 -1
  446. package/dist/pine-core/p-3088cd66.entry.js +0 -1
  447. package/dist/pine-core/p-3add97f7.system.entry.js +0 -1
  448. package/dist/pine-core/p-3e829372.system.entry.js +0 -1
  449. package/dist/pine-core/p-40928521.system.entry.js +0 -1
  450. package/dist/pine-core/p-40ebfe59.system.entry.js +0 -1
  451. package/dist/pine-core/p-44cbdf94.system.entry.js +0 -1
  452. package/dist/pine-core/p-468f0dab.system.entry.js +0 -1
  453. package/dist/pine-core/p-4765f7f0.entry.js +0 -1
  454. package/dist/pine-core/p-478e69d1.entry.js +0 -1
  455. package/dist/pine-core/p-4af5f936.entry.js +0 -1
  456. package/dist/pine-core/p-4d3f5098.system.entry.js +0 -1
  457. package/dist/pine-core/p-5064f007.system.entry.js +0 -1
  458. package/dist/pine-core/p-5081a96f.entry.js +0 -1
  459. package/dist/pine-core/p-517e04f6.entry.js +0 -1
  460. package/dist/pine-core/p-51eb36f4.system.entry.js +0 -3
  461. package/dist/pine-core/p-5527e825.system.entry.js +0 -1
  462. package/dist/pine-core/p-563ba784.entry.js +0 -1
  463. package/dist/pine-core/p-5bf397ca.entry.js +0 -1
  464. package/dist/pine-core/p-5c7c2ffa.entry.js +0 -1
  465. package/dist/pine-core/p-5db91557.entry.js +0 -1
  466. package/dist/pine-core/p-60393d52.entry.js +0 -1
  467. package/dist/pine-core/p-60a15bf7.system.entry.js +0 -1
  468. package/dist/pine-core/p-60e687ac.entry.js +0 -1
  469. package/dist/pine-core/p-61ae5a4b.system.entry.js +0 -1
  470. package/dist/pine-core/p-62377463.system.entry.js +0 -1
  471. package/dist/pine-core/p-62974869.entry.js +0 -1
  472. package/dist/pine-core/p-63644dbd.entry.js +0 -1
  473. package/dist/pine-core/p-686b526d.entry.js +0 -1
  474. package/dist/pine-core/p-69f60432.system.entry.js +0 -1
  475. package/dist/pine-core/p-6d6079f5.entry.js +0 -1
  476. package/dist/pine-core/p-6eb2070a.entry.js +0 -1
  477. package/dist/pine-core/p-7386bbdf.system.entry.js +0 -1
  478. package/dist/pine-core/p-74b1b841.entry.js +0 -1
  479. package/dist/pine-core/p-74d93179.system.entry.js +0 -1
  480. package/dist/pine-core/p-7647b568.system.entry.js +0 -1
  481. package/dist/pine-core/p-7698fcfa.system.entry.js +0 -1
  482. package/dist/pine-core/p-778a0228.system.entry.js +0 -1
  483. package/dist/pine-core/p-77e12080.system.entry.js +0 -1
  484. package/dist/pine-core/p-7a9c687d.system.entry.js +0 -1
  485. package/dist/pine-core/p-7fbb7037.entry.js +0 -1
  486. package/dist/pine-core/p-85d77b55.entry.js +0 -1
  487. package/dist/pine-core/p-86978a51.entry.js +0 -1
  488. package/dist/pine-core/p-88728d46.system.entry.js +0 -1
  489. package/dist/pine-core/p-893b02b7.entry.js +0 -1
  490. package/dist/pine-core/p-8d8512ae.system.entry.js +0 -1
  491. package/dist/pine-core/p-93341083.system.entry.js +0 -1
  492. package/dist/pine-core/p-9452adc4.entry.js +0 -1
  493. package/dist/pine-core/p-95649e1c.entry.js +0 -1
  494. package/dist/pine-core/p-977db8b2.entry.js +0 -1
  495. package/dist/pine-core/p-97c04215.system.entry.js +0 -1
  496. package/dist/pine-core/p-9903eb37.system.entry.js +0 -1
  497. package/dist/pine-core/p-9b18314c.entry.js +0 -1
  498. package/dist/pine-core/p-9ca1b473.system.entry.js +0 -1
  499. package/dist/pine-core/p-BwmzR47K.system.js +0 -1
  500. package/dist/pine-core/p-CrXTJmBd.system.js +0 -2
  501. package/dist/pine-core/p-DO9XKAkv.system.js +0 -1
  502. package/dist/pine-core/p-G3CPPJEt.system.js +0 -1
  503. package/dist/pine-core/p-a0f8a61a.entry.js +0 -1
  504. package/dist/pine-core/p-a232dc19.entry.js +0 -1
  505. package/dist/pine-core/p-a44316ad.entry.js +0 -1
  506. package/dist/pine-core/p-a8884f2d.system.entry.js +0 -1
  507. package/dist/pine-core/p-a8f23db0.system.entry.js +0 -1
  508. package/dist/pine-core/p-a9ea3c9d.entry.js +0 -1
  509. package/dist/pine-core/p-ae125139.entry.js +0 -1
  510. package/dist/pine-core/p-af9bce53.entry.js +0 -1
  511. package/dist/pine-core/p-b15777a2.entry.js +0 -1
  512. package/dist/pine-core/p-b2901e60.system.entry.js +0 -1
  513. package/dist/pine-core/p-b82a0693.entry.js +0 -1
  514. package/dist/pine-core/p-b852c82b.system.entry.js +0 -1
  515. package/dist/pine-core/p-b979105e.entry.js +0 -1
  516. package/dist/pine-core/p-bLhIfh0N.js +0 -2
  517. package/dist/pine-core/p-bb9d158c.system.entry.js +0 -1
  518. package/dist/pine-core/p-bc7ba7d3.system.entry.js +0 -1
  519. package/dist/pine-core/p-bd1bdb07.system.entry.js +0 -1
  520. package/dist/pine-core/p-c497d6c6.entry.js +0 -1
  521. package/dist/pine-core/p-c971cdb3.entry.js +0 -1
  522. package/dist/pine-core/p-cbae27a4.system.entry.js +0 -1
  523. package/dist/pine-core/p-cdd21cbe.entry.js +0 -1
  524. package/dist/pine-core/p-ce74a47e.entry.js +0 -2
  525. package/dist/pine-core/p-cf4758a7.entry.js +0 -1
  526. package/dist/pine-core/p-cfc9d4a8.entry.js +0 -1
  527. package/dist/pine-core/p-d1b0b372.entry.js +0 -1
  528. package/dist/pine-core/p-d6002d5b.entry.js +0 -1
  529. package/dist/pine-core/p-d8a6298c.system.entry.js +0 -1
  530. package/dist/pine-core/p-d933227e.system.entry.js +0 -1
  531. package/dist/pine-core/p-d962fc84.entry.js +0 -1
  532. package/dist/pine-core/p-da7a7cca.entry.js +0 -1
  533. package/dist/pine-core/p-daaf653f.system.entry.js +0 -1
  534. package/dist/pine-core/p-dafff7dd.system.entry.js +0 -1
  535. package/dist/pine-core/p-ea9468fb.entry.js +0 -1
  536. package/dist/pine-core/p-ed22da0c.system.entry.js +0 -1
  537. package/dist/pine-core/p-f0632690.system.entry.js +0 -1
  538. package/dist/pine-core/p-f1c6b23a.entry.js +0 -1
  539. package/dist/pine-core/p-f279f435.system.entry.js +0 -1
  540. package/dist/pine-core/p-f33d6417.entry.js +0 -1
  541. package/dist/pine-core/p-f832dcd9.entry.js +0 -1
  542. package/dist/pine-core/p-fe09b6fb.system.entry.js +0 -1
  543. package/dist/pine-core/p-myrJDwbR.js +0 -1
  544. /package/dist/esm-es5/{index-DxI-61GK.js → index-BJXk71tO.js} +0 -0
  545. /package/dist/pine-core/{p-DxI-61GK.js → p-BJXk71tO.js} +0 -0
  546. /package/dist/pine-core/{p-CnO10OxH.system.js → p-n3_ytl_p.system.js} +0 -0
package/hydrate/index.mjs CHANGED
@@ -132,6 +132,204 @@ function hydrateFactory($stencilWindow, $stencilHydrateOpts, $stencilHydrateResu
132
132
  const NAMESPACE = 'pine-core';
133
133
  const BUILD = /* pine-core */ { hotModuleReplacement: false, hydratedSelectorName: "hydrated", slotRelocation: true, state: true, updatable: true};
134
134
 
135
+ /**
136
+ * Whether a class is one Stencil itself puts on a host: its default `hydratedFlag` (Pine doesn't
137
+ * change it), or a scoped component's own scope classes (`sc-pds-radio`, `sc-pds-radio-h`,
138
+ * `sc-pds-radio-s`), which its CSS needs. Only the host's own: another `sc-` class may be a
139
+ * consumer's (styled-components ids).
140
+ * @param el - Host element
141
+ * @param name - Class name
142
+ */
143
+ const isStencilClass = (el, name) => {
144
+ const scope = `sc-${el.localName}`;
145
+ return name === 'hydrated' || name === scope || name === `${scope}-h` || name === `${scope}-s`;
146
+ };
147
+ /**
148
+ * The class names in a rendered `class` value: a string, or Stencil's `{ name: boolean }` form.
149
+ */
150
+ const classNamesOf = (classes) => typeof classes === 'string'
151
+ ? classes.split(/\s+/).filter(Boolean)
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
+ };
256
+ // On the global object, not in this module, so a page with two copies of Pine (the CDN build and a
257
+ // bundled `@pine-ds/react`) still has one observer.
258
+ const OBSERVER = Symbol.for('@pine-ds/core/keepPineHydrated');
259
+ /**
260
+ * Puts Stencil's own classes back on any Pine component that loses them. Stencil hides a component
261
+ * until it has `hydrated`, so a DOM morph that strips a host's `class` makes it vanish, and nothing
262
+ * rewrites it. One observer on the whole document covers every component, including the ones with no
263
+ * host restore of their own. It only restores classes the element had, so it never runs ahead of
264
+ * Stencil. It can't see inside shadow roots, which a morph doesn't reach either.
265
+ *
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.
269
+ *
270
+ * Pine's global script calls this, so the CDN and `dist` builds get it on load. The custom-elements
271
+ * build (`@pine-ds/core/components/*`, `@pine-ds/react`) has no global script: call it once yourself.
272
+ * Calling it again does nothing, and without `MutationObserver` (server rendering) neither does the
273
+ * first call.
274
+ */
275
+ const keepPineHydrated = () => {
276
+ if (typeof MutationObserver === 'undefined' || typeof document === 'undefined')
277
+ return;
278
+ const store = globalThis;
279
+ if (store[OBSERVER])
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
+ };
298
+ const observer = new MutationObserver((records) => {
299
+ records.forEach(({ target, oldValue }) => {
300
+ const el = target;
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))
306
+ return;
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);
312
+ });
313
+ });
314
+ // The document rather than its root element, so replacing `<html>` doesn't end the watch.
315
+ observer.observe(document, {
316
+ subtree: true,
317
+ attributes: true,
318
+ attributeFilter: ['class'],
319
+ attributeOldValue: true,
320
+ });
321
+ store[OBSERVER] = observer;
322
+ };
323
+
324
+ // Stencil runs this when the loader loads, before any component is defined, and again for each
325
+ // server-rendered document, where it does nothing.
326
+ var pineGlobal = () => {
327
+ keepPineHydrated();
328
+ };
329
+
330
+ const appGlobalScript = pineGlobal || (() => {});
331
+ const globalScripts = appGlobalScript;
332
+
135
333
  /*
136
334
  Stencil Hydrate Platform v4.43.5 | MIT Licensed | https://stenciljs.com
137
335
  */
@@ -5169,6 +5367,7 @@ function hydrateApp(win2, opts, results, afterHydrate, resolve) {
5169
5367
  };
5170
5368
  tmrId = globalThis.setTimeout(timeoutExceeded, opts.timeout);
5171
5369
  plt.$resourcesUrl$ = new URL(opts.resourcesUrl || "./", win2.document.baseURI).href;
5370
+ globalScripts();
5172
5371
  patchChild2(win2.document.body);
5173
5372
  waitLoop2().then(hydratedComplete).catch(hydratedError);
5174
5373
  } catch (e) {
@@ -5531,7 +5730,7 @@ class MockPdsModal {
5531
5730
  'pds-modal__backdrop': true,
5532
5731
  'open': this.open,
5533
5732
  };
5534
- 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" })))));
5535
5734
  }
5536
5735
  get el() { return getElement(this); }
5537
5736
  static get style() { return pdsModalCss$1(); }
@@ -5553,7 +5752,7 @@ class MockPdsModal {
5553
5752
  }; }
5554
5753
  }
5555
5754
 
5556
- /* pds-icons v10.5.1, ES Modules */
5755
+ /* pds-icons v10.6.0, ES Modules */
5557
5756
 
5558
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>";
5559
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>";
@@ -5998,7 +6197,7 @@ const debounce = (func, wait = 0) => {
5998
6197
  * @param options.semanticMap - Optional mapping of semantic names to CSS variables
5999
6198
  * @returns Normalized color value or undefined for invalid inputs
6000
6199
  */
6001
- const normalizeColorValue = (value, options) => {
6200
+ const normalizeColorValue$1 = (value, options) => {
6002
6201
  if (!value)
6003
6202
  return undefined;
6004
6203
  const trimmed = value.trim();
@@ -6042,7 +6241,7 @@ const setColor = (color, customColors) => {
6042
6241
  // Merge defaults with any custom overrides so defaults are preserved
6043
6242
  const semanticMap = Object.assign(Object.assign({}, defaultColors), (customColors || {}));
6044
6243
  // Use the shared normalizer so components accept semantic names, raw tokens, var(...), or literals
6045
- const resolved = normalizeColorValue(color, { semanticMap });
6244
+ const resolved = normalizeColorValue$1(color, { semanticMap });
6046
6245
  // Ensure we never return an undefined style value; if unresolved, omit the property
6047
6246
  if (!resolved)
6048
6247
  return {};
@@ -6058,24 +6257,15 @@ const setColor = (color, customColors) => {
6058
6257
  * @param attributes - Attribute names and the values they should have
6059
6258
  */
6060
6259
  const setAttributesIfChanged = (el, attributes) => {
6260
+ let wrote = false;
6061
6261
  Object.entries(attributes).forEach(([name, value]) => {
6062
- if (el.getAttribute(name) !== value)
6262
+ if (el.getAttribute(name) !== value) {
6063
6263
  el.setAttribute(name, value);
6264
+ wrote = true;
6265
+ }
6064
6266
  });
6267
+ return wrote;
6065
6268
  };
6066
- // Classes Stencil itself puts on a host: its default `hydratedFlag` (Pine doesn't change it), and a
6067
- // scoped component's own scope classes (`sc-pds-radio`, `sc-pds-radio-h`, `sc-pds-radio-s`), which
6068
- // its CSS needs. Only the host's own: another `sc-` class may be a consumer's (styled-components ids).
6069
- const isStencilClass = (el, name) => {
6070
- const scope = `sc-${el.localName}`;
6071
- return name === 'hydrated' || name === scope || name === `${scope}-h` || name === `${scope}-s`;
6072
- };
6073
- /**
6074
- * The class names in a rendered `class` value: a string, or Stencil's `{ name: boolean }` form.
6075
- */
6076
- const classNamesOf = (classes) => typeof classes === 'string'
6077
- ? classes.split(/\s+/).filter(Boolean)
6078
- : Object.keys(classes).filter((name) => classes[name]);
6079
6269
  /**
6080
6270
  * Puts back any of `expected`'s classes or style properties that are missing from `el`. It only
6081
6271
  * adds what's missing, never rewrites a value that's there, because browsers normalize some style
@@ -6087,10 +6277,9 @@ const restoreHostStyling = (el, { classes, styles }) => {
6087
6277
  const missing = classes.filter((name) => !el.classList.contains(name));
6088
6278
  if (missing.length > 0)
6089
6279
  el.classList.add(...missing);
6090
- Object.entries(styles).forEach(([name, value]) => {
6091
- if (value && el.style.getPropertyValue(name) === '')
6092
- el.style.setProperty(name, value);
6093
- });
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;
6094
6283
  };
6095
6284
  /**
6096
6285
  * Watches a component's own host and puts back what it rendered when something strips it. A DOM
@@ -6107,15 +6296,18 @@ const restoreHostStyling = (el, { classes, styles }) => {
6107
6296
  const keepHostStyling = (el, expected) => {
6108
6297
  if (typeof MutationObserver === 'undefined')
6109
6298
  return null;
6110
- const observer = new MutationObserver((records) => {
6299
+ const tag = el.tagName.toLowerCase();
6300
+ const seenStencilClasses = new Set();
6301
+ const observer = new MutationObserver(limitRestores((records) => {
6111
6302
  const styling = expected();
6112
6303
  // A strip takes Stencil's own classes too: without `hydrated` Stencil hides the component, and
6113
6304
  // without its scope classes a scoped component's CSS stops matching. Put back only the ones that
6114
- // were there, so this never runs ahead of Stencil.
6305
+ // were there, so this never runs ahead of Stencil. `keepPineHydrated` does the same for every
6306
+ // component, but the custom-elements build only runs it if the consumer calls it, so keep this.
6115
6307
  const stencilClasses = records
6116
- .filter((record) => record.attributeName === 'class' && record.oldValue != null)
6117
- .flatMap((record) => classNamesOf(record.oldValue).filter((name) => isStencilClass(el, name)));
6118
- 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] }));
6119
6311
  // An attribute the component still renders comes back with the value it had, which is what
6120
6312
  // Stencil wrote (a boolean `true` lands as an empty value). One it stopped rendering stays
6121
6313
  // removed, since that was Stencil's own write.
@@ -6125,8 +6317,10 @@ const keepHostStyling = (el, expected) => {
6125
6317
  if (oldValue == null || rendered == null || rendered === false || el.hasAttribute(name))
6126
6318
  return;
6127
6319
  el.setAttribute(name, oldValue);
6320
+ wrote = true;
6128
6321
  });
6129
- });
6322
+ return wrote;
6323
+ }, `${tag}: stopped restoring its host, as another script keeps changing it. Use props instead.`, el, HOST_RESTORE));
6130
6324
  observer.observe(el, { attributes: true, attributeOldValue: true });
6131
6325
  return observer;
6132
6326
  };
@@ -6384,8 +6578,8 @@ class PdsBox {
6384
6578
  this.sizeXl == undefined ? 'pds-box' : ''}
6385
6579
  `;
6386
6580
  // Normalize so pds-box accepts --token, var(--token), or literals (no semantic names)
6387
- const normalizedBackground = normalizeColorValue(this.backgroundColor);
6388
- const normalizedBorder = normalizeColorValue(this.borderColor);
6581
+ const normalizedBackground = normalizeColorValue$1(this.backgroundColor);
6582
+ const normalizedBorder = normalizeColorValue$1(this.borderColor);
6389
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 }));
6390
6584
  this.hostKeeper.record(boxClasses, boxInlineStyles);
6391
6585
  return (hAsync(Host, { key: 'dc4d939daf38b24ecbfa0eb0a95ab67b97a85665', class: boxClasses, style: boxInlineStyles }));
@@ -9173,11 +9367,11 @@ class PdsChip {
9173
9367
  }
9174
9368
  // Custom properties rather than inline colors on the dot/icon, so a
9175
9369
  // consumer's ::part(dot) or ::part(icon) rule still wins over the prop.
9176
- const dotColor = normalizeColorValue(this.dotColor, { semanticMap: SENTIMENT_DOT_COLORS });
9370
+ const dotColor = normalizeColorValue$1(this.dotColor, { semanticMap: SENTIMENT_DOT_COLORS });
9177
9371
  if (dotColor !== undefined) {
9178
9372
  styles['--pds-chip-dot-color'] = dotColor;
9179
9373
  }
9180
- const iconColor = normalizeColorValue(this.iconColor, { semanticMap: SENTIMENT_DOT_COLORS });
9374
+ const iconColor = normalizeColorValue$1(this.iconColor, { semanticMap: SENTIMENT_DOT_COLORS });
9181
9375
  if (iconColor !== undefined) {
9182
9376
  styles['--pds-chip-icon-color'] = iconColor;
9183
9377
  }
@@ -10674,7 +10868,14 @@ const PINE_ICON_NAME$1 = /^[a-z0-9-]+$/i;
10674
10868
  * only ever passed to `pds-icon` as `name`.
10675
10869
  */
10676
10870
  function groupIconOf(optgroup) {
10677
- 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');
10678
10879
  return icon !== null && PINE_ICON_NAME$1.test(icon) ? icon : null;
10679
10880
  }
10680
10881
  /** An option is disabled by its own `disabled` or its optgroup's, as in a native select. */
@@ -10692,8 +10893,12 @@ function isGroupDisabled(group) {
10692
10893
  * Groups the combobox's filtered items for the panel: each optgroup becomes one entry holding its
10693
10894
  * options, and ungrouped options stay where they are. Indexes count options in list order, the
10694
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.
10695
10900
  */
10696
- function buildPanelEntries(items) {
10901
+ function buildPanelEntries(items, position) {
10697
10902
  const entries = [];
10698
10903
  const groups = new Map();
10699
10904
  let index = 0;
@@ -10715,7 +10920,14 @@ function buildPanelEntries(items) {
10715
10920
  entries.push({ kind: 'option', option, index: index++ });
10716
10921
  }
10717
10922
  });
10718
- 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
+ });
10719
10931
  }
10720
10932
  /** The label of the optgroup an option sits in, or null for an ungrouped option. */
10721
10933
  function groupLabelOf(option) {
@@ -10923,7 +11135,7 @@ class FlyoutController {
10923
11135
  }
10924
11136
  }
10925
11137
 
10926
- 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)}`;
10927
11139
 
10928
11140
  /**
10929
11141
  * @slot option - Option elements for the combobox dropdown
@@ -11131,6 +11343,17 @@ class PdsCombobox {
11131
11343
  this.highlightedGroup = null;
11132
11344
  /** The keys, not the pointer, moved the highlight last; the focus ring shows only then. */
11133
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;
11134
11357
  /**
11135
11358
  * What's typed in the dropdown's own search field (`panelSearch`).
11136
11359
  */
@@ -11175,6 +11398,11 @@ class PdsCombobox {
11175
11398
  });
11176
11399
  /** The groups in the flyout panel's last render, so a row's index finds its optgroup. */
11177
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();
11178
11406
  /** Room for a flyout was checked for this open. */
11179
11407
  this.flyoutRoomChecked = false;
11180
11408
  /** The highlighted option sits in a flyout that hasn't rendered yet; focus it after the next render. */
@@ -11188,10 +11416,14 @@ class PdsCombobox {
11188
11416
  * the list shows every option until the user types (then normal filtering applies).
11189
11417
  */
11190
11418
  this.expandFilterListWhileOpen = false;
11419
+ this.onPanelPointer = (event) => {
11420
+ const canHover = event.pointerType !== 'touch';
11421
+ if (this.pointerCanHover !== canHover)
11422
+ this.pointerCanHover = canHover;
11423
+ };
11191
11424
  this.onDrillAnimationEnd = (event) => {
11192
- var _a;
11193
11425
  // Only the slide's own end: slotted consumer content can animate inside the list too.
11194
- if ((_a = event.animationName) === null || _a === void 0 ? void 0 : _a.startsWith('pds-combobox-drill'))
11426
+ if (event.animationName === 'pds-combobox-drill')
11195
11427
  this.drillDirection = null;
11196
11428
  };
11197
11429
  /** `<label for>` only works on the input trigger; for a div trigger a click on the label focuses it. */
@@ -11610,6 +11842,31 @@ class PdsCombobox {
11610
11842
  this.focusPanel(panelFocusEl);
11611
11843
  }
11612
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
+ }
11613
11870
  focusPanel(el) {
11614
11871
  var _a, _b;
11615
11872
  this.panelFocusEl = el;
@@ -11630,6 +11887,7 @@ class PdsCombobox {
11630
11887
  }
11631
11888
  openGroupChanged(next, previous) {
11632
11889
  this.handPanelFocusToList();
11890
+ this.revealedGroupLabel = null;
11633
11891
  // Only moves between the drill-in panel's views slide; search results don't.
11634
11892
  if (!this.isOpen || this.effectiveGroupDisplay !== 'drill-in' || !this.showsGroupedPanel)
11635
11893
  return;
@@ -11652,6 +11910,7 @@ class PdsCombobox {
11652
11910
  }
11653
11911
  isOpenChanged(isOpen) {
11654
11912
  if (!isOpen) {
11913
+ this.revealedGroupLabel = null;
11655
11914
  this.drillDirection = null;
11656
11915
  this.openGroup = null;
11657
11916
  this.highlightedGroup = null;
@@ -11930,20 +12189,25 @@ class PdsCombobox {
11930
12189
  // slotted markup would be, so grouping, filtering and labels work the same either way. Each
11931
12190
  // group is listed where it first appears with all of its options, even when the data
11932
12191
  // interleaves groups, so an option never renders under another group's label. Ungrouped
11933
- // 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.
11934
12194
  const asyncOptions = this.options || this.internalOptions;
11935
12195
  const groups = new Map();
11936
12196
  const ungrouped = [];
11937
12197
  const groupEntries = [];
11938
- asyncOptions.forEach(opt => {
12198
+ this.panelPositions = new WeakMap();
12199
+ asyncOptions.forEach((opt, position) => {
11939
12200
  const optionEl = document.createElement('option');
11940
12201
  optionEl.value = String(opt.id);
11941
12202
  optionEl.textContent = opt.text;
11942
12203
  if (opt.disabled === true)
11943
12204
  optionEl.setAttribute('disabled', '');
11944
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);
11945
12208
  if (typeof opt.group !== 'string' || opt.group === '') {
11946
12209
  ungrouped.push(optionEl);
12210
+ this.panelPositions.set(optionEl, position);
11947
12211
  return;
11948
12212
  }
11949
12213
  let optgroup = groups.get(opt.group);
@@ -11952,6 +12216,7 @@ class PdsCombobox {
11952
12216
  optgroup.label = opt.group;
11953
12217
  groups.set(opt.group, optgroup);
11954
12218
  groupEntries.push(optgroup);
12219
+ this.panelPositions.set(optgroup, position);
11955
12220
  }
11956
12221
  if (!optgroup.hasAttribute('data-icon') && typeof opt.groupIcon === 'string' && opt.groupIcon !== '') {
11957
12222
  optgroup.setAttribute('data-icon', opt.groupIcon);
@@ -12416,6 +12681,7 @@ class PdsCombobox {
12416
12681
  handleGroupedPanelKey(e) {
12417
12682
  if (!this.showsGroupedPanel)
12418
12683
  return false;
12684
+ const highlightShown = this.keyboardNavigating;
12419
12685
  this.keyboardNavigating = true;
12420
12686
  // In the input trigger, Left and Right still move the caret through typed text, and Space,
12421
12687
  // Home and End edit it, as they do in the panel's search field.
@@ -12425,23 +12691,32 @@ class PdsCombobox {
12425
12691
  if (e.key === ' ' || e.key === 'Home' || e.key === 'End')
12426
12692
  return false;
12427
12693
  }
12428
- const entries = buildPanelEntries(this.filteredItems);
12694
+ const entries = this.panelEntries();
12429
12695
  const drilledIn = this.effectiveGroupDisplay === 'drill-in' && this.openGroup !== null;
12430
12696
  const current = this.currentPanelItem();
12431
12697
  const column = panelColumn(entries, this.openGroup, current, drilledIn);
12432
12698
  if (column.length === 0)
12433
12699
  return false;
12434
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;
12435
12704
  const moveTo = (to) => {
12436
12705
  e.preventDefault();
12437
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;
12438
12713
  return true;
12439
12714
  };
12440
12715
  switch (e.key) {
12441
12716
  case 'ArrowDown':
12442
- return moveTo(position < 0 ? 0 : position + 1);
12717
+ return unseenRow ? reveal() : moveTo(position < 0 ? 0 : position + 1);
12443
12718
  case 'ArrowUp':
12444
- return moveTo(position < 0 ? column.length - 1 : position - 1);
12719
+ return unseenRow ? reveal() : moveTo(position < 0 ? column.length - 1 : position - 1);
12445
12720
  case 'Home':
12446
12721
  return moveTo(0);
12447
12722
  case 'End':
@@ -12574,7 +12849,7 @@ class PdsCombobox {
12574
12849
  // In the grouped panel, the first row with something to choose: a group stays closed until
12575
12850
  // it's opened.
12576
12851
  if (this.showsGroupedPanel) {
12577
- 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));
12578
12853
  this.highlightedIndex = (first === null || first === void 0 ? void 0 : first.kind) === 'option' ? first.index : -1;
12579
12854
  this.highlightedGroup = (first === null || first === void 0 ? void 0 : first.kind) === 'group' ? first.group.optgroup : null;
12580
12855
  return;
@@ -12639,8 +12914,13 @@ class PdsCombobox {
12639
12914
  }
12640
12915
  // Matched by id, not a selector: componentId is consumer text and may not be selector-safe.
12641
12916
  const id = this.groupDomId(groupRow);
12642
- (_a = Array.from(this.listboxEl.querySelectorAll('[role="treeitem"]'))
12643
- .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);
12644
12924
  this.updateAriaActiveDescendant();
12645
12925
  return;
12646
12926
  }
@@ -12691,7 +12971,7 @@ class PdsCombobox {
12691
12971
  this.flyout.reveal(flyout, currentOption);
12692
12972
  }
12693
12973
  else {
12694
- currentOption.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
12974
+ this.scrollIntoViewNearest(currentOption, true);
12695
12975
  }
12696
12976
  }
12697
12977
  // Always update aria-activedescendant on the trigger element
@@ -12788,6 +13068,8 @@ class PdsCombobox {
12788
13068
  this.highlightedIndex = -1;
12789
13069
  this.highlightedGroup = group;
12790
13070
  this.keyboardNavigating = false;
13071
+ // So revealing this row again later is announced again.
13072
+ this.revealedGroupLabel = null;
12791
13073
  }
12792
13074
  // Get the label of the selected option
12793
13075
  get selectedLabel() {
@@ -12943,7 +13225,8 @@ class PdsCombobox {
12943
13225
  'pds-combobox__listbox--grouped': this.groupDisplay !== 'inline',
12944
13226
  'pds-combobox__listbox--drill-in': this.drillDirection === 'in',
12945
13227
  'pds-combobox__listbox--drill-out': this.drillDirection === 'out',
12946
- }, 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",
12947
13230
  // Focusable but out of the tab order with panel search, so it can take focus when a
12948
13231
  // drilled-in group hides the field. Dropping it while focused would blur the list and close.
12949
13232
  tabIndex: withSearch ? -1 : undefined, "aria-activedescendant": listTakesFocus ? this.activeDescendantId : undefined, onKeyDown: withSearch ? this.onPanelTreeKeyDown : undefined, ref: el => {
@@ -13109,7 +13392,21 @@ class PdsCombobox {
13109
13392
  'pds-combobox__option--layout': isLayout,
13110
13393
  'pds-combobox__option--chip': isChip,
13111
13394
  'pds-combobox__option--disabled': isDisabled,
13112
- }, "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));
13113
13410
  }
13114
13411
  /**
13115
13412
  * `flyout`: one row per group, its options in a flyout beside it. `drill-in`: the same rows, and
@@ -13117,7 +13414,7 @@ class PdsCombobox {
13117
13414
  * it's a tree: the rows and ungrouped options are level 1, a group's options level 2.
13118
13415
  */
13119
13416
  renderGroupedPanel() {
13120
- const entries = buildPanelEntries(this.filteredItems);
13417
+ const entries = this.panelEntries();
13121
13418
  const setsize = entries.length;
13122
13419
  if (this.effectiveGroupDisplay === 'drill-in' && this.openGroup !== null) {
13123
13420
  const position = entries.findIndex(entry => entry.kind === 'group' && entry.group.optgroup === this.openGroup);
@@ -13148,22 +13445,26 @@ class PdsCombobox {
13148
13445
  return (hAsync("li", { key: "group-back", id: id, class: {
13149
13446
  'pds-combobox__group-back': true,
13150
13447
  'pds-combobox__group-back--disabled': disabled,
13151
- '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,
13152
13450
  'pds-combobox__group-back--keyboard': this.keyboardNavigating && this.highlightedGroupRow === group.optgroup,
13153
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))));
13154
13452
  }
13155
13453
  renderGroupRow(group, groupIndex, { posinset, setsize }) {
13156
13454
  const flyout = this.effectiveGroupDisplay === 'flyout';
13157
13455
  const isOpen = flyout && this.openGroup === group.optgroup;
13158
- 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;
13159
13460
  const disabled = isGroupDisabled(group);
13160
13461
  const id = this.groupDomId(group.optgroup);
13161
13462
  return (hAsync("li", { key: `group-${groupIndex}`, id: id, class: {
13162
13463
  'pds-combobox__group-row': true,
13163
13464
  'pds-combobox__group-row--open': isOpen,
13164
13465
  'pds-combobox__group-row--has-selection': hasSelection,
13165
- 'pds-combobox__group-row--highlighted': this.highlightedGroupRow === group.optgroup,
13166
- '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,
13167
13468
  'pds-combobox__group-row--disabled': disabled,
13168
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 && (
13169
13470
  // `name`, not `icon`: `icon` also loads URLs and data: SVGs, unsanitized.
@@ -13179,7 +13480,23 @@ class PdsCombobox {
13179
13480
  }
13180
13481
  // Helper method to render default text content
13181
13482
  renderDefaultContent() {
13182
- 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);
13183
13500
  }
13184
13501
  // Helper method to check if we should show layout content
13185
13502
  shouldShowLayoutContent() {
@@ -13297,6 +13614,7 @@ class PdsCombobox {
13297
13614
  ];
13298
13615
  }
13299
13616
  render() {
13617
+ var _a;
13300
13618
  const triggerClass = [
13301
13619
  'pds-combobox__button-trigger',
13302
13620
  `pds-combobox__button-trigger--${this.triggerVariant}`,
@@ -13304,13 +13622,18 @@ class PdsCombobox {
13304
13622
  ]
13305
13623
  .filter(Boolean)
13306
13624
  .join(' ');
13307
- 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 => {
13308
13626
  this.inputEl = el;
13309
13627
  this.triggerEl = el;
13310
13628
  }, class: {
13311
13629
  'pds-combobox__input': true,
13312
13630
  'pds-combobox__input--invalid': this.isInvalid(),
13313
- }, 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
+ ])));
13314
13637
  }
13315
13638
  static get formAssociated() { return true; }
13316
13639
  get el() { return getElement(this); }
@@ -13393,6 +13716,8 @@ class PdsCombobox {
13393
13716
  "drillDirection": [32],
13394
13717
  "highlightedGroup": [32],
13395
13718
  "keyboardNavigating": [32],
13719
+ "revealedGroupLabel": [32],
13720
+ "pointerCanHover": [32],
13396
13721
  "panelQuery": [32],
13397
13722
  "flyoutFallback": [32],
13398
13723
  "selectedOption": [32],
@@ -13440,7 +13765,7 @@ class PdsContainer {
13440
13765
  hostStyle['--pine-container-max-width'] = customSize;
13441
13766
  if (!this.centered)
13442
13767
  hostStyle['margin-inline'] = '0';
13443
- 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' }))));
13444
13769
  }
13445
13770
  static get style() { return pdsContainerCss(); }
13446
13771
  static get cmpMeta() { return {
@@ -13560,7 +13885,7 @@ class PdsCopytext {
13560
13885
  render() {
13561
13886
  const hostClass = this.classNames();
13562
13887
  this.hostKeeper.record(hostClass);
13563
- 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" }))));
13564
13889
  }
13565
13890
  get el() { return getElement(this); }
13566
13891
  static get watchers() { return {
@@ -14254,7 +14579,7 @@ function clockFor(locale) {
14254
14579
  return { hour12, am: (_a = period(1)) !== null && _a !== void 0 ? _a : 'AM', pm: (_b = period(13)) !== null && _b !== void 0 ? _b : 'PM' };
14255
14580
  }
14256
14581
 
14257
- const pdsDatepickerCss = () => `:host{--pds-datepicker-day-size:var(--pine-dimension-500);--pds-datepicker-presets-width:200px;display:inline-block}:host([full-width]){display:block}pds-input{display:block}:host(.pds-datepicker--time) pds-input{min-width:220px}:host(.pds-datepicker--range) pds-input{min-width:260px}:host(.pds-datepicker--range.pds-datepicker--time) pds-input{min-width:min(380px, 100%)}.pds-datepicker__trigger,.pds-datepicker__clear{-ms-flex-align:center;align-items:center;background:transparent;border:0;border-radius:var(--pine-border-radius-sm);color:var(--pine-color-text-secondary);cursor:pointer;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;padding:var(--pine-dimension-2xs)}.pds-datepicker__trigger:hover:not(:disabled),.pds-datepicker__clear:hover:not(:disabled){background:var(--pine-color-background-muted);color:var(--pine-color-text-strong)}.pds-datepicker__trigger:focus-visible,.pds-datepicker__clear:focus-visible{outline:var(--pine-outline-focus)}.pds-datepicker__trigger:disabled,.pds-datepicker__clear:disabled{color:var(--pine-color-text-disabled);cursor:not-allowed}.pds-datepicker__clear{-webkit-margin-end:var(--pine-dimension-2xs);margin-inline-end:var(--pine-dimension-2xs)}.pds-datepicker__nav{-ms-flex-align:center;align-items:center;background: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(--pine-color-text-secondary);cursor:pointer;display:-ms-inline-flexbox;display:inline-flex;height:var(--pine-dimension-400);-ms-flex-pack:center;justify-content:center;padding:0;width:var(--pine-dimension-400)}.pds-datepicker__nav:hover:not(:disabled){background:var(--pine-color-secondary-hover);border-color:var(--pine-color-border-hover)}.pds-datepicker__nav:focus-visible{outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-datepicker__nav:disabled{border-color:var(--pine-color-border-disabled);color:var(--pine-color-text-secondary-disabled);cursor:not-allowed}.pds-datepicker__nav:dir(rtl) pds-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.pds-datepicker__dialog:focus{outline:none}.pds-datepicker__dialog{background:var(--pine-color-background-overlay);border-radius:var(--pine-dimension-150);-webkit-box-shadow:var(--pine-box-shadow-200);box-shadow:var(--pine-box-shadow-200);-webkit-box-sizing:border-box;box-sizing:border-box;left:0;max-height:calc(100vh - var(--pine-dimension-sm));max-height:calc(100dvh - var(--pine-dimension-sm));max-width:calc(100vw - var(--pine-dimension-sm));overflow:auto;-ms-scroll-chaining:none;overscroll-behavior:contain;padding:var(--pine-dimension-sm);pointer-events:auto;position:fixed;top:0;visibility:hidden;z-index:var(--pine-z-index-priority)}:host-context([data-theme=dark]) .pds-datepicker__dialog{border:var(--pine-border)}.pds-datepicker__header{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-webkit-margin-after:var(--pine-dimension-sm);margin-block-end:var(--pine-dimension-sm)}.pds-datepicker__nav-spacer{-ms-flex:none;flex:none;width:var(--pine-dimension-400)}.pds-datepicker__heading{color:var(--pine-color-text);font:var(--pine-typography-heading-5);font-weight:var(--pine-font-weight-semi-bold)}.pds-datepicker__grid{border-collapse:collapse;border-spacing:0}.pds-datepicker__weekday{color:var(--pine-color-text-muted);font:var(--pine-typography-body-sm);height:var(--pds-datepicker-day-size);padding:0;text-align:center;width:var(--pds-datepicker-day-size)}.pds-datepicker__day{border-radius:var(--pine-border-radius-full);color:var(--pine-color-text-secondary);cursor:pointer;font:var(--pine-typography-body);height:var(--pds-datepicker-day-size);padding:0;position:relative;text-align:center;-webkit-transition:background var(--pine-motion-duration-fast) var(--pine-motion-easing-in);transition:background var(--pine-motion-duration-fast) var(--pine-motion-easing-in);width:var(--pds-datepicker-day-size)}.pds-datepicker__day:hover{background:var(--pine-color-background-muted)}.pds-datepicker__day:focus-visible{outline:var(--pine-outline-focus);outline-offset:calc(var(--pine-border-width-thick) * -1)}.pds-datepicker__day--empty{cursor:default;pointer-events:none}.pds-datepicker__day--today::after{background:var(--pine-color-primary);border-radius:var(--pine-border-radius-full);content:"";height:var(--pine-dimension-050);inset-block-end:var(--pine-dimension-050);inset-inline-start:50%;position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:var(--pine-dimension-050)}.pds-datepicker__day--selected,.pds-datepicker__day--selected:hover{background:var(--pine-color-primary);border-radius:var(--pine-border-radius-full);color:var(--pine-color-text-primary)}.pds-datepicker__day--selected:focus-visible{outline-offset:var(--pine-border-width)}.pds-datepicker__day--range-start{border-end-end-radius:0;border-start-end-radius:0}.pds-datepicker__day--range-end{border-end-start-radius:0;border-start-start-radius:0}.pds-datepicker__day--range-start.pds-datepicker__day--row-end{border-end-end-radius:var(--pine-border-radius-full);border-start-end-radius:var(--pine-border-radius-full)}.pds-datepicker__day--range-end.pds-datepicker__day--row-start{border-end-start-radius:var(--pine-border-radius-full);border-start-start-radius:var(--pine-border-radius-full)}.pds-datepicker__day--selected.pds-datepicker__day--today::after{background:var(--pine-color-text-primary)}.pds-datepicker__day--in-range,.pds-datepicker__day--in-range:hover{background:var(--pine-color-background-muted);border-radius:0;color:var(--pine-color-text-secondary)}.pds-datepicker__day--row-start{border-end-start-radius:var(--pine-border-radius-full);border-start-start-radius:var(--pine-border-radius-full)}.pds-datepicker__day--row-end{border-end-end-radius:var(--pine-border-radius-full);border-start-end-radius:var(--pine-border-radius-full)}.pds-datepicker__day--disabled,.pds-datepicker__day--disabled:hover{background:transparent;color:var(--pine-color-text-disabled);cursor:not-allowed;text-decoration:line-through}.pds-datepicker__day--in-range:hover{background:var(--pine-color-background-inset)}.pds-datepicker__dialog--range{display:-ms-flexbox;display:flex;padding:0}.pds-datepicker__panel{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0}.pds-datepicker__dialog--range .pds-datepicker__panel{padding:var(--pine-dimension-sm)}.pds-datepicker__months{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:var(--pine-dimension-lg)}.pds-datepicker__presets-column{-webkit-border-end:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);border-inline-end:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);-ms-flex:none;flex:none;position:relative;width:var(--pds-datepicker-presets-width)}.pds-datepicker__presets{-webkit-box-sizing:border-box;box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--pine-dimension-2xs);inset:0;list-style:none;margin:0;overflow-y:auto;padding:var(--pine-dimension-150);position:absolute}.pds-datepicker__preset{-ms-flex-align:center;align-items:center;background:transparent;border:0;border-radius:var(--pine-border-radius-md);color:var(--pine-color-text-secondary);cursor:pointer;display:-ms-flexbox;display:flex;font:var(--pine-typography-body);gap:var(--pine-dimension-xs);-ms-flex-pack:justify;justify-content:space-between;padding:var(--pine-dimension-xs) var(--pine-dimension-sm);text-align:start;-webkit-transition:background var(--pine-motion-duration-fast) var(--pine-motion-easing-in);transition:background var(--pine-motion-duration-fast) var(--pine-motion-easing-in);width:100%}.pds-datepicker__preset:hover:not(:disabled){background:var(--pine-color-background-muted)}.pds-datepicker__preset:focus-visible{outline:var(--pine-outline-focus)}.pds-datepicker__preset:disabled{color:var(--pine-color-text-disabled);cursor:not-allowed}.pds-datepicker__preset--selected{background:var(--pine-color-background-muted);color:var(--pine-color-text-active)}.pds-datepicker__footer{-ms-flex-align:center;align-items:center;background:var(--pine-color-background-overlay);-webkit-border-before:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);border-block-start:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:var(--pine-dimension-xs);inset-block-end:calc(var(--pine-dimension-sm) * -1);-ms-flex-pack:end;justify-content:flex-end;margin-block:var(--pine-dimension-sm) calc(var(--pine-dimension-sm) * -1);padding-block:var(--pine-dimension-sm);position:-webkit-sticky;position:sticky}.pds-datepicker__selection{color:var(--pine-color-text-muted);font:var(--pine-typography-body-sm-medium);-webkit-margin-end:auto;margin-inline-end:auto}.pds-datepicker__dropdowns{display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}.pds-datepicker__select-wrap{-ms-flex-align:center;align-items:center;display:-ms-inline-flexbox;display:inline-flex;position:relative}.pds-datepicker__heading-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;border-radius:var(--pine-border-radius-md);color:var(--pine-color-text);cursor:pointer;field-sizing:content;font:var(--pine-typography-heading-5);font-weight:var(--pine-font-weight-semi-bold);padding-block:var(--pine-dimension-2xs);padding-inline:var(--pine-dimension-xs) calc(var(--pine-dimension-xs) + var(--pine-dimension-sm))}.pds-datepicker__heading-select:hover{background:var(--pine-color-background-muted)}.pds-datepicker__heading-select:focus-visible{outline:var(--pine-outline-focus)}.pds-datepicker__select-caret{color:var(--pine-color-text-secondary);inset-inline-end:var(--pine-dimension-xs);pointer-events:none;position:absolute}.pds-datepicker__time{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs);-ms-flex-pack:justify;justify-content:space-between;-webkit-margin-before:var(--pine-dimension-sm);margin-block-start:var(--pine-dimension-sm);padding-inline:var(--pine-dimension-xs)}.pds-datepicker__time-label{color:var(--pine-color-text-label);font:var(--pine-typography-body-medium)}.pds-datepicker__time-field{-ms-flex-align:center;align-items:center;background:var(--pine-color-background-container);border:var(--pine-border);border-radius:var(--pine-border-radius-md);display:-ms-inline-flexbox;display:inline-flex;min-height:var(--pine-dimension-400);padding-inline:var(--pine-dimension-2xs)}.pds-datepicker__time-field:hover{border-color:var(--pine-color-border-hover)}.pds-datepicker__time-field:focus-within{outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-datepicker__time-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;border-radius:var(--pine-border-radius-sm);color:var(--pine-color-text-strong);cursor:pointer;font:var(--pine-typography-body);font-variant-numeric:tabular-nums;padding:var(--pine-dimension-2xs);text-align:center}.pds-datepicker__time-select:focus-visible{background:var(--pine-color-background-muted);outline:none}.pds-datepicker__time-select--period{-webkit-margin-start:var(--pine-dimension-2xs);margin-inline-start:var(--pine-dimension-2xs)}.pds-datepicker__time-separator{color:var(--pine-color-text-secondary)}:host-context([data-theme=dark]) select{color-scheme:dark}.pds-datepicker__action{background:var(--pine-color-secondary);border:var(--pine-border);border-radius:var(--pine-border-radius-full);color:var(--pine-color-text-secondary);cursor:pointer;font:var(--pine-typography-body-medium);padding:calc(var(--pine-dimension-xs) - var(--pine-border-width)) var(--pine-dimension-sm)}.pds-datepicker__action:hover:not(:disabled){background:var(--pine-color-secondary-hover);border-color:var(--pine-color-border-hover)}.pds-datepicker__action:focus-visible{outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-datepicker__action:disabled{background:var(--pine-color-secondary-disabled);border-color:var(--pine-color-border-disabled);color:var(--pine-color-text-secondary-disabled);cursor:not-allowed}.pds-datepicker__action--primary{background:var(--pine-color-primary);border-color:var(--pine-color-primary);color:var(--pine-color-text-primary)}.pds-datepicker__action--primary:hover:not(:disabled){background:var(--pine-color-primary-hover);border-color:var(--pine-color-primary-hover)}.pds-datepicker__action--primary:disabled{background:var(--pine-color-primary-disabled);border-color:var(--pine-color-primary-disabled);color:var(--pine-color-text-primary-disabled)}@media (max-width: 600px){.pds-datepicker__dialog--range{-ms-flex-direction:column;flex-direction:column}.pds-datepicker__presets-column{-webkit-border-after:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);border-block-end:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);-webkit-border-end:0;border-inline-end:0;width:auto}.pds-datepicker__presets{-ms-flex-direction:row;flex-direction:row;overflow-x:auto;position:static}.pds-datepicker__preset{white-space:nowrap}.pds-datepicker__selection{-ms-flex-preferred-size:100%;flex-basis:100%}}.pds-datepicker__trigger,.pds-datepicker__clear,.pds-datepicker__nav,.pds-datepicker__weekday,.pds-datepicker__day,.pds-datepicker__preset,.pds-datepicker__action{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (forced-colors: active){.pds-datepicker__day--selected,.pds-datepicker__day--selected:hover{background:Highlight;color:HighlightText;forced-color-adjust:none}.pds-datepicker__day--in-range,.pds-datepicker__day--in-range:hover{border-block:var(--pine-border-width-thin) solid Highlight}.pds-datepicker__day--today::after{background:CanvasText;forced-color-adjust:none}.pds-datepicker__day--selected.pds-datepicker__day--today::after{background:HighlightText}.pds-datepicker__day--disabled{color:GrayText}}.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}`;
14582
+ const pdsDatepickerCss = () => `:host{--pds-datepicker-day-size:var(--pine-dimension-500);--pds-datepicker-presets-width:200px;display:inline-block}:host([full-width]){display:block}pds-input{display:block}:host(.pds-datepicker--time) pds-input{min-width:220px}:host(.pds-datepicker--range) pds-input{min-width:260px}:host(.pds-datepicker--range.pds-datepicker--time) pds-input{min-width:min(380px, 100%)}.pds-datepicker__trigger,.pds-datepicker__clear{-ms-flex-align:center;align-items:center;background:transparent;border:0;border-radius:var(--pine-border-radius-sm);color:var(--pine-color-text-secondary);cursor:pointer;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;padding:var(--pine-dimension-2xs)}.pds-datepicker__trigger:hover:not(:disabled),.pds-datepicker__clear:hover:not(:disabled){background:var(--pine-color-background-muted);color:var(--pine-color-text-strong)}.pds-datepicker__trigger:focus-visible,.pds-datepicker__clear:focus-visible{outline:var(--pine-outline-focus)}.pds-datepicker__trigger:disabled,.pds-datepicker__clear:disabled{color:var(--pine-color-text-disabled);cursor:not-allowed}.pds-datepicker__clear{-webkit-margin-end:var(--pine-dimension-2xs);margin-inline-end:var(--pine-dimension-2xs)}.pds-datepicker__nav{-ms-flex-align:center;align-items:center;background: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(--pine-color-text-secondary);cursor:pointer;display:-ms-inline-flexbox;display:inline-flex;height:var(--pine-dimension-400);-ms-flex-pack:center;justify-content:center;padding:0;width:var(--pine-dimension-400)}.pds-datepicker__nav:hover:not(:disabled){background:var(--pine-color-secondary-hover);border-color:var(--pine-color-border-hover)}.pds-datepicker__nav:focus-visible{outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-datepicker__nav:disabled{border-color:var(--pine-color-border-disabled);color:var(--pine-color-text-secondary-disabled);cursor:not-allowed}.pds-datepicker__nav:dir(rtl) pds-icon{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.pds-datepicker__dialog:focus{outline:none}.pds-datepicker__dialog{background:var(--pine-color-background-overlay);border-radius:var(--pine-dimension-150);-webkit-box-shadow:var(--pine-box-shadow-200);box-shadow:var(--pine-box-shadow-200);-webkit-box-sizing:border-box;box-sizing:border-box;left:0;max-height:calc(100vh - var(--pine-dimension-sm));max-height:calc(100dvh - var(--pine-dimension-sm));max-width:calc(100vw - var(--pine-dimension-sm));overflow:auto;-ms-scroll-chaining:none;overscroll-behavior:contain;padding:var(--pine-dimension-sm);pointer-events:auto;position:fixed;top:0;visibility:hidden;z-index:var(--pine-z-index-priority)}:host-context([data-theme=dark]) .pds-datepicker__dialog{border:var(--pine-border)}.pds-datepicker__header{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-webkit-margin-after:var(--pine-dimension-sm);margin-block-end:var(--pine-dimension-sm)}.pds-datepicker__nav-spacer{-ms-flex:none;flex:none;width:var(--pine-dimension-400)}.pds-datepicker__heading{color:var(--pine-color-text);font:var(--pine-typography-heading-5);font-weight:var(--pine-font-weight-semi-bold)}.pds-datepicker__grid{border-collapse:collapse;border-spacing:0}.pds-datepicker__weekday{color:var(--pine-color-text-muted);font:var(--pine-typography-body-sm);height:var(--pds-datepicker-day-size);padding:0;text-align:center;width:var(--pds-datepicker-day-size)}.pds-datepicker__day{border-radius:var(--pine-border-radius-full);color:var(--pine-color-text-secondary);cursor:pointer;font:var(--pine-typography-body);height:var(--pds-datepicker-day-size);padding:0;position:relative;text-align:center;-webkit-transition:background var(--pine-motion-duration-fast) var(--pine-motion-easing-in);transition:background var(--pine-motion-duration-fast) var(--pine-motion-easing-in);width:var(--pds-datepicker-day-size)}.pds-datepicker__day:hover{background:var(--pine-color-background-muted)}.pds-datepicker__day:focus-visible{outline:var(--pine-outline-focus);outline-offset:calc(var(--pine-border-width-thick) * -1)}.pds-datepicker__day--empty{cursor:default;pointer-events:none}.pds-datepicker__day--today::after{background:var(--pine-color-primary);border-radius:var(--pine-border-radius-full);content:"";height:var(--pine-dimension-050);inset-block-end:var(--pine-dimension-050);inset-inline-start:50%;position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:var(--pine-dimension-050)}.pds-datepicker__day--selected,.pds-datepicker__day--selected:hover{background:var(--pine-color-primary);color:var(--pine-color-text-primary)}.pds-datepicker__day--selected:focus-visible{outline-offset:var(--pine-border-width)}.pds-datepicker__day--range-start{border-end-end-radius:0;border-start-end-radius:0}.pds-datepicker__day--range-end{border-end-start-radius:0;border-start-start-radius:0}.pds-datepicker__day--range-start.pds-datepicker__day--row-end{border-end-end-radius:var(--pine-border-radius-full);border-start-end-radius:var(--pine-border-radius-full)}.pds-datepicker__day--range-end.pds-datepicker__day--row-start{border-end-start-radius:var(--pine-border-radius-full);border-start-start-radius:var(--pine-border-radius-full)}.pds-datepicker__day--selected.pds-datepicker__day--today::after{background:var(--pine-color-text-primary)}.pds-datepicker__day--in-range{border-radius:0}.pds-datepicker__day--in-range,.pds-datepicker__day--in-range:hover{background:var(--pine-color-background-muted);color:var(--pine-color-text-secondary)}.pds-datepicker__day--row-start{border-end-start-radius:var(--pine-border-radius-full);border-start-start-radius:var(--pine-border-radius-full)}.pds-datepicker__day--row-end{border-end-end-radius:var(--pine-border-radius-full);border-start-end-radius:var(--pine-border-radius-full)}.pds-datepicker__day--disabled,.pds-datepicker__day--disabled:hover{background:transparent;color:var(--pine-color-text-disabled);cursor:not-allowed;text-decoration:line-through}.pds-datepicker__day--in-range:hover{background:var(--pine-color-background-inset)}.pds-datepicker__dialog--range{display:-ms-flexbox;display:flex;padding:0}.pds-datepicker__panel{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0}.pds-datepicker__dialog--range .pds-datepicker__panel{padding:var(--pine-dimension-sm)}.pds-datepicker__months{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:var(--pine-dimension-lg)}.pds-datepicker__presets-column{-webkit-border-end:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);border-inline-end:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);-ms-flex:none;flex:none;position:relative;width:var(--pds-datepicker-presets-width)}.pds-datepicker__presets{-webkit-box-sizing:border-box;box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:var(--pine-dimension-2xs);inset:0;list-style:none;margin:0;overflow-y:auto;padding:var(--pine-dimension-150);position:absolute}.pds-datepicker__preset{-ms-flex-align:center;align-items:center;background:transparent;border:0;border-radius:var(--pine-border-radius-md);color:var(--pine-color-text-secondary);cursor:pointer;display:-ms-flexbox;display:flex;font:var(--pine-typography-body);gap:var(--pine-dimension-xs);-ms-flex-pack:justify;justify-content:space-between;padding:var(--pine-dimension-xs) var(--pine-dimension-sm);text-align:start;-webkit-transition:background var(--pine-motion-duration-fast) var(--pine-motion-easing-in);transition:background var(--pine-motion-duration-fast) var(--pine-motion-easing-in);width:100%}.pds-datepicker__preset:hover:not(:disabled){background:var(--pine-color-background-muted)}.pds-datepicker__preset:focus-visible{outline:var(--pine-outline-focus)}.pds-datepicker__preset:disabled{color:var(--pine-color-text-disabled);cursor:not-allowed}.pds-datepicker__preset--selected{background:var(--pine-color-background-muted);color:var(--pine-color-text-active)}.pds-datepicker__footer{-ms-flex-align:center;align-items:center;background:var(--pine-color-background-overlay);-webkit-border-before:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);border-block-start:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:var(--pine-dimension-xs);inset-block-end:calc(var(--pine-dimension-sm) * -1);-ms-flex-pack:end;justify-content:flex-end;margin-block:var(--pine-dimension-sm) calc(var(--pine-dimension-sm) * -1);padding-block:var(--pine-dimension-sm);position:-webkit-sticky;position:sticky}.pds-datepicker__selection{color:var(--pine-color-text-muted);font:var(--pine-typography-body-sm-medium);-webkit-margin-end:auto;margin-inline-end:auto}.pds-datepicker__dropdowns{display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}.pds-datepicker__select-wrap{-ms-flex-align:center;align-items:center;display:-ms-inline-flexbox;display:inline-flex;position:relative}.pds-datepicker__heading-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;border-radius:var(--pine-border-radius-md);color:var(--pine-color-text);cursor:pointer;field-sizing:content;font:var(--pine-typography-heading-5);font-weight:var(--pine-font-weight-semi-bold);padding-block:var(--pine-dimension-2xs);padding-inline:var(--pine-dimension-xs) calc(var(--pine-dimension-xs) + var(--pine-dimension-sm))}.pds-datepicker__heading-select:hover{background:var(--pine-color-background-muted)}.pds-datepicker__heading-select:focus-visible{outline:var(--pine-outline-focus)}.pds-datepicker__select-caret{color:var(--pine-color-text-secondary);inset-inline-end:var(--pine-dimension-xs);pointer-events:none;position:absolute}.pds-datepicker__time{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs);-ms-flex-pack:justify;justify-content:space-between;-webkit-margin-before:var(--pine-dimension-sm);margin-block-start:var(--pine-dimension-sm);padding-inline:var(--pine-dimension-xs)}.pds-datepicker__time-label{color:var(--pine-color-text-label);font:var(--pine-typography-body-medium)}.pds-datepicker__time-field{-ms-flex-align:center;align-items:center;background:var(--pine-color-background-container);border:var(--pine-border);border-radius:var(--pine-border-radius-md);display:-ms-inline-flexbox;display:inline-flex;min-height:var(--pine-dimension-400);padding-inline:var(--pine-dimension-2xs)}.pds-datepicker__time-field:hover{border-color:var(--pine-color-border-hover)}.pds-datepicker__time-field:focus-within{outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-datepicker__time-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;border-radius:var(--pine-border-radius-sm);color:var(--pine-color-text-strong);cursor:pointer;font:var(--pine-typography-body);font-variant-numeric:tabular-nums;padding:var(--pine-dimension-2xs);text-align:center}.pds-datepicker__time-select:focus-visible{background:var(--pine-color-background-muted);outline:none}.pds-datepicker__time-select--period{-webkit-margin-start:var(--pine-dimension-2xs);margin-inline-start:var(--pine-dimension-2xs)}.pds-datepicker__time-separator{color:var(--pine-color-text-secondary)}:host-context([data-theme=dark]) select{color-scheme:dark}.pds-datepicker__action{background:var(--pine-color-secondary);border:var(--pine-border);border-radius:var(--pine-border-radius-full);color:var(--pine-color-text-secondary);cursor:pointer;font:var(--pine-typography-body-medium);padding:calc(var(--pine-dimension-xs) - var(--pine-border-width)) var(--pine-dimension-sm)}.pds-datepicker__action:hover:not(:disabled){background:var(--pine-color-secondary-hover);border-color:var(--pine-color-border-hover)}.pds-datepicker__action:focus-visible{outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-datepicker__action:disabled{background:var(--pine-color-secondary-disabled);border-color:var(--pine-color-border-disabled);color:var(--pine-color-text-secondary-disabled);cursor:not-allowed}.pds-datepicker__action--primary{background:var(--pine-color-primary);border-color:var(--pine-color-primary);color:var(--pine-color-text-primary)}.pds-datepicker__action--primary:hover:not(:disabled){background:var(--pine-color-primary-hover);border-color:var(--pine-color-primary-hover)}.pds-datepicker__action--primary:disabled{background:var(--pine-color-primary-disabled);border-color:var(--pine-color-primary-disabled);color:var(--pine-color-text-primary-disabled)}@media (max-width: 600px){.pds-datepicker__dialog--range{-ms-flex-direction:column;flex-direction:column}.pds-datepicker__presets-column{-webkit-border-after:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);border-block-end:var(--pine-border-width-thin) solid var(--pine-color-border-subtle);-webkit-border-end:0;border-inline-end:0;width:auto}.pds-datepicker__presets{-ms-flex-direction:row;flex-direction:row;overflow-x:auto;position:static}.pds-datepicker__preset{white-space:nowrap}.pds-datepicker__selection{-ms-flex-preferred-size:100%;flex-basis:100%}}.pds-datepicker__trigger,.pds-datepicker__clear,.pds-datepicker__nav,.pds-datepicker__weekday,.pds-datepicker__day,.pds-datepicker__preset,.pds-datepicker__action{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media (forced-colors: active){.pds-datepicker__day--selected,.pds-datepicker__day--selected:hover{background:Highlight;color:HighlightText;forced-color-adjust:none}.pds-datepicker__day--in-range,.pds-datepicker__day--in-range:hover{border-block:var(--pine-border-width-thin) solid Highlight}.pds-datepicker__day--today::after{background:CanvasText;forced-color-adjust:none}.pds-datepicker__day--selected.pds-datepicker__day--today::after{background:HighlightText}.pds-datepicker__day--disabled{color:GrayText}}.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}`;
14258
14583
 
14259
14584
  const FULL_DATE = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
14260
14585
  const DEFAULT_START_TIME = '00:00';
@@ -15562,14 +15887,14 @@ class PdsDatepicker {
15562
15887
  }
15563
15888
  render() {
15564
15889
  const locale = this.resolvedLocale;
15565
- 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", {
15566
15891
  // Keyed, as is the calendar button: when Clear appears after a pick, the focused
15567
15892
  // calendar button must stay that button rather than be reused as Clear.
15568
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,
15569
15894
  // Out of the tab order, as a native search field's clear button is: Tab from a field
15570
15895
  // just emptied would land on it as the change removes it, dropping focus to the page.
15571
15896
  tabindex: "-1", onMouseDown: this.onClearMouseDown, onClick: this.onClearClick
15572
- }, 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)));
15573
15898
  }
15574
15899
  static get formAssociated() { return true; }
15575
15900
  get el() { return getElement(this); }
@@ -15711,7 +16036,7 @@ class PdsDivider {
15711
16036
  return classNames.join(' ');
15712
16037
  }
15713
16038
  render() {
15714
- 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() }))));
15715
16040
  }
15716
16041
  static get style() { return pdsDividerCss(); }
15717
16042
  static get cmpMeta() { return {
@@ -15893,11 +16218,11 @@ class PdsDrawer {
15893
16218
  this.open = false;
15894
16219
  }
15895
16220
  render() {
15896
- return (hAsync(Host, { key: '166bc90b45d29f64f11b6840e7c6ae798bf14261', class: {
16221
+ return (hAsync(Host, { key: 'ae7e67ed196ef95a39c2b729e859712ce5c41144', class: {
15897
16222
  'pds-drawer': true,
15898
16223
  [`pds-drawer--${this.side}`]: true,
15899
16224
  [`pds-drawer--${this.size}`]: true,
15900
- } }, 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' }))));
15901
16226
  }
15902
16227
  get el() { return getElement(this); }
15903
16228
  static get style() { return pdsDrawerCss(); }
@@ -15937,7 +16262,7 @@ class PdsDrawerContent {
15937
16262
  unwrapReconnectedContent(this.el.querySelector('.pds-drawer-content'), '.pds-drawer-content');
15938
16263
  }
15939
16264
  render() {
15940
- 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' })));
15941
16266
  }
15942
16267
  get el() { return getElement(this); }
15943
16268
  static get style() { return pdsDrawerContentCss(); }
@@ -15965,7 +16290,7 @@ class PdsDrawerFooter {
15965
16290
  unwrapReconnectedContent(this.el.querySelector('.pds-drawer__footer'), '.pds-drawer__footer');
15966
16291
  }
15967
16292
  render() {
15968
- 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' })));
15969
16294
  }
15970
16295
  get el() { return getElement(this); }
15971
16296
  static get style() { return pdsDrawerFooterCss(); }
@@ -15993,7 +16318,7 @@ class PdsDrawerHeader {
15993
16318
  unwrapReconnectedContent(this.el.querySelector('.pds-drawer__header'), '.pds-drawer__header');
15994
16319
  }
15995
16320
  render() {
15996
- 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' })));
15997
16322
  }
15998
16323
  get el() { return getElement(this); }
15999
16324
  static get style() { return pdsDrawerHeaderCss(); }
@@ -16007,9 +16332,10 @@ class PdsDrawerHeader {
16007
16332
  }; }
16008
16333
  }
16009
16334
 
16010
- 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}`;
16011
16336
 
16012
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.
16013
16339
  * @part menu-panel - Exposes the dropdown menu container for styling.
16014
16340
  */
16015
16341
  class PdsDropdownMenu {
@@ -16020,6 +16346,7 @@ class PdsDropdownMenu {
16020
16346
  this.cleanupAutoUpdate = null;
16021
16347
  this.triggerObserver = null;
16022
16348
  this.currentFocusIndex = -1;
16349
+ this.hasHeader = false;
16023
16350
  /**
16024
16351
  * The placement of the dropdown panel relative to the trigger.
16025
16352
  */
@@ -16038,8 +16365,11 @@ class PdsDropdownMenu {
16038
16365
  // Writes the trigger's ARIA from the menu's state, so the observer's own callback doesn't loop.
16039
16366
  this.syncTriggerAria = () => {
16040
16367
  if (!this.triggerEl)
16041
- return;
16042
- 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;
16043
16373
  };
16044
16374
  this.handleSlotChange = (event) => {
16045
16375
  this.slotEl = event.target;
@@ -16118,6 +16448,9 @@ class PdsDropdownMenu {
16118
16448
  this.toggleDropdown();
16119
16449
  };
16120
16450
  }
16451
+ componentWillLoad() {
16452
+ this.hasHeader = Array.from(this.host.children).some(el => el.getAttribute('slot') === 'header');
16453
+ }
16121
16454
  componentDidRender() {
16122
16455
  var _a;
16123
16456
  this.panelEl = (_a = this.host.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('pds-box');
@@ -16146,7 +16479,8 @@ class PdsDropdownMenu {
16146
16479
  this.triggerObserver = null;
16147
16480
  if (!this.triggerEl || typeof MutationObserver === 'undefined')
16148
16481
  return;
16149
- 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));
16150
16484
  this.triggerObserver.observe(this.triggerEl, {
16151
16485
  attributes: true,
16152
16486
  attributeFilter: ['aria-haspopup', 'aria-expanded'],
@@ -16352,7 +16686,7 @@ class PdsDropdownMenu {
16352
16686
  }
16353
16687
  }
16354
16688
  render() {
16355
- 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 })))));
16356
16690
  }
16357
16691
  get host() { return getElement(this); }
16358
16692
  static get style() { return pdsDropdownMenuCss(); }
@@ -16362,7 +16696,8 @@ class PdsDropdownMenu {
16362
16696
  "$members$": {
16363
16697
  "componentId": [1, "component-id"],
16364
16698
  "placement": [1],
16365
- "currentFocusIndex": [32]
16699
+ "currentFocusIndex": [32],
16700
+ "hasHeader": [32]
16366
16701
  },
16367
16702
  "$listeners$": [[8, "keydown", "handleKeyDown"], [8, "click", "handleWindowClick"]],
16368
16703
  "$lazyBundleId$": "-",
@@ -16447,7 +16782,7 @@ class PdsDropdownMenuItem {
16447
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)));
16448
16783
  }
16449
16784
  render() {
16450
- 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()));
16451
16786
  }
16452
16787
  get host() { return getElement(this); }
16453
16788
  static get style() { return pdsDropdownMenuItemCss(); }
@@ -16483,7 +16818,7 @@ class PdsDropdownMenuSeparator {
16483
16818
  this.disabled = false;
16484
16819
  }
16485
16820
  render() {
16486
- 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' })));
16487
16822
  }
16488
16823
  static get style() { return pdsDropdownMenuSeparatorCss(); }
16489
16824
  static get cmpMeta() { return {
@@ -17063,7 +17398,7 @@ class PdsFilter {
17063
17398
  return null;
17064
17399
  }
17065
17400
  render() {
17066
- 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' })))));
17067
17402
  }
17068
17403
  get el() { return getElement(this); }
17069
17404
  static get style() { return pdsFilterCss(); }
@@ -17095,7 +17430,7 @@ class PdsFilters {
17095
17430
  registerInstance(this, hostRef);
17096
17431
  }
17097
17432
  render() {
17098
- 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' }))));
17099
17434
  }
17100
17435
  static get style() { return pdsFiltersCss(); }
17101
17436
  static get cmpMeta() { return {
@@ -17224,6 +17559,28 @@ const isRTL = (hostEl) => {
17224
17559
  const isSrc = (str) => str.length > 0 && /(\/|\.)/.test(str);
17225
17560
  const isStr = (val) => typeof val === 'string'; // eslint-disable-line @typescript-eslint/no-explicit-any
17226
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
+ };
17227
17584
  /**
17228
17585
  * Elements inside of web components sometimes need to inherit global attributes
17229
17586
  * set on the host. For example, the inner input in `pds-input` should inherit
@@ -17385,9 +17742,10 @@ class PdsIcon {
17385
17742
  this.setupInitialAriaLabel();
17386
17743
  }
17387
17744
  setCSSVariables() {
17745
+ var _a;
17388
17746
  this.el.style.setProperty(`--dimension-icon-height`, this.iconSize());
17389
17747
  this.el.style.setProperty(`--dimension-icon-width`, this.iconSize());
17390
- 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');
17391
17749
  }
17392
17750
  connectedCallback() {
17393
17751
  // Handle re-connection during client-side navigation
@@ -17432,7 +17790,7 @@ class PdsIcon {
17432
17790
  const shouldFlip = flipRtl || shouldIconAutoFlip;
17433
17791
  // Use inherited aria-label if provided, otherwise fall back to auto-generated one
17434
17792
  const finalAriaLabel = inheritedAttributes['aria-label'] || ariaLabel;
17435
- 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" }))));
17436
17794
  }
17437
17795
  /*****
17438
17796
  * Private Methods
@@ -17568,9 +17926,9 @@ class PdsImage {
17568
17926
  this.loading = 'eager';
17569
17927
  }
17570
17928
  render() {
17571
- return (hAsync(Host, { key: 'fff1a796e59b8e666069e56390e174d7d2861f03', class: {
17929
+ return (hAsync(Host, { key: '1e8bb3882c2a629004ce1441e85d5c5a75a84e98', class: {
17572
17930
  'pds-image': true,
17573
- }, 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 })));
17574
17932
  }
17575
17933
  static get style() { return pdsImageCss(); }
17576
17934
  static get cmpMeta() { return {
@@ -17890,10 +18248,10 @@ class PdsInput {
17890
18248
  'has-prepend': this.hasPrepend,
17891
18249
  'has-append': this.hasAppend,
17892
18250
  };
17893
- 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: {
17894
18252
  'pds-input__label-wrapper': true,
17895
18253
  'visually-hidden': this.hideLabel,
17896
- } }, 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)))));
17897
18255
  }
17898
18256
  static get formAssociated() { return true; }
17899
18257
  get el() { return getElement(this); }
@@ -18005,8 +18363,8 @@ class PdsLink {
18005
18363
  const targetValue = this.target || (this.external ? '_blank' : undefined);
18006
18364
  const showExternalIcon = this.external;
18007
18365
  const relValue = targetValue === '_blank' ? 'noopener noreferrer' : undefined;
18008
- 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 &&
18009
- 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 })));
18010
18368
  }
18011
18369
  static get style() { return pdsLinkCss(); }
18012
18370
  static get cmpMeta() { return {
@@ -18105,7 +18463,7 @@ class PdsLoader {
18105
18463
  'aria-live': 'polite',
18106
18464
  };
18107
18465
  this.hostKeeper.record(hostClass, {}, hostAttributes);
18108
- 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..."))));
18109
18467
  }
18110
18468
  get el() { return getElement(this); }
18111
18469
  static get watchers() { return {
@@ -18652,14 +19010,14 @@ class PdsModal {
18652
19010
  }
18653
19011
  render() {
18654
19012
  const [sizeClass = 'md', customSize] = this.resolveSize();
18655
- return (hAsync("dialog", { key: 'b6714c7e77d80bf2370f2170ffce029abe147d81', class: {
19013
+ return (hAsync("dialog", { key: '12ea38928ea287f16ffa33e246caa2bfde6fc130', class: {
18656
19014
  'pds-modal__backdrop': true,
18657
19015
  'open': this.open
18658
- }, "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: {
18659
19017
  'pds-modal': true,
18660
19018
  [`pds-modal--${sizeClass}`]: true,
18661
19019
  'pds-modal--scrollable': this.scrollable
18662
- }, 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' }))));
18663
19021
  }
18664
19022
  get el() { return getElement(this); }
18665
19023
  static get watchers() { return {
@@ -18876,10 +19234,10 @@ class PdsModalContent {
18876
19234
  render() {
18877
19235
  // Only apply max-height style if it's not 'none'
18878
19236
  const styleObj = this.contentMaxHeight !== 'none' ? { maxHeight: this.contentMaxHeight } : {};
18879
- return (hAsync(Host, { key: 'f66dbdd08d6af3f87b0a6e8f30e1948b2f674e34' }, hAsync("div", { key: 'ac0469cbfe48002d5bc7f401e0dc30926cfd4421', class: {
19237
+ return (hAsync(Host, { key: 'd41d5632eb6a2dafe921546af60f835d3545cc4f' }, hAsync("div", { key: '741ac9f28149039ecf5051142a939ab62ef26a87', class: {
18880
19238
  'pds-modal-content': true,
18881
19239
  [`pds-modal-content--border-${this.border}`]: true
18882
- }, style: styleObj, tabindex: "-1" }, hAsync("slot", { key: '26a8a45ab4dcd0349da68304fa3cacc64603208a' }))));
19240
+ }, style: styleObj, tabindex: "-1" }, hAsync("slot", { key: '090a52e9425d4df61c2d8216cc19f0925babdffe' }))));
18883
19241
  }
18884
19242
  get el() { return getElement(this); }
18885
19243
  static get style() { return pdsModalContentCss(); }
@@ -18910,7 +19268,7 @@ class PdsModalFooter {
18910
19268
  unwrapReconnectedContent(this.el.querySelector('.pds-modal__footer'), '.pds-modal__footer');
18911
19269
  }
18912
19270
  render() {
18913
- 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' })));
18914
19272
  }
18915
19273
  get el() { return getElement(this); }
18916
19274
  static get style() { return pdsModalFooterCss(); }
@@ -18938,7 +19296,7 @@ class PdsModalHeader {
18938
19296
  unwrapReconnectedContent(this.el.querySelector('.pds-modal__header'), '.pds-modal__header');
18939
19297
  }
18940
19298
  render() {
18941
- 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' })));
18942
19300
  }
18943
19301
  get el() { return getElement(this); }
18944
19302
  static get style() { return pdsModalHeaderCss(); }
@@ -20186,10 +20544,10 @@ class PdsMultiselect {
20186
20544
  }
20187
20545
  render() {
20188
20546
  const hasSelections = this.selectedItems.length > 0;
20189
- 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: {
20190
20548
  'pds-multiselect__label': true,
20191
20549
  'visually-hidden': this.hideLabel,
20192
- } }, 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: {
20193
20551
  'pds-multiselect__trigger': true,
20194
20552
  'pds-multiselect__trigger--open': this.isOpen,
20195
20553
  'pds-multiselect__trigger--disabled': this.disabled,
@@ -20205,7 +20563,7 @@ class PdsMultiselect {
20205
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: {
20206
20564
  'pds-multiselect__trigger-text': true,
20207
20565
  'pds-multiselect__trigger-text--placeholder': !hasSelections || (this.selectedDisplay === 'pill' && this.pillPosition === 'below'),
20208
- } }, 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' })))));
20209
20567
  }
20210
20568
  static get formAssociated() { return true; }
20211
20569
  get el() { return getElement(this); }
@@ -20301,6 +20659,48 @@ class PdsMultiselect {
20301
20659
  }; }
20302
20660
  }
20303
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
+
20304
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}`;
20305
20705
 
20306
20706
  /**
@@ -20470,7 +20870,8 @@ class PdsPopover {
20470
20870
  this.triggerObserver = null;
20471
20871
  if (this.triggerEl == null || typeof MutationObserver === 'undefined')
20472
20872
  return;
20473
- 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));
20474
20875
  this.triggerObserver.observe(this.triggerEl, {
20475
20876
  attributes: true,
20476
20877
  attributeFilter: ['aria-expanded', 'aria-controls'],
@@ -20480,9 +20881,9 @@ class PdsPopover {
20480
20881
  // This mirrors the native Popover API's accessibility behavior
20481
20882
  linkTriggerToPortal() {
20482
20883
  if (this.triggerEl == null || this.portalEl == null)
20483
- return;
20884
+ return false;
20484
20885
  // Skips values already in place, so the trigger observer's own callback doesn't loop.
20485
- 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 });
20486
20887
  }
20487
20888
  // componentDidLoad doesn't run again when a popover comes back, so rebuild whatever
20488
20889
  // disconnectedCallback tore down. Each step is a no-op when nothing was.
@@ -20589,22 +20990,25 @@ class PdsPopover {
20589
20990
  if (!this.portalEl)
20590
20991
  return;
20591
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);
20592
20996
  // Check if style element already exists
20593
- const existingStyle = document.querySelector(`style[data-pds-popover-focus="${portalId}"]`);
20997
+ const existingStyle = document.querySelector(`style[data-pds-popover-focus="${escapedPortalId}"]`);
20594
20998
  if (existingStyle)
20595
20999
  return;
20596
21000
  // Create style element with Pine's focus ring styles and dark mode border
20597
21001
  const styleEl = document.createElement('style');
20598
21002
  styleEl.setAttribute('data-pds-popover-focus', portalId);
20599
21003
  styleEl.textContent = `
20600
- #${portalId}:focus {
21004
+ #${escapedPortalId}:focus {
20601
21005
  outline: var(--pine-outline-focus, 2px solid var(--pine-color-focus-ring, #6366f1)) !important;
20602
21006
  outline-offset: var(--pine-border-width, 1px);
20603
21007
  }
20604
- #${portalId}:focus:not(:focus-visible) {
21008
+ #${escapedPortalId}:focus:not(:focus-visible) {
20605
21009
  outline: none;
20606
21010
  }
20607
- [data-theme="dark"] #${portalId} {
21011
+ [data-theme="dark"] #${escapedPortalId} {
20608
21012
  border: var(--pine-border);
20609
21013
  }
20610
21014
  `;
@@ -20663,7 +21067,7 @@ class PdsPopover {
20663
21067
  }
20664
21068
  // Remove the associated focus style element
20665
21069
  const portalId = this.portalEl.id;
20666
- const styleEl = document.querySelector(`style[data-pds-popover-focus="${portalId}"]`);
21070
+ const styleEl = document.querySelector(`style[data-pds-popover-focus="${cssEscape(portalId)}"]`);
20667
21071
  if (styleEl && styleEl.parentNode) {
20668
21072
  styleEl.parentNode.removeChild(styleEl);
20669
21073
  }
@@ -20939,7 +21343,7 @@ class PdsPopover {
20939
21343
  }, 16); // ~1 frame at 60fps
20940
21344
  }
20941
21345
  render() {
20942
- 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 }))));
20943
21347
  }
20944
21348
  get el() { return getElement(this); }
20945
21349
  static get watchers() { return {
@@ -21001,10 +21405,10 @@ class PdsProgress {
21001
21405
  this.hostKeeper.disconnect();
21002
21406
  }
21003
21407
  render() {
21004
- const normalizedFillColor = normalizeColorValue(this.fillColor);
21408
+ const normalizedFillColor = normalizeColorValue$1(this.fillColor);
21005
21409
  const hostClass = this.animated ? { 'is-animated': this.animated } : '';
21006
21410
  this.hostKeeper.record(hostClass);
21007
- 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, "%")));
21008
21412
  }
21009
21413
  get el() { return getElement(this); }
21010
21414
  static get style() { return pdsProgressCss(); }
@@ -21039,7 +21443,7 @@ class PdsProperty {
21039
21443
  this.icon = 'star';
21040
21444
  }
21041
21445
  render() {
21042
- 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' }))));
21043
21447
  }
21044
21448
  static get style() { return pdsPropertyCss(); }
21045
21449
  static get cmpMeta() { return {
@@ -21158,13 +21562,13 @@ class PdsRadio {
21158
21562
  }
21159
21563
  render() {
21160
21564
  const renderLabelAndMessages = () => [
21161
- 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)),
21162
21566
  this.helperMessage && (hAsync("div", { key: `${this.componentId}-helper`, class: 'pds-radio__message', id: messageId(this.componentId, 'helper') }, this.helperMessage)),
21163
- 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))
21164
21568
  ];
21165
21569
  const hostClass = this.classNames();
21166
21570
  this.hostKeeper.record(hostClass);
21167
- 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())));
21168
21572
  }
21169
21573
  get el() { return getElement(this); }
21170
21574
  static get style() { return labelCss$3() + pdsRadioCss(); }
@@ -21356,13 +21760,13 @@ class PdsRadioGroup {
21356
21760
  render() {
21357
21761
  const gapValue = this.getGapValue();
21358
21762
  const ariaDescribedBy = this.getAriaDescribedBy();
21359
- 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: {
21360
21764
  '--pds-radio-group-gap': gapValue,
21361
- } }, 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: {
21362
21766
  'pds-radio-group__radios': true,
21363
21767
  'pds-radio-group__radios--row': this.direction === 'row',
21364
21768
  'pds-radio-group__radios--column': this.direction === 'column',
21365
- } }, 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))));
21366
21770
  }
21367
21771
  get el() { return getElement(this); }
21368
21772
  static get watchers() { return {
@@ -21471,7 +21875,7 @@ class PdsRow {
21471
21875
  'min-height': this.minHeight,
21472
21876
  }));
21473
21877
  this.hostKeeper.record(`pds-row ${rowClasses}`, rowInlineStyles);
21474
- return hAsync(Host, { key: 'ee3a32ae1376919c7c2d1fcf186a1b7c272ee085', class: `pds-row ${rowClasses}`, style: rowInlineStyles });
21878
+ return hAsync(Host, { key: '78a505fef7132f9545916155d2485a6d2df8f4a5', class: `pds-row ${rowClasses}`, style: rowInlineStyles });
21475
21879
  }
21476
21880
  get el() { return getElement(this); }
21477
21881
  static get style() { return pdsRowCss(); }
@@ -21743,7 +22147,7 @@ class PdsSelect {
21743
22147
  'has-action': hasAction && !this.hideLabel ? 'true' : null,
21744
22148
  };
21745
22149
  this.hostKeeper.record(hostClass, {}, hostAttributes);
21746
- 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 }))));
21747
22151
  }
21748
22152
  static get formAssociated() { return true; }
21749
22153
  get el() { return getElement(this); }
@@ -24502,7 +24906,7 @@ class PdsSortable {
24502
24906
  render() {
24503
24907
  const classNames = this.classNames();
24504
24908
  this.hostKeeper.record(classNames);
24505
- 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' })));
24506
24910
  }
24507
24911
  get el() { return getElement(this); }
24508
24912
  static get watchers() { return {
@@ -24577,7 +24981,7 @@ class PdsSortableItem {
24577
24981
  }
24578
24982
  render() {
24579
24983
  this.hostKeeper.record('pds-sortable-item');
24580
- 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" })))));
24581
24985
  }
24582
24986
  get el() { return getElement(this); }
24583
24987
  static get style() { return pdsSortableItemCss(); }
@@ -24700,9 +25104,9 @@ class PdsSwitch {
24700
25104
  const hostClass = this.switchClassNames();
24701
25105
  const ariaDisabled = this.disabled ? 'true' : null;
24702
25106
  this.hostKeeper.record(hostClass, {}, { 'aria-disabled': ariaDisabled });
24703
- 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 &&
24704
- hAsync("div", { key: '137d9e5626b34ade33f68c4c24c3dcb154500dc6', class: `pds-switch__message`, id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
24705
- 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)));
24706
25110
  }
24707
25111
  static get formAssociated() { return true; }
24708
25112
  get el() { return getElement(this); }
@@ -24744,6 +25148,7 @@ class PdsTab {
24744
25148
  constructor(hostRef) {
24745
25149
  registerInstance(this, hostRef);
24746
25150
  this.pdsTabClick = createEvent(this, "pdsTabClick");
25151
+ this.hostKeeper = new HostStylingKeeper();
24747
25152
  /**
24748
25153
  * Determines the tab's disabled state.
24749
25154
  * @defaultValue false
@@ -24762,6 +25167,12 @@ class PdsTab {
24762
25167
  /** @internal */
24763
25168
  this.selected = false;
24764
25169
  }
25170
+ connectedCallback() {
25171
+ this.hostKeeper.connect(this.el);
25172
+ }
25173
+ disconnectedCallback() {
25174
+ this.hostKeeper.disconnect();
25175
+ }
24765
25176
  // Unwraps a nested <a>/<button> left by a page-cache (Turbo, bfcache) reconnect.
24766
25177
  componentDidRender() {
24767
25178
  unwrapReconnectedContent(this.el.querySelector('.pds-tab__content'), 'a.pds-tab, button.pds-tab', '.pds-tab__content');
@@ -24797,6 +25208,9 @@ class PdsTab {
24797
25208
  return classes.filter(Boolean).join(' ');
24798
25209
  }
24799
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' });
24800
25214
  const availabilityTabEdgeInlineStart = (hAsync("span", { class: "pds-tab-edge", role: "presentation" }));
24801
25215
  const availabilityTabEdgeInlineEnd = (hAsync("span", { class: "pds-tab-edge pds-tab-edge--end", role: "presentation" }));
24802
25216
  const content = (hAsync(Fragment, null, this.variant === "availability" && availabilityTabEdgeInlineStart, this.variant === "availability" && availabilityTabEdgeInlineEnd, hAsync("div", { class: "pds-tab__content" }, hAsync("slot", null))));
@@ -25116,7 +25530,7 @@ class PdsTableBody {
25116
25530
  registerInstance(this, hostRef);
25117
25531
  }
25118
25532
  render() {
25119
- 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' })));
25120
25534
  }
25121
25535
  static get style() { return pdsTableBodyCss(); }
25122
25536
  static get cmpMeta() { return {
@@ -25254,11 +25668,11 @@ class PdsTableCell {
25254
25668
  return classNames.join(' ');
25255
25669
  }
25256
25670
  render() {
25257
- 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 &&
25258
25672
  this.tableRef.fixedColumn &&
25259
25673
  this.tableRef.selectable
25260
25674
  ? { '--fixed-cell-position': '40px' }
25261
- : {} }, hAsync("slot", { key: '5b2af30784f41dcc7a0f66187f222ec2472f207f' })));
25675
+ : {} }, hAsync("slot", { key: '45182ee3e004097660432f552780b3d27671bd46' })));
25262
25676
  }
25263
25677
  get hostElement() { return getElement(this); }
25264
25678
  static get watchers() { return {
@@ -25327,7 +25741,7 @@ class PdsTableHead {
25327
25741
  }
25328
25742
  }
25329
25743
  render() {
25330
- 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' })));
25331
25745
  }
25332
25746
  get hostElement() { return getElement(this); }
25333
25747
  static get style() { return pdsTableHeadCss(); }
@@ -25548,11 +25962,11 @@ class PdsTableHeadCell {
25548
25962
  return classNames.join(' ');
25549
25963
  }
25550
25964
  render() {
25551
- 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 &&
25552
25966
  this.tableRef.fixedColumn &&
25553
25967
  this.tableRef.selectable
25554
25968
  ? { '--fixed-cell-position': '40px' }
25555
- : {} }, 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" }))));
25556
25970
  }
25557
25971
  get hostElement() { return getElement(this); }
25558
25972
  static get style() { return pdsTableHeadCellCss(); }
@@ -25718,7 +26132,7 @@ class PdsTableRow {
25718
26132
  }
25719
26133
  }
25720
26134
  render() {
25721
- 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' })));
25722
26136
  }
25723
26137
  get hostElement() { return getElement(this); }
25724
26138
  static get style() { return pdsTableRowCss(); }
@@ -25745,6 +26159,7 @@ const pdsTabpanelCss = () => `:host{display:block}:host(.pds-tabpanel--stretch-a
25745
26159
  class PdsTabpanel {
25746
26160
  constructor(hostRef) {
25747
26161
  registerInstance(this, hostRef);
26162
+ this.hostKeeper = new HostStylingKeeper();
25748
26163
  /**
25749
26164
  * Keeps track of the tabpanel selected state, this property is passed by parent component
25750
26165
  */
@@ -25756,12 +26171,22 @@ class PdsTabpanel {
25756
26171
  /** @internal */
25757
26172
  this.stretch = false;
25758
26173
  }
26174
+ connectedCallback() {
26175
+ this.hostKeeper.connect(this.el);
26176
+ }
26177
+ disconnectedCallback() {
26178
+ this.hostKeeper.disconnect();
26179
+ }
25759
26180
  // Unwraps a nested .pds-tabpanel left by a page-cache (Turbo, bfcache) reconnect.
25760
26181
  componentDidRender() {
25761
26182
  unwrapReconnectedContent(this.el.querySelector('.pds-tabpanel'), '.pds-tabpanel');
25762
26183
  }
25763
26184
  render() {
25764
- 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' }))));
25765
26190
  }
25766
26191
  get el() { return getElement(this); }
25767
26192
  static get style() { return pdsTabpanelCss(); }
@@ -25792,6 +26217,35 @@ class PdsTabs {
25792
26217
  constructor(hostRef) {
25793
26218
  registerInstance(this, hostRef);
25794
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
+ };
25795
26249
  /**
25796
26250
  * Adds a divider rule beneath the tab list.
25797
26251
  * @defaultValue false
@@ -25811,12 +26265,44 @@ class PdsTabs {
25811
26265
  * @defaultValue false
25812
26266
  */
25813
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
+ };
25814
26281
  }
25815
26282
  connectedCallback() {
25816
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();
25817
26295
  }
25818
26296
  disconnectedCallback() {
26297
+ var _a, _b;
25819
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();
25820
26306
  }
25821
26307
  tabClickHandler(event) {
25822
26308
  if (this.componentId === event.detail[1]) {
@@ -25844,8 +26330,8 @@ class PdsTabs {
25844
26330
  // Navigation mode is an explicit, single source of truth: `nav` drives both the
25845
26331
  // container (<nav> of links vs role=tablist of buttons) and every child tab (via
25846
26332
  // `navMode`), so the tabs present when the strip initializes can't mix the two.
25847
- // (Child discovery is load-time only, like `variant`/`id`; tabs added after load
25848
- // 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.
25849
26335
  get isNav() {
25850
26336
  return !!this.nav;
25851
26337
  }
@@ -25898,9 +26384,52 @@ class PdsTabs {
25898
26384
  this.tabs = allTabs.filter(tab => tab.closest('pds-tabs') === this.el);
25899
26385
  this.tabPanels = allTabPanels.filter(panel => panel.closest('pds-tabs') === this.el);
25900
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
+ }
25901
26430
  propGeneration(child, index = 0) {
25902
26431
  child.parentComponentId = this.componentId.toString();
25903
- child.variant = this.variant.toString();
26432
+ child.variant = this.variant;
25904
26433
  child.selected = (this.activeTabName === child.name) ? true : false;
25905
26434
  child['index'] = index;
25906
26435
  }
@@ -25956,7 +26485,7 @@ class PdsTabs {
25956
26485
  // Only the classes: `active-tab-name` backs the mutable activeTabName prop, so a morph that drops
25957
26486
  // it is a prop change, not a strip.
25958
26487
  this.hostKeeper.record(hostClass);
25959
- 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" })));
25960
26489
  }
25961
26490
  get el() { return getElement(this); }
25962
26491
  static get style() { return pdsTabsCss(); }
@@ -26082,7 +26611,7 @@ class PdsText {
26082
26611
  ? `pds-text--decoration-${this.decoration}`
26083
26612
  : ''}
26084
26613
  `;
26085
- 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' })));
26086
26615
  }
26087
26616
  get el() { return getElement(this); }
26088
26617
  static get watchers() { return {
@@ -26428,10 +26957,10 @@ class PdsTextarea {
26428
26957
  }
26429
26958
  render() {
26430
26959
  const value = this.getValue();
26431
- 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 &&
26432
- 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 &&
26433
- hAsync("p", { key: '493b4378b668a96c7c66cbf2435f9c9d06bd0a72', class: "pds-textarea__helper-message", id: messageId(this.componentId, 'helper') }, this.helperMessage), this.invalid &&
26434
- 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))));
26435
26964
  }
26436
26965
  static get formAssociated() { return true; }
26437
26966
  get el() { return getElement(this); }
@@ -26605,13 +27134,13 @@ class PdsToast {
26605
27134
  return this.icon && hAsync("pds-icon", { name: this.icon, class: "pds-toast__icon" });
26606
27135
  }
26607
27136
  render() {
26608
- 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: {
26609
27138
  'pds-toast': true,
26610
27139
  [`pds-toast--${this.type}`]: this.type !== 'default',
26611
27140
  'pds-toast--animating-out': this.isAnimatingOut
26612
- }, 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: () => {
26613
27142
  this.dismiss();
26614
- }, "aria-label": this.dismissLabel }, hAsync("pds-icon", { key: 'f6b68f4cf9df23b367ade351dd4f00fc6f6e6442', name: "remove" }))))));
27143
+ }, "aria-label": this.dismissLabel }, hAsync("pds-icon", { key: '623a0e4d56e30781fb31bcd085511c17a4777edc', name: "remove" }))))));
26615
27144
  }
26616
27145
  get el() { return getElement(this); }
26617
27146
  static get watchers() { return {
@@ -26986,9 +27515,9 @@ class PdsTooltip {
26986
27515
  }
26987
27516
  render() {
26988
27517
  const hostId = this.componentId || undefined;
26989
- 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,
26990
27519
  /* focusin/out bubble; ensure keyboard users see tooltips */
26991
- 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" }))));
26992
27521
  }
26993
27522
  get el() { return getElement(this); }
26994
27523
  static get watchers() { return {