@pine-ds/core 3.19.0 → 3.20.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 (210) hide show
  1. package/components/index2.js +1 -1
  2. package/components/index2.js.map +1 -1
  3. package/components/mock-pds-modal.js +1 -1
  4. package/components/mock-pds-modal.js.map +1 -1
  5. package/components/pds-modal.js +2 -2
  6. package/components/pds-modal.js.map +1 -1
  7. package/components/pds-text2.js +17 -7
  8. package/components/pds-text2.js.map +1 -1
  9. package/dist/cjs/{index-CjhTEk39.js → index-D8mNsvM8.js} +3 -3
  10. package/dist/{esm-es5/index-BFkDH5XU.js.map → cjs/index-D8mNsvM8.js.map} +1 -1
  11. package/dist/cjs/mock-pds-modal.cjs.entry.js +1 -1
  12. package/dist/cjs/mock-pds-modal.entry.cjs.js.map +1 -1
  13. package/dist/cjs/pds-accordion.cjs.entry.js +1 -1
  14. package/dist/cjs/pds-avatar.cjs.entry.js +1 -1
  15. package/dist/cjs/pds-button.cjs.entry.js +1 -1
  16. package/dist/cjs/pds-checkbox.cjs.entry.js +1 -1
  17. package/dist/cjs/pds-chip.cjs.entry.js +1 -1
  18. package/dist/cjs/pds-copytext.cjs.entry.js +1 -1
  19. package/dist/cjs/pds-filter.cjs.entry.js +1 -1
  20. package/dist/cjs/pds-input.cjs.entry.js +1 -1
  21. package/dist/cjs/pds-link.cjs.entry.js +1 -1
  22. package/dist/cjs/pds-modal.cjs.entry.js +2 -2
  23. package/dist/cjs/pds-modal.entry.cjs.js.map +1 -1
  24. package/dist/cjs/pds-multiselect.cjs.entry.js +1 -1
  25. package/dist/cjs/pds-radio-group.cjs.entry.js +1 -1
  26. package/dist/cjs/pds-radio.cjs.entry.js +1 -1
  27. package/dist/cjs/pds-select.cjs.entry.js +1 -1
  28. package/dist/cjs/pds-sortable-item.cjs.entry.js +1 -1
  29. package/dist/cjs/pds-switch.cjs.entry.js +1 -1
  30. package/dist/cjs/pds-table-head-cell.cjs.entry.js +1 -1
  31. package/dist/cjs/pds-text.cjs.entry.js +17 -7
  32. package/dist/cjs/pds-text.entry.cjs.js.map +1 -1
  33. package/dist/cjs/pds-textarea.cjs.entry.js +1 -1
  34. package/dist/collection/components/pds-modal/pds-modal.js +2 -2
  35. package/dist/collection/components/pds-modal/pds-modal.js.map +1 -1
  36. package/dist/collection/components/pds-modal/test/mock-pds-modal.js +1 -1
  37. package/dist/collection/components/pds-modal/test/mock-pds-modal.js.map +1 -1
  38. package/dist/collection/components/pds-text/pds-text.js +24 -14
  39. package/dist/collection/components/pds-text/pds-text.js.map +1 -1
  40. package/dist/docs.json +26 -12
  41. package/dist/esm/{index-BFkDH5XU.js → index-Bmf4Ow_8.js} +3 -3
  42. package/dist/{cjs/index-CjhTEk39.js.map → esm/index-Bmf4Ow_8.js.map} +1 -1
  43. package/dist/esm/mock-pds-modal.entry.js +1 -1
  44. package/dist/esm/mock-pds-modal.entry.js.map +1 -1
  45. package/dist/esm/pds-accordion.entry.js +1 -1
  46. package/dist/esm/pds-avatar.entry.js +1 -1
  47. package/dist/esm/pds-button.entry.js +1 -1
  48. package/dist/esm/pds-checkbox.entry.js +1 -1
  49. package/dist/esm/pds-chip.entry.js +1 -1
  50. package/dist/esm/pds-copytext.entry.js +1 -1
  51. package/dist/esm/pds-filter.entry.js +1 -1
  52. package/dist/esm/pds-input.entry.js +1 -1
  53. package/dist/esm/pds-link.entry.js +1 -1
  54. package/dist/esm/pds-modal.entry.js +2 -2
  55. package/dist/esm/pds-modal.entry.js.map +1 -1
  56. package/dist/esm/pds-multiselect.entry.js +1 -1
  57. package/dist/esm/pds-radio-group.entry.js +1 -1
  58. package/dist/esm/pds-radio.entry.js +1 -1
  59. package/dist/esm/pds-select.entry.js +1 -1
  60. package/dist/esm/pds-sortable-item.entry.js +1 -1
  61. package/dist/esm/pds-switch.entry.js +1 -1
  62. package/dist/esm/pds-table-head-cell.entry.js +1 -1
  63. package/dist/esm/pds-text.entry.js +17 -7
  64. package/dist/esm/pds-text.entry.js.map +1 -1
  65. package/dist/esm/pds-textarea.entry.js +1 -1
  66. package/dist/esm-es5/{index-BFkDH5XU.js → index-Bmf4Ow_8.js} +1 -1
  67. package/dist/{esm/index-BFkDH5XU.js.map → esm-es5/index-Bmf4Ow_8.js.map} +1 -1
  68. package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
  69. package/dist/esm-es5/mock-pds-modal.entry.js.map +1 -1
  70. package/dist/esm-es5/pds-accordion.entry.js +1 -1
  71. package/dist/esm-es5/pds-avatar.entry.js +1 -1
  72. package/dist/esm-es5/pds-button.entry.js +1 -1
  73. package/dist/esm-es5/pds-checkbox.entry.js +1 -1
  74. package/dist/esm-es5/pds-chip.entry.js +1 -1
  75. package/dist/esm-es5/pds-copytext.entry.js +1 -1
  76. package/dist/esm-es5/pds-filter.entry.js +1 -1
  77. package/dist/esm-es5/pds-input.entry.js +1 -1
  78. package/dist/esm-es5/pds-link.entry.js +1 -1
  79. package/dist/esm-es5/pds-modal.entry.js +1 -1
  80. package/dist/esm-es5/pds-modal.entry.js.map +1 -1
  81. package/dist/esm-es5/pds-multiselect.entry.js +1 -1
  82. package/dist/esm-es5/pds-radio-group.entry.js +1 -1
  83. package/dist/esm-es5/pds-radio.entry.js +1 -1
  84. package/dist/esm-es5/pds-select.entry.js +1 -1
  85. package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
  86. package/dist/esm-es5/pds-switch.entry.js +1 -1
  87. package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
  88. package/dist/esm-es5/pds-text.entry.js +1 -1
  89. package/dist/esm-es5/pds-text.entry.js.map +1 -1
  90. package/dist/esm-es5/pds-textarea.entry.js +1 -1
  91. package/dist/pine-core/mock-pds-modal.entry.esm.js.map +1 -1
  92. package/dist/pine-core/{p-8f935480.entry.js → p-0b3d6527.entry.js} +2 -2
  93. package/dist/pine-core/{p-b6f57c0f.system.entry.js → p-18a3b6ba.system.entry.js} +2 -2
  94. package/dist/pine-core/{p-5757d038.system.entry.js → p-1b0dc99e.system.entry.js} +2 -2
  95. package/dist/pine-core/{p-32f65e48.entry.js → p-221b4348.entry.js} +2 -2
  96. package/dist/pine-core/{p-15ac22bd.system.entry.js → p-2a7b94ba.system.entry.js} +2 -2
  97. package/dist/pine-core/{p-57aa762e.system.entry.js → p-2f663747.system.entry.js} +2 -2
  98. package/dist/pine-core/{p-85ce731b.entry.js → p-378d01df.entry.js} +2 -2
  99. package/dist/pine-core/{p-57d2c33a.entry.js → p-37e5e471.entry.js} +2 -2
  100. package/dist/pine-core/{p-4189f1be.system.entry.js → p-3fc8dbc9.system.entry.js} +2 -2
  101. package/dist/pine-core/{p-4189f1be.system.entry.js.map → p-3fc8dbc9.system.entry.js.map} +1 -1
  102. package/dist/pine-core/{p-77d4f274.system.entry.js → p-40c04518.system.entry.js} +2 -2
  103. package/dist/pine-core/{p-4232520f.system.entry.js → p-445c5ec5.system.entry.js} +2 -2
  104. package/dist/pine-core/{p-8ab66dbc.system.entry.js → p-46d61c98.system.entry.js} +2 -2
  105. package/dist/pine-core/{p-4de64b1f.entry.js → p-4c0e71ce.entry.js} +2 -2
  106. package/dist/pine-core/{p-ca20b134.system.entry.js → p-4fb30dcc.system.entry.js} +2 -2
  107. package/dist/pine-core/{p-b5316979.entry.js → p-5107c129.entry.js} +2 -2
  108. package/dist/pine-core/{p-52c5ced3.system.entry.js → p-5bc45784.system.entry.js} +2 -2
  109. package/dist/pine-core/{p-9e8296fc.entry.js → p-5e879622.entry.js} +2 -2
  110. package/dist/pine-core/{p-9a9c1b17.entry.js → p-5f63b999.entry.js} +2 -2
  111. package/dist/pine-core/{p-9263809e.entry.js → p-64c6c4a0.entry.js} +2 -2
  112. package/dist/pine-core/{p-f795d3fe.system.entry.js → p-6e92e120.system.entry.js} +2 -2
  113. package/dist/pine-core/{p-220cbe98.entry.js → p-73be1c83.entry.js} +2 -2
  114. package/dist/pine-core/p-73be1c83.entry.js.map +1 -0
  115. package/dist/pine-core/{p-593cee44.entry.js → p-78132616.entry.js} +2 -2
  116. package/dist/pine-core/{p-88686193.entry.js → p-79f0b007.entry.js} +2 -2
  117. package/dist/pine-core/{p-f8a2aedd.entry.js → p-7c1b1fb8.entry.js} +2 -2
  118. package/dist/pine-core/{p-6fbe6be4.system.entry.js → p-7fc20a77.system.entry.js} +2 -2
  119. package/dist/pine-core/{p-663abd80.entry.js → p-867ef2f1.entry.js} +2 -2
  120. package/dist/pine-core/{p-87cee4a0.system.entry.js → p-91781a0a.system.entry.js} +2 -2
  121. package/dist/pine-core/{p-a30edeb1.entry.js → p-9558fa60.entry.js} +2 -2
  122. package/dist/pine-core/{p-BBJXL9br.system.js.map → p-9SGoKSa6.system.js.map} +1 -1
  123. package/dist/pine-core/{p-e1815c34.entry.js → p-9b2cd9fc.entry.js} +2 -2
  124. package/dist/pine-core/p-9b2cd9fc.entry.js.map +1 -0
  125. package/dist/pine-core/{p-6980edfe.system.entry.js → p-9f09e116.system.entry.js} +2 -2
  126. package/dist/pine-core/{p-C9OQdhX3.system.js.map → p-B3-LvD0D.system.js.map} +1 -1
  127. package/dist/pine-core/{p-DYm9--lc.system.js.map → p-B9rVdQdy.system.js.map} +1 -1
  128. package/dist/pine-core/{p-C8y7SAd7.system.js.map → p-BAp8Xlyt.system.js.map} +1 -1
  129. package/dist/pine-core/{p-hL5Id7g5.system.js.map → p-BB9Md7vT.system.js.map} +1 -1
  130. package/dist/pine-core/{p-Ctc231vq.system.js.map → p-BGc1L0Ao.system.js.map} +1 -1
  131. package/dist/pine-core/{p-CbRBe3Eq.system.js.map → p-BUtyruql.system.js.map} +1 -1
  132. package/dist/pine-core/{p-CCh7iS6N.system.js.map → p-BeJr-4oL.system.js.map} +1 -1
  133. package/dist/pine-core/{p-BFkDH5XU.js → p-Bmf4Ow_8.js} +1 -1
  134. package/dist/pine-core/{p-BFkDH5XU.js.map → p-Bmf4Ow_8.js.map} +1 -1
  135. package/dist/pine-core/{p-ljGHaVPv.system.js.map → p-Bsen6aos.system.js.map} +1 -1
  136. package/dist/pine-core/{p-Bd3ynCsJ.system.js.map → p-C1p8XJSR.system.js.map} +1 -1
  137. package/dist/pine-core/{p-6I02BpQf.system.js → p-CFL53vBy.system.js} +1 -1
  138. package/dist/pine-core/{p-6I02BpQf.system.js.map → p-CFL53vBy.system.js.map} +1 -1
  139. package/dist/pine-core/{p-hzdqYC6e.system.js.map → p-CH2XYz0c.system.js.map} +1 -1
  140. package/dist/pine-core/{p-BGVC08sX.system.js.map → p-CSe1fQxQ.system.js.map} +1 -1
  141. package/dist/pine-core/{p-aKHwHZQR.system.js.map → p-CdpI5vUX.system.js.map} +1 -1
  142. package/dist/pine-core/{p-Dkz0RoFB.system.js.map → p-CfNEp0k0.system.js.map} +1 -1
  143. package/dist/pine-core/{p-BiLmvJTd.system.js.map → p-DcrqbXJe.system.js.map} +1 -1
  144. package/dist/pine-core/{p-B3dAc5EW.system.js.map → p-Dd9EYBI-.system.js.map} +1 -1
  145. package/dist/pine-core/{p-DhLX7iDs.system.js.map → p-DdR8iWme.system.js.map} +1 -1
  146. package/dist/pine-core/p-DzmLlvu3.system.js.map +1 -0
  147. package/dist/pine-core/p-JAVnELnm.system.js +1 -1
  148. package/dist/pine-core/{p-BMx906Ad.system.js.map → p-_bwM2Rxz.system.js.map} +1 -1
  149. package/dist/pine-core/{p-276f774a.entry.js → p-b2a7c2bf.entry.js} +2 -2
  150. package/dist/pine-core/{p-226e45be.system.entry.js → p-b8f21554.system.entry.js} +2 -2
  151. package/dist/pine-core/p-b8f21554.system.entry.js.map +1 -0
  152. package/dist/pine-core/{p-5a7b25d0.entry.js → p-bf157830.entry.js} +2 -2
  153. package/dist/pine-core/{p-eac7cc81.entry.js → p-bf1a7158.entry.js} +2 -2
  154. package/dist/pine-core/{p-b232004f.system.entry.js → p-cb2146b0.system.entry.js} +2 -2
  155. package/dist/pine-core/{p-CcDv1OdF.system.js.map → p-dPhHNR2G.system.js.map} +1 -1
  156. package/dist/pine-core/{p-7514a191.entry.js → p-ea721a45.entry.js} +2 -2
  157. package/dist/pine-core/{p-7514a191.entry.js.map → p-ea721a45.entry.js.map} +1 -1
  158. package/dist/pine-core/{p-2e22a1fc.system.entry.js → p-edbaff73.system.entry.js} +2 -2
  159. package/dist/pine-core/{p-a24c75c2.system.entry.js → p-f179c88f.system.entry.js} +2 -2
  160. package/dist/pine-core/p-f179c88f.system.entry.js.map +1 -0
  161. package/dist/pine-core/{p-9e3e441c.system.entry.js → p-f298baeb.system.entry.js} +2 -2
  162. package/dist/pine-core/{p-49c2e2ce.system.entry.js → p-f9c32940.system.entry.js} +2 -2
  163. package/dist/pine-core/pds-modal.entry.esm.js.map +1 -1
  164. package/dist/pine-core/pds-text.entry.esm.js.map +1 -1
  165. package/dist/pine-core/pine-core.esm.js +1 -1
  166. package/dist/types/components/pds-text/pds-text.d.ts +1 -1
  167. package/dist/types/components.d.ts +62 -74
  168. package/dist/vscode.html-data.json +5 -2
  169. package/hydrate/index.js +21 -11
  170. package/hydrate/index.mjs +21 -11
  171. package/package.json +2 -2
  172. package/dist/pine-core/p-220cbe98.entry.js.map +0 -1
  173. package/dist/pine-core/p-226e45be.system.entry.js.map +0 -1
  174. package/dist/pine-core/p-B48FyOD0.system.js.map +0 -1
  175. package/dist/pine-core/p-a24c75c2.system.entry.js.map +0 -1
  176. package/dist/pine-core/p-e1815c34.entry.js.map +0 -1
  177. /package/dist/pine-core/{p-8f935480.entry.js.map → p-0b3d6527.entry.js.map} +0 -0
  178. /package/dist/pine-core/{p-b6f57c0f.system.entry.js.map → p-18a3b6ba.system.entry.js.map} +0 -0
  179. /package/dist/pine-core/{p-5757d038.system.entry.js.map → p-1b0dc99e.system.entry.js.map} +0 -0
  180. /package/dist/pine-core/{p-32f65e48.entry.js.map → p-221b4348.entry.js.map} +0 -0
  181. /package/dist/pine-core/{p-15ac22bd.system.entry.js.map → p-2a7b94ba.system.entry.js.map} +0 -0
  182. /package/dist/pine-core/{p-57aa762e.system.entry.js.map → p-2f663747.system.entry.js.map} +0 -0
  183. /package/dist/pine-core/{p-85ce731b.entry.js.map → p-378d01df.entry.js.map} +0 -0
  184. /package/dist/pine-core/{p-57d2c33a.entry.js.map → p-37e5e471.entry.js.map} +0 -0
  185. /package/dist/pine-core/{p-77d4f274.system.entry.js.map → p-40c04518.system.entry.js.map} +0 -0
  186. /package/dist/pine-core/{p-4232520f.system.entry.js.map → p-445c5ec5.system.entry.js.map} +0 -0
  187. /package/dist/pine-core/{p-8ab66dbc.system.entry.js.map → p-46d61c98.system.entry.js.map} +0 -0
  188. /package/dist/pine-core/{p-4de64b1f.entry.js.map → p-4c0e71ce.entry.js.map} +0 -0
  189. /package/dist/pine-core/{p-ca20b134.system.entry.js.map → p-4fb30dcc.system.entry.js.map} +0 -0
  190. /package/dist/pine-core/{p-b5316979.entry.js.map → p-5107c129.entry.js.map} +0 -0
  191. /package/dist/pine-core/{p-52c5ced3.system.entry.js.map → p-5bc45784.system.entry.js.map} +0 -0
  192. /package/dist/pine-core/{p-9e8296fc.entry.js.map → p-5e879622.entry.js.map} +0 -0
  193. /package/dist/pine-core/{p-9a9c1b17.entry.js.map → p-5f63b999.entry.js.map} +0 -0
  194. /package/dist/pine-core/{p-9263809e.entry.js.map → p-64c6c4a0.entry.js.map} +0 -0
  195. /package/dist/pine-core/{p-f795d3fe.system.entry.js.map → p-6e92e120.system.entry.js.map} +0 -0
  196. /package/dist/pine-core/{p-593cee44.entry.js.map → p-78132616.entry.js.map} +0 -0
  197. /package/dist/pine-core/{p-88686193.entry.js.map → p-79f0b007.entry.js.map} +0 -0
  198. /package/dist/pine-core/{p-f8a2aedd.entry.js.map → p-7c1b1fb8.entry.js.map} +0 -0
  199. /package/dist/pine-core/{p-6fbe6be4.system.entry.js.map → p-7fc20a77.system.entry.js.map} +0 -0
  200. /package/dist/pine-core/{p-663abd80.entry.js.map → p-867ef2f1.entry.js.map} +0 -0
  201. /package/dist/pine-core/{p-87cee4a0.system.entry.js.map → p-91781a0a.system.entry.js.map} +0 -0
  202. /package/dist/pine-core/{p-a30edeb1.entry.js.map → p-9558fa60.entry.js.map} +0 -0
  203. /package/dist/pine-core/{p-6980edfe.system.entry.js.map → p-9f09e116.system.entry.js.map} +0 -0
  204. /package/dist/pine-core/{p-276f774a.entry.js.map → p-b2a7c2bf.entry.js.map} +0 -0
  205. /package/dist/pine-core/{p-5a7b25d0.entry.js.map → p-bf157830.entry.js.map} +0 -0
  206. /package/dist/pine-core/{p-eac7cc81.entry.js.map → p-bf1a7158.entry.js.map} +0 -0
  207. /package/dist/pine-core/{p-b232004f.system.entry.js.map → p-cb2146b0.system.entry.js.map} +0 -0
  208. /package/dist/pine-core/{p-2e22a1fc.system.entry.js.map → p-edbaff73.system.entry.js.map} +0 -0
  209. /package/dist/pine-core/{p-9e3e441c.system.entry.js.map → p-f298baeb.system.entry.js.map} +0 -0
  210. /package/dist/pine-core/{p-49c2e2ce.system.entry.js.map → p-f9c32940.system.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"p-Ctc231vq.system.js","sources":["src/global/styles/utils/label.scss?tag=pds-switch&encapsulation=shadow","src/components/pds-switch/pds-switch.scss?tag=pds-switch&encapsulation=shadow","src/components/pds-switch/pds-switch.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n:host([aria-disabled=\"true\"]) label {\n color: var(--pine-color-text-label-disabled);\n}\n\n:host([aria-readonly=\"true\"]) {\n label {\n color: var(--pine-color-text-label-readonly);\n }\n}\n\nlabel {\n color: var(--pine-color-text-label);\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n}\n",":host {\n// Need discussions\n --sizing-input-toggle-size: calc(var(--pine-dimension-250) - (var(--pine-dimension-025) * 2));\n --pine-dimension-025: 2px;\n --spacing-message-inline: calc(var(--pine-dimension-450) + var(--pine-dimension-150));\n --number-transition-timing: 0.15s ease-out;\n\n align-items: flex-start;\n color: var(--pine-color-text);\n display: inline-flex;\n flex-flow: row wrap;\n position: relative;\n}\n\n:host(.pds-switch--error) {\n color: var(--pine-color-text-message-danger);\n\n input,\n input:checked,\n input:hover:not(:disabled):not(:checked) {\n background-color: var(--pine-color-danger);\n }\n\n input:focus-visible:not(:disabled):not(:checked) {\n outline-color: var(--pine-color-focus-ring-danger);\n }\n\n label {\n color: var(--color-text-error);\n }\n}\n\n// switch container\ninput {\n appearance: none;\n background: var(--pine-color-neutral);\n border: 0;\n border-radius: var(--pine-dimension-sm);\n cursor: pointer;\n display: inline-block;\n flex-shrink: 0;\n height: var(--pine-dimension-250);\n margin: 0;\n padding: 0;\n position: relative;\n transition: var(--number-transition-timing);\n transition-property: background, border, color;\n width: var(--pine-dimension-450);\n\n // switch toggle\n &::after {\n background: var(--pine-color-secondary);\n border-radius: var(--pine-border-radius-full);\n box-shadow: var(--pine-box-shadow);\n content: \"\";\n display: block;\n height: var(--sizing-input-toggle-size);\n inset-block-start: 50%;\n inset-inline-start: 50%;\n position: absolute;\n transform: translate3d(-100%, -50%, 0);\n transition: transform var(--number-transition-timing);\n width: var(--sizing-input-toggle-size);\n }\n}\n\nlabel {\n display: flex;\n gap: var(--pine-dimension-150);\n\n .pds-switch--error & {\n color: inherit;\n }\n}\n\n.visually-hidden {\n border: 0;\n clip: rect(0 0 0 0);\n clip-path: polygon(0 0, 0 0, 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n\n// Help and error messages\n.pds-switch__message {\n color: var(--pine-color-text-message);\n font: var(--pine-typography-body-sm-medium);\n margin-block-start: var(--pine-dimension-xs);\n margin-inline-start: var(--spacing-message-inline);\n width: 100%;\n\n + .pds-switch__message {\n margin-block-start: var(--spacing-message-inline);\n }\n}\n\n.pds-switch__message--error {\n color: inherit;\n display: flex;\n gap: var(--pine-dimension-2xs);\n\n pds-icon {\n margin-block-start: var(--pine-dimension-025);\n }\n}\n\n// Disabled state\ninput:disabled {\n background-color: var(--pine-color-neutral-disabled);\n cursor: not-allowed;\n\n ~ label {\n cursor: initial;\n }\n\n &:hover::after {\n background-color: var(--pine-color-secondary);\n }\n\n .pds-switch__message {\n color: initial;\n }\n}\n\n// Hover state\ninput:hover:not(:disabled) {\n background-color: var(--pine-color-neutral-hover);\n}\n\n // Focus state\ninput:focus-visible:not(:disabled) {\n outline: var(--pine-outline-focus);\n outline-offset: var(--pine-border-width);\n}\n\n// 'Checked' state\n// switch toggle\ninput:checked::after {\n transform: translate3d(0, -50%, 0);\n}\n\n// switch container\ninput:checked:not(:disabled) {\n background-color: currentColor;\n color: var(--pine-color-accent);\n\n &:hover {\n border-color: currentColor;\n color: var(--pine-color-accent-hover);\n }\n}\n","import { Component, Element, Event, EventEmitter, Host, h, Prop, Watch } from '@stencil/core';\nimport { assignDescription, messageId, exposeTypeProperty } from '../../utils/form';\nimport { danger } from '@pine-ds/icons/icons';\n\nimport { inheritAriaAttributes } from '@utils/attributes';\nimport type { Attributes } from '@utils/attributes';\n\n@Component({\n tag: 'pds-switch',\n styleUrls: ['../../global/styles/utils/label.scss', 'pds-switch.scss'],\n shadow: true,\n formAssociated: true,\n})\nexport class PdsSwitch {\n private inheritedAttributes: Attributes = {};\n private internals?: ElementInternals;\n private readonly _type = 'checkbox' as const;\n\n @Element() el: HTMLPdsSwitchElement;\n\n /**\n * A unique identifier used for the underlying component `id` attribute and the label `for` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Determines the input 'checked' state.\n */\n @Prop({ mutable: true }) checked = false;\n\n /**\n * Determines the input 'disabled' state, preventing user interaction.\n */\n @Prop() disabled? = false;\n\n /**\n * Displays message text describing an invalid state.\n */\n @Prop() errorMessage?: string;\n\n /**\n * Visually hides the label text for instances where only the switch should be displayed. Label remains accessible to assistive technology such as screen readers.\n */\n @Prop() hideLabel: boolean;\n\n /**\n * Displays help text for additional description of an input.\n */\n @Prop() helperMessage: string;\n\n /**\n * Determines the input 'invalid' state, signifying an error is present.\n */\n @Prop() invalid? = false;\n\n /**\n * Displays text to describe the input.\n */\n @Prop() label!: string;\n\n /**\n * Identifies form data and unifies a group of radio inputs for toggling a single property/value.\n */\n @Prop() name: string;\n\n /**\n * Determines the 'required' state of the input.\n */\n @Prop() required? = false;\n\n /**\n * Provides input with a string submitted in form data.\n */\n @Prop() value: string;\n\n\n /**\n * Emits an event on input change.\n */\n @Event() pdsSwitchChange: EventEmitter<InputEvent>;\n\n private onSwitchUpdate = (e: Event) => {\n if (this.disabled) return;\n\n const input = e.target as HTMLInputElement;\n this.checked = input.checked;\n\n this.updateFormValue();\n\n this.pdsSwitchChange.emit(e as InputEvent);\n };\n\n private switchClassNames = () => {\n let switchClasses = `pds-switch`;\n\n if (this.invalid === true) {\n switchClasses += \" pds-switch--error\";\n }\n if (this.helperMessage !== undefined) {\n switchClasses += \" pds-switch--message\";\n }\n return switchClasses;\n };\n\n connectedCallback() {\n // Initialize ElementInternals for form association (only once per element instance)\n if (this.el.attachInternals && !this.internals) {\n this.internals = this.el.attachInternals();\n }\n\n // Expose type property on the element instance to match native form element behavior\n exposeTypeProperty(this.el, () => this._type);\n }\n\n componentDidLoad() {\n this.updateFormValue();\n }\n\n @Watch('checked')\n checkedChanged() {\n this.updateFormValue();\n }\n\n private updateFormValue() {\n if (typeof jest !== 'undefined' || typeof process !== 'undefined' && process.env?.NODE_ENV === 'test') {\n return;\n }\n\n if (this.internals && this.internals.setFormValue) {\n // For switches, only send the value when checked, otherwise send null\n const formValue = this.checked ? (this.value || 'on') : null;\n this.internals.setFormValue(formValue);\n }\n\n if (this.internals && this.internals.setValidity) {\n this.internals.setValidity({});\n }\n }\n\n formStateRestoreCallback(state: string | FormData | null) {\n if (state instanceof FormData) {\n // For switches, restore if the value exists in FormData\n const value = this.value || 'on';\n this.checked = state.get(this.name || this.componentId) === value;\n } else if (typeof state === 'string') {\n // Restore from string state\n this.checked = state === (this.value || 'on');\n }\n }\n\n componentWillLoad() {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el)\n }\n }\n\n render() {\n return (\n <Host class={this.switchClassNames()} aria-disabled={this.disabled ? 'true' : null}>\n <label htmlFor={this.componentId}>\n <input\n aria-describedby={assignDescription(this.componentId, this.invalid, this.errorMessage || this.helperMessage)}\n aria-invalid={this.invalid ? \"true\" : undefined}\n checked={this.checked}\n class=\"pds-switch__input\"\n disabled={this.disabled}\n id={this.componentId}\n name={this.name ? this.name : this.componentId}\n onChange={this.onSwitchUpdate}\n required={this.required}\n type=\"checkbox\"\n value={this.value}\n {...this.inheritedAttributes}\n />\n <span class={this.hideLabel ? 'visually-hidden' : ''}>\n {this.label}\n </span>\n </label>\n {this.helperMessage &&\n <div\n class={`pds-switch__message`}\n id={messageId(this.componentId, 'helper')}\n >\n {this.helperMessage}\n </div>\n }\n {this.errorMessage &&\n <div\n class={`pds-switch__message pds-switch__message--error`}\n id={messageId(this.componentId, 'error')}\n aria-live=\"assertive\"\n >\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </div>\n }\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"p-BGc1L0Ao.system.js","sources":["src/global/styles/utils/label.scss?tag=pds-switch&encapsulation=shadow","src/components/pds-switch/pds-switch.scss?tag=pds-switch&encapsulation=shadow","src/components/pds-switch/pds-switch.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n:host([aria-disabled=\"true\"]) label {\n color: var(--pine-color-text-label-disabled);\n}\n\n:host([aria-readonly=\"true\"]) {\n label {\n color: var(--pine-color-text-label-readonly);\n }\n}\n\nlabel {\n color: var(--pine-color-text-label);\n font: var(--pine-typography-body-medium);\n letter-spacing: var(--pine-letter-spacing);\n}\n",":host {\n// Need discussions\n --sizing-input-toggle-size: calc(var(--pine-dimension-250) - (var(--pine-dimension-025) * 2));\n --pine-dimension-025: 2px;\n --spacing-message-inline: calc(var(--pine-dimension-450) + var(--pine-dimension-150));\n --number-transition-timing: 0.15s ease-out;\n\n align-items: flex-start;\n color: var(--pine-color-text);\n display: inline-flex;\n flex-flow: row wrap;\n position: relative;\n}\n\n:host(.pds-switch--error) {\n color: var(--pine-color-text-message-danger);\n\n input,\n input:checked,\n input:hover:not(:disabled):not(:checked) {\n background-color: var(--pine-color-danger);\n }\n\n input:focus-visible:not(:disabled):not(:checked) {\n outline-color: var(--pine-color-focus-ring-danger);\n }\n\n label {\n color: var(--color-text-error);\n }\n}\n\n// switch container\ninput {\n appearance: none;\n background: var(--pine-color-neutral);\n border: 0;\n border-radius: var(--pine-dimension-sm);\n cursor: pointer;\n display: inline-block;\n flex-shrink: 0;\n height: var(--pine-dimension-250);\n margin: 0;\n padding: 0;\n position: relative;\n transition: var(--number-transition-timing);\n transition-property: background, border, color;\n width: var(--pine-dimension-450);\n\n // switch toggle\n &::after {\n background: var(--pine-color-secondary);\n border-radius: var(--pine-border-radius-full);\n box-shadow: var(--pine-box-shadow);\n content: \"\";\n display: block;\n height: var(--sizing-input-toggle-size);\n inset-block-start: 50%;\n inset-inline-start: 50%;\n position: absolute;\n transform: translate3d(-100%, -50%, 0);\n transition: transform var(--number-transition-timing);\n width: var(--sizing-input-toggle-size);\n }\n}\n\nlabel {\n display: flex;\n gap: var(--pine-dimension-150);\n\n .pds-switch--error & {\n color: inherit;\n }\n}\n\n.visually-hidden {\n border: 0;\n clip: rect(0 0 0 0);\n clip-path: polygon(0 0, 0 0, 0 0);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n\n// Help and error messages\n.pds-switch__message {\n color: var(--pine-color-text-message);\n font: var(--pine-typography-body-sm-medium);\n margin-block-start: var(--pine-dimension-xs);\n margin-inline-start: var(--spacing-message-inline);\n width: 100%;\n\n + .pds-switch__message {\n margin-block-start: var(--spacing-message-inline);\n }\n}\n\n.pds-switch__message--error {\n color: inherit;\n display: flex;\n gap: var(--pine-dimension-2xs);\n\n pds-icon {\n margin-block-start: var(--pine-dimension-025);\n }\n}\n\n// Disabled state\ninput:disabled {\n background-color: var(--pine-color-neutral-disabled);\n cursor: not-allowed;\n\n ~ label {\n cursor: initial;\n }\n\n &:hover::after {\n background-color: var(--pine-color-secondary);\n }\n\n .pds-switch__message {\n color: initial;\n }\n}\n\n// Hover state\ninput:hover:not(:disabled) {\n background-color: var(--pine-color-neutral-hover);\n}\n\n // Focus state\ninput:focus-visible:not(:disabled) {\n outline: var(--pine-outline-focus);\n outline-offset: var(--pine-border-width);\n}\n\n// 'Checked' state\n// switch toggle\ninput:checked::after {\n transform: translate3d(0, -50%, 0);\n}\n\n// switch container\ninput:checked:not(:disabled) {\n background-color: currentColor;\n color: var(--pine-color-accent);\n\n &:hover {\n border-color: currentColor;\n color: var(--pine-color-accent-hover);\n }\n}\n","import { Component, Element, Event, EventEmitter, Host, h, Prop, Watch } from '@stencil/core';\nimport { assignDescription, messageId, exposeTypeProperty } from '../../utils/form';\nimport { danger } from '@pine-ds/icons/icons';\n\nimport { inheritAriaAttributes } from '@utils/attributes';\nimport type { Attributes } from '@utils/attributes';\n\n@Component({\n tag: 'pds-switch',\n styleUrls: ['../../global/styles/utils/label.scss', 'pds-switch.scss'],\n shadow: true,\n formAssociated: true,\n})\nexport class PdsSwitch {\n private inheritedAttributes: Attributes = {};\n private internals?: ElementInternals;\n private readonly _type = 'checkbox' as const;\n\n @Element() el: HTMLPdsSwitchElement;\n\n /**\n * A unique identifier used for the underlying component `id` attribute and the label `for` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Determines the input 'checked' state.\n */\n @Prop({ mutable: true }) checked = false;\n\n /**\n * Determines the input 'disabled' state, preventing user interaction.\n */\n @Prop() disabled? = false;\n\n /**\n * Displays message text describing an invalid state.\n */\n @Prop() errorMessage?: string;\n\n /**\n * Visually hides the label text for instances where only the switch should be displayed. Label remains accessible to assistive technology such as screen readers.\n */\n @Prop() hideLabel: boolean;\n\n /**\n * Displays help text for additional description of an input.\n */\n @Prop() helperMessage: string;\n\n /**\n * Determines the input 'invalid' state, signifying an error is present.\n */\n @Prop() invalid? = false;\n\n /**\n * Displays text to describe the input.\n */\n @Prop() label!: string;\n\n /**\n * Identifies form data and unifies a group of radio inputs for toggling a single property/value.\n */\n @Prop() name: string;\n\n /**\n * Determines the 'required' state of the input.\n */\n @Prop() required? = false;\n\n /**\n * Provides input with a string submitted in form data.\n */\n @Prop() value: string;\n\n\n /**\n * Emits an event on input change.\n */\n @Event() pdsSwitchChange: EventEmitter<InputEvent>;\n\n private onSwitchUpdate = (e: Event) => {\n if (this.disabled) return;\n\n const input = e.target as HTMLInputElement;\n this.checked = input.checked;\n\n this.updateFormValue();\n\n this.pdsSwitchChange.emit(e as InputEvent);\n };\n\n private switchClassNames = () => {\n let switchClasses = `pds-switch`;\n\n if (this.invalid === true) {\n switchClasses += \" pds-switch--error\";\n }\n if (this.helperMessage !== undefined) {\n switchClasses += \" pds-switch--message\";\n }\n return switchClasses;\n };\n\n connectedCallback() {\n // Initialize ElementInternals for form association (only once per element instance)\n if (this.el.attachInternals && !this.internals) {\n this.internals = this.el.attachInternals();\n }\n\n // Expose type property on the element instance to match native form element behavior\n exposeTypeProperty(this.el, () => this._type);\n }\n\n componentDidLoad() {\n this.updateFormValue();\n }\n\n @Watch('checked')\n checkedChanged() {\n this.updateFormValue();\n }\n\n private updateFormValue() {\n if (typeof jest !== 'undefined' || typeof process !== 'undefined' && process.env?.NODE_ENV === 'test') {\n return;\n }\n\n if (this.internals && this.internals.setFormValue) {\n // For switches, only send the value when checked, otherwise send null\n const formValue = this.checked ? (this.value || 'on') : null;\n this.internals.setFormValue(formValue);\n }\n\n if (this.internals && this.internals.setValidity) {\n this.internals.setValidity({});\n }\n }\n\n formStateRestoreCallback(state: string | FormData | null) {\n if (state instanceof FormData) {\n // For switches, restore if the value exists in FormData\n const value = this.value || 'on';\n this.checked = state.get(this.name || this.componentId) === value;\n } else if (typeof state === 'string') {\n // Restore from string state\n this.checked = state === (this.value || 'on');\n }\n }\n\n componentWillLoad() {\n this.inheritedAttributes = {\n ...inheritAriaAttributes(this.el)\n }\n }\n\n render() {\n return (\n <Host class={this.switchClassNames()} aria-disabled={this.disabled ? 'true' : null}>\n <label htmlFor={this.componentId}>\n <input\n aria-describedby={assignDescription(this.componentId, this.invalid, this.errorMessage || this.helperMessage)}\n aria-invalid={this.invalid ? \"true\" : undefined}\n checked={this.checked}\n class=\"pds-switch__input\"\n disabled={this.disabled}\n id={this.componentId}\n name={this.name ? this.name : this.componentId}\n onChange={this.onSwitchUpdate}\n required={this.required}\n type=\"checkbox\"\n value={this.value}\n {...this.inheritedAttributes}\n />\n <span class={this.hideLabel ? 'visually-hidden' : ''}>\n {this.label}\n </span>\n </label>\n {this.helperMessage &&\n <div\n class={`pds-switch__message`}\n id={messageId(this.componentId, 'helper')}\n >\n {this.helperMessage}\n </div>\n }\n {this.errorMessage &&\n <div\n class={`pds-switch__message pds-switch__message--error`}\n id={messageId(this.componentId, 'error')}\n aria-live=\"assertive\"\n >\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </div>\n }\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"p-CbRBe3Eq.system.js","sources":["src/components/pds-table/pds-table-head-cell/pds-table-head-cell.scss?tag=pds-table-head-cell&encapsulation=shadow","src/components/pds-table/pds-table-head-cell/pds-table-head-cell.tsx"],"sourcesContent":[":host {\n --border-head-cell-default: var(--pine-border-width-thin) solid var(--pine-color-border-subtle);\n\n /* stylelint-disable-next-line pine-design-system/no-hardcoded-colors */\n --box-shadow-default: 3px 3px 6px -2px rgba(0, 0, 0, 0.1);\n\n border-block-end: var(--border-head-cell-default);\n color: var(--pine-color-text);\n display: table-cell;\n font-family: var(--pine-font-family-body);\n font-size: var(--pine-font-size);\n font-weight: var(--pine-font-weight-regular);\n letter-spacing: var(--pine-letter-spacing);\n line-height: var(--pine-line-height-body);\n padding: var(--pine-dimension-sm);\n position: relative;\n text-align: start;\n vertical-align: inherit;\n}\n\n:host(.is-compact) {\n padding-block: var(--pine-dimension-2xs)\n}\n\n:host(.is-fixed) {\n background: var(--pine-color-background-container);\n left: var(--pine-dimension-none);\n position: sticky;\n z-index: var(--pine-z-index-raised);\n}\n\n// When parent table-head has background, fixed cells should inherit it\n:host(.is-fixed.has-head-background) {\n background-color: var(--pine-color-background-subtle);\n}\n\n// When parent table-head has border prop, add top border (bottom already set in :host)\n:host(.has-head-border) {\n border-block-start: var(--border-head-cell-default);\n}\n\n// box shadow when table has scrolled and cell is fixed\n:host(.has-scrolled.is-fixed) {\n box-shadow: var(--box-shadow-default);\n}\n\n:host(.is-sortable) {\n cursor: pointer;\n\n pds-icon {\n margin-inline-start: var(--pine-dimension-2xs);\n padding-block-start: 2px;\n position: absolute;\n }\n}\n\n:host(.is-sortable:hover),\n:host(.is-active) {\n color: var(--pine-color-text-strong);\n}\n\n// Text Alignment\n:host(.pds-table-head-cell--align-start) {\n text-align: start;\n}\n\n:host(.pds-table-head-cell--align-center) {\n text-align: center;\n}\n\n:host(.pds-table-head-cell--align-end) {\n text-align: end;\n}\n\n:host(.pds-table-head-cell--align-justify) {\n text-align: justify;\n}\n","import { Component, Element, Host, Prop, h, Event, EventEmitter, State, Method } from '@stencil/core';\n\nimport { downSmall, upSmall } from '@pine-ds/icons/icons';\n\n@Component({\n tag: 'pds-table-head-cell',\n styleUrls: ['pds-table-head-cell.scss'],\n shadow: true,\n})\nexport class PdsTableHeadCell {\n @Element() hostElement: HTMLPdsTableHeadCellElement;\n private tableRef: HTMLPdsTableElement;\n private scrollContainer: HTMLElement | null = null;\n private setupTimer: number | undefined;\n private setupRetries: number = 0;\n private headObserver?: MutationObserver;\n\n /**\n * Sets the text alignment within the head cell.\n */\n @Prop() cellAlign?: 'start' | 'center' | 'end' | 'justify';\n\n /**\n * Determines whether the table column is sortable when set to `true`.\n */\n @Prop() sortable: boolean;\n\n /**\n * Event emitted to signal that a table column header has been sorted, providing information about the sorted column's name and sorting direction.\n */\n @Event() pdsTableSort: EventEmitter<{ column: string; direction: string }>;\n\n /**\n * The direction of sorting.\n */\n @State() private sortingDirection: 'asc' | 'desc' = 'asc';\n\n /**\n * Determines if the table is currently scrolling.\n * @defaultValue false\n */\n @State() private tableScrolling: boolean = false;\n\n /**\n * Determines if the table row is currently selected.\n * @defaultValue false\n */\n @State() isSelected: boolean = false;\n\n /**\n * Determines if the parent table-head has the border attribute.\n * @defaultValue false\n */\n @State() private hasHeadBorder: boolean = false;\n\n /**\n * Determines if the parent table-head has the background attribute.\n * @defaultValue false\n */\n @State() private hasHeadBackground: boolean = false;\n\n /**\n * Determines if this column is the currently active sorted column.\n * @defaultValue false\n */\n @State() private isActive: boolean = false;\n\n /**\n * Programmatically sets this column as the active sort column with the specified direction.\n * Used by pds-table to apply a default sort on initial load.\n * @param direction - The sort direction to apply ('asc' or 'desc')\n */\n @Method()\n async setActiveSort(direction: 'asc' | 'desc') {\n if (!this.sortable) return;\n\n this.sortingDirection = direction;\n this.isActive = true;\n this.hostElement.classList.add('is-active');\n }\n\n /**\n * Clears the active sort state from this column.\n * Used internally when another column becomes active.\n */\n @Method()\n async clearActiveSort() {\n this.isActive = false;\n this.hostElement.classList.remove('is-active');\n }\n\n componentWillLoad() {\n // Set initial references and state before first render\n this.tableRef = this.hostElement.closest('pds-table') as HTMLPdsTableElement;\n\n const tableHead = this.hostElement.closest('pds-table-head') as HTMLElement;\n if (tableHead) {\n this.hasHeadBorder = tableHead.hasAttribute('border');\n this.hasHeadBackground = tableHead.hasAttribute('background');\n }\n }\n\n componentDidLoad() {\n if (this.tableRef && this.tableRef.responsive && this.tableRef.fixedColumn) {\n // For responsive tables with fixed columns, set up scroll detection\n // This enables the first column header to show a shadow when the table is scrolled horizontally\n this.setupScrollListener();\n }\n\n // Watch for changes to the parent table-head's border and background attributes\n const tableHead = this.hostElement.closest('pds-table-head') as HTMLElement;\n if (tableHead && typeof MutationObserver !== 'undefined') {\n // Defensive guard: disconnect existing observer before creating a new one\n if (this.headObserver) {\n this.headObserver.disconnect();\n }\n\n this.headObserver = new MutationObserver(() => {\n // Update state when border or background attributes change\n this.hasHeadBorder = tableHead.hasAttribute('border');\n this.hasHeadBackground = tableHead.hasAttribute('background');\n });\n\n this.headObserver.observe(tableHead, {\n attributes: true,\n attributeFilter: ['border', 'background']\n });\n }\n }\n\n disconnectedCallback() {\n this.cleanupScrollListener();\n\n if (this.headObserver) {\n this.headObserver.disconnect();\n }\n }\n\n\n private setupScrollListener() {\n if (!this.tableRef) return;\n\n // Query shadowRoot once and cache the container\n const container = this.tableRef.shadowRoot?.querySelector('.pds-table-responsive-container') as HTMLElement;\n\n if (container) {\n // Container available immediately\n this.scrollContainer = container;\n this.scrollContainer.addEventListener('scroll', this.handleScroll, { passive: true });\n this.handleScroll(); // Initial check\n this.setupRetries = 0; // Reset counter on success\n } else {\n // Container not ready, set up timer for retry with bounds\n this.setupTimer = window.setTimeout(() => {\n if (this.scrollContainer) return; // Already found\n this.setupRetries = (this.setupRetries || 0) + 1;\n if (this.setupRetries <= 50) {\n this.setupScrollListener();\n } else {\n console.warn('Failed to find responsive container after 50 attempts');\n }\n }, 100);\n }\n }\n\n private cleanupScrollListener() {\n if (this.scrollContainer) {\n this.scrollContainer.removeEventListener('scroll', this.handleScroll);\n this.scrollContainer = null;\n }\n\n if (this.setupTimer !== undefined) {\n window.clearTimeout(this.setupTimer);\n this.setupTimer = undefined;\n }\n\n this.setupRetries = 0; // Reset retry counter\n }\n\n /**\n * Handles scroll events to update fixed column shadow state.\n * Updates the tableScrolling state to control CSS classes for fixed column shadows.\n * @private\n */\n private handleScroll = () => {\n if (!this.scrollContainer) {\n return;\n }\n\n try {\n this.tableScrolling = this.scrollContainer.scrollLeft > 0;\n } catch (error) {\n console.warn('Scroll handler error:', error);\n }\n };\n\n private toggleSort = () => {\n if (this.sortable) {\n // Guard: return early if tableRef is not available\n if (!this.tableRef) {\n return;\n }\n\n const column = this.hostElement.innerText.trim();\n \n // Always toggle the direction (preserves original behavior)\n this.sortingDirection = this.sortingDirection === 'asc' ? 'desc' : 'asc';\n \n // Reset all OTHER head cells to inactive state (skip the current one)\n this.tableRef.querySelectorAll('pds-table-head-cell').forEach(async (headCell) => {\n // Skip clearing the current cell\n if (headCell !== this.hostElement) {\n const headCellComponent = headCell as HTMLPdsTableHeadCellElement;\n await headCellComponent.clearActiveSort();\n }\n });\n \n // Mark this column as active\n this.isActive = true;\n this.hostElement.classList.add('is-active');\n\n // Emit the sort event with the current direction\n this.pdsTableSort.emit({ column, direction: this.sortingDirection });\n }\n }\n\n private classNames() {\n const classNames = [];\n\n if (this.tableRef && this.tableRef.compact) {\n classNames.push('is-compact');\n }\n\n if (this.cellAlign) {\n classNames.push(`pds-table-head-cell--align-${this.cellAlign}`);\n }\n\n if (this.sortable) {\n classNames.push('is-sortable');\n }\n\n if (this.sortable && this.sortingDirection !== null) {\n classNames.push('sort-' + this.sortingDirection);\n }\n\n if (this.tableRef && this.tableRef.fixedColumn && this.tableScrolling) {\n classNames.push('has-scrolled');\n }\n\n if (this.hasHeadBackground) {\n classNames.push('has-head-background');\n }\n\n if (this.hasHeadBorder) {\n classNames.push('has-head-border');\n }\n\n return classNames.join(' ');\n }\n\n render() {\n return (\n <Host\n class={this.classNames()}\n role=\"columnheader\"\n onClick={this.toggleSort}\n part=\"head-cell\"\n style={\n this.tableRef &&\n this.tableRef.fixedColumn &&\n this.tableRef.selectable\n ? { '--fixed-cell-position': '40px' }\n : {}\n }\n >\n <slot></slot>\n {this.sortable && this.isActive && (\n <pds-icon icon={this.sortingDirection === 'asc' ? upSmall : downSmall} part=\"sort-icon\" />\n )}\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"p-BUtyruql.system.js","sources":["src/components/pds-table/pds-table-head-cell/pds-table-head-cell.scss?tag=pds-table-head-cell&encapsulation=shadow","src/components/pds-table/pds-table-head-cell/pds-table-head-cell.tsx"],"sourcesContent":[":host {\n --border-head-cell-default: var(--pine-border-width-thin) solid var(--pine-color-border-subtle);\n\n /* stylelint-disable-next-line pine-design-system/no-hardcoded-colors */\n --box-shadow-default: 3px 3px 6px -2px rgba(0, 0, 0, 0.1);\n\n border-block-end: var(--border-head-cell-default);\n color: var(--pine-color-text);\n display: table-cell;\n font-family: var(--pine-font-family-body);\n font-size: var(--pine-font-size);\n font-weight: var(--pine-font-weight-regular);\n letter-spacing: var(--pine-letter-spacing);\n line-height: var(--pine-line-height-body);\n padding: var(--pine-dimension-sm);\n position: relative;\n text-align: start;\n vertical-align: inherit;\n}\n\n:host(.is-compact) {\n padding-block: var(--pine-dimension-2xs)\n}\n\n:host(.is-fixed) {\n background: var(--pine-color-background-container);\n left: var(--pine-dimension-none);\n position: sticky;\n z-index: var(--pine-z-index-raised);\n}\n\n// When parent table-head has background, fixed cells should inherit it\n:host(.is-fixed.has-head-background) {\n background-color: var(--pine-color-background-subtle);\n}\n\n// When parent table-head has border prop, add top border (bottom already set in :host)\n:host(.has-head-border) {\n border-block-start: var(--border-head-cell-default);\n}\n\n// box shadow when table has scrolled and cell is fixed\n:host(.has-scrolled.is-fixed) {\n box-shadow: var(--box-shadow-default);\n}\n\n:host(.is-sortable) {\n cursor: pointer;\n\n pds-icon {\n margin-inline-start: var(--pine-dimension-2xs);\n padding-block-start: 2px;\n position: absolute;\n }\n}\n\n:host(.is-sortable:hover),\n:host(.is-active) {\n color: var(--pine-color-text-strong);\n}\n\n// Text Alignment\n:host(.pds-table-head-cell--align-start) {\n text-align: start;\n}\n\n:host(.pds-table-head-cell--align-center) {\n text-align: center;\n}\n\n:host(.pds-table-head-cell--align-end) {\n text-align: end;\n}\n\n:host(.pds-table-head-cell--align-justify) {\n text-align: justify;\n}\n","import { Component, Element, Host, Prop, h, Event, EventEmitter, State, Method } from '@stencil/core';\n\nimport { downSmall, upSmall } from '@pine-ds/icons/icons';\n\n@Component({\n tag: 'pds-table-head-cell',\n styleUrls: ['pds-table-head-cell.scss'],\n shadow: true,\n})\nexport class PdsTableHeadCell {\n @Element() hostElement: HTMLPdsTableHeadCellElement;\n private tableRef: HTMLPdsTableElement;\n private scrollContainer: HTMLElement | null = null;\n private setupTimer: number | undefined;\n private setupRetries: number = 0;\n private headObserver?: MutationObserver;\n\n /**\n * Sets the text alignment within the head cell.\n */\n @Prop() cellAlign?: 'start' | 'center' | 'end' | 'justify';\n\n /**\n * Determines whether the table column is sortable when set to `true`.\n */\n @Prop() sortable: boolean;\n\n /**\n * Event emitted to signal that a table column header has been sorted, providing information about the sorted column's name and sorting direction.\n */\n @Event() pdsTableSort: EventEmitter<{ column: string; direction: string }>;\n\n /**\n * The direction of sorting.\n */\n @State() private sortingDirection: 'asc' | 'desc' = 'asc';\n\n /**\n * Determines if the table is currently scrolling.\n * @defaultValue false\n */\n @State() private tableScrolling: boolean = false;\n\n /**\n * Determines if the table row is currently selected.\n * @defaultValue false\n */\n @State() isSelected: boolean = false;\n\n /**\n * Determines if the parent table-head has the border attribute.\n * @defaultValue false\n */\n @State() private hasHeadBorder: boolean = false;\n\n /**\n * Determines if the parent table-head has the background attribute.\n * @defaultValue false\n */\n @State() private hasHeadBackground: boolean = false;\n\n /**\n * Determines if this column is the currently active sorted column.\n * @defaultValue false\n */\n @State() private isActive: boolean = false;\n\n /**\n * Programmatically sets this column as the active sort column with the specified direction.\n * Used by pds-table to apply a default sort on initial load.\n * @param direction - The sort direction to apply ('asc' or 'desc')\n */\n @Method()\n async setActiveSort(direction: 'asc' | 'desc') {\n if (!this.sortable) return;\n\n this.sortingDirection = direction;\n this.isActive = true;\n this.hostElement.classList.add('is-active');\n }\n\n /**\n * Clears the active sort state from this column.\n * Used internally when another column becomes active.\n */\n @Method()\n async clearActiveSort() {\n this.isActive = false;\n this.hostElement.classList.remove('is-active');\n }\n\n componentWillLoad() {\n // Set initial references and state before first render\n this.tableRef = this.hostElement.closest('pds-table') as HTMLPdsTableElement;\n\n const tableHead = this.hostElement.closest('pds-table-head') as HTMLElement;\n if (tableHead) {\n this.hasHeadBorder = tableHead.hasAttribute('border');\n this.hasHeadBackground = tableHead.hasAttribute('background');\n }\n }\n\n componentDidLoad() {\n if (this.tableRef && this.tableRef.responsive && this.tableRef.fixedColumn) {\n // For responsive tables with fixed columns, set up scroll detection\n // This enables the first column header to show a shadow when the table is scrolled horizontally\n this.setupScrollListener();\n }\n\n // Watch for changes to the parent table-head's border and background attributes\n const tableHead = this.hostElement.closest('pds-table-head') as HTMLElement;\n if (tableHead && typeof MutationObserver !== 'undefined') {\n // Defensive guard: disconnect existing observer before creating a new one\n if (this.headObserver) {\n this.headObserver.disconnect();\n }\n\n this.headObserver = new MutationObserver(() => {\n // Update state when border or background attributes change\n this.hasHeadBorder = tableHead.hasAttribute('border');\n this.hasHeadBackground = tableHead.hasAttribute('background');\n });\n\n this.headObserver.observe(tableHead, {\n attributes: true,\n attributeFilter: ['border', 'background']\n });\n }\n }\n\n disconnectedCallback() {\n this.cleanupScrollListener();\n\n if (this.headObserver) {\n this.headObserver.disconnect();\n }\n }\n\n\n private setupScrollListener() {\n if (!this.tableRef) return;\n\n // Query shadowRoot once and cache the container\n const container = this.tableRef.shadowRoot?.querySelector('.pds-table-responsive-container') as HTMLElement;\n\n if (container) {\n // Container available immediately\n this.scrollContainer = container;\n this.scrollContainer.addEventListener('scroll', this.handleScroll, { passive: true });\n this.handleScroll(); // Initial check\n this.setupRetries = 0; // Reset counter on success\n } else {\n // Container not ready, set up timer for retry with bounds\n this.setupTimer = window.setTimeout(() => {\n if (this.scrollContainer) return; // Already found\n this.setupRetries = (this.setupRetries || 0) + 1;\n if (this.setupRetries <= 50) {\n this.setupScrollListener();\n } else {\n console.warn('Failed to find responsive container after 50 attempts');\n }\n }, 100);\n }\n }\n\n private cleanupScrollListener() {\n if (this.scrollContainer) {\n this.scrollContainer.removeEventListener('scroll', this.handleScroll);\n this.scrollContainer = null;\n }\n\n if (this.setupTimer !== undefined) {\n window.clearTimeout(this.setupTimer);\n this.setupTimer = undefined;\n }\n\n this.setupRetries = 0; // Reset retry counter\n }\n\n /**\n * Handles scroll events to update fixed column shadow state.\n * Updates the tableScrolling state to control CSS classes for fixed column shadows.\n * @private\n */\n private handleScroll = () => {\n if (!this.scrollContainer) {\n return;\n }\n\n try {\n this.tableScrolling = this.scrollContainer.scrollLeft > 0;\n } catch (error) {\n console.warn('Scroll handler error:', error);\n }\n };\n\n private toggleSort = () => {\n if (this.sortable) {\n // Guard: return early if tableRef is not available\n if (!this.tableRef) {\n return;\n }\n\n const column = this.hostElement.innerText.trim();\n \n // Always toggle the direction (preserves original behavior)\n this.sortingDirection = this.sortingDirection === 'asc' ? 'desc' : 'asc';\n \n // Reset all OTHER head cells to inactive state (skip the current one)\n this.tableRef.querySelectorAll('pds-table-head-cell').forEach(async (headCell) => {\n // Skip clearing the current cell\n if (headCell !== this.hostElement) {\n const headCellComponent = headCell as HTMLPdsTableHeadCellElement;\n await headCellComponent.clearActiveSort();\n }\n });\n \n // Mark this column as active\n this.isActive = true;\n this.hostElement.classList.add('is-active');\n\n // Emit the sort event with the current direction\n this.pdsTableSort.emit({ column, direction: this.sortingDirection });\n }\n }\n\n private classNames() {\n const classNames = [];\n\n if (this.tableRef && this.tableRef.compact) {\n classNames.push('is-compact');\n }\n\n if (this.cellAlign) {\n classNames.push(`pds-table-head-cell--align-${this.cellAlign}`);\n }\n\n if (this.sortable) {\n classNames.push('is-sortable');\n }\n\n if (this.sortable && this.sortingDirection !== null) {\n classNames.push('sort-' + this.sortingDirection);\n }\n\n if (this.tableRef && this.tableRef.fixedColumn && this.tableScrolling) {\n classNames.push('has-scrolled');\n }\n\n if (this.hasHeadBackground) {\n classNames.push('has-head-background');\n }\n\n if (this.hasHeadBorder) {\n classNames.push('has-head-border');\n }\n\n return classNames.join(' ');\n }\n\n render() {\n return (\n <Host\n class={this.classNames()}\n role=\"columnheader\"\n onClick={this.toggleSort}\n part=\"head-cell\"\n style={\n this.tableRef &&\n this.tableRef.fixedColumn &&\n this.tableRef.selectable\n ? { '--fixed-cell-position': '40px' }\n : {}\n }\n >\n <slot></slot>\n {this.sortable && this.isActive && (\n <pds-icon icon={this.sortingDirection === 'asc' ? upSmall : downSmall} part=\"sort-icon\" />\n )}\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"p-CCh7iS6N.system.js","sources":["src/components/pds-radio-group/pds-radio-group.scss?tag=pds-radio-group&encapsulation=scoped","src/components/pds-radio-group/pds-radio-group.tsx"],"sourcesContent":[":host {\n display: flex;\n flex-direction: column;\n gap: var(--pine-dimension-sm);\n}\n\n:host(.is-invalid) {\n .pds-radio-group__message--error {\n color: var(--pine-color-text-message-danger);\n }\n}\n\n.pds-radio-group__label {\n color: var(--pine-color-text-label);\n font: var(--pine-typography-heading-6);\n font-weight: var(--pine-font-weight-medium);\n letter-spacing: var(--pine-letter-spacing-heading-6);\n}\n\n.pds-radio-group__radios {\n display: flex;\n gap: var(--pds-radio-group-gap, var(--pine-dimension-xs));\n}\n\n.pds-radio-group__radios--row {\n align-items: flex-start; // Align radios to the left\n flex-direction: row;\n flex-wrap: wrap;\n}\n\n.pds-radio-group__radios--column {\n flex-direction: column;\n}\n\n.pds-radio-group__message {\n color: var(--pine-color-text-message);\n font: var(--pine-typography-body);\n width: 100%;\n}\n\n.pds-radio-group__message--error {\n display: flex;\n gap: var(--pine-dimension-2xs);\n\n pds-icon {\n margin-block-start: var(--pine-dimension-050);\n }\n}\n\n","import { Component, Host, h, Prop, Element, Watch, Event, EventEmitter, Listen } from '@stencil/core';\nimport { messageId } from '../../utils/form';\nimport { danger } from '@pine-ds/icons/icons';\nimport { RadioGroupChangeEventDetail } from './radio-group-interface';\n\n/**\n * @slot (default) - Child pds-radio components\n */\n@Component({\n tag: 'pds-radio-group',\n styleUrls: ['pds-radio-group.scss'],\n scoped: true,\n})\nexport class PdsRadioGroup {\n @Element() el: HTMLPdsRadioGroupElement;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * Stable group ID generated once during component initialization.\n * Used to maintain DOM stability and accessibility relationships across re-renders.\n */\n private _groupId: string;\n\n /**\n * Layout direction for the radio group.\n * @defaultValue column\n */\n @Prop() direction: 'row' | 'column' = 'column';\n\n /**\n * Displays error message text describing an invalid state for the entire group.\n */\n @Prop() errorMessage: string;\n\n /**\n * Displays helper message text below the radio group.\n */\n @Prop() helperMessage: string;\n\n /**\n * Spacing between radio items. Accepts t-shirt sizes (none, xxs, xs, sm, md, lg, xl, xxl) or core spacing tokens (025, 050, 100, etc.).\n * @defaultValue xs\n */\n @Prop() gap: string = 'xs';\n\n /**\n * Determines whether or not the radio group is disabled.\n * @defaultValue false\n */\n @Prop() disabled = false;\n\n /**\n * Determines whether or not the radio group is invalid.\n * @defaultValue false\n */\n @Prop() invalid = false;\n\n /**\n * String used for group label/heading.\n */\n @Prop() groupLabel: string;\n\n /**\n * String used for radio `name` attribute. Applied to all child radios.\n * Required for proper radio group behavior (mutual exclusivity and form submission).\n */\n @Prop() name: string;\n\n /**\n * Determines whether or not the radio group is required.\n * @defaultValue false\n */\n @Prop() required = false;\n\n /**\n * Emits when a radio in the group is selected, providing the selected value and component ID.\n */\n @Event() pdsRadioGroupChange: EventEmitter<RadioGroupChangeEventDetail>;\n\n @Watch('name')\n @Watch('disabled')\n @Watch('invalid')\n @Watch('required')\n handlePropsChange() {\n this.updateChildRadios();\n }\n\n @Listen('change')\n handleRadioChange(event: Event) {\n const target = event.target as HTMLInputElement;\n\n // Only handle events from radio inputs\n if (target.type !== 'radio') {\n return;\n }\n\n // Only emit if the radio is being checked (not unchecked)\n if (target.checked) {\n const radioElement = target.closest('pds-radio') as HTMLPdsRadioElement;\n if (radioElement) {\n this.pdsRadioGroupChange.emit({\n checked: true,\n value: radioElement.value,\n componentId: radioElement.componentId,\n });\n }\n }\n }\n\n private updateChildRadios() {\n const radios = this.el.querySelectorAll('pds-radio');\n radios.forEach((radio) => {\n if (this.name) {\n radio.setAttribute('name', this.name);\n } else {\n radio.removeAttribute('name');\n }\n if (this.disabled) {\n radio.setAttribute('disabled', 'true');\n } else {\n radio.removeAttribute('disabled');\n }\n if (this.invalid) {\n radio.setAttribute('invalid', 'true');\n } else {\n radio.removeAttribute('invalid');\n }\n if (this.required) {\n radio.setAttribute('required', 'true');\n } else {\n radio.removeAttribute('required');\n }\n });\n }\n\n componentWillLoad() {\n // Generate stable group ID once during initialization\n // This ensures DOM stability and accessibility relationships remain consistent across re-renders\n if (this.componentId) {\n this._groupId = this.componentId;\n } else {\n // Generate unique ID with fallback for test environments where crypto.randomUUID may not be available\n const uniqueId = typeof crypto !== 'undefined' && crypto.randomUUID\n ? crypto.randomUUID()\n : `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;\n this._groupId = `radio-group-${uniqueId}`;\n }\n }\n\n componentDidLoad() {\n if (!this.name) {\n console.warn('pds-radio-group: name prop is required for proper radio group functionality');\n }\n this.updateChildRadios();\n }\n\n private classNames() {\n const classNames = [];\n\n if (this.invalid) {\n classNames.push('is-invalid');\n }\n // The host always uses flex-direction: column, so the label stays above.\n // The direction prop now only affects the .pds-radio-group__radios container.\n // No class needed on host for direction.\n\n return classNames.join(' ');\n }\n\n private getGapValue(): string {\n // Map t-shirt sizes to dimension tokens\n const gapMap: Record<string, string> = {\n none: '0',\n xxs: 'var(--pine-dimension-xxs)',\n xs: 'var(--pine-dimension-xs)',\n sm: 'var(--pine-dimension-sm)',\n md: 'var(--pine-dimension-md)',\n lg: 'var(--pine-dimension-lg)',\n xl: 'var(--pine-dimension-xl)',\n xxl: 'var(--pine-dimension-xxl)',\n };\n\n // If it's a t-shirt size, use the mapped value\n if (gapMap[this.gap]) {\n return gapMap[this.gap];\n }\n\n // Otherwise, assume it's a dimension token like \"100\", \"200\", etc.\n return `var(--pine-dimension-${this.gap})`;\n }\n\n private getAriaDescribedBy(): string | undefined {\n const messageIds: string[] = [];\n\n if (this.errorMessage) {\n messageIds.push(messageId(this._groupId, 'error'));\n }\n\n if (this.helperMessage) {\n messageIds.push(messageId(this._groupId, 'helper'));\n }\n\n return messageIds.length > 0 ? messageIds.join(' ') : undefined;\n }\n\n render() {\n const gapValue = this.getGapValue();\n const ariaDescribedBy = this.getAriaDescribedBy();\n\n return (\n <Host\n class={this.classNames()}\n id={this._groupId}\n role=\"group\"\n aria-describedby={ariaDescribedBy}\n style={{\n '--pds-radio-group-gap': gapValue,\n }}\n >\n {this.groupLabel && (\n <div class=\"pds-radio-group__label\">\n {this.groupLabel}\n </div>\n )}\n <div class={{\n 'pds-radio-group__radios': true,\n 'pds-radio-group__radios--row': this.direction === 'row',\n 'pds-radio-group__radios--column': this.direction === 'column',\n }}>\n <slot onSlotchange={() => this.updateChildRadios()} />\n </div>\n {this.helperMessage && (\n <div\n class=\"pds-radio-group__message\"\n id={messageId(this._groupId, 'helper')}\n >\n {this.helperMessage}\n </div>\n )}\n {this.errorMessage && (\n <div\n class=\"pds-radio-group__message pds-radio-group__message--error\"\n id={messageId(this._groupId, 'error')}\n aria-live=\"assertive\"\n >\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </div>\n )}\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"p-BeJr-4oL.system.js","sources":["src/components/pds-radio-group/pds-radio-group.scss?tag=pds-radio-group&encapsulation=scoped","src/components/pds-radio-group/pds-radio-group.tsx"],"sourcesContent":[":host {\n display: flex;\n flex-direction: column;\n gap: var(--pine-dimension-sm);\n}\n\n:host(.is-invalid) {\n .pds-radio-group__message--error {\n color: var(--pine-color-text-message-danger);\n }\n}\n\n.pds-radio-group__label {\n color: var(--pine-color-text-label);\n font: var(--pine-typography-heading-6);\n font-weight: var(--pine-font-weight-medium);\n letter-spacing: var(--pine-letter-spacing-heading-6);\n}\n\n.pds-radio-group__radios {\n display: flex;\n gap: var(--pds-radio-group-gap, var(--pine-dimension-xs));\n}\n\n.pds-radio-group__radios--row {\n align-items: flex-start; // Align radios to the left\n flex-direction: row;\n flex-wrap: wrap;\n}\n\n.pds-radio-group__radios--column {\n flex-direction: column;\n}\n\n.pds-radio-group__message {\n color: var(--pine-color-text-message);\n font: var(--pine-typography-body);\n width: 100%;\n}\n\n.pds-radio-group__message--error {\n display: flex;\n gap: var(--pine-dimension-2xs);\n\n pds-icon {\n margin-block-start: var(--pine-dimension-050);\n }\n}\n\n","import { Component, Host, h, Prop, Element, Watch, Event, EventEmitter, Listen } from '@stencil/core';\nimport { messageId } from '../../utils/form';\nimport { danger } from '@pine-ds/icons/icons';\nimport { RadioGroupChangeEventDetail } from './radio-group-interface';\n\n/**\n * @slot (default) - Child pds-radio components\n */\n@Component({\n tag: 'pds-radio-group',\n styleUrls: ['pds-radio-group.scss'],\n scoped: true,\n})\nexport class PdsRadioGroup {\n @Element() el: HTMLPdsRadioGroupElement;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * Stable group ID generated once during component initialization.\n * Used to maintain DOM stability and accessibility relationships across re-renders.\n */\n private _groupId: string;\n\n /**\n * Layout direction for the radio group.\n * @defaultValue column\n */\n @Prop() direction: 'row' | 'column' = 'column';\n\n /**\n * Displays error message text describing an invalid state for the entire group.\n */\n @Prop() errorMessage: string;\n\n /**\n * Displays helper message text below the radio group.\n */\n @Prop() helperMessage: string;\n\n /**\n * Spacing between radio items. Accepts t-shirt sizes (none, xxs, xs, sm, md, lg, xl, xxl) or core spacing tokens (025, 050, 100, etc.).\n * @defaultValue xs\n */\n @Prop() gap: string = 'xs';\n\n /**\n * Determines whether or not the radio group is disabled.\n * @defaultValue false\n */\n @Prop() disabled = false;\n\n /**\n * Determines whether or not the radio group is invalid.\n * @defaultValue false\n */\n @Prop() invalid = false;\n\n /**\n * String used for group label/heading.\n */\n @Prop() groupLabel: string;\n\n /**\n * String used for radio `name` attribute. Applied to all child radios.\n * Required for proper radio group behavior (mutual exclusivity and form submission).\n */\n @Prop() name: string;\n\n /**\n * Determines whether or not the radio group is required.\n * @defaultValue false\n */\n @Prop() required = false;\n\n /**\n * Emits when a radio in the group is selected, providing the selected value and component ID.\n */\n @Event() pdsRadioGroupChange: EventEmitter<RadioGroupChangeEventDetail>;\n\n @Watch('name')\n @Watch('disabled')\n @Watch('invalid')\n @Watch('required')\n handlePropsChange() {\n this.updateChildRadios();\n }\n\n @Listen('change')\n handleRadioChange(event: Event) {\n const target = event.target as HTMLInputElement;\n\n // Only handle events from radio inputs\n if (target.type !== 'radio') {\n return;\n }\n\n // Only emit if the radio is being checked (not unchecked)\n if (target.checked) {\n const radioElement = target.closest('pds-radio') as HTMLPdsRadioElement;\n if (radioElement) {\n this.pdsRadioGroupChange.emit({\n checked: true,\n value: radioElement.value,\n componentId: radioElement.componentId,\n });\n }\n }\n }\n\n private updateChildRadios() {\n const radios = this.el.querySelectorAll('pds-radio');\n radios.forEach((radio) => {\n if (this.name) {\n radio.setAttribute('name', this.name);\n } else {\n radio.removeAttribute('name');\n }\n if (this.disabled) {\n radio.setAttribute('disabled', 'true');\n } else {\n radio.removeAttribute('disabled');\n }\n if (this.invalid) {\n radio.setAttribute('invalid', 'true');\n } else {\n radio.removeAttribute('invalid');\n }\n if (this.required) {\n radio.setAttribute('required', 'true');\n } else {\n radio.removeAttribute('required');\n }\n });\n }\n\n componentWillLoad() {\n // Generate stable group ID once during initialization\n // This ensures DOM stability and accessibility relationships remain consistent across re-renders\n if (this.componentId) {\n this._groupId = this.componentId;\n } else {\n // Generate unique ID with fallback for test environments where crypto.randomUUID may not be available\n const uniqueId = typeof crypto !== 'undefined' && crypto.randomUUID\n ? crypto.randomUUID()\n : `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;\n this._groupId = `radio-group-${uniqueId}`;\n }\n }\n\n componentDidLoad() {\n if (!this.name) {\n console.warn('pds-radio-group: name prop is required for proper radio group functionality');\n }\n this.updateChildRadios();\n }\n\n private classNames() {\n const classNames = [];\n\n if (this.invalid) {\n classNames.push('is-invalid');\n }\n // The host always uses flex-direction: column, so the label stays above.\n // The direction prop now only affects the .pds-radio-group__radios container.\n // No class needed on host for direction.\n\n return classNames.join(' ');\n }\n\n private getGapValue(): string {\n // Map t-shirt sizes to dimension tokens\n const gapMap: Record<string, string> = {\n none: '0',\n xxs: 'var(--pine-dimension-xxs)',\n xs: 'var(--pine-dimension-xs)',\n sm: 'var(--pine-dimension-sm)',\n md: 'var(--pine-dimension-md)',\n lg: 'var(--pine-dimension-lg)',\n xl: 'var(--pine-dimension-xl)',\n xxl: 'var(--pine-dimension-xxl)',\n };\n\n // If it's a t-shirt size, use the mapped value\n if (gapMap[this.gap]) {\n return gapMap[this.gap];\n }\n\n // Otherwise, assume it's a dimension token like \"100\", \"200\", etc.\n return `var(--pine-dimension-${this.gap})`;\n }\n\n private getAriaDescribedBy(): string | undefined {\n const messageIds: string[] = [];\n\n if (this.errorMessage) {\n messageIds.push(messageId(this._groupId, 'error'));\n }\n\n if (this.helperMessage) {\n messageIds.push(messageId(this._groupId, 'helper'));\n }\n\n return messageIds.length > 0 ? messageIds.join(' ') : undefined;\n }\n\n render() {\n const gapValue = this.getGapValue();\n const ariaDescribedBy = this.getAriaDescribedBy();\n\n return (\n <Host\n class={this.classNames()}\n id={this._groupId}\n role=\"group\"\n aria-describedby={ariaDescribedBy}\n style={{\n '--pds-radio-group-gap': gapValue,\n }}\n >\n {this.groupLabel && (\n <div class=\"pds-radio-group__label\">\n {this.groupLabel}\n </div>\n )}\n <div class={{\n 'pds-radio-group__radios': true,\n 'pds-radio-group__radios--row': this.direction === 'row',\n 'pds-radio-group__radios--column': this.direction === 'column',\n }}>\n <slot onSlotchange={() => this.updateChildRadios()} />\n </div>\n {this.helperMessage && (\n <div\n class=\"pds-radio-group__message\"\n id={messageId(this._groupId, 'helper')}\n >\n {this.helperMessage}\n </div>\n )}\n {this.errorMessage && (\n <div\n class=\"pds-radio-group__message pds-radio-group__message--error\"\n id={messageId(this._groupId, 'error')}\n aria-live=\"assertive\"\n >\n <pds-icon icon={danger} size=\"small\" />\n {this.errorMessage}\n </div>\n )}\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  const a="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m11-5a1 1 0 0 1 1 1v3h3a1 1 0 1 1 0 2h-3v3a1 1 0 1 1-2 0v-3H8a1 1 0 1 1 0-2h3V8a1 1 0 0 1 1-1'/></svg>";const s="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M5.293 8.293a1 1 0 0 1 1.414 0L12 13.586l5.293-5.293a1 1 0 1 1 1.414 1.414l-6 6a1 1 0 0 1-1.414 0l-6-6a1 1 0 0 1 0-1.414'/></svg>";const c="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M12 1C5.925 1 1 5.925 1 12s4.925 11 11 11 11-4.925 11-11S18.075 1 12 1m5.207 8.707a1 1 0 0 0-1.414-1.414L10.5 13.586l-2.293-2.293a1 1 0 0 0-1.414 1.414l3 3a1 1 0 0 0 1.414 0z'/></svg>";const v="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M11.162 1h7.676c.528 0 .982 0 1.357.03.395.033.789.104 1.167.297a3 3 0 0 1 1.311 1.311c.193.378.264.772.296 1.167.031.375.031.83.031 1.356v7.678c0 .527 0 .981-.03 1.356-.033.395-.104.789-.297 1.167a3 3 0 0 1-1.311 1.311c-.378.193-.772.264-1.167.296-.375.031-.83.031-1.357.031H17v1.838c0 .528 0 .982-.03 1.357-.033.395-.104.789-.297 1.167a3 3 0 0 1-1.311 1.311c-.378.193-.772.264-1.167.296-.375.031-.83.031-1.356.031H5.16c-.527 0-.981 0-1.356-.03-.395-.033-.789-.104-1.167-.297a3 3 0 0 1-1.311-1.311c-.193-.378-.264-.772-.296-1.167C1 19.82 1 19.365 1 18.838v-7.677c0-.527 0-.981.03-1.356.033-.395.104-.789.297-1.167a3 3 0 0 1 1.311-1.311c.378-.193.772-.264 1.167-.296C4.18 7 4.635 7 5.161 7H7V5.161c0-.527 0-.981.03-1.356.033-.395.104-.789.297-1.167a3 3 0 0 1 1.311-1.311c.378-.193.772-.264 1.167-.296C10.18 1 10.635 1 11.162 1M5.2 9c-.577 0-.949 0-1.232.024-.272.022-.373.06-.422.085a1 1 0 0 0-.437.437c-.025.05-.063.15-.085.422C3 10.25 3 10.623 3 11.2v7.6c0 .577 0 .949.024 1.232.022.272.06.373.085.422a1 1 0 0 0 .437.437c.05.025.15.063.422.085C4.25 21 4.623 21 5.2 21h7.6c.577 0 .949 0 1.232-.024.272-.022.373-.06.422-.085a1 1 0 0 0 .437-.437c.025-.05.063-.15.085-.422C15 19.75 15 19.377 15 18.8v-7.6c0-.577 0-.949-.024-1.232-.022-.272-.06-.373-.085-.422a1 1 0 0 0-.437-.437c-.05-.025-.15-.063-.422-.085C13.75 9 13.377 9 12.8 9zM17 15v-3.838c0-.528 0-.982-.03-1.357-.033-.395-.104-.789-.297-1.167a3 3 0 0 0-1.311-1.311c-.378-.193-.772-.264-1.167-.296A18 18 0 0 0 12.838 7H9V5.2c0-.577 0-.949.024-1.232.022-.272.06-.373.085-.422a1 1 0 0 1 .437-.437c.05-.025.15-.063.422-.085C10.25 3 10.623 3 11.2 3h7.6c.577 0 .949 0 1.232.024.272.022.373.06.422.085a1 1 0 0 1 .437.437c.025.05.063.15.085.422C21 4.25 21 4.623 21 5.2v7.6c0 .577 0 .949-.024 1.232-.022.272-.06.373-.085.422a1 1 0 0 1-.437.437c-.05.025-.15.063-.422.085C19.75 15 19.377 15 18.8 15z'/></svg>";const l="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18M1 12C1 5.925 5.925 1 12 1s11 4.925 11 11-4.925 11-11 11S1 18.075 1 12m11-5a1 1 0 0 1 1 1v4a1 1 0 1 1-2 0V8a1 1 0 0 1 1-1m-1 9a1 1 0 0 1 1-1h.01a1 1 0 1 1 0 2H12a1 1 0 0 1-1-1'/></svg>";const t="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M5.293 8.293a1 1 0 0 1 1.414 0L12 13.586l5.293-5.293a1 1 0 1 1 1.414 1.414l-6 6a1 1 0 0 1-1.414 0l-6-6a1 1 0 0 1 0-1.414'/></svg>";const g="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M11.293 3.293a1 1 0 0 1 1.414 0l5 5a1 1 0 0 1-1.414 1.414L12 5.414 7.707 9.707a1 1 0 0 1-1.414-1.414zm-5 11a1 1 0 0 1 1.414 0L12 18.586l4.293-4.293a1 1 0 0 1 1.414 1.414l-5 5a1 1 0 0 1-1.414 0l-5-5a1 1 0 0 1 0-1.414'/></svg>";const o="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path d='M2.833 7.5c-.46 0-.833.448-.833 1s.373 1 .833 1h18.334c.46 0 .833-.448.833-1s-.373-1-.833-1zM2.833 14.5c-.46 0-.833.448-.833 1s.373 1 .833 1h18.334c.46 0 .833-.448.833-1s-.373-1-.833-1z'/></svg>";const w="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M14 3a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v6a1 1 0 1 1-2 0V5.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L18.586 4H15a1 1 0 0 1-1-1M7.759 4H10a1 1 0 1 1 0 2H7.8c-.857 0-1.439 0-1.889.038-.438.035-.663.1-.819.18a2 2 0 0 0-.874.874c-.08.156-.145.38-.18.819C4 8.361 4 8.943 4 9.8v6.4c0 .857 0 1.439.038 1.889.035.438.1.663.18.819a2 2 0 0 0 .874.874c.156.08.38.145.819.18C6.361 20 6.943 20 7.8 20h6.4c.857 0 1.439 0 1.889-.038.438-.035.663-.1.819-.18a2 2 0 0 0 .874-.874c.08-.156.145-.38.18-.819.037-.45.038-1.032.038-1.889V14a1 1 0 1 1 2 0v2.241c0 .805 0 1.47-.044 2.01-.046.563-.145 1.08-.392 1.565a4 4 0 0 1-1.748 1.748c-.485.247-1.002.346-1.564.392-.541.044-1.206.044-2.01.044H7.758c-.805 0-1.47 0-2.01-.044-.563-.046-1.08-.145-1.565-.392a4 4 0 0 1-1.748-1.748c-.247-.485-.346-1.002-.392-1.564C2 17.71 2 17.046 2 16.242V9.758c0-.805 0-1.47.044-2.01.046-.563.145-1.08.392-1.565a4 4 0 0 1 1.748-1.748c.485-.247 1.002-.346 1.564-.392C6.29 4 6.954 4 7.758 4'/></svg>";const d="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M5.293 5.293a1 1 0 0 1 1.414 0L12 10.586l5.293-5.293a1 1 0 1 1 1.414 1.414L13.414 12l5.293 5.293a1 1 0 0 1-1.414 1.414L12 13.414l-5.293 5.293a1 1 0 0 1-1.414-1.414L10.586 12 5.293 6.707a1 1 0 0 1 0-1.414'/></svg>";const e="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M11.162 1h1.676c.528 0 .982 0 1.357.03.395.033.789.104 1.167.297a3 3 0 0 1 1.311 1.311c.193.378.264.772.296 1.167.028.336.03.736.031 1.195h4a1 1 0 1 1 0 2h-1v10.241c0 .805 0 1.47-.044 2.01-.046.563-.145 1.08-.392 1.565a4 4 0 0 1-1.748 1.748c-.485.247-1.002.346-1.564.392-.541.044-1.206.044-2.01.044H9.758c-.805 0-1.47 0-2.01-.044-.563-.046-1.08-.145-1.565-.392a4 4 0 0 1-1.748-1.748c-.247-.485-.346-1.002-.392-1.564C4 18.71 4 18.046 4 17.242V7H3a1 1 0 1 1 0-2h4c0-.459.003-.86.03-1.195.033-.395.104-.789.297-1.167a3 3 0 0 1 1.311-1.311c.378-.193.772-.264 1.167-.296C10.18 1 10.635 1 11.162 1M6 7v10.2c0 .857 0 1.439.038 1.889.035.438.1.663.18.819a2 2 0 0 0 .874.874c.156.08.38.145.819.18C8.361 21 8.943 21 9.8 21h4.4c.857 0 1.439 0 1.889-.038.438-.035.663-.1.819-.18a2 2 0 0 0 .874-.874c.08-.156.145-.38.18-.819.037-.45.038-1.032.038-1.889V7zm9-2H9c0-.465.004-.783.024-1.032.022-.272.06-.373.085-.422a1 1 0 0 1 .437-.437c.05-.025.15-.063.422-.085C10.25 3 10.623 3 11.2 3h1.6c.577 0 .949 0 1.232.024.272.022.373.06.422.085a1 1 0 0 1 .437.437c.025.05.063.15.085.422.02.249.023.567.024 1.032m-5 5.5a1 1 0 0 1 1 1v5a1 1 0 1 1-2 0v-5a1 1 0 0 1 1-1m4 0a1 1 0 0 1 1 1v5a1 1 0 1 1-2 0v-5a1 1 0 0 1 1-1'/></svg>";const i="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M11.293 8.293a1 1 0 0 1 1.414 0l6 6a1 1 0 0 1-1.414 1.414L12 10.414l-5.293 5.293a1 1 0 0 1-1.414-1.414z'/></svg>";const n="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' class='pdsicon'><path fill-rule='evenodd' d='M8.786 14.5h6.428c.727 0 1.222 0 1.654.076a5 5 0 0 1 4.056 4.056c.076.432.076.927.076 1.654 0 .158.005.318-.023.474a1.5 1.5 0 0 1-1.216 1.217c-.137.024-.28.023-.351.023Q12 21.961 4.59 22c-.07 0-.214.001-.35-.023a1.5 1.5 0 0 1-1.217-1.216c-.028-.157-.023-.317-.023-.475 0-.727 0-1.222.076-1.654a5 5 0 0 1 4.056-4.056c.432-.076.927-.076 1.654-.076M6.5 7.5a5.5 5.5 0 1 1 11 0 5.5 5.5 0 0 1-11 0'/></svg>";export{v as a,l as b,c,t as d,g as e,a as f,s as g,o as h,i,w as l,d as r,e as t,n as u};
2
- //# sourceMappingURL=p-BFkDH5XU.js.map
2
+ //# sourceMappingURL=p-Bmf4Ow_8.js.map