@pine-ds/core 4.4.4 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. package/components/attributes.js +1 -1
  2. package/components/index.js +1 -1
  3. package/components/mock-pds-modal.js +1 -1
  4. package/components/pds-combobox.js +1 -1
  5. package/components/pds-container.js +1 -1
  6. package/components/pds-copytext.js +1 -1
  7. package/components/pds-datepicker.js +1 -1
  8. package/components/pds-divider.js +1 -1
  9. package/components/pds-drawer-content.js +1 -1
  10. package/components/pds-drawer-footer.js +1 -1
  11. package/components/pds-drawer-header.js +1 -1
  12. package/components/pds-drawer.js +1 -1
  13. package/components/pds-dropdown-menu-item.js +1 -1
  14. package/components/pds-dropdown-menu-separator.js +1 -1
  15. package/components/pds-dropdown-menu.js +1 -1
  16. package/components/pds-filter.js +1 -1
  17. package/components/pds-filters.js +1 -1
  18. package/components/pds-icon2.js +1 -1
  19. package/components/pds-image.js +1 -1
  20. package/components/pds-input2.js +1 -1
  21. package/components/pds-link2.js +1 -1
  22. package/components/pds-loader2.js +1 -1
  23. package/components/pds-modal-content.js +1 -1
  24. package/components/pds-modal-footer.js +1 -1
  25. package/components/pds-modal-header.js +1 -1
  26. package/components/pds-modal2.js +1 -1
  27. package/components/pds-multiselect.js +1 -1
  28. package/components/pds-popover.js +1 -1
  29. package/components/pds-progress.js +1 -1
  30. package/components/pds-property.js +1 -1
  31. package/components/pds-radio-group.js +1 -1
  32. package/components/pds-radio.js +1 -1
  33. package/components/pds-row.js +1 -1
  34. package/components/pds-select.js +1 -1
  35. package/components/pds-sortable-item.js +1 -1
  36. package/components/pds-sortable.js +1 -1
  37. package/components/pds-switch.js +1 -1
  38. package/components/pds-tab.js +1 -1
  39. package/components/pds-table-body.js +1 -1
  40. package/components/pds-table-cell2.js +1 -1
  41. package/components/pds-table-head-cell2.js +1 -1
  42. package/components/pds-table-head.js +1 -1
  43. package/components/pds-table-row.js +1 -1
  44. package/components/pds-tabpanel.js +1 -1
  45. package/components/pds-tabs.js +1 -1
  46. package/components/pds-text2.js +1 -1
  47. package/components/pds-textarea.js +1 -1
  48. package/components/pds-toast.js +1 -1
  49. package/components/pds-tooltip.js +1 -1
  50. package/dist/cjs/{attributes-DrQqSEv4.js → attributes-BJ7KBHql.js} +22 -25
  51. package/dist/cjs/{index-D-QQKB0y.js → index-5Azb8EQG.js} +1 -1
  52. package/dist/cjs/{index-D8Gl0bIB.js → index-jl_Q819j.js} +10 -1
  53. package/dist/cjs/index.cjs.js +3 -0
  54. package/dist/cjs/keep-hydrated-CiXgkEYd.js +196 -0
  55. package/dist/cjs/loader.cjs.js +3 -2
  56. package/dist/cjs/mock-pds-modal.cjs.entry.js +3 -2
  57. package/dist/cjs/pds-accordion.cjs.entry.js +3 -2
  58. package/dist/cjs/pds-alert.cjs.entry.js +2 -1
  59. package/dist/cjs/pds-avatar.cjs.entry.js +3 -2
  60. package/dist/cjs/pds-box.cjs.entry.js +3 -2
  61. package/dist/cjs/pds-button.cjs.entry.js +3 -2
  62. package/dist/cjs/pds-checkbox.cjs.entry.js +4 -3
  63. package/dist/cjs/pds-chip.cjs.entry.js +4 -3
  64. package/dist/cjs/pds-combobox.cjs.entry.js +156 -26
  65. package/dist/cjs/pds-container.cjs.entry.js +3 -2
  66. package/dist/cjs/pds-copytext.cjs.entry.js +5 -4
  67. package/dist/cjs/pds-datepicker.cjs.entry.js +6 -5
  68. package/dist/cjs/pds-divider.cjs.entry.js +3 -2
  69. package/dist/cjs/pds-drawer-content.cjs.entry.js +3 -2
  70. package/dist/cjs/pds-drawer-footer.cjs.entry.js +3 -2
  71. package/dist/cjs/pds-drawer-header.cjs.entry.js +3 -2
  72. package/dist/cjs/pds-drawer.cjs.entry.js +4 -3
  73. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +3 -2
  74. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +3 -2
  75. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +16 -7
  76. package/dist/cjs/pds-filter.cjs.entry.js +4 -3
  77. package/dist/cjs/pds-filters.cjs.entry.js +3 -2
  78. package/dist/cjs/pds-icon.cjs.entry.js +27 -3
  79. package/dist/cjs/pds-image.cjs.entry.js +4 -3
  80. package/dist/cjs/pds-input.cjs.entry.js +6 -5
  81. package/dist/cjs/pds-link.cjs.entry.js +5 -4
  82. package/dist/cjs/pds-loader.cjs.entry.js +4 -3
  83. package/dist/cjs/pds-modal-content.cjs.entry.js +4 -3
  84. package/dist/cjs/pds-modal-footer.cjs.entry.js +3 -2
  85. package/dist/cjs/pds-modal-header.cjs.entry.js +3 -2
  86. package/dist/cjs/pds-modal.cjs.entry.js +5 -4
  87. package/dist/cjs/pds-multiselect.cjs.entry.js +6 -5
  88. package/dist/cjs/pds-popover.cjs.entry.js +58 -11
  89. package/dist/cjs/pds-progress.cjs.entry.js +4 -3
  90. package/dist/cjs/pds-property.cjs.entry.js +3 -2
  91. package/dist/cjs/pds-radio-group.cjs.entry.js +6 -5
  92. package/dist/cjs/pds-radio.cjs.entry.js +7 -6
  93. package/dist/cjs/pds-row.cjs.entry.js +4 -3
  94. package/dist/cjs/pds-select.cjs.entry.js +5 -4
  95. package/dist/cjs/pds-sortable-item.cjs.entry.js +5 -4
  96. package/dist/cjs/pds-sortable.cjs.entry.js +4 -3
  97. package/dist/cjs/pds-switch.cjs.entry.js +7 -6
  98. package/dist/cjs/pds-tab.cjs.entry.js +13 -1
  99. package/dist/cjs/pds-table-body.cjs.entry.js +3 -2
  100. package/dist/cjs/pds-table-cell.cjs.entry.js +4 -3
  101. package/dist/cjs/pds-table-head-cell.cjs.entry.js +5 -4
  102. package/dist/cjs/pds-table-head.cjs.entry.js +3 -2
  103. package/dist/cjs/pds-table-row.cjs.entry.js +3 -2
  104. package/dist/cjs/pds-table.cjs.entry.js +2 -1
  105. package/dist/cjs/pds-tabpanel.cjs.entry.js +15 -2
  106. package/dist/cjs/pds-tabs.cjs.entry.js +111 -6
  107. package/dist/cjs/pds-text.cjs.entry.js +3 -2
  108. package/dist/cjs/pds-textarea.cjs.entry.js +8 -7
  109. package/dist/cjs/pds-toast.cjs.entry.js +5 -4
  110. package/dist/cjs/pds-tooltip.cjs.entry.js +4 -3
  111. package/dist/cjs/pine-core.cjs.js +3 -2
  112. package/dist/collection/collection-manifest.json +2 -1
  113. package/dist/collection/components/pds-combobox/grouped-options-panel.js +21 -3
  114. package/dist/collection/components/pds-combobox/pds-combobox.css +42 -13
  115. package/dist/collection/components/pds-combobox/pds-combobox.js +135 -22
  116. package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +45 -0
  117. package/dist/collection/components/pds-container/pds-container.js +1 -1
  118. package/dist/collection/components/pds-copytext/pds-copytext.js +1 -1
  119. package/dist/collection/components/pds-datepicker/pds-datepicker.css +4 -2
  120. package/dist/collection/components/pds-datepicker/pds-datepicker.js +2 -2
  121. package/dist/collection/components/pds-divider/pds-divider.js +1 -1
  122. package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.js +1 -1
  123. package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.js +1 -1
  124. package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.js +1 -1
  125. package/dist/collection/components/pds-drawer/pds-drawer.js +2 -2
  126. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +1 -1
  127. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +1 -1
  128. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +19 -5
  129. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +16 -5
  130. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +1 -1
  131. package/dist/collection/components/pds-filters/pds-filters.js +1 -1
  132. package/dist/collection/components/pds-image/pds-image.js +2 -2
  133. package/dist/collection/components/pds-input/pds-input.js +2 -2
  134. package/dist/collection/components/pds-link/pds-link.js +2 -2
  135. package/dist/collection/components/pds-loader/pds-loader.js +1 -1
  136. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +2 -2
  137. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +1 -1
  138. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +1 -1
  139. package/dist/collection/components/pds-modal/pds-modal.js +3 -3
  140. package/dist/collection/components/pds-modal/test/mock-pds-modal.js +1 -1
  141. package/dist/collection/components/pds-multiselect/pds-multiselect.js +3 -3
  142. package/dist/collection/components/pds-popover/pds-popover.js +15 -9
  143. package/dist/collection/components/pds-progress/pds-progress.js +1 -1
  144. package/dist/collection/components/pds-property/pds-property.js +1 -1
  145. package/dist/collection/components/pds-radio/pds-radio.js +3 -3
  146. package/dist/collection/components/pds-radio-group/pds-radio-group.js +3 -3
  147. package/dist/collection/components/pds-row/pds-row.js +1 -1
  148. package/dist/collection/components/pds-select/pds-select.js +1 -1
  149. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
  150. package/dist/collection/components/pds-sortable/pds-sortable.js +1 -1
  151. package/dist/collection/components/pds-switch/pds-switch.js +3 -3
  152. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
  153. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +2 -2
  154. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +1 -1
  155. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +2 -2
  156. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +1 -1
  157. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js +11 -0
  158. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +13 -1
  159. package/dist/collection/components/pds-tabs/pds-tabs.js +111 -7
  160. package/dist/collection/components/pds-text/pds-text.js +1 -1
  161. package/dist/collection/components/pds-textarea/pds-textarea.js +4 -4
  162. package/dist/collection/components/pds-toast/pds-toast.js +3 -3
  163. package/dist/collection/components/pds-tooltip/pds-tooltip.js +2 -2
  164. package/dist/collection/global/pine-global.js +6 -0
  165. package/dist/collection/index.js +1 -0
  166. package/dist/collection/utils/attributes.js +20 -24
  167. package/dist/collection/utils/css.js +41 -0
  168. package/dist/collection/utils/keep-hydrated.js +188 -0
  169. package/dist/docs.json +15 -6
  170. package/dist/esm/{attributes-myrJDwbR.js → attributes-WXw_I_uJ.js} +21 -24
  171. package/dist/esm/{index-DxI-61GK.js → index-BJXk71tO.js} +1 -1
  172. package/dist/esm/{index-bLhIfh0N.js → index-Cw9J31qd.js} +10 -1
  173. package/dist/esm/index.js +2 -0
  174. package/dist/esm/keep-hydrated-BLG6RDBt.js +190 -0
  175. package/dist/esm/loader.js +4 -3
  176. package/dist/esm/mock-pds-modal.entry.js +3 -2
  177. package/dist/esm/pds-accordion.entry.js +3 -2
  178. package/dist/esm/pds-alert.entry.js +2 -1
  179. package/dist/esm/pds-avatar.entry.js +3 -2
  180. package/dist/esm/pds-box.entry.js +3 -2
  181. package/dist/esm/pds-button.entry.js +3 -2
  182. package/dist/esm/pds-checkbox.entry.js +4 -3
  183. package/dist/esm/pds-chip.entry.js +4 -3
  184. package/dist/esm/pds-combobox.entry.js +156 -26
  185. package/dist/esm/pds-container.entry.js +3 -2
  186. package/dist/esm/pds-copytext.entry.js +5 -4
  187. package/dist/esm/pds-datepicker.entry.js +6 -5
  188. package/dist/esm/pds-divider.entry.js +3 -2
  189. package/dist/esm/pds-drawer-content.entry.js +3 -2
  190. package/dist/esm/pds-drawer-footer.entry.js +3 -2
  191. package/dist/esm/pds-drawer-header.entry.js +3 -2
  192. package/dist/esm/pds-drawer.entry.js +4 -3
  193. package/dist/esm/pds-dropdown-menu-item.entry.js +3 -2
  194. package/dist/esm/pds-dropdown-menu-separator.entry.js +3 -2
  195. package/dist/esm/pds-dropdown-menu.entry.js +16 -7
  196. package/dist/esm/pds-filter.entry.js +4 -3
  197. package/dist/esm/pds-filters.entry.js +3 -2
  198. package/dist/esm/pds-icon.entry.js +27 -3
  199. package/dist/esm/pds-image.entry.js +4 -3
  200. package/dist/esm/pds-input.entry.js +6 -5
  201. package/dist/esm/pds-link.entry.js +5 -4
  202. package/dist/esm/pds-loader.entry.js +4 -3
  203. package/dist/esm/pds-modal-content.entry.js +4 -3
  204. package/dist/esm/pds-modal-footer.entry.js +3 -2
  205. package/dist/esm/pds-modal-header.entry.js +3 -2
  206. package/dist/esm/pds-modal.entry.js +5 -4
  207. package/dist/esm/pds-multiselect.entry.js +6 -5
  208. package/dist/esm/pds-popover.entry.js +58 -11
  209. package/dist/esm/pds-progress.entry.js +4 -3
  210. package/dist/esm/pds-property.entry.js +3 -2
  211. package/dist/esm/pds-radio-group.entry.js +6 -5
  212. package/dist/esm/pds-radio.entry.js +7 -6
  213. package/dist/esm/pds-row.entry.js +4 -3
  214. package/dist/esm/pds-select.entry.js +5 -4
  215. package/dist/esm/pds-sortable-item.entry.js +5 -4
  216. package/dist/esm/pds-sortable.entry.js +4 -3
  217. package/dist/esm/pds-switch.entry.js +7 -6
  218. package/dist/esm/pds-tab.entry.js +13 -1
  219. package/dist/esm/pds-table-body.entry.js +3 -2
  220. package/dist/esm/pds-table-cell.entry.js +4 -3
  221. package/dist/esm/pds-table-head-cell.entry.js +5 -4
  222. package/dist/esm/pds-table-head.entry.js +3 -2
  223. package/dist/esm/pds-table-row.entry.js +3 -2
  224. package/dist/esm/pds-table.entry.js +2 -1
  225. package/dist/esm/pds-tabpanel.entry.js +15 -2
  226. package/dist/esm/pds-tabs.entry.js +111 -6
  227. package/dist/esm/pds-text.entry.js +3 -2
  228. package/dist/esm/pds-textarea.entry.js +8 -7
  229. package/dist/esm/pds-toast.entry.js +5 -4
  230. package/dist/esm/pds-tooltip.entry.js +4 -3
  231. package/dist/esm/pine-core.js +4 -3
  232. package/dist/esm-es5/attributes-WXw_I_uJ.js +1 -0
  233. package/dist/esm-es5/{index-bLhIfh0N.js → index-Cw9J31qd.js} +2 -2
  234. package/dist/esm-es5/index.js +1 -1
  235. package/dist/esm-es5/keep-hydrated-BLG6RDBt.js +1 -0
  236. package/dist/esm-es5/loader.js +1 -1
  237. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  238. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  239. package/dist/esm-es5/pds-alert.entry.js +1 -1
  240. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  241. package/dist/esm-es5/pds-box.entry.js +1 -1
  242. package/dist/esm-es5/pds-button.entry.js +1 -1
  243. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  244. package/dist/esm-es5/pds-chip.entry.js +1 -1
  245. package/dist/esm-es5/pds-combobox.entry.js +2 -2
  246. package/dist/esm-es5/pds-container.entry.js +1 -1
  247. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  248. package/dist/esm-es5/pds-datepicker.entry.js +1 -1
  249. package/dist/esm-es5/pds-divider.entry.js +1 -1
  250. package/dist/esm-es5/pds-drawer-content.entry.js +1 -1
  251. package/dist/esm-es5/pds-drawer-footer.entry.js +1 -1
  252. package/dist/esm-es5/pds-drawer-header.entry.js +1 -1
  253. package/dist/esm-es5/pds-drawer.entry.js +1 -1
  254. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  255. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  256. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  257. package/dist/esm-es5/pds-filter.entry.js +1 -1
  258. package/dist/esm-es5/pds-filters.entry.js +1 -1
  259. package/dist/esm-es5/pds-icon.entry.js +1 -1
  260. package/dist/esm-es5/pds-image.entry.js +1 -1
  261. package/dist/esm-es5/pds-input.entry.js +1 -1
  262. package/dist/esm-es5/pds-link.entry.js +1 -1
  263. package/dist/esm-es5/pds-loader.entry.js +1 -1
  264. package/dist/esm-es5/pds-modal-content.entry.js +1 -1
  265. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  266. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  267. package/dist/esm-es5/pds-modal.entry.js +1 -1
  268. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  269. package/dist/esm-es5/pds-popover.entry.js +1 -1
  270. package/dist/esm-es5/pds-progress.entry.js +1 -1
  271. package/dist/esm-es5/pds-property.entry.js +1 -1
  272. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  273. package/dist/esm-es5/pds-radio.entry.js +1 -1
  274. package/dist/esm-es5/pds-row.entry.js +1 -1
  275. package/dist/esm-es5/pds-select.entry.js +1 -1
  276. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  277. package/dist/esm-es5/pds-sortable.entry.js +2 -2
  278. package/dist/esm-es5/pds-switch.entry.js +1 -1
  279. package/dist/esm-es5/pds-tab.entry.js +1 -1
  280. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  281. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  282. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  283. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  284. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  285. package/dist/esm-es5/pds-table.entry.js +1 -1
  286. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  287. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  288. package/dist/esm-es5/pds-text.entry.js +1 -1
  289. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  290. package/dist/esm-es5/pds-toast.entry.js +1 -1
  291. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  292. package/dist/esm-es5/pine-core.js +1 -1
  293. package/dist/pine-core/index.esm.js +1 -1
  294. package/dist/pine-core/p-0092444c.system.entry.js +1 -0
  295. package/dist/pine-core/p-01aa382c.system.entry.js +1 -0
  296. package/dist/pine-core/p-01c9b8f3.entry.js +1 -0
  297. package/dist/pine-core/p-02088776.entry.js +1 -0
  298. package/dist/pine-core/p-049f126a.entry.js +1 -0
  299. package/dist/pine-core/p-080cb087.system.entry.js +1 -0
  300. package/dist/pine-core/p-0913f696.system.entry.js +1 -0
  301. package/dist/pine-core/p-0a84d220.entry.js +1 -0
  302. package/dist/pine-core/{p-f3188c57.system.entry.js → p-0b71ecb6.system.entry.js} +2 -2
  303. package/dist/pine-core/p-1437585e.system.entry.js +1 -0
  304. package/dist/pine-core/p-1ee86d87.system.entry.js +1 -0
  305. package/dist/pine-core/p-208c7dbf.entry.js +1 -0
  306. package/dist/pine-core/p-258770cf.system.entry.js +1 -0
  307. package/dist/pine-core/p-258d5e83.entry.js +1 -0
  308. package/dist/pine-core/p-26642718.entry.js +1 -0
  309. package/dist/pine-core/p-2ac2457b.system.entry.js +1 -0
  310. package/dist/pine-core/p-2cb5483a.system.entry.js +1 -0
  311. package/dist/pine-core/p-341c38f1.system.entry.js +1 -0
  312. package/dist/pine-core/p-3a959459.system.entry.js +1 -0
  313. package/dist/pine-core/p-3c27088f.system.entry.js +1 -0
  314. package/dist/pine-core/p-432d5ec7.entry.js +1 -0
  315. package/dist/pine-core/p-4849fda7.entry.js +1 -0
  316. package/dist/pine-core/p-4d03d1e2.system.entry.js +1 -0
  317. package/dist/pine-core/p-4de8f333.entry.js +1 -0
  318. package/dist/pine-core/p-4f94b4f1.system.entry.js +1 -0
  319. package/dist/pine-core/p-4fa63723.system.entry.js +1 -0
  320. package/dist/pine-core/p-4fd454f6.entry.js +1 -0
  321. package/dist/pine-core/p-5442d983.system.entry.js +1 -0
  322. package/dist/pine-core/p-550c2fd3.entry.js +1 -0
  323. package/dist/pine-core/p-55224683.entry.js +1 -0
  324. package/dist/pine-core/p-57a2f927.entry.js +1 -0
  325. package/dist/pine-core/p-5870b092.system.entry.js +1 -0
  326. package/dist/pine-core/p-5c90091e.system.entry.js +1 -0
  327. package/dist/pine-core/p-602c197f.entry.js +1 -0
  328. package/dist/pine-core/p-646afbca.system.entry.js +1 -0
  329. package/dist/pine-core/p-6bf853c9.entry.js +1 -0
  330. package/dist/pine-core/p-6d3610f9.entry.js +1 -0
  331. package/dist/pine-core/p-6eec23a7.system.entry.js +1 -0
  332. package/dist/pine-core/p-72865997.entry.js +1 -0
  333. package/dist/pine-core/p-73eb47fa.entry.js +1 -0
  334. package/dist/pine-core/p-75ee0403.entry.js +1 -0
  335. package/dist/pine-core/p-77395d62.system.entry.js +1 -0
  336. package/dist/pine-core/p-7a287635.system.entry.js +1 -0
  337. package/dist/pine-core/p-7a5b21d2.system.entry.js +1 -0
  338. package/dist/pine-core/p-7bf6563a.system.entry.js +1 -0
  339. package/dist/pine-core/p-7f367db4.system.entry.js +1 -0
  340. package/dist/pine-core/p-8191498f.system.entry.js +1 -0
  341. package/dist/pine-core/p-82cf4ec6.entry.js +1 -0
  342. package/dist/pine-core/p-84e9b7da.entry.js +1 -0
  343. package/dist/pine-core/p-86040cac.system.entry.js +1 -0
  344. package/dist/pine-core/p-875b0436.system.entry.js +1 -0
  345. package/dist/pine-core/p-8c8cc079.system.entry.js +1 -0
  346. package/dist/pine-core/p-8cc302aa.system.entry.js +1 -0
  347. package/dist/pine-core/p-8d292b48.entry.js +1 -0
  348. package/dist/pine-core/p-8f531063.entry.js +1 -0
  349. package/dist/pine-core/p-9109b90a.entry.js +1 -0
  350. package/dist/pine-core/p-94593f20.system.entry.js +1 -0
  351. package/dist/pine-core/p-9880d251.system.entry.js +1 -0
  352. package/dist/pine-core/p-99459e27.entry.js +1 -0
  353. package/dist/pine-core/p-9a0083dd.system.entry.js +1 -0
  354. package/dist/pine-core/p-9ab95438.entry.js +1 -0
  355. package/dist/pine-core/{p-f83fe305.entry.js → p-9af131d6.system.entry.js} +1 -1
  356. package/dist/pine-core/p-9dcd2cdb.entry.js +1 -0
  357. package/dist/pine-core/p-9e0f920a.system.entry.js +1 -0
  358. package/dist/pine-core/p-BGLP3keB.js +1 -0
  359. package/dist/pine-core/p-BLG6RDBt.js +1 -0
  360. package/dist/pine-core/p-BR5nujVX.system.js +1 -0
  361. package/dist/pine-core/p-CGRdQc49.system.js +2 -0
  362. package/dist/pine-core/p-CmSJytt1.js +2 -0
  363. package/dist/pine-core/p-CuSNnuFu.system.js +1 -0
  364. package/dist/pine-core/p-Cy8cvR7I.system.js +1 -0
  365. package/dist/pine-core/p-XW4H0W6i.system.js +1 -0
  366. package/dist/pine-core/p-a0960b3d.system.entry.js +1 -0
  367. package/dist/pine-core/p-a1230a74.system.entry.js +1 -0
  368. package/dist/pine-core/p-a19cd59c.entry.js +1 -0
  369. package/dist/pine-core/p-a3735199.entry.js +1 -0
  370. package/dist/pine-core/p-a826f290.entry.js +1 -0
  371. package/dist/pine-core/p-a85a6ab9.system.entry.js +1 -0
  372. package/dist/pine-core/p-acce8eb2.entry.js +1 -0
  373. package/dist/pine-core/p-b1548a20.entry.js +1 -0
  374. package/dist/pine-core/p-b69f04b7.entry.js +1 -0
  375. package/dist/pine-core/p-b75b0d09.system.entry.js +1 -0
  376. package/dist/pine-core/p-b8e8a4ce.entry.js +1 -0
  377. package/dist/pine-core/{p-09d10e9e.entry.js → p-b914dde8.entry.js} +2 -2
  378. package/dist/pine-core/p-ba1f65c2.system.entry.js +1 -0
  379. package/dist/pine-core/p-bb68431a.entry.js +1 -0
  380. package/dist/pine-core/p-bd67156b.system.entry.js +1 -0
  381. package/dist/pine-core/p-beb23781.entry.js +1 -0
  382. package/dist/pine-core/p-bf30dec0.entry.js +1 -0
  383. package/dist/pine-core/p-bf7ee3b7.system.entry.js +1 -0
  384. package/dist/pine-core/p-c5c9ed36.system.entry.js +1 -0
  385. package/dist/pine-core/p-cb6a3e4c.system.entry.js +1 -0
  386. package/dist/pine-core/p-cde8eb81.entry.js +1 -0
  387. package/dist/pine-core/p-cf08a6dd.system.entry.js +1 -0
  388. package/dist/pine-core/p-cfd012d4.entry.js +1 -0
  389. package/dist/pine-core/p-d2c91e7a.entry.js +1 -0
  390. package/dist/pine-core/p-da103a54.system.entry.js +1 -0
  391. package/dist/pine-core/p-db17c626.system.entry.js +1 -0
  392. package/dist/pine-core/p-df539c42.system.entry.js +3 -0
  393. package/dist/pine-core/p-e0917a26.entry.js +1 -0
  394. package/dist/pine-core/p-e5420660.entry.js +1 -0
  395. package/dist/pine-core/p-e800a2b1.entry.js +1 -0
  396. package/dist/pine-core/p-e836a041.entry.js +1 -0
  397. package/dist/pine-core/p-e8cb76e8.entry.js +1 -0
  398. package/dist/pine-core/p-ea4d4741.system.entry.js +1 -0
  399. package/dist/pine-core/p-eb5465ce.entry.js +1 -0
  400. package/dist/pine-core/{p-48ab7da8.system.entry.js → p-ebd0bff2.entry.js} +1 -1
  401. package/dist/pine-core/p-ec5428fb.entry.js +1 -0
  402. package/dist/pine-core/p-ed4b979e.entry.js +1 -0
  403. package/dist/pine-core/p-f029b7da.system.entry.js +1 -0
  404. package/dist/pine-core/p-f0d24298.system.entry.js +1 -0
  405. package/dist/pine-core/p-f1702281.entry.js +1 -0
  406. package/dist/pine-core/p-f1f17940.entry.js +2 -0
  407. package/dist/pine-core/p-f25e4731.system.entry.js +1 -0
  408. package/dist/pine-core/p-f2c253d8.entry.js +1 -0
  409. package/dist/pine-core/p-f77905aa.system.entry.js +1 -0
  410. package/dist/pine-core/p-fc25b956.system.entry.js +1 -0
  411. package/dist/pine-core/p-ff3de72e.entry.js +1 -0
  412. package/dist/pine-core/pine-core.esm.js +1 -1
  413. package/dist/pine-core/pine-core.js +1 -1
  414. package/dist/types/components/pds-combobox/combobox-interface.d.ts +8 -1
  415. package/dist/types/components/pds-combobox/grouped-options-panel.d.ts +7 -1
  416. package/dist/types/components/pds-combobox/pds-combobox.d.ts +31 -0
  417. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu.d.ts +4 -0
  418. package/dist/types/components/pds-tabs/pds-tab/pds-tab.d.ts +3 -0
  419. package/dist/types/components/pds-tabs/pds-tabpanel/pds-tabpanel.d.ts +3 -0
  420. package/dist/types/components/pds-tabs/pds-tabs.d.ts +14 -2
  421. package/dist/types/components.d.ts +5 -5
  422. package/dist/types/global/pine-global.d.ts +2 -0
  423. package/dist/types/index.d.ts +1 -0
  424. package/dist/types/utils/attributes.d.ts +2 -6
  425. package/dist/types/utils/css.d.ts +7 -0
  426. package/dist/types/utils/keep-hydrated.d.ts +56 -0
  427. package/dist/vscode.html-data.json +2 -2
  428. package/hydrate/index.js +673 -144
  429. package/hydrate/index.mjs +673 -144
  430. package/package.json +2 -2
  431. package/dist/esm-es5/attributes-myrJDwbR.js +0 -1
  432. package/dist/pine-core/p-085c92aa.system.entry.js +0 -1
  433. package/dist/pine-core/p-0bfe152a.entry.js +0 -1
  434. package/dist/pine-core/p-0ce3bcf2.system.entry.js +0 -1
  435. package/dist/pine-core/p-1dd395d8.system.entry.js +0 -1
  436. package/dist/pine-core/p-1feace6a.system.entry.js +0 -1
  437. package/dist/pine-core/p-2126b4e4.system.entry.js +0 -1
  438. package/dist/pine-core/p-21abd971.entry.js +0 -1
  439. package/dist/pine-core/p-2212224a.system.entry.js +0 -1
  440. package/dist/pine-core/p-23044953.system.entry.js +0 -1
  441. package/dist/pine-core/p-26d8c4f7.system.entry.js +0 -1
  442. package/dist/pine-core/p-2806fa55.system.entry.js +0 -1
  443. package/dist/pine-core/p-28abc253.system.entry.js +0 -1
  444. package/dist/pine-core/p-2dd3ab72.entry.js +0 -1
  445. package/dist/pine-core/p-30784d57.entry.js +0 -1
  446. package/dist/pine-core/p-3088cd66.entry.js +0 -1
  447. package/dist/pine-core/p-3add97f7.system.entry.js +0 -1
  448. package/dist/pine-core/p-3e829372.system.entry.js +0 -1
  449. package/dist/pine-core/p-40928521.system.entry.js +0 -1
  450. package/dist/pine-core/p-40ebfe59.system.entry.js +0 -1
  451. package/dist/pine-core/p-44cbdf94.system.entry.js +0 -1
  452. package/dist/pine-core/p-468f0dab.system.entry.js +0 -1
  453. package/dist/pine-core/p-4765f7f0.entry.js +0 -1
  454. package/dist/pine-core/p-478e69d1.entry.js +0 -1
  455. package/dist/pine-core/p-4af5f936.entry.js +0 -1
  456. package/dist/pine-core/p-4d3f5098.system.entry.js +0 -1
  457. package/dist/pine-core/p-5064f007.system.entry.js +0 -1
  458. package/dist/pine-core/p-5081a96f.entry.js +0 -1
  459. package/dist/pine-core/p-517e04f6.entry.js +0 -1
  460. package/dist/pine-core/p-51eb36f4.system.entry.js +0 -3
  461. package/dist/pine-core/p-5527e825.system.entry.js +0 -1
  462. package/dist/pine-core/p-563ba784.entry.js +0 -1
  463. package/dist/pine-core/p-5bf397ca.entry.js +0 -1
  464. package/dist/pine-core/p-5c7c2ffa.entry.js +0 -1
  465. package/dist/pine-core/p-5db91557.entry.js +0 -1
  466. package/dist/pine-core/p-60393d52.entry.js +0 -1
  467. package/dist/pine-core/p-60a15bf7.system.entry.js +0 -1
  468. package/dist/pine-core/p-60e687ac.entry.js +0 -1
  469. package/dist/pine-core/p-61ae5a4b.system.entry.js +0 -1
  470. package/dist/pine-core/p-62377463.system.entry.js +0 -1
  471. package/dist/pine-core/p-62974869.entry.js +0 -1
  472. package/dist/pine-core/p-63644dbd.entry.js +0 -1
  473. package/dist/pine-core/p-686b526d.entry.js +0 -1
  474. package/dist/pine-core/p-69f60432.system.entry.js +0 -1
  475. package/dist/pine-core/p-6d6079f5.entry.js +0 -1
  476. package/dist/pine-core/p-6eb2070a.entry.js +0 -1
  477. package/dist/pine-core/p-7386bbdf.system.entry.js +0 -1
  478. package/dist/pine-core/p-74b1b841.entry.js +0 -1
  479. package/dist/pine-core/p-74d93179.system.entry.js +0 -1
  480. package/dist/pine-core/p-7647b568.system.entry.js +0 -1
  481. package/dist/pine-core/p-7698fcfa.system.entry.js +0 -1
  482. package/dist/pine-core/p-778a0228.system.entry.js +0 -1
  483. package/dist/pine-core/p-77e12080.system.entry.js +0 -1
  484. package/dist/pine-core/p-7a9c687d.system.entry.js +0 -1
  485. package/dist/pine-core/p-7fbb7037.entry.js +0 -1
  486. package/dist/pine-core/p-85d77b55.entry.js +0 -1
  487. package/dist/pine-core/p-86978a51.entry.js +0 -1
  488. package/dist/pine-core/p-88728d46.system.entry.js +0 -1
  489. package/dist/pine-core/p-893b02b7.entry.js +0 -1
  490. package/dist/pine-core/p-8d8512ae.system.entry.js +0 -1
  491. package/dist/pine-core/p-93341083.system.entry.js +0 -1
  492. package/dist/pine-core/p-9452adc4.entry.js +0 -1
  493. package/dist/pine-core/p-95649e1c.entry.js +0 -1
  494. package/dist/pine-core/p-977db8b2.entry.js +0 -1
  495. package/dist/pine-core/p-97c04215.system.entry.js +0 -1
  496. package/dist/pine-core/p-9903eb37.system.entry.js +0 -1
  497. package/dist/pine-core/p-9b18314c.entry.js +0 -1
  498. package/dist/pine-core/p-9ca1b473.system.entry.js +0 -1
  499. package/dist/pine-core/p-BwmzR47K.system.js +0 -1
  500. package/dist/pine-core/p-CrXTJmBd.system.js +0 -2
  501. package/dist/pine-core/p-DO9XKAkv.system.js +0 -1
  502. package/dist/pine-core/p-G3CPPJEt.system.js +0 -1
  503. package/dist/pine-core/p-a0f8a61a.entry.js +0 -1
  504. package/dist/pine-core/p-a232dc19.entry.js +0 -1
  505. package/dist/pine-core/p-a44316ad.entry.js +0 -1
  506. package/dist/pine-core/p-a8884f2d.system.entry.js +0 -1
  507. package/dist/pine-core/p-a8f23db0.system.entry.js +0 -1
  508. package/dist/pine-core/p-a9ea3c9d.entry.js +0 -1
  509. package/dist/pine-core/p-ae125139.entry.js +0 -1
  510. package/dist/pine-core/p-af9bce53.entry.js +0 -1
  511. package/dist/pine-core/p-b15777a2.entry.js +0 -1
  512. package/dist/pine-core/p-b2901e60.system.entry.js +0 -1
  513. package/dist/pine-core/p-b82a0693.entry.js +0 -1
  514. package/dist/pine-core/p-b852c82b.system.entry.js +0 -1
  515. package/dist/pine-core/p-b979105e.entry.js +0 -1
  516. package/dist/pine-core/p-bLhIfh0N.js +0 -2
  517. package/dist/pine-core/p-bb9d158c.system.entry.js +0 -1
  518. package/dist/pine-core/p-bc7ba7d3.system.entry.js +0 -1
  519. package/dist/pine-core/p-bd1bdb07.system.entry.js +0 -1
  520. package/dist/pine-core/p-c497d6c6.entry.js +0 -1
  521. package/dist/pine-core/p-c971cdb3.entry.js +0 -1
  522. package/dist/pine-core/p-cbae27a4.system.entry.js +0 -1
  523. package/dist/pine-core/p-cdd21cbe.entry.js +0 -1
  524. package/dist/pine-core/p-ce74a47e.entry.js +0 -2
  525. package/dist/pine-core/p-cf4758a7.entry.js +0 -1
  526. package/dist/pine-core/p-cfc9d4a8.entry.js +0 -1
  527. package/dist/pine-core/p-d1b0b372.entry.js +0 -1
  528. package/dist/pine-core/p-d6002d5b.entry.js +0 -1
  529. package/dist/pine-core/p-d8a6298c.system.entry.js +0 -1
  530. package/dist/pine-core/p-d933227e.system.entry.js +0 -1
  531. package/dist/pine-core/p-d962fc84.entry.js +0 -1
  532. package/dist/pine-core/p-da7a7cca.entry.js +0 -1
  533. package/dist/pine-core/p-daaf653f.system.entry.js +0 -1
  534. package/dist/pine-core/p-dafff7dd.system.entry.js +0 -1
  535. package/dist/pine-core/p-ea9468fb.entry.js +0 -1
  536. package/dist/pine-core/p-ed22da0c.system.entry.js +0 -1
  537. package/dist/pine-core/p-f0632690.system.entry.js +0 -1
  538. package/dist/pine-core/p-f1c6b23a.entry.js +0 -1
  539. package/dist/pine-core/p-f279f435.system.entry.js +0 -1
  540. package/dist/pine-core/p-f33d6417.entry.js +0 -1
  541. package/dist/pine-core/p-f832dcd9.entry.js +0 -1
  542. package/dist/pine-core/p-fe09b6fb.system.entry.js +0 -1
  543. package/dist/pine-core/p-myrJDwbR.js +0 -1
  544. /package/dist/esm-es5/{index-DxI-61GK.js → index-BJXk71tO.js} +0 -0
  545. /package/dist/pine-core/{p-DxI-61GK.js → p-BJXk71tO.js} +0 -0
  546. /package/dist/pine-core/{p-CnO10OxH.system.js → p-n3_ytl_p.system.js} +0 -0
package/dist/docs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2026-10-16T19:30:58",
2
+ "timestamp": "2026-10-20T19:32:19",
3
3
  "compiler": {
4
4
  "name": "@stencil/core",
5
5
  "version": "4.43.5",
@@ -17097,6 +17097,10 @@
17097
17097
  "readme": "# pds-dropdown\n\n\n",
17098
17098
  "docs": "",
17099
17099
  "docsTags": [
17100
+ {
17101
+ "name": "slot",
17102
+ "text": "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."
17103
+ },
17100
17104
  {
17101
17105
  "name": "part",
17102
17106
  "text": "menu-panel - Exposes the dropdown menu container for styling."
@@ -17226,7 +17230,12 @@
17226
17230
  }
17227
17231
  ],
17228
17232
  "styles": [],
17229
- "slots": [],
17233
+ "slots": [
17234
+ {
17235
+ "name": "header",
17236
+ "docs": "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."
17237
+ }
17238
+ ],
17230
17239
  "parts": [
17231
17240
  {
17232
17241
  "name": "menu-panel",
@@ -26145,7 +26154,7 @@
26145
26154
  "mutable": false,
26146
26155
  "attr": "variant",
26147
26156
  "reflectToAttr": false,
26148
- "docs": "Sets tabs variant styles as outlined in Figma documentation",
26157
+ "docs": "Sets tabs variant styles as outlined in Figma documentation.\nApplies in both panel and nav mode; omitting it renders the primary style.",
26149
26158
  "docsTags": [],
26150
26159
  "values": [
26151
26160
  {
@@ -26165,8 +26174,8 @@
26165
26174
  "type": "string"
26166
26175
  }
26167
26176
  ],
26168
- "optional": false,
26169
- "required": true,
26177
+ "optional": true,
26178
+ "required": false,
26170
26179
  "getter": false,
26171
26180
  "setter": false
26172
26181
  }
@@ -27874,7 +27883,7 @@
27874
27883
  "path": "src/utils/types.ts"
27875
27884
  },
27876
27885
  "src/components/pds-combobox/combobox-interface.ts::ComboboxOption": {
27877
- "declaration": "export interface ComboboxOption {\n id: string | number;\n text: string;\n /**\n * Label of the group this option belongs to. Options sharing a group are rendered together\n * under one group label, where the group first appears, the same as slotted `<optgroup>`\n * markup. Options without a group are listed before every group.\n */\n group?: string;\n /**\n * Pine icon name shown beside the group's label (letters, digits and hyphens, for example\n * `hashtag`); URLs and file paths are not accepted. The first option in the group that sets\n * one wins, the same as `data-icon` on a slotted `<optgroup>`.\n */\n groupIcon?: string;\n /**\n * When `true`, the option stays reachable by the arrow keys and the pointer, so assistive tech\n * announces it as unavailable, but it cannot be selected.\n */\n disabled?: boolean;\n [key: string]: unknown;\n}",
27886
+ "declaration": "export interface ComboboxOption {\n id: string | number;\n text: string;\n /**\n * Label of the group this option belongs to. Options sharing a group are rendered together\n * under one group label, where the group first appears, the same as slotted `<optgroup>`\n * markup. With `group-display=\"inline\"`, options without a group are listed before every group;\n * with `flyout` and `drill-in`, options without a group and groups keep the array's order.\n */\n group?: string;\n /**\n * Pine icon name shown beside the group's label (letters, digits and hyphens, for example\n * `hashtag`); URLs and file paths are not accepted. The first option in the group that sets\n * one wins, the same as `data-icon` on a slotted `<optgroup>`.\n */\n groupIcon?: string;\n /**\n * Pine icon name shown before the option's text (letters, digits and hyphens, for example\n * `hashtag`); URLs and file paths are not accepted. The same as `data-icon` on a slotted `<option>`.\n * Once the option is chosen, the `button` trigger shows it too.\n */\n icon?: string;\n /**\n * When `true`, the option stays reachable by the arrow keys and the pointer, so assistive tech\n * announces it as unavailable, but it cannot be selected.\n */\n disabled?: boolean;\n [key: string]: unknown;\n}",
27878
27887
  "docstring": "",
27879
27888
  "path": "src/components/pds-combobox/combobox-interface.ts"
27880
27889
  },
@@ -1,3 +1,5 @@
1
+ import { c as classNamesOf, l as limitRestores, H as HOST_RESTORE, s as stencilClassesOf } from './keep-hydrated-BLG6RDBt.js';
2
+
1
3
  /**
2
4
  * Sets each attribute whose current value differs, and leaves the rest alone. A `MutationObserver`
3
5
  * that calls this to restore attributes sees its own writes once and then settles, so it can't loop.
@@ -5,24 +7,15 @@
5
7
  * @param attributes - Attribute names and the values they should have
6
8
  */
7
9
  const setAttributesIfChanged = (el, attributes) => {
10
+ let wrote = false;
8
11
  Object.entries(attributes).forEach(([name, value]) => {
9
- if (el.getAttribute(name) !== value)
12
+ if (el.getAttribute(name) !== value) {
10
13
  el.setAttribute(name, value);
14
+ wrote = true;
15
+ }
11
16
  });
12
- };
13
- // Classes Stencil itself puts on a host: its default `hydratedFlag` (Pine doesn't change it), and a
14
- // scoped component's own scope classes (`sc-pds-radio`, `sc-pds-radio-h`, `sc-pds-radio-s`), which
15
- // its CSS needs. Only the host's own: another `sc-` class may be a consumer's (styled-components ids).
16
- const isStencilClass = (el, name) => {
17
- const scope = `sc-${el.localName}`;
18
- return name === 'hydrated' || name === scope || name === `${scope}-h` || name === `${scope}-s`;
17
+ return wrote;
19
18
  };
20
- /**
21
- * The class names in a rendered `class` value: a string, or Stencil's `{ name: boolean }` form.
22
- */
23
- const classNamesOf = (classes) => typeof classes === 'string'
24
- ? classes.split(/\s+/).filter(Boolean)
25
- : Object.keys(classes).filter((name) => classes[name]);
26
19
  /**
27
20
  * Puts back any of `expected`'s classes or style properties that are missing from `el`. It only
28
21
  * adds what's missing, never rewrites a value that's there, because browsers normalize some style
@@ -34,10 +27,9 @@ const restoreHostStyling = (el, { classes, styles }) => {
34
27
  const missing = classes.filter((name) => !el.classList.contains(name));
35
28
  if (missing.length > 0)
36
29
  el.classList.add(...missing);
37
- Object.entries(styles).forEach(([name, value]) => {
38
- if (value && el.style.getPropertyValue(name) === '')
39
- el.style.setProperty(name, value);
40
- });
30
+ const missingStyles = Object.entries(styles).filter(([name, value]) => value && el.style.getPropertyValue(name) === '');
31
+ missingStyles.forEach(([name, value]) => el.style.setProperty(name, value));
32
+ return missing.length > 0 || missingStyles.length > 0;
41
33
  };
42
34
  /**
43
35
  * Watches a component's own host and puts back what it rendered when something strips it. A DOM
@@ -54,15 +46,18 @@ const restoreHostStyling = (el, { classes, styles }) => {
54
46
  const keepHostStyling = (el, expected) => {
55
47
  if (typeof MutationObserver === 'undefined')
56
48
  return null;
57
- const observer = new MutationObserver((records) => {
49
+ const tag = el.tagName.toLowerCase();
50
+ const seenStencilClasses = new Set();
51
+ const observer = new MutationObserver(limitRestores((records) => {
58
52
  const styling = expected();
59
53
  // A strip takes Stencil's own classes too: without `hydrated` Stencil hides the component, and
60
54
  // without its scope classes a scoped component's CSS stops matching. Put back only the ones that
61
- // were there, so this never runs ahead of Stencil.
55
+ // were there, so this never runs ahead of Stencil. `keepPineHydrated` does the same for every
56
+ // component, but the custom-elements build only runs it if the consumer calls it, so keep this.
62
57
  const stencilClasses = records
63
- .filter((record) => record.attributeName === 'class' && record.oldValue != null)
64
- .flatMap((record) => classNamesOf(record.oldValue).filter((name) => isStencilClass(el, name)));
65
- restoreHostStyling(el, Object.assign(Object.assign({}, styling), { classes: [...styling.classes, ...stencilClasses] }));
58
+ .filter((record) => record.attributeName === 'class')
59
+ .flatMap((record) => stencilClassesOf(seenStencilClasses, el, record.oldValue));
60
+ let wrote = restoreHostStyling(el, Object.assign(Object.assign({}, styling), { classes: [...styling.classes, ...stencilClasses] }));
66
61
  // An attribute the component still renders comes back with the value it had, which is what
67
62
  // Stencil wrote (a boolean `true` lands as an empty value). One it stopped rendering stays
68
63
  // removed, since that was Stencil's own write.
@@ -72,8 +67,10 @@ const keepHostStyling = (el, expected) => {
72
67
  if (oldValue == null || rendered == null || rendered === false || el.hasAttribute(name))
73
68
  return;
74
69
  el.setAttribute(name, oldValue);
70
+ wrote = true;
75
71
  });
76
- });
72
+ return wrote;
73
+ }, `${tag}: stopped restoring its host, as another script keeps changing it. Use props instead.`, el, HOST_RESTORE));
77
74
  observer.observe(el, { attributes: true, attributeOldValue: true });
78
75
  return observer;
79
76
  };
@@ -1,4 +1,4 @@
1
- /* pds-icons v10.5.1, ES Modules */
1
+ /* pds-icons v10.6.0, ES Modules */
2
2
 
3
3
  const addCircle = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m11-5a1 1 0 0 1 1 1v3h3a1 1 0 1 1 0 2h-3v3a1 1 0 1 1-2 0v-3H8a1 1 0 1 1 0-2h3V8a1 1 0 0 1 1-1'/></svg>";
4
4
  const calendarSimple = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M8 1a1 1 0 0 1 1 1v1h6V2a1 1 0 1 1 2 0v1.002c.476.003.891.013 1.252.042.562.046 1.079.145 1.564.392a4 4 0 0 1 1.748 1.748c.247.485.346 1.002.392 1.564C22 7.29 22 7.954 22 8.758v8.483c0 .805 0 1.47-.044 2.01-.046.563-.145 1.08-.392 1.565a4 4 0 0 1-1.748 1.748c-.485.247-1.002.346-1.564.392-.541.044-1.206.044-2.01.044H7.758c-.805 0-1.47 0-2.01-.044-.563-.046-1.08-.145-1.565-.392a4 4 0 0 1-1.748-1.748c-.247-.485-.346-1.002-.392-1.564C2 18.71 2 18.046 2 17.242V8.758c0-.805 0-1.47.044-2.01.046-.563.145-1.08.392-1.565a4 4 0 0 1 1.748-1.748c.485-.247 1.002-.346 1.564-.392.361-.03.777-.04 1.252-.042V2a1 1 0 0 1 1-1M7 5.002c-.446.003-.795.012-1.089.036-.438.035-.663.1-.819.18a2 2 0 0 0-.874.874c-.08.156-.145.38-.18.819C4 7.361 4 7.943 4 8.8V9h16v-.2c0-.857 0-1.439-.038-1.889-.035-.438-.1-.663-.18-.819a2 2 0 0 0-.874-.874c-.156-.08-.38-.145-.819-.18A15 15 0 0 0 17 5.002V6a1 1 0 1 1-2 0V5H9v1a1 1 0 1 1-2 0zM20 11H4v6.2c0 .857 0 1.439.038 1.889.035.438.1.663.18.819a2 2 0 0 0 .874.874c.156.08.38.145.819.18C6.361 21 6.943 21 7.8 21h8.4c.857 0 1.439 0 1.889-.038.438-.035.663-.1.819-.18a2 2 0 0 0 .874-.874c.08-.156.145-.38.18-.819.037-.45.038-1.032.038-1.889z'/></svg>";
@@ -1,7 +1,16 @@
1
+ import { k as keepPineHydrated } from './keep-hydrated-BLG6RDBt.js';
2
+
1
3
  const NAMESPACE = 'pine-core';
2
4
  const BUILD = /* pine-core */ { hotModuleReplacement: false, hydratedSelectorName: "hydrated", lazyLoad: true, propChangeCallback: true, slotRelocation: true, state: true, updatable: true};
3
5
 
4
- const globalScripts = () => {};
6
+ // Stencil runs this when the loader loads, before any component is defined, and again for each
7
+ // server-rendered document, where it does nothing.
8
+ var pineGlobal = () => {
9
+ keepPineHydrated();
10
+ };
11
+
12
+ const appGlobalScript = pineGlobal || (() => {});
13
+ const globalScripts = appGlobalScript;
5
14
  const globalStyles = ":root{--pine-border-width-none:0px;--pine-border-width-thin:1px;--pine-border-width-thick:2px;--pine-border-width:var(--pine-border-width-thin);--pine-box-shadow-100:0 1px 3px 0 rgba(0,0,0,.1), 0 1px 2px 0 rgba(0,0,0,.06);--pine-box-shadow-150:0 4px 8px -2px rgba(0,0,0,.1), 0 2px 4px -2px rgba(0,0,0,.06);--pine-box-shadow-200:0 12px 16px -4px rgba(0,0,0,.08), 0 4px 6px -2px rgba(0,0,0,.03);--pine-box-shadow-300:0 20px 24px -4px rgba(0,0,0,.08), 0 8px 8px -4px rgba(0,0,0,.03);--pine-box-shadow-400:0 24px 48px -12px rgba(0,0,0,.18);--pine-box-shadow-500:0 32px 64px -12px rgba(0,0,0,.14);--pine-box-shadow-050:0 1px 2px 0 rgba(0,0,0,.05);--pine-box-shadow:var(--pine-box-shadow-100);--pine-color-white:#ffffff;--pine-color-black:#000000;--pine-color-grey-100:#f8f8f8;--pine-color-grey-150:#f0f0f0;--pine-color-grey-200:#e4e4e4;--pine-color-grey-300:#d2d1d1;--pine-color-grey-400:#bbbab9;--pine-color-grey-500:#9b9a98;--pine-color-grey-600:#828180;--pine-color-grey-700:#6c6a69;--pine-color-grey-800:#4d4d4c;--pine-color-grey-900:#343332;--pine-color-grey-950:#1a1a19;--pine-color-grey-050:#fcfcfc;--pine-color-blue-100:#eff6ff;--pine-color-blue-150:#dbeafe;--pine-color-blue-200:#bfdbfe;--pine-color-blue-300:#93c5fd;--pine-color-blue-400:#60a5fa;--pine-color-blue-500:#3b82f6;--pine-color-blue-600:#2563eb;--pine-color-blue-700:#1d4ed8;--pine-color-blue-800:#1e40af;--pine-color-blue-900:#1e3a8a;--pine-color-blue-950:#172554;--pine-color-blue-050:#fafcff;--pine-color-green-100:#edfcf2;--pine-color-green-150:#d3f8df;--pine-color-green-200:#aaf0c4;--pine-color-green-300:#73e2a3;--pine-color-green-400:#3ccb7f;--pine-color-green-500:#16b364;--pine-color-green-600:#099250;--pine-color-green-700:#087443;--pine-color-green-800:#095c37;--pine-color-green-900:#084c2e;--pine-color-green-950:#052e1c;--pine-color-green-050:#fbfefc;--pine-color-red-100:#fef2f2;--pine-color-red-150:#fee2e2;--pine-color-red-200:#fecaca;--pine-color-red-300:#fca5a5;--pine-color-red-400:#f87171;--pine-color-red-500:#ef4444;--pine-color-red-600:#dc2626;--pine-color-red-700:#b91c1c;--pine-color-red-800:#991b1b;--pine-color-red-900:#7f1d1d;--pine-color-red-950:#450a0a;--pine-color-red-050:#fffafa;--pine-color-yellow-100:#fffbeb;--pine-color-yellow-150:#fff2c6;--pine-color-yellow-200:#fee589;--pine-color-yellow-300:#fed04b;--pine-color-yellow-400:#fdbb21;--pine-color-yellow-500:#f79a09;--pine-color-yellow-600:#db7204;--pine-color-yellow-700:#b64f07;--pine-color-yellow-800:#933d0d;--pine-color-yellow-900:#79330e;--pine-color-yellow-950:#461902;--pine-color-yellow-050:#fffefa;--pine-color-mercury-100:#fff4f1;--pine-color-mercury-150:#ffeae5;--pine-color-mercury-200:#fed4cd;--pine-color-mercury-300:#fdb1a4;--pine-color-mercury-400:#fb8271;--pine-color-mercury-500:#ff3e14;--pine-color-mercury-600:#f02006;--pine-color-mercury-700:#c71307;--pine-color-mercury-800:#9e110e;--pine-color-mercury-900:#7f120f;--pine-color-mercury-950:#450506;--pine-color-mercury-050:#fffbfa;--pine-color-purple-100:#eef1ff;--pine-color-purple-150:#e0e4ff;--pine-color-purple-200:#c7cdfe;--pine-color-purple-300:#a4acfd;--pine-color-purple-400:#8081f9;--pine-color-purple-500:#6b62f2;--pine-color-purple-600:#533be5;--pine-color-purple-700:#4f37cb;--pine-color-purple-800:#402fa4;--pine-color-purple-900:#372d82;--pine-color-purple-950:#221b4b;--pine-color-purple-050:#fafbff;--pine-color-forest-100:#effaf6;--pine-color-forest-150:#d9f2e7;--pine-color-forest-200:#b5e5d2;--pine-color-forest-300:#85d0b7;--pine-color-forest-400:#52b597;--pine-color-forest-500:#30997d;--pine-color-forest-600:#23856d;--pine-color-forest-700:#1a6253;--pine-color-forest-800:#174e43;--pine-color-forest-900:#144038;--pine-color-forest-950:#0a2420;--pine-color-forest-050:#fbfefd;--pine-color-lime-100:#f7fee7;--pine-color-lime-150:#ecfccb;--pine-color-lime-200:#d9f99d;--pine-color-lime-300:#bef264;--pine-color-lime-400:#a3e635;--pine-color-lime-500:#84cc16;--pine-color-lime-600:#65a30d;--pine-color-lime-700:#4d7c0f;--pine-color-lime-800:#3f6212;--pine-color-lime-900:#365314;--pine-color-lime-950:#1b290a;--pine-color-lime-050:#fdfffa;--pine-color-magenta-100:#fdf4ff;--pine-color-magenta-150:#fae8ff;--pine-color-magenta-200:#f5d0fe;--pine-color-magenta-300:#f0abfc;--pine-color-magenta-400:#e879f9;--pine-color-magenta-500:#d946ef;--pine-color-magenta-600:#c026d3;--pine-color-magenta-700:#a21caf;--pine-color-magenta-800:#86198f;--pine-color-magenta-900:#701a75;--pine-color-magenta-950:#4a044e;--pine-color-magenta-050:#fefaff;--pine-color-pink-100:#fdf2f8;--pine-color-pink-150:#fce7f3;--pine-color-pink-200:#fbcfe8;--pine-color-pink-300:#f9a8d4;--pine-color-pink-400:#f472b6;--pine-color-pink-500:#ec4899;--pine-color-pink-600:#db2777;--pine-color-pink-700:#be185d;--pine-color-pink-800:#9d174d;--pine-color-pink-900:#831843;--pine-color-pink-950:#500724;--pine-color-pink-050:#fffafa;--pine-color-salmon-100:#fff1f2;--pine-color-salmon-150:#ffe4e6;--pine-color-salmon-200:#fecdd3;--pine-color-salmon-300:#fda4af;--pine-color-salmon-400:#fb7185;--pine-color-salmon-500:#f43f5e;--pine-color-salmon-600:#e11d48;--pine-color-salmon-700:#be123c;--pine-color-salmon-800:#9f1239;--pine-color-salmon-900:#881337;--pine-color-salmon-950:#4c0519;--pine-color-salmon-050:#fffafa;--pine-color-sky-100:#f0f9ff;--pine-color-sky-150:#e0f2fe;--pine-color-sky-200:#bae6fd;--pine-color-sky-300:#7dd3fc;--pine-color-sky-400:#38bdf8;--pine-color-sky-500:#0ea5e9;--pine-color-sky-600:#0284c7;--pine-color-sky-700:#0369a1;--pine-color-sky-800:#075985;--pine-color-sky-900:#0c4a6e;--pine-color-sky-950:#082f49;--pine-color-sky-050:#fafdff;--pine-color-teal-100:#f0fdfa;--pine-color-teal-150:#ccfbf1;--pine-color-teal-200:#99f6e4;--pine-color-teal-300:#5eead4;--pine-color-teal-400:#2dd4bf;--pine-color-teal-500:#14b8a6;--pine-color-teal-600:#0d9488;--pine-color-teal-700:#0f766e;--pine-color-teal-800:#115e59;--pine-color-teal-900:#134e4a;--pine-color-teal-950:#042f2e;--pine-color-teal-050:#fbfefe;--pine-color-accent:var(--pine-color-grey-900);--pine-color-accent-disabled:var(--pine-color-grey-150);--pine-color-accent-hover:var(--pine-color-grey-950);--pine-color-background-app:var(--pine-color-grey-100);--pine-color-background-subtle:var(--pine-color-grey-100);--pine-color-background-muted:var(--pine-color-grey-150);--pine-color-background-inverse-app:var(--pine-color-grey-900);--pine-color-background-inverse-subtle:var(--pine-color-grey-800);--pine-color-background-inverse-muted:var(--pine-color-grey-700);--pine-color-background-inverse-container:var(--pine-color-black);--pine-color-background-inverse-inset:var(--pine-color-grey-950);--pine-color-background-container:var(--pine-color-white);--pine-color-background-container-disabled:var(--pine-color-grey-150);--pine-color-background-container-hover:var(--pine-color-grey-050);--pine-color-background-inset:var(--pine-color-grey-200);--pine-color-background-inset-emphasized:var(--pine-color-grey-300);--pine-color-background-overlay:var(--pine-color-white);--pine-color-border:var(--pine-color-grey-300);--pine-color-border-hover:var(--pine-color-grey-400);--pine-color-border-disabled:var(--pine-color-grey-200);--pine-color-border-active:var(--pine-color-grey-400);--pine-color-border-danger:var(--pine-color-red-600);--pine-color-border-danger-hover:var(--pine-color-red-700);--pine-color-border-subtle:var(--pine-color-grey-200);--pine-color-danger:var(--pine-color-red-600);--pine-color-danger-disabled:var(--pine-color-red-100);--pine-color-danger-hover:var(--pine-color-red-700);--pine-color-focus-ring:var(--pine-color-grey-400);--pine-color-focus-ring-danger:var(--pine-color-red-300);--pine-color-info:var(--pine-color-blue-500);--pine-color-info-disabled:var(--pine-color-blue-100);--pine-color-info-hover:var(--pine-color-blue-600);--pine-color-neutral:var(--pine-color-grey-500);--pine-color-neutral-disabled:var(--pine-color-grey-100);--pine-color-neutral-hover:var(--pine-color-grey-600);--pine-color-primary:var(--pine-color-grey-900);--pine-color-primary-disabled:var(--pine-color-grey-150);--pine-color-primary-hover:var(--pine-color-grey-950);--pine-color-secondary:var(--pine-color-white);--pine-color-secondary-disabled:var(--pine-color-white);--pine-color-secondary-hover:var(--pine-color-grey-050);--pine-color-success:var(--pine-color-green-500);--pine-color-success-disabled:var(--pine-color-green-100);--pine-color-success-hover:var(--pine-color-green-600);--pine-color-text:var(--pine-color-grey-900);--pine-color-text-hover:var(--pine-color-grey-950);--pine-color-text-disabled:var(--pine-color-grey-500);--pine-color-text-readonly:var(--pine-color-grey-700);--pine-color-text-active:var(--pine-color-grey-950);--pine-color-text-accent:var(--pine-color-grey-900);--pine-color-text-accent-disabled:var(--pine-color-grey-400);--pine-color-text-accent-hover:var(--pine-color-grey-950);--pine-color-text-danger:var(--pine-color-red-900);--pine-color-text-danger-disabled:var(--pine-color-red-300);--pine-color-text-danger-hover:var(--pine-color-red-950);--pine-color-text-info:var(--pine-color-blue-900);--pine-color-text-info-disabled:var(--pine-color-blue-300);--pine-color-text-info-hover:var(--pine-color-blue-950);--pine-color-text-label:var(--pine-color-grey-950);--pine-color-text-label-disabled:var(--pine-color-grey-500);--pine-color-text-label-readonly:var(--pine-color-grey-700);--pine-color-text-message:var(--pine-color-grey-800);--pine-color-text-message-danger:var(--pine-color-red-600);--pine-color-text-message-disabled:var(--pine-color-grey-600);--pine-color-text-neutral:var(--pine-color-grey-900);--pine-color-text-neutral-disabled:var(--pine-color-grey-600);--pine-color-text-neutral-hover:var(--pine-color-grey-950);--pine-color-text-placeholder:var(--pine-color-grey-600);--pine-color-text-placeholder-disabled:var(--pine-color-grey-400);--pine-color-text-primary:var(--pine-color-white);--pine-color-text-primary-disabled:var(--pine-color-grey-400);--pine-color-text-secondary:var(--pine-color-grey-800);--pine-color-text-secondary-disabled:var(--pine-color-grey-400);--pine-color-text-secondary-hover:var(--pine-color-grey-900);--pine-color-text-tertiary:var(--pine-color-grey-600);--pine-color-text-tertiary-disabled:var(--pine-color-grey-400);--pine-color-text-subtle:var(--pine-color-grey-500);--pine-color-text-subtle-disabled:var(--pine-color-grey-300);--pine-color-text-muted:var(--pine-color-grey-700);--pine-color-text-muted-disabled:var(--pine-color-grey-500);--pine-color-text-strong:var(--pine-color-grey-950);--pine-color-text-strong-disabled:var(--pine-color-grey-600);--pine-color-text-emphasis:var(--pine-color-black);--pine-color-text-inverse:var(--pine-color-grey-100);--pine-color-text-inverse-secondary:var(--pine-color-grey-150);--pine-color-text-inverse-tertiary:var(--pine-color-grey-300);--pine-color-text-inverse-emphasis:var(--pine-color-white);--pine-color-text-success:var(--pine-color-green-900);--pine-color-text-success-disabled:var(--pine-color-green-300);--pine-color-text-success-hover:var(--pine-color-green-950);--pine-color-text-warning:var(--pine-color-yellow-900);--pine-color-text-warning-disabled:var(--pine-color-yellow-300);--pine-color-text-warning-hover:var(--pine-color-yellow-950);--pine-color-warning:var(--pine-color-yellow-500);--pine-color-warning-disabled:var(--pine-color-yellow-100);--pine-color-warning-hover:var(--pine-color-yellow-600);--pine-color-icon:var(--pine-color-grey-700);--pine-color-icon-subtle:var(--pine-color-grey-500);--pine-color-icon-disabled:var(--pine-color-grey-400);--pine-color-icon-inverse:var(--pine-color-white);--pine-color-brand:var(--pine-color-black);--pine-font-family-inter:\"Inter\", system-ui, \"Segoe UI\", \"Roboto\", \"Ubuntu\", sans-serif;--pine-font-family-faire-sprig:\"FAIRE Sprig\";--pine-font-family-heading:var(--pine-font-family-inter);--pine-font-family-body:var(--pine-font-family-inter);--pine-font-size-100:14px;--pine-font-size-116:16px;--pine-font-size-128:18px;--pine-font-size-142:20px;--pine-font-size-157:22px;--pine-font-size-171:24px;--pine-font-size-185:26px;--pine-font-size-200:28px;--pine-font-size-214:30px;--pine-font-size-228:32px;--pine-font-size-242:34px;--pine-font-size-257:36px;--pine-font-size-271:38px;--pine-font-size-285:40px;--pine-font-size-057:8px;--pine-font-size-071:10px;--pine-font-size-085:12px;--pine-font-size:var(--pine-font-size-100);--pine-font-size-body-2xs:var(--pine-font-size-057);--pine-font-size-body-xs:var(--pine-font-size-071);--pine-font-size-body-sm:var(--pine-font-size-085);--pine-font-size-body-md:var(--pine-font-size-100);--pine-font-size-body-lg:var(--pine-font-size-116);--pine-font-size-body-xl:var(--pine-font-size-128);--pine-font-size-body-2xl:var(--pine-font-size-142);--pine-font-size-heading-1:var(--pine-font-size-200);--pine-font-size-heading-2:var(--pine-font-size-185);--pine-font-size-heading-3:var(--pine-font-size-157);--pine-font-size-heading-4:var(--pine-font-size-142);--pine-font-size-heading-5:var(--pine-font-size-128);--pine-font-size-heading-6:var(--pine-font-size-116);--pine-font-size-heading-caption:var(--pine-font-size-085);--pine-font-weight-100:100;--pine-font-weight-200:200;--pine-font-weight-300:300;--pine-font-weight-400:400;--pine-font-weight-500:500;--pine-font-weight-600:600;--pine-font-weight-700:700;--pine-font-weight-800:800;--pine-font-weight-900:900;--pine-font-weight-thin:var(--pine-font-weight-100);--pine-font-weight-extra-light:var(--pine-font-weight-200);--pine-font-weight-light:var(--pine-font-weight-300);--pine-font-weight-regular:var(--pine-font-weight-400);--pine-font-weight-medium:var(--pine-font-weight-500);--pine-font-weight-semi-bold:var(--pine-font-weight-600);--pine-font-weight-bold:var(--pine-font-weight-700);--pine-font-weight-extra-bold:var(--pine-font-weight-800);--pine-font-weight-heavy:var(--pine-font-weight-900);--pine-font-weight-text-message:var(--pine-font-weight-400);--pine-line-height-100:1;--pine-line-height-125:1.25;--pine-line-height-150:1.5;--pine-line-height-175:1.75;--pine-line-height-200:2;--pine-line-height-225:2.25;--pine-line-height-250:2.5;--pine-line-height-275:2.75;--pine-line-height-300:3;--pine-line-height-025:.625;--pine-line-height-050:.78125;--pine-line-height-075:.9375;--pine-line-height-text-message:var(--pine-line-height-125);--pine-line-height-heading:var(--pine-line-height-125);--pine-line-height-body:1.425;--pine-dimension-0:0px;--pine-dimension-100:8px;--pine-dimension-125:10px;--pine-dimension-150:12px;--pine-dimension-200:16px;--pine-dimension-250:20px;--pine-dimension-300:24px;--pine-dimension-350:28px;--pine-dimension-400:32px;--pine-dimension-450:36px;--pine-dimension-500:40px;--pine-dimension-550:44px;--pine-dimension-600:48px;--pine-dimension-650:52px;--pine-dimension-700:56px;--pine-dimension-750:60px;--pine-dimension-800:64px;--pine-dimension-050:4px;--pine-dimension-025:2px;--pine-dimension-none:var(--pine-dimension-0);--pine-dimension-2xs:var(--pine-dimension-050);--pine-dimension-xs:var(--pine-dimension-100);--pine-dimension-sm:var(--pine-dimension-200);--pine-dimension-md:var(--pine-dimension-300);--pine-dimension-lg:var(--pine-dimension-400);--pine-dimension-xl:var(--pine-dimension-500);--pine-dimension-2xl:var(--pine-dimension-600);--pine-letter-spacing-0:0px;--pine-letter-spacing-100:.14px;--pine-letter-spacing-114:.16px;--pine-letter-spacing-128:.18px;--pine-letter-spacing-142:.2px;--pine-letter-spacing-157:.22px;--pine-letter-spacing-171:.24px;--pine-letter-spacing-185:.26px;--pine-letter-spacing-078:.11px;--pine-letter-spacing-085:.12px;--pine-letter-spacing-n065:-.65px;--pine-letter-spacing-n070:-.7px;--pine-letter-spacing:var(--pine-letter-spacing-0);--pine-letter-spacing-heading-1:var(--pine-letter-spacing-n070);--pine-letter-spacing-heading-2:var(--pine-letter-spacing-n065);--pine-letter-spacing-heading-3:var(--pine-letter-spacing-0);--pine-letter-spacing-heading-4:var(--pine-letter-spacing-0);--pine-letter-spacing-heading-5:var(--pine-letter-spacing-0);--pine-letter-spacing-heading-6:var(--pine-letter-spacing-0);--pine-motion-duration-none:0ms;--pine-motion-duration-fast:.12s;--pine-motion-duration-base:.2s;--pine-motion-duration-slow:.3s;--pine-motion-easing-out:cubic-bezier(0, 0, .2, 1);--pine-motion-easing-in:cubic-bezier(.4, 0, 1, 1);--pine-motion-easing-in-out:cubic-bezier(.4, 0, .2, 1);--pine-z-index-0:0;--pine-z-index-1:1000;--pine-z-index-2:2000;--pine-z-index-3:3000;--pine-z-index-4:4000;--pine-z-index-5:5000;--pine-z-index-6:6000;--pine-z-index-8:8000;--pine-z-index-9:9000;--pine-z-index-n1:-1;--pine-z-index:var(--pine-z-index-0);--pine-z-index-hide:var(--pine-z-index-n1);--pine-z-index-raised:var(--pine-z-index-1);--pine-z-index-alert:var(--pine-z-index-2);--pine-z-index-underlay:var(--pine-z-index-3);--pine-z-index-navigation:var(--pine-z-index-4);--pine-z-index-overlay:var(--pine-z-index-5);--pine-z-index-modal:var(--pine-z-index-6);--pine-z-index-priority:var(--pine-z-index-8);--pine-z-index-nuclear:var(--pine-z-index-9);--pine-border:var(--pine-border-width-thin) solid var(--pine-color-grey-300);--pine-border-hover:var(--pine-border-width-thin) solid var(--pine-color-grey-400);--pine-border-none:var(--pine-border-width-none) solid var(--pine-color-grey-300);--pine-border-radius-sm:var(--pine-dimension-050);--pine-border-radius-md:var(--pine-dimension-125);--pine-border-radius-lg:var(--pine-dimension-200);--pine-border-radius-full:9999px;--pine-typography-heading-1:var(--pine-font-weight-semi-bold) var(--pine-font-size-heading-1)/var(--pine-line-height-heading) var(--pine-font-family-inter);--pine-typography-heading-2:var(--pine-font-weight-semi-bold) var(--pine-font-size-heading-2)/var(--pine-line-height-heading) var(--pine-font-family-inter);--pine-typography-heading-3:var(--pine-font-weight-semi-bold) var(--pine-font-size-heading-3)/var(--pine-line-height-heading) var(--pine-font-family-inter);--pine-typography-heading-4:var(--pine-font-weight-semi-bold) var(--pine-font-size-heading-4)/var(--pine-line-height-heading) var(--pine-font-family-inter);--pine-typography-heading-5:var(--pine-font-weight-medium) var(--pine-font-size-heading-5)/var(--pine-line-height-heading) var(--pine-font-family-inter);--pine-typography-heading-6:var(--pine-font-weight-medium) var(--pine-font-size-heading-6)/var(--pine-line-height-heading) var(--pine-font-family-inter);--pine-typography-heading-caption:var(--pine-font-weight-semi-bold) var(--pine-font-size-heading-caption)/var(--pine-line-height-heading) var(--pine-font-family-inter);--pine-typography-body:var(--pine-font-weight-regular) var(--pine-font-size-body-md)/var(--pine-line-height-body) var(--pine-font-family-inter);--pine-typography-body-medium:var(--pine-font-weight-medium) var(--pine-font-size-body-md)/var(--pine-line-height-body) var(--pine-font-family-inter);--pine-typography-body-mono:var(--pine-font-weight-medium) var(--pine-font-size-body-md)/var(--pine-line-height-body) monospace;--pine-typography-body-semi-bold:var(--pine-font-weight-semi-bold) var(--pine-font-size-body-md)/var(--pine-line-height-body) var(--pine-font-family-inter);--pine-typography-body-bold:var(--pine-font-weight-bold) var(--pine-font-size-body-md)/var(--pine-line-height-body) var(--pine-font-family-inter);--pine-typography-body-brand-label:var(--pine-font-weight-medium) var(--pine-font-size-body-md)/var(--pine-line-height-body) var(--pine-font-family-inter);--pine-typography-body-brand-text:var(--pine-font-weight-medium) var(--pine-font-size-body-md)/var(--pine-line-height-body) var(--pine-font-family-faire-sprig);--pine-typography-body-sm:var(--pine-font-weight-regular) var(--pine-font-size-body-sm)/var(--pine-line-height-body) var(--pine-font-family-inter);--pine-typography-body-sm-medium:var(--pine-font-weight-medium) var(--pine-font-size-body-sm)/var(--pine-line-height-body) var(--pine-font-family-inter);--pine-typography-body-sm-mono:var(--pine-font-weight-medium) var(--pine-font-size-body-sm)/var(--pine-line-height-body) monospace;--pine-typography-body-sm-bold:var(--pine-font-weight-bold) var(--pine-font-size-body-sm)/var(--pine-line-height-body) var(--pine-font-family-inter);--pine-typography-body-sm-brand-label:var(--pine-font-weight-medium) var(--pine-font-size-body-sm)/var(--pine-line-height-body) var(--pine-font-family-inter);--pine-typography-body-sm-brand-text:var(--pine-font-weight-medium) var(--pine-font-size-body-sm)/var(--pine-line-height-body) var(--pine-font-family-faire-sprig);--pine-outline-focus:var(--pine-border-width-thick) solid var(--pine-color-focus-ring);--pine-outline-focus-danger:var(--pine-border-width-thick) solid var(--pine-color-focus-ring-danger)}@media (prefers-reduced-motion: reduce){:root{--pine-motion-duration-fast:0ms;--pine-motion-duration-base:0ms;--pine-motion-duration-slow:0ms}}[data-theme=dark]{--pine-color-accent:var(--pine-color-grey-100);--pine-color-accent-disabled:var(--pine-color-grey-800);--pine-color-accent-hover:var(--pine-color-white);--pine-color-background-app:var(--pine-color-grey-900);--pine-color-background-subtle:var(--pine-color-grey-900);--pine-color-background-muted:var(--pine-color-grey-800);--pine-color-background-inverse-app:var(--pine-color-grey-100);--pine-color-background-inverse-subtle:var(--pine-color-grey-150);--pine-color-background-inverse-muted:var(--pine-color-grey-200);--pine-color-background-inverse-container:var(--pine-color-white);--pine-color-background-inverse-inset:var(--pine-color-grey-050);--pine-color-background-container:var(--pine-color-black);--pine-color-background-container-disabled:var(--pine-color-grey-800);--pine-color-background-container-hover:var(--pine-color-grey-950);--pine-color-background-inset:var(--pine-color-grey-700);--pine-color-background-inset-emphasized:var(--pine-color-grey-600);--pine-color-background-overlay:var(--pine-color-grey-900);--pine-color-border:var(--pine-color-grey-600);--pine-color-border-hover:var(--pine-color-grey-500);--pine-color-border-disabled:var(--pine-color-grey-700);--pine-color-border-active:var(--pine-color-grey-500);--pine-color-border-danger:var(--pine-color-red-600);--pine-color-border-danger-hover:var(--pine-color-red-700);--pine-color-border-subtle:var(--pine-color-grey-700);--pine-color-danger:var(--pine-color-red-600);--pine-color-danger-disabled:var(--pine-color-red-900);--pine-color-danger-hover:var(--pine-color-red-700);--pine-color-focus-ring:var(--pine-color-grey-500);--pine-color-focus-ring-danger:var(--pine-color-red-300);--pine-color-info:var(--pine-color-blue-500);--pine-color-info-disabled:var(--pine-color-blue-900);--pine-color-info-hover:var(--pine-color-blue-600);--pine-color-neutral:var(--pine-color-grey-400);--pine-color-neutral-disabled:var(--pine-color-grey-900);--pine-color-neutral-hover:var(--pine-color-grey-300);--pine-color-primary:var(--pine-color-grey-100);--pine-color-primary-disabled:var(--pine-color-grey-800);--pine-color-primary-hover:var(--pine-color-white);--pine-color-secondary:var(--pine-color-black);--pine-color-secondary-disabled:var(--pine-color-black);--pine-color-secondary-hover:var(--pine-color-grey-950);--pine-color-success:var(--pine-color-green-500);--pine-color-success-disabled:var(--pine-color-green-900);--pine-color-success-hover:var(--pine-color-green-600);--pine-color-text:var(--pine-color-grey-100);--pine-color-text-hover:var(--pine-color-grey-050);--pine-color-text-disabled:var(--pine-color-grey-400);--pine-color-text-readonly:var(--pine-color-grey-200);--pine-color-text-active:var(--pine-color-grey-050);--pine-color-text-accent:var(--pine-color-grey-100);--pine-color-text-accent-disabled:var(--pine-color-grey-500);--pine-color-text-accent-hover:var(--pine-color-white);--pine-color-text-danger:var(--pine-color-red-900);--pine-color-text-danger-disabled:var(--pine-color-red-600);--pine-color-text-danger-hover:var(--pine-color-red-950);--pine-color-text-info:var(--pine-color-blue-900);--pine-color-text-info-disabled:var(--pine-color-blue-600);--pine-color-text-info-hover:var(--pine-color-blue-950);--pine-color-text-label:var(--pine-color-grey-050);--pine-color-text-label-disabled:var(--pine-color-grey-400);--pine-color-text-label-readonly:var(--pine-color-grey-200);--pine-color-text-message:var(--pine-color-grey-150);--pine-color-text-message-danger:var(--pine-color-red-500);--pine-color-text-message-disabled:var(--pine-color-grey-300);--pine-color-text-neutral:var(--pine-color-grey-100);--pine-color-text-neutral-disabled:var(--pine-color-grey-300);--pine-color-text-neutral-hover:var(--pine-color-grey-050);--pine-color-text-placeholder:var(--pine-color-grey-300);--pine-color-text-placeholder-disabled:var(--pine-color-grey-500);--pine-color-text-primary:var(--pine-color-black);--pine-color-text-primary-disabled:var(--pine-color-grey-500);--pine-color-text-secondary:var(--pine-color-grey-150);--pine-color-text-secondary-disabled:var(--pine-color-grey-500);--pine-color-text-secondary-hover:var(--pine-color-grey-100);--pine-color-text-tertiary:var(--pine-color-grey-300);--pine-color-text-tertiary-disabled:var(--pine-color-grey-500);--pine-color-text-subtle:var(--pine-color-grey-400);--pine-color-text-subtle-disabled:var(--pine-color-grey-600);--pine-color-text-muted:var(--pine-color-grey-200);--pine-color-text-muted-disabled:var(--pine-color-grey-400);--pine-color-text-strong:var(--pine-color-grey-050);--pine-color-text-strong-disabled:var(--pine-color-grey-300);--pine-color-text-emphasis:var(--pine-color-white);--pine-color-text-inverse:var(--pine-color-grey-900);--pine-color-text-inverse-secondary:var(--pine-color-grey-800);--pine-color-text-inverse-tertiary:var(--pine-color-grey-600);--pine-color-text-inverse-emphasis:var(--pine-color-black);--pine-color-text-success:var(--pine-color-green-900);--pine-color-text-success-disabled:var(--pine-color-green-600);--pine-color-text-success-hover:var(--pine-color-green-950);--pine-color-text-warning:var(--pine-color-yellow-900);--pine-color-text-warning-disabled:var(--pine-color-yellow-600);--pine-color-text-warning-hover:var(--pine-color-yellow-950);--pine-color-warning:var(--pine-color-yellow-500);--pine-color-warning-disabled:var(--pine-color-yellow-900);--pine-color-warning-hover:var(--pine-color-yellow-600);--pine-color-icon:var(--pine-color-grey-200);--pine-color-icon-subtle:var(--pine-color-grey-400);--pine-color-icon-disabled:var(--pine-color-grey-500);--pine-color-icon-inverse:var(--pine-color-grey-900);--pine-color-brand:var(--pine-color-grey-050);--pine-border:var(--pine-border-width-thin) solid var(--pine-color-grey-600);--pine-border-hover:var(--pine-border-width-thin) solid var(--pine-color-grey-400);--pine-border-none:var(--pine-border-width-none) solid var(--pine-color-grey-600);--pine-outline-focus:var(--pine-border-width-thick) solid var(--pine-color-focus-ring);--pine-outline-focus-danger:var(--pine-border-width-thick) solid var(--pine-color-focus-ring-danger)}@font-face{font-display:swap;font-family:\"Inter\";font-style:normal;font-weight:100;src:local(\"Inter-Thin\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-Thin.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Inter\";font-style:italic;font-weight:100;src:local(\"Inter-ThinItalic\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-ThinItalic.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Inter\";font-style:normal;font-weight:200;src:local(\"Inter-ExtraLight\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-ExtraLight.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Inter\";font-style:italic;font-weight:200;src:local(\"Inter-ExtraLightItalic\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-ExtraLightItalic.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Inter\";font-style:normal;font-weight:300;src:local(\"Inter-Light\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-Light.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Inter\";font-style:italic;font-weight:300;src:local(\"Inter-LightItalic\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-LightItalic.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Inter\";font-style:normal;font-weight:400;src:local(\"Inter-Regular\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-Regular.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Inter\";font-style:italic;font-weight:400;src:local(\"Inter-Italic\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-Italic.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Inter\";font-style:normal;font-weight:500;src:local(\"Inter-Medium\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-Medium.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Inter\";font-style:italic;font-weight:500;src:local(\"Inter-MediumItalic\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-MediumItalic.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Inter\";font-style:normal;font-weight:600;src:local(\"Inter-SemiBold\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-SemiBold.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Inter\";font-style:italic;font-weight:600;src:local(\"Inter-SemiBoldItalic\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-SemiBoldItalic.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Inter\";font-style:normal;font-weight:700;src:local(\"Inter-Bold\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-Bold.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Inter\";font-style:italic;font-weight:700;src:local(\"Inter-BoldItalic\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-BoldItalic.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Inter\";font-style:normal;font-weight:800;src:local(\"Inter-ExtraBold\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-ExtraBold.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Inter\";font-style:italic;font-weight:800;src:local(\"Inter-ExtraBoldItalic\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-ExtraBoldItalic.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Inter\";font-style:normal;font-weight:900;src:local(\"Inter-Black\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-Black.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Inter\";font-style:italic;font-weight:900;src:local(\"Inter-BlackItalic\"), url(\"https://sage.kajabi-cdn.com/fonts/inter/Inter-BlackItalic.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"FAIRE Sprig\";font-style:normal;font-weight:200;src:local(\"FAIRE-Sprig-Thin\"), url(\"https://sage.kajabi-cdn.com/fonts/sprig/FAIRE-Sprig-Thin.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"FAIRE Sprig\";font-style:italic;font-weight:200;src:local(\"FAIRE-Sprig-ThinItalic\"), url(\"https://sage.kajabi-cdn.com/fonts/sprig/FAIRE-Sprig-ThinItalic.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"FAIRE Sprig\";font-style:normal;font-weight:300;src:local(\"FAIRE-Sprig-Light\"), url(\"https://sage.kajabi-cdn.com/fonts/sprig/FAIRE-Sprig-Light.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"FAIRE Sprig\";font-style:italic;font-weight:300;src:local(\"FAIRE-Sprig-LightItalic\"), url(\"https://sage.kajabi-cdn.com/fonts/sprig/FAIRE-Sprig-LightItalic.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"FAIRE Sprig\";font-style:normal;font-weight:400;src:local(\"FAIRE-Sprig-Regular\"), url(\"https://sage.kajabi-cdn.com/fonts/sprig/FAIRE-Sprig-Regular.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"FAIRE Sprig\";font-style:italic;font-weight:400;src:local(\"FAIRE-Sprig-RegularItalic\"), url(\"https://sage.kajabi-cdn.com/fonts/sprig/FAIRE-Sprig-RegularItalic.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"FAIRE Sprig\";font-style:normal;font-weight:500;src:local(\"FAIRE-Sprig-Medium\"), url(\"https://sage.kajabi-cdn.com/fonts/sprig/FAIRE-Sprig-Medium.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"FAIRE Sprig\";font-style:italic;font-weight:500;src:local(\"FAIRE-Sprig-MediumItalic\"), url(\"https://sage.kajabi-cdn.com/fonts/sprig/FAIRE-Sprig-MediumItalic.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"FAIRE Sprig\";font-style:normal;font-weight:700;src:local(\"FAIRE-Sprig-Bold\"), url(\"https://sage.kajabi-cdn.com/fonts/sprig/FAIRE-Sprig-Bold.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"FAIRE Sprig\";font-style:italic;font-weight:700;src:local(\"FAIRE-Sprig-BoldItalic\"), url(\"https://sage.kajabi-cdn.com/fonts/sprig/FAIRE-Sprig-BoldItalic.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"FAIRE Sprig\";font-style:normal;font-weight:900;src:local(\"FAIRE-Sprig-Super\"), url(\"https://sage.kajabi-cdn.com/fonts/sprig/FAIRE-Sprig-Super.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"FAIRE Sprig\";font-style:italic;font-weight:900;src:local(\"FAIRE-Sprig-SuperItalic\"), url(\"https://sage.kajabi-cdn.com/fonts/sprig/FAIRE-Sprig-SuperItalic.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Noto Sans Arabic\";font-style:normal;font-weight:normal;src:local(\"Noto-Sans-Arabic\"), url(\"https://sage.kajabi-cdn.com/fonts/noto/Noto-Sans-Arabic.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Noto Sans Hebrew\";font-style:normal;font-weight:normal;src:local(\"Noto-Sans-Hebrew\"), url(\"https://sage.kajabi-cdn.com/fonts/noto/Noto-Sans-Hebrew.woff2?v=1\") format(\"woff2\")}@font-face{font-display:swap;font-family:\"Noto Sans Devanagari\";font-style:normal;font-weight:normal;src:local(\"Noto-Sans-Devanagari\"), url(\"https://sage.kajabi-cdn.com/fonts/noto/Noto-Sans-Devanagari.woff2?v=1\") format(\"woff2\")}:root{--pine-motion-duration-fast:120ms;--pine-motion-duration-base:200ms;--pine-motion-duration-slow:300ms;--pine-motion-easing-out:cubic-bezier(0, 0, 0.2, 1);--pine-motion-easing-in:cubic-bezier(0.4, 0, 1, 1);--pine-motion-easing-in-out:cubic-bezier(0.4, 0, 0.2, 1)}@media (prefers-reduced-motion: reduce){:root{--pine-motion-duration-fast:0ms;--pine-motion-duration-base:0ms;--pine-motion-duration-slow:0ms}}[hidden]{display:none !important}";
6
15
 
7
16
  /*
package/dist/esm/index.js CHANGED
@@ -1,3 +1,5 @@
1
+ export { k as keepPineHydrated } from './keep-hydrated-BLG6RDBt.js';
2
+
1
3
  // Single source of truth for `pds-text` `size` values. The `as const` tuple is
2
4
  // readable at runtime (for validation) and `TextSizeType` is derived from it,
3
5
  // so the supported list and the prop type cannot drift apart.
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Whether a class is one Stencil itself puts on a host: its default `hydratedFlag` (Pine doesn't
3
+ * change it), or a scoped component's own scope classes (`sc-pds-radio`, `sc-pds-radio-h`,
4
+ * `sc-pds-radio-s`), which its CSS needs. Only the host's own: another `sc-` class may be a
5
+ * consumer's (styled-components ids).
6
+ * @param el - Host element
7
+ * @param name - Class name
8
+ */
9
+ const isStencilClass = (el, name) => {
10
+ const scope = `sc-${el.localName}`;
11
+ return name === 'hydrated' || name === scope || name === `${scope}-h` || name === `${scope}-s`;
12
+ };
13
+ /**
14
+ * The class names in a rendered `class` value: a string, or Stencil's `{ name: boolean }` form.
15
+ */
16
+ const classNamesOf = (classes) => typeof classes === 'string'
17
+ ? classes.split(/\s+/).filter(Boolean)
18
+ : Object.keys(classes).filter((name) => classes[name]);
19
+ // Each restore that writes something counts. A real strip costs one, but a script that undoes the
20
+ // restore as soon as it lands (from a MutationObserver) keeps both going forever, all in
21
+ // microtasks, so the page never renders or takes input. More writes than this before the next task
22
+ // means that kind of fight. A script that undoes it from a timer or animation frame gets a fresh
23
+ // budget each task; the page stays responsive then, so that fight isn't capped.
24
+ const MAX_RESTORES_PER_TASK = 5;
25
+ // Callbacks waiting for the next task, all run by one message. A MessageChannel message isn't slowed
26
+ // down like a timer is in a background tab (or frozen by test fake timers); a timer is the fallback
27
+ // where it's missing. One message for all of them, so a morph that strips many hosts doesn't open a
28
+ // channel for each.
29
+ const nextTaskCallbacks = new Set();
30
+ const runNextTaskCallbacks = () => {
31
+ const callbacks = Array.from(nextTaskCallbacks);
32
+ nextTaskCallbacks.clear();
33
+ callbacks.forEach((callback) => callback());
34
+ };
35
+ const onNextTask = (callback) => {
36
+ nextTaskCallbacks.add(callback);
37
+ if (nextTaskCallbacks.size > 1)
38
+ return;
39
+ if (typeof MessageChannel === 'undefined') {
40
+ setTimeout(runNextTaskCallbacks);
41
+ return;
42
+ }
43
+ const channel = new MessageChannel();
44
+ channel.port1.onmessage = () => {
45
+ channel.port1.close();
46
+ runNextTaskCallbacks();
47
+ };
48
+ channel.port2.postMessage(null);
49
+ };
50
+ /**
51
+ * The restore kind for a host's own classes, styles and attributes, shared by a component's own
52
+ * host restore and `keepPineHydrated`: one fight on a host's classes stops both, and warns once.
53
+ */
54
+ const HOST_RESTORE = 'host';
55
+ /**
56
+ * Remembers the Stencil classes an element has had, and returns all of them. A restore can't read
57
+ * them from the latest mutation alone: after a script's last strip they're gone from its old value
58
+ * too, and the next change would restore nothing.
59
+ */
60
+ const stencilClassesOf = (seen, el, oldValue) => {
61
+ [...classNamesOf(oldValue !== null && oldValue !== void 0 ? oldValue : ''), ...Array.from(el.classList)]
62
+ .filter((name) => isStencilClass(el, name))
63
+ .forEach((name) => seen.add(name));
64
+ return Array.from(seen);
65
+ };
66
+ // What each element has already been warned about, by kind of restore. A host with its own restore
67
+ // is also watched for its Stencil classes, so one fight on its classes stops both and needs one
68
+ // warning; a fight over a trigger's ARIA is a different kind, and warns on its own. On the global
69
+ // object, like `OBSERVER` below, so two copies of Pine on a page share it.
70
+ const WARNED = Symbol.for('@pine-ds/core/restoreWarnings');
71
+ const warnedKinds = () => {
72
+ var _a;
73
+ const store = globalThis;
74
+ return ((_a = store[WARNED]) !== null && _a !== void 0 ? _a : (store[WARNED] = new WeakMap()));
75
+ };
76
+ /** Whether `el` was already warned about for `kind`; records it if not. */
77
+ const alreadyWarned = (el, kind) => {
78
+ var _a;
79
+ const kinds = (_a = warnedKinds().get(el)) !== null && _a !== void 0 ? _a : new Set();
80
+ warnedKinds().set(el, kinds);
81
+ if (kinds.has(kind))
82
+ return true;
83
+ kinds.add(kind);
84
+ return false;
85
+ };
86
+ /**
87
+ * Wraps a restore callback, which returns whether it wrote anything, so that it writes at most
88
+ * `MAX_RESTORES_PER_TASK` times before the next task (until the message posted after its first write
89
+ * runs). Past that, another script is undoing every restore as soon as it lands, so it stops and
90
+ * lets that script win rather than hang the page. What that script left stays until something
91
+ * changes the element again: the count resets on the next task, so a later change is restored, but
92
+ * nothing is restored on its own. The first give-up warns, logging `el` so it can be found in
93
+ * devtools; later ones, and other restores of the same `kind` giving up on the same element, are
94
+ * silent.
95
+ * @param restore - Puts back what something removed; returns `true` if it wrote anything
96
+ * @param warning - What the console warning says was given up
97
+ * @param el - The element being restored, logged with the warning
98
+ * @param kind - What's being restored; one warning per element for each kind
99
+ */
100
+ const limitRestores = (restore, warning, el, kind = warning) => {
101
+ let writes = 0;
102
+ let warned = false;
103
+ return (...args) => {
104
+ if (writes >= MAX_RESTORES_PER_TASK) {
105
+ if (!warned) {
106
+ warned = true;
107
+ if (el && alreadyWarned(el, kind))
108
+ return;
109
+ // The warning as an argument, not the format string: it carries the tag name, which the HTML
110
+ // parser lets contain `%`.
111
+ console.warn('%s', warning, el);
112
+ }
113
+ return;
114
+ }
115
+ if (!restore(...args))
116
+ return;
117
+ if (writes === 0)
118
+ onNextTask(() => (writes = 0));
119
+ writes += 1;
120
+ };
121
+ };
122
+ // On the global object, not in this module, so a page with two copies of Pine (the CDN build and a
123
+ // bundled `@pine-ds/react`) still has one observer.
124
+ const OBSERVER = Symbol.for('@pine-ds/core/keepPineHydrated');
125
+ /**
126
+ * Puts Stencil's own classes back on any Pine component that loses them. Stencil hides a component
127
+ * until it has `hydrated`, so a DOM morph that strips a host's `class` makes it vanish, and nothing
128
+ * rewrites it. One observer on the whole document covers every component, including the ones with no
129
+ * host restore of their own. It only restores classes the element had, so it never runs ahead of
130
+ * Stencil. It can't see inside shadow roots, which a morph doesn't reach either.
131
+ *
132
+ * A script that removes `hydrated` on purpose sees it come back. One that removes it every time it
133
+ * appears (from a `MutationObserver`, say) wins after a few rounds, and the component logs a console
134
+ * warning. The component then stays hidden, as that script left it, until its class changes again.
135
+ *
136
+ * Pine's global script calls this, so the CDN and `dist` builds get it on load. The custom-elements
137
+ * build (`@pine-ds/core/components/*`, `@pine-ds/react`) has no global script: call it once yourself.
138
+ * Calling it again does nothing, and without `MutationObserver` (server rendering) neither does the
139
+ * first call.
140
+ */
141
+ const keepPineHydrated = () => {
142
+ if (typeof MutationObserver === 'undefined' || typeof document === 'undefined')
143
+ return;
144
+ const store = globalThis;
145
+ if (store[OBSERVER])
146
+ return;
147
+ // One capped restore per element, so a script fighting one component doesn't stop the others,
148
+ // and the Stencil classes each one has had.
149
+ const restores = new WeakMap();
150
+ const seen = new WeakMap();
151
+ const restoreFor = (el) => {
152
+ let restore = restores.get(el);
153
+ if (!restore) {
154
+ restore = limitRestores((names) => {
155
+ const missing = names.filter((name) => !el.classList.contains(name));
156
+ if (missing.length > 0)
157
+ el.classList.add(...missing);
158
+ return missing.length > 0;
159
+ }, `${el.localName}: stopped putting back its hydrated and scope classes, as another script keeps removing them.`, el, HOST_RESTORE);
160
+ restores.set(el, restore);
161
+ }
162
+ return restore;
163
+ };
164
+ const observer = new MutationObserver((records) => {
165
+ records.forEach(({ target, oldValue }) => {
166
+ const el = target;
167
+ if (!el.localName.startsWith('pds-'))
168
+ return;
169
+ // No old value is a `class` being added. Stencil's first `hydrated` arrives that way, which
170
+ // needs nothing; for an element already seen, it's the class coming back after a removal.
171
+ if (oldValue == null && !seen.has(el))
172
+ return;
173
+ if (!seen.has(el))
174
+ seen.set(el, new Set());
175
+ const names = stencilClassesOf(seen.get(el), el, oldValue);
176
+ if (names.length > 0)
177
+ restoreFor(el)(names);
178
+ });
179
+ });
180
+ // The document rather than its root element, so replacing `<html>` doesn't end the watch.
181
+ observer.observe(document, {
182
+ subtree: true,
183
+ attributes: true,
184
+ attributeFilter: ['class'],
185
+ attributeOldValue: true,
186
+ });
187
+ store[OBSERVER] = observer;
188
+ };
189
+
190
+ export { HOST_RESTORE as H, classNamesOf as c, keepPineHydrated as k, limitRestores as l, stencilClassesOf as s };