@pine-ds/core 3.5.2 → 3.7.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 (685) hide show
  1. package/components/index.d.ts +4 -0
  2. package/components/index.js +2 -0
  3. package/components/index.js.map +1 -1
  4. package/components/index2.js +3 -1
  5. package/components/index2.js.map +1 -1
  6. package/components/mock-pds-modal.js +9 -4
  7. package/components/mock-pds-modal.js.map +1 -1
  8. package/components/pds-avatar.js +1 -1
  9. package/components/pds-box2.js +132 -2
  10. package/components/pds-box2.js.map +1 -1
  11. package/components/pds-button2.js +58 -6
  12. package/components/pds-button2.js.map +1 -1
  13. package/components/pds-checkbox2.js +1 -1
  14. package/components/pds-combobox.js +349 -39
  15. package/components/pds-combobox.js.map +1 -1
  16. package/components/pds-copytext.js +1 -1
  17. package/components/pds-dropdown-menu-separator.js +1 -1
  18. package/components/pds-dropdown-menu-separator.js.map +1 -1
  19. package/components/pds-filter.d.ts +11 -0
  20. package/components/pds-filter.js +518 -0
  21. package/components/pds-filter.js.map +1 -0
  22. package/components/pds-filters.d.ts +11 -0
  23. package/components/pds-filters.js +38 -0
  24. package/components/pds-filters.js.map +1 -0
  25. package/components/pds-image.js +2 -2
  26. package/components/pds-input.js +2 -2
  27. package/components/pds-link2.js +2 -2
  28. package/components/pds-loader2.js +1 -1
  29. package/components/pds-modal-content.js +128 -11
  30. package/components/pds-modal-content.js.map +1 -1
  31. package/components/pds-modal-footer.js +1 -1
  32. package/components/pds-modal-header.js +1 -1
  33. package/components/pds-modal.js +13 -3
  34. package/components/pds-modal.js.map +1 -1
  35. package/components/pds-popover.js +1 -1
  36. package/components/pds-progress.js +1 -1
  37. package/components/pds-property.js +1 -1
  38. package/components/pds-radio.js +4 -4
  39. package/components/pds-row.js +1 -1
  40. package/components/pds-select.js +2 -2
  41. package/components/pds-sortable-item.js +1 -1
  42. package/components/pds-sortable.js +1 -1
  43. package/components/pds-switch.js +4 -4
  44. package/components/pds-tab.js +4 -4
  45. package/components/pds-tab.js.map +1 -1
  46. package/components/pds-table-body.js +1 -1
  47. package/components/pds-table-cell2.js +2 -2
  48. package/components/pds-table-head-cell2.js +2 -2
  49. package/components/pds-table-head.js +1 -1
  50. package/components/pds-table-row.js +1 -1
  51. package/components/pds-tabpanel.js +1 -1
  52. package/components/pds-tabs.js +1 -1
  53. package/components/pds-tabs.js.map +1 -1
  54. package/components/pds-text2.js +1 -1
  55. package/components/pds-textarea.js +112 -8
  56. package/components/pds-textarea.js.map +1 -1
  57. package/components/pds-toast.js +3 -3
  58. package/components/pds-tooltip.js +2 -2
  59. package/dist/cjs/{index-DVaLegMK.js → index-CTirFLR-.js} +6 -2
  60. package/dist/cjs/{index-DVaLegMK.js.map → index-CTirFLR-.js.map} +1 -1
  61. package/dist/cjs/{index-g-uSeICs.js → index-DDTyvZD7.js} +5 -2
  62. package/dist/cjs/index-DDTyvZD7.js.map +1 -0
  63. package/dist/cjs/index.cjs.js +1 -1
  64. package/dist/cjs/loader.cjs.js +2 -2
  65. package/dist/cjs/mock-pds-modal.cjs.entry.js +9 -5
  66. package/dist/cjs/mock-pds-modal.cjs.entry.js.map +1 -1
  67. package/dist/cjs/mock-pds-modal.entry.cjs.js.map +1 -1
  68. package/dist/cjs/pds-accordion.cjs.entry.js +2 -2
  69. package/dist/cjs/pds-alert.cjs.entry.js +1 -1
  70. package/dist/cjs/pds-avatar.cjs.entry.js +2 -2
  71. package/dist/cjs/pds-box.cjs.entry.js +68 -3
  72. package/dist/cjs/pds-box.cjs.entry.js.map +1 -1
  73. package/dist/cjs/pds-box.entry.cjs.js.map +1 -1
  74. package/dist/cjs/pds-button.cjs.entry.js +58 -6
  75. package/dist/cjs/pds-button.cjs.entry.js.map +1 -1
  76. package/dist/cjs/pds-button.entry.cjs.js.map +1 -1
  77. package/dist/cjs/pds-checkbox.cjs.entry.js +2 -2
  78. package/dist/cjs/pds-chip.cjs.entry.js +2 -2
  79. package/dist/cjs/pds-combobox.cjs.entry.js +349 -39
  80. package/dist/cjs/pds-combobox.cjs.entry.js.map +1 -1
  81. package/dist/cjs/pds-combobox.entry.cjs.js.map +1 -1
  82. package/dist/cjs/pds-copytext.cjs.entry.js +2 -2
  83. package/dist/cjs/pds-divider.cjs.entry.js +1 -1
  84. package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +1 -1
  85. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +2 -2
  86. package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js.map +1 -1
  87. package/dist/cjs/pds-dropdown-menu-separator.entry.cjs.js.map +1 -1
  88. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +1 -1
  89. package/dist/cjs/pds-filter.cjs.entry.js +488 -0
  90. package/dist/cjs/pds-filter.cjs.entry.js.map +1 -0
  91. package/dist/cjs/pds-filter.entry.cjs.js.map +1 -0
  92. package/dist/cjs/pds-filters.cjs.entry.js +20 -0
  93. package/dist/cjs/pds-filters.cjs.entry.js.map +1 -0
  94. package/dist/cjs/pds-filters.entry.cjs.js.map +1 -0
  95. package/dist/cjs/pds-icon.cjs.entry.js +1 -1
  96. package/dist/cjs/pds-image.cjs.entry.js +3 -3
  97. package/dist/cjs/pds-input.cjs.entry.js +3 -3
  98. package/dist/cjs/pds-link.cjs.entry.js +4 -4
  99. package/dist/cjs/pds-loader.cjs.entry.js +2 -2
  100. package/dist/cjs/pds-modal-content.cjs.entry.js +129 -12
  101. package/dist/cjs/pds-modal-content.cjs.entry.js.map +1 -1
  102. package/dist/cjs/pds-modal-content.entry.cjs.js.map +1 -1
  103. package/dist/cjs/pds-modal-footer.cjs.entry.js +2 -2
  104. package/dist/cjs/pds-modal-header.cjs.entry.js +2 -2
  105. package/dist/cjs/pds-modal.cjs.entry.js +13 -4
  106. package/dist/cjs/pds-modal.cjs.entry.js.map +1 -1
  107. package/dist/cjs/pds-modal.entry.cjs.js.map +1 -1
  108. package/dist/cjs/pds-popover.cjs.entry.js +2 -2
  109. package/dist/cjs/pds-progress.cjs.entry.js +2 -2
  110. package/dist/cjs/pds-property.cjs.entry.js +2 -2
  111. package/dist/cjs/pds-radio.cjs.entry.js +5 -5
  112. package/dist/cjs/pds-row.cjs.entry.js +2 -2
  113. package/dist/cjs/pds-select.cjs.entry.js +3 -3
  114. package/dist/cjs/pds-sortable-item.cjs.entry.js +3 -3
  115. package/dist/cjs/pds-sortable.cjs.entry.js +2 -2
  116. package/dist/cjs/pds-switch.cjs.entry.js +5 -5
  117. package/dist/cjs/pds-tab.cjs.entry.js +5 -5
  118. package/dist/cjs/pds-tab.cjs.entry.js.map +1 -1
  119. package/dist/cjs/pds-tab.entry.cjs.js.map +1 -1
  120. package/dist/cjs/pds-table-body.cjs.entry.js +2 -2
  121. package/dist/cjs/pds-table-cell.cjs.entry.js +3 -3
  122. package/dist/cjs/pds-table-head-cell.cjs.entry.js +4 -4
  123. package/dist/cjs/pds-table-head.cjs.entry.js +2 -2
  124. package/dist/cjs/pds-table-row.cjs.entry.js +2 -2
  125. package/dist/cjs/pds-table.cjs.entry.js +1 -1
  126. package/dist/cjs/pds-tabpanel.cjs.entry.js +2 -2
  127. package/dist/cjs/pds-tabs.cjs.entry.js +2 -2
  128. package/dist/cjs/pds-tabs.cjs.entry.js.map +1 -1
  129. package/dist/cjs/pds-tabs.entry.cjs.js.map +1 -1
  130. package/dist/cjs/pds-text.cjs.entry.js +2 -2
  131. package/dist/cjs/pds-textarea.cjs.entry.js +110 -8
  132. package/dist/cjs/pds-textarea.cjs.entry.js.map +1 -1
  133. package/dist/cjs/pds-textarea.entry.cjs.js.map +1 -1
  134. package/dist/cjs/pds-toast.cjs.entry.js +4 -4
  135. package/dist/cjs/pds-tooltip.cjs.entry.js +3 -3
  136. package/dist/cjs/pine-core.cjs.js +2 -2
  137. package/dist/collection/collection-manifest.json +2 -0
  138. package/dist/collection/components/pds-box/pds-box.css +1325 -0
  139. package/dist/collection/components/pds-box/pds-box.js +1913 -148
  140. package/dist/collection/components/pds-box/pds-box.js.map +1 -1
  141. package/dist/collection/components/pds-button/pds-button.css +23 -0
  142. package/dist/collection/components/pds-button/pds-button.js +67 -6
  143. package/dist/collection/components/pds-button/pds-button.js.map +1 -1
  144. package/dist/collection/components/pds-button/stories/pds-button.stories.js +28 -1
  145. package/dist/collection/components/pds-combobox/pds-combobox.css +39 -1
  146. package/dist/collection/components/pds-combobox/pds-combobox.js +348 -38
  147. package/dist/collection/components/pds-combobox/pds-combobox.js.map +1 -1
  148. package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +103 -0
  149. package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.css +4 -1
  150. package/dist/collection/components/pds-filters/pds-filter/filter-interface.js +2 -0
  151. package/dist/collection/components/pds-filters/pds-filter/filter-interface.js.map +1 -0
  152. package/dist/collection/components/pds-filters/pds-filter/pds-filter.css +193 -0
  153. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +732 -0
  154. package/dist/collection/components/pds-filters/pds-filter/pds-filter.js.map +1 -0
  155. package/dist/collection/components/pds-filters/pds-filter/stories/pds-filter.stories.js +93 -0
  156. package/dist/collection/components/pds-filters/pds-filters.css +10 -0
  157. package/dist/collection/components/pds-filters/pds-filters.js +45 -0
  158. package/dist/collection/components/pds-filters/pds-filters.js.map +1 -0
  159. package/dist/collection/components/pds-filters/stories/pds-filters.stories.js +40 -0
  160. package/dist/collection/components/pds-image/pds-image.js +2 -2
  161. package/dist/collection/components/pds-input/pds-input.js +1 -1
  162. package/dist/collection/components/pds-link/pds-link.js +2 -2
  163. package/dist/collection/components/pds-loader/pds-loader.js +1 -1
  164. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.css +4 -6
  165. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +128 -11
  166. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js.map +1 -1
  167. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +1 -1
  168. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +1 -1
  169. package/dist/collection/components/pds-modal/pds-modal.css +42 -1
  170. package/dist/collection/components/pds-modal/pds-modal.js +34 -2
  171. package/dist/collection/components/pds-modal/pds-modal.js.map +1 -1
  172. package/dist/collection/components/pds-modal/stories/pds-modal.stories.js +245 -0
  173. package/dist/collection/components/pds-modal/test/mock-pds-modal.js +30 -3
  174. package/dist/collection/components/pds-modal/test/mock-pds-modal.js.map +1 -1
  175. package/dist/collection/components/pds-popover/pds-popover.js +1 -1
  176. package/dist/collection/components/pds-progress/pds-progress.js +1 -1
  177. package/dist/collection/components/pds-property/pds-property.js +1 -1
  178. package/dist/collection/components/pds-radio/pds-radio.js +3 -3
  179. package/dist/collection/components/pds-row/pds-row.js +1 -1
  180. package/dist/collection/components/pds-select/pds-select.js +1 -1
  181. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
  182. package/dist/collection/components/pds-sortable/pds-sortable.js +1 -1
  183. package/dist/collection/components/pds-switch/pds-switch.js +3 -3
  184. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
  185. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +2 -2
  186. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +1 -1
  187. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +2 -2
  188. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +1 -1
  189. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.css +3 -0
  190. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js +3 -3
  191. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +1 -1
  192. package/dist/collection/components/pds-tabs/pds-tabs.js +2 -1
  193. package/dist/collection/components/pds-tabs/pds-tabs.js.map +1 -1
  194. package/dist/collection/components/pds-text/pds-text.js +1 -1
  195. package/dist/collection/components/pds-textarea/pds-textarea.css +51 -11
  196. package/dist/collection/components/pds-textarea/pds-textarea.js +127 -4
  197. package/dist/collection/components/pds-textarea/pds-textarea.js.map +1 -1
  198. package/dist/collection/components/pds-textarea/stories/pds-textarea.stories.js +13 -0
  199. package/dist/collection/components/pds-toast/pds-toast.js +3 -3
  200. package/dist/collection/components/pds-tooltip/pds-tooltip.js +2 -2
  201. package/dist/docs.json +4440 -415
  202. package/dist/esm/{index-BVCWKPy3.js → index-Bf1dou5H.js} +5 -2
  203. package/dist/esm/index-Bf1dou5H.js.map +1 -0
  204. package/dist/esm/{index-DrJ5r5Pu.js → index-D4MkIUXU.js} +5 -3
  205. package/dist/{esm-es5/index-DrJ5r5Pu.js.map → esm/index-D4MkIUXU.js.map} +1 -1
  206. package/dist/esm/index.js +1 -1
  207. package/dist/esm/loader.js +3 -3
  208. package/dist/esm/mock-pds-modal.entry.js +9 -5
  209. package/dist/esm/mock-pds-modal.entry.js.map +1 -1
  210. package/dist/esm/pds-accordion.entry.js +2 -2
  211. package/dist/esm/pds-alert.entry.js +1 -1
  212. package/dist/esm/pds-avatar.entry.js +2 -2
  213. package/dist/esm/pds-box.entry.js +68 -3
  214. package/dist/esm/pds-box.entry.js.map +1 -1
  215. package/dist/esm/pds-button.entry.js +58 -6
  216. package/dist/esm/pds-button.entry.js.map +1 -1
  217. package/dist/esm/pds-checkbox.entry.js +2 -2
  218. package/dist/esm/pds-chip.entry.js +2 -2
  219. package/dist/esm/pds-combobox.entry.js +349 -39
  220. package/dist/esm/pds-combobox.entry.js.map +1 -1
  221. package/dist/esm/pds-copytext.entry.js +2 -2
  222. package/dist/esm/pds-divider.entry.js +1 -1
  223. package/dist/esm/pds-dropdown-menu-item.entry.js +1 -1
  224. package/dist/esm/pds-dropdown-menu-separator.entry.js +2 -2
  225. package/dist/esm/pds-dropdown-menu-separator.entry.js.map +1 -1
  226. package/dist/esm/pds-dropdown-menu.entry.js +1 -1
  227. package/dist/esm/pds-filter.entry.js +486 -0
  228. package/dist/esm/pds-filter.entry.js.map +1 -0
  229. package/dist/esm/pds-filters.entry.js +18 -0
  230. package/dist/esm/pds-filters.entry.js.map +1 -0
  231. package/dist/esm/pds-icon.entry.js +1 -1
  232. package/dist/esm/pds-image.entry.js +3 -3
  233. package/dist/esm/pds-input.entry.js +3 -3
  234. package/dist/esm/pds-link.entry.js +4 -4
  235. package/dist/esm/pds-loader.entry.js +2 -2
  236. package/dist/esm/pds-modal-content.entry.js +129 -12
  237. package/dist/esm/pds-modal-content.entry.js.map +1 -1
  238. package/dist/esm/pds-modal-footer.entry.js +2 -2
  239. package/dist/esm/pds-modal-header.entry.js +2 -2
  240. package/dist/esm/pds-modal.entry.js +13 -4
  241. package/dist/esm/pds-modal.entry.js.map +1 -1
  242. package/dist/esm/pds-popover.entry.js +2 -2
  243. package/dist/esm/pds-progress.entry.js +2 -2
  244. package/dist/esm/pds-property.entry.js +2 -2
  245. package/dist/esm/pds-radio.entry.js +5 -5
  246. package/dist/esm/pds-row.entry.js +2 -2
  247. package/dist/esm/pds-select.entry.js +3 -3
  248. package/dist/esm/pds-sortable-item.entry.js +3 -3
  249. package/dist/esm/pds-sortable.entry.js +2 -2
  250. package/dist/esm/pds-switch.entry.js +5 -5
  251. package/dist/esm/pds-tab.entry.js +5 -5
  252. package/dist/esm/pds-tab.entry.js.map +1 -1
  253. package/dist/esm/pds-table-body.entry.js +2 -2
  254. package/dist/esm/pds-table-cell.entry.js +3 -3
  255. package/dist/esm/pds-table-head-cell.entry.js +4 -4
  256. package/dist/esm/pds-table-head.entry.js +2 -2
  257. package/dist/esm/pds-table-row.entry.js +2 -2
  258. package/dist/esm/pds-table.entry.js +1 -1
  259. package/dist/esm/pds-tabpanel.entry.js +2 -2
  260. package/dist/esm/pds-tabs.entry.js +2 -2
  261. package/dist/esm/pds-tabs.entry.js.map +1 -1
  262. package/dist/esm/pds-text.entry.js +2 -2
  263. package/dist/esm/pds-textarea.entry.js +110 -8
  264. package/dist/esm/pds-textarea.entry.js.map +1 -1
  265. package/dist/esm/pds-toast.entry.js +4 -4
  266. package/dist/esm/pds-tooltip.entry.js +3 -3
  267. package/dist/esm/pine-core.js +3 -3
  268. package/dist/esm-es5/{index-BVCWKPy3.js → index-Bf1dou5H.js} +2 -2
  269. package/dist/esm-es5/index-Bf1dou5H.js.map +1 -0
  270. package/dist/esm-es5/index-D4MkIUXU.js +2 -0
  271. package/dist/{esm/index-DrJ5r5Pu.js.map → esm-es5/index-D4MkIUXU.js.map} +1 -1
  272. package/dist/esm-es5/index.js +1 -1
  273. package/dist/esm-es5/loader.js +1 -1
  274. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  275. package/dist/esm-es5/mock-pds-modal.entry.js.map +1 -1
  276. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  277. package/dist/esm-es5/pds-alert.entry.js +1 -1
  278. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  279. package/dist/esm-es5/pds-box.entry.js +1 -1
  280. package/dist/esm-es5/pds-box.entry.js.map +1 -1
  281. package/dist/esm-es5/pds-button.entry.js +1 -1
  282. package/dist/esm-es5/pds-button.entry.js.map +1 -1
  283. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  284. package/dist/esm-es5/pds-chip.entry.js +1 -1
  285. package/dist/esm-es5/pds-combobox.entry.js +2 -2
  286. package/dist/esm-es5/pds-combobox.entry.js.map +1 -1
  287. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  288. package/dist/esm-es5/pds-divider.entry.js +1 -1
  289. package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
  290. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
  291. package/dist/esm-es5/pds-dropdown-menu-separator.entry.js.map +1 -1
  292. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  293. package/dist/esm-es5/pds-filter.entry.js +2 -0
  294. package/dist/esm-es5/pds-filter.entry.js.map +1 -0
  295. package/dist/esm-es5/pds-filters.entry.js +2 -0
  296. package/dist/esm-es5/pds-filters.entry.js.map +1 -0
  297. package/dist/esm-es5/pds-icon.entry.js +1 -1
  298. package/dist/esm-es5/pds-image.entry.js +1 -1
  299. package/dist/esm-es5/pds-input.entry.js +1 -1
  300. package/dist/esm-es5/pds-link.entry.js +1 -1
  301. package/dist/esm-es5/pds-loader.entry.js +1 -1
  302. package/dist/esm-es5/pds-modal-content.entry.js +1 -1
  303. package/dist/esm-es5/pds-modal-content.entry.js.map +1 -1
  304. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  305. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  306. package/dist/esm-es5/pds-modal.entry.js +1 -1
  307. package/dist/esm-es5/pds-modal.entry.js.map +1 -1
  308. package/dist/esm-es5/pds-popover.entry.js +1 -1
  309. package/dist/esm-es5/pds-progress.entry.js +1 -1
  310. package/dist/esm-es5/pds-property.entry.js +1 -1
  311. package/dist/esm-es5/pds-radio.entry.js +1 -1
  312. package/dist/esm-es5/pds-row.entry.js +1 -1
  313. package/dist/esm-es5/pds-select.entry.js +1 -1
  314. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  315. package/dist/esm-es5/pds-sortable.entry.js +2 -2
  316. package/dist/esm-es5/pds-switch.entry.js +1 -1
  317. package/dist/esm-es5/pds-tab.entry.js +1 -1
  318. package/dist/esm-es5/pds-tab.entry.js.map +1 -1
  319. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  320. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  321. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  322. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  323. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  324. package/dist/esm-es5/pds-table.entry.js +1 -1
  325. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  326. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  327. package/dist/esm-es5/pds-tabs.entry.js.map +1 -1
  328. package/dist/esm-es5/pds-text.entry.js +1 -1
  329. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  330. package/dist/esm-es5/pds-textarea.entry.js.map +1 -1
  331. package/dist/esm-es5/pds-toast.entry.js +1 -1
  332. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  333. package/dist/esm-es5/pine-core.js +1 -1
  334. package/dist/pine-core/index.esm.js +1 -1
  335. package/dist/pine-core/mock-pds-modal.entry.esm.js.map +1 -1
  336. package/dist/pine-core/{p-fd091234.system.entry.js → p-0075bbbe.system.entry.js} +2 -2
  337. package/dist/pine-core/p-07e129db.entry.js +2 -0
  338. package/dist/pine-core/{p-8999b63d.system.entry.js → p-0975b749.system.entry.js} +2 -2
  339. package/dist/pine-core/{p-02326ac3.entry.js → p-0befa8f0.entry.js} +2 -2
  340. package/dist/pine-core/p-0d18171c.system.entry.js +2 -0
  341. package/dist/pine-core/p-0d18171c.system.entry.js.map +1 -0
  342. package/dist/pine-core/p-1009009c.entry.js +2 -0
  343. package/dist/pine-core/p-1009009c.entry.js.map +1 -0
  344. package/dist/pine-core/{p-8722865f.system.entry.js → p-1773aeac.system.entry.js} +2 -2
  345. package/dist/pine-core/{p-e2887e78.entry.js → p-1b9d4482.entry.js} +2 -2
  346. package/dist/pine-core/p-1c32ffb3.entry.js +2 -0
  347. package/dist/pine-core/p-1c32ffb3.entry.js.map +1 -0
  348. package/dist/pine-core/{p-7a95a90f.system.entry.js → p-2597bc59.system.entry.js} +2 -2
  349. package/dist/pine-core/{p-5a709348.entry.js → p-25cb810d.entry.js} +2 -2
  350. package/dist/pine-core/{p-a1b51557.system.entry.js → p-25cf2860.system.entry.js} +2 -2
  351. package/dist/pine-core/{p-6f4a6d0b.entry.js → p-265372d3.entry.js} +2 -2
  352. package/dist/pine-core/p-29b2af94.entry.js +2 -0
  353. package/dist/pine-core/{p-44087d1c.entry.js.map → p-29b2af94.entry.js.map} +1 -1
  354. package/dist/pine-core/p-2b102034.system.entry.js +2 -0
  355. package/dist/pine-core/p-2b102034.system.entry.js.map +1 -0
  356. package/dist/pine-core/p-2b12bc55.system.entry.js +2 -0
  357. package/dist/pine-core/{p-297afc49.system.entry.js → p-2b452883.system.entry.js} +2 -2
  358. package/dist/pine-core/p-2efc646c.system.entry.js +2 -0
  359. package/dist/pine-core/{p-ecb9edf8.entry.js → p-2fb6f9d5.entry.js} +2 -2
  360. package/dist/pine-core/p-2fd7f74e.entry.js +2 -0
  361. package/dist/pine-core/{p-39488f2c.system.entry.js → p-302849cf.system.entry.js} +2 -2
  362. package/dist/pine-core/{p-51d83489.system.entry.js → p-307f415a.system.entry.js} +2 -2
  363. package/dist/pine-core/{p-651861ff.entry.js → p-30e8c3ea.entry.js} +2 -2
  364. package/dist/pine-core/p-30e8c3ea.entry.js.map +1 -0
  365. package/dist/pine-core/p-31f6fcc1.entry.js +2 -0
  366. package/dist/pine-core/p-31f6fcc1.entry.js.map +1 -0
  367. package/dist/pine-core/p-378df5eb.system.entry.js +2 -0
  368. package/dist/pine-core/p-39648ce2.entry.js +2 -0
  369. package/dist/pine-core/p-39648ce2.entry.js.map +1 -0
  370. package/dist/pine-core/p-3b20aa93.system.entry.js +2 -0
  371. package/dist/pine-core/p-3b20aa93.system.entry.js.map +1 -0
  372. package/dist/pine-core/{p-50c9e865.entry.js → p-3e7933bf.entry.js} +2 -2
  373. package/dist/pine-core/{p-11d4036e.entry.js → p-41e2fe3a.entry.js} +2 -2
  374. package/dist/pine-core/p-449ebe39.system.entry.js +2 -0
  375. package/dist/pine-core/{p-023d8b71.system.entry.js → p-4534e8cc.system.entry.js} +2 -2
  376. package/dist/pine-core/{p-52d37cc1.entry.js → p-46820152.entry.js} +2 -2
  377. package/dist/pine-core/{p-ba187a35.entry.js → p-4b3a8cab.entry.js} +2 -2
  378. package/dist/pine-core/{p-da367b5e.system.entry.js → p-4c8bebd8.system.entry.js} +2 -2
  379. package/dist/pine-core/{p-503cab1f.entry.js → p-4dda1edf.entry.js} +2 -2
  380. package/dist/pine-core/p-4e55730d.entry.js +2 -0
  381. package/dist/pine-core/p-4e55730d.entry.js.map +1 -0
  382. package/dist/pine-core/{p-5e8badb9.entry.js → p-559b4ebc.entry.js} +2 -2
  383. package/dist/pine-core/{p-c13ef6a7.system.entry.js → p-55d06d0a.system.entry.js} +3 -3
  384. package/dist/pine-core/{p-25190921.entry.js → p-56f6f106.entry.js} +2 -2
  385. package/dist/pine-core/{p-075eecf9.entry.js → p-5ac7af9e.entry.js} +2 -2
  386. package/dist/pine-core/p-5cc0244d.system.entry.js +2 -0
  387. package/dist/pine-core/p-5cc0244d.system.entry.js.map +1 -0
  388. package/dist/pine-core/{p-dfc5ab34.system.entry.js → p-72d87dc6.system.entry.js} +2 -2
  389. package/dist/pine-core/{p-b2b1b7a9.system.entry.js → p-73a2e028.system.entry.js} +2 -2
  390. package/dist/pine-core/{p-4bbf3e31.entry.js → p-74f03e75.entry.js} +2 -2
  391. package/dist/pine-core/p-786967e8.entry.js +2 -0
  392. package/dist/pine-core/{p-0de9f8da.system.entry.js → p-7b0517e5.system.entry.js} +2 -2
  393. package/dist/pine-core/p-7b66bc50.entry.js +3 -0
  394. package/dist/pine-core/p-7b66bc50.entry.js.map +1 -0
  395. package/dist/pine-core/p-7eb22880.entry.js +2 -0
  396. package/dist/pine-core/p-7eb22880.entry.js.map +1 -0
  397. package/dist/pine-core/{p-464dd476.entry.js → p-8501429f.entry.js} +2 -2
  398. package/dist/pine-core/p-875d5d5a.system.entry.js +2 -0
  399. package/dist/pine-core/{p-4deb7b8c.entry.js → p-896e2f1b.entry.js} +2 -2
  400. package/dist/pine-core/{p-72b05928.system.entry.js → p-8ded79aa.system.entry.js} +2 -2
  401. package/dist/pine-core/{p-e89cb1f2.system.entry.js → p-8f69dd71.system.entry.js} +2 -2
  402. package/dist/pine-core/{p-2e19f167.system.entry.js → p-94fe15b0.system.entry.js} +2 -2
  403. package/dist/pine-core/p-95aee0b1.entry.js +2 -0
  404. package/dist/pine-core/p-95aee0b1.entry.js.map +1 -0
  405. package/dist/pine-core/p-96c27dba.entry.js +2 -0
  406. package/dist/pine-core/p-96c27dba.entry.js.map +1 -0
  407. package/dist/pine-core/p-B02VgXkx.system.js.map +1 -0
  408. package/dist/pine-core/{p-Kj_j7PHx.system.js.map → p-B57Bybw-.system.js.map} +1 -1
  409. package/dist/pine-core/{p-B1fiSdbt.system.js.map → p-BEgEi4w5.system.js.map} +1 -1
  410. package/dist/pine-core/{p-CJT--ZXC.system.js.map → p-BFiM1S8V.system.js.map} +1 -1
  411. package/dist/pine-core/{p-_E9ZEzfO.system.js.map → p-BIjeWHX_.system.js.map} +1 -1
  412. package/dist/pine-core/{p-BVKCNX0X.system.js.map → p-BJhtHwq5.system.js.map} +1 -1
  413. package/dist/pine-core/{p-EYhpJx2s.system.js.map → p-BJjdD3yf.system.js.map} +1 -1
  414. package/dist/pine-core/p-BPjnTOEL.system.js +2 -0
  415. package/dist/pine-core/{p-De9tROL-.system.js.map → p-BPjnTOEL.system.js.map} +1 -1
  416. package/dist/pine-core/{p-CCQUgOoR.system.js.map → p-BQFgzIQT.system.js.map} +1 -1
  417. package/dist/pine-core/p-BSkbMuB5.system.js +2 -0
  418. package/dist/pine-core/{p-BEn3hirk.system.js.map → p-BSkbMuB5.system.js.map} +1 -1
  419. package/dist/pine-core/{p-BVCWKPy3.js → p-Bf1dou5H.js} +2 -2
  420. package/dist/pine-core/p-Bf1dou5H.js.map +1 -0
  421. package/dist/pine-core/p-BigOVPun.system.js.map +1 -0
  422. package/dist/pine-core/{p-CcXaBX2A.system.js.map → p-BmFGXXkm.system.js.map} +1 -1
  423. package/dist/pine-core/p-ByzULH8m.system.js.map +1 -0
  424. package/dist/pine-core/{p-CE6b_LzB.system.js.map → p-C3iAHQC6.system.js.map} +1 -1
  425. package/dist/pine-core/{p-ACQU83St.system.js.map → p-CCQd5PVN.system.js.map} +1 -1
  426. package/dist/pine-core/{p-ChslVme6.system.js.map → p-CG2PKUWT.system.js.map} +1 -1
  427. package/dist/pine-core/{p-CQ8f8GnD.system.js.map → p-CHVzHNgU.system.js.map} +1 -1
  428. package/dist/pine-core/{p-Dh7jcLgJ.system.js.map → p-COwpA8ab.system.js.map} +1 -1
  429. package/dist/pine-core/p-CV0Lw9gs.system.js.map +1 -0
  430. package/dist/pine-core/p-CZqgW7e3.system.js.map +1 -0
  431. package/dist/pine-core/{p-pQqXEKPh.system.js.map → p-Cc1q-FuD.system.js.map} +1 -1
  432. package/dist/pine-core/{p-CWdEolqa.system.js.map → p-Cl47ROcT.system.js.map} +1 -1
  433. package/dist/pine-core/{p-0KTU2Jt-.system.js.map → p-CnPN6prI.system.js.map} +1 -1
  434. package/dist/pine-core/{p-B1FQkx7R.system.js.map → p-Ctdx1tCG.system.js.map} +1 -1
  435. package/dist/pine-core/p-CwNRZQss.system.js.map +1 -0
  436. package/dist/pine-core/{p-B_C-mRjx.system.js → p-Cxvdulqq.system.js} +2 -2
  437. package/dist/pine-core/p-Cxvdulqq.system.js.map +1 -0
  438. package/dist/pine-core/p-D3SrjYeb.system.js.map +1 -0
  439. package/dist/pine-core/p-D4MkIUXU.js +2 -0
  440. package/dist/pine-core/{p-DrJ5r5Pu.js.map → p-D4MkIUXU.js.map} +1 -1
  441. package/dist/pine-core/{p-MBv7PsKc.system.js.map → p-D52TGCLt.system.js.map} +1 -1
  442. package/dist/pine-core/p-D7B3vOdC.system.js.map +1 -0
  443. package/dist/pine-core/{p-0TIvNV5c.system.js.map → p-D9veIL-g.system.js.map} +1 -1
  444. package/dist/pine-core/{p-D9_z2w3q.system.js.map → p-DGFR-x7P.system.js.map} +1 -1
  445. package/dist/pine-core/p-DeR0sSWy.system.js.map +1 -0
  446. package/dist/pine-core/{p-BRygGju8.system.js.map → p-Df597YUK.system.js.map} +1 -1
  447. package/dist/pine-core/{p-Df_3qA_L.system.js.map → p-DgE9ds9o.system.js.map} +1 -1
  448. package/dist/pine-core/{p-CLoi4eKt.system.js.map → p-DmWU0f_O.system.js.map} +1 -1
  449. package/dist/pine-core/{p-DYb5Y47j.system.js.map → p-Dq7Wu9rr.system.js.map} +1 -1
  450. package/dist/pine-core/p-Dw7zXw_6.system.js.map +1 -0
  451. package/dist/pine-core/{p-CpdNWpfd.system.js.map → p-Ek6vvXfI.system.js.map} +1 -1
  452. package/dist/pine-core/{p-C5Y492i0.system.js.map → p-M-zMP2QX.system.js.map} +1 -1
  453. package/dist/pine-core/{p-IhWWc2L_.system.js.map → p-WO5h6NYA.system.js.map} +1 -1
  454. package/dist/pine-core/p-WWWd_vEd.system.js +2 -0
  455. package/dist/pine-core/p-WWWd_vEd.system.js.map +1 -0
  456. package/dist/pine-core/{p-D05FrqXr.system.js.map → p-X5M4eshC.system.js.map} +1 -1
  457. package/dist/pine-core/{p-m6UZWRsP.system.js.map → p-Z5rOSkoA.system.js.map} +1 -1
  458. package/dist/pine-core/{p-72053224.entry.js → p-a2cb65df.entry.js} +3 -3
  459. package/dist/pine-core/{p-c8122bea.entry.js → p-a54d6a53.entry.js} +2 -2
  460. package/dist/pine-core/{p-a04556e4.system.entry.js → p-a5cf0088.system.entry.js} +2 -2
  461. package/dist/pine-core/p-a645818a.entry.js +2 -0
  462. package/dist/pine-core/{p-f583e5d4.entry.js → p-a9cfaa1f.entry.js} +2 -2
  463. package/dist/pine-core/{p-14a52961.system.entry.js → p-aa2782b9.system.entry.js} +2 -2
  464. package/dist/pine-core/{p-f55b9f90.system.entry.js → p-ab4307c7.system.entry.js} +2 -2
  465. package/dist/pine-core/{p-349a8869.entry.js → p-af56cb57.entry.js} +2 -2
  466. package/dist/pine-core/{p-8d7abc83.entry.js → p-b32d34d0.entry.js} +2 -2
  467. package/dist/pine-core/{p-00616fc9.entry.js → p-b378ca03.entry.js} +2 -2
  468. package/dist/pine-core/p-b669e1d9.entry.js +2 -0
  469. package/dist/pine-core/p-b699a14f.system.entry.js +2 -0
  470. package/dist/pine-core/p-b699a14f.system.entry.js.map +1 -0
  471. package/dist/pine-core/p-bc2fecd4.system.entry.js +2 -0
  472. package/dist/pine-core/p-bc2fecd4.system.entry.js.map +1 -0
  473. package/dist/pine-core/{p-e3fb0bc2.system.entry.js → p-bc637bed.system.entry.js} +2 -2
  474. package/dist/pine-core/{p-b6ea3332.entry.js → p-be5ef841.entry.js} +2 -2
  475. package/dist/pine-core/{p-54183d70.system.entry.js → p-c0601420.system.entry.js} +2 -2
  476. package/dist/pine-core/p-c2d2fe64.system.entry.js +2 -0
  477. package/dist/pine-core/p-c3f84df8.system.entry.js +2 -0
  478. package/dist/pine-core/p-c3f84df8.system.entry.js.map +1 -0
  479. package/dist/pine-core/p-c44d3551.entry.js +2 -0
  480. package/dist/pine-core/{p-e8d76117.entry.js → p-c55fc47e.entry.js} +2 -2
  481. package/dist/pine-core/{p-5da82e8c.system.entry.js → p-c63e7909.system.entry.js} +2 -2
  482. package/dist/pine-core/p-d325287b.entry.js +2 -0
  483. package/dist/pine-core/p-d325287b.entry.js.map +1 -0
  484. package/dist/pine-core/p-d52d96b5.system.entry.js +4 -0
  485. package/dist/pine-core/p-d52d96b5.system.entry.js.map +1 -0
  486. package/dist/pine-core/{p-884b9ae6.system.entry.js → p-d5c63517.system.entry.js} +2 -2
  487. package/dist/pine-core/p-d65d252d.entry.js +2 -0
  488. package/dist/pine-core/p-d65d252d.entry.js.map +1 -0
  489. package/dist/pine-core/p-db12273e.system.entry.js +2 -0
  490. package/dist/pine-core/{p-92c52409.system.entry.js → p-dbe41087.system.entry.js} +2 -2
  491. package/dist/pine-core/{p-deb8a499.system.entry.js → p-e03b7f4a.system.entry.js} +2 -2
  492. package/dist/pine-core/{p-6db1e029.system.entry.js → p-ee583234.system.entry.js} +2 -2
  493. package/dist/pine-core/{p-0066d249.entry.js → p-f5d78141.entry.js} +2 -2
  494. package/dist/pine-core/p-f61ee383.system.entry.js +2 -0
  495. package/dist/pine-core/p-f61ee383.system.entry.js.map +1 -0
  496. package/dist/pine-core/{p-98fe56d9.entry.js → p-f6b269ac.entry.js} +2 -2
  497. package/dist/pine-core/p-f70aef6e.system.entry.js +2 -0
  498. package/dist/pine-core/p-f70aef6e.system.entry.js.map +1 -0
  499. package/dist/pine-core/{p-52af1890.system.entry.js → p-f911dde3.system.entry.js} +2 -2
  500. package/dist/pine-core/{p-7cb4f0de.entry.js → p-fd3d548f.entry.js} +2 -2
  501. package/dist/pine-core/{p-ac37cf0d.entry.js → p-fddf82f8.entry.js} +2 -2
  502. package/dist/pine-core/p-fdf22be1.system.entry.js +2 -0
  503. package/dist/pine-core/p-fdf22be1.system.entry.js.map +1 -0
  504. package/dist/pine-core/p-fe7ece91.system.entry.js +2 -0
  505. package/dist/pine-core/p-fe7ece91.system.entry.js.map +1 -0
  506. package/dist/pine-core/{p-DHmJZxQk.system.js.map → p-iM8w34Dq.system.js.map} +1 -1
  507. package/dist/pine-core/{p-2kXtbFXu.system.js.map → p-iazk4jjL.system.js.map} +1 -1
  508. package/dist/pine-core/{p-CqzGa2j0.system.js.map → p-k9JOparb.system.js.map} +1 -1
  509. package/dist/pine-core/{p-CgyVIfOY.system.js.map → p-kbAzjMDU.system.js.map} +1 -1
  510. package/dist/pine-core/{p-B7S-9dbT.system.js.map → p-kcOuXqWo.system.js.map} +1 -1
  511. package/dist/pine-core/{p-IG5YumI3.system.js.map → p-nawkAoxk.system.js.map} +1 -1
  512. package/dist/pine-core/p-oDk-2Jyq.system.js.map +1 -0
  513. package/dist/pine-core/p-wlxYjeBe.system.js.map +1 -0
  514. package/dist/pine-core/{p-CqK-uhv8.system.js.map → p-yaM1kuaC.system.js.map} +1 -1
  515. package/dist/pine-core/pds-box.entry.esm.js.map +1 -1
  516. package/dist/pine-core/pds-button.entry.esm.js.map +1 -1
  517. package/dist/pine-core/pds-combobox.entry.esm.js.map +1 -1
  518. package/dist/pine-core/pds-dropdown-menu-separator.entry.esm.js.map +1 -1
  519. package/dist/pine-core/pds-filter.entry.esm.js.map +1 -0
  520. package/dist/pine-core/pds-filters.entry.esm.js.map +1 -0
  521. package/dist/pine-core/pds-modal-content.entry.esm.js.map +1 -1
  522. package/dist/pine-core/pds-modal.entry.esm.js.map +1 -1
  523. package/dist/pine-core/pds-tab.entry.esm.js.map +1 -1
  524. package/dist/pine-core/pds-tabs.entry.esm.js.map +1 -1
  525. package/dist/pine-core/pds-textarea.entry.esm.js.map +1 -1
  526. package/dist/pine-core/pine-core.esm.js +1 -1
  527. package/dist/pine-core/pine-core.js +1 -1
  528. package/dist/types/components/pds-box/pds-box.d.ts +315 -0
  529. package/dist/types/components/pds-button/pds-button.d.ts +5 -1
  530. package/dist/types/components/pds-combobox/pds-combobox.d.ts +28 -3
  531. package/dist/types/components/pds-filters/pds-filter/filter-interface.d.ts +19 -0
  532. package/dist/types/components/pds-filters/pds-filter/pds-filter.d.ts +133 -0
  533. package/dist/types/components/pds-filters/pds-filters.d.ts +11 -0
  534. package/dist/types/components/pds-modal/pds-modal-content/pds-modal-content.d.ts +18 -1
  535. package/dist/types/components/pds-modal/pds-modal.d.ts +5 -0
  536. package/dist/types/components/pds-modal/test/mock-pds-modal.d.ts +5 -0
  537. package/dist/types/components/pds-tabs/pds-tabs.d.ts +1 -0
  538. package/dist/types/components/pds-textarea/pds-textarea.d.ts +20 -0
  539. package/dist/types/components.d.ts +793 -4
  540. package/hydrate/index.js +1381 -112
  541. package/hydrate/index.mjs +1381 -112
  542. package/package.json +2 -2
  543. package/dist/cjs/index-g-uSeICs.js.map +0 -1
  544. package/dist/esm/index-BVCWKPy3.js.map +0 -1
  545. package/dist/esm-es5/index-BVCWKPy3.js.map +0 -1
  546. package/dist/esm-es5/index-DrJ5r5Pu.js +0 -2
  547. package/dist/pine-core/p-007b61e9.system.entry.js +0 -2
  548. package/dist/pine-core/p-007b61e9.system.entry.js.map +0 -1
  549. package/dist/pine-core/p-0485aa93.system.entry.js +0 -2
  550. package/dist/pine-core/p-0485aa93.system.entry.js.map +0 -1
  551. package/dist/pine-core/p-051ff780.system.entry.js +0 -2
  552. package/dist/pine-core/p-051ff780.system.entry.js.map +0 -1
  553. package/dist/pine-core/p-2186e5d4.system.entry.js +0 -2
  554. package/dist/pine-core/p-2186e5d4.system.entry.js.map +0 -1
  555. package/dist/pine-core/p-232a2043.entry.js +0 -2
  556. package/dist/pine-core/p-44087d1c.entry.js +0 -2
  557. package/dist/pine-core/p-47670150.entry.js +0 -3
  558. package/dist/pine-core/p-47670150.entry.js.map +0 -1
  559. package/dist/pine-core/p-54061a33.entry.js +0 -2
  560. package/dist/pine-core/p-54061a33.entry.js.map +0 -1
  561. package/dist/pine-core/p-5708f95a.entry.js +0 -2
  562. package/dist/pine-core/p-651861ff.entry.js.map +0 -1
  563. package/dist/pine-core/p-66b10d29.entry.js +0 -2
  564. package/dist/pine-core/p-68b5665a.entry.js +0 -2
  565. package/dist/pine-core/p-68b5665a.entry.js.map +0 -1
  566. package/dist/pine-core/p-7004d1ea.system.entry.js +0 -2
  567. package/dist/pine-core/p-71169b66.system.entry.js +0 -2
  568. package/dist/pine-core/p-71169b66.system.entry.js.map +0 -1
  569. package/dist/pine-core/p-73158adf.system.entry.js +0 -2
  570. package/dist/pine-core/p-77336705.entry.js +0 -2
  571. package/dist/pine-core/p-77336705.entry.js.map +0 -1
  572. package/dist/pine-core/p-8ab7f0d7.system.entry.js +0 -4
  573. package/dist/pine-core/p-8ab7f0d7.system.entry.js.map +0 -1
  574. package/dist/pine-core/p-96a89cd5.system.entry.js +0 -2
  575. package/dist/pine-core/p-96a89cd5.system.entry.js.map +0 -1
  576. package/dist/pine-core/p-BEn3hirk.system.js +0 -2
  577. package/dist/pine-core/p-BGbUqsWH.system.js +0 -2
  578. package/dist/pine-core/p-BGbUqsWH.system.js.map +0 -1
  579. package/dist/pine-core/p-BKFboaI5.system.js.map +0 -1
  580. package/dist/pine-core/p-BVCWKPy3.js.map +0 -1
  581. package/dist/pine-core/p-B_C-mRjx.system.js.map +0 -1
  582. package/dist/pine-core/p-Bv5PJxD8.system.js.map +0 -1
  583. package/dist/pine-core/p-CD_nPb2F.system.js.map +0 -1
  584. package/dist/pine-core/p-Cmzqpibo.system.js.map +0 -1
  585. package/dist/pine-core/p-DJekRkSL.system.js.map +0 -1
  586. package/dist/pine-core/p-DNYl_6t_.system.js.map +0 -1
  587. package/dist/pine-core/p-DXuK7cEc.system.js.map +0 -1
  588. package/dist/pine-core/p-De9tROL-.system.js +0 -2
  589. package/dist/pine-core/p-DrJ5r5Pu.js +0 -2
  590. package/dist/pine-core/p-Dt10r3RZ.system.js.map +0 -1
  591. package/dist/pine-core/p-IIl2cTlj.system.js.map +0 -1
  592. package/dist/pine-core/p-UsEwlBJ0.system.js.map +0 -1
  593. package/dist/pine-core/p-a24c46e4.entry.js +0 -2
  594. package/dist/pine-core/p-a24c46e4.entry.js.map +0 -1
  595. package/dist/pine-core/p-a54f1d9e.entry.js +0 -2
  596. package/dist/pine-core/p-a54f1d9e.entry.js.map +0 -1
  597. package/dist/pine-core/p-aa645f28.system.entry.js +0 -2
  598. package/dist/pine-core/p-aa645f28.system.entry.js.map +0 -1
  599. package/dist/pine-core/p-bb8ef74a.system.entry.js +0 -2
  600. package/dist/pine-core/p-be939cb0.entry.js +0 -2
  601. package/dist/pine-core/p-c1099665.system.entry.js +0 -2
  602. package/dist/pine-core/p-c2ffb466.system.entry.js +0 -2
  603. package/dist/pine-core/p-c4d6fe50.system.entry.js +0 -2
  604. package/dist/pine-core/p-c4d6fe50.system.entry.js.map +0 -1
  605. package/dist/pine-core/p-c6badcf8.entry.js +0 -2
  606. package/dist/pine-core/p-c6badcf8.entry.js.map +0 -1
  607. package/dist/pine-core/p-cd785026.system.entry.js +0 -2
  608. package/dist/pine-core/p-d714f68f.system.entry.js +0 -2
  609. package/dist/pine-core/p-d714f68f.system.entry.js.map +0 -1
  610. package/dist/pine-core/p-e5ca5b8e.entry.js +0 -2
  611. package/dist/pine-core/p-e5ca5b8e.entry.js.map +0 -1
  612. package/dist/pine-core/p-e65a7d1c.system.entry.js +0 -2
  613. package/dist/pine-core/p-efa788ea.entry.js +0 -2
  614. package/dist/pine-core/p-f880adaa.entry.js +0 -2
  615. package/dist/pine-core/p-fb4058e6.entry.js +0 -2
  616. package/dist/pine-core/p-fb4058e6.entry.js.map +0 -1
  617. /package/dist/pine-core/{p-fd091234.system.entry.js.map → p-0075bbbe.system.entry.js.map} +0 -0
  618. /package/dist/pine-core/{p-66b10d29.entry.js.map → p-07e129db.entry.js.map} +0 -0
  619. /package/dist/pine-core/{p-8999b63d.system.entry.js.map → p-0975b749.system.entry.js.map} +0 -0
  620. /package/dist/pine-core/{p-02326ac3.entry.js.map → p-0befa8f0.entry.js.map} +0 -0
  621. /package/dist/pine-core/{p-8722865f.system.entry.js.map → p-1773aeac.system.entry.js.map} +0 -0
  622. /package/dist/pine-core/{p-e2887e78.entry.js.map → p-1b9d4482.entry.js.map} +0 -0
  623. /package/dist/pine-core/{p-7a95a90f.system.entry.js.map → p-2597bc59.system.entry.js.map} +0 -0
  624. /package/dist/pine-core/{p-5a709348.entry.js.map → p-25cb810d.entry.js.map} +0 -0
  625. /package/dist/pine-core/{p-a1b51557.system.entry.js.map → p-25cf2860.system.entry.js.map} +0 -0
  626. /package/dist/pine-core/{p-6f4a6d0b.entry.js.map → p-265372d3.entry.js.map} +0 -0
  627. /package/dist/pine-core/{p-c2ffb466.system.entry.js.map → p-2b12bc55.system.entry.js.map} +0 -0
  628. /package/dist/pine-core/{p-297afc49.system.entry.js.map → p-2b452883.system.entry.js.map} +0 -0
  629. /package/dist/pine-core/{p-cd785026.system.entry.js.map → p-2efc646c.system.entry.js.map} +0 -0
  630. /package/dist/pine-core/{p-ecb9edf8.entry.js.map → p-2fb6f9d5.entry.js.map} +0 -0
  631. /package/dist/pine-core/{p-efa788ea.entry.js.map → p-2fd7f74e.entry.js.map} +0 -0
  632. /package/dist/pine-core/{p-39488f2c.system.entry.js.map → p-302849cf.system.entry.js.map} +0 -0
  633. /package/dist/pine-core/{p-51d83489.system.entry.js.map → p-307f415a.system.entry.js.map} +0 -0
  634. /package/dist/pine-core/{p-bb8ef74a.system.entry.js.map → p-378df5eb.system.entry.js.map} +0 -0
  635. /package/dist/pine-core/{p-50c9e865.entry.js.map → p-3e7933bf.entry.js.map} +0 -0
  636. /package/dist/pine-core/{p-11d4036e.entry.js.map → p-41e2fe3a.entry.js.map} +0 -0
  637. /package/dist/pine-core/{p-7004d1ea.system.entry.js.map → p-449ebe39.system.entry.js.map} +0 -0
  638. /package/dist/pine-core/{p-023d8b71.system.entry.js.map → p-4534e8cc.system.entry.js.map} +0 -0
  639. /package/dist/pine-core/{p-52d37cc1.entry.js.map → p-46820152.entry.js.map} +0 -0
  640. /package/dist/pine-core/{p-ba187a35.entry.js.map → p-4b3a8cab.entry.js.map} +0 -0
  641. /package/dist/pine-core/{p-da367b5e.system.entry.js.map → p-4c8bebd8.system.entry.js.map} +0 -0
  642. /package/dist/pine-core/{p-503cab1f.entry.js.map → p-4dda1edf.entry.js.map} +0 -0
  643. /package/dist/pine-core/{p-5e8badb9.entry.js.map → p-559b4ebc.entry.js.map} +0 -0
  644. /package/dist/pine-core/{p-c13ef6a7.system.entry.js.map → p-55d06d0a.system.entry.js.map} +0 -0
  645. /package/dist/pine-core/{p-25190921.entry.js.map → p-56f6f106.entry.js.map} +0 -0
  646. /package/dist/pine-core/{p-075eecf9.entry.js.map → p-5ac7af9e.entry.js.map} +0 -0
  647. /package/dist/pine-core/{p-dfc5ab34.system.entry.js.map → p-72d87dc6.system.entry.js.map} +0 -0
  648. /package/dist/pine-core/{p-b2b1b7a9.system.entry.js.map → p-73a2e028.system.entry.js.map} +0 -0
  649. /package/dist/pine-core/{p-4bbf3e31.entry.js.map → p-74f03e75.entry.js.map} +0 -0
  650. /package/dist/pine-core/{p-be939cb0.entry.js.map → p-786967e8.entry.js.map} +0 -0
  651. /package/dist/pine-core/{p-0de9f8da.system.entry.js.map → p-7b0517e5.system.entry.js.map} +0 -0
  652. /package/dist/pine-core/{p-464dd476.entry.js.map → p-8501429f.entry.js.map} +0 -0
  653. /package/dist/pine-core/{p-e65a7d1c.system.entry.js.map → p-875d5d5a.system.entry.js.map} +0 -0
  654. /package/dist/pine-core/{p-4deb7b8c.entry.js.map → p-896e2f1b.entry.js.map} +0 -0
  655. /package/dist/pine-core/{p-72b05928.system.entry.js.map → p-8ded79aa.system.entry.js.map} +0 -0
  656. /package/dist/pine-core/{p-e89cb1f2.system.entry.js.map → p-8f69dd71.system.entry.js.map} +0 -0
  657. /package/dist/pine-core/{p-2e19f167.system.entry.js.map → p-94fe15b0.system.entry.js.map} +0 -0
  658. /package/dist/pine-core/{p-72053224.entry.js.map → p-a2cb65df.entry.js.map} +0 -0
  659. /package/dist/pine-core/{p-c8122bea.entry.js.map → p-a54d6a53.entry.js.map} +0 -0
  660. /package/dist/pine-core/{p-a04556e4.system.entry.js.map → p-a5cf0088.system.entry.js.map} +0 -0
  661. /package/dist/pine-core/{p-f880adaa.entry.js.map → p-a645818a.entry.js.map} +0 -0
  662. /package/dist/pine-core/{p-f583e5d4.entry.js.map → p-a9cfaa1f.entry.js.map} +0 -0
  663. /package/dist/pine-core/{p-14a52961.system.entry.js.map → p-aa2782b9.system.entry.js.map} +0 -0
  664. /package/dist/pine-core/{p-f55b9f90.system.entry.js.map → p-ab4307c7.system.entry.js.map} +0 -0
  665. /package/dist/pine-core/{p-349a8869.entry.js.map → p-af56cb57.entry.js.map} +0 -0
  666. /package/dist/pine-core/{p-8d7abc83.entry.js.map → p-b32d34d0.entry.js.map} +0 -0
  667. /package/dist/pine-core/{p-00616fc9.entry.js.map → p-b378ca03.entry.js.map} +0 -0
  668. /package/dist/pine-core/{p-5708f95a.entry.js.map → p-b669e1d9.entry.js.map} +0 -0
  669. /package/dist/pine-core/{p-e3fb0bc2.system.entry.js.map → p-bc637bed.system.entry.js.map} +0 -0
  670. /package/dist/pine-core/{p-b6ea3332.entry.js.map → p-be5ef841.entry.js.map} +0 -0
  671. /package/dist/pine-core/{p-54183d70.system.entry.js.map → p-c0601420.system.entry.js.map} +0 -0
  672. /package/dist/pine-core/{p-73158adf.system.entry.js.map → p-c2d2fe64.system.entry.js.map} +0 -0
  673. /package/dist/pine-core/{p-232a2043.entry.js.map → p-c44d3551.entry.js.map} +0 -0
  674. /package/dist/pine-core/{p-e8d76117.entry.js.map → p-c55fc47e.entry.js.map} +0 -0
  675. /package/dist/pine-core/{p-5da82e8c.system.entry.js.map → p-c63e7909.system.entry.js.map} +0 -0
  676. /package/dist/pine-core/{p-884b9ae6.system.entry.js.map → p-d5c63517.system.entry.js.map} +0 -0
  677. /package/dist/pine-core/{p-c1099665.system.entry.js.map → p-db12273e.system.entry.js.map} +0 -0
  678. /package/dist/pine-core/{p-92c52409.system.entry.js.map → p-dbe41087.system.entry.js.map} +0 -0
  679. /package/dist/pine-core/{p-deb8a499.system.entry.js.map → p-e03b7f4a.system.entry.js.map} +0 -0
  680. /package/dist/pine-core/{p-6db1e029.system.entry.js.map → p-ee583234.system.entry.js.map} +0 -0
  681. /package/dist/pine-core/{p-0066d249.entry.js.map → p-f5d78141.entry.js.map} +0 -0
  682. /package/dist/pine-core/{p-98fe56d9.entry.js.map → p-f6b269ac.entry.js.map} +0 -0
  683. /package/dist/pine-core/{p-52af1890.system.entry.js.map → p-f911dde3.system.entry.js.map} +0 -0
  684. /package/dist/pine-core/{p-7cb4f0de.entry.js.map → p-fd3d548f.entry.js.map} +0 -0
  685. /package/dist/pine-core/{p-ac37cf0d.entry.js.map → p-fddf82f8.entry.js.map} +0 -0
@@ -2,14 +2,14 @@ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/
2
2
  import { i as isRequired, a as assignDescription, m as messageId } from './form.js';
3
3
  import { d as debounceEvent } from './utils.js';
4
4
  import { i as inheritAriaAttributes, a as inheritAttributes } from './attributes.js';
5
- import { f as danger } from './index2.js';
5
+ import { i as danger } from './index2.js';
6
6
  import { d as defineCustomElement$2 } from './pds-icon2.js';
7
7
 
8
8
  const labelCss = ":host{display:inline-block}:host([aria-disabled=true]) label{color:var(--pine-color-text-label-disabled)}:host([aria-readonly=true]) label{color:var(--pine-color-text-label-readonly)}label{color:var(--pine-color-text-label);font:var(--pine-typography-body-medium);letter-spacing:var(--pine-letter-spacing)}";
9
9
 
10
10
  const pdsInputTokensCss = ":host{--pine-input-color-background-danger:var(--pine-color-red-050)}";
11
11
 
12
- const pdsTextareaCss = ":host{display:inline}:host([aria-readonly=true]) textarea{background-color:var(--pine-color-background-container-disabled);color:var(--pine-color-text-readonly)}.pds-textarea{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.pds-textarea__label-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.pds-textarea__action{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs);-webkit-margin-start:var(--pine-dimension-xs);margin-inline-start:var(--pine-dimension-xs)}label{display:block;-webkit-margin-after:var(--pine-dimension-xs);margin-block-end:var(--pine-dimension-xs)}.pds-textarea__label-wrapper label{-webkit-margin-after:0;margin-block-end:0}.pds-textarea__field{background-color:var(--pine-color-background-container);border:var(--pine-border);border-radius:calc(var(--pine-dimension-xs) * 1.25);font:var(--pine-typography-body);letter-spacing:var(--pine-letter-spacing);padding:var(--pine-dimension-xs) var(--pine-dimension-sm)}.pds-textarea__field:hover:not(:disabled,.is-invalid){border:var(--pine-border-hover)}.pds-textarea__field:disabled{background-color:var(--pine-color-background-container-disabled);color:var(--pine-color-text-disabled);cursor:not-allowed}.pds-textarea__field:focus-visible{outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-textarea__field::-webkit-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field::-moz-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field:-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field::-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field::placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field.is-invalid{background-color:var(--pine-input-color-background-danger);border-color:var(--pine-color-border-danger)}.pds-textarea__field.is-invalid:focus-visible{outline-color:var(--pine-color-focus-ring-danger)}.pds-textarea__error-message,.pds-textarea__helper-message{color:var(--pine-color-text-message);font:var(--pine-typography-body-sm-medium);-webkit-margin-before:var(--pine-dimension-xs);margin-block-start:var(--pine-dimension-xs)}.pds-textarea__error-message{-ms-flex-align:center;align-items:center;color:var(--pine-color-text-message-danger);display:-ms-flexbox;display:flex;gap:var(--pine-dimension-2xs)}.visually-hidden{border:0;clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}";
12
+ const pdsTextareaCss = ":host{display:inline-block;width:100%}:host([aria-readonly=true]) textarea{background-color:var(--pine-color-background-container-disabled);color:var(--pine-color-text-readonly)}.pds-textarea{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.pds-textarea__label-wrapper{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.pds-textarea__action{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;gap:var(--pine-dimension-xs);-webkit-margin-start:var(--pine-dimension-xs);margin-inline-start:var(--pine-dimension-xs)}label{display:block;-webkit-margin-after:var(--pine-dimension-xs);margin-block-end:var(--pine-dimension-xs)}.pds-textarea__label-wrapper label{-webkit-margin-after:0;margin-block-end:0}.pds-textarea__helper-message{color:var(--pine-color-text-message);font:var(--pine-typography-body-sm-medium);-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs)}.pds-textarea__error-message{-ms-flex-align:center;align-items:center;color:var(--pine-color-text-message-danger);display:-ms-flexbox;display:flex;font:var(--pine-typography-body-sm-medium);gap:var(--pine-dimension-2xs);-webkit-margin-before:var(--pine-dimension-2xs);margin-block-start:var(--pine-dimension-2xs)}.pds-textarea__field-wrapper{display:inline-block;position:relative;width:100%}.pds-textarea__field{background-color:var(--pine-color-background-container);border:var(--pine-border);border-radius:calc(var(--pine-dimension-xs) * 1.25);-webkit-box-sizing:border-box;box-sizing:border-box;font:var(--pine-typography-body);letter-spacing:var(--pine-letter-spacing);min-height:calc(var(--pine-dimension-xl) * 2);min-width:calc(var(--pine-dimension-xl) * 2);padding:var(--pine-dimension-xs) var(--pine-dimension-sm);resize:both;width:100%}:host([max-length]) .pds-textarea__field{padding-bottom:calc(var(--pine-dimension-xs) + var(--pine-dimension-md))}.pds-textarea__field:hover:not(:disabled,.is-invalid){border:var(--pine-border-hover)}.pds-textarea__field:disabled{background-color:var(--pine-color-background-container-disabled);color:var(--pine-color-text-disabled);cursor:not-allowed}.pds-textarea__field:focus-visible{outline:var(--pine-outline-focus);outline-offset:var(--pine-border-width)}.pds-textarea__field::-webkit-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field::-moz-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field:-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field::-ms-input-placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field::placeholder{color:var(--pine-color-text-placeholder)}.pds-textarea__field.is-invalid{background-color:var(--pine-input-color-background-danger);border-color:var(--pine-color-border-danger)}.pds-textarea__field.is-invalid:focus-visible{outline-color:var(--pine-color-focus-ring-danger)}.pds-textarea__character-counter{background:color-mix(in srgb, var(--pine-color-background-container) 80%, transparent);border-radius:calc(var(--pine-dimension-2xs) * 0.5);color:var(--pine-color-text-readonly);font:var(--pine-typography-body-sm-medium);padding:calc(var(--pine-dimension-2xs) * 0.5) var(--pine-dimension-2xs);pointer-events:none;position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;z-index:2}:host([aria-disabled=true]) .pds-textarea__character-counter{background-color:var(--pine-color-background-container-disabled);color:var(--pine-color-text-disabled)}:host([aria-readonly=true]) .pds-textarea__character-counter{background-color:var(--pine-color-background-container-disabled);color:var(--pine-color-text-readonly)}.pds-textarea__field.is-invalid~.pds-textarea__character-counter{background-color:var(--pine-input-color-background-danger)}.visually-hidden{border:0;clip:rect(0 0 0 0);-webkit-clip-path:polygon(0 0, 0 0, 0 0);clip-path:polygon(0 0, 0 0, 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}";
13
13
 
14
14
  const PdsTextarea$1 = /*@__PURE__*/ proxyCustomElement(class PdsTextarea extends HTMLElement {
15
15
  constructor() {
@@ -69,9 +69,21 @@ const PdsTextarea$1 = /*@__PURE__*/ proxyCustomElement(class PdsTextarea extends
69
69
  this.onInput = (ev) => {
70
70
  const input = ev.target;
71
71
  if (input) {
72
+ // Handle maxLength validation
73
+ if (this.maxLength && input.value.length > this.maxLength) {
74
+ // Prevent input beyond maxLength
75
+ input.value = input.value.substring(0, this.maxLength);
76
+ }
72
77
  this.value = input.value || '';
73
78
  }
74
79
  this.emitInputChange(ev);
80
+ // Update counter position when content changes
81
+ if (this.maxLength && typeof ResizeObserver !== 'undefined') {
82
+ // Use requestAnimationFrame to ensure DOM is updated
83
+ requestAnimationFrame(() => {
84
+ this.updateCharacterCounterPosition();
85
+ });
86
+ }
75
87
  };
76
88
  this.onTextareaChange = (ev) => {
77
89
  this.emitValueChange(ev);
@@ -101,6 +113,24 @@ const PdsTextarea$1 = /*@__PURE__*/ proxyCustomElement(class PdsTextarea extends
101
113
  }
102
114
  // Update form value for Form Associated Custom Elements API
103
115
  this.updateFormValue();
116
+ // Update character counter position in case content changes affect sizing
117
+ if (this.maxLength && typeof ResizeObserver !== 'undefined') {
118
+ this.updateCharacterCounterPosition();
119
+ }
120
+ }
121
+ maxLengthChanged() {
122
+ // Setup or teardown ResizeObserver based on maxLength
123
+ if (this.resizeObserver) {
124
+ this.resizeObserver.disconnect();
125
+ }
126
+ if (this.maxLength && this.nativeTextarea) {
127
+ this.setupResizeObserver();
128
+ }
129
+ // Update ElementInternals validity when maxLength changes
130
+ if (this.internals && this.internals.setValidity && this.nativeTextarea) {
131
+ const isTooLong = this.nativeTextarea.value.length > (this.maxLength || 0);
132
+ this.internals.setValidity({ tooLong: isTooLong }, isTooLong ? 'Value exceeds maxLength' : '', this.nativeTextarea);
133
+ }
104
134
  }
105
135
  /**
106
136
  * Emits an `pdsInput` event.
@@ -138,6 +168,12 @@ const PdsTextarea$1 = /*@__PURE__*/ proxyCustomElement(class PdsTextarea extends
138
168
  this.internals = this.el.attachInternals();
139
169
  }
140
170
  }
171
+ disconnectedCallback() {
172
+ // Clean up ResizeObserver
173
+ if (this.resizeObserver) {
174
+ this.resizeObserver.disconnect();
175
+ }
176
+ }
141
177
  componentWillLoad() {
142
178
  this.inheritedAttributes = Object.assign(Object.assign({}, inheritAriaAttributes(this.el)), inheritAttributes(this.el));
143
179
  this.hasAction = this.el.querySelector('[slot="action"]') !== null;
@@ -146,6 +182,71 @@ const PdsTextarea$1 = /*@__PURE__*/ proxyCustomElement(class PdsTextarea extends
146
182
  this.originalPdsInput = this.pdsInput;
147
183
  // Set initial form value
148
184
  this.updateFormValue();
185
+ // Setup ResizeObserver for character counter positioning
186
+ this.setupResizeObserver();
187
+ }
188
+ /**
189
+ * Sets up ResizeObserver to track textarea resize for character counter positioning
190
+ */
191
+ setupResizeObserver() {
192
+ if (!this.maxLength || !this.nativeTextarea)
193
+ return;
194
+ // ResizeObserver may not be available in test environments
195
+ if (typeof ResizeObserver !== 'undefined') {
196
+ this.resizeObserver = new ResizeObserver(() => {
197
+ // Use requestAnimationFrame to ensure DOM updates are complete
198
+ requestAnimationFrame(() => {
199
+ this.updateCharacterCounterPosition();
200
+ });
201
+ });
202
+ this.resizeObserver.observe(this.nativeTextarea);
203
+ // Initial positioning with a small delay to ensure counter is rendered
204
+ requestAnimationFrame(() => {
205
+ this.updateCharacterCounterPosition();
206
+ });
207
+ }
208
+ }
209
+ /**
210
+ * Updates character counter position to stay within textarea boundaries during resize
211
+ */
212
+ updateCharacterCounterPosition() {
213
+ if (!this.characterCounter || !this.nativeTextarea)
214
+ return;
215
+ // Skip positioning in test environments where ResizeObserver isn't available
216
+ if (typeof ResizeObserver === 'undefined')
217
+ return;
218
+ // Ensure the character counter has been rendered and has dimensions
219
+ if (this.characterCounter.offsetWidth === 0 || this.characterCounter.offsetHeight === 0) {
220
+ // Counter not ready or component hidden - return and let resize/input observers handle positioning later
221
+ return;
222
+ }
223
+ // Position based on textarea's actual dimensions (which change during manual resize)
224
+ const textareaWidth = this.nativeTextarea.offsetWidth;
225
+ const textareaHeight = this.nativeTextarea.offsetHeight;
226
+ const counterWidth = this.characterCounter.offsetWidth;
227
+ const counterHeight = this.characterCounter.offsetHeight;
228
+ // Calculate position within textarea boundaries with padding from edges
229
+ const rightPosition = textareaWidth - counterWidth - 8;
230
+ const bottomPosition = textareaHeight - counterHeight - 8;
231
+ // Ensure counter stays within textarea boundaries even when resized very small
232
+ const finalLeft = Math.max(8, Math.min(rightPosition, textareaWidth - counterWidth - 8));
233
+ const finalTop = Math.max(8, Math.min(bottomPosition, textareaHeight - counterHeight - 8));
234
+ // Apply absolute positioning within the field wrapper
235
+ this.characterCounter.style.position = 'absolute';
236
+ this.characterCounter.style.left = `${finalLeft}px`;
237
+ this.characterCounter.style.top = `${finalTop}px`;
238
+ this.characterCounter.style.right = 'auto';
239
+ this.characterCounter.style.bottom = 'auto';
240
+ }
241
+ /**
242
+ * Renders the character counter when maxLength is set
243
+ */
244
+ renderCharacterCounter() {
245
+ if (!this.maxLength) {
246
+ return null;
247
+ }
248
+ const currentLength = this.getValue().length;
249
+ return (h("div", { class: "pds-textarea__character-counter", ref: (el) => this.characterCounter = el, role: "status", "aria-live": "polite", "aria-label": `${currentLength} of ${this.maxLength} characters` }, currentLength, " / ", this.maxLength));
149
250
  }
150
251
  renderAction() {
151
252
  const hasAction = this.el.querySelector('[slot="action"]') !== null;
@@ -197,16 +298,17 @@ const PdsTextarea$1 = /*@__PURE__*/ proxyCustomElement(class PdsTextarea extends
197
298
  }
198
299
  render() {
199
300
  const value = this.getValue();
200
- return (h(Host, { key: 'a1a70451b8987a1d152c5e440a672267b3ee325e', "aria-disabled": this.disabled ? 'true' : null, "aria-readonly": this.readonly ? 'true' : null, "has-action": this.hasAction && !this.hideLabel ? 'true' : null }, h("div", { key: 'c28061e7848a58995c0883a99af04170bbdd2ba0', class: "pds-textarea" }, this.label &&
201
- h("div", { key: '53bf7022550e51bc63decb0595c2e01c0bf7051c', class: "pds-textarea__label-wrapper" }, h("label", { key: 'ac1152cfb3f096a7861c6db9779f4bde3d117522', htmlFor: this.componentId }, h("span", { key: '0d664943f7fd9490879d0a8349743d535103608c', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), !this.hideLabel && this.renderAction()), h("textarea", Object.assign({ key: 'a7374006831ab8f0cda0a9b3bf999abc7485a16d', ref: (el) => this.nativeTextarea = el, "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage), "aria-invalid": this.invalid ? "true" : undefined, autocomplete: this.autocomplete, class: this.textareaClassNames(), disabled: this.disabled, id: this.componentId, name: this.name, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, rows: this.rows, onBlur: this.onBlur, onChange: this.onTextareaChange, onFocus: this.onFocus, onInput: this.onInput }, this.inheritedAttributes), value), this.helperMessage &&
202
- h("p", { key: '4ca62e53a085acde9b8550c123ea1ee5a8723581', class: "pds-textarea__helper-message", id: messageId(this.componentId, 'helper') }, this.helperMessage), this.invalid &&
203
- h("p", { key: 'f70e70f4588d0d9f1e7cc570bc5db1b6f6f27f0b', "aria-live": "assertive", class: "pds-textarea__error-message", id: messageId(this.componentId, 'error') }, h("pds-icon", { key: '7a91bdea1bd0ac2a477b41d6eec3dc6369119ab0', icon: danger, size: "small" }), this.errorMessage))));
301
+ return (h(Host, { key: '8a26dea3e236078cdcc24b9d862e7ecabd5ca456', "aria-disabled": this.disabled ? 'true' : null, "aria-readonly": this.readonly ? 'true' : null, "has-action": this.hasAction && !this.hideLabel ? 'true' : null }, h("div", { key: 'ea3a606459ac06b710e11adbf414310fc4af27b8', class: "pds-textarea" }, this.label &&
302
+ h("div", { key: '970ef900e888e94e752686b543f87c49da43c3b9', class: "pds-textarea__label-wrapper" }, h("label", { key: 'fd17142249728dea905b5cfbf365b35bad35ad5f', htmlFor: this.componentId }, h("span", { key: '17d15c0f9c0c45931b94ee5385f02bcab932ac49', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), !this.hideLabel && this.renderAction()), h("div", { key: 'eb4c78830a99fa7725e8423a923b66aa155e2082', class: "pds-textarea__field-wrapper" }, h("textarea", Object.assign({ key: 'eb1b3354e8b74a998f4b7f9592eefb3bec0fce8f', ref: (el) => this.nativeTextarea = el, "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage), "aria-invalid": this.invalid ? "true" : undefined, autocomplete: this.autocomplete, class: this.textareaClassNames(), disabled: this.disabled, id: this.componentId, maxlength: this.maxLength, name: this.name, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, rows: this.rows, onBlur: this.onBlur, onChange: this.onTextareaChange, onFocus: this.onFocus, onInput: this.onInput }, this.inheritedAttributes), value), this.renderCharacterCounter()), this.helperMessage &&
303
+ h("p", { key: '44dfd62abeff5e7fa43bf09aa21a130e806d48d7', class: "pds-textarea__helper-message", id: messageId(this.componentId, 'helper') }, this.helperMessage), this.invalid &&
304
+ h("p", { key: '8b12ec36446e8dc4af1091f5fb7e677059a32dea', "aria-live": "assertive", class: "pds-textarea__error-message", id: messageId(this.componentId, 'error') }, h("pds-icon", { key: '4728a615f8d46475a4345b78713232073547ad0c', icon: danger, size: "small" }), this.errorMessage))));
204
305
  }
205
306
  static get formAssociated() { return true; }
206
307
  get el() { return this; }
207
308
  static get watchers() { return {
208
309
  "debounce": ["debounceChanged"],
209
- "value": ["valueChanged"]
310
+ "value": ["valueChanged"],
311
+ "maxLength": ["maxLengthChanged"]
210
312
  }; }
211
313
  static get style() { return labelCss + (pdsInputTokensCss + pdsTextareaCss); }
212
314
  }, [65, "pds-textarea", {
@@ -224,13 +326,15 @@ const PdsTextarea$1 = /*@__PURE__*/ proxyCustomElement(class PdsTextarea extends
224
326
  "readonly": [4],
225
327
  "required": [4],
226
328
  "rows": [2],
329
+ "maxLength": [514, "max-length"],
227
330
  "value": [1025],
228
331
  "hasFocus": [32],
229
332
  "hasAction": [32],
230
333
  "setFocus": [64]
231
334
  }, undefined, {
232
335
  "debounce": ["debounceChanged"],
233
- "value": ["valueChanged"]
336
+ "value": ["valueChanged"],
337
+ "maxLength": ["maxLengthChanged"]
234
338
  }]);
235
339
  function defineCustomElement$1() {
236
340
  if (typeof customElements === "undefined") {
@@ -1 +1 @@
1
- {"file":"pds-textarea.js","mappings":";;;;;;;AAAA,MAAM,QAAQ,GAAG,oTAAoT;;ACArU,MAAM,iBAAiB,GAAG,uEAAuE;;ACAjG,MAAM,cAAc,GAAG,4pFAA4pF;;MCqBtqFA,aAAW,iBAAAC,kBAAA,CAAA,MAAA,WAAA,SAAA,WAAA,CAAA;AAVxB,IAAA,WAAA,GAAA;;;;;;;;AAcU,QAAA,IAAmB,CAAA,mBAAA,GAAe,EAAE;AAsD5C;;;AAGG;AACK,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK;AAiBxB;;;AAGG;AACoB,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAC;AAavC;;AAEG;AACK,QAAA,IAAA,CAAA,IAAI,GAAW,IAAI,CAAC,WAAW;AAOvC;;;AAGG;AACK,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK;AAExB;;;AAGG;AACK,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK;AAOxB;;AAEG;AACoB,QAAA,IAAK,CAAA,KAAA,GAAmB,EAAE;AAExC,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK;AAEzB;;AAEG;AACM,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK;AAoDlB,QAAA,IAAA,CAAA,MAAM,GAAG,CAAC,EAAc,KAAI;AAClC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;YAErB,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,KAAK,EAAE;AACpC,gBAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;;AAG1B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;AACvB,SAAC;AAEO,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,EAAc,KAAI;AACnC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK;AAE9B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AACxB,SAAC;AAEO,QAAA,IAAA,CAAA,OAAO,GAAG,CAAC,EAAS,KAAI;AAC9B,YAAA,MAAM,KAAK,GAAG,EAAE,CAAC,MAAoC;YACrD,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE;;AAEhC,YAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;AAC1B,SAAC;AAEO,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,EAAS,KAAI;AACvC,YAAA,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;AAC1B,SAAC;AA8JF;AA7UC;;;AAGG;AAEH,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;;;IA4FrB,eAAe,GAAA;QACvB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,IAAI;AAErD,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,KAAK,SAAS,GAAG,gBAAgB,KAAhB,IAAA,IAAA,gBAAgB,cAAhB,gBAAgB,GAAI,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC;;AAG3G;;AAEG;IAEO,YAAY,GAAA;AACpB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc;AAC1C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;QAE7B,IAAI,cAAc,IAAI,cAAc,CAAC,KAAK,KAAK,KAAK,EAAE;AACpD,YAAA,cAAc,CAAC,KAAK,GAAG,KAAK;;;QAI9B,IAAI,CAAC,eAAe,EAAE;;AAGxB;;AAEG;AACK,IAAA,eAAe,CAAC,KAAa,EAAA;AACnC,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;QACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;;AAGtC;;AAEG;AACK,IAAA,eAAe,CAAC,KAAa,EAAA;AACnC,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,MAA6B;AACpD,QAAA,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC;AAE1B,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ;;AAG1B,QAAA,MAAM,QAAQ,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE;AACzD,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ;AAC5B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;IAGjD,QAAQ,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE;;IAgCjB,kBAAkB,GAAA;AACxB,QAAA,MAAM,UAAU,GAAG,CAAC,qBAAqB,CAAC;QAE1C,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;AACzC,YAAA,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;;AAG/B,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;IAG9B,iBAAiB,GAAA;QACf,IAAI,CAAC,eAAe,EAAE;;AAEtB,QAAA,IAAI,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE;YAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE;;;IAI9C,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,mBAAmB,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACnB,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,EAC9B,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAC9B;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,IAAI;;IAGpE,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ;;QAErC,IAAI,CAAC,eAAe,EAAE;;IAGhB,YAAY,GAAA;AAClB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,KAAK,IAAI;QACnE,IAAI,SAAS,EAAE;YACb,QACE,WAAK,KAAK,EAAC,sBAAsB,EAAC,IAAI,EAAC,QAAQ,EAAA,EAC7C,CAAA,CAAA,MAAA,EAAA,EAAM,IAAI,EAAC,QAAQ,EAAQ,CAAA,CACvB;;AAGV,QAAA,OAAO,IAAI;;AAGb;;AAEG;IACK,eAAe,GAAA;QACrB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;AACjD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC7B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC;;AAG1C,YAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;gBACvE,IAAI,CAAC,SAAS,CAAC,WAAW,CACxB,IAAI,CAAC,cAAc,CAAC,QAAQ,EAC5B,IAAI,CAAC,cAAc,CAAC,iBAAiB,EACrC,IAAI,CAAC,cAAc,CACpB;;;;AAKP;;AAEG;IACH,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;QACf,IAAI,CAAC,eAAe,EAAE;;AAGxB;;AAEG;AACH,IAAA,oBAAoB,CAAC,QAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;AAG1B;;AAEG;AACH,IAAA,wBAAwB,CAAC,KAA+B,EAAA;AACtD,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;aACb,IAAI,KAAK,YAAY,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE;;YAEjD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AAClC,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,gBAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;;;IAKxB,MAAM,GAAA;AACJ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAE7B,QAAA,QACE,CAAC,CAAA,IAAI,sEACY,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,IAAI,mBAC7B,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,IAAI,gBAChC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,GAAG,IAAI,EAAA,EAE7D,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,cAAc,EAAA,EACtB,IAAI,CAAC,KAAK;YACT,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,6BAA6B,EAAA,EACtC,CAAA,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAO,OAAO,EAAE,IAAI,CAAC,WAAW,EAAA,EAC9B,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAE,IAAI,CAAC,SAAS,GAAG,iBAAiB,GAAG,EAAE,EAAA,EACjD,IAAI,CAAC,KAAK,CACN,CACD,EACP,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,EAAE,CACnC,EAER,CAAA,CAAA,UAAA,EAAA,MAAA,CAAA,MAAA,CAAA,EAAA,GAAA,EAAA,0CAAA,EACE,GAAG,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,cAAc,GAAG,EAAE,EACnB,kBAAA,EAAA,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,EAAA,cAAA,EACzE,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,SAAS,EAC/C,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAAE,EAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,EAAE,EAAE,IAAI,CAAC,WAAW,EACpB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,OAAO,EAAE,IAAI,CAAC,OAAO,EACjB,EAAA,IAAI,CAAC,mBAAmB,CAE3B,EAAA,KAAK,CACG,EACV,IAAI,CAAC,aAAa;AACjB,YAAA,CAAA,CAAA,GAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAC,8BAA8B,EACpC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,IAExC,IAAI,CAAC,aAAa,CACjB,EAEL,IAAI,CAAC,OAAO;YACX,CAAA,CAAA,GAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,WAAA,EACY,WAAW,EACrB,KAAK,EAAC,6BAA6B,EACnC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,EAAA,EAExC,CAAA,CAAA,UAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAU,IAAI,EAAE,MAAM,EAAE,IAAI,EAAC,OAAO,EAAG,CAAA,EACtC,IAAI,CAAC,YAAY,CAChB,CAEF,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["PdsTextarea","__stencil_proxyCustomElement"],"sources":["src/global/styles/utils/label.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-input/pds-input.tokens.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-textarea/pds-textarea.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-textarea/pds-textarea.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n:host([aria-disabled=\"true\"]) label {\n color: var(--pine-color-text-label-disabled);\n}\n\n:host([aria-readonly=\"true\"]) {\n label {\n color: var(--pine-color-text-label-readonly);\n }\n}\n\nlabel {\n color: var(--pine-color-text-label);\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n}\n","@use '~@kajabi-ui/styles/dist/pine/components/pds-input/pds-input.tokens'\n",":host {\n display: inline;\n}\n\n:host([aria-readonly=\"true\"]) {\n textarea {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-readonly);\n }\n}\n\n.pds-textarea {\n display: flex;\n flex-direction: column;\n}\n\n.pds-textarea__label-wrapper {\n align-items: center;\n display: flex;\n justify-content: space-between;\n}\n\n.pds-textarea__action {\n align-items: center;\n display: flex;\n gap: var(--pine-dimension-xs);\n margin-inline-start: var(--pine-dimension-xs);\n}\n\nlabel {\n display: block;\n margin-block-end: var(--pine-dimension-xs);\n}\n\n// When label is inside wrapper, remove its margin\n.pds-textarea__label-wrapper label {\n margin-block-end: 0;\n}\n\n.pds-textarea__field {\n background-color: var(--pine-color-background-container);\n border: var(--pine-border);\n border-radius: calc(var(--pine-dimension-xs) * 1.25);\n font: var(--pine-typography-body);\n letter-spacing: var(--pine-letter-spacing);\n padding: var(--pine-dimension-xs) var(--pine-dimension-sm);\n\n &:hover:not(:disabled, .is-invalid) {\n border: var(--pine-border-hover);\n }\n\n &:disabled {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-disabled);\n cursor: not-allowed;\n }\n\n &:focus-visible {\n outline: var(--pine-outline-focus);\n outline-offset: var(--pine-border-width);\n }\n\n &::placeholder {\n color: var(--pine-color-text-placeholder);\n }\n\n &.is-invalid {\n background-color: var(--pine-input-color-background-danger);\n border-color: var(--pine-color-border-danger);\n\n &:focus-visible {\n outline-color: var(--pine-color-focus-ring-danger);\n }\n }\n}\n\n.pds-textarea__error-message,\n.pds-textarea__helper-message {\n color: var(--pine-color-text-message);\n font: var(--pine-typography-body-sm-medium);\n margin-block-start: var(--pine-dimension-xs);\n}\n\n.pds-textarea__error-message {\n align-items: center;\n color: var(--pine-color-text-message-danger);\n display: flex;\n gap: var(--pine-dimension-2xs);\n}\n\n.visually-hidden {\n border: 0;\n clip: rect(0 0 0 0);\n clip-path: polygon(0 0, 0 0, 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n","import { Component, Element, Event, EventEmitter, Host, h, Method, Prop, State, Watch } from '@stencil/core';\nimport { assignDescription, isRequired, messageId } from '../../utils/form';\nimport { TextareaChangeEventDetail, TextareaInputEventDetail } from './textarea-interface';\nimport { debounceEvent } from '@utils/utils';\nimport type { Attributes } from '@utils/attributes';\nimport { inheritAttributes, inheritAriaAttributes } from '@utils/attributes';\nimport { danger } from '@pine-ds/icons/icons';\n\n/**\n * @slot action - Content to be displayed in the label area, typically for help icons or links\n */\n@Component({\n tag: 'pds-textarea',\n styleUrls: [\n '../../global/styles/utils/label.scss',\n '../pds-input/pds-input.tokens.scss',\n 'pds-textarea.scss'\n ],\n shadow: true,\n formAssociated: true,\n})\nexport class PdsTextarea {\n\n private nativeTextarea?: HTMLTextAreaElement\n private focusedValue?: string | null;\n private inheritedAttributes: Attributes = {};\n private originalPdsInput?: EventEmitter<TextareaInputEventDetail>;\n private internals?: ElementInternals;\n\n @Element() el: HTMLPdsTextareaElement;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() pdsBlur!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the input has focus.\n */\n @Event() pdsFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when a keyboard input occurs.\n *\n * For elements that accept text input (`type=text`, `type=tel`, etc.), the interface\n * is [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others,\n * the interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If\n * the input is cleared on edit, the type is `null`.\n */\n @Event() pdsInput: EventEmitter<TextareaInputEventDetail>;\n\n /**\n * Event emitted whenever the value of the textarea changes.\n *\n * This event will not emit when programmatically setting the `value` property.\n */\n @Event() pdsTextareaChange: EventEmitter<TextareaChangeEventDetail>;\n\n /**\n * Sets focus on the native `textarea` in the `pds-textarea`. Use this method instead of the global\n * `textarea.focus()`.\n */\n @Method()\n async setFocus() {\n if (this.nativeTextarea) {\n this.nativeTextarea.focus();\n }\n }\n\n /**\n * Specifies if and how the browser provides `autocomplete` assistance for the field.\n */\n @Prop() autocomplete: string;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Determines whether or not the textarea is disabled.\n * @defaultValue false\n */\n @Prop() disabled = false;\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the event after each keystroke.\n */\n @Prop() debounce?: number;\n\n /**\n * Displays an error message below the textarea field.\n */\n @Prop() errorMessage?: string;\n\n /**\n * Displays a message or hint below the textarea field.\n */\n @Prop() helperMessage?: string;\n\n /**\n * Determines whether or not the textarea is invalid or throws an error.\n * @defaultValue false\n */\n @Prop({mutable: true}) invalid = false; // eslint-disable-line @stencil-community/strict-mutable\n\n /**\n * Text to be displayed as the textarea label.\n */\n @Prop() label?: string;\n\n /**\n * Visually hides the label text for instances where only the textarea should be displayed. Label remains accessible to assistive technology such as screen readers.\n * Note: When true, the action slot is also hidden to maintain a minimal UI.\n */\n @Prop() hideLabel: boolean;\n\n /**\n * Specifies the name. Submitted with the form name/value pair. This value will mirror the componentId.\n */\n @Prop() name: string = this.componentId;\n\n /**\n * Specifies a short hint that describes the expected value of the textarea.\n */\n @Prop() placeholder?: string;\n\n /**\n * Determines whether or not the textarea is readonly.\n * @defaultValue false\n */\n @Prop() readonly = false;\n\n /**\n * Determines whether or not the textarea is required.\n * @defaultValue false\n */\n @Prop() required = false;\n\n /**\n * Sets number of rows of text visible without needing to scroll in the textarea.\n */\n @Prop() rows?: number;\n\n /**\n * The value of the textarea.\n */\n @Prop({mutable: true}) value?: string | null = '';\n\n @State() hasFocus = false;\n\n /**\n * If true, the textarea has action content in the label area\n */\n @State() hasAction = false;\n\n @Watch('debounce')\n protected debounceChanged() {\n const { pdsInput, debounce, originalPdsInput } = this;\n\n this.pdsInput = debounce === undefined ? originalPdsInput ?? pdsInput : debounceEvent(pdsInput, debounce);\n }\n\n /**\n * Update the native input element when the value changes\n */\n @Watch('value')\n protected valueChanged() {\n const nativeTextarea = this.nativeTextarea;\n const value = this.getValue();\n\n if (nativeTextarea && nativeTextarea.value !== value) {\n nativeTextarea.value = value;\n }\n\n // Update form value for Form Associated Custom Elements API\n this.updateFormValue();\n }\n\n /**\n * Emits an `pdsInput` event.\n */\n private emitInputChange(event?: Event) {\n const { value } = this;\n this.pdsInput.emit({ value, event });\n }\n\n /**\n * Emits an `pdsTextareaChange` event.\n */\n private emitValueChange(event?: Event) {\n const textarea = event.target as HTMLTextAreaElement;\n isRequired(textarea, this);\n\n const { value } = textarea;\n\n // Checks for both null and undefined values\n const newValue = value == null ? value : value.toString();\n this.focusedValue = newValue;\n this.pdsTextareaChange.emit({ value: newValue, event });\n }\n\n private getValue(): string {\n return this.value || '';\n }\n\n private onBlur = (ev: FocusEvent) => {\n this.hasFocus = false;\n\n if (this.focusedValue !== this.value) {\n this.emitValueChange(ev);\n }\n\n this.pdsBlur.emit(ev);\n };\n\n private onFocus = (ev: FocusEvent) => {\n this.hasFocus = true;\n this.focusedValue = this.value;\n\n this.pdsFocus.emit(ev);\n };\n\n private onInput = (ev: Event) => {\n const input = ev.target as HTMLTextAreaElement | null;\n if (input) {\n this.value = input.value || '';\n }\n this.emitInputChange(ev);\n };\n\n private onTextareaChange = (ev: Event) => {\n this.emitValueChange(ev);\n };\n\n private textareaClassNames() {\n const classNames = ['pds-textarea__field'];\n\n if (this.invalid && this.invalid === true) {\n classNames.push('is-invalid');\n }\n\n return classNames.join(' ');\n }\n\n connectedCallback() {\n this.debounceChanged();\n // Initialize ElementInternals for form association\n if (this.el.attachInternals) {\n this.internals = this.el.attachInternals();\n }\n }\n\n componentWillLoad() {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el),\n };\n this.hasAction = this.el.querySelector('[slot=\"action\"]') !== null;\n }\n\n componentDidLoad() {\n this.originalPdsInput = this.pdsInput;\n // Set initial form value\n this.updateFormValue();\n }\n\n private renderAction() {\n const hasAction = this.el.querySelector('[slot=\"action\"]') !== null;\n if (hasAction) {\n return (\n <div class=\"pds-textarea__action\" part=\"action\">\n <slot name=\"action\"></slot>\n </div>\n );\n }\n return null;\n }\n\n /**\n * Updates the form value using ElementInternals API\n */\n private updateFormValue() {\n if (this.internals && this.internals.setFormValue) {\n const value = this.getValue();\n this.internals.setFormValue(value || null);\n\n // Set validity based on native textarea validation\n if (this.nativeTextarea && this.internals && this.internals.setValidity) {\n this.internals.setValidity(\n this.nativeTextarea.validity,\n this.nativeTextarea.validationMessage,\n this.nativeTextarea\n );\n }\n }\n }\n\n /**\n * Form Associated Custom Elements API: Called when the form is reset\n */\n formResetCallback() {\n this.value = '';\n this.updateFormValue();\n }\n\n /**\n * Form Associated Custom Elements API: Called when the form is disabled\n */\n formDisabledCallback(disabled: boolean) {\n this.disabled = disabled;\n }\n\n /**\n * Form Associated Custom Elements API: Called to restore form state\n */\n formStateRestoreCallback(state: string | FormData | null) {\n if (typeof state === 'string') {\n this.value = state;\n } else if (state instanceof FormData && this.name) {\n // Extract value from FormData using the textarea's name\n const value = state.get(this.name);\n if (typeof value === 'string') {\n this.value = value;\n }\n }\n }\n\n render() {\n const value = this.getValue();\n\n return (\n <Host\n aria-disabled={this.disabled ? 'true' : null}\n aria-readonly={this.readonly ? 'true' : null}\n has-action={this.hasAction && !this.hideLabel ? 'true' : null}\n >\n <div class=\"pds-textarea\">\n {this.label &&\n <div class=\"pds-textarea__label-wrapper\">\n <label htmlFor={this.componentId}>\n <span class={this.hideLabel ? 'visually-hidden' : ''}>\n {this.label}\n </span>\n </label>\n {!this.hideLabel && this.renderAction()}\n </div>\n }\n <textarea\n ref={(el) => this.nativeTextarea = el }\n aria-describedby={assignDescription(this.componentId, this.invalid, this.helperMessage)}\n aria-invalid={this.invalid ? \"true\" : undefined}\n autocomplete={this.autocomplete}\n class={this.textareaClassNames()}\n disabled={this.disabled}\n id={this.componentId}\n name={this.name}\n placeholder={this.placeholder}\n readOnly={this.readonly}\n required={this.required}\n rows={this.rows}\n onBlur={this.onBlur}\n onChange={this.onTextareaChange}\n onFocus={this.onFocus}\n onInput={this.onInput}\n {...this.inheritedAttributes}\n >\n {value}\n </textarea>\n {this.helperMessage &&\n <p\n class=\"pds-textarea__helper-message\"\n id={messageId(this.componentId, 'helper')}\n >\n {this.helperMessage}\n </p>\n }\n {this.invalid &&\n <p\n aria-live=\"assertive\"\n class=\"pds-textarea__error-message\"\n id={messageId(this.componentId, 'error')}\n >\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </p>\n }\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"pds-textarea.js","mappings":"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","names":["PdsTextarea","__stencil_proxyCustomElement"],"sources":["src/global/styles/utils/label.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-input/pds-input.tokens.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-textarea/pds-textarea.scss?tag=pds-textarea&encapsulation=shadow","src/components/pds-textarea/pds-textarea.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n:host([aria-disabled=\"true\"]) label {\n color: var(--pine-color-text-label-disabled);\n}\n\n:host([aria-readonly=\"true\"]) {\n label {\n color: var(--pine-color-text-label-readonly);\n }\n}\n\nlabel {\n color: var(--pine-color-text-label);\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n}\n","@use '~@kajabi-ui/styles/dist/pine/components/pds-input/pds-input.tokens'\n",":host {\n display: inline-block;\n width: 100%;\n}\n\n:host([aria-readonly=\"true\"]) {\n textarea {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-readonly);\n }\n}\n\n.pds-textarea {\n display: flex;\n flex-direction: column;\n}\n\n.pds-textarea__label-wrapper {\n align-items: center;\n display: flex;\n justify-content: space-between;\n}\n\n.pds-textarea__action {\n align-items: center;\n display: flex;\n gap: var(--pine-dimension-xs);\n margin-inline-start: var(--pine-dimension-xs);\n}\n\nlabel {\n display: block;\n margin-block-end: var(--pine-dimension-xs);\n}\n\n// When label is inside wrapper, remove its margin\n.pds-textarea__label-wrapper label {\n margin-block-end: 0;\n}\n\n.pds-textarea__helper-message {\n color: var(--pine-color-text-message);\n font: var(--pine-typography-body-sm-medium);\n margin-block-start: var(--pine-dimension-2xs);\n}\n\n.pds-textarea__error-message {\n align-items: center;\n color: var(--pine-color-text-message-danger);\n display: flex;\n font: var(--pine-typography-body-sm-medium);\n gap: var(--pine-dimension-2xs);\n margin-block-start: var(--pine-dimension-2xs);\n}\n\n.pds-textarea__field-wrapper {\n display: inline-block;\n position: relative;\n width: 100%;\n}\n\n.pds-textarea__field {\n background-color: var(--pine-color-background-container);\n border: var(--pine-border);\n border-radius: calc(var(--pine-dimension-xs) * 1.25);\n box-sizing: border-box;\n font: var(--pine-typography-body);\n letter-spacing: var(--pine-letter-spacing);\n min-height: calc(var(--pine-dimension-xl) * 2);\n min-width: calc(var(--pine-dimension-xl) * 2);\n padding: var(--pine-dimension-xs) var(--pine-dimension-sm);\n resize: both;\n width: 100%;\n\n // Add bottom padding when character counter is present\n :host([max-length]) & {\n padding-bottom: calc(var(--pine-dimension-xs) + var(--pine-dimension-md));\n }\n\n &:hover:not(:disabled, .is-invalid) {\n border: var(--pine-border-hover);\n }\n\n &:disabled {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-disabled);\n cursor: not-allowed;\n }\n\n &:focus-visible {\n outline: var(--pine-outline-focus);\n outline-offset: var(--pine-border-width);\n }\n\n &::placeholder {\n color: var(--pine-color-text-placeholder);\n }\n\n &.is-invalid {\n background-color: var(--pine-input-color-background-danger);\n border-color: var(--pine-color-border-danger);\n\n &:focus-visible {\n outline-color: var(--pine-color-focus-ring-danger);\n }\n }\n}\n\n.pds-textarea__character-counter {\n background: color-mix(in srgb, var(--pine-color-background-container) 80%, transparent);\n border-radius: calc(var(--pine-dimension-2xs) * 0.5);\n color: var(--pine-color-text-readonly);\n font: var(--pine-typography-body-sm-medium);\n padding: calc(var(--pine-dimension-2xs) * 0.5) var(--pine-dimension-2xs);\n pointer-events: none;\n position: absolute;\n user-select: none;\n white-space: nowrap;\n z-index: 2;\n\n // Match textarea disabled state\n :host([aria-disabled=\"true\"]) & {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-disabled);\n }\n\n // Match textarea readonly state\n :host([aria-readonly=\"true\"]) & {\n background-color: var(--pine-color-background-container-disabled);\n color: var(--pine-color-text-readonly);\n }\n\n // Match textarea invalid state - target when field has is-invalid class\n .pds-textarea__field.is-invalid ~ & {\n background-color: var(--pine-input-color-background-danger);\n }\n}\n\n.visually-hidden {\n border: 0;\n clip: rect(0 0 0 0);\n clip-path: polygon(0 0, 0 0, 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n","import { Component, Element, Event, EventEmitter, Host, h, Method, Prop, State, Watch } from '@stencil/core';\nimport { assignDescription, isRequired, messageId } from '../../utils/form';\nimport { TextareaChangeEventDetail, TextareaInputEventDetail } from './textarea-interface';\nimport { debounceEvent } from '@utils/utils';\nimport type { Attributes } from '@utils/attributes';\nimport { inheritAttributes, inheritAriaAttributes } from '@utils/attributes';\nimport { danger } from '@pine-ds/icons/icons';\n\n/**\n * @slot action - Content to be displayed in the label area, typically for help icons or links\n */\n@Component({\n tag: 'pds-textarea',\n styleUrls: [\n '../../global/styles/utils/label.scss',\n '../pds-input/pds-input.tokens.scss',\n 'pds-textarea.scss'\n ],\n shadow: true,\n formAssociated: true,\n})\nexport class PdsTextarea {\n\n private nativeTextarea?: HTMLTextAreaElement\n private focusedValue?: string | null;\n private inheritedAttributes: Attributes = {};\n private originalPdsInput?: EventEmitter<TextareaInputEventDetail>;\n private internals?: ElementInternals;\n private resizeObserver?: ResizeObserver;\n private characterCounter?: HTMLElement;\n\n @Element() el: HTMLPdsTextareaElement;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() pdsBlur!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the input has focus.\n */\n @Event() pdsFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when a keyboard input occurs.\n *\n * For elements that accept text input (`type=text`, `type=tel`, etc.), the interface\n * is [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others,\n * the interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If\n * the input is cleared on edit, the type is `null`.\n */\n @Event() pdsInput: EventEmitter<TextareaInputEventDetail>;\n\n /**\n * Event emitted whenever the value of the textarea changes.\n *\n * This event will not emit when programmatically setting the `value` property.\n */\n @Event() pdsTextareaChange: EventEmitter<TextareaChangeEventDetail>;\n\n /**\n * Sets focus on the native `textarea` in the `pds-textarea`. Use this method instead of the global\n * `textarea.focus()`.\n */\n @Method()\n async setFocus() {\n if (this.nativeTextarea) {\n this.nativeTextarea.focus();\n }\n }\n\n /**\n * Specifies if and how the browser provides `autocomplete` assistance for the field.\n */\n @Prop() autocomplete: string;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Determines whether or not the textarea is disabled.\n * @defaultValue false\n */\n @Prop() disabled = false;\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the event after each keystroke.\n */\n @Prop() debounce?: number;\n\n /**\n * Displays an error message below the textarea field.\n */\n @Prop() errorMessage?: string;\n\n /**\n * Displays a message or hint below the textarea field.\n */\n @Prop() helperMessage?: string;\n\n /**\n * Determines whether or not the textarea is invalid or throws an error.\n * @defaultValue false\n */\n @Prop({mutable: true}) invalid = false; // eslint-disable-line @stencil-community/strict-mutable\n\n /**\n * Text to be displayed as the textarea label.\n */\n @Prop() label?: string;\n\n /**\n * Visually hides the label text for instances where only the textarea should be displayed. Label remains accessible to assistive technology such as screen readers.\n * Note: When true, the action slot is also hidden to maintain a minimal UI.\n */\n @Prop() hideLabel: boolean;\n\n /**\n * Specifies the name. Submitted with the form name/value pair. This value will mirror the componentId.\n */\n @Prop() name: string = this.componentId;\n\n /**\n * Specifies a short hint that describes the expected value of the textarea.\n */\n @Prop() placeholder?: string;\n\n /**\n * Determines whether or not the textarea is readonly.\n * @defaultValue false\n */\n @Prop() readonly = false;\n\n /**\n * Determines whether or not the textarea is required.\n * @defaultValue false\n */\n @Prop() required = false;\n\n /**\n * Sets number of rows of text visible without needing to scroll in the textarea.\n */\n @Prop() rows?: number;\n\n /**\n * Specifies the maximum number of characters allowed in the textarea. When set, displays a character counter.\n */\n @Prop({ reflect: true }) maxLength?: number;\n\n /**\n * The value of the textarea.\n */\n @Prop({mutable: true}) value?: string | null = '';\n\n @State() hasFocus = false;\n\n /**\n * If true, the textarea has action content in the label area\n */\n @State() hasAction = false;\n\n @Watch('debounce')\n protected debounceChanged() {\n const { pdsInput, debounce, originalPdsInput } = this;\n\n this.pdsInput = debounce === undefined ? originalPdsInput ?? pdsInput : debounceEvent(pdsInput, debounce);\n }\n\n /**\n * Update the native input element when the value changes\n */\n @Watch('value')\n protected valueChanged() {\n const nativeTextarea = this.nativeTextarea;\n const value = this.getValue();\n\n if (nativeTextarea && nativeTextarea.value !== value) {\n nativeTextarea.value = value;\n }\n\n // Update form value for Form Associated Custom Elements API\n this.updateFormValue();\n\n // Update character counter position in case content changes affect sizing\n if (this.maxLength && typeof ResizeObserver !== 'undefined') {\n this.updateCharacterCounterPosition();\n }\n }\n\n @Watch('maxLength')\n protected maxLengthChanged() {\n // Setup or teardown ResizeObserver based on maxLength\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n\n if (this.maxLength && this.nativeTextarea) {\n this.setupResizeObserver();\n }\n\n // Update ElementInternals validity when maxLength changes\n if (this.internals && this.internals.setValidity && this.nativeTextarea) {\n const isTooLong = this.nativeTextarea.value.length > (this.maxLength || 0);\n this.internals.setValidity(\n { tooLong: isTooLong },\n isTooLong ? 'Value exceeds maxLength' : '',\n this.nativeTextarea\n );\n }\n }\n\n /**\n * Emits an `pdsInput` event.\n */\n private emitInputChange(event?: Event) {\n const { value } = this;\n this.pdsInput.emit({ value, event });\n }\n\n /**\n * Emits an `pdsTextareaChange` event.\n */\n private emitValueChange(event?: Event) {\n const textarea = event.target as HTMLTextAreaElement;\n isRequired(textarea, this);\n\n const { value } = textarea;\n\n // Checks for both null and undefined values\n const newValue = value == null ? value : value.toString();\n this.focusedValue = newValue;\n this.pdsTextareaChange.emit({ value: newValue, event });\n }\n\n private getValue(): string {\n return this.value || '';\n }\n\n private onBlur = (ev: FocusEvent) => {\n this.hasFocus = false;\n\n if (this.focusedValue !== this.value) {\n this.emitValueChange(ev);\n }\n\n this.pdsBlur.emit(ev);\n };\n\n private onFocus = (ev: FocusEvent) => {\n this.hasFocus = true;\n this.focusedValue = this.value;\n\n this.pdsFocus.emit(ev);\n };\n\n private onInput = (ev: Event) => {\n const input = ev.target as HTMLTextAreaElement | null;\n if (input) {\n // Handle maxLength validation\n if (this.maxLength && input.value.length > this.maxLength) {\n // Prevent input beyond maxLength\n input.value = input.value.substring(0, this.maxLength);\n }\n this.value = input.value || '';\n }\n this.emitInputChange(ev);\n\n // Update counter position when content changes\n if (this.maxLength && typeof ResizeObserver !== 'undefined') {\n // Use requestAnimationFrame to ensure DOM is updated\n requestAnimationFrame(() => {\n this.updateCharacterCounterPosition();\n });\n }\n };\n\n private onTextareaChange = (ev: Event) => {\n this.emitValueChange(ev);\n };\n\n private textareaClassNames() {\n const classNames = ['pds-textarea__field'];\n\n if (this.invalid && this.invalid === true) {\n classNames.push('is-invalid');\n }\n\n return classNames.join(' ');\n }\n\n connectedCallback() {\n this.debounceChanged();\n // Initialize ElementInternals for form association\n if (this.el.attachInternals) {\n this.internals = this.el.attachInternals();\n }\n }\n\n disconnectedCallback() {\n // Clean up ResizeObserver\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n componentWillLoad() {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el),\n ...inheritAttributes(this.el),\n };\n this.hasAction = this.el.querySelector('[slot=\"action\"]') !== null;\n }\n\n componentDidLoad() {\n this.originalPdsInput = this.pdsInput;\n // Set initial form value\n this.updateFormValue();\n\n // Setup ResizeObserver for character counter positioning\n this.setupResizeObserver();\n }\n\n /**\n * Sets up ResizeObserver to track textarea resize for character counter positioning\n */\n private setupResizeObserver() {\n if (!this.maxLength || !this.nativeTextarea) return;\n\n // ResizeObserver may not be available in test environments\n if (typeof ResizeObserver !== 'undefined') {\n this.resizeObserver = new ResizeObserver(() => {\n // Use requestAnimationFrame to ensure DOM updates are complete\n requestAnimationFrame(() => {\n this.updateCharacterCounterPosition();\n });\n });\n\n this.resizeObserver.observe(this.nativeTextarea);\n\n // Initial positioning with a small delay to ensure counter is rendered\n requestAnimationFrame(() => {\n this.updateCharacterCounterPosition();\n });\n }\n }\n\n /**\n * Updates character counter position to stay within textarea boundaries during resize\n */\n private updateCharacterCounterPosition() {\n if (!this.characterCounter || !this.nativeTextarea) return;\n\n // Skip positioning in test environments where ResizeObserver isn't available\n if (typeof ResizeObserver === 'undefined') return;\n\n // Ensure the character counter has been rendered and has dimensions\n if (this.characterCounter.offsetWidth === 0 || this.characterCounter.offsetHeight === 0) {\n // Counter not ready or component hidden - return and let resize/input observers handle positioning later\n return;\n }\n\n // Position based on textarea's actual dimensions (which change during manual resize)\n const textareaWidth = this.nativeTextarea.offsetWidth;\n const textareaHeight = this.nativeTextarea.offsetHeight;\n const counterWidth = this.characterCounter.offsetWidth;\n const counterHeight = this.characterCounter.offsetHeight;\n\n // Calculate position within textarea boundaries with padding from edges\n const rightPosition = textareaWidth - counterWidth - 8;\n const bottomPosition = textareaHeight - counterHeight - 8;\n\n // Ensure counter stays within textarea boundaries even when resized very small\n const finalLeft = Math.max(8, Math.min(rightPosition, textareaWidth - counterWidth - 8));\n const finalTop = Math.max(8, Math.min(bottomPosition, textareaHeight - counterHeight - 8));\n\n // Apply absolute positioning within the field wrapper\n this.characterCounter.style.position = 'absolute';\n this.characterCounter.style.left = `${finalLeft}px`;\n this.characterCounter.style.top = `${finalTop}px`;\n this.characterCounter.style.right = 'auto';\n this.characterCounter.style.bottom = 'auto';\n }\n\n /**\n * Renders the character counter when maxLength is set\n */\n private renderCharacterCounter() {\n if (!this.maxLength) {\n return null;\n }\n\n const currentLength = this.getValue().length;\n return (\n <div\n class=\"pds-textarea__character-counter\"\n ref={(el) => this.characterCounter = el}\n role=\"status\"\n aria-live=\"polite\"\n aria-label={`${currentLength} of ${this.maxLength} characters`}\n >\n {currentLength} / {this.maxLength}\n </div>\n );\n }\n\n private renderAction() {\n const hasAction = this.el.querySelector('[slot=\"action\"]') !== null;\n if (hasAction) {\n return (\n <div class=\"pds-textarea__action\" part=\"action\">\n <slot name=\"action\"></slot>\n </div>\n );\n }\n return null;\n }\n\n /**\n * Updates the form value using ElementInternals API\n */\n private updateFormValue() {\n if (this.internals && this.internals.setFormValue) {\n const value = this.getValue();\n this.internals.setFormValue(value || null);\n\n // Set validity based on native textarea validation\n if (this.nativeTextarea && this.internals && this.internals.setValidity) {\n this.internals.setValidity(\n this.nativeTextarea.validity,\n this.nativeTextarea.validationMessage,\n this.nativeTextarea\n );\n }\n }\n }\n\n\n /**\n * Form Associated Custom Elements API: Called when the form is reset\n */\n formResetCallback() {\n this.value = '';\n this.updateFormValue();\n }\n\n /**\n * Form Associated Custom Elements API: Called when the form is disabled\n */\n formDisabledCallback(disabled: boolean) {\n this.disabled = disabled;\n }\n\n /**\n * Form Associated Custom Elements API: Called to restore form state\n */\n formStateRestoreCallback(state: string | FormData | null) {\n if (typeof state === 'string') {\n this.value = state;\n } else if (state instanceof FormData && this.name) {\n // Extract value from FormData using the textarea's name\n const value = state.get(this.name);\n if (typeof value === 'string') {\n this.value = value;\n }\n }\n }\n\n render() {\n const value = this.getValue();\n\n return (\n <Host\n aria-disabled={this.disabled ? 'true' : null}\n aria-readonly={this.readonly ? 'true' : null}\n has-action={this.hasAction && !this.hideLabel ? 'true' : null}\n >\n <div class=\"pds-textarea\">\n {this.label &&\n <div class=\"pds-textarea__label-wrapper\">\n <label htmlFor={this.componentId}>\n <span class={this.hideLabel ? 'visually-hidden' : ''}>\n {this.label}\n </span>\n </label>\n {!this.hideLabel && this.renderAction()}\n </div>\n }\n <div class=\"pds-textarea__field-wrapper\">\n <textarea\n ref={(el) => this.nativeTextarea = el }\n aria-describedby={assignDescription(this.componentId, this.invalid, this.helperMessage)}\n aria-invalid={this.invalid ? \"true\" : undefined}\n autocomplete={this.autocomplete}\n class={this.textareaClassNames()}\n disabled={this.disabled}\n id={this.componentId}\n maxlength={this.maxLength}\n name={this.name}\n placeholder={this.placeholder}\n readOnly={this.readonly}\n required={this.required}\n rows={this.rows}\n onBlur={this.onBlur}\n onChange={this.onTextareaChange}\n onFocus={this.onFocus}\n onInput={this.onInput}\n {...this.inheritedAttributes}\n >\n {value}\n </textarea>\n {this.renderCharacterCounter()}\n </div>\n {this.helperMessage &&\n <p\n class=\"pds-textarea__helper-message\"\n id={messageId(this.componentId, 'helper')}\n >\n {this.helperMessage}\n </p>\n }\n {this.invalid &&\n <p\n aria-live=\"assertive\"\n class=\"pds-textarea__error-message\"\n id={messageId(this.componentId, 'error')}\n >\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </p>\n }\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -85,13 +85,13 @@ const PdsToast$1 = /*@__PURE__*/ proxyCustomElement(class PdsToast extends HTMLE
85
85
  return this.icon && h("pds-icon", { name: this.icon, class: "pds-toast__icon" });
86
86
  }
87
87
  render() {
88
- return (h(Host, { key: '3fb4b7b3600555959e9ed09f9dfd3a725d4a2de7', hidden: !this.isVisible }, h("div", { key: '4f8d554fc30a5e4fb3c498b8fa5a2972a60eb0ab', class: {
88
+ return (h(Host, { key: 'cf03483967a2414e2c6ee68587af609af0bb64c6', hidden: !this.isVisible }, h("div", { key: '70413e3220f6890dd2367bc96a7060269a33124c', class: {
89
89
  'pds-toast': true,
90
90
  [`pds-toast--${this.type}`]: this.type !== 'default',
91
91
  'pds-toast--animating-out': this.isAnimatingOut
92
- }, role: "alert", "aria-live": "polite" }, this.renderIcon(), h("span", { key: 'a70883e76524ce76e562f48d62df1a42fb65659c', class: "pds-toast__message" }, h("slot", { key: '3e2fd182b97d1cd89c59ca109404d77e9f834806' })), this.dismissible && (h("button", { key: '945b766572831b259f2ff36fdf628b254189d334', type: "button", class: "pds-toast__button", onClick: () => {
92
+ }, role: "alert", "aria-live": "polite" }, this.renderIcon(), h("span", { key: '52a991d93d9530e4689586f51b2b78978ff9f4d5', class: "pds-toast__message" }, h("slot", { key: 'fb00a8204606a4621315656e91b3928ed8ad4827' })), this.dismissible && (h("button", { key: 'de78866e9b4f746d823bf68b7d8736ab4bafb9d7', type: "button", class: "pds-toast__button", onClick: () => {
93
93
  this.dismiss();
94
- }, "aria-label": "Dismiss message" }, h("pds-icon", { key: '9492720d544270179ae43bd3d1ecb4b1f6c0882b', name: "remove" }))))));
94
+ }, "aria-label": "Dismiss message" }, h("pds-icon", { key: '495a71b67c4a6690f4c1b9562ddd8862d88a85e4', name: "remove" }))))));
95
95
  }
96
96
  static get watchers() { return {
97
97
  "duration": ["handleDurationChange"]
@@ -313,9 +313,9 @@ const PdsTooltip$1 = /*@__PURE__*/ proxyCustomElement(class PdsTooltip extends H
313
313
  }
314
314
  render() {
315
315
  const hostId = this.componentId || undefined;
316
- return (h(Host, { key: '71fb8114cbf8db309eba0c19c0d9bd491d250157', id: hostId, class: { 'pds-tooltip--is-open': this.opened } }, h("span", { key: '9df511e60bc96c462a80f6bf6431f695e2effa3c', class: "pds-tooltip__trigger", onMouseEnter: this.handleShow, onMouseLeave: this.handleHide,
316
+ return (h(Host, { key: 'a07130a894d2e76cbbeab98b62f7d44883b2ffbf', id: hostId, class: { 'pds-tooltip--is-open': this.opened } }, h("span", { key: '3b78462857e4b196caca8d1fa12fc2a4ac286af5', class: "pds-tooltip__trigger", onMouseEnter: this.handleShow, onMouseLeave: this.handleHide,
317
317
  /* focusin/out bubble; ensure keyboard users see tooltips */
318
- onFocusin: this.handleShow, onFocusout: this.handleHide, ref: el => this.triggerEl = el }, h("slot", { key: 'eae36227df5fd93edf1af61e58b6369c0162944f' })), h("div", { key: '4c3a3f86d7e24aeff9299a9ef19396e078421467', class: "pds-tooltip__content-slot-wrapper", hidden: true }, h("slot", { key: 'babfdd5793e8007015dab364985c1451d976383f', name: "content" }))));
318
+ onFocusin: this.handleShow, onFocusout: this.handleHide, ref: el => this.triggerEl = el }, h("slot", { key: 'a480486c0a4e39d1afe236e344b4711b4914a89f' })), h("div", { key: '1ccfb6f48fbaccc6ba99b4d3e263c6f68c00d3f0', class: "pds-tooltip__content-slot-wrapper", hidden: true }, h("slot", { key: '67a4d2346c8d1574e17e9ccd035d83e1b232580d', name: "content" }))));
319
319
  }
320
320
  get el() { return this; }
321
321
  static get watchers() { return {
@@ -2,6 +2,7 @@
2
2
 
3
3
  /* pds-icons v9.8.0, ES Modules */
4
4
 
5
+ const addCircle = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m11-5a1 1 0 0 1 1 1v3h3a1 1 0 1 1 0 2h-3v3a1 1 0 1 1-2 0v-3H8a1 1 0 1 1 0-2h3V8a1 1 0 0 1 1-1'/></svg>";
5
6
  const caretDown = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M5.293 8.293a1 1 0 0 1 1.414 0L12 13.586l5.293-5.293a1 1 0 1 1 1.414 1.414l-6 6a1 1 0 0 1-1.414 0l-6-6a1 1 0 0 1 0-1.414'/></svg>";
6
7
  const checkCircleFilled = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M12 1C5.925 1 1 5.925 1 12s4.925 11 11 11 11-4.925 11-11S18.075 1 12 1m5.207 8.707a1 1 0 0 0-1.414-1.414L10.5 13.586l-2.293-2.293a1 1 0 0 0-1.414 1.414l3 3a1 1 0 0 0 1.414 0z'/></svg>";
7
8
  const copy = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M11.162 1h7.676c.528 0 .982 0 1.357.03.395.033.789.104 1.167.297a3 3 0 0 1 1.311 1.311c.193.378.264.772.296 1.167.031.375.031.83.031 1.356v7.678c0 .527 0 .981-.03 1.356-.033.395-.104.789-.297 1.167a3 3 0 0 1-1.311 1.311c-.378.193-.772.264-1.167.296-.375.031-.83.031-1.357.031H17v1.838c0 .528 0 .982-.03 1.357-.033.395-.104.789-.297 1.167a3 3 0 0 1-1.311 1.311c-.378.193-.772.264-1.167.296-.375.031-.83.031-1.356.031H5.16c-.527 0-.981 0-1.356-.03-.395-.033-.789-.104-1.167-.297a3 3 0 0 1-1.311-1.311c-.193-.378-.264-.772-.296-1.167C1 19.82 1 19.365 1 18.838v-7.677c0-.527 0-.981.03-1.356.033-.395.104-.789.297-1.167a3 3 0 0 1 1.311-1.311c.378-.193.772-.264 1.167-.296C4.18 7 4.635 7 5.161 7H7V5.161c0-.527 0-.981.03-1.356.033-.395.104-.789.297-1.167a3 3 0 0 1 1.311-1.311c.378-.193.772-.264 1.167-.296C10.18 1 10.635 1 11.162 1M5.2 9c-.577 0-.949 0-1.232.024-.272.022-.373.06-.422.085a1 1 0 0 0-.437.437c-.025.05-.063.15-.085.422C3 10.25 3 10.623 3 11.2v7.6c0 .577 0 .949.024 1.232.022.272.06.373.085.422a1 1 0 0 0 .437.437c.05.025.15.063.422.085C4.25 21 4.623 21 5.2 21h7.6c.577 0 .949 0 1.232-.024.272-.022.373-.06.422-.085a1 1 0 0 0 .437-.437c.025-.05.063-.15.085-.422C15 19.75 15 19.377 15 18.8v-7.6c0-.577 0-.949-.024-1.232-.022-.272-.06-.373-.085-.422a1 1 0 0 0-.437-.437c-.05-.025-.15-.063-.422-.085C13.75 9 13.377 9 12.8 9zM17 15v-3.838c0-.528 0-.982-.03-1.357-.033-.395-.104-.789-.297-1.167a3 3 0 0 0-1.311-1.311c-.378-.193-.772-.264-1.167-.296A18 18 0 0 0 12.838 7H9V5.2c0-.577 0-.949.024-1.232.022-.272.06-.373.085-.422a1 1 0 0 1 .437-.437c.05-.025.15-.063.422-.085C10.25 3 10.623 3 11.2 3h7.6c.577 0 .949 0 1.232.024.272.022.373.06.422.085a1 1 0 0 1 .437.437c.025.05.063.15.085.422C21 4.25 21 4.623 21 5.2v7.6c0 .577 0 .949-.024 1.232-.022.272-.06.373-.085.422a1 1 0 0 1-.437.437c-.05.025-.15.063-.422.085C19.75 15 19.377 15 18.8 15z'/></svg>";
@@ -11,9 +12,11 @@ const enlarge = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'
11
12
  const handle = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path d='M2.833 7.5c-.46 0-.833.448-.833 1s.373 1 .833 1h18.334c.46 0 .833-.448.833-1s-.373-1-.833-1zM2.833 14.5c-.46 0-.833.448-.833 1s.373 1 .833 1h18.334c.46 0 .833-.448.833-1s-.373-1-.833-1z'/></svg>";
12
13
  const launch = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M14 3a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v6a1 1 0 1 1-2 0V5.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L18.586 4H15a1 1 0 0 1-1-1M7.759 4H10a1 1 0 1 1 0 2H7.8c-.857 0-1.439 0-1.889.038-.438.035-.663.1-.819.18a2 2 0 0 0-.874.874c-.08.156-.145.38-.18.819C4 8.361 4 8.943 4 9.8v6.4c0 .857 0 1.439.038 1.889.035.438.1.663.18.819a2 2 0 0 0 .874.874c.156.08.38.145.819.18C6.361 20 6.943 20 7.8 20h6.4c.857 0 1.439 0 1.889-.038.438-.035.663-.1.819-.18a2 2 0 0 0 .874-.874c.08-.156.145-.38.18-.819.037-.45.038-1.032.038-1.889V14a1 1 0 1 1 2 0v2.241c0 .805 0 1.47-.044 2.01-.046.563-.145 1.08-.392 1.565a4 4 0 0 1-1.748 1.748c-.485.247-1.002.346-1.564.392-.541.044-1.206.044-2.01.044H7.758c-.805 0-1.47 0-2.01-.044-.563-.046-1.08-.145-1.565-.392a4 4 0 0 1-1.748-1.748c-.247-.485-.346-1.002-.392-1.564C2 17.71 2 17.046 2 16.242V9.758c0-.805 0-1.47.044-2.01.046-.563.145-1.08.392-1.565a4 4 0 0 1 1.748-1.748c.485-.247 1.002-.346 1.564-.392C6.29 4 6.954 4 7.758 4'/></svg>";
13
14
  const remove = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M5.293 5.293a1 1 0 0 1 1.414 0L12 10.586l5.293-5.293a1 1 0 1 1 1.414 1.414L13.414 12l5.293 5.293a1 1 0 0 1-1.414 1.414L12 13.414l-5.293 5.293a1 1 0 0 1-1.414-1.414L10.586 12 5.293 6.707a1 1 0 0 1 0-1.414'/></svg>";
15
+ const trash = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M11.162 1h1.676c.528 0 .982 0 1.357.03.395.033.789.104 1.167.297a3 3 0 0 1 1.311 1.311c.193.378.264.772.296 1.167.028.336.03.736.031 1.195h4a1 1 0 1 1 0 2h-1v10.241c0 .805 0 1.47-.044 2.01-.046.563-.145 1.08-.392 1.565a4 4 0 0 1-1.748 1.748c-.485.247-1.002.346-1.564.392-.541.044-1.206.044-2.01.044H9.758c-.805 0-1.47 0-2.01-.044-.563-.046-1.08-.145-1.565-.392a4 4 0 0 1-1.748-1.748c-.247-.485-.346-1.002-.392-1.564C4 18.71 4 18.046 4 17.242V7H3a1 1 0 1 1 0-2h4c0-.459.003-.86.03-1.195.033-.395.104-.789.297-1.167a3 3 0 0 1 1.311-1.311c.378-.193.772-.264 1.167-.296C10.18 1 10.635 1 11.162 1M6 7v10.2c0 .857 0 1.439.038 1.889.035.438.1.663.18.819a2 2 0 0 0 .874.874c.156.08.38.145.819.18C8.361 21 8.943 21 9.8 21h4.4c.857 0 1.439 0 1.889-.038.438-.035.663-.1.819-.18a2 2 0 0 0 .874-.874c.08-.156.145-.38.18-.819.037-.45.038-1.032.038-1.889V7zm9-2H9c0-.465.004-.783.024-1.032.022-.272.06-.373.085-.422a1 1 0 0 1 .437-.437c.05-.025.15-.063.422-.085C10.25 3 10.623 3 11.2 3h1.6c.577 0 .949 0 1.232.024.272.022.373.06.422.085a1 1 0 0 1 .437.437c.025.05.063.15.085.422.02.249.023.567.024 1.032m-5 5.5a1 1 0 0 1 1 1v5a1 1 0 1 1-2 0v-5a1 1 0 0 1 1-1m4 0a1 1 0 0 1 1 1v5a1 1 0 1 1-2 0v-5a1 1 0 0 1 1-1'/></svg>";
14
16
  const upSmall = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M11.293 8.293a1 1 0 0 1 1.414 0l6 6a1 1 0 0 1-1.414 1.414L12 10.414l-5.293 5.293a1 1 0 0 1-1.414-1.414z'/></svg>";
15
17
  const userFilled = "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M8.786 14.5h6.428c.727 0 1.222 0 1.654.076a5 5 0 0 1 4.056 4.056c.076.432.076.927.076 1.654 0 .158.005.318-.023.474a1.5 1.5 0 0 1-1.216 1.217c-.137.024-.28.023-.351.023Q12 21.961 4.59 22c-.07 0-.214.001-.35-.023a1.5 1.5 0 0 1-1.217-1.216c-.028-.157-.023-.317-.023-.475 0-.727 0-1.222.076-1.654a5 5 0 0 1 4.056-4.056c.432-.076.927-.076 1.654-.076M6.5 7.5a5.5 5.5 0 1 1 11 0 5.5 5.5 0 0 1-11 0'/></svg>";
16
18
 
19
+ exports.addCircle = addCircle;
17
20
  exports.caretDown = caretDown;
18
21
  exports.checkCircleFilled = checkCircleFilled;
19
22
  exports.copy = copy;
@@ -23,8 +26,9 @@ exports.enlarge = enlarge;
23
26
  exports.handle = handle;
24
27
  exports.launch = launch;
25
28
  exports.remove = remove;
29
+ exports.trash = trash;
26
30
  exports.upSmall = upSmall;
27
31
  exports.userFilled = userFilled;
28
- //# sourceMappingURL=index-DVaLegMK.js.map
32
+ //# sourceMappingURL=index-CTirFLR-.js.map
29
33
 
30
- //# sourceMappingURL=index-DVaLegMK.js.map
34
+ //# sourceMappingURL=index-CTirFLR-.js.map