@pine-ds/core 4.9.0 → 4.10.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 (400) hide show
  1. package/components/mock-pds-modal.js +1 -1
  2. package/components/pds-checkbox2.js +1 -1
  3. package/components/pds-chip2.js +1 -1
  4. package/components/pds-combobox.js +2 -2
  5. package/components/pds-datepicker.js +1 -1
  6. package/components/pds-dropdown-menu.js +1 -1
  7. package/components/pds-icon2.js +1 -1
  8. package/components/pds-link2.js +1 -1
  9. package/components/pds-modal2.js +1 -1
  10. package/components/pds-multiselect.js +1 -1
  11. package/components/pds-radio-group.js +1 -1
  12. package/components/pds-text2.js +1 -1
  13. package/components/pds-tooltip.js +1 -1
  14. package/components/portal-target.js +1 -0
  15. package/components/tabbable.js +1 -1
  16. package/components/truncation-tooltip.js +1 -1
  17. package/dist/cjs/{index-Do70atou.js → index-BDnbr0DK.js} +1 -1
  18. package/dist/cjs/{index-BsWY_xEJ.js → index-D9iJuJCP.js} +12 -0
  19. package/dist/cjs/loader.cjs.js +2 -2
  20. package/dist/cjs/mock-pds-modal.cjs.entry.js +2 -2
  21. package/dist/cjs/pds-accordion.cjs.entry.js +2 -2
  22. package/dist/cjs/pds-alert.cjs.entry.js +1 -1
  23. package/dist/cjs/pds-avatar.cjs.entry.js +2 -2
  24. package/dist/cjs/pds-box.cjs.entry.js +1 -1
  25. package/dist/cjs/pds-button.cjs.entry.js +2 -2
  26. package/dist/cjs/pds-checkbox.cjs.entry.js +3 -3
  27. package/dist/cjs/pds-chip.cjs.entry.js +9 -9
  28. package/dist/cjs/pds-combobox.cjs.entry.js +102 -16
  29. package/dist/cjs/pds-container.cjs.entry.js +1 -1
  30. package/dist/cjs/pds-copytext.cjs.entry.js +4 -3
  31. package/dist/cjs/pds-datepicker.cjs.entry.js +4 -41
  32. package/dist/cjs/pds-divider.cjs.entry.js +1 -1
  33. package/dist/cjs/pds-drawer-content.cjs.entry.js +1 -1
  34. package/dist/cjs/pds-drawer-footer.cjs.entry.js +1 -1
  35. package/dist/cjs/pds-drawer-header.cjs.entry.js +1 -1
  36. package/dist/cjs/pds-drawer.cjs.entry.js +1 -1
  37. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +1 -1
  38. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +1 -1
  39. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +59 -47
  40. package/dist/cjs/pds-filter.cjs.entry.js +2 -2
  41. package/dist/cjs/pds-filters.cjs.entry.js +1 -1
  42. package/dist/cjs/pds-icon.cjs.entry.js +54 -21
  43. package/dist/cjs/pds-image.cjs.entry.js +1 -1
  44. package/dist/cjs/pds-input.cjs.entry.js +2 -2
  45. package/dist/cjs/pds-link.cjs.entry.js +3 -3
  46. package/dist/cjs/pds-loader.cjs.entry.js +1 -1
  47. package/dist/cjs/pds-modal-content.cjs.entry.js +1 -1
  48. package/dist/cjs/pds-modal-footer.cjs.entry.js +1 -1
  49. package/dist/cjs/pds-modal-header.cjs.entry.js +1 -1
  50. package/dist/cjs/pds-modal.cjs.entry.js +3 -3
  51. package/dist/cjs/pds-multiselect.cjs.entry.js +11 -5
  52. package/dist/cjs/pds-popover.cjs.entry.js +2 -2
  53. package/dist/cjs/pds-progress.cjs.entry.js +1 -1
  54. package/dist/cjs/pds-property.cjs.entry.js +1 -1
  55. package/dist/cjs/pds-radio-group.cjs.entry.js +66 -5
  56. package/dist/cjs/pds-radio.cjs.entry.js +2 -2
  57. package/dist/cjs/pds-row.cjs.entry.js +1 -1
  58. package/dist/cjs/pds-select.cjs.entry.js +2 -2
  59. package/dist/cjs/pds-sortable-item.cjs.entry.js +2 -2
  60. package/dist/cjs/pds-sortable.cjs.entry.js +1 -1
  61. package/dist/cjs/pds-switch.cjs.entry.js +2 -2
  62. package/dist/cjs/pds-tab.cjs.entry.js +1 -1
  63. package/dist/cjs/pds-table-body.cjs.entry.js +1 -1
  64. package/dist/cjs/pds-table-cell.cjs.entry.js +3 -2
  65. package/dist/cjs/pds-table-head-cell.cjs.entry.js +2 -2
  66. package/dist/cjs/pds-table-head.cjs.entry.js +1 -1
  67. package/dist/cjs/pds-table-row.cjs.entry.js +1 -1
  68. package/dist/cjs/pds-table.cjs.entry.js +1 -1
  69. package/dist/cjs/pds-tabpanel.cjs.entry.js +1 -1
  70. package/dist/cjs/pds-tabs.cjs.entry.js +1 -1
  71. package/dist/cjs/pds-text.cjs.entry.js +29 -3
  72. package/dist/cjs/pds-textarea.cjs.entry.js +2 -2
  73. package/dist/cjs/pds-toast.cjs.entry.js +1 -1
  74. package/dist/cjs/pds-tooltip.cjs.entry.js +16 -5
  75. package/dist/cjs/pine-core.cjs.js +2 -2
  76. package/dist/cjs/portal-target-e8WQ6dLx.js +70 -0
  77. package/dist/cjs/{tabbable-CddSt_Hi.js → tabbable-BrrrGvdG.js} +2 -1
  78. package/dist/cjs/{truncation-tooltip-O5nQmXPw.js → truncation-tooltip-Bikp7n9I.js} +43 -3
  79. package/dist/collection/components/pds-checkbox/pds-checkbox.css +20 -14
  80. package/dist/collection/components/pds-chip/pds-chip.js +5 -6
  81. package/dist/collection/components/pds-combobox/grouped-options-panel.js +39 -1
  82. package/dist/collection/components/pds-combobox/pds-combobox.css +37 -1
  83. package/dist/collection/components/pds-combobox/pds-combobox.js +62 -14
  84. package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +48 -0
  85. package/dist/collection/components/pds-datepicker/calendar-portal.js +1 -38
  86. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +64 -46
  87. package/dist/collection/components/pds-link/pds-link.css +1 -1
  88. package/dist/collection/components/pds-link/stories/pds-link.stories.js +48 -0
  89. package/dist/collection/components/pds-modal/pds-modal.css +1 -1
  90. package/dist/collection/components/pds-multiselect/pds-multiselect.js +9 -3
  91. package/dist/collection/components/pds-radio-group/pds-radio-group.js +65 -4
  92. package/dist/collection/components/pds-text/pds-text.js +28 -3
  93. package/dist/collection/components/pds-text/stories/pds-text.stories.js +16 -0
  94. package/dist/collection/components/pds-tooltip/pds-tooltip.css +11 -0
  95. package/dist/collection/components/pds-tooltip/pds-tooltip.js +14 -3
  96. package/dist/collection/components/pds-tooltip/stories/pds-tooltip.stories.js +30 -0
  97. package/dist/collection/utils/portal-target.js +64 -0
  98. package/dist/collection/utils/tabbable.js +2 -1
  99. package/dist/collection/utils/truncation-tooltip.js +42 -3
  100. package/dist/docs.json +9 -3
  101. package/dist/esm/{index-BFSwd-GQ.js → index-4_RRPJTO.js} +12 -1
  102. package/dist/esm/{index-m3pqpeWg.js → index-DvN3tyZp.js} +1 -1
  103. package/dist/esm/loader.js +3 -3
  104. package/dist/esm/mock-pds-modal.entry.js +2 -2
  105. package/dist/esm/pds-accordion.entry.js +2 -2
  106. package/dist/esm/pds-alert.entry.js +1 -1
  107. package/dist/esm/pds-avatar.entry.js +2 -2
  108. package/dist/esm/pds-box.entry.js +1 -1
  109. package/dist/esm/pds-button.entry.js +2 -2
  110. package/dist/esm/pds-checkbox.entry.js +3 -3
  111. package/dist/esm/pds-chip.entry.js +8 -8
  112. package/dist/esm/pds-combobox.entry.js +102 -16
  113. package/dist/esm/pds-container.entry.js +1 -1
  114. package/dist/esm/pds-copytext.entry.js +4 -3
  115. package/dist/esm/pds-datepicker.entry.js +3 -40
  116. package/dist/esm/pds-divider.entry.js +1 -1
  117. package/dist/esm/pds-drawer-content.entry.js +1 -1
  118. package/dist/esm/pds-drawer-footer.entry.js +1 -1
  119. package/dist/esm/pds-drawer-header.entry.js +1 -1
  120. package/dist/esm/pds-drawer.entry.js +1 -1
  121. package/dist/esm/pds-dropdown-menu-item.entry.js +1 -1
  122. package/dist/esm/pds-dropdown-menu-separator.entry.js +1 -1
  123. package/dist/esm/pds-dropdown-menu.entry.js +59 -47
  124. package/dist/esm/pds-filter.entry.js +2 -2
  125. package/dist/esm/pds-filters.entry.js +1 -1
  126. package/dist/esm/pds-icon.entry.js +54 -21
  127. package/dist/esm/pds-image.entry.js +1 -1
  128. package/dist/esm/pds-input.entry.js +2 -2
  129. package/dist/esm/pds-link.entry.js +3 -3
  130. package/dist/esm/pds-loader.entry.js +1 -1
  131. package/dist/esm/pds-modal-content.entry.js +1 -1
  132. package/dist/esm/pds-modal-footer.entry.js +1 -1
  133. package/dist/esm/pds-modal-header.entry.js +1 -1
  134. package/dist/esm/pds-modal.entry.js +3 -3
  135. package/dist/esm/pds-multiselect.entry.js +11 -5
  136. package/dist/esm/pds-popover.entry.js +2 -2
  137. package/dist/esm/pds-progress.entry.js +1 -1
  138. package/dist/esm/pds-property.entry.js +1 -1
  139. package/dist/esm/pds-radio-group.entry.js +66 -5
  140. package/dist/esm/pds-radio.entry.js +2 -2
  141. package/dist/esm/pds-row.entry.js +1 -1
  142. package/dist/esm/pds-select.entry.js +2 -2
  143. package/dist/esm/pds-sortable-item.entry.js +2 -2
  144. package/dist/esm/pds-sortable.entry.js +1 -1
  145. package/dist/esm/pds-switch.entry.js +2 -2
  146. package/dist/esm/pds-tab.entry.js +1 -1
  147. package/dist/esm/pds-table-body.entry.js +1 -1
  148. package/dist/esm/pds-table-cell.entry.js +3 -2
  149. package/dist/esm/pds-table-head-cell.entry.js +2 -2
  150. package/dist/esm/pds-table-head.entry.js +1 -1
  151. package/dist/esm/pds-table-row.entry.js +1 -1
  152. package/dist/esm/pds-table.entry.js +1 -1
  153. package/dist/esm/pds-tabpanel.entry.js +1 -1
  154. package/dist/esm/pds-tabs.entry.js +1 -1
  155. package/dist/esm/pds-text.entry.js +29 -3
  156. package/dist/esm/pds-textarea.entry.js +2 -2
  157. package/dist/esm/pds-toast.entry.js +1 -1
  158. package/dist/esm/pds-tooltip.entry.js +16 -5
  159. package/dist/esm/pine-core.js +3 -3
  160. package/dist/esm/portal-target-CKRzRKdO.js +66 -0
  161. package/dist/esm/{tabbable-DCKBKRUy.js → tabbable-C6ZWpp3v.js} +2 -1
  162. package/dist/esm/{truncation-tooltip-D_gvhB9r.js → truncation-tooltip-DBcPipr9.js} +43 -4
  163. package/dist/esm-es5/{index-BFSwd-GQ.js → index-4_RRPJTO.js} +1 -1
  164. package/dist/esm-es5/loader.js +1 -1
  165. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  166. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  167. package/dist/esm-es5/pds-alert.entry.js +1 -1
  168. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  169. package/dist/esm-es5/pds-box.entry.js +1 -1
  170. package/dist/esm-es5/pds-button.entry.js +1 -1
  171. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  172. package/dist/esm-es5/pds-chip.entry.js +1 -1
  173. package/dist/esm-es5/pds-combobox.entry.js +2 -2
  174. package/dist/esm-es5/pds-container.entry.js +1 -1
  175. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  176. package/dist/esm-es5/pds-datepicker.entry.js +1 -1
  177. package/dist/esm-es5/pds-divider.entry.js +1 -1
  178. package/dist/esm-es5/pds-drawer-content.entry.js +1 -1
  179. package/dist/esm-es5/pds-drawer-footer.entry.js +1 -1
  180. package/dist/esm-es5/pds-drawer-header.entry.js +1 -1
  181. package/dist/esm-es5/pds-drawer.entry.js +1 -1
  182. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  183. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  184. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  185. package/dist/esm-es5/pds-filter.entry.js +1 -1
  186. package/dist/esm-es5/pds-filters.entry.js +1 -1
  187. package/dist/esm-es5/pds-icon.entry.js +1 -1
  188. package/dist/esm-es5/pds-image.entry.js +1 -1
  189. package/dist/esm-es5/pds-input.entry.js +1 -1
  190. package/dist/esm-es5/pds-link.entry.js +1 -1
  191. package/dist/esm-es5/pds-loader.entry.js +1 -1
  192. package/dist/esm-es5/pds-modal-content.entry.js +1 -1
  193. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  194. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  195. package/dist/esm-es5/pds-modal.entry.js +1 -1
  196. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  197. package/dist/esm-es5/pds-popover.entry.js +1 -1
  198. package/dist/esm-es5/pds-progress.entry.js +1 -1
  199. package/dist/esm-es5/pds-property.entry.js +1 -1
  200. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  201. package/dist/esm-es5/pds-radio.entry.js +1 -1
  202. package/dist/esm-es5/pds-row.entry.js +1 -1
  203. package/dist/esm-es5/pds-select.entry.js +1 -1
  204. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  205. package/dist/esm-es5/pds-sortable.entry.js +1 -1
  206. package/dist/esm-es5/pds-switch.entry.js +1 -1
  207. package/dist/esm-es5/pds-tab.entry.js +1 -1
  208. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  209. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  210. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  211. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  212. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  213. package/dist/esm-es5/pds-table.entry.js +1 -1
  214. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  215. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  216. package/dist/esm-es5/pds-text.entry.js +1 -1
  217. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  218. package/dist/esm-es5/pds-toast.entry.js +1 -1
  219. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  220. package/dist/esm-es5/pine-core.js +1 -1
  221. package/dist/esm-es5/portal-target-CKRzRKdO.js +1 -0
  222. package/dist/esm-es5/tabbable-C6ZWpp3v.js +1 -0
  223. package/dist/esm-es5/truncation-tooltip-DBcPipr9.js +1 -0
  224. package/dist/pine-core/{p-7a19477e.system.entry.js → p-01f1cdaf.system.entry.js} +1 -1
  225. package/dist/pine-core/{p-ee449a4b.entry.js → p-07323107.entry.js} +1 -1
  226. package/dist/pine-core/{p-14d872d3.entry.js → p-08b8e941.entry.js} +1 -1
  227. package/dist/pine-core/p-0b7b3fc2.system.entry.js +3 -0
  228. package/dist/pine-core/p-0d5f0ab5.system.entry.js +1 -0
  229. package/dist/pine-core/p-124a0a24.entry.js +1 -0
  230. package/dist/pine-core/p-128c04e7.entry.js +1 -0
  231. package/dist/pine-core/{p-3cc19ea8.system.entry.js → p-1415c988.system.entry.js} +1 -1
  232. package/dist/pine-core/{p-de176bd9.entry.js → p-143b33a6.entry.js} +1 -1
  233. package/dist/pine-core/{p-e9a53a88.system.entry.js → p-14dedf01.system.entry.js} +1 -1
  234. package/dist/pine-core/{p-60d27247.system.entry.js → p-19cf1d91.system.entry.js} +1 -1
  235. package/dist/pine-core/{p-bcf57566.entry.js → p-1ca8d183.entry.js} +1 -1
  236. package/dist/pine-core/{p-11e7d660.entry.js → p-1e3ef425.entry.js} +1 -1
  237. package/dist/pine-core/{p-98cc327b.entry.js → p-1f62bb71.entry.js} +2 -2
  238. package/dist/pine-core/{p-6f34ad9c.entry.js → p-2a18852f.entry.js} +1 -1
  239. package/dist/pine-core/{p-3ce7e72e.system.entry.js → p-2b9622c1.system.entry.js} +1 -1
  240. package/dist/pine-core/{p-9fbcba0d.entry.js → p-2dd30d12.entry.js} +1 -1
  241. package/dist/pine-core/{p-8b97dd57.system.entry.js → p-3306dc5a.system.entry.js} +1 -1
  242. package/dist/pine-core/{p-ce554098.entry.js → p-3610cb3b.entry.js} +1 -1
  243. package/dist/pine-core/{p-079c39d1.entry.js → p-39276663.entry.js} +1 -1
  244. package/dist/pine-core/{p-89fefe36.entry.js → p-39e57657.entry.js} +1 -1
  245. package/dist/pine-core/p-3a1dc752.system.entry.js +1 -0
  246. package/dist/pine-core/{p-ef4d8fea.entry.js → p-3c229091.entry.js} +1 -1
  247. package/dist/pine-core/{p-d8bedb58.system.entry.js → p-3f8bd3fb.system.entry.js} +1 -1
  248. package/dist/pine-core/{p-6845867f.system.entry.js → p-42d43c3f.system.entry.js} +1 -1
  249. package/dist/pine-core/{p-4ee44585.system.entry.js → p-42f70f93.system.entry.js} +1 -1
  250. package/dist/pine-core/{p-0bd61097.system.entry.js → p-4a90b9c8.system.entry.js} +1 -1
  251. package/dist/pine-core/{p-64283f7b.entry.js → p-4cfe922b.entry.js} +1 -1
  252. package/dist/pine-core/p-4d47023c.system.entry.js +1 -0
  253. package/dist/pine-core/{p-b037dcbd.system.entry.js → p-4d98bc0c.system.entry.js} +1 -1
  254. package/dist/pine-core/{p-3556f6ad.entry.js → p-50ddadbf.entry.js} +1 -1
  255. package/dist/pine-core/{p-1e5648bf.system.entry.js → p-548bce53.system.entry.js} +1 -1
  256. package/dist/pine-core/{p-92a8cf7d.entry.js → p-590df41a.entry.js} +1 -1
  257. package/dist/pine-core/{p-f549f2bc.entry.js → p-5946203c.entry.js} +1 -1
  258. package/dist/pine-core/{p-d7db749a.system.entry.js → p-5f181694.system.entry.js} +1 -1
  259. package/dist/pine-core/{p-9713d6a5.system.entry.js → p-60a30975.system.entry.js} +1 -1
  260. package/dist/pine-core/{p-d94ebe84.entry.js → p-61cfdbb2.entry.js} +1 -1
  261. package/dist/pine-core/p-62aa6a78.system.entry.js +1 -0
  262. package/dist/pine-core/p-639acef8.system.entry.js +1 -0
  263. package/dist/pine-core/{p-cb560aab.system.entry.js → p-63f85859.system.entry.js} +1 -1
  264. package/dist/pine-core/{p-001d4b86.entry.js → p-64bcb378.entry.js} +1 -1
  265. package/dist/pine-core/{p-bdde1e53.entry.js → p-67999353.entry.js} +1 -1
  266. package/dist/pine-core/{p-be3b4f12.system.entry.js → p-67f795d5.system.entry.js} +1 -1
  267. package/dist/pine-core/{p-6b6ae1be.entry.js → p-6a1aa8d3.entry.js} +1 -1
  268. package/dist/pine-core/p-6f4ab1ea.system.entry.js +1 -0
  269. package/dist/pine-core/{p-110b4051.system.entry.js → p-724baba3.system.entry.js} +1 -1
  270. package/dist/pine-core/p-72659a0e.system.entry.js +1 -0
  271. package/dist/pine-core/p-7a51f15e.entry.js +1 -0
  272. package/dist/pine-core/p-7b978fff.system.entry.js +1 -0
  273. package/dist/pine-core/p-8436cbfb.entry.js +1 -0
  274. package/dist/pine-core/{p-ced6a814.system.entry.js → p-849ec281.system.entry.js} +1 -1
  275. package/dist/pine-core/p-87a32ded.system.entry.js +1 -0
  276. package/dist/pine-core/{p-f09f27ab.system.entry.js → p-89d38a82.system.entry.js} +1 -1
  277. package/dist/pine-core/{p-6602b4d0.entry.js → p-8ade17ce.entry.js} +1 -1
  278. package/dist/pine-core/{p-ebf0c51b.system.entry.js → p-8afd5f5b.system.entry.js} +1 -1
  279. package/dist/pine-core/{p-9fe4a64a.entry.js → p-8e7f75e6.entry.js} +1 -1
  280. package/dist/pine-core/{p-b9d71b76.entry.js → p-8fb520df.entry.js} +1 -1
  281. package/dist/pine-core/{p-3b5b8f73.entry.js → p-92115e88.entry.js} +1 -1
  282. package/dist/pine-core/{p-239774c9.entry.js → p-947582e1.entry.js} +1 -1
  283. package/dist/pine-core/{p-98843402.system.entry.js → p-94c9b7d1.system.entry.js} +1 -1
  284. package/dist/pine-core/p-97356d4b.entry.js +1 -0
  285. package/dist/pine-core/p-973c3ac0.entry.js +1 -0
  286. package/dist/pine-core/p-97653e60.entry.js +1 -0
  287. package/dist/pine-core/{p-7073146f.entry.js → p-97b73359.entry.js} +1 -1
  288. package/dist/pine-core/{p-bfdfbe9f.entry.js → p-99530cb5.entry.js} +1 -1
  289. package/dist/pine-core/{p-50af67ea.system.entry.js → p-9b32727a.system.entry.js} +1 -1
  290. package/dist/pine-core/{p-CjRCtzPD.system.js → p-BK1sLRfg.system.js} +1 -1
  291. package/dist/pine-core/p-BZVUD2on.js +1 -0
  292. package/dist/pine-core/p-C6ZWpp3v.js +1 -0
  293. package/dist/pine-core/p-CKRzRKdO.js +1 -0
  294. package/dist/pine-core/p-Dj-z_ugg.system.js +1 -0
  295. package/dist/pine-core/{p-BplEmwUQ.js → p-M31tvpDN.js} +2 -2
  296. package/dist/pine-core/p-XK45dzWR.system.js +1 -0
  297. package/dist/pine-core/{p-d9243653.system.entry.js → p-a09c9c5e.system.entry.js} +1 -1
  298. package/dist/pine-core/{p-55fce29e.entry.js → p-a4ce12ef.entry.js} +1 -1
  299. package/dist/pine-core/{p-dea2a254.entry.js → p-a594c41f.entry.js} +1 -1
  300. package/dist/pine-core/{p-2d5b1deb.entry.js → p-a9d96e22.entry.js} +1 -1
  301. package/dist/pine-core/{p-e1fdd53a.system.entry.js → p-ad5208a4.system.entry.js} +1 -1
  302. package/dist/pine-core/p-afc2f165.entry.js +1 -0
  303. package/dist/pine-core/{p-25bf2f26.system.entry.js → p-bcc378ba.system.entry.js} +2 -2
  304. package/dist/pine-core/{p-3f62581a.system.entry.js → p-bd7dc317.system.entry.js} +1 -1
  305. package/dist/pine-core/p-bfa34194.entry.js +1 -0
  306. package/dist/pine-core/{p-5c46553f.system.entry.js → p-c2afe4f3.system.entry.js} +1 -1
  307. package/dist/pine-core/{p-17fc76e7.system.entry.js → p-c5e1eb3c.system.entry.js} +1 -1
  308. package/dist/pine-core/p-c6a9e62c.system.entry.js +1 -0
  309. package/dist/pine-core/{p-7a14473e.entry.js → p-c7a53c4f.entry.js} +1 -1
  310. package/dist/pine-core/{p-5967d9fa.system.entry.js → p-c8a0b562.system.entry.js} +1 -1
  311. package/dist/pine-core/{p-735b3631.entry.js → p-c9ae7964.entry.js} +1 -1
  312. package/dist/pine-core/{p-b243767b.system.entry.js → p-cb9baf78.system.entry.js} +1 -1
  313. package/dist/pine-core/{p-6d64e6c7.entry.js → p-ce9fa14b.entry.js} +1 -1
  314. package/dist/pine-core/{p-68fdfb8f.system.entry.js → p-d018dc60.system.entry.js} +1 -1
  315. package/dist/pine-core/p-d47b2a6a.system.entry.js +1 -0
  316. package/dist/pine-core/{p-0790dd0d.system.entry.js → p-d48fe5a0.system.entry.js} +1 -1
  317. package/dist/pine-core/{p-414faecf.entry.js → p-d6f338e0.entry.js} +1 -1
  318. package/dist/pine-core/{p-b7cbd913.system.entry.js → p-d920d759.system.entry.js} +1 -1
  319. package/dist/pine-core/{p-87642228.entry.js → p-d9719e37.entry.js} +1 -1
  320. package/dist/pine-core/p-da8b864a.entry.js +2 -0
  321. package/dist/pine-core/{p-f2c487e6.entry.js → p-db7fb5a3.entry.js} +1 -1
  322. package/dist/pine-core/p-dd7ded84.entry.js +1 -0
  323. package/dist/pine-core/p-de455073.system.entry.js +1 -0
  324. package/dist/pine-core/{p-a7d25143.entry.js → p-e1d1b5d8.entry.js} +1 -1
  325. package/dist/pine-core/p-e3de6a1d.entry.js +1 -0
  326. package/dist/pine-core/{p-2c0047cd.entry.js → p-e7002cee.entry.js} +1 -1
  327. package/dist/pine-core/{p-5133e8be.system.entry.js → p-e82f758f.system.entry.js} +1 -1
  328. package/dist/pine-core/p-e84fa9ed.entry.js +1 -0
  329. package/dist/pine-core/{p-9dbc017f.system.entry.js → p-eb4f0daa.system.entry.js} +1 -1
  330. package/dist/pine-core/p-eb56af4a.system.entry.js +1 -0
  331. package/dist/pine-core/p-eeYeEogd.system.js +1 -0
  332. package/dist/pine-core/{p-b33ad96e.system.entry.js → p-eecd9ad8.system.entry.js} +1 -1
  333. package/dist/pine-core/{p-06279b93.system.entry.js → p-ef0eba9b.system.entry.js} +1 -1
  334. package/dist/pine-core/{p-0c60f577.system.entry.js → p-ef3a855f.system.entry.js} +1 -1
  335. package/dist/pine-core/{p-6dad76cb.system.entry.js → p-f11cce27.system.entry.js} +1 -1
  336. package/dist/pine-core/p-f354dbac.entry.js +1 -0
  337. package/dist/pine-core/{p-bda7e3be.entry.js → p-f6f4fd42.entry.js} +1 -1
  338. package/dist/pine-core/{p-7fcf3d37.entry.js → p-f71d71ca.entry.js} +1 -1
  339. package/dist/pine-core/p-f834cb07.system.entry.js +1 -0
  340. package/dist/pine-core/p-f9063262.system.entry.js +1 -0
  341. package/dist/pine-core/p-f99bd77f.entry.js +1 -0
  342. package/dist/pine-core/p-wB2y8gR7.system.js +1 -0
  343. package/dist/pine-core/pine-core.esm.js +1 -1
  344. package/dist/pine-core/pine-core.js +1 -1
  345. package/dist/types/components/pds-combobox/combobox-interface.d.ts +26 -0
  346. package/dist/types/components/pds-combobox/grouped-options-panel.d.ts +17 -0
  347. package/dist/types/components/pds-combobox/pds-combobox.d.ts +12 -2
  348. package/dist/types/components/pds-datepicker/calendar-portal.d.ts +0 -7
  349. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu.d.ts +4 -0
  350. package/dist/types/components/pds-radio-group/pds-radio-group.d.ts +8 -0
  351. package/dist/types/components/pds-text/pds-text.d.ts +4 -0
  352. package/dist/types/components/pds-tooltip/pds-tooltip.d.ts +1 -0
  353. package/dist/types/components.d.ts +2 -2
  354. package/dist/types/utils/portal-target.d.ts +17 -0
  355. package/dist/types/utils/truncation-tooltip.d.ts +5 -2
  356. package/dist/vscode.html-data.json +3 -3
  357. package/hydrate/index.js +422 -146
  358. package/hydrate/index.mjs +422 -146
  359. package/package.json +2 -2
  360. package/dist/esm-es5/tabbable-DCKBKRUy.js +0 -1
  361. package/dist/esm-es5/truncation-tooltip-D_gvhB9r.js +0 -1
  362. package/dist/pine-core/p-07b4524e.entry.js +0 -1
  363. package/dist/pine-core/p-08bbd3e6.system.entry.js +0 -1
  364. package/dist/pine-core/p-22ae92f7.system.entry.js +0 -1
  365. package/dist/pine-core/p-272b24ad.system.entry.js +0 -1
  366. package/dist/pine-core/p-38b87aa2.system.entry.js +0 -1
  367. package/dist/pine-core/p-3afb1208.entry.js +0 -1
  368. package/dist/pine-core/p-463a29fa.entry.js +0 -1
  369. package/dist/pine-core/p-568a9a79.system.entry.js +0 -1
  370. package/dist/pine-core/p-5ce5836e.system.entry.js +0 -1
  371. package/dist/pine-core/p-5f3242c8.system.entry.js +0 -1
  372. package/dist/pine-core/p-60e3b1af.entry.js +0 -1
  373. package/dist/pine-core/p-7d3a20ba.entry.js +0 -1
  374. package/dist/pine-core/p-9201b497.system.entry.js +0 -1
  375. package/dist/pine-core/p-94597b73.entry.js +0 -1
  376. package/dist/pine-core/p-97be00f4.system.entry.js +0 -1
  377. package/dist/pine-core/p-9a8971e2.system.entry.js +0 -1
  378. package/dist/pine-core/p-9a8d2985.system.entry.js +0 -3
  379. package/dist/pine-core/p-CirzxZ33.js +0 -1
  380. package/dist/pine-core/p-D52aRqFx.system.js +0 -1
  381. package/dist/pine-core/p-DCKBKRUy.js +0 -1
  382. package/dist/pine-core/p-DXO1yd32.system.js +0 -1
  383. package/dist/pine-core/p-a2078add.entry.js +0 -1
  384. package/dist/pine-core/p-a48b025a.system.entry.js +0 -1
  385. package/dist/pine-core/p-ad3b1ec3.entry.js +0 -1
  386. package/dist/pine-core/p-b017eb99.system.entry.js +0 -1
  387. package/dist/pine-core/p-b6edfdfe.entry.js +0 -2
  388. package/dist/pine-core/p-c02a32ec.entry.js +0 -1
  389. package/dist/pine-core/p-c1da80e5.entry.js +0 -1
  390. package/dist/pine-core/p-c233866c.system.entry.js +0 -1
  391. package/dist/pine-core/p-d7930540.entry.js +0 -1
  392. package/dist/pine-core/p-dfadfcd1.entry.js +0 -1
  393. package/dist/pine-core/p-e70cb112.system.entry.js +0 -1
  394. package/dist/pine-core/p-eb93cc6e.entry.js +0 -1
  395. package/dist/pine-core/p-ebf74c43.system.entry.js +0 -1
  396. package/dist/pine-core/p-fc743f6e.entry.js +0 -1
  397. package/dist/pine-core/p-wXfuz0Bd.system.js +0 -1
  398. /package/dist/esm-es5/{index-m3pqpeWg.js → index-DvN3tyZp.js} +0 -0
  399. /package/dist/pine-core/{p-m3pqpeWg.js → p-DvN3tyZp.js} +0 -0
  400. /package/dist/pine-core/{p-DaCT2ssj.system.js → p-vFsJv75D.system.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BsWY_xEJ.js');
3
+ var index = require('./index-D9iJuJCP.js');
4
4
  var attributes = require('./attributes-CW49XqaL.js');
5
5
  var keepHydrated = require('./keep-hydrated-AKoh0DG4.js');
6
6
  var floatingUi_dom = require('./floating-ui.dom-Dw41zbyY.js');
@@ -109,7 +109,7 @@ const PdsDropdownMenu = class {
109
109
  this.currentFocusIndex = -1;
110
110
  // Return focus to trigger
111
111
  if (this.isFocusInMenu()) {
112
- this.triggerEl.focus();
112
+ this.focusTrigger();
113
113
  }
114
114
  };
115
115
  // Handle click on the trigger element
@@ -160,6 +160,14 @@ const PdsDropdownMenu = class {
160
160
  const focused = this.host.getRootNode().activeElement;
161
161
  return focused != null && this.host.contains(focused);
162
162
  }
163
+ // A trigger whose host can't take focus itself, such as pds-chip, passes it to the control inside.
164
+ focusTrigger() {
165
+ var _a, _b;
166
+ this.triggerEl.focus();
167
+ if (this.host.getRootNode().activeElement === this.triggerEl)
168
+ return;
169
+ (_b = (_a = this.triggerEl.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('button, [href], [tabindex]:not([tabindex="-1"])')) === null || _b === void 0 ? void 0 : _b.focus();
170
+ }
163
171
  // Check if a menu item is disabled (handles both component and raw elements)
164
172
  isItemDisabled(item) {
165
173
  const tagName = item.tagName.toLowerCase();
@@ -255,6 +263,23 @@ const PdsDropdownMenu = class {
255
263
  this.focusItemByIndex(prevIndex);
256
264
  }
257
265
  }
266
+ // Unlike the arrow keys, Tab stops at either end of the menu instead of wrapping.
267
+ adjacentEnabledIndex(fromIndex, step) {
268
+ for (let index = fromIndex + step; index >= 0 && index < this.menuItems.length; index += step) {
269
+ if (!this.isItemDisabled(this.menuItems[index]))
270
+ return index;
271
+ }
272
+ return -1;
273
+ }
274
+ // An enabled item can still refuse focus (hidden, or a link with no href), so each one is tried in turn.
275
+ focusAdjacentItem(fromIndex, step) {
276
+ for (let index = this.adjacentEnabledIndex(fromIndex, step); index !== -1; index = this.adjacentEnabledIndex(index, step)) {
277
+ this.focusItemByIndex(index);
278
+ if (this.getFocusedItemIndex() === index)
279
+ return true;
280
+ }
281
+ return false;
282
+ }
258
283
  // Escape is taken in document's capture phase, before a modal around the menu hears it on
259
284
  // document and closes too.
260
285
  handleEscapeKeyDown(event) {
@@ -263,6 +288,28 @@ const PdsDropdownMenu = class {
263
288
  event.preventDefault();
264
289
  this.closeDropdown();
265
290
  }
291
+ // Taken in the capture phase, so a modal or popover around the menu that traps Tab finds the key
292
+ // already handled, or focus back on the trigger with the items hidden.
293
+ handleTabKeyDown(event) {
294
+ if (!this.isOpen || event.key !== 'Tab' || event.defaultPrevented)
295
+ return;
296
+ const currentIndex = this.getFocusedItemIndex();
297
+ if (currentIndex === -1) {
298
+ // The menu sits after the trigger, so Shift+Tab from the trigger leaves it behind. So does Shift+Tab
299
+ // from outside the menu, where focus stays after a mouse open in Safari.
300
+ if (event.shiftKey && (document.activeElement === this.triggerEl || !this.isFocusInMenu()))
301
+ this.closeDropdown();
302
+ return;
303
+ }
304
+ if (this.focusAdjacentItem(currentIndex, event.shiftKey ? -1 : 1)) {
305
+ event.preventDefault();
306
+ return;
307
+ }
308
+ // Past either end, closing moves focus to the trigger. Shift+Tab stays there; Tab carries on past it.
309
+ if (event.shiftKey)
310
+ event.preventDefault();
311
+ this.closeDropdown();
312
+ }
266
313
  // Handle keyboard events for the dropdown
267
314
  handleKeyDown(event) {
268
315
  if (!this.isOpen)
@@ -302,54 +349,19 @@ const PdsDropdownMenu = class {
302
349
  }
303
350
  }
304
351
  break;
305
- case 'Tab':
306
- if (event.shiftKey) {
307
- // Let Shift+Tab navigate naturally from first item to trigger
308
- // For all other items, move to previous item
309
- const currentIndex = this.getFocusedItemIndex();
310
- if (currentIndex > 0) {
311
- // If not on first item, prevent default and go to previous item
312
- event.preventDefault();
313
- this.focusPreviousItem(); // Use our method that skips disabled items
314
- }
315
- // If on first item or no item, let natural tab order move back to trigger
352
+ case 'Tab': {
353
+ // Tab from an item is handled in handleTabKeyDown; from anywhere else it moves into the menu.
354
+ if (event.shiftKey || this.getFocusedItemIndex() !== -1)
355
+ break;
356
+ if (this.focusAdjacentItem(-1, 1)) {
357
+ event.preventDefault();
316
358
  }
317
359
  else {
318
- // Forward Tab navigation
319
- const activeElement = document.activeElement;
320
- const isTriggerFocused = activeElement === this.triggerEl;
321
- const currentIndex = this.getFocusedItemIndex();
322
- if (isTriggerFocused && this.menuItems.length > 0) {
323
- // If trigger is focused, move to first non-disabled menu item
324
- event.preventDefault();
325
- // Find the first non-disabled item
326
- let firstFocusableIndex = 0;
327
- while (firstFocusableIndex < this.menuItems.length && this.isItemDisabled(this.menuItems[firstFocusableIndex])) {
328
- firstFocusableIndex++;
329
- }
330
- if (firstFocusableIndex < this.menuItems.length) {
331
- this.focusItemByIndex(firstFocusableIndex);
332
- }
333
- }
334
- else if (currentIndex === -1 && this.menuItems.length > 0) {
335
- // If no menu item is focused, focus the first non-disabled one
336
- event.preventDefault();
337
- // Find the first non-disabled item
338
- let firstFocusableIndex = 0;
339
- while (firstFocusableIndex < this.menuItems.length && this.isItemDisabled(this.menuItems[firstFocusableIndex])) {
340
- firstFocusableIndex++;
341
- }
342
- if (firstFocusableIndex < this.menuItems.length) {
343
- this.focusItemByIndex(firstFocusableIndex);
344
- }
345
- }
346
- else if (currentIndex !== -1) {
347
- // Use our method that skips disabled items
348
- event.preventDefault();
349
- this.focusNextItem();
350
- }
360
+ // With no item to move to, Tab carries on past the menu, as it does past the last item.
361
+ this.closeDropdown();
351
362
  }
352
363
  break;
364
+ }
353
365
  }
354
366
  }
355
367
  // Handle clicks outside the dropdown to close it
@@ -359,7 +371,7 @@ const PdsDropdownMenu = class {
359
371
  }
360
372
  }
361
373
  render() {
362
- return (index.h(index.Host, { key: '0ed3d8ee889a5423ca9de66a86791d084f75abf0', id: this.componentId }, index.h("slot", { key: '6bab71652d6afe094075623d3a48641a4d89b232', name: "trigger", onSlotchange: this.handleTriggerSlotChange }), index.h("pds-box", { key: 'fcef0667f999ae5b8cd03eb94a0db0be7be502cb', "border-radius": "sm", display: "flex", direction: "column", class: "pds-dropdown-menu--panel is-hidden", shadow: "100", part: "menu-panel" }, index.h("div", { key: 'c78d5bd7e48c5483b12171341271f9132f4b2ff9', class: { 'pds-dropdown-menu__header': true, 'is-hidden': !this.hasHeader } }, index.h("slot", { key: '6464994260720d6046da548f4aad0896965cc47c', name: "header", onSlotchange: this.handleHeaderSlotChange })), index.h("div", { key: '3e97dfc4e1911f91ce8917faf981d436e71e5c24', class: "pds-dropdown-menu__items", role: "menu", "aria-orientation": "vertical" }, index.h("slot", { key: 'dfd77a8b73df5ce9eef3e661d3f9501cb8bfdba2', onSlotchange: this.handleSlotChange })))));
374
+ return (index.h(index.Host, { key: 'aa4ce84354cf87638ee46fd7ed69520228b7e656', id: this.componentId }, index.h("slot", { key: '948800e67d18c8c6cc9e77ef3aeab635c5035453', name: "trigger", onSlotchange: this.handleTriggerSlotChange }), index.h("pds-box", { key: '3ce2a2879b14aad975cea8ae72fcbf8c3abcf20c', "border-radius": "sm", display: "flex", direction: "column", class: "pds-dropdown-menu--panel is-hidden", shadow: "100", part: "menu-panel" }, index.h("div", { key: 'ad25fbf4f3c7a24653c229e64fe2ce893a92e4c8', class: { 'pds-dropdown-menu__header': true, 'is-hidden': !this.hasHeader } }, index.h("slot", { key: '35a5903543e08577997b456bcd312bdd009fd8fc', name: "header", onSlotchange: this.handleHeaderSlotChange })), index.h("div", { key: 'a9593adacf047918c1d87494f8c951a2a4a5f76f', class: "pds-dropdown-menu__items", role: "menu", "aria-orientation": "vertical" }, index.h("slot", { key: '8d2def1cc7020608220099f4ced0f44e9838cce8', onSlotchange: this.handleSlotChange })))));
363
375
  }
364
376
  get host() { return index.getElement(this); }
365
377
  };
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BsWY_xEJ.js');
3
+ var index = require('./index-D9iJuJCP.js');
4
4
  var scroll = require('./scroll-2XcoE_6Q.js');
5
- var index$1 = require('./index-Do70atou.js');
5
+ var index$1 = require('./index-BDnbr0DK.js');
6
6
  require('./keep-hydrated-AKoh0DG4.js');
7
7
 
8
8
  const pdsFilterCss = () => `:host{--box-shadow-focus:0 0 0 1px var(--pine-color-background-container), 0 0 0 3px var(--pine-color-focus-ring);display:inline-block;position:relative}.pds-filter__trigger{-ms-flex-align:center;align-items:center;anchor-name:--filter-trigger;background:var(--pine-color-background-container);border:var(--pine-border);border-radius:var(--pine-dimension-100);-webkit-box-shadow:var(--pine-box-shadow-050);box-shadow:var(--pine-box-shadow-050);-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--pine-color-text-tertiary);cursor:pointer;display:-ms-inline-flexbox;display:inline-flex;font-family:var(--pine-font-family-inter);font-size:var(--pine-font-size-100);font-weight:var(--pine-font-weight-400);gap:var(--pine-dimension-050);letter-spacing:var(--pine-letter-spacing-114);line-height:var(--pine-line-height-150);padding:var(--pine-dimension-025) var(--pine-dimension-125);position:relative;-webkit-transition:all var(--pine-motion-duration-base) ease;transition:all var(--pine-motion-duration-base) ease}.pds-filter__trigger pds-icon{block-size:var(--pine-font-size-100);color:var(--pine-color-text-secondary);-ms-flex-negative:0;flex-shrink:0;inline-size:var(--pine-font-size-100)}.pds-filter__trigger:hover,.pds-filter__trigger.pds-filter__trigger--open{background-color:var(--pine-color-background-subtle);border-color:var(--pine-color-border-hover);color:var(--pine-color-text-hover)}.pds-filter__trigger:hover pds-icon,.pds-filter__trigger.pds-filter__trigger--open pds-icon{color:var(--pine-color-text-secondary)}.pds-filter__trigger:focus-visible{-webkit-box-shadow:var(--box-shadow-focus);box-shadow:var(--box-shadow-focus);outline:none}.pds-filter__trigger:disabled{cursor:not-allowed;opacity:0.5}.pds-filter__trigger--selected{background-color:var(--pine-color-purple-050);border-color:var(--pine-color-purple-500);color:var(--pine-color-purple-600)}.pds-filter__trigger--selected pds-icon{color:var(--pine-color-purple-600)}.pds-filter__trigger--selected:hover,.pds-filter__trigger--selected.pds-filter__trigger--open{background-color:var(--pine-color-purple-100);border-color:var(--pine-color-purple-500);color:var(--pine-color-purple-600)}.pds-filter__trigger--selected:hover pds-icon,.pds-filter__trigger--selected.pds-filter__trigger--open pds-icon{color:var(--pine-color-purple-600)}.pds-filter__trigger--selected:focus-visible{-webkit-box-shadow:var(--box-shadow-focus);box-shadow:var(--box-shadow-focus);outline:none}.pds-filter__trigger--more{background-color:var(--pine-color-background-container-hover);border:var(--pine-border-width-thin) dashed var(--pine-color-border);color:var(--pine-color-text-tertiary)}.pds-filter__trigger--more pds-icon{color:var(--pine-color-text-secondary)}.pds-filter__trigger--more:hover,.pds-filter__trigger--more.pds-filter__trigger--open{background-color:var(--pine-color-background-subtle);border-color:var(--pine-color-border-hover);color:var(--pine-color-text-hover)}.pds-filter__trigger--more:hover pds-icon,.pds-filter__trigger--more.pds-filter__trigger--open pds-icon{color:var(--pine-color-text-secondary)}.pds-filter__trigger--more:focus-visible{-webkit-box-shadow:var(--box-shadow-focus);box-shadow:var(--box-shadow-focus);outline:none}.pds-filter__trigger--clear{background:transparent;border:var(--pine-border-width-thin) solid transparent;border-radius:var(--pine-dimension-100);-webkit-box-shadow:none;box-shadow:none;color:var(--pine-color-purple-600)}.pds-filter__trigger--clear pds-icon{color:var(--pine-color-purple-600)}.pds-filter__trigger--clear:hover{background-color:var(--pine-color-purple-100);border-color:var(--pine-color-purple-100);color:var(--pine-color-purple-600)}.pds-filter__trigger--clear:hover pds-icon{color:var(--pine-color-purple-600)}.pds-filter__trigger--clear:focus-visible{-webkit-box-shadow:var(--box-shadow-focus);box-shadow:var(--box-shadow-focus);outline:none}.pds-filter__button-content{-ms-flex-align:center;align-items:center;display:-ms-inline-flexbox;display:inline-flex;gap:var(--pine-dimension-050);max-inline-size:148px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pds-filter__button-text{line-height:var(--pine-line-height-150);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pds-filter__dropdown-icon{block-size:var(--pine-dimension-200);-ms-flex-negative:0;flex-shrink:0;inline-size:var(--pine-dimension-200)}.pds-filter__popover{background-color:var(--pine-color-background-overlay);border:0;border-radius:var(--pine-dimension-100);-webkit-box-shadow:var(--pine-box-shadow-100);box-shadow:var(--pine-box-shadow-100);display:none;inline-size:228px;inset:unset;padding:var(--pine-dimension-100);z-index:var(--pine-z-index-overlay);}.pds-filter__popover:popover-open,.pds-filter__popover.is-open{display:block}.pds-filter__popover{}@supports (anchor-name: --test){.pds-filter__popover{inset-block-start:calc(anchor(--filter-trigger bottom) + var(--pine-dimension-100));inset-inline-start:anchor(--filter-trigger start);position:fixed;position-anchor:--filter-trigger;}.pds-filter__popover.popover-flip-horizontal{inset-inline-end:anchor(--filter-trigger end);inset-inline-start:auto}.pds-filter__popover.popover-flip-vertical{inset-block-start:anchor(--filter-trigger top);-webkit-transform:translateY(calc(-100% - var(--pine-dimension-100)));transform:translateY(calc(-100% - var(--pine-dimension-100)))}.pds-filter__popover.popover-flip-horizontal.popover-flip-vertical{inset-block-start:anchor(--filter-trigger top);inset-inline-end:anchor(--filter-trigger end);inset-inline-start:auto;-webkit-transform:translateY(calc(-100% - var(--pine-dimension-100)));transform:translateY(calc(-100% - var(--pine-dimension-100)))}.pds-filter__popover{}.pds-filter__popover.is-open.popover-flip-horizontal{inset-inline-end:anchor(--filter-trigger end);inset-inline-start:auto}.pds-filter__popover.is-open.popover-flip-vertical{inset-block-start:anchor(--filter-trigger top);-webkit-transform:translateY(calc(-100% - var(--pine-dimension-100)));transform:translateY(calc(-100% - var(--pine-dimension-100)))}.pds-filter__popover.is-open.popover-flip-horizontal.popover-flip-vertical{inset-block-start:anchor(--filter-trigger top);inset-inline-end:anchor(--filter-trigger end);inset-inline-start:auto;-webkit-transform:translateY(calc(-100% - var(--pine-dimension-100)));transform:translateY(calc(-100% - var(--pine-dimension-100)))}}`;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BsWY_xEJ.js');
3
+ var index = require('./index-D9iJuJCP.js');
4
4
  require('./keep-hydrated-AKoh0DG4.js');
5
5
 
6
6
  const pdsFiltersCss = () => `:host{display:block}.pds-filters{-ms-flex-align:start;align-items:flex-start;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:var(--pine-dimension-100)}`;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BsWY_xEJ.js');
3
+ var index = require('./index-D9iJuJCP.js');
4
4
  require('./keep-hydrated-AKoh0DG4.js');
5
5
 
6
6
  let missingAssetPathWarning = false;
@@ -345,12 +345,16 @@ const getSvgContent = (url, sanitize = false) => {
345
345
 
346
346
  const pdsIconCss = () => `:host{--dimension-icon-height:16px;--dimension-icon-width:16px;--color-icon-fill:currentColor;contain:strict;display:inline-block;fill:var(--color-icon-fill);-ms-flex-negative:0;flex-shrink:0;height:var(--dimension-icon-height);width:var(--dimension-icon-width)}:host .pdsicon{fill:var(--color-icon-fill)}.pds-icon-fill-none{fill:none}.icon-inner,.pds-icon,svg{display:block;height:100%;width:100%}:host(.flip-rtl):host-context([dir=rtl]) .icon-inner{-webkit-transform:scaleX(-1);transform:scaleX(-1)}:host(.flip-rtl:dir(rtl)) .icon-inner{-webkit-transform:scaleX(-1);transform:scaleX(-1)}:host(.flip-rtl:dir(ltr)) .icon-inner{-webkit-transform:scaleX(1);transform:scaleX(1)}`;
347
347
 
348
+ // The attributes that give an icon its own accessible name.
349
+ const NAMING_ATTRIBUTES = ['aria-label', 'aria-labelledby'];
348
350
  const PdsIcon = class {
349
351
  constructor(hostRef) {
350
352
  index.registerInstance(this, hostRef);
351
353
  this.didLoadIcon = false;
352
354
  this.iconName = null;
355
+ this.warnedUnnamedFocusable = false;
353
356
  this.inheritedAttributes = {}; // eslint-disable-line @typescript-eslint/no-explicit-any
357
+ this.isFocusable = false;
354
358
  this.isVisible = false;
355
359
  /**
356
360
  * The size of the icon. This can be
@@ -359,10 +363,6 @@ const PdsIcon = class {
359
363
  *
360
364
  */
361
365
  this.size = 'regular';
362
- this.hasAriaHidden = () => {
363
- const { el } = this;
364
- return el.hasAttribute('aria-hidden') && el.getAttribute('aria-hidden') === 'true';
365
- };
366
366
  }
367
367
  iconSize() {
368
368
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -401,9 +401,9 @@ const PdsIcon = class {
401
401
  }, 500);
402
402
  }
403
403
  componentWillLoad() {
404
- this.inheritedAttributes = inheritAttributes(this.el, ['aria-label']);
404
+ this.inheritedAttributes = inheritAttributes(this.el, NAMING_ATTRIBUTES);
405
+ this.isFocusable = this.el.hasAttribute('tabindex');
405
406
  this.setCSSVariables();
406
- this.setupInitialAriaLabel();
407
407
  }
408
408
  setCSSVariables() {
409
409
  var _a;
@@ -412,6 +412,7 @@ const PdsIcon = class {
412
412
  this.el.style.setProperty(`--color-icon-fill`, (_a = normalizeColorValue(this.color)) !== null && _a !== void 0 ? _a : 'currentColor');
413
413
  }
414
414
  connectedCallback() {
415
+ this.observeNamingAttributes();
415
416
  // Handle re-connection during client-side navigation
416
417
  if (!this.isVisible && !this.svgContent) {
417
418
  this.waitUntilVisible(this.el, '50px', () => {
@@ -430,14 +431,16 @@ const PdsIcon = class {
430
431
  this.io.disconnect();
431
432
  this.io = undefined;
432
433
  }
434
+ if (this.mo) {
435
+ this.mo.disconnect();
436
+ this.mo = undefined;
437
+ }
433
438
  }
434
439
  updateStyles() {
435
440
  this.setCSSVariables();
436
441
  }
437
442
  onIconPropertyChange() {
438
443
  this.loadIcon();
439
- // Update aria-label when icon properties change
440
- this.setupInitialAriaLabel();
441
444
  }
442
445
  loadIcon() {
443
446
  // Reset load state when URL changes
@@ -470,26 +473,56 @@ const PdsIcon = class {
470
473
  this.iconName = getName(this.name, this.icon);
471
474
  }
472
475
  render() {
473
- const { ariaLabel, flipRtl, iconName, inheritedAttributes } = this;
476
+ const { flipRtl, iconName, inheritedAttributes } = this;
474
477
  const shouldIconAutoFlip = iconName
475
478
  ? shouldRtlFlipIcon(iconName, this.el) && flipRtl !== false
476
479
  : false;
477
480
  const shouldFlip = flipRtl || shouldIconAutoFlip;
478
- // Use inherited aria-label if provided, otherwise fall back to auto-generated one
479
- const finalAriaLabel = inheritedAttributes['aria-label'] || ariaLabel;
480
- return (index.h(index.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), this.svgContent ? (index.h("div", { class: "icon-inner", innerHTML: this.svgContent })) : (index.h("div", { class: "icon-inner" }))));
481
+ // An icon is decorative unless the author names it. A decorative icon is hidden
482
+ // from assistive technology, so it contributes nothing to the accessible name of
483
+ // the button or link it sits inside. Naming it from `name` instead would put an
484
+ // icon id ("rocket-tone") into that control's name, where neither a screen reader
485
+ // nor a page-inspecting agent can tell it apart from the real label.
486
+ //
487
+ // A focusable icon stays exposed even without a name: hiding something that
488
+ // takes focus leaves keyboard users on an element a screen reader can't see.
489
+ const isNamed = NAMING_ATTRIBUTES.some((attr) => inheritedAttributes[attr] !== undefined);
490
+ const isDecorative = !isNamed && !this.isFocusable;
491
+ return (index.h(index.Host
492
+ // undefined, not null: null would strip an aria-hidden the author set on a
493
+ // named icon once the component re-renders.
494
+ , Object.assign({ key: '6597475535756e7174072dc25c982137724d439d', "aria-hidden": isDecorative ? 'true' : undefined, alt: "", role: isDecorative ? null : 'img', class: Object.assign(Object.assign({}, createColorClasses(this.color)), { 'flip-rtl': shouldFlip, 'icon-rtl': shouldFlip && isRTL(this.el) }) }, inheritedAttributes), this.svgContent ? (index.h("div", { class: "icon-inner", innerHTML: this.svgContent })) : (index.h("div", { class: "icon-inner" }))));
481
495
  }
482
496
  /*****
483
497
  * Private Methods
484
498
  ****/
485
- setupInitialAriaLabel() {
486
- // Only set aria-label during initial load if one isn't already provided
487
- if (!this.inheritedAttributes['aria-label']) {
488
- const iconName = getName(this.name, this.icon);
489
- if (iconName) {
490
- this.ariaLabel = iconName.replace(/\-/g, ' ');
491
- }
492
- }
499
+ // The hide/expose decision reads the naming attributes and tabindex, which can
500
+ // change after load (a React prop going from undefined to a string, or
501
+ // setAttribute from script). Re-read them when they do.
502
+ observeNamingAttributes() {
503
+ if (typeof MutationObserver === 'undefined' || this.mo)
504
+ return;
505
+ this.mo = new MutationObserver(() => {
506
+ const next = Object.assign({}, this.inheritedAttributes);
507
+ let changed = false;
508
+ NAMING_ATTRIBUTES.forEach((attr) => {
509
+ var _a;
510
+ const value = (_a = this.el.getAttribute(attr)) !== null && _a !== void 0 ? _a : undefined;
511
+ if (next[attr] !== value) {
512
+ if (value === undefined) {
513
+ delete next[attr];
514
+ }
515
+ else {
516
+ next[attr] = value;
517
+ }
518
+ changed = true;
519
+ }
520
+ });
521
+ if (changed)
522
+ this.inheritedAttributes = next;
523
+ this.isFocusable = this.el.hasAttribute('tabindex');
524
+ });
525
+ this.mo.observe(this.el, { attributes: true, attributeFilter: [...NAMING_ATTRIBUTES, 'tabindex'] });
493
526
  }
494
527
  waitUntilVisible(el, rootMargin, cb) {
495
528
  if (typeof window !== 'undefined' && (window).IntersectionObserver) {
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BsWY_xEJ.js');
3
+ var index = require('./index-D9iJuJCP.js');
4
4
  require('./keep-hydrated-AKoh0DG4.js');
5
5
 
6
6
  const pdsImageCss = () => `:host{--dimension-aspect-ratio:auto;display:inline-block}img{aspect-ratio:var(--dimension-aspect-ratio);display:block;height:auto;max-width:100%}`;
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BsWY_xEJ.js');
3
+ var index = require('./index-D9iJuJCP.js');
4
4
  var form = require('./form-MhwfKTuo.js');
5
5
  var attributes = require('./attributes-CW49XqaL.js');
6
6
  var utils = require('./utils-BhRmyxT8.js');
7
- var index$1 = require('./index-Do70atou.js');
7
+ var index$1 = require('./index-BDnbr0DK.js');
8
8
  require('./keep-hydrated-AKoh0DG4.js');
9
9
 
10
10
  const pdsInputTokensCss = () => `:host{--pine-input-color-background-danger:var(--pine-color-red-050)}`;
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BsWY_xEJ.js');
3
+ var index = require('./index-D9iJuJCP.js');
4
4
  var utils = require('./utils-BhRmyxT8.js');
5
- var index$1 = require('./index-Do70atou.js');
5
+ var index$1 = require('./index-BDnbr0DK.js');
6
6
  require('./keep-hydrated-AKoh0DG4.js');
7
7
 
8
- const pdsLinkCss = () => `:host{display:inline}:host pds-icon{-webkit-margin-start:var(--pine-dimension-2xs);margin-inline-start:var(--pine-dimension-2xs)}.pds-link{-ms-flex-align:center;align-items:center;color:var(--color, var(--pds-context-link-color, var(--pine-color-text)));display:-ms-inline-flexbox;display:inline-flex;font-weight:var(--pine-font-weight-medium)}.pds-link:focus-visible{border-radius:var(--pine-dimension-2xs);outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width-thick);position:relative}.pds-link:hover{color:var(--color, var(--pds-context-link-color-hover, var(--pine-color-text-hover)));text-decoration:none}:host([color=secondary]) .pds-link{color:var(--pine-color-text-primary)}:host([color=secondary]) .pds-link:hover{color:var(--pine-color-text-inverse-secondary)}:host([color=accent]) .pds-link{color:var(--pine-color-accent)}:host([color=accent]) .pds-link:hover{color:var(--pine-color-accent-hover)}:host([color=danger]) .pds-link{color:var(--pine-color-danger)}:host([color=danger]) .pds-link:hover{color:var(--pine-color-danger-hover)}.pds-link--sm{font-size:var(--pine-font-size-body-xs)}.pds-link--sm pds-icon{height:var(--pine-dimension-xs);width:var(--pine-dimension-xs)}.pds-link--md{font-size:var(--pine-font-size-body-sm)}.pds-link--md pds-icon{height:var(--pine-dimension-xs);width:var(--pine-dimension-xs)}.pds-link--lg{font-size:var(--pine-font-size-body-md)}.pds-link--lg pds-icon{height:var(--pine-dimension-sm);width:var(--pine-dimension-sm)}.pds-link--plain{text-decoration:none}.pds-link--plain:hover{color:var(--color, var(--pds-context-link-color-hover, var(--pine-color-text-hover)));text-decoration:underline}:host([active]) .pds-link{color:var(--pds-context-link-color, var(--pine-color-text-strong));text-decoration:underline}:host([active]) .pds-link:hover{color:var(--pds-context-link-color-hover, var(--pine-color-text-strong));text-decoration:underline}`;
8
+ const pdsLinkCss = () => `:host{display:inline}:host pds-icon{-webkit-margin-start:var(--pine-dimension-2xs);margin-inline-start:var(--pine-dimension-2xs)}.pds-link{-ms-flex-align:center;align-items:center;color:var(--color, var(--pds-context-link-color, var(--pine-color-text)));display:-ms-inline-flexbox;display:inline-flex;font-weight:var(--pine-font-weight-medium)}.pds-link:focus-visible{border-radius:var(--pine-dimension-2xs);isolation:isolate;outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width-thick)}.pds-link:hover{color:var(--color, var(--pds-context-link-color-hover, var(--pine-color-text-hover)));text-decoration:none}:host([color=secondary]) .pds-link{color:var(--pine-color-text-primary)}:host([color=secondary]) .pds-link:hover{color:var(--pine-color-text-inverse-secondary)}:host([color=accent]) .pds-link{color:var(--pine-color-accent)}:host([color=accent]) .pds-link:hover{color:var(--pine-color-accent-hover)}:host([color=danger]) .pds-link{color:var(--pine-color-danger)}:host([color=danger]) .pds-link:hover{color:var(--pine-color-danger-hover)}.pds-link--sm{font-size:var(--pine-font-size-body-xs)}.pds-link--sm pds-icon{height:var(--pine-dimension-xs);width:var(--pine-dimension-xs)}.pds-link--md{font-size:var(--pine-font-size-body-sm)}.pds-link--md pds-icon{height:var(--pine-dimension-xs);width:var(--pine-dimension-xs)}.pds-link--lg{font-size:var(--pine-font-size-body-md)}.pds-link--lg pds-icon{height:var(--pine-dimension-sm);width:var(--pine-dimension-sm)}.pds-link--plain{text-decoration:none}.pds-link--plain:hover{color:var(--color, var(--pds-context-link-color-hover, var(--pine-color-text-hover)));text-decoration:underline}:host([active]) .pds-link{color:var(--pds-context-link-color, var(--pine-color-text-strong));text-decoration:underline}:host([active]) .pds-link:hover{color:var(--pds-context-link-color-hover, var(--pine-color-text-strong));text-decoration:underline}`;
9
9
 
10
10
  // Used when `externalLabel` is unset; an empty string hides the icon instead.
11
11
  const DEFAULT_EXTERNAL_LABEL = '(opens in a new tab)';
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BsWY_xEJ.js');
3
+ var index = require('./index-D9iJuJCP.js');
4
4
  var attributes = require('./attributes-CW49XqaL.js');
5
5
  var reflectedAttributeDefault = require('./reflected-attribute-default-DVYHG6O1.js');
6
6
  require('./keep-hydrated-AKoh0DG4.js');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BsWY_xEJ.js');
3
+ var index = require('./index-D9iJuJCP.js');
4
4
  var reconnectedContent = require('./reconnected-content-CpnEQcTp.js');
5
5
  require('./keep-hydrated-AKoh0DG4.js');
6
6
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BsWY_xEJ.js');
3
+ var index = require('./index-D9iJuJCP.js');
4
4
  var reconnectedContent = require('./reconnected-content-CpnEQcTp.js');
5
5
  require('./keep-hydrated-AKoh0DG4.js');
6
6
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BsWY_xEJ.js');
3
+ var index = require('./index-D9iJuJCP.js');
4
4
  var reconnectedContent = require('./reconnected-content-CpnEQcTp.js');
5
5
  require('./keep-hydrated-AKoh0DG4.js');
6
6
 
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BsWY_xEJ.js');
3
+ var index = require('./index-D9iJuJCP.js');
4
4
  var closest = require('./closest-D0qyYtJ3.js');
5
- var tabbable = require('./tabbable-CddSt_Hi.js');
5
+ var tabbable = require('./tabbable-BrrrGvdG.js');
6
6
  var reconnectedContent = require('./reconnected-content-CpnEQcTp.js');
7
7
  require('./keep-hydrated-AKoh0DG4.js');
8
8
 
9
- const pdsModalCss = () => `.pds-modal__backdrop{-ms-flex-align:start;align-items:flex-start;background-color:rgba(0, 0, 0, 0.4);border:0;display:-ms-flexbox;display:flex;height:100%;inset:0;-ms-flex-pack:center;justify-content:center;margin:0;max-height:100%;max-width:100%;opacity:0;padding:0;position:fixed;-webkit-transition:opacity var(--pine-motion-duration-base) var(--pine-motion-easing-in), visibility var(--pine-motion-duration-base) var(--pine-motion-easing-in);transition:opacity var(--pine-motion-duration-base) var(--pine-motion-easing-in), visibility var(--pine-motion-duration-base) var(--pine-motion-easing-in);visibility:hidden;width:100%;z-index:var(--pine-z-index-modal)}@supports ((-webkit-backdrop-filter: blur(3px)) or (backdrop-filter: blur(3px))){.pds-modal__backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}}pds-modal .pds-modal__backdrop{z-index:var(--pine-z-index-priority)}.pds-modal__backdrop::-webkit-backdrop{background:transparent}.pds-modal__backdrop::-ms-backdrop{background:transparent}.pds-modal__backdrop::backdrop{background:transparent}.pds-modal__backdrop[aria-modal=false]{overflow:auto;-ms-scroll-chaining:none;overscroll-behavior:contain}@supports ((-webkit-backdrop-filter: blur(3px)) or (backdrop-filter: blur(3px))){.pds-modal__backdrop[aria-modal=false]{-webkit-backdrop-filter:none;backdrop-filter:none}.pds-modal__backdrop[aria-modal=false]::before{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);content:"";inset:0;position:fixed;z-index:-1}}.pds-modal__backdrop.open{opacity:1;-webkit-transition-timing-function:var(--pine-motion-easing-out);transition-timing-function:var(--pine-motion-easing-out);visibility:visible}.pds-modal{background:var(--pine-color-background-overlay);border-radius:var(--pine-dimension-sm);-webkit-box-shadow:var(--pine-box-shadow-400);box-shadow:var(--pine-box-shadow-400);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin:var(--pine-dimension-md);max-height:none;width:100%}.pds-modal.pds-modal--scrollable{max-height:calc(100vh - (5vh + 96px))}@supports (height: 100dvh){.pds-modal.pds-modal--scrollable{max-height:calc(100dvh - (5dvh + 96px))}}@media (min-width: 992px){.pds-modal{-webkit-margin-before:6vh;margin-block-start:6vh}@supports (height: 100dvh){.pds-modal{-webkit-margin-before:6dvh;margin-block-start:6dvh}}}@media (min-width: 1200px){.pds-modal{-webkit-margin-before:8vh;margin-block-start:8vh}@supports (height: 100dvh){.pds-modal{-webkit-margin-before:8dvh;margin-block-start:8dvh}}}.pds-modal--sm{max-width:520px}.pds-modal--md{max-width:700px}.pds-modal--lg{max-width:900px}.pds-modal--custom{max-width:var(--pds-modal-max-width, 700px)}.pds-modal--fullscreen{border-radius:0;height:100%;margin:0;max-height:100vh;max-width:100%}@supports (height: 100dvh){.pds-modal--fullscreen{max-height:100dvh}}.pds-modal--fullscreen.pds-modal--scrollable{max-height:100vh}@supports (height: 100dvh){.pds-modal--fullscreen.pds-modal--scrollable{max-height:100dvh}}.pds-modal--fullscreen .pds-modal-content{-ms-flex:1;flex:1}.pds-modal--scrollable pds-modal-content{-webkit-border-after:1px solid transparent;border-block-end:1px solid transparent;-webkit-border-before:1px solid transparent;border-block-start:1px solid transparent;overflow-y:auto}.pds-modal:not(.pds-modal--scrollable) pds-modal-content{overflow-y:visible}`;
9
+ const pdsModalCss = () => `.pds-modal__backdrop{-ms-flex-align:start;align-items:flex-start;background-color:rgba(0, 0, 0, 0.4);border:0;display:-ms-flexbox;display:flex;height:100%;inset:0;-ms-flex-pack:center;justify-content:center;margin:0;max-height:100%;max-width:100%;opacity:0;padding:0;position:fixed;-webkit-transition:opacity var(--pine-motion-duration-base) var(--pine-motion-easing-in), visibility var(--pine-motion-duration-base) var(--pine-motion-easing-in);transition:opacity var(--pine-motion-duration-base) var(--pine-motion-easing-in), visibility var(--pine-motion-duration-base) var(--pine-motion-easing-in);visibility:hidden;width:100%;z-index:var(--pine-z-index-modal)}@supports ((-webkit-backdrop-filter: blur(3px)) or (backdrop-filter: blur(3px))){.pds-modal__backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}}pds-modal pds-modal .pds-modal__backdrop{z-index:var(--pine-z-index-priority)}.pds-modal__backdrop::-webkit-backdrop{background:transparent}.pds-modal__backdrop::-ms-backdrop{background:transparent}.pds-modal__backdrop::backdrop{background:transparent}.pds-modal__backdrop[aria-modal=false]{overflow:auto;-ms-scroll-chaining:none;overscroll-behavior:contain}@supports ((-webkit-backdrop-filter: blur(3px)) or (backdrop-filter: blur(3px))){.pds-modal__backdrop[aria-modal=false]{-webkit-backdrop-filter:none;backdrop-filter:none}.pds-modal__backdrop[aria-modal=false]::before{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);content:"";inset:0;position:fixed;z-index:-1}}.pds-modal__backdrop.open{opacity:1;-webkit-transition-timing-function:var(--pine-motion-easing-out);transition-timing-function:var(--pine-motion-easing-out);visibility:visible}.pds-modal{background:var(--pine-color-background-overlay);border-radius:var(--pine-dimension-sm);-webkit-box-shadow:var(--pine-box-shadow-400);box-shadow:var(--pine-box-shadow-400);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin:var(--pine-dimension-md);max-height:none;width:100%}.pds-modal.pds-modal--scrollable{max-height:calc(100vh - (5vh + 96px))}@supports (height: 100dvh){.pds-modal.pds-modal--scrollable{max-height:calc(100dvh - (5dvh + 96px))}}@media (min-width: 992px){.pds-modal{-webkit-margin-before:6vh;margin-block-start:6vh}@supports (height: 100dvh){.pds-modal{-webkit-margin-before:6dvh;margin-block-start:6dvh}}}@media (min-width: 1200px){.pds-modal{-webkit-margin-before:8vh;margin-block-start:8vh}@supports (height: 100dvh){.pds-modal{-webkit-margin-before:8dvh;margin-block-start:8dvh}}}.pds-modal--sm{max-width:520px}.pds-modal--md{max-width:700px}.pds-modal--lg{max-width:900px}.pds-modal--custom{max-width:var(--pds-modal-max-width, 700px)}.pds-modal--fullscreen{border-radius:0;height:100%;margin:0;max-height:100vh;max-width:100%}@supports (height: 100dvh){.pds-modal--fullscreen{max-height:100dvh}}.pds-modal--fullscreen.pds-modal--scrollable{max-height:100vh}@supports (height: 100dvh){.pds-modal--fullscreen.pds-modal--scrollable{max-height:100dvh}}.pds-modal--fullscreen .pds-modal-content{-ms-flex:1;flex:1}.pds-modal--scrollable pds-modal-content{-webkit-border-after:1px solid transparent;border-block-end:1px solid transparent;-webkit-border-before:1px solid transparent;border-block-start:1px solid transparent;overflow-y:auto}.pds-modal:not(.pds-modal--scrollable) pds-modal-content{overflow-y:visible}`;
10
10
 
11
11
  const PRESET_SIZES = ['sm', 'md', 'lg', 'fullscreen'];
12
12
  const isCustomLength = (value) => /^[a-z0-9.%+\-*/(), ]+$/i.test(value) &&
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BsWY_xEJ.js');
3
+ var index = require('./index-D9iJuJCP.js');
4
4
  var floatingUi_dom = require('./floating-ui.dom-Dw41zbyY.js');
5
5
  var utils = require('./utils-BhRmyxT8.js');
6
6
  var form = require('./form-MhwfKTuo.js');
7
- var index$1 = require('./index-Do70atou.js');
7
+ var index$1 = require('./index-BDnbr0DK.js');
8
8
  var i18nFormat = require('./i18n-format-BD0PmYzT.js');
9
9
  require('./keep-hydrated-AKoh0DG4.js');
10
10
 
@@ -306,6 +306,12 @@ const PdsMultiselect = class {
306
306
  }
307
307
  else {
308
308
  this.closeDropdown();
309
+ // Tab would move on to an option's checkbox, which closing removes, dropping focus to the page.
310
+ // Land on the trigger instead, as Escape does; Shift+Tab already reaches it.
311
+ const trigger = e.shiftKey ? undefined : this.activeTriggerEl;
312
+ trigger === null || trigger === void 0 ? void 0 : trigger.focus();
313
+ if (trigger === null || trigger === void 0 ? void 0 : trigger.matches(':focus'))
314
+ e.preventDefault();
309
315
  }
310
316
  break;
311
317
  }
@@ -1264,10 +1270,10 @@ const PdsMultiselect = class {
1264
1270
  }
1265
1271
  render() {
1266
1272
  const hasSelections = this.selectedItems.length > 0;
1267
- return (index.h(index.Host, { key: 'a92086af75e20b9b37b147365bfa517d96021700', "aria-disabled": this.disabled ? 'true' : null }, index.h("div", { key: 'd49e0442e3a348248e5ac3b37afc9f128b34956b', class: "pds-multiselect", onFocusout: this.handleContainerFocusOut }, this.label && (index.h("label", { key: '41a081803dfd784e20a7135ecf5f5c4657908dd1', id: `${this.componentId}-label`, htmlFor: this.componentId, class: {
1273
+ return (index.h(index.Host, { key: '8f1ce5ef092285ce7c0855643fae76a4ec86ee17', "aria-disabled": this.disabled ? 'true' : null }, index.h("div", { key: 'c14c3d52c1d55fb33a89f1a25055728215a1e4ab', class: "pds-multiselect", onFocusout: this.handleContainerFocusOut }, this.label && (index.h("label", { key: 'aacd3339b0db2048b31fbc5963f7232bbff78efe', id: `${this.componentId}-label`, htmlFor: this.componentId, class: {
1268
1274
  'pds-multiselect__label': true,
1269
1275
  'visually-hidden': this.hideLabel,
1270
- } }, this.label)), index.h("div", { key: '0e3c8a3aaf7c70b4ff71972c29b8d5599f62ec97', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), style: { width: this.triggerWidth } }, this.slottedTriggerEl ? (index.h("slot", { name: "trigger" })) : this.selectedDisplay === 'pill' && this.pillPosition === 'inline' ? (index.h("div", { ref: el => (this.pillInlineTriggerEl = el || undefined), part: "trigger", class: {
1276
+ } }, this.label)), index.h("div", { key: '5e1ef76aa5d46798519e5ac885bfa1c8d7c7106c', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), style: { width: this.triggerWidth } }, this.slottedTriggerEl ? (index.h("slot", { name: "trigger" })) : this.selectedDisplay === 'pill' && this.pillPosition === 'inline' ? (index.h("div", { ref: el => (this.pillInlineTriggerEl = el || undefined), part: "trigger", class: {
1271
1277
  'pds-multiselect__trigger': true,
1272
1278
  'pds-multiselect__trigger--open': this.isOpen,
1273
1279
  'pds-multiselect__trigger--disabled': this.disabled,
@@ -1283,7 +1289,7 @@ const PdsMultiselect = class {
1283
1289
  }, id: this.componentId, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-describedby": form.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 }, index.h("span", { class: {
1284
1290
  'pds-multiselect__trigger-text': true,
1285
1291
  'pds-multiselect__trigger-text--placeholder': !hasSelections || (this.selectedDisplay === 'pill' && this.pillPosition === 'below'),
1286
- } }, this.getTriggerText()), index.h("pds-icon", { "aria-hidden": "true", class: "pds-multiselect__icon", icon: index$1.enlarge }))), this.renderDropdown()), this.selectedDisplay === 'pill' && this.pillPosition === 'below' && this.renderBelowPills(), index.h("span", { key: 'd5cddc1d3374d94ecf0cce1bcaf7c7125bf3128d', class: "visually-hidden", "aria-live": "polite", "aria-atomic": "true" }, this.removalAnnouncement), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (index.h("p", { key: 'e3cb958b6fd2b1e138b769de0f53be1b8564902d', class: "pds-multiselect__helper", id: form.messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (index.h("p", { key: 'f6c2a30cc192391973d9b22fbb6732ce387832ac', class: "pds-multiselect__error", id: form.messageId(this.componentId, 'error') }, index.h("pds-icon", { key: 'f437effafaa383b81aec7b5bf635598c8b0075b8', "aria-hidden": "true", icon: index$1.danger, size: "small" }), this.errorMessage)), index.h("div", { key: 'f1e747137f2dc7cad3d4e1ff8fc293401e3173e1', style: { display: 'none' } }, index.h("slot", { key: 'f337137b3ca5983dc6641361101f6d19c972778c' })))));
1292
+ } }, this.getTriggerText()), index.h("pds-icon", { "aria-hidden": "true", class: "pds-multiselect__icon", icon: index$1.enlarge }))), this.renderDropdown()), this.selectedDisplay === 'pill' && this.pillPosition === 'below' && this.renderBelowPills(), index.h("span", { key: '590045e4769812a1a2f7a97580d21d95dbe4e872', class: "visually-hidden", "aria-live": "polite", "aria-atomic": "true" }, this.removalAnnouncement), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (index.h("p", { key: '419f4349b7cb17260f03d2bdcfd777561a62de42', class: "pds-multiselect__helper", id: form.messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (index.h("p", { key: 'b922af14c83348607aa9aaaefe9b03b39e71bd42', class: "pds-multiselect__error", id: form.messageId(this.componentId, 'error') }, index.h("pds-icon", { key: 'bd08726adf14a42f2ecf0cdfcd390e5639f9fd96', "aria-hidden": "true", icon: index$1.danger, size: "small" }), this.errorMessage)), index.h("div", { key: '42ad7905fb1816ccdd29b6aa438779929804b368', style: { display: 'none' } }, index.h("slot", { key: '4f3bf380e93d216790efb0a5de85d6479862350e' })))));
1287
1293
  }
1288
1294
  static get formAssociated() { return true; }
1289
1295
  get el() { return index.getElement(this); }
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BsWY_xEJ.js');
3
+ var index = require('./index-D9iJuJCP.js');
4
4
  var floatingUi_dom = require('./floating-ui.dom-Dw41zbyY.js');
5
5
  var closest = require('./closest-D0qyYtJ3.js');
6
6
  var reflectedAttributeDefault = require('./reflected-attribute-default-DVYHG6O1.js');
7
7
  var attributes = require('./attributes-CW49XqaL.js');
8
8
  var keepHydrated = require('./keep-hydrated-AKoh0DG4.js');
9
- var tabbable = require('./tabbable-CddSt_Hi.js');
9
+ var tabbable = require('./tabbable-BrrrGvdG.js');
10
10
 
11
11
  /**
12
12
  * Escapes a string so it's safe to interpolate into a CSS identifier (an id selector like `#${id}`)
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BsWY_xEJ.js');
3
+ var index = require('./index-D9iJuJCP.js');
4
4
  var attributes = require('./attributes-CW49XqaL.js');
5
5
  var utils = require('./utils-BhRmyxT8.js');
6
6
  require('./keep-hydrated-AKoh0DG4.js');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-BsWY_xEJ.js');
3
+ var index = require('./index-D9iJuJCP.js');
4
4
  require('./keep-hydrated-AKoh0DG4.js');
5
5
 
6
6
  const pdsPropertyCss = () => `:host{color:var(--pine-color-text-message);font:var(--pine-typography-body-medium)}`;