@pine-ds/core 4.1.0 → 4.3.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 (481) 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-button2.js +1 -1
  5. package/components/pds-checkbox2.js +1 -1
  6. package/components/pds-chip2.js +1 -1
  7. package/components/pds-combobox.js +1 -1
  8. package/components/pds-copytext.js +1 -1
  9. package/components/pds-drawer-content.d.ts +11 -0
  10. package/components/pds-drawer-content.js +1 -0
  11. package/components/pds-drawer-footer.d.ts +11 -0
  12. package/components/pds-drawer-footer.js +1 -0
  13. package/components/pds-drawer-header.d.ts +11 -0
  14. package/components/pds-drawer-header.js +1 -0
  15. package/components/pds-drawer.d.ts +11 -0
  16. package/components/pds-drawer.js +1 -0
  17. package/components/pds-dropdown-menu-item.js +1 -1
  18. package/components/pds-dropdown-menu-separator.js +1 -1
  19. package/components/pds-dropdown-menu.js +1 -1
  20. package/components/pds-filter.js +1 -1
  21. package/components/pds-filters.js +1 -1
  22. package/components/pds-icon2.js +1 -1
  23. package/components/pds-image.js +1 -1
  24. package/components/pds-input.js +1 -1
  25. package/components/pds-link2.js +1 -1
  26. package/components/pds-loader2.js +1 -1
  27. package/components/pds-modal-content.js +1 -1
  28. package/components/pds-modal-footer.js +1 -1
  29. package/components/pds-modal-header.js +1 -1
  30. package/components/pds-modal.js +1 -1
  31. package/components/pds-modal2.js +1 -0
  32. package/components/pds-multiselect.js +1 -1
  33. package/components/pds-popover.js +1 -1
  34. package/components/pds-progress.js +1 -1
  35. package/components/pds-property.js +1 -1
  36. package/components/pds-radio-group.js +1 -1
  37. package/components/pds-radio.js +1 -1
  38. package/components/pds-row.js +1 -1
  39. package/components/pds-select.js +1 -1
  40. package/components/pds-sortable-item.js +1 -1
  41. package/components/pds-sortable.js +2 -2
  42. package/components/pds-switch.js +1 -1
  43. package/components/pds-table-body.js +1 -1
  44. package/components/pds-table-cell2.js +1 -1
  45. package/components/pds-table-head-cell2.js +1 -1
  46. package/components/pds-table-head.js +1 -1
  47. package/components/pds-table-row.js +1 -1
  48. package/components/pds-tabpanel.js +1 -1
  49. package/components/pds-tabs.js +1 -1
  50. package/components/pds-text2.js +1 -1
  51. package/components/pds-textarea.js +1 -1
  52. package/components/pds-toast.js +1 -1
  53. package/components/pds-tooltip.js +1 -1
  54. package/components/truncation-tooltip.js +1 -1
  55. package/dist/cjs/{index-CuQil7H0.js → index-CaLa1zy9.js} +1 -1
  56. package/dist/cjs/{index-BMV0nzMk.js → index-DYvijwA6.js} +1 -1
  57. package/dist/cjs/index.cjs.js +20 -0
  58. package/dist/cjs/loader.cjs.js +2 -2
  59. package/dist/cjs/mock-pds-modal.cjs.entry.js +3 -3
  60. package/dist/cjs/pds-accordion.cjs.entry.js +2 -2
  61. package/dist/cjs/pds-alert.cjs.entry.js +1 -1
  62. package/dist/cjs/pds-avatar.cjs.entry.js +2 -2
  63. package/dist/cjs/pds-box.cjs.entry.js +2 -2
  64. package/dist/cjs/pds-button.cjs.entry.js +4 -4
  65. package/dist/cjs/pds-checkbox.cjs.entry.js +3 -3
  66. package/dist/cjs/pds-chip.cjs.entry.js +46 -12
  67. package/dist/cjs/pds-combobox.cjs.entry.js +3 -3
  68. package/dist/cjs/pds-container.cjs.entry.js +1 -1
  69. package/dist/cjs/pds-copytext.cjs.entry.js +8 -4
  70. package/dist/cjs/pds-divider.cjs.entry.js +1 -1
  71. package/dist/cjs/pds-drawer-content.cjs.entry.js +23 -0
  72. package/dist/cjs/pds-drawer-footer.cjs.entry.js +23 -0
  73. package/dist/cjs/pds-drawer-header.cjs.entry.js +23 -0
  74. package/dist/cjs/pds-drawer.cjs.entry.js +137 -0
  75. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +2 -2
  76. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +2 -2
  77. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +2 -2
  78. package/dist/cjs/pds-filter.cjs.entry.js +3 -3
  79. package/dist/cjs/pds-filters.cjs.entry.js +2 -2
  80. package/dist/cjs/pds-icon.cjs.entry.js +2 -2
  81. package/dist/cjs/pds-image.cjs.entry.js +3 -3
  82. package/dist/cjs/pds-input.cjs.entry.js +5 -5
  83. package/dist/cjs/pds-link.cjs.entry.js +5 -5
  84. package/dist/cjs/pds-loader.cjs.entry.js +2 -2
  85. package/dist/cjs/pds-modal-content.cjs.entry.js +3 -3
  86. package/dist/cjs/pds-modal-footer.cjs.entry.js +2 -2
  87. package/dist/cjs/pds-modal-header.cjs.entry.js +2 -2
  88. package/dist/cjs/pds-modal.cjs.entry.js +173 -14
  89. package/dist/cjs/pds-multiselect.cjs.entry.js +6 -6
  90. package/dist/cjs/pds-popover.cjs.entry.js +2 -2
  91. package/dist/cjs/pds-progress.cjs.entry.js +4 -2
  92. package/dist/cjs/pds-property.cjs.entry.js +2 -2
  93. package/dist/cjs/pds-radio-group.cjs.entry.js +5 -5
  94. package/dist/cjs/pds-radio.cjs.entry.js +6 -6
  95. package/dist/cjs/pds-row.cjs.entry.js +2 -2
  96. package/dist/cjs/pds-select.cjs.entry.js +3 -3
  97. package/dist/cjs/pds-sortable-item.cjs.entry.js +3 -3
  98. package/dist/cjs/pds-sortable.cjs.entry.js +2 -2
  99. package/dist/cjs/pds-switch.cjs.entry.js +6 -6
  100. package/dist/cjs/pds-tab.cjs.entry.js +1 -1
  101. package/dist/cjs/pds-table-body.cjs.entry.js +2 -2
  102. package/dist/cjs/pds-table-cell.cjs.entry.js +4 -4
  103. package/dist/cjs/pds-table-head-cell.cjs.entry.js +4 -4
  104. package/dist/cjs/pds-table-head.cjs.entry.js +2 -2
  105. package/dist/cjs/pds-table-row.cjs.entry.js +2 -2
  106. package/dist/cjs/pds-table.cjs.entry.js +1 -1
  107. package/dist/cjs/pds-tabpanel.cjs.entry.js +2 -2
  108. package/dist/cjs/pds-tabs.cjs.entry.js +2 -2
  109. package/dist/cjs/pds-text.cjs.entry.js +7 -25
  110. package/dist/cjs/pds-textarea.cjs.entry.js +7 -7
  111. package/dist/cjs/pds-toast.cjs.entry.js +4 -4
  112. package/dist/cjs/pds-tooltip.cjs.entry.js +3 -3
  113. package/dist/cjs/pine-core.cjs.js +2 -2
  114. package/dist/cjs/{truncation-tooltip-CVzAha5B.js → truncation-tooltip-Bps7_rUy.js} +51 -1
  115. package/dist/cjs/{utils-7jx8T2mW.js → utils-KWALOgy9.js} +16 -2
  116. package/dist/collection/collection-manifest.json +4 -0
  117. package/dist/collection/components/pds-button/pds-button.css +1 -2
  118. package/dist/collection/components/pds-checkbox/pds-checkbox.css +6 -4
  119. package/dist/collection/components/pds-chip/pds-chip.css +60 -6
  120. package/dist/collection/components/pds-chip/pds-chip.js +82 -8
  121. package/dist/collection/components/pds-chip/pds-chip.tokens.css +16 -0
  122. package/dist/collection/components/pds-chip/stories/pds-chip.stories.js +39 -1
  123. package/dist/collection/components/pds-combobox/pds-combobox.css +1 -2
  124. package/dist/collection/components/pds-combobox/pds-combobox.js +1 -1
  125. package/dist/collection/components/pds-copytext/pds-copytext.js +5 -1
  126. package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.css +22 -0
  127. package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.js +29 -0
  128. package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.css +15 -0
  129. package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.js +23 -0
  130. package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.css +15 -0
  131. package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.js +23 -0
  132. package/dist/collection/components/pds-drawer/pds-drawer.css +36 -0
  133. package/dist/collection/components/pds-drawer/pds-drawer.js +362 -0
  134. package/dist/collection/components/pds-drawer/stories/pds-drawer.stories.js +72 -0
  135. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +1 -1
  136. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +1 -1
  137. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +1 -1
  138. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +1 -1
  139. package/dist/collection/components/pds-filters/pds-filters.js +1 -1
  140. package/dist/collection/components/pds-image/pds-image.js +2 -2
  141. package/dist/collection/components/pds-input/pds-input.js +2 -2
  142. package/dist/collection/components/pds-link/pds-link.js +2 -2
  143. package/dist/collection/components/pds-loader/pds-loader.js +1 -1
  144. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +2 -2
  145. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +1 -1
  146. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +1 -1
  147. package/dist/collection/components/pds-modal/pds-modal.css +4 -0
  148. package/dist/collection/components/pds-modal/pds-modal.js +209 -16
  149. package/dist/collection/components/pds-modal/stories/pds-modal.stories.js +14 -0
  150. package/dist/collection/components/pds-modal/test/mock-pds-modal.js +1 -1
  151. package/dist/collection/components/pds-multiselect/pds-multiselect.js +3 -3
  152. package/dist/collection/components/pds-popover/pds-popover.js +1 -1
  153. package/dist/collection/components/pds-progress/pds-progress.js +3 -1
  154. package/dist/collection/components/pds-property/pds-property.js +1 -1
  155. package/dist/collection/components/pds-radio/pds-radio.css +1 -2
  156. package/dist/collection/components/pds-radio/pds-radio.js +3 -3
  157. package/dist/collection/components/pds-radio-group/pds-radio-group.js +3 -3
  158. package/dist/collection/components/pds-row/pds-row.js +1 -1
  159. package/dist/collection/components/pds-select/pds-select.js +1 -1
  160. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
  161. package/dist/collection/components/pds-sortable/pds-sortable.js +1 -1
  162. package/dist/collection/components/pds-switch/pds-switch.css +1 -1
  163. package/dist/collection/components/pds-switch/pds-switch.js +3 -3
  164. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
  165. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +3 -3
  166. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +1 -1
  167. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +2 -2
  168. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +1 -1
  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 +2 -2
  172. package/dist/collection/components/pds-textarea/pds-textarea.js +4 -4
  173. package/dist/collection/components/pds-toast/pds-toast.js +3 -3
  174. package/dist/collection/components/pds-tooltip/pds-tooltip.js +2 -2
  175. package/dist/collection/index.js +1 -0
  176. package/dist/collection/utils/test/reduced-motion.js +78 -0
  177. package/dist/collection/utils/truncation-tooltip.js +51 -1
  178. package/dist/collection/utils/utils.js +16 -2
  179. package/dist/docs.json +492 -15
  180. package/dist/esm/{index-Bu9gFIxM.js → index-BU1hN5Vy.js} +1 -1
  181. package/dist/esm/{index-CTLu1TM4.js → index-DcT8--Dn.js} +1 -1
  182. package/dist/esm/index.js +19 -0
  183. package/dist/esm/loader.js +3 -3
  184. package/dist/esm/mock-pds-modal.entry.js +3 -3
  185. package/dist/esm/pds-accordion.entry.js +2 -2
  186. package/dist/esm/pds-alert.entry.js +1 -1
  187. package/dist/esm/pds-avatar.entry.js +2 -2
  188. package/dist/esm/pds-box.entry.js +2 -2
  189. package/dist/esm/pds-button.entry.js +4 -4
  190. package/dist/esm/pds-checkbox.entry.js +3 -3
  191. package/dist/esm/pds-chip.entry.js +46 -12
  192. package/dist/esm/pds-combobox.entry.js +3 -3
  193. package/dist/esm/pds-container.entry.js +1 -1
  194. package/dist/esm/pds-copytext.entry.js +8 -4
  195. package/dist/esm/pds-divider.entry.js +1 -1
  196. package/dist/esm/pds-drawer-content.entry.js +21 -0
  197. package/dist/esm/pds-drawer-footer.entry.js +21 -0
  198. package/dist/esm/pds-drawer-header.entry.js +21 -0
  199. package/dist/esm/pds-drawer.entry.js +135 -0
  200. package/dist/esm/pds-dropdown-menu-item.entry.js +2 -2
  201. package/dist/esm/pds-dropdown-menu-separator.entry.js +2 -2
  202. package/dist/esm/pds-dropdown-menu.entry.js +2 -2
  203. package/dist/esm/pds-filter.entry.js +3 -3
  204. package/dist/esm/pds-filters.entry.js +2 -2
  205. package/dist/esm/pds-icon.entry.js +2 -2
  206. package/dist/esm/pds-image.entry.js +3 -3
  207. package/dist/esm/pds-input.entry.js +5 -5
  208. package/dist/esm/pds-link.entry.js +5 -5
  209. package/dist/esm/pds-loader.entry.js +2 -2
  210. package/dist/esm/pds-modal-content.entry.js +3 -3
  211. package/dist/esm/pds-modal-footer.entry.js +2 -2
  212. package/dist/esm/pds-modal-header.entry.js +2 -2
  213. package/dist/esm/pds-modal.entry.js +173 -14
  214. package/dist/esm/pds-multiselect.entry.js +6 -6
  215. package/dist/esm/pds-popover.entry.js +2 -2
  216. package/dist/esm/pds-progress.entry.js +4 -2
  217. package/dist/esm/pds-property.entry.js +2 -2
  218. package/dist/esm/pds-radio-group.entry.js +5 -5
  219. package/dist/esm/pds-radio.entry.js +6 -6
  220. package/dist/esm/pds-row.entry.js +2 -2
  221. package/dist/esm/pds-select.entry.js +3 -3
  222. package/dist/esm/pds-sortable-item.entry.js +3 -3
  223. package/dist/esm/pds-sortable.entry.js +2 -2
  224. package/dist/esm/pds-switch.entry.js +6 -6
  225. package/dist/esm/pds-tab.entry.js +1 -1
  226. package/dist/esm/pds-table-body.entry.js +2 -2
  227. package/dist/esm/pds-table-cell.entry.js +4 -4
  228. package/dist/esm/pds-table-head-cell.entry.js +4 -4
  229. package/dist/esm/pds-table-head.entry.js +2 -2
  230. package/dist/esm/pds-table-row.entry.js +2 -2
  231. package/dist/esm/pds-table.entry.js +1 -1
  232. package/dist/esm/pds-tabpanel.entry.js +2 -2
  233. package/dist/esm/pds-tabs.entry.js +2 -2
  234. package/dist/esm/pds-text.entry.js +5 -23
  235. package/dist/esm/pds-textarea.entry.js +7 -7
  236. package/dist/esm/pds-toast.entry.js +4 -4
  237. package/dist/esm/pds-tooltip.entry.js +3 -3
  238. package/dist/esm/pine-core.js +3 -3
  239. package/dist/esm/{truncation-tooltip-Blk4GigP.js → truncation-tooltip-CdtEBn_5.js} +51 -1
  240. package/dist/esm/{utils-tJa4KYNO.js → utils-u_0lxWnH.js} +16 -2
  241. package/dist/esm-es5/{index-CTLu1TM4.js → index-DcT8--Dn.js} +2 -2
  242. package/dist/esm-es5/index.js +1 -0
  243. package/dist/esm-es5/loader.js +1 -1
  244. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  245. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  246. package/dist/esm-es5/pds-alert.entry.js +1 -1
  247. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  248. package/dist/esm-es5/pds-box.entry.js +1 -1
  249. package/dist/esm-es5/pds-button.entry.js +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-container.entry.js +1 -1
  254. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  255. package/dist/esm-es5/pds-divider.entry.js +1 -1
  256. package/dist/esm-es5/pds-drawer-content.entry.js +1 -0
  257. package/dist/esm-es5/pds-drawer-footer.entry.js +1 -0
  258. package/dist/esm-es5/pds-drawer-header.entry.js +1 -0
  259. package/dist/esm-es5/pds-drawer.entry.js +1 -0
  260. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  261. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  262. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  263. package/dist/esm-es5/pds-filter.entry.js +1 -1
  264. package/dist/esm-es5/pds-filters.entry.js +1 -1
  265. package/dist/esm-es5/pds-icon.entry.js +1 -1
  266. package/dist/esm-es5/pds-image.entry.js +1 -1
  267. package/dist/esm-es5/pds-input.entry.js +1 -1
  268. package/dist/esm-es5/pds-link.entry.js +1 -1
  269. package/dist/esm-es5/pds-loader.entry.js +1 -1
  270. package/dist/esm-es5/pds-modal-content.entry.js +1 -1
  271. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  272. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  273. package/dist/esm-es5/pds-modal.entry.js +1 -1
  274. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  275. package/dist/esm-es5/pds-popover.entry.js +1 -1
  276. package/dist/esm-es5/pds-progress.entry.js +1 -1
  277. package/dist/esm-es5/pds-property.entry.js +1 -1
  278. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  279. package/dist/esm-es5/pds-radio.entry.js +1 -1
  280. package/dist/esm-es5/pds-row.entry.js +1 -1
  281. package/dist/esm-es5/pds-select.entry.js +1 -1
  282. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  283. package/dist/esm-es5/pds-sortable.entry.js +2 -2
  284. package/dist/esm-es5/pds-switch.entry.js +1 -1
  285. package/dist/esm-es5/pds-tab.entry.js +1 -1
  286. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  287. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  288. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  289. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  290. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  291. package/dist/esm-es5/pds-table.entry.js +1 -1
  292. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  293. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  294. package/dist/esm-es5/pds-text.entry.js +1 -1
  295. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  296. package/dist/esm-es5/pds-toast.entry.js +1 -1
  297. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  298. package/dist/esm-es5/pine-core.js +1 -1
  299. package/dist/esm-es5/truncation-tooltip-CdtEBn_5.js +1 -0
  300. package/dist/pine-core/index.esm.js +1 -0
  301. package/dist/pine-core/p-003df3b3.entry.js +1 -0
  302. package/dist/pine-core/{p-92ef1608.system.entry.js → p-02452806.system.entry.js} +1 -1
  303. package/dist/pine-core/{p-5d585aa8.entry.js → p-026ee6de.entry.js} +1 -1
  304. package/dist/pine-core/{p-463eb0e6.system.entry.js → p-03f3fc92.system.entry.js} +1 -1
  305. package/dist/pine-core/p-06375326.system.entry.js +1 -0
  306. package/dist/pine-core/p-08196d6c.entry.js +1 -0
  307. package/dist/pine-core/{p-bf3afa16.system.entry.js → p-089606b8.system.entry.js} +1 -1
  308. package/dist/pine-core/p-12941e0d.entry.js +1 -0
  309. package/dist/pine-core/{p-3b9e77b3.entry.js → p-13bb89ff.entry.js} +1 -1
  310. package/dist/pine-core/{p-1649dd61.system.entry.js → p-15a0fa0a.system.entry.js} +1 -1
  311. package/dist/pine-core/{p-3050c66f.entry.js → p-1abae35f.entry.js} +1 -1
  312. package/dist/pine-core/p-1df5e088.entry.js +1 -0
  313. package/dist/pine-core/{p-460aa66f.system.entry.js → p-20753e42.system.entry.js} +1 -1
  314. package/dist/pine-core/{p-12ec8186.system.entry.js → p-24214ab9.system.entry.js} +1 -1
  315. package/dist/pine-core/p-250011ba.entry.js +1 -0
  316. package/dist/pine-core/{p-9b68669f.entry.js → p-2b420257.entry.js} +1 -1
  317. package/dist/pine-core/{p-86bc2a0c.entry.js → p-2bb101c2.entry.js} +1 -1
  318. package/dist/pine-core/{p-6089d811.entry.js → p-2dbc90ba.entry.js} +1 -1
  319. package/dist/pine-core/{p-2fd71a0c.entry.js → p-317337e4.entry.js} +1 -1
  320. package/dist/pine-core/{p-a9e54964.entry.js → p-32fc82c2.entry.js} +1 -1
  321. package/dist/pine-core/{p-714bfdbd.entry.js → p-35edd8b0.entry.js} +1 -1
  322. package/dist/pine-core/p-375eb7f4.entry.js +1 -0
  323. package/dist/pine-core/{p-e1653d75.system.entry.js → p-3b555f06.system.entry.js} +1 -1
  324. package/dist/pine-core/p-3b796898.entry.js +1 -0
  325. package/dist/pine-core/{p-c0753d9f.entry.js → p-3c5489ce.entry.js} +1 -1
  326. package/dist/pine-core/{p-8702635d.system.entry.js → p-3e868906.system.entry.js} +1 -1
  327. package/dist/pine-core/{p-eb4058ed.system.entry.js → p-441682f4.system.entry.js} +1 -1
  328. package/dist/pine-core/{p-7b1e3e91.entry.js → p-44222439.entry.js} +1 -1
  329. package/dist/pine-core/p-45d55983.entry.js +1 -0
  330. package/dist/pine-core/{p-544ccf67.entry.js → p-464f23e6.entry.js} +1 -1
  331. package/dist/pine-core/{p-aecaff12.entry.js → p-49c6112a.entry.js} +1 -1
  332. package/dist/pine-core/p-4bd57896.system.entry.js +1 -0
  333. package/dist/pine-core/{p-b0531455.entry.js → p-4cbb691f.entry.js} +1 -1
  334. package/dist/pine-core/{p-46f0dda5.system.entry.js → p-4ebdb90b.system.entry.js} +1 -1
  335. package/dist/pine-core/{p-b109de2e.entry.js → p-4f5aacd9.entry.js} +1 -1
  336. package/dist/pine-core/{p-9187c26c.system.entry.js → p-55532d56.system.entry.js} +1 -1
  337. package/dist/pine-core/{p-f35596cd.entry.js → p-558ac401.entry.js} +1 -1
  338. package/dist/pine-core/{p-c09dab1a.system.entry.js → p-57784f2f.system.entry.js} +1 -1
  339. package/dist/pine-core/p-5a8345e2.entry.js +1 -0
  340. package/dist/pine-core/{p-4923a3fe.entry.js → p-5c5bd609.entry.js} +1 -1
  341. package/dist/pine-core/p-5d2f95bd.entry.js +1 -0
  342. package/dist/pine-core/p-5f3d0c86.system.entry.js +1 -0
  343. package/dist/pine-core/{p-a3c4c0ee.entry.js → p-5f5339ab.entry.js} +1 -1
  344. package/dist/pine-core/{p-bfa640f4.system.entry.js → p-67fc26e5.system.entry.js} +1 -1
  345. package/dist/pine-core/p-6a6a767b.system.entry.js +1 -0
  346. package/dist/pine-core/p-6b260a97.entry.js +1 -0
  347. package/dist/pine-core/{p-d804d37b.system.entry.js → p-6b3d8c2b.system.entry.js} +1 -1
  348. package/dist/pine-core/p-6dabeebc.system.entry.js +3 -0
  349. package/dist/pine-core/{p-d157a33a.entry.js → p-70891202.entry.js} +1 -1
  350. package/dist/pine-core/p-70fb83d4.entry.js +1 -0
  351. package/dist/pine-core/{p-7a1971ec.entry.js → p-73c3a73f.entry.js} +1 -1
  352. package/dist/pine-core/p-73fa955a.system.entry.js +1 -0
  353. package/dist/pine-core/p-755e0b3c.system.entry.js +1 -0
  354. package/dist/pine-core/p-77082557.system.entry.js +1 -0
  355. package/dist/pine-core/{p-65557500.entry.js → p-7e4729e0.entry.js} +1 -1
  356. package/dist/pine-core/p-8b051229.entry.js +1 -0
  357. package/dist/pine-core/{p-c713ffc6.system.entry.js → p-8d1e7b3c.system.entry.js} +1 -1
  358. package/dist/pine-core/{p-63f5f66f.system.entry.js → p-8d8a8550.system.entry.js} +1 -1
  359. package/dist/pine-core/{p-2d4b9253.entry.js → p-93486f2e.entry.js} +1 -1
  360. package/dist/pine-core/{p-b255d3b7.entry.js → p-93ae562d.entry.js} +1 -1
  361. package/dist/pine-core/{p-ce79321b.system.entry.js → p-93c52e2b.system.entry.js} +1 -1
  362. package/dist/pine-core/{p-08151143.system.entry.js → p-95b8bece.system.entry.js} +1 -1
  363. package/dist/pine-core/{p-af4a24d9.entry.js → p-95defb53.entry.js} +1 -1
  364. package/dist/pine-core/{p-92c79ed4.system.entry.js → p-99f300ef.system.entry.js} +1 -1
  365. package/dist/pine-core/p-9d77f2f8.system.entry.js +1 -0
  366. package/dist/pine-core/p-9d902000.system.entry.js +1 -0
  367. package/dist/pine-core/p-9ef355b7.entry.js +1 -0
  368. package/dist/pine-core/p-B2nn1gSd.js +1 -0
  369. package/dist/pine-core/{p-CRCxGYgw.system.js → p-B2qvvB3q.system.js} +1 -1
  370. package/dist/pine-core/p-BI7Ml0VF.system.js +1 -0
  371. package/dist/pine-core/p-CJ8t3EBJ.system.js +2 -0
  372. package/dist/pine-core/p-DcT8--Dn.js +2 -0
  373. package/dist/pine-core/p-G3CPPJEt.system.js +1 -0
  374. package/dist/pine-core/p-a009ab10.system.entry.js +1 -0
  375. package/dist/pine-core/p-a616385b.system.entry.js +1 -0
  376. package/dist/pine-core/{p-bba759f8.system.entry.js → p-a6a269da.system.entry.js} +1 -1
  377. package/dist/pine-core/p-a8cd2ab5.entry.js +1 -0
  378. package/dist/pine-core/p-a8f1a48d.entry.js +1 -0
  379. package/dist/pine-core/p-b0becff3.system.entry.js +1 -0
  380. package/dist/pine-core/p-b45b8f8b.system.entry.js +1 -0
  381. package/dist/pine-core/{p-e16dfb32.system.entry.js → p-b53d9620.system.entry.js} +1 -1
  382. package/dist/pine-core/p-b85bb61d.system.entry.js +1 -0
  383. package/dist/pine-core/{p-ae296598.entry.js → p-b8a5597d.entry.js} +1 -1
  384. package/dist/pine-core/p-b9a857fc.system.entry.js +1 -0
  385. package/dist/pine-core/p-bd9b2931.system.entry.js +1 -0
  386. package/dist/pine-core/p-bdded57a.system.entry.js +1 -0
  387. package/dist/pine-core/{p-4dad0878.entry.js → p-bf025e38.entry.js} +1 -1
  388. package/dist/pine-core/{p-0fcda1ec.entry.js → p-c08b1697.entry.js} +1 -1
  389. package/dist/pine-core/p-c1a65082.entry.js +1 -0
  390. package/dist/pine-core/p-c1d1befb.system.entry.js +1 -0
  391. package/dist/pine-core/{p-1e952dbb.entry.js → p-c5b6b545.entry.js} +2 -2
  392. package/dist/pine-core/{p-ce63f726.system.entry.js → p-c6426e16.system.entry.js} +1 -1
  393. package/dist/pine-core/{p-d54af26c.system.entry.js → p-cfcb89d1.system.entry.js} +1 -1
  394. package/dist/pine-core/{p-aa208514.entry.js → p-d33d65f6.entry.js} +1 -1
  395. package/dist/pine-core/p-d70aa0c7.system.entry.js +1 -0
  396. package/dist/pine-core/{p-902b3e8b.system.entry.js → p-d9c1ee36.system.entry.js} +1 -1
  397. package/dist/pine-core/{p-e450eb27.system.entry.js → p-df285ece.system.entry.js} +1 -1
  398. package/dist/pine-core/{p-04a30a2d.system.entry.js → p-e039ebb6.system.entry.js} +1 -1
  399. package/dist/pine-core/{p-4d6944aa.entry.js → p-e055c543.entry.js} +1 -1
  400. package/dist/pine-core/{p-2af19aa7.entry.js → p-e08e4ca7.entry.js} +1 -1
  401. package/dist/pine-core/p-ea986474.system.entry.js +1 -0
  402. package/dist/pine-core/{p-afd07d5b.entry.js → p-ec04d4c3.entry.js} +1 -1
  403. package/dist/pine-core/p-ee114aef.entry.js +1 -0
  404. package/dist/pine-core/{p-d415bb01.entry.js → p-ee997fbf.entry.js} +2 -2
  405. package/dist/pine-core/{p-8e6a8a8e.entry.js → p-f1365550.entry.js} +1 -1
  406. package/dist/pine-core/{p-fcf91f14.system.entry.js → p-f26dcbc2.system.entry.js} +1 -1
  407. package/dist/pine-core/{p-cf72e9b1.system.entry.js → p-f5cf98be.system.entry.js} +1 -1
  408. package/dist/pine-core/{p-b17fa86a.system.entry.js → p-f682f08a.system.entry.js} +1 -1
  409. package/dist/pine-core/p-f89197c9.entry.js +1 -0
  410. package/dist/pine-core/p-f9f7101e.entry.js +1 -0
  411. package/dist/pine-core/{p-226232a7.system.entry.js → p-fa2a786d.system.entry.js} +1 -1
  412. package/dist/pine-core/{p-7c18e9e8.system.entry.js → p-fa8d3155.system.entry.js} +2 -2
  413. package/dist/pine-core/p-fb774f89.system.entry.js +1 -0
  414. package/dist/pine-core/{p-ba8bd9dc.system.entry.js → p-fbb72e66.system.entry.js} +1 -1
  415. package/dist/pine-core/pine-core.css +1 -1
  416. package/dist/pine-core/pine-core.esm.js +1 -1
  417. package/dist/pine-core/pine-core.js +1 -1
  418. package/dist/types/components/pds-chip/pds-chip.d.ts +12 -0
  419. package/dist/types/components/pds-drawer/pds-drawer-content/pds-drawer-content.d.ts +11 -0
  420. package/dist/types/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.d.ts +5 -0
  421. package/dist/types/components/pds-drawer/pds-drawer-header/pds-drawer-header.d.ts +5 -0
  422. package/dist/types/components/pds-drawer/pds-drawer.d.ts +78 -0
  423. package/dist/types/components/pds-modal/pds-modal.d.ts +47 -2
  424. package/dist/types/components/pds-table/pds-table-cell/pds-table-cell.d.ts +2 -1
  425. package/dist/types/components/pds-text/pds-text.d.ts +2 -1
  426. package/dist/types/components.d.ts +253 -11
  427. package/dist/types/index.d.ts +1 -0
  428. package/dist/types/utils/test/reduced-motion.d.ts +30 -0
  429. package/dist/types/utils/truncation-tooltip.d.ts +12 -0
  430. package/dist/types/utils/types.d.ts +2 -1
  431. package/dist/types/utils/utils.d.ts +16 -1
  432. package/dist/vscode.html-data.json +169 -6
  433. package/hydrate/index.js +623 -115
  434. package/hydrate/index.mjs +623 -115
  435. package/package.json +7 -3
  436. package/dist/esm-es5/truncation-tooltip-Blk4GigP.js +0 -1
  437. package/dist/pine-core/p-056667f0.entry.js +0 -1
  438. package/dist/pine-core/p-0d73d473.entry.js +0 -1
  439. package/dist/pine-core/p-0e89a189.entry.js +0 -1
  440. package/dist/pine-core/p-1ba361cb.entry.js +0 -1
  441. package/dist/pine-core/p-210f0994.system.entry.js +0 -1
  442. package/dist/pine-core/p-222ff58e.system.entry.js +0 -1
  443. package/dist/pine-core/p-228a9068.system.entry.js +0 -1
  444. package/dist/pine-core/p-2e214db6.entry.js +0 -1
  445. package/dist/pine-core/p-33de0eb7.system.entry.js +0 -1
  446. package/dist/pine-core/p-3aec9079.entry.js +0 -1
  447. package/dist/pine-core/p-3cdc1a5b.entry.js +0 -1
  448. package/dist/pine-core/p-4faff617.entry.js +0 -1
  449. package/dist/pine-core/p-50e0f726.system.entry.js +0 -1
  450. package/dist/pine-core/p-520f7a5b.entry.js +0 -1
  451. package/dist/pine-core/p-53999cd6.system.entry.js +0 -1
  452. package/dist/pine-core/p-5c239f0a.entry.js +0 -1
  453. package/dist/pine-core/p-611f68b7.system.entry.js +0 -1
  454. package/dist/pine-core/p-7691a875.system.entry.js +0 -3
  455. package/dist/pine-core/p-85434de8.system.entry.js +0 -1
  456. package/dist/pine-core/p-897fe88c.entry.js +0 -1
  457. package/dist/pine-core/p-9487ff20.system.entry.js +0 -1
  458. package/dist/pine-core/p-9507eb49.system.entry.js +0 -1
  459. package/dist/pine-core/p-97198cb6.system.entry.js +0 -1
  460. package/dist/pine-core/p-9a7294e7.system.entry.js +0 -1
  461. package/dist/pine-core/p-9fd1e8f4.system.entry.js +0 -1
  462. package/dist/pine-core/p-BNSGedhN.js +0 -1
  463. package/dist/pine-core/p-CTLu1TM4.js +0 -2
  464. package/dist/pine-core/p-DAIsVNlL.system.js +0 -2
  465. package/dist/pine-core/p-Dr-FzkdE.system.js +0 -1
  466. package/dist/pine-core/p-YWpyar7R.system.js +0 -1
  467. package/dist/pine-core/p-a53222f7.entry.js +0 -1
  468. package/dist/pine-core/p-a7eabc0c.system.entry.js +0 -1
  469. package/dist/pine-core/p-a8ab4d9b.entry.js +0 -1
  470. package/dist/pine-core/p-b52deffb.entry.js +0 -1
  471. package/dist/pine-core/p-b6c2090f.system.entry.js +0 -1
  472. package/dist/pine-core/p-d27ef352.system.entry.js +0 -1
  473. package/dist/pine-core/p-e11795db.system.entry.js +0 -1
  474. package/dist/pine-core/p-f09ce49e.entry.js +0 -1
  475. package/dist/pine-core/p-f3683be8.entry.js +0 -1
  476. /package/dist/esm-es5/{index-Bu9gFIxM.js → index-BU1hN5Vy.js} +0 -0
  477. /package/dist/esm-es5/{utils-tJa4KYNO.js → utils-u_0lxWnH.js} +0 -0
  478. /package/dist/pine-core/{p-Bu9gFIxM.js → p-BU1hN5Vy.js} +0 -0
  479. /package/dist/pine-core/{p-BG6uGRQj.system.js → p-D_I-k33A.system.js} +0 -0
  480. /package/dist/pine-core/{p-Bjc6fc_Y.system.js → p-ctdGub9B.system.js} +0 -0
  481. /package/dist/pine-core/{p-tJa4KYNO.js → p-u_0lxWnH.js} +0 -0
@@ -1,5 +1,9 @@
1
1
  import { h } from "@stencil/core";
2
2
  import { unwrapReconnectedContent } from "../../utils/reconnected-content";
3
+ const PRESET_SIZES = ['sm', 'md', 'lg', 'fullscreen'];
4
+ const isCustomLength = (value) => /^[a-z0-9.%+\-*/(), ]+$/i.test(value) &&
5
+ /\d/.test(value) &&
6
+ (typeof CSS === 'undefined' || CSS.supports('max-width', value));
3
7
  export class PdsModal {
4
8
  constructor() {
5
9
  this.focusableElements = [];
@@ -14,7 +18,9 @@ export class PdsModal {
14
18
  */
15
19
  this.open = false;
16
20
  /**
17
- * The size of the modal
21
+ * The size of the modal. Can be a predefined value ('sm', 'md', 'lg', 'fullscreen') or a custom
22
+ * max-width as a CSS length (e.g., '1250px', '80vw'). A custom width stays fluid below that size.
23
+ * A value that is neither falls back to 'md'.
18
24
  * @default 'md'
19
25
  */
20
26
  this.size = 'md';
@@ -33,6 +39,19 @@ export class PdsModal {
33
39
  * @default false
34
40
  */
35
41
  this.disableTopLayer = false;
42
+ /**
43
+ * Whether to skip moving focus into the modal when it opens — both our own
44
+ * `setInitialFocus()` and the browser's native "dialog focusing steps",
45
+ * which move focus into the dialog as soon as `show()`/`showModal()` is
46
+ * called regardless of application code. Focus return on close is
47
+ * unaffected either way. For a modal opened by something other than a
48
+ * direct user click — a redirect, a deep link, a background event —
49
+ * stealing focus on open can interrupt whatever the user was already
50
+ * doing. Default `false` preserves today's behavior for every existing
51
+ * consumer.
52
+ * @default false
53
+ */
54
+ this.disableInitialFocus = false;
36
55
  /**
37
56
  * Stores the list of focusable elements in the modal
38
57
  */
@@ -49,16 +68,41 @@ export class PdsModal {
49
68
  }
50
69
  };
51
70
  this.handleKeyDown = (e) => {
71
+ var _a, _b, _c;
52
72
  // If the modal is not open, don't handle any keyboard events
53
73
  if (!this.open)
54
74
  return;
55
75
  // Handle Escape key to close the modal
56
76
  if (e.key === 'Escape') {
57
- // In non-top-layer mode, focus can move into an overlay stacked above the
58
- // modal (the reason disableTopLayer exists). If that overlay owns focus,
59
- // leave Escape to it rather than dismissing this modal out from under it.
60
- const active = document.activeElement;
61
- if (this.disableTopLayer && active && active !== document.body && !this.el.contains(active)) {
77
+ // Every open pds-modal shares this document-level listener for the
78
+ // same keydown event. Whichever one runs first can synchronously move
79
+ // focus (hideModal() restores it), which would make a later instance's
80
+ // own read of document.activeElement reflect that side effect instead
81
+ // of where focus actually was when the key was pressed — stacking two
82
+ // sibling modals closing on one Escape instead of just the top one.
83
+ // That alone isn't enough, though: isStackedAboveOverlay's `:modal`
84
+ // check reads LIVE top-layer state, and hideModal()'s close() clears it
85
+ // synchronously — so whichever sibling's listener runs first (DOM
86
+ // order, not z-index) can close itself and erase the very evidence a
87
+ // later listener needs to recognize it was stacked above. Snapshot that
88
+ // determination too, in the same first-listener-wins block, before any
89
+ // instance has had a chance to act on this keypress.
90
+ const eventSnapshot = e;
91
+ if (!('__pdsActiveElementAtEscape' in eventSnapshot)) {
92
+ const activeAtDispatch = document.activeElement;
93
+ eventSnapshot.__pdsActiveElementAtEscape = activeAtDispatch;
94
+ const topLayerDialog = (_a = activeAtDispatch === null || activeAtDispatch === void 0 ? void 0 : activeAtDispatch.closest('dialog')) !== null && _a !== void 0 ? _a : null;
95
+ eventSnapshot.__pdsTopLayerDialogAtEscape = topLayerDialog;
96
+ eventSnapshot.__pdsTopLayerDialogWasModalAtEscape = !!(topLayerDialog && topLayerDialog.matches(':modal'));
97
+ }
98
+ // Leave Escape to a genuinely stacked-above overlay (disableTopLayer's
99
+ // reason for existing) — not just to anything outside this modal.
100
+ const active = eventSnapshot.__pdsActiveElementAtEscape;
101
+ if (this.disableTopLayer &&
102
+ active &&
103
+ active !== document.body &&
104
+ !this.el.contains(active) &&
105
+ this.isStackedAboveOverlay(active, (_b = eventSnapshot.__pdsTopLayerDialogAtEscape) !== null && _b !== void 0 ? _b : null, (_c = eventSnapshot.__pdsTopLayerDialogWasModalAtEscape) !== null && _c !== void 0 ? _c : false)) {
62
106
  return;
63
107
  }
64
108
  // Always prevent native dialog close behavior
@@ -102,10 +146,26 @@ export class PdsModal {
102
146
  }
103
147
  };
104
148
  }
149
+ componentWillLoad() {
150
+ this.warnOnInvalidSize();
151
+ }
152
+ sizeChanged() {
153
+ this.warnOnInvalidSize();
154
+ }
105
155
  componentDidLoad() {
106
156
  this.modalRef = this.el.querySelector('.pds-modal__backdrop');
107
157
  // Add keyboard event listener
108
158
  document.addEventListener('keydown', this.handleKeyDown);
159
+ // @Watch('open') only fires on a later change, not the prop's initial
160
+ // value — a modal mounted with `open` already true (static markup, or a
161
+ // framework passing it on first render) would otherwise never call
162
+ // show()/showModal(): the panel still appears, since that's driven by the
163
+ // `open` CSS class, but the native <dialog> itself was never opened, so
164
+ // there's no top-layer promotion, no dialog focusing steps, and no
165
+ // focusable-elements list or previousActiveElement captured.
166
+ if (this.open) {
167
+ this.showModal();
168
+ }
109
169
  }
110
170
  // Unwraps a nested dialog.pds-modal__backdrop left by a page-cache (Turbo, bfcache) reconnect.
111
171
  componentDidRender() {
@@ -211,8 +271,39 @@ export class PdsModal {
211
271
  // Update focusable elements and set initial focus
212
272
  // Using a longer timeout to ensure all components are fully rendered
213
273
  setTimeout(() => {
274
+ var _a, _b;
214
275
  this.updateFocusableElements();
215
- this.setInitialFocus();
276
+ if (this.disableInitialFocus) {
277
+ // show()/showModal() also move focus into the dialog natively (the
278
+ // HTML spec's "dialog focusing steps") — that native step isn't
279
+ // necessarily done by the time this task runs either, so counter it
280
+ // here, in the same deferred slot setInitialFocus() below uses for
281
+ // the same reason, rather than racing it synchronously above.
282
+ //
283
+ // disableInitialFocus exists for a drawer that can open in the
284
+ // background while the user is mid-task elsewhere — by the time
285
+ // this runs, they may have already clicked into something of
286
+ // their own outside the dialog. Only act if focus is still where
287
+ // the native steps (or nothing) left it, so that isn't stolen.
288
+ const activeElement = document.activeElement;
289
+ const focusAlreadyClaimedElsewhere = activeElement !== null && activeElement !== document.body && !((_a = this.modalRef) === null || _a === void 0 ? void 0 : _a.contains(activeElement));
290
+ if (!focusAlreadyClaimedElsewhere) {
291
+ if (this.previousActiveElement !== document.body && typeof ((_b = this.previousActiveElement) === null || _b === void 0 ? void 0 : _b.focus) === 'function') {
292
+ this.previousActiveElement.focus();
293
+ }
294
+ else if (activeElement instanceof HTMLElement) {
295
+ // Nothing was focused before opening (previousActiveElement is
296
+ // body), so there's nothing to restore focus to — body.focus()
297
+ // would be a no-op and leave focus wherever the native focusing
298
+ // steps put it, inside the dialog. Blur that instead so focus
299
+ // ends up nowhere, matching the state before opening.
300
+ activeElement.blur();
301
+ }
302
+ }
303
+ }
304
+ else {
305
+ this.setInitialFocus();
306
+ }
216
307
  this.pdsModalOpen.emit();
217
308
  }, 100);
218
309
  }
@@ -227,10 +318,22 @@ export class PdsModal {
227
318
  async hideModal() {
228
319
  if (this.modalRef) {
229
320
  try {
321
+ // Capture before close(): with the async task queue, a prop change
322
+ // that triggers hideModal() (e.g. light dismiss setting `open` false
323
+ // on a pointerdown elsewhere) doesn't run until the next frame — by
324
+ // then the browser has already moved focus to whatever the user's
325
+ // click actually landed on. Restoring previousActiveElement in that
326
+ // case would steal focus back from a real new destination; only
327
+ // restore it when focus is still inside the modal (or nowhere, i.e.
328
+ // document.body), meaning nothing else has claimed it since.
329
+ const activeElement = document.activeElement;
330
+ const focusAlreadyMovedElsewhere = activeElement !== null && activeElement !== document.body && !this.modalRef.contains(activeElement);
230
331
  this.modalRef.close();
231
332
  this.open = false;
232
333
  // Restore focus to the element that was focused before the modal was opened
233
- if (this.previousActiveElement && typeof this.previousActiveElement.focus === 'function') {
334
+ if (!focusAlreadyMovedElsewhere &&
335
+ this.previousActiveElement &&
336
+ typeof this.previousActiveElement.focus === 'function') {
234
337
  this.previousActiveElement.focus();
235
338
  }
236
339
  this.pdsModalClose.emit();
@@ -247,6 +350,46 @@ export class PdsModal {
247
350
  const backdrop = modal.querySelector('.pds-modal__backdrop');
248
351
  return backdrop ? parseInt(getComputedStyle(backdrop).zIndex, 10) : -1;
249
352
  }
353
+ /**
354
+ * Whether `active` sits inside a surface actually stacked above this modal.
355
+ *
356
+ * Used to decide whether an Escape keypress belongs to that surface instead
357
+ * of this modal. Focus being merely *outside* this modal is not enough on
358
+ * its own: in `disableTopLayer` mode the page stays interactive (that's the
359
+ * point of a non-modal usage like a drawer), so focus will routinely be on
360
+ * ordinary page content while the modal is open, and that must not be
361
+ * mistaken for "an overlay owns Escape."
362
+ *
363
+ * Two ways a surface can be above: it is itself promoted to the browser's
364
+ * top layer (a regular `showModal()` dialog, which paints above everything
365
+ * outside the top layer regardless of z-index — a sibling pds-modal opened
366
+ * over a `disableTopLayer` drawer typically shares the exact same z-index
367
+ * token, so a numeric comparison alone would miss it), or it has a higher
368
+ * z-index than this modal's own backdrop (a `disableTopLayer` overlay, or
369
+ * anything else deliberately raised above it).
370
+ *
371
+ * `topLayerDialog` / `topLayerDialogWasModal` come pre-snapshotted from the
372
+ * keydown event (see handleKeyDown) rather than being re-derived here: by
373
+ * the time a later sibling modal's listener runs, an earlier one may have
374
+ * already closed itself, which clears `:modal` — reading it live here would
375
+ * lose that evidence depending on listener order.
376
+ */
377
+ isStackedAboveOverlay(active, topLayerDialog, topLayerDialogWasModal) {
378
+ if (topLayerDialog && topLayerDialog !== this.modalRef && topLayerDialogWasModal) {
379
+ return true;
380
+ }
381
+ const ownZIndex = this.getBackdropZIndex(this.el);
382
+ let node = active;
383
+ while (node && node !== document.body) {
384
+ const style = getComputedStyle(node);
385
+ const zIndex = parseInt(style.zIndex, 10);
386
+ if (style.position !== 'static' && !isNaN(zIndex) && zIndex > ownZIndex) {
387
+ return true;
388
+ }
389
+ node = node.parentElement;
390
+ }
391
+ return false;
392
+ }
250
393
  /**
251
394
  * Checks if this modal is the innermost (highest z-index) modal
252
395
  */
@@ -267,15 +410,28 @@ export class PdsModal {
267
410
  const thisZIndex = this.getBackdropZIndex(this.el);
268
411
  return thisZIndex === maxZIndex;
269
412
  }
413
+ resolveSize() {
414
+ var _a;
415
+ const size = ((_a = this.size) !== null && _a !== void 0 ? _a : '').trim() || 'md';
416
+ if (PRESET_SIZES.includes(size))
417
+ return [size];
418
+ return isCustomLength(size) ? ['custom', size] : [undefined];
419
+ }
420
+ warnOnInvalidSize() {
421
+ if (this.resolveSize()[0] !== undefined)
422
+ return;
423
+ console.warn(`pds-modal: invalid size "${String(this.size).slice(0, 50)}", using md`);
424
+ }
270
425
  render() {
271
- return (h("dialog", { key: '65d204a57e193022eb475c113438a40fc77cf545', class: {
426
+ const [sizeClass = 'md', customSize] = this.resolveSize();
427
+ return (h("dialog", { key: 'bbc56f2aaf3fe861ae309eb1930d51a588b4c727', class: {
272
428
  'pds-modal__backdrop': true,
273
429
  'open': this.open
274
- }, "aria-modal": this.disableTopLayer ? 'false' : 'true', "aria-labelledby": `${this.componentId}-heading`, onClick: this.handleBackdropClick }, h("div", { key: 'a9f07a30f8b4d13ef7ac33068756f0fb03173e27', class: {
430
+ }, "aria-modal": this.disableTopLayer ? 'false' : 'true', "aria-labelledby": `${this.componentId}-heading`, onClick: this.handleBackdropClick }, h("div", { key: 'b3d6f9c2a7854845ebe94c05ee507000c38a1326', class: {
275
431
  'pds-modal': true,
276
- [`pds-modal--${this.size}`]: true,
432
+ [`pds-modal--${sizeClass}`]: true,
277
433
  'pds-modal--scrollable': this.scrollable
278
- }, part: "modal" }, h("slot", { key: '8505057bef9b4ed60e51422b05fea08cefce4a4b' }))));
434
+ }, style: customSize !== undefined ? { '--pds-modal-max-width': customSize } : undefined, part: "modal" }, h("slot", { key: '42ff9ae5e427bc69141c58e0824aad677f5c7756' }))));
279
435
  }
280
436
  static get is() { return "pds-modal"; }
281
437
  static get originalStyleUrls() {
@@ -359,9 +515,20 @@ export class PdsModal {
359
515
  "type": "string",
360
516
  "mutable": false,
361
517
  "complexType": {
362
- "original": "'sm' | 'md' | 'lg' | 'fullscreen'",
363
- "resolved": "\"fullscreen\" | \"lg\" | \"md\" | \"sm\"",
364
- "references": {}
518
+ "original": "ModalSizeType | (string & Record<never, never>)",
519
+ "resolved": "\"fullscreen\" | \"lg\" | \"md\" | \"sm\" | string & Record<never, never>",
520
+ "references": {
521
+ "ModalSizeType": {
522
+ "location": "import",
523
+ "path": "@utils/types",
524
+ "id": "src/utils/types.ts::ModalSizeType",
525
+ "referenceLocation": "ModalSizeType"
526
+ },
527
+ "Record": {
528
+ "location": "global",
529
+ "id": "global::Record"
530
+ }
531
+ }
365
532
  },
366
533
  "required": false,
367
534
  "optional": false,
@@ -370,7 +537,7 @@ export class PdsModal {
370
537
  "name": "default",
371
538
  "text": "'md'"
372
539
  }],
373
- "text": "The size of the modal"
540
+ "text": "The size of the modal. Can be a predefined value ('sm', 'md', 'lg', 'fullscreen') or a custom\nmax-width as a CSS length (e.g., '1250px', '80vw'). A custom width stays fluid below that size.\nA value that is neither falls back to 'md'."
374
541
  },
375
542
  "getter": false,
376
543
  "setter": false,
@@ -423,6 +590,29 @@ export class PdsModal {
423
590
  "reflect": false,
424
591
  "attribute": "disable-top-layer",
425
592
  "defaultValue": "false"
593
+ },
594
+ "disableInitialFocus": {
595
+ "type": "boolean",
596
+ "mutable": false,
597
+ "complexType": {
598
+ "original": "boolean",
599
+ "resolved": "boolean",
600
+ "references": {}
601
+ },
602
+ "required": false,
603
+ "optional": false,
604
+ "docs": {
605
+ "tags": [{
606
+ "name": "default",
607
+ "text": "false"
608
+ }],
609
+ "text": "Whether to skip moving focus into the modal when it opens \u2014 both our own\n`setInitialFocus()` and the browser's native \"dialog focusing steps\",\nwhich move focus into the dialog as soon as `show()`/`showModal()` is\ncalled regardless of application code. Focus return on close is\nunaffected either way. For a modal opened by something other than a\ndirect user click \u2014 a redirect, a deep link, a background event \u2014\nstealing focus on open can interrupt whatever the user was already\ndoing. Default `false` preserves today's behavior for every existing\nconsumer."
610
+ },
611
+ "getter": false,
612
+ "setter": false,
613
+ "reflect": false,
614
+ "attribute": "disable-initial-focus",
615
+ "defaultValue": "false"
426
616
  }
427
617
  };
428
618
  }
@@ -509,6 +699,9 @@ export class PdsModal {
509
699
  static get elementRef() { return "el"; }
510
700
  static get watchers() {
511
701
  return [{
702
+ "propName": "size",
703
+ "methodName": "sizeChanged"
704
+ }, {
512
705
  "propName": "open",
513
706
  "methodName": "handleOpenChange"
514
707
  }];
@@ -13,6 +13,12 @@ export default {
13
13
  scrollable: true,
14
14
  size: 'md',
15
15
  },
16
+ argTypes: {
17
+ size: {
18
+ control: 'text',
19
+ description: "A preset ('sm', 'md', 'lg', 'fullscreen') or a CSS length such as '1100px'.",
20
+ },
21
+ },
16
22
  parameters: {}
17
23
  }
18
24
 
@@ -89,6 +95,14 @@ Default.args = {
89
95
  open: false,
90
96
  };
91
97
 
98
+ // Any CSS length works as a size; it becomes the modal's max-width.
99
+ export const CustomSize = BaseTemplate.bind({});
100
+ CustomSize.args = {
101
+ componentId: 'custom-size-modal',
102
+ size: '1100px',
103
+ open: false,
104
+ };
105
+
92
106
  const DestructiveTemplate = (args) => html`
93
107
  <div>
94
108
  <pds-button id="show-modal" onClick="document.querySelector('#${args.componentId}').open = true">
@@ -77,7 +77,7 @@ export class MockPdsModal {
77
77
  'pds-modal__backdrop': true,
78
78
  'open': this.open,
79
79
  };
80
- return (h("div", { key: 'cb0c1ce177b2c5bbc03c6310d1c61c2e56c87371', class: backdropClasses }, h("div", { key: '0f25e178dafa91d9c9721180c933faacb03b9360', class: modalClasses, role: "dialog", "aria-modal": "true", "aria-labelledby": this.componentId ? `${this.componentId}-heading` : null, part: "modal" }, h("div", { key: '849c0e574e020c828b3ef8a89e39ffdd6f8da68f', class: "pds-modal__header" }, h("slot", { key: '0c8bcac99adafbbfe67641e3782722bbe1ac13be', name: "header" })), h("div", { key: '5da01ac584f1b6d1ec8b535f6be2ac9f06ac2218', class: "pds-modal-content" }, h("slot", { key: '60ab585878ef793930fb18c363c284249123f423' })), h("div", { key: 'ec6f26f3fa36175cf1a6acc34807c2528b8ed886', class: "pds-modal__footer" }, h("slot", { key: 'da9896baba61891eceb7805c6967741fa86906dc', name: "footer" })))));
80
+ return (h("div", { key: '1207382ec39e45f95449791cd9fbf3ad54a17564', class: backdropClasses }, h("div", { key: '865cff8feaf031750e6763d60580f9060dfc0c91', class: modalClasses, role: "dialog", "aria-modal": "true", "aria-labelledby": this.componentId ? `${this.componentId}-heading` : null, part: "modal" }, h("div", { key: 'b49ba7c717999b53578056ad35c4ec270dbdfd01', class: "pds-modal__header" }, h("slot", { key: '2c06b0f0c4692f1991eb389a73b751d38796c1cf', name: "header" })), h("div", { key: 'ca0e6f324db12de5bd0c21b53bf888ab44c0d34c', class: "pds-modal-content" }, h("slot", { key: 'cef74e83f58195b574f9a290f748cecb2561668e' })), h("div", { key: '65518e197e80fa0cd8ea8cbbd9bb10a064e251ca', class: "pds-modal__footer" }, h("slot", { key: '8cd72b932b7c4d31cf9ecb8f0c37d9a5b5ca7594', name: "footer" })))));
81
81
  }
82
82
  static get is() { return "mock-pds-modal"; }
83
83
  static get originalStyleUrls() {
@@ -1021,10 +1021,10 @@ export class PdsMultiselect {
1021
1021
  }
1022
1022
  render() {
1023
1023
  const hasSelections = this.selectedItems.length > 0;
1024
- return (h(Host, { key: 'a27955b3d4a7723dc92af6f9f1a4c56da5d392c6', "aria-disabled": this.disabled ? 'true' : null }, h("div", { key: '1bbea74e106b5980427610e9cbe27e2b686ded53', class: "pds-multiselect", onFocusout: this.handleContainerFocusOut }, this.label && (h("label", { key: 'a1ba54ded3bf660d234ce430056d1b70058d4e47', id: `${this.componentId}-label`, htmlFor: this.componentId, class: {
1024
+ return (h(Host, { key: '5d4de9ca729d5bfb63a8a73f8f40328b9ab48f57', "aria-disabled": this.disabled ? 'true' : null }, h("div", { key: '2b5e1e01caaa4a6540a67e2638a20072e9f706cb', class: "pds-multiselect", onFocusout: this.handleContainerFocusOut }, this.label && (h("label", { key: 'f23b840feb4e243d90b3a9913dab1b238e7c497d', id: `${this.componentId}-label`, htmlFor: this.componentId, class: {
1025
1025
  'pds-multiselect__label': true,
1026
1026
  'visually-hidden': this.hideLabel,
1027
- } }, this.label)), h("div", { key: '74cd041317c59042452dd9b3e9d165cc88be5ecc', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), style: { width: this.triggerWidth } }, this.selectedDisplay === 'pill' && this.pillPosition === 'inline' ? (h("div", { ref: el => (this.pillInlineTriggerEl = el || undefined), part: "trigger", class: {
1027
+ } }, this.label)), h("div", { key: '2e1f89d6f06332e957858c0eea34fca1a9629921', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), style: { width: this.triggerWidth } }, this.selectedDisplay === 'pill' && this.pillPosition === 'inline' ? (h("div", { ref: el => (this.pillInlineTriggerEl = el || undefined), part: "trigger", class: {
1028
1028
  'pds-multiselect__trigger': true,
1029
1029
  'pds-multiselect__trigger--open': this.isOpen,
1030
1030
  'pds-multiselect__trigger--disabled': this.disabled,
@@ -1040,7 +1040,7 @@ export class PdsMultiselect {
1040
1040
  }, id: this.componentId, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-describedby": assignDescription(this.componentId, this.invalid || !!this.errorMessage, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid || !!this.errorMessage ? 'true' : undefined, onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, h("span", { class: {
1041
1041
  'pds-multiselect__trigger-text': true,
1042
1042
  'pds-multiselect__trigger-text--placeholder': !hasSelections || (this.selectedDisplay === 'pill' && this.pillPosition === 'below'),
1043
- } }, this.getTriggerText()), h("pds-icon", { class: "pds-multiselect__icon", icon: enlarge }))), this.renderDropdown()), this.selectedDisplay === 'pill' && this.pillPosition === 'below' && this.renderBelowPills(), h("span", { key: '38056bbcdb0b865e9fe0b249ac3ee2c2adb089d4', class: "visually-hidden", "aria-live": "polite", "aria-atomic": "true" }, this.removalAnnouncement), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (h("p", { key: '7a576cc360d15e0ec38aeb4c0665a7308e7b1506', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (h("p", { key: '7dadb8425fa729316867a6d9ddb49d2553d82308', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, h("pds-icon", { key: 'fc295c5b5110b009a1d6372411c1faf32df9b620', icon: danger, size: "small" }), this.errorMessage)), h("div", { key: '173c9f6953442fdedfdfa71264bcc3781b827701', style: { display: 'none' } }, h("slot", { key: 'e31cb390048516ee400d2875ad993cd6ae07b146' })))));
1043
+ } }, this.getTriggerText()), h("pds-icon", { class: "pds-multiselect__icon", icon: enlarge }))), this.renderDropdown()), this.selectedDisplay === 'pill' && this.pillPosition === 'below' && this.renderBelowPills(), h("span", { key: '3d2e201157ce16abbcd12fa9254ced7f2b562a8f', class: "visually-hidden", "aria-live": "polite", "aria-atomic": "true" }, this.removalAnnouncement), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (h("p", { key: '3bbf405df2e72ae730529f28273b003b3332e980', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (h("p", { key: 'ef4a27162b00b14c3c9dfcb695f311961f2f56e5', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, h("pds-icon", { key: '99fb12375e2d660018276091bf8014b9bc9a672e', icon: danger, size: "small" }), this.errorMessage)), h("div", { key: '8fc6369015e8d04d1dec582007733eb5db6776f5', style: { display: 'none' } }, h("slot", { key: 'a808ecb0f4b2c00fca478cda5c0054c6aba29a8d' })))));
1044
1044
  }
1045
1045
  static get is() { return "pds-multiselect"; }
1046
1046
  static get encapsulation() { return "shadow"; }
@@ -554,7 +554,7 @@ export class PdsPopover {
554
554
  }, 16); // ~1 frame at 60fps
555
555
  }
556
556
  render() {
557
- return (h(Host, { key: 'f488756aeac4d7d1223b5ccda953aa6ea54788c0', id: this.componentId }, h("span", { key: '9ac844192c4389c1e9dc8548bda70b45c14b9aed', class: "pds-popover__trigger-wrapper" }, h("slot", { key: '5263c5e659fc51f912bdbf92c119dc2bb1f57d4f', name: "trigger", onSlotchange: this.handleTriggerSlotChange })), h("div", { key: '717d438131ff0bff69f11513c538bf3de5c2d1a4', class: "pds-popover__content-slot-wrapper" }, h("slot", { key: '060d737af3edd0d7baf5d556867122ca217d13a2', onSlotchange: this.handleContentSlotChange }))));
557
+ return (h(Host, { key: '760428c178ed92dfc35293181b7cef8fac3b4e26', id: this.componentId }, h("span", { key: 'd12a6a33dcf0fe6f3b61972ae8e5ac604263b2ac', class: "pds-popover__trigger-wrapper" }, h("slot", { key: 'd975e355a3acb9bc6d95202ec177f631bddb43bf', name: "trigger", onSlotchange: this.handleTriggerSlotChange })), h("div", { key: 'f99ae2d97c75ed8ec63fbd0a859f8b7b9f78f0d2', class: "pds-popover__content-slot-wrapper" }, h("slot", { key: 'd1620c57d993496045fc3c47b55cdd0c1d07b36c', onSlotchange: this.handleContentSlotChange }))));
558
558
  }
559
559
  static get is() { return "pds-popover"; }
560
560
  static get encapsulation() { return "shadow"; }
@@ -1,4 +1,5 @@
1
1
  import { Host, h } from "@stencil/core";
2
+ import { normalizeColorValue } from "../../utils/utils";
2
3
  export class PdsProgress {
3
4
  constructor() {
4
5
  /**
@@ -18,7 +19,8 @@ export class PdsProgress {
18
19
  this.showPercent = false;
19
20
  }
20
21
  render() {
21
- return (h(Host, { key: '6cb8c8cacf41c0a51907a32cf92d15dea4b4493f', class: this.animated ? { 'is-animated': this.animated } : '' }, h("div", { key: 'e5ad49e7b9328c2234350e3263595112b22b2ff7', class: "pds-progress" }, h("label", { key: '30dab7a71ff8c4947e6d9d199c84a2295c7da7d6', class: "pds-progress__label", htmlFor: this.componentId }, this.label), h("progress", { key: '74dec83ce7f68395cfe9c3adc4512e6ffe98a3b4', id: this.componentId, max: "100", style: this.fillColor ? { '--color-progress-fill': this.fillColor } : {}, value: this.percent })), this.showPercent && h("div", { key: 'b44b9c937bc8de75cdd1c90336419b65be4fb1c0', class: "pds-progress__percentage" }, this.percent, "%")));
22
+ const normalizedFillColor = normalizeColorValue(this.fillColor);
23
+ return (h(Host, { key: 'acca17890c316c056c61e4fad2917f0279126c39', class: this.animated ? { 'is-animated': this.animated } : '' }, h("div", { key: 'f8140ac930335bd67e3576a0f3739092d492d884', class: "pds-progress" }, h("label", { key: '66416d0472024ae14a6413e4e533f08970cbc857', class: "pds-progress__label", htmlFor: this.componentId }, this.label), h("progress", { key: '2bbbe4e1e3d186c2895401ac4b68dabac60a1df9', id: this.componentId, max: "100", style: normalizedFillColor ? { '--color-progress-fill': normalizedFillColor } : {}, value: this.percent })), this.showPercent && h("div", { key: '672956684adf944ea1de8769dbaba615c82a85b6', class: "pds-progress__percentage" }, this.percent, "%")));
22
24
  }
23
25
  static get is() { return "pds-progress"; }
24
26
  static get encapsulation() { return "shadow"; }
@@ -10,7 +10,7 @@ export class PdsProperty {
10
10
  this.icon = 'star';
11
11
  }
12
12
  render() {
13
- return (h(Host, { key: 'f6ebcf8eec4bbbfe3a8717cf8c5611684d5c8929', id: this.componentId }, h("pds-box", { key: '0c4b9d0154b13da6aa3ee8b04482b5591bfee46f', "align-items": "center", gap: "xs" }, h("pds-icon", { key: '960c0fe6447622133f423b5547f13d7407258cbb', icon: this.icon, size: "var(--pine-dimension-sm)", "aria-hidden": "true" }), h("slot", { key: '367e9265e49712d16576ba0461042e8aa2210e69' }))));
13
+ return (h(Host, { key: '1ce4509363c6c40c76d7d6c17335721b348abf04', id: this.componentId }, h("pds-box", { key: '8c6f5dd171e0383640aa550ccbe1b20e74de5b07', "align-items": "center", gap: "xs" }, h("pds-icon", { key: '31c19e7ff0c466f2fe54ad2d2366929311f01364', icon: this.icon, size: "var(--pine-dimension-sm)", "aria-hidden": "true" }), h("slot", { key: 'b5ddb877ef6f3239992a892c7990bbd4fcfa77ae' }))));
14
14
  }
15
15
  static get is() { return "pds-property"; }
16
16
  static get encapsulation() { return "shadow"; }
@@ -104,8 +104,7 @@ input:checked:hover {
104
104
  border-color: var(--pine-color-accent-hover);
105
105
  }
106
106
  input:checked::after {
107
- /* stylelint-disable-next-line pine-design-system/prefer-semantic-tokens */
108
- background: var(--pine-color-white);
107
+ background: var(--pine-color-text-primary);
109
108
  border-radius: var(--pine-border-radius-full);
110
109
  content: "";
111
110
  display: block;
@@ -92,11 +92,11 @@ export class PdsRadio {
92
92
  }
93
93
  render() {
94
94
  const renderLabelAndMessages = () => [
95
- h("label", { htmlFor: this.componentId, key: `${this.componentId}-label` }, h("input", { key: '0c85ea35e55ccb8d0f8ce869f9c3fefe4a143ef7', "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, type: "radio", id: this.componentId, name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, onChange: this.handleRadioChange, class: this.hasImage() ? 'visually-hidden' : '' }), h("span", { key: '3337ad8a86dc975ab2b45e989ab6f2f4bd4af90d', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)),
95
+ h("label", { htmlFor: this.componentId, key: `${this.componentId}-label` }, h("input", { key: 'faa2d815e03f6b05108af0e7934101b2d5f71c59', "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, type: "radio", id: this.componentId, name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, onChange: this.handleRadioChange, class: this.hasImage() ? 'visually-hidden' : '' }), h("span", { key: '22df3067667a7815e03dca45e4ef49d0e1caadcc', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)),
96
96
  this.helperMessage && (h("div", { key: `${this.componentId}-helper`, class: 'pds-radio__message', id: messageId(this.componentId, 'helper') }, this.helperMessage)),
97
- this.errorMessage && (h("div", { key: `${this.componentId}-error`, class: `pds-radio__message pds-radio__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: 'c5a3a39cb6ac1afbe9998e77e98e7d46c85a3687', icon: danger, size: "small" }), this.errorMessage))
97
+ this.errorMessage && (h("div", { key: `${this.componentId}-error`, class: `pds-radio__message pds-radio__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: '6dac17ccd12d558d3b25ffb77c55d160a619d6ab', icon: danger, size: "small" }), this.errorMessage))
98
98
  ];
99
- return (h(Host, { key: 'e19f3967280820155c8cd14bafc32959f6a78c99', class: this.classNames() }, this.hasImage() && (h("div", { key: 'e990c72656ba7687c43c12c774b547f469213d44', class: "pds-radio__image-container", part: "image-container" }, h("slot", { key: '360e92eb7490bf79ac63ff0580dae76ab660d437', name: "image", onSlotchange: () => (this._hasImage = this.hasImageSlot()) }))), this.hasImage() ? (h("div", { class: "pds-radio__content-wrapper" }, renderLabelAndMessages())) : (renderLabelAndMessages())));
99
+ return (h(Host, { key: 'b464057b9e8d5de710183803c7d5e825316b3c3b', class: this.classNames() }, this.hasImage() && (h("div", { key: '692b2681221596cdf4bf6a21574edb2373d5127b', class: "pds-radio__image-container", part: "image-container" }, h("slot", { key: 'd68951b5b671863d582ad1a98543a51832966b36', name: "image", onSlotchange: () => (this._hasImage = this.hasImageSlot()) }))), this.hasImage() ? (h("div", { class: "pds-radio__content-wrapper" }, renderLabelAndMessages())) : (renderLabelAndMessages())));
100
100
  }
101
101
  static get is() { return "pds-radio"; }
102
102
  static get encapsulation() { return "scoped"; }
@@ -160,13 +160,13 @@ export class PdsRadioGroup {
160
160
  render() {
161
161
  const gapValue = this.getGapValue();
162
162
  const ariaDescribedBy = this.getAriaDescribedBy();
163
- return (h(Host, { key: 'c8e0b5e7fce3becca58c99d1d8d56bd25db8f2fb', class: this.classNames(), id: this._groupId, role: "group", "aria-describedby": ariaDescribedBy, style: {
163
+ return (h(Host, { key: '048d4676df7c31a9ab08e4d4fc2b93866c1241fd', class: this.classNames(), id: this._groupId, role: "group", "aria-describedby": ariaDescribedBy, style: {
164
164
  '--pds-radio-group-gap': gapValue,
165
- } }, this.groupLabel && (h("div", { key: '04d9d3154d1c34b58fb46429417b5b75da3ee96a', class: "pds-radio-group__label" }, this.groupLabel)), h("div", { key: '58b1e3c7ff2ed9b2eceab6be6c0a4903919915d5', class: {
165
+ } }, this.groupLabel && (h("div", { key: '414363733d6053517bb63888fb9813af6554d4df', class: "pds-radio-group__label" }, this.groupLabel)), h("div", { key: 'd368dc474bf76f5cf7d633e59f929060fbf60b83', class: {
166
166
  'pds-radio-group__radios': true,
167
167
  'pds-radio-group__radios--row': this.direction === 'row',
168
168
  'pds-radio-group__radios--column': this.direction === 'column',
169
- } }, h("slot", { key: '357104f35d9845b0717fa6aa896dc8bd60035b34', onSlotchange: () => this.updateChildRadios() })), this.helperMessage && (h("div", { key: 'd05cc6733b4c087d59a9c8ab5e4664ab278ae020', class: "pds-radio-group__message", id: messageId(this._groupId, 'helper') }, this.helperMessage)), this.errorMessage && (h("div", { key: '298396cb986b169d6c0d728863cd13d8399cafbf', class: "pds-radio-group__message pds-radio-group__message--error", id: messageId(this._groupId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: 'fa820d6a8531600c889d18cdcdb93e3588a26865', icon: danger, size: "small" }), this.errorMessage))));
169
+ } }, h("slot", { key: '210e1ba8d276c2832017ea7bf3d03348aa46106a', onSlotchange: () => this.updateChildRadios() })), this.helperMessage && (h("div", { key: '06015935856640afdcddfcd8833a3a0659c58698', class: "pds-radio-group__message", id: messageId(this._groupId, 'helper') }, this.helperMessage)), this.errorMessage && (h("div", { key: '44256d9a050feda9651f90093a298a12d9e97250', class: "pds-radio-group__message pds-radio-group__message--error", id: messageId(this._groupId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: '2b3aa1ffaa0f6a3ad0ce83d2becfcfdcc2f56fbc', icon: danger, size: "small" }), this.errorMessage))));
170
170
  }
171
171
  static get is() { return "pds-radio-group"; }
172
172
  static get encapsulation() { return "scoped"; }
@@ -55,7 +55,7 @@ export class PdsRow {
55
55
  })), (this.minHeight && {
56
56
  'min-height': this.minHeight,
57
57
  }));
58
- return h(Host, { key: '13417071d1d3411e0bfe0de638c017ee96b1002f', class: `pds-row ${rowClasses}`, style: rowInlineStyles });
58
+ return h(Host, { key: '556bb00908d60df442b1fae17e28e54353f85f20', class: `pds-row ${rowClasses}`, style: rowInlineStyles });
59
59
  }
60
60
  static get is() { return "pds-row"; }
61
61
  static get originalStyleUrls() {
@@ -228,7 +228,7 @@ export class PdsSelect {
228
228
  }
229
229
  render() {
230
230
  const hasAction = this.el.querySelector('[slot="action"]') !== null;
231
- return (h(Host, { key: 'a1d08dc93decbf50f95152d59ceac4ad38dd5b01', "aria-disabled": this.disabled ? 'true' : null, class: this.classNames(), "has-action": hasAction && !this.hideLabel ? 'true' : null }, h("div", { key: '8aaeeea02f9330c013084dd525499e80ac19c463', class: "pds-select" }, !this.hideLabel && (h("div", { key: 'e8a6b8885eb95b68eb7229fe6bf67da4d1be1875', class: "pds-select__label-wrapper" }, h("label", { key: 'e6c6d190b14b49aa5c07a5b13e486bee4499cf60', htmlFor: this.componentId }, h("span", { key: 'e703a2d392f6f6f8dead73d91eb9f1d55b8a51c1', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), hasAction && this.renderAction())), h("select", { key: '61573ecc714d416e4cad4e5307b9bcc4a1b7e190', "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-label": this.hideLabel ? this.label : undefined, autocomplete: this.autocomplete || undefined, class: "pds-select__field", disabled: this.disabled, id: this.componentId, multiple: this.multiple, name: this.name, onBlur: this.onBlur, onChange: this.onSelectUpdate, onFocus: this.onFocus, onKeyDown: this.onKeyDown, part: "select", required: this.required, ref: (el) => (this.selectEl = el) }), h("div", { key: 'acbd13e28aaca1cac0bcc2b9269083c50104bfc0', "aria-hidden": "true", class: "hidden", ref: (el) => (this.slotContainer = el) }, h("slot", { key: '6f3f4cf1cb3cd71dcefdb149df68aea905b8b5eb', onSlotchange: this.handleSlotChange })), this.renderMessages(), !this.multiple && h("pds-icon", { key: 'a3b2301d28bd6631cd33286ae3b93c67294e4cc6', "aria-hidden": "true", class: "pds-select__select-icon", icon: enlarge }))));
231
+ return (h(Host, { key: '6b240f3f91bcbdc52f019b0b6c57afda91abcbc9', "aria-disabled": this.disabled ? 'true' : null, class: this.classNames(), "has-action": hasAction && !this.hideLabel ? 'true' : null }, h("div", { key: '5bcacb3b861b69d4b2a16b917bad3d7c356eab13', class: "pds-select" }, !this.hideLabel && (h("div", { key: '4707b7b50a9e3144316f6c3e8b78767aee56553e', class: "pds-select__label-wrapper" }, h("label", { key: '89992c65158f26fef606b4f613baf139e9fe17c8', htmlFor: this.componentId }, h("span", { key: '8f05323646aca793a80310515b1cc6e0e8597736', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), hasAction && this.renderAction())), h("select", { key: '8381fe48cce4c6ec32ae2c0dd16bc3e188fbfda0', "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-label": this.hideLabel ? this.label : undefined, autocomplete: this.autocomplete || undefined, class: "pds-select__field", disabled: this.disabled, id: this.componentId, multiple: this.multiple, name: this.name, onBlur: this.onBlur, onChange: this.onSelectUpdate, onFocus: this.onFocus, onKeyDown: this.onKeyDown, part: "select", required: this.required, ref: (el) => (this.selectEl = el) }), h("div", { key: 'c05f059e3c4e21d304ac1da08613d2b2d84aa342', "aria-hidden": "true", class: "hidden", ref: (el) => (this.slotContainer = el) }, h("slot", { key: 'b52f06405693803c0d2309e97f2611598cac7b70', onSlotchange: this.handleSlotChange })), this.renderMessages(), !this.multiple && h("pds-icon", { key: 'e1e7af5249a928402a3c5dfe418f695b4e1fa7d4', "aria-hidden": "true", class: "pds-select__select-icon", icon: enlarge }))));
232
232
  }
233
233
  static get is() { return "pds-select"; }
234
234
  static get encapsulation() { return "shadow"; }
@@ -38,7 +38,7 @@ export class PdsSortableItem {
38
38
  }
39
39
  }
40
40
  render() {
41
- return (h(Host, { key: '18cf8345abe65e492b09add621df93c9eac77d30', class: "pds-sortable-item", id: this.componentId }, this.showHandle && (h("div", { key: 'a9545fad581a44740da59ae64209da530c91fc97', class: "pds-sortable-item__handle" }, h("pds-icon", { key: '4d0ecd4ec0ee6c0aa5249c060098d7748a05b910', "aria-hidden": "true", icon: handleIcon }))), h("slot", { key: 'f79fcb490cb435e578c3d6ff2ce4b8dcd4040555' }), this.enableActions && (h("div", { key: 'eac4084b1bc7e6c0e1026ec9fea2b3a9e33ac618', class: "pds-sortable-item__actions" }, h("slot", { key: '8f77cd2e46a7ed2d442f04747c2ef6b726912ad9', name: "sortable-item-actions" })))));
41
+ return (h(Host, { key: '07dcd36e87b8fcfae7ff5f33a7bd8d44322fcbb3', class: "pds-sortable-item", id: this.componentId }, this.showHandle && (h("div", { key: 'cb2de083316c50beb63d700288c9091d01a99240', class: "pds-sortable-item__handle" }, h("pds-icon", { key: '90906fe69419f1a240aa976e7024872577d00bd3', "aria-hidden": "true", icon: handleIcon }))), h("slot", { key: 'a6969eb7d575919db12f98e3fc5d82708128be8e' }), this.enableActions && (h("div", { key: '5688ea0ead3c2adba9e21a7fa327adc6fdbc71b1', class: "pds-sortable-item__actions" }, h("slot", { key: 'f62b4ecf0c92edae854e9b3ca5e9da6a5051f77d', name: "sortable-item-actions" })))));
42
42
  }
43
43
  static get is() { return "pds-sortable-item"; }
44
44
  static get encapsulation() { return "scoped"; }
@@ -57,7 +57,7 @@ export class PdsSortable {
57
57
  this.sortableInstance = Sortable.create(this.el, sortableOptions);
58
58
  }
59
59
  render() {
60
- return (h(Host, { key: '7c5c1c00c00f8e7122c292f83f33b0b5638a4617', class: this.classNames(), id: this.componentId }, h("slot", { key: 'c418a9e41ff37672d886259c3c8a060507b2a16a' })));
60
+ return (h(Host, { key: '235879c63aa8e55ea819fd3bcdb30ef56dd2c0b3', class: this.classNames(), id: this.componentId }, h("slot", { key: '28cb6ef1a3b1f7de15f1f2728ffa625c879890dc' })));
61
61
  }
62
62
  static get is() { return "pds-sortable"; }
63
63
  static get encapsulation() { return "scoped"; }
@@ -2,7 +2,7 @@
2
2
  --sizing-input-toggle-size: calc(var(--pine-dimension-250) - (var(--pine-dimension-025) * 2));
3
3
  --pine-dimension-025: 2px;
4
4
  --spacing-message-inline: calc(var(--pine-dimension-450) + var(--pine-dimension-150));
5
- --number-transition-timing: 0.15s ease-out;
5
+ --number-transition-timing: var(--pine-motion-duration-fast) ease-out;
6
6
  align-items: flex-start;
7
7
  color: var(--pine-color-text);
8
8
  display: inline-flex;
@@ -82,9 +82,9 @@ export class PdsSwitch {
82
82
  this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el));
83
83
  }
84
84
  render() {
85
- return (h(Host, { key: '3b15b1f098a56bed7f5ab95a549a0ca1cb3444b3', class: this.switchClassNames(), "aria-disabled": this.disabled ? 'true' : null }, h("label", { key: 'f0a6a95ead6b8b11122c5153402fbe68e1382cb4', htmlFor: this.componentId }, h("input", Object.assign({ key: '7633dce93d0983f31492cca51f238d2e321d3316', "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, checked: this.checked, class: "pds-switch__input", disabled: this.disabled, id: this.componentId, name: this.name ? this.name : this.componentId, onChange: this.onSwitchUpdate, required: this.required, type: "checkbox", value: this.value }, this.inheritedAttributes)), h("span", { key: '3b0b1a38d4a0cee505bd0f1c7383af259e2da2b0', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), this.helperMessage &&
86
- h("div", { key: 'e6770c0fed9f7a8a626e91cd8aa84b8623bd4b32', class: `pds-switch__message`, id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
87
- h("div", { key: '88cb91dc6cf056b0af35a1821c839166217a9eb4', class: `pds-switch__message pds-switch__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: '6faf4e7b7e13193c147769d9308fb4d23425aa9c', icon: danger, size: "small" }), this.errorMessage)));
85
+ return (h(Host, { key: '0f7a97cc04485d5ead92f1d9e1deff176bef7859', class: this.switchClassNames(), "aria-disabled": this.disabled ? 'true' : null }, h("label", { key: 'bb8d0849e8ac5fd63d83f30d892bb195c7ed984c', htmlFor: this.componentId }, h("input", Object.assign({ key: 'd4f1c469ed61e5511fb4fef2b587b7320b7b8d10', "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, checked: this.checked, class: "pds-switch__input", disabled: this.disabled, id: this.componentId, name: this.name ? this.name : this.componentId, onChange: this.onSwitchUpdate, required: this.required, type: "checkbox", value: this.value }, this.inheritedAttributes)), h("span", { key: 'a902c71c77d143e5930f18ab3f37d3442d9190e3', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), this.helperMessage &&
86
+ h("div", { key: '3802a9cc1068caa4955634be3c728f283dedab16', class: `pds-switch__message`, id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
87
+ h("div", { key: 'be0d4094af7f9c59be32faf42aed585ec92fd730', class: `pds-switch__message pds-switch__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: 'f0f342b703fc5db7a4b03891ed5101e0ebcde47e', icon: danger, size: "small" }), this.errorMessage)));
88
88
  }
89
89
  static get is() { return "pds-switch"; }
90
90
  static get encapsulation() { return "shadow"; }
@@ -1,7 +1,7 @@
1
1
  import { Host, h } from "@stencil/core";
2
2
  export class PdsTableBody {
3
3
  render() {
4
- return (h(Host, { key: 'bd4c84fdefd61afbd4138488b04419d62021c1ad', role: "rowgroup", part: "body" }, h("slot", { key: 'a16c0cfc807969c005b743293144e4f7470fe851' })));
4
+ return (h(Host, { key: '38b6b6121a4652e5b98f2ff22721e687ae401437', role: "rowgroup", part: "body" }, h("slot", { key: '7ce84ac64307b9e19a8b4b72efe3e8eab34f99bf' })));
5
5
  }
6
6
  static get is() { return "pds-table-body"; }
7
7
  static get encapsulation() { return "shadow"; }
@@ -123,11 +123,11 @@ export class PdsTableCell {
123
123
  return classNames.join(' ');
124
124
  }
125
125
  render() {
126
- return (h(Host, { key: '1b20d85c75e5ca772f1c6fb402d06ef0f6b170a7', class: this.classNames(), role: "gridcell", part: "cell", tabIndex: this.truncate ? 0 : undefined, style: this.tableRef &&
126
+ return (h(Host, { key: '1c37f341c8171d322d60647b25bfa92fdd9ea339', class: this.classNames(), role: "gridcell", part: "cell", style: this.tableRef &&
127
127
  this.tableRef.fixedColumn &&
128
128
  this.tableRef.selectable
129
129
  ? { '--fixed-cell-position': '40px' }
130
- : {} }, h("slot", { key: '3d1dc98bc9e3dead532af0c5c79305eaedee62be' })));
130
+ : {} }, h("slot", { key: '339b2217df131c58d76258f581a53c0bd46cbd03' })));
131
131
  }
132
132
  static get is() { return "pds-table-cell"; }
133
133
  static get encapsulation() { return "shadow"; }
@@ -174,7 +174,7 @@ export class PdsTableCell {
174
174
  "optional": false,
175
175
  "docs": {
176
176
  "tags": [],
177
- "text": "Truncates content to a max width and adds an ellipsis.\nWhen text overflows, a tooltip showing the full text will appear on hover/focus.\nNote: When truncate is enabled, the element automatically receives tabindex=\"0\" for keyboard accessibility."
177
+ "text": "Truncates content to a max width and adds an ellipsis.\nWhen text overflows, a tooltip showing the full text will appear on hover/focus.\nNote: While the content is overflowing, the cell receives tabindex=\"0\" so the\ntooltip can be reached by keyboard. Content that fits is left out of the tab order."
178
178
  },
179
179
  "getter": false,
180
180
  "setter": false,