@pine-ds/core 4.0.0-mercury.0 → 4.0.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 (1346) hide show
  1. package/components/attributes.js +1 -0
  2. package/components/closest.js +1 -11
  3. package/components/floating-ui.dom.js +1 -0
  4. package/components/form.js +1 -0
  5. package/components/i18n-format.js +1 -0
  6. package/components/index.d.ts +41 -0
  7. package/components/index.js +1 -33
  8. package/components/index2.js +1 -14
  9. package/components/mock-pds-modal.d.ts +11 -0
  10. package/components/mock-pds-modal.js +1 -0
  11. package/components/pds-accordion.js +1 -68
  12. package/components/pds-alert.d.ts +11 -0
  13. package/components/pds-alert.js +1 -0
  14. package/components/pds-avatar.js +1 -103
  15. package/components/pds-box.js +1 -124
  16. package/components/pds-box2.js +1 -0
  17. package/components/pds-button.js +1 -8
  18. package/components/pds-button2.js +1 -84
  19. package/components/pds-checkbox.js +1 -8
  20. package/components/pds-checkbox2.js +1 -101
  21. package/components/pds-chip.js +1 -78
  22. package/components/pds-chip2.js +1 -0
  23. package/components/pds-combobox.d.ts +11 -0
  24. package/components/pds-combobox.js +2 -0
  25. package/components/pds-container.d.ts +11 -0
  26. package/components/pds-container.js +1 -0
  27. package/components/pds-copytext.js +1 -88
  28. package/components/pds-divider.js +1 -54
  29. package/components/pds-dropdown-menu-item.d.ts +11 -0
  30. package/components/pds-dropdown-menu-item.js +1 -0
  31. package/components/pds-dropdown-menu-separator.d.ts +11 -0
  32. package/components/pds-dropdown-menu-separator.js +1 -0
  33. package/components/pds-dropdown-menu.d.ts +11 -0
  34. package/components/pds-dropdown-menu.js +1 -0
  35. package/components/pds-filter.d.ts +11 -0
  36. package/components/pds-filter.js +1 -0
  37. package/components/pds-filters.d.ts +11 -0
  38. package/components/pds-filters.js +1 -0
  39. package/components/pds-icon.js +1 -8
  40. package/components/pds-icon2.js +1 -370
  41. package/components/pds-image.js +1 -55
  42. package/components/pds-input.js +1 -72
  43. package/components/pds-link.js +1 -65
  44. package/components/pds-link2.js +1 -0
  45. package/components/pds-loader.js +1 -68
  46. package/components/pds-loader2.js +1 -0
  47. package/components/pds-modal-content.d.ts +11 -0
  48. package/components/pds-modal-content.js +1 -0
  49. package/components/pds-modal-footer.d.ts +11 -0
  50. package/components/pds-modal-footer.js +1 -0
  51. package/components/pds-modal-header.d.ts +11 -0
  52. package/components/pds-modal-header.js +1 -0
  53. package/components/pds-modal.d.ts +11 -0
  54. package/components/pds-modal.js +1 -0
  55. package/components/pds-multiselect.d.ts +11 -0
  56. package/components/pds-multiselect.js +1 -0
  57. package/components/pds-popover.d.ts +11 -0
  58. package/components/pds-popover.js +1 -0
  59. package/components/pds-progress.js +1 -49
  60. package/components/pds-property.d.ts +11 -0
  61. package/components/pds-property.js +1 -0
  62. package/components/pds-radio-group.d.ts +11 -0
  63. package/components/pds-radio-group.js +1 -0
  64. package/components/pds-radio.js +1 -78
  65. package/components/pds-row.js +1 -72
  66. package/components/pds-select.d.ts +11 -0
  67. package/components/pds-select.js +1 -0
  68. package/components/pds-sortable-item.js +1 -58
  69. package/components/pds-sortable.js +3 -2718
  70. package/components/pds-switch.js +1 -82
  71. package/components/pds-tab.js +1 -53
  72. package/components/pds-table-body.js +1 -36
  73. package/components/pds-table-cell.js +1 -8
  74. package/components/pds-table-cell2.js +1 -72
  75. package/components/pds-table-head-cell.js +1 -8
  76. package/components/pds-table-head-cell2.js +1 -98
  77. package/components/pds-table-head.js +1 -90
  78. package/components/pds-table-row.js +1 -95
  79. package/components/pds-table.js +1 -124
  80. package/components/pds-tabpanel.js +1 -45
  81. package/components/pds-tabs.js +1 -119
  82. package/components/pds-text.d.ts +11 -0
  83. package/components/pds-text.js +1 -0
  84. package/components/pds-text2.js +1 -0
  85. package/components/pds-textarea.js +1 -82
  86. package/components/pds-toast.d.ts +11 -0
  87. package/components/pds-toast.js +1 -0
  88. package/components/pds-tooltip.js +1 -178
  89. package/components/reconnected-content.js +1 -0
  90. package/components/scroll.js +1 -0
  91. package/components/truncation-tooltip.js +1 -0
  92. package/components/utils.js +1 -0
  93. package/dist/cjs/attributes-oNMnBEnP.js +85 -0
  94. package/dist/cjs/closest-BZXvuB_Y.js +11 -0
  95. package/dist/cjs/floating-ui.dom-BZk7Blsu.js +1635 -0
  96. package/dist/cjs/form-MhwfKTuo.js +69 -0
  97. package/dist/cjs/i18n-format-CrpIhahc.js +64 -0
  98. package/dist/cjs/index-BdFrBXCD.js +2926 -0
  99. package/dist/cjs/index-CKNNY-lQ.js +31 -0
  100. package/dist/cjs/index.cjs.js +0 -4
  101. package/dist/cjs/loader.cjs.js +3 -8
  102. package/dist/cjs/mock-pds-modal.cjs.entry.js +91 -0
  103. package/dist/cjs/pds-accordion.cjs.entry.js +15 -14
  104. package/dist/cjs/pds-alert.cjs.entry.js +74 -0
  105. package/dist/cjs/pds-avatar.cjs.entry.js +92 -25
  106. package/dist/cjs/pds-box.cjs.entry.js +111 -38
  107. package/dist/cjs/pds-button.cjs.entry.js +169 -25
  108. package/dist/cjs/pds-checkbox.cjs.entry.js +66 -26
  109. package/dist/cjs/pds-chip.cjs.entry.js +157 -23
  110. package/dist/cjs/pds-combobox.cjs.entry.js +2905 -0
  111. package/dist/cjs/pds-container.cjs.entry.js +36 -0
  112. package/dist/cjs/pds-copytext.cjs.entry.js +72 -17
  113. package/dist/cjs/pds-divider.cjs.entry.js +8 -11
  114. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +85 -0
  115. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +22 -0
  116. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +318 -0
  117. package/dist/cjs/pds-filter.cjs.entry.js +489 -0
  118. package/dist/cjs/pds-filters.cjs.entry.js +17 -0
  119. package/dist/cjs/pds-icon.cjs.entry.js +273 -40
  120. package/dist/cjs/pds-image.cjs.entry.js +15 -16
  121. package/dist/cjs/pds-input.cjs.entry.js +296 -26
  122. package/dist/cjs/pds-link.cjs.entry.js +41 -13
  123. package/dist/cjs/pds-loader.cjs.entry.js +21 -14
  124. package/dist/cjs/pds-modal-content.cjs.entry.js +196 -0
  125. package/dist/cjs/pds-modal-footer.cjs.entry.js +23 -0
  126. package/dist/cjs/pds-modal-header.cjs.entry.js +23 -0
  127. package/dist/cjs/pds-modal.cjs.entry.js +297 -0
  128. package/dist/cjs/pds-multiselect.cjs.entry.js +1068 -0
  129. package/dist/cjs/pds-popover.cjs.entry.js +571 -0
  130. package/dist/cjs/pds-progress.cjs.entry.js +16 -12
  131. package/dist/cjs/pds-property.cjs.entry.js +21 -0
  132. package/dist/cjs/pds-radio-group.cjs.entry.js +193 -0
  133. package/dist/cjs/pds-radio.cjs.entry.js +79 -23
  134. package/dist/cjs/pds-row.cjs.entry.js +35 -17
  135. package/dist/cjs/pds-select.cjs.entry.js +256 -0
  136. package/dist/cjs/pds-sortable-item.cjs.entry.js +26 -11
  137. package/dist/cjs/pds-sortable.cjs.entry.js +139 -117
  138. package/dist/cjs/pds-switch.cjs.entry.js +78 -26
  139. package/dist/cjs/pds-tab.cjs.entry.js +66 -16
  140. package/dist/cjs/pds-table-body.cjs.entry.js +4 -9
  141. package/dist/cjs/pds-table-cell.cjs.entry.js +107 -17
  142. package/dist/cjs/pds-table-head-cell.cjs.entry.js +169 -26
  143. package/dist/cjs/pds-table-head.cjs.entry.js +16 -13
  144. package/dist/cjs/pds-table-row.cjs.entry.js +103 -16
  145. package/dist/cjs/pds-table.cjs.entry.js +178 -22
  146. package/dist/cjs/pds-tabpanel.cjs.entry.js +19 -13
  147. package/dist/cjs/pds-tabs.cjs.entry.js +88 -17
  148. package/dist/cjs/pds-text.cjs.entry.js +122 -0
  149. package/dist/cjs/pds-textarea.cjs.entry.js +311 -29
  150. package/dist/cjs/pds-toast.cjs.entry.js +145 -0
  151. package/dist/cjs/pds-tooltip.cjs.entry.js +318 -109
  152. package/dist/cjs/pine-core.cjs.js +7 -10
  153. package/dist/cjs/reconnected-content-CpnEQcTp.js +29 -0
  154. package/dist/cjs/scroll-2XcoE_6Q.js +79 -0
  155. package/dist/cjs/truncation-tooltip-CVzAha5B.js +246 -0
  156. package/dist/cjs/utils-7jx8T2mW.js +76 -0
  157. package/dist/collection/collection-manifest.json +23 -2
  158. package/dist/collection/components/_internal/pds-label/pds-label.js +0 -1
  159. package/dist/collection/components/pds-accordion/pds-accordion.css +24 -29
  160. package/dist/collection/components/pds-accordion/pds-accordion.js +35 -8
  161. package/dist/collection/components/pds-accordion/stories/pds-accordion.stories.js +12 -18
  162. package/dist/collection/components/pds-alert/pds-alert.css +131 -0
  163. package/dist/collection/components/pds-alert/pds-alert.js +255 -0
  164. package/dist/collection/components/pds-alert/pds-alert.tokens.css +85 -0
  165. package/dist/collection/components/pds-alert/stories/pds-alert.stories.js +110 -0
  166. package/dist/collection/components/pds-avatar/pds-avatar.css +56 -23
  167. package/dist/collection/components/pds-avatar/pds-avatar.js +226 -24
  168. package/dist/collection/components/pds-avatar/stories/pds-avatar.stories.js +38 -2
  169. package/dist/collection/components/pds-box/pds-box.css +5435 -263
  170. package/dist/collection/components/pds-box/pds-box.js +2796 -231
  171. package/dist/collection/components/pds-box/stories/pds-box.stories.js +20 -6
  172. package/dist/collection/components/pds-button/pds-button.css +256 -93
  173. package/dist/collection/components/pds-button/pds-button.js +404 -39
  174. package/dist/collection/components/pds-button/stories/pds-button.stories.js +228 -16
  175. package/dist/collection/components/pds-checkbox/checkbox-interface.js +0 -1
  176. package/dist/collection/components/pds-checkbox/pds-checkbox.css +68 -58
  177. package/dist/collection/components/pds-checkbox/pds-checkbox.js +112 -46
  178. package/dist/collection/components/pds-checkbox/stories/pds-checkbox.stories.js +8 -16
  179. package/dist/collection/components/pds-chip/pds-chip.css +185 -114
  180. package/dist/collection/components/pds-chip/pds-chip.js +330 -60
  181. package/dist/collection/components/pds-chip/pds-chip.tokens.css +53 -0
  182. package/dist/collection/components/pds-chip/stories/pds-chip.stories.js +109 -24
  183. package/dist/collection/components/pds-combobox/combobox-interface.js +1 -0
  184. package/dist/collection/components/pds-combobox/pds-combobox.css +499 -0
  185. package/dist/collection/components/pds-combobox/pds-combobox.js +2347 -0
  186. package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +485 -0
  187. package/dist/collection/components/pds-container/pds-container.css +26 -0
  188. package/dist/collection/components/pds-container/pds-container.js +111 -0
  189. package/dist/collection/components/pds-container/stories/pds-container.stories.js +89 -0
  190. package/dist/collection/components/pds-copytext/pds-copytext.css +39 -51
  191. package/dist/collection/components/pds-copytext/pds-copytext.js +90 -21
  192. package/dist/collection/components/pds-copytext/stories/pds-copytext.stories.js +6 -12
  193. package/dist/collection/components/pds-divider/pds-divider.css +30 -40
  194. package/dist/collection/components/pds-divider/pds-divider.js +17 -10
  195. package/dist/collection/components/pds-divider/stories/pds-divider.stories.js +0 -2
  196. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.css +76 -0
  197. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +291 -0
  198. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.css +7 -0
  199. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +71 -0
  200. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +52 -0
  201. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +394 -0
  202. package/dist/collection/components/pds-dropdown-menu/stories/pds-dropdown-menu.stories.js +38 -0
  203. package/dist/collection/components/pds-filters/pds-filter/filter-interface.js +1 -0
  204. package/dist/collection/components/pds-filters/pds-filter/pds-filter.css +199 -0
  205. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +739 -0
  206. package/dist/collection/components/pds-filters/pds-filter/stories/pds-filter.stories.js +87 -0
  207. package/dist/collection/components/pds-filters/pds-filters.css +10 -0
  208. package/dist/collection/components/pds-filters/pds-filters.js +44 -0
  209. package/dist/collection/components/pds-filters/stories/pds-filters.stories.js +34 -0
  210. package/dist/collection/components/pds-icon/stories/pds-icon.stories.js +2 -2
  211. package/dist/collection/components/pds-image/pds-image.css +3 -2
  212. package/dist/collection/components/pds-image/pds-image.js +54 -29
  213. package/dist/collection/components/pds-image/stories/pds-image.stories.js +8 -8
  214. package/dist/collection/components/pds-input/input-interface.js +1 -0
  215. package/dist/collection/components/pds-input/pds-input.css +275 -63
  216. package/dist/collection/components/pds-input/pds-input.js +678 -56
  217. package/dist/collection/components/pds-input/pds-input.tokens.css +3 -0
  218. package/dist/collection/components/pds-input/stories/pds-input.stories.js +309 -14
  219. package/dist/collection/components/pds-link/pds-link.css +45 -30
  220. package/dist/collection/components/pds-link/pds-link.js +305 -19
  221. package/dist/collection/components/pds-link/stories/pds-link.stories.js +29 -4
  222. package/dist/collection/components/pds-loader/pds-loader.css +17 -30
  223. package/dist/collection/components/pds-loader/pds-loader.js +31 -11
  224. package/dist/collection/components/pds-loader/stories/pds-loader.stories.js +3 -5
  225. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.css +25 -0
  226. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +230 -0
  227. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.css +8 -0
  228. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +23 -0
  229. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.css +8 -0
  230. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +23 -0
  231. package/dist/collection/components/pds-modal/pds-modal.css +122 -0
  232. package/dist/collection/components/pds-modal/pds-modal.js +516 -0
  233. package/dist/collection/components/pds-modal/stories/pds-modal.stories.js +731 -0
  234. package/dist/collection/components/pds-modal/test/mock-pds-modal.js +286 -0
  235. package/dist/collection/components/pds-multiselect/multiselect-interface.js +1 -0
  236. package/dist/collection/components/pds-multiselect/pds-multiselect.css +324 -0
  237. package/dist/collection/components/pds-multiselect/pds-multiselect.js +2153 -0
  238. package/dist/collection/components/pds-multiselect/stories/pds-multiselect.stories.js +731 -0
  239. package/dist/collection/components/pds-popover/pds-popover.css +10 -0
  240. package/dist/collection/components/pds-popover/pds-popover.js +802 -0
  241. package/dist/collection/components/pds-popover/popover-interface.js +1 -0
  242. package/dist/collection/components/pds-popover/stories/pds-popover.stories.js +86 -0
  243. package/dist/collection/components/pds-progress/pds-progress.css +11 -24
  244. package/dist/collection/components/pds-progress/pds-progress.js +34 -14
  245. package/dist/collection/components/pds-progress/stories/pds-progress.stories.js +2 -4
  246. package/dist/collection/components/pds-property/pds-property.css +4 -0
  247. package/dist/collection/components/pds-property/pds-property.js +70 -0
  248. package/dist/collection/components/pds-property/stories/pds-property.stories.js +16 -0
  249. package/dist/collection/components/pds-radio/pds-radio.css +219 -54
  250. package/dist/collection/components/pds-radio/pds-radio.js +179 -51
  251. package/dist/collection/components/pds-radio/stories/pds-radio.stories.js +47 -15
  252. package/dist/collection/components/pds-radio-group/pds-radio-group.css +45 -0
  253. package/dist/collection/components/pds-radio-group/pds-radio-group.js +447 -0
  254. package/dist/collection/components/pds-radio-group/radio-group-interface.js +1 -0
  255. package/dist/collection/components/pds-radio-group/stories/pds-radio-group.stories.js +134 -0
  256. package/dist/collection/components/pds-row/pds-row.css +10 -9
  257. package/dist/collection/components/pds-row/pds-row.js +115 -26
  258. package/dist/collection/components/pds-row/stories/pds-row.stories.js +16 -14
  259. package/dist/collection/components/pds-select/pds-select.css +168 -0
  260. package/dist/collection/components/pds-select/pds-select.js +602 -0
  261. package/dist/collection/components/pds-select/pds-select.tokens.css +3 -0
  262. package/dist/collection/components/pds-select/stories/pds-select.stories.js +205 -0
  263. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.css +26 -26
  264. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +32 -7
  265. package/dist/collection/components/pds-sortable/pds-sortable-item/stories/pds-sortable-item.stories.js +0 -2
  266. package/dist/collection/components/pds-sortable/pds-sortable.css +2 -4
  267. package/dist/collection/components/pds-sortable/pds-sortable.js +77 -12
  268. package/dist/collection/components/pds-sortable/sortable-interface.js +0 -1
  269. package/dist/collection/components/pds-sortable/stories/pds-sortable.stories.js +22 -13
  270. package/dist/collection/components/pds-switch/pds-switch.css +56 -58
  271. package/dist/collection/components/pds-switch/pds-switch.js +142 -70
  272. package/dist/collection/components/pds-switch/stories/pds-switch.stories.js +11 -28
  273. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -2
  274. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.css +36 -19
  275. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +128 -13
  276. package/dist/collection/components/pds-table/pds-table-cell/stories/pds-table-cell.stories.js +22 -7
  277. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.css +22 -5
  278. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +71 -11
  279. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.css +46 -25
  280. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +236 -20
  281. package/dist/collection/components/pds-table/pds-table-head-cell/stories/pds-table-head-cell.stories.js +12 -7
  282. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.css +14 -5
  283. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +114 -13
  284. package/dist/collection/components/pds-table/pds-table-row/stories/pds-table-row.stories.js +3 -9
  285. package/dist/collection/components/pds-table/pds-table.css +98 -17
  286. package/dist/collection/components/pds-table/pds-table.js +285 -41
  287. package/dist/collection/components/pds-table/stories/pds-table.stories.js +297 -27
  288. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.css +102 -60
  289. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js +226 -18
  290. package/dist/collection/components/pds-tabs/pds-tab/stories/pds-tab.stories.js +15 -0
  291. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.css +15 -2
  292. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +53 -12
  293. package/dist/collection/components/pds-tabs/pds-tabpanel/stories/pds-tabpanel.stories.js +15 -0
  294. package/dist/collection/components/pds-tabs/pds-tabs.css +31 -11
  295. package/dist/collection/components/pds-tabs/pds-tabs.js +180 -25
  296. package/dist/collection/components/pds-tabs/stories/pds-tabs.stories.js +69 -26
  297. package/dist/collection/components/pds-text/pds-text.css +207 -0
  298. package/dist/collection/components/pds-text/pds-text.js +293 -0
  299. package/dist/collection/components/pds-text/stories/pds-text.stories.js +125 -0
  300. package/dist/collection/components/pds-textarea/pds-textarea.css +127 -57
  301. package/dist/collection/components/pds-textarea/pds-textarea.js +591 -57
  302. package/dist/collection/components/pds-textarea/stories/pds-textarea.stories.js +112 -25
  303. package/dist/collection/components/pds-textarea/textarea-interface.js +0 -1
  304. package/dist/collection/components/pds-toast/pds-toast.css +153 -0
  305. package/dist/collection/components/pds-toast/pds-toast.js +330 -0
  306. package/dist/collection/components/pds-toast/stories/pds-toast.stories.js +95 -0
  307. package/dist/collection/components/pds-tooltip/pds-tooltip.css +63 -81
  308. package/dist/collection/components/pds-tooltip/pds-tooltip.js +366 -78
  309. package/dist/collection/components/pds-tooltip/stories/pds-tooltip.stories.js +22 -24
  310. package/dist/collection/global/pine-ui-global.js +0 -1
  311. package/dist/collection/global/styles/utils/label.css +17 -0
  312. package/dist/collection/i18n/i18n-format.js +59 -0
  313. package/dist/collection/i18n/index.js +1 -0
  314. package/dist/collection/index.js +1 -1
  315. package/dist/collection/utils/attributes.js +83 -0
  316. package/dist/collection/utils/closest.js +0 -1
  317. package/dist/collection/utils/form.js +41 -8
  318. package/dist/collection/utils/interfaces.js +1 -0
  319. package/dist/collection/utils/overlay.js +66 -50
  320. package/dist/collection/utils/reconnected-content.js +25 -0
  321. package/dist/collection/utils/scroll.js +77 -0
  322. package/dist/collection/utils/test/axe.js +106 -0
  323. package/dist/collection/utils/test/reconnect-safety.js +31 -0
  324. package/dist/collection/utils/truncation-tooltip.js +241 -0
  325. package/dist/collection/utils/types.js +18 -2
  326. package/dist/collection/utils/utils.js +66 -4
  327. package/dist/docs.d.ts +45 -0
  328. package/dist/docs.json +22498 -3270
  329. package/dist/esm/attributes-C0M1gTKv.js +82 -0
  330. package/dist/esm/closest-DnUJodVd.js +9 -0
  331. package/dist/esm/floating-ui.dom-DDtwbwIl.js +1628 -0
  332. package/dist/esm/form-BuRbS7Hp.js +63 -0
  333. package/dist/esm/i18n-format-BKsJZTyn.js +61 -0
  334. package/dist/esm/index-BjlFq0VD.js +17 -0
  335. package/dist/esm/index-NNDTPCWx.js +2915 -0
  336. package/dist/esm/index.js +0 -2
  337. package/dist/esm/loader.js +3 -6
  338. package/dist/esm/mock-pds-modal.entry.js +89 -0
  339. package/dist/esm/pds-accordion.entry.js +15 -12
  340. package/dist/esm/pds-alert.entry.js +72 -0
  341. package/dist/esm/pds-avatar.entry.js +92 -23
  342. package/dist/esm/pds-box.entry.js +111 -36
  343. package/dist/esm/pds-button.entry.js +168 -22
  344. package/dist/esm/pds-checkbox.entry.js +67 -25
  345. package/dist/esm/pds-chip.entry.js +158 -22
  346. package/dist/esm/pds-combobox.entry.js +2903 -0
  347. package/dist/esm/pds-container.entry.js +34 -0
  348. package/dist/esm/pds-copytext.entry.js +72 -15
  349. package/dist/esm/pds-divider.entry.js +8 -9
  350. package/dist/esm/pds-dropdown-menu-item.entry.js +83 -0
  351. package/dist/esm/pds-dropdown-menu-separator.entry.js +20 -0
  352. package/dist/esm/pds-dropdown-menu.entry.js +316 -0
  353. package/dist/esm/pds-filter.entry.js +487 -0
  354. package/dist/esm/pds-filters.entry.js +15 -0
  355. package/dist/esm/pds-icon.entry.js +273 -38
  356. package/dist/esm/pds-image.entry.js +15 -14
  357. package/dist/esm/pds-input.entry.js +297 -25
  358. package/dist/esm/pds-link.entry.js +41 -11
  359. package/dist/esm/pds-loader.entry.js +21 -12
  360. package/dist/esm/pds-modal-content.entry.js +194 -0
  361. package/dist/esm/pds-modal-footer.entry.js +21 -0
  362. package/dist/esm/pds-modal-header.entry.js +21 -0
  363. package/dist/esm/pds-modal.entry.js +295 -0
  364. package/dist/esm/pds-multiselect.entry.js +1066 -0
  365. package/dist/esm/pds-popover.entry.js +569 -0
  366. package/dist/esm/pds-progress.entry.js +16 -10
  367. package/dist/esm/pds-property.entry.js +19 -0
  368. package/dist/esm/pds-radio-group.entry.js +191 -0
  369. package/dist/esm/pds-radio.entry.js +80 -22
  370. package/dist/esm/pds-row.entry.js +35 -15
  371. package/dist/esm/pds-select.entry.js +254 -0
  372. package/dist/esm/pds-sortable-item.entry.js +26 -9
  373. package/dist/esm/pds-sortable.entry.js +139 -115
  374. package/dist/esm/pds-switch.entry.js +79 -25
  375. package/dist/esm/pds-tab.entry.js +66 -14
  376. package/dist/esm/pds-table-body.entry.js +4 -7
  377. package/dist/esm/pds-table-cell.entry.js +107 -15
  378. package/dist/esm/pds-table-head-cell.entry.js +169 -24
  379. package/dist/esm/pds-table-head.entry.js +16 -11
  380. package/dist/esm/pds-table-row.entry.js +103 -14
  381. package/dist/esm/pds-table.entry.js +178 -20
  382. package/dist/esm/pds-tabpanel.entry.js +19 -11
  383. package/dist/esm/pds-tabs.entry.js +88 -15
  384. package/dist/esm/pds-text.entry.js +120 -0
  385. package/dist/esm/pds-textarea.entry.js +312 -28
  386. package/dist/esm/pds-toast.entry.js +143 -0
  387. package/dist/esm/pds-tooltip.entry.js +318 -107
  388. package/dist/esm/pine-core.js +5 -7
  389. package/dist/esm/reconnected-content-RFpTWV6r.js +27 -0
  390. package/dist/esm/scroll-DtgUQhjl.js +75 -0
  391. package/dist/esm/truncation-tooltip-Blk4GigP.js +244 -0
  392. package/dist/esm/utils-tJa4KYNO.js +71 -0
  393. package/dist/esm-es5/attributes-C0M1gTKv.js +1 -0
  394. package/dist/esm-es5/closest-DnUJodVd.js +1 -0
  395. package/dist/esm-es5/floating-ui.dom-DDtwbwIl.js +1 -0
  396. package/dist/esm-es5/form-BuRbS7Hp.js +1 -0
  397. package/dist/esm-es5/i18n-format-BKsJZTyn.js +1 -0
  398. package/dist/esm-es5/index-BjlFq0VD.js +1 -0
  399. package/dist/esm-es5/index-NNDTPCWx.js +2 -0
  400. package/dist/esm-es5/index.js +0 -2
  401. package/dist/esm-es5/loader.js +1 -2
  402. package/dist/esm-es5/mock-pds-modal.entry.js +1 -0
  403. package/dist/esm-es5/pds-accordion.entry.js +1 -2
  404. package/dist/esm-es5/pds-alert.entry.js +1 -0
  405. package/dist/esm-es5/pds-avatar.entry.js +1 -2
  406. package/dist/esm-es5/pds-box.entry.js +1 -2
  407. package/dist/esm-es5/pds-button.entry.js +1 -2
  408. package/dist/esm-es5/pds-checkbox.entry.js +1 -2
  409. package/dist/esm-es5/pds-chip.entry.js +1 -2
  410. package/dist/esm-es5/pds-combobox.entry.js +2 -0
  411. package/dist/esm-es5/pds-container.entry.js +1 -0
  412. package/dist/esm-es5/pds-copytext.entry.js +1 -2
  413. package/dist/esm-es5/pds-divider.entry.js +1 -2
  414. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -0
  415. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -0
  416. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -0
  417. package/dist/esm-es5/pds-filter.entry.js +1 -0
  418. package/dist/esm-es5/pds-filters.entry.js +1 -0
  419. package/dist/esm-es5/pds-icon.entry.js +1 -2
  420. package/dist/esm-es5/pds-image.entry.js +1 -2
  421. package/dist/esm-es5/pds-input.entry.js +1 -2
  422. package/dist/esm-es5/pds-link.entry.js +1 -2
  423. package/dist/esm-es5/pds-loader.entry.js +1 -2
  424. package/dist/esm-es5/pds-modal-content.entry.js +1 -0
  425. package/dist/esm-es5/pds-modal-footer.entry.js +1 -0
  426. package/dist/esm-es5/pds-modal-header.entry.js +1 -0
  427. package/dist/esm-es5/pds-modal.entry.js +1 -0
  428. package/dist/esm-es5/pds-multiselect.entry.js +1 -0
  429. package/dist/esm-es5/pds-popover.entry.js +1 -0
  430. package/dist/esm-es5/pds-progress.entry.js +1 -2
  431. package/dist/esm-es5/pds-property.entry.js +1 -0
  432. package/dist/esm-es5/pds-radio-group.entry.js +1 -0
  433. package/dist/esm-es5/pds-radio.entry.js +1 -2
  434. package/dist/esm-es5/pds-row.entry.js +1 -2
  435. package/dist/esm-es5/pds-select.entry.js +1 -0
  436. package/dist/esm-es5/pds-sortable-item.entry.js +1 -2
  437. package/dist/esm-es5/pds-sortable.entry.js +3 -4
  438. package/dist/esm-es5/pds-switch.entry.js +1 -2
  439. package/dist/esm-es5/pds-tab.entry.js +1 -2
  440. package/dist/esm-es5/pds-table-body.entry.js +1 -2
  441. package/dist/esm-es5/pds-table-cell.entry.js +1 -2
  442. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -2
  443. package/dist/esm-es5/pds-table-head.entry.js +1 -2
  444. package/dist/esm-es5/pds-table-row.entry.js +1 -2
  445. package/dist/esm-es5/pds-table.entry.js +1 -2
  446. package/dist/esm-es5/pds-tabpanel.entry.js +1 -2
  447. package/dist/esm-es5/pds-tabs.entry.js +1 -2
  448. package/dist/esm-es5/pds-text.entry.js +1 -0
  449. package/dist/esm-es5/pds-textarea.entry.js +1 -2
  450. package/dist/esm-es5/pds-toast.entry.js +1 -0
  451. package/dist/esm-es5/pds-tooltip.entry.js +1 -2
  452. package/dist/esm-es5/pine-core.js +1 -2
  453. package/dist/esm-es5/reconnected-content-RFpTWV6r.js +1 -0
  454. package/dist/esm-es5/scroll-DtgUQhjl.js +1 -0
  455. package/dist/esm-es5/truncation-tooltip-Blk4GigP.js +1 -0
  456. package/dist/esm-es5/utils-tJa4KYNO.js +1 -0
  457. package/dist/pine-core/index.esm.js +0 -2
  458. package/dist/pine-core/p-076aaa00.system.entry.js +1 -0
  459. package/dist/pine-core/p-08b0d298.entry.js +1 -0
  460. package/dist/pine-core/p-0a09ccbe.entry.js +1 -0
  461. package/dist/pine-core/p-0a4f2d5f.system.entry.js +1 -0
  462. package/dist/pine-core/p-16f13b17.entry.js +1 -0
  463. package/dist/pine-core/p-17d4a99a.system.entry.js +1 -0
  464. package/dist/pine-core/p-18ae43e3.entry.js +1 -0
  465. package/dist/pine-core/p-1b8ac76c.system.entry.js +1 -0
  466. package/dist/pine-core/p-1e87e72a.entry.js +1 -0
  467. package/dist/pine-core/p-1f20608e.system.entry.js +1 -0
  468. package/dist/pine-core/p-20e0d06c.system.entry.js +1 -0
  469. package/dist/pine-core/p-24fcf841.system.entry.js +1 -0
  470. package/dist/pine-core/p-292cf8f9.entry.js +1 -0
  471. package/dist/pine-core/p-2c5fe3d9.system.entry.js +1 -0
  472. package/dist/pine-core/p-2d1cc047.entry.js +1 -0
  473. package/dist/pine-core/p-2ec460e1.system.entry.js +1 -0
  474. package/dist/pine-core/p-2fc127b4.system.entry.js +1 -0
  475. package/dist/pine-core/p-31679dbc.system.entry.js +1 -0
  476. package/dist/pine-core/p-3170d53b.system.entry.js +1 -0
  477. package/dist/pine-core/p-36fc1ade.system.entry.js +1 -0
  478. package/dist/pine-core/p-39c6e6c9.entry.js +1 -0
  479. package/dist/pine-core/p-3cece186.system.entry.js +1 -0
  480. package/dist/pine-core/p-419e711c.entry.js +1 -0
  481. package/dist/pine-core/p-43268325.system.entry.js +1 -0
  482. package/dist/pine-core/p-43a1d9d7.entry.js +1 -0
  483. package/dist/pine-core/p-43d6ab33.system.entry.js +3 -0
  484. package/dist/pine-core/p-43ef94bc.entry.js +1 -0
  485. package/dist/pine-core/p-464ec4eb.system.entry.js +1 -0
  486. package/dist/pine-core/p-47708864.entry.js +1 -0
  487. package/dist/pine-core/p-5c7a72aa.system.entry.js +1 -0
  488. package/dist/pine-core/p-5d1228cb.entry.js +1 -0
  489. package/dist/pine-core/p-5e6e8d4e.system.entry.js +1 -0
  490. package/dist/pine-core/p-606418b7.system.entry.js +1 -0
  491. package/dist/pine-core/p-6254d112.entry.js +1 -0
  492. package/dist/pine-core/p-62f75f84.entry.js +1 -0
  493. package/dist/pine-core/p-6630f428.system.entry.js +1 -0
  494. package/dist/pine-core/p-69372e72.system.entry.js +1 -0
  495. package/dist/pine-core/p-6bc9b904.system.entry.js +1 -0
  496. package/dist/pine-core/p-6f82e8dc.system.entry.js +1 -0
  497. package/dist/pine-core/p-7153efaf.system.entry.js +1 -0
  498. package/dist/pine-core/p-73619cfc.system.entry.js +1 -0
  499. package/dist/pine-core/p-73b40545.system.entry.js +1 -0
  500. package/dist/pine-core/p-7803c5b6.system.entry.js +1 -0
  501. package/dist/pine-core/p-78cd9f97.system.entry.js +1 -0
  502. package/dist/pine-core/p-7ad6f313.entry.js +1 -0
  503. package/dist/pine-core/p-7b85115b.system.entry.js +1 -0
  504. package/dist/pine-core/p-7b97974e.system.entry.js +1 -0
  505. package/dist/pine-core/p-7bac161d.entry.js +1 -0
  506. package/dist/pine-core/p-7e065b59.entry.js +1 -0
  507. package/dist/pine-core/p-7e146a45.entry.js +1 -0
  508. package/dist/pine-core/p-8249e027.entry.js +1 -0
  509. package/dist/pine-core/p-83e8f145.entry.js +1 -0
  510. package/dist/pine-core/p-85f7428b.system.entry.js +1 -0
  511. package/dist/pine-core/p-86d12f3c.system.entry.js +1 -0
  512. package/dist/pine-core/p-8c0040c4.entry.js +1 -0
  513. package/dist/pine-core/p-8c85f53a.entry.js +1 -0
  514. package/dist/pine-core/p-8cb0eed9.entry.js +1 -0
  515. package/dist/pine-core/p-8d6fd5a7.system.entry.js +1 -0
  516. package/dist/pine-core/p-92f648ba.entry.js +1 -0
  517. package/dist/pine-core/p-9374cf48.system.entry.js +1 -0
  518. package/dist/pine-core/p-950dd70e.system.entry.js +1 -0
  519. package/dist/pine-core/p-B1rytYxP.system.js +1 -0
  520. package/dist/pine-core/p-BG6uGRQj.system.js +1 -0
  521. package/dist/pine-core/p-BKsJZTyn.js +1 -0
  522. package/dist/pine-core/p-BNSGedhN.js +1 -0
  523. package/dist/pine-core/p-BbXp4qBM.system.js +1 -0
  524. package/dist/pine-core/p-BhQhw0S3.system.js +1 -0
  525. package/dist/pine-core/p-BjlFq0VD.js +1 -0
  526. package/dist/pine-core/p-BrLs99ML.system.js +1 -0
  527. package/dist/pine-core/p-BuRbS7Hp.js +1 -0
  528. package/dist/pine-core/p-BxIzb-Wc.system.js +1 -0
  529. package/dist/pine-core/p-C0M1gTKv.js +1 -0
  530. package/dist/pine-core/p-CRCxGYgw.system.js +1 -0
  531. package/dist/pine-core/p-Cr7-rJtJ.system.js +1 -0
  532. package/dist/pine-core/p-DDtwbwIl.js +1 -0
  533. package/dist/pine-core/p-DVZjHa4_.system.js +2 -0
  534. package/dist/pine-core/p-DVra397g.system.js +1 -0
  535. package/dist/pine-core/p-DnUJodVd.js +1 -0
  536. package/dist/pine-core/p-DtgUQhjl.js +1 -0
  537. package/dist/pine-core/p-NNDTPCWx.js +2 -0
  538. package/dist/pine-core/p-RFpTWV6r.js +1 -0
  539. package/dist/pine-core/p-WYNNo1N0.system.js +1 -0
  540. package/dist/pine-core/p-YWpyar7R.system.js +1 -0
  541. package/dist/pine-core/p-a03c12a4.system.entry.js +1 -0
  542. package/dist/pine-core/p-a0edb4ad.entry.js +1 -0
  543. package/dist/pine-core/p-a8a1ae32.system.entry.js +1 -0
  544. package/dist/pine-core/p-ab0b992b.entry.js +2 -0
  545. package/dist/pine-core/p-ac2775b5.entry.js +1 -0
  546. package/dist/pine-core/p-af1e2778.entry.js +1 -0
  547. package/dist/pine-core/p-b0058cb0.entry.js +1 -0
  548. package/dist/pine-core/p-b1e5e8b1.system.entry.js +1 -0
  549. package/dist/pine-core/p-b3b44b80.entry.js +1 -0
  550. package/dist/pine-core/p-b5c760c8.system.entry.js +1 -0
  551. package/dist/pine-core/p-b6812452.system.entry.js +1 -0
  552. package/dist/pine-core/p-b759dc21.entry.js +1 -0
  553. package/dist/pine-core/p-b89583e7.system.entry.js +1 -0
  554. package/dist/pine-core/p-b8f288e8.entry.js +1 -0
  555. package/dist/pine-core/p-b9380ce8.entry.js +1 -0
  556. package/dist/pine-core/p-bf759fc0.entry.js +1 -0
  557. package/dist/pine-core/p-c2688710.entry.js +1 -0
  558. package/dist/pine-core/p-c35fe2e2.entry.js +1 -0
  559. package/dist/pine-core/p-c3748812.system.entry.js +8 -0
  560. package/dist/pine-core/p-caf73216.entry.js +1 -0
  561. package/dist/pine-core/p-cd2370d0.system.entry.js +1 -0
  562. package/dist/pine-core/p-cd407bed.system.entry.js +1 -0
  563. package/dist/pine-core/p-cf389430.system.entry.js +1 -0
  564. package/dist/pine-core/p-d12a93d6.entry.js +1 -0
  565. package/dist/pine-core/p-d281464e.entry.js +1 -0
  566. package/dist/pine-core/p-d70201bb.entry.js +1 -0
  567. package/dist/pine-core/p-d9cb26fe.system.entry.js +1 -0
  568. package/dist/pine-core/p-dc460e2d.system.entry.js +1 -0
  569. package/dist/pine-core/p-dcc4ee5e.entry.js +1 -0
  570. package/dist/pine-core/p-def5d3d3.entry.js +1 -0
  571. package/dist/pine-core/p-dfa70d20.entry.js +1 -0
  572. package/dist/pine-core/p-ebe218f8.entry.js +1 -0
  573. package/dist/pine-core/p-ec2c0e57.entry.js +7 -0
  574. package/dist/pine-core/p-eed4b552.system.entry.js +1 -0
  575. package/dist/pine-core/p-f145e018.entry.js +1 -0
  576. package/dist/pine-core/p-f6d1469d.entry.js +1 -0
  577. package/dist/pine-core/p-f7cbdb81.system.entry.js +1 -0
  578. package/dist/pine-core/p-fef6694d.entry.js +1 -0
  579. package/dist/pine-core/p-ff1e9a32.entry.js +1 -0
  580. package/dist/pine-core/p-kYMYDfJY.system.js +1 -0
  581. package/dist/pine-core/p-tJa4KYNO.js +1 -0
  582. package/dist/pine-core/pine-core.css +1 -1
  583. package/dist/pine-core/pine-core.esm.js +1 -2
  584. package/dist/pine-core/pine-core.js +1 -1
  585. package/dist/scripts/vscode-custom-data-generator.js +406 -0
  586. package/dist/scripts/vscode-settings-patcher.cjs +89 -0
  587. package/dist/types/components/pds-accordion/pds-accordion.d.ts +8 -0
  588. package/dist/types/components/pds-alert/pds-alert.d.ts +51 -0
  589. package/dist/types/components/pds-avatar/pds-avatar.d.ts +38 -0
  590. package/dist/types/components/pds-box/pds-box.d.ts +475 -14
  591. package/dist/types/components/pds-button/pds-button.d.ts +70 -12
  592. package/dist/types/components/pds-checkbox/pds-checkbox.d.ts +11 -1
  593. package/dist/types/components/pds-chip/pds-chip.d.ts +62 -13
  594. package/dist/types/components/pds-combobox/combobox-interface.d.ts +23 -0
  595. package/dist/types/components/pds-combobox/pds-combobox.d.ts +372 -0
  596. package/dist/types/components/pds-container/pds-container.d.ts +22 -0
  597. package/dist/types/components/pds-copytext/pds-copytext.d.ts +14 -4
  598. package/dist/types/components/pds-divider/pds-divider.d.ts +1 -1
  599. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.d.ts +66 -0
  600. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.d.ts +13 -0
  601. package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu.d.ts +39 -0
  602. package/dist/types/components/pds-filters/pds-filter/filter-interface.d.ts +19 -0
  603. package/dist/types/components/pds-filters/pds-filter/pds-filter.d.ts +133 -0
  604. package/dist/types/components/pds-filters/pds-filters.d.ts +11 -0
  605. package/dist/types/components/pds-image/pds-image.d.ts +7 -3
  606. package/dist/types/components/pds-input/input-interface.d.ts +12 -0
  607. package/dist/types/components/pds-input/pds-input.d.ts +163 -8
  608. package/dist/types/components/pds-link/pds-link.d.ts +73 -11
  609. package/dist/types/components/pds-loader/pds-loader.d.ts +2 -1
  610. package/dist/types/components/pds-modal/pds-modal-content/pds-modal-content.d.ts +38 -0
  611. package/dist/types/components/pds-modal/pds-modal-footer/pds-modal-footer.d.ts +5 -0
  612. package/dist/types/components/pds-modal/pds-modal-header/pds-modal-header.d.ts +5 -0
  613. package/dist/types/components/pds-modal/pds-modal.d.ts +88 -0
  614. package/dist/types/components/pds-modal/test/mock-pds-modal.d.ts +68 -0
  615. package/dist/types/components/pds-multiselect/multiselect-interface.d.ts +42 -0
  616. package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +326 -0
  617. package/dist/types/components/pds-popover/pds-popover.d.ts +179 -0
  618. package/dist/types/components/pds-popover/popover-interface.d.ts +4 -0
  619. package/dist/types/components/pds-property/pds-property.d.ts +14 -0
  620. package/dist/types/components/pds-radio/pds-radio.d.ts +30 -9
  621. package/dist/types/components/pds-radio-group/pds-radio-group.d.ts +73 -0
  622. package/dist/types/components/pds-radio-group/radio-group-interface.d.ts +5 -0
  623. package/dist/types/components/pds-row/pds-row.d.ts +10 -2
  624. package/dist/types/components/pds-select/pds-select.d.ts +146 -0
  625. package/dist/types/components/pds-sortable/pds-sortable-item/pds-sortable-item.d.ts +1 -0
  626. package/dist/types/components/pds-sortable/pds-sortable.d.ts +10 -2
  627. package/dist/types/components/pds-sortable/sortable-interface.d.ts +3 -1
  628. package/dist/types/components/pds-switch/pds-switch.d.ts +24 -19
  629. package/dist/types/components/pds-table/pds-table-cell/pds-table-cell.d.ts +26 -1
  630. package/dist/types/components/pds-table/pds-table-head/pds-table-head.d.ts +15 -2
  631. package/dist/types/components/pds-table/pds-table-head-cell/pds-table-head-cell.d.ts +52 -2
  632. package/dist/types/components/pds-table/pds-table-row/pds-table-row.d.ts +23 -4
  633. package/dist/types/components/pds-table/pds-table.d.ts +62 -10
  634. package/dist/types/components/pds-tabs/pds-tab/pds-tab.d.ts +49 -0
  635. package/dist/types/components/pds-tabs/pds-tabpanel/pds-tabpanel.d.ts +6 -0
  636. package/dist/types/components/pds-tabs/pds-tabs.d.ts +27 -3
  637. package/dist/types/components/pds-text/pds-text.d.ts +55 -0
  638. package/dist/types/components/pds-textarea/pds-textarea.d.ts +138 -15
  639. package/dist/types/components/pds-textarea/textarea-interface.d.ts +5 -1
  640. package/dist/types/components/pds-toast/pds-toast.d.ts +70 -0
  641. package/dist/types/components/pds-tooltip/pds-tooltip.d.ts +45 -19
  642. package/dist/types/components.d.ts +5585 -1191
  643. package/dist/types/home/runner/work/pine/pine/libs/core/.stencil/scripts/vscode-custom-data-generator.d.ts +6 -0
  644. package/dist/types/i18n/i18n-format.d.ts +38 -0
  645. package/dist/types/i18n/index.d.ts +2 -0
  646. package/dist/types/index.d.ts +1 -0
  647. package/dist/types/stencil-public-runtime.d.ts +195 -8
  648. package/dist/types/utils/attributes.d.ts +10 -0
  649. package/dist/types/utils/form.d.ts +23 -1
  650. package/dist/types/utils/interfaces.d.ts +6 -0
  651. package/dist/types/utils/overlay.d.ts +3 -3
  652. package/dist/types/utils/reconnected-content.d.ts +14 -0
  653. package/dist/types/utils/scroll.d.ts +21 -0
  654. package/dist/types/utils/test/axe.d.ts +81 -0
  655. package/dist/types/utils/test/reconnect-safety.d.ts +11 -0
  656. package/dist/types/utils/truncation-tooltip.d.ts +21 -0
  657. package/dist/types/utils/types.d.ts +8 -2
  658. package/dist/types/utils/utils.d.ts +14 -2
  659. package/dist/vscode.html-data.json +10937 -0
  660. package/hydrate/index.d.ts +58 -7
  661. package/hydrate/index.js +21559 -3575
  662. package/hydrate/index.mjs +21557 -3575
  663. package/package.json +47 -25
  664. package/readme.md +1 -1
  665. package/components/closest.js.map +0 -1
  666. package/components/index.js.map +0 -1
  667. package/components/index2.js.map +0 -1
  668. package/components/pds-accordion.js.map +0 -1
  669. package/components/pds-avatar.js.map +0 -1
  670. package/components/pds-box.js.map +0 -1
  671. package/components/pds-button.js.map +0 -1
  672. package/components/pds-button2.js.map +0 -1
  673. package/components/pds-checkbox.js.map +0 -1
  674. package/components/pds-checkbox2.js.map +0 -1
  675. package/components/pds-chip.js.map +0 -1
  676. package/components/pds-copytext.js.map +0 -1
  677. package/components/pds-divider.js.map +0 -1
  678. package/components/pds-icon.js.map +0 -1
  679. package/components/pds-icon2.js.map +0 -1
  680. package/components/pds-image.js.map +0 -1
  681. package/components/pds-input.js.map +0 -1
  682. package/components/pds-label.js +0 -39
  683. package/components/pds-label.js.map +0 -1
  684. package/components/pds-link.js.map +0 -1
  685. package/components/pds-loader.js.map +0 -1
  686. package/components/pds-progress.js.map +0 -1
  687. package/components/pds-radio.js.map +0 -1
  688. package/components/pds-row.js.map +0 -1
  689. package/components/pds-sortable-item.js.map +0 -1
  690. package/components/pds-sortable.js.map +0 -1
  691. package/components/pds-switch.js.map +0 -1
  692. package/components/pds-tab.js.map +0 -1
  693. package/components/pds-table-body.js.map +0 -1
  694. package/components/pds-table-cell.js.map +0 -1
  695. package/components/pds-table-cell2.js.map +0 -1
  696. package/components/pds-table-head-cell.js.map +0 -1
  697. package/components/pds-table-head-cell2.js.map +0 -1
  698. package/components/pds-table-head.js.map +0 -1
  699. package/components/pds-table-row.js.map +0 -1
  700. package/components/pds-table.js.map +0 -1
  701. package/components/pds-tabpanel.js.map +0 -1
  702. package/components/pds-tabs.js.map +0 -1
  703. package/components/pds-textarea.js.map +0 -1
  704. package/components/pds-tooltip.js.map +0 -1
  705. package/dist/cjs/app-globals-3a1e7e63.js +0 -7
  706. package/dist/cjs/app-globals-3a1e7e63.js.map +0 -1
  707. package/dist/cjs/closest-b45138d3.js +0 -13
  708. package/dist/cjs/closest-b45138d3.js.map +0 -1
  709. package/dist/cjs/index-46fb0736.js +0 -1956
  710. package/dist/cjs/index-46fb0736.js.map +0 -1
  711. package/dist/cjs/index-de3f0730.js +0 -24
  712. package/dist/cjs/index-de3f0730.js.map +0 -1
  713. package/dist/cjs/index.cjs.js.map +0 -1
  714. package/dist/cjs/loader.cjs.js.map +0 -1
  715. package/dist/cjs/pds-accordion.cjs.entry.js.map +0 -1
  716. package/dist/cjs/pds-avatar.cjs.entry.js.map +0 -1
  717. package/dist/cjs/pds-box.cjs.entry.js.map +0 -1
  718. package/dist/cjs/pds-button.cjs.entry.js.map +0 -1
  719. package/dist/cjs/pds-checkbox.cjs.entry.js.map +0 -1
  720. package/dist/cjs/pds-chip.cjs.entry.js.map +0 -1
  721. package/dist/cjs/pds-copytext.cjs.entry.js.map +0 -1
  722. package/dist/cjs/pds-divider.cjs.entry.js.map +0 -1
  723. package/dist/cjs/pds-icon.cjs.entry.js.map +0 -1
  724. package/dist/cjs/pds-image.cjs.entry.js.map +0 -1
  725. package/dist/cjs/pds-input.cjs.entry.js.map +0 -1
  726. package/dist/cjs/pds-label-7aabdc4e.js +0 -44
  727. package/dist/cjs/pds-label-7aabdc4e.js.map +0 -1
  728. package/dist/cjs/pds-link.cjs.entry.js.map +0 -1
  729. package/dist/cjs/pds-loader.cjs.entry.js.map +0 -1
  730. package/dist/cjs/pds-progress.cjs.entry.js.map +0 -1
  731. package/dist/cjs/pds-radio.cjs.entry.js.map +0 -1
  732. package/dist/cjs/pds-row.cjs.entry.js.map +0 -1
  733. package/dist/cjs/pds-sortable-item.cjs.entry.js.map +0 -1
  734. package/dist/cjs/pds-sortable.cjs.entry.js.map +0 -1
  735. package/dist/cjs/pds-switch.cjs.entry.js.map +0 -1
  736. package/dist/cjs/pds-tab.cjs.entry.js.map +0 -1
  737. package/dist/cjs/pds-table-body.cjs.entry.js.map +0 -1
  738. package/dist/cjs/pds-table-cell.cjs.entry.js.map +0 -1
  739. package/dist/cjs/pds-table-head-cell.cjs.entry.js.map +0 -1
  740. package/dist/cjs/pds-table-head.cjs.entry.js.map +0 -1
  741. package/dist/cjs/pds-table-row.cjs.entry.js.map +0 -1
  742. package/dist/cjs/pds-table.cjs.entry.js.map +0 -1
  743. package/dist/cjs/pds-tabpanel.cjs.entry.js.map +0 -1
  744. package/dist/cjs/pds-tabs.cjs.entry.js.map +0 -1
  745. package/dist/cjs/pds-textarea.cjs.entry.js.map +0 -1
  746. package/dist/cjs/pds-tooltip.cjs.entry.js.map +0 -1
  747. package/dist/cjs/pine-core.cjs.js.map +0 -1
  748. package/dist/collection/components/_internal/pds-label/pds-label.js.map +0 -1
  749. package/dist/collection/components/pds-accordion/pds-accordion.js.map +0 -1
  750. package/dist/collection/components/pds-avatar/pds-avatar.js.map +0 -1
  751. package/dist/collection/components/pds-box/pds-box.js.map +0 -1
  752. package/dist/collection/components/pds-button/pds-button.js.map +0 -1
  753. package/dist/collection/components/pds-checkbox/checkbox-interface.js.map +0 -1
  754. package/dist/collection/components/pds-checkbox/pds-checkbox.js.map +0 -1
  755. package/dist/collection/components/pds-chip/pds-chip.js.map +0 -1
  756. package/dist/collection/components/pds-copytext/pds-copytext.js.map +0 -1
  757. package/dist/collection/components/pds-divider/pds-divider.js.map +0 -1
  758. package/dist/collection/components/pds-image/pds-image.js.map +0 -1
  759. package/dist/collection/components/pds-input/pds-input.js.map +0 -1
  760. package/dist/collection/components/pds-link/pds-link.js.map +0 -1
  761. package/dist/collection/components/pds-loader/pds-loader.js.map +0 -1
  762. package/dist/collection/components/pds-progress/pds-progress.js.map +0 -1
  763. package/dist/collection/components/pds-radio/pds-radio.js.map +0 -1
  764. package/dist/collection/components/pds-row/pds-row.js.map +0 -1
  765. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js.map +0 -1
  766. package/dist/collection/components/pds-sortable/pds-sortable.js.map +0 -1
  767. package/dist/collection/components/pds-sortable/sortable-interface.js.map +0 -1
  768. package/dist/collection/components/pds-switch/pds-switch.js.map +0 -1
  769. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js.map +0 -1
  770. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js.map +0 -1
  771. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js.map +0 -1
  772. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js.map +0 -1
  773. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js.map +0 -1
  774. package/dist/collection/components/pds-table/pds-table.js.map +0 -1
  775. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js.map +0 -1
  776. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js.map +0 -1
  777. package/dist/collection/components/pds-tabs/pds-tabs.js.map +0 -1
  778. package/dist/collection/components/pds-textarea/pds-textarea.js.map +0 -1
  779. package/dist/collection/components/pds-textarea/textarea-interface.js.map +0 -1
  780. package/dist/collection/components/pds-tooltip/pds-tooltip.js.map +0 -1
  781. package/dist/collection/global/pine-ui-global.js.map +0 -1
  782. package/dist/collection/index.js.map +0 -1
  783. package/dist/collection/stories/_helpers/index.js +0 -15
  784. package/dist/collection/stories/_helpers/index.js.map +0 -1
  785. package/dist/collection/utils/closest.js.map +0 -1
  786. package/dist/collection/utils/form.js.map +0 -1
  787. package/dist/collection/utils/overlay.js.map +0 -1
  788. package/dist/collection/utils/types.js.map +0 -1
  789. package/dist/collection/utils/utils.js.map +0 -1
  790. package/dist/esm/app-globals-0f993ce5.js +0 -5
  791. package/dist/esm/app-globals-0f993ce5.js.map +0 -1
  792. package/dist/esm/closest-d2d192be.js +0 -11
  793. package/dist/esm/closest-d2d192be.js.map +0 -1
  794. package/dist/esm/index-2a33b470.js +0 -1927
  795. package/dist/esm/index-2a33b470.js.map +0 -1
  796. package/dist/esm/index-a1e2f9af.js +0 -14
  797. package/dist/esm/index-a1e2f9af.js.map +0 -1
  798. package/dist/esm/index.js.map +0 -1
  799. package/dist/esm/loader.js.map +0 -1
  800. package/dist/esm/pds-accordion.entry.js.map +0 -1
  801. package/dist/esm/pds-avatar.entry.js.map +0 -1
  802. package/dist/esm/pds-box.entry.js.map +0 -1
  803. package/dist/esm/pds-button.entry.js.map +0 -1
  804. package/dist/esm/pds-checkbox.entry.js.map +0 -1
  805. package/dist/esm/pds-chip.entry.js.map +0 -1
  806. package/dist/esm/pds-copytext.entry.js.map +0 -1
  807. package/dist/esm/pds-divider.entry.js.map +0 -1
  808. package/dist/esm/pds-icon.entry.js.map +0 -1
  809. package/dist/esm/pds-image.entry.js.map +0 -1
  810. package/dist/esm/pds-input.entry.js.map +0 -1
  811. package/dist/esm/pds-label-31a5848b.js +0 -39
  812. package/dist/esm/pds-label-31a5848b.js.map +0 -1
  813. package/dist/esm/pds-link.entry.js.map +0 -1
  814. package/dist/esm/pds-loader.entry.js.map +0 -1
  815. package/dist/esm/pds-progress.entry.js.map +0 -1
  816. package/dist/esm/pds-radio.entry.js.map +0 -1
  817. package/dist/esm/pds-row.entry.js.map +0 -1
  818. package/dist/esm/pds-sortable-item.entry.js.map +0 -1
  819. package/dist/esm/pds-sortable.entry.js.map +0 -1
  820. package/dist/esm/pds-switch.entry.js.map +0 -1
  821. package/dist/esm/pds-tab.entry.js.map +0 -1
  822. package/dist/esm/pds-table-body.entry.js.map +0 -1
  823. package/dist/esm/pds-table-cell.entry.js.map +0 -1
  824. package/dist/esm/pds-table-head-cell.entry.js.map +0 -1
  825. package/dist/esm/pds-table-head.entry.js.map +0 -1
  826. package/dist/esm/pds-table-row.entry.js.map +0 -1
  827. package/dist/esm/pds-table.entry.js.map +0 -1
  828. package/dist/esm/pds-tabpanel.entry.js.map +0 -1
  829. package/dist/esm/pds-tabs.entry.js.map +0 -1
  830. package/dist/esm/pds-textarea.entry.js.map +0 -1
  831. package/dist/esm/pds-tooltip.entry.js.map +0 -1
  832. package/dist/esm/pine-core.js.map +0 -1
  833. package/dist/esm-es5/app-globals-0f993ce5.js +0 -2
  834. package/dist/esm-es5/app-globals-0f993ce5.js.map +0 -1
  835. package/dist/esm-es5/closest-d2d192be.js +0 -2
  836. package/dist/esm-es5/closest-d2d192be.js.map +0 -1
  837. package/dist/esm-es5/index-2a33b470.js +0 -3
  838. package/dist/esm-es5/index-2a33b470.js.map +0 -1
  839. package/dist/esm-es5/index-a1e2f9af.js +0 -2
  840. package/dist/esm-es5/index-a1e2f9af.js.map +0 -1
  841. package/dist/esm-es5/index.js.map +0 -1
  842. package/dist/esm-es5/loader.js.map +0 -1
  843. package/dist/esm-es5/pds-accordion.entry.js.map +0 -1
  844. package/dist/esm-es5/pds-avatar.entry.js.map +0 -1
  845. package/dist/esm-es5/pds-box.entry.js.map +0 -1
  846. package/dist/esm-es5/pds-button.entry.js.map +0 -1
  847. package/dist/esm-es5/pds-checkbox.entry.js.map +0 -1
  848. package/dist/esm-es5/pds-chip.entry.js.map +0 -1
  849. package/dist/esm-es5/pds-copytext.entry.js.map +0 -1
  850. package/dist/esm-es5/pds-divider.entry.js.map +0 -1
  851. package/dist/esm-es5/pds-icon.entry.js.map +0 -1
  852. package/dist/esm-es5/pds-image.entry.js.map +0 -1
  853. package/dist/esm-es5/pds-input.entry.js.map +0 -1
  854. package/dist/esm-es5/pds-label-31a5848b.js +0 -2
  855. package/dist/esm-es5/pds-label-31a5848b.js.map +0 -1
  856. package/dist/esm-es5/pds-link.entry.js.map +0 -1
  857. package/dist/esm-es5/pds-loader.entry.js.map +0 -1
  858. package/dist/esm-es5/pds-progress.entry.js.map +0 -1
  859. package/dist/esm-es5/pds-radio.entry.js.map +0 -1
  860. package/dist/esm-es5/pds-row.entry.js.map +0 -1
  861. package/dist/esm-es5/pds-sortable-item.entry.js.map +0 -1
  862. package/dist/esm-es5/pds-sortable.entry.js.map +0 -1
  863. package/dist/esm-es5/pds-switch.entry.js.map +0 -1
  864. package/dist/esm-es5/pds-tab.entry.js.map +0 -1
  865. package/dist/esm-es5/pds-table-body.entry.js.map +0 -1
  866. package/dist/esm-es5/pds-table-cell.entry.js.map +0 -1
  867. package/dist/esm-es5/pds-table-head-cell.entry.js.map +0 -1
  868. package/dist/esm-es5/pds-table-head.entry.js.map +0 -1
  869. package/dist/esm-es5/pds-table-row.entry.js.map +0 -1
  870. package/dist/esm-es5/pds-table.entry.js.map +0 -1
  871. package/dist/esm-es5/pds-tabpanel.entry.js.map +0 -1
  872. package/dist/esm-es5/pds-tabs.entry.js.map +0 -1
  873. package/dist/esm-es5/pds-textarea.entry.js.map +0 -1
  874. package/dist/esm-es5/pds-tooltip.entry.js.map +0 -1
  875. package/dist/esm-es5/pine-core.js.map +0 -1
  876. package/dist/pine-core/index.esm.js.map +0 -1
  877. package/dist/pine-core/p-06c33261.system.entry.js +0 -2
  878. package/dist/pine-core/p-06c33261.system.entry.js.map +0 -1
  879. package/dist/pine-core/p-07f80cb6.entry.js +0 -2
  880. package/dist/pine-core/p-07f80cb6.entry.js.map +0 -1
  881. package/dist/pine-core/p-09b1c7f1.system.entry.js +0 -2
  882. package/dist/pine-core/p-09b1c7f1.system.entry.js.map +0 -1
  883. package/dist/pine-core/p-0a4b1ce9.system.entry.js +0 -2
  884. package/dist/pine-core/p-0a4b1ce9.system.entry.js.map +0 -1
  885. package/dist/pine-core/p-0b541f88.js +0 -3
  886. package/dist/pine-core/p-0b541f88.js.map +0 -1
  887. package/dist/pine-core/p-0b77685e.js +0 -2
  888. package/dist/pine-core/p-0b77685e.js.map +0 -1
  889. package/dist/pine-core/p-0d6fafef.system.entry.js +0 -2
  890. package/dist/pine-core/p-0d6fafef.system.entry.js.map +0 -1
  891. package/dist/pine-core/p-0e1c0d03.entry.js +0 -8
  892. package/dist/pine-core/p-0e1c0d03.entry.js.map +0 -1
  893. package/dist/pine-core/p-0e936138.entry.js +0 -2
  894. package/dist/pine-core/p-0e936138.entry.js.map +0 -1
  895. package/dist/pine-core/p-143795e5.system.entry.js +0 -2
  896. package/dist/pine-core/p-143795e5.system.entry.js.map +0 -1
  897. package/dist/pine-core/p-1f2b0be3.system.entry.js +0 -2
  898. package/dist/pine-core/p-1f2b0be3.system.entry.js.map +0 -1
  899. package/dist/pine-core/p-224a435b.system.js +0 -2
  900. package/dist/pine-core/p-224a435b.system.js.map +0 -1
  901. package/dist/pine-core/p-31056348.system.entry.js +0 -2
  902. package/dist/pine-core/p-31056348.system.entry.js.map +0 -1
  903. package/dist/pine-core/p-32498622.system.entry.js +0 -2
  904. package/dist/pine-core/p-32498622.system.entry.js.map +0 -1
  905. package/dist/pine-core/p-3261fdf5.system.entry.js +0 -2
  906. package/dist/pine-core/p-3261fdf5.system.entry.js.map +0 -1
  907. package/dist/pine-core/p-32e41e3d.system.entry.js +0 -2
  908. package/dist/pine-core/p-32e41e3d.system.entry.js.map +0 -1
  909. package/dist/pine-core/p-34631565.system.js +0 -2
  910. package/dist/pine-core/p-34631565.system.js.map +0 -1
  911. package/dist/pine-core/p-3aa152c6.entry.js +0 -2
  912. package/dist/pine-core/p-3aa152c6.entry.js.map +0 -1
  913. package/dist/pine-core/p-3ba3d44c.entry.js +0 -2
  914. package/dist/pine-core/p-3ba3d44c.entry.js.map +0 -1
  915. package/dist/pine-core/p-46161cec.entry.js +0 -2
  916. package/dist/pine-core/p-46161cec.entry.js.map +0 -1
  917. package/dist/pine-core/p-4f69a7b7.entry.js +0 -2
  918. package/dist/pine-core/p-4f69a7b7.entry.js.map +0 -1
  919. package/dist/pine-core/p-50a23474.entry.js +0 -2
  920. package/dist/pine-core/p-50a23474.entry.js.map +0 -1
  921. package/dist/pine-core/p-511bf308.entry.js +0 -2
  922. package/dist/pine-core/p-511bf308.entry.js.map +0 -1
  923. package/dist/pine-core/p-52515d64.system.entry.js +0 -2
  924. package/dist/pine-core/p-52515d64.system.entry.js.map +0 -1
  925. package/dist/pine-core/p-56ba5cbf.system.js +0 -2
  926. package/dist/pine-core/p-56ba5cbf.system.js.map +0 -1
  927. package/dist/pine-core/p-5a384517.entry.js +0 -2
  928. package/dist/pine-core/p-5a384517.entry.js.map +0 -1
  929. package/dist/pine-core/p-5bee6677.system.entry.js +0 -2
  930. package/dist/pine-core/p-5bee6677.system.entry.js.map +0 -1
  931. package/dist/pine-core/p-5df76e04.system.js +0 -2
  932. package/dist/pine-core/p-5df76e04.system.js.map +0 -1
  933. package/dist/pine-core/p-62ec9a0f.system.entry.js +0 -2
  934. package/dist/pine-core/p-62ec9a0f.system.entry.js.map +0 -1
  935. package/dist/pine-core/p-6a7a864f.entry.js +0 -2
  936. package/dist/pine-core/p-6a7a864f.entry.js.map +0 -1
  937. package/dist/pine-core/p-6ae2f0f5.entry.js +0 -2
  938. package/dist/pine-core/p-6ae2f0f5.entry.js.map +0 -1
  939. package/dist/pine-core/p-6d9edf7d.system.entry.js +0 -2
  940. package/dist/pine-core/p-6d9edf7d.system.entry.js.map +0 -1
  941. package/dist/pine-core/p-6e146962.entry.js +0 -2
  942. package/dist/pine-core/p-6e146962.entry.js.map +0 -1
  943. package/dist/pine-core/p-6ff9ebfa.entry.js +0 -2
  944. package/dist/pine-core/p-6ff9ebfa.entry.js.map +0 -1
  945. package/dist/pine-core/p-701ba882.entry.js +0 -2
  946. package/dist/pine-core/p-701ba882.entry.js.map +0 -1
  947. package/dist/pine-core/p-73eb1722.entry.js +0 -2
  948. package/dist/pine-core/p-73eb1722.entry.js.map +0 -1
  949. package/dist/pine-core/p-78c6c37a.system.entry.js +0 -2
  950. package/dist/pine-core/p-78c6c37a.system.entry.js.map +0 -1
  951. package/dist/pine-core/p-79ca4ab9.system.entry.js +0 -2
  952. package/dist/pine-core/p-79ca4ab9.system.entry.js.map +0 -1
  953. package/dist/pine-core/p-7c33a02e.entry.js +0 -2
  954. package/dist/pine-core/p-7c33a02e.entry.js.map +0 -1
  955. package/dist/pine-core/p-7dac515e.system.entry.js +0 -2
  956. package/dist/pine-core/p-7dac515e.system.entry.js.map +0 -1
  957. package/dist/pine-core/p-7ea6838b.system.entry.js +0 -2
  958. package/dist/pine-core/p-7ea6838b.system.entry.js.map +0 -1
  959. package/dist/pine-core/p-7ebfdef4.system.entry.js +0 -2
  960. package/dist/pine-core/p-7ebfdef4.system.entry.js.map +0 -1
  961. package/dist/pine-core/p-829777e4.system.entry.js +0 -2
  962. package/dist/pine-core/p-829777e4.system.entry.js.map +0 -1
  963. package/dist/pine-core/p-8317c6c2.js +0 -2
  964. package/dist/pine-core/p-8317c6c2.js.map +0 -1
  965. package/dist/pine-core/p-8469b65a.entry.js +0 -2
  966. package/dist/pine-core/p-8469b65a.entry.js.map +0 -1
  967. package/dist/pine-core/p-8d8de5fd.entry.js +0 -2
  968. package/dist/pine-core/p-8d8de5fd.entry.js.map +0 -1
  969. package/dist/pine-core/p-8df8debd.entry.js +0 -2
  970. package/dist/pine-core/p-8df8debd.entry.js.map +0 -1
  971. package/dist/pine-core/p-8f73bf14.system.entry.js +0 -2
  972. package/dist/pine-core/p-8f73bf14.system.entry.js.map +0 -1
  973. package/dist/pine-core/p-8fbec4fe.system.js +0 -2
  974. package/dist/pine-core/p-8fbec4fe.system.js.map +0 -1
  975. package/dist/pine-core/p-909b305c.system.entry.js +0 -2
  976. package/dist/pine-core/p-909b305c.system.entry.js.map +0 -1
  977. package/dist/pine-core/p-936d96ec.system.entry.js +0 -9
  978. package/dist/pine-core/p-936d96ec.system.entry.js.map +0 -1
  979. package/dist/pine-core/p-9583e6d5.entry.js +0 -2
  980. package/dist/pine-core/p-9583e6d5.entry.js.map +0 -1
  981. package/dist/pine-core/p-96c750d1.entry.js +0 -2
  982. package/dist/pine-core/p-96c750d1.entry.js.map +0 -1
  983. package/dist/pine-core/p-a03e587c.entry.js +0 -2
  984. package/dist/pine-core/p-a03e587c.entry.js.map +0 -1
  985. package/dist/pine-core/p-a79a8159.entry.js +0 -2
  986. package/dist/pine-core/p-a79a8159.entry.js.map +0 -1
  987. package/dist/pine-core/p-a962fe8e.entry.js +0 -2
  988. package/dist/pine-core/p-a962fe8e.entry.js.map +0 -1
  989. package/dist/pine-core/p-ad4238c9.system.entry.js +0 -2
  990. package/dist/pine-core/p-ad4238c9.system.entry.js.map +0 -1
  991. package/dist/pine-core/p-af7df3c2.system.entry.js +0 -2
  992. package/dist/pine-core/p-af7df3c2.system.entry.js.map +0 -1
  993. package/dist/pine-core/p-b18b20f4.system.js +0 -2
  994. package/dist/pine-core/p-b18b20f4.system.js.map +0 -1
  995. package/dist/pine-core/p-b4518566.entry.js +0 -2
  996. package/dist/pine-core/p-b4518566.entry.js.map +0 -1
  997. package/dist/pine-core/p-b5c7e02a.entry.js +0 -2
  998. package/dist/pine-core/p-b5c7e02a.entry.js.map +0 -1
  999. package/dist/pine-core/p-bc20946b.system.entry.js +0 -2
  1000. package/dist/pine-core/p-bc20946b.system.entry.js.map +0 -1
  1001. package/dist/pine-core/p-c52d0465.system.entry.js +0 -2
  1002. package/dist/pine-core/p-c52d0465.system.entry.js.map +0 -1
  1003. package/dist/pine-core/p-c84cc2f8.system.entry.js +0 -2
  1004. package/dist/pine-core/p-c84cc2f8.system.entry.js.map +0 -1
  1005. package/dist/pine-core/p-ca239d59.system.entry.js +0 -2
  1006. package/dist/pine-core/p-ca239d59.system.entry.js.map +0 -1
  1007. package/dist/pine-core/p-e1255160.js +0 -2
  1008. package/dist/pine-core/p-e1255160.js.map +0 -1
  1009. package/dist/pine-core/p-e4b3115c.entry.js +0 -2
  1010. package/dist/pine-core/p-e4b3115c.entry.js.map +0 -1
  1011. package/dist/pine-core/p-e60fccc0.js +0 -2
  1012. package/dist/pine-core/p-e60fccc0.js.map +0 -1
  1013. package/dist/pine-core/p-eb56f262.system.entry.js +0 -2
  1014. package/dist/pine-core/p-eb56f262.system.entry.js.map +0 -1
  1015. package/dist/pine-core/p-ec484bf6.entry.js +0 -2
  1016. package/dist/pine-core/p-ec484bf6.entry.js.map +0 -1
  1017. package/dist/pine-core/p-f59d4a46.entry.js +0 -2
  1018. package/dist/pine-core/p-f59d4a46.entry.js.map +0 -1
  1019. package/dist/pine-core/p-f74c489d.system.js +0 -3
  1020. package/dist/pine-core/p-f74c489d.system.js.map +0 -1
  1021. package/dist/pine-core/pine-core.esm.js.map +0 -1
  1022. package/dist/pine-core/svg/access-key.svg +0 -1
  1023. package/dist/pine-core/svg/add-circle.svg +0 -1
  1024. package/dist/pine-core/svg/add-image.svg +0 -1
  1025. package/dist/pine-core/svg/add-small.svg +0 -1
  1026. package/dist/pine-core/svg/add-square.svg +0 -1
  1027. package/dist/pine-core/svg/add.svg +0 -1
  1028. package/dist/pine-core/svg/advanced.svg +0 -1
  1029. package/dist/pine-core/svg/ai-sparkle.svg +0 -1
  1030. package/dist/pine-core/svg/ai-writer-filled.svg +0 -1
  1031. package/dist/pine-core/svg/ai-writer.svg +0 -1
  1032. package/dist/pine-core/svg/align-center.svg +0 -1
  1033. package/dist/pine-core/svg/align-justify.svg +0 -1
  1034. package/dist/pine-core/svg/align-left.svg +0 -1
  1035. package/dist/pine-core/svg/align-right.svg +0 -1
  1036. package/dist/pine-core/svg/app-store.svg +0 -1
  1037. package/dist/pine-core/svg/archive.svg +0 -1
  1038. package/dist/pine-core/svg/arrow-corner.svg +0 -1
  1039. package/dist/pine-core/svg/arrow-down.svg +0 -1
  1040. package/dist/pine-core/svg/arrow-left.svg +0 -1
  1041. package/dist/pine-core/svg/arrow-right.svg +0 -1
  1042. package/dist/pine-core/svg/arrow-up.svg +0 -1
  1043. package/dist/pine-core/svg/assessment.svg +0 -1
  1044. package/dist/pine-core/svg/at-sign.svg +0 -1
  1045. package/dist/pine-core/svg/attach.svg +0 -1
  1046. package/dist/pine-core/svg/automations.svg +0 -1
  1047. package/dist/pine-core/svg/ban.svg +0 -1
  1048. package/dist/pine-core/svg/bank.svg +0 -1
  1049. package/dist/pine-core/svg/bar-chart-10-tone.svg +0 -1
  1050. package/dist/pine-core/svg/bell-01-tone.svg +0 -1
  1051. package/dist/pine-core/svg/bell.svg +0 -1
  1052. package/dist/pine-core/svg/block.svg +0 -1
  1053. package/dist/pine-core/svg/blog-filled.svg +0 -1
  1054. package/dist/pine-core/svg/blog.svg +0 -1
  1055. package/dist/pine-core/svg/bold.svg +0 -1
  1056. package/dist/pine-core/svg/broadcast.svg +0 -1
  1057. package/dist/pine-core/svg/bulb.svg +0 -1
  1058. package/dist/pine-core/svg/button.svg +0 -1
  1059. package/dist/pine-core/svg/calendar-date.svg +0 -1
  1060. package/dist/pine-core/svg/calendar-schedule.svg +0 -1
  1061. package/dist/pine-core/svg/calendar-simple.svg +0 -1
  1062. package/dist/pine-core/svg/card-amex.svg +0 -1
  1063. package/dist/pine-core/svg/card-android.svg +0 -1
  1064. package/dist/pine-core/svg/card-apple.svg +0 -1
  1065. package/dist/pine-core/svg/card-diners-club.svg +0 -1
  1066. package/dist/pine-core/svg/card-discover.svg +0 -1
  1067. package/dist/pine-core/svg/card-generic.svg +0 -1
  1068. package/dist/pine-core/svg/card-gpay.svg +0 -1
  1069. package/dist/pine-core/svg/card-mastercard.svg +0 -1
  1070. package/dist/pine-core/svg/card-paypal.svg +0 -1
  1071. package/dist/pine-core/svg/card-stripe.svg +0 -1
  1072. package/dist/pine-core/svg/card-update.svg +0 -1
  1073. package/dist/pine-core/svg/card-visa.svg +0 -1
  1074. package/dist/pine-core/svg/caret-down.svg +0 -1
  1075. package/dist/pine-core/svg/caret-left.svg +0 -1
  1076. package/dist/pine-core/svg/caret-right.svg +0 -1
  1077. package/dist/pine-core/svg/caret-up.svg +0 -1
  1078. package/dist/pine-core/svg/cart-add.svg +0 -1
  1079. package/dist/pine-core/svg/cart.svg +0 -1
  1080. package/dist/pine-core/svg/certificate.svg +0 -1
  1081. package/dist/pine-core/svg/chart-filled.svg +0 -1
  1082. package/dist/pine-core/svg/chart.svg +0 -1
  1083. package/dist/pine-core/svg/check-circle-filled.svg +0 -1
  1084. package/dist/pine-core/svg/check-circle.svg +0 -1
  1085. package/dist/pine-core/svg/check.svg +0 -1
  1086. package/dist/pine-core/svg/circle-1.svg +0 -1
  1087. package/dist/pine-core/svg/circle-2.svg +0 -1
  1088. package/dist/pine-core/svg/circle-3.svg +0 -1
  1089. package/dist/pine-core/svg/circle-4.svg +0 -1
  1090. package/dist/pine-core/svg/circle-5.svg +0 -1
  1091. package/dist/pine-core/svg/circle-6.svg +0 -1
  1092. package/dist/pine-core/svg/circle-7.svg +0 -1
  1093. package/dist/pine-core/svg/circle-8.svg +0 -1
  1094. package/dist/pine-core/svg/circle-9.svg +0 -1
  1095. package/dist/pine-core/svg/circle-a.svg +0 -1
  1096. package/dist/pine-core/svg/circle-b.svg +0 -1
  1097. package/dist/pine-core/svg/circle-dashed.svg +0 -1
  1098. package/dist/pine-core/svg/clapperboard-tone.svg +0 -1
  1099. package/dist/pine-core/svg/clock.svg +0 -1
  1100. package/dist/pine-core/svg/closed-captions.svg +0 -1
  1101. package/dist/pine-core/svg/cloud-upload.svg +0 -1
  1102. package/dist/pine-core/svg/code-block.svg +0 -1
  1103. package/dist/pine-core/svg/code.svg +0 -1
  1104. package/dist/pine-core/svg/color.svg +0 -1
  1105. package/dist/pine-core/svg/columns.svg +0 -1
  1106. package/dist/pine-core/svg/comment-no.svg +0 -1
  1107. package/dist/pine-core/svg/comment.svg +0 -1
  1108. package/dist/pine-core/svg/connect.svg +0 -1
  1109. package/dist/pine-core/svg/contact.svg +0 -1
  1110. package/dist/pine-core/svg/conversation.svg +0 -1
  1111. package/dist/pine-core/svg/copy.svg +0 -1
  1112. package/dist/pine-core/svg/coupon.svg +0 -1
  1113. package/dist/pine-core/svg/course-filled.svg +0 -1
  1114. package/dist/pine-core/svg/course.svg +0 -1
  1115. package/dist/pine-core/svg/creator-studio-filled.svg +0 -1
  1116. package/dist/pine-core/svg/creator-studio.svg +0 -1
  1117. package/dist/pine-core/svg/credit-card-02-tone.svg +0 -1
  1118. package/dist/pine-core/svg/cube-01-tone.svg +0 -1
  1119. package/dist/pine-core/svg/cursor-pointer.svg +0 -1
  1120. package/dist/pine-core/svg/cursor.svg +0 -1
  1121. package/dist/pine-core/svg/custom-field.svg +0 -1
  1122. package/dist/pine-core/svg/customize.svg +0 -1
  1123. package/dist/pine-core/svg/danger-filled.svg +0 -1
  1124. package/dist/pine-core/svg/danger.svg +0 -1
  1125. package/dist/pine-core/svg/delete-circle.svg +0 -1
  1126. package/dist/pine-core/svg/delete-key.svg +0 -1
  1127. package/dist/pine-core/svg/delete-x.svg +0 -1
  1128. package/dist/pine-core/svg/dollar.svg +0 -1
  1129. package/dist/pine-core/svg/dot-menu-horizontal.svg +0 -1
  1130. package/dist/pine-core/svg/dots-horizontal-tone.svg +0 -1
  1131. package/dist/pine-core/svg/down-small.svg +0 -1
  1132. package/dist/pine-core/svg/download.svg +0 -1
  1133. package/dist/pine-core/svg/downsell.svg +0 -1
  1134. package/dist/pine-core/svg/draft.svg +0 -1
  1135. package/dist/pine-core/svg/drawer-collapse.svg +0 -1
  1136. package/dist/pine-core/svg/drawer-expand.svg +0 -1
  1137. package/dist/pine-core/svg/drop.svg +0 -1
  1138. package/dist/pine-core/svg/duplicate.svg +0 -1
  1139. package/dist/pine-core/svg/editor-filled.svg +0 -1
  1140. package/dist/pine-core/svg/editor.svg +0 -1
  1141. package/dist/pine-core/svg/email-activity.svg +0 -1
  1142. package/dist/pine-core/svg/emoji.svg +0 -1
  1143. package/dist/pine-core/svg/enlarge-vertical.svg +0 -1
  1144. package/dist/pine-core/svg/enlarge.svg +0 -1
  1145. package/dist/pine-core/svg/expand.svg +0 -1
  1146. package/dist/pine-core/svg/favorite.svg +0 -1
  1147. package/dist/pine-core/svg/feedback.svg +0 -1
  1148. package/dist/pine-core/svg/file-02.svg +0 -1
  1149. package/dist/pine-core/svg/file-money.svg +0 -1
  1150. package/dist/pine-core/svg/file.svg +0 -1
  1151. package/dist/pine-core/svg/filter.svg +0 -1
  1152. package/dist/pine-core/svg/flag.svg +0 -1
  1153. package/dist/pine-core/svg/flash-filled.svg +0 -1
  1154. package/dist/pine-core/svg/flash.svg +0 -1
  1155. package/dist/pine-core/svg/floppy-disk.svg +0 -1
  1156. package/dist/pine-core/svg/folder-group.svg +0 -1
  1157. package/dist/pine-core/svg/folder.svg +0 -1
  1158. package/dist/pine-core/svg/form-field.svg +0 -1
  1159. package/dist/pine-core/svg/form-filled.svg +0 -1
  1160. package/dist/pine-core/svg/form.svg +0 -1
  1161. package/dist/pine-core/svg/fullscreen.svg +0 -1
  1162. package/dist/pine-core/svg/funnel.svg +0 -1
  1163. package/dist/pine-core/svg/gear-filled.svg +0 -1
  1164. package/dist/pine-core/svg/gear.svg +0 -1
  1165. package/dist/pine-core/svg/grant-offer.svg +0 -1
  1166. package/dist/pine-core/svg/handle-2-vertical.svg +0 -1
  1167. package/dist/pine-core/svg/handle-2.svg +0 -1
  1168. package/dist/pine-core/svg/handle.svg +0 -1
  1169. package/dist/pine-core/svg/hashtag.svg +0 -1
  1170. package/dist/pine-core/svg/hd-video.svg +0 -1
  1171. package/dist/pine-core/svg/heading-1.svg +0 -1
  1172. package/dist/pine-core/svg/heading-2.svg +0 -1
  1173. package/dist/pine-core/svg/heading-3.svg +0 -1
  1174. package/dist/pine-core/svg/heading-4.svg +0 -1
  1175. package/dist/pine-core/svg/heading-5.svg +0 -1
  1176. package/dist/pine-core/svg/heading-6.svg +0 -1
  1177. package/dist/pine-core/svg/heading-large.svg +0 -1
  1178. package/dist/pine-core/svg/heading-small.svg +0 -1
  1179. package/dist/pine-core/svg/headset-tone.svg +0 -1
  1180. package/dist/pine-core/svg/headset.svg +0 -1
  1181. package/dist/pine-core/svg/help-filled.svg +0 -1
  1182. package/dist/pine-core/svg/help.svg +0 -1
  1183. package/dist/pine-core/svg/home-02-tone.svg +0 -1
  1184. package/dist/pine-core/svg/home-alt.svg +0 -1
  1185. package/dist/pine-core/svg/home-filled.svg +0 -1
  1186. package/dist/pine-core/svg/home.svg +0 -1
  1187. package/dist/pine-core/svg/horizontal-line.svg +0 -1
  1188. package/dist/pine-core/svg/image.svg +0 -1
  1189. package/dist/pine-core/svg/info-circle-filled.svg +0 -1
  1190. package/dist/pine-core/svg/info-circle.svg +0 -1
  1191. package/dist/pine-core/svg/ios-battery.svg +0 -1
  1192. package/dist/pine-core/svg/ios-data.svg +0 -1
  1193. package/dist/pine-core/svg/ios-wifi.svg +0 -1
  1194. package/dist/pine-core/svg/italic.svg +0 -1
  1195. package/dist/pine-core/svg/kajabi-filled.svg +0 -1
  1196. package/dist/pine-core/svg/kajabi.svg +0 -1
  1197. package/dist/pine-core/svg/klarna.svg +0 -1
  1198. package/dist/pine-core/svg/lab.svg +0 -1
  1199. package/dist/pine-core/svg/launch.svg +0 -1
  1200. package/dist/pine-core/svg/layout-grid.svg +0 -1
  1201. package/dist/pine-core/svg/layout-list.svg +0 -1
  1202. package/dist/pine-core/svg/left-small.svg +0 -1
  1203. package/dist/pine-core/svg/list-bullet.svg +0 -1
  1204. package/dist/pine-core/svg/list-details.svg +0 -1
  1205. package/dist/pine-core/svg/list-numbers.svg +0 -1
  1206. package/dist/pine-core/svg/location.svg +0 -1
  1207. package/dist/pine-core/svg/lock-alt.svg +0 -1
  1208. package/dist/pine-core/svg/lock.svg +0 -1
  1209. package/dist/pine-core/svg/logo-afterpay.svg +0 -1
  1210. package/dist/pine-core/svg/logo-facebook-round.svg +0 -1
  1211. package/dist/pine-core/svg/logo-facebook.svg +0 -1
  1212. package/dist/pine-core/svg/logo-instagram.svg +0 -1
  1213. package/dist/pine-core/svg/logo-linkedin.svg +0 -1
  1214. package/dist/pine-core/svg/logo-tiktok.svg +0 -1
  1215. package/dist/pine-core/svg/logo-twitter-x.svg +0 -1
  1216. package/dist/pine-core/svg/logo-twitter.svg +0 -1
  1217. package/dist/pine-core/svg/logo-youtube.svg +0 -1
  1218. package/dist/pine-core/svg/loop.svg +0 -1
  1219. package/dist/pine-core/svg/mail-01-tone.svg +0 -1
  1220. package/dist/pine-core/svg/mail-filled.svg +0 -1
  1221. package/dist/pine-core/svg/mail-open.svg +0 -1
  1222. package/dist/pine-core/svg/mail.svg +0 -1
  1223. package/dist/pine-core/svg/map.svg +0 -1
  1224. package/dist/pine-core/svg/mapped.svg +0 -1
  1225. package/dist/pine-core/svg/margin-left.svg +0 -1
  1226. package/dist/pine-core/svg/margin-right.svg +0 -1
  1227. package/dist/pine-core/svg/marker-filled.svg +0 -1
  1228. package/dist/pine-core/svg/marker.svg +0 -1
  1229. package/dist/pine-core/svg/megaphone-filled.svg +0 -1
  1230. package/dist/pine-core/svg/megaphone.svg +0 -1
  1231. package/dist/pine-core/svg/menu-alt.svg +0 -1
  1232. package/dist/pine-core/svg/menu-bordered.svg +0 -1
  1233. package/dist/pine-core/svg/menu.svg +0 -1
  1234. package/dist/pine-core/svg/merge.svg +0 -1
  1235. package/dist/pine-core/svg/microphone-off.svg +0 -1
  1236. package/dist/pine-core/svg/microphone.svg +0 -1
  1237. package/dist/pine-core/svg/monitor-03-tone.svg +0 -1
  1238. package/dist/pine-core/svg/monitor-filled.svg +0 -1
  1239. package/dist/pine-core/svg/monitor.svg +0 -1
  1240. package/dist/pine-core/svg/more-menu-filled.svg +0 -1
  1241. package/dist/pine-core/svg/more-menu.svg +0 -1
  1242. package/dist/pine-core/svg/move-left.svg +0 -1
  1243. package/dist/pine-core/svg/move-right.svg +0 -1
  1244. package/dist/pine-core/svg/multi-pay.svg +0 -1
  1245. package/dist/pine-core/svg/newsletter-2.svg +0 -1
  1246. package/dist/pine-core/svg/newsletter.svg +0 -1
  1247. package/dist/pine-core/svg/one-off-session.svg +0 -1
  1248. package/dist/pine-core/svg/one-time.svg +0 -1
  1249. package/dist/pine-core/svg/packages.svg +0 -1
  1250. package/dist/pine-core/svg/pause-circle.svg +0 -1
  1251. package/dist/pine-core/svg/pause.svg +0 -1
  1252. package/dist/pine-core/svg/payout.svg +0 -1
  1253. package/dist/pine-core/svg/pen.svg +0 -1
  1254. package/dist/pine-core/svg/phone-02-tone.svg +0 -1
  1255. package/dist/pine-core/svg/phone-portrait.svg +0 -1
  1256. package/dist/pine-core/svg/phone-toolbar-filled.svg +0 -1
  1257. package/dist/pine-core/svg/phone-toolbar.svg +0 -1
  1258. package/dist/pine-core/svg/play-circle.svg +0 -1
  1259. package/dist/pine-core/svg/play-outline.svg +0 -1
  1260. package/dist/pine-core/svg/play-store.svg +0 -1
  1261. package/dist/pine-core/svg/play.svg +0 -1
  1262. package/dist/pine-core/svg/plug.svg +0 -1
  1263. package/dist/pine-core/svg/premium.svg +0 -1
  1264. package/dist/pine-core/svg/present.svg +0 -1
  1265. package/dist/pine-core/svg/preview-off.svg +0 -1
  1266. package/dist/pine-core/svg/preview-on.svg +0 -1
  1267. package/dist/pine-core/svg/product-filled.svg +0 -1
  1268. package/dist/pine-core/svg/product.svg +0 -1
  1269. package/dist/pine-core/svg/question-circle.svg +0 -1
  1270. package/dist/pine-core/svg/quote.svg +0 -1
  1271. package/dist/pine-core/svg/redo.svg +0 -1
  1272. package/dist/pine-core/svg/refresh.svg +0 -1
  1273. package/dist/pine-core/svg/remove-circle.svg +0 -1
  1274. package/dist/pine-core/svg/remove.svg +0 -1
  1275. package/dist/pine-core/svg/rename.svg +0 -1
  1276. package/dist/pine-core/svg/reset-password.svg +0 -1
  1277. package/dist/pine-core/svg/restore.svg +0 -1
  1278. package/dist/pine-core/svg/right-small.svg +0 -1
  1279. package/dist/pine-core/svg/rocket-filled.svg +0 -1
  1280. package/dist/pine-core/svg/rocket.svg +0 -1
  1281. package/dist/pine-core/svg/round-dollar.svg +0 -1
  1282. package/dist/pine-core/svg/rows.svg +0 -1
  1283. package/dist/pine-core/svg/scissor.svg +0 -1
  1284. package/dist/pine-core/svg/screen-share-off.svg +0 -1
  1285. package/dist/pine-core/svg/screen-share-on.svg +0 -1
  1286. package/dist/pine-core/svg/search-md-tone.svg +0 -1
  1287. package/dist/pine-core/svg/search-small.svg +0 -1
  1288. package/dist/pine-core/svg/search.svg +0 -1
  1289. package/dist/pine-core/svg/send-message.svg +0 -1
  1290. package/dist/pine-core/svg/sequences.svg +0 -1
  1291. package/dist/pine-core/svg/settings-01-tone.svg +0 -1
  1292. package/dist/pine-core/svg/share.svg +0 -1
  1293. package/dist/pine-core/svg/skipped.svg +0 -1
  1294. package/dist/pine-core/svg/slash-divider.svg +0 -1
  1295. package/dist/pine-core/svg/speaker.svg +0 -1
  1296. package/dist/pine-core/svg/stack.svg +0 -1
  1297. package/dist/pine-core/svg/star.svg +0 -1
  1298. package/dist/pine-core/svg/stars-01-tone.svg +0 -1
  1299. package/dist/pine-core/svg/stop.svg +0 -1
  1300. package/dist/pine-core/svg/stopwatch.svg +0 -1
  1301. package/dist/pine-core/svg/strikethrough.svg +0 -1
  1302. package/dist/pine-core/svg/subscript.svg +0 -1
  1303. package/dist/pine-core/svg/subscriptions.svg +0 -1
  1304. package/dist/pine-core/svg/super-admin.svg +0 -1
  1305. package/dist/pine-core/svg/superscript.svg +0 -1
  1306. package/dist/pine-core/svg/sync.svg +0 -1
  1307. package/dist/pine-core/svg/tablet-landscape.svg +0 -1
  1308. package/dist/pine-core/svg/tablet-portrait.svg +0 -1
  1309. package/dist/pine-core/svg/tag-filled.svg +0 -1
  1310. package/dist/pine-core/svg/tag.svg +0 -1
  1311. package/dist/pine-core/svg/text-styles.svg +0 -1
  1312. package/dist/pine-core/svg/theme-store-filled.svg +0 -1
  1313. package/dist/pine-core/svg/theme-store.svg +0 -1
  1314. package/dist/pine-core/svg/thumb-down-filled.svg +0 -1
  1315. package/dist/pine-core/svg/thumb-down.svg +0 -1
  1316. package/dist/pine-core/svg/thumb-up-filled.svg +0 -1
  1317. package/dist/pine-core/svg/thumb-up.svg +0 -1
  1318. package/dist/pine-core/svg/trash.svg +0 -1
  1319. package/dist/pine-core/svg/trophy-filled.svg +0 -1
  1320. package/dist/pine-core/svg/trophy.svg +0 -1
  1321. package/dist/pine-core/svg/underline.svg +0 -1
  1322. package/dist/pine-core/svg/undo.svg +0 -1
  1323. package/dist/pine-core/svg/unlock.svg +0 -1
  1324. package/dist/pine-core/svg/unmapped.svg +0 -1
  1325. package/dist/pine-core/svg/up-small.svg +0 -1
  1326. package/dist/pine-core/svg/upload.svg +0 -1
  1327. package/dist/pine-core/svg/url.svg +0 -1
  1328. package/dist/pine-core/svg/user-circle-filled.svg +0 -1
  1329. package/dist/pine-core/svg/user-circle.svg +0 -1
  1330. package/dist/pine-core/svg/user-filled.svg +0 -1
  1331. package/dist/pine-core/svg/user-star-filled.svg +0 -1
  1332. package/dist/pine-core/svg/user-star.svg +0 -1
  1333. package/dist/pine-core/svg/user.svg +0 -1
  1334. package/dist/pine-core/svg/users-02-tone.svg +0 -1
  1335. package/dist/pine-core/svg/users-alt.svg +0 -1
  1336. package/dist/pine-core/svg/users-filled.svg +0 -1
  1337. package/dist/pine-core/svg/users.svg +0 -1
  1338. package/dist/pine-core/svg/video-off.svg +0 -1
  1339. package/dist/pine-core/svg/video-on.svg +0 -1
  1340. package/dist/pine-core/svg/warning-filled.svg +0 -1
  1341. package/dist/pine-core/svg/warning.svg +0 -1
  1342. package/dist/pine-core/svg/window-paragraph.svg +0 -1
  1343. package/dist/pine-core/svg/world.svg +0 -1
  1344. package/dist/pine-core/svg/wrench.svg +0 -1
  1345. package/dist/types/stories/_helpers/index.d.ts +0 -12
  1346. package/loader/package.json +0 -11
@@ -0,0 +1,2347 @@
1
+ import { h, Host } from "@stencil/core";
2
+ import { assignDescription, isSpecTest, messageId } from "../../utils/form";
3
+ import { autoUpdate, computePosition, flip, offset, shift } from "@floating-ui/dom";
4
+ import { debounceEvent } from "../../utils/utils";
5
+ import DOMPurify from "dompurify";
6
+ /**
7
+ * @slot option - Option elements for the combobox dropdown
8
+ * @slot trigger-content - Custom content for the button trigger when customTriggerContent is true
9
+ * @slot empty - Custom empty state message when no options match
10
+ * @slot loading - Custom loading indicator
11
+ */
12
+ export class PdsCombobox {
13
+ constructor() {
14
+ /**
15
+ * Enable custom layout content for options. Options with data-layout attribute will render their HTML content.
16
+ * ⚠️ Security Warning: Only use with trusted content. Basic XSS protection is applied, but avoid user-generated content.
17
+ * @default false
18
+ */
19
+ this.customOptionLayouts = false;
20
+ /**
21
+ * Enable custom layout content for the button trigger via the trigger-content slot.
22
+ * When true, uses slot content for initial state but updates dynamically with selected option layout.
23
+ * ⚠️ Security Warning: Only use with trusted content. Basic XSS protection is applied, but avoid user-generated content.
24
+ * @default false
25
+ */
26
+ this.customTriggerContent = false;
27
+ /**
28
+ * If true, the combobox is disabled.
29
+ */
30
+ this.disabled = false;
31
+ /**
32
+ * Placement of the dropdown relative to the trigger.
33
+ * @default 'bottom-start'
34
+ */
35
+ this.dropdownPlacement = 'bottom-start';
36
+ /**
37
+ * Width of the dropdown. Any valid CSS width value.
38
+ * @default '236px'
39
+ */
40
+ this.dropdownWidth = '236px';
41
+ /**
42
+ * Where to mount the dropdown listbox (`host` or `body`, sometimes called “append to body”).
43
+ * Use `body` inside scrollable containers (for example modals) so the list is not clipped by
44
+ * `overflow: hidden` ancestors. The portal is appended to the nearest `<dialog>` when present
45
+ * (including `pds-modal` / `showModal()`), using a composed ascent so shadow DOM and slot
46
+ * boundaries do not hide the dialog from discovery; otherwise it is appended to `document.body`.
47
+ * Keyboard focus remains on the trigger via
48
+ * `aria-activedescendant` so modal focus traps continue to work. Custom `empty` and `loading`
49
+ * slots are not supported when `body` is used; the default empty and loading content is shown instead.
50
+ * @default 'host'
51
+ */
52
+ this.dropdownMount = 'host';
53
+ /**
54
+ * Visually hides the label text for instances where only the combobox should be displayed.
55
+ * The visible `<label>` is omitted (same pattern as `pds-select`) so label spacing does not reserve layout;
56
+ * the trigger uses `aria-label` so the name stays available to assistive technology.
57
+ */
58
+ this.hideLabel = false;
59
+ /**
60
+ * Determines the combobox mode: 'filter' (filter options as you type) or 'select-only' (show all options).
61
+ * In filter mode, reopening the menu while the input still shows the label of the selected option temporarily lists
62
+ * all options until you type (so you can switch to a different choice without clearing the field first).
63
+ * @default 'filter'
64
+ */
65
+ this.mode = 'filter';
66
+ /**
67
+ * Determines the combobox trigger: 'input' (editable input), 'button' (button-like, non-editable), or 'chip' (chip-like, non-editable).
68
+ * @default 'input'
69
+ */
70
+ this.trigger = 'input';
71
+ /**
72
+ * Width of the trigger (button or input). Any valid CSS width value.
73
+ * @default 'fit-content'
74
+ */
75
+ this.triggerWidth = 'fit-content';
76
+ /**
77
+ * The visual variant for the button trigger. Matches Pine button variants.
78
+ * @default 'secondary'
79
+ */
80
+ this.triggerVariant = 'secondary';
81
+ /**
82
+ * The shape of the button trigger. Use 'input' to render the trigger with input-like styling
83
+ * (subtle border radius, input height) for use in form or filter rows alongside PdsSelect and PdsMultiselect.
84
+ * @default 'pill'
85
+ */
86
+ this.triggerShape = 'pill';
87
+ /**
88
+ * The sentiment for the chip trigger. Matches Pine chip sentiments.
89
+ * @default 'neutral'
90
+ */
91
+ this.chipSentiment = 'neutral';
92
+ /**
93
+ * Whether the chip trigger should be displayed in a larger size.
94
+ * @default false
95
+ */
96
+ this.chipLarge = false;
97
+ /**
98
+ * Whether a dot should be displayed on the chip trigger.
99
+ * @default false
100
+ */
101
+ this.chipDot = false;
102
+ /**
103
+ * The value of the combobox input.
104
+ */
105
+ this.value = '';
106
+ /**
107
+ * HTTP method for async requests.
108
+ */
109
+ this.asyncMethod = 'GET';
110
+ /**
111
+ * Debounce delay in milliseconds for search/fetch.
112
+ */
113
+ this.debounce = 300;
114
+ /**
115
+ * Timeout in milliseconds for async fetch requests.
116
+ */
117
+ this.fetchTimeout = 30000;
118
+ /**
119
+ * Whether the component is currently loading async options.
120
+ */
121
+ this.loading = false;
122
+ /**
123
+ * Internal state for the display text shown in the input/trigger
124
+ */
125
+ this.displayText = '';
126
+ /**
127
+ * Internal state for filtered options and group labels
128
+ */
129
+ this.filteredItems = [];
130
+ /**
131
+ * Internal state for the currently highlighted option index
132
+ */
133
+ this.highlightedIndex = -1;
134
+ /**
135
+ * Internal state for dropdown open/close
136
+ */
137
+ this.isOpen = false;
138
+ /**
139
+ * Internal state for the currently selected option
140
+ */
141
+ this.selectedOption = null;
142
+ /**
143
+ * Internal state for the sanitized layout content of the selected option
144
+ */
145
+ this.selectedOptionLayoutContent = '';
146
+ /**
147
+ * Internal state to track chip properties for automatic rendering
148
+ */
149
+ this.selectedOptionChipProps = null;
150
+ /**
151
+ * Internal state for async options.
152
+ */
153
+ this.internalOptions = [];
154
+ /**
155
+ * Internal state for current page (pagination).
156
+ */
157
+ this.currentPage = 1;
158
+ /**
159
+ * Internal state for hasMore (pagination).
160
+ */
161
+ this.hasMore = false;
162
+ this.optionEls = [];
163
+ this.allItems = [];
164
+ this.portalEl = null;
165
+ this.bodyPortalAutoUpdateActive = false;
166
+ this.isUpdatingFromSelection = false;
167
+ /**
168
+ * In filter mode, after choosing an option the input still shows the label and would
169
+ * otherwise filter the list to matching substrings only. While this flag is true,
170
+ * the list shows every option until the user types (then normal filtering applies).
171
+ */
172
+ this.expandFilterListWhileOpen = false;
173
+ this.handleInput = (e) => {
174
+ const target = e.target;
175
+ this.clearExpandFilterList();
176
+ this.displayText = target.value;
177
+ this.isOpen = true;
178
+ this.filterOptions();
179
+ // Emit search event for consumer-managed async
180
+ this.pdsComboboxSearch.emit({ query: this.displayText });
181
+ // Fetch from async URL if configured
182
+ if (this.asyncUrl) {
183
+ this.debouncedFetchAsyncOptions(this.displayText, 1);
184
+ }
185
+ setTimeout(() => this.openDropdownPositioning(), 0);
186
+ };
187
+ this.handleInputClick = () => {
188
+ // Open dropdown when input is clicked (but not when tabbed into)
189
+ if (!this.isOpen) {
190
+ this.isOpen = true;
191
+ this.prepareExpandFilterListOnOpen();
192
+ this.filterOptions();
193
+ // Trigger initial fetch if async and no options loaded yet
194
+ if (this.asyncUrl && this.internalOptions.length === 0) {
195
+ this.debouncedFetchAsyncOptions(this.displayText, 1);
196
+ }
197
+ this.setInitialHighlightedIndex();
198
+ setTimeout(() => {
199
+ this.openDropdownPositioning();
200
+ if (this.trigger === 'input' && this.expandFilterListWhileOpen && this.inputEl) {
201
+ this.inputEl.select();
202
+ }
203
+ }, 0);
204
+ }
205
+ };
206
+ this.handleKeyDown = (e) => {
207
+ if (!this.isOpen && (e.key === 'ArrowDown' || e.key === 'ArrowUp' || (e.altKey && e.key === 'ArrowDown'))) {
208
+ e.preventDefault();
209
+ this.isOpen = true;
210
+ this.prepareExpandFilterListOnOpen();
211
+ this.filterOptions();
212
+ // Set highlighted index immediately for testing
213
+ this.setInitialHighlightedIndex();
214
+ setTimeout(() => {
215
+ this.openDropdownPositioning();
216
+ // For input trigger, keep focus on input and use aria-activedescendant
217
+ // For button trigger, move focus to first option for keyboard navigation
218
+ if (this.trigger === 'input') {
219
+ this.focusFirstOption();
220
+ }
221
+ else {
222
+ this.focusFirstOptionForArrowKeys();
223
+ }
224
+ }, 0);
225
+ return;
226
+ }
227
+ if (!this.isOpen) {
228
+ return;
229
+ }
230
+ // Get only the option elements (skip group labels) for navigation
231
+ const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
232
+ switch (e.key) {
233
+ case 'ArrowDown':
234
+ e.preventDefault();
235
+ // If no option is highlighted and we have options, start at 0
236
+ if (this.highlightedIndex < 0 && selectableOptions.length > 0) {
237
+ this.highlightedIndex = 0;
238
+ }
239
+ else {
240
+ this.highlightedIndex = Math.min(this.highlightedIndex + 1, selectableOptions.length - 1);
241
+ }
242
+ this.updateOptionFocus();
243
+ break;
244
+ case 'ArrowUp':
245
+ e.preventDefault();
246
+ // If no option is highlighted and we have options, start at last option
247
+ if (this.highlightedIndex < 0 && selectableOptions.length > 0) {
248
+ this.highlightedIndex = selectableOptions.length - 1;
249
+ }
250
+ else {
251
+ this.highlightedIndex = Math.max(this.highlightedIndex - 1, 0);
252
+ }
253
+ this.updateOptionFocus();
254
+ break;
255
+ case 'Home':
256
+ e.preventDefault();
257
+ if (selectableOptions.length > 0) {
258
+ this.highlightedIndex = 0;
259
+ this.updateOptionFocus();
260
+ }
261
+ break;
262
+ case 'End':
263
+ e.preventDefault();
264
+ if (selectableOptions.length > 0) {
265
+ this.highlightedIndex = selectableOptions.length - 1;
266
+ this.updateOptionFocus();
267
+ }
268
+ break;
269
+ case 'PageDown':
270
+ e.preventDefault();
271
+ if (selectableOptions.length > 0) {
272
+ const nextIndex = Math.min(this.highlightedIndex + 10, selectableOptions.length - 1);
273
+ this.highlightedIndex = nextIndex;
274
+ this.updateOptionFocus();
275
+ }
276
+ break;
277
+ case 'PageUp':
278
+ e.preventDefault();
279
+ if (selectableOptions.length > 0) {
280
+ const prevIndex = Math.max(this.highlightedIndex - 10, 0);
281
+ this.highlightedIndex = prevIndex;
282
+ this.updateOptionFocus();
283
+ }
284
+ break;
285
+ case 'Enter':
286
+ e.preventDefault();
287
+ if (this.highlightedIndex >= 0 && this.highlightedIndex < selectableOptions.length) {
288
+ this.handleOptionClick(selectableOptions[this.highlightedIndex]);
289
+ this.restoreFocusToTrigger();
290
+ }
291
+ break;
292
+ case ' ':
293
+ e.preventDefault();
294
+ if (this.highlightedIndex >= 0 && this.highlightedIndex < selectableOptions.length) {
295
+ this.handleOptionClick(selectableOptions[this.highlightedIndex]);
296
+ this.restoreFocusToTrigger();
297
+ }
298
+ break;
299
+ case 'Escape':
300
+ e.preventDefault();
301
+ this.isOpen = false;
302
+ this.highlightedIndex = -1;
303
+ this.clearExpandFilterList();
304
+ this.isArrowKeyNavigationMode = false; // Reset arrow-key navigation mode
305
+ this.restoreFocusToTrigger();
306
+ break;
307
+ case 'Tab':
308
+ // Allow normal tab behavior to close dropdown and move focus
309
+ this.isOpen = false;
310
+ this.highlightedIndex = -1;
311
+ this.clearExpandFilterList();
312
+ this.isArrowKeyNavigationMode = false; // Reset arrow-key navigation mode
313
+ break;
314
+ }
315
+ };
316
+ // Track if we're in arrow-key navigation mode (focus should move between options)
317
+ this.isArrowKeyNavigationMode = false;
318
+ // Event handler for option click
319
+ this.onOptionClick = (event) => {
320
+ const idx = Number(event.currentTarget.getAttribute('data-option-index'));
321
+ const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
322
+ const option = selectableOptions[idx];
323
+ this.handleOptionClick(option);
324
+ };
325
+ // Event handler for mouse enter on option
326
+ this.onOptionMouseEnter = (event) => {
327
+ const idx = Number(event.currentTarget.getAttribute('data-option-index'));
328
+ this.highlightedIndex = idx;
329
+ };
330
+ // Prevent blur on mousedown
331
+ this.onOptionMouseDown = (event) => {
332
+ event.preventDefault();
333
+ };
334
+ // Event handler for option keyboard events
335
+ this.onOptionKeyDown = (event) => {
336
+ // Delegate to main keyboard handler
337
+ this.handleKeyDown(event);
338
+ };
339
+ // Handler for button trigger click
340
+ this.onButtonTriggerClick = () => {
341
+ this.isOpen = !this.isOpen;
342
+ if (this.isOpen) {
343
+ this.prepareExpandFilterListOnOpen();
344
+ this.filterOptions();
345
+ // Trigger initial fetch if async and no options loaded yet
346
+ if (this.asyncUrl && this.internalOptions.length === 0) {
347
+ this.debouncedFetchAsyncOptions(this.displayText, 1);
348
+ }
349
+ // Set highlighted index and prepare for keyboard navigation
350
+ this.setInitialHighlightedIndex();
351
+ // For button trigger, prepare for arrow-key navigation mode
352
+ this.isArrowKeyNavigationMode = true;
353
+ setTimeout(() => this.openDropdownPositioning(), 0);
354
+ }
355
+ else {
356
+ // Reset navigation mode when closing
357
+ this.clearExpandFilterList();
358
+ this.isArrowKeyNavigationMode = false;
359
+ }
360
+ };
361
+ // Handler for button trigger keyboard events
362
+ this.onButtonTriggerKeyDown = (e) => {
363
+ if ((e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown' || e.key === 'ArrowUp') && !this.isOpen) {
364
+ e.preventDefault();
365
+ e.stopPropagation(); // Prevent the event from bubbling and triggering click
366
+ this.isOpen = true;
367
+ this.prepareExpandFilterListOnOpen();
368
+ this.filterOptions();
369
+ // Set highlighted index immediately
370
+ this.setInitialHighlightedIndex();
371
+ setTimeout(() => {
372
+ this.openDropdownPositioning();
373
+ // For all button trigger keyboard opening, focus the first option so subsequent navigation works
374
+ this.focusFirstOptionForArrowKeys();
375
+ }, 0);
376
+ }
377
+ else if (e.key === 'Escape') {
378
+ e.preventDefault();
379
+ if (this.isOpen) {
380
+ this.isOpen = false;
381
+ this.highlightedIndex = -1;
382
+ this.clearExpandFilterList();
383
+ this.updateAriaActiveDescendant(); // Clear aria-activedescendant
384
+ this.restoreFocusToTrigger();
385
+ }
386
+ }
387
+ else if (this.isOpen) {
388
+ // Delegate other keys to main keyboard handler when dropdown is open
389
+ this.handleKeyDown(e);
390
+ }
391
+ };
392
+ // Handler for button trigger keyup events - prevents space key from triggering synthetic click
393
+ this.onButtonTriggerKeyUp = (e) => {
394
+ if (e.key === ' ') {
395
+ e.preventDefault();
396
+ e.stopPropagation();
397
+ }
398
+ };
399
+ // Close dropdown when focus leaves the combobox
400
+ this.onComboboxFocusOut = (event) => {
401
+ var _a, _b;
402
+ const relatedTarget = event.relatedTarget;
403
+ const isRelatedTargetInListbox = relatedTarget &&
404
+ (((_a = this.listboxEl) === null || _a === void 0 ? void 0 : _a.contains(relatedTarget)) || ((_b = this.portalEl) === null || _b === void 0 ? void 0 : _b.contains(relatedTarget)));
405
+ const isRelatedTargetInCombobox = this.el.contains(relatedTarget);
406
+ // Don't close if focus is moving to an option in the listbox or staying within the combobox
407
+ if (!isRelatedTargetInCombobox && !isRelatedTargetInListbox) {
408
+ this.isOpen = false;
409
+ this.highlightedIndex = -1;
410
+ this.clearExpandFilterList();
411
+ this.isArrowKeyNavigationMode = false; // Reset arrow-key navigation mode
412
+ this.updateAriaActiveDescendant(); // Clear aria-activedescendant
413
+ // If there's a selected option but the display text doesn't match, restore the selected option's display text
414
+ if (this.selectedOption && this.displayText !== this.getOptionLabel(this.selectedOption)) {
415
+ this.displayText = this.getOptionLabel(this.selectedOption);
416
+ // The @Watch('selectedOption') will handle value and form internals if needed
417
+ }
418
+ }
419
+ };
420
+ this.handleScroll = (e) => {
421
+ if (!this.asyncUrl || !this.hasMore || this.loading)
422
+ return;
423
+ const target = e.target;
424
+ const scrollBottom = target.scrollHeight - target.scrollTop - target.clientHeight;
425
+ // Load more when near bottom (within 50px)
426
+ if (scrollBottom < 50) {
427
+ this.pdsComboboxLoadOptions.emit({
428
+ query: this.displayText,
429
+ page: this.currentPage + 1,
430
+ });
431
+ this.debouncedFetchAsyncOptions(this.displayText, this.currentPage + 1);
432
+ }
433
+ };
434
+ }
435
+ connectedCallback() {
436
+ // Initialize ElementInternals for form association (only once per element instance)
437
+ if (this.el.attachInternals && !this.internals) {
438
+ this.internals = this.el.attachInternals();
439
+ }
440
+ }
441
+ componentWillLoad() {
442
+ this.originalSearchEmitter = this.pdsComboboxSearch;
443
+ this.updateOptions();
444
+ }
445
+ componentDidLoad() {
446
+ var _a, _b, _c;
447
+ this.setupDebounce();
448
+ // Check for value-based preselection if no option is selected yet
449
+ if (!this.selectedOption && this.value && this.optionEls.length > 0) {
450
+ const matchingOption = this.optionEls.find(opt => opt.value === this.value);
451
+ if (matchingOption) {
452
+ this.setSelectedOption(matchingOption);
453
+ // Update the display text to show the option's text content
454
+ this.displayText = this.getOptionLabel(matchingOption);
455
+ // Keep this.value as the actual option value
456
+ // this.value remains unchanged (already matches matchingOption.value)
457
+ }
458
+ }
459
+ // Initialize form value with current value
460
+ this.updateFormValue((_c = (_b = (_a = this.selectedOption) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : this.value) !== null && _c !== void 0 ? _c : '');
461
+ }
462
+ disconnectedCallback() {
463
+ var _a;
464
+ if (this.deferredPortalTeardownId !== undefined) {
465
+ clearTimeout(this.deferredPortalTeardownId);
466
+ this.deferredPortalTeardownId = undefined;
467
+ }
468
+ (_a = this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();
469
+ this.clearAsyncFetchState();
470
+ this.removeBodyPortal();
471
+ }
472
+ componentDidRender() {
473
+ if (this.usesBodyPortal && this.isOpen) {
474
+ this.syncBodyPortal();
475
+ }
476
+ }
477
+ isOpenChanged(isOpen) {
478
+ if (isOpen && this.deferredPortalTeardownId !== undefined) {
479
+ clearTimeout(this.deferredPortalTeardownId);
480
+ this.deferredPortalTeardownId = undefined;
481
+ }
482
+ if (isOpen && this.usesBodyPortal) {
483
+ // Rapid reopen can cancel deferred teardown while the portal still holds the previous
484
+ // listbox node; clear portal state before the next render attaches the new listbox, and
485
+ // reset Floating UI autoUpdate bookkeeping.
486
+ this.removeBodyPortal();
487
+ }
488
+ if (!isOpen && this.usesBodyPortal) {
489
+ if (this.deferredPortalTeardownId !== undefined) {
490
+ clearTimeout(this.deferredPortalTeardownId);
491
+ }
492
+ this.deferredPortalTeardownId = setTimeout(() => {
493
+ this.deferredPortalTeardownId = undefined;
494
+ if (!this.el.isConnected) {
495
+ return;
496
+ }
497
+ if (!this.isOpen) {
498
+ this.removeBodyPortal();
499
+ }
500
+ }, 0);
501
+ return;
502
+ }
503
+ if (!isOpen) {
504
+ this.removeBodyPortal();
505
+ }
506
+ }
507
+ get usesBodyPortal() {
508
+ return this.dropdownMount === 'body';
509
+ }
510
+ get listboxId() {
511
+ return `${this.componentId}-listbox`;
512
+ }
513
+ optionDomId(optionIndex) {
514
+ return `${this.componentId}-option-${optionIndex}`;
515
+ }
516
+ setupDebounce() {
517
+ const { pdsComboboxSearch, debounce, originalSearchEmitter } = this;
518
+ this.pdsComboboxSearch = debounce === undefined
519
+ ? originalSearchEmitter !== null && originalSearchEmitter !== void 0 ? originalSearchEmitter : pdsComboboxSearch
520
+ : debounceEvent(pdsComboboxSearch, debounce);
521
+ }
522
+ optionsChanged() {
523
+ if (this.options) {
524
+ this.internalOptions = [...this.options];
525
+ this.updateOptionsFromAsync();
526
+ }
527
+ }
528
+ handleValueChange() {
529
+ this.filterOptions();
530
+ // Sync with form internals for form association
531
+ this.updateFormValue(this.value);
532
+ // Find and select option that matches the value (for external value changes)
533
+ // Only do this if we're not already updating from a selection
534
+ if (!this.isUpdatingFromSelection && this.value && this.optionEls.length > 0) {
535
+ const currentSelectedValue = this.selectedOption ? this.selectedOption.value : null;
536
+ // If the value doesn't match the currently selected option's value, we need to update
537
+ if (this.value !== currentSelectedValue) {
538
+ const matchingOption = this.optionEls.find(opt => opt.value === this.value);
539
+ if (matchingOption) {
540
+ this.isUpdatingFromSelection = true;
541
+ this.setSelectedOption(matchingOption);
542
+ // Update the display text to show the option's text content
543
+ this.displayText = this.getOptionLabel(matchingOption);
544
+ // Keep this.value as the actual option value (already correct)
545
+ this.isUpdatingFromSelection = false;
546
+ }
547
+ }
548
+ }
549
+ }
550
+ handleSelectedOptionChange() {
551
+ // Update the layout content when selected option changes
552
+ this.selectedOptionLayoutContent = this.selectedOption && this.isOptionLayout(this.selectedOption)
553
+ ? this.getOptionLayoutContent(this.selectedOption)
554
+ : '';
555
+ // Update chip properties for automatic rendering when selected option changes
556
+ this.selectedOptionChipProps = this.selectedOption && this.isOptionChip(this.selectedOption)
557
+ ? this.getOptionChipProps(this.selectedOption)
558
+ : null;
559
+ // Update display text when selected option changes
560
+ if (this.selectedOption) {
561
+ this.displayText = this.getOptionLabel(this.selectedOption);
562
+ this.value = this.selectedOption.value;
563
+ // Update form internals with the actual option value
564
+ this.updateFormValue(this.selectedOption.value);
565
+ }
566
+ else {
567
+ this.displayText = '';
568
+ this.value = '';
569
+ this.updateFormValue('');
570
+ }
571
+ }
572
+ updateFormValue(value) {
573
+ if (isSpecTest())
574
+ return;
575
+ if (this.internals && this.internals.setFormValue) {
576
+ this.internals.setFormValue(value);
577
+ }
578
+ }
579
+ clearAsyncFetchState() {
580
+ var _a;
581
+ if (this.fetchDebounceTimer !== undefined) {
582
+ window.clearTimeout(this.fetchDebounceTimer);
583
+ this.fetchDebounceTimer = undefined;
584
+ }
585
+ if (this.fetchTimeoutTimer !== undefined) {
586
+ window.clearTimeout(this.fetchTimeoutTimer);
587
+ this.fetchTimeoutTimer = undefined;
588
+ }
589
+ (_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort();
590
+ this.abortController = undefined;
591
+ }
592
+ debouncedFetchAsyncOptions(query, page = 1) {
593
+ var _a;
594
+ if (!this.asyncUrl)
595
+ return;
596
+ if (this.fetchDebounceTimer !== undefined) {
597
+ window.clearTimeout(this.fetchDebounceTimer);
598
+ }
599
+ const delay = Math.max(0, (_a = this.debounce) !== null && _a !== void 0 ? _a : 0);
600
+ this.fetchDebounceTimer = window.setTimeout(() => {
601
+ this.fetchDebounceTimer = undefined;
602
+ this.fetchOptions(query, page);
603
+ }, delay);
604
+ }
605
+ async fetchOptions(query, page = 1) {
606
+ var _a;
607
+ if (!this.asyncUrl)
608
+ return;
609
+ // Abort any pending request and clear existing timeout
610
+ (_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort();
611
+ if (this.fetchTimeoutTimer !== undefined) {
612
+ window.clearTimeout(this.fetchTimeoutTimer);
613
+ this.fetchTimeoutTimer = undefined;
614
+ }
615
+ this.abortController = new AbortController();
616
+ this.loading = true;
617
+ // Set up timeout for fetch request
618
+ this.fetchTimeoutTimer = window.setTimeout(() => {
619
+ var _a;
620
+ (_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort();
621
+ this.fetchTimeoutTimer = undefined;
622
+ }, this.fetchTimeout);
623
+ try {
624
+ // Guard against malformed asyncUrl
625
+ let url;
626
+ try {
627
+ url = new URL(this.asyncUrl, window.location.origin);
628
+ }
629
+ catch (urlError) {
630
+ throw new TypeError(`Invalid asyncUrl: ${this.asyncUrl}`);
631
+ }
632
+ if (this.asyncMethod === 'GET') {
633
+ url.searchParams.set('search', query);
634
+ url.searchParams.set('page', String(page));
635
+ }
636
+ const response = await fetch(url.toString(), Object.assign({ method: this.asyncMethod, signal: this.abortController.signal, headers: {
637
+ 'Content-Type': 'application/json',
638
+ 'Accept': 'application/json',
639
+ } }, (this.asyncMethod === 'POST' && {
640
+ body: JSON.stringify({ search: query, page }),
641
+ })));
642
+ // Clear timeout on successful response
643
+ if (this.fetchTimeoutTimer !== undefined) {
644
+ window.clearTimeout(this.fetchTimeoutTimer);
645
+ this.fetchTimeoutTimer = undefined;
646
+ }
647
+ if (!response.ok)
648
+ throw new Error('Failed to fetch options');
649
+ const data = await response.json();
650
+ const formattedResults = data.results.map(item => {
651
+ // If formatResult is provided, use it
652
+ if (this.formatResult) {
653
+ return this.formatResult(item);
654
+ }
655
+ // Defensive check: ensure item is an object before spreading
656
+ if (typeof item === 'object' && item !== null) {
657
+ return Object.assign({ id: item.id, text: item.text }, item);
658
+ }
659
+ // Handle primitives by converting to safe shape
660
+ return {
661
+ id: String(item),
662
+ text: String(item),
663
+ };
664
+ });
665
+ if (page === 1) {
666
+ this.internalOptions = formattedResults;
667
+ }
668
+ else {
669
+ this.internalOptions = [...this.internalOptions, ...formattedResults];
670
+ }
671
+ this.hasMore = data.totalCount ? this.internalOptions.length < data.totalCount : false;
672
+ this.currentPage = page;
673
+ // Update DOM options from async data
674
+ this.updateOptionsFromAsync();
675
+ }
676
+ catch (error) {
677
+ // Clear timeout on error
678
+ if (this.fetchTimeoutTimer !== undefined) {
679
+ window.clearTimeout(this.fetchTimeoutTimer);
680
+ this.fetchTimeoutTimer = undefined;
681
+ }
682
+ if (error.name !== 'AbortError') {
683
+ console.error('PdsCombobox: Failed to fetch options', error);
684
+ }
685
+ }
686
+ finally {
687
+ this.loading = false;
688
+ }
689
+ }
690
+ updateOptionsFromAsync() {
691
+ if (!this.asyncUrl && !this.options)
692
+ return;
693
+ // Clear existing slot-based options when using async
694
+ this.optionEls = [];
695
+ this.allItems = [];
696
+ // Create option elements from async data
697
+ const asyncOptions = this.options || this.internalOptions;
698
+ asyncOptions.forEach(opt => {
699
+ const optionEl = document.createElement('option');
700
+ optionEl.value = String(opt.id);
701
+ optionEl.textContent = opt.text;
702
+ this.optionEls.push(optionEl);
703
+ this.allItems.push(optionEl);
704
+ });
705
+ // Re-apply preselection if a value is set but no option has been selected yet.
706
+ // This handles the case where `value` is set before async options have loaded.
707
+ if (this.value && !this.selectedOption) {
708
+ const matchingOption = this.optionEls.find(opt => opt.value === this.value);
709
+ if (matchingOption) {
710
+ this.setSelectedOption(matchingOption);
711
+ }
712
+ }
713
+ this.filterOptions();
714
+ }
715
+ updateOptions() {
716
+ var _a;
717
+ // Skip slot-based options if using async
718
+ if (this.asyncUrl || this.options) {
719
+ this.updateOptionsFromAsync();
720
+ return;
721
+ }
722
+ // Get all elements from the slot
723
+ const slot = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot[name="option"], slot:not([name])');
724
+ if (slot) {
725
+ const allElements = slot.assignedElements({ flatten: true });
726
+ // Separate options from group labels and flatten optgroups
727
+ this.allItems = [];
728
+ this.optionEls = [];
729
+ allElements.forEach(el => {
730
+ if (el.tagName === 'OPTION') {
731
+ this.optionEls.push(el);
732
+ this.allItems.push(el);
733
+ }
734
+ else if (el.tagName === 'OPTGROUP') {
735
+ const optgroup = el;
736
+ this.allItems.push(optgroup);
737
+ // Add optgroup children (options)
738
+ Array.from(optgroup.children).forEach(child => {
739
+ if (child.tagName === 'OPTION') {
740
+ this.optionEls.push(child);
741
+ this.allItems.push(child);
742
+ }
743
+ });
744
+ }
745
+ else if (el.tagName === 'PDS-TEXT') {
746
+ this.allItems.push(el);
747
+ }
748
+ });
749
+ // Set initial selected option based on value property
750
+ let initialSelected = null;
751
+ // Check if value property matches any option
752
+ if (this.value) {
753
+ initialSelected = this.optionEls.find(opt => opt.value === this.value) || null;
754
+ if (initialSelected) {
755
+ // Update the display text to show the option's text content
756
+ this.displayText = this.getOptionLabel(initialSelected);
757
+ // Keep this.value as the actual option value (already correct)
758
+ }
759
+ }
760
+ // For chip triggers, ensure we always have a selected option
761
+ if (!initialSelected && this.trigger === 'chip' && this.optionEls.length > 0) {
762
+ initialSelected = this.optionEls[0]; // Select first option as default
763
+ this.value = initialSelected.value;
764
+ this.displayText = this.getOptionLabel(initialSelected);
765
+ console.warn('PDS Combobox: Chip triggers should always have a selected option. Automatically selected the first option.');
766
+ }
767
+ // Update selection if we found a different selected option or if we don't have one
768
+ if (initialSelected && initialSelected !== this.selectedOption) {
769
+ this.setSelectedOption(initialSelected);
770
+ }
771
+ else if (!this.selectedOption && initialSelected) {
772
+ this.setSelectedOption(initialSelected);
773
+ }
774
+ this.filterOptions();
775
+ }
776
+ }
777
+ // Helper method to get option label, falling back to text content if no label attribute
778
+ getOptionLabel(option) {
779
+ return option.label || option.textContent || '';
780
+ }
781
+ // Helper method to get option layout content
782
+ getOptionLayoutContent(option) {
783
+ return this.sanitizeHtml(option.innerHTML || '');
784
+ }
785
+ // HTML sanitization using DOMPurify library to prevent XSS attacks
786
+ sanitizeHtml(html) {
787
+ // Configure DOMPurify to allow Pine Design System components while removing dangerous content
788
+ const config = {
789
+ // Allow all custom elements (including pds-* components)
790
+ CUSTOM_ELEMENT_HANDLING: {
791
+ tagNameCheck: (tagName) => {
792
+ // Allow all pds-* tags and standard safe HTML tags
793
+ return tagName.startsWith('pds-') || /^[a-z]+$/i.test(tagName);
794
+ },
795
+ attributeNameCheck: (attr) => {
796
+ // Allow standard HTML attributes, data-* attributes, and Pine component attributes
797
+ return /^[a-zA-Z][a-zA-Z0-9-]*$/.test(attr) || attr.startsWith('data-') || attr.startsWith('aria-');
798
+ },
799
+ allowCustomizedBuiltInElements: false,
800
+ },
801
+ // Allow standard safe attributes
802
+ ALLOW_DATA_ATTR: true,
803
+ ALLOW_ARIA_ATTR: true,
804
+ // Specifically forbid dangerous tags
805
+ FORBID_TAGS: ['script', 'iframe', 'object', 'embed', 'form', 'input', 'textarea', 'select', 'button', 'style'],
806
+ // Forbid all event handler attributes
807
+ FORBID_ATTR: [
808
+ 'onerror', 'onload', 'onclick', 'onmouseover', 'onmouseout', 'onmousemove',
809
+ 'onfocus', 'onblur', 'onchange', 'onsubmit', 'onkeydown', 'onkeyup', 'onkeypress',
810
+ 'onmousedown', 'onmouseup', 'ondblclick', 'oncontextmenu', 'onscroll'
811
+ ],
812
+ // Safe protocol whitelist
813
+ ALLOWED_URI_REGEXP: /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i,
814
+ };
815
+ return DOMPurify.sanitize(html, config);
816
+ }
817
+ // Helper method to check if option should render as layout
818
+ isOptionLayout(option) {
819
+ return this.customOptionLayouts && option.hasAttribute('data-layout');
820
+ }
821
+ // Helper method to check if option has chip attributes (new automatic approach)
822
+ isOptionChip(option) {
823
+ return option.hasAttribute('chip-sentiment') ||
824
+ option.hasAttribute('chip-large') ||
825
+ option.hasAttribute('chip-icon') ||
826
+ option.hasAttribute('chip-dot');
827
+ }
828
+ // Helper method to get chip properties from option attributes
829
+ getOptionChipProps(option) {
830
+ return {
831
+ sentiment: option.getAttribute('chip-sentiment') || 'neutral',
832
+ large: option.hasAttribute('chip-large'),
833
+ icon: option.getAttribute('chip-icon') || undefined,
834
+ dot: option.hasAttribute('chip-dot')
835
+ };
836
+ }
837
+ // Helper method to check if option is selected (single source of truth)
838
+ isOptionSelected(option) {
839
+ return this.selectedOption === option;
840
+ }
841
+ // Helper method to set selected option (centralized state management)
842
+ setSelectedOption(option) {
843
+ this.selectedOption = option;
844
+ // Immediately update chip properties for automatic rendering to ensure reactivity
845
+ if (option && this.isOptionChip(option)) {
846
+ this.selectedOptionChipProps = this.getOptionChipProps(option);
847
+ }
848
+ else {
849
+ this.selectedOptionChipProps = null;
850
+ }
851
+ }
852
+ filterOptions() {
853
+ // Ensure allItems includes optionEls if not already populated (for edge cases)
854
+ if (this.allItems.length === 0 && this.optionEls.length > 0) {
855
+ this.allItems = [...this.optionEls];
856
+ }
857
+ if (this.mode === 'select-only' || this.expandFilterListWhileOpen) {
858
+ this.filteredItems = [...this.allItems];
859
+ }
860
+ else {
861
+ const val = this.displayText.toLowerCase();
862
+ const filteredOptions = this.optionEls.filter(option => {
863
+ // For layout options, search both text content and data-search-text attribute
864
+ if (this.isOptionLayout(option)) {
865
+ const searchText = option.getAttribute('data-search-text') || option.textContent || '';
866
+ return searchText.toLowerCase().includes(val);
867
+ }
868
+ return this.getOptionLabel(option).toLowerCase().includes(val);
869
+ });
870
+ // Rebuild filtered items maintaining group structure - simplified approach
871
+ this.filteredItems = [];
872
+ let currentGroupLabel = null;
873
+ this.allItems.forEach(item => {
874
+ if (item.tagName === 'OPTGROUP' || item.tagName === 'PDS-TEXT') {
875
+ currentGroupLabel = item;
876
+ }
877
+ else if (item.tagName === 'OPTION' && filteredOptions.includes(item)) {
878
+ const optionEl = item;
879
+ const parent = optionEl.parentElement;
880
+ let labelToUse = null;
881
+ if (parent && parent.tagName === 'OPTGROUP') {
882
+ // Only use the actual parent optgroup as label
883
+ labelToUse = parent;
884
+ }
885
+ else if (currentGroupLabel && currentGroupLabel.tagName === 'PDS-TEXT') {
886
+ // Allow pds-text to label subsequent top-level options until another label appears
887
+ labelToUse = currentGroupLabel;
888
+ }
889
+ if (labelToUse && !this.filteredItems.includes(labelToUse)) {
890
+ this.filteredItems.push(labelToUse);
891
+ }
892
+ this.filteredItems.push(optionEl);
893
+ }
894
+ });
895
+ }
896
+ this.highlightedIndex = -1;
897
+ }
898
+ clearExpandFilterList() {
899
+ this.expandFilterListWhileOpen = false;
900
+ }
901
+ /**
902
+ * When reopening the dropdown in filter mode with the input still showing the
903
+ * committed selection label, show the full option list until the user edits the query.
904
+ */
905
+ prepareExpandFilterListOnOpen() {
906
+ if (this.mode === 'filter' &&
907
+ this.selectedOption &&
908
+ this.displayText === this.getOptionLabel(this.selectedOption)) {
909
+ this.expandFilterListWhileOpen = true;
910
+ }
911
+ else {
912
+ this.expandFilterListWhileOpen = false;
913
+ }
914
+ }
915
+ positionDropdown() {
916
+ if (!this.triggerEl || !this.listboxEl) {
917
+ return;
918
+ }
919
+ const strategy = this.usesBodyPortal ? 'fixed' : 'absolute';
920
+ const zIndex = this.usesBodyPortal
921
+ ? 'var(--pine-z-index-priority)'
922
+ : 'var(--pine-z-index-raised)';
923
+ this.listboxEl.style.width = this.dropdownWidth;
924
+ if (this.maxHeight) {
925
+ this.listboxEl.style.maxHeight = this.maxHeight;
926
+ this.listboxEl.style.overflowY = 'auto';
927
+ }
928
+ this.listboxEl.offsetHeight;
929
+ return computePosition(this.triggerEl, this.listboxEl, {
930
+ placement: this.dropdownPlacement,
931
+ strategy,
932
+ middleware: [offset(12), flip(), shift({ padding: 5 })],
933
+ }).then(({ x, y }) => {
934
+ if (!this.listboxEl) {
935
+ return;
936
+ }
937
+ Object.assign(this.listboxEl.style, {
938
+ left: `${x}px`,
939
+ top: `${y}px`,
940
+ position: strategy,
941
+ zIndex,
942
+ });
943
+ });
944
+ }
945
+ openDropdownPositioning() {
946
+ if (!this.triggerEl || !this.listboxEl) {
947
+ return;
948
+ }
949
+ void this.positionDropdown();
950
+ }
951
+ startBodyPortalAutoUpdate() {
952
+ if (this.bodyPortalAutoUpdateActive || !this.triggerEl || !this.listboxEl) {
953
+ return;
954
+ }
955
+ this.cleanupPositionAutoUpdate = autoUpdate(this.triggerEl, this.listboxEl, () => {
956
+ void this.positionDropdown();
957
+ });
958
+ this.bodyPortalAutoUpdateActive = true;
959
+ }
960
+ stopBodyPortalAutoUpdate() {
961
+ var _a;
962
+ (_a = this.cleanupPositionAutoUpdate) === null || _a === void 0 ? void 0 : _a.call(this);
963
+ this.cleanupPositionAutoUpdate = undefined;
964
+ this.bodyPortalAutoUpdateActive = false;
965
+ }
966
+ getPortalMountRoot() {
967
+ var _a;
968
+ return (_a = this.findNearestDialogForPortal(this.el)) !== null && _a !== void 0 ? _a : document.body;
969
+ }
970
+ /**
971
+ * Resolves the native `<dialog>` to host the portaled listbox so it stays in the same top layer
972
+ * as `showModal()`. `Element.closest('dialog')` stops at shadow boundaries and can miss a
973
+ * dialog that only wraps slotted content; this walks assigned slots and shadow hosts, and
974
+ * falls back to `pds-modal`'s dialog when the combobox lives inside that subtree.
975
+ */
976
+ findNearestDialogForPortal(from) {
977
+ const seen = new Set();
978
+ let current = from;
979
+ while (current && !seen.has(current)) {
980
+ seen.add(current);
981
+ if (current.nodeType === Node.ELEMENT_NODE && current.localName === 'dialog') {
982
+ return current;
983
+ }
984
+ if (current.nodeType === Node.ELEMENT_NODE) {
985
+ const assigned = current.assignedSlot;
986
+ if (assigned) {
987
+ current = assigned;
988
+ continue;
989
+ }
990
+ }
991
+ const parent = current.parentNode;
992
+ if (parent) {
993
+ current = parent instanceof ShadowRoot ? parent.host : parent;
994
+ continue;
995
+ }
996
+ break;
997
+ }
998
+ const pineModal = from.closest('pds-modal');
999
+ if (pineModal) {
1000
+ const pineDialog = pineModal.querySelector('dialog');
1001
+ if (pineDialog) {
1002
+ return pineDialog;
1003
+ }
1004
+ }
1005
+ return null;
1006
+ }
1007
+ ensureBodyPortal() {
1008
+ if (this.portalEl !== null) {
1009
+ const target = this.getPortalMountRoot();
1010
+ if (this.portalEl.parentElement !== target) {
1011
+ target.appendChild(this.portalEl);
1012
+ }
1013
+ return this.portalEl;
1014
+ }
1015
+ this.portalEl = document.createElement('div');
1016
+ this.portalEl.className = 'pds-combobox-dropdown-portal';
1017
+ this.getPortalMountRoot().appendChild(this.portalEl);
1018
+ return this.portalEl;
1019
+ }
1020
+ syncBodyPortal() {
1021
+ if (!this.listboxEl) {
1022
+ return;
1023
+ }
1024
+ const portal = this.ensureBodyPortal();
1025
+ for (const stale of Array.from(portal.children)) {
1026
+ if (stale !== this.listboxEl) {
1027
+ stale.remove();
1028
+ }
1029
+ }
1030
+ if (this.listboxEl.parentElement !== portal) {
1031
+ portal.appendChild(this.listboxEl);
1032
+ void this.positionDropdown();
1033
+ this.startBodyPortalAutoUpdate();
1034
+ }
1035
+ }
1036
+ removeBodyPortal() {
1037
+ var _a;
1038
+ this.stopBodyPortalAutoUpdate();
1039
+ if ((_a = this.portalEl) === null || _a === void 0 ? void 0 : _a.parentNode) {
1040
+ this.portalEl.parentNode.removeChild(this.portalEl);
1041
+ }
1042
+ this.portalEl = null;
1043
+ if (this.listboxEl && !this.listboxEl.isConnected) {
1044
+ this.listboxEl = undefined;
1045
+ }
1046
+ }
1047
+ /**
1048
+ * Sets focus on the native input element.
1049
+ */
1050
+ async setFocus() {
1051
+ var _a;
1052
+ if (this.inputEl) {
1053
+ this.inputEl.focus();
1054
+ }
1055
+ else {
1056
+ (_a = this.triggerEl) === null || _a === void 0 ? void 0 : _a.focus();
1057
+ }
1058
+ }
1059
+ /**
1060
+ * Sets the initial highlighted index when dropdown opens.
1061
+ * If there's a selected option, highlight it. Otherwise, highlight the first option.
1062
+ */
1063
+ setInitialHighlightedIndex() {
1064
+ const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
1065
+ if (selectableOptions.length === 0) {
1066
+ this.highlightedIndex = -1;
1067
+ return;
1068
+ }
1069
+ // If there's a selected option, find its index in the filtered options
1070
+ if (this.selectedOption) {
1071
+ const selectedIndex = selectableOptions.findIndex(option => option === this.selectedOption);
1072
+ if (selectedIndex >= 0) {
1073
+ this.highlightedIndex = selectedIndex;
1074
+ return;
1075
+ }
1076
+ }
1077
+ // No selected option or selected option not in filtered results, highlight first option
1078
+ this.highlightedIndex = 0;
1079
+ }
1080
+ /**
1081
+ * Focus management helper - moves focus to the first option when dropdown opens
1082
+ */
1083
+ focusFirstOption() {
1084
+ if (this.isOpen) {
1085
+ const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
1086
+ if (selectableOptions.length > 0) {
1087
+ this.setInitialHighlightedIndex();
1088
+ // DON'T focus the option elements - keep focus on trigger and use aria-activedescendant
1089
+ // This prevents the focusout event that was closing the dropdown
1090
+ // But still call updateOptionFocus for scrolling
1091
+ if (this.listboxEl) {
1092
+ this.updateOptionFocus();
1093
+ }
1094
+ }
1095
+ }
1096
+ }
1097
+ /**
1098
+ * Focus management helper - actually focuses the first option when opened via arrow keys
1099
+ */
1100
+ focusFirstOptionForArrowKeys() {
1101
+ if (!this.isOpen) {
1102
+ return;
1103
+ }
1104
+ // Body-mounted listboxes stay outside modal focus traps; keep focus on the trigger.
1105
+ if (this.usesBodyPortal) {
1106
+ this.isArrowKeyNavigationMode = true;
1107
+ this.focusFirstOption();
1108
+ return;
1109
+ }
1110
+ this.isArrowKeyNavigationMode = true;
1111
+ const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
1112
+ if (selectableOptions.length > 0) {
1113
+ this.setInitialHighlightedIndex();
1114
+ if (this.listboxEl) {
1115
+ const optionElements = this.listboxEl.querySelectorAll('[role="option"]');
1116
+ const highlightedOption = optionElements[this.highlightedIndex];
1117
+ if (highlightedOption) {
1118
+ optionElements.forEach(option => {
1119
+ option.setAttribute('tabindex', '-1');
1120
+ });
1121
+ highlightedOption.setAttribute('tabindex', '0');
1122
+ highlightedOption.focus();
1123
+ highlightedOption.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
1124
+ }
1125
+ }
1126
+ this.updateAriaActiveDescendant();
1127
+ }
1128
+ }
1129
+ /**
1130
+ * Focus management helper - updates visual state and scrolling for the currently highlighted option
1131
+ * Note: We don't actually focus the option to prevent focusout events that close the dropdown
1132
+ */
1133
+ updateOptionFocus() {
1134
+ if (!this.listboxEl || this.highlightedIndex < 0)
1135
+ return;
1136
+ const optionElements = this.listboxEl.querySelectorAll('[role="option"]');
1137
+ const currentOption = optionElements[this.highlightedIndex];
1138
+ if (currentOption) {
1139
+ // Check if any option currently has focus OR if we're in arrow-key navigation mode
1140
+ const hasOptionFocus = Array.from(optionElements).some(el => el === document.activeElement);
1141
+ const shouldFocusOption = !this.usesBodyPortal && (hasOptionFocus || this.isArrowKeyNavigationMode);
1142
+ if (shouldFocusOption) {
1143
+ optionElements.forEach(option => {
1144
+ option.setAttribute('tabindex', '-1');
1145
+ });
1146
+ currentOption.setAttribute('tabindex', '0');
1147
+ currentOption.focus();
1148
+ }
1149
+ // Always scroll the option into view
1150
+ currentOption.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
1151
+ }
1152
+ // Always update aria-activedescendant on the trigger element
1153
+ this.updateAriaActiveDescendant();
1154
+ }
1155
+ /**
1156
+ * Updates aria-activedescendant on the trigger element
1157
+ */
1158
+ updateAriaActiveDescendant() {
1159
+ if (this.triggerEl && this.highlightedIndex >= 0) {
1160
+ this.triggerEl.setAttribute('aria-activedescendant', this.optionDomId(this.highlightedIndex));
1161
+ }
1162
+ else if (this.triggerEl) {
1163
+ this.triggerEl.removeAttribute('aria-activedescendant');
1164
+ }
1165
+ }
1166
+ /**
1167
+ * Focus management helper - restores focus to the trigger element
1168
+ */
1169
+ restoreFocusToTrigger() {
1170
+ setTimeout(() => {
1171
+ if (this.inputEl) {
1172
+ this.inputEl.focus();
1173
+ }
1174
+ else if (this.triggerEl) {
1175
+ this.triggerEl.focus();
1176
+ }
1177
+ }, 0);
1178
+ }
1179
+ /**
1180
+ * Gets the value of the currently selected option.
1181
+ */
1182
+ async getSelectedValue() {
1183
+ return this.selectedOption ? this.selectedOption.value : null;
1184
+ }
1185
+ /**
1186
+ * Clears the selected value and resets the component.
1187
+ */
1188
+ async clear() {
1189
+ const hadValue = this.value !== '' || this.displayText !== '';
1190
+ this.displayText = '';
1191
+ this.setSelectedOption(null);
1192
+ this.value = '';
1193
+ this.filterOptions();
1194
+ this.updateFormValue('');
1195
+ if (hadValue) {
1196
+ this.pdsComboboxChange.emit({ value: '' });
1197
+ }
1198
+ }
1199
+ // Get the label of the selected option
1200
+ get selectedLabel() {
1201
+ return this.displayText || '';
1202
+ }
1203
+ // Get the layout content of the selected option for button trigger
1204
+ get selectedLayoutContent() {
1205
+ return this.selectedOptionLayoutContent;
1206
+ }
1207
+ // Check if selected option has layout
1208
+ get selectedHasLayout() {
1209
+ return this.selectedOption ? this.isOptionLayout(this.selectedOption) : false;
1210
+ }
1211
+ // Extract chip sentiment from selected option's attributes, layout content, or slotted trigger content
1212
+ get selectedChipSentiment() {
1213
+ // First priority: Check selected option's chip attributes (new automatic approach)
1214
+ if (this.selectedOption && this.isOptionChip(this.selectedOption)) {
1215
+ const sentiment = this.selectedOption.getAttribute('chip-sentiment');
1216
+ if (sentiment)
1217
+ return sentiment;
1218
+ }
1219
+ // Second priority: Check selected option's layout content (existing custom layout approach)
1220
+ if (this.selectedOption && this.isOptionLayout(this.selectedOption)) {
1221
+ const chipElement = this.selectedOption.querySelector('pds-chip');
1222
+ const sentiment = chipElement === null || chipElement === void 0 ? void 0 : chipElement.getAttribute('sentiment');
1223
+ if (sentiment)
1224
+ return sentiment;
1225
+ }
1226
+ // Third priority: Check if we have custom trigger content with a chip (initial state)
1227
+ if (this.customTriggerContent) {
1228
+ const slottedChip = this.el.querySelector('pds-chip[slot="trigger-content"]');
1229
+ if (slottedChip) {
1230
+ const sentiment = slottedChip.getAttribute('sentiment');
1231
+ if (sentiment)
1232
+ return sentiment;
1233
+ }
1234
+ }
1235
+ // Fallback: Use component props
1236
+ return this.chipSentiment;
1237
+ }
1238
+ // Extract chip large from selected option's attributes, layout content, or slotted trigger content
1239
+ get selectedChipLarge() {
1240
+ // First priority: Check selected option's chip attributes (new automatic approach)
1241
+ if (this.selectedOption && this.isOptionChip(this.selectedOption)) {
1242
+ if (this.selectedOption.hasAttribute('chip-large'))
1243
+ return true;
1244
+ }
1245
+ // Second priority: Check selected option's layout content (existing custom layout approach)
1246
+ if (this.selectedOption && this.isOptionLayout(this.selectedOption)) {
1247
+ const chipElement = this.selectedOption.querySelector('pds-chip');
1248
+ if ((chipElement === null || chipElement === void 0 ? void 0 : chipElement.getAttribute('size')) === 'lg')
1249
+ return true;
1250
+ }
1251
+ // Third priority: Check if we have custom trigger content with a chip (initial state)
1252
+ if (this.customTriggerContent) {
1253
+ const slottedChip = this.el.querySelector('pds-chip[slot="trigger-content"]');
1254
+ if (slottedChip && slottedChip.getAttribute('size') === 'lg') {
1255
+ return true;
1256
+ }
1257
+ }
1258
+ // Fallback: Use component props
1259
+ return this.chipLarge;
1260
+ }
1261
+ // Extract chip icon from selected option's attributes, layout content, or slotted trigger content
1262
+ get selectedChipIcon() {
1263
+ // First priority: Check selected option's chip attributes (new automatic approach)
1264
+ if (this.selectedOption && this.isOptionChip(this.selectedOption)) {
1265
+ const icon = this.selectedOption.getAttribute('chip-icon');
1266
+ if (icon)
1267
+ return icon;
1268
+ }
1269
+ // Second priority: Check selected option's layout content (existing custom layout approach)
1270
+ if (this.selectedOption && this.isOptionLayout(this.selectedOption)) {
1271
+ const chipElement = this.selectedOption.querySelector('pds-chip');
1272
+ const icon = chipElement === null || chipElement === void 0 ? void 0 : chipElement.getAttribute('icon');
1273
+ if (icon)
1274
+ return icon;
1275
+ }
1276
+ // Third priority: Check if we have custom trigger content with a chip (initial state)
1277
+ if (this.customTriggerContent) {
1278
+ const slottedChip = this.el.querySelector('pds-chip[slot="trigger-content"]');
1279
+ if (slottedChip) {
1280
+ const icon = slottedChip.getAttribute('icon');
1281
+ if (icon)
1282
+ return icon;
1283
+ }
1284
+ }
1285
+ // Fallback: Use component props
1286
+ return this.chipIcon;
1287
+ }
1288
+ // Extract chip dot from selected option's attributes, layout content, or slotted trigger content
1289
+ get selectedChipDot() {
1290
+ // First priority: Check selected option's chip attributes (new automatic approach)
1291
+ if (this.selectedOption && this.isOptionChip(this.selectedOption)) {
1292
+ if (this.selectedOption.hasAttribute('chip-dot'))
1293
+ return true;
1294
+ }
1295
+ // Second priority: Check selected option's layout content (existing custom layout approach)
1296
+ if (this.selectedOption && this.isOptionLayout(this.selectedOption)) {
1297
+ const chipElement = this.selectedOption.querySelector('pds-chip');
1298
+ if (chipElement === null || chipElement === void 0 ? void 0 : chipElement.hasAttribute('dot'))
1299
+ return true;
1300
+ }
1301
+ // Third priority: Check if we have custom trigger content with a chip (initial state)
1302
+ if (this.customTriggerContent) {
1303
+ const slottedChip = this.el.querySelector('pds-chip[slot="trigger-content"]');
1304
+ if (slottedChip && slottedChip.hasAttribute('dot')) {
1305
+ return true;
1306
+ }
1307
+ }
1308
+ // Fallback: Use component props
1309
+ return this.chipDot;
1310
+ }
1311
+ handleOptionClick(option) {
1312
+ // Update reactive state - single source of truth
1313
+ // The @Watch('selectedOption') will handle displayText, value, and form internals
1314
+ this.setSelectedOption(option);
1315
+ this.isOpen = false;
1316
+ this.clearExpandFilterList();
1317
+ this.pdsComboboxChange.emit({ value: option.value });
1318
+ }
1319
+ renderDropdown() {
1320
+ if (!this.isOpen) {
1321
+ return null;
1322
+ }
1323
+ const hasSlottedEmpty = !this.usesBodyPortal && !!this.el.querySelector('[slot="empty"]');
1324
+ const hasSlottedLoading = !this.usesBodyPortal && !!this.el.querySelector('[slot="loading"]');
1325
+ let optionIndex = 0;
1326
+ const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
1327
+ return (h("ul", { class: "pds-combobox__listbox", role: "listbox", id: this.listboxId, "aria-label": this.label || 'Options', "aria-multiselectable": "false", ref: el => (this.listboxEl = el), onScroll: this.handleScroll }, this.loading && (h("li", { class: "pds-combobox__loading", role: "presentation" }, hasSlottedLoading ? (h("slot", { name: "loading" })) : (h("pds-loader", { size: "small" })))), !this.loading && this.filteredItems.length === 0 && (h("li", { class: "pds-combobox__empty", role: "presentation" }, hasSlottedEmpty ? (h("slot", { name: "empty" })) : (h("span", null, "No options found")))), this.filteredItems.map((item, itemIdx) => {
1328
+ if (item.tagName === 'OPTGROUP') {
1329
+ const optgroup = item;
1330
+ return (h("li", { key: `optgroup-${itemIdx}`, class: "pds-combobox__group-label", role: "presentation", "aria-label": optgroup.label }, optgroup.label));
1331
+ }
1332
+ else if (item.tagName === 'PDS-TEXT') {
1333
+ const pdsText = item;
1334
+ return (h("li", { key: `pds-text-${itemIdx}`, class: "pds-combobox__group-label", role: "presentation" }, pdsText.textContent));
1335
+ }
1336
+ else if (item.tagName === 'OPTION') {
1337
+ const option = item;
1338
+ const isSelected = this.isOptionSelected(option);
1339
+ const isHighlighted = this.highlightedIndex === optionIndex;
1340
+ const isLayout = this.isOptionLayout(option);
1341
+ const isChip = this.isOptionChip(option);
1342
+ const currentOptionIndex = optionIndex++;
1343
+ return (h("li", { key: option.value, id: this.optionDomId(currentOptionIndex), role: "option", "aria-selected": isSelected ? 'true' : 'false', "aria-setsize": selectableOptions.length, "aria-posinset": currentOptionIndex + 1, "aria-label": isLayout || isChip ? option.getAttribute('aria-label') || this.getOptionLabel(option) : undefined, tabindex: this.usesBodyPortal ? '-1' : isHighlighted ? '0' : '-1', class: {
1344
+ 'pds-combobox__option': true,
1345
+ 'pds-combobox__option--highlighted': isHighlighted,
1346
+ 'pds-combobox__option--layout': isLayout,
1347
+ 'pds-combobox__option--chip': isChip,
1348
+ }, "data-option-index": currentOptionIndex, onMouseDown: this.onOptionMouseDown, onClick: this.onOptionClick, onMouseEnter: this.onOptionMouseEnter, onKeyDown: this.onOptionKeyDown }, isLayout ? (h("pds-box", { class: "pds-combobox__option-layout-wrapper", innerHTML: this.getOptionLayoutContent(option) })) : isChip ? (this.renderOptionChip(option)) : (this.getOptionLabel(option)), isSelected && h("pds-icon", { icon: "check", size: "regular", class: "pds-combobox__option-check" })));
1349
+ }
1350
+ return null;
1351
+ }), this.hasMore && !this.loading && (h("li", { class: "pds-combobox__load-more", role: "presentation" }, h("pds-loader", { size: "small" })))));
1352
+ }
1353
+ // Helper method to render the caret icon
1354
+ renderCaretIcon() {
1355
+ return h("pds-icon", { icon: "caret-down", "aria-hidden": "true", class: "pds-combobox__button-trigger-chevron" });
1356
+ }
1357
+ // Helper method to render layout content
1358
+ renderLayoutContent() {
1359
+ return (h("div", { class: "pds-combobox__button-trigger-layout-wrapper", innerHTML: this.selectedLayoutContent }));
1360
+ }
1361
+ // Helper method to render default text content
1362
+ renderDefaultContent() {
1363
+ return (h("span", { class: "pds-combobox__button-trigger-label" }, this.selectedLabel || this.placeholder));
1364
+ }
1365
+ // Helper method to check if we should show layout content
1366
+ shouldShowLayoutContent() {
1367
+ return this.selectedHasLayout && !!this.selectedLayoutContent;
1368
+ }
1369
+ // Helper method to build chip trigger CSS classes
1370
+ getChipTriggerClass() {
1371
+ const classes = ['pds-combobox__chip-trigger'];
1372
+ // Add sentiment class
1373
+ classes.push(`pds-combobox__chip-trigger--${this.selectedChipSentiment}`);
1374
+ // Always use dropdown variant for chip triggers
1375
+ classes.push('pds-combobox__chip-trigger--dropdown');
1376
+ // Add large class if needed
1377
+ if (this.selectedChipLarge) {
1378
+ classes.push('pds-combobox__chip-trigger--large');
1379
+ }
1380
+ // Add dot class if needed
1381
+ if (this.selectedChipDot) {
1382
+ classes.push('pds-combobox__chip-trigger--dot');
1383
+ }
1384
+ return classes.join(' ');
1385
+ }
1386
+ renderButtonTriggerContent() {
1387
+ // Case 1: Custom trigger content with layout priority
1388
+ if (this.customTriggerContent) {
1389
+ if (this.shouldShowLayoutContent()) {
1390
+ return [this.renderLayoutContent(), this.renderCaretIcon()];
1391
+ }
1392
+ // Fall back to slot content when no layout is available
1393
+ return h("slot", { name: "trigger-content" });
1394
+ }
1395
+ // Case 2: Standard mode with layout content
1396
+ if (this.shouldShowLayoutContent()) {
1397
+ return [this.renderLayoutContent(), this.renderCaretIcon()];
1398
+ }
1399
+ // Case 3: Standard mode with default text content
1400
+ return [this.renderDefaultContent(), this.renderCaretIcon()];
1401
+ }
1402
+ renderChipTriggerContent() {
1403
+ // Case 1: Custom trigger content with layout priority
1404
+ if (this.customTriggerContent) {
1405
+ if (this.shouldShowLayoutContent()) {
1406
+ // When using custom layouts, the chip handles its own dropdown arrow
1407
+ return this.renderChipTriggerLayoutContent();
1408
+ }
1409
+ // Fall back to slot content when no layout is available - chip handles its own dropdown arrow
1410
+ return h("slot", { name: "trigger-content" });
1411
+ }
1412
+ // Case 2: Standard mode with layout content
1413
+ if (this.shouldShowLayoutContent()) {
1414
+ // When using custom layouts, the chip handles its own dropdown arrow
1415
+ return this.renderChipTriggerLayoutContent();
1416
+ }
1417
+ // Case 3: Automatic chip mode - selected option has chip attributes
1418
+ if (this.selectedOption && this.selectedOptionChipProps) {
1419
+ // Render as chip automatically - chip handles its own dropdown arrow
1420
+ return this.renderSelectedOptionAsChip();
1421
+ }
1422
+ // Case 4: Standard mode with default text content
1423
+ return [
1424
+ this.renderChipTriggerDefaultContent(),
1425
+ this.renderCaretIcon()
1426
+ ];
1427
+ }
1428
+ // Helper method to render selected option as chip for trigger (automatic approach)
1429
+ renderSelectedOptionAsChip() {
1430
+ if (!this.selectedOption || !this.selectedOptionChipProps)
1431
+ return null;
1432
+ return (h("pds-chip", { sentiment: this.selectedOptionChipProps.sentiment, variant: "dropdown" // Always use dropdown variant for triggers
1433
+ ,
1434
+ size: this.selectedOptionChipProps.large ? 'lg' : undefined, icon: this.selectedOptionChipProps.icon, dot: this.selectedOptionChipProps.dot, class: "pds-combobox__chip-trigger-auto" }, this.getOptionLabel(this.selectedOption)));
1435
+ }
1436
+ // Helper method to render chip trigger layout content
1437
+ renderChipTriggerLayoutContent() {
1438
+ return (h("div", { class: "pds-combobox__chip-trigger-layout-wrapper", innerHTML: this.getModifiedLayoutContentForTrigger() }));
1439
+ }
1440
+ // Helper method to modify layout content for trigger use (ensure dropdown variant)
1441
+ getModifiedLayoutContentForTrigger() {
1442
+ let content = this.selectedLayoutContent;
1443
+ // If the content contains a pds-chip, ensure it has variant="dropdown"
1444
+ if (content.includes('<pds-chip')) {
1445
+ // Use a temporary div to parse and modify the HTML
1446
+ const tempDiv = document.createElement('div');
1447
+ tempDiv.innerHTML = content;
1448
+ const chipElement = tempDiv.querySelector('pds-chip');
1449
+ if (chipElement) {
1450
+ chipElement.setAttribute('variant', 'dropdown');
1451
+ content = tempDiv.innerHTML;
1452
+ }
1453
+ }
1454
+ return content;
1455
+ }
1456
+ // Helper method to render chip trigger default content
1457
+ renderChipTriggerDefaultContent() {
1458
+ return (h("span", { class: "pds-combobox__chip-trigger-label" }, this.selectedChipIcon && h("pds-icon", { icon: this.selectedChipIcon, class: "pds-combobox__chip-trigger-icon" }), this.selectedLabel || this.placeholder));
1459
+ }
1460
+ // Helper method to render option as chip (new automatic approach)
1461
+ renderOptionChip(option) {
1462
+ const chipProps = this.getOptionChipProps(option);
1463
+ return (h("pds-chip", { sentiment: chipProps.sentiment, variant: "text" // Dropdown options use text variant, not dropdown
1464
+ ,
1465
+ size: chipProps.large ? 'lg' : undefined, icon: chipProps.icon, dot: chipProps.dot, class: "pds-combobox__option-chip" }, this.getOptionLabel(option)));
1466
+ }
1467
+ // Mirrors pds-multiselect and pds-select: an error message on its own puts the
1468
+ // field in an invalid state, so assistive tech agrees with the visual treatment.
1469
+ isInvalid() {
1470
+ return Boolean(this.invalid) || Boolean(this.errorMessage);
1471
+ }
1472
+ renderMessages() {
1473
+ const hasErrorMessage = Boolean(this.errorMessage);
1474
+ const showHelperMessage = Boolean(this.helperMessage) && !hasErrorMessage;
1475
+ return [
1476
+ showHelperMessage && (h("p", { class: "pds-combobox__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)),
1477
+ hasErrorMessage && (h("p", { class: "pds-combobox__error", id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, h("pds-icon", { icon: "danger", size: "small", "aria-hidden": "true" }), this.errorMessage)),
1478
+ ];
1479
+ }
1480
+ render() {
1481
+ const triggerClass = [
1482
+ 'pds-combobox__button-trigger',
1483
+ `pds-combobox__button-trigger--${this.triggerVariant}`,
1484
+ this.triggerShape === 'input' && 'pds-combobox__button-trigger--input-shape',
1485
+ ]
1486
+ .filter(Boolean)
1487
+ .join(' ');
1488
+ return (h(Host, { key: 'a39df3c86a29028344943bd3a2828d5e99106d77', "aria-disabled": this.disabled ? 'true' : null }, h("div", { key: '32cdb8ce31f9d7c9eac8f995cd233fe6f4d9dfc3', class: "pds-combobox", tabIndex: -1, onFocusout: this.onComboboxFocusOut, part: "combobox" }, this.label && !this.hideLabel && (h("label", { key: '64ed7fe37082e2f895daae0090ae3dfac472e3c3', htmlFor: this.componentId, class: "pds-combobox__label" }, this.label)), this.trigger === 'input' ? (h("div", { class: "pds-combobox__input-wrapper", style: { width: this.triggerWidth } }, h("input", { ref: el => {
1489
+ this.inputEl = el;
1490
+ this.triggerEl = el;
1491
+ }, class: {
1492
+ 'pds-combobox__input': true,
1493
+ 'pds-combobox__input--invalid': this.isInvalid(),
1494
+ }, type: "text", role: "combobox", "aria-autocomplete": "list", "aria-controls": this.listboxId, "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-activedescendant": this.isOpen && this.highlightedIndex >= 0 ? this.optionDomId(this.highlightedIndex) : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, value: this.displayText, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleInput, onClick: this.handleInputClick, onKeyDown: this.handleKeyDown, autocomplete: "off", part: "input" }), h("pds-icon", { icon: "enlarge", "aria-hidden": "true", class: "pds-combobox__input-icon" }))) : this.trigger === 'chip' ? (h("div", { class: this.getChipTriggerClass(), style: { width: this.triggerWidth }, role: "combobox", "aria-haspopup": "listbox", "aria-controls": this.listboxId, "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-activedescendant": this.isOpen && this.highlightedIndex >= 0 ? this.optionDomId(this.highlightedIndex) : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "chip-trigger" }, this.renderChipTriggerContent())) : (h("div", { class: triggerClass, style: { width: this.triggerWidth }, role: "combobox", "aria-haspopup": "listbox", "aria-controls": this.listboxId, "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-activedescendant": this.isOpen && this.highlightedIndex >= 0 ? this.optionDomId(this.highlightedIndex) : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "button-trigger" }, this.renderButtonTriggerContent())), this.renderMessages(), h("div", { key: '48041c41a39987f2f4093bd048d6c495ea69514b', style: { display: 'none' } }, h("slot", { key: '5f4d95fefbd3dbdb33ecb25af593c9429df0e10b', onSlotchange: () => this.updateOptions() })), this.renderDropdown())));
1495
+ }
1496
+ static get is() { return "pds-combobox"; }
1497
+ static get encapsulation() { return "shadow"; }
1498
+ static get formAssociated() { return true; }
1499
+ static get originalStyleUrls() {
1500
+ return {
1501
+ "$": ["pds-combobox.scss"]
1502
+ };
1503
+ }
1504
+ static get styleUrls() {
1505
+ return {
1506
+ "$": ["pds-combobox.css"]
1507
+ };
1508
+ }
1509
+ static get properties() {
1510
+ return {
1511
+ "componentId": {
1512
+ "type": "string",
1513
+ "mutable": false,
1514
+ "complexType": {
1515
+ "original": "string",
1516
+ "resolved": "string",
1517
+ "references": {}
1518
+ },
1519
+ "required": true,
1520
+ "optional": false,
1521
+ "docs": {
1522
+ "tags": [],
1523
+ "text": "A unique identifier used for the underlying component `id` attribute."
1524
+ },
1525
+ "getter": false,
1526
+ "setter": false,
1527
+ "reflect": false,
1528
+ "attribute": "component-id"
1529
+ },
1530
+ "name": {
1531
+ "type": "string",
1532
+ "mutable": false,
1533
+ "complexType": {
1534
+ "original": "string",
1535
+ "resolved": "string",
1536
+ "references": {}
1537
+ },
1538
+ "required": false,
1539
+ "optional": true,
1540
+ "docs": {
1541
+ "tags": [],
1542
+ "text": "The name of the form control. Submitted with the form as part of a name/value pair."
1543
+ },
1544
+ "getter": false,
1545
+ "setter": false,
1546
+ "reflect": true,
1547
+ "attribute": "name"
1548
+ },
1549
+ "customOptionLayouts": {
1550
+ "type": "boolean",
1551
+ "mutable": false,
1552
+ "complexType": {
1553
+ "original": "boolean",
1554
+ "resolved": "boolean",
1555
+ "references": {}
1556
+ },
1557
+ "required": false,
1558
+ "optional": false,
1559
+ "docs": {
1560
+ "tags": [{
1561
+ "name": "default",
1562
+ "text": "false"
1563
+ }],
1564
+ "text": "Enable custom layout content for options. Options with data-layout attribute will render their HTML content.\n\u26A0\uFE0F Security Warning: Only use with trusted content. Basic XSS protection is applied, but avoid user-generated content."
1565
+ },
1566
+ "getter": false,
1567
+ "setter": false,
1568
+ "reflect": false,
1569
+ "attribute": "custom-option-layouts",
1570
+ "defaultValue": "false"
1571
+ },
1572
+ "customTriggerContent": {
1573
+ "type": "boolean",
1574
+ "mutable": false,
1575
+ "complexType": {
1576
+ "original": "boolean",
1577
+ "resolved": "boolean",
1578
+ "references": {}
1579
+ },
1580
+ "required": false,
1581
+ "optional": false,
1582
+ "docs": {
1583
+ "tags": [{
1584
+ "name": "default",
1585
+ "text": "false"
1586
+ }],
1587
+ "text": "Enable custom layout content for the button trigger via the trigger-content slot.\nWhen true, uses slot content for initial state but updates dynamically with selected option layout.\n\u26A0\uFE0F Security Warning: Only use with trusted content. Basic XSS protection is applied, but avoid user-generated content."
1588
+ },
1589
+ "getter": false,
1590
+ "setter": false,
1591
+ "reflect": false,
1592
+ "attribute": "custom-trigger-content",
1593
+ "defaultValue": "false"
1594
+ },
1595
+ "disabled": {
1596
+ "type": "boolean",
1597
+ "mutable": false,
1598
+ "complexType": {
1599
+ "original": "boolean",
1600
+ "resolved": "boolean",
1601
+ "references": {}
1602
+ },
1603
+ "required": false,
1604
+ "optional": false,
1605
+ "docs": {
1606
+ "tags": [],
1607
+ "text": "If true, the combobox is disabled."
1608
+ },
1609
+ "getter": false,
1610
+ "setter": false,
1611
+ "reflect": false,
1612
+ "attribute": "disabled",
1613
+ "defaultValue": "false"
1614
+ },
1615
+ "errorMessage": {
1616
+ "type": "string",
1617
+ "mutable": false,
1618
+ "complexType": {
1619
+ "original": "string",
1620
+ "resolved": "string",
1621
+ "references": {}
1622
+ },
1623
+ "required": false,
1624
+ "optional": true,
1625
+ "docs": {
1626
+ "tags": [],
1627
+ "text": "Error message to display."
1628
+ },
1629
+ "getter": false,
1630
+ "setter": false,
1631
+ "reflect": false,
1632
+ "attribute": "error-message"
1633
+ },
1634
+ "dropdownPlacement": {
1635
+ "type": "string",
1636
+ "mutable": false,
1637
+ "complexType": {
1638
+ "original": "'bottom-start' | 'bottom-end' | 'top-start' | 'top-end'",
1639
+ "resolved": "\"bottom-end\" | \"bottom-start\" | \"top-end\" | \"top-start\"",
1640
+ "references": {}
1641
+ },
1642
+ "required": false,
1643
+ "optional": false,
1644
+ "docs": {
1645
+ "tags": [{
1646
+ "name": "default",
1647
+ "text": "'bottom-start'"
1648
+ }],
1649
+ "text": "Placement of the dropdown relative to the trigger."
1650
+ },
1651
+ "getter": false,
1652
+ "setter": false,
1653
+ "reflect": false,
1654
+ "attribute": "dropdown-placement",
1655
+ "defaultValue": "'bottom-start'"
1656
+ },
1657
+ "dropdownWidth": {
1658
+ "type": "string",
1659
+ "mutable": false,
1660
+ "complexType": {
1661
+ "original": "string",
1662
+ "resolved": "string",
1663
+ "references": {}
1664
+ },
1665
+ "required": false,
1666
+ "optional": false,
1667
+ "docs": {
1668
+ "tags": [{
1669
+ "name": "default",
1670
+ "text": "'236px'"
1671
+ }],
1672
+ "text": "Width of the dropdown. Any valid CSS width value."
1673
+ },
1674
+ "getter": false,
1675
+ "setter": false,
1676
+ "reflect": false,
1677
+ "attribute": "dropdown-width",
1678
+ "defaultValue": "'236px'"
1679
+ },
1680
+ "dropdownMount": {
1681
+ "type": "string",
1682
+ "mutable": false,
1683
+ "complexType": {
1684
+ "original": "'host' | 'body'",
1685
+ "resolved": "\"body\" | \"host\"",
1686
+ "references": {}
1687
+ },
1688
+ "required": false,
1689
+ "optional": false,
1690
+ "docs": {
1691
+ "tags": [{
1692
+ "name": "default",
1693
+ "text": "'host'"
1694
+ }],
1695
+ "text": "Where to mount the dropdown listbox (`host` or `body`, sometimes called \u201Cappend to body\u201D).\nUse `body` inside scrollable containers (for example modals) so the list is not clipped by\n`overflow: hidden` ancestors. The portal is appended to the nearest `<dialog>` when present\n(including `pds-modal` / `showModal()`), using a composed ascent so shadow DOM and slot\nboundaries do not hide the dialog from discovery; otherwise it is appended to `document.body`.\nKeyboard focus remains on the trigger via\n`aria-activedescendant` so modal focus traps continue to work. Custom `empty` and `loading`\nslots are not supported when `body` is used; the default empty and loading content is shown instead."
1696
+ },
1697
+ "getter": false,
1698
+ "setter": false,
1699
+ "reflect": false,
1700
+ "attribute": "dropdown-mount",
1701
+ "defaultValue": "'host'"
1702
+ },
1703
+ "helperMessage": {
1704
+ "type": "string",
1705
+ "mutable": false,
1706
+ "complexType": {
1707
+ "original": "string",
1708
+ "resolved": "string",
1709
+ "references": {}
1710
+ },
1711
+ "required": false,
1712
+ "optional": true,
1713
+ "docs": {
1714
+ "tags": [],
1715
+ "text": "Helper message to display below the combobox."
1716
+ },
1717
+ "getter": false,
1718
+ "setter": false,
1719
+ "reflect": false,
1720
+ "attribute": "helper-message"
1721
+ },
1722
+ "hideLabel": {
1723
+ "type": "boolean",
1724
+ "mutable": false,
1725
+ "complexType": {
1726
+ "original": "boolean",
1727
+ "resolved": "boolean",
1728
+ "references": {}
1729
+ },
1730
+ "required": false,
1731
+ "optional": false,
1732
+ "docs": {
1733
+ "tags": [],
1734
+ "text": "Visually hides the label text for instances where only the combobox should be displayed.\nThe visible `<label>` is omitted (same pattern as `pds-select`) so label spacing does not reserve layout;\nthe trigger uses `aria-label` so the name stays available to assistive technology."
1735
+ },
1736
+ "getter": false,
1737
+ "setter": false,
1738
+ "reflect": false,
1739
+ "attribute": "hide-label",
1740
+ "defaultValue": "false"
1741
+ },
1742
+ "invalid": {
1743
+ "type": "boolean",
1744
+ "mutable": false,
1745
+ "complexType": {
1746
+ "original": "boolean",
1747
+ "resolved": "boolean",
1748
+ "references": {}
1749
+ },
1750
+ "required": false,
1751
+ "optional": true,
1752
+ "docs": {
1753
+ "tags": [],
1754
+ "text": "If true, the combobox is in an invalid state."
1755
+ },
1756
+ "getter": false,
1757
+ "setter": false,
1758
+ "reflect": false,
1759
+ "attribute": "invalid"
1760
+ },
1761
+ "label": {
1762
+ "type": "string",
1763
+ "mutable": false,
1764
+ "complexType": {
1765
+ "original": "string",
1766
+ "resolved": "string",
1767
+ "references": {}
1768
+ },
1769
+ "required": false,
1770
+ "optional": true,
1771
+ "docs": {
1772
+ "tags": [],
1773
+ "text": "Text to be displayed as the combobox label."
1774
+ },
1775
+ "getter": false,
1776
+ "setter": false,
1777
+ "reflect": false,
1778
+ "attribute": "label"
1779
+ },
1780
+ "maxHeight": {
1781
+ "type": "string",
1782
+ "mutable": false,
1783
+ "complexType": {
1784
+ "original": "string",
1785
+ "resolved": "string",
1786
+ "references": {}
1787
+ },
1788
+ "required": false,
1789
+ "optional": true,
1790
+ "docs": {
1791
+ "tags": [],
1792
+ "text": "Maximum height of the dropdown. Can be any valid CSS height value (e.g., '200px', '10rem').\nWhen content exceeds this height, the dropdown will scroll."
1793
+ },
1794
+ "getter": false,
1795
+ "setter": false,
1796
+ "reflect": false,
1797
+ "attribute": "max-height"
1798
+ },
1799
+ "mode": {
1800
+ "type": "string",
1801
+ "mutable": false,
1802
+ "complexType": {
1803
+ "original": "'filter' | 'select-only'",
1804
+ "resolved": "\"filter\" | \"select-only\"",
1805
+ "references": {}
1806
+ },
1807
+ "required": false,
1808
+ "optional": false,
1809
+ "docs": {
1810
+ "tags": [{
1811
+ "name": "default",
1812
+ "text": "'filter'"
1813
+ }],
1814
+ "text": "Determines the combobox mode: 'filter' (filter options as you type) or 'select-only' (show all options).\nIn filter mode, reopening the menu while the input still shows the label of the selected option temporarily lists\nall options until you type (so you can switch to a different choice without clearing the field first)."
1815
+ },
1816
+ "getter": false,
1817
+ "setter": false,
1818
+ "reflect": false,
1819
+ "attribute": "mode",
1820
+ "defaultValue": "'filter'"
1821
+ },
1822
+ "placeholder": {
1823
+ "type": "string",
1824
+ "mutable": false,
1825
+ "complexType": {
1826
+ "original": "string",
1827
+ "resolved": "string",
1828
+ "references": {}
1829
+ },
1830
+ "required": false,
1831
+ "optional": true,
1832
+ "docs": {
1833
+ "tags": [],
1834
+ "text": "Placeholder text for the input field."
1835
+ },
1836
+ "getter": false,
1837
+ "setter": false,
1838
+ "reflect": false,
1839
+ "attribute": "placeholder"
1840
+ },
1841
+ "trigger": {
1842
+ "type": "string",
1843
+ "mutable": false,
1844
+ "complexType": {
1845
+ "original": "'input' | 'button' | 'chip'",
1846
+ "resolved": "\"button\" | \"chip\" | \"input\"",
1847
+ "references": {}
1848
+ },
1849
+ "required": false,
1850
+ "optional": false,
1851
+ "docs": {
1852
+ "tags": [{
1853
+ "name": "default",
1854
+ "text": "'input'"
1855
+ }],
1856
+ "text": "Determines the combobox trigger: 'input' (editable input), 'button' (button-like, non-editable), or 'chip' (chip-like, non-editable)."
1857
+ },
1858
+ "getter": false,
1859
+ "setter": false,
1860
+ "reflect": false,
1861
+ "attribute": "trigger",
1862
+ "defaultValue": "'input'"
1863
+ },
1864
+ "triggerWidth": {
1865
+ "type": "string",
1866
+ "mutable": false,
1867
+ "complexType": {
1868
+ "original": "string",
1869
+ "resolved": "string",
1870
+ "references": {}
1871
+ },
1872
+ "required": false,
1873
+ "optional": false,
1874
+ "docs": {
1875
+ "tags": [{
1876
+ "name": "default",
1877
+ "text": "'fit-content'"
1878
+ }],
1879
+ "text": "Width of the trigger (button or input). Any valid CSS width value."
1880
+ },
1881
+ "getter": false,
1882
+ "setter": false,
1883
+ "reflect": false,
1884
+ "attribute": "trigger-width",
1885
+ "defaultValue": "'fit-content'"
1886
+ },
1887
+ "triggerVariant": {
1888
+ "type": "string",
1889
+ "mutable": false,
1890
+ "complexType": {
1891
+ "original": "'secondary' | 'primary' | 'accent' | 'destructive'",
1892
+ "resolved": "\"accent\" | \"destructive\" | \"primary\" | \"secondary\"",
1893
+ "references": {}
1894
+ },
1895
+ "required": false,
1896
+ "optional": false,
1897
+ "docs": {
1898
+ "tags": [{
1899
+ "name": "default",
1900
+ "text": "'secondary'"
1901
+ }],
1902
+ "text": "The visual variant for the button trigger. Matches Pine button variants."
1903
+ },
1904
+ "getter": false,
1905
+ "setter": false,
1906
+ "reflect": false,
1907
+ "attribute": "trigger-variant",
1908
+ "defaultValue": "'secondary'"
1909
+ },
1910
+ "triggerShape": {
1911
+ "type": "string",
1912
+ "mutable": false,
1913
+ "complexType": {
1914
+ "original": "'pill' | 'input'",
1915
+ "resolved": "\"input\" | \"pill\"",
1916
+ "references": {}
1917
+ },
1918
+ "required": false,
1919
+ "optional": false,
1920
+ "docs": {
1921
+ "tags": [{
1922
+ "name": "default",
1923
+ "text": "'pill'"
1924
+ }],
1925
+ "text": "The shape of the button trigger. Use 'input' to render the trigger with input-like styling\n(subtle border radius, input height) for use in form or filter rows alongside PdsSelect and PdsMultiselect."
1926
+ },
1927
+ "getter": false,
1928
+ "setter": false,
1929
+ "reflect": false,
1930
+ "attribute": "trigger-shape",
1931
+ "defaultValue": "'pill'"
1932
+ },
1933
+ "chipSentiment": {
1934
+ "type": "string",
1935
+ "mutable": false,
1936
+ "complexType": {
1937
+ "original": "ChipSentimentType",
1938
+ "resolved": "\"accent\" | \"brand\" | \"danger\" | \"info\" | \"neutral\" | \"success\" | \"warning\"",
1939
+ "references": {
1940
+ "ChipSentimentType": {
1941
+ "location": "import",
1942
+ "path": "@utils/types",
1943
+ "id": "src/utils/types.ts::ChipSentimentType",
1944
+ "referenceLocation": "ChipSentimentType"
1945
+ }
1946
+ }
1947
+ },
1948
+ "required": false,
1949
+ "optional": false,
1950
+ "docs": {
1951
+ "tags": [{
1952
+ "name": "default",
1953
+ "text": "'neutral'"
1954
+ }],
1955
+ "text": "The sentiment for the chip trigger. Matches Pine chip sentiments."
1956
+ },
1957
+ "getter": false,
1958
+ "setter": false,
1959
+ "reflect": false,
1960
+ "attribute": "chip-sentiment",
1961
+ "defaultValue": "'neutral'"
1962
+ },
1963
+ "chipLarge": {
1964
+ "type": "boolean",
1965
+ "mutable": false,
1966
+ "complexType": {
1967
+ "original": "boolean",
1968
+ "resolved": "boolean",
1969
+ "references": {}
1970
+ },
1971
+ "required": false,
1972
+ "optional": false,
1973
+ "docs": {
1974
+ "tags": [{
1975
+ "name": "default",
1976
+ "text": "false"
1977
+ }],
1978
+ "text": "Whether the chip trigger should be displayed in a larger size."
1979
+ },
1980
+ "getter": false,
1981
+ "setter": false,
1982
+ "reflect": false,
1983
+ "attribute": "chip-large",
1984
+ "defaultValue": "false"
1985
+ },
1986
+ "chipIcon": {
1987
+ "type": "string",
1988
+ "mutable": false,
1989
+ "complexType": {
1990
+ "original": "string",
1991
+ "resolved": "string",
1992
+ "references": {}
1993
+ },
1994
+ "required": false,
1995
+ "optional": true,
1996
+ "docs": {
1997
+ "tags": [],
1998
+ "text": "The name of the icon to display in the chip trigger."
1999
+ },
2000
+ "getter": false,
2001
+ "setter": false,
2002
+ "reflect": false,
2003
+ "attribute": "chip-icon"
2004
+ },
2005
+ "chipDot": {
2006
+ "type": "boolean",
2007
+ "mutable": false,
2008
+ "complexType": {
2009
+ "original": "boolean",
2010
+ "resolved": "boolean",
2011
+ "references": {}
2012
+ },
2013
+ "required": false,
2014
+ "optional": false,
2015
+ "docs": {
2016
+ "tags": [{
2017
+ "name": "default",
2018
+ "text": "false"
2019
+ }],
2020
+ "text": "Whether a dot should be displayed on the chip trigger."
2021
+ },
2022
+ "getter": false,
2023
+ "setter": false,
2024
+ "reflect": false,
2025
+ "attribute": "chip-dot",
2026
+ "defaultValue": "false"
2027
+ },
2028
+ "value": {
2029
+ "type": "string",
2030
+ "mutable": true,
2031
+ "complexType": {
2032
+ "original": "string",
2033
+ "resolved": "string",
2034
+ "references": {}
2035
+ },
2036
+ "required": false,
2037
+ "optional": false,
2038
+ "docs": {
2039
+ "tags": [],
2040
+ "text": "The value of the combobox input."
2041
+ },
2042
+ "getter": false,
2043
+ "setter": false,
2044
+ "reflect": false,
2045
+ "attribute": "value",
2046
+ "defaultValue": "''"
2047
+ },
2048
+ "asyncUrl": {
2049
+ "type": "string",
2050
+ "mutable": false,
2051
+ "complexType": {
2052
+ "original": "string",
2053
+ "resolved": "string",
2054
+ "references": {}
2055
+ },
2056
+ "required": false,
2057
+ "optional": true,
2058
+ "docs": {
2059
+ "tags": [],
2060
+ "text": "URL endpoint for async data fetching."
2061
+ },
2062
+ "getter": false,
2063
+ "setter": false,
2064
+ "reflect": false,
2065
+ "attribute": "async-url"
2066
+ },
2067
+ "asyncMethod": {
2068
+ "type": "string",
2069
+ "mutable": false,
2070
+ "complexType": {
2071
+ "original": "'GET' | 'POST'",
2072
+ "resolved": "\"GET\" | \"POST\"",
2073
+ "references": {}
2074
+ },
2075
+ "required": false,
2076
+ "optional": false,
2077
+ "docs": {
2078
+ "tags": [],
2079
+ "text": "HTTP method for async requests."
2080
+ },
2081
+ "getter": false,
2082
+ "setter": false,
2083
+ "reflect": false,
2084
+ "attribute": "async-method",
2085
+ "defaultValue": "'GET'"
2086
+ },
2087
+ "debounce": {
2088
+ "type": "number",
2089
+ "mutable": false,
2090
+ "complexType": {
2091
+ "original": "number",
2092
+ "resolved": "number",
2093
+ "references": {}
2094
+ },
2095
+ "required": false,
2096
+ "optional": false,
2097
+ "docs": {
2098
+ "tags": [],
2099
+ "text": "Debounce delay in milliseconds for search/fetch."
2100
+ },
2101
+ "getter": false,
2102
+ "setter": false,
2103
+ "reflect": false,
2104
+ "attribute": "debounce",
2105
+ "defaultValue": "300"
2106
+ },
2107
+ "fetchTimeout": {
2108
+ "type": "number",
2109
+ "mutable": false,
2110
+ "complexType": {
2111
+ "original": "number",
2112
+ "resolved": "number",
2113
+ "references": {}
2114
+ },
2115
+ "required": false,
2116
+ "optional": false,
2117
+ "docs": {
2118
+ "tags": [],
2119
+ "text": "Timeout in milliseconds for async fetch requests."
2120
+ },
2121
+ "getter": false,
2122
+ "setter": false,
2123
+ "reflect": false,
2124
+ "attribute": "fetch-timeout",
2125
+ "defaultValue": "30000"
2126
+ },
2127
+ "loading": {
2128
+ "type": "boolean",
2129
+ "mutable": true,
2130
+ "complexType": {
2131
+ "original": "boolean",
2132
+ "resolved": "boolean",
2133
+ "references": {}
2134
+ },
2135
+ "required": false,
2136
+ "optional": false,
2137
+ "docs": {
2138
+ "tags": [],
2139
+ "text": "Whether the component is currently loading async options."
2140
+ },
2141
+ "getter": false,
2142
+ "setter": false,
2143
+ "reflect": false,
2144
+ "attribute": "loading",
2145
+ "defaultValue": "false"
2146
+ },
2147
+ "options": {
2148
+ "type": "unknown",
2149
+ "mutable": false,
2150
+ "complexType": {
2151
+ "original": "ComboboxOption[]",
2152
+ "resolved": "ComboboxOption[]",
2153
+ "references": {
2154
+ "ComboboxOption": {
2155
+ "location": "import",
2156
+ "path": "./combobox-interface",
2157
+ "id": "src/components/pds-combobox/combobox-interface.ts::ComboboxOption",
2158
+ "referenceLocation": "ComboboxOption"
2159
+ }
2160
+ }
2161
+ },
2162
+ "required": false,
2163
+ "optional": true,
2164
+ "docs": {
2165
+ "tags": [],
2166
+ "text": "Options provided externally (for consumer-managed async)."
2167
+ },
2168
+ "getter": false,
2169
+ "setter": false
2170
+ },
2171
+ "formatResult": {
2172
+ "type": "unknown",
2173
+ "mutable": false,
2174
+ "complexType": {
2175
+ "original": "(item: unknown) => ComboboxOption",
2176
+ "resolved": "(item: unknown) => ComboboxOption",
2177
+ "references": {
2178
+ "ComboboxOption": {
2179
+ "location": "import",
2180
+ "path": "./combobox-interface",
2181
+ "id": "src/components/pds-combobox/combobox-interface.ts::ComboboxOption",
2182
+ "referenceLocation": "ComboboxOption"
2183
+ }
2184
+ }
2185
+ },
2186
+ "required": false,
2187
+ "optional": true,
2188
+ "docs": {
2189
+ "tags": [],
2190
+ "text": "Function to format async results. Receives raw API response item."
2191
+ },
2192
+ "getter": false,
2193
+ "setter": false
2194
+ }
2195
+ };
2196
+ }
2197
+ static get states() {
2198
+ return {
2199
+ "displayText": {},
2200
+ "filteredItems": {},
2201
+ "highlightedIndex": {},
2202
+ "isOpen": {},
2203
+ "selectedOption": {},
2204
+ "selectedOptionLayoutContent": {},
2205
+ "selectedOptionChipProps": {},
2206
+ "internalOptions": {},
2207
+ "currentPage": {},
2208
+ "hasMore": {}
2209
+ };
2210
+ }
2211
+ static get events() {
2212
+ return [{
2213
+ "method": "pdsComboboxChange",
2214
+ "name": "pdsComboboxChange",
2215
+ "bubbles": true,
2216
+ "cancelable": true,
2217
+ "composed": true,
2218
+ "docs": {
2219
+ "tags": [],
2220
+ "text": "Emitted when the value changes."
2221
+ },
2222
+ "complexType": {
2223
+ "original": "{ value: string }",
2224
+ "resolved": "{ value: string; }",
2225
+ "references": {}
2226
+ }
2227
+ }, {
2228
+ "method": "pdsComboboxSearch",
2229
+ "name": "pdsComboboxSearch",
2230
+ "bubbles": true,
2231
+ "cancelable": true,
2232
+ "composed": true,
2233
+ "docs": {
2234
+ "tags": [],
2235
+ "text": "Emitted on search input (for consumer-managed async)."
2236
+ },
2237
+ "complexType": {
2238
+ "original": "ComboboxSearchEventDetail",
2239
+ "resolved": "ComboboxSearchEventDetail",
2240
+ "references": {
2241
+ "ComboboxSearchEventDetail": {
2242
+ "location": "import",
2243
+ "path": "./combobox-interface",
2244
+ "id": "src/components/pds-combobox/combobox-interface.ts::ComboboxSearchEventDetail",
2245
+ "referenceLocation": "ComboboxSearchEventDetail"
2246
+ }
2247
+ }
2248
+ }
2249
+ }, {
2250
+ "method": "pdsComboboxLoadOptions",
2251
+ "name": "pdsComboboxLoadOptions",
2252
+ "bubbles": true,
2253
+ "cancelable": true,
2254
+ "composed": true,
2255
+ "docs": {
2256
+ "tags": [],
2257
+ "text": "Emitted to request more options (pagination)."
2258
+ },
2259
+ "complexType": {
2260
+ "original": "ComboboxLoadOptionsEventDetail",
2261
+ "resolved": "ComboboxLoadOptionsEventDetail",
2262
+ "references": {
2263
+ "ComboboxLoadOptionsEventDetail": {
2264
+ "location": "import",
2265
+ "path": "./combobox-interface",
2266
+ "id": "src/components/pds-combobox/combobox-interface.ts::ComboboxLoadOptionsEventDetail",
2267
+ "referenceLocation": "ComboboxLoadOptionsEventDetail"
2268
+ }
2269
+ }
2270
+ }
2271
+ }];
2272
+ }
2273
+ static get methods() {
2274
+ return {
2275
+ "setFocus": {
2276
+ "complexType": {
2277
+ "signature": "() => Promise<void>",
2278
+ "parameters": [],
2279
+ "references": {
2280
+ "Promise": {
2281
+ "location": "global",
2282
+ "id": "global::Promise"
2283
+ }
2284
+ },
2285
+ "return": "Promise<void>"
2286
+ },
2287
+ "docs": {
2288
+ "text": "Sets focus on the native input element.",
2289
+ "tags": []
2290
+ }
2291
+ },
2292
+ "getSelectedValue": {
2293
+ "complexType": {
2294
+ "signature": "() => Promise<string | null>",
2295
+ "parameters": [],
2296
+ "references": {
2297
+ "Promise": {
2298
+ "location": "global",
2299
+ "id": "global::Promise"
2300
+ }
2301
+ },
2302
+ "return": "Promise<string>"
2303
+ },
2304
+ "docs": {
2305
+ "text": "Gets the value of the currently selected option.",
2306
+ "tags": []
2307
+ }
2308
+ },
2309
+ "clear": {
2310
+ "complexType": {
2311
+ "signature": "() => Promise<void>",
2312
+ "parameters": [],
2313
+ "references": {
2314
+ "Promise": {
2315
+ "location": "global",
2316
+ "id": "global::Promise"
2317
+ }
2318
+ },
2319
+ "return": "Promise<void>"
2320
+ },
2321
+ "docs": {
2322
+ "text": "Clears the selected value and resets the component.",
2323
+ "tags": []
2324
+ }
2325
+ }
2326
+ };
2327
+ }
2328
+ static get elementRef() { return "el"; }
2329
+ static get watchers() {
2330
+ return [{
2331
+ "propName": "isOpen",
2332
+ "methodName": "isOpenChanged"
2333
+ }, {
2334
+ "propName": "debounce",
2335
+ "methodName": "setupDebounce"
2336
+ }, {
2337
+ "propName": "options",
2338
+ "methodName": "optionsChanged"
2339
+ }, {
2340
+ "propName": "value",
2341
+ "methodName": "handleValueChange"
2342
+ }, {
2343
+ "propName": "selectedOption",
2344
+ "methodName": "handleSelectedOptionChange"
2345
+ }];
2346
+ }
2347
+ }