@pine-ds/core 3.14.2 → 3.15.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 (559) hide show
  1. package/components/index2.js +1 -1
  2. package/components/index2.js.map +1 -1
  3. package/components/mock-pds-modal.js +1 -1
  4. package/components/pds-chip2.js +50 -3
  5. package/components/pds-chip2.js.map +1 -1
  6. package/components/pds-combobox.js +245 -12
  7. package/components/pds-combobox.js.map +1 -1
  8. package/components/pds-copytext.js +1 -1
  9. package/components/pds-divider.js +1 -1
  10. package/components/pds-dropdown-menu-item.js +10 -2
  11. package/components/pds-dropdown-menu-item.js.map +1 -1
  12. package/components/pds-dropdown-menu-separator.js +1 -1
  13. package/components/pds-dropdown-menu.js +1 -1
  14. package/components/pds-filter.js +1 -1
  15. package/components/pds-filters.js +1 -1
  16. package/components/pds-image.js +2 -2
  17. package/components/pds-input.js +1 -1
  18. package/components/pds-link2.js +7 -2
  19. package/components/pds-link2.js.map +1 -1
  20. package/components/pds-loader2.js +1 -1
  21. package/components/pds-modal-content.js +2 -2
  22. package/components/pds-modal-footer.js +1 -1
  23. package/components/pds-modal-header.js +1 -1
  24. package/components/pds-modal.js +3 -3
  25. package/components/pds-multiselect.js +152 -16
  26. package/components/pds-multiselect.js.map +1 -1
  27. package/components/pds-popover.js +1 -1
  28. package/components/pds-progress.js +1 -1
  29. package/components/pds-property.js +1 -1
  30. package/components/pds-radio-group.js +3 -3
  31. package/components/pds-radio.js +3 -3
  32. package/components/pds-row.js +1 -1
  33. package/components/pds-select.js +1 -1
  34. package/components/pds-sortable-item.js +1 -1
  35. package/components/pds-sortable.js +1 -1
  36. package/components/pds-switch.js +3 -3
  37. package/components/pds-tab.js +3 -3
  38. package/components/pds-table-body.js +1 -1
  39. package/components/pds-table-cell2.js +3 -3
  40. package/components/pds-table-cell2.js.map +1 -1
  41. package/components/pds-table-head-cell2.js +2 -2
  42. package/components/pds-table-head.js +1 -1
  43. package/components/pds-table-row.js +1 -1
  44. package/components/pds-tabpanel.js +1 -1
  45. package/components/pds-tabs.js +1 -1
  46. package/components/pds-text2.js +1 -1
  47. package/components/pds-textarea.js +4 -4
  48. package/components/pds-toast.js +3 -3
  49. package/components/pds-tooltip.js +2 -2
  50. package/dist/cjs/{index-BA--jsiy.js → index-DkQebouX.js} +3 -3
  51. package/dist/cjs/index-DkQebouX.js.map +1 -0
  52. package/dist/cjs/loader.cjs.js +1 -1
  53. package/dist/cjs/mock-pds-modal.cjs.entry.js +1 -1
  54. package/dist/cjs/pds-accordion.cjs.entry.js +1 -1
  55. package/dist/cjs/pds-avatar.cjs.entry.js +1 -1
  56. package/dist/cjs/pds-button.cjs.entry.js +1 -1
  57. package/dist/cjs/pds-checkbox.cjs.entry.js +1 -1
  58. package/dist/cjs/pds-chip.cjs.entry.js +47 -3
  59. package/dist/cjs/pds-chip.entry.cjs.js.map +1 -1
  60. package/dist/cjs/pds-combobox.cjs.entry.js +221 -6
  61. package/dist/cjs/pds-combobox.entry.cjs.js.map +1 -1
  62. package/dist/cjs/pds-copytext.cjs.entry.js +2 -2
  63. package/dist/cjs/pds-divider.cjs.entry.js +1 -1
  64. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +8 -2
  65. package/dist/cjs/pds-dropdown-menu-item.entry.cjs.js.map +1 -1
  66. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +1 -1
  67. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +1 -1
  68. package/dist/cjs/pds-filter.cjs.entry.js +2 -2
  69. package/dist/cjs/pds-filters.cjs.entry.js +1 -1
  70. package/dist/cjs/pds-image.cjs.entry.js +2 -2
  71. package/dist/cjs/pds-input.cjs.entry.js +2 -2
  72. package/dist/cjs/pds-link.cjs.entry.js +7 -3
  73. package/dist/cjs/pds-link.entry.cjs.js.map +1 -1
  74. package/dist/cjs/pds-loader.cjs.entry.js +1 -1
  75. package/dist/cjs/pds-modal-content.cjs.entry.js +2 -2
  76. package/dist/cjs/pds-modal-footer.cjs.entry.js +1 -1
  77. package/dist/cjs/pds-modal-header.cjs.entry.js +1 -1
  78. package/dist/cjs/pds-modal.cjs.entry.js +3 -3
  79. package/dist/cjs/pds-multiselect.cjs.entry.js +132 -11
  80. package/dist/cjs/pds-multiselect.entry.cjs.js.map +1 -1
  81. package/dist/cjs/pds-popover.cjs.entry.js +1 -1
  82. package/dist/cjs/pds-progress.cjs.entry.js +1 -1
  83. package/dist/cjs/pds-property.cjs.entry.js +1 -1
  84. package/dist/cjs/pds-radio-group.cjs.entry.js +4 -4
  85. package/dist/cjs/pds-radio.cjs.entry.js +4 -4
  86. package/dist/cjs/pds-row.cjs.entry.js +1 -1
  87. package/dist/cjs/pds-select.cjs.entry.js +2 -2
  88. package/dist/cjs/pds-sortable-item.cjs.entry.js +2 -2
  89. package/dist/cjs/pds-sortable.cjs.entry.js +1 -1
  90. package/dist/cjs/pds-switch.cjs.entry.js +4 -4
  91. package/dist/cjs/pds-tab.cjs.entry.js +3 -3
  92. package/dist/cjs/pds-table-body.cjs.entry.js +1 -1
  93. package/dist/cjs/pds-table-cell.cjs.entry.js +3 -3
  94. package/dist/cjs/pds-table-cell.entry.cjs.js.map +1 -1
  95. package/dist/cjs/pds-table-head-cell.cjs.entry.js +3 -3
  96. package/dist/cjs/pds-table-head.cjs.entry.js +1 -1
  97. package/dist/cjs/pds-table-row.cjs.entry.js +1 -1
  98. package/dist/cjs/pds-tabpanel.cjs.entry.js +1 -1
  99. package/dist/cjs/pds-tabs.cjs.entry.js +1 -1
  100. package/dist/cjs/pds-text.cjs.entry.js +1 -1
  101. package/dist/cjs/pds-textarea.cjs.entry.js +5 -5
  102. package/dist/cjs/pds-toast.cjs.entry.js +3 -3
  103. package/dist/cjs/pds-tooltip.cjs.entry.js +2 -2
  104. package/dist/cjs/pine-core.cjs.js +1 -1
  105. package/dist/collection/components/pds-chip/pds-chip.css +4 -3
  106. package/dist/collection/components/pds-chip/pds-chip.js +102 -1
  107. package/dist/collection/components/pds-chip/pds-chip.js.map +1 -1
  108. package/dist/collection/components/pds-chip/stories/pds-chip.stories.js +38 -0
  109. package/dist/collection/components/pds-combobox/combobox-interface.js +2 -0
  110. package/dist/collection/components/pds-combobox/combobox-interface.js.map +1 -0
  111. package/dist/collection/components/pds-combobox/pds-combobox.css +20 -0
  112. package/dist/collection/components/pds-combobox/pds-combobox.js +415 -6
  113. package/dist/collection/components/pds-combobox/pds-combobox.js.map +1 -1
  114. package/dist/collection/components/pds-copytext/pds-copytext.js +1 -1
  115. package/dist/collection/components/pds-divider/pds-divider.js +1 -1
  116. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +53 -2
  117. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js.map +1 -1
  118. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +1 -1
  119. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +1 -1
  120. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +1 -1
  121. package/dist/collection/components/pds-filters/pds-filters.js +1 -1
  122. package/dist/collection/components/pds-image/pds-image.js +2 -2
  123. package/dist/collection/components/pds-input/pds-input.js +1 -1
  124. package/dist/collection/components/pds-link/pds-link.js +34 -2
  125. package/dist/collection/components/pds-link/pds-link.js.map +1 -1
  126. package/dist/collection/components/pds-loader/pds-loader.js +1 -1
  127. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +2 -2
  128. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +1 -1
  129. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +1 -1
  130. package/dist/collection/components/pds-modal/pds-modal.js +3 -3
  131. package/dist/collection/components/pds-modal/test/mock-pds-modal.js +1 -1
  132. package/dist/collection/components/pds-multiselect/multiselect-interface.js.map +1 -1
  133. package/dist/collection/components/pds-multiselect/pds-multiselect.css +9 -0
  134. package/dist/collection/components/pds-multiselect/pds-multiselect.js +191 -10
  135. package/dist/collection/components/pds-multiselect/pds-multiselect.js.map +1 -1
  136. package/dist/collection/components/pds-multiselect/stories/pds-multiselect.stories.js +41 -0
  137. package/dist/collection/components/pds-popover/pds-popover.js +1 -1
  138. package/dist/collection/components/pds-progress/pds-progress.js +1 -1
  139. package/dist/collection/components/pds-property/pds-property.js +1 -1
  140. package/dist/collection/components/pds-radio/pds-radio.js +3 -3
  141. package/dist/collection/components/pds-radio-group/pds-radio-group.js +3 -3
  142. package/dist/collection/components/pds-row/pds-row.js +1 -1
  143. package/dist/collection/components/pds-select/pds-select.js +1 -1
  144. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
  145. package/dist/collection/components/pds-sortable/pds-sortable.js +1 -1
  146. package/dist/collection/components/pds-switch/pds-switch.js +3 -3
  147. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
  148. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.css +1 -1
  149. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +2 -2
  150. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +1 -1
  151. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +2 -2
  152. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +1 -1
  153. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js +3 -3
  154. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +1 -1
  155. package/dist/collection/components/pds-tabs/pds-tabs.js +1 -1
  156. package/dist/collection/components/pds-text/pds-text.js +1 -1
  157. package/dist/collection/components/pds-textarea/pds-textarea.js +4 -4
  158. package/dist/collection/components/pds-toast/pds-toast.js +3 -3
  159. package/dist/collection/components/pds-tooltip/pds-tooltip.js +2 -2
  160. package/dist/docs.json +588 -3
  161. package/dist/esm/{index-DY8eSueV.js → index-D094LgxJ.js} +3 -3
  162. package/dist/esm/index-D094LgxJ.js.map +1 -0
  163. package/dist/esm/loader.js +1 -1
  164. package/dist/esm/mock-pds-modal.entry.js +1 -1
  165. package/dist/esm/pds-accordion.entry.js +1 -1
  166. package/dist/esm/pds-avatar.entry.js +1 -1
  167. package/dist/esm/pds-button.entry.js +1 -1
  168. package/dist/esm/pds-checkbox.entry.js +1 -1
  169. package/dist/esm/pds-chip.entry.js +47 -3
  170. package/dist/esm/pds-chip.entry.js.map +1 -1
  171. package/dist/esm/pds-combobox.entry.js +221 -6
  172. package/dist/esm/pds-combobox.entry.js.map +1 -1
  173. package/dist/esm/pds-copytext.entry.js +2 -2
  174. package/dist/esm/pds-divider.entry.js +1 -1
  175. package/dist/esm/pds-dropdown-menu-item.entry.js +8 -2
  176. package/dist/esm/pds-dropdown-menu-item.entry.js.map +1 -1
  177. package/dist/esm/pds-dropdown-menu-separator.entry.js +1 -1
  178. package/dist/esm/pds-dropdown-menu.entry.js +1 -1
  179. package/dist/esm/pds-filter.entry.js +2 -2
  180. package/dist/esm/pds-filters.entry.js +1 -1
  181. package/dist/esm/pds-image.entry.js +2 -2
  182. package/dist/esm/pds-input.entry.js +2 -2
  183. package/dist/esm/pds-link.entry.js +7 -3
  184. package/dist/esm/pds-link.entry.js.map +1 -1
  185. package/dist/esm/pds-loader.entry.js +1 -1
  186. package/dist/esm/pds-modal-content.entry.js +2 -2
  187. package/dist/esm/pds-modal-footer.entry.js +1 -1
  188. package/dist/esm/pds-modal-header.entry.js +1 -1
  189. package/dist/esm/pds-modal.entry.js +3 -3
  190. package/dist/esm/pds-multiselect.entry.js +132 -11
  191. package/dist/esm/pds-multiselect.entry.js.map +1 -1
  192. package/dist/esm/pds-popover.entry.js +1 -1
  193. package/dist/esm/pds-progress.entry.js +1 -1
  194. package/dist/esm/pds-property.entry.js +1 -1
  195. package/dist/esm/pds-radio-group.entry.js +4 -4
  196. package/dist/esm/pds-radio.entry.js +4 -4
  197. package/dist/esm/pds-row.entry.js +1 -1
  198. package/dist/esm/pds-select.entry.js +2 -2
  199. package/dist/esm/pds-sortable-item.entry.js +2 -2
  200. package/dist/esm/pds-sortable.entry.js +1 -1
  201. package/dist/esm/pds-switch.entry.js +4 -4
  202. package/dist/esm/pds-tab.entry.js +3 -3
  203. package/dist/esm/pds-table-body.entry.js +1 -1
  204. package/dist/esm/pds-table-cell.entry.js +3 -3
  205. package/dist/esm/pds-table-cell.entry.js.map +1 -1
  206. package/dist/esm/pds-table-head-cell.entry.js +3 -3
  207. package/dist/esm/pds-table-head.entry.js +1 -1
  208. package/dist/esm/pds-table-row.entry.js +1 -1
  209. package/dist/esm/pds-tabpanel.entry.js +1 -1
  210. package/dist/esm/pds-tabs.entry.js +1 -1
  211. package/dist/esm/pds-text.entry.js +1 -1
  212. package/dist/esm/pds-textarea.entry.js +5 -5
  213. package/dist/esm/pds-toast.entry.js +3 -3
  214. package/dist/esm/pds-tooltip.entry.js +2 -2
  215. package/dist/esm/pine-core.js +1 -1
  216. package/dist/esm-es5/{index-DY8eSueV.js → index-D094LgxJ.js} +1 -1
  217. package/dist/esm-es5/index-D094LgxJ.js.map +1 -0
  218. package/dist/esm-es5/loader.js +1 -1
  219. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  220. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  221. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  222. package/dist/esm-es5/pds-button.entry.js +1 -1
  223. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  224. package/dist/esm-es5/pds-chip.entry.js +1 -1
  225. package/dist/esm-es5/pds-chip.entry.js.map +1 -1
  226. package/dist/esm-es5/pds-combobox.entry.js +2 -2
  227. package/dist/esm-es5/pds-combobox.entry.js.map +1 -1
  228. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  229. package/dist/esm-es5/pds-divider.entry.js +1 -1
  230. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  231. package/dist/esm-es5/pds-dropdown-menu-item.entry.js.map +1 -1
  232. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  233. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  234. package/dist/esm-es5/pds-filter.entry.js +1 -1
  235. package/dist/esm-es5/pds-filters.entry.js +1 -1
  236. package/dist/esm-es5/pds-image.entry.js +1 -1
  237. package/dist/esm-es5/pds-input.entry.js +1 -1
  238. package/dist/esm-es5/pds-link.entry.js +1 -1
  239. package/dist/esm-es5/pds-link.entry.js.map +1 -1
  240. package/dist/esm-es5/pds-loader.entry.js +1 -1
  241. package/dist/esm-es5/pds-modal-content.entry.js +1 -1
  242. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  243. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  244. package/dist/esm-es5/pds-modal.entry.js +1 -1
  245. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  246. package/dist/esm-es5/pds-multiselect.entry.js.map +1 -1
  247. package/dist/esm-es5/pds-popover.entry.js +1 -1
  248. package/dist/esm-es5/pds-progress.entry.js +1 -1
  249. package/dist/esm-es5/pds-property.entry.js +1 -1
  250. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  251. package/dist/esm-es5/pds-radio.entry.js +1 -1
  252. package/dist/esm-es5/pds-row.entry.js +1 -1
  253. package/dist/esm-es5/pds-select.entry.js +1 -1
  254. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  255. package/dist/esm-es5/pds-sortable.entry.js +1 -1
  256. package/dist/esm-es5/pds-switch.entry.js +1 -1
  257. package/dist/esm-es5/pds-tab.entry.js +1 -1
  258. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  259. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  260. package/dist/esm-es5/pds-table-cell.entry.js.map +1 -1
  261. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  262. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  263. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  264. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  265. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  266. package/dist/esm-es5/pds-text.entry.js +1 -1
  267. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  268. package/dist/esm-es5/pds-toast.entry.js +1 -1
  269. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  270. package/dist/esm-es5/pine-core.js +1 -1
  271. package/dist/pine-core/{p-d6302edd.entry.js → p-003884fd.entry.js} +2 -2
  272. package/dist/pine-core/{p-9e7cd072.system.entry.js → p-0270ebee.system.entry.js} +2 -2
  273. package/dist/pine-core/p-06046885.entry.js +3 -0
  274. package/dist/pine-core/p-06046885.entry.js.map +1 -0
  275. package/dist/pine-core/{p-063afa19.system.entry.js → p-09ff71ad.system.entry.js} +2 -2
  276. package/dist/pine-core/{p-c68bceb1.entry.js → p-0ac54273.entry.js} +2 -2
  277. package/dist/pine-core/{p-ac56273a.system.entry.js → p-0c2f13c3.system.entry.js} +2 -2
  278. package/dist/pine-core/{p-c7c00a27.entry.js → p-119ccf73.entry.js} +2 -2
  279. package/dist/pine-core/{p-87eb8d4b.system.entry.js → p-13105538.system.entry.js} +2 -2
  280. package/dist/pine-core/{p-c24d11c7.entry.js → p-1951d49e.entry.js} +2 -2
  281. package/dist/pine-core/p-1971d358.entry.js +2 -0
  282. package/dist/pine-core/{p-9c928c44.entry.js.map → p-1971d358.entry.js.map} +1 -1
  283. package/dist/pine-core/p-19fef546.system.entry.js +4 -0
  284. package/dist/pine-core/p-19fef546.system.entry.js.map +1 -0
  285. package/dist/pine-core/{p-6d2da3ca.system.entry.js → p-1e77124d.system.entry.js} +2 -2
  286. package/dist/pine-core/{p-f69d3fd6.entry.js → p-220cbe98.entry.js} +2 -2
  287. package/dist/pine-core/{p-9d6b6ff3.system.entry.js → p-226e45be.system.entry.js} +2 -2
  288. package/dist/pine-core/{p-90615423.system.entry.js → p-2883cb69.system.entry.js} +2 -2
  289. package/dist/pine-core/{p-31168da5.entry.js → p-2d21bc31.entry.js} +2 -2
  290. package/dist/pine-core/p-31bfac45.entry.js +2 -0
  291. package/dist/pine-core/{p-a3cdff85.entry.js → p-35e91ecb.entry.js} +2 -2
  292. package/dist/pine-core/{p-2537aacb.entry.js → p-3815f565.entry.js} +2 -2
  293. package/dist/pine-core/{p-a99e8caf.entry.js → p-396d4b63.entry.js} +2 -2
  294. package/dist/pine-core/{p-9bb6cc3d.entry.js → p-3b0a4abe.entry.js} +2 -2
  295. package/dist/pine-core/{p-5b9110fe.entry.js → p-3cd53462.entry.js} +2 -2
  296. package/dist/pine-core/{p-a5b24b1d.system.entry.js → p-3e45826f.system.entry.js} +2 -2
  297. package/dist/pine-core/{p-12360e47.entry.js → p-425144ae.entry.js} +2 -2
  298. package/dist/pine-core/p-425144ae.entry.js.map +1 -0
  299. package/dist/pine-core/p-48ed8147.entry.js +2 -0
  300. package/dist/pine-core/p-48ed8147.entry.js.map +1 -0
  301. package/dist/pine-core/{p-5b3ac18e.system.entry.js → p-4a42e114.system.entry.js} +2 -2
  302. package/dist/pine-core/p-4c82bff5.entry.js +2 -0
  303. package/dist/pine-core/{p-a07b8e45.system.entry.js → p-4e24be57.system.entry.js} +2 -2
  304. package/dist/pine-core/p-4ed357a4.entry.js +2 -0
  305. package/dist/pine-core/p-4ed357a4.entry.js.map +1 -0
  306. package/dist/pine-core/p-50a439b5.entry.js +2 -0
  307. package/dist/pine-core/{p-3440138d.entry.js → p-5162baee.entry.js} +2 -2
  308. package/dist/pine-core/{p-426e90cb.entry.js → p-51d2999d.entry.js} +2 -2
  309. package/dist/pine-core/{p-ba623ced.entry.js → p-563b640d.entry.js} +2 -2
  310. package/dist/pine-core/{p-d1313dd6.system.entry.js → p-599a5903.system.entry.js} +2 -2
  311. package/dist/pine-core/{p-YqHO7iPZ.system.js.map → p-5O8bhSdk.system.js.map} +1 -1
  312. package/dist/pine-core/{p-5f2865df.entry.js → p-5ef5f6b3.entry.js} +2 -2
  313. package/dist/pine-core/{p-4c23c75b.system.entry.js → p-63a669c9.system.entry.js} +2 -2
  314. package/dist/pine-core/p-65d0032c.system.entry.js +2 -0
  315. package/dist/pine-core/{p-2f6f60d9.entry.js → p-68f97bdf.entry.js} +2 -2
  316. package/dist/pine-core/p-6918b378.system.entry.js +2 -0
  317. package/dist/pine-core/{p-5e92aa34.system.entry.js.map → p-6918b378.system.entry.js.map} +1 -1
  318. package/dist/pine-core/{p-e6dc2297.entry.js → p-694cfe69.entry.js} +2 -2
  319. package/dist/pine-core/{p-bddc9c5a.entry.js → p-6c25dfc3.entry.js} +2 -2
  320. package/dist/pine-core/{p-9ada659b.entry.js → p-6cbad264.entry.js} +2 -2
  321. package/dist/pine-core/{p-4d9eee67.system.entry.js → p-72ca815d.system.entry.js} +2 -2
  322. package/dist/pine-core/{p-63269b89.entry.js → p-766e52a3.entry.js} +2 -2
  323. package/dist/pine-core/{p-d41112ad.entry.js → p-795e1727.entry.js} +2 -2
  324. package/dist/pine-core/p-795e1727.entry.js.map +1 -0
  325. package/dist/pine-core/{p-e8cf15d7.system.entry.js → p-7a6f11bd.system.entry.js} +2 -2
  326. package/dist/pine-core/{p-c292e5da.system.entry.js → p-7d7dce2c.system.entry.js} +2 -2
  327. package/dist/pine-core/{p-137b3289.system.entry.js → p-7da176b4.system.entry.js} +2 -2
  328. package/dist/pine-core/{p-9eccf7b9.entry.js → p-88dd25dd.entry.js} +2 -2
  329. package/dist/pine-core/p-8KFA3I5T.system.js.map +1 -0
  330. package/dist/pine-core/{p-757c7b80.entry.js → p-8e40c9ef.entry.js} +2 -2
  331. package/dist/pine-core/{p-rcUX-rt5.system.js.map → p-8tpU1leU.system.js.map} +1 -1
  332. package/dist/pine-core/p-94a9ff2a.system.entry.js +2 -0
  333. package/dist/pine-core/{p-ccab748a.entry.js → p-957647f9.entry.js} +2 -2
  334. package/dist/pine-core/{p-02f48157.system.entry.js → p-9606f567.system.entry.js} +2 -2
  335. package/dist/pine-core/{p-475bb340.entry.js → p-9660a2c2.entry.js} +2 -2
  336. package/dist/pine-core/{p-3f0a6a75.system.entry.js → p-9ba4acdf.system.entry.js} +2 -2
  337. package/dist/pine-core/{p-7dd74fe2.system.entry.js → p-9d9a5ca8.system.entry.js} +2 -2
  338. package/dist/pine-core/{p-LM0mZTib.system.js.map → p-9eQIEVii.system.js.map} +1 -1
  339. package/dist/pine-core/{p-htODgUCV.system.js.map → p-B036z4h-.system.js.map} +1 -1
  340. package/dist/pine-core/{p-B8OHXU49.system.js.map → p-BASnRvhy.system.js.map} +1 -1
  341. package/dist/pine-core/{p-4EbKXnVN.system.js.map → p-BK1BTkTt.system.js.map} +1 -1
  342. package/dist/pine-core/{p-CI7DD4Gj.system.js.map → p-BR9M75xt.system.js.map} +1 -1
  343. package/dist/pine-core/{p-bs74TBAh.system.js.map → p-BRn0ywk1.system.js.map} +1 -1
  344. package/dist/pine-core/{p-bkQbPz-z.system.js.map → p-Be8OBmYb.system.js.map} +1 -1
  345. package/dist/pine-core/p-BpZTjdau.system.js.map +1 -0
  346. package/dist/pine-core/{p-BJtTt670.system.js.map → p-BqkabXR7.system.js.map} +1 -1
  347. package/dist/pine-core/{p-DFXWnbHE.system.js.map → p-BssHFst4.system.js.map} +1 -1
  348. package/dist/pine-core/{p-CP48ADFM.system.js → p-BxVkyfaO.system.js} +1 -1
  349. package/dist/pine-core/p-BxVkyfaO.system.js.map +1 -0
  350. package/dist/pine-core/{p-BTe59phF.system.js.map → p-CE8RZXT8.system.js.map} +1 -1
  351. package/dist/pine-core/{p-Cun139qe.system.js.map → p-CJ4Gf3Nx.system.js.map} +1 -1
  352. package/dist/pine-core/{p-Ct9csNdF.system.js.map → p-CUv9KdhN.system.js.map} +1 -1
  353. package/dist/pine-core/p-CWPG1B5Z.system.js.map +1 -0
  354. package/dist/pine-core/{p-C48G0LPH.system.js.map → p-CcDv1OdF.system.js.map} +1 -1
  355. package/dist/pine-core/{p-BHjZufAO.system.js.map → p-CjQwwLdV.system.js.map} +1 -1
  356. package/dist/pine-core/{p-BA95hFrH.system.js.map → p-ClY6yIBF.system.js.map} +1 -1
  357. package/dist/pine-core/{p-Bn36FPag.system.js.map → p-D-iLwshJ.system.js.map} +1 -1
  358. package/dist/pine-core/{p-DkNlmqjM.system.js.map → p-D02u2D7r.system.js.map} +1 -1
  359. package/dist/pine-core/{p-DY8eSueV.js → p-D094LgxJ.js} +1 -1
  360. package/dist/pine-core/p-D094LgxJ.js.map +1 -0
  361. package/dist/pine-core/{p-CR01VmO6.system.js.map → p-D3Ug1A-l.system.js.map} +1 -1
  362. package/dist/pine-core/{p-j0609tLE.system.js.map → p-DFWnxG_e.system.js.map} +1 -1
  363. package/dist/pine-core/{p-DbNPEZgc.system.js.map → p-DFY2-W9M.system.js.map} +1 -1
  364. package/dist/pine-core/{p-5L_gsODn.system.js.map → p-DKT0sVlZ.system.js.map} +1 -1
  365. package/dist/pine-core/{p-Cn_QqTXg.system.js.map → p-DXoBK65z.system.js.map} +1 -1
  366. package/dist/pine-core/{p-Civ2VHC7.system.js.map → p-DY97YDUU.system.js.map} +1 -1
  367. package/dist/pine-core/{p-ClPf_JF1.system.js.map → p-DZt6ah_A.system.js.map} +1 -1
  368. package/dist/pine-core/{p-eUcBQ_fh.system.js.map → p-De6wHGVf.system.js.map} +1 -1
  369. package/dist/pine-core/p-DgtQU13G.system.js.map +1 -0
  370. package/dist/pine-core/{p-CpyTw2IQ.system.js.map → p-DmWm26A6.system.js.map} +1 -1
  371. package/dist/pine-core/{p-Lk6DnEPT.system.js.map → p-DwXA2Glx.system.js.map} +1 -1
  372. package/dist/pine-core/{p-CP2nsJcg.system.js.map → p-GH_AtkdO.system.js.map} +1 -1
  373. package/dist/pine-core/p-JAVnELnm.system.js +1 -1
  374. package/dist/pine-core/{p-CSLo9qKS.system.js.map → p-P65hM6YU.system.js.map} +1 -1
  375. package/dist/pine-core/{p-DwQewDCV.system.js.map → p-PZw10cnm.system.js.map} +1 -1
  376. package/dist/pine-core/{p-CmquVvkz.system.js.map → p-Ri89mw0-.system.js.map} +1 -1
  377. package/dist/pine-core/{p-8f2a5a4c.system.entry.js → p-a24c75c2.system.entry.js} +2 -2
  378. package/dist/pine-core/{p-5040a872.entry.js → p-ad8fe96c.entry.js} +2 -2
  379. package/dist/pine-core/p-ae359dc7.system.entry.js +2 -0
  380. package/dist/pine-core/p-ae359dc7.system.entry.js.map +1 -0
  381. package/dist/pine-core/p-af5bf21d.entry.js +2 -0
  382. package/dist/pine-core/{p-325b3b0d.system.entry.js → p-b09bde5c.system.entry.js} +2 -2
  383. package/dist/pine-core/{p-7b5c8248.system.entry.js → p-b3ee3c4c.system.entry.js} +2 -2
  384. package/dist/pine-core/{p-cac3128b.system.entry.js → p-b46f66e8.system.entry.js} +2 -2
  385. package/dist/pine-core/p-b46f66e8.system.entry.js.map +1 -0
  386. package/dist/pine-core/{p-4d85945b.system.entry.js → p-b6ede995.system.entry.js} +2 -2
  387. package/dist/pine-core/p-ba195382.system.entry.js +2 -0
  388. package/dist/pine-core/{p-205ec2ac.system.entry.js → p-bc4b1749.system.entry.js} +2 -2
  389. package/dist/pine-core/{p-70aa35fc.system.entry.js → p-bce9f17d.system.entry.js} +2 -2
  390. package/dist/pine-core/{p-ac240034.system.entry.js → p-bd18b9bf.system.entry.js} +2 -2
  391. package/dist/pine-core/p-bd2329cd.entry.js +2 -0
  392. package/dist/pine-core/p-bf712423.entry.js +2 -0
  393. package/dist/pine-core/{p-9f0f1389.entry.js.map → p-bf712423.entry.js.map} +1 -1
  394. package/dist/pine-core/{p-154a32f4.entry.js → p-bfac5114.entry.js} +2 -2
  395. package/dist/pine-core/{p-4f1cRPxE.system.js.map → p-bw-OZgCg.system.js.map} +1 -1
  396. package/dist/pine-core/{p-bc85016b.entry.js → p-c73ef42b.entry.js} +2 -2
  397. package/dist/pine-core/p-c91fd600.entry.js +2 -0
  398. package/dist/pine-core/{p-f47d6724.entry.js → p-caff29fb.entry.js} +2 -2
  399. package/dist/pine-core/{p-8fdb10c4.system.entry.js → p-cb8c24ad.system.entry.js} +2 -2
  400. package/dist/pine-core/{p-8c0fc8ff.entry.js → p-ccdee55a.entry.js} +2 -2
  401. package/dist/pine-core/{p-ab3b6e0c.entry.js → p-d0366fba.entry.js} +2 -2
  402. package/dist/pine-core/{p-6be19a23.system.entry.js → p-d0504aa8.system.entry.js} +2 -2
  403. package/dist/pine-core/{p-8b201c9a.system.entry.js → p-d2b2caa2.system.entry.js} +2 -2
  404. package/dist/pine-core/p-d6139188.system.entry.js +2 -0
  405. package/dist/pine-core/p-d62a5444.system.entry.js +2 -0
  406. package/dist/pine-core/{p-daa36570.system.entry.js → p-d83d6fce.system.entry.js} +2 -2
  407. package/dist/pine-core/{p-6dcd7876.system.entry.js → p-d8d796ad.system.entry.js} +2 -2
  408. package/dist/pine-core/{p-9b3794cd.entry.js → p-e1815c34.entry.js} +2 -2
  409. package/dist/pine-core/{p-811e510d.system.entry.js → p-e9eb3fc3.system.entry.js} +2 -2
  410. package/dist/pine-core/p-eT6pKhWF.system.js.map +1 -0
  411. package/dist/pine-core/{p-d9693048.entry.js → p-ea8aba18.entry.js} +2 -2
  412. package/dist/pine-core/{p-6e862168.system.entry.js → p-ef56bc80.system.entry.js} +2 -2
  413. package/dist/pine-core/p-ef56bc80.system.entry.js.map +1 -0
  414. package/dist/pine-core/{p-51114c2b.system.entry.js → p-f00f70bf.system.entry.js} +2 -2
  415. package/dist/pine-core/{p-2fe330d0.system.entry.js → p-f0df10c7.system.entry.js} +2 -2
  416. package/dist/pine-core/p-f0df10c7.system.entry.js.map +1 -0
  417. package/dist/pine-core/{p-932283cf.system.entry.js → p-fce519e3.system.entry.js} +2 -2
  418. package/dist/pine-core/{p-0sPVsRFU.system.js.map → p-g2zH2UyI.system.js.map} +1 -1
  419. package/dist/pine-core/p-h_fnwqV_.system.js.map +1 -0
  420. package/dist/pine-core/{p-ztsUkqit.system.js.map → p-igLtCO20.system.js.map} +1 -1
  421. package/dist/pine-core/{p-CboCokff.system.js.map → p-kYQszSpu.system.js.map} +1 -1
  422. package/dist/pine-core/{p-BCKPcTKX.system.js.map → p-ljGHaVPv.system.js.map} +1 -1
  423. package/dist/pine-core/{p-CijIWK3K.system.js.map → p-sgZDP7ET.system.js.map} +1 -1
  424. package/dist/pine-core/pds-chip.entry.esm.js.map +1 -1
  425. package/dist/pine-core/pds-combobox.entry.esm.js.map +1 -1
  426. package/dist/pine-core/pds-dropdown-menu-item.entry.esm.js.map +1 -1
  427. package/dist/pine-core/pds-link.entry.esm.js.map +1 -1
  428. package/dist/pine-core/pds-multiselect.entry.esm.js.map +1 -1
  429. package/dist/pine-core/pds-table-cell.entry.esm.js.map +1 -1
  430. package/dist/pine-core/pine-core.esm.js +1 -1
  431. package/dist/types/components/pds-chip/pds-chip.d.ts +18 -0
  432. package/dist/types/components/pds-combobox/combobox-interface.d.ts +23 -0
  433. package/dist/types/components/pds-combobox/pds-combobox.d.ts +64 -0
  434. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.d.ts +13 -0
  435. package/dist/types/components/pds-link/pds-link.d.ts +8 -0
  436. package/dist/types/components/pds-multiselect/multiselect-interface.d.ts +10 -0
  437. package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +16 -1
  438. package/dist/types/components.d.ts +159 -2
  439. package/hydrate/index.js +491 -81
  440. package/hydrate/index.mjs +491 -81
  441. package/package.json +2 -2
  442. package/dist/cjs/index-BA--jsiy.js.map +0 -1
  443. package/dist/esm/index-DY8eSueV.js.map +0 -1
  444. package/dist/esm-es5/index-DY8eSueV.js.map +0 -1
  445. package/dist/pine-core/p-10dbe3e2.entry.js +0 -2
  446. package/dist/pine-core/p-10dbe3e2.entry.js.map +0 -1
  447. package/dist/pine-core/p-10e0be55.entry.js +0 -2
  448. package/dist/pine-core/p-12360e47.entry.js.map +0 -1
  449. package/dist/pine-core/p-1fa303af.entry.js +0 -2
  450. package/dist/pine-core/p-2fe330d0.system.entry.js.map +0 -1
  451. package/dist/pine-core/p-30ea3668.system.entry.js +0 -2
  452. package/dist/pine-core/p-3c04c17e.system.entry.js +0 -2
  453. package/dist/pine-core/p-3c04c17e.system.entry.js.map +0 -1
  454. package/dist/pine-core/p-4alPHnzl.system.js.map +0 -1
  455. package/dist/pine-core/p-5e92aa34.system.entry.js +0 -2
  456. package/dist/pine-core/p-622f1342.system.entry.js +0 -4
  457. package/dist/pine-core/p-622f1342.system.entry.js.map +0 -1
  458. package/dist/pine-core/p-6e862168.system.entry.js.map +0 -1
  459. package/dist/pine-core/p-78ee2e08.system.entry.js +0 -2
  460. package/dist/pine-core/p-8c000d7c.entry.js +0 -2
  461. package/dist/pine-core/p-8eb1c168.entry.js +0 -2
  462. package/dist/pine-core/p-9c928c44.entry.js +0 -2
  463. package/dist/pine-core/p-9f0f1389.entry.js +0 -2
  464. package/dist/pine-core/p-B0Otb6kF.system.js.map +0 -1
  465. package/dist/pine-core/p-BSRmAvMC.system.js.map +0 -1
  466. package/dist/pine-core/p-CG5jdxoZ.system.js.map +0 -1
  467. package/dist/pine-core/p-CP48ADFM.system.js.map +0 -1
  468. package/dist/pine-core/p-DY8eSueV.js.map +0 -1
  469. package/dist/pine-core/p-DieNsvcz.system.js.map +0 -1
  470. package/dist/pine-core/p-a11c3642.system.entry.js +0 -2
  471. package/dist/pine-core/p-aPfTGFhq.system.js.map +0 -1
  472. package/dist/pine-core/p-ac186cd4.system.entry.js +0 -2
  473. package/dist/pine-core/p-b41465b8.entry.js +0 -3
  474. package/dist/pine-core/p-b41465b8.entry.js.map +0 -1
  475. package/dist/pine-core/p-bff9fb8e.entry.js +0 -2
  476. package/dist/pine-core/p-bff9fb8e.entry.js.map +0 -1
  477. package/dist/pine-core/p-cac3128b.system.entry.js.map +0 -1
  478. package/dist/pine-core/p-d41112ad.entry.js.map +0 -1
  479. package/dist/pine-core/p-e0f21c22.entry.js +0 -2
  480. package/dist/pine-core/p-eb026745.entry.js +0 -2
  481. package/dist/pine-core/p-fa21e054.system.entry.js +0 -2
  482. package/dist/vscode.html-data.json +0 -10178
  483. /package/dist/pine-core/{p-d6302edd.entry.js.map → p-003884fd.entry.js.map} +0 -0
  484. /package/dist/pine-core/{p-9e7cd072.system.entry.js.map → p-0270ebee.system.entry.js.map} +0 -0
  485. /package/dist/pine-core/{p-063afa19.system.entry.js.map → p-09ff71ad.system.entry.js.map} +0 -0
  486. /package/dist/pine-core/{p-c68bceb1.entry.js.map → p-0ac54273.entry.js.map} +0 -0
  487. /package/dist/pine-core/{p-ac56273a.system.entry.js.map → p-0c2f13c3.system.entry.js.map} +0 -0
  488. /package/dist/pine-core/{p-c7c00a27.entry.js.map → p-119ccf73.entry.js.map} +0 -0
  489. /package/dist/pine-core/{p-87eb8d4b.system.entry.js.map → p-13105538.system.entry.js.map} +0 -0
  490. /package/dist/pine-core/{p-c24d11c7.entry.js.map → p-1951d49e.entry.js.map} +0 -0
  491. /package/dist/pine-core/{p-6d2da3ca.system.entry.js.map → p-1e77124d.system.entry.js.map} +0 -0
  492. /package/dist/pine-core/{p-f69d3fd6.entry.js.map → p-220cbe98.entry.js.map} +0 -0
  493. /package/dist/pine-core/{p-9d6b6ff3.system.entry.js.map → p-226e45be.system.entry.js.map} +0 -0
  494. /package/dist/pine-core/{p-90615423.system.entry.js.map → p-2883cb69.system.entry.js.map} +0 -0
  495. /package/dist/pine-core/{p-31168da5.entry.js.map → p-2d21bc31.entry.js.map} +0 -0
  496. /package/dist/pine-core/{p-10e0be55.entry.js.map → p-31bfac45.entry.js.map} +0 -0
  497. /package/dist/pine-core/{p-a3cdff85.entry.js.map → p-35e91ecb.entry.js.map} +0 -0
  498. /package/dist/pine-core/{p-2537aacb.entry.js.map → p-3815f565.entry.js.map} +0 -0
  499. /package/dist/pine-core/{p-a99e8caf.entry.js.map → p-396d4b63.entry.js.map} +0 -0
  500. /package/dist/pine-core/{p-9bb6cc3d.entry.js.map → p-3b0a4abe.entry.js.map} +0 -0
  501. /package/dist/pine-core/{p-5b9110fe.entry.js.map → p-3cd53462.entry.js.map} +0 -0
  502. /package/dist/pine-core/{p-a5b24b1d.system.entry.js.map → p-3e45826f.system.entry.js.map} +0 -0
  503. /package/dist/pine-core/{p-5b3ac18e.system.entry.js.map → p-4a42e114.system.entry.js.map} +0 -0
  504. /package/dist/pine-core/{p-1fa303af.entry.js.map → p-4c82bff5.entry.js.map} +0 -0
  505. /package/dist/pine-core/{p-a07b8e45.system.entry.js.map → p-4e24be57.system.entry.js.map} +0 -0
  506. /package/dist/pine-core/{p-8eb1c168.entry.js.map → p-50a439b5.entry.js.map} +0 -0
  507. /package/dist/pine-core/{p-3440138d.entry.js.map → p-5162baee.entry.js.map} +0 -0
  508. /package/dist/pine-core/{p-426e90cb.entry.js.map → p-51d2999d.entry.js.map} +0 -0
  509. /package/dist/pine-core/{p-ba623ced.entry.js.map → p-563b640d.entry.js.map} +0 -0
  510. /package/dist/pine-core/{p-d1313dd6.system.entry.js.map → p-599a5903.system.entry.js.map} +0 -0
  511. /package/dist/pine-core/{p-5f2865df.entry.js.map → p-5ef5f6b3.entry.js.map} +0 -0
  512. /package/dist/pine-core/{p-4c23c75b.system.entry.js.map → p-63a669c9.system.entry.js.map} +0 -0
  513. /package/dist/pine-core/{p-78ee2e08.system.entry.js.map → p-65d0032c.system.entry.js.map} +0 -0
  514. /package/dist/pine-core/{p-2f6f60d9.entry.js.map → p-68f97bdf.entry.js.map} +0 -0
  515. /package/dist/pine-core/{p-e6dc2297.entry.js.map → p-694cfe69.entry.js.map} +0 -0
  516. /package/dist/pine-core/{p-bddc9c5a.entry.js.map → p-6c25dfc3.entry.js.map} +0 -0
  517. /package/dist/pine-core/{p-9ada659b.entry.js.map → p-6cbad264.entry.js.map} +0 -0
  518. /package/dist/pine-core/{p-4d9eee67.system.entry.js.map → p-72ca815d.system.entry.js.map} +0 -0
  519. /package/dist/pine-core/{p-63269b89.entry.js.map → p-766e52a3.entry.js.map} +0 -0
  520. /package/dist/pine-core/{p-e8cf15d7.system.entry.js.map → p-7a6f11bd.system.entry.js.map} +0 -0
  521. /package/dist/pine-core/{p-c292e5da.system.entry.js.map → p-7d7dce2c.system.entry.js.map} +0 -0
  522. /package/dist/pine-core/{p-137b3289.system.entry.js.map → p-7da176b4.system.entry.js.map} +0 -0
  523. /package/dist/pine-core/{p-9eccf7b9.entry.js.map → p-88dd25dd.entry.js.map} +0 -0
  524. /package/dist/pine-core/{p-757c7b80.entry.js.map → p-8e40c9ef.entry.js.map} +0 -0
  525. /package/dist/pine-core/{p-a11c3642.system.entry.js.map → p-94a9ff2a.system.entry.js.map} +0 -0
  526. /package/dist/pine-core/{p-ccab748a.entry.js.map → p-957647f9.entry.js.map} +0 -0
  527. /package/dist/pine-core/{p-02f48157.system.entry.js.map → p-9606f567.system.entry.js.map} +0 -0
  528. /package/dist/pine-core/{p-475bb340.entry.js.map → p-9660a2c2.entry.js.map} +0 -0
  529. /package/dist/pine-core/{p-3f0a6a75.system.entry.js.map → p-9ba4acdf.system.entry.js.map} +0 -0
  530. /package/dist/pine-core/{p-7dd74fe2.system.entry.js.map → p-9d9a5ca8.system.entry.js.map} +0 -0
  531. /package/dist/pine-core/{p-8f2a5a4c.system.entry.js.map → p-a24c75c2.system.entry.js.map} +0 -0
  532. /package/dist/pine-core/{p-5040a872.entry.js.map → p-ad8fe96c.entry.js.map} +0 -0
  533. /package/dist/pine-core/{p-e0f21c22.entry.js.map → p-af5bf21d.entry.js.map} +0 -0
  534. /package/dist/pine-core/{p-325b3b0d.system.entry.js.map → p-b09bde5c.system.entry.js.map} +0 -0
  535. /package/dist/pine-core/{p-7b5c8248.system.entry.js.map → p-b3ee3c4c.system.entry.js.map} +0 -0
  536. /package/dist/pine-core/{p-4d85945b.system.entry.js.map → p-b6ede995.system.entry.js.map} +0 -0
  537. /package/dist/pine-core/{p-ac186cd4.system.entry.js.map → p-ba195382.system.entry.js.map} +0 -0
  538. /package/dist/pine-core/{p-205ec2ac.system.entry.js.map → p-bc4b1749.system.entry.js.map} +0 -0
  539. /package/dist/pine-core/{p-70aa35fc.system.entry.js.map → p-bce9f17d.system.entry.js.map} +0 -0
  540. /package/dist/pine-core/{p-ac240034.system.entry.js.map → p-bd18b9bf.system.entry.js.map} +0 -0
  541. /package/dist/pine-core/{p-8c000d7c.entry.js.map → p-bd2329cd.entry.js.map} +0 -0
  542. /package/dist/pine-core/{p-154a32f4.entry.js.map → p-bfac5114.entry.js.map} +0 -0
  543. /package/dist/pine-core/{p-bc85016b.entry.js.map → p-c73ef42b.entry.js.map} +0 -0
  544. /package/dist/pine-core/{p-eb026745.entry.js.map → p-c91fd600.entry.js.map} +0 -0
  545. /package/dist/pine-core/{p-f47d6724.entry.js.map → p-caff29fb.entry.js.map} +0 -0
  546. /package/dist/pine-core/{p-8fdb10c4.system.entry.js.map → p-cb8c24ad.system.entry.js.map} +0 -0
  547. /package/dist/pine-core/{p-8c0fc8ff.entry.js.map → p-ccdee55a.entry.js.map} +0 -0
  548. /package/dist/pine-core/{p-ab3b6e0c.entry.js.map → p-d0366fba.entry.js.map} +0 -0
  549. /package/dist/pine-core/{p-6be19a23.system.entry.js.map → p-d0504aa8.system.entry.js.map} +0 -0
  550. /package/dist/pine-core/{p-8b201c9a.system.entry.js.map → p-d2b2caa2.system.entry.js.map} +0 -0
  551. /package/dist/pine-core/{p-fa21e054.system.entry.js.map → p-d6139188.system.entry.js.map} +0 -0
  552. /package/dist/pine-core/{p-30ea3668.system.entry.js.map → p-d62a5444.system.entry.js.map} +0 -0
  553. /package/dist/pine-core/{p-daa36570.system.entry.js.map → p-d83d6fce.system.entry.js.map} +0 -0
  554. /package/dist/pine-core/{p-6dcd7876.system.entry.js.map → p-d8d796ad.system.entry.js.map} +0 -0
  555. /package/dist/pine-core/{p-9b3794cd.entry.js.map → p-e1815c34.entry.js.map} +0 -0
  556. /package/dist/pine-core/{p-811e510d.system.entry.js.map → p-e9eb3fc3.system.entry.js.map} +0 -0
  557. /package/dist/pine-core/{p-d9693048.entry.js.map → p-ea8aba18.entry.js.map} +0 -0
  558. /package/dist/pine-core/{p-51114c2b.system.entry.js.map → p-f00f70bf.system.entry.js.map} +0 -0
  559. /package/dist/pine-core/{p-932283cf.system.entry.js.map → p-fce519e3.system.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"p-ztsUkqit.system.js","sources":["src/components/pds-select/pds-select.tokens.scss?tag=pds-select&encapsulation=shadow","src/global/styles/utils/label.scss?tag=pds-select&encapsulation=shadow","src/components/pds-select/pds-select.scss?tag=pds-select&encapsulation=shadow","src/components/pds-select/pds-select.tsx"],"sourcesContent":["@use '~@kajabi-ui/styles/dist/pine/components/pds-select/pds-select.tokens'\n",":host {\n display: inline-block;\n}\n\n:host([aria-disabled=\"true\"]) label {\n color: var(--pine-color-text-label-disabled);\n}\n\n:host([aria-readonly=\"true\"]) {\n label {\n color: var(--pine-color-text-label-readonly);\n }\n}\n\nlabel {\n color: var(--pine-color-text-label);\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n}\n",":host {\n --pds-select-background: var(--pine-color-background-container);\n --pds-select-border: var(--pine-border);\n --pds-select-border-radius: var(--pine-dimension-125);\n --pds-select-border-radius-start-end: var(--pine-dimension-125);\n --pds-select-border-radius-start-start: var(--pine-dimension-125);\n --pds-select-border-radius-end-end: var(--pine-dimension-125);\n --pds-select-border-radius-end-start: var(--pine-dimension-125);\n --pds-select-min-height: 36px;\n --box-shadow-focus: 0 0 0 1px var(--pine-color-background-container), 0 0 0 3px var(--pine-color-focus-ring);\n --box-shadow-focus-error: 0 0 0 1px var(--pine-color-background-container), 0 0 0 3px var(--pine-color-focus-ring-danger);\n\n .hidden,\n :host([hidden]) {\n display: none;\n }\n}\n\n.pds-select {\n color: var(--pine-color-text);\n display: grid;\n flex-direction: column;\n grid-template-areas:\n 'label label'\n 'field field'\n 'message message';\n grid-template-columns: 1fr minmax(2rem, min-content);\n grid-template-rows: min-content min-content min-content;\n position: relative;\n width: 100%;\n}\n\n.pds-select__label-wrapper {\n align-items: center;\n display: flex;\n grid-area: label;\n justify-content: space-between;\n margin-block-end: var(--pine-dimension-2xs);\n}\n\n.pds-select__action {\n align-items: center;\n display: flex;\n gap: var(--pine-dimension-xs);\n margin-inline-start: var(--pine-dimension-xs);\n}\n\nlabel {\n margin-block-end: var(--pine-dimension-2xs);\n}\n\n// When label is inside wrapper, remove its margin\n.pds-select__label-wrapper label {\n margin-block-end: 0;\n}\n\nselect {\n appearance: none;\n background-color: var(--pds-select-background);\n border: var(--pds-select-border);\n border-radius: var(--pds-select-border-radius);\n border-bottom-left-radius: var(--pds-select-border-radius-end-start, var(--pds-select-border-radius));\n border-bottom-right-radius: var(--pds-select-border-radius-end-end, var(--pds-select-border-radius));\n border-top-left-radius: var(--pds-select-border-radius-start-start, var(--pds-select-border-radius));\n border-top-right-radius: var(--pds-select-border-radius-start-end, var(--pds-select-border-radius));\n color: var(--pine-color-text);\n font: var(--pine-typography-body);\n grid-area: field;\n letter-spacing: var(--pine-letter-spacing);\n min-height: var(--pds-select-min-height);\n padding: calc(var(--pine-dimension-xs) - var(--pine-border-width)) var(--pine-dimension-150);\n padding-inline-end: var(--pine-dimension-450);\n position: relative;\n\n &:hover {\n border-color: var(--pine-color-border-hover);\n cursor: pointer;\n }\n\n &:focus-visible {\n border-color: var(--pine-color-border-active);\n outline: var(--pine-outline-focus);\n outline-offset: var(--pine-border-width);\n }\n\n &:disabled {\n background-color: var(--pine-color-background-container-disabled);\n border-color: var(--pine-color-border-disabled);\n color: var(--pine-color-text-disabled);\n cursor: not-allowed;\n }\n\n &:has(~ .pds-select__message .pds-select__error-message) {\n background-color: var(--pine-select-color-background-danger);\n border-color: var(--pine-color-border-danger);\n\n :host-context([data-theme=\"dark\"]) & {\n background-color: var(--pine-color-red-950);\n }\n\n &:focus-visible {\n outline-color: var(--pine-color-focus-ring-danger);\n }\n }\n}\n\n:host(.is-invalid) {\n select {\n background-color: var(--pine-select-color-background-danger);\n border-color: var(--pine-color-border-danger);\n\n :host-context([data-theme=\"dark\"]) & {\n background-color: var(--pine-color-red-950);\n }\n\n &:focus-visible {\n outline-color: var(--pine-color-focus-ring-danger);\n }\n }\n}\n\n:host([highlight]:not(.is-disabled):not(.is-invalid)) {\n select {\n background-color: var(--pine-color-accent-disabled);\n border-color: var(--pine-color-accent);\n color: var(--pine-color-text-accent);\n\n &:hover:not(:disabled) {\n border-color: var(--pine-color-accent-hover);\n }\n\n &:focus-visible {\n outline-color: var(--pine-color-focus-ring);\n }\n }\n\n .pds-select__select-icon {\n color: var(--pine-color-text-accent);\n }\n}\n\n.pds-select__error-message,\n.pds-select__helper-message {\n color: var(--pine-color-text-message);\n font: var(--pine-typography-body-sm-medium);\n margin-block-end: 0;\n margin-block-start: var(--pine-dimension-2xs);\n}\n\n.pds-select__error-message {\n color: var(--pine-color-text-message-danger);\n display: flex;\n gap: var(--pine-dimension-2xs);\n\n pds-icon {\n margin-block-start: var(--pine-dimension-025);\n }\n}\n\n.pds-select__message {\n grid-area: message;\n}\n\n.pds-select__select-icon {\n align-items: center;\n display: flex;\n grid-column: -1 / -2;\n grid-row: 2 / 3;\n height: var(--pds-select-min-height);\n pointer-events: none;\n position: relative;\n z-index: var(--pine-z-index-raised);\n}\n\n.visually-hidden {\n border: 0;\n clip: rect(0 0 0 0);\n clip-path: polygon(0 0, 0 0, 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n\n","import { Component, Element, Event, EventEmitter, Host, h, Prop, Watch } from '@stencil/core';\nimport { messageId, exposeTypeProperty } from '../../utils/form';\nimport { danger, enlarge } from '@pine-ds/icons/icons';\n\n/**\n * @slot action - Content to be displayed in the label area, typically for help icons or links\n */\n@Component({\n tag: 'pds-select',\n styleUrls: ['pds-select.tokens.scss', '../../global/styles/utils/label.scss', 'pds-select.scss'],\n shadow: true,\n formAssociated: true,\n})\nexport class PdsSelect {\n\n private selectEl!: HTMLSelectElement;\n private slotContainer!: HTMLDivElement;\n private internals?: ElementInternals;\n private _type: 'select-one' | 'select-multiple' = 'select-one';\n\n @Element() el: HTMLPdsSelectElement;\n\n /**\n * Specifies if and how the browser provides `autocomplete` assistance for the field.\n */\n @Prop() autocomplete: string;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Indicates whether or not the select field is disabled.\n * @defaultValue false\n */\n @Prop() disabled = false\n\n /**\n * Displays error message text describing an invalid state.\n */\n @Prop() errorMessage: string;\n\n /**\n * Visually hides the label text for instances where only the select should be displayed. Label remains accessible to assistive technology such as screen readers.\n * Note: When true, the action slot is also hidden to maintain a minimal UI.\n */\n @Prop() hideLabel: boolean;\n\n /**\n * Displays helper message text below select.\n */\n @Prop() helperMessage: string;\n\n /**\n * Determines whether or not the select is invalid.\n */\n @Prop() invalid?: boolean;\n\n /**\n * Text to be displayed as the select label.\n */\n @Prop() label?: string;\n\n /**\n * Indicates whether multiple options can be selected.\n * @defaultValue false\n */\n @Prop() multiple = false;\n\n /**\n * Specifies the name. Submitted with the form name/value pair.\n */\n @Prop() name!: string;\n\n /**\n * Indicates whether or not the select field is required.\n * @defaultValue false\n */\n @Prop() required = false;\n\n /**\n * Applies highlight styling to the select field.\n */\n @Prop({ reflect: true }) highlight?: boolean;\n\n /**\n * The value(s) of the selected option(s).\n *\n */\n @Prop({ mutable: true }) value?: string | string[];\n\n\n /**\n * Emitted when the select value changes.\n */\n @Event() pdsSelectChange: EventEmitter<InputEvent>;\n\n /**\n * Emitted when the select loses focus.\n */\n @Event() pdsBlur!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the select gains focus.\n */\n @Event() pdsFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when a key is pressed down in the select.\n */\n @Event() pdsKeyDown!: EventEmitter<KeyboardEvent>;\n\n @Watch('value')\n /**\n * Handles the change in the value of the select component.\n * This method is called whenever the value of the select component changes.\n * It updates the selected option accordingly.\n */\n valueChanged() {\n this.updateSelectedOption();\n this.updateFormValue();\n }\n\n @Watch('multiple')\n /**\n * Updates the type property when multiple changes to match native select behavior.\n */\n multipleChanged() {\n this.updateType();\n }\n\n private updateType() {\n this._type = this.multiple ? 'select-multiple' : 'select-one';\n }\n\n connectedCallback() {\n // Initialize ElementInternals for form association (only once per element instance)\n if (this.el.attachInternals && !this.internals) {\n this.internals = this.el.attachInternals();\n }\n\n // Expose type property on the element instance to match native form element behavior\n exposeTypeProperty(this.el, () => this._type);\n }\n\n componentWillLoad() {\n // Set initial type based on multiple prop\n this.updateType();\n this.updateSelectedOption();\n }\n\n componentDidLoad() {\n // Set initial form value\n this.updateFormValue();\n }\n\n /**\n * Updates the selected option in the select element based on the current value.\n *\n * This method iterates through all the options of the select element and sets the\n * 'selected' attribute on the option that matches the current value. If an option\n * does not match the current value, the 'selected' attribute is removed.\n *\n * @private\n * @returns {void}\n */\n private updateSelectedOption() {\n if (this.selectEl) {\n const options = this.selectEl.options;\n\n // Update the selected attribute for all options.\n Array.from(options).map((option: HTMLOptionElement) => {\n if (Array.isArray(this.value)) {\n option.selected = this.value.includes(option.value);\n } else {\n option.selected = this.value === option.value;\n }\n });\n };\n }\n\n /**\n * Emits an event on input change.\n */\n private onSelectUpdate = (e: Event) => {\n const target = e.target as HTMLSelectElement\n\n const values = Array.from(target.options)\n .filter((option) => ( option.selected))\n .map((option) => ( option.value));\n\n if (values.length === 1 && !this.multiple) {\n this.value = values[0];\n } else {\n this.value = values;\n }\n\n this.pdsSelectChange.emit(e as InputEvent);\n };\n\n private onBlur = (ev: FocusEvent) => {\n this.pdsBlur.emit(ev);\n };\n\n private onFocus = (ev: FocusEvent) => {\n this.pdsFocus.emit(ev);\n };\n\n private onKeyDown = (ev: KeyboardEvent) => {\n this.pdsKeyDown.emit(ev);\n };\n\n /**\n * Handles the change event for the slot element.\n * This method is triggered when the slot content changes.\n * It updates the inner HTML of the select element by cloning and appending\n * the assigned <option> elements from the slot.\n */\n private handleSlotChange = () => {\n const slot = this.slotContainer.querySelector('slot') as HTMLSlotElement;\n\n this.selectEl.innerHTML = '';\n const assignedElements = slot.assignedElements({ flatten: true }) as (HTMLOptionElement | HTMLOptGroupElement)[];\n\n assignedElements.forEach((item) => {\n if ( ['OPTION', 'OPTGROUP'].includes(item.tagName)) {\n const clonedItem = item.cloneNode(true) as HTMLOptionElement | HTMLOptGroupElement;\n if (clonedItem.tagName === 'OPTION' && (clonedItem as HTMLOptionElement).value === this.value) {\n (clonedItem as HTMLOptionElement).selected = true;\n }\n this.selectEl.appendChild(clonedItem);\n }\n });\n\n this.updateSelectedOption();\n };\n\n private getHelperMessage() {\n return this.helperMessage && (\n <p class=\"pds-select__helper-message\" id={messageId(this.componentId, 'helper')}>\n {this.helperMessage}\n </p>\n );\n }\n\n private getErrorMessage() {\n return this.errorMessage && (\n <p class=\"pds-select__error-message\" id={messageId(this.componentId, 'error')} aria-live=\"assertive\">\n <pds-icon icon={danger} size=\"small\"></pds-icon>\n {this.errorMessage}\n </p>\n );\n }\n\n private renderMessages() {\n if (!this.helperMessage && !this.errorMessage) return null;\n\n return (\n <div class=\"pds-select__message\">\n {this.getHelperMessage()}\n {this.getErrorMessage()}\n </div>\n );\n }\n\n private classNames() {\n const classNames = [];\n\n if (this.invalid) { classNames.push('is-invalid'); }\n if (this.disabled) { classNames.push('is-disabled'); }\n\n return classNames.join(' ');\n }\n\n private renderAction() {\n const hasAction = this.el.querySelector('[slot=\"action\"]') !== null;\n if (hasAction) {\n return (\n <div class=\"pds-select__action\" part=\"action\">\n <slot name=\"action\"></slot>\n </div>\n );\n }\n return null;\n }\n\n /**\n * Updates the form value using ElementInternals API\n */\n private updateFormValue() {\n if (this.internals && this.internals.setFormValue) {\n const value = this.value;\n\n // Handle multi-select arrays by converting to FormData or comma-separated string\n if (Array.isArray(value)) {\n if (value.length > 1) {\n // For multiple values, create FormData with multiple entries\n const formData = new FormData();\n value.forEach(val => formData.append(this.name || '', val));\n this.internals.setFormValue(formData);\n } else {\n // Single value in array, use the string value\n this.internals.setFormValue(value[0] || null);\n }\n } else {\n // Single string value\n this.internals.setFormValue(value || null);\n }\n\n // Set validity based on native select validation\n if (this.selectEl && this.internals && this.internals.setValidity) {\n this.internals.setValidity(\n this.selectEl.validity,\n this.selectEl.validationMessage,\n this.selectEl\n );\n }\n }\n }\n\n /**\n * Form Associated Custom Elements API: Called when the form is reset\n */\n formResetCallback() {\n this.value = '';\n this.updateFormValue();\n }\n\n /**\n * Form Associated Custom Elements API: Called when the form is disabled\n */\n formDisabledCallback(disabled: boolean) {\n this.disabled = disabled;\n }\n\n /**\n * Form Associated Custom Elements API: Called to restore form state\n */\n formStateRestoreCallback(state: string | FormData | null) {\n if (typeof state === 'string') {\n this.value = state;\n } else if (state instanceof FormData && this.name) {\n // Extract value(s) from FormData using the select's name\n const values = state.getAll(this.name);\n if (values.length > 1) {\n // Multi-select: convert to string array\n this.value = values.filter(v => typeof v === 'string') as string[];\n } else if (values.length === 1 && typeof values[0] === 'string') {\n // Single select: use string value\n this.value = values[0];\n }\n }\n }\n\n render() {\n const hasAction = this.el.querySelector('[slot=\"action\"]') !== null;\n\n return (\n <Host aria-disabled={this.disabled ? 'true' : null} class={this.classNames()} has-action={hasAction && !this.hideLabel ? 'true' : null}>\n <div class=\"pds-select\">\n {!this.hideLabel && (\n <div class=\"pds-select__label-wrapper\">\n <label htmlFor={this.componentId}>\n <span class={this.hideLabel ? 'visually-hidden' : ''}>\n {this.label}\n </span>\n </label>\n {hasAction && this.renderAction()}\n </div>\n )}\n <select\n aria-label={this.hideLabel ? this.label : undefined}\n autocomplete={this.autocomplete || undefined}\n class=\"pds-select__field\"\n disabled={this.disabled}\n id={this.componentId}\n multiple={this.multiple}\n name={this.name}\n onBlur={this.onBlur}\n onChange={this.onSelectUpdate}\n onFocus={this.onFocus}\n onKeyDown={this.onKeyDown}\n part=\"select\"\n required={this.required}\n ref={(el) => (this.selectEl = el as HTMLSelectElement)}\n ></select>\n <div aria-hidden=\"true\" class=\"hidden\" ref={(el) => (this.slotContainer = el)}>\n <slot onSlotchange={this.handleSlotChange}></slot>\n </div>\n {this.renderMessages()}\n {!this.multiple && <pds-icon class=\"pds-select__select-icon\" icon={enlarge} />}\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"p-igLtCO20.system.js","sources":["src/components/pds-select/pds-select.tokens.scss?tag=pds-select&encapsulation=shadow","src/global/styles/utils/label.scss?tag=pds-select&encapsulation=shadow","src/components/pds-select/pds-select.scss?tag=pds-select&encapsulation=shadow","src/components/pds-select/pds-select.tsx"],"sourcesContent":["@use '~@kajabi-ui/styles/dist/pine/components/pds-select/pds-select.tokens'\n",":host {\n display: inline-block;\n}\n\n:host([aria-disabled=\"true\"]) label {\n color: var(--pine-color-text-label-disabled);\n}\n\n:host([aria-readonly=\"true\"]) {\n label {\n color: var(--pine-color-text-label-readonly);\n }\n}\n\nlabel {\n color: var(--pine-color-text-label);\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n}\n",":host {\n --pds-select-background: var(--pine-color-background-container);\n --pds-select-border: var(--pine-border);\n --pds-select-border-radius: var(--pine-dimension-125);\n --pds-select-border-radius-start-end: var(--pine-dimension-125);\n --pds-select-border-radius-start-start: var(--pine-dimension-125);\n --pds-select-border-radius-end-end: var(--pine-dimension-125);\n --pds-select-border-radius-end-start: var(--pine-dimension-125);\n --pds-select-min-height: 36px;\n --box-shadow-focus: 0 0 0 1px var(--pine-color-background-container), 0 0 0 3px var(--pine-color-focus-ring);\n --box-shadow-focus-error: 0 0 0 1px var(--pine-color-background-container), 0 0 0 3px var(--pine-color-focus-ring-danger);\n\n .hidden,\n :host([hidden]) {\n display: none;\n }\n}\n\n.pds-select {\n color: var(--pine-color-text);\n display: grid;\n flex-direction: column;\n grid-template-areas:\n 'label label'\n 'field field'\n 'message message';\n grid-template-columns: 1fr minmax(2rem, min-content);\n grid-template-rows: min-content min-content min-content;\n position: relative;\n width: 100%;\n}\n\n.pds-select__label-wrapper {\n align-items: center;\n display: flex;\n grid-area: label;\n justify-content: space-between;\n margin-block-end: var(--pine-dimension-2xs);\n}\n\n.pds-select__action {\n align-items: center;\n display: flex;\n gap: var(--pine-dimension-xs);\n margin-inline-start: var(--pine-dimension-xs);\n}\n\nlabel {\n margin-block-end: var(--pine-dimension-2xs);\n}\n\n// When label is inside wrapper, remove its margin\n.pds-select__label-wrapper label {\n margin-block-end: 0;\n}\n\nselect {\n appearance: none;\n background-color: var(--pds-select-background);\n border: var(--pds-select-border);\n border-radius: var(--pds-select-border-radius);\n border-bottom-left-radius: var(--pds-select-border-radius-end-start, var(--pds-select-border-radius));\n border-bottom-right-radius: var(--pds-select-border-radius-end-end, var(--pds-select-border-radius));\n border-top-left-radius: var(--pds-select-border-radius-start-start, var(--pds-select-border-radius));\n border-top-right-radius: var(--pds-select-border-radius-start-end, var(--pds-select-border-radius));\n color: var(--pine-color-text);\n font: var(--pine-typography-body);\n grid-area: field;\n letter-spacing: var(--pine-letter-spacing);\n min-height: var(--pds-select-min-height);\n padding: calc(var(--pine-dimension-xs) - var(--pine-border-width)) var(--pine-dimension-150);\n padding-inline-end: var(--pine-dimension-450);\n position: relative;\n\n &:hover {\n border-color: var(--pine-color-border-hover);\n cursor: pointer;\n }\n\n &:focus-visible {\n border-color: var(--pine-color-border-active);\n outline: var(--pine-outline-focus);\n outline-offset: var(--pine-border-width);\n }\n\n &:disabled {\n background-color: var(--pine-color-background-container-disabled);\n border-color: var(--pine-color-border-disabled);\n color: var(--pine-color-text-disabled);\n cursor: not-allowed;\n }\n\n &:has(~ .pds-select__message .pds-select__error-message) {\n background-color: var(--pine-select-color-background-danger);\n border-color: var(--pine-color-border-danger);\n\n :host-context([data-theme=\"dark\"]) & {\n background-color: var(--pine-color-red-950);\n }\n\n &:focus-visible {\n outline-color: var(--pine-color-focus-ring-danger);\n }\n }\n}\n\n:host(.is-invalid) {\n select {\n background-color: var(--pine-select-color-background-danger);\n border-color: var(--pine-color-border-danger);\n\n :host-context([data-theme=\"dark\"]) & {\n background-color: var(--pine-color-red-950);\n }\n\n &:focus-visible {\n outline-color: var(--pine-color-focus-ring-danger);\n }\n }\n}\n\n:host([highlight]:not(.is-disabled):not(.is-invalid)) {\n select {\n background-color: var(--pine-color-accent-disabled);\n border-color: var(--pine-color-accent);\n color: var(--pine-color-text-accent);\n\n &:hover:not(:disabled) {\n border-color: var(--pine-color-accent-hover);\n }\n\n &:focus-visible {\n outline-color: var(--pine-color-focus-ring);\n }\n }\n\n .pds-select__select-icon {\n color: var(--pine-color-text-accent);\n }\n}\n\n.pds-select__error-message,\n.pds-select__helper-message {\n color: var(--pine-color-text-message);\n font: var(--pine-typography-body-sm-medium);\n margin-block-end: 0;\n margin-block-start: var(--pine-dimension-2xs);\n}\n\n.pds-select__error-message {\n color: var(--pine-color-text-message-danger);\n display: flex;\n gap: var(--pine-dimension-2xs);\n\n pds-icon {\n margin-block-start: var(--pine-dimension-025);\n }\n}\n\n.pds-select__message {\n grid-area: message;\n}\n\n.pds-select__select-icon {\n align-items: center;\n display: flex;\n grid-column: -1 / -2;\n grid-row: 2 / 3;\n height: var(--pds-select-min-height);\n pointer-events: none;\n position: relative;\n z-index: var(--pine-z-index-raised);\n}\n\n.visually-hidden {\n border: 0;\n clip: rect(0 0 0 0);\n clip-path: polygon(0 0, 0 0, 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n\n","import { Component, Element, Event, EventEmitter, Host, h, Prop, Watch } from '@stencil/core';\nimport { messageId, exposeTypeProperty } from '../../utils/form';\nimport { danger, enlarge } from '@pine-ds/icons/icons';\n\n/**\n * @slot action - Content to be displayed in the label area, typically for help icons or links\n */\n@Component({\n tag: 'pds-select',\n styleUrls: ['pds-select.tokens.scss', '../../global/styles/utils/label.scss', 'pds-select.scss'],\n shadow: true,\n formAssociated: true,\n})\nexport class PdsSelect {\n\n private selectEl!: HTMLSelectElement;\n private slotContainer!: HTMLDivElement;\n private internals?: ElementInternals;\n private _type: 'select-one' | 'select-multiple' = 'select-one';\n\n @Element() el: HTMLPdsSelectElement;\n\n /**\n * Specifies if and how the browser provides `autocomplete` assistance for the field.\n */\n @Prop() autocomplete: string;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Indicates whether or not the select field is disabled.\n * @defaultValue false\n */\n @Prop() disabled = false\n\n /**\n * Displays error message text describing an invalid state.\n */\n @Prop() errorMessage: string;\n\n /**\n * Visually hides the label text for instances where only the select should be displayed. Label remains accessible to assistive technology such as screen readers.\n * Note: When true, the action slot is also hidden to maintain a minimal UI.\n */\n @Prop() hideLabel: boolean;\n\n /**\n * Displays helper message text below select.\n */\n @Prop() helperMessage: string;\n\n /**\n * Determines whether or not the select is invalid.\n */\n @Prop() invalid?: boolean;\n\n /**\n * Text to be displayed as the select label.\n */\n @Prop() label?: string;\n\n /**\n * Indicates whether multiple options can be selected.\n * @defaultValue false\n */\n @Prop() multiple = false;\n\n /**\n * Specifies the name. Submitted with the form name/value pair.\n */\n @Prop() name!: string;\n\n /**\n * Indicates whether or not the select field is required.\n * @defaultValue false\n */\n @Prop() required = false;\n\n /**\n * Applies highlight styling to the select field.\n */\n @Prop({ reflect: true }) highlight?: boolean;\n\n /**\n * The value(s) of the selected option(s).\n *\n */\n @Prop({ mutable: true }) value?: string | string[];\n\n\n /**\n * Emitted when the select value changes.\n */\n @Event() pdsSelectChange: EventEmitter<InputEvent>;\n\n /**\n * Emitted when the select loses focus.\n */\n @Event() pdsBlur!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the select gains focus.\n */\n @Event() pdsFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when a key is pressed down in the select.\n */\n @Event() pdsKeyDown!: EventEmitter<KeyboardEvent>;\n\n @Watch('value')\n /**\n * Handles the change in the value of the select component.\n * This method is called whenever the value of the select component changes.\n * It updates the selected option accordingly.\n */\n valueChanged() {\n this.updateSelectedOption();\n this.updateFormValue();\n }\n\n @Watch('multiple')\n /**\n * Updates the type property when multiple changes to match native select behavior.\n */\n multipleChanged() {\n this.updateType();\n }\n\n private updateType() {\n this._type = this.multiple ? 'select-multiple' : 'select-one';\n }\n\n connectedCallback() {\n // Initialize ElementInternals for form association (only once per element instance)\n if (this.el.attachInternals && !this.internals) {\n this.internals = this.el.attachInternals();\n }\n\n // Expose type property on the element instance to match native form element behavior\n exposeTypeProperty(this.el, () => this._type);\n }\n\n componentWillLoad() {\n // Set initial type based on multiple prop\n this.updateType();\n this.updateSelectedOption();\n }\n\n componentDidLoad() {\n // Set initial form value\n this.updateFormValue();\n }\n\n /**\n * Updates the selected option in the select element based on the current value.\n *\n * This method iterates through all the options of the select element and sets the\n * 'selected' attribute on the option that matches the current value. If an option\n * does not match the current value, the 'selected' attribute is removed.\n *\n * @private\n * @returns {void}\n */\n private updateSelectedOption() {\n if (this.selectEl) {\n const options = this.selectEl.options;\n\n // Update the selected attribute for all options.\n Array.from(options).map((option: HTMLOptionElement) => {\n if (Array.isArray(this.value)) {\n option.selected = this.value.includes(option.value);\n } else {\n option.selected = this.value === option.value;\n }\n });\n };\n }\n\n /**\n * Emits an event on input change.\n */\n private onSelectUpdate = (e: Event) => {\n const target = e.target as HTMLSelectElement\n\n const values = Array.from(target.options)\n .filter((option) => ( option.selected))\n .map((option) => ( option.value));\n\n if (values.length === 1 && !this.multiple) {\n this.value = values[0];\n } else {\n this.value = values;\n }\n\n this.pdsSelectChange.emit(e as InputEvent);\n };\n\n private onBlur = (ev: FocusEvent) => {\n this.pdsBlur.emit(ev);\n };\n\n private onFocus = (ev: FocusEvent) => {\n this.pdsFocus.emit(ev);\n };\n\n private onKeyDown = (ev: KeyboardEvent) => {\n this.pdsKeyDown.emit(ev);\n };\n\n /**\n * Handles the change event for the slot element.\n * This method is triggered when the slot content changes.\n * It updates the inner HTML of the select element by cloning and appending\n * the assigned <option> elements from the slot.\n */\n private handleSlotChange = () => {\n const slot = this.slotContainer.querySelector('slot') as HTMLSlotElement;\n\n this.selectEl.innerHTML = '';\n const assignedElements = slot.assignedElements({ flatten: true }) as (HTMLOptionElement | HTMLOptGroupElement)[];\n\n assignedElements.forEach((item) => {\n if ( ['OPTION', 'OPTGROUP'].includes(item.tagName)) {\n const clonedItem = item.cloneNode(true) as HTMLOptionElement | HTMLOptGroupElement;\n if (clonedItem.tagName === 'OPTION' && (clonedItem as HTMLOptionElement).value === this.value) {\n (clonedItem as HTMLOptionElement).selected = true;\n }\n this.selectEl.appendChild(clonedItem);\n }\n });\n\n this.updateSelectedOption();\n };\n\n private getHelperMessage() {\n return this.helperMessage && (\n <p class=\"pds-select__helper-message\" id={messageId(this.componentId, 'helper')}>\n {this.helperMessage}\n </p>\n );\n }\n\n private getErrorMessage() {\n return this.errorMessage && (\n <p class=\"pds-select__error-message\" id={messageId(this.componentId, 'error')} aria-live=\"assertive\">\n <pds-icon icon={danger} size=\"small\"></pds-icon>\n {this.errorMessage}\n </p>\n );\n }\n\n private renderMessages() {\n if (!this.helperMessage && !this.errorMessage) return null;\n\n return (\n <div class=\"pds-select__message\">\n {this.getHelperMessage()}\n {this.getErrorMessage()}\n </div>\n );\n }\n\n private classNames() {\n const classNames = [];\n\n if (this.invalid) { classNames.push('is-invalid'); }\n if (this.disabled) { classNames.push('is-disabled'); }\n\n return classNames.join(' ');\n }\n\n private renderAction() {\n const hasAction = this.el.querySelector('[slot=\"action\"]') !== null;\n if (hasAction) {\n return (\n <div class=\"pds-select__action\" part=\"action\">\n <slot name=\"action\"></slot>\n </div>\n );\n }\n return null;\n }\n\n /**\n * Updates the form value using ElementInternals API\n */\n private updateFormValue() {\n if (this.internals && this.internals.setFormValue) {\n const value = this.value;\n\n // Handle multi-select arrays by converting to FormData or comma-separated string\n if (Array.isArray(value)) {\n if (value.length > 1) {\n // For multiple values, create FormData with multiple entries\n const formData = new FormData();\n value.forEach(val => formData.append(this.name || '', val));\n this.internals.setFormValue(formData);\n } else {\n // Single value in array, use the string value\n this.internals.setFormValue(value[0] || null);\n }\n } else {\n // Single string value\n this.internals.setFormValue(value || null);\n }\n\n // Set validity based on native select validation\n if (this.selectEl && this.internals && this.internals.setValidity) {\n this.internals.setValidity(\n this.selectEl.validity,\n this.selectEl.validationMessage,\n this.selectEl\n );\n }\n }\n }\n\n /**\n * Form Associated Custom Elements API: Called when the form is reset\n */\n formResetCallback() {\n this.value = '';\n this.updateFormValue();\n }\n\n /**\n * Form Associated Custom Elements API: Called when the form is disabled\n */\n formDisabledCallback(disabled: boolean) {\n this.disabled = disabled;\n }\n\n /**\n * Form Associated Custom Elements API: Called to restore form state\n */\n formStateRestoreCallback(state: string | FormData | null) {\n if (typeof state === 'string') {\n this.value = state;\n } else if (state instanceof FormData && this.name) {\n // Extract value(s) from FormData using the select's name\n const values = state.getAll(this.name);\n if (values.length > 1) {\n // Multi-select: convert to string array\n this.value = values.filter(v => typeof v === 'string') as string[];\n } else if (values.length === 1 && typeof values[0] === 'string') {\n // Single select: use string value\n this.value = values[0];\n }\n }\n }\n\n render() {\n const hasAction = this.el.querySelector('[slot=\"action\"]') !== null;\n\n return (\n <Host aria-disabled={this.disabled ? 'true' : null} class={this.classNames()} has-action={hasAction && !this.hideLabel ? 'true' : null}>\n <div class=\"pds-select\">\n {!this.hideLabel && (\n <div class=\"pds-select__label-wrapper\">\n <label htmlFor={this.componentId}>\n <span class={this.hideLabel ? 'visually-hidden' : ''}>\n {this.label}\n </span>\n </label>\n {hasAction && this.renderAction()}\n </div>\n )}\n <select\n aria-label={this.hideLabel ? this.label : undefined}\n autocomplete={this.autocomplete || undefined}\n class=\"pds-select__field\"\n disabled={this.disabled}\n id={this.componentId}\n multiple={this.multiple}\n name={this.name}\n onBlur={this.onBlur}\n onChange={this.onSelectUpdate}\n onFocus={this.onFocus}\n onKeyDown={this.onKeyDown}\n part=\"select\"\n required={this.required}\n ref={(el) => (this.selectEl = el as HTMLSelectElement)}\n ></select>\n <div aria-hidden=\"true\" class=\"hidden\" ref={(el) => (this.slotContainer = el)}>\n <slot onSlotchange={this.handleSlotChange}></slot>\n </div>\n {this.renderMessages()}\n {!this.multiple && <pds-icon class=\"pds-select__select-icon\" icon={enlarge} />}\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"p-CboCokff.system.js","sources":["src/components/pds-text/pds-text.scss?tag=pds-text&encapsulation=shadow","src/components/pds-text/pds-text.tsx"],"sourcesContent":[":host {\n display: inline;\n}\n\n:host([decoration=\"underline-dotted\"]) > * {\n text-decoration-color: var(--pine-color-text-tertiary);\n text-decoration-line: underline;\n text-decoration-style: dotted;\n text-decoration-thickness: 12%;\n text-underline-offset: 0.3rem;\n text-underline-position: under;\n}\n\n:host([decoration=\"strikethrough\"])>* {\n text-decoration: line-through;\n}\n\n/* stylelint-disable */\nh1 {\n font: var(--pine-typography-heading-1);\n letter-spacing: var(--pine-letter-spacing-heading-1);\n}\n\nh2 {\n font: var(--pine-typography-heading-2);\n letter-spacing: var(--pine-letter-spacing-heading-2);\n}\n\nh3 {\n font: var(--pine-typography-heading-3);\n letter-spacing: var(--pine-letter-spacing-heading-3);\n}\n\nh4 {\n font: var(--pine-typography-heading-4);\n letter-spacing: var(--pine-letter-spacing-heading-4);\n}\n\nh5 {\n font: var(--pine-typography-heading-5);\n letter-spacing: var(--pine-letter-spacing-heading-5);\n}\n\nh6 {\n font: var(--pine-typography-heading-6);\n letter-spacing: var(--pine-letter-spacing-heading-6);\n}\n\ncode, em, p, pre, strong {\n font: var(--pine-typography-body);\n letter-spacing: var(--pine-letter-spacing);\n}\n/* stylelint-enable */\n\ncode, pre {\n font-family: monospace;\n letter-spacing: 0;\n line-height: 1;\n}\n\nem {\n font-style: normal;\n}\n\nstrong {\n font-weight: bolder;\n}\n\n:host([truncate]) > * {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n:host([italic]) > * {\n font-style: italic;\n}\n\n// Colors/Variants/Sentiment\n\n// Variable is set in TSX\n// If color prop value isn't valid, will default to body text color\n.pds-text {\n color: var(--color, var(--pine-color-text));\n margin: var(--pine-dimension-none);\n}\n\n// Font Sizes\n$type-sizes: (\n 2xl: var(--pine-font-size-body-2xl),\n xl: var(--pine-font-size-body-xl),\n lg: var(--pine-font-size-body-lg),\n md: var(--pine-font-size-body-md),\n sm: var(--pine-font-size-body-sm),\n xs: var(--pine-font-size-body-xs),\n 2xs: var(--pine-font-size-body-2xs),\n h1: var(--pine-font-size-heading-1),\n h2: var(--pine-font-size-heading-2),\n h3: var(--pine-font-size-heading-3),\n h4: var(--pine-font-size-heading-4),\n h5: var(--pine-font-size-heading-5),\n h6: var(--pine-font-size-heading-6),\n);\n\n@mixin generate-type-sizes($type-sizes) {\n @each $key, $value in $type-sizes {\n .pds-text--size-#{$key} {\n font-size: $value;\n }\n }\n}\n\n@include generate-type-sizes($type-sizes);\n\n// Font Weights\n$type-weights: (\n extra-light: var(--pine-font-weight-extra-light),\n light: var(--pine-font-weight-light),\n regular: var(--pine-font-weight-regular),\n medium: var(--pine-font-weight-medium),\n semibold: var(--pine-font-weight-semi-bold),\n bold: var(--pine-font-weight-bold),\n);\n\n@mixin generate-type-weights($type-weights) {\n @each $key, $value in $type-weights {\n .pds-text--weight-#{$key} {\n font-weight: $value;\n }\n }\n}\n\n@include generate-type-weights($type-weights);\n\n// Gutter Sizes\n$type-gutters: (\n 2xl: var(--pine-dimension-2xl),\n xl: var(--pine-dimension-xl),\n lg: var(--pine-dimension-lg),\n md: var(--pine-dimension-md),\n sm: var(--pine-dimension-sm),\n xs: var(--pine-dimension-xs),\n 2xs: var(--pine-dimension-2xs),\n);\n\n@mixin generate-type-gutters($type-gutters) {\n @each $key, $value in $type-gutters {\n .pds-text--gutter-#{$key} {\n margin-block-end: $value;\n }\n }\n}\n\n@include generate-type-gutters($type-gutters);\n\n// Text Alignment\n$type-alignments: (\n start: start,\n center: center,\n end: end,\n justify: justify,\n);\n\n@mixin generate-type-alignments($type-alignments) {\n @each $key, $value in $type-alignments {\n .pds-text--align-#{$key} {\n text-align: $value;\n }\n }\n}\n\n@include generate-type-alignments($type-alignments);\n","import { Component, h, Prop, Element } from '@stencil/core';\nimport { setColor } from '../../utils/utils';\n\n/**\n * @part content - The text content container\n */\n@Component({\n tag: 'pds-text',\n styleUrl: 'pds-text.scss',\n shadow: true,\n})\nexport class PdsText {\n @Element() el: HTMLPdsTextElement;\n /**\n * Sets the text alignment.\n */\n @Prop() align?: 'start' | 'center' | 'end' | 'justify';\n\n /**\n * Sets the text color.\n */\n @Prop() color?: string;\n\n /**\n * Sets the text decoration.\n */\n @Prop() decoration?:\n | 'strikethrough'\n | 'underline-dotted';\n\n /**\n * Set the bottom margin for the text.\n */\n @Prop() gutter?:\n | '2xl'\n | 'xl'\n | 'lg'\n | 'md'\n | 'sm'\n | 'xs'\n | '2xs';\n\n /**\n * If set or `true`, the text will be italic.\n */\n @Prop() italic?: boolean;\n\n /**\n * Sets the font size.\n */\n @Prop() size?:\n | '2xl'\n | 'xl'\n | 'lg'\n | 'md'\n | 'sm'\n | 'xs'\n | '2xs'\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6';\n\n /**\n * Sets the font weight.\n */\n @Prop() weight?:\n | 'extra-light'\n | 'light'\n | 'regular'\n | 'medium'\n | 'semibold'\n | 'bold';\n\n /**\n * Determines what semantic text tag to render.\n */\n @Prop() tag:\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | 'p'\n | 'code'\n | 'pre'\n | 'strong'\n | 'em' = \"p\";\n\n /**\n * If set or `true`, the text will be truncated. Must add a `width` to the element.\n */\n @Prop({ reflect: true }) truncate?: boolean;\n\n render() {\n const Tag = this.tag;\n\n const typeClasses = `\n pds-text\n ${this.align !== undefined && this.align.trim() !== '' ? `pds-text--align-${this.align}` : ''}\n ${this.gutter !== undefined && this.gutter.trim() !== '' ? `pds-text--gutter-${this.gutter}` : ''}\n ${this.size !== undefined && this.size.trim() !== '' ? `pds-text--size-${this.size}` : ''}\n ${this.weight !== undefined && this.weight.trim() !== '' ? `pds-text--weight-${this.weight}` : ''}\n ${this.decoration !== undefined && this.decoration.trim() !== '' ? `pds-text--decoration-${this.decoration}` : ''}\n `;\n\n return (\n <Tag style={this.color && setColor(this.color)} class={typeClasses} part=\"content\">\n <slot />\n </Tag>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;MAAA,MAAM,UAAU,GAAG,6+GAA6+G;;YCWn/G,OAAO,uBAAA,MAAA;MALpB,IAAA,WAAA,CAAA,OAAA,EAAA;;MAsEE;;MAEG;MACK,QAAA,IAAG,CAAA,GAAA,GAWF,GAAG;MAyBb;UAlBC,MAAM,GAAA;MACJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;MAEpB,QAAA,MAAM,WAAW,GAAG;;QAEhB,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAA,gBAAA,EAAmB,IAAI,CAAC,KAAK,CAAE,CAAA,GAAG,EAAE;QAC3F,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAA,iBAAA,EAAoB,IAAI,CAAC,MAAM,CAAE,CAAA,GAAG,EAAE;QAC/F,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAA,eAAA,EAAkB,IAAI,CAAC,IAAI,CAAE,CAAA,GAAG,EAAE;QACvF,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAA,iBAAA,EAAoB,IAAI,CAAC,MAAM,CAAE,CAAA,GAAG,EAAE;QAC/F,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAA,qBAAA,EAAwB,IAAI,CAAC,UAAU,CAAE,CAAA,GAAG,EAAE;KAClH;cAED,QACE,EAAC,GAAG,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAC,SAAS,EAAA,EAChF,CAAQ,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACJ;;;;;;;;;;;;"}
1
+ {"version":3,"file":"p-kYQszSpu.system.js","sources":["src/components/pds-text/pds-text.scss?tag=pds-text&encapsulation=shadow","src/components/pds-text/pds-text.tsx"],"sourcesContent":[":host {\n display: inline;\n}\n\n:host([decoration=\"underline-dotted\"]) > * {\n text-decoration-color: var(--pine-color-text-tertiary);\n text-decoration-line: underline;\n text-decoration-style: dotted;\n text-decoration-thickness: 12%;\n text-underline-offset: 0.3rem;\n text-underline-position: under;\n}\n\n:host([decoration=\"strikethrough\"])>* {\n text-decoration: line-through;\n}\n\n/* stylelint-disable */\nh1 {\n font: var(--pine-typography-heading-1);\n letter-spacing: var(--pine-letter-spacing-heading-1);\n}\n\nh2 {\n font: var(--pine-typography-heading-2);\n letter-spacing: var(--pine-letter-spacing-heading-2);\n}\n\nh3 {\n font: var(--pine-typography-heading-3);\n letter-spacing: var(--pine-letter-spacing-heading-3);\n}\n\nh4 {\n font: var(--pine-typography-heading-4);\n letter-spacing: var(--pine-letter-spacing-heading-4);\n}\n\nh5 {\n font: var(--pine-typography-heading-5);\n letter-spacing: var(--pine-letter-spacing-heading-5);\n}\n\nh6 {\n font: var(--pine-typography-heading-6);\n letter-spacing: var(--pine-letter-spacing-heading-6);\n}\n\ncode, em, p, pre, strong {\n font: var(--pine-typography-body);\n letter-spacing: var(--pine-letter-spacing);\n}\n/* stylelint-enable */\n\ncode, pre {\n font-family: monospace;\n letter-spacing: 0;\n line-height: 1;\n}\n\nem {\n font-style: normal;\n}\n\nstrong {\n font-weight: bolder;\n}\n\n:host([truncate]) > * {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n:host([italic]) > * {\n font-style: italic;\n}\n\n// Colors/Variants/Sentiment\n\n// Variable is set in TSX\n// If color prop value isn't valid, will default to body text color\n.pds-text {\n color: var(--color, var(--pine-color-text));\n margin: var(--pine-dimension-none);\n}\n\n// Font Sizes\n$type-sizes: (\n 2xl: var(--pine-font-size-body-2xl),\n xl: var(--pine-font-size-body-xl),\n lg: var(--pine-font-size-body-lg),\n md: var(--pine-font-size-body-md),\n sm: var(--pine-font-size-body-sm),\n xs: var(--pine-font-size-body-xs),\n 2xs: var(--pine-font-size-body-2xs),\n h1: var(--pine-font-size-heading-1),\n h2: var(--pine-font-size-heading-2),\n h3: var(--pine-font-size-heading-3),\n h4: var(--pine-font-size-heading-4),\n h5: var(--pine-font-size-heading-5),\n h6: var(--pine-font-size-heading-6),\n);\n\n@mixin generate-type-sizes($type-sizes) {\n @each $key, $value in $type-sizes {\n .pds-text--size-#{$key} {\n font-size: $value;\n }\n }\n}\n\n@include generate-type-sizes($type-sizes);\n\n// Font Weights\n$type-weights: (\n extra-light: var(--pine-font-weight-extra-light),\n light: var(--pine-font-weight-light),\n regular: var(--pine-font-weight-regular),\n medium: var(--pine-font-weight-medium),\n semibold: var(--pine-font-weight-semi-bold),\n bold: var(--pine-font-weight-bold),\n);\n\n@mixin generate-type-weights($type-weights) {\n @each $key, $value in $type-weights {\n .pds-text--weight-#{$key} {\n font-weight: $value;\n }\n }\n}\n\n@include generate-type-weights($type-weights);\n\n// Gutter Sizes\n$type-gutters: (\n 2xl: var(--pine-dimension-2xl),\n xl: var(--pine-dimension-xl),\n lg: var(--pine-dimension-lg),\n md: var(--pine-dimension-md),\n sm: var(--pine-dimension-sm),\n xs: var(--pine-dimension-xs),\n 2xs: var(--pine-dimension-2xs),\n);\n\n@mixin generate-type-gutters($type-gutters) {\n @each $key, $value in $type-gutters {\n .pds-text--gutter-#{$key} {\n margin-block-end: $value;\n }\n }\n}\n\n@include generate-type-gutters($type-gutters);\n\n// Text Alignment\n$type-alignments: (\n start: start,\n center: center,\n end: end,\n justify: justify,\n);\n\n@mixin generate-type-alignments($type-alignments) {\n @each $key, $value in $type-alignments {\n .pds-text--align-#{$key} {\n text-align: $value;\n }\n }\n}\n\n@include generate-type-alignments($type-alignments);\n","import { Component, h, Prop, Element } from '@stencil/core';\nimport { setColor } from '../../utils/utils';\n\n/**\n * @part content - The text content container\n */\n@Component({\n tag: 'pds-text',\n styleUrl: 'pds-text.scss',\n shadow: true,\n})\nexport class PdsText {\n @Element() el: HTMLPdsTextElement;\n /**\n * Sets the text alignment.\n */\n @Prop() align?: 'start' | 'center' | 'end' | 'justify';\n\n /**\n * Sets the text color.\n */\n @Prop() color?: string;\n\n /**\n * Sets the text decoration.\n */\n @Prop() decoration?:\n | 'strikethrough'\n | 'underline-dotted';\n\n /**\n * Set the bottom margin for the text.\n */\n @Prop() gutter?:\n | '2xl'\n | 'xl'\n | 'lg'\n | 'md'\n | 'sm'\n | 'xs'\n | '2xs';\n\n /**\n * If set or `true`, the text will be italic.\n */\n @Prop() italic?: boolean;\n\n /**\n * Sets the font size.\n */\n @Prop() size?:\n | '2xl'\n | 'xl'\n | 'lg'\n | 'md'\n | 'sm'\n | 'xs'\n | '2xs'\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6';\n\n /**\n * Sets the font weight.\n */\n @Prop() weight?:\n | 'extra-light'\n | 'light'\n | 'regular'\n | 'medium'\n | 'semibold'\n | 'bold';\n\n /**\n * Determines what semantic text tag to render.\n */\n @Prop() tag:\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'h5'\n | 'h6'\n | 'p'\n | 'code'\n | 'pre'\n | 'strong'\n | 'em' = \"p\";\n\n /**\n * If set or `true`, the text will be truncated. Must add a `width` to the element.\n */\n @Prop({ reflect: true }) truncate?: boolean;\n\n render() {\n const Tag = this.tag;\n\n const typeClasses = `\n pds-text\n ${this.align !== undefined && this.align.trim() !== '' ? `pds-text--align-${this.align}` : ''}\n ${this.gutter !== undefined && this.gutter.trim() !== '' ? `pds-text--gutter-${this.gutter}` : ''}\n ${this.size !== undefined && this.size.trim() !== '' ? `pds-text--size-${this.size}` : ''}\n ${this.weight !== undefined && this.weight.trim() !== '' ? `pds-text--weight-${this.weight}` : ''}\n ${this.decoration !== undefined && this.decoration.trim() !== '' ? `pds-text--decoration-${this.decoration}` : ''}\n `;\n\n return (\n <Tag style={this.color && setColor(this.color)} class={typeClasses} part=\"content\">\n <slot />\n </Tag>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;MAAA,MAAM,UAAU,GAAG,6+GAA6+G;;YCWn/G,OAAO,uBAAA,MAAA;MALpB,IAAA,WAAA,CAAA,OAAA,EAAA;;MAsEE;;MAEG;MACK,QAAA,IAAG,CAAA,GAAA,GAWF,GAAG;MAyBb;UAlBC,MAAM,GAAA;MACJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;MAEpB,QAAA,MAAM,WAAW,GAAG;;QAEhB,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAA,gBAAA,EAAmB,IAAI,CAAC,KAAK,CAAE,CAAA,GAAG,EAAE;QAC3F,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAA,iBAAA,EAAoB,IAAI,CAAC,MAAM,CAAE,CAAA,GAAG,EAAE;QAC/F,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAA,eAAA,EAAkB,IAAI,CAAC,IAAI,CAAE,CAAA,GAAG,EAAE;QACvF,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAA,iBAAA,EAAoB,IAAI,CAAC,MAAM,CAAE,CAAA,GAAG,EAAE;QAC/F,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAA,qBAAA,EAAwB,IAAI,CAAC,UAAU,CAAE,CAAA,GAAG,EAAE;KAClH;cAED,QACE,EAAC,GAAG,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAC,SAAS,EAAA,EAChF,CAAQ,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACJ;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"p-BCKPcTKX.system.js","sources":["src/components/pds-modal/pds-modal.scss?tag=pds-modal","src/components/pds-modal/pds-modal.tsx"],"sourcesContent":[".pds-modal__backdrop {\n align-items: flex-start;\n /* stylelint-disable-next-line pine-design-system/no-hardcoded-colors */\n background-color: rgba(0, 0, 0, 0.4);\n border: 0;\n display: flex;\n height: 100%;\n inset: 0;\n justify-content: center;\n margin: 0;\n max-height: 100%;\n max-width: 100%;\n opacity: 0;\n padding: 0;\n position: fixed;\n transition: opacity 0.2s ease, visibility 0.2s ease;\n visibility: hidden;\n width: 100%;\n z-index: var(--pine-z-index-modal);\n\n @supports (backdrop-filter: blur(3px)) {\n backdrop-filter: blur(3px);\n }\n\n // Increase z-index for nested modals\n pds-modal & {\n z-index: var(--pine-z-index-priority);\n }\n\n &::backdrop {\n background: transparent;\n }\n\n &.open {\n opacity: 1;\n visibility: visible;\n }\n}\n\n.pds-modal {\n background: var(--pine-color-background-container);\n border-radius: var(--pine-dimension-sm);\n box-shadow: var(--pine-box-shadow-400);\n display: flex;\n flex-direction: column;\n margin: var(--pine-dimension-md);\n max-height: none;\n width: 100%;\n\n &.pds-modal--scrollable {\n max-height: calc(100vh - (calc(5vh + 96px)));\n\n @supports (height: 100dvh) {\n max-height: calc(100dvh - (calc(5dvh + 96px)));\n }\n }\n\n @media (min-width: 992px) {\n margin-block-start: 6vh;\n\n @supports (height: 100dvh) {\n margin-block-start: 6dvh;\n }\n }\n\n @media (min-width: 1200px) {\n margin-block-start: 8vh;\n\n @supports (height: 100dvh) {\n margin-block-start: 8dvh;\n }\n }\n}\n\n.pds-modal--sm {\n max-width: 520px;\n}\n\n.pds-modal--md {\n max-width: 700px;\n}\n\n.pds-modal--lg {\n max-width: 900px;\n}\n\n.pds-modal--fullscreen {\n border-radius: 0;\n height: 100%;\n margin: 0;\n max-height: 100vh;\n max-width: 100%;\n\n @supports (height: 100dvh) {\n max-height: 100dvh;\n }\n\n &.pds-modal--scrollable {\n max-height: 100vh;\n\n @supports (height: 100dvh) {\n max-height: 100dvh;\n }\n }\n}\n\n.pds-modal-content {\n .pds-modal--fullscreen & {\n flex: 1;\n }\n}\n\n// Scrollable modal styles (default behavior)\n.pds-modal--scrollable {\n pds-modal-content {\n border-block-end: 1px solid transparent;\n border-block-start: 1px solid transparent;\n overflow-y: auto;\n }\n}\n\n// Non-scrollable modal styles\n.pds-modal:not(.pds-modal--scrollable) {\n pds-modal-content {\n overflow-y: visible;\n }\n}\n\n","import { Component, Element, Event, EventEmitter, h, Method, Prop, State, Watch } from '@stencil/core';\n\n@Component({\n tag: 'pds-modal',\n styleUrl: 'pds-modal.scss',\n shadow: false\n})\nexport class PdsModal {\n private modalRef: HTMLDialogElement;\n private previousActiveElement: HTMLElement;\n private focusableElements: HTMLElement[] = [];\n\n @Element() el: HTMLPdsModalElement;\n\n /**\n * Whether the modal can be dismissed by clicking the backdrop\n * @default true\n */\n @Prop() backdropDismiss = true;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * Whether the modal is open\n * @default false\n */\n @Prop({ mutable: true }) open = false;\n\n /**\n * The size of the modal\n * @default 'md'\n */\n @Prop() size: 'sm' | 'md' | 'lg' | 'fullscreen' = 'md';\n\n /**\n * Whether the modal content should be scrollable\n * @default true\n */\n @Prop() scrollable = true;\n\n /**\n * Emitted when the modal is opened\n */\n @Event() pdsModalOpen: EventEmitter<void>;\n\n /**\n * Emitted when the modal is closed\n */\n @Event() pdsModalClose: EventEmitter<void>;\n\n /**\n * Stores the list of focusable elements in the modal\n */\n @State() focusableElementsArray: HTMLElement[] = [];\n\n componentDidLoad() {\n this.modalRef = this.el.querySelector('.pds-modal__backdrop') as HTMLDialogElement;\n // Add keyboard event listener\n document.addEventListener('keydown', this.handleKeyDown);\n }\n\n disconnectedCallback() {\n // Clean up event listener\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n\n @Watch('open')\n handleOpenChange(newValue: boolean) {\n if (newValue) {\n this.showModal();\n } else {\n this.hideModal();\n }\n }\n\n /**\n * Updates the list of focusable elements in the modal\n */\n private updateFocusableElements() {\n if (!this.modalRef) return;\n\n // Get all focusable elements within the modal\n const selector = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n 'pds-button:not([disabled])',\n 'pds-link:not([disabled])',\n 'pds-input:not([disabled])',\n 'pds-checkbox:not([disabled])',\n 'pds-radio:not([disabled])',\n 'pds-switch:not([disabled])',\n 'pds-select:not([disabled])',\n ].join(',');\n\n this.focusableElements = Array.from(\n this.modalRef.querySelectorAll(selector)\n ) as HTMLElement[];\n\n // Filter out elements with display: none or visibility: hidden\n this.focusableElements = this.focusableElements.filter(el => {\n const style = window.getComputedStyle(el);\n return style.display !== 'none' && style.visibility !== 'hidden';\n });\n }\n\n /**\n * Sets focus to the first focusable element in the modal\n */\n private setInitialFocus() {\n if (this.focusableElements.length === 0) return;\n\n // Focus the first focusable element\n const firstElement = this.focusableElements[0];\n\n // For web components, we need to ensure they're properly focused\n this.focusElement(firstElement);\n }\n\n /**\n * Helper method to focus an element, with special handling for web components\n */\n private focusElement(element: HTMLElement) {\n if (!element) return;\n\n try {\n // Try standard focus first\n element.focus();\n\n // Check if focus worked\n setTimeout(() => {\n if (document.activeElement !== element) {\n // For web components, try to find a focusable element inside\n if (element.shadowRoot) {\n const focusableInShadow = element.shadowRoot.querySelector(\n 'button, [tabindex], input, a[href]'\n ) as HTMLElement;\n\n if (focusableInShadow) {\n focusableInShadow.focus();\n }\n }\n }\n }, 0);\n } catch (error) {\n console.error('Error focusing element:', error);\n }\n }\n\n /**\n * Opens the modal\n */\n @Method()\n async showModal() {\n if (this.modalRef) {\n try {\n // Store the currently focused element to restore focus when modal closes\n this.previousActiveElement = document.activeElement as HTMLElement;\n\n // Use native dialog showModal method which makes the rest of the page inert\n this.modalRef.showModal();\n this.open = true;\n\n // Update focusable elements and set initial focus\n // Using a longer timeout to ensure all components are fully rendered\n setTimeout(() => {\n this.updateFocusableElements();\n this.setInitialFocus();\n this.pdsModalOpen.emit();\n }, 100);\n } catch (error) {\n console.error('Failed to show modal:', error);\n }\n }\n }\n\n /**\n * Closes the modal\n */\n @Method()\n async hideModal() {\n if (this.modalRef) {\n try {\n this.modalRef.close();\n this.open = false;\n\n // Restore focus to the element that was focused before the modal was opened\n if (this.previousActiveElement && typeof this.previousActiveElement.focus === 'function') {\n this.previousActiveElement.focus();\n }\n\n this.pdsModalClose.emit();\n } catch (error) {\n console.error('Failed to hide modal:', error);\n }\n }\n }\n\n private handleBackdropClick = (e: MouseEvent) => {\n if (!this.backdropDismiss || !this.open) return;\n\n if ((e.target as HTMLElement).classList.contains('pds-modal__backdrop')) {\n e.stopPropagation();\n\n // Only close if this is the innermost modal\n if (this.isInnermostModal()) {\n this.hideModal();\n }\n }\n };\n\n /**\n * Gets the z-index of a modal's backdrop element\n */\n private getBackdropZIndex(modal: Element): number {\n const backdrop = modal.querySelector('.pds-modal__backdrop');\n return backdrop ? parseInt(getComputedStyle(backdrop).zIndex, 10) : -1;\n }\n\n /**\n * Checks if this modal is the innermost (highest z-index) modal\n */\n private isInnermostModal(): boolean {\n // Find all open modals\n const openModals = Array.from(document.querySelectorAll('pds-modal')).filter(\n modal => modal.open\n );\n\n if (openModals.length === 0) return false;\n\n // Get this modal's backdrop element\n const thisBackdrop = this.el.querySelector('.pds-modal__backdrop');\n if (!thisBackdrop) return false;\n\n // Get computed z-index of all open modal backdrops\n const modalZIndexes = openModals.map(modal => this.getBackdropZIndex(modal));\n\n // Get the highest z-index\n const maxZIndex = Math.max(...modalZIndexes);\n\n // Check if this modal's backdrop has the highest z-index\n const thisZIndex = this.getBackdropZIndex(this.el);\n return thisZIndex === maxZIndex;\n }\n\n private handleKeyDown = (e: KeyboardEvent) => {\n // If the modal is not open, don't handle any keyboard events\n if (!this.open) return;\n\n // Handle Escape key to close the modal\n if (e.key === 'Escape') {\n // Always prevent native dialog close behavior\n e.preventDefault();\n // Only close if backdropDismiss is enabled and this is the innermost modal\n if (this.backdropDismiss && this.isInnermostModal()) {\n this.hideModal();\n }\n return;\n }\n\n // Handle Tab key for focus trapping\n if (e.key === 'Tab') {\n // If there are no focusable elements, do nothing\n if (this.focusableElements.length === 0) return;\n\n // Get the first and last focusable elements\n const firstFocusableElement = this.focusableElements[0];\n const lastFocusableElement = this.focusableElements[this.focusableElements.length - 1];\n\n // Get the current active element\n const activeElement = document.activeElement;\n\n // Check if we need to wrap focus\n const isFirstElement = activeElement === firstFocusableElement ||\n firstFocusableElement.contains(activeElement as Node);\n\n const isLastElement = activeElement === lastFocusableElement ||\n lastFocusableElement.contains(activeElement as Node);\n\n // If shift + tab is pressed and focus is on the first element, move to the last element\n if (e.shiftKey && isFirstElement) {\n e.preventDefault();\n this.focusElement(lastFocusableElement);\n }\n // If tab is pressed and focus is on the last element, move to the first element\n else if (!e.shiftKey && isLastElement) {\n e.preventDefault();\n this.focusElement(firstFocusableElement);\n }\n }\n };\n\n render() {\n return (\n <dialog\n class={{\n 'pds-modal__backdrop': true,\n 'open': this.open\n }}\n aria-modal=\"true\"\n aria-labelledby={`${this.componentId}-heading`}\n onClick={this.handleBackdropClick}\n >\n <div\n class={{\n 'pds-modal': true,\n [`pds-modal--${this.size}`]: true,\n 'pds-modal--scrollable': this.scrollable\n }}\n >\n <slot></slot>\n </div>\n </dialog>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;MAAA,MAAM,WAAW,GAAG,u+EAAu+E;;YCO9+E,QAAQ,wBAAA,MAAA;MALrB,IAAA,WAAA,CAAA,OAAA,EAAA;;;;MAQU,QAAA,IAAiB,CAAA,iBAAA,GAAkB,EAAE;MAI7C;;;MAGG;MACK,QAAA,IAAe,CAAA,eAAA,GAAG,IAAI;MAO9B;;;MAGG;MACsB,QAAA,IAAI,CAAA,IAAA,GAAG,KAAK;MAErC;;;MAGG;MACK,QAAA,IAAI,CAAA,IAAA,GAAsC,IAAI;MAEtD;;;MAGG;MACK,QAAA,IAAU,CAAA,UAAA,GAAG,IAAI;MAYzB;;MAEG;MACM,QAAA,IAAsB,CAAA,sBAAA,GAAkB,EAAE;MAoJ3C,QAAA,IAAA,CAAA,mBAAmB,GAAG,CAAC,CAAa,KAAI;kBAC9C,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,IAAI;sBAAE;kBAEzC,IAAK,CAAC,CAAC,MAAsB,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;sBACvE,CAAC,CAAC,eAAe,EAAE;;MAGnB,gBAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;0BAC3B,IAAI,CAAC,SAAS,EAAE;;;MAGtB,SAAC;MAoCO,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,CAAgB,KAAI;;kBAE3C,IAAI,CAAC,IAAI,CAAC,IAAI;sBAAE;;MAGhB,YAAA,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE;;sBAEtB,CAAC,CAAC,cAAc,EAAE;;sBAElB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;0BACnD,IAAI,CAAC,SAAS,EAAE;;sBAElB;;;MAIF,YAAA,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE;;MAEnB,gBAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC;0BAAE;;sBAGzC,MAAM,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;MACvD,gBAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;;MAGtF,gBAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa;;MAG5C,gBAAA,MAAM,cAAc,GAAG,aAAa,KAAK,qBAAqB;MACxC,oBAAA,qBAAqB,CAAC,QAAQ,CAAC,aAAqB,CAAC;MAE3E,gBAAA,MAAM,aAAa,GAAG,aAAa,KAAK,oBAAoB;MACvC,oBAAA,oBAAoB,CAAC,QAAQ,CAAC,aAAqB,CAAC;;MAGzE,gBAAA,IAAI,CAAC,CAAC,QAAQ,IAAI,cAAc,EAAE;0BAChC,CAAC,CAAC,cAAc,EAAE;MAClB,oBAAA,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC;;;MAGpC,qBAAA,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,aAAa,EAAE;0BACrC,CAAC,CAAC,cAAc,EAAE;MAClB,oBAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC;;;MAG9C,SAAC;MAyBF;UAvQC,gBAAgB,GAAA;cACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,sBAAsB,CAAsB;;cAElF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;;UAG1D,oBAAoB,GAAA;;cAElB,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;;MAI7D,IAAA,gBAAgB,CAAC,QAAiB,EAAA;cAChC,IAAI,QAAQ,EAAE;kBACZ,IAAI,CAAC,SAAS,EAAE;;mBACX;kBACL,IAAI,CAAC,SAAS,EAAE;;;MAIpB;;MAEG;UACK,uBAAuB,GAAA;cAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ;kBAAE;;MAGpB,QAAA,MAAM,QAAQ,GAAG;kBACf,SAAS;kBACT,wBAAwB;kBACxB,uBAAuB;kBACvB,wBAAwB;kBACxB,0BAA0B;kBAC1B,iCAAiC;kBACjC,4BAA4B;kBAC5B,0BAA0B;kBAC1B,2BAA2B;kBAC3B,8BAA8B;kBAC9B,2BAA2B;kBAC3B,4BAA4B;kBAC5B,4BAA4B;MAC7B,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;MAEX,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,IAAI,CACjC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CACxB;;cAGlB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAG;kBAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;kBACzC,OAAO,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ;MAClE,SAAC,CAAC;;MAGJ;;MAEG;UACK,eAAe,GAAA;MACrB,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC;kBAAE;;cAGzC,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;;MAG9C,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;;MAGjC;;MAEG;MACK,IAAA,YAAY,CAAC,OAAoB,EAAA;MACvC,QAAA,IAAI,CAAC,OAAO;kBAAE;MAEd,QAAA,IAAI;;kBAEF,OAAO,CAAC,KAAK,EAAE;;kBAGf,UAAU,CAAC,MAAK;MACd,gBAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,OAAO,EAAE;;MAEtC,oBAAA,IAAI,OAAO,CAAC,UAAU,EAAE;8BACtB,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CACxD,oCAAoC,CACtB;8BAEhB,IAAI,iBAAiB,EAAE;kCACrB,iBAAiB,CAAC,KAAK,EAAE;;;;mBAIhC,EAAE,CAAC,CAAC;;cACL,OAAO,KAAK,EAAE;MACd,YAAA,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC;;;MAInD;;MAEG;MAEH,IAAA,MAAM,SAAS,GAAA;MACb,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;MACjB,YAAA,IAAI;;MAEF,gBAAA,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,aAA4B;;MAGlE,gBAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;MACzB,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI;;;sBAIhB,UAAU,CAAC,MAAK;0BACd,IAAI,CAAC,uBAAuB,EAAE;0BAC9B,IAAI,CAAC,eAAe,EAAE;MACtB,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;uBACzB,EAAE,GAAG,CAAC;;kBACP,OAAO,KAAK,EAAE;MACd,gBAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC;;;;MAKnD;;MAEG;MAEH,IAAA,MAAM,SAAS,GAAA;MACb,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;MACjB,YAAA,IAAI;MACF,gBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;MACrB,gBAAA,IAAI,CAAC,IAAI,GAAG,KAAK;;MAGjB,gBAAA,IAAI,IAAI,CAAC,qBAAqB,IAAI,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,KAAK,UAAU,EAAE;MACxF,oBAAA,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE;;MAGpC,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;;kBACzB,OAAO,KAAK,EAAE;MACd,gBAAA,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC;;;;MAkBnD;;MAEG;MACK,IAAA,iBAAiB,CAAC,KAAc,EAAA;cACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,sBAAsB,CAAC;cAC5D,OAAO,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,EAAE;;MAGxE;;MAEG;UACK,gBAAgB,GAAA;;cAEtB,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAC1E,KAAK,IAAI,KAAK,CAAC,IAAI,CACpB;MAED,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;MAAE,YAAA,OAAO,KAAK;;cAGzC,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,sBAAsB,CAAC;MAClE,QAAA,IAAI,CAAC,YAAY;MAAE,YAAA,OAAO,KAAK;;MAG/B,QAAA,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;;cAG5E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;;cAG5C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;cAClD,OAAO,UAAU,KAAK,SAAS;;UAkDjC,MAAM,GAAA;cACJ,QACE,CACE,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE;MACL,gBAAA,qBAAqB,EAAE,IAAI;sBAC3B,MAAM,EAAE,IAAI,CAAC;MACd,aAAA,EAAA,YAAA,EACU,MAAM,EAAA,iBAAA,EACA,CAAG,EAAA,IAAI,CAAC,WAAW,CAAU,QAAA,CAAA,EAC9C,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAA,EAEjC,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE;MACL,gBAAA,WAAW,EAAE,IAAI;MACjB,gBAAA,CAAC,cAAc,IAAI,CAAC,IAAI,CAAE,CAAA,GAAG,IAAI;sBACjC,uBAAuB,EAAE,IAAI,CAAC;MAC/B,aAAA,EAAA,EAED,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACT,CACC;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"p-ljGHaVPv.system.js","sources":["src/components/pds-modal/pds-modal.scss?tag=pds-modal","src/components/pds-modal/pds-modal.tsx"],"sourcesContent":[".pds-modal__backdrop {\n align-items: flex-start;\n /* stylelint-disable-next-line pine-design-system/no-hardcoded-colors */\n background-color: rgba(0, 0, 0, 0.4);\n border: 0;\n display: flex;\n height: 100%;\n inset: 0;\n justify-content: center;\n margin: 0;\n max-height: 100%;\n max-width: 100%;\n opacity: 0;\n padding: 0;\n position: fixed;\n transition: opacity 0.2s ease, visibility 0.2s ease;\n visibility: hidden;\n width: 100%;\n z-index: var(--pine-z-index-modal);\n\n @supports (backdrop-filter: blur(3px)) {\n backdrop-filter: blur(3px);\n }\n\n // Increase z-index for nested modals\n pds-modal & {\n z-index: var(--pine-z-index-priority);\n }\n\n &::backdrop {\n background: transparent;\n }\n\n &.open {\n opacity: 1;\n visibility: visible;\n }\n}\n\n.pds-modal {\n background: var(--pine-color-background-container);\n border-radius: var(--pine-dimension-sm);\n box-shadow: var(--pine-box-shadow-400);\n display: flex;\n flex-direction: column;\n margin: var(--pine-dimension-md);\n max-height: none;\n width: 100%;\n\n &.pds-modal--scrollable {\n max-height: calc(100vh - (calc(5vh + 96px)));\n\n @supports (height: 100dvh) {\n max-height: calc(100dvh - (calc(5dvh + 96px)));\n }\n }\n\n @media (min-width: 992px) {\n margin-block-start: 6vh;\n\n @supports (height: 100dvh) {\n margin-block-start: 6dvh;\n }\n }\n\n @media (min-width: 1200px) {\n margin-block-start: 8vh;\n\n @supports (height: 100dvh) {\n margin-block-start: 8dvh;\n }\n }\n}\n\n.pds-modal--sm {\n max-width: 520px;\n}\n\n.pds-modal--md {\n max-width: 700px;\n}\n\n.pds-modal--lg {\n max-width: 900px;\n}\n\n.pds-modal--fullscreen {\n border-radius: 0;\n height: 100%;\n margin: 0;\n max-height: 100vh;\n max-width: 100%;\n\n @supports (height: 100dvh) {\n max-height: 100dvh;\n }\n\n &.pds-modal--scrollable {\n max-height: 100vh;\n\n @supports (height: 100dvh) {\n max-height: 100dvh;\n }\n }\n}\n\n.pds-modal-content {\n .pds-modal--fullscreen & {\n flex: 1;\n }\n}\n\n// Scrollable modal styles (default behavior)\n.pds-modal--scrollable {\n pds-modal-content {\n border-block-end: 1px solid transparent;\n border-block-start: 1px solid transparent;\n overflow-y: auto;\n }\n}\n\n// Non-scrollable modal styles\n.pds-modal:not(.pds-modal--scrollable) {\n pds-modal-content {\n overflow-y: visible;\n }\n}\n\n","import { Component, Element, Event, EventEmitter, h, Method, Prop, State, Watch } from '@stencil/core';\n\n@Component({\n tag: 'pds-modal',\n styleUrl: 'pds-modal.scss',\n shadow: false\n})\nexport class PdsModal {\n private modalRef: HTMLDialogElement;\n private previousActiveElement: HTMLElement;\n private focusableElements: HTMLElement[] = [];\n\n @Element() el: HTMLPdsModalElement;\n\n /**\n * Whether the modal can be dismissed by clicking the backdrop\n * @default true\n */\n @Prop() backdropDismiss = true;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * Whether the modal is open\n * @default false\n */\n @Prop({ mutable: true }) open = false;\n\n /**\n * The size of the modal\n * @default 'md'\n */\n @Prop() size: 'sm' | 'md' | 'lg' | 'fullscreen' = 'md';\n\n /**\n * Whether the modal content should be scrollable\n * @default true\n */\n @Prop() scrollable = true;\n\n /**\n * Emitted when the modal is opened\n */\n @Event() pdsModalOpen: EventEmitter<void>;\n\n /**\n * Emitted when the modal is closed\n */\n @Event() pdsModalClose: EventEmitter<void>;\n\n /**\n * Stores the list of focusable elements in the modal\n */\n @State() focusableElementsArray: HTMLElement[] = [];\n\n componentDidLoad() {\n this.modalRef = this.el.querySelector('.pds-modal__backdrop') as HTMLDialogElement;\n // Add keyboard event listener\n document.addEventListener('keydown', this.handleKeyDown);\n }\n\n disconnectedCallback() {\n // Clean up event listener\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n\n @Watch('open')\n handleOpenChange(newValue: boolean) {\n if (newValue) {\n this.showModal();\n } else {\n this.hideModal();\n }\n }\n\n /**\n * Updates the list of focusable elements in the modal\n */\n private updateFocusableElements() {\n if (!this.modalRef) return;\n\n // Get all focusable elements within the modal\n const selector = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n 'pds-button:not([disabled])',\n 'pds-link:not([disabled])',\n 'pds-input:not([disabled])',\n 'pds-checkbox:not([disabled])',\n 'pds-radio:not([disabled])',\n 'pds-switch:not([disabled])',\n 'pds-select:not([disabled])',\n ].join(',');\n\n this.focusableElements = Array.from(\n this.modalRef.querySelectorAll(selector)\n ) as HTMLElement[];\n\n // Filter out elements with display: none or visibility: hidden\n this.focusableElements = this.focusableElements.filter(el => {\n const style = window.getComputedStyle(el);\n return style.display !== 'none' && style.visibility !== 'hidden';\n });\n }\n\n /**\n * Sets focus to the first focusable element in the modal\n */\n private setInitialFocus() {\n if (this.focusableElements.length === 0) return;\n\n // Focus the first focusable element\n const firstElement = this.focusableElements[0];\n\n // For web components, we need to ensure they're properly focused\n this.focusElement(firstElement);\n }\n\n /**\n * Helper method to focus an element, with special handling for web components\n */\n private focusElement(element: HTMLElement) {\n if (!element) return;\n\n try {\n // Try standard focus first\n element.focus();\n\n // Check if focus worked\n setTimeout(() => {\n if (document.activeElement !== element) {\n // For web components, try to find a focusable element inside\n if (element.shadowRoot) {\n const focusableInShadow = element.shadowRoot.querySelector(\n 'button, [tabindex], input, a[href]'\n ) as HTMLElement;\n\n if (focusableInShadow) {\n focusableInShadow.focus();\n }\n }\n }\n }, 0);\n } catch (error) {\n console.error('Error focusing element:', error);\n }\n }\n\n /**\n * Opens the modal\n */\n @Method()\n async showModal() {\n if (this.modalRef) {\n try {\n // Store the currently focused element to restore focus when modal closes\n this.previousActiveElement = document.activeElement as HTMLElement;\n\n // Use native dialog showModal method which makes the rest of the page inert\n this.modalRef.showModal();\n this.open = true;\n\n // Update focusable elements and set initial focus\n // Using a longer timeout to ensure all components are fully rendered\n setTimeout(() => {\n this.updateFocusableElements();\n this.setInitialFocus();\n this.pdsModalOpen.emit();\n }, 100);\n } catch (error) {\n console.error('Failed to show modal:', error);\n }\n }\n }\n\n /**\n * Closes the modal\n */\n @Method()\n async hideModal() {\n if (this.modalRef) {\n try {\n this.modalRef.close();\n this.open = false;\n\n // Restore focus to the element that was focused before the modal was opened\n if (this.previousActiveElement && typeof this.previousActiveElement.focus === 'function') {\n this.previousActiveElement.focus();\n }\n\n this.pdsModalClose.emit();\n } catch (error) {\n console.error('Failed to hide modal:', error);\n }\n }\n }\n\n private handleBackdropClick = (e: MouseEvent) => {\n if (!this.backdropDismiss || !this.open) return;\n\n if ((e.target as HTMLElement).classList.contains('pds-modal__backdrop')) {\n e.stopPropagation();\n\n // Only close if this is the innermost modal\n if (this.isInnermostModal()) {\n this.hideModal();\n }\n }\n };\n\n /**\n * Gets the z-index of a modal's backdrop element\n */\n private getBackdropZIndex(modal: Element): number {\n const backdrop = modal.querySelector('.pds-modal__backdrop');\n return backdrop ? parseInt(getComputedStyle(backdrop).zIndex, 10) : -1;\n }\n\n /**\n * Checks if this modal is the innermost (highest z-index) modal\n */\n private isInnermostModal(): boolean {\n // Find all open modals\n const openModals = Array.from(document.querySelectorAll('pds-modal')).filter(\n modal => modal.open\n );\n\n if (openModals.length === 0) return false;\n\n // Get this modal's backdrop element\n const thisBackdrop = this.el.querySelector('.pds-modal__backdrop');\n if (!thisBackdrop) return false;\n\n // Get computed z-index of all open modal backdrops\n const modalZIndexes = openModals.map(modal => this.getBackdropZIndex(modal));\n\n // Get the highest z-index\n const maxZIndex = Math.max(...modalZIndexes);\n\n // Check if this modal's backdrop has the highest z-index\n const thisZIndex = this.getBackdropZIndex(this.el);\n return thisZIndex === maxZIndex;\n }\n\n private handleKeyDown = (e: KeyboardEvent) => {\n // If the modal is not open, don't handle any keyboard events\n if (!this.open) return;\n\n // Handle Escape key to close the modal\n if (e.key === 'Escape') {\n // Always prevent native dialog close behavior\n e.preventDefault();\n // Only close if backdropDismiss is enabled and this is the innermost modal\n if (this.backdropDismiss && this.isInnermostModal()) {\n this.hideModal();\n }\n return;\n }\n\n // Handle Tab key for focus trapping\n if (e.key === 'Tab') {\n // If there are no focusable elements, do nothing\n if (this.focusableElements.length === 0) return;\n\n // Get the first and last focusable elements\n const firstFocusableElement = this.focusableElements[0];\n const lastFocusableElement = this.focusableElements[this.focusableElements.length - 1];\n\n // Get the current active element\n const activeElement = document.activeElement;\n\n // Check if we need to wrap focus\n const isFirstElement = activeElement === firstFocusableElement ||\n firstFocusableElement.contains(activeElement as Node);\n\n const isLastElement = activeElement === lastFocusableElement ||\n lastFocusableElement.contains(activeElement as Node);\n\n // If shift + tab is pressed and focus is on the first element, move to the last element\n if (e.shiftKey && isFirstElement) {\n e.preventDefault();\n this.focusElement(lastFocusableElement);\n }\n // If tab is pressed and focus is on the last element, move to the first element\n else if (!e.shiftKey && isLastElement) {\n e.preventDefault();\n this.focusElement(firstFocusableElement);\n }\n }\n };\n\n render() {\n return (\n <dialog\n class={{\n 'pds-modal__backdrop': true,\n 'open': this.open\n }}\n aria-modal=\"true\"\n aria-labelledby={`${this.componentId}-heading`}\n onClick={this.handleBackdropClick}\n >\n <div\n class={{\n 'pds-modal': true,\n [`pds-modal--${this.size}`]: true,\n 'pds-modal--scrollable': this.scrollable\n }}\n >\n <slot></slot>\n </div>\n </dialog>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"p-CijIWK3K.system.js","sources":["src/components/pds-image/pds-image.scss?tag=pds-image&encapsulation=shadow","src/components/pds-image/pds-image.tsx"],"sourcesContent":[":host {\n /**\n * @prop --dimension-aspect-ratio: The image's aspect ratio.\n */\n\n --dimension-aspect-ratio: auto;\n display: inline-block;\n}\n\nimg {\n aspect-ratio: var(--dimension-aspect-ratio);\n display: block;\n height: auto;\n max-width: 100%;\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'pds-image',\n styleUrls: ['pds-image.scss'],\n shadow: true,\n})\nexport class PdsImage {\n /**\n * The image's alt tag. If none is provided,\n * it will default to an empty string, which is desired for\n * decorative images.\n * @defaultValue ''\n */\n @Prop() alt? = '';\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * The height of the image in pixels. Setting this will\n * devote space in the layout to prevent layout\n * shifts when the image is loaded.\n */\n @Prop() height?: number;\n\n /**\n * Indicates how the browser should load the image.\n * @defaultValue eager\n */\n @Prop() loading?: 'eager' | 'lazy' = 'eager';\n\n /**\n * Determines the intended display size of an image\n * within certain breakpoints. Has no effect if `srcset`\n * is not set or value has no width descriptor.\n */\n @Prop() sizes?: string;\n\n /**\n * The image's source.\n */\n @Prop() src: string;\n\n /**\n * A set of image sources for the browser to use\n * for responsiveness.\n */\n @Prop() srcset?: string\n\n /**\n * The width of the image in pixels. Setting this will\n * devote space in the layout to prevent layout\n * shifts when the image is loaded.\n */\n @Prop() width?: number;\n\n render() {\n return (\n <Host\n class={{\n 'pds-image': true,\n }}\n id={this.componentId}\n >\n <img\n alt={this.alt}\n height={this.height}\n loading={this.loading}\n sizes={this.sizes}\n src={this.src}\n srcset={this.srcset}\n width={this.width}\n />\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;MAAA,MAAM,WAAW,GAAG,mJAAmJ;;YCO1J,QAAQ,wBAAA,MAAA;MALrB,IAAA,WAAA,CAAA,OAAA,EAAA;;MAME;;;;;MAKG;MACK,QAAA,IAAG,CAAA,GAAA,GAAI,EAAE;MAcjB;;;MAGG;MACK,QAAA,IAAO,CAAA,OAAA,GAAsB,OAAO;MA+C7C;UApBC,MAAM,GAAA;cACJ,QACE,CAAA,CAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EACH,KAAK,EAAE;MACL,gBAAA,WAAW,EAAE,IAAI;MAClB,aAAA,EACD,EAAE,EAAE,IAAI,CAAC,WAAW,EAAA,EAEpB,CACE,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,CAAA,CACG;;;;;;;;;;;"}
1
+ {"version":3,"file":"p-sgZDP7ET.system.js","sources":["src/components/pds-image/pds-image.scss?tag=pds-image&encapsulation=shadow","src/components/pds-image/pds-image.tsx"],"sourcesContent":[":host {\n /**\n * @prop --dimension-aspect-ratio: The image's aspect ratio.\n */\n\n --dimension-aspect-ratio: auto;\n display: inline-block;\n}\n\nimg {\n aspect-ratio: var(--dimension-aspect-ratio);\n display: block;\n height: auto;\n max-width: 100%;\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'pds-image',\n styleUrls: ['pds-image.scss'],\n shadow: true,\n})\nexport class PdsImage {\n /**\n * The image's alt tag. If none is provided,\n * it will default to an empty string, which is desired for\n * decorative images.\n * @defaultValue ''\n */\n @Prop() alt? = '';\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * The height of the image in pixels. Setting this will\n * devote space in the layout to prevent layout\n * shifts when the image is loaded.\n */\n @Prop() height?: number;\n\n /**\n * Indicates how the browser should load the image.\n * @defaultValue eager\n */\n @Prop() loading?: 'eager' | 'lazy' = 'eager';\n\n /**\n * Determines the intended display size of an image\n * within certain breakpoints. Has no effect if `srcset`\n * is not set or value has no width descriptor.\n */\n @Prop() sizes?: string;\n\n /**\n * The image's source.\n */\n @Prop() src: string;\n\n /**\n * A set of image sources for the browser to use\n * for responsiveness.\n */\n @Prop() srcset?: string\n\n /**\n * The width of the image in pixels. Setting this will\n * devote space in the layout to prevent layout\n * shifts when the image is loaded.\n */\n @Prop() width?: number;\n\n render() {\n return (\n <Host\n class={{\n 'pds-image': true,\n }}\n id={this.componentId}\n >\n <img\n alt={this.alt}\n height={this.height}\n loading={this.loading}\n sizes={this.sizes}\n src={this.src}\n srcset={this.srcset}\n width={this.width}\n />\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;MAAA,MAAM,WAAW,GAAG,mJAAmJ;;YCO1J,QAAQ,wBAAA,MAAA;MALrB,IAAA,WAAA,CAAA,OAAA,EAAA;;MAME;;;;;MAKG;MACK,QAAA,IAAG,CAAA,GAAA,GAAI,EAAE;MAcjB;;;MAGG;MACK,QAAA,IAAO,CAAA,OAAA,GAAsB,OAAO;MA+C7C;UApBC,MAAM,GAAA;cACJ,QACE,CAAA,CAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EACH,KAAK,EAAE;MACL,gBAAA,WAAW,EAAE,IAAI;MAClB,aAAA,EACD,EAAE,EAAE,IAAI,CAAC,WAAW,EAAA,EAEpB,CACE,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,CAAA,CACG;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"pds-chip.entry.esm.js","sources":["src/components/pds-chip/pds-chip.tokens.scss?tag=pds-chip&encapsulation=shadow","src/components/pds-chip/pds-chip.scss?tag=pds-chip&encapsulation=shadow","src/components/pds-chip/pds-chip.tsx"],"sourcesContent":["@use '~@kajabi-ui/styles/dist/pine/components/pds-chip/pds-chip.tokens'\n","@use 'sass:map';\n\n:host {\n --sizing-close: var(--pine-dimension-125);\n\n align-items: center;\n border-radius: var(--pine-dimension-sm);\n display: inline-flex;\n padding-block: var(--pine-dimension-025);\n padding-inline: var(--pine-dimension-150);\n}\n\n$pds-chip-sentiment: (\n accent: var(--pine-chip-color-accent),\n danger: var(--pine-chip-color-danger),\n info: var(--pine-chip-color-info),\n neutral: var(--pine-chip-color-neutral),\n success: var(--pine-chip-color-success),\n warning: var(--pine-chip-color-warning),\n);\n\n/* stylelint-disable pine-design-system/prefer-semantic-tokens */\n$pds-chip-sentiment-text: (\n accent: var(--pine-color-text-accent),\n danger: var(--pine-color-text-danger),\n info: var(--pine-color-text-info),\n neutral: var(--pine-color-grey-900),\n success: var(--pine-color-text-success),\n warning: var(--pine-color-text-warning),\n);\n/* stylelint-enable pine-design-system/prefer-semantic-tokens */\n\n$pds-chip-sentiment-dots: (\n accent: var(--pine-chip-color-accent-dot),\n danger: var(--pine-chip-color-danger-dot),\n info: var(--pine-chip-color-info-dot),\n neutral: var(--pine-chip-color-neutral-dot),\n success: var(--pine-chip-color-success-dot),\n warning: var(--pine-chip-color-warning-dot),\n);\n\n$pds-chip-sentiment-hover: (\n accent: var(--pine-chip-color-accent-hover),\n danger: var(--pine-chip-color-danger-hover),\n info: var(--pine-chip-color-info-hover),\n neutral: var(--pine-chip-color-neutral-hover),\n success: var(--pine-chip-color-success-hover),\n warning: var(--pine-chip-color-warning-hover),\n);\n\n@each $sentiment, $value in $pds-chip-sentiment {\n :host(.pds-chip--#{$sentiment}) {\n background: $value;\n border: var(--pine-border-width) solid var(--pine-chip-color-#{$sentiment}-hover);\n\n // dot colors\n .pds-chip__dot {\n /* stylelint-disable-next-line */\n background: map.get($pds-chip-sentiment-dots, $sentiment);\n }\n\n .pds-chip__label, .pds-chip__button, .pds-chip__close {\n /* stylelint-disable-next-line */\n color: map.get($pds-chip-sentiment-text, $sentiment);\n font-weight: var(--pine-font-weight-medium);\n }\n\n // tag close hover colors\n .pds-chip__close:hover {\n /* stylelint-disable-next-line */\n background: map.get($pds-chip-sentiment-hover, $sentiment);\n }\n }\n // dropdown hover colors\n :host(.pds-chip--#{$sentiment}.pds-chip--dropdown:hover) {\n /* stylelint-disable-next-line */\n background: map.get($pds-chip-sentiment-hover, $sentiment);\n }\n}\n\n.pds-chip__dot {\n border: var(--pine-border-width) solid transparent;\n border-radius: var(--pine-border-radius-full);\n display: inline-block;\n height: var(--pine-dimension-2xs);\n margin-inline-end: var(--pine-dimension-2xs);\n width: var(--pine-dimension-2xs);\n}\n\n.pds-chip__label {\n align-items: center;\n display: flex;\n\n pds-icon {\n margin-inline-end: var(--pine-dimension-2xs);\n }\n}\n\n.pds-chip__label, .pds-chip__button {\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n}\n\n// dropdown\n\n:host(.pds-chip--dropdown) {\n padding: var(--pine-dimension-none);\n}\n\n.pds-chip__button {\n align-items: center;\n appearance: none;\n background: transparent;\n border: var(--pine-dimension-none);\n border-radius: var(--pine-dimension-sm);\n cursor: pointer;\n display: flex;\n padding: var(--pine-dimension-025) var(--pine-dimension-150);\n\n &:focus-visible {\n outline: var(--pine-outline-focus);\n outline-offset: var(--pine-border-width);\n }\n\n pds-icon:first-child {\n margin-inline-end: var(--pine-dimension-2xs);\n }\n\n pds-icon:last-child {\n margin-inline-end: calc(var(--pine-dimension-025) * -1);\n margin-inline-start: var(--pine-dimension-2xs);\n }\n}\n\n.pds-chip__close {\n appearance: none;\n background: transparent;\n border: 0;\n border-radius: var(--pine-border-radius-full);\n height: var(--sizing-close);\n margin-inline-end: calc(var(--pine-dimension-xs) * -1);\n margin-inline-start: var(--pine-dimension-2xs);\n padding: var(--sizing-close);\n position: relative;\n width: var(--sizing-close);\n\n pds-icon {\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n }\n\n &:focus-visible {\n outline: var(--pine-outline-focus);\n }\n}\n\n// large\n\n:host(.pds-chip--large) {\n padding-block: var(--pine-dimension-025);\n padding-inline: var(--pine-dimension-150);\n\n .pds-chip__label, .pds-chip__button {\n font-family: var(--pine-font-family-heading);\n font-size: var(--pine-font-size-heading-6);\n font-weight: var(--pine-font-weight-medium);\n letter-spacing: var(--pine-letter-spacing-heading-6);\n }\n}\n\n:host(.pds-chip--large.pds-chip--dropdown) {\n padding: var(--pine-dimension-none);\n\n .pds-chip__button {\n padding: var(--pine-dimension-025) var(--pine-dimension-150);\n }\n}\n\n:host(.pds-chip--brand) {\n /* stylelint-disable-next-line pine-design-system/no-hardcoded-colors */\n background: linear-gradient(90deg, #FF3E14 0%, #6B62F2 100%);\n border: 0;\n padding: 1px;\n position: relative;\n\n .pds-chip__label {\n /* stylelint-disable-next-line pine-design-system/no-hardcoded-colors */\n background: rgba(255, 255, 255, 0.9);\n border-radius: calc(var(--pine-dimension-sm) - 1px);\n /* stylelint-disable-next-line pine-design-system/prefer-semantic-tokens */\n color: var(--pine-color-grey-900);\n font-weight: var(--pine-font-weight-medium);\n padding: var(--pine-dimension-025) var(--pine-dimension-150);\n position: relative;\n z-index: var(--pine-z-index-raised);\n\n pds-icon {\n margin-inline-end: var(--pine-dimension-2xs);\n }\n }\n\n .pds-chip__button, .pds-chip__close {\n /* stylelint-disable-next-line pine-design-system/prefer-semantic-tokens */\n color: var(--pine-color-grey-900);\n font-weight: var(--pine-font-weight-medium);\n position: relative;\n z-index: var(--pine-z-index-raised);\n }\n\n .pds-chip__button {\n pds-icon:first-child {\n margin-inline-end: var(--pine-dimension-2xs);\n }\n }\n\n // tag close hover colors\n .pds-chip__close:hover {\n /* stylelint-disable-next-line pine-design-system/no-hardcoded-colors */\n background: rgba(255, 255, 255, 0.8);\n }\n}\n","import { downSmall, remove } from '@pine-ds/icons/icons';\nimport { Component, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\nimport type { ChipSentimentType, ChipVariantType } from '@utils/types';\n\n/**\n * @slot (default) - The chip's label text.\n */\n\n@Component({\n tag: 'pds-chip',\n styleUrls: ['pds-chip.tokens.scss', 'pds-chip.scss'],\n shadow: true,\n})\nexport class PdsChip {\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * Determines whether a dot should be displayed on the chip.\n * Note: This prop is ignored when sentiment is 'brand'.\n * @defaultValue false\n */\n @Prop() dot = false;\n\n /**\n * The name of the icon to display before the chip text.\n */\n @Prop() icon?: string;\n\n /**\n * Determines whether the chip should be displayed in a larger size.\n * @defaultValue false\n */\n @Prop() large = false;\n\n /**\n * Defines the color scheme of the chip.\n * @defaultValue 'neutral'\n */\n @Prop() sentiment: ChipSentimentType = 'neutral';\n\n /**\n * Sets the style variant of the chip.\n * Note: This prop is ignored when sentiment is 'brand'.\n * @defaultValue 'text'\n */\n @Prop() variant: ChipVariantType = 'text';\n\n /**\n * Event emitted when the close button is clicked on a tag variant chip.\n */\n @Event() pdsTagCloseClick: EventEmitter<void>;\n\n private handleCloseClick = () => {\n this.pdsTagCloseClick.emit();\n };\n\n private classNames() {\n const classNames = ['pds-chip'];\n\n if (this.large) {\n classNames.push('pds-chip--large');\n }\n\n // For brand sentiment, always use text variant\n const effectiveVariant = this.sentiment === 'brand' ? 'text' : this.variant;\n if (effectiveVariant) {\n classNames.push('pds-chip--' + effectiveVariant);\n }\n\n if (this.sentiment) {\n classNames.push('pds-chip--' + this.sentiment);\n }\n\n return classNames.join(' ');\n }\n\n private get effectiveVariant() {\n // For brand sentiment, force text variant behavior\n return this.sentiment === 'brand' ? 'text' : this.variant;\n }\n\n private get iconSize() {\n // Icon size based on large prop\n return this.large ? '14px' : '12px';\n }\n\n private setChipContent() {\n const isDropdown = this.effectiveVariant === 'dropdown';\n\n // For brand sentiment, ignore dot prop\n const showDot = this.sentiment === 'brand' ? false : this.dot;\n\n const chipContent = isDropdown ? (\n <button class=\"pds-chip__button\" type=\"button\">\n {this.icon && <pds-icon icon={this.icon} size={this.iconSize} aria-hidden=\"true\"></pds-icon>}\n {showDot && <i class=\"pds-chip__dot\" aria-hidden=\"true\"></i>}\n <slot></slot>\n <pds-icon icon={downSmall} size={this.iconSize} aria-hidden=\"true\"></pds-icon>\n </button>\n ) : (\n <span class=\"pds-chip__label\">\n {this.icon && <pds-icon icon={this.icon} size={this.iconSize} aria-hidden=\"true\"></pds-icon>}\n {showDot && <i class=\"pds-chip__dot\" aria-hidden=\"true\"></i>}\n <slot></slot>\n </span>\n );\n\n return chipContent;\n }\n\n render() {\n return (\n <Host class={this.classNames()} id={this.componentId}>\n {this.setChipContent()}\n {this.effectiveVariant === 'tag' && (\n <button class=\"pds-chip__close\" type=\"button\" onClick={this.handleCloseClick} aria-label=\"Remove\">\n <pds-icon icon={remove} size={this.iconSize}></pds-icon>\n </button>\n )}\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;;AAAA,MAAM,gBAAgB,GAAG,2/BAA2/B;;ACAphC,MAAM,UAAU,GAAG,+nPAA+nP;;MCaroP,OAAO,GAAA,MAAA;AALpB,IAAA,WAAA,CAAA,OAAA,EAAA;;;AAWE;;;;AAIG;AACK,QAAA,IAAG,CAAA,GAAA,GAAG,KAAK;AAOnB;;;AAGG;AACK,QAAA,IAAK,CAAA,KAAA,GAAG,KAAK;AAErB;;;AAGG;AACK,QAAA,IAAS,CAAA,SAAA,GAAsB,SAAS;AAEhD;;;;AAIG;AACK,QAAA,IAAO,CAAA,OAAA,GAAoB,MAAM;AAOjC,QAAA,IAAgB,CAAA,gBAAA,GAAG,MAAK;AAC9B,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAC9B,SAAC;AAoEF;IAlES,UAAU,GAAA;AAChB,QAAA,MAAM,UAAU,GAAG,CAAC,UAAU,CAAC;AAE/B,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC;;;AAIpC,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,KAAK,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO;QAC3E,IAAI,gBAAgB,EAAE;AACpB,YAAA,UAAU,CAAC,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC;;AAGlD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,UAAU,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;;AAGhD,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;;AAG7B,IAAA,IAAY,gBAAgB,GAAA;;AAE1B,QAAA,OAAO,IAAI,CAAC,SAAS,KAAK,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO;;AAG3D,IAAA,IAAY,QAAQ,GAAA;;QAElB,OAAO,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,MAAM;;IAG7B,cAAc,GAAA;AACpB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,KAAK,UAAU;;AAGvD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,KAAK,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG;AAE7D,QAAA,MAAM,WAAW,GAAG,UAAU,IAC5B,CAAQ,CAAA,QAAA,EAAA,EAAA,KAAK,EAAC,kBAAkB,EAAC,IAAI,EAAC,QAAQ,EAAA,EAC3C,IAAI,CAAC,IAAI,IAAI,CAAU,CAAA,UAAA,EAAA,EAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAA,aAAA,EAAc,MAAM,EAAY,CAAA,EAC3F,OAAO,IAAI,CAAG,CAAA,GAAA,EAAA,EAAA,KAAK,EAAC,eAAe,EAAA,aAAA,EAAa,MAAM,EAAK,CAAA,EAC5D,CAAa,CAAA,MAAA,EAAA,IAAA,CAAA,EACb,CAAU,CAAA,UAAA,EAAA,EAAA,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAA,aAAA,EAAc,MAAM,EAAY,CAAA,CACvE,KAET,CAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAC,iBAAiB,EAAA,EAC1B,IAAI,CAAC,IAAI,IAAI,CAAU,CAAA,UAAA,EAAA,EAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAA,aAAA,EAAc,MAAM,EAAY,CAAA,EAC3F,OAAO,IAAI,CAAG,CAAA,GAAA,EAAA,EAAA,KAAK,EAAC,eAAe,EAAA,aAAA,EAAa,MAAM,EAAK,CAAA,EAC5D,CAAa,CAAA,MAAA,EAAA,IAAA,CAAA,CACR,CACR;AAED,QAAA,OAAO,WAAW;;IAGpB,MAAM,GAAA;AACJ,QAAA,QACE,CAAA,CAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,EAAA,EACjD,IAAI,CAAC,cAAc,EAAE,EACrB,IAAI,CAAC,gBAAgB,KAAK,KAAK,KAC9B,CAAA,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAQ,KAAK,EAAC,iBAAiB,EAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAA,YAAA,EAAa,QAAQ,EAAA,EAC/F,CAAA,CAAA,UAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAU,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAa,CAAA,CACjD,CACV,CACI;;;;;;;"}
1
+ {"version":3,"file":"pds-chip.entry.esm.js","sources":["src/components/pds-chip/pds-chip.tokens.scss?tag=pds-chip&encapsulation=shadow","src/components/pds-chip/pds-chip.scss?tag=pds-chip&encapsulation=shadow","src/components/pds-chip/pds-chip.tsx"],"sourcesContent":["@use '~@kajabi-ui/styles/dist/pine/components/pds-chip/pds-chip.tokens'\n","@use 'sass:map';\n\n:host {\n --sizing-close: var(--pine-dimension-125);\n\n align-items: center;\n border-radius: var(--pine-dimension-sm);\n display: inline-flex;\n padding-block: var(--pine-dimension-025);\n padding-inline: var(--pine-dimension-100);\n}\n\n$pds-chip-sentiment: (\n accent: var(--pine-chip-color-accent),\n danger: var(--pine-chip-color-danger),\n info: var(--pine-chip-color-info),\n neutral: var(--pine-chip-color-neutral),\n success: var(--pine-chip-color-success),\n warning: var(--pine-chip-color-warning),\n);\n\n/* stylelint-disable pine-design-system/prefer-semantic-tokens */\n$pds-chip-sentiment-text: (\n accent: var(--pine-color-text-accent),\n danger: var(--pine-color-text-danger),\n info: var(--pine-color-text-info),\n neutral: var(--pine-color-grey-900),\n success: var(--pine-color-text-success),\n warning: var(--pine-color-text-warning),\n);\n/* stylelint-enable pine-design-system/prefer-semantic-tokens */\n\n$pds-chip-sentiment-dots: (\n accent: var(--pine-chip-color-accent-dot),\n danger: var(--pine-chip-color-danger-dot),\n info: var(--pine-chip-color-info-dot),\n neutral: var(--pine-chip-color-neutral-dot),\n success: var(--pine-chip-color-success-dot),\n warning: var(--pine-chip-color-warning-dot),\n);\n\n$pds-chip-sentiment-hover: (\n accent: var(--pine-chip-color-accent-hover),\n danger: var(--pine-chip-color-danger-hover),\n info: var(--pine-chip-color-info-hover),\n neutral: var(--pine-chip-color-neutral-hover),\n success: var(--pine-chip-color-success-hover),\n warning: var(--pine-chip-color-warning-hover),\n);\n\n@each $sentiment, $value in $pds-chip-sentiment {\n :host(.pds-chip--#{$sentiment}) {\n background: $value;\n border: var(--pine-border-width) solid var(--pine-chip-color-#{$sentiment}-hover);\n\n // dot colors\n .pds-chip__dot {\n /* stylelint-disable-next-line */\n background: map.get($pds-chip-sentiment-dots, $sentiment);\n }\n\n .pds-chip__label, .pds-chip__button, .pds-chip__close {\n /* stylelint-disable-next-line */\n color: map.get($pds-chip-sentiment-text, $sentiment);\n font-weight: var(--pine-font-weight-medium);\n }\n\n // tag close hover colors\n .pds-chip__close:hover {\n /* stylelint-disable-next-line */\n background: map.get($pds-chip-sentiment-hover, $sentiment);\n }\n }\n // dropdown hover colors\n :host(.pds-chip--#{$sentiment}.pds-chip--dropdown:hover) {\n /* stylelint-disable-next-line */\n background: map.get($pds-chip-sentiment-hover, $sentiment);\n }\n}\n\n.pds-chip__dot {\n border: var(--pine-border-width) solid transparent;\n border-radius: var(--pine-border-radius-full);\n display: inline-block;\n height: var(--pine-dimension-2xs);\n margin-inline-end: var(--pine-dimension-2xs);\n width: var(--pine-dimension-2xs);\n}\n\n.pds-chip__label {\n align-items: center;\n display: flex;\n\n pds-icon {\n margin-inline-end: var(--pine-dimension-2xs);\n }\n}\n\n.pds-chip__label, .pds-chip__button {\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n}\n\n// dropdown\n\n:host(.pds-chip--dropdown) {\n padding: var(--pine-dimension-none);\n}\n\n.pds-chip__button {\n align-items: center;\n appearance: none;\n background: transparent;\n border: var(--pine-dimension-none);\n border-radius: var(--pine-dimension-sm);\n cursor: pointer;\n display: flex;\n padding: var(--pine-dimension-025) var(--pine-dimension-100);\n\n &:focus-visible {\n outline: var(--pine-outline-focus);\n outline-offset: var(--pine-border-width);\n }\n\n pds-icon:first-child {\n margin-inline-end: var(--pine-dimension-2xs);\n }\n\n pds-icon:last-child {\n margin-inline-end: calc(var(--pine-dimension-025) * -1);\n margin-inline-start: var(--pine-dimension-2xs);\n }\n}\n\n.pds-chip__close {\n appearance: none;\n background: transparent;\n border: 0;\n border-radius: var(--pine-border-radius-full);\n box-sizing: border-box;\n height: var(--sizing-close);\n margin-inline-end: calc(var(--pine-dimension-xs) * -1);\n margin-inline-start: var(--pine-dimension-2xs);\n padding: var(--sizing-close);\n position: relative;\n width: var(--sizing-close);\n\n pds-icon {\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translate(-50%, -50%);\n }\n\n &:focus-visible {\n outline: var(--pine-outline-focus);\n }\n}\n\n// large\n\n:host(.pds-chip--large) {\n padding-block: var(--pine-dimension-025);\n padding-inline: var(--pine-dimension-150);\n\n .pds-chip__label, .pds-chip__button {\n font-family: var(--pine-font-family-heading);\n font-size: var(--pine-font-size-heading-6);\n font-weight: var(--pine-font-weight-medium);\n letter-spacing: var(--pine-letter-spacing-heading-6);\n }\n}\n\n:host(.pds-chip--large.pds-chip--dropdown) {\n padding: var(--pine-dimension-none);\n\n .pds-chip__button {\n padding: var(--pine-dimension-025) var(--pine-dimension-150);\n }\n}\n\n:host(.pds-chip--brand) {\n /* stylelint-disable-next-line pine-design-system/no-hardcoded-colors */\n background: linear-gradient(90deg, #FF3E14 0%, #6B62F2 100%);\n border: 0;\n padding: 1px;\n position: relative;\n\n .pds-chip__label {\n /* stylelint-disable-next-line pine-design-system/no-hardcoded-colors */\n background: rgba(255, 255, 255, 0.9);\n border-radius: calc(var(--pine-dimension-sm) - 1px);\n /* stylelint-disable-next-line pine-design-system/prefer-semantic-tokens */\n color: var(--pine-color-grey-900);\n font-weight: var(--pine-font-weight-medium);\n padding: var(--pine-dimension-025) var(--pine-dimension-100);\n position: relative;\n z-index: var(--pine-z-index-raised);\n\n pds-icon {\n margin-inline-end: var(--pine-dimension-2xs);\n }\n }\n\n .pds-chip__button, .pds-chip__close {\n /* stylelint-disable-next-line pine-design-system/prefer-semantic-tokens */\n color: var(--pine-color-grey-900);\n font-weight: var(--pine-font-weight-medium);\n position: relative;\n z-index: var(--pine-z-index-raised);\n }\n\n .pds-chip__button {\n pds-icon:first-child {\n margin-inline-end: var(--pine-dimension-2xs);\n }\n }\n\n // tag close hover colors\n .pds-chip__close:hover {\n /* stylelint-disable-next-line pine-design-system/no-hardcoded-colors */\n background: rgba(255, 255, 255, 0.8);\n }\n}\n","import { downSmall, remove } from '@pine-ds/icons/icons';\nimport { Component, Host, h, Prop, Event, EventEmitter } from '@stencil/core';\nimport type { ChipSentimentType, ChipVariantType } from '@utils/types';\n\n/**\n * @slot (default) - The chip's label text.\n */\n\n@Component({\n tag: 'pds-chip',\n styleUrls: ['pds-chip.tokens.scss', 'pds-chip.scss'],\n shadow: true,\n})\nexport class PdsChip {\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * Determines whether a dot should be displayed on the chip.\n * Note: This prop is ignored when sentiment is 'brand'.\n * @defaultValue false\n */\n @Prop() dot = false;\n\n /**\n * The name of the icon to display before the chip text.\n */\n @Prop() icon?: string;\n\n /**\n * Determines whether the chip should be displayed in a larger size.\n * @defaultValue false\n */\n @Prop() large = false;\n\n /**\n * Defines the color scheme of the chip.\n * @defaultValue 'neutral'\n */\n @Prop() sentiment: ChipSentimentType = 'neutral';\n\n /**\n * Sets the style variant of the chip.\n * Note: This prop is ignored when sentiment is 'brand'.\n * @defaultValue 'text'\n */\n @Prop() variant: ChipVariantType = 'text';\n\n /**\n * URL to navigate to when the remove button is clicked.\n * When provided, renders the close button as a link instead of a button.\n * Only applies to tag variant.\n */\n @Prop() removeUrl?: string;\n\n /**\n * HTTP method to use for the remove action.\n * Adds data-method and data-turbo-method attributes for Rails/Turbo compatibility.\n * Only applies when removeUrl is provided.\n */\n @Prop() removeHttpMethod?: 'get' | 'post' | 'put' | 'patch' | 'delete';\n\n /**\n * Specifies where to open the linked document when removeUrl is provided.\n * Only applies when removeUrl is set.\n */\n @Prop() removeTarget?: '_blank' | '_self' | '_parent' | '_top';\n\n /**\n * Event emitted when the close button is clicked on a tag variant chip.\n */\n @Event() pdsTagCloseClick: EventEmitter<void>;\n\n private handleCloseClick = () => {\n this.pdsTagCloseClick.emit();\n };\n\n private classNames() {\n const classNames = ['pds-chip'];\n\n if (this.large) {\n classNames.push('pds-chip--large');\n }\n\n // For brand sentiment, always use text variant\n const effectiveVariant = this.sentiment === 'brand' ? 'text' : this.variant;\n if (effectiveVariant) {\n classNames.push('pds-chip--' + effectiveVariant);\n }\n\n if (this.sentiment) {\n classNames.push('pds-chip--' + this.sentiment);\n }\n\n return classNames.join(' ');\n }\n\n private get effectiveVariant() {\n // For brand sentiment, force text variant behavior\n return this.sentiment === 'brand' ? 'text' : this.variant;\n }\n\n private get iconSize() {\n // Icon size based on large prop\n return this.large ? '14px' : '12px';\n }\n\n private setChipContent() {\n const isDropdown = this.effectiveVariant === 'dropdown';\n\n // For brand sentiment, ignore dot prop\n const showDot = this.sentiment === 'brand' ? false : this.dot;\n\n const chipContent = isDropdown ? (\n <button class=\"pds-chip__button\" type=\"button\">\n {this.icon && <pds-icon icon={this.icon} size={this.iconSize} aria-hidden=\"true\"></pds-icon>}\n {showDot && <i class=\"pds-chip__dot\" aria-hidden=\"true\"></i>}\n <slot></slot>\n <pds-icon icon={downSmall} size={this.iconSize} aria-hidden=\"true\"></pds-icon>\n </button>\n ) : (\n <span class=\"pds-chip__label\">\n {this.icon && <pds-icon icon={this.icon} size={this.iconSize} aria-hidden=\"true\"></pds-icon>}\n {showDot && <i class=\"pds-chip__dot\" aria-hidden=\"true\"></i>}\n <slot></slot>\n </span>\n );\n\n return chipContent;\n }\n\n private renderCloseButton() {\n const CloseElement = this.removeUrl ? 'a' : 'button';\n\n const closeAttributes = () => {\n if (this.removeUrl) {\n // Link attributes\n const linkAttrs: any = {\n class: 'pds-chip__close',\n href: this.removeUrl,\n 'aria-label': 'Remove',\n };\n\n // Add target if specified\n if (this.removeTarget) {\n linkAttrs.target = this.removeTarget;\n }\n\n // Add HTTP method attributes if specified\n if (this.removeHttpMethod) {\n linkAttrs['data-method'] = this.removeHttpMethod;\n linkAttrs['data-turbo-method'] = this.removeHttpMethod;\n }\n\n // Build rel attribute by collecting all required values\n const relValues = [];\n\n // Add noopener noreferrer if target is _blank\n if (this.removeTarget === '_blank') {\n relValues.push('noopener', 'noreferrer');\n }\n\n // Add nofollow for non-GET methods (best practice)\n if (this.removeHttpMethod && this.removeHttpMethod !== 'get') {\n relValues.push('nofollow');\n }\n\n // Set rel attribute if we have any values\n if (relValues.length > 0) {\n linkAttrs.rel = relValues.join(' ');\n }\n\n return linkAttrs;\n }\n\n // Button attributes\n return {\n class: 'pds-chip__close',\n type: 'button',\n 'aria-label': 'Remove',\n };\n };\n\n return (\n <CloseElement {...closeAttributes()} onClick={this.handleCloseClick}>\n <pds-icon icon={remove} size={this.iconSize}></pds-icon>\n </CloseElement>\n );\n }\n\n render() {\n return (\n <Host class={this.classNames()} id={this.componentId}>\n {this.setChipContent()}\n {this.effectiveVariant === 'tag' && this.renderCloseButton()}\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}