@pine-ds/core 3.4.2 → 3.5.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 (587) hide show
  1. package/components/floating-ui.dom.js +180 -4
  2. package/components/floating-ui.dom.js.map +1 -1
  3. package/components/index2.js +1 -1
  4. package/components/index2.js.map +1 -1
  5. package/components/mock-pds-modal.js +1 -1
  6. package/components/pds-box2.js +4 -2
  7. package/components/pds-box2.js.map +1 -1
  8. package/components/pds-button2.js +2 -2
  9. package/components/pds-button2.js.map +1 -1
  10. package/components/pds-input.js +3 -2
  11. package/components/pds-input.js.map +1 -1
  12. package/components/pds-link2.js +2 -2
  13. package/components/pds-loader2.js +1 -1
  14. package/components/pds-loader2.js.map +1 -1
  15. package/components/pds-modal-content.js +2 -2
  16. package/components/pds-modal-footer.js +1 -1
  17. package/components/pds-modal-header.js +1 -1
  18. package/components/pds-modal.js +2 -2
  19. package/components/pds-popover.js +1 -1
  20. package/components/pds-progress.js +1 -1
  21. package/components/pds-property.js +1 -1
  22. package/components/pds-radio.js +3 -3
  23. package/components/pds-row.js +1 -1
  24. package/components/pds-select.js +1 -1
  25. package/components/pds-select.js.map +1 -1
  26. package/components/pds-sortable-item.js +1 -1
  27. package/components/pds-sortable.js +1 -1
  28. package/components/pds-switch.js +3 -3
  29. package/components/pds-tab.js +4 -4
  30. package/components/pds-tab.js.map +1 -1
  31. package/components/pds-table-body.js +1 -1
  32. package/components/pds-table-cell2.js +66 -8
  33. package/components/pds-table-cell2.js.map +1 -1
  34. package/components/pds-table-head-cell2.js +67 -9
  35. package/components/pds-table-head-cell2.js.map +1 -1
  36. package/components/pds-table-head.js +1 -1
  37. package/components/pds-table-row.js +1 -1
  38. package/components/pds-table.js +106 -4
  39. package/components/pds-table.js.map +1 -1
  40. package/components/pds-tabpanel.js +1 -1
  41. package/components/pds-tabs.js +1 -1
  42. package/components/pds-text2.js +1 -1
  43. package/components/pds-textarea.js +7 -6
  44. package/components/pds-textarea.js.map +1 -1
  45. package/components/pds-tooltip.js +93 -159
  46. package/components/pds-tooltip.js.map +1 -1
  47. package/dist/cjs/{floating-ui.dom-Bz4BD-cr.js → floating-ui.dom-DTAy35nv.js} +182 -5
  48. package/dist/{esm-es5/floating-ui.dom-D_FwyeSw.js.map → cjs/floating-ui.dom-DTAy35nv.js.map} +1 -1
  49. package/dist/cjs/{index-BfqrB2cC.js → index-DVaLegMK.js} +3 -3
  50. package/dist/cjs/index-DVaLegMK.js.map +1 -0
  51. package/dist/cjs/loader.cjs.js +1 -1
  52. package/dist/cjs/mock-pds-modal.cjs.entry.js +1 -1
  53. package/dist/cjs/pds-accordion.cjs.entry.js +1 -1
  54. package/dist/cjs/pds-avatar.cjs.entry.js +1 -1
  55. package/dist/cjs/pds-box.cjs.entry.js +3 -2
  56. package/dist/cjs/pds-box.cjs.entry.js.map +1 -1
  57. package/dist/cjs/pds-box.entry.cjs.js.map +1 -1
  58. package/dist/cjs/pds-button.cjs.entry.js +3 -3
  59. package/dist/cjs/pds-button.cjs.entry.js.map +1 -1
  60. package/dist/cjs/pds-button.entry.cjs.js.map +1 -1
  61. package/dist/cjs/pds-checkbox.cjs.entry.js +1 -1
  62. package/dist/cjs/pds-chip.cjs.entry.js +1 -1
  63. package/dist/cjs/pds-combobox.cjs.entry.js +1 -1
  64. package/dist/cjs/pds-copytext.cjs.entry.js +1 -1
  65. package/dist/cjs/pds-dropdown-menu.cjs.entry.js +1 -1
  66. package/dist/cjs/pds-input.cjs.entry.js +3 -3
  67. package/dist/cjs/pds-input.cjs.entry.js.map +1 -1
  68. package/dist/cjs/pds-input.entry.cjs.js.map +1 -1
  69. package/dist/cjs/pds-link.cjs.entry.js +3 -3
  70. package/dist/cjs/pds-loader.cjs.entry.js +1 -1
  71. package/dist/cjs/pds-loader.cjs.entry.js.map +1 -1
  72. package/dist/cjs/pds-loader.entry.cjs.js.map +1 -1
  73. package/dist/cjs/pds-modal-content.cjs.entry.js +2 -2
  74. package/dist/cjs/pds-modal-footer.cjs.entry.js +1 -1
  75. package/dist/cjs/pds-modal-header.cjs.entry.js +1 -1
  76. package/dist/cjs/pds-modal.cjs.entry.js +2 -2
  77. package/dist/cjs/pds-popover.cjs.entry.js +1 -1
  78. package/dist/cjs/pds-progress.cjs.entry.js +1 -1
  79. package/dist/cjs/pds-property.cjs.entry.js +1 -1
  80. package/dist/cjs/pds-radio.cjs.entry.js +4 -4
  81. package/dist/cjs/pds-row.cjs.entry.js +1 -1
  82. package/dist/cjs/pds-select.cjs.entry.js +2 -2
  83. package/dist/cjs/pds-select.cjs.entry.js.map +1 -1
  84. package/dist/cjs/pds-select.entry.cjs.js.map +1 -1
  85. package/dist/cjs/pds-sortable-item.cjs.entry.js +2 -2
  86. package/dist/cjs/pds-sortable.cjs.entry.js +1 -1
  87. package/dist/cjs/pds-switch.cjs.entry.js +4 -4
  88. package/dist/cjs/pds-tab.cjs.entry.js +4 -4
  89. package/dist/cjs/pds-tab.cjs.entry.js.map +1 -1
  90. package/dist/cjs/pds-tab.entry.cjs.js.map +1 -1
  91. package/dist/cjs/pds-table-body.cjs.entry.js +1 -1
  92. package/dist/cjs/pds-table-cell.cjs.entry.js +65 -8
  93. package/dist/cjs/pds-table-cell.cjs.entry.js.map +1 -1
  94. package/dist/cjs/pds-table-cell.entry.cjs.js.map +1 -1
  95. package/dist/cjs/pds-table-head-cell.cjs.entry.js +67 -10
  96. package/dist/cjs/pds-table-head-cell.cjs.entry.js.map +1 -1
  97. package/dist/cjs/pds-table-head-cell.entry.cjs.js.map +1 -1
  98. package/dist/cjs/pds-table-head.cjs.entry.js +1 -1
  99. package/dist/cjs/pds-table-row.cjs.entry.js +1 -1
  100. package/dist/cjs/pds-table.cjs.entry.js +106 -4
  101. package/dist/cjs/pds-table.cjs.entry.js.map +1 -1
  102. package/dist/cjs/pds-table.entry.cjs.js.map +1 -1
  103. package/dist/cjs/pds-tabpanel.cjs.entry.js +1 -1
  104. package/dist/cjs/pds-tabs.cjs.entry.js +1 -1
  105. package/dist/cjs/pds-text.cjs.entry.js +1 -1
  106. package/dist/cjs/pds-textarea.cjs.entry.js +7 -7
  107. package/dist/cjs/pds-textarea.cjs.entry.js.map +1 -1
  108. package/dist/cjs/pds-textarea.entry.cjs.js.map +1 -1
  109. package/dist/cjs/pds-tooltip.cjs.entry.js +93 -158
  110. package/dist/cjs/pds-tooltip.cjs.entry.js.map +1 -1
  111. package/dist/cjs/pds-tooltip.entry.cjs.js.map +1 -1
  112. package/dist/cjs/pine-core.cjs.js +1 -1
  113. package/dist/collection/components/pds-accordion/stories/pds-accordion.stories.js +1 -1
  114. package/dist/collection/components/pds-alert/stories/pds-alert.stories.js +6 -6
  115. package/dist/collection/components/pds-box/pds-box.css +4 -0
  116. package/dist/collection/components/pds-box/pds-box.js +24 -1
  117. package/dist/collection/components/pds-box/pds-box.js.map +1 -1
  118. package/dist/collection/components/pds-box/stories/pds-box.stories.js +2 -2
  119. package/dist/collection/components/pds-button/pds-button.css +1 -0
  120. package/dist/collection/components/pds-button/pds-button.js +2 -1
  121. package/dist/collection/components/pds-button/pds-button.js.map +1 -1
  122. package/dist/collection/components/pds-button/stories/pds-button.stories.js +4 -4
  123. package/dist/collection/components/pds-checkbox/stories/pds-checkbox.stories.js +6 -6
  124. package/dist/collection/components/pds-chip/stories/pds-chip.stories.js +2 -2
  125. package/dist/collection/components/pds-copytext/stories/pds-copytext.stories.js +3 -3
  126. package/dist/collection/components/pds-image/stories/pds-image.stories.js +1 -1
  127. package/dist/collection/components/pds-input/pds-input.css +13 -0
  128. package/dist/collection/components/pds-input/pds-input.js +20 -1
  129. package/dist/collection/components/pds-input/pds-input.js.map +1 -1
  130. package/dist/collection/components/pds-input/stories/pds-input.stories.js +47 -38
  131. package/dist/collection/components/pds-link/pds-link.js +2 -2
  132. package/dist/collection/components/pds-link/stories/pds-link.stories.js +2 -2
  133. package/dist/collection/components/pds-loader/pds-loader.js +2 -1
  134. package/dist/collection/components/pds-loader/pds-loader.js.map +1 -1
  135. package/dist/collection/components/pds-loader/stories/pds-loader.stories.js +3 -3
  136. package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +2 -2
  137. package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +1 -1
  138. package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +1 -1
  139. package/dist/collection/components/pds-modal/pds-modal.js +2 -2
  140. package/dist/collection/components/pds-modal/stories/pds-modal.stories.js +9 -9
  141. package/dist/collection/components/pds-modal/test/mock-pds-modal.js +1 -1
  142. package/dist/collection/components/pds-popover/pds-popover.js +1 -1
  143. package/dist/collection/components/pds-progress/pds-progress.js +1 -1
  144. package/dist/collection/components/pds-progress/stories/pds-progress.stories.js +2 -2
  145. package/dist/collection/components/pds-property/pds-property.js +1 -1
  146. package/dist/collection/components/pds-radio/pds-radio.js +3 -3
  147. package/dist/collection/components/pds-radio/stories/pds-radio.stories.js +6 -6
  148. package/dist/collection/components/pds-row/pds-row.js +1 -1
  149. package/dist/collection/components/pds-row/stories/pds-row.stories.js +16 -12
  150. package/dist/collection/components/pds-select/pds-select.js +2 -2
  151. package/dist/collection/components/pds-select/pds-select.js.map +1 -1
  152. package/dist/collection/components/pds-select/stories/pds-select.stories.js +19 -19
  153. package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
  154. package/dist/collection/components/pds-sortable/pds-sortable.js +1 -1
  155. package/dist/collection/components/pds-sortable/stories/pds-sortable.stories.js +4 -4
  156. package/dist/collection/components/pds-switch/pds-switch.js +3 -3
  157. package/dist/collection/components/pds-switch/stories/pds-switch.stories.js +5 -5
  158. package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
  159. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.css +16 -0
  160. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +83 -7
  161. package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js.map +1 -1
  162. package/dist/collection/components/pds-table/pds-table-cell/stories/pds-table-cell.stories.js +23 -4
  163. package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +1 -1
  164. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.css +18 -1
  165. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +84 -8
  166. package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js.map +1 -1
  167. package/dist/collection/components/pds-table/pds-table-head-cell/stories/pds-table-head-cell.stories.js +13 -4
  168. package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +1 -1
  169. package/dist/collection/components/pds-table/pds-table.css +80 -11
  170. package/dist/collection/components/pds-table/pds-table.js +105 -3
  171. package/dist/collection/components/pds-table/pds-table.js.map +1 -1
  172. package/dist/collection/components/pds-table/stories/pds-table.stories.js +57 -12
  173. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.css +6 -6
  174. package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js +3 -3
  175. package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +1 -1
  176. package/dist/collection/components/pds-tabs/pds-tabs.js +1 -1
  177. package/dist/collection/components/pds-text/pds-text.js +1 -1
  178. package/dist/collection/components/pds-textarea/pds-textarea.css +13 -0
  179. package/dist/collection/components/pds-textarea/pds-textarea.js +25 -6
  180. package/dist/collection/components/pds-textarea/pds-textarea.js.map +1 -1
  181. package/dist/collection/components/pds-textarea/stories/pds-textarea.stories.js +19 -15
  182. package/dist/collection/components/pds-toast/stories/pds-toast.stories.js +2 -2
  183. package/dist/collection/components/pds-tooltip/pds-tooltip.css +0 -1
  184. package/dist/collection/components/pds-tooltip/pds-tooltip.js +102 -78
  185. package/dist/collection/components/pds-tooltip/pds-tooltip.js.map +1 -1
  186. package/dist/collection/components/pds-tooltip/stories/pds-tooltip.stories.js +14 -14
  187. package/dist/docs.json +176 -7
  188. package/dist/esm/{floating-ui.dom-D_FwyeSw.js → floating-ui.dom-DbQzNDdQ.js} +182 -6
  189. package/dist/esm/{floating-ui.dom-D_FwyeSw.js.map → floating-ui.dom-DbQzNDdQ.js.map} +1 -1
  190. package/dist/esm/{index-CzVv99mW.js → index-DrJ5r5Pu.js} +3 -3
  191. package/dist/esm/index-DrJ5r5Pu.js.map +1 -0
  192. package/dist/esm/loader.js +1 -1
  193. package/dist/esm/mock-pds-modal.entry.js +1 -1
  194. package/dist/esm/pds-accordion.entry.js +1 -1
  195. package/dist/esm/pds-avatar.entry.js +1 -1
  196. package/dist/esm/pds-box.entry.js +3 -2
  197. package/dist/esm/pds-box.entry.js.map +1 -1
  198. package/dist/esm/pds-button.entry.js +3 -3
  199. package/dist/esm/pds-button.entry.js.map +1 -1
  200. package/dist/esm/pds-checkbox.entry.js +1 -1
  201. package/dist/esm/pds-chip.entry.js +1 -1
  202. package/dist/esm/pds-combobox.entry.js +1 -1
  203. package/dist/esm/pds-copytext.entry.js +1 -1
  204. package/dist/esm/pds-dropdown-menu.entry.js +1 -1
  205. package/dist/esm/pds-input.entry.js +3 -3
  206. package/dist/esm/pds-input.entry.js.map +1 -1
  207. package/dist/esm/pds-link.entry.js +3 -3
  208. package/dist/esm/pds-loader.entry.js +1 -1
  209. package/dist/esm/pds-loader.entry.js.map +1 -1
  210. package/dist/esm/pds-modal-content.entry.js +2 -2
  211. package/dist/esm/pds-modal-footer.entry.js +1 -1
  212. package/dist/esm/pds-modal-header.entry.js +1 -1
  213. package/dist/esm/pds-modal.entry.js +2 -2
  214. package/dist/esm/pds-popover.entry.js +1 -1
  215. package/dist/esm/pds-progress.entry.js +1 -1
  216. package/dist/esm/pds-property.entry.js +1 -1
  217. package/dist/esm/pds-radio.entry.js +4 -4
  218. package/dist/esm/pds-row.entry.js +1 -1
  219. package/dist/esm/pds-select.entry.js +2 -2
  220. package/dist/esm/pds-select.entry.js.map +1 -1
  221. package/dist/esm/pds-sortable-item.entry.js +2 -2
  222. package/dist/esm/pds-sortable.entry.js +1 -1
  223. package/dist/esm/pds-switch.entry.js +4 -4
  224. package/dist/esm/pds-tab.entry.js +4 -4
  225. package/dist/esm/pds-tab.entry.js.map +1 -1
  226. package/dist/esm/pds-table-body.entry.js +1 -1
  227. package/dist/esm/pds-table-cell.entry.js +65 -8
  228. package/dist/esm/pds-table-cell.entry.js.map +1 -1
  229. package/dist/esm/pds-table-head-cell.entry.js +67 -10
  230. package/dist/esm/pds-table-head-cell.entry.js.map +1 -1
  231. package/dist/esm/pds-table-head.entry.js +1 -1
  232. package/dist/esm/pds-table-row.entry.js +1 -1
  233. package/dist/esm/pds-table.entry.js +106 -4
  234. package/dist/esm/pds-table.entry.js.map +1 -1
  235. package/dist/esm/pds-tabpanel.entry.js +1 -1
  236. package/dist/esm/pds-tabs.entry.js +1 -1
  237. package/dist/esm/pds-text.entry.js +1 -1
  238. package/dist/esm/pds-textarea.entry.js +7 -7
  239. package/dist/esm/pds-textarea.entry.js.map +1 -1
  240. package/dist/esm/pds-tooltip.entry.js +93 -158
  241. package/dist/esm/pds-tooltip.entry.js.map +1 -1
  242. package/dist/esm/pine-core.js +1 -1
  243. package/dist/esm-es5/floating-ui.dom-DbQzNDdQ.js +2 -0
  244. package/dist/{cjs/floating-ui.dom-Bz4BD-cr.js.map → esm-es5/floating-ui.dom-DbQzNDdQ.js.map} +1 -1
  245. package/dist/esm-es5/{index-CzVv99mW.js → index-DrJ5r5Pu.js} +1 -1
  246. package/dist/esm-es5/index-DrJ5r5Pu.js.map +1 -0
  247. package/dist/esm-es5/loader.js +1 -1
  248. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  249. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  250. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  251. package/dist/esm-es5/pds-box.entry.js +1 -1
  252. package/dist/esm-es5/pds-box.entry.js.map +1 -1
  253. package/dist/esm-es5/pds-button.entry.js +1 -1
  254. package/dist/esm-es5/pds-button.entry.js.map +1 -1
  255. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  256. package/dist/esm-es5/pds-chip.entry.js +1 -1
  257. package/dist/esm-es5/pds-combobox.entry.js +2 -2
  258. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  259. package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
  260. package/dist/esm-es5/pds-input.entry.js +1 -1
  261. package/dist/esm-es5/pds-input.entry.js.map +1 -1
  262. package/dist/esm-es5/pds-link.entry.js +1 -1
  263. package/dist/esm-es5/pds-loader.entry.js +1 -1
  264. package/dist/esm-es5/pds-loader.entry.js.map +1 -1
  265. package/dist/esm-es5/pds-modal-content.entry.js +1 -1
  266. package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
  267. package/dist/esm-es5/pds-modal-header.entry.js +1 -1
  268. package/dist/esm-es5/pds-modal.entry.js +1 -1
  269. package/dist/esm-es5/pds-popover.entry.js +1 -1
  270. package/dist/esm-es5/pds-progress.entry.js +1 -1
  271. package/dist/esm-es5/pds-property.entry.js +1 -1
  272. package/dist/esm-es5/pds-radio.entry.js +1 -1
  273. package/dist/esm-es5/pds-row.entry.js +1 -1
  274. package/dist/esm-es5/pds-select.entry.js +1 -1
  275. package/dist/esm-es5/pds-select.entry.js.map +1 -1
  276. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  277. package/dist/esm-es5/pds-sortable.entry.js +1 -1
  278. package/dist/esm-es5/pds-switch.entry.js +1 -1
  279. package/dist/esm-es5/pds-tab.entry.js +1 -1
  280. package/dist/esm-es5/pds-tab.entry.js.map +1 -1
  281. package/dist/esm-es5/pds-table-body.entry.js +1 -1
  282. package/dist/esm-es5/pds-table-cell.entry.js +1 -1
  283. package/dist/esm-es5/pds-table-cell.entry.js.map +1 -1
  284. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  285. package/dist/esm-es5/pds-table-head-cell.entry.js.map +1 -1
  286. package/dist/esm-es5/pds-table-head.entry.js +1 -1
  287. package/dist/esm-es5/pds-table-row.entry.js +1 -1
  288. package/dist/esm-es5/pds-table.entry.js +1 -1
  289. package/dist/esm-es5/pds-table.entry.js.map +1 -1
  290. package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
  291. package/dist/esm-es5/pds-tabs.entry.js +1 -1
  292. package/dist/esm-es5/pds-text.entry.js +1 -1
  293. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  294. package/dist/esm-es5/pds-textarea.entry.js.map +1 -1
  295. package/dist/esm-es5/pds-tooltip.entry.js +1 -1
  296. package/dist/esm-es5/pds-tooltip.entry.js.map +1 -1
  297. package/dist/esm-es5/pine-core.js +1 -1
  298. package/dist/pine-core/{p-209b1d69.entry.js → p-00616fc9.entry.js} +2 -2
  299. package/dist/pine-core/p-00616fc9.entry.js.map +1 -0
  300. package/dist/pine-core/p-02326ac3.entry.js +2 -0
  301. package/dist/pine-core/p-02326ac3.entry.js.map +1 -0
  302. package/dist/pine-core/{p-19d08886.system.entry.js → p-023d8b71.system.entry.js} +2 -2
  303. package/dist/pine-core/p-0485aa93.system.entry.js +2 -0
  304. package/dist/pine-core/{p-XHvXi3U6.system.js.map → p-0KTU2Jt-.system.js.map} +1 -1
  305. package/dist/pine-core/{p-380d1056.entry.js → p-0d9e28a2.entry.js} +2 -2
  306. package/dist/pine-core/p-0d9e28a2.entry.js.map +1 -0
  307. package/dist/pine-core/{p-8096b988.system.entry.js → p-14a52961.system.entry.js} +2 -2
  308. package/dist/pine-core/p-174506b9.entry.js +2 -0
  309. package/dist/pine-core/p-174506b9.entry.js.map +1 -0
  310. package/dist/pine-core/{p-4066a9c0.system.entry.js → p-2186e5d4.system.entry.js} +2 -2
  311. package/dist/pine-core/p-232a2043.entry.js +2 -0
  312. package/dist/pine-core/{p-c7075f11.entry.js → p-25190921.entry.js} +2 -2
  313. package/dist/pine-core/{p-81a28f54.system.entry.js → p-28f7c0d8.system.entry.js} +2 -2
  314. package/dist/pine-core/{p-487552a9.system.entry.js → p-297afc49.system.entry.js} +2 -2
  315. package/dist/pine-core/{p-03d17841.system.entry.js → p-2e19f167.system.entry.js} +2 -2
  316. package/dist/pine-core/p-2e491c3d.entry.js +2 -0
  317. package/dist/pine-core/p-2e491c3d.entry.js.map +1 -0
  318. package/dist/pine-core/{p-a2d16624.entry.js → p-349a8869.entry.js} +2 -2
  319. package/dist/pine-core/p-3abc0f49.system.entry.js +2 -0
  320. package/dist/pine-core/p-3abc0f49.system.entry.js.map +1 -0
  321. package/dist/pine-core/p-3ccb6b0c.system.entry.js +2 -0
  322. package/dist/pine-core/p-3ccb6b0c.system.entry.js.map +1 -0
  323. package/dist/pine-core/{p-0a4fc9c7.entry.js → p-47670150.entry.js} +3 -3
  324. package/dist/pine-core/p-487859a1.system.entry.js +2 -0
  325. package/dist/pine-core/{p-65275835.system.entry.js → p-48b658fc.system.entry.js} +2 -2
  326. package/dist/pine-core/p-48b658fc.system.entry.js.map +1 -0
  327. package/dist/pine-core/{p-042ee55c.entry.js → p-4bbf3e31.entry.js} +2 -2
  328. package/dist/pine-core/p-4bbf3e31.entry.js.map +1 -0
  329. package/dist/pine-core/{p-c1a1475e.entry.js → p-4deb7b8c.entry.js} +2 -2
  330. package/dist/pine-core/{p-7c867f1b.entry.js → p-503cab1f.entry.js} +2 -2
  331. package/dist/pine-core/{p-4e5b9d19.entry.js → p-52d37cc1.entry.js} +2 -2
  332. package/dist/pine-core/{p-f9bd0bc2.system.entry.js → p-54183d70.system.entry.js} +2 -2
  333. package/dist/pine-core/p-5708f95a.entry.js +2 -0
  334. package/dist/pine-core/{p-f647c1af.system.entry.js → p-5aed29fe.system.entry.js} +2 -2
  335. package/dist/pine-core/p-5c0803c3.entry.js +2 -0
  336. package/dist/pine-core/{p-d08ecd18.system.entry.js → p-5da82e8c.system.entry.js} +2 -2
  337. package/dist/pine-core/{p-ed94947b.entry.js → p-5e8badb9.entry.js} +2 -2
  338. package/dist/pine-core/{p-126197e5.entry.js → p-651861ff.entry.js} +2 -2
  339. package/dist/pine-core/p-68b5665a.entry.js +2 -0
  340. package/dist/pine-core/p-68b5665a.entry.js.map +1 -0
  341. package/dist/pine-core/{p-276a6a8b.system.entry.js → p-6db1e029.system.entry.js} +2 -2
  342. package/dist/pine-core/p-6db1e029.system.entry.js.map +1 -0
  343. package/dist/pine-core/{p-8cb99f2f.entry.js → p-6f4a6d0b.entry.js} +2 -2
  344. package/dist/pine-core/{p-c1115d78.system.entry.js → p-71169b66.system.entry.js} +2 -2
  345. package/dist/pine-core/p-71169b66.system.entry.js.map +1 -0
  346. package/dist/pine-core/{p-3e6229cc.entry.js → p-72053224.entry.js} +2 -2
  347. package/dist/pine-core/{p-14b424ab.system.entry.js → p-72b05928.system.entry.js} +2 -2
  348. package/dist/pine-core/p-77336705.entry.js +2 -0
  349. package/dist/pine-core/p-77336705.entry.js.map +1 -0
  350. package/dist/pine-core/{p-0dbb2ae9.entry.js → p-79e2782b.entry.js} +2 -2
  351. package/dist/pine-core/p-7d2c43df.system.entry.js +2 -0
  352. package/dist/pine-core/p-7d2c43df.system.entry.js.map +1 -0
  353. package/dist/pine-core/{p-aafb6e06.system.entry.js → p-8722865f.system.entry.js} +2 -2
  354. package/dist/pine-core/p-8722865f.system.entry.js.map +1 -0
  355. package/dist/pine-core/p-884b9ae6.system.entry.js +2 -0
  356. package/dist/pine-core/p-884b9ae6.system.entry.js.map +1 -0
  357. package/dist/pine-core/{p-89d9f273.system.entry.js → p-8ab7f0d7.system.entry.js} +3 -3
  358. package/dist/pine-core/{p-b956922a.entry.js → p-8d7abc83.entry.js} +2 -2
  359. package/dist/pine-core/{p-2aad0209.system.entry.js → p-92c52409.system.entry.js} +2 -2
  360. package/dist/pine-core/p-96a89cd5.system.entry.js +2 -0
  361. package/dist/pine-core/p-96a89cd5.system.entry.js.map +1 -0
  362. package/dist/pine-core/{p-c1f5148f.entry.js → p-98fe56d9.entry.js} +2 -2
  363. package/dist/pine-core/{p-B4ww2WM0.system.js.map → p-B1FQkx7R.system.js.map} +1 -1
  364. package/dist/pine-core/{p-CbDQeXQ4.system.js.map → p-B1fiSdbt.system.js.map} +1 -1
  365. package/dist/pine-core/{p-DQnK6lQ2.system.js.map → p-B6Znd6C5.system.js.map} +1 -1
  366. package/dist/pine-core/{p-DiBM9O5Q.system.js → p-BEn3hirk.system.js} +1 -1
  367. package/dist/pine-core/p-BEn3hirk.system.js.map +1 -0
  368. package/dist/pine-core/p-BKFboaI5.system.js.map +1 -0
  369. package/dist/pine-core/p-BOHu_LEs.system.js.map +1 -0
  370. package/dist/pine-core/p-BOmQOnQe.system.js +2 -0
  371. package/dist/pine-core/{p-ZCkmy1Gu.system.js.map → p-BOmQOnQe.system.js.map} +1 -1
  372. package/dist/pine-core/{p-REBgf8JA.system.js.map → p-BVKCNX0X.system.js.map} +1 -1
  373. package/dist/pine-core/{p-DKuFjXiD.system.js.map → p-CCQUgOoR.system.js.map} +1 -1
  374. package/dist/pine-core/{p-BCZ4LK15.system.js.map → p-CD_nPb2F.system.js.map} +1 -1
  375. package/dist/pine-core/p-CJT--ZXC.system.js.map +1 -0
  376. package/dist/pine-core/{p-DRqkTTfb.system.js.map → p-CLoi4eKt.system.js.map} +1 -1
  377. package/dist/pine-core/{p-B0PUl1_1.system.js.map → p-CQ8f8GnD.system.js.map} +1 -1
  378. package/dist/pine-core/{p-C3lnYhcV.system.js.map → p-CWdEolqa.system.js.map} +1 -1
  379. package/dist/pine-core/{p-CNOeJ6ra.system.js.map → p-CYiuzbNk.system.js.map} +1 -1
  380. package/dist/pine-core/{p-BY7O1nGC.system.js.map → p-CcXaBX2A.system.js.map} +1 -1
  381. package/dist/pine-core/p-CgyVIfOY.system.js.map +1 -0
  382. package/dist/pine-core/{p-pm8ElBzm.system.js.map → p-Cmzqpibo.system.js.map} +1 -1
  383. package/dist/pine-core/{p-CoHBlcHu.system.js.map → p-CqK-uhv8.system.js.map} +1 -1
  384. package/dist/pine-core/{p-KkT5zjJU.system.js.map → p-D05FrqXr.system.js.map} +1 -1
  385. package/dist/pine-core/{p-BdBU6s5P.system.js.map → p-D9_z2w3q.system.js.map} +1 -1
  386. package/dist/pine-core/{p-B_c-HOvq.system.js.map → p-DAwJ242E.system.js.map} +1 -1
  387. package/dist/pine-core/p-DBw5MRwj.system.js.map +1 -0
  388. package/dist/pine-core/p-DJekRkSL.system.js.map +1 -0
  389. package/dist/pine-core/{p-lMetQ5Q0.system.js.map → p-DNYl_6t_.system.js.map} +1 -1
  390. package/dist/pine-core/{p-DMNp4slx.system.js.map → p-DZggSEPe.system.js.map} +1 -1
  391. package/dist/pine-core/p-DbQzNDdQ.js +2 -0
  392. package/dist/pine-core/{p-D_FwyeSw.js.map → p-DbQzNDdQ.js.map} +1 -1
  393. package/dist/pine-core/p-De9tROL-.system.js +1 -1
  394. package/dist/pine-core/{p-PgQPKVDh.system.js.map → p-Df_3qA_L.system.js.map} +1 -1
  395. package/dist/pine-core/{p-DCdSlcTO.system.js.map → p-Dh7jcLgJ.system.js.map} +1 -1
  396. package/dist/pine-core/{p-CzVv99mW.js → p-DrJ5r5Pu.js} +1 -1
  397. package/dist/pine-core/p-DrJ5r5Pu.js.map +1 -0
  398. package/dist/pine-core/p-Dt10r3RZ.system.js.map +1 -0
  399. package/dist/pine-core/p-Dx9XkHH8.system.js.map +1 -0
  400. package/dist/pine-core/p-IG5YumI3.system.js.map +1 -0
  401. package/dist/pine-core/{p-C5Wo1bN2.system.js.map → p-IIl2cTlj.system.js.map} +1 -1
  402. package/dist/pine-core/{p-EytFbMH4.system.js.map → p-Kj_j7PHx.system.js.map} +1 -1
  403. package/dist/pine-core/p-MBv7PsKc.system.js.map +1 -0
  404. package/dist/pine-core/{p-CG_aggl0.system.js.map → p-UsEwlBJ0.system.js.map} +1 -1
  405. package/dist/pine-core/{p-DQ-QGnGf.system.js.map → p-_E9ZEzfO.system.js.map} +1 -1
  406. package/dist/pine-core/{p-3f83d4c4.system.entry.js → p-a04556e4.system.entry.js} +2 -2
  407. package/dist/pine-core/{p-0199e3e9.system.entry.js → p-a1b51557.system.entry.js} +2 -2
  408. package/dist/pine-core/{p-51e463bf.entry.js → p-a24c46e4.entry.js} +2 -2
  409. package/dist/pine-core/{p-1858ad6d.system.entry.js → p-a472af99.system.entry.js} +2 -2
  410. package/dist/pine-core/{p-9860d0a8.system.entry.js → p-aa645f28.system.entry.js} +2 -2
  411. package/dist/pine-core/{p-df15e16a.entry.js → p-ab82338f.entry.js} +2 -2
  412. package/dist/pine-core/{p-c16d01cc.entry.js → p-b6ea3332.entry.js} +2 -2
  413. package/dist/pine-core/{p-c721e8cf.entry.js → p-ba187a35.entry.js} +2 -2
  414. package/dist/pine-core/p-bb8ef74a.system.entry.js +2 -0
  415. package/dist/pine-core/{p-b2b405ca.system.entry.js → p-c13ef6a7.system.entry.js} +2 -2
  416. package/dist/pine-core/p-c2ffb466.system.entry.js +2 -0
  417. package/dist/pine-core/p-c4d6fe50.system.entry.js +2 -0
  418. package/dist/pine-core/p-c4d6fe50.system.entry.js.map +1 -0
  419. package/dist/pine-core/{p-978e722a.entry.js → p-c6badcf8.entry.js} +2 -2
  420. package/dist/pine-core/{p-064e3d73.entry.js → p-c8122bea.entry.js} +2 -2
  421. package/dist/pine-core/p-cd785026.system.entry.js +2 -0
  422. package/dist/pine-core/{p-c3f32f26.system.entry.js → p-d714f68f.system.entry.js} +2 -2
  423. package/dist/pine-core/p-db1956e5.entry.js +2 -0
  424. package/dist/pine-core/p-db1956e5.entry.js.map +1 -0
  425. package/dist/pine-core/{p-6bd5811c.system.entry.js → p-deb8a499.system.entry.js} +2 -2
  426. package/dist/pine-core/p-deb8a499.system.entry.js.map +1 -0
  427. package/dist/pine-core/{p-6d601fc2.system.entry.js → p-dfc5ab34.system.entry.js} +2 -2
  428. package/dist/pine-core/{p-f35a5afa.entry.js → p-e2887e78.entry.js} +2 -2
  429. package/dist/pine-core/p-e5ca5b8e.entry.js +2 -0
  430. package/dist/pine-core/p-e5ca5b8e.entry.js.map +1 -0
  431. package/dist/pine-core/{p-55bf6be2.system.entry.js → p-e65a7d1c.system.entry.js} +2 -2
  432. package/dist/pine-core/{p-ffe867ef.system.entry.js → p-e89cb1f2.system.entry.js} +2 -2
  433. package/dist/pine-core/p-efa788ea.entry.js +2 -0
  434. package/dist/pine-core/{p-280a0ec1.system.entry.js → p-f55b9f90.system.entry.js} +2 -2
  435. package/dist/pine-core/{p-1a5e79af.entry.js → p-f583e5d4.entry.js} +2 -2
  436. package/dist/pine-core/p-f583e5d4.entry.js.map +1 -0
  437. package/dist/pine-core/{p-6fd385ec.entry.js → p-f880adaa.entry.js} +2 -2
  438. package/dist/pine-core/{p-63ef55dd.entry.js → p-fb4058e6.entry.js} +2 -2
  439. package/dist/pine-core/p-fc457c65.entry.js +2 -0
  440. package/dist/pine-core/{p-qjvXmIGJ.system.js.map → p-m6UZWRsP.system.js.map} +1 -1
  441. package/dist/pine-core/{p-DvZWnvRb.system.js.map → p-pQqXEKPh.system.js.map} +1 -1
  442. package/dist/pine-core/p-rBOkvo-C.system.js.map +1 -0
  443. package/dist/pine-core/pds-box.entry.esm.js.map +1 -1
  444. package/dist/pine-core/pds-button.entry.esm.js.map +1 -1
  445. package/dist/pine-core/pds-input.entry.esm.js.map +1 -1
  446. package/dist/pine-core/pds-loader.entry.esm.js.map +1 -1
  447. package/dist/pine-core/pds-select.entry.esm.js.map +1 -1
  448. package/dist/pine-core/pds-tab.entry.esm.js.map +1 -1
  449. package/dist/pine-core/pds-table-cell.entry.esm.js.map +1 -1
  450. package/dist/pine-core/pds-table-head-cell.entry.esm.js.map +1 -1
  451. package/dist/pine-core/pds-table.entry.esm.js.map +1 -1
  452. package/dist/pine-core/pds-textarea.entry.esm.js.map +1 -1
  453. package/dist/pine-core/pds-tooltip.entry.esm.js.map +1 -1
  454. package/dist/pine-core/pine-core.css +1 -1
  455. package/dist/pine-core/pine-core.esm.js +1 -1
  456. package/dist/types/components/pds-box/pds-box.d.ts +5 -0
  457. package/dist/types/components/pds-button/pds-button.d.ts +1 -0
  458. package/dist/types/components/pds-input/pds-input.d.ts +5 -0
  459. package/dist/types/components/pds-loader/pds-loader.d.ts +1 -0
  460. package/dist/types/components/pds-select/pds-select.d.ts +2 -1
  461. package/dist/types/components/pds-table/pds-table-cell/pds-table-cell.d.ts +15 -0
  462. package/dist/types/components/pds-table/pds-table-head-cell/pds-table-head-cell.d.ts +15 -0
  463. package/dist/types/components/pds-table/pds-table.d.ts +24 -0
  464. package/dist/types/components/pds-textarea/pds-textarea.d.ts +6 -1
  465. package/dist/types/components/pds-tooltip/pds-tooltip.d.ts +9 -12
  466. package/dist/types/components.d.ts +48 -28
  467. package/hydrate/index.js +562 -229
  468. package/hydrate/index.mjs +562 -229
  469. package/package.json +2 -2
  470. package/dist/cjs/index-BfqrB2cC.js.map +0 -1
  471. package/dist/esm/index-CzVv99mW.js.map +0 -1
  472. package/dist/esm-es5/floating-ui.dom-D_FwyeSw.js +0 -2
  473. package/dist/esm-es5/index-CzVv99mW.js.map +0 -1
  474. package/dist/pine-core/p-042ee55c.entry.js.map +0 -1
  475. package/dist/pine-core/p-13ac0852.entry.js +0 -2
  476. package/dist/pine-core/p-13ac0852.entry.js.map +0 -1
  477. package/dist/pine-core/p-1a5e79af.entry.js.map +0 -1
  478. package/dist/pine-core/p-209b1d69.entry.js.map +0 -1
  479. package/dist/pine-core/p-2436cb86.system.entry.js +0 -2
  480. package/dist/pine-core/p-2436cb86.system.entry.js.map +0 -1
  481. package/dist/pine-core/p-276a6a8b.system.entry.js.map +0 -1
  482. package/dist/pine-core/p-2fb60757.system.entry.js +0 -2
  483. package/dist/pine-core/p-33016dd0.entry.js +0 -2
  484. package/dist/pine-core/p-380d1056.entry.js.map +0 -1
  485. package/dist/pine-core/p-3EWr6ZgL.system.js.map +0 -1
  486. package/dist/pine-core/p-41bf807f.system.entry.js +0 -2
  487. package/dist/pine-core/p-41bf807f.system.entry.js.map +0 -1
  488. package/dist/pine-core/p-6438a29d.system.entry.js +0 -2
  489. package/dist/pine-core/p-65275835.system.entry.js.map +0 -1
  490. package/dist/pine-core/p-6bd5811c.system.entry.js.map +0 -1
  491. package/dist/pine-core/p-7eb4ac7c.system.entry.js +0 -2
  492. package/dist/pine-core/p-7eb4ac7c.system.entry.js.map +0 -1
  493. package/dist/pine-core/p-91c6bd68.entry.js +0 -2
  494. package/dist/pine-core/p-91c6bd68.entry.js.map +0 -1
  495. package/dist/pine-core/p-94982c57.entry.js +0 -2
  496. package/dist/pine-core/p-94982c57.entry.js.map +0 -1
  497. package/dist/pine-core/p-987a7e4f.entry.js +0 -2
  498. package/dist/pine-core/p-987a7e4f.entry.js.map +0 -1
  499. package/dist/pine-core/p-B6IFMveo.system.js.map +0 -1
  500. package/dist/pine-core/p-BEky6idI.system.js.map +0 -1
  501. package/dist/pine-core/p-BmoX08WO.system.js.map +0 -1
  502. package/dist/pine-core/p-Bw9e5h_G.system.js.map +0 -1
  503. package/dist/pine-core/p-C36pvE-A.system.js.map +0 -1
  504. package/dist/pine-core/p-CMLxdmO2.system.js.map +0 -1
  505. package/dist/pine-core/p-CXLBzkzl.system.js.map +0 -1
  506. package/dist/pine-core/p-CmJBNVRO.system.js.map +0 -1
  507. package/dist/pine-core/p-CzVv99mW.js.map +0 -1
  508. package/dist/pine-core/p-D_FwyeSw.js +0 -2
  509. package/dist/pine-core/p-DdEbUZw3.system.js.map +0 -1
  510. package/dist/pine-core/p-DgMvQlxU.system.js.map +0 -1
  511. package/dist/pine-core/p-DiBM9O5Q.system.js.map +0 -1
  512. package/dist/pine-core/p-ZCkmy1Gu.system.js +0 -2
  513. package/dist/pine-core/p-a7204f01.entry.js +0 -2
  514. package/dist/pine-core/p-a7cb24c3.system.entry.js +0 -2
  515. package/dist/pine-core/p-a7cb24c3.system.entry.js.map +0 -1
  516. package/dist/pine-core/p-aafb6e06.system.entry.js.map +0 -1
  517. package/dist/pine-core/p-adf2449e.system.entry.js +0 -2
  518. package/dist/pine-core/p-adf2449e.system.entry.js.map +0 -1
  519. package/dist/pine-core/p-b649d711.entry.js +0 -2
  520. package/dist/pine-core/p-b649d711.entry.js.map +0 -1
  521. package/dist/pine-core/p-b9fe17b8.system.entry.js +0 -2
  522. package/dist/pine-core/p-b9fe17b8.system.entry.js.map +0 -1
  523. package/dist/pine-core/p-c1115d78.system.entry.js.map +0 -1
  524. package/dist/pine-core/p-c652847a.entry.js +0 -2
  525. package/dist/pine-core/p-c82c277f.entry.js +0 -2
  526. package/dist/pine-core/p-c82c277f.entry.js.map +0 -1
  527. package/dist/pine-core/p-c82d0a99.entry.js +0 -2
  528. package/dist/pine-core/p-ce0d9f05.system.entry.js +0 -2
  529. package/dist/pine-core/p-cf5506db.system.entry.js +0 -2
  530. package/dist/pine-core/p-d6d87fbc.system.entry.js +0 -2
  531. package/dist/pine-core/p-e05135c5.entry.js +0 -2
  532. package/dist/pine-core/p-e30601a6.entry.js +0 -2
  533. package/dist/pine-core/p-e30601a6.entry.js.map +0 -1
  534. /package/dist/pine-core/{p-19d08886.system.entry.js.map → p-023d8b71.system.entry.js.map} +0 -0
  535. /package/dist/pine-core/{p-6438a29d.system.entry.js.map → p-0485aa93.system.entry.js.map} +0 -0
  536. /package/dist/pine-core/{p-8096b988.system.entry.js.map → p-14a52961.system.entry.js.map} +0 -0
  537. /package/dist/pine-core/{p-4066a9c0.system.entry.js.map → p-2186e5d4.system.entry.js.map} +0 -0
  538. /package/dist/pine-core/{p-e05135c5.entry.js.map → p-232a2043.entry.js.map} +0 -0
  539. /package/dist/pine-core/{p-c7075f11.entry.js.map → p-25190921.entry.js.map} +0 -0
  540. /package/dist/pine-core/{p-81a28f54.system.entry.js.map → p-28f7c0d8.system.entry.js.map} +0 -0
  541. /package/dist/pine-core/{p-487552a9.system.entry.js.map → p-297afc49.system.entry.js.map} +0 -0
  542. /package/dist/pine-core/{p-03d17841.system.entry.js.map → p-2e19f167.system.entry.js.map} +0 -0
  543. /package/dist/pine-core/{p-a2d16624.entry.js.map → p-349a8869.entry.js.map} +0 -0
  544. /package/dist/pine-core/{p-0a4fc9c7.entry.js.map → p-47670150.entry.js.map} +0 -0
  545. /package/dist/pine-core/{p-2fb60757.system.entry.js.map → p-487859a1.system.entry.js.map} +0 -0
  546. /package/dist/pine-core/{p-c1a1475e.entry.js.map → p-4deb7b8c.entry.js.map} +0 -0
  547. /package/dist/pine-core/{p-7c867f1b.entry.js.map → p-503cab1f.entry.js.map} +0 -0
  548. /package/dist/pine-core/{p-4e5b9d19.entry.js.map → p-52d37cc1.entry.js.map} +0 -0
  549. /package/dist/pine-core/{p-f9bd0bc2.system.entry.js.map → p-54183d70.system.entry.js.map} +0 -0
  550. /package/dist/pine-core/{p-33016dd0.entry.js.map → p-5708f95a.entry.js.map} +0 -0
  551. /package/dist/pine-core/{p-f647c1af.system.entry.js.map → p-5aed29fe.system.entry.js.map} +0 -0
  552. /package/dist/pine-core/{p-a7204f01.entry.js.map → p-5c0803c3.entry.js.map} +0 -0
  553. /package/dist/pine-core/{p-d08ecd18.system.entry.js.map → p-5da82e8c.system.entry.js.map} +0 -0
  554. /package/dist/pine-core/{p-ed94947b.entry.js.map → p-5e8badb9.entry.js.map} +0 -0
  555. /package/dist/pine-core/{p-126197e5.entry.js.map → p-651861ff.entry.js.map} +0 -0
  556. /package/dist/pine-core/{p-8cb99f2f.entry.js.map → p-6f4a6d0b.entry.js.map} +0 -0
  557. /package/dist/pine-core/{p-3e6229cc.entry.js.map → p-72053224.entry.js.map} +0 -0
  558. /package/dist/pine-core/{p-14b424ab.system.entry.js.map → p-72b05928.system.entry.js.map} +0 -0
  559. /package/dist/pine-core/{p-0dbb2ae9.entry.js.map → p-79e2782b.entry.js.map} +0 -0
  560. /package/dist/pine-core/{p-89d9f273.system.entry.js.map → p-8ab7f0d7.system.entry.js.map} +0 -0
  561. /package/dist/pine-core/{p-b956922a.entry.js.map → p-8d7abc83.entry.js.map} +0 -0
  562. /package/dist/pine-core/{p-2aad0209.system.entry.js.map → p-92c52409.system.entry.js.map} +0 -0
  563. /package/dist/pine-core/{p-c1f5148f.entry.js.map → p-98fe56d9.entry.js.map} +0 -0
  564. /package/dist/pine-core/{p-3f83d4c4.system.entry.js.map → p-a04556e4.system.entry.js.map} +0 -0
  565. /package/dist/pine-core/{p-0199e3e9.system.entry.js.map → p-a1b51557.system.entry.js.map} +0 -0
  566. /package/dist/pine-core/{p-51e463bf.entry.js.map → p-a24c46e4.entry.js.map} +0 -0
  567. /package/dist/pine-core/{p-1858ad6d.system.entry.js.map → p-a472af99.system.entry.js.map} +0 -0
  568. /package/dist/pine-core/{p-9860d0a8.system.entry.js.map → p-aa645f28.system.entry.js.map} +0 -0
  569. /package/dist/pine-core/{p-df15e16a.entry.js.map → p-ab82338f.entry.js.map} +0 -0
  570. /package/dist/pine-core/{p-c16d01cc.entry.js.map → p-b6ea3332.entry.js.map} +0 -0
  571. /package/dist/pine-core/{p-c721e8cf.entry.js.map → p-ba187a35.entry.js.map} +0 -0
  572. /package/dist/pine-core/{p-cf5506db.system.entry.js.map → p-bb8ef74a.system.entry.js.map} +0 -0
  573. /package/dist/pine-core/{p-b2b405ca.system.entry.js.map → p-c13ef6a7.system.entry.js.map} +0 -0
  574. /package/dist/pine-core/{p-ce0d9f05.system.entry.js.map → p-c2ffb466.system.entry.js.map} +0 -0
  575. /package/dist/pine-core/{p-978e722a.entry.js.map → p-c6badcf8.entry.js.map} +0 -0
  576. /package/dist/pine-core/{p-064e3d73.entry.js.map → p-c8122bea.entry.js.map} +0 -0
  577. /package/dist/pine-core/{p-d6d87fbc.system.entry.js.map → p-cd785026.system.entry.js.map} +0 -0
  578. /package/dist/pine-core/{p-c3f32f26.system.entry.js.map → p-d714f68f.system.entry.js.map} +0 -0
  579. /package/dist/pine-core/{p-6d601fc2.system.entry.js.map → p-dfc5ab34.system.entry.js.map} +0 -0
  580. /package/dist/pine-core/{p-f35a5afa.entry.js.map → p-e2887e78.entry.js.map} +0 -0
  581. /package/dist/pine-core/{p-55bf6be2.system.entry.js.map → p-e65a7d1c.system.entry.js.map} +0 -0
  582. /package/dist/pine-core/{p-ffe867ef.system.entry.js.map → p-e89cb1f2.system.entry.js.map} +0 -0
  583. /package/dist/pine-core/{p-c82d0a99.entry.js.map → p-efa788ea.entry.js.map} +0 -0
  584. /package/dist/pine-core/{p-280a0ec1.system.entry.js.map → p-f55b9f90.system.entry.js.map} +0 -0
  585. /package/dist/pine-core/{p-6fd385ec.entry.js.map → p-f880adaa.entry.js.map} +0 -0
  586. /package/dist/pine-core/{p-63ef55dd.entry.js.map → p-fb4058e6.entry.js.map} +0 -0
  587. /package/dist/pine-core/{p-c652847a.entry.js.map → p-fc457c65.entry.js.map} +0 -0
@@ -1,6 +1,11 @@
1
1
  import { Host, h } from "@stencil/core";
2
2
  export class PdsTable {
3
3
  constructor() {
4
+ this.scrollContainer = null;
5
+ this._responsiveHandleScroll = null;
6
+ this._responsiveHandleResize = null;
7
+ this._responsiveResizeObserver = null;
8
+ this._teardownResponsive = null;
4
9
  /**
5
10
  * The name of the column being sorted.
6
11
  * @defaultValue null
@@ -15,6 +20,100 @@ export class PdsTable {
15
20
  componentWillLoad() {
16
21
  this.sortingColumn = null;
17
22
  }
23
+ componentDidLoad() {
24
+ if (this.responsive) {
25
+ this.setupResponsiveScrolling();
26
+ }
27
+ }
28
+ disconnectedCallback() {
29
+ if (this._teardownResponsive) {
30
+ this._teardownResponsive();
31
+ this._teardownResponsive = null;
32
+ }
33
+ }
34
+ /**
35
+ * Sets up responsive scrolling behavior for the table.
36
+ *
37
+ * This method creates a horizontal scrolling system where:
38
+ * - The table content can scroll horizontally when it exceeds the container width
39
+ * - Scroll shadows appear at the left/right edges to indicate scrollable content
40
+ * - Fixed columns remain sticky during horizontal scrolling
41
+ * - Shadows respect border-radius and don't appear when there's nothing to scroll
42
+ *
43
+ * Architecture:
44
+ * - Host element: Contains everything, respects parent constraints
45
+ * - Container element: Handles horizontal scrolling (overflow-x: auto)
46
+ * - Shadow elements: Positioned fixed relative to host, show scroll indicators
47
+ *
48
+ * @private
49
+ */
50
+ setupResponsiveScrolling() {
51
+ var _a, _b, _c;
52
+ const container = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.pds-table-responsive-container');
53
+ const leftShadow = (_b = this.el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.scroll-shadow-left');
54
+ const rightShadow = (_c = this.el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.scroll-shadow-right');
55
+ if (!container || !leftShadow || !rightShadow)
56
+ return;
57
+ // Store container reference for cleanup
58
+ this.scrollContainer = container;
59
+ /**
60
+ * Updates the visibility of scroll shadows based on current scroll position.
61
+ * Left shadow: Shows when scrolled away from start (hidden if fixedColumn is enabled)
62
+ * Right shadow: Shows when there's content to scroll and not at the end
63
+ */
64
+ this._responsiveHandleScroll = () => {
65
+ if (!this.scrollContainer)
66
+ return;
67
+ const scrollLeft = this.scrollContainer.scrollLeft;
68
+ const maxScrollLeft = this.scrollContainer.scrollWidth - this.scrollContainer.clientWidth;
69
+ // Show left shadow when scrolled away from start, but not if there's a fixed column
70
+ leftShadow.style.opacity = (scrollLeft > 0 && !this.fixedColumn) ? '1' : '0';
71
+ // Show right shadow only if there's content to scroll AND not at end
72
+ rightShadow.style.opacity = (maxScrollLeft > 0 && scrollLeft < maxScrollLeft - 1) ? '1' : '0';
73
+ };
74
+ // Add scroll event listener to container element
75
+ this.scrollContainer.addEventListener('scroll', this._responsiveHandleScroll, { passive: true });
76
+ // Add resize observer to update shadows when container size changes
77
+ if (typeof window !== 'undefined' && window.ResizeObserver) {
78
+ try {
79
+ this._responsiveResizeObserver = new ResizeObserver(() => {
80
+ var _a;
81
+ (_a = this._responsiveHandleScroll) === null || _a === void 0 ? void 0 : _a.call(this);
82
+ });
83
+ this._responsiveResizeObserver.observe(this.scrollContainer);
84
+ }
85
+ catch (error) {
86
+ // ResizeObserver not available in some environments (e.g., tests)
87
+ // Fall back to window resize listener only
88
+ }
89
+ }
90
+ // Listen for window resize as fallback
91
+ if (typeof window !== 'undefined') {
92
+ this._responsiveHandleResize = () => {
93
+ var _a;
94
+ (_a = this._responsiveHandleScroll) === null || _a === void 0 ? void 0 : _a.call(this);
95
+ };
96
+ window.addEventListener('resize', this._responsiveHandleResize);
97
+ }
98
+ // Create teardown function for cleanup
99
+ this._teardownResponsive = () => {
100
+ if (this.scrollContainer && this._responsiveHandleScroll) {
101
+ this.scrollContainer.removeEventListener('scroll', this._responsiveHandleScroll);
102
+ this.scrollContainer = null;
103
+ }
104
+ if (this._responsiveResizeObserver) {
105
+ this._responsiveResizeObserver.disconnect();
106
+ this._responsiveResizeObserver = null;
107
+ }
108
+ if (typeof window !== 'undefined' && this._responsiveHandleResize) {
109
+ window.removeEventListener('resize', this._responsiveHandleResize);
110
+ this._responsiveHandleResize = null;
111
+ }
112
+ this._responsiveHandleScroll = null;
113
+ };
114
+ // Initial check after setup
115
+ this._responsiveHandleScroll();
116
+ }
18
117
  classNames() {
19
118
  const classNames = ['pds-table'];
20
119
  if (this.compact) {
@@ -42,10 +141,10 @@ export class PdsTable {
42
141
  const valueA = a.querySelector(`pds-table-cell:nth-child(${columnIndex + 1})`).textContent.trim();
43
142
  const valueB = b.querySelector(`pds-table-cell:nth-child(${columnIndex + 1})`).textContent.trim();
44
143
  if (direction === 'asc') {
45
- return valueA.localeCompare(valueB);
144
+ return valueA.localeCompare(valueB, undefined, { sensitivity: 'base' });
46
145
  }
47
146
  else {
48
- return valueB.localeCompare(valueA);
147
+ return valueB.localeCompare(valueA, undefined, { sensitivity: 'base' });
49
148
  }
50
149
  });
51
150
  // Clear and append the sorted rows back to the table body
@@ -83,7 +182,10 @@ export class PdsTable {
83
182
  headerCheckbox.indeterminate = !allSelectedRows && !noneSelectedRows;
84
183
  }
85
184
  render() {
86
- return (h(Host, { key: '994a8ae5aae1ddcc7dd0271187dd65718bc1401f', class: this.classNames(), id: this.componentId, role: "grid", selectable: this.selectable, tabindex: "0" }, h("slot", { key: 'e07c97a88d1bf1b2efb92f2cdf0159fc93ca9f9a' })));
185
+ if (this.responsive) {
186
+ return (h(Host, { class: "pds-table is-responsive pds-table-responsive-host", id: this.componentId, role: "grid", selectable: this.selectable, tabindex: "0" }, h("div", { class: "scroll-shadow-left" }), h("div", { class: "scroll-shadow-right" }), h("div", { class: "pds-table-responsive-container" }, h("div", { class: "pds-table-responsive-wrapper" }, h("div", { class: this.classNames() }, h("slot", null))))));
187
+ }
188
+ return (h(Host, { class: this.classNames(), id: this.componentId, role: "grid", selectable: this.selectable, tabindex: "0" }, h("slot", null)));
87
189
  }
88
190
  static get is() { return "pds-table"; }
89
191
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"pds-table.js","sourceRoot":"","sources":["../../../src/components/pds-table/pds-table.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAgB,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAOtG,MAAM,OAAO,QAAQ;IALrB;QAiCE;;;WAGG;QACM,kBAAa,GAAkB,IAAI,CAAC;QAE7C;;;WAGG;QACM,qBAAgB,GAAmB,KAAK,CAAC;KAwHnD;IA3GC,iBAAiB;QACf,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IAEO,UAAU;QAChB,MAAM,UAAU,GAAG,CAAC,WAAW,CAAC,CAAC;QAEjC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEO,SAAS,CAAC,MAAc,EAAE,SAAyB;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAE1D,iCAAiC;QACjC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;QAE1E,iDAAiD;QACjD,MAAM,iBAAiB,GAAkB,KAAK,CAAC,IAAI,CACjD,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,+BAA+B,CAAC,CAC1D,CAAC;QAEF,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAC7C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,MAAM,CAC3C,CAAC;QAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,WAAW,MAAM,cAAc,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAEhE,6DAA6D;QAC7D,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC,4BAA4B,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAClG,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC,4BAA4B,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAElG,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;gBACxB,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,0DAA0D;QAC1D,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;QACzB,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACxB,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;IAGD,eAAe,CAAC,KAAiE;QAC/E,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACpC,CAAC;IAGD,oBAAoB,CAAC,KAA2C;QAC9D,IAAI,KAAK,CAAC,gBAAgB;YAAE,OAAO;QAEnC,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;QAE7E,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACxB,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAGD,KAAK,CAAC,iBAAiB,CAAC,KAA6D;QACnF,IAAI,KAAK,CAAC,gBAAgB;YAAE,OAAO;QAEnC,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAC/D,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChF,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAClF,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAC7D,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,MAAM,cAAc,GAAG,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAC7E,cAAc,CAAC,OAAO,GAAG,eAAe,CAAC;QACzC,cAAc,CAAC,aAAa,GAAG,CAAC,eAAe,IAAI,CAAC,gBAAgB,CAAC;IACvE,CAAC;IAED,MAAM;QACJ,OAAO,CACL,EAAC,IAAI,qDACH,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,EACxB,EAAE,EAAE,IAAI,CAAC,WAAW,EACpB,IAAI,EAAC,MAAM,EACX,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,QAAQ,EAAC,GAAG;YAEZ,8DAAa,CACR,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Element, Event, EventEmitter, Host, h, Prop, State, Listen } from '@stencil/core';\n\n@Component({\n tag: 'pds-table',\n styleUrls: ['pds-table.scss'],\n shadow: true,\n})\nexport class PdsTable {\n @Element() el: HTMLPdsTableElement;\n\n /**\n * Determines if the table displays with reduced table cell padding.\n */\n @Prop() compact: boolean;\n\n /**\n * A unique identifier used for the table `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Enables the table to be responsive by horizontally scrolling on smaller screens.\n */\n @Prop() responsive: boolean;\n\n /**\n * Determines if the should display a fixed first column.\n */\n @Prop() fixedColumn: boolean;\n\n /**\n * Determines if the table displays checkboxes for selectable rows.\n */\n @Prop() selectable: boolean;\n\n /**\n * The name of the column being sorted.\n * @defaultValue null\n */\n @State() sortingColumn: string | null = null;\n\n /**\n * The direction of sorting.\n * @defaultValue 'asc'\n */\n @State() sortingDirection: 'asc' | 'desc' = 'asc';\n\n\n /**\n * Event that is emitted when the checkbox is clicked, carrying the rowIndex and selected value.\n */\n @Event() pdsTableSelect: EventEmitter<{ rowIndex: number; isSelected: boolean }>;\n\n /**\n * Event that is emitted when the select all checkbox is clicked, carrying the selected value.\n */\n @Event() pdsTableSelectAll: EventEmitter<{ isSelected: boolean }>;\n\n componentWillLoad() {\n this.sortingColumn = null;\n }\n\n private classNames() {\n const classNames = ['pds-table'];\n\n if (this.compact) {\n classNames.push('is-compact');\n }\n\n if (this.responsive) {\n classNames.push('is-responsive');\n }\n\n return classNames.join(' ');\n }\n\n private sortTable(column: string, direction: 'asc' | 'desc') {\n const tableBody = this.el.querySelector('pds-table-body');\n\n // Get the rows in the table body\n const tableRows = Array.from(tableBody.querySelectorAll('pds-table-row'));\n\n // Find the column index based on the column name\n const columnHeaderCells: HTMLElement[] = Array.from(\n this.el.querySelectorAll('pds-table-head-cell[sortable]')\n );\n\n const columnHeaderCell = columnHeaderCells.find(\n (cell) => cell.innerText.trim() === column\n );\n\n if (!columnHeaderCell) {\n console.warn(`Column \"${column}\" not found.`);\n return;\n }\n\n const columnIndex = columnHeaderCells.indexOf(columnHeaderCell);\n\n // Sort the rows based on the content of the specified column\n tableRows.sort((a, b) => {\n const valueA = a.querySelector(`pds-table-cell:nth-child(${columnIndex + 1})`).textContent.trim();\n const valueB = b.querySelector(`pds-table-cell:nth-child(${columnIndex + 1})`).textContent.trim();\n\n if (direction === 'asc') {\n return valueA.localeCompare(valueB);\n } else {\n return valueB.localeCompare(valueA);\n }\n });\n\n // Clear and append the sorted rows back to the table body\n tableBody.innerHTML = '';\n tableRows.forEach((row) => {\n tableBody.appendChild(row);\n });\n }\n\n @Listen('pdsTableSort')\n handleTableSort(event: CustomEvent<{ column: string; direction: 'asc' | 'desc' }>) {\n const { direction } = event.detail;\n this.sortTable(event.detail.column, direction);\n this.sortingColumn = event.detail.column;\n this.sortingDirection = direction;\n }\n\n @Listen('pdsTableSelectAll')\n handleTableSelectAll(event: CustomEvent<{ isSelected: boolean }>) {\n if (event.defaultPrevented) return;\n\n const pdsTableBody = this.el.querySelector('pds-table-body');\n const tableRows = Array.from(pdsTableBody.querySelectorAll('pds-table-row'));\n\n tableRows.forEach((row) => {\n row.isSelected = event.detail.isSelected;\n });\n }\n\n @Listen('pdsTableRowSelected')\n async handleTableSelect(event: CustomEvent<{ rowIndex: number; isSelected: boolean }>) {\n if (event.defaultPrevented) return;\n\n const allTableRows = this.el.querySelectorAll('pds-table-row');\n const allSelectedRows = Array.from(allTableRows).every((row) => row.isSelected);\n const noneSelectedRows = Array.from(allTableRows).every((row) => !row.isSelected);\n const pdsTableHead = this.el.querySelector('pds-table-head');\n if (!pdsTableHead) return;\n\n const headerCheckbox = pdsTableHead.shadowRoot.querySelector('pds-checkbox');\n headerCheckbox.checked = allSelectedRows;\n headerCheckbox.indeterminate = !allSelectedRows && !noneSelectedRows;\n }\n\n render() {\n return (\n <Host\n class={this.classNames()}\n id={this.componentId}\n role=\"grid\"\n selectable={this.selectable}\n tabindex=\"0\"\n >\n <slot></slot>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"pds-table.js","sourceRoot":"","sources":["../../../src/components/pds-table/pds-table.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, Host, h, Prop, State, Listen } from '@stencil/core';\n\n@Component({\n tag: 'pds-table',\n styleUrls: ['pds-table.scss'],\n shadow: true,\n})\nexport class PdsTable {\n @Element() el: HTMLPdsTableElement;\n private scrollContainer: HTMLElement | null = null;\n private _responsiveHandleScroll: (() => void) | null = null;\n private _responsiveHandleResize: (() => void) | null = null;\n private _responsiveResizeObserver: ResizeObserver | null = null;\n private _teardownResponsive: (() => void) | null = null;\n\n /**\n * Determines if the table displays with reduced table cell padding.\n */\n @Prop() compact: boolean;\n\n /**\n * A unique identifier used for the table `id` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Enables the table to be responsive by horizontally scrolling on smaller screens.\n */\n @Prop() responsive: boolean;\n\n /**\n * Determines if the should display a fixed first column.\n */\n @Prop() fixedColumn: boolean;\n\n /**\n * Determines if the table displays checkboxes for selectable rows.\n */\n @Prop() selectable: boolean;\n\n /**\n * The name of the column being sorted.\n * @defaultValue null\n */\n @State() sortingColumn: string | null = null;\n\n /**\n * The direction of sorting.\n * @defaultValue 'asc'\n */\n @State() sortingDirection: 'asc' | 'desc' = 'asc';\n\n\n /**\n * Event that is emitted when the checkbox is clicked, carrying the rowIndex and selected value.\n */\n @Event() pdsTableSelect: EventEmitter<{ rowIndex: number; isSelected: boolean }>;\n\n /**\n * Event that is emitted when the select all checkbox is clicked, carrying the selected value.\n */\n @Event() pdsTableSelectAll: EventEmitter<{ isSelected: boolean }>;\n\n componentWillLoad() {\n this.sortingColumn = null;\n }\n\n componentDidLoad() {\n if (this.responsive) {\n this.setupResponsiveScrolling();\n }\n }\n\n disconnectedCallback() {\n if (this._teardownResponsive) {\n this._teardownResponsive();\n this._teardownResponsive = null;\n }\n }\n\n /**\n * Sets up responsive scrolling behavior for the table.\n *\n * This method creates a horizontal scrolling system where:\n * - The table content can scroll horizontally when it exceeds the container width\n * - Scroll shadows appear at the left/right edges to indicate scrollable content\n * - Fixed columns remain sticky during horizontal scrolling\n * - Shadows respect border-radius and don't appear when there's nothing to scroll\n *\n * Architecture:\n * - Host element: Contains everything, respects parent constraints\n * - Container element: Handles horizontal scrolling (overflow-x: auto)\n * - Shadow elements: Positioned fixed relative to host, show scroll indicators\n *\n * @private\n */\n private setupResponsiveScrolling() {\n const container = this.el.shadowRoot?.querySelector('.pds-table-responsive-container') as HTMLElement;\n const leftShadow = this.el.shadowRoot?.querySelector('.scroll-shadow-left') as HTMLElement;\n const rightShadow = this.el.shadowRoot?.querySelector('.scroll-shadow-right') as HTMLElement;\n\n if (!container || !leftShadow || !rightShadow) return;\n\n // Store container reference for cleanup\n this.scrollContainer = container;\n\n /**\n * Updates the visibility of scroll shadows based on current scroll position.\n * Left shadow: Shows when scrolled away from start (hidden if fixedColumn is enabled)\n * Right shadow: Shows when there's content to scroll and not at the end\n */\n this._responsiveHandleScroll = () => {\n if (!this.scrollContainer) return;\n\n const scrollLeft = this.scrollContainer.scrollLeft;\n const maxScrollLeft = this.scrollContainer.scrollWidth - this.scrollContainer.clientWidth;\n\n // Show left shadow when scrolled away from start, but not if there's a fixed column\n leftShadow.style.opacity = (scrollLeft > 0 && !this.fixedColumn) ? '1' : '0';\n\n // Show right shadow only if there's content to scroll AND not at end\n rightShadow.style.opacity = (maxScrollLeft > 0 && scrollLeft < maxScrollLeft - 1) ? '1' : '0';\n };\n\n // Add scroll event listener to container element\n this.scrollContainer.addEventListener('scroll', this._responsiveHandleScroll, { passive: true });\n\n // Add resize observer to update shadows when container size changes\n if (typeof window !== 'undefined' && window.ResizeObserver) {\n try {\n this._responsiveResizeObserver = new ResizeObserver(() => {\n this._responsiveHandleScroll?.();\n });\n this._responsiveResizeObserver.observe(this.scrollContainer);\n } catch (error) {\n // ResizeObserver not available in some environments (e.g., tests)\n // Fall back to window resize listener only\n }\n }\n\n // Listen for window resize as fallback\n if (typeof window !== 'undefined') {\n this._responsiveHandleResize = () => {\n this._responsiveHandleScroll?.();\n };\n window.addEventListener('resize', this._responsiveHandleResize);\n }\n\n // Create teardown function for cleanup\n this._teardownResponsive = () => {\n if (this.scrollContainer && this._responsiveHandleScroll) {\n this.scrollContainer.removeEventListener('scroll', this._responsiveHandleScroll);\n this.scrollContainer = null;\n }\n\n if (this._responsiveResizeObserver) {\n this._responsiveResizeObserver.disconnect();\n this._responsiveResizeObserver = null;\n }\n\n if (typeof window !== 'undefined' && this._responsiveHandleResize) {\n window.removeEventListener('resize', this._responsiveHandleResize);\n this._responsiveHandleResize = null;\n }\n\n this._responsiveHandleScroll = null;\n };\n\n // Initial check after setup\n this._responsiveHandleScroll();\n }\n\n\n private classNames() {\n const classNames = ['pds-table'];\n\n if (this.compact) {\n classNames.push('is-compact');\n }\n\n if (this.responsive) {\n classNames.push('is-responsive');\n }\n\n return classNames.join(' ');\n }\n\n private sortTable(column: string, direction: 'asc' | 'desc') {\n const tableBody = this.el.querySelector('pds-table-body');\n\n // Get the rows in the table body\n const tableRows = Array.from(tableBody.querySelectorAll('pds-table-row'));\n\n // Find the column index based on the column name\n const columnHeaderCells: HTMLElement[] = Array.from(\n this.el.querySelectorAll('pds-table-head-cell[sortable]')\n );\n\n const columnHeaderCell = columnHeaderCells.find(\n (cell) => cell.innerText.trim() === column\n );\n\n if (!columnHeaderCell) {\n console.warn(`Column \"${column}\" not found.`);\n return;\n }\n\n const columnIndex = columnHeaderCells.indexOf(columnHeaderCell);\n\n // Sort the rows based on the content of the specified column\n tableRows.sort((a, b) => {\n const valueA = a.querySelector(`pds-table-cell:nth-child(${columnIndex + 1})`).textContent.trim();\n const valueB = b.querySelector(`pds-table-cell:nth-child(${columnIndex + 1})`).textContent.trim();\n\n if (direction === 'asc') {\n return valueA.localeCompare(valueB, undefined, { sensitivity: 'base' });\n } else {\n return valueB.localeCompare(valueA, undefined, { sensitivity: 'base' });\n }\n });\n\n // Clear and append the sorted rows back to the table body\n tableBody.innerHTML = '';\n tableRows.forEach((row) => {\n tableBody.appendChild(row);\n });\n }\n\n @Listen('pdsTableSort')\n handleTableSort(event: CustomEvent<{ column: string; direction: 'asc' | 'desc' }>) {\n const { direction } = event.detail;\n this.sortTable(event.detail.column, direction);\n this.sortingColumn = event.detail.column;\n this.sortingDirection = direction;\n }\n\n @Listen('pdsTableSelectAll')\n handleTableSelectAll(event: CustomEvent<{ isSelected: boolean }>) {\n if (event.defaultPrevented) return;\n\n const pdsTableBody = this.el.querySelector('pds-table-body');\n const tableRows = Array.from(pdsTableBody.querySelectorAll('pds-table-row'));\n\n tableRows.forEach((row) => {\n row.isSelected = event.detail.isSelected;\n });\n }\n\n @Listen('pdsTableRowSelected')\n async handleTableSelect(event: CustomEvent<{ rowIndex: number; isSelected: boolean }>) {\n if (event.defaultPrevented) return;\n\n const allTableRows = this.el.querySelectorAll('pds-table-row');\n const allSelectedRows = Array.from(allTableRows).every((row) => row.isSelected);\n const noneSelectedRows = Array.from(allTableRows).every((row) => !row.isSelected);\n const pdsTableHead = this.el.querySelector('pds-table-head');\n if (!pdsTableHead) return;\n\n const headerCheckbox = pdsTableHead.shadowRoot.querySelector('pds-checkbox');\n headerCheckbox.checked = allSelectedRows;\n headerCheckbox.indeterminate = !allSelectedRows && !noneSelectedRows;\n }\n\n render() {\n if (this.responsive) {\n return (\n <Host\n class=\"pds-table is-responsive pds-table-responsive-host\"\n id={this.componentId}\n role=\"grid\"\n selectable={this.selectable}\n tabindex=\"0\"\n >\n <div class=\"scroll-shadow-left\"></div>\n <div class=\"scroll-shadow-right\"></div>\n <div class=\"pds-table-responsive-container\">\n <div class=\"pds-table-responsive-wrapper\">\n <div class={this.classNames()}>\n <slot></slot>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n\n return (\n <Host\n class={this.classNames()}\n id={this.componentId}\n role=\"grid\"\n selectable={this.selectable}\n tabindex=\"0\"\n >\n <slot></slot>\n </Host>\n );\n }\n}\n"]}
@@ -16,11 +16,11 @@ export default {
16
16
 
17
17
  const BaseTemplate = (args) => html`
18
18
  <pds-table
19
- compact="${args.compact}"
19
+ ?compact=${args.compact}
20
20
  component-id="${args.componentId}"
21
- fixed-column="${args.fixedColumn}"
22
- responsive="${args.responsive}"
23
- selectable="${args.selectable}"
21
+ ?fixed-column=${args.fixedColumn}
22
+ ?responsive=${args.responsive}
23
+ ?selectable=${args.selectable}
24
24
  >
25
25
  <pds-table-head>
26
26
  <pds-table-head-cell>Column Title</pds-table-head-cell>
@@ -46,13 +46,49 @@ const BaseTemplate = (args) => html`
46
46
  </pds-table-body>
47
47
  </pds-table>`;
48
48
 
49
+ const AlignmentTemplate = (args) => html`
50
+ <pds-table
51
+ ?compact=${args.compact}
52
+ component-id="${args.componentId}"
53
+ ?fixed-column=${args.fixedColumn}
54
+ ?responsive=${args.responsive}
55
+ ?selectable=${args.selectable}
56
+ >
57
+ <pds-table-head>
58
+ <pds-table-head-cell cell-align="start">Name</pds-table-head-cell>
59
+ <pds-table-head-cell cell-align="center">Amount</pds-table-head-cell>
60
+ <pds-table-head-cell cell-align="end">Status</pds-table-head-cell>
61
+ <pds-table-head-cell cell-align="justify">Description</pds-table-head-cell>
62
+ </pds-table-head>
63
+ <pds-table-body>
64
+ <pds-table-row>
65
+ <pds-table-cell cell-align="start">John Doe</pds-table-cell>
66
+ <pds-table-cell cell-align="center">$1,234.56</pds-table-cell>
67
+ <pds-table-cell cell-align="end">Active</pds-table-cell>
68
+ <pds-table-cell cell-align="justify">This is a longer description that demonstrates justified text alignment in table cells. It shows how text wraps and aligns within the cell boundaries.</pds-table-cell>
69
+ </pds-table-row>
70
+ <pds-table-row>
71
+ <pds-table-cell cell-align="start">Jane Smith</pds-table-cell>
72
+ <pds-table-cell cell-align="center">$987.65</pds-table-cell>
73
+ <pds-table-cell cell-align="end">Inactive</pds-table-cell>
74
+ <pds-table-cell cell-align="justify">Another example of justified text that spans multiple lines to show the alignment behavior in table cells with varying content lengths.</pds-table-cell>
75
+ </pds-table-row>
76
+ <pds-table-row>
77
+ <pds-table-cell cell-align="start">Michael Johnson</pds-table-cell>
78
+ <pds-table-cell cell-align="center">$2,468.13</pds-table-cell>
79
+ <pds-table-cell cell-align="end">Pending</pds-table-cell>
80
+ <pds-table-cell cell-align="justify">Short justified text example.</pds-table-cell>
81
+ </pds-table-row>
82
+ </pds-table-body>
83
+ </pds-table>`;
84
+
49
85
  const ResponsiveTemplate = (args) => html`
50
86
  <pds-table
51
- compact="${args.compact}"
87
+ ?compact=${args.compact}
52
88
  component-id="${args.componentId}"
53
- fixed-column="${args.fixedColumn}"
54
- responsive="${args.responsive}"
55
- selectable="${args.selectable}"
89
+ ?fixed-column=${args.fixedColumn}
90
+ ?responsive=${args.responsive}
91
+ ?selectable=${args.selectable}
56
92
  >
57
93
  <pds-table-head>
58
94
  <pds-table-head-cell>Column Title</pds-table-head-cell>
@@ -116,11 +152,11 @@ const ResponsiveTemplate = (args) => html`
116
152
 
117
153
  const SortableTemplate = (args) => html`
118
154
  <pds-table
119
- compact="${args.compact}"
155
+ ?compact=${args.compact}
120
156
  component-id="${args.componentId}"
121
- fixed-column="${args.fixedColumn}"
122
- responsive="${args.responsive}"
123
- selectable="${args.selectable}"
157
+ ?fixed-column=${args.fixedColumn}
158
+ ?responsive=${args.responsive}
159
+ ?selectable=${args.selectable}
124
160
  >
125
161
  <pds-table-head>
126
162
  <pds-table-head-cell sortable=${args.sortable}>Name</pds-table-head-cell>
@@ -180,6 +216,15 @@ Default.args = {
180
216
  selectable: false,
181
217
  };
182
218
 
219
+ export const Alignment = AlignmentTemplate.bind();
220
+ Alignment.args = {
221
+ compact: false,
222
+ componentId: 'alignment',
223
+ fixedColumn: false,
224
+ responsive: false,
225
+ selectable: false,
226
+ };
227
+
183
228
  export const Compact = BaseTemplate.bind();
184
229
  Compact.args = {
185
230
  compact: true,
@@ -115,21 +115,21 @@ pds-tab {
115
115
  inset-inline-start: 0;
116
116
  }
117
117
 
118
- .pds-tabs--filter {
119
- --color-background-tab: var(--pine-color-background-container);
120
- }
121
118
  .pds-tabs--filter .pds-tab {
122
- background-color: var(--color-background-tab);
119
+ background-color: var(--pine-color-background-container-disabled);
123
120
  border-radius: 50px;
124
121
  color: var(--pine-color-text);
125
122
  padding: 6px 15px;
126
123
  }
127
124
  .pds-tabs--filter .pds-tab.is-active, .pds-tabs--filter .pds-tab[aria-selected=true] {
128
- --color-background-tab: var(--pine-color-primary);
125
+ background-color: var(--pine-color-primary);
129
126
  color: var(--pine-color-text-primary);
130
127
  }
128
+ .pds-tabs--filter .pds-tab.is-active:hover, .pds-tabs--filter .pds-tab[aria-selected=true]:hover {
129
+ background-color: var(--pine-color-primary-hover);
130
+ }
131
131
  .pds-tabs--filter .pds-tab:hover:not(.is-active, [aria-selected=true]) {
132
- --color-background-tab: var(--pine-color-background-container-hover);
132
+ background-color: var(--pine-color-border-disabled);
133
133
  }
134
134
  .pds-tabs--filter .pds-tab__content {
135
135
  padding-block-end: var(--pine-dimension-none);
@@ -11,9 +11,9 @@ export class PdsTab {
11
11
  this.pdsTabClick.emit([index, parentComponentId]);
12
12
  }
13
13
  render() {
14
- const availabilityTabEdgeInlineStart = (h("span", { key: '4f66f8149bd22a451ddc9e2849dfb06110d9bad9', class: "pds-tab-edge", role: "presentation" }));
15
- const availabilityTabEdgeInlineEnd = (h("span", { key: '2a8e8c25af220803c4b75d29f31d6381475a12dd', class: "pds-tab-edge pds-tab-edge--end", role: "presentation" }));
16
- return (h(Host, { key: '62b2ccf5e478fc50b41bd837979311c535c78412', variant: this.variant, slot: "tabs", index: this.index }, h("button", { key: 'e1b179b308791299b6d57441ea50f79da7bd8f21', role: "tab", id: this.parentComponentId + "__" + this.name, "aria-controls": this.parentComponentId + "__" + this.name + "-panel", tabindex: this.selected ? "0" : "-1", "aria-selected": this.selected ? "true" : "false", class: this.selected ? "pds-tab is-active" : "pds-tab", onClick: this.onTabClick.bind(this, this.index, this.parentComponentId) }, this.variant === "availability" && availabilityTabEdgeInlineStart, this.variant === "availability" && availabilityTabEdgeInlineEnd, h("div", { key: 'fcf7b2db11eaa6e8f0c97b96f925540678a3c864', class: "pds-tab__content" }, h("slot", { key: '2ee6ea6d01dc62bd177e9b8473602b9d5b2549b3' })))));
14
+ const availabilityTabEdgeInlineStart = (h("span", { key: 'f83448bc898dd4e94a7777d23c9565830dff0346', class: "pds-tab-edge", role: "presentation" }));
15
+ const availabilityTabEdgeInlineEnd = (h("span", { key: '5ff8d05f4cf140771706e7740c48e658208749dd', class: "pds-tab-edge pds-tab-edge--end", role: "presentation" }));
16
+ return (h(Host, { key: '874111fb5eedda9d021c8df0dc048aa771141a7c', variant: this.variant, slot: "tabs", index: this.index }, h("button", { key: 'a72dc4a32de38ae26bdba67cd91028dc955d4349', role: "tab", id: this.parentComponentId + "__" + this.name, "aria-controls": this.parentComponentId + "__" + this.name + "-panel", tabindex: this.selected ? "0" : "-1", "aria-selected": this.selected ? "true" : "false", class: this.selected ? "pds-tab is-active" : "pds-tab", onClick: this.onTabClick.bind(this, this.index, this.parentComponentId) }, this.variant === "availability" && availabilityTabEdgeInlineStart, this.variant === "availability" && availabilityTabEdgeInlineEnd, h("div", { key: '8e629e15312b7bd93c84d026b8b40f51a87479ca', class: "pds-tab__content" }, h("slot", { key: '2296b81a3abdd25cc9eb73d8fed5089466e21fc6' })))));
17
17
  }
18
18
  static get is() { return "pds-tab"; }
19
19
  static get originalStyleUrls() {
@@ -8,7 +8,7 @@ export class PdsTabpanel {
8
8
  this.selected = false; // eslint-disable-line @stencil-community/strict-mutable
9
9
  }
10
10
  render() {
11
- return (h(Host, { key: '0465e33b28555596cc4a891a63a99c49153f577d', slot: "tabpanels" }, h("div", { key: '8c2404f0aaee7dd7219552b51332d4194aa535ae', role: "tabpanel", id: this.parentComponentId + "__" + this.name + '-panel', tabindex: "0", "aria-labelledby": this.parentComponentId + "__" + this.name, class: this.selected ? "pds-tabpanel is-active" : "pds-tabpanel" }, h("slot", { key: 'f7f9dc2a755aa726b8e46d8641087a8fdb1a9e5e' }))));
11
+ return (h(Host, { key: '452260718e63155f0ce100b6d502b208fe0b8210', slot: "tabpanels" }, h("div", { key: 'dbf06166503b2890d827ac58f3481330f60edb5c', role: "tabpanel", id: this.parentComponentId + "__" + this.name + '-panel', tabindex: "0", "aria-labelledby": this.parentComponentId + "__" + this.name, class: this.selected ? "pds-tabpanel is-active" : "pds-tabpanel" }, h("slot", { key: '4785fa2a3781569b51e1947db5dd860b36e09ab5' }))));
12
12
  }
13
13
  static get is() { return "pds-tabpanel"; }
14
14
  static get originalStyleUrls() {
@@ -76,7 +76,7 @@ export class PdsTabs {
76
76
  this.passPropsToChildren();
77
77
  }
78
78
  render() {
79
- return (h(Host, { key: '3b06654b1d2298a9cfa3fc42996ad72e80942ee4', "active-tab-name": this.activeTabName, class: this.classNames(), id: this.componentId }, h("div", { key: '529e1aa48f7fea4754dbe8a3d8f655eb297e1a9a', class: "pds-tabs__tablist", role: "tablist", "aria-label": this.tablistLabel }, h("slot", { key: 'cca3b75eec2a519e87878b39d8ca52a6c033dc4d', name: "tabs" })), h("slot", { key: 'caf5abcc85eee1e45e197a7ec792a873cdfb104b', name: "tabpanels" })));
79
+ return (h(Host, { key: 'e5b0d44fbe0df70a9260b5ce1ecabad9e5ce52da', "active-tab-name": this.activeTabName, class: this.classNames(), id: this.componentId }, h("div", { key: '4e987262ef8355b0a94f94ded397d72ccbb678f8', class: "pds-tabs__tablist", role: "tablist", "aria-label": this.tablistLabel }, h("slot", { key: 'f615e1d116f4c0f9ee28d172f64a05e755386ead', name: "tabs" })), h("slot", { key: 'f74280a78775d19fb1e94d522c28531d79ba73e3', name: "tabpanels" })));
80
80
  }
81
81
  static get is() { return "pds-tabs"; }
82
82
  static get encapsulation() { return "shadow"; }
@@ -20,7 +20,7 @@ export class PdsText {
20
20
  ${this.weight !== undefined && this.weight.trim() !== '' ? `pds-text--weight-${this.weight}` : ''}
21
21
  ${this.decoration !== undefined && this.decoration.trim() !== '' ? `pds-text--decoration-${this.decoration}` : ''}
22
22
  `;
23
- return (h(Tag, { key: '2b8a2f2aaafd342a7df51029213c82224774fd5f', style: this.color && setColor(this.color), class: typeClasses, part: "content" }, h("slot", { key: '8dd80aaec576c1e1ab152529f94732d6074c5542' })));
23
+ return (h(Tag, { key: '290b394545a5769f9d020922b31e14991148ebc7', style: this.color && setColor(this.color), class: typeClasses, part: "content" }, h("slot", { key: '0e64e2e05db073a5d0568f282acce4b9f06238cf' })));
24
24
  }
25
25
  static get is() { return "pds-text"; }
26
26
  static get encapsulation() { return "shadow"; }
@@ -77,4 +77,17 @@ label {
77
77
  color: var(--pine-color-text-message-danger);
78
78
  display: flex;
79
79
  gap: var(--pine-dimension-2xs);
80
+ }
81
+
82
+ .visually-hidden {
83
+ border: 0;
84
+ clip: rect(0 0 0 0);
85
+ clip-path: polygon(0 0, 0 0, 0 0);
86
+ height: 1px;
87
+ margin: -1px;
88
+ overflow: hidden;
89
+ padding: 0;
90
+ position: absolute;
91
+ white-space: nowrap;
92
+ width: 1px;
80
93
  }
@@ -66,7 +66,7 @@ export class PdsTextarea {
66
66
  };
67
67
  }
68
68
  /**
69
- * Sets focus on the native `textarea` in the `pds-texarea`. Use this method instead of the global
69
+ * Sets focus on the native `textarea` in the `pds-textarea`. Use this method instead of the global
70
70
  * `textarea.focus()`.
71
71
  */
72
72
  async setFocus() {
@@ -185,10 +185,10 @@ export class PdsTextarea {
185
185
  }
186
186
  render() {
187
187
  const value = this.getValue();
188
- return (h(Host, { key: 'c16e4a612ae46f9ab893294f513e1564e941ddec', "aria-disabled": this.disabled ? 'true' : null, "aria-readonly": this.readonly ? 'true' : null, "has-action": this.hasAction ? 'true' : null }, h("div", { key: 'd5acca80be2960ac20a3602c3e887e8d714062d7', class: "pds-textarea" }, this.label &&
189
- h("div", { key: '49f3c081172f3d81f38e7ad49e4461b9d31772e7', class: "pds-textarea__label-wrapper" }, h("label", { key: '105f191fb2db52c63d165fbda0e78e507f327c49', htmlFor: this.componentId }, this.label), this.renderAction()), h("textarea", Object.assign({ key: '5cbfbee17d058767f6d9d530dbee936ee8638f99', 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 &&
190
- h("p", { key: '0cef5379519c3a1d26a86bb2142a58583d5619ad', class: "pds-textarea__helper-message", id: messageId(this.componentId, 'helper') }, this.helperMessage), this.invalid &&
191
- h("p", { key: '30a5fc1c6469dfa755db9a9bbb7b858b082700ac', "aria-live": "assertive", class: "pds-textarea__error-message", id: messageId(this.componentId, 'error') }, h("pds-icon", { key: '51a725db0e4e522a584b673df174c7c97c8fe8e3', icon: danger, size: "small" }), this.errorMessage))));
188
+ 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 &&
189
+ 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 &&
190
+ h("p", { key: '4ca62e53a085acde9b8550c123ea1ee5a8723581', class: "pds-textarea__helper-message", id: messageId(this.componentId, 'helper') }, this.helperMessage), this.invalid &&
191
+ 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))));
192
192
  }
193
193
  static get is() { return "pds-textarea"; }
194
194
  static get encapsulation() { return "shadow"; }
@@ -365,6 +365,25 @@ export class PdsTextarea {
365
365
  "attribute": "label",
366
366
  "reflect": false
367
367
  },
368
+ "hideLabel": {
369
+ "type": "boolean",
370
+ "mutable": false,
371
+ "complexType": {
372
+ "original": "boolean",
373
+ "resolved": "boolean",
374
+ "references": {}
375
+ },
376
+ "required": false,
377
+ "optional": false,
378
+ "docs": {
379
+ "tags": [],
380
+ "text": "Visually hides the label text for instances where only the textarea should be displayed. Label remains accessible to assistive technology such as screen readers.\nNote: When true, the action slot is also hidden to maintain a minimal UI."
381
+ },
382
+ "getter": false,
383
+ "setter": false,
384
+ "attribute": "hide-label",
385
+ "reflect": false
386
+ },
368
387
  "name": {
369
388
  "type": "string",
370
389
  "mutable": false,
@@ -597,7 +616,7 @@ export class PdsTextarea {
597
616
  "return": "Promise<void>"
598
617
  },
599
618
  "docs": {
600
- "text": "Sets focus on the native `textarea` in the `pds-texarea`. Use this method instead of the global\n`textarea.focus()`.",
619
+ "text": "Sets focus on the native `textarea` in the `pds-textarea`. Use this method instead of the global\n`textarea.focus()`.",
601
620
  "tags": []
602
621
  }
603
622
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pds-textarea.js","sourceRoot":"","sources":["../../../src/components/pds-textarea/pds-textarea.tsx"],"names":[],"mappings":"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","sourcesContent":["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-texarea`. 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 * 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 ? 'true' : null}\n >\n <div class=\"pds-textarea\">\n {this.label &&\n <div class=\"pds-textarea__label-wrapper\">\n <label htmlFor={this.componentId}>{this.label}</label>\n {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"]}
1
+ {"version":3,"file":"pds-textarea.js","sourceRoot":"","sources":["../../../src/components/pds-textarea/pds-textarea.tsx"],"names":[],"mappings":"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","sourcesContent":["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"]}