@pine-ds/core 4.0.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. package/components/index.d.ts +8 -0
  2. package/components/index.js +1 -1
  3. package/components/mock-pds-modal.js +1 -1
  4. package/components/pds-chip2.js +1 -1
  5. package/components/pds-copytext.js +1 -1
  6. package/components/pds-divider.js +1 -1
  7. package/components/pds-drawer-content.d.ts +11 -0
  8. package/components/pds-drawer-content.js +1 -0
  9. package/components/pds-drawer-footer.d.ts +11 -0
  10. package/components/pds-drawer-footer.js +1 -0
  11. package/components/pds-drawer-header.d.ts +11 -0
  12. package/components/pds-drawer-header.js +1 -0
  13. package/components/pds-drawer.d.ts +11 -0
  14. package/components/pds-drawer.js +1 -0
  15. package/components/pds-dropdown-menu-item.js +1 -1
  16. package/components/pds-dropdown-menu-separator.js +1 -1
  17. package/components/pds-dropdown-menu.js +1 -1
  18. package/components/pds-filter.js +1 -1
  19. package/components/pds-filters.js +1 -1
  20. package/components/pds-image.js +1 -1
  21. package/components/pds-input.js +1 -1
  22. package/components/pds-link2.js +1 -1
  23. package/components/pds-loader2.js +1 -1
  24. package/components/pds-modal-content.js +1 -1
  25. package/components/pds-modal-footer.js +1 -1
  26. package/components/pds-modal-header.js +1 -1
  27. package/components/pds-modal.js +1 -1
  28. package/components/pds-modal2.js +1 -0
  29. package/components/pds-multiselect.js +1 -1
  30. package/components/pds-popover.js +1 -1
  31. package/components/pds-progress.js +1 -1
  32. package/components/pds-property.js +1 -1
  33. package/components/pds-radio-group.js +1 -1
  34. package/components/pds-radio.js +1 -1
  35. package/components/pds-row.js +1 -1
  36. package/components/pds-select.js +1 -1
  37. package/components/pds-sortable-item.js +1 -1
  38. package/components/pds-sortable.js +1 -1
  39. package/components/pds-switch.js +1 -1
  40. package/components/pds-table-body.js +1 -1
  41. package/components/pds-table-cell2.js +1 -1
  42. package/components/pds-table-head-cell2.js +1 -1
  43. package/components/pds-table-head.js +1 -1
  44. package/components/pds-table-row.js +1 -1
  45. package/components/pds-tabpanel.js +1 -1
  46. package/components/pds-tabs.js +1 -1
  47. package/components/pds-text2.js +1 -1
  48. package/components/pds-textarea.js +1 -1
  49. package/components/pds-toast.js +1 -1
  50. package/components/pds-tooltip.js +1 -1
  51. package/components/truncation-tooltip.js +1 -1
  52. package/dist/cjs/{index-CKNNY-lQ.js → index-Bu3NXpbK.js} +1 -1
  53. package/dist/cjs/{index-BdFrBXCD.js → index-CuQil7H0.js} +1 -1
  54. package/dist/cjs/index.cjs.js +20 -0
  55. package/dist/cjs/loader.cjs.js +2 -2
  56. package/dist/cjs/mock-pds-modal.cjs.entry.js +2 -2
  57. package/dist/cjs/pds-accordion.cjs.entry.js +2 -2
  58. package/dist/cjs/pds-alert.cjs.entry.js +1 -1
  59. package/dist/cjs/pds-avatar.cjs.entry.js +2 -2
  60. package/dist/cjs/pds-box.cjs.entry.js +1 -1
  61. package/dist/cjs/pds-button.cjs.entry.js +2 -2
  62. package/dist/cjs/pds-checkbox.cjs.entry.js +2 -2
  63. package/dist/cjs/pds-chip.cjs.entry.js +18 -9
  64. package/dist/cjs/pds-combobox.cjs.entry.js +1 -1
  65. package/dist/cjs/pds-container.cjs.entry.js +1 -1
  66. package/dist/cjs/pds-copytext.cjs.entry.js +8 -4
  67. package/dist/cjs/pds-divider.cjs.entry.js +10 -3
  68. package/dist/cjs/pds-drawer-content.cjs.entry.js +23 -0
  69. package/dist/cjs/pds-drawer-footer.cjs.entry.js +23 -0
  70. package/dist/cjs/pds-drawer-header.cjs.entry.js +23 -0
  71. package/dist/cjs/pds-drawer.cjs.entry.js +137 -0
  72. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +2 -2
  73. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +2 -2
  74. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +2 -2
  75. package/dist/cjs/pds-filter.cjs.entry.js +3 -3
  76. package/dist/cjs/pds-filters.cjs.entry.js +2 -2
  77. package/dist/cjs/pds-icon.cjs.entry.js +1 -1
  78. package/dist/cjs/pds-image.cjs.entry.js +3 -3
  79. package/dist/cjs/pds-input.cjs.entry.js +4 -4
  80. package/dist/cjs/pds-link.cjs.entry.js +4 -4
  81. package/dist/cjs/pds-loader.cjs.entry.js +2 -2
  82. package/dist/cjs/pds-modal-content.cjs.entry.js +3 -3
  83. package/dist/cjs/pds-modal-footer.cjs.entry.js +2 -2
  84. package/dist/cjs/pds-modal-header.cjs.entry.js +2 -2
  85. package/dist/cjs/pds-modal.cjs.entry.js +142 -11
  86. package/dist/cjs/pds-multiselect.cjs.entry.js +5 -5
  87. package/dist/cjs/pds-popover.cjs.entry.js +2 -2
  88. package/dist/cjs/pds-progress.cjs.entry.js +2 -2
  89. package/dist/cjs/pds-property.cjs.entry.js +2 -2
  90. package/dist/cjs/pds-radio-group.cjs.entry.js +5 -5
  91. package/dist/cjs/pds-radio.cjs.entry.js +5 -5
  92. package/dist/cjs/pds-row.cjs.entry.js +2 -2
  93. package/dist/cjs/pds-select.cjs.entry.js +3 -3
  94. package/dist/cjs/pds-sortable-item.cjs.entry.js +3 -3
  95. package/dist/cjs/pds-sortable.cjs.entry.js +2 -2
  96. package/dist/cjs/pds-switch.cjs.entry.js +6 -6
  97. package/dist/cjs/pds-tab.cjs.entry.js +1 -1
  98. package/dist/cjs/pds-table-body.cjs.entry.js +2 -2
  99. package/dist/cjs/pds-table-cell.cjs.entry.js +4 -4
  100. package/dist/cjs/pds-table-head-cell.cjs.entry.js +4 -4
  101. package/dist/cjs/pds-table-head.cjs.entry.js +2 -2
  102. package/dist/cjs/pds-table-row.cjs.entry.js +2 -2
  103. package/dist/cjs/pds-table.cjs.entry.js +1 -1
  104. package/dist/cjs/pds-tabpanel.cjs.entry.js +2 -2
  105. package/dist/cjs/pds-tabs.cjs.entry.js +2 -2
  106. package/dist/cjs/pds-text.cjs.entry.js +6 -24
  107. package/dist/cjs/pds-textarea.cjs.entry.js +6 -6
  108. package/dist/cjs/pds-toast.cjs.entry.js +4 -4
  109. package/dist/cjs/pds-tooltip.cjs.entry.js +3 -3
  110. package/dist/cjs/pine-core.cjs.js +2 -2
  111. package/dist/cjs/{truncation-tooltip-CVzAha5B.js → truncation-tooltip-Bps7_rUy.js} +51 -1
  112. package/dist/collection/collection-manifest.json +4 -0
  113. package/dist/collection/components/pds-chip/pds-chip.js +15 -6
  114. package/dist/collection/components/pds-copytext/pds-copytext.js +5 -1
  115. package/dist/collection/components/pds-divider/pds-divider.css +41 -0
  116. package/dist/collection/components/pds-divider/pds-divider.js +30 -1
  117. package/dist/collection/components/pds-divider/stories/pds-divider.stories.js +7 -0
  118. package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.css +22 -0
  119. package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.js +29 -0
  120. package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.css +15 -0
  121. package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.js +23 -0
  122. package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.css +15 -0
  123. package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.js +23 -0
  124. package/dist/collection/components/pds-drawer/pds-drawer.css +36 -0
  125. package/dist/collection/components/pds-drawer/pds-drawer.js +362 -0
  126. package/dist/collection/components/pds-drawer/stories/pds-drawer.stories.js +72 -0
  127. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +1 -1
  128. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +1 -1
  129. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +1 -1
  130. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +1 -1
  131. package/dist/collection/components/pds-filters/pds-filters.js +1 -1
  132. package/dist/collection/components/pds-image/pds-image.js +2 -2
  133. package/dist/collection/components/pds-input/pds-input.js +2 -2
  134. package/dist/collection/components/pds-link/pds-link.js +2 -2
  135. package/dist/collection/components/pds-loader/pds-loader.js +1 -1
  136. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +2 -2
  137. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +1 -1
  138. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +1 -1
  139. package/dist/collection/components/pds-modal/pds-modal.js +164 -10
  140. package/dist/collection/components/pds-modal/test/mock-pds-modal.js +1 -1
  141. package/dist/collection/components/pds-multiselect/pds-multiselect.js +3 -3
  142. package/dist/collection/components/pds-popover/pds-popover.js +1 -1
  143. package/dist/collection/components/pds-progress/pds-progress.js +1 -1
  144. package/dist/collection/components/pds-property/pds-property.js +1 -1
  145. package/dist/collection/components/pds-radio/pds-radio.js +3 -3
  146. package/dist/collection/components/pds-radio-group/pds-radio-group.js +3 -3
  147. package/dist/collection/components/pds-row/pds-row.js +1 -1
  148. package/dist/collection/components/pds-select/pds-select.js +1 -1
  149. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
  150. package/dist/collection/components/pds-sortable/pds-sortable.js +1 -1
  151. package/dist/collection/components/pds-switch/pds-switch.css +1 -1
  152. package/dist/collection/components/pds-switch/pds-switch.js +3 -3
  153. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
  154. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +3 -3
  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-cell/pds-table-head-cell.js +2 -2
  157. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +1 -1
  158. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +1 -1
  159. package/dist/collection/components/pds-tabs/pds-tabs.js +1 -1
  160. package/dist/collection/components/pds-text/pds-text.js +2 -2
  161. package/dist/collection/components/pds-textarea/pds-textarea.js +4 -4
  162. package/dist/collection/components/pds-toast/pds-toast.js +3 -3
  163. package/dist/collection/components/pds-tooltip/pds-tooltip.js +2 -2
  164. package/dist/collection/index.js +1 -0
  165. package/dist/collection/utils/test/reduced-motion.js +78 -0
  166. package/dist/collection/utils/truncation-tooltip.js +51 -1
  167. package/dist/docs.json +419 -6
  168. package/dist/esm/{index-NNDTPCWx.js → index-CTLu1TM4.js} +1 -1
  169. package/dist/esm/{index-BjlFq0VD.js → index-DdPaBxPo.js} +1 -1
  170. package/dist/esm/index.js +19 -0
  171. package/dist/esm/loader.js +3 -3
  172. package/dist/esm/mock-pds-modal.entry.js +2 -2
  173. package/dist/esm/pds-accordion.entry.js +2 -2
  174. package/dist/esm/pds-alert.entry.js +1 -1
  175. package/dist/esm/pds-avatar.entry.js +2 -2
  176. package/dist/esm/pds-box.entry.js +1 -1
  177. package/dist/esm/pds-button.entry.js +2 -2
  178. package/dist/esm/pds-checkbox.entry.js +2 -2
  179. package/dist/esm/pds-chip.entry.js +18 -9
  180. package/dist/esm/pds-combobox.entry.js +1 -1
  181. package/dist/esm/pds-container.entry.js +1 -1
  182. package/dist/esm/pds-copytext.entry.js +8 -4
  183. package/dist/esm/pds-divider.entry.js +10 -3
  184. package/dist/esm/pds-drawer-content.entry.js +21 -0
  185. package/dist/esm/pds-drawer-footer.entry.js +21 -0
  186. package/dist/esm/pds-drawer-header.entry.js +21 -0
  187. package/dist/esm/pds-drawer.entry.js +135 -0
  188. package/dist/esm/pds-dropdown-menu-item.entry.js +2 -2
  189. package/dist/esm/pds-dropdown-menu-separator.entry.js +2 -2
  190. package/dist/esm/pds-dropdown-menu.entry.js +2 -2
  191. package/dist/esm/pds-filter.entry.js +3 -3
  192. package/dist/esm/pds-filters.entry.js +2 -2
  193. package/dist/esm/pds-icon.entry.js +1 -1
  194. package/dist/esm/pds-image.entry.js +3 -3
  195. package/dist/esm/pds-input.entry.js +4 -4
  196. package/dist/esm/pds-link.entry.js +4 -4
  197. package/dist/esm/pds-loader.entry.js +2 -2
  198. package/dist/esm/pds-modal-content.entry.js +3 -3
  199. package/dist/esm/pds-modal-footer.entry.js +2 -2
  200. package/dist/esm/pds-modal-header.entry.js +2 -2
  201. package/dist/esm/pds-modal.entry.js +142 -11
  202. package/dist/esm/pds-multiselect.entry.js +5 -5
  203. package/dist/esm/pds-popover.entry.js +2 -2
  204. package/dist/esm/pds-progress.entry.js +2 -2
  205. package/dist/esm/pds-property.entry.js +2 -2
  206. package/dist/esm/pds-radio-group.entry.js +5 -5
  207. package/dist/esm/pds-radio.entry.js +5 -5
  208. package/dist/esm/pds-row.entry.js +2 -2
  209. package/dist/esm/pds-select.entry.js +3 -3
  210. package/dist/esm/pds-sortable-item.entry.js +3 -3
  211. package/dist/esm/pds-sortable.entry.js +2 -2
  212. package/dist/esm/pds-switch.entry.js +6 -6
  213. package/dist/esm/pds-tab.entry.js +1 -1
  214. package/dist/esm/pds-table-body.entry.js +2 -2
  215. package/dist/esm/pds-table-cell.entry.js +4 -4
  216. package/dist/esm/pds-table-head-cell.entry.js +4 -4
  217. package/dist/esm/pds-table-head.entry.js +2 -2
  218. package/dist/esm/pds-table-row.entry.js +2 -2
  219. package/dist/esm/pds-table.entry.js +1 -1
  220. package/dist/esm/pds-tabpanel.entry.js +2 -2
  221. package/dist/esm/pds-tabs.entry.js +2 -2
  222. package/dist/esm/pds-text.entry.js +4 -22
  223. package/dist/esm/pds-textarea.entry.js +6 -6
  224. package/dist/esm/pds-toast.entry.js +4 -4
  225. package/dist/esm/pds-tooltip.entry.js +3 -3
  226. package/dist/esm/pine-core.js +3 -3
  227. package/dist/esm/{truncation-tooltip-Blk4GigP.js → truncation-tooltip-CdtEBn_5.js} +51 -1
  228. package/dist/esm-es5/{index-NNDTPCWx.js → index-CTLu1TM4.js} +1 -1
  229. package/dist/esm-es5/index.js +1 -0
  230. package/dist/esm-es5/loader.js +1 -1
  231. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  232. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  233. package/dist/esm-es5/pds-alert.entry.js +1 -1
  234. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  235. package/dist/esm-es5/pds-box.entry.js +1 -1
  236. package/dist/esm-es5/pds-button.entry.js +1 -1
  237. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  238. package/dist/esm-es5/pds-chip.entry.js +1 -1
  239. package/dist/esm-es5/pds-combobox.entry.js +1 -1
  240. package/dist/esm-es5/pds-container.entry.js +1 -1
  241. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  242. package/dist/esm-es5/pds-divider.entry.js +1 -1
  243. package/dist/esm-es5/pds-drawer-content.entry.js +1 -0
  244. package/dist/esm-es5/pds-drawer-footer.entry.js +1 -0
  245. package/dist/esm-es5/pds-drawer-header.entry.js +1 -0
  246. package/dist/esm-es5/pds-drawer.entry.js +1 -0
  247. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  248. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  249. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  250. package/dist/esm-es5/pds-filter.entry.js +1 -1
  251. package/dist/esm-es5/pds-filters.entry.js +1 -1
  252. package/dist/esm-es5/pds-icon.entry.js +1 -1
  253. package/dist/esm-es5/pds-image.entry.js +1 -1
  254. package/dist/esm-es5/pds-input.entry.js +1 -1
  255. package/dist/esm-es5/pds-link.entry.js +1 -1
  256. package/dist/esm-es5/pds-loader.entry.js +1 -1
  257. package/dist/esm-es5/pds-modal-content.entry.js +1 -1
  258. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  259. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  260. package/dist/esm-es5/pds-modal.entry.js +1 -1
  261. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  262. package/dist/esm-es5/pds-popover.entry.js +1 -1
  263. package/dist/esm-es5/pds-progress.entry.js +1 -1
  264. package/dist/esm-es5/pds-property.entry.js +1 -1
  265. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  266. package/dist/esm-es5/pds-radio.entry.js +1 -1
  267. package/dist/esm-es5/pds-row.entry.js +1 -1
  268. package/dist/esm-es5/pds-select.entry.js +1 -1
  269. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  270. package/dist/esm-es5/pds-sortable.entry.js +2 -2
  271. package/dist/esm-es5/pds-switch.entry.js +1 -1
  272. package/dist/esm-es5/pds-tab.entry.js +1 -1
  273. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  274. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  275. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  276. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  277. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  278. package/dist/esm-es5/pds-table.entry.js +1 -1
  279. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  280. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  281. package/dist/esm-es5/pds-text.entry.js +1 -1
  282. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  283. package/dist/esm-es5/pds-toast.entry.js +1 -1
  284. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  285. package/dist/esm-es5/pine-core.js +1 -1
  286. package/dist/esm-es5/truncation-tooltip-CdtEBn_5.js +1 -0
  287. package/dist/pine-core/index.esm.js +1 -0
  288. package/dist/pine-core/p-02a47ebb.entry.js +1 -0
  289. package/dist/pine-core/{p-b3b44b80.entry.js → p-049681fc.entry.js} +1 -1
  290. package/dist/pine-core/p-053b0898.system.entry.js +1 -0
  291. package/dist/pine-core/p-09413b07.entry.js +1 -0
  292. package/dist/pine-core/{p-17d4a99a.system.entry.js → p-0ab735aa.system.entry.js} +1 -1
  293. package/dist/pine-core/p-12182cab.entry.js +1 -0
  294. package/dist/pine-core/{p-3170d53b.system.entry.js → p-12ec8186.system.entry.js} +1 -1
  295. package/dist/pine-core/p-15d3a4bc.system.entry.js +1 -0
  296. package/dist/pine-core/{p-606418b7.system.entry.js → p-1614c000.system.entry.js} +1 -1
  297. package/dist/pine-core/{p-6254d112.entry.js → p-17dc3f87.entry.js} +1 -1
  298. package/dist/pine-core/p-18a59cdd.system.entry.js +1 -0
  299. package/dist/pine-core/{p-2ec460e1.system.entry.js → p-1e2a9b5d.system.entry.js} +1 -1
  300. package/dist/pine-core/{p-6f82e8dc.system.entry.js → p-1f307e59.system.entry.js} +1 -1
  301. package/dist/pine-core/{p-f145e018.entry.js → p-2016c878.entry.js} +1 -1
  302. package/dist/pine-core/{p-5e6e8d4e.system.entry.js → p-222ff58e.system.entry.js} +1 -1
  303. package/dist/pine-core/{p-cd407bed.system.entry.js → p-2eb8d697.system.entry.js} +1 -1
  304. package/dist/pine-core/{p-bf759fc0.entry.js → p-31e1722e.entry.js} +1 -1
  305. package/dist/pine-core/p-324a7ae4.system.entry.js +1 -0
  306. package/dist/pine-core/{p-c35fe2e2.entry.js → p-32f10aa9.entry.js} +1 -1
  307. package/dist/pine-core/p-33c0f3c9.system.entry.js +1 -0
  308. package/dist/pine-core/{p-31679dbc.system.entry.js → p-3464b456.system.entry.js} +1 -1
  309. package/dist/pine-core/{p-69372e72.system.entry.js → p-34e38037.system.entry.js} +1 -1
  310. package/dist/pine-core/{p-2d1cc047.entry.js → p-3605a5f5.entry.js} +1 -1
  311. package/dist/pine-core/{p-c2688710.entry.js → p-376f8286.entry.js} +1 -1
  312. package/dist/pine-core/{p-292cf8f9.entry.js → p-3873f55b.entry.js} +1 -1
  313. package/dist/pine-core/{p-b0058cb0.entry.js → p-3aec9079.entry.js} +1 -1
  314. package/dist/pine-core/{p-464ec4eb.system.entry.js → p-3c229a00.system.entry.js} +1 -1
  315. package/dist/pine-core/{p-2fc127b4.system.entry.js → p-3c4236a8.system.entry.js} +1 -1
  316. package/dist/pine-core/{p-43ef94bc.entry.js → p-3e0c6384.entry.js} +1 -1
  317. package/dist/pine-core/p-3eca0b00.entry.js +1 -0
  318. package/dist/pine-core/{p-62f75f84.entry.js → p-3f12afb1.entry.js} +1 -1
  319. package/dist/pine-core/p-43338f77.system.entry.js +1 -0
  320. package/dist/pine-core/{p-b89583e7.system.entry.js → p-4661259e.system.entry.js} +1 -1
  321. package/dist/pine-core/{p-5c7a72aa.system.entry.js → p-4d388957.system.entry.js} +1 -1
  322. package/dist/pine-core/{p-7e065b59.entry.js → p-51b8490d.entry.js} +1 -1
  323. package/dist/pine-core/{p-d9cb26fe.system.entry.js → p-51dff5af.system.entry.js} +1 -1
  324. package/dist/pine-core/p-53a4852e.system.entry.js +1 -0
  325. package/dist/pine-core/{p-076aaa00.system.entry.js → p-56b34569.system.entry.js} +1 -1
  326. package/dist/pine-core/{p-a03c12a4.system.entry.js → p-5772f260.system.entry.js} +1 -1
  327. package/dist/pine-core/{p-3cece186.system.entry.js → p-585ad368.system.entry.js} +1 -1
  328. package/dist/pine-core/p-591fbff5.entry.js +1 -0
  329. package/dist/pine-core/{p-83e8f145.entry.js → p-5aea1082.entry.js} +1 -1
  330. package/dist/pine-core/{p-ff1e9a32.entry.js → p-5d585aa8.entry.js} +1 -1
  331. package/dist/pine-core/{p-1f20608e.system.entry.js → p-5dd393cd.system.entry.js} +1 -1
  332. package/dist/pine-core/p-613a64f1.entry.js +1 -0
  333. package/dist/pine-core/p-630f33d6.system.entry.js +1 -0
  334. package/dist/pine-core/{p-9374cf48.system.entry.js → p-63686e2a.system.entry.js} +1 -1
  335. package/dist/pine-core/{p-fef6694d.entry.js → p-6f7a7d55.entry.js} +1 -1
  336. package/dist/pine-core/{p-0a4f2d5f.system.entry.js → p-6fd863e5.system.entry.js} +1 -1
  337. package/dist/pine-core/{p-18ae43e3.entry.js → p-714bfdbd.entry.js} +1 -1
  338. package/dist/pine-core/{p-43268325.system.entry.js → p-76286a68.system.entry.js} +1 -1
  339. package/dist/pine-core/{p-43d6ab33.system.entry.js → p-7691a875.system.entry.js} +1 -1
  340. package/dist/pine-core/p-78fd593d.system.entry.js +1 -0
  341. package/dist/pine-core/{p-8c0040c4.entry.js → p-7b1e3e91.entry.js} +1 -1
  342. package/dist/pine-core/{p-7bac161d.entry.js → p-7e2b934d.entry.js} +1 -1
  343. package/dist/pine-core/p-7e44106e.entry.js +1 -0
  344. package/dist/pine-core/p-84ade640.entry.js +1 -0
  345. package/dist/pine-core/{p-24fcf841.system.entry.js → p-869ed1c0.system.entry.js} +1 -1
  346. package/dist/pine-core/p-86bc2a0c.entry.js +1 -0
  347. package/dist/pine-core/{p-caf73216.entry.js → p-8be301b6.entry.js} +1 -1
  348. package/dist/pine-core/{p-73b40545.system.entry.js → p-8cc270f0.system.entry.js} +1 -1
  349. package/dist/pine-core/p-8cea0d7a.system.entry.js +1 -0
  350. package/dist/pine-core/{p-b759dc21.entry.js → p-8eef80d5.entry.js} +1 -1
  351. package/dist/pine-core/p-9187c26c.system.entry.js +1 -0
  352. package/dist/pine-core/{p-2c5fe3d9.system.entry.js → p-92ef1608.system.entry.js} +1 -1
  353. package/dist/pine-core/{p-d12a93d6.entry.js → p-957dbb0c.entry.js} +1 -1
  354. package/dist/pine-core/p-B2nn1gSd.js +1 -0
  355. package/dist/pine-core/{p-CRCxGYgw.system.js → p-B2qvvB3q.system.js} +1 -1
  356. package/dist/pine-core/p-CTLu1TM4.js +2 -0
  357. package/dist/pine-core/{p-DVZjHa4_.system.js → p-DAIsVNlL.system.js} +1 -1
  358. package/dist/pine-core/p-Dr-FzkdE.system.js +1 -0
  359. package/dist/pine-core/p-G3CPPJEt.system.js +1 -0
  360. package/dist/pine-core/{p-1b8ac76c.system.entry.js → p-a11a9c40.system.entry.js} +1 -1
  361. package/dist/pine-core/p-a4a58477.entry.js +1 -0
  362. package/dist/pine-core/{p-6630f428.system.entry.js → p-a98bf89f.system.entry.js} +1 -1
  363. package/dist/pine-core/{p-ac2775b5.entry.js → p-ac0098fd.entry.js} +1 -1
  364. package/dist/pine-core/{p-8cb0eed9.entry.js → p-b109de2e.entry.js} +1 -1
  365. package/dist/pine-core/{p-cf389430.system.entry.js → p-b32e3174.system.entry.js} +1 -1
  366. package/dist/pine-core/{p-16f13b17.entry.js → p-b923a70b.entry.js} +1 -1
  367. package/dist/pine-core/p-be4a6cc2.entry.js +1 -0
  368. package/dist/pine-core/{p-f7cbdb81.system.entry.js → p-be819bff.system.entry.js} +1 -1
  369. package/dist/pine-core/{p-78cd9f97.system.entry.js → p-bf3afa16.system.entry.js} +1 -1
  370. package/dist/pine-core/{p-85f7428b.system.entry.js → p-c09dab1a.system.entry.js} +1 -1
  371. package/dist/pine-core/p-c0b3f2c1.system.entry.js +1 -0
  372. package/dist/pine-core/p-c1f8a187.entry.js +1 -0
  373. package/dist/pine-core/{p-47708864.entry.js → p-c5ce6dea.entry.js} +1 -1
  374. package/dist/pine-core/{p-6bc9b904.system.entry.js → p-c8bffb08.system.entry.js} +1 -1
  375. package/dist/pine-core/p-cf24ed1e.system.entry.js +1 -0
  376. package/dist/pine-core/{p-b1e5e8b1.system.entry.js → p-d0d2a886.system.entry.js} +1 -1
  377. package/dist/pine-core/{p-1e87e72a.entry.js → p-d12ef40d.entry.js} +1 -1
  378. package/dist/pine-core/{p-5d1228cb.entry.js → p-d21739eb.entry.js} +1 -1
  379. package/dist/pine-core/p-d280741f.entry.js +1 -0
  380. package/dist/pine-core/{p-ab0b992b.entry.js → p-d415bb01.entry.js} +2 -2
  381. package/dist/pine-core/p-d43db3ba.entry.js +1 -0
  382. package/dist/pine-core/{p-ec2c0e57.entry.js → p-d46adf7d.entry.js} +2 -2
  383. package/dist/pine-core/{p-419e711c.entry.js → p-d7865297.entry.js} +1 -1
  384. package/dist/pine-core/{p-8d6fd5a7.system.entry.js → p-d9ffb2d9.system.entry.js} +1 -1
  385. package/dist/pine-core/p-db5703f2.entry.js +1 -0
  386. package/dist/pine-core/p-dd6d9807.system.entry.js +1 -0
  387. package/dist/pine-core/p-e0da17aa.system.entry.js +1 -0
  388. package/dist/pine-core/{p-a8a1ae32.system.entry.js → p-e1653d75.system.entry.js} +1 -1
  389. package/dist/pine-core/{p-a0edb4ad.entry.js → p-e3600c53.entry.js} +1 -1
  390. package/dist/pine-core/{p-ebe218f8.entry.js → p-e3a7d2db.entry.js} +1 -1
  391. package/dist/pine-core/{p-b5c760c8.system.entry.js → p-e3cd4627.system.entry.js} +1 -1
  392. package/dist/pine-core/{p-950dd70e.system.entry.js → p-e410b0d8.system.entry.js} +1 -1
  393. package/dist/pine-core/p-e5bbe8cc.entry.js +1 -0
  394. package/dist/pine-core/{p-f6d1469d.entry.js → p-e95225cf.entry.js} +1 -1
  395. package/dist/pine-core/{p-43a1d9d7.entry.js → p-ed297f3e.entry.js} +1 -1
  396. package/dist/pine-core/{p-7153efaf.system.entry.js → p-f21aea90.system.entry.js} +1 -1
  397. package/dist/pine-core/{p-39c6e6c9.entry.js → p-f35596cd.entry.js} +1 -1
  398. package/dist/pine-core/{p-b9380ce8.entry.js → p-f7a5062f.entry.js} +1 -1
  399. package/dist/pine-core/{p-d70201bb.entry.js → p-f94667b5.entry.js} +1 -1
  400. package/dist/pine-core/p-fbf5f315.entry.js +1 -0
  401. package/dist/pine-core/{p-c3748812.system.entry.js → p-fec298bb.system.entry.js} +2 -2
  402. package/dist/pine-core/pine-core.css +1 -1
  403. package/dist/pine-core/pine-core.esm.js +1 -1
  404. package/dist/pine-core/pine-core.js +1 -1
  405. package/dist/types/components/pds-divider/pds-divider.d.ts +8 -0
  406. package/dist/types/components/pds-drawer/pds-drawer-content/pds-drawer-content.d.ts +11 -0
  407. package/dist/types/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.d.ts +5 -0
  408. package/dist/types/components/pds-drawer/pds-drawer-header/pds-drawer-header.d.ts +5 -0
  409. package/dist/types/components/pds-drawer/pds-drawer.d.ts +78 -0
  410. package/dist/types/components/pds-modal/pds-modal.d.ts +38 -0
  411. package/dist/types/components/pds-table/pds-table-cell/pds-table-cell.d.ts +2 -1
  412. package/dist/types/components/pds-text/pds-text.d.ts +2 -1
  413. package/dist/types/components.d.ts +237 -4
  414. package/dist/types/index.d.ts +1 -0
  415. package/dist/types/utils/test/reduced-motion.d.ts +30 -0
  416. package/dist/types/utils/truncation-tooltip.d.ts +12 -0
  417. package/dist/vscode.html-data.json +147 -3
  418. package/hydrate/index.js +551 -103
  419. package/hydrate/index.mjs +551 -103
  420. package/package.json +7 -3
  421. package/dist/esm-es5/truncation-tooltip-Blk4GigP.js +0 -1
  422. package/dist/pine-core/p-08b0d298.entry.js +0 -1
  423. package/dist/pine-core/p-0a09ccbe.entry.js +0 -1
  424. package/dist/pine-core/p-20e0d06c.system.entry.js +0 -1
  425. package/dist/pine-core/p-36fc1ade.system.entry.js +0 -1
  426. package/dist/pine-core/p-73619cfc.system.entry.js +0 -1
  427. package/dist/pine-core/p-7803c5b6.system.entry.js +0 -1
  428. package/dist/pine-core/p-7ad6f313.entry.js +0 -1
  429. package/dist/pine-core/p-7b85115b.system.entry.js +0 -1
  430. package/dist/pine-core/p-7b97974e.system.entry.js +0 -1
  431. package/dist/pine-core/p-7e146a45.entry.js +0 -1
  432. package/dist/pine-core/p-8249e027.entry.js +0 -1
  433. package/dist/pine-core/p-86d12f3c.system.entry.js +0 -1
  434. package/dist/pine-core/p-8c85f53a.entry.js +0 -1
  435. package/dist/pine-core/p-92f648ba.entry.js +0 -1
  436. package/dist/pine-core/p-B1rytYxP.system.js +0 -1
  437. package/dist/pine-core/p-BNSGedhN.js +0 -1
  438. package/dist/pine-core/p-NNDTPCWx.js +0 -2
  439. package/dist/pine-core/p-YWpyar7R.system.js +0 -1
  440. package/dist/pine-core/p-af1e2778.entry.js +0 -1
  441. package/dist/pine-core/p-b6812452.system.entry.js +0 -1
  442. package/dist/pine-core/p-b8f288e8.entry.js +0 -1
  443. package/dist/pine-core/p-cd2370d0.system.entry.js +0 -1
  444. package/dist/pine-core/p-d281464e.entry.js +0 -1
  445. package/dist/pine-core/p-dc460e2d.system.entry.js +0 -1
  446. package/dist/pine-core/p-dcc4ee5e.entry.js +0 -1
  447. package/dist/pine-core/p-def5d3d3.entry.js +0 -1
  448. package/dist/pine-core/p-dfa70d20.entry.js +0 -1
  449. package/dist/pine-core/p-eed4b552.system.entry.js +0 -1
  450. /package/dist/esm-es5/{index-BjlFq0VD.js → index-DdPaBxPo.js} +0 -0
  451. /package/dist/pine-core/{p-WYNNo1N0.system.js → p--Llh7wKm.system.js} +0 -0
  452. /package/dist/pine-core/{p-BjlFq0VD.js → p-DdPaBxPo.js} +0 -0
@@ -121,13 +121,13 @@ export class PdsToast {
121
121
  return this.icon && h("pds-icon", { name: this.icon, class: "pds-toast__icon" });
122
122
  }
123
123
  render() {
124
- return (h(Host, { key: '87c9b15656a2765eb9e722c85dba5c5edbe07c42', hidden: !this.isVisible }, h("div", { key: 'bd8b26ef0c33b96603313bce74505953d8fe7410', class: {
124
+ return (h(Host, { key: 'a1ec97158a6665aa25b58b1954b4b5c622590615', hidden: !this.isVisible }, h("div", { key: 'd9b01164364c76512852a260cede50000b73a563', class: {
125
125
  'pds-toast': true,
126
126
  [`pds-toast--${this.type}`]: this.type !== 'default',
127
127
  'pds-toast--animating-out': this.isAnimatingOut
128
- }, role: "alert", "aria-live": "polite" }, this.renderIcon(), h("span", { key: '5f7fd6b70fe130d8b0915da07640bec01b3b2bcb', class: "pds-toast__message" }, h("slot", { key: '4aa0cf737b420ae51297126b423b44d2a8610226' })), this.dismissible && (h("button", { key: 'a8b8e5e9ba956b2d9cca284d114afa37b80570cf', type: "button", part: "dismiss", class: "pds-toast__button", onClick: () => {
128
+ }, role: "alert", "aria-live": "polite" }, this.renderIcon(), h("span", { key: '1f581c7c29ea3fc795dfca061d3575c5a9895b3c', class: "pds-toast__message" }, h("slot", { key: '645b31eae3be23de63ab2562234caf0be2510645' })), this.dismissible && (h("button", { key: '44a62b304468c0fca0b8d490ad9c8b5932176ac9', type: "button", part: "dismiss", class: "pds-toast__button", onClick: () => {
129
129
  this.dismiss();
130
- }, "aria-label": this.dismissLabel }, h("pds-icon", { key: 'dac8f2099b2ab8a68d208aac288d48019df6d7e7', name: "remove" }))))));
130
+ }, "aria-label": this.dismissLabel }, h("pds-icon", { key: 'fde63f279f696d9f02875cc1beee3542c97f0c7e', name: "remove" }))))));
131
131
  }
132
132
  static get is() { return "pds-toast"; }
133
133
  static get encapsulation() { return "shadow"; }
@@ -342,9 +342,9 @@ export class PdsTooltip {
342
342
  }
343
343
  render() {
344
344
  const hostId = this.componentId || undefined;
345
- return (h(Host, { key: '10913091177f60b7de464e302067998e1a847304', id: hostId, class: { 'pds-tooltip--is-open': this.opened } }, h("span", { key: 'f61689273c965a8374e44907003f1ec83b8f28d4', class: "pds-tooltip__trigger", onMouseEnter: this.handleShow, onMouseLeave: this.handleHide,
345
+ return (h(Host, { key: 'a4f25d10de27757ab2551af0e5b8a53336bf8cb4', id: hostId, class: { 'pds-tooltip--is-open': this.opened } }, h("span", { key: '5e9f9afbecbb335ad68b02edf999d2ec62f31a8e', class: "pds-tooltip__trigger", onMouseEnter: this.handleShow, onMouseLeave: this.handleHide,
346
346
  /* focusin/out bubble; ensure keyboard users see tooltips */
347
- onFocusin: this.handleShow, onFocusout: this.handleHide, ref: el => this.triggerEl = el }, h("slot", { key: '7dbbcff01c291b1ec431c80fce898c1ac3b30a86' })), h("div", { key: 'f87df4b6ead21e9f96271c5717ed93b2d9992f65', class: "pds-tooltip__content-slot-wrapper", hidden: true }, h("slot", { key: 'def9f799ef340e59fbf34a0fb3c0271f0fcfd2ca', name: "content" }))));
347
+ onFocusin: this.handleShow, onFocusout: this.handleHide, ref: el => this.triggerEl = el }, h("slot", { key: 'e142f4f09406b7bd3d1ce9005f624b91cf7ec176' })), h("div", { key: 'ebe0faae0af623477486dbba56c24bc3e0a6bc66', class: "pds-tooltip__content-slot-wrapper", hidden: true }, h("slot", { key: '833d31509ba48f10cd0b5eb2f5e8dc509854c25e', name: "content" }))));
348
348
  }
349
349
  static get is() { return "pds-tooltip"; }
350
350
  static get originalStyleUrls() {
@@ -1,2 +1,3 @@
1
1
  export * from './components';
2
+ export { TEXT_SIZES } from './utils/types';
2
3
  import "@pine-ds/icons";
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Reads a target's computed `transition-duration` from within `hostTag`,
3
+ * optionally on a pseudo-element (e.g. `::after`). Works whether `hostTag`
4
+ * renders to a real shadow root (`shadow: true`) or scoped/light DOM
5
+ * (`shadow: false` / `scoped: true`) — Pine components use both.
6
+ *
7
+ * `innerSelector` may be omitted (or `null`) to read the host element itself.
8
+ *
9
+ * Embeds the arguments in a string-evaluated IIFE, the same workaround
10
+ * `runAxe` uses, rather than passing a real function to `page.$eval`: under
11
+ * Jest's coverage instrumentation, a function reference gets serialized with
12
+ * injected `cov_*` counter calls that don't exist in the browser's isolated
13
+ * execution context, throwing a `ReferenceError` there.
14
+ */
15
+ async function readTransitionDuration(page, hostTag, innerSelector, pseudoElement) {
16
+ // Normalise to the `::` form. Chrome, which is what these e2e tests drive,
17
+ // accepts a bare `after` and returns the pseudo-element's style -- verified,
18
+ // so no assertion is wrong today. The CSSOM spec treats a colonless value as
19
+ // invalid and returns the originating element's style instead, which would
20
+ // turn a knob assertion into a silent re-test of its host. Cheap to not
21
+ // depend on the lenient reading.
22
+ const normalisedPseudo = pseudoElement
23
+ ? `::${pseudoElement.replace(/^:{1,2}/, '')}`
24
+ : null;
25
+ const argsJson = JSON.stringify({ hostTag, innerSelector, pseudoElement: normalisedPseudo });
26
+ return page.evaluate(`
27
+ (() => {
28
+ const args = ${argsJson};
29
+ const el = document.querySelector(args.hostTag);
30
+ const root = el.shadowRoot || el;
31
+ const target = args.innerSelector ? root.querySelector(args.innerSelector) : el;
32
+ return getComputedStyle(target, args.pseudoElement || null).transitionDuration;
33
+ })()
34
+ `);
35
+ }
36
+ /**
37
+ * Asserts that an element's `transition-duration` collapses to `0s` once the
38
+ * page emulates `prefers-reduced-motion: reduce`.
39
+ *
40
+ * This is the runtime counterpart to the `pine-design-system/no-hardcoded-motion`
41
+ * Stylelint rule: the rule can only see a component's *source* — that it
42
+ * references `var(--pine-motion-duration-*)` somewhere. It can't see whether
43
+ * that reference actually reaches the declaration that runs at render time
44
+ * (a `var()` could be shadowed, overridden, or simply never wired up right).
45
+ * This closes that gap by reading the real computed style before and after
46
+ * emulating the preference, so a target that *doesn't* zero out fails loudly
47
+ * here even if it fooled the lint rule.
48
+ *
49
+ * Usage:
50
+ *
51
+ * ```ts
52
+ * const page = await newE2EPage();
53
+ * await page.setContent('<pds-switch></pds-switch>');
54
+ * await expectRespectsReducedMotion(page, 'pds-switch', 'input', 'after');
55
+ * ```
56
+ *
57
+ * @param page Stencil E2E page.
58
+ * @param hostTag Custom element tag hosting the shadow root to read from.
59
+ * @param innerSelector Selector for the element within `hostTag`'s shadow
60
+ * root, or `null`/omitted to read `hostTag` itself.
61
+ * @param pseudoElement Pseudo-element to read from the target (e.g. `'after'`
62
+ * for `::after`), or `null`/omitted to read the element's own style.
63
+ */
64
+ export async function expectRespectsReducedMotion(page, hostTag, innerSelector = null, pseudoElement = null) {
65
+ const before = await readTransitionDuration(page, hostTag, innerSelector, pseudoElement);
66
+ await page.emulateMediaFeatures([{ name: 'prefers-reduced-motion', value: 'reduce' }]);
67
+ await page.waitForChanges();
68
+ const after = await readTransitionDuration(page, hostTag, innerSelector, pseudoElement);
69
+ // `transitionDuration` can list one value per transitioned property
70
+ // (e.g. "0.2s, 0.2s"); every one of them must have zeroed out.
71
+ const allZero = after.split(',').every((part) => parseFloat(part.trim()) === 0);
72
+ if (!allZero) {
73
+ const target = `${hostTag}${innerSelector ? ` >>> ${innerSelector}` : ''}${pseudoElement ? `::${pseudoElement}` : ''}`;
74
+ throw new Error(`Expected "${target}" to have a zero transition-duration under prefers-reduced-motion, ` +
75
+ `but got "${after}" (was "${before}" before emulating the preference). Its transition ` +
76
+ `is not actually routed through a --pine-motion-duration-* token at render time.`);
77
+ }
78
+ }
@@ -64,10 +64,12 @@ function isOverflowing(el) {
64
64
  * will display a tooltip showing the full text content. The tooltip is
65
65
  * rendered as a portal on document.body and positioned with Floating UI.
66
66
  *
67
+ * Also owns the element's `tabindex` while it is clipped — see syncTabIndex.
68
+ *
67
69
  * @returns A cleanup function that removes all listeners, observers, and DOM elements.
68
70
  */
69
71
  export function setupTruncationTooltip(options) {
70
- const { hostEl, contentEl, getTooltipText, placement = 'top' } = options;
72
+ const { hostEl, contentEl, getTooltipText, placement = 'top', manageTabIndex = true } = options;
71
73
  injectStyles();
72
74
  let portalEl = null;
73
75
  let isHovering = false;
@@ -76,6 +78,34 @@ export function setupTruncationTooltip(options) {
76
78
  let hideTimeout = null;
77
79
  let resizeObserver = null;
78
80
  let resizeDebounce = null;
81
+ let ownsTabIndex = false;
82
+ let disposed = false;
83
+ /**
84
+ * The tab stop exists only to give the tooltip a focusable anchor, so it
85
+ * belongs on the element while the text is actually clipped and not a moment
86
+ * longer. Deriving it from the caller's prop instead leaves a dead stop on
87
+ * every element that opted into truncation but happens to fit — in a row of
88
+ * chips that doubles the tab stops, half of them landing on a span with no
89
+ * role, no name of its own, and nothing to reveal.
90
+ *
91
+ * Ownership is tracked rather than inferred from the value: if the consumer
92
+ * already put a tabindex on the element (a roving -1, say), that is theirs
93
+ * and we never touch it.
94
+ */
95
+ function syncTabIndex() {
96
+ if (!manageTabIndex)
97
+ return;
98
+ if (isOverflowing(contentEl)) {
99
+ if (!ownsTabIndex && contentEl.hasAttribute('tabindex'))
100
+ return;
101
+ ownsTabIndex = true;
102
+ contentEl.setAttribute('tabindex', '0');
103
+ }
104
+ else if (ownsTabIndex) {
105
+ ownsTabIndex = false;
106
+ contentEl.removeAttribute('tabindex');
107
+ }
108
+ }
79
109
  // Use ResizeObserver to re-evaluate overflow when the element resizes
80
110
  // Debounced to prevent performance issues during rapid window resizing
81
111
  if (typeof ResizeObserver !== 'undefined') {
@@ -85,6 +115,7 @@ export function setupTruncationTooltip(options) {
85
115
  }
86
116
  resizeDebounce = setTimeout(() => {
87
117
  resizeDebounce = null;
118
+ syncTabIndex();
88
119
  // If tooltip is showing but text no longer overflows, hide it
89
120
  if (portalEl && portalEl.isConnected && !isOverflowing(contentEl)) {
90
121
  hideTooltip();
@@ -93,6 +124,18 @@ export function setupTruncationTooltip(options) {
93
124
  });
94
125
  resizeObserver.observe(contentEl);
95
126
  }
127
+ // Measure now so the common case is right on the first paint, rather than
128
+ // waiting out the observer's debounce.
129
+ syncTabIndex();
130
+ // A web font swapping in changes scrollWidth without changing the clipped
131
+ // box's size, so ResizeObserver never fires for it — the element would keep
132
+ // whatever the fallback font measured. Re-measure once the fonts settle.
133
+ if (typeof document !== 'undefined' && document.fonts !== undefined) {
134
+ document.fonts.ready.then(() => {
135
+ if (!disposed)
136
+ syncTabIndex();
137
+ });
138
+ }
96
139
  function createPortal() {
97
140
  if (portalEl)
98
141
  return;
@@ -224,6 +267,7 @@ export function setupTruncationTooltip(options) {
224
267
  hostEl.addEventListener('focusout', handleFocusOut);
225
268
  // Return cleanup function
226
269
  return () => {
270
+ disposed = true;
227
271
  cancelHideTimeout();
228
272
  if (resizeDebounce) {
229
273
  clearTimeout(resizeDebounce);
@@ -232,6 +276,12 @@ export function setupTruncationTooltip(options) {
232
276
  if (resizeObserver) {
233
277
  resizeObserver.disconnect();
234
278
  }
279
+ // Hand the element back as we found it — truncation may simply have been
280
+ // turned off, in which case the element outlives this teardown.
281
+ if (ownsTabIndex) {
282
+ ownsTabIndex = false;
283
+ contentEl.removeAttribute('tabindex');
284
+ }
235
285
  hostEl.removeEventListener('mouseenter', handleMouseEnter);
236
286
  hostEl.removeEventListener('mouseleave', handleMouseLeave);
237
287
  hostEl.removeEventListener('focusin', handleFocusIn);