@pine-ds/core 4.5.0 → 4.7.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 (478) hide show
  1. package/components/attributes.js +1 -1
  2. package/components/mock-pds-modal.js +1 -1
  3. package/components/pds-combobox.js +1 -1
  4. package/components/pds-container.js +1 -1
  5. package/components/pds-copytext.js +1 -1
  6. package/components/pds-datepicker.js +1 -1
  7. package/components/pds-divider.js +1 -1
  8. package/components/pds-drawer-content.js +1 -1
  9. package/components/pds-drawer-footer.js +1 -1
  10. package/components/pds-drawer-header.js +1 -1
  11. package/components/pds-drawer.js +1 -1
  12. package/components/pds-dropdown-menu-item.js +1 -1
  13. package/components/pds-dropdown-menu-separator.js +1 -1
  14. package/components/pds-dropdown-menu.js +1 -1
  15. package/components/pds-filter.js +1 -1
  16. package/components/pds-filters.js +1 -1
  17. package/components/pds-icon2.js +1 -1
  18. package/components/pds-image.js +1 -1
  19. package/components/pds-input2.js +1 -1
  20. package/components/pds-link2.js +1 -1
  21. package/components/pds-loader2.js +1 -1
  22. package/components/pds-modal-content.js +1 -1
  23. package/components/pds-modal-footer.js +1 -1
  24. package/components/pds-modal-header.js +1 -1
  25. package/components/pds-modal2.js +1 -1
  26. package/components/pds-multiselect.js +1 -1
  27. package/components/pds-popover.js +1 -1
  28. package/components/pds-progress.js +1 -1
  29. package/components/pds-property.js +1 -1
  30. package/components/pds-radio-group.js +1 -1
  31. package/components/pds-radio.js +1 -1
  32. package/components/pds-row.js +1 -1
  33. package/components/pds-select.js +1 -1
  34. package/components/pds-sortable-item.js +1 -1
  35. package/components/pds-sortable.js +1 -1
  36. package/components/pds-switch.js +1 -1
  37. package/components/pds-tab.js +1 -1
  38. package/components/pds-table-body.js +1 -1
  39. package/components/pds-table-cell2.js +1 -1
  40. package/components/pds-table-head-cell2.js +1 -1
  41. package/components/pds-table-head.js +1 -1
  42. package/components/pds-table-row.js +1 -1
  43. package/components/pds-tabpanel.js +1 -1
  44. package/components/pds-tabs.js +1 -1
  45. package/components/pds-text2.js +1 -1
  46. package/components/pds-textarea.js +1 -1
  47. package/components/pds-toast.js +1 -1
  48. package/components/pds-tooltip.js +1 -1
  49. package/dist/cjs/{attributes-DXvaSETR.js → attributes-BJ7KBHql.js} +18 -11
  50. package/dist/cjs/{index-D-QQKB0y.js → index-5Azb8EQG.js} +1 -1
  51. package/dist/cjs/{index-BQjWfQXw.js → index-jl_Q819j.js} +1 -1
  52. package/dist/cjs/index.cjs.js +1 -1
  53. package/dist/cjs/keep-hydrated-CiXgkEYd.js +196 -0
  54. package/dist/cjs/loader.cjs.js +3 -3
  55. package/dist/cjs/mock-pds-modal.cjs.entry.js +3 -3
  56. package/dist/cjs/pds-accordion.cjs.entry.js +3 -3
  57. package/dist/cjs/pds-alert.cjs.entry.js +2 -2
  58. package/dist/cjs/pds-avatar.cjs.entry.js +3 -3
  59. package/dist/cjs/pds-box.cjs.entry.js +3 -3
  60. package/dist/cjs/pds-button.cjs.entry.js +3 -3
  61. package/dist/cjs/pds-checkbox.cjs.entry.js +4 -4
  62. package/dist/cjs/pds-chip.cjs.entry.js +4 -4
  63. package/dist/cjs/pds-combobox.cjs.entry.js +187 -28
  64. package/dist/cjs/pds-container.cjs.entry.js +3 -3
  65. package/dist/cjs/pds-copytext.cjs.entry.js +5 -5
  66. package/dist/cjs/pds-datepicker.cjs.entry.js +5 -5
  67. package/dist/cjs/pds-divider.cjs.entry.js +3 -3
  68. package/dist/cjs/pds-drawer-content.cjs.entry.js +3 -3
  69. package/dist/cjs/pds-drawer-footer.cjs.entry.js +3 -3
  70. package/dist/cjs/pds-drawer-header.cjs.entry.js +3 -3
  71. package/dist/cjs/pds-drawer.cjs.entry.js +25 -12
  72. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +3 -3
  73. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +3 -3
  74. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +24 -12
  75. package/dist/cjs/pds-filter.cjs.entry.js +4 -4
  76. package/dist/cjs/pds-filters.cjs.entry.js +3 -3
  77. package/dist/cjs/pds-icon.cjs.entry.js +27 -4
  78. package/dist/cjs/pds-image.cjs.entry.js +4 -4
  79. package/dist/cjs/pds-input.cjs.entry.js +6 -6
  80. package/dist/cjs/pds-link.cjs.entry.js +5 -5
  81. package/dist/cjs/pds-loader.cjs.entry.js +4 -4
  82. package/dist/cjs/pds-modal-content.cjs.entry.js +4 -4
  83. package/dist/cjs/pds-modal-footer.cjs.entry.js +3 -3
  84. package/dist/cjs/pds-modal-header.cjs.entry.js +3 -3
  85. package/dist/cjs/pds-modal.cjs.entry.js +118 -33
  86. package/dist/cjs/pds-multiselect.cjs.entry.js +9 -8
  87. package/dist/cjs/pds-popover.cjs.entry.js +227 -37
  88. package/dist/cjs/pds-progress.cjs.entry.js +4 -4
  89. package/dist/cjs/pds-property.cjs.entry.js +3 -3
  90. package/dist/cjs/pds-radio-group.cjs.entry.js +6 -6
  91. package/dist/cjs/pds-radio.cjs.entry.js +7 -7
  92. package/dist/cjs/pds-row.cjs.entry.js +4 -4
  93. package/dist/cjs/pds-select.cjs.entry.js +5 -5
  94. package/dist/cjs/pds-sortable-item.cjs.entry.js +5 -5
  95. package/dist/cjs/pds-sortable.cjs.entry.js +4 -4
  96. package/dist/cjs/pds-switch.cjs.entry.js +7 -7
  97. package/dist/cjs/pds-tab.cjs.entry.js +13 -2
  98. package/dist/cjs/pds-table-body.cjs.entry.js +3 -3
  99. package/dist/cjs/pds-table-cell.cjs.entry.js +4 -4
  100. package/dist/cjs/pds-table-head-cell.cjs.entry.js +5 -5
  101. package/dist/cjs/pds-table-head.cjs.entry.js +3 -3
  102. package/dist/cjs/pds-table-row.cjs.entry.js +3 -3
  103. package/dist/cjs/pds-table.cjs.entry.js +2 -2
  104. package/dist/cjs/pds-tabpanel.cjs.entry.js +15 -3
  105. package/dist/cjs/pds-tabs.cjs.entry.js +111 -7
  106. package/dist/cjs/pds-text.cjs.entry.js +3 -3
  107. package/dist/cjs/pds-textarea.cjs.entry.js +8 -8
  108. package/dist/cjs/pds-toast.cjs.entry.js +5 -5
  109. package/dist/cjs/pds-tooltip.cjs.entry.js +4 -4
  110. package/dist/cjs/pine-core.cjs.js +3 -3
  111. package/dist/collection/components/pds-combobox/grouped-options-panel.js +21 -3
  112. package/dist/collection/components/pds-combobox/pds-combobox.css +42 -13
  113. package/dist/collection/components/pds-combobox/pds-combobox.js +166 -23
  114. package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +45 -0
  115. package/dist/collection/components/pds-container/pds-container.js +1 -1
  116. package/dist/collection/components/pds-copytext/pds-copytext.js +1 -1
  117. package/dist/collection/components/pds-datepicker/pds-datepicker.js +2 -2
  118. package/dist/collection/components/pds-divider/pds-divider.js +1 -1
  119. package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.js +1 -1
  120. package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.js +1 -1
  121. package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.js +1 -1
  122. package/dist/collection/components/pds-drawer/pds-drawer.css +4 -1
  123. package/dist/collection/components/pds-drawer/pds-drawer.js +54 -17
  124. package/dist/collection/components/pds-drawer/stories/pds-drawer.stories.js +6 -1
  125. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +1 -1
  126. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +1 -1
  127. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +19 -5
  128. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +30 -9
  129. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +1 -1
  130. package/dist/collection/components/pds-filters/pds-filters.js +1 -1
  131. package/dist/collection/components/pds-image/pds-image.js +2 -2
  132. package/dist/collection/components/pds-input/pds-input.js +2 -2
  133. package/dist/collection/components/pds-link/pds-link.js +2 -2
  134. package/dist/collection/components/pds-loader/pds-loader.js +1 -1
  135. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +2 -2
  136. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +1 -1
  137. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +1 -1
  138. package/dist/collection/components/pds-modal/pds-modal.js +117 -32
  139. package/dist/collection/components/pds-modal/test/mock-pds-modal.js +1 -1
  140. package/dist/collection/components/pds-multiselect/pds-multiselect.js +8 -7
  141. package/dist/collection/components/pds-popover/pds-popover.js +185 -35
  142. package/dist/collection/components/pds-progress/pds-progress.js +1 -1
  143. package/dist/collection/components/pds-property/pds-property.js +1 -1
  144. package/dist/collection/components/pds-radio/pds-radio.js +3 -3
  145. package/dist/collection/components/pds-radio-group/pds-radio-group.js +3 -3
  146. package/dist/collection/components/pds-row/pds-row.js +1 -1
  147. package/dist/collection/components/pds-select/pds-select.js +1 -1
  148. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
  149. package/dist/collection/components/pds-sortable/pds-sortable.js +1 -1
  150. package/dist/collection/components/pds-switch/pds-switch.js +3 -3
  151. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
  152. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +2 -2
  153. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +1 -1
  154. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +2 -2
  155. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +1 -1
  156. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js +11 -0
  157. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +13 -1
  158. package/dist/collection/components/pds-tabs/pds-tabs.js +111 -7
  159. package/dist/collection/components/pds-text/pds-text.js +1 -1
  160. package/dist/collection/components/pds-textarea/pds-textarea.js +4 -4
  161. package/dist/collection/components/pds-toast/pds-toast.js +3 -3
  162. package/dist/collection/components/pds-tooltip/pds-tooltip.js +2 -2
  163. package/dist/collection/utils/attributes.js +18 -11
  164. package/dist/collection/utils/css.js +41 -0
  165. package/dist/collection/utils/keep-hydrated.js +133 -6
  166. package/dist/docs.json +56 -12
  167. package/dist/esm/{attributes-CF5K2pxn.js → attributes-WXw_I_uJ.js} +18 -11
  168. package/dist/esm/{index-DxI-61GK.js → index-BJXk71tO.js} +1 -1
  169. package/dist/esm/{index-2HMD-zUO.js → index-Cw9J31qd.js} +1 -1
  170. package/dist/esm/index.js +1 -1
  171. package/dist/esm/keep-hydrated-BLG6RDBt.js +190 -0
  172. package/dist/esm/loader.js +4 -4
  173. package/dist/esm/mock-pds-modal.entry.js +3 -3
  174. package/dist/esm/pds-accordion.entry.js +3 -3
  175. package/dist/esm/pds-alert.entry.js +2 -2
  176. package/dist/esm/pds-avatar.entry.js +3 -3
  177. package/dist/esm/pds-box.entry.js +3 -3
  178. package/dist/esm/pds-button.entry.js +3 -3
  179. package/dist/esm/pds-checkbox.entry.js +4 -4
  180. package/dist/esm/pds-chip.entry.js +4 -4
  181. package/dist/esm/pds-combobox.entry.js +187 -28
  182. package/dist/esm/pds-container.entry.js +3 -3
  183. package/dist/esm/pds-copytext.entry.js +5 -5
  184. package/dist/esm/pds-datepicker.entry.js +5 -5
  185. package/dist/esm/pds-divider.entry.js +3 -3
  186. package/dist/esm/pds-drawer-content.entry.js +3 -3
  187. package/dist/esm/pds-drawer-footer.entry.js +3 -3
  188. package/dist/esm/pds-drawer-header.entry.js +3 -3
  189. package/dist/esm/pds-drawer.entry.js +25 -12
  190. package/dist/esm/pds-dropdown-menu-item.entry.js +3 -3
  191. package/dist/esm/pds-dropdown-menu-separator.entry.js +3 -3
  192. package/dist/esm/pds-dropdown-menu.entry.js +24 -12
  193. package/dist/esm/pds-filter.entry.js +4 -4
  194. package/dist/esm/pds-filters.entry.js +3 -3
  195. package/dist/esm/pds-icon.entry.js +27 -4
  196. package/dist/esm/pds-image.entry.js +4 -4
  197. package/dist/esm/pds-input.entry.js +6 -6
  198. package/dist/esm/pds-link.entry.js +5 -5
  199. package/dist/esm/pds-loader.entry.js +4 -4
  200. package/dist/esm/pds-modal-content.entry.js +4 -4
  201. package/dist/esm/pds-modal-footer.entry.js +3 -3
  202. package/dist/esm/pds-modal-header.entry.js +3 -3
  203. package/dist/esm/pds-modal.entry.js +118 -33
  204. package/dist/esm/pds-multiselect.entry.js +9 -8
  205. package/dist/esm/pds-popover.entry.js +228 -38
  206. package/dist/esm/pds-progress.entry.js +4 -4
  207. package/dist/esm/pds-property.entry.js +3 -3
  208. package/dist/esm/pds-radio-group.entry.js +6 -6
  209. package/dist/esm/pds-radio.entry.js +7 -7
  210. package/dist/esm/pds-row.entry.js +4 -4
  211. package/dist/esm/pds-select.entry.js +5 -5
  212. package/dist/esm/pds-sortable-item.entry.js +5 -5
  213. package/dist/esm/pds-sortable.entry.js +4 -4
  214. package/dist/esm/pds-switch.entry.js +7 -7
  215. package/dist/esm/pds-tab.entry.js +13 -2
  216. package/dist/esm/pds-table-body.entry.js +3 -3
  217. package/dist/esm/pds-table-cell.entry.js +4 -4
  218. package/dist/esm/pds-table-head-cell.entry.js +5 -5
  219. package/dist/esm/pds-table-head.entry.js +3 -3
  220. package/dist/esm/pds-table-row.entry.js +3 -3
  221. package/dist/esm/pds-table.entry.js +2 -2
  222. package/dist/esm/pds-tabpanel.entry.js +15 -3
  223. package/dist/esm/pds-tabs.entry.js +111 -7
  224. package/dist/esm/pds-text.entry.js +3 -3
  225. package/dist/esm/pds-textarea.entry.js +8 -8
  226. package/dist/esm/pds-toast.entry.js +5 -5
  227. package/dist/esm/pds-tooltip.entry.js +4 -4
  228. package/dist/esm/pine-core.js +4 -4
  229. package/dist/esm-es5/attributes-WXw_I_uJ.js +1 -0
  230. package/dist/esm-es5/{index-2HMD-zUO.js → index-Cw9J31qd.js} +2 -2
  231. package/dist/esm-es5/index.js +1 -1
  232. package/dist/esm-es5/keep-hydrated-BLG6RDBt.js +1 -0
  233. package/dist/esm-es5/loader.js +1 -1
  234. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  235. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  236. package/dist/esm-es5/pds-alert.entry.js +1 -1
  237. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  238. package/dist/esm-es5/pds-box.entry.js +1 -1
  239. package/dist/esm-es5/pds-button.entry.js +1 -1
  240. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  241. package/dist/esm-es5/pds-chip.entry.js +1 -1
  242. package/dist/esm-es5/pds-combobox.entry.js +2 -2
  243. package/dist/esm-es5/pds-container.entry.js +1 -1
  244. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  245. package/dist/esm-es5/pds-datepicker.entry.js +1 -1
  246. package/dist/esm-es5/pds-divider.entry.js +1 -1
  247. package/dist/esm-es5/pds-drawer-content.entry.js +1 -1
  248. package/dist/esm-es5/pds-drawer-footer.entry.js +1 -1
  249. package/dist/esm-es5/pds-drawer-header.entry.js +1 -1
  250. package/dist/esm-es5/pds-drawer.entry.js +1 -1
  251. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  252. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  253. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  254. package/dist/esm-es5/pds-filter.entry.js +1 -1
  255. package/dist/esm-es5/pds-filters.entry.js +1 -1
  256. package/dist/esm-es5/pds-icon.entry.js +1 -1
  257. package/dist/esm-es5/pds-image.entry.js +1 -1
  258. package/dist/esm-es5/pds-input.entry.js +1 -1
  259. package/dist/esm-es5/pds-link.entry.js +1 -1
  260. package/dist/esm-es5/pds-loader.entry.js +1 -1
  261. package/dist/esm-es5/pds-modal-content.entry.js +1 -1
  262. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  263. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  264. package/dist/esm-es5/pds-modal.entry.js +1 -1
  265. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  266. package/dist/esm-es5/pds-popover.entry.js +1 -1
  267. package/dist/esm-es5/pds-progress.entry.js +1 -1
  268. package/dist/esm-es5/pds-property.entry.js +1 -1
  269. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  270. package/dist/esm-es5/pds-radio.entry.js +1 -1
  271. package/dist/esm-es5/pds-row.entry.js +1 -1
  272. package/dist/esm-es5/pds-select.entry.js +1 -1
  273. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  274. package/dist/esm-es5/pds-sortable.entry.js +2 -2
  275. package/dist/esm-es5/pds-switch.entry.js +1 -1
  276. package/dist/esm-es5/pds-tab.entry.js +1 -1
  277. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  278. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  279. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  280. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  281. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  282. package/dist/esm-es5/pds-table.entry.js +1 -1
  283. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  284. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  285. package/dist/esm-es5/pds-text.entry.js +1 -1
  286. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  287. package/dist/esm-es5/pds-toast.entry.js +1 -1
  288. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  289. package/dist/esm-es5/pine-core.js +1 -1
  290. package/dist/pine-core/index.esm.js +1 -1
  291. package/dist/pine-core/{p-9a7ee7cb.system.entry.js → p-0092444c.system.entry.js} +1 -1
  292. package/dist/pine-core/{p-d576e542.system.entry.js → p-01aa382c.system.entry.js} +1 -1
  293. package/dist/pine-core/{p-d69cfaa4.entry.js → p-02088776.entry.js} +1 -1
  294. package/dist/pine-core/p-049f126a.entry.js +1 -0
  295. package/dist/pine-core/{p-8b9d8fb5.system.entry.js → p-080cb087.system.entry.js} +1 -1
  296. package/dist/pine-core/{p-99317375.system.entry.js → p-0913f696.system.entry.js} +1 -1
  297. package/dist/pine-core/{p-5737182f.entry.js → p-0a84d220.entry.js} +1 -1
  298. package/dist/pine-core/{p-4c9cccdb.system.entry.js → p-0b71ecb6.system.entry.js} +2 -2
  299. package/dist/pine-core/{p-37d73369.system.entry.js → p-1437585e.system.entry.js} +1 -1
  300. package/dist/pine-core/p-153ba77b.entry.js +1 -0
  301. package/dist/pine-core/{p-22f041ee.system.entry.js → p-1ee86d87.system.entry.js} +1 -1
  302. package/dist/pine-core/{p-5decd81f.entry.js → p-208c7dbf.entry.js} +1 -1
  303. package/dist/pine-core/p-21fe6ee1.system.entry.js +1 -0
  304. package/dist/pine-core/p-24fbbb74.system.entry.js +1 -0
  305. package/dist/pine-core/{p-51dff046.system.entry.js → p-258770cf.system.entry.js} +1 -1
  306. package/dist/pine-core/{p-1f2e5958.entry.js → p-258d5e83.entry.js} +1 -1
  307. package/dist/pine-core/{p-4e05a4f0.entry.js → p-26642718.entry.js} +1 -1
  308. package/dist/pine-core/{p-1b13f69c.system.entry.js → p-2ac2457b.system.entry.js} +1 -1
  309. package/dist/pine-core/p-2cb5483a.system.entry.js +1 -0
  310. package/dist/pine-core/{p-1f263c0b.system.entry.js → p-341c38f1.system.entry.js} +1 -1
  311. package/dist/pine-core/{p-bd7da23e.system.entry.js → p-3a959459.system.entry.js} +1 -1
  312. package/dist/pine-core/{p-1e464117.entry.js → p-432d5ec7.entry.js} +1 -1
  313. package/dist/pine-core/{p-0de74105.entry.js → p-4849fda7.entry.js} +1 -1
  314. package/dist/pine-core/{p-f30d6192.system.entry.js → p-4d03d1e2.system.entry.js} +1 -1
  315. package/dist/pine-core/{p-2cb02706.entry.js → p-4de8f333.entry.js} +1 -1
  316. package/dist/pine-core/{p-152245fa.system.entry.js → p-4f94b4f1.system.entry.js} +1 -1
  317. package/dist/pine-core/{p-66cfef6d.system.entry.js → p-4fa63723.system.entry.js} +1 -1
  318. package/dist/pine-core/p-4fd454f6.entry.js +1 -0
  319. package/dist/pine-core/{p-70c6f0ed.system.entry.js → p-5442d983.system.entry.js} +1 -1
  320. package/dist/pine-core/{p-8027db25.entry.js → p-550c2fd3.entry.js} +1 -1
  321. package/dist/pine-core/{p-7d01e719.entry.js → p-55224683.entry.js} +1 -1
  322. package/dist/pine-core/{p-65e30a4c.entry.js → p-57a2f927.entry.js} +1 -1
  323. package/dist/pine-core/{p-721297b5.system.entry.js → p-5870b092.system.entry.js} +1 -1
  324. package/dist/pine-core/p-5a10784e.system.entry.js +3 -0
  325. package/dist/pine-core/{p-6d83ad2d.system.entry.js → p-5c90091e.system.entry.js} +1 -1
  326. package/dist/pine-core/p-602c197f.entry.js +1 -0
  327. package/dist/pine-core/{p-45fcc5b7.entry.js → p-6bf853c9.entry.js} +1 -1
  328. package/dist/pine-core/{p-5d014059.entry.js → p-6d3610f9.entry.js} +1 -1
  329. package/dist/pine-core/{p-343546b1.system.entry.js → p-6eec23a7.system.entry.js} +1 -1
  330. package/dist/pine-core/{p-5132b8a1.entry.js → p-72865997.entry.js} +1 -1
  331. package/dist/pine-core/p-74a05bcc.entry.js +1 -0
  332. package/dist/pine-core/p-75ee0403.entry.js +1 -0
  333. package/dist/pine-core/p-77395d62.system.entry.js +1 -0
  334. package/dist/pine-core/p-7a287635.system.entry.js +1 -0
  335. package/dist/pine-core/p-7a5b21d2.system.entry.js +1 -0
  336. package/dist/pine-core/{p-a83a6618.system.entry.js → p-7bf6563a.system.entry.js} +1 -1
  337. package/dist/pine-core/{p-71e3a89e.system.entry.js → p-8191498f.system.entry.js} +1 -1
  338. package/dist/pine-core/{p-0166c620.entry.js → p-82cf4ec6.entry.js} +1 -1
  339. package/dist/pine-core/{p-16c2aa63.entry.js → p-84e9b7da.entry.js} +1 -1
  340. package/dist/pine-core/{p-bdf68e53.system.entry.js → p-86040cac.system.entry.js} +1 -1
  341. package/dist/pine-core/p-875b0436.system.entry.js +1 -0
  342. package/dist/pine-core/{p-87f91e02.system.entry.js → p-8c8cc079.system.entry.js} +1 -1
  343. package/dist/pine-core/{p-ba1b79c7.system.entry.js → p-8cc302aa.system.entry.js} +1 -1
  344. package/dist/pine-core/{p-5b7f7760.entry.js → p-8d292b48.entry.js} +1 -1
  345. package/dist/pine-core/{p-650ccffb.entry.js → p-8f531063.entry.js} +1 -1
  346. package/dist/pine-core/p-9109b90a.entry.js +1 -0
  347. package/dist/pine-core/p-92ae6082.entry.js +1 -0
  348. package/dist/pine-core/p-94593f20.system.entry.js +1 -0
  349. package/dist/pine-core/p-945fb0b1.entry.js +1 -0
  350. package/dist/pine-core/{p-04fe5da7.system.entry.js → p-9880d251.system.entry.js} +1 -1
  351. package/dist/pine-core/p-99459e27.entry.js +1 -0
  352. package/dist/pine-core/{p-9835c74b.entry.js → p-9ab95438.entry.js} +1 -1
  353. package/dist/pine-core/{p-a6d09102.system.entry.js → p-9af131d6.system.entry.js} +1 -1
  354. package/dist/pine-core/{p-59491f98.entry.js → p-9dcd2cdb.entry.js} +1 -1
  355. package/dist/pine-core/{p-c00e46a5.system.entry.js → p-9e0f920a.system.entry.js} +1 -1
  356. package/dist/pine-core/p-BGLP3keB.js +1 -0
  357. package/dist/pine-core/p-BLG6RDBt.js +1 -0
  358. package/dist/pine-core/p-BR5nujVX.system.js +1 -0
  359. package/dist/pine-core/{p-BJlg6wq7.system.js → p-CGRdQc49.system.js} +2 -2
  360. package/dist/pine-core/{p-DeIDZHrg.js → p-CmSJytt1.js} +2 -2
  361. package/dist/pine-core/p-CuSNnuFu.system.js +1 -0
  362. package/dist/pine-core/{p-YQa3CeL9.system.js → p-Cy8cvR7I.system.js} +1 -1
  363. package/dist/pine-core/p-XW4H0W6i.system.js +1 -0
  364. package/dist/pine-core/p-a0344e30.entry.js +2 -0
  365. package/dist/pine-core/p-a0960b3d.system.entry.js +1 -0
  366. package/dist/pine-core/p-a1230a74.system.entry.js +1 -0
  367. package/dist/pine-core/{p-fbea5703.entry.js → p-a19cd59c.entry.js} +1 -1
  368. package/dist/pine-core/p-a787b34a.system.entry.js +1 -0
  369. package/dist/pine-core/p-a826f290.entry.js +1 -0
  370. package/dist/pine-core/{p-1ec4eeaf.system.entry.js → p-a85a6ab9.system.entry.js} +1 -1
  371. package/dist/pine-core/p-acce8eb2.entry.js +1 -0
  372. package/dist/pine-core/p-b1548a20.entry.js +1 -0
  373. package/dist/pine-core/p-b60ac7eb.system.entry.js +1 -0
  374. package/dist/pine-core/{p-93877d4a.entry.js → p-b69f04b7.entry.js} +1 -1
  375. package/dist/pine-core/p-b75b0d09.system.entry.js +1 -0
  376. package/dist/pine-core/{p-02857936.entry.js → p-b8e8a4ce.entry.js} +1 -1
  377. package/dist/pine-core/{p-622e91e3.entry.js → p-b914dde8.entry.js} +2 -2
  378. package/dist/pine-core/{p-5bc670be.system.entry.js → p-ba1f65c2.system.entry.js} +1 -1
  379. package/dist/pine-core/p-bb68431a.entry.js +1 -0
  380. package/dist/pine-core/{p-c8e89b61.system.entry.js → p-bd67156b.system.entry.js} +1 -1
  381. package/dist/pine-core/{p-db4319fd.entry.js → p-beb23781.entry.js} +1 -1
  382. package/dist/pine-core/p-bf30dec0.entry.js +1 -0
  383. package/dist/pine-core/p-bf5887e8.system.entry.js +1 -0
  384. package/dist/pine-core/{p-91f712f4.system.entry.js → p-bf7ee3b7.system.entry.js} +1 -1
  385. package/dist/pine-core/{p-b5838211.system.entry.js → p-c5c9ed36.system.entry.js} +1 -1
  386. package/dist/pine-core/{p-21115986.system.entry.js → p-cb6a3e4c.system.entry.js} +1 -1
  387. package/dist/pine-core/{p-1cf1fced.entry.js → p-cde8eb81.entry.js} +1 -1
  388. package/dist/pine-core/{p-1d75a9b1.system.entry.js → p-cf08a6dd.system.entry.js} +1 -1
  389. package/dist/pine-core/p-cfd012d4.entry.js +1 -0
  390. package/dist/pine-core/{p-5e8d73d4.entry.js → p-d2c91e7a.entry.js} +1 -1
  391. package/dist/pine-core/{p-7bbfb965.system.entry.js → p-db17c626.system.entry.js} +1 -1
  392. package/dist/pine-core/p-e0917a26.entry.js +1 -0
  393. package/dist/pine-core/p-e21ff692.entry.js +1 -0
  394. package/dist/pine-core/p-e5420660.entry.js +1 -0
  395. package/dist/pine-core/{p-585832b1.entry.js → p-e800a2b1.entry.js} +1 -1
  396. package/dist/pine-core/{p-8b0fbeb3.entry.js → p-e836a041.entry.js} +1 -1
  397. package/dist/pine-core/{p-506d3e80.entry.js → p-e8cb76e8.entry.js} +1 -1
  398. package/dist/pine-core/p-ea4d4741.system.entry.js +1 -0
  399. package/dist/pine-core/{p-419f57c9.entry.js → p-eb5465ce.entry.js} +1 -1
  400. package/dist/pine-core/{p-63119d23.entry.js → p-ebd0bff2.entry.js} +1 -1
  401. package/dist/pine-core/p-f029b7da.system.entry.js +1 -0
  402. package/dist/pine-core/{p-e337f32c.system.entry.js → p-f0d24298.system.entry.js} +1 -1
  403. package/dist/pine-core/{p-9b9f66b7.entry.js → p-f1702281.entry.js} +1 -1
  404. package/dist/pine-core/{p-238e5171.system.entry.js → p-f25e4731.system.entry.js} +1 -1
  405. package/dist/pine-core/{p-37d95be9.entry.js → p-f2c253d8.entry.js} +1 -1
  406. package/dist/pine-core/{p-a22091c4.system.entry.js → p-f77905aa.system.entry.js} +1 -1
  407. package/dist/pine-core/{p-bef04e15.system.entry.js → p-fc25b956.system.entry.js} +1 -1
  408. package/dist/pine-core/{p-f06ca8df.entry.js → p-ff3de72e.entry.js} +1 -1
  409. package/dist/pine-core/pine-core.esm.js +1 -1
  410. package/dist/pine-core/pine-core.js +1 -1
  411. package/dist/types/components/pds-combobox/combobox-interface.d.ts +8 -1
  412. package/dist/types/components/pds-combobox/grouped-options-panel.d.ts +7 -1
  413. package/dist/types/components/pds-combobox/pds-combobox.d.ts +32 -0
  414. package/dist/types/components/pds-drawer/pds-drawer.d.ts +21 -9
  415. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu.d.ts +5 -0
  416. package/dist/types/components/pds-modal/pds-modal.d.ts +10 -3
  417. package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +2 -1
  418. package/dist/types/components/pds-popover/pds-popover.d.ts +31 -1
  419. package/dist/types/components/pds-tabs/pds-tab/pds-tab.d.ts +3 -0
  420. package/dist/types/components/pds-tabs/pds-tabpanel/pds-tabpanel.d.ts +3 -0
  421. package/dist/types/components/pds-tabs/pds-tabs.d.ts +14 -2
  422. package/dist/types/components.d.ts +50 -35
  423. package/dist/types/utils/attributes.d.ts +2 -2
  424. package/dist/types/utils/css.d.ts +7 -0
  425. package/dist/types/utils/keep-hydrated.d.ts +29 -2
  426. package/dist/vscode.html-data.json +13 -6
  427. package/hydrate/index.js +961 -213
  428. package/hydrate/index.mjs +961 -213
  429. package/package.json +2 -2
  430. package/dist/cjs/keep-hydrated-iLS88j1Z.js +0 -67
  431. package/dist/esm/keep-hydrated-Dv7ssOTc.js +0 -63
  432. package/dist/esm-es5/attributes-CF5K2pxn.js +0 -1
  433. package/dist/esm-es5/keep-hydrated-Dv7ssOTc.js +0 -1
  434. package/dist/pine-core/p-1cd0acf0.system.entry.js +0 -1
  435. package/dist/pine-core/p-207c94da.entry.js +0 -1
  436. package/dist/pine-core/p-2357758d.system.entry.js +0 -1
  437. package/dist/pine-core/p-281efc69.entry.js +0 -1
  438. package/dist/pine-core/p-2ac9e90a.system.entry.js +0 -1
  439. package/dist/pine-core/p-2f539379.system.entry.js +0 -3
  440. package/dist/pine-core/p-347ae53c.system.entry.js +0 -1
  441. package/dist/pine-core/p-34b575b6.entry.js +0 -2
  442. package/dist/pine-core/p-3b1d8fae.entry.js +0 -1
  443. package/dist/pine-core/p-4414d442.system.entry.js +0 -1
  444. package/dist/pine-core/p-4e67e68e.entry.js +0 -1
  445. package/dist/pine-core/p-539ef98c.entry.js +0 -1
  446. package/dist/pine-core/p-56576b6e.entry.js +0 -1
  447. package/dist/pine-core/p-5ac84b2f.entry.js +0 -1
  448. package/dist/pine-core/p-63854c10.system.entry.js +0 -1
  449. package/dist/pine-core/p-73bc6e9f.system.entry.js +0 -1
  450. package/dist/pine-core/p-798839f7.system.entry.js +0 -1
  451. package/dist/pine-core/p-7e115d33.system.entry.js +0 -1
  452. package/dist/pine-core/p-834c678e.system.entry.js +0 -1
  453. package/dist/pine-core/p-912487fa.entry.js +0 -1
  454. package/dist/pine-core/p-969488f5.system.entry.js +0 -1
  455. package/dist/pine-core/p-9bcdfac2.entry.js +0 -1
  456. package/dist/pine-core/p-9d33bb05.entry.js +0 -1
  457. package/dist/pine-core/p-BMFBF3sJ.system.js +0 -1
  458. package/dist/pine-core/p-D2MUS7JO.js +0 -1
  459. package/dist/pine-core/p-D2yHYrxQ.system.js +0 -1
  460. package/dist/pine-core/p-Dv7ssOTc.js +0 -1
  461. package/dist/pine-core/p-TyevV8iv.system.js +0 -1
  462. package/dist/pine-core/p-afd5e2d7.entry.js +0 -1
  463. package/dist/pine-core/p-bde53290.system.entry.js +0 -1
  464. package/dist/pine-core/p-bf1aea9f.system.entry.js +0 -1
  465. package/dist/pine-core/p-c9395f43.system.entry.js +0 -1
  466. package/dist/pine-core/p-d5dd5599.entry.js +0 -1
  467. package/dist/pine-core/p-dc81ffff.entry.js +0 -1
  468. package/dist/pine-core/p-e46f7541.system.entry.js +0 -1
  469. package/dist/pine-core/p-e7ba30dd.system.entry.js +0 -1
  470. package/dist/pine-core/p-ed3dd3d2.entry.js +0 -1
  471. package/dist/pine-core/p-eee4f146.entry.js +0 -1
  472. package/dist/pine-core/p-f01e35e2.entry.js +0 -1
  473. package/dist/pine-core/p-f2e0da9a.entry.js +0 -1
  474. package/dist/pine-core/p-fc6ac917.entry.js +0 -1
  475. package/dist/pine-core/p-ffe276ef.entry.js +0 -1
  476. /package/dist/esm-es5/{index-DxI-61GK.js → index-BJXk71tO.js} +0 -0
  477. /package/dist/pine-core/{p-DxI-61GK.js → p-BJXk71tO.js} +0 -0
  478. /package/dist/pine-core/{p-CnO10OxH.system.js → p-n3_ytl_p.system.js} +0 -0
@@ -1,6 +1,7 @@
1
1
  import type { BasePdsProps } from "../../utils/interfaces";
2
2
  import { PlacementType } from "../../utils/types";
3
3
  /**
4
+ * @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.
4
5
  * @part menu-panel - Exposes the dropdown menu container for styling.
5
6
  */
6
7
  export declare class PdsDropdownMenu implements BasePdsProps {
@@ -13,6 +14,7 @@ export declare class PdsDropdownMenu implements BasePdsProps {
13
14
  private triggerObserver;
14
15
  host: HTMLPdsDropdownMenuElement;
15
16
  currentFocusIndex: number;
17
+ hasHeader: boolean;
16
18
  /**
17
19
  * A unique identifier used for the underlying component `id` attribute.
18
20
  */
@@ -21,12 +23,14 @@ export declare class PdsDropdownMenu implements BasePdsProps {
21
23
  * The placement of the dropdown panel relative to the trigger.
22
24
  */
23
25
  placement: PlacementType;
26
+ componentWillLoad(): void;
24
27
  componentDidRender(): void;
25
28
  connectedCallback(): void;
26
29
  disconnectedCallback(): void;
27
30
  private handleTriggerSlotChange;
28
31
  private syncTriggerAria;
29
32
  private observeTrigger;
33
+ private handleHeaderSlotChange;
30
34
  private handleSlotChange;
31
35
  private toggleDropdown;
32
36
  private openDropdown;
@@ -38,6 +42,7 @@ export declare class PdsDropdownMenu implements BasePdsProps {
38
42
  private focusItemByIndex;
39
43
  private focusNextItem;
40
44
  private focusPreviousItem;
45
+ handleEscapeKeyDown(event: KeyboardEvent): void;
41
46
  handleKeyDown(event: KeyboardEvent): void;
42
47
  handleWindowClick(event: MouseEvent): void;
43
48
  render(): any;
@@ -9,7 +9,8 @@ export declare class PdsModal {
9
9
  private focusableElements;
10
10
  el: HTMLPdsModalElement;
11
11
  /**
12
- * Whether the modal can be dismissed by clicking the backdrop
12
+ * Whether the modal can be dismissed by clicking the backdrop, pressing Escape, or the browser's
13
+ * own close request (such as a back gesture)
13
14
  * @default true
14
15
  */
15
16
  backdropDismiss: boolean;
@@ -73,6 +74,7 @@ export declare class PdsModal {
73
74
  sizeChanged(): void;
74
75
  componentDidLoad(): void;
75
76
  componentDidRender(): void;
77
+ connectedCallback(): void;
76
78
  disconnectedCallback(): void;
77
79
  handleOpenChange(newValue: boolean): void;
78
80
  /**
@@ -96,6 +98,7 @@ export declare class PdsModal {
96
98
  * Closes the modal
97
99
  */
98
100
  hideModal(): Promise<void>;
101
+ private handleCancel;
99
102
  private handleBackdropClick;
100
103
  /**
101
104
  * Gets the z-index of a modal's backdrop element
@@ -127,9 +130,13 @@ export declare class PdsModal {
127
130
  */
128
131
  private isStackedAboveOverlay;
129
132
  /**
130
- * Checks if this modal is the innermost (highest z-index) modal
133
+ * The open modal that takes Escape or a backdrop click, among those with no other open modal
134
+ * inside them (a nested modal's backdrop can share its outer modal's z-index). A top-layer dialog
135
+ * (or a modal inside one) paints above anything outside it, and within the top layer the last
136
+ * opened is on top. Modals in the same layer (the page, or one top-layer dialog) then rank by
137
+ * the highest backdrop, then the one later in the page.
131
138
  */
132
- private isInnermostModal;
139
+ private innermostOpenModal;
133
140
  /** Whether a modal dialog other than this one sits between the focused element and this modal. */
134
141
  private modalDialogAbove;
135
142
  /** The focused element's place in the list: its own stop, or the innermost stop it sits in. */
@@ -319,7 +319,8 @@ export declare class PdsMultiselect {
319
319
  refreshOptions(): Promise<void>;
320
320
  /**
321
321
  * Handle global keyboard events for accessibility.
322
- * Closes dropdown on Escape key press regardless of focus location.
322
+ * Closes dropdown on Escape key press regardless of focus location. Taken in document's capture
323
+ * phase, before a modal around the multiselect hears it on document and closes too.
323
324
  */
324
325
  handleWindowKeyDown(event: KeyboardEvent): void;
325
326
  private get activeTriggerEl();
@@ -36,7 +36,7 @@ export declare class PdsPopover {
36
36
  */
37
37
  private triggerObserver;
38
38
  /**
39
- * Portal element rendered in document.body
39
+ * Portal element: in document.body, or in the open dialog the popover is in
40
40
  */
41
41
  private portalEl;
42
42
  /**
@@ -136,6 +136,9 @@ export declare class PdsPopover {
136
136
  * Restores moved nodes back to their original positions
137
137
  */
138
138
  private restorePortalContent;
139
+ /** The focus style copied into a shadow root the panel opened in, which `document.head` can't reach. */
140
+ private shadowFocusStyle;
141
+ private copyFocusStylesInto;
139
142
  private removePortal;
140
143
  /**
141
144
  * Opens the popover programmatically
@@ -149,14 +152,41 @@ export declare class PdsPopover {
149
152
  * Toggles the popover open/closed state programmatically
150
153
  */
151
154
  toggle(): Promise<void>;
155
+ /**
156
+ * Puts the panel where it shows above everything around the popover. In an open dialog, it goes
157
+ * inside it: a modal dialog sits in the top layer above the body and makes the rest of the page
158
+ * inert, and a non-modal one sits above it by z-index. Right after the popover, it's next in the
159
+ * Tab order. In another component's slot, though, it would have no slot to render in, and in a
160
+ * form its buttons would submit it, so there it goes at the end of the dialog.
161
+ */
162
+ private placePortal;
163
+ private forgetOpen;
164
+ /**
165
+ * Whether an Escape is this popover's. One from a dialog the popover isn't in belongs to that
166
+ * dialog when it's above it: a top-layer dialog or a pds-modal. A plain non-modal dialog inside
167
+ * the popover's modal doesn't close on Escape, so the popover takes it.
168
+ */
169
+ private takesEscapeFrom;
152
170
  /**
153
171
  * Adds light dismiss listeners (click outside and escape key)
154
172
  */
155
173
  private addLightDismissListeners;
174
+ /** The dialog the panel was opened in, closed along with it. */
175
+ private watchedDialog;
176
+ private onDialogClose;
177
+ /** Closes the popover when the dialog it opened in closes, so it isn't left open inside. */
178
+ private watchDialogClose;
179
+ private unwatchDialogClose;
156
180
  /**
157
181
  * Removes light dismiss listeners
158
182
  */
159
183
  private removeLightDismissListeners;
184
+ /**
185
+ * Inside a dialog, the panel can sit in a form that wraps the dialog, which a body portal never
186
+ * did. A submit from the panel (a button in it, or Enter in a field in it) is stopped, so the
187
+ * panel behaves as it does in the body.
188
+ */
189
+ private handleSubmitFromPanel;
160
190
  /**
161
191
  * Adds scroll and resize listeners for repositioning
162
192
  */
@@ -4,6 +4,9 @@ import { EventEmitter } from '../../../stencil-public-runtime';
4
4
  */
5
5
  export declare class PdsTab {
6
6
  el: HTMLPdsTabElement;
7
+ private hostKeeper;
8
+ connectedCallback(): void;
9
+ disconnectedCallback(): void;
7
10
  componentDidRender(): void;
8
11
  /**
9
12
  * Determines the tab's disabled state.
@@ -3,6 +3,9 @@
3
3
  */
4
4
  export declare class PdsTabpanel {
5
5
  el: HTMLPdsTabpanelElement;
6
+ private hostKeeper;
7
+ connectedCallback(): void;
8
+ disconnectedCallback(): void;
6
9
  componentDidRender(): void;
7
10
  /**
8
11
  * Sets the related tab name, this name must match a `pds-tab`'s tab name property
@@ -8,8 +8,16 @@ export declare class PdsTabs {
8
8
  private tabPanels;
9
9
  el: HTMLPdsTabsElement;
10
10
  private hostKeeper;
11
+ private tabsSlot;
12
+ private tabPanelsSlot;
13
+ private slotChangeScheduled;
14
+ private activeTabNameBeforeSlotChange;
15
+ private lastFocusedTab;
11
16
  connectedCallback(): void;
12
17
  disconnectedCallback(): void;
18
+ private handleFocusIn;
19
+ private handleFocusOut;
20
+ componentDidLoad(): void;
13
21
  /**
14
22
  * Sets the aria-label attached to the tablist element
15
23
  */
@@ -19,9 +27,10 @@ export declare class PdsTabs {
19
27
  */
20
28
  componentId: string;
21
29
  /**
22
- * Sets tabs variant styles as outlined in Figma documentation
30
+ * Sets tabs variant styles as outlined in Figma documentation.
31
+ * Applies in both panel and nav mode; omitting it renders the primary style.
23
32
  */
24
- variant: 'primary' | 'availability' | 'filter' | 'pill';
33
+ variant?: 'primary' | 'availability' | 'filter' | 'pill';
25
34
  /**
26
35
  * Adds a divider rule beneath the tab list.
27
36
  * @defaultValue false
@@ -58,6 +67,9 @@ export declare class PdsTabs {
58
67
  private warnOnNavConfig;
59
68
  private moveActiveTab;
60
69
  private findAllChildren;
70
+ private setupSlotChangeListeners;
71
+ private handleSlotChange;
72
+ private recollectAfterSlotChange;
61
73
  private propGeneration;
62
74
  private passPropsToChildren;
63
75
  private classNames;
@@ -1430,12 +1430,13 @@ export namespace Components {
1430
1430
  "vertical": boolean;
1431
1431
  }
1432
1432
  /**
1433
- * A non-modal side panel composed from `pds-modal`.
1434
- * Unlike `pds-modal`, the page stays interactive while a drawer is open: no
1435
- * dimming, no blur, no scroll lock, no click blocking. `pds-drawer` renders a
1436
- * `pds-modal` internally with `disableTopLayer` always on and its backdrop
1437
- * suppressed, and adds the edge, width and dismiss behavior a side panel
1438
- * needs on top. It does not reimplement focus, Escape or dialog semantics —
1433
+ * A side panel composed from `pds-modal`, non-modal by default.
1434
+ * By default, unlike `pds-modal`, the page stays interactive while a drawer
1435
+ * is open: no dimming, no blur, no scroll lock, no click blocking.
1436
+ * `pds-drawer` renders a `pds-modal` internally with `disableTopLayer` on and
1437
+ * its backdrop suppressed, and adds the edge, width and dismiss behavior a
1438
+ * side panel needs on top. With `modal`, it opens that `pds-modal` in the top
1439
+ * layer instead and keeps its backdrop. It does not reimplement focus, Escape or dialog semantics —
1439
1440
  * those come from `pds-modal` unchanged.
1440
1441
  * @lightDom renders-markup
1441
1442
  */
@@ -1445,15 +1446,20 @@ export namespace Components {
1445
1446
  */
1446
1447
  "componentId": string;
1447
1448
  /**
1448
- * Whether to move focus into the drawer when it opens. `auto` is right for a drawer opened by a direct user action (a click, a deep link the user just navigated to). Set to `none` for a drawer that can open from a background event while the user is mid-task elsewhere on the page — moving focus there would interrupt them, and the page stays live under a non-modal drawer, so it is a genuine data-entry risk, not just an annoyance.
1449
+ * Whether to move focus into the drawer when it opens. `auto` is right for a drawer opened by a direct user action (a click, a deep link the user just navigated to). Set to `none` for a drawer that can open from a background event while the user is mid-task elsewhere on the page — moving focus there would interrupt them, and the page stays live under a non-modal drawer, so it is a genuine data-entry risk, not just an annoyance. A `modal` drawer ignores `none`: the page behind it is inert, so focus starts in the drawer.
1449
1450
  * @default 'auto'
1450
1451
  */
1451
1452
  "initialFocus": 'auto' | 'none';
1452
1453
  /**
1453
- * Whether the drawer can be dismissed with a pointerdown outside it. Replaces `pds-modal`'s `backdropDismiss` — there is no backdrop to click. This also gates Escape, matching how `backdropDismiss` gates Escape on `pds-modal` today: setting this to `false` means the close button is the only way out. A trigger outside the drawer should only ever set `open` to `true` and leave closing to the drawer itself. A toggle-style trigger (`open = !open`) fights light dismiss: clicking it while open closes the drawer on `pointerdown`, then the trigger's own click handler re-opens it.
1454
+ * Whether the drawer can be dismissed with a pointerdown outside it (in a `modal` drawer, a click on its backdrop). Replaces `pds-modal`'s `backdropDismiss`. This also gates Escape, matching how `backdropDismiss` gates Escape on `pds-modal` today: setting this to `false` means the close button is the only way out. A trigger outside the drawer should only ever set `open` to `true` and leave closing to the drawer itself. A toggle-style trigger (`open = !open`) fights light dismiss: clicking it while open closes the drawer on `pointerdown`, then the trigger's own click handler re-opens it.
1454
1455
  * @default true
1455
1456
  */
1456
1457
  "lightDismiss": boolean;
1458
+ /**
1459
+ * Whether the drawer is modal. A modal drawer dims the page behind it with a backdrop, makes the page inert, and keeps focus inside the drawer, like `pds-modal`. Use it for a task the page should wait on. Leave it off for a panel people work alongside the page. Read when the drawer opens; changing it while the drawer is open is not supported.
1460
+ * @default false
1461
+ */
1462
+ "modal": boolean;
1457
1463
  /**
1458
1464
  * Whether the drawer is open
1459
1465
  * @default false
@@ -1838,7 +1844,7 @@ export namespace Components {
1838
1844
  */
1839
1845
  interface PdsModal {
1840
1846
  /**
1841
- * Whether the modal can be dismissed by clicking the backdrop
1847
+ * Whether the modal can be dismissed by clicking the backdrop, pressing Escape, or the browser's own close request (such as a back gesture)
1842
1848
  * @default true
1843
1849
  */
1844
1850
  "backdropDismiss": boolean;
@@ -2718,9 +2724,9 @@ export namespace Components {
2718
2724
  */
2719
2725
  "tablistLabel": string;
2720
2726
  /**
2721
- * Sets tabs variant styles as outlined in Figma documentation
2727
+ * Sets tabs variant styles as outlined in Figma documentation. Applies in both panel and nav mode; omitting it renders the primary style.
2722
2728
  */
2723
- "variant": 'primary' | 'availability' | 'filter' | 'pill';
2729
+ "variant"?: 'primary' | 'availability' | 'filter' | 'pill';
2724
2730
  }
2725
2731
  interface PdsText {
2726
2732
  /**
@@ -3254,12 +3260,13 @@ declare global {
3254
3260
  "pdsDrawerClose": void;
3255
3261
  }
3256
3262
  /**
3257
- * A non-modal side panel composed from `pds-modal`.
3258
- * Unlike `pds-modal`, the page stays interactive while a drawer is open: no
3259
- * dimming, no blur, no scroll lock, no click blocking. `pds-drawer` renders a
3260
- * `pds-modal` internally with `disableTopLayer` always on and its backdrop
3261
- * suppressed, and adds the edge, width and dismiss behavior a side panel
3262
- * needs on top. It does not reimplement focus, Escape or dialog semantics —
3263
+ * A side panel composed from `pds-modal`, non-modal by default.
3264
+ * By default, unlike `pds-modal`, the page stays interactive while a drawer
3265
+ * is open: no dimming, no blur, no scroll lock, no click blocking.
3266
+ * `pds-drawer` renders a `pds-modal` internally with `disableTopLayer` on and
3267
+ * its backdrop suppressed, and adds the edge, width and dismiss behavior a
3268
+ * side panel needs on top. With `modal`, it opens that `pds-modal` in the top
3269
+ * layer instead and keeps its backdrop. It does not reimplement focus, Escape or dialog semantics —
3263
3270
  * those come from `pds-modal` unchanged.
3264
3271
  * @lightDom renders-markup
3265
3272
  */
@@ -5284,12 +5291,13 @@ declare namespace LocalJSX {
5284
5291
  "vertical"?: boolean;
5285
5292
  }
5286
5293
  /**
5287
- * A non-modal side panel composed from `pds-modal`.
5288
- * Unlike `pds-modal`, the page stays interactive while a drawer is open: no
5289
- * dimming, no blur, no scroll lock, no click blocking. `pds-drawer` renders a
5290
- * `pds-modal` internally with `disableTopLayer` always on and its backdrop
5291
- * suppressed, and adds the edge, width and dismiss behavior a side panel
5292
- * needs on top. It does not reimplement focus, Escape or dialog semantics —
5294
+ * A side panel composed from `pds-modal`, non-modal by default.
5295
+ * By default, unlike `pds-modal`, the page stays interactive while a drawer
5296
+ * is open: no dimming, no blur, no scroll lock, no click blocking.
5297
+ * `pds-drawer` renders a `pds-modal` internally with `disableTopLayer` on and
5298
+ * its backdrop suppressed, and adds the edge, width and dismiss behavior a
5299
+ * side panel needs on top. With `modal`, it opens that `pds-modal` in the top
5300
+ * layer instead and keeps its backdrop. It does not reimplement focus, Escape or dialog semantics —
5293
5301
  * those come from `pds-modal` unchanged.
5294
5302
  * @lightDom renders-markup
5295
5303
  */
@@ -5299,15 +5307,20 @@ declare namespace LocalJSX {
5299
5307
  */
5300
5308
  "componentId"?: string;
5301
5309
  /**
5302
- * Whether to move focus into the drawer when it opens. `auto` is right for a drawer opened by a direct user action (a click, a deep link the user just navigated to). Set to `none` for a drawer that can open from a background event while the user is mid-task elsewhere on the page — moving focus there would interrupt them, and the page stays live under a non-modal drawer, so it is a genuine data-entry risk, not just an annoyance.
5310
+ * Whether to move focus into the drawer when it opens. `auto` is right for a drawer opened by a direct user action (a click, a deep link the user just navigated to). Set to `none` for a drawer that can open from a background event while the user is mid-task elsewhere on the page — moving focus there would interrupt them, and the page stays live under a non-modal drawer, so it is a genuine data-entry risk, not just an annoyance. A `modal` drawer ignores `none`: the page behind it is inert, so focus starts in the drawer.
5303
5311
  * @default 'auto'
5304
5312
  */
5305
5313
  "initialFocus"?: 'auto' | 'none';
5306
5314
  /**
5307
- * Whether the drawer can be dismissed with a pointerdown outside it. Replaces `pds-modal`'s `backdropDismiss` — there is no backdrop to click. This also gates Escape, matching how `backdropDismiss` gates Escape on `pds-modal` today: setting this to `false` means the close button is the only way out. A trigger outside the drawer should only ever set `open` to `true` and leave closing to the drawer itself. A toggle-style trigger (`open = !open`) fights light dismiss: clicking it while open closes the drawer on `pointerdown`, then the trigger's own click handler re-opens it.
5315
+ * Whether the drawer can be dismissed with a pointerdown outside it (in a `modal` drawer, a click on its backdrop). Replaces `pds-modal`'s `backdropDismiss`. This also gates Escape, matching how `backdropDismiss` gates Escape on `pds-modal` today: setting this to `false` means the close button is the only way out. A trigger outside the drawer should only ever set `open` to `true` and leave closing to the drawer itself. A toggle-style trigger (`open = !open`) fights light dismiss: clicking it while open closes the drawer on `pointerdown`, then the trigger's own click handler re-opens it.
5308
5316
  * @default true
5309
5317
  */
5310
5318
  "lightDismiss"?: boolean;
5319
+ /**
5320
+ * Whether the drawer is modal. A modal drawer dims the page behind it with a backdrop, makes the page inert, and keeps focus inside the drawer, like `pds-modal`. Use it for a task the page should wait on. Leave it off for a panel people work alongside the page. Read when the drawer opens; changing it while the drawer is open is not supported.
5321
+ * @default false
5322
+ */
5323
+ "modal"?: boolean;
5311
5324
  /**
5312
5325
  * Emitted when the drawer is closed
5313
5326
  */
@@ -5724,7 +5737,7 @@ declare namespace LocalJSX {
5724
5737
  */
5725
5738
  interface PdsModal {
5726
5739
  /**
5727
- * Whether the modal can be dismissed by clicking the backdrop
5740
+ * Whether the modal can be dismissed by clicking the backdrop, pressing Escape, or the browser's own close request (such as a back gesture)
5728
5741
  * @default true
5729
5742
  */
5730
5743
  "backdropDismiss"?: boolean;
@@ -6644,9 +6657,9 @@ declare namespace LocalJSX {
6644
6657
  */
6645
6658
  "tablistLabel": string;
6646
6659
  /**
6647
- * Sets tabs variant styles as outlined in Figma documentation
6660
+ * Sets tabs variant styles as outlined in Figma documentation. Applies in both panel and nav mode; omitting it renders the primary style.
6648
6661
  */
6649
- "variant": 'primary' | 'availability' | 'filter' | 'pill';
6662
+ "variant"?: 'primary' | 'availability' | 'filter' | 'pill';
6650
6663
  }
6651
6664
  interface PdsText {
6652
6665
  /**
@@ -7200,6 +7213,7 @@ declare namespace LocalJSX {
7200
7213
  "side": 'start' | 'end';
7201
7214
  "size": 'sm' | 'md';
7202
7215
  "scrollable": boolean;
7216
+ "modal": boolean;
7203
7217
  "lightDismiss": boolean;
7204
7218
  "initialFocus": 'auto' | 'none';
7205
7219
  }
@@ -7613,7 +7627,7 @@ declare namespace LocalJSX {
7613
7627
  "pds-table-head-cell": Omit<PdsTableHeadCell, keyof PdsTableHeadCellAttributes> & { [K in keyof PdsTableHeadCell & keyof PdsTableHeadCellAttributes]?: PdsTableHeadCell[K] } & { [K in keyof PdsTableHeadCell & keyof PdsTableHeadCellAttributes as `attr:${K}`]?: PdsTableHeadCellAttributes[K] } & { [K in keyof PdsTableHeadCell & keyof PdsTableHeadCellAttributes as `prop:${K}`]?: PdsTableHeadCell[K] };
7614
7628
  "pds-table-row": Omit<PdsTableRow, keyof PdsTableRowAttributes> & { [K in keyof PdsTableRow & keyof PdsTableRowAttributes]?: PdsTableRow[K] } & { [K in keyof PdsTableRow & keyof PdsTableRowAttributes as `attr:${K}`]?: PdsTableRowAttributes[K] } & { [K in keyof PdsTableRow & keyof PdsTableRowAttributes as `prop:${K}`]?: PdsTableRow[K] };
7615
7629
  "pds-tabpanel": Omit<PdsTabpanel, keyof PdsTabpanelAttributes> & { [K in keyof PdsTabpanel & keyof PdsTabpanelAttributes]?: PdsTabpanel[K] } & { [K in keyof PdsTabpanel & keyof PdsTabpanelAttributes as `attr:${K}`]?: PdsTabpanelAttributes[K] } & { [K in keyof PdsTabpanel & keyof PdsTabpanelAttributes as `prop:${K}`]?: PdsTabpanel[K] } & OneOf<"name", PdsTabpanel["name"], PdsTabpanelAttributes["name"]>;
7616
- "pds-tabs": Omit<PdsTabs, keyof PdsTabsAttributes> & { [K in keyof PdsTabs & keyof PdsTabsAttributes]?: PdsTabs[K] } & { [K in keyof PdsTabs & keyof PdsTabsAttributes as `attr:${K}`]?: PdsTabsAttributes[K] } & { [K in keyof PdsTabs & keyof PdsTabsAttributes as `prop:${K}`]?: PdsTabs[K] } & OneOf<"tablistLabel", PdsTabs["tablistLabel"], PdsTabsAttributes["tablistLabel"]> & OneOf<"componentId", PdsTabs["componentId"], PdsTabsAttributes["componentId"]> & OneOf<"variant", PdsTabs["variant"], PdsTabsAttributes["variant"]>;
7630
+ "pds-tabs": Omit<PdsTabs, keyof PdsTabsAttributes> & { [K in keyof PdsTabs & keyof PdsTabsAttributes]?: PdsTabs[K] } & { [K in keyof PdsTabs & keyof PdsTabsAttributes as `attr:${K}`]?: PdsTabsAttributes[K] } & { [K in keyof PdsTabs & keyof PdsTabsAttributes as `prop:${K}`]?: PdsTabs[K] } & OneOf<"tablistLabel", PdsTabs["tablistLabel"], PdsTabsAttributes["tablistLabel"]> & OneOf<"componentId", PdsTabs["componentId"], PdsTabsAttributes["componentId"]>;
7617
7631
  "pds-text": Omit<PdsText, keyof PdsTextAttributes> & { [K in keyof PdsText & keyof PdsTextAttributes]?: PdsText[K] } & { [K in keyof PdsText & keyof PdsTextAttributes as `attr:${K}`]?: PdsTextAttributes[K] } & { [K in keyof PdsText & keyof PdsTextAttributes as `prop:${K}`]?: PdsText[K] };
7618
7632
  "pds-textarea": Omit<PdsTextarea, keyof PdsTextareaAttributes> & { [K in keyof PdsTextarea & keyof PdsTextareaAttributes]?: PdsTextarea[K] } & { [K in keyof PdsTextarea & keyof PdsTextareaAttributes as `attr:${K}`]?: PdsTextareaAttributes[K] } & { [K in keyof PdsTextarea & keyof PdsTextareaAttributes as `prop:${K}`]?: PdsTextarea[K] } & OneOf<"componentId", PdsTextarea["componentId"], PdsTextareaAttributes["componentId"]>;
7619
7633
  "pds-toast": Omit<PdsToast, keyof PdsToastAttributes> & { [K in keyof PdsToast & keyof PdsToastAttributes]?: PdsToast[K] } & { [K in keyof PdsToast & keyof PdsToastAttributes as `attr:${K}`]?: PdsToastAttributes[K] } & { [K in keyof PdsToast & keyof PdsToastAttributes as `prop:${K}`]?: PdsToast[K] } & OneOf<"componentId", PdsToast["componentId"], PdsToastAttributes["componentId"]>;
@@ -7650,12 +7664,13 @@ declare module "@stencil/core" {
7650
7664
  "pds-datepicker": LocalJSX.IntrinsicElements["pds-datepicker"] & JSXBase.HTMLAttributes<HTMLPdsDatepickerElement>;
7651
7665
  "pds-divider": LocalJSX.IntrinsicElements["pds-divider"] & JSXBase.HTMLAttributes<HTMLPdsDividerElement>;
7652
7666
  /**
7653
- * A non-modal side panel composed from `pds-modal`.
7654
- * Unlike `pds-modal`, the page stays interactive while a drawer is open: no
7655
- * dimming, no blur, no scroll lock, no click blocking. `pds-drawer` renders a
7656
- * `pds-modal` internally with `disableTopLayer` always on and its backdrop
7657
- * suppressed, and adds the edge, width and dismiss behavior a side panel
7658
- * needs on top. It does not reimplement focus, Escape or dialog semantics —
7667
+ * A side panel composed from `pds-modal`, non-modal by default.
7668
+ * By default, unlike `pds-modal`, the page stays interactive while a drawer
7669
+ * is open: no dimming, no blur, no scroll lock, no click blocking.
7670
+ * `pds-drawer` renders a `pds-modal` internally with `disableTopLayer` on and
7671
+ * its backdrop suppressed, and adds the edge, width and dismiss behavior a
7672
+ * side panel needs on top. With `modal`, it opens that `pds-modal` in the top
7673
+ * layer instead and keeps its backdrop. It does not reimplement focus, Escape or dialog semantics —
7659
7674
  * those come from `pds-modal` unchanged.
7660
7675
  * @lightDom renders-markup
7661
7676
  */
@@ -7,7 +7,7 @@ export type Attributes = {
7
7
  * @param el - Element to write to
8
8
  * @param attributes - Attribute names and the values they should have
9
9
  */
10
- export declare const setAttributesIfChanged: (el: Element, attributes: Record<string, string>) => void;
10
+ export declare const setAttributesIfChanged: (el: Element, attributes: Record<string, string>) => boolean;
11
11
  /**
12
12
  * The classes, style properties and other attributes a component renders onto its own host.
13
13
  */
@@ -23,7 +23,7 @@ export type HostStyling = {
23
23
  * @param el - Host element
24
24
  * @param expected - Classes and style properties the component rendered
25
25
  */
26
- export declare const restoreHostStyling: (el: HTMLElement, { classes, styles }: HostStyling) => void;
26
+ export declare const restoreHostStyling: (el: HTMLElement, { classes, styles }: HostStyling) => boolean;
27
27
  /**
28
28
  * Inherit attributes from the host element
29
29
  * @param el - Host element
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Escapes a string so it's safe to interpolate into a CSS identifier (an id selector like `#${id}`)
3
+ * or into CSS text (a stylesheet rule referencing that id). Equivalent to the native `CSS.escape`,
4
+ * reimplemented because Stencil's unit-test DOM (`newSpecPage`'s mock-doc) doesn't provide it.
5
+ * @param value - The string to escape, e.g. a consumer-supplied id
6
+ */
7
+ export declare const cssEscape: (value: string) => string;
@@ -11,6 +11,32 @@ export declare const isStencilClass: (el: Element, name: string) => boolean;
11
11
  * The class names in a rendered `class` value: a string, or Stencil's `{ name: boolean }` form.
12
12
  */
13
13
  export declare const classNamesOf: (classes: string | Record<string, boolean>) => string[];
14
+ /**
15
+ * The restore kind for a host's own classes, styles and attributes, shared by a component's own
16
+ * host restore and `keepPineHydrated`: one fight on a host's classes stops both, and warns once.
17
+ */
18
+ export declare const HOST_RESTORE = "host";
19
+ /**
20
+ * Remembers the Stencil classes an element has had, and returns all of them. A restore can't read
21
+ * them from the latest mutation alone: after a script's last strip they're gone from its old value
22
+ * too, and the next change would restore nothing.
23
+ */
24
+ export declare const stencilClassesOf: (seen: Set<string>, el: Element, oldValue: string | null) => string[];
25
+ /**
26
+ * Wraps a restore callback, which returns whether it wrote anything, so that it writes at most
27
+ * `MAX_RESTORES_PER_TASK` times before the next task (until the message posted after its first write
28
+ * runs). Past that, another script is undoing every restore as soon as it lands, so it stops and
29
+ * lets that script win rather than hang the page. What that script left stays until something
30
+ * changes the element again: the count resets on the next task, so a later change is restored, but
31
+ * nothing is restored on its own. The first give-up warns, logging `el` so it can be found in
32
+ * devtools; later ones, and other restores of the same `kind` giving up on the same element, are
33
+ * silent.
34
+ * @param restore - Puts back what something removed; returns `true` if it wrote anything
35
+ * @param warning - What the console warning says was given up
36
+ * @param el - The element being restored, logged with the warning
37
+ * @param kind - What's being restored; one warning per element for each kind
38
+ */
39
+ export declare const limitRestores: <A extends unknown[]>(restore: (...args: A) => boolean, warning: string, el?: Element, kind?: string) => ((...args: A) => void);
14
40
  /**
15
41
  * Puts Stencil's own classes back on any Pine component that loses them. Stencil hides a component
16
42
  * until it has `hydrated`, so a DOM morph that strips a host's `class` makes it vanish, and nothing
@@ -18,8 +44,9 @@ export declare const classNamesOf: (classes: string | Record<string, boolean>) =
18
44
  * host restore of their own. It only restores classes the element had, so it never runs ahead of
19
45
  * Stencil. It can't see inside shadow roots, which a morph doesn't reach either.
20
46
  *
21
- * A script that removes `hydrated` on purpose sees it come back, and one that removes it every time it
22
- * appears never settles: don't strip Pine's classes from a `MutationObserver`.
47
+ * A script that removes `hydrated` on purpose sees it come back. One that removes it every time it
48
+ * appears (from a `MutationObserver`, say) wins after a few rounds, and the component logs a console
49
+ * warning. The component then stays hidden, as that script left it, until its class changes again.
23
50
  *
24
51
  * Pine's global script calls this, so the CDN and `dist` builds get it on load. The custom-elements
25
52
  * build (`@pine-ds/core/components/*`, `@pine-ds/react`) has no global script: call it once yourself.
@@ -8174,7 +8174,7 @@
8174
8174
  "name": "pds-drawer",
8175
8175
  "description": {
8176
8176
  "kind": "markdown",
8177
- "value": "A non-modal side panel. Unlike `pds-modal`, the page stays interactive while a drawer is open — no dimming, no blur, no scroll lock, no click blocking.\n\n**Events:**\n- `pdsDrawerClose` - Emitted when the drawer is closed\n- `pdsDrawerOpen` - Emitted when the drawer is opened"
8177
+ "value": "A side panel. By default it's non-modal: unlike `pds-modal`, the page stays interactive while a drawer is open — no dimming, no blur, no scroll lock, no click blocking. Add `modal` for a drawer the page should wait on (see [Modal](#modal)).\n\n**Events:**\n- `pdsDrawerClose` - Emitted when the drawer is closed\n- `pdsDrawerOpen` - Emitted when the drawer is opened"
8178
8178
  },
8179
8179
  "attributes": [
8180
8180
  {
@@ -8188,7 +8188,7 @@
8188
8188
  "name": "initial-focus",
8189
8189
  "description": {
8190
8190
  "kind": "markdown",
8191
- "value": "Whether to move focus into the drawer when it opens. `auto` is right for\na drawer opened by a direct user action (a click, a deep link the user\njust navigated to). Set to `none` for a drawer that can open from a\nbackground event while the user is mid-task elsewhere on the page —\nmoving focus there would interrupt them, and the page stays live under\na non-modal drawer, so it is a genuine data-entry risk, not just an\nannoyance.\n\n**Type:** `\"auto\" | \"none\"`\n\n**Default:** `'auto'`"
8191
+ "value": "Whether to move focus into the drawer when it opens. `auto` is right for\na drawer opened by a direct user action (a click, a deep link the user\njust navigated to). Set to `none` for a drawer that can open from a\nbackground event while the user is mid-task elsewhere on the page —\nmoving focus there would interrupt them, and the page stays live under\na non-modal drawer, so it is a genuine data-entry risk, not just an\nannoyance. A `modal` drawer ignores `none`: the page behind it is inert,\nso focus starts in the drawer.\n\n**Type:** `\"auto\" | \"none\"`\n\n**Default:** `'auto'`"
8192
8192
  },
8193
8193
  "values": [
8194
8194
  {
@@ -8203,7 +8203,14 @@
8203
8203
  "name": "light-dismiss",
8204
8204
  "description": {
8205
8205
  "kind": "markdown",
8206
- "value": "Whether the drawer can be dismissed with a pointerdown outside it.\nReplaces `pds-modal`'s `backdropDismiss` — there is no backdrop to click.\nThis also gates Escape, matching how `backdropDismiss` gates Escape on\n`pds-modal` today: setting this to `false` means the close button is the\nonly way out.\n\nA trigger outside the drawer should only ever set `open` to `true` and\nleave closing to the drawer itself. A toggle-style trigger (`open =\n!open`) fights light dismiss: clicking it while open closes the drawer\non `pointerdown`, then the trigger's own click handler re-opens it.\n\n**Default:** `true`"
8206
+ "value": "Whether the drawer can be dismissed with a pointerdown outside it (in a\n`modal` drawer, a click on its backdrop).\nReplaces `pds-modal`'s `backdropDismiss`.\nThis also gates Escape, matching how `backdropDismiss` gates Escape on\n`pds-modal` today: setting this to `false` means the close button is the\nonly way out.\n\nA trigger outside the drawer should only ever set `open` to `true` and\nleave closing to the drawer itself. A toggle-style trigger (`open =\n!open`) fights light dismiss: clicking it while open closes the drawer\non `pointerdown`, then the trigger's own click handler re-opens it.\n\n**Default:** `true`"
8207
+ }
8208
+ },
8209
+ {
8210
+ "name": "modal",
8211
+ "description": {
8212
+ "kind": "markdown",
8213
+ "value": "Whether the drawer is modal. A modal drawer dims the page behind it with a\nbackdrop, makes the page inert, and keeps focus inside the drawer, like\n`pds-modal`. Use it for a task the page should wait on. Leave it off for a\npanel people work alongside the page. Read when the drawer opens; changing\nit while the drawer is open is not supported.\n\n**Default:** `false`"
8207
8214
  }
8208
8215
  },
8209
8216
  {
@@ -8304,7 +8311,7 @@
8304
8311
  "name": "pds-dropdown-menu",
8305
8312
  "description": {
8306
8313
  "kind": "markdown",
8307
- "value": "Dropdown Menus reveal a list of actions from a button trigger, implementing the WAI-ARIA Menu Button pattern. Use them to conserve space when options do not need to be visible at all times.\n\n**Examples:**\n[Default](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#default), [With Separator](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#with-separator), [With Icons](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#with-icons), [With Links](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#with-links), [With External Links](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#with-external-links), [Mixing Menu Items with Raw Elements](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#mixing-menu-items-with-raw-elements), [With Disabled Items](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#with-disabled-items), [With Custom Placement](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#with-custom-placement), [Scrollable Menu](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#scrollable-menu)\n\n**CSS Parts:**\n- `menu-panel` - Exposes the dropdown menu container for styling."
8314
+ "value": "Dropdown Menus reveal a list of actions from a button trigger, implementing the WAI-ARIA Menu Button pattern. Use them to conserve space when options do not need to be visible at all times.\n\n**Examples:**\n[Default](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#default), [With Separator](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#with-separator), [With Icons](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#with-icons), [With Header](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#with-header), [With Links](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#with-links), [With External Links](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#with-external-links), [Mixing Menu Items with Raw Elements](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#mixing-menu-items-with-raw-elements), [With Disabled Items](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#with-disabled-items), [With Custom Placement](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#with-custom-placement), [Scrollable Menu](https://pine-design-system.netlify.app/?path=/docs/components-dropdown-menu--docs#scrollable-menu)\n\n**Slots:**\n- `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.\n\n**CSS Parts:**\n- `menu-panel` - Exposes the dropdown menu container for styling."
8308
8315
  },
8309
8316
  "attributes": [
8310
8317
  {
@@ -9062,7 +9069,7 @@
9062
9069
  "name": "backdrop-dismiss",
9063
9070
  "description": {
9064
9071
  "kind": "markdown",
9065
- "value": "Whether the modal can be dismissed by clicking the backdrop\n\n**Default:** `true`"
9072
+ "value": "Whether the modal can be dismissed by clicking the backdrop, pressing Escape, or the browser's\nown close request (such as a back gesture)\n\n**Default:** `true`"
9066
9073
  }
9067
9074
  },
9068
9075
  {
@@ -11016,7 +11023,7 @@
11016
11023
  "name": "variant",
11017
11024
  "description": {
11018
11025
  "kind": "markdown",
11019
- "value": "Sets tabs variant styles as outlined in Figma documentation\n\n**Type:** `\"availability\" | \"filter\" | \"pill\" | \"primary\"`"
11026
+ "value": "Sets tabs variant styles as outlined in Figma documentation.\nApplies in both panel and nav mode; omitting it renders the primary style.\n\n**Type:** `\"availability\" | \"filter\" | \"pill\" | \"primary\"`"
11020
11027
  },
11021
11028
  "values": [
11022
11029
  {