@pine-ds/core 3.4.3 → 3.5.1

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 (588) hide show
  1. package/components/floating-ui.dom.js +180 -4
  2. package/components/floating-ui.dom.js.map +1 -1
  3. package/components/index2.js +1 -1
  4. package/components/index2.js.map +1 -1
  5. package/components/mock-pds-modal.js +1 -1
  6. package/components/pds-box2.js +4 -2
  7. package/components/pds-box2.js.map +1 -1
  8. package/components/pds-button2.js +1 -1
  9. package/components/pds-button2.js.map +1 -1
  10. package/components/pds-input.js +3 -2
  11. package/components/pds-input.js.map +1 -1
  12. package/components/pds-link2.js +2 -2
  13. package/components/pds-loader2.js +1 -1
  14. package/components/pds-loader2.js.map +1 -1
  15. package/components/pds-modal-content.js +2 -2
  16. package/components/pds-modal-footer.js +1 -1
  17. package/components/pds-modal-header.js +1 -1
  18. package/components/pds-modal.js +2 -2
  19. package/components/pds-popover.js +1 -1
  20. package/components/pds-progress.js +1 -1
  21. package/components/pds-property.js +1 -1
  22. package/components/pds-radio.js +3 -3
  23. package/components/pds-row.js +1 -1
  24. package/components/pds-select.js +1 -1
  25. package/components/pds-select.js.map +1 -1
  26. package/components/pds-sortable-item.js +1 -1
  27. package/components/pds-sortable.js +1 -1
  28. package/components/pds-switch.js +3 -3
  29. package/components/pds-tab.js +4 -4
  30. package/components/pds-tab.js.map +1 -1
  31. package/components/pds-table-body.js +1 -1
  32. package/components/pds-table-body.js.map +1 -1
  33. package/components/pds-table-cell2.js +66 -8
  34. package/components/pds-table-cell2.js.map +1 -1
  35. package/components/pds-table-head-cell2.js +67 -9
  36. package/components/pds-table-head-cell2.js.map +1 -1
  37. package/components/pds-table-head.js +1 -1
  38. package/components/pds-table-head.js.map +1 -1
  39. package/components/pds-table-row.js +1 -1
  40. package/components/pds-table-row.js.map +1 -1
  41. package/components/pds-table.js +106 -4
  42. package/components/pds-table.js.map +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 +7 -6
  47. package/components/pds-textarea.js.map +1 -1
  48. package/components/pds-tooltip.js +93 -159
  49. package/components/pds-tooltip.js.map +1 -1
  50. package/dist/cjs/{floating-ui.dom-Bz4BD-cr.js → floating-ui.dom-DTAy35nv.js} +182 -5
  51. package/dist/{esm-es5/floating-ui.dom-D_FwyeSw.js.map → cjs/floating-ui.dom-DTAy35nv.js.map} +1 -1
  52. package/dist/cjs/{index-BfqrB2cC.js → index-DVaLegMK.js} +3 -3
  53. package/dist/cjs/index-DVaLegMK.js.map +1 -0
  54. package/dist/cjs/loader.cjs.js +1 -1
  55. package/dist/cjs/mock-pds-modal.cjs.entry.js +1 -1
  56. package/dist/cjs/pds-accordion.cjs.entry.js +1 -1
  57. package/dist/cjs/pds-avatar.cjs.entry.js +1 -1
  58. package/dist/cjs/pds-box.cjs.entry.js +3 -2
  59. package/dist/cjs/pds-box.cjs.entry.js.map +1 -1
  60. package/dist/cjs/pds-box.entry.cjs.js.map +1 -1
  61. package/dist/cjs/pds-button.cjs.entry.js +2 -2
  62. package/dist/cjs/pds-button.cjs.entry.js.map +1 -1
  63. package/dist/cjs/pds-button.entry.cjs.js.map +1 -1
  64. package/dist/cjs/pds-checkbox.cjs.entry.js +1 -1
  65. package/dist/cjs/pds-chip.cjs.entry.js +1 -1
  66. package/dist/cjs/pds-combobox.cjs.entry.js +1 -1
  67. package/dist/cjs/pds-copytext.cjs.entry.js +1 -1
  68. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +1 -1
  69. package/dist/cjs/pds-input.cjs.entry.js +3 -3
  70. package/dist/cjs/pds-input.cjs.entry.js.map +1 -1
  71. package/dist/cjs/pds-input.entry.cjs.js.map +1 -1
  72. package/dist/cjs/pds-link.cjs.entry.js +3 -3
  73. package/dist/cjs/pds-loader.cjs.entry.js +1 -1
  74. package/dist/cjs/pds-loader.cjs.entry.js.map +1 -1
  75. package/dist/cjs/pds-loader.entry.cjs.js.map +1 -1
  76. package/dist/cjs/pds-modal-content.cjs.entry.js +2 -2
  77. package/dist/cjs/pds-modal-footer.cjs.entry.js +1 -1
  78. package/dist/cjs/pds-modal-header.cjs.entry.js +1 -1
  79. package/dist/cjs/pds-modal.cjs.entry.js +2 -2
  80. package/dist/cjs/pds-popover.cjs.entry.js +1 -1
  81. package/dist/cjs/pds-progress.cjs.entry.js +1 -1
  82. package/dist/cjs/pds-property.cjs.entry.js +1 -1
  83. package/dist/cjs/pds-radio.cjs.entry.js +4 -4
  84. package/dist/cjs/pds-row.cjs.entry.js +1 -1
  85. package/dist/cjs/pds-select.cjs.entry.js +2 -2
  86. package/dist/cjs/pds-select.cjs.entry.js.map +1 -1
  87. package/dist/cjs/pds-select.entry.cjs.js.map +1 -1
  88. package/dist/cjs/pds-sortable-item.cjs.entry.js +2 -2
  89. package/dist/cjs/pds-sortable.cjs.entry.js +1 -1
  90. package/dist/cjs/pds-switch.cjs.entry.js +4 -4
  91. package/dist/cjs/pds-tab.cjs.entry.js +4 -4
  92. package/dist/cjs/pds-tab.cjs.entry.js.map +1 -1
  93. package/dist/cjs/pds-tab.entry.cjs.js.map +1 -1
  94. package/dist/cjs/pds-table-body.cjs.entry.js +1 -1
  95. package/dist/cjs/pds-table-body.cjs.entry.js.map +1 -1
  96. package/dist/cjs/pds-table-body.entry.cjs.js.map +1 -1
  97. package/dist/cjs/pds-table-cell.cjs.entry.js +65 -8
  98. package/dist/cjs/pds-table-cell.cjs.entry.js.map +1 -1
  99. package/dist/cjs/pds-table-cell.entry.cjs.js.map +1 -1
  100. package/dist/cjs/pds-table-head-cell.cjs.entry.js +67 -10
  101. package/dist/cjs/pds-table-head-cell.cjs.entry.js.map +1 -1
  102. package/dist/cjs/pds-table-head-cell.entry.cjs.js.map +1 -1
  103. package/dist/cjs/pds-table-head.cjs.entry.js +1 -1
  104. package/dist/cjs/pds-table-head.cjs.entry.js.map +1 -1
  105. package/dist/cjs/pds-table-head.entry.cjs.js.map +1 -1
  106. package/dist/cjs/pds-table-row.cjs.entry.js +1 -1
  107. package/dist/cjs/pds-table-row.cjs.entry.js.map +1 -1
  108. package/dist/cjs/pds-table-row.entry.cjs.js.map +1 -1
  109. package/dist/cjs/pds-table.cjs.entry.js +106 -4
  110. package/dist/cjs/pds-table.cjs.entry.js.map +1 -1
  111. package/dist/cjs/pds-table.entry.cjs.js.map +1 -1
  112. package/dist/cjs/pds-tabpanel.cjs.entry.js +1 -1
  113. package/dist/cjs/pds-tabs.cjs.entry.js +1 -1
  114. package/dist/cjs/pds-text.cjs.entry.js +1 -1
  115. package/dist/cjs/pds-textarea.cjs.entry.js +7 -7
  116. package/dist/cjs/pds-textarea.cjs.entry.js.map +1 -1
  117. package/dist/cjs/pds-textarea.entry.cjs.js.map +1 -1
  118. package/dist/cjs/pds-tooltip.cjs.entry.js +93 -158
  119. package/dist/cjs/pds-tooltip.cjs.entry.js.map +1 -1
  120. package/dist/cjs/pds-tooltip.entry.cjs.js.map +1 -1
  121. package/dist/cjs/pine-core.cjs.js +1 -1
  122. package/dist/collection/components/pds-box/pds-box.css +4 -0
  123. package/dist/collection/components/pds-box/pds-box.js +24 -1
  124. package/dist/collection/components/pds-box/pds-box.js.map +1 -1
  125. package/dist/collection/components/pds-button/pds-button.js +2 -1
  126. package/dist/collection/components/pds-button/pds-button.js.map +1 -1
  127. package/dist/collection/components/pds-input/pds-input.css +13 -0
  128. package/dist/collection/components/pds-input/pds-input.js +20 -1
  129. package/dist/collection/components/pds-input/pds-input.js.map +1 -1
  130. package/dist/collection/components/pds-input/stories/pds-input.stories.js +10 -1
  131. package/dist/collection/components/pds-link/pds-link.js +2 -2
  132. package/dist/collection/components/pds-loader/pds-loader.js +2 -1
  133. package/dist/collection/components/pds-loader/pds-loader.js.map +1 -1
  134. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +2 -2
  135. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +1 -1
  136. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +1 -1
  137. package/dist/collection/components/pds-modal/pds-modal.js +2 -2
  138. package/dist/collection/components/pds-modal/test/mock-pds-modal.js +1 -1
  139. package/dist/collection/components/pds-popover/pds-popover.js +1 -1
  140. package/dist/collection/components/pds-progress/pds-progress.js +1 -1
  141. package/dist/collection/components/pds-property/pds-property.js +1 -1
  142. package/dist/collection/components/pds-radio/pds-radio.js +3 -3
  143. package/dist/collection/components/pds-row/pds-row.js +1 -1
  144. package/dist/collection/components/pds-select/pds-select.js +2 -2
  145. package/dist/collection/components/pds-select/pds-select.js.map +1 -1
  146. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
  147. package/dist/collection/components/pds-sortable/pds-sortable.js +1 -1
  148. package/dist/collection/components/pds-switch/pds-switch.js +3 -3
  149. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
  150. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js.map +1 -1
  151. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.css +16 -0
  152. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +83 -7
  153. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js.map +1 -1
  154. package/dist/collection/components/pds-table/pds-table-cell/stories/pds-table-cell.stories.js +23 -4
  155. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +1 -1
  156. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js.map +1 -1
  157. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.css +18 -1
  158. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +84 -8
  159. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js.map +1 -1
  160. package/dist/collection/components/pds-table/pds-table-head-cell/stories/pds-table-head-cell.stories.js +13 -4
  161. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +1 -1
  162. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js.map +1 -1
  163. package/dist/collection/components/pds-table/pds-table.css +80 -11
  164. package/dist/collection/components/pds-table/pds-table.js +105 -3
  165. package/dist/collection/components/pds-table/pds-table.js.map +1 -1
  166. package/dist/collection/components/pds-table/stories/pds-table.stories.js +45 -0
  167. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.css +6 -6
  168. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js +3 -3
  169. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +1 -1
  170. package/dist/collection/components/pds-tabs/pds-tabs.js +1 -1
  171. package/dist/collection/components/pds-text/pds-text.js +1 -1
  172. package/dist/collection/components/pds-textarea/pds-textarea.css +13 -0
  173. package/dist/collection/components/pds-textarea/pds-textarea.js +25 -6
  174. package/dist/collection/components/pds-textarea/pds-textarea.js.map +1 -1
  175. package/dist/collection/components/pds-textarea/stories/pds-textarea.stories.js +4 -0
  176. package/dist/collection/components/pds-tooltip/pds-tooltip.css +0 -1
  177. package/dist/collection/components/pds-tooltip/pds-tooltip.js +102 -78
  178. package/dist/collection/components/pds-tooltip/pds-tooltip.js.map +1 -1
  179. package/dist/docs.json +248 -13
  180. package/dist/esm/{floating-ui.dom-D_FwyeSw.js → floating-ui.dom-DbQzNDdQ.js} +182 -6
  181. package/dist/esm/{floating-ui.dom-D_FwyeSw.js.map → floating-ui.dom-DbQzNDdQ.js.map} +1 -1
  182. package/dist/esm/{index-CzVv99mW.js → index-DrJ5r5Pu.js} +3 -3
  183. package/dist/esm/index-DrJ5r5Pu.js.map +1 -0
  184. package/dist/esm/loader.js +1 -1
  185. package/dist/esm/mock-pds-modal.entry.js +1 -1
  186. package/dist/esm/pds-accordion.entry.js +1 -1
  187. package/dist/esm/pds-avatar.entry.js +1 -1
  188. package/dist/esm/pds-box.entry.js +3 -2
  189. package/dist/esm/pds-box.entry.js.map +1 -1
  190. package/dist/esm/pds-button.entry.js +2 -2
  191. package/dist/esm/pds-button.entry.js.map +1 -1
  192. package/dist/esm/pds-checkbox.entry.js +1 -1
  193. package/dist/esm/pds-chip.entry.js +1 -1
  194. package/dist/esm/pds-combobox.entry.js +1 -1
  195. package/dist/esm/pds-copytext.entry.js +1 -1
  196. package/dist/esm/pds-dropdown-menu.entry.js +1 -1
  197. package/dist/esm/pds-input.entry.js +3 -3
  198. package/dist/esm/pds-input.entry.js.map +1 -1
  199. package/dist/esm/pds-link.entry.js +3 -3
  200. package/dist/esm/pds-loader.entry.js +1 -1
  201. package/dist/esm/pds-loader.entry.js.map +1 -1
  202. package/dist/esm/pds-modal-content.entry.js +2 -2
  203. package/dist/esm/pds-modal-footer.entry.js +1 -1
  204. package/dist/esm/pds-modal-header.entry.js +1 -1
  205. package/dist/esm/pds-modal.entry.js +2 -2
  206. package/dist/esm/pds-popover.entry.js +1 -1
  207. package/dist/esm/pds-progress.entry.js +1 -1
  208. package/dist/esm/pds-property.entry.js +1 -1
  209. package/dist/esm/pds-radio.entry.js +4 -4
  210. package/dist/esm/pds-row.entry.js +1 -1
  211. package/dist/esm/pds-select.entry.js +2 -2
  212. package/dist/esm/pds-select.entry.js.map +1 -1
  213. package/dist/esm/pds-sortable-item.entry.js +2 -2
  214. package/dist/esm/pds-sortable.entry.js +1 -1
  215. package/dist/esm/pds-switch.entry.js +4 -4
  216. package/dist/esm/pds-tab.entry.js +4 -4
  217. package/dist/esm/pds-tab.entry.js.map +1 -1
  218. package/dist/esm/pds-table-body.entry.js +1 -1
  219. package/dist/esm/pds-table-body.entry.js.map +1 -1
  220. package/dist/esm/pds-table-cell.entry.js +65 -8
  221. package/dist/esm/pds-table-cell.entry.js.map +1 -1
  222. package/dist/esm/pds-table-head-cell.entry.js +67 -10
  223. package/dist/esm/pds-table-head-cell.entry.js.map +1 -1
  224. package/dist/esm/pds-table-head.entry.js +1 -1
  225. package/dist/esm/pds-table-head.entry.js.map +1 -1
  226. package/dist/esm/pds-table-row.entry.js +1 -1
  227. package/dist/esm/pds-table-row.entry.js.map +1 -1
  228. package/dist/esm/pds-table.entry.js +106 -4
  229. package/dist/esm/pds-table.entry.js.map +1 -1
  230. package/dist/esm/pds-tabpanel.entry.js +1 -1
  231. package/dist/esm/pds-tabs.entry.js +1 -1
  232. package/dist/esm/pds-text.entry.js +1 -1
  233. package/dist/esm/pds-textarea.entry.js +7 -7
  234. package/dist/esm/pds-textarea.entry.js.map +1 -1
  235. package/dist/esm/pds-tooltip.entry.js +93 -158
  236. package/dist/esm/pds-tooltip.entry.js.map +1 -1
  237. package/dist/esm/pine-core.js +1 -1
  238. package/dist/esm-es5/floating-ui.dom-DbQzNDdQ.js +2 -0
  239. package/dist/{cjs/floating-ui.dom-Bz4BD-cr.js.map → esm-es5/floating-ui.dom-DbQzNDdQ.js.map} +1 -1
  240. package/dist/esm-es5/{index-CzVv99mW.js → index-DrJ5r5Pu.js} +1 -1
  241. package/dist/esm-es5/index-DrJ5r5Pu.js.map +1 -0
  242. package/dist/esm-es5/loader.js +1 -1
  243. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  244. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  245. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  246. package/dist/esm-es5/pds-box.entry.js +1 -1
  247. package/dist/esm-es5/pds-box.entry.js.map +1 -1
  248. package/dist/esm-es5/pds-button.entry.js +1 -1
  249. package/dist/esm-es5/pds-button.entry.js.map +1 -1
  250. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  251. package/dist/esm-es5/pds-chip.entry.js +1 -1
  252. package/dist/esm-es5/pds-combobox.entry.js +2 -2
  253. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  254. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  255. package/dist/esm-es5/pds-input.entry.js +1 -1
  256. package/dist/esm-es5/pds-input.entry.js.map +1 -1
  257. package/dist/esm-es5/pds-link.entry.js +1 -1
  258. package/dist/esm-es5/pds-loader.entry.js +1 -1
  259. package/dist/esm-es5/pds-loader.entry.js.map +1 -1
  260. package/dist/esm-es5/pds-modal-content.entry.js +1 -1
  261. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  262. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  263. package/dist/esm-es5/pds-modal.entry.js +1 -1
  264. package/dist/esm-es5/pds-popover.entry.js +1 -1
  265. package/dist/esm-es5/pds-progress.entry.js +1 -1
  266. package/dist/esm-es5/pds-property.entry.js +1 -1
  267. package/dist/esm-es5/pds-radio.entry.js +1 -1
  268. package/dist/esm-es5/pds-row.entry.js +1 -1
  269. package/dist/esm-es5/pds-select.entry.js +1 -1
  270. package/dist/esm-es5/pds-select.entry.js.map +1 -1
  271. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  272. package/dist/esm-es5/pds-sortable.entry.js +1 -1
  273. package/dist/esm-es5/pds-switch.entry.js +1 -1
  274. package/dist/esm-es5/pds-tab.entry.js +1 -1
  275. package/dist/esm-es5/pds-tab.entry.js.map +1 -1
  276. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  277. package/dist/esm-es5/pds-table-body.entry.js.map +1 -1
  278. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  279. package/dist/esm-es5/pds-table-cell.entry.js.map +1 -1
  280. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  281. package/dist/esm-es5/pds-table-head-cell.entry.js.map +1 -1
  282. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  283. package/dist/esm-es5/pds-table-head.entry.js.map +1 -1
  284. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  285. package/dist/esm-es5/pds-table-row.entry.js.map +1 -1
  286. package/dist/esm-es5/pds-table.entry.js +1 -1
  287. package/dist/esm-es5/pds-table.entry.js.map +1 -1
  288. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  289. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  290. package/dist/esm-es5/pds-text.entry.js +1 -1
  291. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  292. package/dist/esm-es5/pds-textarea.entry.js.map +1 -1
  293. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  294. package/dist/esm-es5/pds-tooltip.entry.js.map +1 -1
  295. package/dist/esm-es5/pine-core.js +1 -1
  296. package/dist/pine-core/{p-209b1d69.entry.js → p-00616fc9.entry.js} +2 -2
  297. package/dist/pine-core/p-00616fc9.entry.js.map +1 -0
  298. package/dist/pine-core/p-02326ac3.entry.js +2 -0
  299. package/dist/pine-core/p-02326ac3.entry.js.map +1 -0
  300. package/dist/pine-core/{p-19d08886.system.entry.js → p-023d8b71.system.entry.js} +2 -2
  301. package/dist/pine-core/p-0485aa93.system.entry.js +2 -0
  302. package/dist/pine-core/{p-XHvXi3U6.system.js.map → p-0KTU2Jt-.system.js.map} +1 -1
  303. package/dist/pine-core/p-0TIvNV5c.system.js.map +1 -0
  304. package/dist/pine-core/{p-380d1056.entry.js → p-0d9e28a2.entry.js} +2 -2
  305. package/dist/pine-core/p-0d9e28a2.entry.js.map +1 -0
  306. package/dist/pine-core/{p-81a28f54.system.entry.js → p-0de9f8da.system.entry.js} +2 -2
  307. package/dist/pine-core/{p-81a28f54.system.entry.js.map → p-0de9f8da.system.entry.js.map} +1 -1
  308. package/dist/pine-core/{p-8096b988.system.entry.js → p-14a52961.system.entry.js} +2 -2
  309. package/dist/pine-core/{p-4066a9c0.system.entry.js → p-2186e5d4.system.entry.js} +2 -2
  310. package/dist/pine-core/p-232a2043.entry.js +2 -0
  311. package/dist/pine-core/{p-c7075f11.entry.js → p-25190921.entry.js} +2 -2
  312. package/dist/pine-core/{p-487552a9.system.entry.js → p-297afc49.system.entry.js} +2 -2
  313. package/dist/pine-core/{p-03d17841.system.entry.js → p-2e19f167.system.entry.js} +2 -2
  314. package/dist/pine-core/{p-a2d16624.entry.js → p-349a8869.entry.js} +2 -2
  315. package/dist/pine-core/p-44087d1c.entry.js +2 -0
  316. package/dist/pine-core/{p-c652847a.entry.js.map → p-44087d1c.entry.js.map} +1 -1
  317. package/dist/pine-core/{p-df15e16a.entry.js → p-464dd476.entry.js} +2 -2
  318. package/dist/pine-core/{p-df15e16a.entry.js.map → p-464dd476.entry.js.map} +1 -1
  319. package/dist/pine-core/{p-0a4fc9c7.entry.js → p-47670150.entry.js} +3 -3
  320. package/dist/pine-core/{p-65275835.system.entry.js → p-48b658fc.system.entry.js} +2 -2
  321. package/dist/pine-core/p-48b658fc.system.entry.js.map +1 -0
  322. package/dist/pine-core/{p-042ee55c.entry.js → p-4bbf3e31.entry.js} +2 -2
  323. package/dist/pine-core/p-4bbf3e31.entry.js.map +1 -0
  324. package/dist/pine-core/{p-c1a1475e.entry.js → p-4deb7b8c.entry.js} +2 -2
  325. package/dist/pine-core/{p-7c867f1b.entry.js → p-503cab1f.entry.js} +2 -2
  326. package/dist/pine-core/p-50c9e865.entry.js +2 -0
  327. package/dist/pine-core/p-50c9e865.entry.js.map +1 -0
  328. package/dist/pine-core/{p-4e5b9d19.entry.js → p-52d37cc1.entry.js} +2 -2
  329. package/dist/pine-core/{p-f9bd0bc2.system.entry.js → p-54183d70.system.entry.js} +2 -2
  330. package/dist/pine-core/p-5708f95a.entry.js +2 -0
  331. package/dist/pine-core/{p-f647c1af.system.entry.js → p-5aed29fe.system.entry.js} +2 -2
  332. package/dist/pine-core/{p-d08ecd18.system.entry.js → p-5da82e8c.system.entry.js} +2 -2
  333. package/dist/pine-core/{p-ed94947b.entry.js → p-5e8badb9.entry.js} +2 -2
  334. package/dist/pine-core/{p-126197e5.entry.js → p-651861ff.entry.js} +2 -2
  335. package/dist/pine-core/{p-8896d43a.entry.js → p-68b5665a.entry.js} +2 -2
  336. package/dist/pine-core/p-68b5665a.entry.js.map +1 -0
  337. package/dist/pine-core/{p-276a6a8b.system.entry.js → p-6db1e029.system.entry.js} +2 -2
  338. package/dist/pine-core/p-6db1e029.system.entry.js.map +1 -0
  339. package/dist/pine-core/{p-8cb99f2f.entry.js → p-6f4a6d0b.entry.js} +2 -2
  340. package/dist/pine-core/p-7004d1ea.system.entry.js +2 -0
  341. package/dist/pine-core/p-7004d1ea.system.entry.js.map +1 -0
  342. package/dist/pine-core/{p-c1115d78.system.entry.js → p-71169b66.system.entry.js} +2 -2
  343. package/dist/pine-core/p-71169b66.system.entry.js.map +1 -0
  344. package/dist/pine-core/{p-3e6229cc.entry.js → p-72053224.entry.js} +2 -2
  345. package/dist/pine-core/{p-14b424ab.system.entry.js → p-72b05928.system.entry.js} +2 -2
  346. package/dist/pine-core/{p-1858ad6d.system.entry.js → p-73158adf.system.entry.js} +2 -2
  347. package/dist/pine-core/{p-1858ad6d.system.entry.js.map → p-73158adf.system.entry.js.map} +1 -1
  348. package/dist/pine-core/p-77336705.entry.js +2 -0
  349. package/dist/pine-core/p-77336705.entry.js.map +1 -0
  350. package/dist/pine-core/{p-0dbb2ae9.entry.js → p-79e2782b.entry.js} +2 -2
  351. package/dist/pine-core/p-7cb4f0de.entry.js +2 -0
  352. package/dist/pine-core/p-7cb4f0de.entry.js.map +1 -0
  353. package/dist/pine-core/{p-aafb6e06.system.entry.js → p-8722865f.system.entry.js} +2 -2
  354. package/dist/pine-core/p-8722865f.system.entry.js.map +1 -0
  355. package/dist/pine-core/p-884b9ae6.system.entry.js +2 -0
  356. package/dist/pine-core/p-884b9ae6.system.entry.js.map +1 -0
  357. package/dist/pine-core/p-8999b63d.system.entry.js +2 -0
  358. package/dist/pine-core/p-8999b63d.system.entry.js.map +1 -0
  359. package/dist/pine-core/{p-89d9f273.system.entry.js → p-8ab7f0d7.system.entry.js} +3 -3
  360. package/dist/pine-core/{p-b956922a.entry.js → p-8d7abc83.entry.js} +2 -2
  361. package/dist/pine-core/{p-2aad0209.system.entry.js → p-92c52409.system.entry.js} +2 -2
  362. package/dist/pine-core/p-96a89cd5.system.entry.js +2 -0
  363. package/dist/pine-core/p-96a89cd5.system.entry.js.map +1 -0
  364. package/dist/pine-core/{p-c1f5148f.entry.js → p-98fe56d9.entry.js} +2 -2
  365. package/dist/pine-core/{p-B4ww2WM0.system.js.map → p-B1FQkx7R.system.js.map} +1 -1
  366. package/dist/pine-core/{p-CbDQeXQ4.system.js.map → p-B1fiSdbt.system.js.map} +1 -1
  367. package/dist/pine-core/{p-DiBM9O5Q.system.js → p-BEn3hirk.system.js} +1 -1
  368. package/dist/pine-core/p-BEn3hirk.system.js.map +1 -0
  369. package/dist/pine-core/p-BKFboaI5.system.js.map +1 -0
  370. package/dist/pine-core/p-BOHu_LEs.system.js.map +1 -0
  371. package/dist/pine-core/p-BOmQOnQe.system.js +2 -0
  372. package/dist/pine-core/{p-ZCkmy1Gu.system.js.map → p-BOmQOnQe.system.js.map} +1 -1
  373. package/dist/pine-core/p-BRygGju8.system.js.map +1 -0
  374. package/dist/pine-core/{p-REBgf8JA.system.js.map → p-BVKCNX0X.system.js.map} +1 -1
  375. package/dist/pine-core/{p-DKuFjXiD.system.js.map → p-CCQUgOoR.system.js.map} +1 -1
  376. package/dist/pine-core/{p-BCZ4LK15.system.js.map → p-CD_nPb2F.system.js.map} +1 -1
  377. package/dist/pine-core/{p-DMNp4slx.system.js.map → p-CE6b_LzB.system.js.map} +1 -1
  378. package/dist/pine-core/p-CJT--ZXC.system.js.map +1 -0
  379. package/dist/pine-core/{p-DRqkTTfb.system.js.map → p-CLoi4eKt.system.js.map} +1 -1
  380. package/dist/pine-core/{p-B0PUl1_1.system.js.map → p-CQ8f8GnD.system.js.map} +1 -1
  381. package/dist/pine-core/{p-C3lnYhcV.system.js.map → p-CWdEolqa.system.js.map} +1 -1
  382. package/dist/pine-core/{p-BY7O1nGC.system.js.map → p-CcXaBX2A.system.js.map} +1 -1
  383. package/dist/pine-core/p-CgyVIfOY.system.js.map +1 -0
  384. package/dist/pine-core/{p-pm8ElBzm.system.js.map → p-Cmzqpibo.system.js.map} +1 -1
  385. package/dist/pine-core/{p-DQnK6lQ2.system.js.map → p-CpdNWpfd.system.js.map} +1 -1
  386. package/dist/pine-core/{p-CoHBlcHu.system.js.map → p-CqK-uhv8.system.js.map} +1 -1
  387. package/dist/pine-core/{p-KkT5zjJU.system.js.map → p-D05FrqXr.system.js.map} +1 -1
  388. package/dist/pine-core/{p-BdBU6s5P.system.js.map → p-D9_z2w3q.system.js.map} +1 -1
  389. package/dist/pine-core/{p-B_c-HOvq.system.js.map → p-DAwJ242E.system.js.map} +1 -1
  390. package/dist/pine-core/{p-CNOeJ6ra.system.js.map → p-DHmJZxQk.system.js.map} +1 -1
  391. package/dist/pine-core/p-DJekRkSL.system.js.map +1 -0
  392. package/dist/pine-core/{p-lMetQ5Q0.system.js.map → p-DNYl_6t_.system.js.map} +1 -1
  393. package/dist/pine-core/p-DbQzNDdQ.js +2 -0
  394. package/dist/pine-core/{p-D_FwyeSw.js.map → p-DbQzNDdQ.js.map} +1 -1
  395. package/dist/pine-core/p-De9tROL-.system.js +1 -1
  396. package/dist/pine-core/{p-PgQPKVDh.system.js.map → p-Df_3qA_L.system.js.map} +1 -1
  397. package/dist/pine-core/{p-DCdSlcTO.system.js.map → p-Dh7jcLgJ.system.js.map} +1 -1
  398. package/dist/pine-core/{p-CzVv99mW.js → p-DrJ5r5Pu.js} +1 -1
  399. package/dist/pine-core/p-DrJ5r5Pu.js.map +1 -0
  400. package/dist/pine-core/p-Dt10r3RZ.system.js.map +1 -0
  401. package/dist/pine-core/p-IG5YumI3.system.js.map +1 -0
  402. package/dist/pine-core/{p-C5Wo1bN2.system.js.map → p-IIl2cTlj.system.js.map} +1 -1
  403. package/dist/pine-core/p-IhWWc2L_.system.js.map +1 -0
  404. package/dist/pine-core/{p-EytFbMH4.system.js.map → p-Kj_j7PHx.system.js.map} +1 -1
  405. package/dist/pine-core/p-MBv7PsKc.system.js.map +1 -0
  406. package/dist/pine-core/{p-CG_aggl0.system.js.map → p-UsEwlBJ0.system.js.map} +1 -1
  407. package/dist/pine-core/{p-DQ-QGnGf.system.js.map → p-_E9ZEzfO.system.js.map} +1 -1
  408. package/dist/pine-core/{p-3f83d4c4.system.entry.js → p-a04556e4.system.entry.js} +2 -2
  409. package/dist/pine-core/{p-0199e3e9.system.entry.js → p-a1b51557.system.entry.js} +2 -2
  410. package/dist/pine-core/{p-51e463bf.entry.js → p-a24c46e4.entry.js} +2 -2
  411. package/dist/pine-core/{p-9860d0a8.system.entry.js → p-aa645f28.system.entry.js} +2 -2
  412. package/dist/pine-core/p-ac37cf0d.entry.js +2 -0
  413. package/dist/pine-core/p-ac37cf0d.entry.js.map +1 -0
  414. package/dist/pine-core/{p-c16d01cc.entry.js → p-b6ea3332.entry.js} +2 -2
  415. package/dist/pine-core/{p-c721e8cf.entry.js → p-ba187a35.entry.js} +2 -2
  416. package/dist/pine-core/p-bb8ef74a.system.entry.js +2 -0
  417. package/dist/pine-core/p-be939cb0.entry.js +2 -0
  418. package/dist/pine-core/p-be939cb0.entry.js.map +1 -0
  419. package/dist/pine-core/{p-b2b405ca.system.entry.js → p-c13ef6a7.system.entry.js} +2 -2
  420. package/dist/pine-core/p-c2ffb466.system.entry.js +2 -0
  421. package/dist/pine-core/{p-4a658a86.system.entry.js → p-c4d6fe50.system.entry.js} +2 -2
  422. package/dist/pine-core/p-c4d6fe50.system.entry.js.map +1 -0
  423. package/dist/pine-core/{p-978e722a.entry.js → p-c6badcf8.entry.js} +2 -2
  424. package/dist/pine-core/{p-064e3d73.entry.js → p-c8122bea.entry.js} +2 -2
  425. package/dist/pine-core/p-cd785026.system.entry.js +2 -0
  426. package/dist/pine-core/{p-c3f32f26.system.entry.js → p-d714f68f.system.entry.js} +2 -2
  427. package/dist/pine-core/p-da367b5e.system.entry.js +2 -0
  428. package/dist/pine-core/p-da367b5e.system.entry.js.map +1 -0
  429. package/dist/pine-core/{p-6bd5811c.system.entry.js → p-deb8a499.system.entry.js} +2 -2
  430. package/dist/pine-core/p-deb8a499.system.entry.js.map +1 -0
  431. package/dist/pine-core/{p-6d601fc2.system.entry.js → p-dfc5ab34.system.entry.js} +2 -2
  432. package/dist/pine-core/{p-f35a5afa.entry.js → p-e2887e78.entry.js} +2 -2
  433. package/dist/pine-core/p-e5ca5b8e.entry.js +2 -0
  434. package/dist/pine-core/p-e5ca5b8e.entry.js.map +1 -0
  435. package/dist/pine-core/{p-55bf6be2.system.entry.js → p-e65a7d1c.system.entry.js} +2 -2
  436. package/dist/pine-core/{p-ffe867ef.system.entry.js → p-e89cb1f2.system.entry.js} +2 -2
  437. package/dist/pine-core/p-efa788ea.entry.js +2 -0
  438. package/dist/pine-core/{p-280a0ec1.system.entry.js → p-f55b9f90.system.entry.js} +2 -2
  439. package/dist/pine-core/{p-1a5e79af.entry.js → p-f583e5d4.entry.js} +2 -2
  440. package/dist/pine-core/p-f583e5d4.entry.js.map +1 -0
  441. package/dist/pine-core/{p-6fd385ec.entry.js → p-f880adaa.entry.js} +2 -2
  442. package/dist/pine-core/{p-63ef55dd.entry.js → p-fb4058e6.entry.js} +2 -2
  443. package/dist/pine-core/p-fd091234.system.entry.js +2 -0
  444. package/dist/pine-core/p-fd091234.system.entry.js.map +1 -0
  445. package/dist/pine-core/{p-qjvXmIGJ.system.js.map → p-m6UZWRsP.system.js.map} +1 -1
  446. package/dist/pine-core/{p-DvZWnvRb.system.js.map → p-pQqXEKPh.system.js.map} +1 -1
  447. package/dist/pine-core/pds-box.entry.esm.js.map +1 -1
  448. package/dist/pine-core/pds-button.entry.esm.js.map +1 -1
  449. package/dist/pine-core/pds-input.entry.esm.js.map +1 -1
  450. package/dist/pine-core/pds-loader.entry.esm.js.map +1 -1
  451. package/dist/pine-core/pds-select.entry.esm.js.map +1 -1
  452. package/dist/pine-core/pds-tab.entry.esm.js.map +1 -1
  453. package/dist/pine-core/pds-table-body.entry.esm.js.map +1 -1
  454. package/dist/pine-core/pds-table-cell.entry.esm.js.map +1 -1
  455. package/dist/pine-core/pds-table-head-cell.entry.esm.js.map +1 -1
  456. package/dist/pine-core/pds-table-head.entry.esm.js.map +1 -1
  457. package/dist/pine-core/pds-table-row.entry.esm.js.map +1 -1
  458. package/dist/pine-core/pds-table.entry.esm.js.map +1 -1
  459. package/dist/pine-core/pds-textarea.entry.esm.js.map +1 -1
  460. package/dist/pine-core/pds-tooltip.entry.esm.js.map +1 -1
  461. package/dist/pine-core/pine-core.css +1 -1
  462. package/dist/pine-core/pine-core.esm.js +1 -1
  463. package/dist/types/components/pds-box/pds-box.d.ts +5 -0
  464. package/dist/types/components/pds-button/pds-button.d.ts +1 -0
  465. package/dist/types/components/pds-input/pds-input.d.ts +5 -0
  466. package/dist/types/components/pds-loader/pds-loader.d.ts +1 -0
  467. package/dist/types/components/pds-select/pds-select.d.ts +2 -1
  468. package/dist/types/components/pds-table/pds-table-cell/pds-table-cell.d.ts +15 -0
  469. package/dist/types/components/pds-table/pds-table-head-cell/pds-table-head-cell.d.ts +15 -0
  470. package/dist/types/components/pds-table/pds-table.d.ts +24 -0
  471. package/dist/types/components/pds-textarea/pds-textarea.d.ts +6 -1
  472. package/dist/types/components/pds-tooltip/pds-tooltip.d.ts +9 -12
  473. package/dist/types/components.d.ts +48 -28
  474. package/hydrate/index.js +561 -228
  475. package/hydrate/index.mjs +561 -228
  476. package/package.json +2 -2
  477. package/dist/cjs/index-BfqrB2cC.js.map +0 -1
  478. package/dist/esm/index-CzVv99mW.js.map +0 -1
  479. package/dist/esm-es5/floating-ui.dom-D_FwyeSw.js +0 -2
  480. package/dist/esm-es5/index-CzVv99mW.js.map +0 -1
  481. package/dist/pine-core/p-042ee55c.entry.js.map +0 -1
  482. package/dist/pine-core/p-13ac0852.entry.js +0 -2
  483. package/dist/pine-core/p-13ac0852.entry.js.map +0 -1
  484. package/dist/pine-core/p-1a5e79af.entry.js.map +0 -1
  485. package/dist/pine-core/p-209b1d69.entry.js.map +0 -1
  486. package/dist/pine-core/p-276a6a8b.system.entry.js.map +0 -1
  487. package/dist/pine-core/p-2fb60757.system.entry.js +0 -2
  488. package/dist/pine-core/p-2fb60757.system.entry.js.map +0 -1
  489. package/dist/pine-core/p-33016dd0.entry.js +0 -2
  490. package/dist/pine-core/p-380d1056.entry.js.map +0 -1
  491. package/dist/pine-core/p-3EWr6ZgL.system.js.map +0 -1
  492. package/dist/pine-core/p-41bf807f.system.entry.js +0 -2
  493. package/dist/pine-core/p-41bf807f.system.entry.js.map +0 -1
  494. package/dist/pine-core/p-4a658a86.system.entry.js.map +0 -1
  495. package/dist/pine-core/p-6438a29d.system.entry.js +0 -2
  496. package/dist/pine-core/p-65275835.system.entry.js.map +0 -1
  497. package/dist/pine-core/p-6bd5811c.system.entry.js.map +0 -1
  498. package/dist/pine-core/p-7eb4ac7c.system.entry.js +0 -2
  499. package/dist/pine-core/p-7eb4ac7c.system.entry.js.map +0 -1
  500. package/dist/pine-core/p-8896d43a.entry.js.map +0 -1
  501. package/dist/pine-core/p-91c6bd68.entry.js +0 -2
  502. package/dist/pine-core/p-91c6bd68.entry.js.map +0 -1
  503. package/dist/pine-core/p-94982c57.entry.js +0 -2
  504. package/dist/pine-core/p-94982c57.entry.js.map +0 -1
  505. package/dist/pine-core/p-B6IFMveo.system.js.map +0 -1
  506. package/dist/pine-core/p-BEky6idI.system.js.map +0 -1
  507. package/dist/pine-core/p-BmoX08WO.system.js.map +0 -1
  508. package/dist/pine-core/p-Bw9e5h_G.system.js.map +0 -1
  509. package/dist/pine-core/p-C36pvE-A.system.js.map +0 -1
  510. package/dist/pine-core/p-CMLxdmO2.system.js.map +0 -1
  511. package/dist/pine-core/p-CXLBzkzl.system.js.map +0 -1
  512. package/dist/pine-core/p-CmJBNVRO.system.js.map +0 -1
  513. package/dist/pine-core/p-CzVv99mW.js.map +0 -1
  514. package/dist/pine-core/p-D_FwyeSw.js +0 -2
  515. package/dist/pine-core/p-DdEbUZw3.system.js.map +0 -1
  516. package/dist/pine-core/p-DiBM9O5Q.system.js.map +0 -1
  517. package/dist/pine-core/p-Rj3B0bRw.system.js.map +0 -1
  518. package/dist/pine-core/p-ZCkmy1Gu.system.js +0 -2
  519. package/dist/pine-core/p-a7204f01.entry.js +0 -2
  520. package/dist/pine-core/p-a7204f01.entry.js.map +0 -1
  521. package/dist/pine-core/p-a7cb24c3.system.entry.js +0 -2
  522. package/dist/pine-core/p-a7cb24c3.system.entry.js.map +0 -1
  523. package/dist/pine-core/p-aafb6e06.system.entry.js.map +0 -1
  524. package/dist/pine-core/p-adf2449e.system.entry.js +0 -2
  525. package/dist/pine-core/p-adf2449e.system.entry.js.map +0 -1
  526. package/dist/pine-core/p-b649d711.entry.js +0 -2
  527. package/dist/pine-core/p-b649d711.entry.js.map +0 -1
  528. package/dist/pine-core/p-b9fe17b8.system.entry.js +0 -2
  529. package/dist/pine-core/p-b9fe17b8.system.entry.js.map +0 -1
  530. package/dist/pine-core/p-c1115d78.system.entry.js.map +0 -1
  531. package/dist/pine-core/p-c652847a.entry.js +0 -2
  532. package/dist/pine-core/p-c82c277f.entry.js +0 -2
  533. package/dist/pine-core/p-c82c277f.entry.js.map +0 -1
  534. package/dist/pine-core/p-c82d0a99.entry.js +0 -2
  535. package/dist/pine-core/p-ce0d9f05.system.entry.js +0 -2
  536. package/dist/pine-core/p-cf5506db.system.entry.js +0 -2
  537. package/dist/pine-core/p-d6d87fbc.system.entry.js +0 -2
  538. package/dist/pine-core/p-e05135c5.entry.js +0 -2
  539. package/dist/pine-core/p-e30601a6.entry.js +0 -2
  540. package/dist/pine-core/p-e30601a6.entry.js.map +0 -1
  541. /package/dist/pine-core/{p-19d08886.system.entry.js.map → p-023d8b71.system.entry.js.map} +0 -0
  542. /package/dist/pine-core/{p-6438a29d.system.entry.js.map → p-0485aa93.system.entry.js.map} +0 -0
  543. /package/dist/pine-core/{p-8096b988.system.entry.js.map → p-14a52961.system.entry.js.map} +0 -0
  544. /package/dist/pine-core/{p-4066a9c0.system.entry.js.map → p-2186e5d4.system.entry.js.map} +0 -0
  545. /package/dist/pine-core/{p-e05135c5.entry.js.map → p-232a2043.entry.js.map} +0 -0
  546. /package/dist/pine-core/{p-c7075f11.entry.js.map → p-25190921.entry.js.map} +0 -0
  547. /package/dist/pine-core/{p-487552a9.system.entry.js.map → p-297afc49.system.entry.js.map} +0 -0
  548. /package/dist/pine-core/{p-03d17841.system.entry.js.map → p-2e19f167.system.entry.js.map} +0 -0
  549. /package/dist/pine-core/{p-a2d16624.entry.js.map → p-349a8869.entry.js.map} +0 -0
  550. /package/dist/pine-core/{p-0a4fc9c7.entry.js.map → p-47670150.entry.js.map} +0 -0
  551. /package/dist/pine-core/{p-c1a1475e.entry.js.map → p-4deb7b8c.entry.js.map} +0 -0
  552. /package/dist/pine-core/{p-7c867f1b.entry.js.map → p-503cab1f.entry.js.map} +0 -0
  553. /package/dist/pine-core/{p-4e5b9d19.entry.js.map → p-52d37cc1.entry.js.map} +0 -0
  554. /package/dist/pine-core/{p-f9bd0bc2.system.entry.js.map → p-54183d70.system.entry.js.map} +0 -0
  555. /package/dist/pine-core/{p-33016dd0.entry.js.map → p-5708f95a.entry.js.map} +0 -0
  556. /package/dist/pine-core/{p-f647c1af.system.entry.js.map → p-5aed29fe.system.entry.js.map} +0 -0
  557. /package/dist/pine-core/{p-d08ecd18.system.entry.js.map → p-5da82e8c.system.entry.js.map} +0 -0
  558. /package/dist/pine-core/{p-ed94947b.entry.js.map → p-5e8badb9.entry.js.map} +0 -0
  559. /package/dist/pine-core/{p-126197e5.entry.js.map → p-651861ff.entry.js.map} +0 -0
  560. /package/dist/pine-core/{p-8cb99f2f.entry.js.map → p-6f4a6d0b.entry.js.map} +0 -0
  561. /package/dist/pine-core/{p-3e6229cc.entry.js.map → p-72053224.entry.js.map} +0 -0
  562. /package/dist/pine-core/{p-14b424ab.system.entry.js.map → p-72b05928.system.entry.js.map} +0 -0
  563. /package/dist/pine-core/{p-0dbb2ae9.entry.js.map → p-79e2782b.entry.js.map} +0 -0
  564. /package/dist/pine-core/{p-89d9f273.system.entry.js.map → p-8ab7f0d7.system.entry.js.map} +0 -0
  565. /package/dist/pine-core/{p-b956922a.entry.js.map → p-8d7abc83.entry.js.map} +0 -0
  566. /package/dist/pine-core/{p-2aad0209.system.entry.js.map → p-92c52409.system.entry.js.map} +0 -0
  567. /package/dist/pine-core/{p-c1f5148f.entry.js.map → p-98fe56d9.entry.js.map} +0 -0
  568. /package/dist/pine-core/{p-3f83d4c4.system.entry.js.map → p-a04556e4.system.entry.js.map} +0 -0
  569. /package/dist/pine-core/{p-0199e3e9.system.entry.js.map → p-a1b51557.system.entry.js.map} +0 -0
  570. /package/dist/pine-core/{p-51e463bf.entry.js.map → p-a24c46e4.entry.js.map} +0 -0
  571. /package/dist/pine-core/{p-9860d0a8.system.entry.js.map → p-aa645f28.system.entry.js.map} +0 -0
  572. /package/dist/pine-core/{p-c16d01cc.entry.js.map → p-b6ea3332.entry.js.map} +0 -0
  573. /package/dist/pine-core/{p-c721e8cf.entry.js.map → p-ba187a35.entry.js.map} +0 -0
  574. /package/dist/pine-core/{p-cf5506db.system.entry.js.map → p-bb8ef74a.system.entry.js.map} +0 -0
  575. /package/dist/pine-core/{p-b2b405ca.system.entry.js.map → p-c13ef6a7.system.entry.js.map} +0 -0
  576. /package/dist/pine-core/{p-ce0d9f05.system.entry.js.map → p-c2ffb466.system.entry.js.map} +0 -0
  577. /package/dist/pine-core/{p-978e722a.entry.js.map → p-c6badcf8.entry.js.map} +0 -0
  578. /package/dist/pine-core/{p-064e3d73.entry.js.map → p-c8122bea.entry.js.map} +0 -0
  579. /package/dist/pine-core/{p-d6d87fbc.system.entry.js.map → p-cd785026.system.entry.js.map} +0 -0
  580. /package/dist/pine-core/{p-c3f32f26.system.entry.js.map → p-d714f68f.system.entry.js.map} +0 -0
  581. /package/dist/pine-core/{p-6d601fc2.system.entry.js.map → p-dfc5ab34.system.entry.js.map} +0 -0
  582. /package/dist/pine-core/{p-f35a5afa.entry.js.map → p-e2887e78.entry.js.map} +0 -0
  583. /package/dist/pine-core/{p-55bf6be2.system.entry.js.map → p-e65a7d1c.system.entry.js.map} +0 -0
  584. /package/dist/pine-core/{p-ffe867ef.system.entry.js.map → p-e89cb1f2.system.entry.js.map} +0 -0
  585. /package/dist/pine-core/{p-c82d0a99.entry.js.map → p-efa788ea.entry.js.map} +0 -0
  586. /package/dist/pine-core/{p-280a0ec1.system.entry.js.map → p-f55b9f90.system.entry.js.map} +0 -0
  587. /package/dist/pine-core/{p-6fd385ec.entry.js.map → p-f880adaa.entry.js.map} +0 -0
  588. /package/dist/pine-core/{p-63ef55dd.entry.js.map → p-fb4058e6.entry.js.map} +0 -0
@@ -1,91 +1,7 @@
1
1
  import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
2
+ import { c as computePosition, a as autoUpdate, o as offset, f as flip, s as shift } from './floating-ui.dom.js';
2
3
 
3
- const positionTooltip = ({ elem, elemPlacement, overlay, offset = 8 }) => {
4
- if (elem === null || overlay === null)
5
- return false;
6
- if (typeof elemPlacement !== 'string' || elemPlacement.trim() === '') {
7
- return false;
8
- }
9
- const rect = elem.getBoundingClientRect();
10
- const contentRect = overlay.getBoundingClientRect();
11
- // Reset styles
12
- overlay.style.top = '';
13
- overlay.style.left = '';
14
- overlay.style.right = '';
15
- overlay.style.bottom = '';
16
- overlay.style.transform = '';
17
- // Use fixed positioning for portal overlays
18
- overlay.style.position = 'fixed';
19
- // Detect if the trigger is a span with only text or a text node
20
- let isTextTrigger = false;
21
- if (elem.childNodes.length === 1 && elem.childNodes[0].nodeType === Node.TEXT_NODE) {
22
- isTextTrigger = true;
23
- }
24
- else if (elem.childNodes.length === 1 && elem.childNodes[0].nodeType === Node.ELEMENT_NODE) {
25
- const child = elem.childNodes[0];
26
- if (child.tagName === 'SPAN' && child.childNodes.length === 1 && child.childNodes[0].nodeType === Node.TEXT_NODE) {
27
- isTextTrigger = true;
28
- }
29
- }
30
- switch (true) {
31
- case elemPlacement.includes('right'):
32
- if (isTextTrigger) {
33
- // Align to the bottom of the trigger for text triggers
34
- overlay.style.top = `${rect.bottom - contentRect.height / 2}px`;
35
- }
36
- else {
37
- overlay.style.top = `${rect.top + rect.height / 2 - contentRect.height / 2}px`;
38
- }
39
- overlay.style.left = `${rect.right + offset}px`;
40
- if (elemPlacement.includes('start')) {
41
- overlay.style.top = `${rect.top}px`;
42
- }
43
- if (elemPlacement.includes('end')) {
44
- overlay.style.top = `${rect.bottom - contentRect.height}px`;
45
- }
46
- break;
47
- case elemPlacement.includes('left'):
48
- if (isTextTrigger) {
49
- overlay.style.top = `${rect.bottom - contentRect.height / 2}px`;
50
- }
51
- else {
52
- overlay.style.top = `${rect.top + rect.height / 2 - contentRect.height / 2}px`;
53
- }
54
- overlay.style.left = `${rect.left - contentRect.width - offset}px`;
55
- if (elemPlacement.includes('start')) {
56
- overlay.style.top = `${rect.top}px`;
57
- }
58
- if (elemPlacement.includes('end')) {
59
- overlay.style.top = `${rect.bottom - contentRect.height}px`;
60
- }
61
- break;
62
- case elemPlacement.includes('bottom'):
63
- overlay.style.top = `${rect.bottom + offset}px`;
64
- overlay.style.left = `${rect.left + rect.width / 2 - contentRect.width / 2}px`;
65
- if (elemPlacement.includes('start')) {
66
- overlay.style.left = `${rect.left}px`;
67
- }
68
- if (elemPlacement.includes('end')) {
69
- overlay.style.left = `${rect.right - contentRect.width}px`;
70
- overlay.style.right = 'initial';
71
- }
72
- break;
73
- case elemPlacement.includes('top'):
74
- overlay.style.top = `${rect.top - contentRect.height - offset}px`;
75
- overlay.style.left = `${rect.left + rect.width / 2 - contentRect.width / 2}px`;
76
- if (elemPlacement.includes('start')) {
77
- overlay.style.left = `${rect.left}px`;
78
- }
79
- if (elemPlacement.includes('end')) {
80
- overlay.style.left = `${rect.right - contentRect.width}px`;
81
- overlay.style.right = 'initial';
82
- }
83
- break;
84
- }
85
- return true;
86
- };
87
-
88
- const pdsTooltipCss = ".pds-tooltip{--tooltip-border-width-arrow-down:var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow) 0;--tooltip-border-width-arrow-left:var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow) 0;--tooltip-border-width-arrow-right:var(--tooltip-sizing-arrow) 0 var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow);--tooltip-border-width-arrow-up:0 var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow);--tooltip-sizing-arrow:6px;--tooltip-sizing-arrow-offset:14px;--tooltip-dimension-max-width:320px}.pds-tooltip__content{background-color:var(--pine-color-primary);border-radius:calc(var(--pine-dimension-xs) * 1.25);-webkit-box-shadow:var(--pine-box-shadow);box-shadow:var(--pine-box-shadow);color:var(--pine-color-text-primary);max-width:var(--tooltip-dimension-max-width);opacity:0;padding:var(--pine-dimension-xs) calc(var(--pine-dimension-md) / 2);position:absolute;visibility:hidden;width:-webkit-max-content;width:-moz-max-content;width:max-content}.pds-tooltip--is-open .pds-tooltip__content{opacity:1;visibility:visible;z-index:1}.pds-tooltip.pds-tooltip--has-html-content .pds-tooltip__content{width:auto}.pds-tooltip__content::after{border-color:transparent;border-right-color:transparent;border-style:solid;border-width:var(--tooltip-border-width-arrow-left);content:\"\";height:0;position:absolute;width:0}.pds-tooltip--right .pds-tooltip__content::after{border-inline-end-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-left);left:calc(var(--tooltip-sizing-arrow) * -1);top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.pds-tooltip--right-end .pds-tooltip__content::after{border-inline-end-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-left);bottom:var(--tooltip-sizing-arrow-offset);left:calc(var(--tooltip-sizing-arrow) * -1);top:initial}.pds-tooltip--right-start .pds-tooltip__content::after{border-inline-end-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-left);left:calc(var(--tooltip-sizing-arrow) * -1);top:var(--tooltip-sizing-arrow-offset)}.pds-tooltip--top .pds-tooltip__content::after{border-block-start-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-down);bottom:calc(var(--tooltip-sizing-arrow) * -1);left:50%;top:initial;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.pds-tooltip--top-start .pds-tooltip__content::after{border-block-start-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-down);bottom:calc(var(--tooltip-sizing-arrow) * -1);left:var(--tooltip-sizing-arrow-offset);top:initial}.pds-tooltip--top-end .pds-tooltip__content::after{border-block-start-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-down);bottom:calc(var(--tooltip-sizing-arrow) * -1);left:initial;right:var(--tooltip-sizing-arrow-offset);top:initial}.pds-tooltip--left .pds-tooltip__content::after{border-inline-start-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-right);left:initial;right:calc(var(--tooltip-sizing-arrow) * -1);top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.pds-tooltip--left-end .pds-tooltip__content::after{border-inline-start-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-right);bottom:var(--tooltip-sizing-arrow-offset);left:initial;right:calc(var(--tooltip-sizing-arrow) * -1);top:initial}.pds-tooltip--left-start .pds-tooltip__content::after{border-inline-start-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-right);left:initial;right:calc(var(--tooltip-sizing-arrow) * -1);top:var(--tooltip-sizing-arrow-offset)}.pds-tooltip--bottom .pds-tooltip__content::after{border-block-end-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-up);left:50%;top:calc(var(--tooltip-sizing-arrow) * -1);-webkit-transform:translateX(-50%);transform:translateX(-50%)}.pds-tooltip--bottom-end .pds-tooltip__content::after{border-block-end-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-up);left:initial;right:var(--tooltip-sizing-arrow-offset);top:calc(var(--tooltip-sizing-arrow) * -1)}.pds-tooltip--bottom-start .pds-tooltip__content::after{border-block-end-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-up);left:var(--tooltip-sizing-arrow-offset);top:calc(var(--tooltip-sizing-arrow) * -1)}.pds-tooltip--no-arrow .pds-tooltip__content::after{border-width:0}";
4
+ const pdsTooltipCss = ".pds-tooltip{--tooltip-border-width-arrow-down:var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow) 0;--tooltip-border-width-arrow-left:var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow) 0;--tooltip-border-width-arrow-right:var(--tooltip-sizing-arrow) 0 var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow);--tooltip-border-width-arrow-up:0 var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow);--tooltip-sizing-arrow:6px;--tooltip-sizing-arrow-offset:14px;--tooltip-dimension-max-width:320px}.pds-tooltip__content{background-color:var(--pine-color-primary);border-radius:calc(var(--pine-dimension-xs) * 1.25);-webkit-box-shadow:var(--pine-box-shadow);box-shadow:var(--pine-box-shadow);color:var(--pine-color-text-primary);max-width:var(--tooltip-dimension-max-width);opacity:0;padding:var(--pine-dimension-xs) calc(var(--pine-dimension-md) / 2);visibility:hidden;width:-webkit-max-content;width:-moz-max-content;width:max-content}.pds-tooltip--is-open .pds-tooltip__content{opacity:1;visibility:visible;z-index:1}.pds-tooltip.pds-tooltip--has-html-content .pds-tooltip__content{width:auto}.pds-tooltip__content::after{border-color:transparent;border-right-color:transparent;border-style:solid;border-width:var(--tooltip-border-width-arrow-left);content:\"\";height:0;position:absolute;width:0}.pds-tooltip--right .pds-tooltip__content::after{border-inline-end-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-left);left:calc(var(--tooltip-sizing-arrow) * -1);top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.pds-tooltip--right-end .pds-tooltip__content::after{border-inline-end-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-left);bottom:var(--tooltip-sizing-arrow-offset);left:calc(var(--tooltip-sizing-arrow) * -1);top:initial}.pds-tooltip--right-start .pds-tooltip__content::after{border-inline-end-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-left);left:calc(var(--tooltip-sizing-arrow) * -1);top:var(--tooltip-sizing-arrow-offset)}.pds-tooltip--top .pds-tooltip__content::after{border-block-start-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-down);bottom:calc(var(--tooltip-sizing-arrow) * -1);left:50%;top:initial;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.pds-tooltip--top-start .pds-tooltip__content::after{border-block-start-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-down);bottom:calc(var(--tooltip-sizing-arrow) * -1);left:var(--tooltip-sizing-arrow-offset);top:initial}.pds-tooltip--top-end .pds-tooltip__content::after{border-block-start-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-down);bottom:calc(var(--tooltip-sizing-arrow) * -1);left:initial;right:var(--tooltip-sizing-arrow-offset);top:initial}.pds-tooltip--left .pds-tooltip__content::after{border-inline-start-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-right);left:initial;right:calc(var(--tooltip-sizing-arrow) * -1);top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.pds-tooltip--left-end .pds-tooltip__content::after{border-inline-start-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-right);bottom:var(--tooltip-sizing-arrow-offset);left:initial;right:calc(var(--tooltip-sizing-arrow) * -1);top:initial}.pds-tooltip--left-start .pds-tooltip__content::after{border-inline-start-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-right);left:initial;right:calc(var(--tooltip-sizing-arrow) * -1);top:var(--tooltip-sizing-arrow-offset)}.pds-tooltip--bottom .pds-tooltip__content::after{border-block-end-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-up);left:50%;top:calc(var(--tooltip-sizing-arrow) * -1);-webkit-transform:translateX(-50%);transform:translateX(-50%)}.pds-tooltip--bottom-end .pds-tooltip__content::after{border-block-end-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-up);left:initial;right:var(--tooltip-sizing-arrow-offset);top:calc(var(--tooltip-sizing-arrow) * -1)}.pds-tooltip--bottom-start .pds-tooltip__content::after{border-block-end-color:var(--pine-color-primary);border-width:var(--tooltip-border-width-arrow-up);left:var(--tooltip-sizing-arrow-offset);top:calc(var(--tooltip-sizing-arrow) * -1)}.pds-tooltip--no-arrow .pds-tooltip__content::after{border-width:0}";
89
5
 
90
6
  const PdsTooltip$1 = /*@__PURE__*/ proxyCustomElement(class PdsTooltip extends HTMLElement {
91
7
  constructor() {
@@ -97,17 +13,13 @@ const PdsTooltip$1 = /*@__PURE__*/ proxyCustomElement(class PdsTooltip extends H
97
13
  */
98
14
  this._isInteractiveOpen = false;
99
15
  this.portalEl = null;
16
+ this.resolvedPlacement = 'right';
100
17
  this.triggerEl = null;
101
18
  this.contentDiv = null;
102
19
  this.slotMutationObserver = null;
103
- this.overlayResizeObserver = null;
104
20
  this.currentPathname = '';
105
21
  this.pathnameCheckInterval = null;
106
- /**
107
- * Determines when the tooltip is open
108
- * @defaultValue false
109
- */
110
- this.isOpen = false;
22
+ this.stopAutoUpdate = null;
111
23
  /**
112
24
  * Determines whether or not the tooltip has an arrow
113
25
  * @defaultValue true
@@ -154,17 +66,6 @@ const PdsTooltip$1 = /*@__PURE__*/ proxyCustomElement(class PdsTooltip extends H
154
66
  this.opened = false;
155
67
  this._isInteractiveOpen = false;
156
68
  };
157
- this.handleScroll = () => {
158
- if (this.opened) {
159
- if (!this._isInteractiveOpen) {
160
- this.repositionPortal();
161
- }
162
- else {
163
- this.hideTooltip();
164
- this._isInteractiveOpen = false;
165
- }
166
- }
167
- };
168
69
  this.handleSpaNavigation = () => {
169
70
  if (this.opened && !this._isInteractiveOpen) {
170
71
  return;
@@ -186,6 +87,7 @@ const PdsTooltip$1 = /*@__PURE__*/ proxyCustomElement(class PdsTooltip extends H
186
87
  }
187
88
  componentWillLoad() {
188
89
  this._isInteractiveOpen = false;
90
+ this.resolvedPlacement = this.placement;
189
91
  }
190
92
  componentDidLoad() {
191
93
  window.addEventListener('pageshow', this.handlePageShow);
@@ -201,12 +103,27 @@ const PdsTooltip$1 = /*@__PURE__*/ proxyCustomElement(class PdsTooltip extends H
201
103
  });
202
104
  this.slotMutationObserver.observe(contentSlotWrapper, { childList: true, subtree: false });
203
105
  }
204
- return () => {
205
- window.removeEventListener('pageshow', this.handlePageShow);
206
- if (this.slotMutationObserver !== null) {
207
- this.slotMutationObserver.disconnect();
208
- }
209
- };
106
+ // no return; Stencil ignores teardown functions here
107
+ }
108
+ disconnectedCallback() {
109
+ window.removeEventListener('pageshow', this.handlePageShow);
110
+ if (this.slotMutationObserver !== null) {
111
+ this.slotMutationObserver.disconnect();
112
+ this.slotMutationObserver = null;
113
+ }
114
+ // Ensure global listeners/intervals are removed if still present
115
+ if (this.portalEl !== null) {
116
+ this.removePortal();
117
+ }
118
+ if (this.pathnameCheckInterval !== null) {
119
+ clearInterval(this.pathnameCheckInterval);
120
+ this.pathnameCheckInterval = null;
121
+ }
122
+ // Ensure autoUpdate is stopped if still present
123
+ if (this.stopAutoUpdate !== null) {
124
+ this.stopAutoUpdate();
125
+ this.stopAutoUpdate = null;
126
+ }
210
127
  }
211
128
  componentDidRender() {
212
129
  if (this.opened && this.portalEl === null) {
@@ -215,6 +132,13 @@ const PdsTooltip$1 = /*@__PURE__*/ proxyCustomElement(class PdsTooltip extends H
215
132
  else if (!this.opened && this.portalEl !== null) {
216
133
  this.removePortal();
217
134
  }
135
+ // Update portal class when opened state changes
136
+ if (this.portalEl !== null) {
137
+ this.portalEl.className = `pds-tooltip pds-tooltip--${this.resolvedPlacement} ${this.htmlContent ? 'pds-tooltip--has-html-content' : ''} ${this.opened ? 'pds-tooltip--is-open' : ''} ${this.hasArrow ? '' : 'pds-tooltip--no-arrow'}`;
138
+ // Update ARIA attributes to stay in sync with visual open state
139
+ this.portalEl.setAttribute('aria-hidden', this.opened ? 'false' : 'true');
140
+ this.portalEl.setAttribute('aria-live', this.opened ? 'polite' : 'off');
141
+ }
218
142
  }
219
143
  /**
220
144
  * Shows the tooltip by enabling the opened property
@@ -251,37 +175,35 @@ const PdsTooltip$1 = /*@__PURE__*/ proxyCustomElement(class PdsTooltip extends H
251
175
  return positioningAnchor;
252
176
  }
253
177
  /**
254
- * Centralized method to calculate and apply the tooltip's position.
255
- * Uses the determined anchor element and the current content dimensions.
178
+ * Centralized method to calculate and apply the tooltip's position using floating UI.
179
+ * Uses the determined anchor element and applies computePosition with flip, offset, and shift.
256
180
  */
257
- repositionPortal() {
181
+ async repositionPortal() {
258
182
  const anchor = this.determinePositioningAnchor();
259
- if (anchor !== null && this.contentDiv !== null) {
260
- positionTooltip({ elem: anchor, elemPlacement: this.placement, overlay: this.contentDiv });
261
- const placementParts = this.placement.split('-');
262
- const primaryPlacement = placementParts[0];
263
- const isCardinalCenterPlacement = placementParts.length === 1;
264
- if (isCardinalCenterPlacement) {
183
+ if (anchor !== null && this.portalEl !== null) {
184
+ try {
185
+ const { x, y, placement: computedPlacement } = await computePosition(anchor, this.portalEl, {
186
+ placement: this.placement,
187
+ strategy: 'fixed',
188
+ middleware: [offset(8), flip(), shift({ padding: 5 })],
189
+ });
190
+ this.resolvedPlacement = computedPlacement;
191
+ Object.assign(this.portalEl.style, {
192
+ left: `${x}px`,
193
+ top: `${y}px`,
194
+ position: 'fixed',
195
+ });
196
+ // Update CSS classes to match the resolved placement
197
+ this.portalEl.className = `pds-tooltip pds-tooltip--${this.resolvedPlacement} ${this.htmlContent ? 'pds-tooltip--has-html-content' : ''} ${this.opened ? 'pds-tooltip--is-open' : ''} ${this.hasArrow ? '' : 'pds-tooltip--no-arrow'}`;
198
+ }
199
+ catch (error) {
200
+ console.warn('Failed to position tooltip:', error);
201
+ this.resolvedPlacement = this.placement; // Fallback to requested placement
202
+ // Fallback to basic positioning if floating UI fails
265
203
  const anchorRect = anchor.getBoundingClientRect();
266
- const overlayRect = this.contentDiv.getBoundingClientRect();
267
- if (primaryPlacement === 'left' || primaryPlacement === 'right') {
268
- const currentOverlayTop = parseFloat(this.contentDiv.style.top || '0');
269
- const anchorCenterY = anchorRect.top + (anchorRect.height / 2);
270
- const overlayCenterY = overlayRect.top + (overlayRect.height / 2);
271
- const adjustmentY = anchorCenterY - overlayCenterY;
272
- if (Math.abs(adjustmentY) > 0.5) {
273
- this.contentDiv.style.top = `${currentOverlayTop + adjustmentY}px`;
274
- }
275
- }
276
- else if (primaryPlacement === 'top' || primaryPlacement === 'bottom') {
277
- const currentOverlayLeft = parseFloat(this.contentDiv.style.left || '0');
278
- const anchorCenterX = anchorRect.left + (anchorRect.width / 2);
279
- const overlayCenterX = overlayRect.left + (overlayRect.width / 2);
280
- const adjustmentX = anchorCenterX - overlayCenterX;
281
- if (Math.abs(adjustmentX) > 0.5) {
282
- this.contentDiv.style.left = `${currentOverlayLeft + adjustmentX}px`;
283
- }
284
- }
204
+ this.portalEl.style.left = `${anchorRect.right + 8}px`;
205
+ this.portalEl.style.top = `${anchorRect.top}px`;
206
+ this.portalEl.style.position = 'fixed';
285
207
  }
286
208
  }
287
209
  }
@@ -289,11 +211,13 @@ const PdsTooltip$1 = /*@__PURE__*/ proxyCustomElement(class PdsTooltip extends H
289
211
  if (this.portalEl !== null)
290
212
  return;
291
213
  this.portalEl = document.createElement('div');
292
- this.portalEl.className = `pds-tooltip pds-tooltip--${this.placement} ${this.htmlContent ? 'pds-tooltip--has-html-content' : ''} ${this.opened ? 'pds-tooltip--is-open' : ''} ${this.hasArrow ? '' : 'pds-tooltip--no-arrow'}`;
214
+ this.portalEl.className = `pds-tooltip pds-tooltip--${this.resolvedPlacement} ${this.htmlContent ? 'pds-tooltip--has-html-content' : ''} ${this.opened ? 'pds-tooltip--is-open' : ''} ${this.hasArrow ? '' : 'pds-tooltip--no-arrow'}`;
293
215
  this.portalEl.style.position = 'fixed';
294
216
  this.portalEl.style.zIndex = '9999';
295
217
  if (this.portalEl.id === '') {
296
- this.portalEl.id = this.componentId || this.el.id || `pds-tooltip-portal-${PdsTooltip.instanceCounter++}`;
218
+ const suffix = PdsTooltip.instanceCounter++;
219
+ const baseId = this.componentId || this.el.id || 'pds-tooltip';
220
+ this.portalEl.id = `${baseId}-portal-${suffix}`;
297
221
  }
298
222
  if (this.portalEl.getAttribute('id') !== this.portalEl.id) {
299
223
  this.portalEl.setAttribute('id', this.portalEl.id);
@@ -306,8 +230,6 @@ const PdsTooltip$1 = /*@__PURE__*/ proxyCustomElement(class PdsTooltip extends H
306
230
  this.contentDiv.className = 'pds-tooltip__content';
307
231
  this.contentDiv.setAttribute('aria-hidden', this.opened ? 'false' : 'true');
308
232
  this.contentDiv.setAttribute('aria-live', this.opened ? 'polite' : 'off');
309
- this.contentDiv.setAttribute('role', 'tooltip');
310
- this.contentDiv.style.maxWidth = this.maxWidth;
311
233
  const contentSlotWrapper = this.el.querySelector('.pds-tooltip__content-slot-wrapper');
312
234
  const slottedContentContainer = contentSlotWrapper === null || contentSlotWrapper === void 0 ? void 0 : contentSlotWrapper.querySelector('[slot="content"]');
313
235
  let hasSlottedContent = false;
@@ -330,22 +252,23 @@ const PdsTooltip$1 = /*@__PURE__*/ proxyCustomElement(class PdsTooltip extends H
330
252
  }
331
253
  }
332
254
  }
333
- if (!hasSlottedContent) {
334
- if (this.content !== '') {
335
- this.contentDiv.textContent = this.content;
336
- }
255
+ if (!hasSlottedContent && typeof this.content === 'string' && this.content.trim() !== '') {
256
+ this.contentDiv.textContent = this.content;
337
257
  }
338
258
  this.portalEl.appendChild(this.contentDiv);
339
259
  document.body.appendChild(this.portalEl);
340
- this.repositionPortal();
341
- if (this.contentDiv !== null) {
342
- this.overlayResizeObserver = new ResizeObserver(() => {
343
- this.repositionPortal();
260
+ this.repositionPortal().catch(error => {
261
+ console.warn('Failed to position tooltip on creation:', error);
262
+ });
263
+ // Use Floating UI's autoUpdate to handle scroll/resize automatically
264
+ if (this.triggerEl && this.portalEl) {
265
+ this.stopAutoUpdate = autoUpdate(this.triggerEl, this.portalEl, () => {
266
+ this.repositionPortal().catch(error => {
267
+ console.warn('Failed to reposition tooltip on auto update:', error);
268
+ });
344
269
  });
345
- this.overlayResizeObserver.observe(this.contentDiv);
346
270
  }
347
- // Add global listeners when portal is created
348
- window.addEventListener('scroll', this.handleScroll, true);
271
+ // Keep only SPA navigation listeners (not handled by autoUpdate)
349
272
  window.addEventListener('popstate', this.handleSpaNavigation, true);
350
273
  window.addEventListener('hashchange', this.handleSpaNavigation, true);
351
274
  // Start pathname change detection
@@ -356,9 +279,10 @@ const PdsTooltip$1 = /*@__PURE__*/ proxyCustomElement(class PdsTooltip extends H
356
279
  }
357
280
  }
358
281
  removePortal() {
359
- if (this.overlayResizeObserver !== null && this.contentDiv !== null) {
360
- this.overlayResizeObserver.unobserve(this.contentDiv);
361
- this.overlayResizeObserver = null;
282
+ // Stop Floating UI's autoUpdate
283
+ if (this.stopAutoUpdate !== null) {
284
+ this.stopAutoUpdate();
285
+ this.stopAutoUpdate = null;
362
286
  }
363
287
  // Stop pathname change detection
364
288
  if (this.pathnameCheckInterval !== null) {
@@ -366,10 +290,19 @@ const PdsTooltip$1 = /*@__PURE__*/ proxyCustomElement(class PdsTooltip extends H
366
290
  this.pathnameCheckInterval = null;
367
291
  }
368
292
  if (this.portalEl !== null) {
369
- window.removeEventListener('scroll', this.handleScroll, true);
293
+ // Remove only SPA navigation listeners (scroll/resize handled by autoUpdate)
370
294
  window.removeEventListener('popstate', this.handleSpaNavigation, true);
371
295
  window.removeEventListener('hashchange', this.handleSpaNavigation, true);
372
- document.body.removeChild(this.portalEl);
296
+ // Safely remove portal from DOM
297
+ try {
298
+ if (this.portalEl.parentNode) {
299
+ this.portalEl.parentNode.removeChild(this.portalEl);
300
+ }
301
+ }
302
+ catch (error) {
303
+ // Portal might have already been removed by test cleanup
304
+ console.warn('Portal element could not be removed from DOM:', error);
305
+ }
373
306
  this.portalEl = null;
374
307
  }
375
308
  // Remove ARIA attribute from trigger
@@ -380,7 +313,9 @@ const PdsTooltip$1 = /*@__PURE__*/ proxyCustomElement(class PdsTooltip extends H
380
313
  }
381
314
  render() {
382
315
  const hostId = this.componentId || undefined;
383
- return (h(Host, { key: 'd0651080fc68d70a01d8c487d08a59f356f06e88', id: hostId, class: { 'pds-tooltip--is-open': this.opened } }, h("span", { key: '9f8c246c63a80c0d30c73687faa133b213c6bb63', class: "pds-tooltip__trigger", onMouseEnter: this.handleShow, onMouseLeave: this.handleHide, onFocus: this.handleShow, onBlur: this.handleHide, ref: el => this.triggerEl = el }, h("slot", { key: '2295b22ac9ec244f31410cd6a3764248100a1c48' })), h("div", { key: '7c8a59703b7c6ff43b0aa9352a869d59bca9b2b1', class: "pds-tooltip__content-slot-wrapper", style: { display: 'none' } }, h("slot", { key: '612dab7daf61394624177c45d47f542d551af52c', name: "content" }))));
316
+ return (h(Host, { key: '71fb8114cbf8db309eba0c19c0d9bd491d250157', id: hostId, class: { 'pds-tooltip--is-open': this.opened } }, h("span", { key: '9df511e60bc96c462a80f6bf6431f695e2effa3c', class: "pds-tooltip__trigger", onMouseEnter: this.handleShow, onMouseLeave: this.handleHide,
317
+ /* focusin/out bubble; ensure keyboard users see tooltips */
318
+ onFocusin: this.handleShow, onFocusout: this.handleHide, ref: el => this.triggerEl = el }, h("slot", { key: 'eae36227df5fd93edf1af61e58b6369c0162944f' })), h("div", { key: '4c3a3f86d7e24aeff9299a9ef19396e078421467', class: "pds-tooltip__content-slot-wrapper", hidden: true }, h("slot", { key: 'babfdd5793e8007015dab364985c1451d976383f', name: "content" }))));
384
319
  }
385
320
  get el() { return this; }
386
321
  static get watchers() { return {
@@ -396,7 +331,6 @@ const PdsTooltip$1 = /*@__PURE__*/ proxyCustomElement(class PdsTooltip extends H
396
331
  "maxWidth": [1, "max-width"],
397
332
  "opened": [1540],
398
333
  "_isInteractiveOpen": [32],
399
- "isOpen": [32],
400
334
  "showTooltip": [64],
401
335
  "hideTooltip": [64]
402
336
  }, undefined, {
@@ -1 +1 @@
1
- {"file":"pds-tooltip.js","mappings":"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","names":["PdsTooltip","__stencil_proxyCustomElement"],"sources":["src/utils/overlay.ts","src/components/pds-tooltip/pds-tooltip.scss?tag=pds-tooltip","src/components/pds-tooltip/pds-tooltip.tsx"],"sourcesContent":["interface OverlayArgs {\n elem: HTMLElement | null;\n elemPlacement: string;\n overlay: HTMLElement | null;\n offset?: number;\n}\n\nexport const positionTooltip = ({elem, elemPlacement, overlay, offset = 8}: OverlayArgs): boolean => {\n if (elem === null || overlay === null) return false;\n if (typeof elemPlacement !== 'string' || elemPlacement.trim() === '') {\n return false;\n }\n\n const rect = elem.getBoundingClientRect();\n const contentRect = overlay.getBoundingClientRect();\n\n // Reset styles\n overlay.style.top = '';\n overlay.style.left = '';\n overlay.style.right = '';\n overlay.style.bottom = '';\n overlay.style.transform = '';\n\n // Use fixed positioning for portal overlays\n overlay.style.position = 'fixed';\n\n // Detect if the trigger is a span with only text or a text node\n let isTextTrigger = false;\n if (elem.childNodes.length === 1 && elem.childNodes[0].nodeType === Node.TEXT_NODE) {\n isTextTrigger = true;\n } else if (elem.childNodes.length === 1 && elem.childNodes[0].nodeType === Node.ELEMENT_NODE) {\n const child = elem.childNodes[0] as HTMLElement;\n if (child.tagName === 'SPAN' && child.childNodes.length === 1 && child.childNodes[0].nodeType === Node.TEXT_NODE) {\n isTextTrigger = true;\n }\n }\n\n switch (true) {\n case elemPlacement.includes('right'):\n if (isTextTrigger) {\n // Align to the bottom of the trigger for text triggers\n overlay.style.top = `${rect.bottom - contentRect.height / 2}px`;\n } else {\n overlay.style.top = `${rect.top + rect.height / 2 - contentRect.height / 2}px`;\n }\n overlay.style.left = `${rect.right + offset}px`;\n if (elemPlacement.includes('start')) {\n overlay.style.top = `${rect.top}px`;\n }\n if (elemPlacement.includes('end')) {\n overlay.style.top = `${rect.bottom - contentRect.height}px`;\n }\n break;\n case elemPlacement.includes('left'):\n if (isTextTrigger) {\n overlay.style.top = `${rect.bottom - contentRect.height / 2}px`;\n } else {\n overlay.style.top = `${rect.top + rect.height / 2 - contentRect.height / 2}px`;\n }\n overlay.style.left = `${rect.left - contentRect.width - offset}px`;\n if (elemPlacement.includes('start')) {\n overlay.style.top = `${rect.top}px`;\n }\n if (elemPlacement.includes('end')) {\n overlay.style.top = `${rect.bottom - contentRect.height}px`;\n }\n break;\n case elemPlacement.includes('bottom'):\n overlay.style.top = `${rect.bottom + offset}px`;\n overlay.style.left = `${rect.left + rect.width / 2 - contentRect.width / 2}px`;\n if (elemPlacement.includes('start')) {\n overlay.style.left = `${rect.left}px`;\n }\n if (elemPlacement.includes('end')) {\n overlay.style.left = `${rect.right - contentRect.width}px`;\n overlay.style.right = 'initial';\n }\n break;\n case elemPlacement.includes('top'):\n overlay.style.top = `${rect.top - contentRect.height - offset}px`;\n overlay.style.left = `${rect.left + rect.width / 2 - contentRect.width / 2}px`;\n if (elemPlacement.includes('start')) {\n overlay.style.left = `${rect.left}px`;\n }\n if (elemPlacement.includes('end')) {\n overlay.style.left = `${rect.right - contentRect.width}px`;\n overlay.style.right = 'initial';\n }\n break;\n }\n return true;\n}\n",".pds-tooltip {\n --tooltip-border-width-arrow-down: var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow) 0;\n --tooltip-border-width-arrow-left: var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow) 0;\n --tooltip-border-width-arrow-right: var(--tooltip-sizing-arrow) 0 var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow);\n --tooltip-border-width-arrow-up: 0 var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow);\n --tooltip-sizing-arrow: 6px;\n --tooltip-sizing-arrow-offset: 14px;\n --tooltip-dimension-max-width: 320px;\n}\n\n.pds-tooltip__content {\n background-color: var(--pine-color-primary);\n border-radius: calc(var(--pine-dimension-xs) * 1.25);\n box-shadow: var(--pine-box-shadow);\n color: var(--pine-color-text-primary);\n // TODO: need to use block / none but the tooltip content width and height are needed for calculations\n max-width: var(--tooltip-dimension-max-width);\n opacity: 0;\n padding: var(--pine-dimension-xs) calc(var(--pine-dimension-md) / 2);\n position: absolute;\n visibility: hidden;\n width: max-content;\n\n .pds-tooltip--is-open & {\n // TODO: need to use block / none but the tooltip content width and height are needed for calculations\n opacity: 1;\n visibility: visible;\n z-index: 1;\n }\n\n .pds-tooltip.pds-tooltip--has-html-content & {\n width: auto;\n }\n\n &::after {\n border-color: transparent;\n border-right-color: transparent;\n border-style: solid;\n border-width: var(--tooltip-border-width-arrow-left);\n content: '';\n height: 0;\n position: absolute;\n width: 0;\n\n .pds-tooltip--right & {\n border-inline-end-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-left);\n left: calc(var(--tooltip-sizing-arrow) * -1);\n top: 50%;\n transform: translateY(-50%);\n }\n\n .pds-tooltip--right-end & {\n border-inline-end-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-left);\n bottom: var(--tooltip-sizing-arrow-offset);\n left: calc(var(--tooltip-sizing-arrow) * -1);\n top: initial;\n }\n\n .pds-tooltip--right-start & {\n border-inline-end-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-left);\n left: calc(var(--tooltip-sizing-arrow) * -1);\n top: var(--tooltip-sizing-arrow-offset);\n }\n\n .pds-tooltip--top & {\n border-block-start-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-down);\n bottom: calc(var(--tooltip-sizing-arrow) * -1);\n left: 50%;\n top: initial;\n transform: translateX(-50%);\n }\n\n .pds-tooltip--top-start & {\n border-block-start-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-down);\n bottom: calc(var(--tooltip-sizing-arrow) * -1);\n left: var(--tooltip-sizing-arrow-offset);\n top: initial;\n }\n\n .pds-tooltip--top-end & {\n border-block-start-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-down);\n bottom: calc(var(--tooltip-sizing-arrow) * -1);\n left: initial;\n right: var(--tooltip-sizing-arrow-offset);\n top: initial;\n }\n\n .pds-tooltip--left & {\n border-inline-start-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-right);\n left: initial;\n right: calc(var(--tooltip-sizing-arrow) * -1);\n top: 50%;\n transform: translateY(-50%);\n }\n\n .pds-tooltip--left-end & {\n border-inline-start-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-right);\n bottom: var(--tooltip-sizing-arrow-offset);\n left: initial;\n right: calc(var(--tooltip-sizing-arrow) * -1);\n top: initial;\n }\n\n .pds-tooltip--left-start & {\n border-inline-start-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-right);\n left: initial;\n right: calc(var(--tooltip-sizing-arrow) * -1);\n top: var(--tooltip-sizing-arrow-offset);\n }\n\n .pds-tooltip--bottom & {\n border-block-end-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-up);\n left: 50%;\n top: calc(var(--tooltip-sizing-arrow) * -1);\n transform: translateX(-50%);\n }\n\n .pds-tooltip--bottom-end & {\n border-block-end-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-up);\n left: initial;\n right: var(--tooltip-sizing-arrow-offset);\n top: calc(var(--tooltip-sizing-arrow) * -1);\n }\n\n .pds-tooltip--bottom-start & {\n border-block-end-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-up);\n left: var(--tooltip-sizing-arrow-offset);\n top: calc(var(--tooltip-sizing-arrow) * -1);\n }\n\n .pds-tooltip--no-arrow & {\n border-width: 0;\n }\n }\n}\n","import { Component, Element, Host, Prop, State, h, Method, Watch } from '@stencil/core';\nimport { positionTooltip } from '../../utils/overlay';\n\n/**\n * @slot (default) - The tooltip's target element\n * @slot content - HTML content for the tooltip\n */\n\n@Component({\n tag: 'pds-tooltip',\n styleUrls: ['pds-tooltip.scss'],\n shadow: false,\n})\n\nexport class PdsTooltip {\n private static instanceCounter = 0;\n\n /**\n * Internal state: true if the tooltip was opened by user interaction (hover/focus),\n * false if opened via the `opened` prop or currently closed.\n */\n @State() private _isInteractiveOpen = false;\n\n private portalEl: HTMLElement | null = null;\n private triggerEl: HTMLElement | null = null;\n private contentDiv: HTMLElement | null = null;\n private slotMutationObserver: MutationObserver | null = null;\n private overlayResizeObserver: ResizeObserver | null = null;\n private currentPathname: string = '';\n private pathnameCheckInterval: NodeJS.Timeout | null = null;\n\n /**\n * Reference to the Host element\n */\n @Element() el: HTMLPdsTooltipElement;\n\n /**\n * Determines when the tooltip is open\n * @defaultValue false\n */\n @State() isOpen = false;\n\n /**\n * Content for the tooltip. If HTML is required, use the content slot\n */\n @Prop() content: string;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * Determines whether or not the tooltip has an arrow\n * @defaultValue true\n */\n @Prop() hasArrow? = true;\n\n /**\n * Enable this option when using the content slot\n * @defaultValue false\n */\n @Prop() htmlContent = false;\n\n /**\n * Determines the preferred position of the tooltip\n * @defaultValue \"right\"\n */\n @Prop({ reflect: true }) placement:\n 'top'\n | 'top-start'\n | 'top-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end' = 'right';\n\n /**\n * Sets the maximum width of the tooltip content\n * @defaultValue \"352px\"\n */\n @Prop() maxWidth: string = '352px';\n\n /**\n * Determines whether or not the tooltip is visible\n * @defaultValue false\n */\n @Prop({mutable: true, reflect: true}) opened = false;\n\n @Watch('opened')\n\n handleOpenToggle(newValue: boolean, oldValue: boolean) {\n if (newValue === false && oldValue === true) {\n this._isInteractiveOpen = false;\n }\n }\n\n componentWillLoad() {\n this._isInteractiveOpen = false;\n }\n\n componentDidLoad() {\n window.addEventListener('pageshow', this.handlePageShow);\n this.currentPathname = window.location.pathname;\n this.triggerEl = this.el.querySelector('.pds-tooltip__trigger') as HTMLElement;\n const contentSlotWrapper = this.el.querySelector('.pds-tooltip__content-slot-wrapper');\n\n if (contentSlotWrapper !== null) {\n this.slotMutationObserver = new MutationObserver(() => {\n if (this.opened && this.portalEl !== null) {\n this.removePortal();\n this.createPortal();\n }\n });\n this.slotMutationObserver.observe(contentSlotWrapper, { childList: true, subtree: false });\n }\n\n return () => {\n window.removeEventListener('pageshow', this.handlePageShow);\n\n if (this.slotMutationObserver !== null) {\n this.slotMutationObserver.disconnect();\n }\n };\n }\n\n componentDidRender() {\n if (this.opened && this.portalEl === null) {\n this.createPortal();\n } else if (!this.opened && this.portalEl !== null) {\n this.removePortal();\n }\n }\n\n /**\n * Shows the tooltip by enabling the opened property\n */\n @Method()\n async showTooltip() {\n this.opened = true;\n }\n\n /**\n * Hides the tooltip by disabling the opened property\n */\n @Method()\n async hideTooltip() {\n this.opened = false;\n }\n\n private handleHide = () => {\n if (this.opened && !this._isInteractiveOpen) {\n return;\n }\n\n this.hideTooltip();\n this._isInteractiveOpen = false;\n };\n\n private handleShow = () => {\n if (this.opened && !this._isInteractiveOpen) {\n return;\n }\n\n this._isInteractiveOpen = true;\n this.showTooltip();\n };\n\n private handlePageShow = () => {\n if (this.opened && !this._isInteractiveOpen) {\n return;\n }\n\n this.opened = false;\n this._isInteractiveOpen = false;\n };\n\n private handleScroll = () => {\n if (this.opened) {\n if (!this._isInteractiveOpen) {\n this.repositionPortal();\n } else {\n this.hideTooltip();\n this._isInteractiveOpen = false;\n }\n }\n };\n\n private handleSpaNavigation = () => {\n if (this.opened && !this._isInteractiveOpen) {\n return;\n }\n\n this.hideTooltip();\n this._isInteractiveOpen = false;\n };\n\n private checkPathnameChange = () => {\n if (window.location.pathname !== this.currentPathname) {\n this.currentPathname = window.location.pathname;\n this.handleSpaNavigation();\n }\n };\n\n /**\n * Determines the most accurate HTML element to use as the anchor for positioning the tooltip.\n * If `htmlContent` is false, it attempts to find the actual element slotted as the trigger.\n * Otherwise, or if no specific element is found, it defaults to the span wrapper around the trigger slot.\n * This helps with precise alignment.\n */\n private determinePositioningAnchor(): HTMLElement | null {\n let positioningAnchor: HTMLElement | null = this.triggerEl;\n\n if (this.triggerEl !== null) {\n const children = this.triggerEl.childNodes;\n\n for (let i = 0; i < children.length; i++) {\n const childNode = children[i];\n\n if (childNode.nodeType === Node.ELEMENT_NODE) {\n positioningAnchor = childNode as HTMLElement;\n break; // Found the first element, use it as the anchor\n }\n }\n }\n\n // If no ELEMENT_NODE is found within this.triggerEl (e.g., if trigger is just text),\n // positioningAnchor will correctly remain this.triggerEl (the span).\n return positioningAnchor;\n }\n\n /**\n * Centralized method to calculate and apply the tooltip's position.\n * Uses the determined anchor element and the current content dimensions.\n */\n private repositionPortal() {\n const anchor = this.determinePositioningAnchor();\n\n if (anchor !== null && this.contentDiv !== null) {\n positionTooltip({ elem: anchor, elemPlacement: this.placement, overlay: this.contentDiv });\n const placementParts = this.placement.split('-');\n const primaryPlacement = placementParts[0];\n const isCardinalCenterPlacement = placementParts.length === 1;\n\n if (isCardinalCenterPlacement) {\n const anchorRect = anchor.getBoundingClientRect();\n const overlayRect = this.contentDiv.getBoundingClientRect();\n\n if (primaryPlacement === 'left' || primaryPlacement === 'right') {\n const currentOverlayTop = parseFloat(this.contentDiv.style.top || '0');\n const anchorCenterY = anchorRect.top + (anchorRect.height / 2);\n const overlayCenterY = overlayRect.top + (overlayRect.height / 2);\n const adjustmentY = anchorCenterY - overlayCenterY;\n\n if (Math.abs(adjustmentY) > 0.5) {\n this.contentDiv.style.top = `${currentOverlayTop + adjustmentY}px`;\n }\n\n } else if (primaryPlacement === 'top' || primaryPlacement === 'bottom') {\n const currentOverlayLeft = parseFloat(this.contentDiv.style.left || '0');\n const anchorCenterX = anchorRect.left + (anchorRect.width / 2);\n const overlayCenterX = overlayRect.left + (overlayRect.width / 2);\n const adjustmentX = anchorCenterX - overlayCenterX;\n\n if (Math.abs(adjustmentX) > 0.5) {\n this.contentDiv.style.left = `${currentOverlayLeft + adjustmentX}px`;\n }\n }\n }\n }\n }\n\n private createPortal() {\n if (this.portalEl !== null) return;\n\n this.portalEl = document.createElement('div');\n this.portalEl.className = `pds-tooltip pds-tooltip--${this.placement} ${this.htmlContent ? 'pds-tooltip--has-html-content' : ''} ${this.opened ? 'pds-tooltip--is-open' : ''} ${this.hasArrow ? '' : 'pds-tooltip--no-arrow'}`;\n this.portalEl.style.position = 'fixed';\n this.portalEl.style.zIndex = '9999';\n\n if (this.portalEl.id === '') {\n this.portalEl.id = this.componentId || this.el.id || `pds-tooltip-portal-${PdsTooltip.instanceCounter++}`;\n }\n\n if (this.portalEl.getAttribute('id') !== this.portalEl.id) {\n this.portalEl.setAttribute('id', this.portalEl.id);\n }\n\n this.portalEl.setAttribute('role', 'tooltip');\n this.portalEl.setAttribute('aria-hidden', this.opened ? 'false' : 'true');\n this.portalEl.setAttribute('aria-live', this.opened ? 'polite' : 'off');\n this.portalEl.style.maxWidth = this.maxWidth;\n\n this.contentDiv = document.createElement('div');\n this.contentDiv.className = 'pds-tooltip__content';\n this.contentDiv.setAttribute('aria-hidden', this.opened ? 'false' : 'true');\n this.contentDiv.setAttribute('aria-live', this.opened ? 'polite' : 'off');\n this.contentDiv.setAttribute('role', 'tooltip');\n this.contentDiv.style.maxWidth = this.maxWidth;\n\n const contentSlotWrapper = this.el.querySelector('.pds-tooltip__content-slot-wrapper');\n const slottedContentContainer = contentSlotWrapper?.querySelector('[slot=\"content\"]') as HTMLElement | null;\n let hasSlottedContent = false;\n\n if (slottedContentContainer !== null) {\n const childrenToClone = Array.from(slottedContentContainer.childNodes);\n\n if (childrenToClone.length > 0) {\n const hasMeaningfulNode = childrenToClone.some(node =>\n node.nodeType === Node.ELEMENT_NODE ||\n (node.nodeType === Node.TEXT_NODE && node.textContent?.trim() !== '')\n );\n\n if (hasMeaningfulNode) {\n hasSlottedContent = true;\n childrenToClone.forEach((node /*, index*/) => {\n if (node.nodeType === Node.ELEMENT_NODE || (node.nodeType === Node.TEXT_NODE && node.textContent?.trim() !== '')) {\n this.contentDiv.appendChild(node.cloneNode(true));\n }\n });\n }\n }\n }\n\n if (!hasSlottedContent) {\n if (this.content !== '') {\n this.contentDiv.textContent = this.content;\n }\n }\n\n this.portalEl.appendChild(this.contentDiv);\n document.body.appendChild(this.portalEl);\n\n this.repositionPortal();\n\n if (this.contentDiv !== null) {\n this.overlayResizeObserver = new ResizeObserver(() => {\n this.repositionPortal();\n });\n this.overlayResizeObserver.observe(this.contentDiv);\n }\n\n // Add global listeners when portal is created\n window.addEventListener('scroll', this.handleScroll, true);\n window.addEventListener('popstate', this.handleSpaNavigation, true);\n window.addEventListener('hashchange', this.handleSpaNavigation, true);\n\n // Start pathname change detection\n this.pathnameCheckInterval = setInterval(this.checkPathnameChange, 100);\n\n // Add ARIA attribute to trigger, now that portalEl and its ID are confirmed\n if (this.triggerEl !== null && this.portalEl.id !== '') {\n this.triggerEl.setAttribute('aria-describedby', this.portalEl.id);\n }\n }\n\n private removePortal() {\n if (this.overlayResizeObserver !== null && this.contentDiv !== null) {\n this.overlayResizeObserver.unobserve(this.contentDiv);\n this.overlayResizeObserver = null;\n }\n\n // Stop pathname change detection\n if (this.pathnameCheckInterval !== null) {\n clearInterval(this.pathnameCheckInterval);\n this.pathnameCheckInterval = null;\n }\n\n if (this.portalEl !== null) {\n window.removeEventListener('scroll', this.handleScroll, true);\n window.removeEventListener('popstate', this.handleSpaNavigation, true);\n window.removeEventListener('hashchange', this.handleSpaNavigation, true);\n document.body.removeChild(this.portalEl);\n this.portalEl = null;\n }\n\n // Remove ARIA attribute from trigger\n if (this.triggerEl !== null) {\n this.triggerEl.removeAttribute('aria-describedby');\n }\n this.contentDiv = null;\n }\n\n render() {\n const hostId = this.componentId || undefined;\n\n return (\n <Host id={hostId} class={{ 'pds-tooltip--is-open': this.opened }}>\n <span\n class=\"pds-tooltip__trigger\"\n onMouseEnter={this.handleShow}\n onMouseLeave={this.handleHide}\n onFocus={this.handleShow}\n onBlur={this.handleHide}\n ref={el => this.triggerEl = el}\n >\n <slot />\n </span>\n <div class=\"pds-tooltip__content-slot-wrapper\" style={{ display: 'none' }}>\n <slot name=\"content\"></slot>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"pds-tooltip.js","mappings":"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","names":["PdsTooltip","__stencil_proxyCustomElement"],"sources":["src/components/pds-tooltip/pds-tooltip.scss?tag=pds-tooltip","src/components/pds-tooltip/pds-tooltip.tsx"],"sourcesContent":[".pds-tooltip {\n --tooltip-border-width-arrow-down: var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow) 0;\n --tooltip-border-width-arrow-left: var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow) 0;\n --tooltip-border-width-arrow-right: var(--tooltip-sizing-arrow) 0 var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow);\n --tooltip-border-width-arrow-up: 0 var(--tooltip-sizing-arrow) var(--tooltip-sizing-arrow);\n --tooltip-sizing-arrow: 6px;\n --tooltip-sizing-arrow-offset: 14px;\n --tooltip-dimension-max-width: 320px;\n}\n\n.pds-tooltip__content {\n background-color: var(--pine-color-primary);\n border-radius: calc(var(--pine-dimension-xs) * 1.25);\n box-shadow: var(--pine-box-shadow);\n color: var(--pine-color-text-primary);\n // TODO: need to use block / none but the tooltip content width and height are needed for calculations\n max-width: var(--tooltip-dimension-max-width);\n opacity: 0;\n padding: var(--pine-dimension-xs) calc(var(--pine-dimension-md) / 2);\n visibility: hidden;\n width: max-content;\n\n .pds-tooltip--is-open & {\n // TODO: need to use block / none but the tooltip content width and height are needed for calculations\n opacity: 1;\n visibility: visible;\n z-index: 1;\n }\n\n .pds-tooltip.pds-tooltip--has-html-content & {\n width: auto;\n }\n\n &::after {\n border-color: transparent;\n border-right-color: transparent;\n border-style: solid;\n border-width: var(--tooltip-border-width-arrow-left);\n content: '';\n height: 0;\n position: absolute;\n width: 0;\n\n .pds-tooltip--right & {\n border-inline-end-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-left);\n left: calc(var(--tooltip-sizing-arrow) * -1);\n top: 50%;\n transform: translateY(-50%);\n }\n\n .pds-tooltip--right-end & {\n border-inline-end-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-left);\n bottom: var(--tooltip-sizing-arrow-offset);\n left: calc(var(--tooltip-sizing-arrow) * -1);\n top: initial;\n }\n\n .pds-tooltip--right-start & {\n border-inline-end-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-left);\n left: calc(var(--tooltip-sizing-arrow) * -1);\n top: var(--tooltip-sizing-arrow-offset);\n }\n\n .pds-tooltip--top & {\n border-block-start-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-down);\n bottom: calc(var(--tooltip-sizing-arrow) * -1);\n left: 50%;\n top: initial;\n transform: translateX(-50%);\n }\n\n .pds-tooltip--top-start & {\n border-block-start-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-down);\n bottom: calc(var(--tooltip-sizing-arrow) * -1);\n left: var(--tooltip-sizing-arrow-offset);\n top: initial;\n }\n\n .pds-tooltip--top-end & {\n border-block-start-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-down);\n bottom: calc(var(--tooltip-sizing-arrow) * -1);\n left: initial;\n right: var(--tooltip-sizing-arrow-offset);\n top: initial;\n }\n\n .pds-tooltip--left & {\n border-inline-start-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-right);\n left: initial;\n right: calc(var(--tooltip-sizing-arrow) * -1);\n top: 50%;\n transform: translateY(-50%);\n }\n\n .pds-tooltip--left-end & {\n border-inline-start-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-right);\n bottom: var(--tooltip-sizing-arrow-offset);\n left: initial;\n right: calc(var(--tooltip-sizing-arrow) * -1);\n top: initial;\n }\n\n .pds-tooltip--left-start & {\n border-inline-start-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-right);\n left: initial;\n right: calc(var(--tooltip-sizing-arrow) * -1);\n top: var(--tooltip-sizing-arrow-offset);\n }\n\n .pds-tooltip--bottom & {\n border-block-end-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-up);\n left: 50%;\n top: calc(var(--tooltip-sizing-arrow) * -1);\n transform: translateX(-50%);\n }\n\n .pds-tooltip--bottom-end & {\n border-block-end-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-up);\n left: initial;\n right: var(--tooltip-sizing-arrow-offset);\n top: calc(var(--tooltip-sizing-arrow) * -1);\n }\n\n .pds-tooltip--bottom-start & {\n border-block-end-color: var(--pine-color-primary);\n border-width: var(--tooltip-border-width-arrow-up);\n left: var(--tooltip-sizing-arrow-offset);\n top: calc(var(--tooltip-sizing-arrow) * -1);\n }\n\n .pds-tooltip--no-arrow & {\n border-width: 0;\n }\n }\n}\n","import { Component, Element, Host, Prop, State, h, Method, Watch } from '@stencil/core';\nimport { PlacementType } from '@utils/types';\nimport {\n autoUpdate,\n computePosition,\n flip,\n offset,\n shift,\n} from '@floating-ui/dom';\n\n/**\n * @slot (default) - The tooltip's target element\n * @slot content - HTML content for the tooltip\n */\n\n@Component({\n tag: 'pds-tooltip',\n styleUrls: ['pds-tooltip.scss'],\n shadow: false,\n})\n\nexport class PdsTooltip {\n private static instanceCounter = 0;\n\n /**\n * Internal state: true if the tooltip was opened by user interaction (hover/focus),\n * false if opened via the `opened` prop or currently closed.\n */\n @State() private _isInteractiveOpen = false;\n\n private portalEl: HTMLElement | null = null;\n private resolvedPlacement: PlacementType = 'right';\n private triggerEl: HTMLElement | null = null;\n private contentDiv: HTMLElement | null = null;\n private slotMutationObserver: MutationObserver | null = null;\n private currentPathname: string = '';\n private pathnameCheckInterval: ReturnType<typeof setInterval> | null = null;\n private stopAutoUpdate: (() => void) | null = null;\n\n /**\n * Reference to the Host element\n */\n @Element() el: HTMLPdsTooltipElement;\n\n /**\n * Content for the tooltip. If HTML is required, use the content slot\n */\n @Prop() content: string;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * Determines whether or not the tooltip has an arrow\n * @defaultValue true\n */\n @Prop() hasArrow = true;\n\n /**\n * Enable this option when using the content slot\n * @defaultValue false\n */\n @Prop() htmlContent = false;\n\n /**\n * Determines the preferred position of the tooltip\n * @defaultValue \"right\"\n */\n @Prop({ reflect: true }) placement: PlacementType = 'right';\n\n /**\n * Sets the maximum width of the tooltip content\n * @defaultValue \"352px\"\n */\n @Prop() maxWidth: string = '352px';\n\n /**\n * Determines whether or not the tooltip is visible\n * @defaultValue false\n */\n @Prop({mutable: true, reflect: true}) opened = false;\n\n @Watch('opened')\n\n handleOpenToggle(newValue: boolean, oldValue: boolean) {\n if (newValue === false && oldValue === true) {\n this._isInteractiveOpen = false;\n }\n }\n\n componentWillLoad() {\n this._isInteractiveOpen = false;\n this.resolvedPlacement = this.placement;\n }\n\n componentDidLoad() {\n window.addEventListener('pageshow', this.handlePageShow);\n this.currentPathname = window.location.pathname;\n this.triggerEl = this.el.querySelector('.pds-tooltip__trigger') as HTMLElement;\n const contentSlotWrapper = this.el.querySelector('.pds-tooltip__content-slot-wrapper');\n\n if (contentSlotWrapper !== null) {\n this.slotMutationObserver = new MutationObserver(() => {\n if (this.opened && this.portalEl !== null) {\n this.removePortal();\n this.createPortal();\n }\n });\n this.slotMutationObserver.observe(contentSlotWrapper, { childList: true, subtree: false });\n }\n\n // no return; Stencil ignores teardown functions here\n }\n\n disconnectedCallback() {\n window.removeEventListener('pageshow', this.handlePageShow);\n if (this.slotMutationObserver !== null) {\n this.slotMutationObserver.disconnect();\n this.slotMutationObserver = null;\n }\n // Ensure global listeners/intervals are removed if still present\n if (this.portalEl !== null) {\n this.removePortal();\n }\n if (this.pathnameCheckInterval !== null) {\n clearInterval(this.pathnameCheckInterval);\n this.pathnameCheckInterval = null;\n }\n // Ensure autoUpdate is stopped if still present\n if (this.stopAutoUpdate !== null) {\n this.stopAutoUpdate();\n this.stopAutoUpdate = null;\n }\n }\n\n componentDidRender() {\n if (this.opened && this.portalEl === null) {\n this.createPortal();\n } else if (!this.opened && this.portalEl !== null) {\n this.removePortal();\n }\n\n // Update portal class when opened state changes\n if (this.portalEl !== null) {\n this.portalEl.className = `pds-tooltip pds-tooltip--${this.resolvedPlacement} ${this.htmlContent ? 'pds-tooltip--has-html-content' : ''} ${this.opened ? 'pds-tooltip--is-open' : ''} ${this.hasArrow ? '' : 'pds-tooltip--no-arrow'}`;\n\n // Update ARIA attributes to stay in sync with visual open state\n this.portalEl.setAttribute('aria-hidden', this.opened ? 'false' : 'true');\n this.portalEl.setAttribute('aria-live', this.opened ? 'polite' : 'off');\n }\n }\n\n /**\n * Shows the tooltip by enabling the opened property\n */\n @Method()\n async showTooltip() {\n this.opened = true;\n }\n\n /**\n * Hides the tooltip by disabling the opened property\n */\n @Method()\n async hideTooltip() {\n this.opened = false;\n }\n\n private handleHide = () => {\n if (this.opened && !this._isInteractiveOpen) {\n return;\n }\n\n this.hideTooltip();\n this._isInteractiveOpen = false;\n };\n\n private handleShow = () => {\n if (this.opened && !this._isInteractiveOpen) {\n return;\n }\n\n this._isInteractiveOpen = true;\n this.showTooltip();\n };\n\n private handlePageShow = () => {\n if (this.opened && !this._isInteractiveOpen) {\n return;\n }\n\n this.opened = false;\n this._isInteractiveOpen = false;\n };\n\n\n private handleSpaNavigation = () => {\n if (this.opened && !this._isInteractiveOpen) {\n return;\n }\n\n this.hideTooltip();\n this._isInteractiveOpen = false;\n };\n\n private checkPathnameChange = () => {\n if (window.location.pathname !== this.currentPathname) {\n this.currentPathname = window.location.pathname;\n this.handleSpaNavigation();\n }\n };\n\n /**\n * Determines the most accurate HTML element to use as the anchor for positioning the tooltip.\n * If `htmlContent` is false, it attempts to find the actual element slotted as the trigger.\n * Otherwise, or if no specific element is found, it defaults to the span wrapper around the trigger slot.\n * This helps with precise alignment.\n */\n private determinePositioningAnchor(): HTMLElement | null {\n let positioningAnchor: HTMLElement | null = this.triggerEl;\n\n if (this.triggerEl !== null) {\n const children = this.triggerEl.childNodes;\n\n for (let i = 0; i < children.length; i++) {\n const childNode = children[i];\n\n if (childNode.nodeType === Node.ELEMENT_NODE) {\n positioningAnchor = childNode as HTMLElement;\n break; // Found the first element, use it as the anchor\n }\n }\n }\n\n // If no ELEMENT_NODE is found within this.triggerEl (e.g., if trigger is just text),\n // positioningAnchor will correctly remain this.triggerEl (the span).\n return positioningAnchor;\n }\n\n /**\n * Centralized method to calculate and apply the tooltip's position using floating UI.\n * Uses the determined anchor element and applies computePosition with flip, offset, and shift.\n */\n private async repositionPortal() {\n const anchor = this.determinePositioningAnchor();\n\n if (anchor !== null && this.portalEl !== null) {\n try {\n const { x, y, placement: computedPlacement } = await computePosition(anchor, this.portalEl, {\n placement: this.placement,\n strategy: 'fixed',\n middleware: [offset(8), flip(), shift({ padding: 5 })],\n });\n\n this.resolvedPlacement = computedPlacement as PlacementType;\n\n Object.assign(this.portalEl.style, {\n left: `${x}px`,\n top: `${y}px`,\n position: 'fixed',\n });\n\n // Update CSS classes to match the resolved placement\n this.portalEl.className = `pds-tooltip pds-tooltip--${this.resolvedPlacement} ${this.htmlContent ? 'pds-tooltip--has-html-content' : ''} ${this.opened ? 'pds-tooltip--is-open' : ''} ${this.hasArrow ? '' : 'pds-tooltip--no-arrow'}`;\n } catch (error) {\n console.warn('Failed to position tooltip:', error);\n this.resolvedPlacement = this.placement; // Fallback to requested placement\n // Fallback to basic positioning if floating UI fails\n const anchorRect = anchor.getBoundingClientRect();\n this.portalEl.style.left = `${anchorRect.right + 8}px`;\n this.portalEl.style.top = `${anchorRect.top}px`;\n this.portalEl.style.position = 'fixed';\n }\n }\n }\n\n private createPortal() {\n if (this.portalEl !== null) return;\n\n this.portalEl = document.createElement('div');\n this.portalEl.className = `pds-tooltip pds-tooltip--${this.resolvedPlacement} ${this.htmlContent ? 'pds-tooltip--has-html-content' : ''} ${this.opened ? 'pds-tooltip--is-open' : ''} ${this.hasArrow ? '' : 'pds-tooltip--no-arrow'}`;\n this.portalEl.style.position = 'fixed';\n this.portalEl.style.zIndex = '9999';\n\n if (this.portalEl.id === '') {\n const suffix = PdsTooltip.instanceCounter++;\n const baseId = this.componentId || this.el.id || 'pds-tooltip';\n this.portalEl.id = `${baseId}-portal-${suffix}`;\n }\n\n if (this.portalEl.getAttribute('id') !== this.portalEl.id) {\n this.portalEl.setAttribute('id', this.portalEl.id);\n }\n\n this.portalEl.setAttribute('role', 'tooltip');\n this.portalEl.setAttribute('aria-hidden', this.opened ? 'false' : 'true');\n this.portalEl.setAttribute('aria-live', this.opened ? 'polite' : 'off');\n this.portalEl.style.maxWidth = this.maxWidth;\n\n this.contentDiv = document.createElement('div');\n this.contentDiv.className = 'pds-tooltip__content';\n this.contentDiv.setAttribute('aria-hidden', this.opened ? 'false' : 'true');\n this.contentDiv.setAttribute('aria-live', this.opened ? 'polite' : 'off');\n\n const contentSlotWrapper = this.el.querySelector('.pds-tooltip__content-slot-wrapper');\n const slottedContentContainer = contentSlotWrapper?.querySelector('[slot=\"content\"]') as HTMLElement | null;\n let hasSlottedContent = false;\n\n if (slottedContentContainer !== null) {\n const childrenToClone = Array.from(slottedContentContainer.childNodes);\n\n if (childrenToClone.length > 0) {\n const hasMeaningfulNode = childrenToClone.some(node =>\n node.nodeType === Node.ELEMENT_NODE ||\n (node.nodeType === Node.TEXT_NODE && node.textContent?.trim() !== '')\n );\n\n if (hasMeaningfulNode) {\n hasSlottedContent = true;\n childrenToClone.forEach((node /*, index*/) => {\n if (node.nodeType === Node.ELEMENT_NODE || (node.nodeType === Node.TEXT_NODE && node.textContent?.trim() !== '')) {\n this.contentDiv.appendChild(node.cloneNode(true));\n }\n });\n }\n }\n }\n\n if (!hasSlottedContent && typeof this.content === 'string' && this.content.trim() !== '') {\n this.contentDiv.textContent = this.content;\n }\n\n this.portalEl.appendChild(this.contentDiv);\n document.body.appendChild(this.portalEl);\n\n this.repositionPortal().catch(error => {\n console.warn('Failed to position tooltip on creation:', error);\n });\n\n // Use Floating UI's autoUpdate to handle scroll/resize automatically\n if (this.triggerEl && this.portalEl) {\n this.stopAutoUpdate = autoUpdate(\n this.triggerEl,\n this.portalEl,\n () => {\n this.repositionPortal().catch(error => {\n console.warn('Failed to reposition tooltip on auto update:', error);\n });\n }\n );\n }\n\n // Keep only SPA navigation listeners (not handled by autoUpdate)\n window.addEventListener('popstate', this.handleSpaNavigation, true);\n window.addEventListener('hashchange', this.handleSpaNavigation, true);\n\n // Start pathname change detection\n this.pathnameCheckInterval = setInterval(this.checkPathnameChange, 100);\n\n // Add ARIA attribute to trigger, now that portalEl and its ID are confirmed\n if (this.triggerEl !== null && this.portalEl.id !== '') {\n this.triggerEl.setAttribute('aria-describedby', this.portalEl.id);\n }\n }\n\n private removePortal() {\n // Stop Floating UI's autoUpdate\n if (this.stopAutoUpdate !== null) {\n this.stopAutoUpdate();\n this.stopAutoUpdate = null;\n }\n\n // Stop pathname change detection\n if (this.pathnameCheckInterval !== null) {\n clearInterval(this.pathnameCheckInterval);\n this.pathnameCheckInterval = null;\n }\n\n if (this.portalEl !== null) {\n // Remove only SPA navigation listeners (scroll/resize handled by autoUpdate)\n window.removeEventListener('popstate', this.handleSpaNavigation, true);\n window.removeEventListener('hashchange', this.handleSpaNavigation, true);\n\n // Safely remove portal from DOM\n try {\n if (this.portalEl.parentNode) {\n this.portalEl.parentNode.removeChild(this.portalEl);\n }\n } catch (error) {\n // Portal might have already been removed by test cleanup\n console.warn('Portal element could not be removed from DOM:', error);\n }\n\n this.portalEl = null;\n }\n\n // Remove ARIA attribute from trigger\n if (this.triggerEl !== null) {\n this.triggerEl.removeAttribute('aria-describedby');\n }\n this.contentDiv = null;\n }\n\n render() {\n const hostId = this.componentId || undefined;\n\n return (\n <Host id={hostId} class={{ 'pds-tooltip--is-open': this.opened }}>\n <span\n class=\"pds-tooltip__trigger\"\n onMouseEnter={this.handleShow}\n onMouseLeave={this.handleHide}\n /* focusin/out bubble; ensure keyboard users see tooltips */\n onFocusin={this.handleShow as any}\n onFocusout={this.handleHide as any}\n ref={el => this.triggerEl = el}\n >\n <slot />\n </span>\n <div class=\"pds-tooltip__content-slot-wrapper\" hidden>\n <slot name=\"content\"></slot>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}