@verbb/plugin-kit-web 2.0.14 → 2.0.15

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 (242) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/chunks/{decorate-W02hmVTt.js → decorate-R0X811qp.js} +13 -2
  3. package/dist/chunks/decorate-R0X811qp.js.map +1 -0
  4. package/dist/chunks/{pk-button-QpDDlRbG.js → pk-button-BWGDkuzc.js} +3 -4
  5. package/dist/chunks/{pk-button-QpDDlRbG.js.map → pk-button-BWGDkuzc.js.map} +1 -1
  6. package/dist/chunks/{pk-button-group-D9hqSfb_.js → pk-button-group-BSz5T5iS.js} +2 -3
  7. package/dist/chunks/pk-button-group-BSz5T5iS.js.map +1 -0
  8. package/dist/chunks/{pk-button-group-separator-DG0CYaqc.js → pk-button-group-separator-DH3Rl24b.js} +2 -3
  9. package/dist/chunks/pk-button-group-separator-DH3Rl24b.js.map +1 -0
  10. package/dist/chunks/{pk-button-group-text-C5z4P7ur.js → pk-button-group-text-Qro_KmZb.js} +2 -3
  11. package/dist/chunks/{pk-button-group-text-C5z4P7ur.js.map → pk-button-group-text-Qro_KmZb.js.map} +1 -1
  12. package/dist/chunks/{pk-calendar-CoUil0F7.js → pk-calendar-enTOUCRD.js} +2 -3
  13. package/dist/chunks/pk-calendar-enTOUCRD.js.map +1 -0
  14. package/dist/chunks/{pk-checkbox-Bavq3-9C.js → pk-checkbox-CvZwJZn_.js} +3 -4
  15. package/dist/chunks/pk-checkbox-CvZwJZn_.js.map +1 -0
  16. package/dist/chunks/{pk-checkbox-select-9lqd9Rwz.js → pk-checkbox-select-DclPoyDM.js} +3 -4
  17. package/dist/chunks/pk-checkbox-select-DclPoyDM.js.map +1 -0
  18. package/dist/chunks/{pk-code-editor-DSG6AwLV.js → pk-code-editor-CrKnJUyi.js} +3 -4
  19. package/dist/chunks/pk-code-editor-CrKnJUyi.js.map +1 -0
  20. package/dist/chunks/{pk-color-input-BCCXCZMA.js → pk-color-input-DXdqNCK7.js} +3 -4
  21. package/dist/chunks/pk-color-input-DXdqNCK7.js.map +1 -0
  22. package/dist/chunks/{pk-combobox-BqaSsLJb.js → pk-combobox-BLft8AXy.js} +4 -5
  23. package/dist/chunks/pk-combobox-BLft8AXy.js.map +1 -0
  24. package/dist/chunks/{pk-copy-button-CfeVuQ0r.js → pk-copy-button-asOLQkqk.js} +3 -4
  25. package/dist/chunks/pk-copy-button-asOLQkqk.js.map +1 -0
  26. package/dist/chunks/{pk-date-picker-BM4HMb4-.js → pk-date-picker-Bri3kZ6x.js} +5 -6
  27. package/dist/chunks/pk-date-picker-Bri3kZ6x.js.map +1 -0
  28. package/dist/chunks/{pk-dialog-Ck1InIBC.js → pk-dialog-BbEfvb0g.js} +2 -3
  29. package/dist/chunks/pk-dialog-BbEfvb0g.js.map +1 -0
  30. package/dist/chunks/{pk-dropdown-item-HcIUlFH1.js → pk-dropdown-item-BoZTGWMU.js} +2 -3
  31. package/dist/chunks/pk-dropdown-item-BoZTGWMU.js.map +1 -0
  32. package/dist/chunks/{pk-dropdown-label-DLgrmYND.js → pk-dropdown-label-Da28F917.js} +2 -3
  33. package/dist/chunks/{pk-dropdown-label-DLgrmYND.js.map → pk-dropdown-label-Da28F917.js.map} +1 -1
  34. package/dist/chunks/{pk-dropdown-menu-r5wgkvmZ.js → pk-dropdown-menu-CfZc7dIz.js} +4 -5
  35. package/dist/chunks/pk-dropdown-menu-CfZc7dIz.js.map +1 -0
  36. package/dist/chunks/{pk-editable-table-DMHGqZlQ.js → pk-editable-table-Cn4WXqAo.js} +16 -17
  37. package/dist/chunks/pk-editable-table-Cn4WXqAo.js.map +1 -0
  38. package/dist/chunks/{pk-field-JFP24j4o.js → pk-field-NL4KdFZC.js} +2 -3
  39. package/dist/chunks/pk-field-NL4KdFZC.js.map +1 -0
  40. package/dist/chunks/{pk-form-associated-element-DmZKgNPL.js → pk-form-associated-element-9M2NzOE2.js} +2 -2
  41. package/dist/chunks/{pk-form-associated-element-DmZKgNPL.js.map → pk-form-associated-element-9M2NzOE2.js.map} +1 -1
  42. package/dist/chunks/{pk-input-naIRPWGC.js → pk-input-DDkIXOkt.js} +3 -4
  43. package/dist/chunks/pk-input-DDkIXOkt.js.map +1 -0
  44. package/dist/chunks/{pk-input-group-CGHQKrt8.js → pk-input-group-CRPSBFhX.js} +2 -3
  45. package/dist/chunks/pk-input-group-CRPSBFhX.js.map +1 -0
  46. package/dist/chunks/{pk-input-group-addon-DXbNbsfY.js → pk-input-group-addon-B0StOmTJ.js} +2 -3
  47. package/dist/chunks/pk-input-group-addon-B0StOmTJ.js.map +1 -0
  48. package/dist/chunks/{pk-input-group-button-XOfVLqGO.js → pk-input-group-button-CnKajvsP.js} +2 -3
  49. package/dist/chunks/pk-input-group-button-CnKajvsP.js.map +1 -0
  50. package/dist/chunks/{pk-input-group-input-CSmR5vdY.js → pk-input-group-input-mllffsjQ.js} +2 -3
  51. package/dist/chunks/pk-input-group-input-mllffsjQ.js.map +1 -0
  52. package/dist/chunks/{pk-input-group-text-C6ekhtff.js → pk-input-group-text-DvaPJvh2.js} +2 -3
  53. package/dist/chunks/pk-input-group-text-DvaPJvh2.js.map +1 -0
  54. package/dist/chunks/{pk-input-group-textarea-DALr3pdU.js → pk-input-group-textarea-CqYv8tUQ.js} +2 -3
  55. package/dist/chunks/pk-input-group-textarea-CqYv8tUQ.js.map +1 -0
  56. package/dist/chunks/{pk-lightswitch-B-rLflNq.js → pk-lightswitch-DI1BeCmA.js} +3 -4
  57. package/dist/chunks/pk-lightswitch-DI1BeCmA.js.map +1 -0
  58. package/dist/chunks/{pk-option-Cy7oOcwF.js → pk-option-MGj9SKOK.js} +2 -3
  59. package/dist/chunks/pk-option-MGj9SKOK.js.map +1 -0
  60. package/dist/chunks/{pk-option-group-BAFSIZTa.js → pk-option-group-Cs6N7mlP.js} +2 -3
  61. package/dist/chunks/pk-option-group-Cs6N7mlP.js.map +1 -0
  62. package/dist/chunks/{pk-popover-G3ojheBD.js → pk-popover-duyNosk2.js} +3 -4
  63. package/dist/chunks/pk-popover-duyNosk2.js.map +1 -0
  64. package/dist/chunks/{pk-popup-CgiXok-U.js → pk-popup-B9AgBC2V.js} +2 -3
  65. package/dist/chunks/pk-popup-B9AgBC2V.js.map +1 -0
  66. package/dist/chunks/{pk-radio-CDfhOW8L.js → pk-radio-BK4D2Htu.js} +2 -3
  67. package/dist/chunks/pk-radio-BK4D2Htu.js.map +1 -0
  68. package/dist/chunks/{pk-radio-group-BazmLDvl.js → pk-radio-group-BRJIjOsR.js} +3 -4
  69. package/dist/chunks/pk-radio-group-BRJIjOsR.js.map +1 -0
  70. package/dist/chunks/{pk-scroll-area-BjU7-vZX.js → pk-scroll-area-BR6ckorh.js} +2 -3
  71. package/dist/chunks/pk-scroll-area-BR6ckorh.js.map +1 -0
  72. package/dist/chunks/{pk-select-BeMDXEC6.js → pk-select-C1s0OJr0.js} +4 -5
  73. package/dist/chunks/pk-select-C1s0OJr0.js.map +1 -0
  74. package/dist/chunks/{pk-separator-CLb9n0FK.js → pk-separator-CHij3vEG.js} +2 -3
  75. package/dist/chunks/pk-separator-CHij3vEG.js.map +1 -0
  76. package/dist/chunks/{pk-spinner-Blxd3SIH.js → pk-spinner-DweuYJ_Z.js} +2 -3
  77. package/dist/chunks/{pk-spinner-Blxd3SIH.js.map → pk-spinner-DweuYJ_Z.js.map} +1 -1
  78. package/dist/chunks/{pk-status-7_5dEuw-.js → pk-status-D1IzTSI2.js} +2 -3
  79. package/dist/chunks/{pk-status-7_5dEuw-.js.map → pk-status-D1IzTSI2.js.map} +1 -1
  80. package/dist/chunks/{pk-tab-f1OLMVXs.js → pk-tab-2MHunhlF.js} +3 -3
  81. package/dist/chunks/{pk-tab-f1OLMVXs.js.map → pk-tab-2MHunhlF.js.map} +1 -1
  82. package/dist/chunks/{pk-tab-heading-79ZuLhXi.js → pk-tab-heading-BV6m_sT-.js} +2 -3
  83. package/dist/chunks/pk-tab-heading-BV6m_sT-.js.map +1 -0
  84. package/dist/chunks/{pk-tab-panel-DdAbrOBF.js → pk-tab-panel-C6FxQw9q.js} +3 -3
  85. package/dist/chunks/{pk-tab-panel-DdAbrOBF.js.map → pk-tab-panel-C6FxQw9q.js.map} +1 -1
  86. package/dist/chunks/{pk-tabs-BhC5PAnO.js → pk-tabs-BTE63uK9.js} +2 -3
  87. package/dist/chunks/{pk-tabs-BhC5PAnO.js.map → pk-tabs-BTE63uK9.js.map} +1 -1
  88. package/dist/chunks/{pk-textarea-BEapC8Rk.js → pk-textarea-BcAyZYC-.js} +3 -4
  89. package/dist/chunks/pk-textarea-BcAyZYC-.js.map +1 -0
  90. package/dist/chunks/{pk-time-picker-RlAqlho4.js → pk-time-picker-5D4nmig2.js} +4 -5
  91. package/dist/chunks/{pk-time-picker-RlAqlho4.js.map → pk-time-picker-5D4nmig2.js.map} +1 -1
  92. package/dist/chunks/{pk-tiptap-content-zzx3-xrD.js → pk-tiptap-content-BPd4GO6c.js} +2 -3
  93. package/dist/chunks/pk-tiptap-content-BPd4GO6c.js.map +1 -0
  94. package/dist/chunks/{pk-tiptap-editor-DpT4TYdi.js → pk-tiptap-editor-tG67Vegc.js} +11 -12
  95. package/dist/chunks/pk-tiptap-editor-tG67Vegc.js.map +1 -0
  96. package/dist/chunks/{pk-tiptap-input-D7xj13FY.js → pk-tiptap-input-CtefNnaK.js} +3 -4
  97. package/dist/chunks/pk-tiptap-input-CtefNnaK.js.map +1 -0
  98. package/dist/chunks/{pk-toggle-5-GKVLye.js → pk-toggle-CW-lflrh.js} +2 -3
  99. package/dist/chunks/{pk-toggle-5-GKVLye.js.map → pk-toggle-CW-lflrh.js.map} +1 -1
  100. package/dist/chunks/{pk-toggle-group-CWDwYlgR.js → pk-toggle-group-BKymefo3.js} +2 -3
  101. package/dist/chunks/pk-toggle-group-BKymefo3.js.map +1 -0
  102. package/dist/chunks/{pk-tooltip-DAq-JZpg.js → pk-tooltip-BoDq8YVe.js} +3 -4
  103. package/dist/chunks/pk-tooltip-BoDq8YVe.js.map +1 -0
  104. package/dist/chunks/{register-DeqrQzRS.js → register-CQodpTWT.js} +50 -50
  105. package/dist/chunks/{register-DeqrQzRS.js.map → register-CQodpTWT.js.map} +1 -1
  106. package/dist/components/button/pk-button.js +1 -1
  107. package/dist/components/button-group/pk-button-group-separator.js +1 -1
  108. package/dist/components/button-group/pk-button-group-text.js +1 -1
  109. package/dist/components/button-group/pk-button-group.js +1 -1
  110. package/dist/components/button-group.js +3 -3
  111. package/dist/components/button.js +1 -1
  112. package/dist/components/calendar/pk-calendar.js +1 -1
  113. package/dist/components/calendar.js +1 -1
  114. package/dist/components/checkbox/pk-checkbox.js +1 -1
  115. package/dist/components/checkbox-select/pk-checkbox-select.js +1 -1
  116. package/dist/components/checkbox-select.js +1 -1
  117. package/dist/components/checkbox.js +1 -1
  118. package/dist/components/code-editor/pk-code-editor.js +1 -1
  119. package/dist/components/code-editor.js +1 -1
  120. package/dist/components/color-input/pk-color-input.js +1 -1
  121. package/dist/components/color-input.js +1 -1
  122. package/dist/components/combobox/pk-combobox.js +1 -1
  123. package/dist/components/combobox.js +1 -1
  124. package/dist/components/connect/pk-connect-oauth.js +3 -4
  125. package/dist/components/connect/pk-connect-oauth.js.map +1 -1
  126. package/dist/components/connect/pk-connect.js +4 -5
  127. package/dist/components/connect/pk-connect.js.map +1 -1
  128. package/dist/components/copy-button/pk-copy-button.js +1 -1
  129. package/dist/components/copy-button.js +1 -1
  130. package/dist/components/date-picker/pk-date-picker.js +1 -1
  131. package/dist/components/date-picker.js +1 -1
  132. package/dist/components/dialog/pk-dialog.js +1 -1
  133. package/dist/components/dialog.js +1 -1
  134. package/dist/components/dropdown-menu/pk-dropdown-item.js +1 -1
  135. package/dist/components/dropdown-menu/pk-dropdown-label.js +1 -1
  136. package/dist/components/dropdown-menu/pk-dropdown-menu.js +1 -1
  137. package/dist/components/dropdown-menu/pk-dropdown-separator.js +1 -2
  138. package/dist/components/dropdown-menu/pk-dropdown-separator.js.map +1 -1
  139. package/dist/components/dropdown-menu.js +3 -3
  140. package/dist/components/editable-table/pk-editable-table.js +1 -1
  141. package/dist/components/editable-table.js +1 -1
  142. package/dist/components/field/pk-field.js +1 -1
  143. package/dist/components/field.js +1 -1
  144. package/dist/components/icon/pk-icon.js +1 -2
  145. package/dist/components/icon/pk-icon.js.map +1 -1
  146. package/dist/components/input/pk-input.js +1 -1
  147. package/dist/components/input-group/pk-input-group-addon.js +1 -1
  148. package/dist/components/input-group/pk-input-group-button.js +1 -1
  149. package/dist/components/input-group/pk-input-group-input.js +1 -1
  150. package/dist/components/input-group/pk-input-group-text.js +1 -1
  151. package/dist/components/input-group/pk-input-group-textarea.js +1 -1
  152. package/dist/components/input-group/pk-input-group.js +1 -1
  153. package/dist/components/input-group.js +6 -6
  154. package/dist/components/input.js +1 -1
  155. package/dist/components/lightswitch/pk-lightswitch.js +1 -1
  156. package/dist/components/lightswitch.js +1 -1
  157. package/dist/components/popover/pk-popover.js +1 -1
  158. package/dist/components/popover.js +1 -1
  159. package/dist/components/popup/pk-popup.js +1 -1
  160. package/dist/components/popup.js +1 -1
  161. package/dist/components/radio-group/pk-radio-group.js +1 -1
  162. package/dist/components/radio-group/pk-radio.js +1 -1
  163. package/dist/components/radio-group.js +2 -2
  164. package/dist/components/scroll-area/pk-scroll-area.js +1 -1
  165. package/dist/components/scroll-area.js +1 -1
  166. package/dist/components/select/pk-option-group.js +1 -1
  167. package/dist/components/select/pk-option.js +1 -1
  168. package/dist/components/select/pk-select.js +1 -1
  169. package/dist/components/select.js +3 -3
  170. package/dist/components/separator/pk-separator.js +1 -1
  171. package/dist/components/separator.js +1 -1
  172. package/dist/components/spinner/pk-spinner.js +1 -1
  173. package/dist/components/spinner.js +1 -1
  174. package/dist/components/status/pk-status.js +1 -1
  175. package/dist/components/status.js +1 -1
  176. package/dist/components/tabs/pk-tab-heading.js +1 -1
  177. package/dist/components/tabs/pk-tab-panel.js +1 -1
  178. package/dist/components/tabs/pk-tab.js +1 -1
  179. package/dist/components/tabs/pk-tabs.js +1 -1
  180. package/dist/components/tabs.js +4 -4
  181. package/dist/components/textarea/pk-textarea.js +1 -1
  182. package/dist/components/textarea.js +1 -1
  183. package/dist/components/time-picker/pk-time-picker.js +1 -1
  184. package/dist/components/time-picker.js +1 -1
  185. package/dist/components/tiptap/pk-tiptap-content.js +1 -1
  186. package/dist/components/tiptap/pk-tiptap-editor.js +1 -1
  187. package/dist/components/tiptap/pk-tiptap-input.js +1 -1
  188. package/dist/components/tiptap-content.js +1 -1
  189. package/dist/components/tiptap-editor.js +1 -1
  190. package/dist/components/tiptap-input.js +1 -1
  191. package/dist/components/toggle/pk-toggle.js +1 -1
  192. package/dist/components/toggle-group/pk-toggle-group.js +1 -1
  193. package/dist/components/toggle-group.js +1 -1
  194. package/dist/components/toggle.js +1 -1
  195. package/dist/components/tooltip/pk-tooltip.js +1 -1
  196. package/dist/components/tooltip.js +1 -1
  197. package/dist/connect/register-cp-connect.js +3 -3
  198. package/dist/decorators.d.ts +12 -0
  199. package/dist/decorators.d.ts.map +1 -0
  200. package/dist/index.js +52 -52
  201. package/dist/register.js +50 -50
  202. package/package.json +7 -7
  203. package/dist/chunks/decorate-W02hmVTt.js.map +0 -1
  204. package/dist/chunks/pk-button-group-D9hqSfb_.js.map +0 -1
  205. package/dist/chunks/pk-button-group-separator-DG0CYaqc.js.map +0 -1
  206. package/dist/chunks/pk-calendar-CoUil0F7.js.map +0 -1
  207. package/dist/chunks/pk-checkbox-Bavq3-9C.js.map +0 -1
  208. package/dist/chunks/pk-checkbox-select-9lqd9Rwz.js.map +0 -1
  209. package/dist/chunks/pk-code-editor-DSG6AwLV.js.map +0 -1
  210. package/dist/chunks/pk-color-input-BCCXCZMA.js.map +0 -1
  211. package/dist/chunks/pk-combobox-BqaSsLJb.js.map +0 -1
  212. package/dist/chunks/pk-copy-button-CfeVuQ0r.js.map +0 -1
  213. package/dist/chunks/pk-date-picker-BM4HMb4-.js.map +0 -1
  214. package/dist/chunks/pk-dialog-Ck1InIBC.js.map +0 -1
  215. package/dist/chunks/pk-dropdown-item-HcIUlFH1.js.map +0 -1
  216. package/dist/chunks/pk-dropdown-menu-r5wgkvmZ.js.map +0 -1
  217. package/dist/chunks/pk-editable-table-DMHGqZlQ.js.map +0 -1
  218. package/dist/chunks/pk-field-JFP24j4o.js.map +0 -1
  219. package/dist/chunks/pk-input-group-CGHQKrt8.js.map +0 -1
  220. package/dist/chunks/pk-input-group-addon-DXbNbsfY.js.map +0 -1
  221. package/dist/chunks/pk-input-group-button-XOfVLqGO.js.map +0 -1
  222. package/dist/chunks/pk-input-group-input-CSmR5vdY.js.map +0 -1
  223. package/dist/chunks/pk-input-group-text-C6ekhtff.js.map +0 -1
  224. package/dist/chunks/pk-input-group-textarea-DALr3pdU.js.map +0 -1
  225. package/dist/chunks/pk-input-naIRPWGC.js.map +0 -1
  226. package/dist/chunks/pk-lightswitch-B-rLflNq.js.map +0 -1
  227. package/dist/chunks/pk-option-Cy7oOcwF.js.map +0 -1
  228. package/dist/chunks/pk-option-group-BAFSIZTa.js.map +0 -1
  229. package/dist/chunks/pk-popover-G3ojheBD.js.map +0 -1
  230. package/dist/chunks/pk-popup-CgiXok-U.js.map +0 -1
  231. package/dist/chunks/pk-radio-CDfhOW8L.js.map +0 -1
  232. package/dist/chunks/pk-radio-group-BazmLDvl.js.map +0 -1
  233. package/dist/chunks/pk-scroll-area-BjU7-vZX.js.map +0 -1
  234. package/dist/chunks/pk-select-BeMDXEC6.js.map +0 -1
  235. package/dist/chunks/pk-separator-CLb9n0FK.js.map +0 -1
  236. package/dist/chunks/pk-tab-heading-79ZuLhXi.js.map +0 -1
  237. package/dist/chunks/pk-textarea-BEapC8Rk.js.map +0 -1
  238. package/dist/chunks/pk-tiptap-content-zzx3-xrD.js.map +0 -1
  239. package/dist/chunks/pk-tiptap-editor-DpT4TYdi.js.map +0 -1
  240. package/dist/chunks/pk-tiptap-input-D7xj13FY.js.map +0 -1
  241. package/dist/chunks/pk-toggle-group-CWDwYlgR.js.map +0 -1
  242. package/dist/chunks/pk-tooltip-DAq-JZpg.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pk-connect-oauth.js","names":[],"sources":["../../../src/components/connect/pk-connect-oauth.ts"],"sourcesContent":["import { submitCpFormAction, watchCpFormDirty } from '@verbb/plugin-kit-core';\nimport { html, LitElement } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport '../button/pk-button.js';\nimport '../status/pk-status.js';\nimport { pkConnectStyles } from './pk-connect.styles.js';\n\n/**\n * OAuth connect row for Craft CP settings.\n *\n * **Light DOM** — the row mounts inside Craft's `.field.lightswitch-field` wrapper and\n * reuses CP column classes (`.heading` / `.input`) so it lines up with Provider/Enabled\n * rows without shadow-piercing or duplicating Craft field chrome. Action buttons use\n * `pk-button`; submission goes through `Craft.submitForm` (same as `.formsubmit`).\n */\n@customElement('pk-connect-oauth')\nexport class PkConnectOauth extends LitElement {\n static override styles = pkConnectStyles;\n\n @property({ type: Boolean, reflect: true })\n connected = false;\n\n @property({ attribute: 'connect-action' })\n connectAction = '';\n\n @property({ attribute: 'disconnect-action' })\n disconnectAction = '';\n\n @property({ attribute: 'param-name' })\n paramName = '';\n\n @property({ attribute: 'param-value' })\n paramValue = '';\n\n @property({ attribute: 'connect-redirect' })\n connectRedirect = '';\n\n @property({ attribute: 'disconnect-redirect' })\n disconnectRedirect = '';\n\n @property({ attribute: 'form-selector' })\n formSelector = '#main-form';\n\n /** When true, skip dirty-form watching (e.g. Formie read-only OAuth mini-form). */\n @property({ type: Boolean, attribute: 'skip-dirty-watch' })\n skipDirtyWatch = false;\n\n @property({ attribute: 'label-connected' })\n labelConnected = 'Connected';\n\n @property({ attribute: 'label-not-connected' })\n labelNotConnected = 'Not Connected';\n\n @property({ attribute: 'label-connect' })\n labelConnect = 'Connect';\n\n @property({ attribute: 'label-disconnect' })\n labelDisconnect = 'Disconnect';\n\n @property({ attribute: 'label-save-to-connect' })\n labelSaveToConnect = 'Save to connect.';\n\n @state()\n private isDirty = false;\n\n private unwatchDirty: (() => void) | null = null;\n\n override createRenderRoot(): HTMLElement | DocumentFragment {\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.skipDirtyWatch) {\n return;\n }\n\n this.unwatchDirty = watchCpFormDirty({\n formSelector: this.formSelector,\n host: this,\n onDirty: () => {\n this.isDirty = true;\n },\n });\n }\n\n override disconnectedCallback(): void {\n this.unwatchDirty?.();\n this.unwatchDirty = null;\n super.disconnectedCallback();\n }\n\n private submitOAuthAction(action: string, redirect: string): void {\n submitCpFormAction({\n formSelector: this.formSelector,\n host: this,\n action,\n redirect,\n paramName: this.paramName,\n paramValue: this.paramValue,\n });\n }\n\n private handleConnectClick(event: Event): void {\n event.preventDefault();\n this.submitOAuthAction(this.connectAction, this.connectRedirect);\n }\n\n private handleDisconnectClick(event: Event): void {\n event.preventDefault();\n this.submitOAuthAction(this.disconnectAction, this.disconnectRedirect);\n }\n\n override render() {\n if (this.isDirty) {\n return html`\n <div class=\"heading\">\n <span class=\"warning with-icon\">${this.labelSaveToConnect}</span>\n </div>\n `;\n }\n\n if (this.connected) {\n return html`\n <div class=\"heading\">\n <pk-status status=\"on\" class=\"pk-connect__status-icon\"></pk-status>${this.labelConnected}\n </div>\n\n <div class=\"input ltr\">\n <pk-button\n type=\"button\"\n size=\"xs\"\n variant=\"default\"\n class=\"pk-connect__action\"\n @click=${this.handleDisconnectClick}\n >\n ${this.labelDisconnect}\n </pk-button>\n </div>\n `;\n }\n\n return html`\n <div class=\"heading\">\n <pk-status status=\"disabled\" class=\"pk-connect__status-icon\"></pk-status><span class=\"light\">${this.labelNotConnected}</span>\n </div>\n\n <div class=\"input ltr\">\n <pk-button\n type=\"button\"\n size=\"xs\"\n variant=\"default\"\n class=\"pk-connect__action\"\n @click=${this.handleConnectClick}\n >\n ${this.labelConnect}\n </pk-button>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-connect-oauth': PkConnectOauth;\n }\n}\n"],"mappings":";;;;;;;;AAiBO,IAAA,iBAAA,MAAM,uBAAuB,WAAW;;;mBAI/B;uBAGI;0BAGG;mBAGP;oBAGC;yBAGK;4BAGG;sBAGN;wBAIE;wBAGA;2BAGG;sBAGL;yBAGG;4BAGG;iBAGH;sBAE0B;;;gBAhDnB;;CAkDzB,mBAA4D;AACxD,SAAO;;CAGX,oBAAmC;AAC/B,QAAM,mBAAmB;AAEzB,MAAI,KAAK,eACL;AAGJ,OAAK,eAAe,iBAAiB;GACjC,cAAc,KAAK;GACnB,MAAM;GACN,eAAe;AACX,SAAK,UAAU;;GAEtB,CAAC;;CAGN,uBAAsC;AAClC,OAAK,gBAAgB;AACrB,OAAK,eAAe;AACpB,QAAM,sBAAsB;;CAGhC,kBAA0B,QAAgB,UAAwB;AAC9D,qBAAmB;GACf,cAAc,KAAK;GACnB,MAAM;GACN;GACA;GACA,WAAW,KAAK;GAChB,YAAY,KAAK;GACpB,CAAC;;CAGN,mBAA2B,OAAoB;AAC3C,QAAM,gBAAgB;AACtB,OAAK,kBAAkB,KAAK,eAAe,KAAK,gBAAgB;;CAGpE,sBAA8B,OAAoB;AAC9C,QAAM,gBAAgB;AACtB,OAAK,kBAAkB,KAAK,kBAAkB,KAAK,mBAAmB;;CAG1E,SAAkB;AACd,MAAI,KAAK,QACL,QAAO,IAAI;;sDAE+B,KAAK,mBAAmB;;;AAKtE,MAAI,KAAK,UACL,QAAO,IAAI;;yFAEkE,KAAK,eAAe;;;;;;;;;iCAS5E,KAAK,sBAAsB;;0BAElC,KAAK,gBAAgB;;;;AAMvC,SAAO,IAAI;;+GAE4F,KAAK,kBAAkB;;;;;;;;;6BASzG,KAAK,mBAAmB;;sBAE/B,KAAK,aAAa;;;;;;YAzInC,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,eAAA,WAAA,aAAA,KAAA,EAAA;YAG1C,SAAS,EAAE,WAAW,kBAAkB,CAAC,CAAA,EAAA,eAAA,WAAA,iBAAA,KAAA,EAAA;YAGzC,SAAS,EAAE,WAAW,qBAAqB,CAAC,CAAA,EAAA,eAAA,WAAA,oBAAA,KAAA,EAAA;YAG5C,SAAS,EAAE,WAAW,cAAc,CAAC,CAAA,EAAA,eAAA,WAAA,aAAA,KAAA,EAAA;YAGrC,SAAS,EAAE,WAAW,eAAe,CAAC,CAAA,EAAA,eAAA,WAAA,cAAA,KAAA,EAAA;YAGtC,SAAS,EAAE,WAAW,oBAAoB,CAAC,CAAA,EAAA,eAAA,WAAA,mBAAA,KAAA,EAAA;YAG3C,SAAS,EAAE,WAAW,uBAAuB,CAAC,CAAA,EAAA,eAAA,WAAA,sBAAA,KAAA,EAAA;YAG9C,SAAS,EAAE,WAAW,iBAAiB,CAAC,CAAA,EAAA,eAAA,WAAA,gBAAA,KAAA,EAAA;YAIxC,SAAS;CAAE,MAAM;CAAS,WAAW;CAAoB,CAAC,CAAA,EAAA,eAAA,WAAA,kBAAA,KAAA,EAAA;YAG1D,SAAS,EAAE,WAAW,mBAAmB,CAAC,CAAA,EAAA,eAAA,WAAA,kBAAA,KAAA,EAAA;YAG1C,SAAS,EAAE,WAAW,uBAAuB,CAAC,CAAA,EAAA,eAAA,WAAA,qBAAA,KAAA,EAAA;YAG9C,SAAS,EAAE,WAAW,iBAAiB,CAAC,CAAA,EAAA,eAAA,WAAA,gBAAA,KAAA,EAAA;YAGxC,SAAS,EAAE,WAAW,oBAAoB,CAAC,CAAA,EAAA,eAAA,WAAA,mBAAA,KAAA,EAAA;YAG3C,SAAS,EAAE,WAAW,yBAAyB,CAAC,CAAA,EAAA,eAAA,WAAA,sBAAA,KAAA,EAAA;YAGhD,OAAO,CAAA,EAAA,eAAA,WAAA,WAAA,KAAA,EAAA;6BA/CX,cAAc,mBAAmB,CAAA,EAAA,eAAA"}
1
+ {"version":3,"file":"pk-connect-oauth.js","names":[],"sources":["../../../src/components/connect/pk-connect-oauth.ts"],"sourcesContent":["import { submitCpFormAction, watchCpFormDirty } from '@verbb/plugin-kit-core';\nimport { html, LitElement } from 'lit';\nimport { customElement, property, state } from '../../decorators.js';\n\nimport '../button/pk-button.js';\nimport '../status/pk-status.js';\nimport { pkConnectStyles } from './pk-connect.styles.js';\n\n/**\n * OAuth connect row for Craft CP settings.\n *\n * **Light DOM** — the row mounts inside Craft's `.field.lightswitch-field` wrapper and\n * reuses CP column classes (`.heading` / `.input`) so it lines up with Provider/Enabled\n * rows without shadow-piercing or duplicating Craft field chrome. Action buttons use\n * `pk-button`; submission goes through `Craft.submitForm` (same as `.formsubmit`).\n */\n@customElement('pk-connect-oauth')\nexport class PkConnectOauth extends LitElement {\n static override styles = pkConnectStyles;\n\n @property({ type: Boolean, reflect: true })\n connected = false;\n\n @property({ attribute: 'connect-action' })\n connectAction = '';\n\n @property({ attribute: 'disconnect-action' })\n disconnectAction = '';\n\n @property({ attribute: 'param-name' })\n paramName = '';\n\n @property({ attribute: 'param-value' })\n paramValue = '';\n\n @property({ attribute: 'connect-redirect' })\n connectRedirect = '';\n\n @property({ attribute: 'disconnect-redirect' })\n disconnectRedirect = '';\n\n @property({ attribute: 'form-selector' })\n formSelector = '#main-form';\n\n /** When true, skip dirty-form watching (e.g. Formie read-only OAuth mini-form). */\n @property({ type: Boolean, attribute: 'skip-dirty-watch' })\n skipDirtyWatch = false;\n\n @property({ attribute: 'label-connected' })\n labelConnected = 'Connected';\n\n @property({ attribute: 'label-not-connected' })\n labelNotConnected = 'Not Connected';\n\n @property({ attribute: 'label-connect' })\n labelConnect = 'Connect';\n\n @property({ attribute: 'label-disconnect' })\n labelDisconnect = 'Disconnect';\n\n @property({ attribute: 'label-save-to-connect' })\n labelSaveToConnect = 'Save to connect.';\n\n @state()\n private isDirty = false;\n\n private unwatchDirty: (() => void) | null = null;\n\n override createRenderRoot(): HTMLElement | DocumentFragment {\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.skipDirtyWatch) {\n return;\n }\n\n this.unwatchDirty = watchCpFormDirty({\n formSelector: this.formSelector,\n host: this,\n onDirty: () => {\n this.isDirty = true;\n },\n });\n }\n\n override disconnectedCallback(): void {\n this.unwatchDirty?.();\n this.unwatchDirty = null;\n super.disconnectedCallback();\n }\n\n private submitOAuthAction(action: string, redirect: string): void {\n submitCpFormAction({\n formSelector: this.formSelector,\n host: this,\n action,\n redirect,\n paramName: this.paramName,\n paramValue: this.paramValue,\n });\n }\n\n private handleConnectClick(event: Event): void {\n event.preventDefault();\n this.submitOAuthAction(this.connectAction, this.connectRedirect);\n }\n\n private handleDisconnectClick(event: Event): void {\n event.preventDefault();\n this.submitOAuthAction(this.disconnectAction, this.disconnectRedirect);\n }\n\n override render() {\n if (this.isDirty) {\n return html`\n <div class=\"heading\">\n <span class=\"warning with-icon\">${this.labelSaveToConnect}</span>\n </div>\n `;\n }\n\n if (this.connected) {\n return html`\n <div class=\"heading\">\n <pk-status status=\"on\" class=\"pk-connect__status-icon\"></pk-status>${this.labelConnected}\n </div>\n\n <div class=\"input ltr\">\n <pk-button\n type=\"button\"\n size=\"xs\"\n variant=\"default\"\n class=\"pk-connect__action\"\n @click=${this.handleDisconnectClick}\n >\n ${this.labelDisconnect}\n </pk-button>\n </div>\n `;\n }\n\n return html`\n <div class=\"heading\">\n <pk-status status=\"disabled\" class=\"pk-connect__status-icon\"></pk-status><span class=\"light\">${this.labelNotConnected}</span>\n </div>\n\n <div class=\"input ltr\">\n <pk-button\n type=\"button\"\n size=\"xs\"\n variant=\"default\"\n class=\"pk-connect__action\"\n @click=${this.handleConnectClick}\n >\n ${this.labelConnect}\n </pk-button>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-connect-oauth': PkConnectOauth;\n }\n}\n"],"mappings":";;;;;;;AAiBO,IAAA,iBAAA,MAAM,uBAAuB,WAAW;;;mBAI/B;uBAGI;0BAGG;mBAGP;oBAGC;yBAGK;4BAGG;sBAGN;wBAIE;wBAGA;2BAGG;sBAGL;yBAGG;4BAGG;iBAGH;sBAE0B;;;gBAhDnB;;CAkDzB,mBAA4D;AACxD,SAAO;;CAGX,oBAAmC;AAC/B,QAAM,mBAAmB;AAEzB,MAAI,KAAK,eACL;AAGJ,OAAK,eAAe,iBAAiB;GACjC,cAAc,KAAK;GACnB,MAAM;GACN,eAAe;AACX,SAAK,UAAU;;GAEtB,CAAC;;CAGN,uBAAsC;AAClC,OAAK,gBAAgB;AACrB,OAAK,eAAe;AACpB,QAAM,sBAAsB;;CAGhC,kBAA0B,QAAgB,UAAwB;AAC9D,qBAAmB;GACf,cAAc,KAAK;GACnB,MAAM;GACN;GACA;GACA,WAAW,KAAK;GAChB,YAAY,KAAK;GACpB,CAAC;;CAGN,mBAA2B,OAAoB;AAC3C,QAAM,gBAAgB;AACtB,OAAK,kBAAkB,KAAK,eAAe,KAAK,gBAAgB;;CAGpE,sBAA8B,OAAoB;AAC9C,QAAM,gBAAgB;AACtB,OAAK,kBAAkB,KAAK,kBAAkB,KAAK,mBAAmB;;CAG1E,SAAkB;AACd,MAAI,KAAK,QACL,QAAO,IAAI;;sDAE+B,KAAK,mBAAmB;;;AAKtE,MAAI,KAAK,UACL,QAAO,IAAI;;yFAEkE,KAAK,eAAe;;;;;;;;;iCAS5E,KAAK,sBAAsB;;0BAElC,KAAK,gBAAgB;;;;AAMvC,SAAO,IAAI;;+GAE4F,KAAK,kBAAkB;;;;;;;;;6BASzG,KAAK,mBAAmB;;sBAE/B,KAAK,aAAa;;;;;;YAzInC,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,eAAA,WAAA,aAAA,KAAA,EAAA;YAG1C,SAAS,EAAE,WAAW,kBAAkB,CAAC,CAAA,EAAA,eAAA,WAAA,iBAAA,KAAA,EAAA;YAGzC,SAAS,EAAE,WAAW,qBAAqB,CAAC,CAAA,EAAA,eAAA,WAAA,oBAAA,KAAA,EAAA;YAG5C,SAAS,EAAE,WAAW,cAAc,CAAC,CAAA,EAAA,eAAA,WAAA,aAAA,KAAA,EAAA;YAGrC,SAAS,EAAE,WAAW,eAAe,CAAC,CAAA,EAAA,eAAA,WAAA,cAAA,KAAA,EAAA;YAGtC,SAAS,EAAE,WAAW,oBAAoB,CAAC,CAAA,EAAA,eAAA,WAAA,mBAAA,KAAA,EAAA;YAG3C,SAAS,EAAE,WAAW,uBAAuB,CAAC,CAAA,EAAA,eAAA,WAAA,sBAAA,KAAA,EAAA;YAG9C,SAAS,EAAE,WAAW,iBAAiB,CAAC,CAAA,EAAA,eAAA,WAAA,gBAAA,KAAA,EAAA;YAIxC,SAAS;CAAE,MAAM;CAAS,WAAW;CAAoB,CAAC,CAAA,EAAA,eAAA,WAAA,kBAAA,KAAA,EAAA;YAG1D,SAAS,EAAE,WAAW,mBAAmB,CAAC,CAAA,EAAA,eAAA,WAAA,kBAAA,KAAA,EAAA;YAG1C,SAAS,EAAE,WAAW,uBAAuB,CAAC,CAAA,EAAA,eAAA,WAAA,qBAAA,KAAA,EAAA;YAG9C,SAAS,EAAE,WAAW,iBAAiB,CAAC,CAAA,EAAA,eAAA,WAAA,gBAAA,KAAA,EAAA;YAGxC,SAAS,EAAE,WAAW,oBAAoB,CAAC,CAAA,EAAA,eAAA,WAAA,mBAAA,KAAA,EAAA;YAG3C,SAAS,EAAE,WAAW,yBAAyB,CAAC,CAAA,EAAA,eAAA,WAAA,sBAAA,KAAA,EAAA;YAGhD,OAAO,CAAA,EAAA,eAAA,WAAA,WAAA,KAAA,EAAA;6BA/CX,cAAc,mBAAmB,CAAA,EAAA,eAAA"}
@@ -1,11 +1,10 @@
1
- import { t as __decorate } from "../../chunks/decorate-W02hmVTt.js";
2
- import "../../chunks/pk-button-QpDDlRbG.js";
3
- import "../../chunks/pk-status-7_5dEuw-.js";
4
- import "../../chunks/pk-dialog-Ck1InIBC.js";
1
+ import { i as property, o as state, s as customElement, t as __decorate } from "../../chunks/decorate-R0X811qp.js";
2
+ import "../../chunks/pk-button-BWGDkuzc.js";
3
+ import "../../chunks/pk-status-D1IzTSI2.js";
4
+ import "../../chunks/pk-dialog-BbEfvb0g.js";
5
5
  import "../icon/pk-icon.js";
6
6
  import { t as pkConnectStyles } from "../../chunks/pk-connect.styles-DshgIW2n.js";
7
7
  import { LitElement, html, nothing } from "lit";
8
- import { customElement, property, state } from "lit/decorators.js";
9
8
  import { buildConnectPayload, escapeCpHtml, resolveConnectError, sendCpConnectRequest, serializeCpForm, watchCpFormDirty } from "@verbb/plugin-kit-core";
10
9
  //#region src/components/connect/pk-connect.ts
11
10
  var pkStatusForState = (status) => {
@@ -1 +1 @@
1
- {"version":3,"file":"pk-connect.js","names":[],"sources":["../../../src/components/connect/pk-connect.ts"],"sourcesContent":["import {\n buildConnectPayload,\n escapeCpHtml,\n resolveConnectError,\n sendCpConnectRequest,\n serializeCpForm,\n watchCpFormDirty,\n type ConnectLabels,\n type ConnectStatus,\n type ErrorContent,\n} from '@verbb/plugin-kit-core';\nimport { html, LitElement, nothing } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport '../button/pk-button.js';\nimport '../dialog/pk-dialog.js';\nimport '../icon/pk-icon.js';\nimport '../status/pk-status.js';\nimport type { PkStatusVariant } from '../status/pk-status.js';\nimport { pkConnectStyles } from './pk-connect.styles.js';\n\nconst pkStatusForState = (status: ConnectStatus): PkStatusVariant => {\n if (status === 'connected') {\n return 'on';\n }\n\n if (status === 'error') {\n return 'off';\n }\n\n return 'disabled';\n};\n\n/**\n * Credentials / REST connect row for Craft CP source settings.\n *\n * **Light DOM** — mounts inside Craft `.field.lightswitch-field` and reuses CP\n * `.heading` / `.input` columns (see `pk-connect-oauth` for the same rationale).\n *\n * @fires pk-status-change - `detail.status` is the new {@link ConnectStatus}.\n */\n@customElement('pk-connect')\nexport class PkConnect extends LitElement {\n static override styles = pkConnectStyles;\n\n /** Craft controller action, e.g. `metrix/sources/check-connection`. */\n @property({ reflect: true })\n action = '';\n\n @property({ reflect: true })\n status: ConnectStatus = 'disconnected';\n\n @property({ attribute: 'form-selector' })\n formSelector = '#main-form';\n\n @property({ attribute: 'source-id' })\n sourceId: string | null = null;\n\n /** POST key for the record id (`sourceId` default; Formie uses `id`). */\n @property({ attribute: 'id-param' })\n idParam = 'sourceId';\n\n @property()\n type = '';\n\n @property({ attribute: 'label-connected' })\n labelConnected = 'Connected';\n\n @property({ attribute: 'label-not-connected' })\n labelNotConnected = 'Not Connected';\n\n @property({ attribute: 'label-connecting' })\n labelConnecting = 'Connecting…';\n\n @property({ attribute: 'label-error' })\n labelError = 'Error';\n\n @property({ attribute: 'label-connect' })\n labelConnect = 'Connect';\n\n @property({ attribute: 'label-refresh' })\n labelRefresh = 'Refresh';\n\n @property({ attribute: 'label-save-to-connect' })\n labelSaveToConnect = 'Save to connect.';\n\n @property({ attribute: 'label-error-heading' })\n labelErrorHeading = 'Connection error';\n\n @property({ attribute: 'label-generic-error' })\n labelGenericError = 'Unable to connect to the provider.';\n\n @property({ attribute: 'label-show-details' })\n labelShowDetails = 'Show details';\n\n @property({ attribute: 'label-hide-details' })\n labelHideDetails = 'Hide details';\n\n @property({ attribute: 'label-close' })\n labelClose = 'Close';\n\n @state()\n private isDirty = false;\n\n @state()\n private loading = false;\n\n @state()\n private showDetails = false;\n\n private unwatchDirty: (() => void) | null = null;\n private errorDialog: HTMLElement | null = null;\n\n override createRenderRoot(): HTMLElement | DocumentFragment {\n // Light DOM — Craft field chrome and pk-* children share document tokens.\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.unwatchDirty = watchCpFormDirty({\n formSelector: this.formSelector,\n host: this,\n onDirty: () => {\n this.isDirty = true;\n },\n });\n }\n\n override disconnectedCallback(): void {\n this.unwatchDirty?.();\n this.unwatchDirty = null;\n this.errorDialog?.remove();\n this.errorDialog = null;\n super.disconnectedCallback();\n }\n\n private get labels(): ConnectLabels {\n return {\n connected: this.labelConnected,\n notConnected: this.labelNotConnected,\n connecting: this.labelConnecting,\n error: this.labelError,\n connect: this.labelConnect,\n refresh: this.labelRefresh,\n saveToConnect: this.labelSaveToConnect,\n errorHeading: this.labelErrorHeading,\n genericError: this.labelGenericError,\n showDetails: this.labelShowDetails,\n hideDetails: this.labelHideDetails,\n };\n }\n\n private get fieldHost(): HTMLElement | null {\n return this.closest('.pk-connect-field');\n }\n\n private get statusLabel(): string {\n switch (this.status) {\n case 'connected':\n return this.labelConnected;\n case 'error':\n return this.labelError;\n case 'connecting':\n return this.labelConnecting;\n default:\n return this.labelNotConnected;\n }\n }\n\n private get statusLabelMuted(): boolean {\n return this.status !== 'connected' && this.status !== 'error';\n }\n\n private get actionLabel(): string {\n return this.status === 'connected' ? this.labelRefresh : this.labelConnect;\n }\n\n private setConnectStatus(status: ConnectStatus): void {\n this.status = status;\n this.dispatchEvent(\n new CustomEvent<{ status: ConnectStatus }>('pk-status-change', {\n detail: { status },\n bubbles: true,\n }),\n );\n }\n\n private setModalOpen(open: boolean): void {\n this.fieldHost?.classList.toggle('pk-connect-field--modal-open', open);\n\n if (!open) {\n this.showDetails = false;\n }\n }\n\n private ensureErrorDialog(): HTMLElement {\n if (this.errorDialog) {\n return this.errorDialog;\n }\n\n const dialog = document.createElement('pk-dialog');\n dialog.className = 'pk-connect-dialog';\n dialog.setAttribute('without-header', '');\n dialog.innerHTML = [\n `<pk-button slot=\"trigger\" type=\"button\" variant=\"none\" size=\"none\" icon class=\"pk-connect-dialog__close\" data-dialog=\"close\" aria-label=\"${escapeCpHtml(this.labelClose)}\">`,\n '<pk-icon icon=\"xmark\"></pk-icon>',\n '</pk-button>',\n '<div class=\"pk-connection-error\">',\n '<div class=\"pk-connection-error__stack\">',\n '<div class=\"pk-connection-error__icon\"><pk-icon icon=\"triangle-exclamation\"></pk-icon></div>',\n '<h3 class=\"pk-connection-error__heading\"></h3>',\n '<p class=\"pk-connection-error__message\"></p>',\n '<div class=\"pk-connection-error__details hidden\">',\n '<button type=\"button\" class=\"pk-connection-error__details-toggle\">',\n '<pk-icon icon=\"chevron-right\"></pk-icon>',\n `<span class=\"pk-connection-error__details-label\">${escapeCpHtml(this.labelShowDetails)}</span>`,\n '</button>',\n '<div class=\"pk-connection-error__trace hidden\"></div>',\n '</div>',\n '</div>',\n '</div>',\n ].join('');\n\n document.body.appendChild(dialog);\n\n const detailsToggle = dialog.querySelector<HTMLButtonElement>('.pk-connection-error__details-toggle');\n const traceEl = dialog.querySelector('.pk-connection-error__trace');\n const detailsLabel = dialog.querySelector('.pk-connection-error__details-label');\n const detailsWrap = dialog.querySelector('.pk-connection-error__details');\n const chevron = dialog.querySelector('pk-icon');\n\n detailsToggle?.addEventListener('click', () => {\n this.showDetails = !this.showDetails;\n traceEl?.classList.toggle('hidden', !this.showDetails);\n chevron?.classList.toggle('is-open', this.showDetails);\n\n if (detailsLabel) {\n detailsLabel.textContent = this.showDetails\n ? this.labelHideDetails\n : this.labelShowDetails;\n }\n });\n\n dialog.addEventListener('pk-open-change', (event) => {\n const open = Boolean((event as CustomEvent<{ open?: boolean }>).detail?.open);\n this.setModalOpen(open);\n\n if (!open) {\n traceEl?.classList.add('hidden');\n chevron?.classList.remove('is-open');\n\n if (detailsLabel) {\n detailsLabel.textContent = this.labelShowDetails;\n }\n }\n });\n\n this.errorDialog = dialog;\n return dialog;\n }\n\n private showErrorModal(error: ErrorContent): void {\n const dialog = this.ensureErrorDialog() as HTMLElement & { open: boolean };\n const heading = dialog.querySelector('.pk-connection-error__heading');\n const message = dialog.querySelector('.pk-connection-error__message');\n const detailsWrap = dialog.querySelector('.pk-connection-error__details');\n const traceEl = dialog.querySelector('.pk-connection-error__trace');\n\n if (heading) {\n heading.textContent = error.heading || this.labelErrorHeading;\n }\n\n if (message) {\n message.textContent = error.text || this.labelGenericError;\n }\n\n const trace = error.traceAsString || error.trace || '';\n\n if (trace && detailsWrap && traceEl) {\n detailsWrap.classList.remove('hidden');\n traceEl.innerHTML = trace;\n traceEl.classList.add('hidden');\n } else {\n detailsWrap?.classList.add('hidden');\n }\n\n this.showDetails = false;\n dialog.open = true;\n this.setModalOpen(true);\n }\n\n private async handleConnectClick(event: Event): Promise<void> {\n event.preventDefault();\n\n if (this.isDirty || this.loading || !this.action) {\n return;\n }\n\n this.loading = true;\n this.setConnectStatus('connecting');\n this.setModalOpen(false);\n\n const values = serializeCpForm(this.formSelector, this);\n const payload = buildConnectPayload(values, {\n idParam: this.idParam,\n sourceId: this.sourceId,\n type: this.type || values.type,\n });\n\n try {\n const response = await sendCpConnectRequest(this.action, payload);\n this.loading = false;\n\n if (response?.data?.success) {\n this.setConnectStatus('connected');\n return;\n }\n\n if (response?.data?.message || response?.data?.success === false) {\n this.setConnectStatus('error');\n this.showErrorModal(\n resolveConnectError(response?.data?.message ?? null, this.labels),\n );\n }\n } catch (error) {\n this.loading = false;\n this.setConnectStatus('error');\n this.showErrorModal(resolveConnectError(error, this.labels));\n }\n }\n\n override render() {\n if (this.isDirty) {\n return html`\n <div class=\"heading\">\n <span class=\"warning with-icon\">${this.labelSaveToConnect}</span>\n </div>\n `;\n }\n\n return html`\n <div class=\"heading\">\n <pk-status\n status=${pkStatusForState(this.status)}\n class=\"pk-connect__status-icon\"\n ></pk-status><span class=${this.statusLabelMuted ? 'light' : nothing}>${this.statusLabel}</span>\n </div>\n\n <div class=\"input ltr\">\n <pk-button\n type=\"button\"\n size=\"xs\"\n variant=\"default\"\n class=\"pk-connect__action\"\n spinner-size=\"xs\"\n ?loading=${this.loading}\n ?disabled=${this.loading || this.isDirty}\n @click=${this.handleConnectClick}\n >\n ${this.actionLabel}\n </pk-button>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-connect': PkConnect;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"pk-connect.js","names":[],"sources":["../../../src/components/connect/pk-connect.ts"],"sourcesContent":["import {\n buildConnectPayload,\n escapeCpHtml,\n resolveConnectError,\n sendCpConnectRequest,\n serializeCpForm,\n watchCpFormDirty,\n type ConnectLabels,\n type ConnectStatus,\n type ErrorContent,\n} from '@verbb/plugin-kit-core';\nimport { html, LitElement, nothing } from 'lit';\nimport { customElement, property, state } from '../../decorators.js';\n\nimport '../button/pk-button.js';\nimport '../dialog/pk-dialog.js';\nimport '../icon/pk-icon.js';\nimport '../status/pk-status.js';\nimport type { PkStatusVariant } from '../status/pk-status.js';\nimport { pkConnectStyles } from './pk-connect.styles.js';\n\nconst pkStatusForState = (status: ConnectStatus): PkStatusVariant => {\n if (status === 'connected') {\n return 'on';\n }\n\n if (status === 'error') {\n return 'off';\n }\n\n return 'disabled';\n};\n\n/**\n * Credentials / REST connect row for Craft CP source settings.\n *\n * **Light DOM** — mounts inside Craft `.field.lightswitch-field` and reuses CP\n * `.heading` / `.input` columns (see `pk-connect-oauth` for the same rationale).\n *\n * @fires pk-status-change - `detail.status` is the new {@link ConnectStatus}.\n */\n@customElement('pk-connect')\nexport class PkConnect extends LitElement {\n static override styles = pkConnectStyles;\n\n /** Craft controller action, e.g. `metrix/sources/check-connection`. */\n @property({ reflect: true })\n action = '';\n\n @property({ reflect: true })\n status: ConnectStatus = 'disconnected';\n\n @property({ attribute: 'form-selector' })\n formSelector = '#main-form';\n\n @property({ attribute: 'source-id' })\n sourceId: string | null = null;\n\n /** POST key for the record id (`sourceId` default; Formie uses `id`). */\n @property({ attribute: 'id-param' })\n idParam = 'sourceId';\n\n @property()\n type = '';\n\n @property({ attribute: 'label-connected' })\n labelConnected = 'Connected';\n\n @property({ attribute: 'label-not-connected' })\n labelNotConnected = 'Not Connected';\n\n @property({ attribute: 'label-connecting' })\n labelConnecting = 'Connecting…';\n\n @property({ attribute: 'label-error' })\n labelError = 'Error';\n\n @property({ attribute: 'label-connect' })\n labelConnect = 'Connect';\n\n @property({ attribute: 'label-refresh' })\n labelRefresh = 'Refresh';\n\n @property({ attribute: 'label-save-to-connect' })\n labelSaveToConnect = 'Save to connect.';\n\n @property({ attribute: 'label-error-heading' })\n labelErrorHeading = 'Connection error';\n\n @property({ attribute: 'label-generic-error' })\n labelGenericError = 'Unable to connect to the provider.';\n\n @property({ attribute: 'label-show-details' })\n labelShowDetails = 'Show details';\n\n @property({ attribute: 'label-hide-details' })\n labelHideDetails = 'Hide details';\n\n @property({ attribute: 'label-close' })\n labelClose = 'Close';\n\n @state()\n private isDirty = false;\n\n @state()\n private loading = false;\n\n @state()\n private showDetails = false;\n\n private unwatchDirty: (() => void) | null = null;\n private errorDialog: HTMLElement | null = null;\n\n override createRenderRoot(): HTMLElement | DocumentFragment {\n // Light DOM — Craft field chrome and pk-* children share document tokens.\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.unwatchDirty = watchCpFormDirty({\n formSelector: this.formSelector,\n host: this,\n onDirty: () => {\n this.isDirty = true;\n },\n });\n }\n\n override disconnectedCallback(): void {\n this.unwatchDirty?.();\n this.unwatchDirty = null;\n this.errorDialog?.remove();\n this.errorDialog = null;\n super.disconnectedCallback();\n }\n\n private get labels(): ConnectLabels {\n return {\n connected: this.labelConnected,\n notConnected: this.labelNotConnected,\n connecting: this.labelConnecting,\n error: this.labelError,\n connect: this.labelConnect,\n refresh: this.labelRefresh,\n saveToConnect: this.labelSaveToConnect,\n errorHeading: this.labelErrorHeading,\n genericError: this.labelGenericError,\n showDetails: this.labelShowDetails,\n hideDetails: this.labelHideDetails,\n };\n }\n\n private get fieldHost(): HTMLElement | null {\n return this.closest('.pk-connect-field');\n }\n\n private get statusLabel(): string {\n switch (this.status) {\n case 'connected':\n return this.labelConnected;\n case 'error':\n return this.labelError;\n case 'connecting':\n return this.labelConnecting;\n default:\n return this.labelNotConnected;\n }\n }\n\n private get statusLabelMuted(): boolean {\n return this.status !== 'connected' && this.status !== 'error';\n }\n\n private get actionLabel(): string {\n return this.status === 'connected' ? this.labelRefresh : this.labelConnect;\n }\n\n private setConnectStatus(status: ConnectStatus): void {\n this.status = status;\n this.dispatchEvent(\n new CustomEvent<{ status: ConnectStatus }>('pk-status-change', {\n detail: { status },\n bubbles: true,\n }),\n );\n }\n\n private setModalOpen(open: boolean): void {\n this.fieldHost?.classList.toggle('pk-connect-field--modal-open', open);\n\n if (!open) {\n this.showDetails = false;\n }\n }\n\n private ensureErrorDialog(): HTMLElement {\n if (this.errorDialog) {\n return this.errorDialog;\n }\n\n const dialog = document.createElement('pk-dialog');\n dialog.className = 'pk-connect-dialog';\n dialog.setAttribute('without-header', '');\n dialog.innerHTML = [\n `<pk-button slot=\"trigger\" type=\"button\" variant=\"none\" size=\"none\" icon class=\"pk-connect-dialog__close\" data-dialog=\"close\" aria-label=\"${escapeCpHtml(this.labelClose)}\">`,\n '<pk-icon icon=\"xmark\"></pk-icon>',\n '</pk-button>',\n '<div class=\"pk-connection-error\">',\n '<div class=\"pk-connection-error__stack\">',\n '<div class=\"pk-connection-error__icon\"><pk-icon icon=\"triangle-exclamation\"></pk-icon></div>',\n '<h3 class=\"pk-connection-error__heading\"></h3>',\n '<p class=\"pk-connection-error__message\"></p>',\n '<div class=\"pk-connection-error__details hidden\">',\n '<button type=\"button\" class=\"pk-connection-error__details-toggle\">',\n '<pk-icon icon=\"chevron-right\"></pk-icon>',\n `<span class=\"pk-connection-error__details-label\">${escapeCpHtml(this.labelShowDetails)}</span>`,\n '</button>',\n '<div class=\"pk-connection-error__trace hidden\"></div>',\n '</div>',\n '</div>',\n '</div>',\n ].join('');\n\n document.body.appendChild(dialog);\n\n const detailsToggle = dialog.querySelector<HTMLButtonElement>('.pk-connection-error__details-toggle');\n const traceEl = dialog.querySelector('.pk-connection-error__trace');\n const detailsLabel = dialog.querySelector('.pk-connection-error__details-label');\n const detailsWrap = dialog.querySelector('.pk-connection-error__details');\n const chevron = dialog.querySelector('pk-icon');\n\n detailsToggle?.addEventListener('click', () => {\n this.showDetails = !this.showDetails;\n traceEl?.classList.toggle('hidden', !this.showDetails);\n chevron?.classList.toggle('is-open', this.showDetails);\n\n if (detailsLabel) {\n detailsLabel.textContent = this.showDetails\n ? this.labelHideDetails\n : this.labelShowDetails;\n }\n });\n\n dialog.addEventListener('pk-open-change', (event) => {\n const open = Boolean((event as CustomEvent<{ open?: boolean }>).detail?.open);\n this.setModalOpen(open);\n\n if (!open) {\n traceEl?.classList.add('hidden');\n chevron?.classList.remove('is-open');\n\n if (detailsLabel) {\n detailsLabel.textContent = this.labelShowDetails;\n }\n }\n });\n\n this.errorDialog = dialog;\n return dialog;\n }\n\n private showErrorModal(error: ErrorContent): void {\n const dialog = this.ensureErrorDialog() as HTMLElement & { open: boolean };\n const heading = dialog.querySelector('.pk-connection-error__heading');\n const message = dialog.querySelector('.pk-connection-error__message');\n const detailsWrap = dialog.querySelector('.pk-connection-error__details');\n const traceEl = dialog.querySelector('.pk-connection-error__trace');\n\n if (heading) {\n heading.textContent = error.heading || this.labelErrorHeading;\n }\n\n if (message) {\n message.textContent = error.text || this.labelGenericError;\n }\n\n const trace = error.traceAsString || error.trace || '';\n\n if (trace && detailsWrap && traceEl) {\n detailsWrap.classList.remove('hidden');\n traceEl.innerHTML = trace;\n traceEl.classList.add('hidden');\n } else {\n detailsWrap?.classList.add('hidden');\n }\n\n this.showDetails = false;\n dialog.open = true;\n this.setModalOpen(true);\n }\n\n private async handleConnectClick(event: Event): Promise<void> {\n event.preventDefault();\n\n if (this.isDirty || this.loading || !this.action) {\n return;\n }\n\n this.loading = true;\n this.setConnectStatus('connecting');\n this.setModalOpen(false);\n\n const values = serializeCpForm(this.formSelector, this);\n const payload = buildConnectPayload(values, {\n idParam: this.idParam,\n sourceId: this.sourceId,\n type: this.type || values.type,\n });\n\n try {\n const response = await sendCpConnectRequest(this.action, payload);\n this.loading = false;\n\n if (response?.data?.success) {\n this.setConnectStatus('connected');\n return;\n }\n\n if (response?.data?.message || response?.data?.success === false) {\n this.setConnectStatus('error');\n this.showErrorModal(\n resolveConnectError(response?.data?.message ?? null, this.labels),\n );\n }\n } catch (error) {\n this.loading = false;\n this.setConnectStatus('error');\n this.showErrorModal(resolveConnectError(error, this.labels));\n }\n }\n\n override render() {\n if (this.isDirty) {\n return html`\n <div class=\"heading\">\n <span class=\"warning with-icon\">${this.labelSaveToConnect}</span>\n </div>\n `;\n }\n\n return html`\n <div class=\"heading\">\n <pk-status\n status=${pkStatusForState(this.status)}\n class=\"pk-connect__status-icon\"\n ></pk-status><span class=${this.statusLabelMuted ? 'light' : nothing}>${this.statusLabel}</span>\n </div>\n\n <div class=\"input ltr\">\n <pk-button\n type=\"button\"\n size=\"xs\"\n variant=\"default\"\n class=\"pk-connect__action\"\n spinner-size=\"xs\"\n ?loading=${this.loading}\n ?disabled=${this.loading || this.isDirty}\n @click=${this.handleConnectClick}\n >\n ${this.actionLabel}\n </pk-button>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-connect': PkConnect;\n }\n}\n"],"mappings":";;;;;;;;;AAqBA,IAAM,oBAAoB,WAA2C;AACjE,KAAI,WAAW,YACX,QAAO;AAGX,KAAI,WAAW,QACX,QAAO;AAGX,QAAO;;AAYJ,IAAA,YAAA,MAAM,kBAAkB,WAAW;;;gBAK7B;gBAGe;sBAGT;kBAGW;iBAIhB;cAGH;wBAGU;2BAGG;yBAGF;oBAGL;sBAGE;sBAGA;4BAGM;2BAGD;2BAGA;0BAGD;0BAGA;oBAGN;iBAGK;iBAGA;qBAGI;sBAEsB;qBACF;;;gBApEjB;;CAsEzB,mBAA4D;AAExD,SAAO;;CAGX,oBAAmC;AAC/B,QAAM,mBAAmB;AACzB,OAAK,eAAe,iBAAiB;GACjC,cAAc,KAAK;GACnB,MAAM;GACN,eAAe;AACX,SAAK,UAAU;;GAEtB,CAAC;;CAGN,uBAAsC;AAClC,OAAK,gBAAgB;AACrB,OAAK,eAAe;AACpB,OAAK,aAAa,QAAQ;AAC1B,OAAK,cAAc;AACnB,QAAM,sBAAsB;;CAGhC,IAAY,SAAwB;AAChC,SAAO;GACH,WAAW,KAAK;GAChB,cAAc,KAAK;GACnB,YAAY,KAAK;GACjB,OAAO,KAAK;GACZ,SAAS,KAAK;GACd,SAAS,KAAK;GACd,eAAe,KAAK;GACpB,cAAc,KAAK;GACnB,cAAc,KAAK;GACnB,aAAa,KAAK;GAClB,aAAa,KAAK;GACrB;;CAGL,IAAY,YAAgC;AACxC,SAAO,KAAK,QAAQ,oBAAoB;;CAG5C,IAAY,cAAsB;AAC9B,UAAQ,KAAK,QAAb;GACI,KAAK,YACD,QAAO,KAAK;GAChB,KAAK,QACD,QAAO,KAAK;GAChB,KAAK,aACD,QAAO,KAAK;GAChB,QACI,QAAO,KAAK;;;CAIxB,IAAY,mBAA4B;AACpC,SAAO,KAAK,WAAW,eAAe,KAAK,WAAW;;CAG1D,IAAY,cAAsB;AAC9B,SAAO,KAAK,WAAW,cAAc,KAAK,eAAe,KAAK;;CAGlE,iBAAyB,QAA6B;AAClD,OAAK,SAAS;AACd,OAAK,cACD,IAAI,YAAuC,oBAAoB;GAC3D,QAAQ,EAAE,QAAQ;GAClB,SAAS;GACZ,CAAC,CACL;;CAGL,aAAqB,MAAqB;AACtC,OAAK,WAAW,UAAU,OAAO,gCAAgC,KAAK;AAEtE,MAAI,CAAC,KACD,MAAK,cAAc;;CAI3B,oBAAyC;AACrC,MAAI,KAAK,YACL,QAAO,KAAK;EAGhB,MAAM,SAAS,SAAS,cAAc,YAAY;AAClD,SAAO,YAAY;AACnB,SAAO,aAAa,kBAAkB,GAAG;AACzC,SAAO,YAAY;GACf,4IAA4I,aAAa,KAAK,WAAW,CAAC;GAC1K;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,oDAAoD,aAAa,KAAK,iBAAiB,CAAC;GACxF;GACA;GACA;GACA;GACA;GACH,CAAC,KAAK,GAAG;AAEV,WAAS,KAAK,YAAY,OAAO;EAEjC,MAAM,gBAAgB,OAAO,cAAiC,uCAAuC;EACrG,MAAM,UAAU,OAAO,cAAc,8BAA8B;EACnE,MAAM,eAAe,OAAO,cAAc,sCAAsC;AAC5D,SAAO,cAAc,gCAAgC;EACzE,MAAM,UAAU,OAAO,cAAc,UAAU;AAE/C,iBAAe,iBAAiB,eAAe;AAC3C,QAAK,cAAc,CAAC,KAAK;AACzB,YAAS,UAAU,OAAO,UAAU,CAAC,KAAK,YAAY;AACtD,YAAS,UAAU,OAAO,WAAW,KAAK,YAAY;AAEtD,OAAI,aACA,cAAa,cAAc,KAAK,cAC1B,KAAK,mBACL,KAAK;IAEjB;AAEF,SAAO,iBAAiB,mBAAmB,UAAU;GACjD,MAAM,OAAO,QAAS,MAA0C,QAAQ,KAAK;AAC7E,QAAK,aAAa,KAAK;AAEvB,OAAI,CAAC,MAAM;AACP,aAAS,UAAU,IAAI,SAAS;AAChC,aAAS,UAAU,OAAO,UAAU;AAEpC,QAAI,aACA,cAAa,cAAc,KAAK;;IAG1C;AAEF,OAAK,cAAc;AACnB,SAAO;;CAGX,eAAuB,OAA2B;EAC9C,MAAM,SAAS,KAAK,mBAAmB;EACvC,MAAM,UAAU,OAAO,cAAc,gCAAgC;EACrE,MAAM,UAAU,OAAO,cAAc,gCAAgC;EACrE,MAAM,cAAc,OAAO,cAAc,gCAAgC;EACzE,MAAM,UAAU,OAAO,cAAc,8BAA8B;AAEnE,MAAI,QACA,SAAQ,cAAc,MAAM,WAAW,KAAK;AAGhD,MAAI,QACA,SAAQ,cAAc,MAAM,QAAQ,KAAK;EAG7C,MAAM,QAAQ,MAAM,iBAAiB,MAAM,SAAS;AAEpD,MAAI,SAAS,eAAe,SAAS;AACjC,eAAY,UAAU,OAAO,SAAS;AACtC,WAAQ,YAAY;AACpB,WAAQ,UAAU,IAAI,SAAS;QAE/B,cAAa,UAAU,IAAI,SAAS;AAGxC,OAAK,cAAc;AACnB,SAAO,OAAO;AACd,OAAK,aAAa,KAAK;;CAG3B,MAAc,mBAAmB,OAA6B;AAC1D,QAAM,gBAAgB;AAEtB,MAAI,KAAK,WAAW,KAAK,WAAW,CAAC,KAAK,OACtC;AAGJ,OAAK,UAAU;AACf,OAAK,iBAAiB,aAAa;AACnC,OAAK,aAAa,MAAM;EAExB,MAAM,SAAS,gBAAgB,KAAK,cAAc,KAAK;EACvD,MAAM,UAAU,oBAAoB,QAAQ;GACxC,SAAS,KAAK;GACd,UAAU,KAAK;GACf,MAAM,KAAK,QAAQ,OAAO;GAC7B,CAAC;AAEF,MAAI;GACA,MAAM,WAAW,MAAM,qBAAqB,KAAK,QAAQ,QAAQ;AACjE,QAAK,UAAU;AAEf,OAAI,UAAU,MAAM,SAAS;AACzB,SAAK,iBAAiB,YAAY;AAClC;;AAGJ,OAAI,UAAU,MAAM,WAAW,UAAU,MAAM,YAAY,OAAO;AAC9D,SAAK,iBAAiB,QAAQ;AAC9B,SAAK,eACD,oBAAoB,UAAU,MAAM,WAAW,MAAM,KAAK,OAAO,CACpE;;WAEA,OAAO;AACZ,QAAK,UAAU;AACf,QAAK,iBAAiB,QAAQ;AAC9B,QAAK,eAAe,oBAAoB,OAAO,KAAK,OAAO,CAAC;;;CAIpE,SAAkB;AACd,MAAI,KAAK,QACL,QAAO,IAAI;;sDAE+B,KAAK,mBAAmB;;;AAKtE,SAAO,IAAI;;;6BAGU,iBAAiB,KAAK,OAAO,CAAC;;2CAEhB,KAAK,mBAAmB,UAAU,QAAQ,GAAG,KAAK,YAAY;;;;;;;;;;+BAU1E,KAAK,QAAQ;gCACZ,KAAK,WAAW,KAAK,QAAQ;6BAChC,KAAK,mBAAmB;;sBAE/B,KAAK,YAAY;;;;;;YA1TlC,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,UAAA,WAAA,UAAA,KAAA,EAAA;YAG3B,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,UAAA,WAAA,UAAA,KAAA,EAAA;YAG3B,SAAS,EAAE,WAAW,iBAAiB,CAAC,CAAA,EAAA,UAAA,WAAA,gBAAA,KAAA,EAAA;YAGxC,SAAS,EAAE,WAAW,aAAa,CAAC,CAAA,EAAA,UAAA,WAAA,YAAA,KAAA,EAAA;YAIpC,SAAS,EAAE,WAAW,YAAY,CAAC,CAAA,EAAA,UAAA,WAAA,WAAA,KAAA,EAAA;YAGnC,UAAU,CAAA,EAAA,UAAA,WAAA,QAAA,KAAA,EAAA;YAGV,SAAS,EAAE,WAAW,mBAAmB,CAAC,CAAA,EAAA,UAAA,WAAA,kBAAA,KAAA,EAAA;YAG1C,SAAS,EAAE,WAAW,uBAAuB,CAAC,CAAA,EAAA,UAAA,WAAA,qBAAA,KAAA,EAAA;YAG9C,SAAS,EAAE,WAAW,oBAAoB,CAAC,CAAA,EAAA,UAAA,WAAA,mBAAA,KAAA,EAAA;YAG3C,SAAS,EAAE,WAAW,eAAe,CAAC,CAAA,EAAA,UAAA,WAAA,cAAA,KAAA,EAAA;YAGtC,SAAS,EAAE,WAAW,iBAAiB,CAAC,CAAA,EAAA,UAAA,WAAA,gBAAA,KAAA,EAAA;YAGxC,SAAS,EAAE,WAAW,iBAAiB,CAAC,CAAA,EAAA,UAAA,WAAA,gBAAA,KAAA,EAAA;YAGxC,SAAS,EAAE,WAAW,yBAAyB,CAAC,CAAA,EAAA,UAAA,WAAA,sBAAA,KAAA,EAAA;YAGhD,SAAS,EAAE,WAAW,uBAAuB,CAAC,CAAA,EAAA,UAAA,WAAA,qBAAA,KAAA,EAAA;YAG9C,SAAS,EAAE,WAAW,uBAAuB,CAAC,CAAA,EAAA,UAAA,WAAA,qBAAA,KAAA,EAAA;YAG9C,SAAS,EAAE,WAAW,sBAAsB,CAAC,CAAA,EAAA,UAAA,WAAA,oBAAA,KAAA,EAAA;YAG7C,SAAS,EAAE,WAAW,sBAAsB,CAAC,CAAA,EAAA,UAAA,WAAA,oBAAA,KAAA,EAAA;YAG7C,SAAS,EAAE,WAAW,eAAe,CAAC,CAAA,EAAA,UAAA,WAAA,cAAA,KAAA,EAAA;YAGtC,OAAO,CAAA,EAAA,UAAA,WAAA,WAAA,KAAA,EAAA;YAGP,OAAO,CAAA,EAAA,UAAA,WAAA,WAAA,KAAA,EAAA;YAGP,OAAO,CAAA,EAAA,UAAA,WAAA,eAAA,KAAA,EAAA;wBAlEX,cAAc,aAAa,CAAA,EAAA,UAAA"}
@@ -1,2 +1,2 @@
1
- import { t as PkCopyButton } from "../../chunks/pk-copy-button-CfeVuQ0r.js";
1
+ import { t as PkCopyButton } from "../../chunks/pk-copy-button-asOLQkqk.js";
2
2
  export { PkCopyButton };
@@ -1,2 +1,2 @@
1
- import { t as PkCopyButton } from "../chunks/pk-copy-button-CfeVuQ0r.js";
1
+ import { t as PkCopyButton } from "../chunks/pk-copy-button-asOLQkqk.js";
2
2
  export { PkCopyButton };
@@ -1,2 +1,2 @@
1
- import { t as PkDatePicker } from "../../chunks/pk-date-picker-BM4HMb4-.js";
1
+ import { t as PkDatePicker } from "../../chunks/pk-date-picker-Bri3kZ6x.js";
2
2
  export { PkDatePicker };
@@ -1,2 +1,2 @@
1
- import { t as PkDatePicker } from "../chunks/pk-date-picker-BM4HMb4-.js";
1
+ import { t as PkDatePicker } from "../chunks/pk-date-picker-Bri3kZ6x.js";
2
2
  export { PkDatePicker };
@@ -1,2 +1,2 @@
1
- import { t as PkDialog } from "../../chunks/pk-dialog-Ck1InIBC.js";
1
+ import { t as PkDialog } from "../../chunks/pk-dialog-BbEfvb0g.js";
2
2
  export { PkDialog };
@@ -1,2 +1,2 @@
1
- import { t as PkDialog } from "../chunks/pk-dialog-Ck1InIBC.js";
1
+ import { t as PkDialog } from "../chunks/pk-dialog-BbEfvb0g.js";
2
2
  export { PkDialog };
@@ -1,2 +1,2 @@
1
- import { t as PkDropdownItem } from "../../chunks/pk-dropdown-item-HcIUlFH1.js";
1
+ import { t as PkDropdownItem } from "../../chunks/pk-dropdown-item-BoZTGWMU.js";
2
2
  export { PkDropdownItem };
@@ -1,2 +1,2 @@
1
- import { t as PkDropdownLabel } from "../../chunks/pk-dropdown-label-DLgrmYND.js";
1
+ import { t as PkDropdownLabel } from "../../chunks/pk-dropdown-label-Da28F917.js";
2
2
  export { PkDropdownLabel };
@@ -1,2 +1,2 @@
1
- import { t as PkDropdownMenu } from "../../chunks/pk-dropdown-menu-r5wgkvmZ.js";
1
+ import { t as PkDropdownMenu } from "../../chunks/pk-dropdown-menu-CfZc7dIz.js";
2
2
  export { PkDropdownMenu };
@@ -1,6 +1,5 @@
1
- import { n as PkElement, t as __decorate } from "../../chunks/decorate-W02hmVTt.js";
1
+ import { n as PkElement, s as customElement, t as __decorate } from "../../chunks/decorate-R0X811qp.js";
2
2
  import { css, html } from "lit";
3
- import { customElement } from "lit/decorators.js";
4
3
  //#region src/components/dropdown-menu/pk-dropdown-separator.ts
5
4
  var PkDropdownSeparator = class PkDropdownSeparator extends PkElement {
6
5
  static {
@@ -1 +1 @@
1
- {"version":3,"file":"pk-dropdown-separator.js","names":[],"sources":["../../../src/components/dropdown-menu/pk-dropdown-separator.ts"],"sourcesContent":["import { css, html } from 'lit';\nimport { customElement } from 'lit/decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\n\n/** Visual separator between dropdown items. */\n@customElement('pk-dropdown-separator')\nexport class PkDropdownSeparator extends PkElement {\n static override styles = css`\n @layer pk-component {\n :host {\n display: block;\n }\n\n hr {\n display: block;\n height: 1px;\n margin: 4px 0;\n border: 0;\n padding: 0;\n background: var(--pk-color-slate-200);\n }\n }\n `;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'separator');\n }\n\n override render() {\n return html`<hr part=\"base\" />`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-dropdown-separator': PkDropdownSeparator;\n }\n}\n"],"mappings":";;;;AAOO,IAAA,sBAAA,MAAM,4BAA4B,UAAU;;gBACtB,GAAG;;;;;;;;;;;;;;;;;CAiB5B,oBAAmC;AAC/B,QAAM,mBAAmB;AACzB,OAAK,aAAa,QAAQ,YAAY;;CAG1C,SAAkB;AACd,SAAO,IAAI;;;kCAzBlB,cAAc,wBAAwB,CAAA,EAAA,oBAAA"}
1
+ {"version":3,"file":"pk-dropdown-separator.js","names":[],"sources":["../../../src/components/dropdown-menu/pk-dropdown-separator.ts"],"sourcesContent":["import { css, html } from 'lit';\nimport { customElement } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\n\n/** Visual separator between dropdown items. */\n@customElement('pk-dropdown-separator')\nexport class PkDropdownSeparator extends PkElement {\n static override styles = css`\n @layer pk-component {\n :host {\n display: block;\n }\n\n hr {\n display: block;\n height: 1px;\n margin: 4px 0;\n border: 0;\n padding: 0;\n background: var(--pk-color-slate-200);\n }\n }\n `;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'separator');\n }\n\n override render() {\n return html`<hr part=\"base\" />`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-dropdown-separator': PkDropdownSeparator;\n }\n}\n"],"mappings":";;;AAOO,IAAA,sBAAA,MAAM,4BAA4B,UAAU;;gBACtB,GAAG;;;;;;;;;;;;;;;;;CAiB5B,oBAAmC;AAC/B,QAAM,mBAAmB;AACzB,OAAK,aAAa,QAAQ,YAAY;;CAG1C,SAAkB;AACd,SAAO,IAAI;;;kCAzBlB,cAAc,wBAAwB,CAAA,EAAA,oBAAA"}
@@ -1,5 +1,5 @@
1
- import { t as PkDropdownItem } from "../chunks/pk-dropdown-item-HcIUlFH1.js";
2
- import { t as PkDropdownMenu } from "../chunks/pk-dropdown-menu-r5wgkvmZ.js";
3
- import { t as PkDropdownLabel } from "../chunks/pk-dropdown-label-DLgrmYND.js";
1
+ import { t as PkDropdownItem } from "../chunks/pk-dropdown-item-BoZTGWMU.js";
2
+ import { t as PkDropdownMenu } from "../chunks/pk-dropdown-menu-CfZc7dIz.js";
3
+ import { t as PkDropdownLabel } from "../chunks/pk-dropdown-label-Da28F917.js";
4
4
  import { PkDropdownSeparator } from "./dropdown-menu/pk-dropdown-separator.js";
5
5
  export { PkDropdownItem, PkDropdownLabel, PkDropdownMenu, PkDropdownSeparator };
@@ -1,2 +1,2 @@
1
- import { a as nextRowId, i as isCustomColumn, r as getCustomCellSlotName, t as PkEditableTable } from "../../chunks/pk-editable-table-DMHGqZlQ.js";
1
+ import { a as nextRowId, i as isCustomColumn, r as getCustomCellSlotName, t as PkEditableTable } from "../../chunks/pk-editable-table-Cn4WXqAo.js";
2
2
  export { PkEditableTable, getCustomCellSlotName, isCustomColumn, nextRowId };
@@ -1,2 +1,2 @@
1
- import { a as nextRowId, i as isCustomColumn, n as BUILTIN_COLUMN_TYPES, r as getCustomCellSlotName, t as PkEditableTable } from "../chunks/pk-editable-table-DMHGqZlQ.js";
1
+ import { a as nextRowId, i as isCustomColumn, n as BUILTIN_COLUMN_TYPES, r as getCustomCellSlotName, t as PkEditableTable } from "../chunks/pk-editable-table-Cn4WXqAo.js";
2
2
  export { BUILTIN_COLUMN_TYPES, PkEditableTable, getCustomCellSlotName, isCustomColumn, nextRowId };
@@ -1,2 +1,2 @@
1
- import { t as PkField } from "../../chunks/pk-field-JFP24j4o.js";
1
+ import { t as PkField } from "../../chunks/pk-field-NL4KdFZC.js";
2
2
  export { PkField };
@@ -1,2 +1,2 @@
1
- import { t as PkField } from "../chunks/pk-field-JFP24j4o.js";
1
+ import { t as PkField } from "../chunks/pk-field-NL4KdFZC.js";
2
2
  export { PkField };
@@ -1,6 +1,5 @@
1
- import { n as PkElement, t as __decorate } from "../../chunks/decorate-W02hmVTt.js";
1
+ import { i as property, n as PkElement, s as customElement, t as __decorate } from "../../chunks/decorate-R0X811qp.js";
2
2
  import { css, html, nothing } from "lit";
3
- import { customElement, property } from "lit/decorators.js";
4
3
  import { unsafeSVG } from "lit/directives/unsafe-svg.js";
5
4
  import { getIcon, iconToSvg, subscribeIconRegistry } from "@verbb/plugin-kit-icons";
6
5
  //#region src/components/icon/pk-icon.ts
@@ -1 +1 @@
1
- {"version":3,"file":"pk-icon.js","names":[],"sources":["../../../src/components/icon/pk-icon.ts"],"sourcesContent":["import { html, css, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { getIcon, iconToSvg, subscribeIconRegistry } from '@verbb/plugin-kit-icons';\n\nimport { PkElement } from '../../base/pk-element.js';\n\n/**\n * Standalone icon element backed by the Plugin Kit raw-SVG icon set.\n *\n * The name registry starts empty — consumers must {@link registerIcons}\n * (or import `@verbb/plugin-kit-icons/all.js`) before `<pk-icon icon=\"…\">` resolves.\n * Registrations are page-global across bundled Plugin Kit copies (Craft multi-plugin CP).\n *\n * Sizing follows `font-size` (defaults to `1em`), colour follows `currentColor`,\n * so consumers style it like text:\n *\n * ```html\n * <pk-icon icon=\"chevron-down\"></pk-icon>\n * <pk-icon icon=\"pen\" label=\"Edit\" style=\"font-size: 20px; color: #6b7280\"></pk-icon>\n * ```\n *\n * Prefer the `icon` attribute over `name`: some server-side form renderers\n * (e.g. Craft CMS `Html::namespaceInputs()`) rewrite every `name=\"…\"` attribute\n * in a form to namespace it, which would corrupt the icon lookup. `icon` is left\n * untouched. `name` is still supported for non-form contexts / back-compat.\n */\n@customElement('pk-icon')\nexport class PkIcon extends PkElement {\n static override styles = css`\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n /* Square em box + slight baseline nudge for inline text. Flex\n * parents (e.g. button slots) should zero vertical-align. */\n width: 1em;\n height: 1em;\n line-height: 1;\n vertical-align: -0.125em;\n }\n\n svg {\n display: block;\n width: 100%;\n height: 100%;\n fill: currentColor;\n /* Allow intentional path overhang past the icon canvas. */\n overflow: visible;\n }\n `;\n\n /**\n * Icon name (kebab-case), e.g. `chevron-down`, `gear`, `xmark`.\n * Namespacing-safe alternative to `name` — use this inside CMS form markup.\n */\n @property()\n icon = '';\n\n /**\n * Icon name (kebab-case). Back-compat / non-form alias for `icon`.\n * Avoid in server-namespaced forms, where `name` attributes get rewritten.\n */\n @property()\n name = '';\n\n /**\n * Accessible label. When set the icon is exposed as an image with a title;\n * otherwise it is hidden from assistive technology.\n */\n @property()\n label?: string;\n\n private unsubscribeRegistry: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n // Later plugins may register glyphs after this host upgraded — re-resolve.\n this.unsubscribeRegistry = subscribeIconRegistry(() => {\n this.requestUpdate();\n });\n }\n\n override disconnectedCallback(): void {\n this.unsubscribeRegistry?.();\n this.unsubscribeRegistry = null;\n super.disconnectedCallback();\n }\n\n override render() {\n const icon = getIcon(this.icon || this.name);\n\n if (!icon) {\n return nothing;\n }\n\n return html`${unsafeSVG(iconToSvg(icon, { title: this.label }))}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-icon': PkIcon;\n }\n}\n"],"mappings":";;;;;;AA4BO,IAAA,SAAA,MAAM,eAAe,UAAU;;;cA8B3B;cAOA;6BAS4C;;;gBA7C1B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CA+C5B,oBAAmC;AAC/B,QAAM,mBAAmB;AAGzB,OAAK,sBAAsB,4BAA4B;AACnD,QAAK,eAAe;IACtB;;CAGN,uBAAsC;AAClC,OAAK,uBAAuB;AAC5B,OAAK,sBAAsB;AAC3B,QAAM,sBAAsB;;CAGhC,SAAkB;EACd,MAAM,OAAO,QAAQ,KAAK,QAAQ,KAAK,KAAK;AAE5C,MAAI,CAAC,KACD,QAAO;AAGX,SAAO,IAAI,GAAG,UAAU,UAAU,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC;;;YAzClE,UAAU,CAAA,EAAA,OAAA,WAAA,QAAA,KAAA,EAAA;YAOV,UAAU,CAAA,EAAA,OAAA,WAAA,QAAA,KAAA,EAAA;YAOV,UAAU,CAAA,EAAA,OAAA,WAAA,SAAA,KAAA,EAAA;qBA5Cd,cAAc,UAAU,CAAA,EAAA,OAAA"}
1
+ {"version":3,"file":"pk-icon.js","names":[],"sources":["../../../src/components/icon/pk-icon.ts"],"sourcesContent":["import { html, css, nothing } from 'lit';\nimport { customElement, property } from '../../decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { getIcon, iconToSvg, subscribeIconRegistry } from '@verbb/plugin-kit-icons';\n\nimport { PkElement } from '../../base/pk-element.js';\n\n/**\n * Standalone icon element backed by the Plugin Kit raw-SVG icon set.\n *\n * The name registry starts empty — consumers must {@link registerIcons}\n * (or import `@verbb/plugin-kit-icons/all.js`) before `<pk-icon icon=\"…\">` resolves.\n * Registrations are page-global across bundled Plugin Kit copies (Craft multi-plugin CP).\n *\n * Sizing follows `font-size` (defaults to `1em`), colour follows `currentColor`,\n * so consumers style it like text:\n *\n * ```html\n * <pk-icon icon=\"chevron-down\"></pk-icon>\n * <pk-icon icon=\"pen\" label=\"Edit\" style=\"font-size: 20px; color: #6b7280\"></pk-icon>\n * ```\n *\n * Prefer the `icon` attribute over `name`: some server-side form renderers\n * (e.g. Craft CMS `Html::namespaceInputs()`) rewrite every `name=\"…\"` attribute\n * in a form to namespace it, which would corrupt the icon lookup. `icon` is left\n * untouched. `name` is still supported for non-form contexts / back-compat.\n */\n@customElement('pk-icon')\nexport class PkIcon extends PkElement {\n static override styles = css`\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: none;\n /* Square em box + slight baseline nudge for inline text. Flex\n * parents (e.g. button slots) should zero vertical-align. */\n width: 1em;\n height: 1em;\n line-height: 1;\n vertical-align: -0.125em;\n }\n\n svg {\n display: block;\n width: 100%;\n height: 100%;\n fill: currentColor;\n /* Allow intentional path overhang past the icon canvas. */\n overflow: visible;\n }\n `;\n\n /**\n * Icon name (kebab-case), e.g. `chevron-down`, `gear`, `xmark`.\n * Namespacing-safe alternative to `name` — use this inside CMS form markup.\n */\n @property()\n icon = '';\n\n /**\n * Icon name (kebab-case). Back-compat / non-form alias for `icon`.\n * Avoid in server-namespaced forms, where `name` attributes get rewritten.\n */\n @property()\n name = '';\n\n /**\n * Accessible label. When set the icon is exposed as an image with a title;\n * otherwise it is hidden from assistive technology.\n */\n @property()\n label?: string;\n\n private unsubscribeRegistry: (() => void) | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n // Later plugins may register glyphs after this host upgraded — re-resolve.\n this.unsubscribeRegistry = subscribeIconRegistry(() => {\n this.requestUpdate();\n });\n }\n\n override disconnectedCallback(): void {\n this.unsubscribeRegistry?.();\n this.unsubscribeRegistry = null;\n super.disconnectedCallback();\n }\n\n override render() {\n const icon = getIcon(this.icon || this.name);\n\n if (!icon) {\n return nothing;\n }\n\n return html`${unsafeSVG(iconToSvg(icon, { title: this.label }))}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-icon': PkIcon;\n }\n}\n"],"mappings":";;;;;AA4BO,IAAA,SAAA,MAAM,eAAe,UAAU;;;cA8B3B;cAOA;6BAS4C;;;gBA7C1B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CA+C5B,oBAAmC;AAC/B,QAAM,mBAAmB;AAGzB,OAAK,sBAAsB,4BAA4B;AACnD,QAAK,eAAe;IACtB;;CAGN,uBAAsC;AAClC,OAAK,uBAAuB;AAC5B,OAAK,sBAAsB;AAC3B,QAAM,sBAAsB;;CAGhC,SAAkB;EACd,MAAM,OAAO,QAAQ,KAAK,QAAQ,KAAK,KAAK;AAE5C,MAAI,CAAC,KACD,QAAO;AAGX,SAAO,IAAI,GAAG,UAAU,UAAU,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC;;;YAzClE,UAAU,CAAA,EAAA,OAAA,WAAA,QAAA,KAAA,EAAA;YAOV,UAAU,CAAA,EAAA,OAAA,WAAA,QAAA,KAAA,EAAA;YAOV,UAAU,CAAA,EAAA,OAAA,WAAA,SAAA,KAAA,EAAA;qBA5Cd,cAAc,UAAU,CAAA,EAAA,OAAA"}
@@ -1,2 +1,2 @@
1
- import { t as PkInput } from "../../chunks/pk-input-naIRPWGC.js";
1
+ import { t as PkInput } from "../../chunks/pk-input-DDkIXOkt.js";
2
2
  export { PkInput };
@@ -1,2 +1,2 @@
1
- import { t as PkInputGroupAddon } from "../../chunks/pk-input-group-addon-DXbNbsfY.js";
1
+ import { t as PkInputGroupAddon } from "../../chunks/pk-input-group-addon-B0StOmTJ.js";
2
2
  export { PkInputGroupAddon };
@@ -1,2 +1,2 @@
1
- import { t as PkInputGroupButton } from "../../chunks/pk-input-group-button-XOfVLqGO.js";
1
+ import { t as PkInputGroupButton } from "../../chunks/pk-input-group-button-CnKajvsP.js";
2
2
  export { PkInputGroupButton };
@@ -1,2 +1,2 @@
1
- import { t as PkInputGroupInput } from "../../chunks/pk-input-group-input-CSmR5vdY.js";
1
+ import { t as PkInputGroupInput } from "../../chunks/pk-input-group-input-mllffsjQ.js";
2
2
  export { PkInputGroupInput };
@@ -1,2 +1,2 @@
1
- import { t as PkInputGroupText } from "../../chunks/pk-input-group-text-C6ekhtff.js";
1
+ import { t as PkInputGroupText } from "../../chunks/pk-input-group-text-DvaPJvh2.js";
2
2
  export { PkInputGroupText };
@@ -1,2 +1,2 @@
1
- import { t as PkInputGroupTextarea } from "../../chunks/pk-input-group-textarea-DALr3pdU.js";
1
+ import { t as PkInputGroupTextarea } from "../../chunks/pk-input-group-textarea-CqYv8tUQ.js";
2
2
  export { PkInputGroupTextarea };
@@ -1,2 +1,2 @@
1
- import { t as PkInputGroup } from "../../chunks/pk-input-group-CGHQKrt8.js";
1
+ import { t as PkInputGroup } from "../../chunks/pk-input-group-CRPSBFhX.js";
2
2
  export { PkInputGroup };
@@ -1,7 +1,7 @@
1
- import { t as PkInputGroup } from "../chunks/pk-input-group-CGHQKrt8.js";
2
- import { t as PkInputGroupAddon } from "../chunks/pk-input-group-addon-DXbNbsfY.js";
3
- import { t as PkInputGroupButton } from "../chunks/pk-input-group-button-XOfVLqGO.js";
4
- import { t as PkInputGroupInput } from "../chunks/pk-input-group-input-CSmR5vdY.js";
5
- import { t as PkInputGroupText } from "../chunks/pk-input-group-text-C6ekhtff.js";
6
- import { t as PkInputGroupTextarea } from "../chunks/pk-input-group-textarea-DALr3pdU.js";
1
+ import { t as PkInputGroup } from "../chunks/pk-input-group-CRPSBFhX.js";
2
+ import { t as PkInputGroupAddon } from "../chunks/pk-input-group-addon-B0StOmTJ.js";
3
+ import { t as PkInputGroupButton } from "../chunks/pk-input-group-button-CnKajvsP.js";
4
+ import { t as PkInputGroupInput } from "../chunks/pk-input-group-input-mllffsjQ.js";
5
+ import { t as PkInputGroupText } from "../chunks/pk-input-group-text-DvaPJvh2.js";
6
+ import { t as PkInputGroupTextarea } from "../chunks/pk-input-group-textarea-CqYv8tUQ.js";
7
7
  export { PkInputGroup, PkInputGroupAddon, PkInputGroupButton, PkInputGroupInput, PkInputGroupText, PkInputGroupTextarea };
@@ -1,2 +1,2 @@
1
- import { t as PkInput } from "../chunks/pk-input-naIRPWGC.js";
1
+ import { t as PkInput } from "../chunks/pk-input-DDkIXOkt.js";
2
2
  export { PkInput };
@@ -1,2 +1,2 @@
1
- import { t as PkLightswitch } from "../../chunks/pk-lightswitch-B-rLflNq.js";
1
+ import { t as PkLightswitch } from "../../chunks/pk-lightswitch-DI1BeCmA.js";
2
2
  export { PkLightswitch };
@@ -1,2 +1,2 @@
1
- import { t as PkLightswitch } from "../chunks/pk-lightswitch-B-rLflNq.js";
1
+ import { t as PkLightswitch } from "../chunks/pk-lightswitch-DI1BeCmA.js";
2
2
  export { PkLightswitch };
@@ -1,2 +1,2 @@
1
- import { t as PkPopover } from "../../chunks/pk-popover-G3ojheBD.js";
1
+ import { t as PkPopover } from "../../chunks/pk-popover-duyNosk2.js";
2
2
  export { PkPopover };
@@ -1,2 +1,2 @@
1
- import { t as PkPopover } from "../chunks/pk-popover-G3ojheBD.js";
1
+ import { t as PkPopover } from "../chunks/pk-popover-duyNosk2.js";
2
2
  export { PkPopover };
@@ -1,2 +1,2 @@
1
- import { t as PkPopup } from "../../chunks/pk-popup-CgiXok-U.js";
1
+ import { t as PkPopup } from "../../chunks/pk-popup-B9AgBC2V.js";
2
2
  export { PkPopup };
@@ -1,2 +1,2 @@
1
- import { t as PkPopup } from "../chunks/pk-popup-CgiXok-U.js";
1
+ import { t as PkPopup } from "../chunks/pk-popup-B9AgBC2V.js";
2
2
  export { PkPopup };
@@ -1,2 +1,2 @@
1
- import { t as PkRadioGroup } from "../../chunks/pk-radio-group-BazmLDvl.js";
1
+ import { t as PkRadioGroup } from "../../chunks/pk-radio-group-BRJIjOsR.js";
2
2
  export { PkRadioGroup };
@@ -1,2 +1,2 @@
1
- import { t as PkRadio } from "../../chunks/pk-radio-CDfhOW8L.js";
1
+ import { t as PkRadio } from "../../chunks/pk-radio-BK4D2Htu.js";
2
2
  export { PkRadio };
@@ -1,3 +1,3 @@
1
- import { t as PkRadio } from "../chunks/pk-radio-CDfhOW8L.js";
2
- import { t as PkRadioGroup } from "../chunks/pk-radio-group-BazmLDvl.js";
1
+ import { t as PkRadio } from "../chunks/pk-radio-BK4D2Htu.js";
2
+ import { t as PkRadioGroup } from "../chunks/pk-radio-group-BRJIjOsR.js";
3
3
  export { PkRadio, PkRadioGroup };
@@ -1,2 +1,2 @@
1
- import { t as PkScrollArea } from "../../chunks/pk-scroll-area-BjU7-vZX.js";
1
+ import { t as PkScrollArea } from "../../chunks/pk-scroll-area-BR6ckorh.js";
2
2
  export { PkScrollArea };
@@ -1,2 +1,2 @@
1
- import { t as PkScrollArea } from "../chunks/pk-scroll-area-BjU7-vZX.js";
1
+ import { t as PkScrollArea } from "../chunks/pk-scroll-area-BR6ckorh.js";
2
2
  export { PkScrollArea };
@@ -1,2 +1,2 @@
1
- import { t as PkOptionGroup } from "../../chunks/pk-option-group-BAFSIZTa.js";
1
+ import { t as PkOptionGroup } from "../../chunks/pk-option-group-Cs6N7mlP.js";
2
2
  export { PkOptionGroup };
@@ -1,2 +1,2 @@
1
- import { t as PkOption } from "../../chunks/pk-option-Cy7oOcwF.js";
1
+ import { t as PkOption } from "../../chunks/pk-option-MGj9SKOK.js";
2
2
  export { PkOption };
@@ -1,2 +1,2 @@
1
- import { t as PkSelect } from "../../chunks/pk-select-BeMDXEC6.js";
1
+ import { t as PkSelect } from "../../chunks/pk-select-C1s0OJr0.js";
2
2
  export { PkSelect };
@@ -1,4 +1,4 @@
1
- import { t as PkOption } from "../chunks/pk-option-Cy7oOcwF.js";
2
- import { t as PkSelect } from "../chunks/pk-select-BeMDXEC6.js";
3
- import { t as PkOptionGroup } from "../chunks/pk-option-group-BAFSIZTa.js";
1
+ import { t as PkOption } from "../chunks/pk-option-MGj9SKOK.js";
2
+ import { t as PkSelect } from "../chunks/pk-select-C1s0OJr0.js";
3
+ import { t as PkOptionGroup } from "../chunks/pk-option-group-Cs6N7mlP.js";
4
4
  export { PkOption, PkOptionGroup, PkSelect };
@@ -1,2 +1,2 @@
1
- import { t as PkSeparator } from "../../chunks/pk-separator-CLb9n0FK.js";
1
+ import { t as PkSeparator } from "../../chunks/pk-separator-CHij3vEG.js";
2
2
  export { PkSeparator };
@@ -1,2 +1,2 @@
1
- import { t as PkSeparator } from "../chunks/pk-separator-CLb9n0FK.js";
1
+ import { t as PkSeparator } from "../chunks/pk-separator-CHij3vEG.js";
2
2
  export { PkSeparator };
@@ -1,2 +1,2 @@
1
- import { t as PkSpinner } from "../../chunks/pk-spinner-Blxd3SIH.js";
1
+ import { t as PkSpinner } from "../../chunks/pk-spinner-DweuYJ_Z.js";
2
2
  export { PkSpinner };
@@ -1,3 +1,3 @@
1
1
  import { n as resolveSpinnerVariant, t as getButtonSpinnerSize } from "../chunks/spinner-utils-CDfHypTv.js";
2
- import { t as PkSpinner } from "../chunks/pk-spinner-Blxd3SIH.js";
2
+ import { t as PkSpinner } from "../chunks/pk-spinner-DweuYJ_Z.js";
3
3
  export { PkSpinner, getButtonSpinnerSize, resolveSpinnerVariant };
@@ -1,2 +1,2 @@
1
- import { t as PkStatus } from "../../chunks/pk-status-7_5dEuw-.js";
1
+ import { t as PkStatus } from "../../chunks/pk-status-D1IzTSI2.js";
2
2
  export { PkStatus };
@@ -1,2 +1,2 @@
1
- import { t as PkStatus } from "../chunks/pk-status-7_5dEuw-.js";
1
+ import { t as PkStatus } from "../chunks/pk-status-D1IzTSI2.js";
2
2
  export { PkStatus };
@@ -1,2 +1,2 @@
1
- import { t as PkTabHeading } from "../../chunks/pk-tab-heading-79ZuLhXi.js";
1
+ import { t as PkTabHeading } from "../../chunks/pk-tab-heading-BV6m_sT-.js";
2
2
  export { PkTabHeading };
@@ -1,2 +1,2 @@
1
- import { t as PkTabPanel } from "../../chunks/pk-tab-panel-DdAbrOBF.js";
1
+ import { t as PkTabPanel } from "../../chunks/pk-tab-panel-C6FxQw9q.js";
2
2
  export { PkTabPanel };
@@ -1,2 +1,2 @@
1
- import { t as PkTab } from "../../chunks/pk-tab-f1OLMVXs.js";
1
+ import { t as PkTab } from "../../chunks/pk-tab-2MHunhlF.js";
2
2
  export { PkTab };
@@ -1,2 +1,2 @@
1
- import { t as PkTabs } from "../../chunks/pk-tabs-BhC5PAnO.js";
1
+ import { t as PkTabs } from "../../chunks/pk-tabs-BTE63uK9.js";
2
2
  export { PkTabs };
@@ -1,5 +1,5 @@
1
- import { t as PkTab } from "../chunks/pk-tab-f1OLMVXs.js";
2
- import { t as PkTabHeading } from "../chunks/pk-tab-heading-79ZuLhXi.js";
3
- import { t as PkTabPanel } from "../chunks/pk-tab-panel-DdAbrOBF.js";
4
- import { t as PkTabs } from "../chunks/pk-tabs-BhC5PAnO.js";
1
+ import { t as PkTab } from "../chunks/pk-tab-2MHunhlF.js";
2
+ import { t as PkTabHeading } from "../chunks/pk-tab-heading-BV6m_sT-.js";
3
+ import { t as PkTabPanel } from "../chunks/pk-tab-panel-C6FxQw9q.js";
4
+ import { t as PkTabs } from "../chunks/pk-tabs-BTE63uK9.js";
5
5
  export { PkTab, PkTabHeading, PkTabPanel, PkTabs };
@@ -1,2 +1,2 @@
1
- import { t as PkTextarea } from "../../chunks/pk-textarea-BEapC8Rk.js";
1
+ import { t as PkTextarea } from "../../chunks/pk-textarea-BcAyZYC-.js";
2
2
  export { PkTextarea };
@@ -1,2 +1,2 @@
1
- import { t as PkTextarea } from "../chunks/pk-textarea-BEapC8Rk.js";
1
+ import { t as PkTextarea } from "../chunks/pk-textarea-BcAyZYC-.js";
2
2
  export { PkTextarea };
@@ -1,2 +1,2 @@
1
- import { t as PkTimePicker } from "../../chunks/pk-time-picker-RlAqlho4.js";
1
+ import { t as PkTimePicker } from "../../chunks/pk-time-picker-5D4nmig2.js";
2
2
  export { PkTimePicker };
@@ -1,2 +1,2 @@
1
- import { t as PkTimePicker } from "../chunks/pk-time-picker-RlAqlho4.js";
1
+ import { t as PkTimePicker } from "../chunks/pk-time-picker-5D4nmig2.js";
2
2
  export { PkTimePicker };
@@ -1,2 +1,2 @@
1
- import { t as PkTiptapContent } from "../../chunks/pk-tiptap-content-zzx3-xrD.js";
1
+ import { t as PkTiptapContent } from "../../chunks/pk-tiptap-content-BPd4GO6c.js";
2
2
  export { PkTiptapContent };
@@ -1,2 +1,2 @@
1
- import { t as PkTiptapEditor } from "../../chunks/pk-tiptap-editor-DpT4TYdi.js";
1
+ import { t as PkTiptapEditor } from "../../chunks/pk-tiptap-editor-tG67Vegc.js";
2
2
  export { PkTiptapEditor };
@@ -1,2 +1,2 @@
1
- import { t as PkTiptapInput } from "../../chunks/pk-tiptap-input-D7xj13FY.js";
1
+ import { t as PkTiptapInput } from "../../chunks/pk-tiptap-input-CtefNnaK.js";
2
2
  export { PkTiptapInput };
@@ -1,2 +1,2 @@
1
- import { t as PkTiptapContent } from "../chunks/pk-tiptap-content-zzx3-xrD.js";
1
+ import { t as PkTiptapContent } from "../chunks/pk-tiptap-content-BPd4GO6c.js";
2
2
  export { PkTiptapContent };
@@ -1,2 +1,2 @@
1
- import { t as PkTiptapEditor } from "../chunks/pk-tiptap-editor-DpT4TYdi.js";
1
+ import { t as PkTiptapEditor } from "../chunks/pk-tiptap-editor-tG67Vegc.js";
2
2
  export { PkTiptapEditor };
@@ -1,2 +1,2 @@
1
- import { t as PkTiptapInput } from "../chunks/pk-tiptap-input-D7xj13FY.js";
1
+ import { t as PkTiptapInput } from "../chunks/pk-tiptap-input-CtefNnaK.js";
2
2
  export { PkTiptapInput };
@@ -1,2 +1,2 @@
1
- import { t as PkToggle } from "../../chunks/pk-toggle-5-GKVLye.js";
1
+ import { t as PkToggle } from "../../chunks/pk-toggle-CW-lflrh.js";
2
2
  export { PkToggle };
@@ -1,2 +1,2 @@
1
- import { t as PkToggleGroup } from "../../chunks/pk-toggle-group-CWDwYlgR.js";
1
+ import { t as PkToggleGroup } from "../../chunks/pk-toggle-group-BKymefo3.js";
2
2
  export { PkToggleGroup };
@@ -1,2 +1,2 @@
1
- import { t as PkToggleGroup } from "../chunks/pk-toggle-group-CWDwYlgR.js";
1
+ import { t as PkToggleGroup } from "../chunks/pk-toggle-group-BKymefo3.js";
2
2
  export { PkToggleGroup };
@@ -1,2 +1,2 @@
1
- import { t as PkToggle } from "../chunks/pk-toggle-5-GKVLye.js";
1
+ import { t as PkToggle } from "../chunks/pk-toggle-CW-lflrh.js";
2
2
  export { PkToggle };
@@ -1,2 +1,2 @@
1
- import { t as PkTooltip } from "../../chunks/pk-tooltip-DAq-JZpg.js";
1
+ import { t as PkTooltip } from "../../chunks/pk-tooltip-BoDq8YVe.js";
2
2
  export { PkTooltip };