@verbb/plugin-kit-web 2.0.23 → 2.0.25

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 (446) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/chunks/{active-elements-DM_lCHaW.js → active-elements-739kISON.js} +1 -1
  3. package/dist/chunks/{active-elements-DM_lCHaW.js.map → active-elements-739kISON.js.map} +1 -1
  4. package/dist/chunks/{animate-with-class-NP-yJVt_.js → animate-with-class-CjTZI0NU.js} +1 -1
  5. package/dist/chunks/{animate-with-class-NP-yJVt_.js.map → animate-with-class-CjTZI0NU.js.map} +1 -1
  6. package/dist/chunks/{autoloader-DnSfHkrD.js → autoloader-DcwybeWc.js} +3 -3
  7. package/dist/chunks/{autoloader-DnSfHkrD.js.map → autoloader-DcwybeWc.js.map} +1 -1
  8. package/dist/chunks/{button-group-item.styles-G05d0DNI.js → button-group-item.styles-D7tuu-sr.js} +1 -1
  9. package/dist/chunks/{button-group-item.styles-G05d0DNI.js.map → button-group-item.styles-D7tuu-sr.js.map} +1 -1
  10. package/dist/chunks/{component-registry-DoevfR-u.js → component-registry-B5pnAZsb.js} +2 -1
  11. package/dist/chunks/{component-registry-DoevfR-u.js.map → component-registry-B5pnAZsb.js.map} +1 -1
  12. package/dist/chunks/{control-aria-CzouQRZD.js → control-aria-CtNg2izr.js} +1 -1
  13. package/dist/chunks/{control-aria-CzouQRZD.js.map → control-aria-CtNg2izr.js.map} +1 -1
  14. package/dist/chunks/{decorate-R0X811qp.js → decorate-Br_PE9pq.js} +3 -4
  15. package/dist/chunks/{decorate-R0X811qp.js.map → decorate-Br_PE9pq.js.map} +1 -1
  16. package/dist/chunks/decorators-BkErmuYK.js +2 -0
  17. package/dist/chunks/{dismissible-stack-B3BgzdQb.js → dismissible-stack-CwhtwAyo.js} +1 -1
  18. package/dist/chunks/{dismissible-stack-B3BgzdQb.js.map → dismissible-stack-CwhtwAyo.js.map} +1 -1
  19. package/dist/chunks/{field-labels-CGSfAGf-.js → field-labels-pY-gQDwQ.js} +1 -1
  20. package/dist/chunks/{field-labels-CGSfAGf-.js.map → field-labels-pY-gQDwQ.js.map} +1 -1
  21. package/dist/chunks/{focus-C6pY4Ym4.js → focus-DcVUPVqn.js} +2 -2
  22. package/dist/chunks/{focus-C6pY4Ym4.js.map → focus-DcVUPVqn.js.map} +1 -1
  23. package/dist/chunks/{form-control.styles-BHwSsx_y.js → form-control.styles-CQ93gnVf.js} +1 -1
  24. package/dist/chunks/{form-control.styles-BHwSsx_y.js.map → form-control.styles-CQ93gnVf.js.map} +1 -1
  25. package/dist/chunks/{has-slot-9zjTXvea.js → has-slot-DJv86HKx.js} +1 -1
  26. package/dist/chunks/{has-slot-9zjTXvea.js.map → has-slot-DJv86HKx.js.map} +1 -1
  27. package/dist/chunks/{icon.styles-pNyUmVtP.js → icon.styles-KWvfi7RV.js} +1 -1
  28. package/dist/chunks/{icon.styles-pNyUmVtP.js.map → icon.styles-KWvfi7RV.js.map} +1 -1
  29. package/dist/chunks/{icons-B8siZLOe.js → icons-k1pvx6yX.js} +2 -2
  30. package/dist/chunks/{icons-B8siZLOe.js.map → icons-k1pvx6yX.js.map} +1 -1
  31. package/dist/chunks/{mirror-validator-Cszpqlxk.js → mirror-validator-BkZlEv1Z.js} +1 -1
  32. package/dist/chunks/{mirror-validator-Cszpqlxk.js.map → mirror-validator-BkZlEv1Z.js.map} +1 -1
  33. package/dist/chunks/{option-filter-Cj5SvyzI.js → option-filter-BkKyBg8L.js} +2 -2
  34. package/dist/chunks/{option-filter-Cj5SvyzI.js.map → option-filter-BkKyBg8L.js.map} +1 -1
  35. package/dist/chunks/{overlay-lifecycle-CAoT0LE8.js → overlay-lifecycle-C582MGBJ.js} +1 -1
  36. package/dist/chunks/{overlay-lifecycle-CAoT0LE8.js.map → overlay-lifecycle-C582MGBJ.js.map} +1 -1
  37. package/dist/chunks/{pk-alert-Cjxl6CY_.js → pk-alert-BQAb4lJc.js} +9 -7
  38. package/dist/chunks/pk-alert-BQAb4lJc.js.map +1 -0
  39. package/dist/chunks/{pk-autocomplete-DA77kdTN.js → pk-autocomplete-DUXhs1hi.js} +20 -19
  40. package/dist/chunks/pk-autocomplete-DUXhs1hi.js.map +1 -0
  41. package/dist/chunks/{pk-button-group-DBdKK_2_.js → pk-button-group-BY12Lbk7.js} +10 -7
  42. package/dist/chunks/pk-button-group-BY12Lbk7.js.map +1 -0
  43. package/dist/chunks/{pk-button-group-separator-D0Aa0a0f.js → pk-button-group-separator-B1a8dP9A.js} +3 -2
  44. package/dist/chunks/pk-button-group-separator-B1a8dP9A.js.map +1 -0
  45. package/dist/chunks/{pk-button-group-text-BsqEM-dB.js → pk-button-group-text-CWNlZkyV.js} +3 -3
  46. package/dist/chunks/pk-button-group-text-CWNlZkyV.js.map +1 -0
  47. package/dist/chunks/{pk-button-DCtNLEPr.js → pk-button-ntSVrer_.js} +7 -6
  48. package/dist/chunks/pk-button-ntSVrer_.js.map +1 -0
  49. package/dist/chunks/{pk-calendar-hBz1MnOu.js → pk-calendar-Df0c5u79.js} +11 -10
  50. package/dist/chunks/pk-calendar-Df0c5u79.js.map +1 -0
  51. package/dist/chunks/{pk-checkbox-dvHRoVbL.js → pk-checkbox-L5uRex3b.js} +6 -5
  52. package/dist/chunks/pk-checkbox-L5uRex3b.js.map +1 -0
  53. package/dist/chunks/{pk-checkbox-select-Cqx5ZCMq.js → pk-checkbox-select-6OS0wFYO.js} +4 -3
  54. package/dist/chunks/pk-checkbox-select-6OS0wFYO.js.map +1 -0
  55. package/dist/chunks/{pk-clear-LzxwxEX7.js → pk-clear-DHxP_2cm.js} +1 -1
  56. package/dist/chunks/{pk-clear-LzxwxEX7.js.map → pk-clear-DHxP_2cm.js.map} +1 -1
  57. package/dist/chunks/{pk-code-editor-C_PqjR75.js → pk-code-editor-vZriNR67.js} +6 -5
  58. package/dist/chunks/pk-code-editor-vZriNR67.js.map +1 -0
  59. package/dist/chunks/{pk-color-input-4LDV0Z3W.js → pk-color-input-Csbm4ROT.js} +6 -5
  60. package/dist/chunks/pk-color-input-Csbm4ROT.js.map +1 -0
  61. package/dist/chunks/{pk-combobox-BeddzAsl.js → pk-combobox-BrSBrldb.js} +24 -22
  62. package/dist/chunks/pk-combobox-BrSBrldb.js.map +1 -0
  63. package/dist/chunks/{pk-connect.styles-ciqZMK3B.js → pk-connect.styles-oKhxa_m2.js} +1 -1
  64. package/dist/chunks/{pk-connect.styles-ciqZMK3B.js.map → pk-connect.styles-oKhxa_m2.js.map} +1 -1
  65. package/dist/chunks/{pk-copy-button-KegSx46o.js → pk-copy-button-5i9v_zmu.js} +7 -6
  66. package/dist/chunks/pk-copy-button-5i9v_zmu.js.map +1 -0
  67. package/dist/chunks/{pk-date-picker-D_JFep-Y.js → pk-date-picker-C-w6Mn6j.js} +20 -19
  68. package/dist/chunks/pk-date-picker-C-w6Mn6j.js.map +1 -0
  69. package/dist/chunks/{pk-dialog-CFU850OH.js → pk-dialog-C7KZGpQs.js} +9 -8
  70. package/dist/chunks/pk-dialog-C7KZGpQs.js.map +1 -0
  71. package/dist/chunks/{pk-dropdown-item-A4P4zfVF.js → pk-dropdown-item-Ck2N_suK.js} +11 -8
  72. package/dist/chunks/pk-dropdown-item-Ck2N_suK.js.map +1 -0
  73. package/dist/chunks/{pk-dropdown-label-PqDxMkCI.js → pk-dropdown-label-BdZLeizJ.js} +2 -2
  74. package/dist/chunks/pk-dropdown-label-BdZLeizJ.js.map +1 -0
  75. package/dist/chunks/{pk-dropdown-menu-C_vasBoa.js → pk-dropdown-menu-DBsO1uYR.js} +22 -18
  76. package/dist/chunks/pk-dropdown-menu-DBsO1uYR.js.map +1 -0
  77. package/dist/chunks/{pk-editable-table-B85NhFYY.js → pk-editable-table-Cd8K6vT4.js} +25 -22
  78. package/dist/chunks/pk-editable-table-Cd8K6vT4.js.map +1 -0
  79. package/dist/chunks/{pk-field-BJA2fZ6s.js → pk-field--PCE9nOd.js} +8 -7
  80. package/dist/chunks/pk-field--PCE9nOd.js.map +1 -0
  81. package/dist/chunks/{pk-form-associated-element-MqaHdIoH.js → pk-form-associated-element-Doh2K3pG.js} +3 -3
  82. package/dist/chunks/pk-form-associated-element-Doh2K3pG.js.map +1 -0
  83. package/dist/chunks/{pk-image-browser-DLAQcjFt.js → pk-image-browser-iUqdcLKs.js} +20 -20
  84. package/dist/chunks/pk-image-browser-iUqdcLKs.js.map +1 -0
  85. package/dist/chunks/{pk-input-CiUNLTSW.js → pk-input-BUbXj9We.js} +14 -13
  86. package/dist/chunks/pk-input-BUbXj9We.js.map +1 -0
  87. package/dist/chunks/{pk-input-group-k7WV0pQI.js → pk-input-group-CN79c5HT.js} +5 -4
  88. package/dist/chunks/pk-input-group-CN79c5HT.js.map +1 -0
  89. package/dist/chunks/{pk-input-group-addon-piOznzSS.js → pk-input-group-addon-DpxfuYp1.js} +3 -2
  90. package/dist/chunks/pk-input-group-addon-DpxfuYp1.js.map +1 -0
  91. package/dist/chunks/{pk-input-group-button-Di2vEJLo.js → pk-input-group-button-D5Hm4saA.js} +3 -2
  92. package/dist/chunks/pk-input-group-button-D5Hm4saA.js.map +1 -0
  93. package/dist/chunks/{pk-input-group-input-CwaaEfr1.js → pk-input-group-input-Cm1MoHgN.js} +3 -2
  94. package/dist/chunks/pk-input-group-input-Cm1MoHgN.js.map +1 -0
  95. package/dist/chunks/{pk-input-group-text-C0VAdy0J.js → pk-input-group-text-CtyJZ_Kg.js} +2 -2
  96. package/dist/chunks/pk-input-group-text-CtyJZ_Kg.js.map +1 -0
  97. package/dist/chunks/{pk-input-group-textarea-DOG1NIlE.js → pk-input-group-textarea-BxmKGjdt.js} +3 -2
  98. package/dist/chunks/pk-input-group-textarea-BxmKGjdt.js.map +1 -0
  99. package/dist/chunks/{pk-lightswitch-FH5ZxMG2.js → pk-lightswitch-CSvgiHVQ.js} +9 -8
  100. package/dist/chunks/pk-lightswitch-CSvgiHVQ.js.map +1 -0
  101. package/dist/chunks/{pk-option-Cx52kLmz.js → pk-option-B_PF4v_Z.js} +9 -7
  102. package/dist/chunks/pk-option-B_PF4v_Z.js.map +1 -0
  103. package/dist/chunks/{pk-option-group-CYo9Ukue.js → pk-option-group-D6bHfn0j.js} +4 -3
  104. package/dist/chunks/pk-option-group-D6bHfn0j.js.map +1 -0
  105. package/dist/chunks/{pk-popover-209LdoPr.js → pk-popover-BOoGfR7I.js} +11 -10
  106. package/dist/chunks/pk-popover-BOoGfR7I.js.map +1 -0
  107. package/dist/chunks/{pk-popup-0EIt9X_W.js → pk-popup-DVE93VSV.js} +32 -28
  108. package/dist/chunks/pk-popup-DVE93VSV.js.map +1 -0
  109. package/dist/chunks/{pk-radio-jgj6A0Wy.js → pk-radio-D0eqmnlH.js} +3 -2
  110. package/dist/chunks/pk-radio-D0eqmnlH.js.map +1 -0
  111. package/dist/chunks/{pk-radio-group-CruMBeeF.js → pk-radio-group-BehEZG_k.js} +8 -7
  112. package/dist/chunks/pk-radio-group-BehEZG_k.js.map +1 -0
  113. package/dist/chunks/{pk-scroll-area-BaqN798b.js → pk-scroll-area-BeaLZ6k-.js} +3 -2
  114. package/dist/chunks/pk-scroll-area-BeaLZ6k-.js.map +1 -0
  115. package/dist/chunks/{pk-select-UUH7FE4H.js → pk-select-DZNpEk5Z.js} +19 -18
  116. package/dist/chunks/pk-select-DZNpEk5Z.js.map +1 -0
  117. package/dist/chunks/{pk-separator-Bcxg_GO2.js → pk-separator-ZkRowI5Y.js} +3 -2
  118. package/dist/chunks/pk-separator-ZkRowI5Y.js.map +1 -0
  119. package/dist/chunks/{pk-spinner-CN365srE.js → pk-spinner-Bxkn4iVO.js} +3 -2
  120. package/dist/chunks/pk-spinner-Bxkn4iVO.js.map +1 -0
  121. package/dist/chunks/{pk-state-panel-DPP7t-er.js → pk-state-panel-BTo2xiug.js} +7 -6
  122. package/dist/chunks/pk-state-panel-BTo2xiug.js.map +1 -0
  123. package/dist/chunks/{pk-status-CYcadu0Q.js → pk-status-CdiRBRyh.js} +3 -2
  124. package/dist/chunks/pk-status-CdiRBRyh.js.map +1 -0
  125. package/dist/chunks/{pk-tab-BmXNyDg7.js → pk-tab-CSbI3XxX.js} +2 -2
  126. package/dist/chunks/pk-tab-CSbI3XxX.js.map +1 -0
  127. package/dist/chunks/{pk-tab-heading-GZHVmCAd.js → pk-tab-heading-BMyLTBNc.js} +2 -2
  128. package/dist/chunks/pk-tab-heading-BMyLTBNc.js.map +1 -0
  129. package/dist/chunks/{pk-tab-panel-OpM3f_cm.js → pk-tab-panel-sgdRjV8o.js} +2 -2
  130. package/dist/chunks/pk-tab-panel-sgdRjV8o.js.map +1 -0
  131. package/dist/chunks/{pk-tabs-x26NAw-V.js → pk-tabs-bBNCu_4h.js} +10 -7
  132. package/dist/chunks/pk-tabs-bBNCu_4h.js.map +1 -0
  133. package/dist/chunks/{pk-textarea-CBijEmcV.js → pk-textarea-B401dUWa.js} +11 -10
  134. package/dist/chunks/pk-textarea-B401dUWa.js.map +1 -0
  135. package/dist/chunks/{pk-time-picker-D-u5-7pf.js → pk-time-picker-DnNZVwRk.js} +6 -6
  136. package/dist/chunks/pk-time-picker-DnNZVwRk.js.map +1 -0
  137. package/dist/chunks/{pk-tiptap-content-BGxMO3T4.js → pk-tiptap-content-DmS_2EUi.js} +4 -3
  138. package/dist/chunks/pk-tiptap-content-DmS_2EUi.js.map +1 -0
  139. package/dist/chunks/{pk-tiptap-editor-BeuyzH5l.js → pk-tiptap-editor-DCgHtgoi.js} +20 -21
  140. package/dist/chunks/pk-tiptap-editor-DCgHtgoi.js.map +1 -0
  141. package/dist/chunks/{pk-tiptap-input-CQojaxDH.js → pk-tiptap-input-asrD-8W6.js} +7 -6
  142. package/dist/chunks/pk-tiptap-input-asrD-8W6.js.map +1 -0
  143. package/dist/chunks/{pk-toggle-CAtGO_Le.js → pk-toggle-Co8GsHuK.js} +4 -3
  144. package/dist/chunks/pk-toggle-Co8GsHuK.js.map +1 -0
  145. package/dist/chunks/{pk-toggle-group-CLso6OE7.js → pk-toggle-group-Ct1ljI-7.js} +7 -4
  146. package/dist/chunks/pk-toggle-group-Ct1ljI-7.js.map +1 -0
  147. package/dist/chunks/{pk-tooltip-C6yb4CXI.js → pk-tooltip-Cvv2f7T5.js} +7 -6
  148. package/dist/chunks/pk-tooltip-Cvv2f7T5.js.map +1 -0
  149. package/dist/chunks/{popup-content-animation.styles-EUnGV75J.js → popup-content-animation.styles-CJ8zGJz-.js} +1 -1
  150. package/dist/chunks/{popup-content-animation.styles-EUnGV75J.js.map → popup-content-animation.styles-CJ8zGJz-.js.map} +1 -1
  151. package/dist/chunks/{popup-placement-animation-GvFXER7D.js → popup-placement-animation-ClUYI79z.js} +1 -1
  152. package/dist/chunks/{popup-placement-animation-GvFXER7D.js.map → popup-placement-animation-ClUYI79z.js.map} +1 -1
  153. package/dist/chunks/{popup-pointer-BTS3Y6LE.js → popup-pointer-Bh_d205v.js} +1 -1
  154. package/dist/chunks/{popup-pointer-BTS3Y6LE.js.map → popup-pointer-Bh_d205v.js.map} +1 -1
  155. package/dist/chunks/{register-components-Dcdn1e3S.js → register-components-CZtpgZe3.js} +1 -1
  156. package/dist/chunks/{register-components-Dcdn1e3S.js.map → register-components-CZtpgZe3.js.map} +1 -1
  157. package/dist/chunks/{render-BKGW1a68.js → render-DQZp_Rak.js} +1 -1
  158. package/dist/chunks/{render-BKGW1a68.js.map → render-DQZp_Rak.js.map} +1 -1
  159. package/dist/chunks/{required-validator-CaRnQk1V.js → required-validator-I58oJGZ3.js} +1 -1
  160. package/dist/chunks/{required-validator-CaRnQk1V.js.map → required-validator-I58oJGZ3.js.map} +1 -1
  161. package/dist/chunks/{scroll-lock-gTFrvIPu.js → scroll-lock-DE1pElMQ.js} +2 -2
  162. package/dist/chunks/{scroll-lock-gTFrvIPu.js.map → scroll-lock-DE1pElMQ.js.map} +1 -1
  163. package/dist/chunks/{spinner-utils-Co_4X3ip.js → spinner-utils-DXwIxQ6z.js} +1 -1
  164. package/dist/chunks/{spinner-utils-Co_4X3ip.js.map → spinner-utils-DXwIxQ6z.js.map} +1 -1
  165. package/dist/chunks/{supports-popover-6lNVStLh.js → supports-popover-BCqyOPtO.js} +1 -1
  166. package/dist/chunks/{supports-popover-6lNVStLh.js.map → supports-popover-BCqyOPtO.js.map} +1 -1
  167. package/dist/chunks/{sync-listbox-separators-CPFtrpNq.js → sync-listbox-separators-saLEtPpJ.js} +2 -2
  168. package/dist/chunks/{sync-listbox-separators-CPFtrpNq.js.map → sync-listbox-separators-saLEtPpJ.js.map} +1 -1
  169. package/dist/chunks/{tiptap.styles-DjhIrSBN.js → tiptap.styles-Cwb_cj9g.js} +21 -2
  170. package/dist/chunks/{tiptap.styles-DjhIrSBN.js.map → tiptap.styles-Cwb_cj9g.js.map} +1 -1
  171. package/dist/components/alert/pk-alert.js +1 -1
  172. package/dist/components/alert.js +1 -1
  173. package/dist/components/autocomplete/pk-autocomplete.js +1 -1
  174. package/dist/components/autocomplete.js +1 -1
  175. package/dist/components/button/pk-button.js +1 -1
  176. package/dist/components/button-group/pk-button-group-separator.js +1 -1
  177. package/dist/components/button-group/pk-button-group-text.js +1 -1
  178. package/dist/components/button-group/pk-button-group.js +1 -1
  179. package/dist/components/button-group.js +3 -3
  180. package/dist/components/button.js +1 -1
  181. package/dist/components/calendar/pk-calendar.js +1 -1
  182. package/dist/components/calendar.js +1 -1
  183. package/dist/components/checkbox/pk-checkbox.js +1 -1
  184. package/dist/components/checkbox-select/pk-checkbox-select.js +1 -1
  185. package/dist/components/checkbox-select.js +1 -1
  186. package/dist/components/checkbox.js +1 -1
  187. package/dist/components/code-editor/pk-code-editor.js +1 -1
  188. package/dist/components/code-editor.js +1 -1
  189. package/dist/components/color-input/pk-color-input.js +1 -1
  190. package/dist/components/color-input.js +1 -1
  191. package/dist/components/combobox/pk-combobox.js +1 -1
  192. package/dist/components/combobox.js +1 -1
  193. package/dist/components/connect/pk-connect-oauth.js +5 -4
  194. package/dist/components/connect/pk-connect-oauth.js.map +1 -1
  195. package/dist/components/connect/pk-connect.js +7 -6
  196. package/dist/components/connect/pk-connect.js.map +1 -1
  197. package/dist/components/copy-button/pk-copy-button.js +1 -1
  198. package/dist/components/copy-button.js +1 -1
  199. package/dist/components/date-picker/pk-date-picker.js +1 -1
  200. package/dist/components/date-picker.js +1 -1
  201. package/dist/components/dialog/pk-dialog.js +1 -1
  202. package/dist/components/dialog.js +1 -1
  203. package/dist/components/dropdown-menu/pk-dropdown-item.js +1 -1
  204. package/dist/components/dropdown-menu/pk-dropdown-label.js +1 -1
  205. package/dist/components/dropdown-menu/pk-dropdown-menu.js +1 -1
  206. package/dist/components/dropdown-menu/pk-dropdown-separator.js +1 -1
  207. package/dist/components/dropdown-menu/pk-dropdown-separator.js.map +1 -1
  208. package/dist/components/dropdown-menu.js +3 -3
  209. package/dist/components/editable-table/pk-editable-table.js +1 -1
  210. package/dist/components/editable-table.js +1 -1
  211. package/dist/components/field/pk-field.js +1 -1
  212. package/dist/components/field.js +1 -1
  213. package/dist/components/icon/pk-icon.js +2 -1
  214. package/dist/components/icon/pk-icon.js.map +1 -1
  215. package/dist/components/image-browser/pk-image-browser.js +1 -1
  216. package/dist/components/image-browser.js +1 -1
  217. package/dist/components/input/pk-input.js +1 -1
  218. package/dist/components/input-group/pk-input-group-addon.js +1 -1
  219. package/dist/components/input-group/pk-input-group-button.js +1 -1
  220. package/dist/components/input-group/pk-input-group-input.js +1 -1
  221. package/dist/components/input-group/pk-input-group-text.js +1 -1
  222. package/dist/components/input-group/pk-input-group-textarea.js +1 -1
  223. package/dist/components/input-group/pk-input-group.js +1 -1
  224. package/dist/components/input-group.js +6 -6
  225. package/dist/components/input.js +1 -1
  226. package/dist/components/lightswitch/pk-lightswitch.js +1 -1
  227. package/dist/components/lightswitch.js +1 -1
  228. package/dist/components/popover/pk-popover.js +1 -1
  229. package/dist/components/popover.js +1 -1
  230. package/dist/components/popup/pk-popup.js +1 -1
  231. package/dist/components/popup.js +1 -1
  232. package/dist/components/radio-group/pk-radio-group.js +1 -1
  233. package/dist/components/radio-group/pk-radio.js +1 -1
  234. package/dist/components/radio-group.js +2 -2
  235. package/dist/components/scroll-area/pk-scroll-area.js +1 -1
  236. package/dist/components/scroll-area.js +1 -1
  237. package/dist/components/select/pk-option-group.js +1 -1
  238. package/dist/components/select/pk-option.js +1 -1
  239. package/dist/components/select/pk-select.js +1 -1
  240. package/dist/components/select.js +3 -3
  241. package/dist/components/separator/pk-separator.js +1 -1
  242. package/dist/components/separator.js +1 -1
  243. package/dist/components/spinner/pk-spinner.js +1 -1
  244. package/dist/components/spinner.js +2 -2
  245. package/dist/components/state-panel/pk-state-panel.js +1 -1
  246. package/dist/components/state-panel.js +1 -1
  247. package/dist/components/status/pk-status.js +1 -1
  248. package/dist/components/status.js +1 -1
  249. package/dist/components/tabs/pk-tab-heading.js +1 -1
  250. package/dist/components/tabs/pk-tab-panel.js +1 -1
  251. package/dist/components/tabs/pk-tab.js +1 -1
  252. package/dist/components/tabs/pk-tabs.js +1 -1
  253. package/dist/components/tabs.js +4 -4
  254. package/dist/components/textarea/pk-textarea.js +1 -1
  255. package/dist/components/textarea.js +1 -1
  256. package/dist/components/time-picker/pk-time-picker.js +1 -1
  257. package/dist/components/time-picker.js +1 -1
  258. package/dist/components/tiptap/pk-tiptap-content.js +1 -1
  259. package/dist/components/tiptap/pk-tiptap-editor.js +1 -1
  260. package/dist/components/tiptap/pk-tiptap-input.js +1 -1
  261. package/dist/components/tiptap/tiptap.styles.d.ts.map +1 -1
  262. package/dist/components/tiptap-content.js +1 -1
  263. package/dist/components/tiptap-editor.js +1 -1
  264. package/dist/components/tiptap-input.js +1 -1
  265. package/dist/components/toggle/pk-toggle.js +1 -1
  266. package/dist/components/toggle-group/pk-toggle-group.js +1 -1
  267. package/dist/components/toggle-group.js +1 -1
  268. package/dist/components/toggle.js +1 -1
  269. package/dist/components/tooltip/pk-tooltip.js +1 -1
  270. package/dist/components/tooltip.js +1 -1
  271. package/dist/connect/register-cp-connect.js +4 -4
  272. package/dist/connect/register-cp-connect.js.map +1 -1
  273. package/dist/icons/index.js +2 -2
  274. package/dist/index.js +67 -67
  275. package/dist/plugin-kit.js +4 -4
  276. package/dist/plugin-kit.js.map +1 -1
  277. package/dist/register-components.js +1 -1
  278. package/dist/register.js +120 -55
  279. package/dist/register.js.map +1 -0
  280. package/dist-loader/chunks/{button-group-item.styles-CXLuiMeZ.js → button-group-item.styles-BQbvE3sC.js} +1 -1
  281. package/dist-loader/chunks/{codemirror-CU2NB7wh.js → codemirror-C_TTKlG1.js} +584 -436
  282. package/dist-loader/chunks/editor-CS16rBkM.js +110 -0
  283. package/dist-loader/chunks/{floating-ui-B84As3F-.js → floating-ui-BJQPB-Ip.js} +9 -11
  284. package/dist-loader/chunks/{lit-s6aadvWG.js → lit-B6nFKgbW.js} +52 -14
  285. package/dist-loader/chunks/{option-filter-DH11hDpV.js → option-filter-BkKyBg8L.js} +1 -1
  286. package/dist-loader/chunks/{pk-a11y-CjB4-U-R.js → pk-a11y-mGj0G5AE.js} +1 -1
  287. package/dist-loader/chunks/{pk-base-Om6X9ab5.js → pk-base-BGegy7-X.js} +2 -2
  288. package/dist-loader/chunks/{pk-button-nSZxt8_B.js → pk-button-DV9Tk5Pd.js} +5 -5
  289. package/dist-loader/chunks/{pk-calendar-BS7Mfme_.js → pk-calendar-C0xpIVIw.js} +9 -9
  290. package/dist-loader/chunks/{pk-checkbox-CYUcOnco.js → pk-checkbox-DhP0iMoP.js} +9 -6
  291. package/dist-loader/chunks/{pk-color-input-BjDit7z0.js → pk-color-input-B02cYzyr.js} +4 -4
  292. package/dist-loader/chunks/{pk-combobox-DyexEhFo.js → pk-combobox-S_tpNUHK.js} +19 -18
  293. package/dist-loader/chunks/{pk-connect.styles-BsPAXjgF.js → pk-connect.styles-B5qe5yQB.js} +1 -1
  294. package/dist-loader/chunks/{pk-copy-button-CoN83ilF.js → pk-copy-button-D6tPuhJ3.js} +6 -6
  295. package/dist-loader/chunks/{pk-date-picker-CO6deRCu.js → pk-date-picker-C0y4sfSf.js} +15 -15
  296. package/dist-loader/chunks/{pk-dialog-BWo6iDnY.js → pk-dialog-BJs5fVHS.js} +7 -7
  297. package/dist-loader/chunks/{pk-dropdown-item-CbujjI8U.js → pk-dropdown-item-Bs5NZDRh.js} +11 -9
  298. package/dist-loader/chunks/{pk-dropdown-label-9X4ctyES.js → pk-dropdown-label-Cpl9-bzB.js} +2 -2
  299. package/dist-loader/chunks/{pk-dropdown-menu-D1KpGuqU.js → pk-dropdown-menu-CLrfuD3i.js} +20 -17
  300. package/dist-loader/chunks/{pk-field-DzggayrX.js → pk-field-Pg61fxBR.js} +140 -74
  301. package/dist-loader/chunks/{pk-icon-DQPqxFKW.js → pk-icon-B7ywfPb6.js} +4 -4
  302. package/dist-loader/chunks/{pk-input-C1peOijH.js → pk-input-Cj5s8eBT.js} +10 -10
  303. package/dist-loader/chunks/{pk-lightswitch-Y-I3eKCt.js → pk-lightswitch-rUGB1p8q.js} +6 -6
  304. package/dist-loader/chunks/{pk-option-IfazQDxz.js → pk-option-B-MeLvZf.js} +8 -7
  305. package/dist-loader/chunks/{pk-popup-BrLT_4kD.js → pk-popup-CeyruJFh.js} +35 -29
  306. package/dist-loader/chunks/{pk-select-49fogRYV.js → pk-select-JUx3mxRS.js} +14 -14
  307. package/dist-loader/chunks/{pk-spinner-BmnrA60m.js → pk-spinner-B8iuHDQ9.js} +2 -2
  308. package/dist-loader/chunks/{pk-state-panel-DKf54EnJ.js → pk-state-panel-BhdZGllL.js} +7 -7
  309. package/dist-loader/chunks/{pk-status-Dat3_D-T.js → pk-status-D3qVwWlR.js} +2 -2
  310. package/dist-loader/chunks/{pk-textarea-DPb2R8gV.js → pk-textarea-KnpJMQX2.js} +7 -7
  311. package/dist-loader/chunks/{pk-time-picker-CJiQTVuC.js → pk-time-picker-DCqZ5z7M.js} +6 -6
  312. package/dist-loader/chunks/{pk-tooltip-CqwQfOPV.js → pk-tooltip-DStkplzy.js} +6 -6
  313. package/dist-loader/chunks/{popup-content-animation.styles-CWR2mend.js → popup-content-animation.styles-BtUVJg82.js} +1 -1
  314. package/dist-loader/chunks/{render-BuA2YeZN.js → render-D9G_a_c2.js} +1 -1
  315. package/dist-loader/chunks/{sync-listbox-separators-rbu8jrAa.js → sync-listbox-separators-saLEtPpJ.js} +1 -1
  316. package/dist-loader/chunks/{tiptap-BhYH5Dva.js → tiptap-DYSRDaas.js} +10392 -7521
  317. package/dist-loader/chunks/tiptap.styles-CZUkf2K6.js +915 -0
  318. package/dist-loader/components/alert/alert.js +8 -7
  319. package/dist-loader/components/autocomplete/autocomplete.js +15 -15
  320. package/dist-loader/components/button/button.js +1 -1
  321. package/dist-loader/components/button-group/button-group-separator.js +2 -2
  322. package/dist-loader/components/button-group/button-group-text.js +3 -3
  323. package/dist-loader/components/button-group/button-group.js +9 -7
  324. package/dist-loader/components/calendar/calendar.js +1 -1
  325. package/dist-loader/components/checkbox/checkbox.js +1 -1
  326. package/dist-loader/components/checkbox-select/checkbox-select.js +3 -3
  327. package/dist-loader/components/code-editor/code-editor.js +4 -4
  328. package/dist-loader/components/color-input/color-input.js +1 -1
  329. package/dist-loader/components/combobox/combobox.js +1 -1
  330. package/dist-loader/components/connect/connect-oauth.js +5 -5
  331. package/dist-loader/components/connect/connect.js +8 -8
  332. package/dist-loader/components/copy-button/copy-button.js +1 -1
  333. package/dist-loader/components/date-picker/date-picker.js +1 -1
  334. package/dist-loader/components/dialog/dialog.js +1 -1
  335. package/dist-loader/components/dropdown-menu/dropdown-item.js +1 -1
  336. package/dist-loader/components/dropdown-menu/dropdown-label.js +1 -1
  337. package/dist-loader/components/dropdown-menu/dropdown-menu.js +1 -1
  338. package/dist-loader/components/dropdown-menu/dropdown-separator.js +2 -2
  339. package/dist-loader/components/editable-table/editable-table.js +25 -23
  340. package/dist-loader/components/field/field.js +1 -1
  341. package/dist-loader/components/icon/icon.js +3 -3
  342. package/dist-loader/components/image-browser/image-browser.js +15 -16
  343. package/dist-loader/components/input/input.js +1 -1
  344. package/dist-loader/components/input-group/input-group-addon.js +2 -2
  345. package/dist-loader/components/input-group/input-group-button.js +2 -2
  346. package/dist-loader/components/input-group/input-group-input.js +2 -2
  347. package/dist-loader/components/input-group/input-group-text.js +2 -2
  348. package/dist-loader/components/input-group/input-group-textarea.js +2 -2
  349. package/dist-loader/components/input-group/input-group.js +3 -3
  350. package/dist-loader/components/lightswitch/lightswitch.js +1 -1
  351. package/dist-loader/components/popover/popover.js +9 -9
  352. package/dist-loader/components/popup/popup.js +1 -1
  353. package/dist-loader/components/radio-group/radio-group.js +5 -5
  354. package/dist-loader/components/radio-group/radio.js +2 -2
  355. package/dist-loader/components/scroll-area/scroll-area.js +2 -2
  356. package/dist-loader/components/select/option-group.js +3 -3
  357. package/dist-loader/components/select/option.js +1 -1
  358. package/dist-loader/components/select/select.js +1 -1
  359. package/dist-loader/components/separator/separator.js +2 -2
  360. package/dist-loader/components/spinner/spinner.js +1 -1
  361. package/dist-loader/components/state-panel/state-panel.js +1 -1
  362. package/dist-loader/components/status/status.js +1 -1
  363. package/dist-loader/components/tabs/tab-heading.js +2 -2
  364. package/dist-loader/components/tabs/tab-panel.js +2 -2
  365. package/dist-loader/components/tabs/tab.js +2 -2
  366. package/dist-loader/components/tabs/tabs.js +9 -7
  367. package/dist-loader/components/textarea/textarea.js +1 -1
  368. package/dist-loader/components/time-picker/time-picker.js +1 -1
  369. package/dist-loader/components/tiptap/tiptap-content.js +5 -4
  370. package/dist-loader/components/tiptap/tiptap-editor.js +594 -20
  371. package/dist-loader/components/tiptap/tiptap-input.js +273 -5
  372. package/dist-loader/components/toggle/toggle.js +3 -3
  373. package/dist-loader/components/toggle-group/toggle-group.js +6 -4
  374. package/dist-loader/components/tooltip/tooltip.js +1 -1
  375. package/dist-loader/plugin-kit.loader.js +2 -1
  376. package/package.json +9 -9
  377. package/dist/chunks/pk-alert-Cjxl6CY_.js.map +0 -1
  378. package/dist/chunks/pk-autocomplete-DA77kdTN.js.map +0 -1
  379. package/dist/chunks/pk-button-DCtNLEPr.js.map +0 -1
  380. package/dist/chunks/pk-button-group-DBdKK_2_.js.map +0 -1
  381. package/dist/chunks/pk-button-group-separator-D0Aa0a0f.js.map +0 -1
  382. package/dist/chunks/pk-button-group-text-BsqEM-dB.js.map +0 -1
  383. package/dist/chunks/pk-calendar-hBz1MnOu.js.map +0 -1
  384. package/dist/chunks/pk-checkbox-dvHRoVbL.js.map +0 -1
  385. package/dist/chunks/pk-checkbox-select-Cqx5ZCMq.js.map +0 -1
  386. package/dist/chunks/pk-code-editor-C_PqjR75.js.map +0 -1
  387. package/dist/chunks/pk-color-input-4LDV0Z3W.js.map +0 -1
  388. package/dist/chunks/pk-combobox-BeddzAsl.js.map +0 -1
  389. package/dist/chunks/pk-copy-button-KegSx46o.js.map +0 -1
  390. package/dist/chunks/pk-date-picker-D_JFep-Y.js.map +0 -1
  391. package/dist/chunks/pk-dialog-CFU850OH.js.map +0 -1
  392. package/dist/chunks/pk-dropdown-item-A4P4zfVF.js.map +0 -1
  393. package/dist/chunks/pk-dropdown-label-PqDxMkCI.js.map +0 -1
  394. package/dist/chunks/pk-dropdown-menu-C_vasBoa.js.map +0 -1
  395. package/dist/chunks/pk-editable-table-B85NhFYY.js.map +0 -1
  396. package/dist/chunks/pk-field-BJA2fZ6s.js.map +0 -1
  397. package/dist/chunks/pk-form-associated-element-MqaHdIoH.js.map +0 -1
  398. package/dist/chunks/pk-image-browser-DLAQcjFt.js.map +0 -1
  399. package/dist/chunks/pk-input-CiUNLTSW.js.map +0 -1
  400. package/dist/chunks/pk-input-group-addon-piOznzSS.js.map +0 -1
  401. package/dist/chunks/pk-input-group-button-Di2vEJLo.js.map +0 -1
  402. package/dist/chunks/pk-input-group-input-CwaaEfr1.js.map +0 -1
  403. package/dist/chunks/pk-input-group-k7WV0pQI.js.map +0 -1
  404. package/dist/chunks/pk-input-group-text-C0VAdy0J.js.map +0 -1
  405. package/dist/chunks/pk-input-group-textarea-DOG1NIlE.js.map +0 -1
  406. package/dist/chunks/pk-lightswitch-FH5ZxMG2.js.map +0 -1
  407. package/dist/chunks/pk-option-Cx52kLmz.js.map +0 -1
  408. package/dist/chunks/pk-option-group-CYo9Ukue.js.map +0 -1
  409. package/dist/chunks/pk-popover-209LdoPr.js.map +0 -1
  410. package/dist/chunks/pk-popup-0EIt9X_W.js.map +0 -1
  411. package/dist/chunks/pk-radio-group-CruMBeeF.js.map +0 -1
  412. package/dist/chunks/pk-radio-jgj6A0Wy.js.map +0 -1
  413. package/dist/chunks/pk-scroll-area-BaqN798b.js.map +0 -1
  414. package/dist/chunks/pk-select-UUH7FE4H.js.map +0 -1
  415. package/dist/chunks/pk-separator-Bcxg_GO2.js.map +0 -1
  416. package/dist/chunks/pk-spinner-CN365srE.js.map +0 -1
  417. package/dist/chunks/pk-state-panel-DPP7t-er.js.map +0 -1
  418. package/dist/chunks/pk-status-CYcadu0Q.js.map +0 -1
  419. package/dist/chunks/pk-tab-BmXNyDg7.js.map +0 -1
  420. package/dist/chunks/pk-tab-heading-GZHVmCAd.js.map +0 -1
  421. package/dist/chunks/pk-tab-panel-OpM3f_cm.js.map +0 -1
  422. package/dist/chunks/pk-tabs-x26NAw-V.js.map +0 -1
  423. package/dist/chunks/pk-textarea-CBijEmcV.js.map +0 -1
  424. package/dist/chunks/pk-time-picker-D-u5-7pf.js.map +0 -1
  425. package/dist/chunks/pk-tiptap-content-BGxMO3T4.js.map +0 -1
  426. package/dist/chunks/pk-tiptap-editor-BeuyzH5l.js.map +0 -1
  427. package/dist/chunks/pk-tiptap-input-CQojaxDH.js.map +0 -1
  428. package/dist/chunks/pk-toggle-CAtGO_Le.js.map +0 -1
  429. package/dist/chunks/pk-toggle-group-CLso6OE7.js.map +0 -1
  430. package/dist/chunks/pk-tooltip-C6yb4CXI.js.map +0 -1
  431. package/dist/chunks/register-BDO_LUHK.js +0 -154
  432. package/dist/chunks/register-BDO_LUHK.js.map +0 -1
  433. package/dist-loader/chunks/rolldown-runtime-CzwdidQP.js +0 -13
  434. package/dist-loader/chunks/supports-popover-COjbi2RP.js +0 -5
  435. package/dist-loader/chunks/tiptap.styles-BckAim0_.js +0 -1848
  436. /package/dist-loader/chunks/{animate-with-class-BpZi7v-y.js → animate-with-class-CjTZI0NU.js} +0 -0
  437. /package/dist-loader/chunks/{field-labels-D7ccWdRn.js → field-labels-pY-gQDwQ.js} +0 -0
  438. /package/dist-loader/chunks/{has-slot-BvdEcnpm.js → has-slot-DJv86HKx.js} +0 -0
  439. /package/dist-loader/chunks/{mirror-validator-9X0wdFnh.js → mirror-validator-BkZlEv1Z.js} +0 -0
  440. /package/dist-loader/chunks/{overlay-lifecycle-CSIBJZgQ.js → overlay-lifecycle-C582MGBJ.js} +0 -0
  441. /package/dist-loader/chunks/{pk-clear-BL8m1NyC.js → pk-clear-DHxP_2cm.js} +0 -0
  442. /package/dist-loader/chunks/{popup-placement-animation-BQdKabXq.js → popup-placement-animation-ClUYI79z.js} +0 -0
  443. /package/dist-loader/chunks/{popup-pointer-BNwlPGKA.js → popup-pointer-Bh_d205v.js} +0 -0
  444. /package/dist-loader/chunks/{registry-BanyScVR.js → registry-CJc164pT.js} +0 -0
  445. /package/dist-loader/chunks/{required-validator-DCTovZ6r.js → required-validator-I58oJGZ3.js} +0 -0
  446. /package/dist-loader/chunks/{svg-C6YcJMk9.js → svg-BRgqS9vA.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 2.0.25 - 2026-10-15
6
+
7
+ ### Fixed
8
+ - Fixed variable chip keyboard focus indicators to surround the whole chip with a soft lavender ring when configuring it and highlight the remove button separately.
9
+
10
+ ## 2.0.24 - 2026-10-09
11
+
12
+ ### Changed
13
+ - Updated the TipTap editor runtime from 3.22.4 to 3.31.4.
14
+ - Updated the package build toolchain to Vite 8.3.3.
15
+
5
16
  ## 2.0.23 - 2026-10-07
6
17
 
7
18
  ### Added
@@ -13,4 +13,4 @@ function getDeepestActiveElement() {
13
13
  //#endregion
14
14
  export { getDeepestActiveElement as n, activeElements as t };
15
15
 
16
- //# sourceMappingURL=active-elements-DM_lCHaW.js.map
16
+ //# sourceMappingURL=active-elements-739kISON.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"active-elements-DM_lCHaW.js","names":[],"sources":["../../src/a11y/active-elements.ts"],"sourcesContent":["/**\n * Shadow-DOM-aware active element chain — adapted from internal/active-elements.ts.\n */\nexport function* activeElements(\n activeElement: Element | null = document.activeElement,\n): Generator<Element> {\n if (activeElement === null || activeElement === undefined) {\n return;\n }\n\n yield activeElement;\n\n if ('shadowRoot' in activeElement && activeElement.shadowRoot && activeElement.shadowRoot.mode !== 'closed') {\n yield* activeElements(activeElement.shadowRoot.activeElement);\n }\n}\n\nexport function getDeepestActiveElement(): Element | undefined {\n return [...activeElements()].pop();\n}\n"],"mappings":";;;;AAGA,UAAiB,eACb,gBAAgC,SAAS,eACvB;AAClB,KAAI,kBAAkB,QAAQ,kBAAkB,KAAA,EAC5C;AAGJ,OAAM;AAEN,KAAI,gBAAgB,iBAAiB,cAAc,cAAc,cAAc,WAAW,SAAS,SAC/F,QAAO,eAAe,cAAc,WAAW,cAAc;;AAIrE,SAAgB,0BAA+C;AAC3D,QAAO,CAAC,GAAG,gBAAgB,CAAC,CAAC,KAAK"}
1
+ {"version":3,"file":"active-elements-739kISON.js","names":[],"sources":["../../src/a11y/active-elements.ts"],"sourcesContent":["/**\n * Shadow-DOM-aware active element chain — adapted from internal/active-elements.ts.\n */\nexport function* activeElements(\n activeElement: Element | null = document.activeElement,\n): Generator<Element> {\n if (activeElement === null || activeElement === undefined) {\n return;\n }\n\n yield activeElement;\n\n if ('shadowRoot' in activeElement && activeElement.shadowRoot && activeElement.shadowRoot.mode !== 'closed') {\n yield* activeElements(activeElement.shadowRoot.activeElement);\n }\n}\n\nexport function getDeepestActiveElement(): Element | undefined {\n return [...activeElements()].pop();\n}\n"],"mappings":";;;;AAGA,UAAiB,eACb,gBAAgC,SAAS,eACvB;CAClB,IAAI,kBAAkB,QAAQ,kBAAkB,KAAA,GAC5C;CAGJ,MAAM;CAEN,IAAI,gBAAgB,iBAAiB,cAAc,cAAc,cAAc,WAAW,SAAS,UAC/F,OAAO,eAAe,cAAc,WAAW,aAAa;AAEpE;AAEA,SAAgB,0BAA+C;CAC3D,OAAO,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI;AACrC"}
@@ -39,4 +39,4 @@ function animateWithClass(el, className, timeoutMs = 500) {
39
39
  //#endregion
40
40
  export { animateWithClass as t };
41
41
 
42
- //# sourceMappingURL=animate-with-class-NP-yJVt_.js.map
42
+ //# sourceMappingURL=animate-with-class-CjTZI0NU.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"animate-with-class-NP-yJVt_.js","names":[],"sources":["../../src/utils/animate-with-class.ts"],"sourcesContent":["/**\n * Run a CSS animation class on an element and resolve when it finishes.\n * Resolves on animationend/cancel, immediately when no CSS animation runs, or on timeout\n * so overlay hide can never hang forever (stuck `active` / missing `after-hide`).\n */\nexport function animateWithClass(el: HTMLElement, className: string, timeoutMs = 500): Promise<void> {\n return new Promise((resolve) => {\n const controller = new AbortController();\n const { signal } = controller;\n\n if (el.classList.contains(className)) {\n resolve();\n return;\n }\n\n el.classList.add(className);\n\n let resolved = false;\n\n const onEnd = (): void => {\n if (resolved) {\n return;\n }\n\n resolved = true;\n el.classList.remove(className);\n window.clearTimeout(timeoutId);\n resolve();\n controller.abort();\n };\n\n el.addEventListener('animationend', onEnd, { once: true, signal });\n el.addEventListener('animationcancel', onEnd, { once: true, signal });\n\n // If the browser reports running animations that never end (interrupted reverse\n // animations, display:none mid-flight), still settle so overlays can demote.\n const timeoutId = window.setTimeout(onEnd, timeoutMs);\n\n requestAnimationFrame(() => {\n if (!resolved && el.getAnimations().length === 0) {\n onEnd();\n }\n });\n });\n}\n"],"mappings":";;;;;;AAKA,SAAgB,iBAAiB,IAAiB,WAAmB,YAAY,KAAoB;AACjG,QAAO,IAAI,SAAS,YAAY;EAC5B,MAAM,aAAa,IAAI,iBAAiB;EACxC,MAAM,EAAE,WAAW;AAEnB,MAAI,GAAG,UAAU,SAAS,UAAU,EAAE;AAClC,YAAS;AACT;;AAGJ,KAAG,UAAU,IAAI,UAAU;EAE3B,IAAI,WAAW;EAEf,MAAM,cAAoB;AACtB,OAAI,SACA;AAGJ,cAAW;AACX,MAAG,UAAU,OAAO,UAAU;AAC9B,UAAO,aAAa,UAAU;AAC9B,YAAS;AACT,cAAW,OAAO;;AAGtB,KAAG,iBAAiB,gBAAgB,OAAO;GAAE,MAAM;GAAM;GAAQ,CAAC;AAClE,KAAG,iBAAiB,mBAAmB,OAAO;GAAE,MAAM;GAAM;GAAQ,CAAC;EAIrE,MAAM,YAAY,OAAO,WAAW,OAAO,UAAU;AAErD,8BAA4B;AACxB,OAAI,CAAC,YAAY,GAAG,eAAe,CAAC,WAAW,EAC3C,QAAO;IAEb;GACJ"}
1
+ {"version":3,"file":"animate-with-class-CjTZI0NU.js","names":[],"sources":["../../src/utils/animate-with-class.ts"],"sourcesContent":["/**\n * Run a CSS animation class on an element and resolve when it finishes.\n * Resolves on animationend/cancel, immediately when no CSS animation runs, or on timeout\n * so overlay hide can never hang forever (stuck `active` / missing `after-hide`).\n */\nexport function animateWithClass(el: HTMLElement, className: string, timeoutMs = 500): Promise<void> {\n return new Promise((resolve) => {\n const controller = new AbortController();\n const { signal } = controller;\n\n if (el.classList.contains(className)) {\n resolve();\n return;\n }\n\n el.classList.add(className);\n\n let resolved = false;\n\n const onEnd = (): void => {\n if (resolved) {\n return;\n }\n\n resolved = true;\n el.classList.remove(className);\n window.clearTimeout(timeoutId);\n resolve();\n controller.abort();\n };\n\n el.addEventListener('animationend', onEnd, { once: true, signal });\n el.addEventListener('animationcancel', onEnd, { once: true, signal });\n\n // If the browser reports running animations that never end (interrupted reverse\n // animations, display:none mid-flight), still settle so overlays can demote.\n const timeoutId = window.setTimeout(onEnd, timeoutMs);\n\n requestAnimationFrame(() => {\n if (!resolved && el.getAnimations().length === 0) {\n onEnd();\n }\n });\n });\n}\n"],"mappings":";;;;;;AAKA,SAAgB,iBAAiB,IAAiB,WAAmB,YAAY,KAAoB;CACjG,OAAO,IAAI,SAAS,YAAY;EAC5B,MAAM,aAAa,IAAI,gBAAgB;EACvC,MAAM,EAAE,WAAW;EAEnB,IAAI,GAAG,UAAU,SAAS,SAAS,GAAG;GAClC,QAAQ;GACR;EACJ;EAEA,GAAG,UAAU,IAAI,SAAS;EAE1B,IAAI,WAAW;EAEf,MAAM,cAAoB;GACtB,IAAI,UACA;GAGJ,WAAW;GACX,GAAG,UAAU,OAAO,SAAS;GAC7B,OAAO,aAAa,SAAS;GAC7B,QAAQ;GACR,WAAW,MAAM;EACrB;EAEA,GAAG,iBAAiB,gBAAgB,OAAO;GAAE,MAAM;GAAM;EAAO,CAAC;EACjE,GAAG,iBAAiB,mBAAmB,OAAO;GAAE,MAAM;GAAM;EAAO,CAAC;EAIpE,MAAM,YAAY,OAAO,WAAW,OAAO,SAAS;EAEpD,4BAA4B;GACxB,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,CAAC,WAAW,GAC3C,MAAM;EAEd,CAAC;CACL,CAAC;AACL"}
@@ -1,5 +1,5 @@
1
- import { t as SUPPORTS_POPOVER } from "./supports-popover-6lNVStLh.js";
2
- import { n as COMPONENT_MODULE_PATHS } from "./component-registry-DoevfR-u.js";
1
+ import { t as SUPPORTS_POPOVER } from "./supports-popover-BCqyOPtO.js";
2
+ import { n as COMPONENT_MODULE_PATHS } from "./component-registry-B5pnAZsb.js";
3
3
  //#endregion
4
4
  //#region src/utils/portal.ts
5
5
  var defaultPortalClassName;
@@ -155,4 +155,4 @@ var DISCOVERY_COMPLETE_EVENT = DISCOVERY_EVENT;
155
155
  //#endregion
156
156
  export { setPortalClassName as _, startLoader as a, setBasePath as c, getPortalClassName as d, getPortalContainer as f, resolvePositionMethod as g, getShadowRootSelectors as h, preventTurboFouce as i, allDefined as l, getPortalTargetForAppend as m, FOUCE_TIMEOUT_MS as n, stopLoader as o, getPortalMountElement as p, discover as r, getBasePath as s, DISCOVERY_COMPLETE_EVENT as t, configurePluginKitWeb as u, setPortalContainer as v, setShadowRootSelectors as y };
157
157
 
158
- //# sourceMappingURL=autoloader-DnSfHkrD.js.map
158
+ //# sourceMappingURL=autoloader-DcwybeWc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"autoloader-DnSfHkrD.js","names":[],"sources":["../../src/utils/documentScrollStability.ts","../../src/utils/portal.ts","../../src/utils/config.ts","../../src/utilities/defined.ts","../../src/utilities/base-path.ts","../../src/utilities/autoloader.ts"],"sourcesContent":["/**\n * @deprecated No-op. Permanent `html { scrollbar-gutter: stable }` was removed —\n * it reserved an empty scrollbar strip on every Craft CP page. Overlay scroll lock\n * compensates only while locked (see a11y/scroll-lock.ts).\n */\nexport const ensureDocumentScrollStability = (): void => {\n // Intentionally empty — kept so older configurePluginKitWeb call sites stay safe.\n};\n","import { SUPPORTS_POPOVER } from './supports-popover.js';\n\nexport type PortalContainer = HTMLElement | ShadowRoot | null;\n\nlet defaultPortalClassName: string | undefined;\nlet defaultPortalContainer: PortalContainer | undefined;\nlet defaultShadowRootSelectors: string[] = ['[data-plugin-kit-shadow-root]'];\n\nexport const setPortalClassName = (className: string): void => {\n defaultPortalClassName = className.trim() || undefined;\n};\n\nexport const getPortalClassName = (className?: string): string | undefined => {\n return (className ?? defaultPortalClassName)?.trim() || undefined;\n};\n\nexport const setPortalContainer = (container: PortalContainer): void => {\n defaultPortalContainer = container;\n};\n\nexport const getPortalContainer = (container?: PortalContainer): PortalContainer | undefined => {\n return container ?? defaultPortalContainer;\n};\n\nexport const setShadowRootSelectors = (selectors: string[]): void => {\n const normalizedSelectors = (selectors || [])\n .map((selector) => selector.trim())\n .filter(Boolean);\n\n defaultShadowRootSelectors = normalizedSelectors.length > 0\n ? normalizedSelectors\n : ['[data-plugin-kit-shadow-root]'];\n};\n\nexport const getShadowRootSelectors = (): string[] => {\n return defaultShadowRootSelectors;\n};\n\n/**\n * Returns an HTMLElement suitable for appendChild — mirrors React `getPortalTargetForAppend`.\n * When the portal container is a ShadowRoot, prefers a dedicated mount node inside it.\n */\nexport function getPortalTargetForAppend(container?: PortalContainer): HTMLElement | undefined {\n const resolved = getPortalContainer(container);\n\n if (!resolved) {\n return undefined;\n }\n\n if (resolved instanceof HTMLElement) {\n return resolved;\n }\n\n const shadowRoot = resolved;\n\n const target = getShadowRootSelectors()\n .map((selector) => shadowRoot.querySelector<HTMLElement>(selector))\n .find((node) => Boolean(node));\n\n if (target) {\n return target;\n }\n\n return shadowRoot.host instanceof HTMLElement ? shadowRoot.host : undefined;\n}\n\n/** Resolves where floating popup layers should mount. Falls back to `document.body`. */\nexport function getPortalMountElement(container?: PortalContainer): HTMLElement {\n return getPortalTargetForAppend(container) ?? document.body;\n}\n\nexport function resolvePositionMethod(\n positionMethod: 'fixed' | 'absolute' | undefined,\n container?: PortalContainer,\n): 'fixed' | 'absolute' {\n if (positionMethod) {\n return positionMethod;\n }\n\n if (SUPPORTS_POPOVER) {\n return 'absolute';\n }\n\n const resolved = getPortalContainer(container);\n\n if (resolved instanceof ShadowRoot) {\n return 'fixed';\n }\n\n return 'absolute';\n}\n","import { ensureDocumentScrollStability } from './documentScrollStability.js';\nimport {\n setShadowRootSelectors,\n type PortalContainer,\n} from './portal.js';\n\nexport type PluginKitWebConfig = {\n /**\n * @deprecated Popups use the Popover API top layer — not DOM reparenting. Ignored if set.\n */\n portalClassName?: string;\n /**\n * When a `ShadowRoot`, used as a React portal target for Base UI compat.\n * No longer injects document scroll-gutter CSS (see scroll-lock.ts).\n */\n portalContainer?: PortalContainer;\n shadowRootSelectors?: string[];\n};\n\nexport const configurePluginKitWeb = (config: PluginKitWebConfig): void => {\n if (config.portalContainer instanceof ShadowRoot) {\n // Historically forced `html { scrollbar-gutter: stable }`; that is a no-op now.\n ensureDocumentScrollStability();\n }\n\n if (config.shadowRootSelectors) {\n setShadowRootSelectors(config.shadowRootSelectors);\n }\n};\n","export type AllDefinedOptions = {\n /**\n * Accepts a custom element tag name and returns `true` if the element should be awaited.\n * Tag names are always lowercase.\n */\n match?: (tagName: string) => boolean;\n /** Additional tag names to await that may not be in the DOM yet. */\n additionalElements?: string | string[];\n /** Root to search within. Defaults to `document`. Shadow roots are not traversed. */\n root?: Document | ShadowRoot;\n};\n\n/**\n * Waits for custom elements on the page to be registered before resolving.\n * By default, waits for all undefined `pk-*` elements.\n */\nexport async function allDefined(options: AllDefinedOptions = {}): Promise<void> {\n const opts = {\n match: (tagName: string) => tagName.startsWith('pk-'),\n additionalElements: [] as string[],\n root: document,\n ...options,\n };\n\n const additionalElements = Array.isArray(opts.additionalElements)\n ? opts.additionalElements\n : [opts.additionalElements];\n\n const undefinedElements = [...opts.root.querySelectorAll(':not(:defined)')]\n .map((el) => el.localName)\n .filter((tag, index, arr) => arr.indexOf(tag) === index)\n .filter((tag) => opts.match(tag));\n\n const tagsToAwait = [...undefinedElements, ...additionalElements];\n await Promise.all(tagsToAwait.map((tag) => customElements.whenDefined(tag)));\n await new Promise(requestAnimationFrame);\n}\n","let basePath = '';\n\nexport function setBasePath(path: string): void {\n basePath = path;\n}\n\nexport function getBasePath(subpath = ''): string {\n if (!basePath) {\n const el = document.querySelector('[data-plugin-kit]');\n\n if (el?.hasAttribute('data-plugin-kit')) {\n const rootRelativeUrl = new URL(el.getAttribute('data-plugin-kit') ?? '', window.location.href).pathname;\n setBasePath(rootRelativeUrl);\n } else {\n const scripts = [...document.getElementsByTagName('script')];\n const pkScript = scripts.find(\n (script) =>\n script.src.endsWith('plugin-kit.js') || script.src.endsWith('plugin-kit.loader.js'),\n );\n\n if (pkScript) {\n const path = String(pkScript.getAttribute('src'));\n setBasePath(path.split('/').slice(0, -1).join('/'));\n }\n }\n }\n\n return basePath.replace(/\\/$/, '') + (subpath ? `/${subpath.replace(/^\\//, '')}` : '');\n}\n","import { COMPONENT_MODULE_PATHS } from '../component-registry.js';\nimport { getBasePath } from './base-path.js';\n\nconst PK_PREFIX = 'pk-';\nconst DISCOVERY_EVENT = 'pk-discovery-complete';\n\nconst observer = new MutationObserver((mutations) => {\n for (const { addedNodes } of mutations) {\n for (const node of addedNodes) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n void discover(node as Element);\n }\n }\n }\n});\n\nexport function startLoader(): void {\n void discover(document.documentElement);\n observer.observe(document.documentElement, { subtree: true, childList: true });\n}\n\nexport function stopLoader(): void {\n observer.disconnect();\n}\n\nexport async function discover(root: Document | Element = document): Promise<void> {\n const rootTagName = root instanceof Element ? root.tagName.toLowerCase() : '';\n const rootIsPluginKitComponent = rootTagName.startsWith(PK_PREFIX);\n const tags = [...root.querySelectorAll(':not(:defined)')]\n .map((el) => el.tagName.toLowerCase())\n .filter((tag) => tag.startsWith(PK_PREFIX));\n\n if (rootIsPluginKitComponent && !customElements.get(rootTagName)) {\n tags.push(rootTagName);\n }\n\n const preloadSelectors = root.querySelectorAll('[data-pk-preload]');\n const preloadRoots =\n root instanceof Element && root.hasAttribute('data-pk-preload')\n ? [root, ...preloadSelectors]\n : preloadSelectors;\n\n for (const el of preloadRoots) {\n tags.push(\n ...el\n .getAttribute('data-pk-preload')!\n .split(/\\s+/)\n .filter((tag) => tag.startsWith(PK_PREFIX)),\n );\n }\n\n const tagsToRegister = [...new Set(tags)];\n const imports = await Promise.allSettled(tagsToRegister.map((tagName) => register(tagName)));\n\n for (const imp of imports) {\n if (imp.status === 'rejected') {\n console.warn(imp.reason);\n }\n }\n\n await new Promise(requestAnimationFrame);\n\n root.dispatchEvent(\n new CustomEvent(DISCOVERY_EVENT, {\n bubbles: false,\n cancelable: false,\n composed: true,\n }),\n );\n}\n\nfunction register(tagName: string): Promise<void> {\n if (customElements.get(tagName)) {\n return Promise.resolve();\n }\n\n const modulePath = COMPONENT_MODULE_PATHS[tagName];\n\n if (!modulePath) {\n return Promise.reject(new Error(`Unable to autoload <${tagName}> — no module path registered`));\n }\n\n const path = getBasePath(modulePath);\n\n return import(/* @vite-ignore */ path).then(() => undefined);\n}\n\nlet turboTimeout = 2000;\n\n/** Prevent FOUCE when navigating with Turbo (Hotwire). */\nexport function preventTurboFouce(timeout = 2000): void {\n turboTimeout = timeout;\n document.addEventListener('turbo:before-render', handleTurboRender);\n}\n\nasync function handleTurboRender(event: Event): Promise<void> {\n const turboEvent = event as CustomEvent<{ newBody: Element; resume: () => void }>;\n const newBody = turboEvent.detail.newBody;\n\n turboEvent.preventDefault();\n\n try {\n await Promise.race([\n discover(newBody),\n new Promise<void>((resolve) => setTimeout(resolve, turboTimeout)),\n ]);\n } finally {\n turboEvent.detail.resume();\n }\n}\n\nexport const FOUCE_TIMEOUT_MS = 2000;\nexport const DISCOVERY_COMPLETE_EVENT = DISCOVERY_EVENT;\n"],"mappings":"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"}
1
+ {"version":3,"file":"autoloader-DcwybeWc.js","names":[],"sources":["../../src/utils/documentScrollStability.ts","../../src/utils/portal.ts","../../src/utils/config.ts","../../src/utilities/defined.ts","../../src/utilities/base-path.ts","../../src/utilities/autoloader.ts"],"sourcesContent":["/**\n * @deprecated No-op. Permanent `html { scrollbar-gutter: stable }` was removed —\n * it reserved an empty scrollbar strip on every Craft CP page. Overlay scroll lock\n * compensates only while locked (see a11y/scroll-lock.ts).\n */\nexport const ensureDocumentScrollStability = (): void => {\n // Intentionally empty — kept so older configurePluginKitWeb call sites stay safe.\n};\n","import { SUPPORTS_POPOVER } from './supports-popover.js';\n\nexport type PortalContainer = HTMLElement | ShadowRoot | null;\n\nlet defaultPortalClassName: string | undefined;\nlet defaultPortalContainer: PortalContainer | undefined;\nlet defaultShadowRootSelectors: string[] = ['[data-plugin-kit-shadow-root]'];\n\nexport const setPortalClassName = (className: string): void => {\n defaultPortalClassName = className.trim() || undefined;\n};\n\nexport const getPortalClassName = (className?: string): string | undefined => {\n return (className ?? defaultPortalClassName)?.trim() || undefined;\n};\n\nexport const setPortalContainer = (container: PortalContainer): void => {\n defaultPortalContainer = container;\n};\n\nexport const getPortalContainer = (container?: PortalContainer): PortalContainer | undefined => {\n return container ?? defaultPortalContainer;\n};\n\nexport const setShadowRootSelectors = (selectors: string[]): void => {\n const normalizedSelectors = (selectors || [])\n .map((selector) => selector.trim())\n .filter(Boolean);\n\n defaultShadowRootSelectors = normalizedSelectors.length > 0\n ? normalizedSelectors\n : ['[data-plugin-kit-shadow-root]'];\n};\n\nexport const getShadowRootSelectors = (): string[] => {\n return defaultShadowRootSelectors;\n};\n\n/**\n * Returns an HTMLElement suitable for appendChild — mirrors React `getPortalTargetForAppend`.\n * When the portal container is a ShadowRoot, prefers a dedicated mount node inside it.\n */\nexport function getPortalTargetForAppend(container?: PortalContainer): HTMLElement | undefined {\n const resolved = getPortalContainer(container);\n\n if (!resolved) {\n return undefined;\n }\n\n if (resolved instanceof HTMLElement) {\n return resolved;\n }\n\n const shadowRoot = resolved;\n\n const target = getShadowRootSelectors()\n .map((selector) => shadowRoot.querySelector<HTMLElement>(selector))\n .find((node) => Boolean(node));\n\n if (target) {\n return target;\n }\n\n return shadowRoot.host instanceof HTMLElement ? shadowRoot.host : undefined;\n}\n\n/** Resolves where floating popup layers should mount. Falls back to `document.body`. */\nexport function getPortalMountElement(container?: PortalContainer): HTMLElement {\n return getPortalTargetForAppend(container) ?? document.body;\n}\n\nexport function resolvePositionMethod(\n positionMethod: 'fixed' | 'absolute' | undefined,\n container?: PortalContainer,\n): 'fixed' | 'absolute' {\n if (positionMethod) {\n return positionMethod;\n }\n\n if (SUPPORTS_POPOVER) {\n return 'absolute';\n }\n\n const resolved = getPortalContainer(container);\n\n if (resolved instanceof ShadowRoot) {\n return 'fixed';\n }\n\n return 'absolute';\n}\n","import { ensureDocumentScrollStability } from './documentScrollStability.js';\nimport {\n setShadowRootSelectors,\n type PortalContainer,\n} from './portal.js';\n\nexport type PluginKitWebConfig = {\n /**\n * @deprecated Popups use the Popover API top layer — not DOM reparenting. Ignored if set.\n */\n portalClassName?: string;\n /**\n * When a `ShadowRoot`, used as a React portal target for Base UI compat.\n * No longer injects document scroll-gutter CSS (see scroll-lock.ts).\n */\n portalContainer?: PortalContainer;\n shadowRootSelectors?: string[];\n};\n\nexport const configurePluginKitWeb = (config: PluginKitWebConfig): void => {\n if (config.portalContainer instanceof ShadowRoot) {\n // Historically forced `html { scrollbar-gutter: stable }`; that is a no-op now.\n ensureDocumentScrollStability();\n }\n\n if (config.shadowRootSelectors) {\n setShadowRootSelectors(config.shadowRootSelectors);\n }\n};\n","export type AllDefinedOptions = {\n /**\n * Accepts a custom element tag name and returns `true` if the element should be awaited.\n * Tag names are always lowercase.\n */\n match?: (tagName: string) => boolean;\n /** Additional tag names to await that may not be in the DOM yet. */\n additionalElements?: string | string[];\n /** Root to search within. Defaults to `document`. Shadow roots are not traversed. */\n root?: Document | ShadowRoot;\n};\n\n/**\n * Waits for custom elements on the page to be registered before resolving.\n * By default, waits for all undefined `pk-*` elements.\n */\nexport async function allDefined(options: AllDefinedOptions = {}): Promise<void> {\n const opts = {\n match: (tagName: string) => tagName.startsWith('pk-'),\n additionalElements: [] as string[],\n root: document,\n ...options,\n };\n\n const additionalElements = Array.isArray(opts.additionalElements)\n ? opts.additionalElements\n : [opts.additionalElements];\n\n const undefinedElements = [...opts.root.querySelectorAll(':not(:defined)')]\n .map((el) => el.localName)\n .filter((tag, index, arr) => arr.indexOf(tag) === index)\n .filter((tag) => opts.match(tag));\n\n const tagsToAwait = [...undefinedElements, ...additionalElements];\n await Promise.all(tagsToAwait.map((tag) => customElements.whenDefined(tag)));\n await new Promise(requestAnimationFrame);\n}\n","let basePath = '';\n\nexport function setBasePath(path: string): void {\n basePath = path;\n}\n\nexport function getBasePath(subpath = ''): string {\n if (!basePath) {\n const el = document.querySelector('[data-plugin-kit]');\n\n if (el?.hasAttribute('data-plugin-kit')) {\n const rootRelativeUrl = new URL(el.getAttribute('data-plugin-kit') ?? '', window.location.href).pathname;\n setBasePath(rootRelativeUrl);\n } else {\n const scripts = [...document.getElementsByTagName('script')];\n const pkScript = scripts.find(\n (script) =>\n script.src.endsWith('plugin-kit.js') || script.src.endsWith('plugin-kit.loader.js'),\n );\n\n if (pkScript) {\n const path = String(pkScript.getAttribute('src'));\n setBasePath(path.split('/').slice(0, -1).join('/'));\n }\n }\n }\n\n return basePath.replace(/\\/$/, '') + (subpath ? `/${subpath.replace(/^\\//, '')}` : '');\n}\n","import { COMPONENT_MODULE_PATHS } from '../component-registry.js';\nimport { getBasePath } from './base-path.js';\n\nconst PK_PREFIX = 'pk-';\nconst DISCOVERY_EVENT = 'pk-discovery-complete';\n\nconst observer = new MutationObserver((mutations) => {\n for (const { addedNodes } of mutations) {\n for (const node of addedNodes) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n void discover(node as Element);\n }\n }\n }\n});\n\nexport function startLoader(): void {\n void discover(document.documentElement);\n observer.observe(document.documentElement, { subtree: true, childList: true });\n}\n\nexport function stopLoader(): void {\n observer.disconnect();\n}\n\nexport async function discover(root: Document | Element = document): Promise<void> {\n const rootTagName = root instanceof Element ? root.tagName.toLowerCase() : '';\n const rootIsPluginKitComponent = rootTagName.startsWith(PK_PREFIX);\n const tags = [...root.querySelectorAll(':not(:defined)')]\n .map((el) => el.tagName.toLowerCase())\n .filter((tag) => tag.startsWith(PK_PREFIX));\n\n if (rootIsPluginKitComponent && !customElements.get(rootTagName)) {\n tags.push(rootTagName);\n }\n\n const preloadSelectors = root.querySelectorAll('[data-pk-preload]');\n const preloadRoots =\n root instanceof Element && root.hasAttribute('data-pk-preload')\n ? [root, ...preloadSelectors]\n : preloadSelectors;\n\n for (const el of preloadRoots) {\n tags.push(\n ...el\n .getAttribute('data-pk-preload')!\n .split(/\\s+/)\n .filter((tag) => tag.startsWith(PK_PREFIX)),\n );\n }\n\n const tagsToRegister = [...new Set(tags)];\n const imports = await Promise.allSettled(tagsToRegister.map((tagName) => register(tagName)));\n\n for (const imp of imports) {\n if (imp.status === 'rejected') {\n console.warn(imp.reason);\n }\n }\n\n await new Promise(requestAnimationFrame);\n\n root.dispatchEvent(\n new CustomEvent(DISCOVERY_EVENT, {\n bubbles: false,\n cancelable: false,\n composed: true,\n }),\n );\n}\n\nfunction register(tagName: string): Promise<void> {\n if (customElements.get(tagName)) {\n return Promise.resolve();\n }\n\n const modulePath = COMPONENT_MODULE_PATHS[tagName];\n\n if (!modulePath) {\n return Promise.reject(new Error(`Unable to autoload <${tagName}> — no module path registered`));\n }\n\n const path = getBasePath(modulePath);\n\n return import(/* @vite-ignore */ path).then(() => undefined);\n}\n\nlet turboTimeout = 2000;\n\n/** Prevent FOUCE when navigating with Turbo (Hotwire). */\nexport function preventTurboFouce(timeout = 2000): void {\n turboTimeout = timeout;\n document.addEventListener('turbo:before-render', handleTurboRender);\n}\n\nasync function handleTurboRender(event: Event): Promise<void> {\n const turboEvent = event as CustomEvent<{ newBody: Element; resume: () => void }>;\n const newBody = turboEvent.detail.newBody;\n\n turboEvent.preventDefault();\n\n try {\n await Promise.race([\n discover(newBody),\n new Promise<void>((resolve) => setTimeout(resolve, turboTimeout)),\n ]);\n } finally {\n turboEvent.detail.resume();\n }\n}\n\nexport const FOUCE_TIMEOUT_MS = 2000;\nexport const DISCOVERY_COMPLETE_EVENT = DISCOVERY_EVENT;\n"],"mappings":"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"}
@@ -144,4 +144,4 @@ function buttonGroupBorderJoinStyles(surfaceSelector) {
144
144
  //#endregion
145
145
  export { buttonGroupIndentStyles as i, buttonGroupCornerRadiusStyles as n, buttonGroupCornerRoleStyles as r, buttonGroupBorderJoinStyles as t };
146
146
 
147
- //# sourceMappingURL=button-group-item.styles-G05d0DNI.js.map
147
+ //# sourceMappingURL=button-group-item.styles-D7tuu-sr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"button-group-item.styles-G05d0DNI.js","names":[],"sources":["../../src/components/button-group/button-group-item.styles.ts"],"sourcesContent":["import { css, unsafeCSS, type CSSResult } from 'lit';\n\n/**\n * Apply grouped corner radii on an inner surface — reads vars set by `pk-button-group` on the host.\n * Mirrors `--_button-*-radius` consumption in `pk-button`.\n */\nexport function buttonGroupCornerRadiusStyles(\n surfaceSelector: string,\n fallbackRadius = 'var(--pk-btn-radius, var(--pk-radius-lg))',\n): CSSResult {\n const surface = unsafeCSS(surfaceSelector);\n const fallback = unsafeCSS(fallbackRadius);\n\n return css`\n ${surface} {\n border-top-left-radius: var(--pk-bg-start-start-radius, ${fallback});\n border-top-right-radius: var(--pk-bg-start-end-radius, ${fallback});\n border-bottom-left-radius: var(--pk-bg-end-start-radius, ${fallback});\n border-bottom-right-radius: var(--pk-bg-end-end-radius, ${fallback});\n }\n `;\n}\n\n/** Zero inner corner radii based on group position — consumed by `buttonGroupCornerRadiusStyles`. */\nexport function buttonGroupCornerRoleStyles(): CSSResult {\n return css`\n :host([data-pk-group-orientation='horizontal']:not([data-pk-group-item-first]):not([data-pk-group-item-last])) {\n --pk-bg-start-start-radius: 0;\n --pk-bg-start-end-radius: 0;\n --pk-bg-end-start-radius: 0;\n --pk-bg-end-end-radius: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-item-first]:not([data-pk-group-item-last])) {\n --pk-bg-start-end-radius: 0;\n --pk-bg-end-end-radius: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-item-last]:not([data-pk-group-item-first])) {\n --pk-bg-start-start-radius: 0;\n --pk-bg-end-start-radius: 0;\n }\n\n :host([data-pk-group-orientation='vertical']:not([data-pk-group-item-first]):not([data-pk-group-item-last])) {\n --pk-bg-start-start-radius: 0;\n --pk-bg-start-end-radius: 0;\n --pk-bg-end-start-radius: 0;\n --pk-bg-end-end-radius: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-item-first]:not([data-pk-group-item-last])) {\n --pk-bg-end-start-radius: 0;\n --pk-bg-end-end-radius: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-item-last]:not([data-pk-group-item-first])) {\n --pk-bg-start-start-radius: 0;\n --pk-bg-start-end-radius: 0;\n }\n `;\n}\n\n/** Overlap margins for grouped controls — axis follows group orientation. */\nexport function buttonGroupIndentStyles(): CSSResult {\n return css`\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join][variant='outline']),\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join][variant='dashed']) {\n margin-inline-start: var(--pk-bg-horizontal-indent-outlined, 0);\n margin-block-start: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-join][variant='outline']),\n :host([data-pk-group-orientation='vertical'][data-pk-group-join][variant='dashed']) {\n margin-block-start: var(--pk-bg-vertical-indent-outlined, 0);\n margin-inline-start: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join]:not([variant='outline']):not([variant='dashed']):not([variant='link']):not([variant='none'])) {\n margin-inline-start: var(--pk-bg-horizontal-indent, 0);\n margin-block-start: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-join]:not([variant='outline']):not([variant='dashed']):not([variant='link']):not([variant='none'])) {\n margin-block-start: var(--pk-bg-vertical-indent, 0);\n margin-inline-start: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider][data-pk-group-join][variant='primary']),\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider][data-pk-group-join][variant='secondary']),\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider][data-pk-group-join][variant='default']) {\n margin-inline-start: 0;\n margin-block-start: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider][data-pk-group-join][variant='primary']),\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider][data-pk-group-join][variant='secondary']),\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider][data-pk-group-join][variant='default']) {\n margin-block-start: 0;\n margin-inline-start: 0;\n }\n\n /* Filled variants — Craft margin gap; parent background shows through.\n * !important: outer preflight/utilities beat non-important :host margin\n * (revert-layer cannot restore shadow host values — it still specifies outer 0).\n */\n :host([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail][variant='primary']),\n :host([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail][variant='secondary']),\n :host([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail][variant='default']) {\n margin-inline-end: var(--pk-btn-group-gap, 1px) !important;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail][variant='primary']),\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail][variant='secondary']),\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail][variant='default']) {\n margin-block-end: var(--pk-btn-group-gap, 1px) !important;\n }\n `;\n}\n\n/** Collapse the shared internal border edge on bordered grouped surfaces. */\nexport function buttonGroupBorderJoinStyles(surfaceSelector: string): CSSResult {\n const surface = unsafeCSS(surfaceSelector);\n\n return css`\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join]:not([data-pk-group-divider])) ${surface} {\n border-left-width: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-join]:not([data-pk-group-divider])) ${surface} {\n border-top-width: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider]:not([variant='outline']):not([variant='dashed'])) ${surface} {\n border-left-width: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider]:not([variant='outline']):not([variant='dashed'])) ${surface} {\n border-top-width: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail][variant='outline']) ${surface},\n :host([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail][variant='dashed']) ${surface} {\n border-right-width: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail][variant='outline']) ${surface},\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail][variant='dashed']) ${surface} {\n border-bottom-width: 0;\n }\n `;\n}\n"],"mappings":";;;;;;AAMA,SAAgB,8BACZ,iBACA,iBAAiB,6CACR;CACT,MAAM,UAAU,UAAU,gBAAgB;CAC1C,MAAM,WAAW,UAAU,eAAe;AAE1C,QAAO,GAAG;UACJ,QAAQ;sEACoD,SAAS;qEACV,SAAS;uEACP,SAAS;sEACV,SAAS;;;;;AAM/E,SAAgB,8BAAyC;AACrD,QAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCd,SAAgB,0BAAqC;AACjD,QAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDd,SAAgB,4BAA4B,iBAAoC;CAC5E,MAAM,UAAU,UAAU,gBAAgB;AAE1C,QAAO,GAAG;2GAC6F,QAAQ;;;;yGAIV,QAAQ;;;;kIAIiB,QAAQ;;;;gIAIV,QAAQ;;;;2GAI7B,QAAQ;0GACT,QAAQ;;;;yGAIT,QAAQ;wGACT,QAAQ"}
1
+ {"version":3,"file":"button-group-item.styles-D7tuu-sr.js","names":[],"sources":["../../src/components/button-group/button-group-item.styles.ts"],"sourcesContent":["import { css, unsafeCSS, type CSSResult } from 'lit';\n\n/**\n * Apply grouped corner radii on an inner surface — reads vars set by `pk-button-group` on the host.\n * Mirrors `--_button-*-radius` consumption in `pk-button`.\n */\nexport function buttonGroupCornerRadiusStyles(\n surfaceSelector: string,\n fallbackRadius = 'var(--pk-btn-radius, var(--pk-radius-lg))',\n): CSSResult {\n const surface = unsafeCSS(surfaceSelector);\n const fallback = unsafeCSS(fallbackRadius);\n\n return css`\n ${surface} {\n border-top-left-radius: var(--pk-bg-start-start-radius, ${fallback});\n border-top-right-radius: var(--pk-bg-start-end-radius, ${fallback});\n border-bottom-left-radius: var(--pk-bg-end-start-radius, ${fallback});\n border-bottom-right-radius: var(--pk-bg-end-end-radius, ${fallback});\n }\n `;\n}\n\n/** Zero inner corner radii based on group position — consumed by `buttonGroupCornerRadiusStyles`. */\nexport function buttonGroupCornerRoleStyles(): CSSResult {\n return css`\n :host([data-pk-group-orientation='horizontal']:not([data-pk-group-item-first]):not([data-pk-group-item-last])) {\n --pk-bg-start-start-radius: 0;\n --pk-bg-start-end-radius: 0;\n --pk-bg-end-start-radius: 0;\n --pk-bg-end-end-radius: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-item-first]:not([data-pk-group-item-last])) {\n --pk-bg-start-end-radius: 0;\n --pk-bg-end-end-radius: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-item-last]:not([data-pk-group-item-first])) {\n --pk-bg-start-start-radius: 0;\n --pk-bg-end-start-radius: 0;\n }\n\n :host([data-pk-group-orientation='vertical']:not([data-pk-group-item-first]):not([data-pk-group-item-last])) {\n --pk-bg-start-start-radius: 0;\n --pk-bg-start-end-radius: 0;\n --pk-bg-end-start-radius: 0;\n --pk-bg-end-end-radius: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-item-first]:not([data-pk-group-item-last])) {\n --pk-bg-end-start-radius: 0;\n --pk-bg-end-end-radius: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-item-last]:not([data-pk-group-item-first])) {\n --pk-bg-start-start-radius: 0;\n --pk-bg-start-end-radius: 0;\n }\n `;\n}\n\n/** Overlap margins for grouped controls — axis follows group orientation. */\nexport function buttonGroupIndentStyles(): CSSResult {\n return css`\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join][variant='outline']),\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join][variant='dashed']) {\n margin-inline-start: var(--pk-bg-horizontal-indent-outlined, 0);\n margin-block-start: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-join][variant='outline']),\n :host([data-pk-group-orientation='vertical'][data-pk-group-join][variant='dashed']) {\n margin-block-start: var(--pk-bg-vertical-indent-outlined, 0);\n margin-inline-start: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join]:not([variant='outline']):not([variant='dashed']):not([variant='link']):not([variant='none'])) {\n margin-inline-start: var(--pk-bg-horizontal-indent, 0);\n margin-block-start: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-join]:not([variant='outline']):not([variant='dashed']):not([variant='link']):not([variant='none'])) {\n margin-block-start: var(--pk-bg-vertical-indent, 0);\n margin-inline-start: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider][data-pk-group-join][variant='primary']),\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider][data-pk-group-join][variant='secondary']),\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider][data-pk-group-join][variant='default']) {\n margin-inline-start: 0;\n margin-block-start: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider][data-pk-group-join][variant='primary']),\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider][data-pk-group-join][variant='secondary']),\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider][data-pk-group-join][variant='default']) {\n margin-block-start: 0;\n margin-inline-start: 0;\n }\n\n /* Filled variants — Craft margin gap; parent background shows through.\n * !important: outer preflight/utilities beat non-important :host margin\n * (revert-layer cannot restore shadow host values — it still specifies outer 0).\n */\n :host([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail][variant='primary']),\n :host([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail][variant='secondary']),\n :host([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail][variant='default']) {\n margin-inline-end: var(--pk-btn-group-gap, 1px) !important;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail][variant='primary']),\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail][variant='secondary']),\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail][variant='default']) {\n margin-block-end: var(--pk-btn-group-gap, 1px) !important;\n }\n `;\n}\n\n/** Collapse the shared internal border edge on bordered grouped surfaces. */\nexport function buttonGroupBorderJoinStyles(surfaceSelector: string): CSSResult {\n const surface = unsafeCSS(surfaceSelector);\n\n return css`\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join]:not([data-pk-group-divider])) ${surface} {\n border-left-width: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-join]:not([data-pk-group-divider])) ${surface} {\n border-top-width: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider]:not([variant='outline']):not([variant='dashed'])) ${surface} {\n border-left-width: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider]:not([variant='outline']):not([variant='dashed'])) ${surface} {\n border-top-width: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail][variant='outline']) ${surface},\n :host([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail][variant='dashed']) ${surface} {\n border-right-width: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail][variant='outline']) ${surface},\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail][variant='dashed']) ${surface} {\n border-bottom-width: 0;\n }\n `;\n}\n"],"mappings":";;;;;;AAMA,SAAgB,8BACZ,iBACA,iBAAiB,6CACR;CACT,MAAM,UAAU,UAAU,eAAe;CACzC,MAAM,WAAW,UAAU,cAAc;CAEzC,OAAO,GAAG;UACJ,QAAQ;sEACoD,SAAS;qEACV,SAAS;uEACP,SAAS;sEACV,SAAS;;;AAG/E;;AAGA,SAAgB,8BAAyC;CACrD,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCd;;AAGA,SAAgB,0BAAqC;CACjD,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDd;;AAGA,SAAgB,4BAA4B,iBAAoC;CAC5E,MAAM,UAAU,UAAU,eAAe;CAEzC,OAAO,GAAG;2GAC6F,QAAQ;;;;yGAIV,QAAQ;;;;kIAIiB,QAAQ;;;;gIAIV,QAAQ;;;;2GAI7B,QAAQ;0GACT,QAAQ;;;;yGAIT,QAAQ;wGACT,QAAQ;;;;AAIhH"}
@@ -62,6 +62,7 @@ var COMPONENT_MODULE_PATHS = {
62
62
  "pk-connect-oauth": "components/connect/connect-oauth.js",
63
63
  "pk-editable-table": "components/editable-table/editable-table.js"
64
64
  };
65
+ Object.keys(COMPONENT_MODULE_PATHS);
65
66
  /** Vite loader-build entries: output key → source module. */
66
67
  var LOADER_COMPONENT_ENTRIES = {
67
68
  "components/alert/alert": "src/components/alert/pk-alert.ts",
@@ -139,4 +140,4 @@ var BUNDLER_TAG_IMPORT_PATHS = Object.fromEntries(Object.keys(BUNDLER_COMPONENT_
139
140
  //#endregion
140
141
  export { COMPONENT_MODULE_PATHS as n, BUNDLER_TAG_IMPORT_PATHS as t };
141
142
 
142
- //# sourceMappingURL=component-registry-DoevfR-u.js.map
143
+ //# sourceMappingURL=component-registry-B5pnAZsb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"component-registry-DoevfR-u.js","names":[],"sources":["../../src/component-registry.ts"],"sourcesContent":["/**\n * Canonical tag → loader module path mapping for the autoloader.\n * Module paths are relative to the directory that contains plugin-kit.loader.js.\n */\nexport const COMPONENT_MODULE_PATHS: Record<string, string> = {\n 'pk-alert': 'components/alert/alert.js',\n 'pk-state-panel': 'components/state-panel/state-panel.js',\n 'pk-spinner': 'components/spinner/spinner.js',\n 'pk-icon': 'components/icon/icon.js',\n 'pk-button': 'components/button/button.js',\n 'pk-checkbox': 'components/checkbox/checkbox.js',\n 'pk-checkbox-select': 'components/checkbox-select/checkbox-select.js',\n 'pk-color-input': 'components/color-input/color-input.js',\n 'pk-code-editor': 'components/code-editor/code-editor.js',\n 'pk-input': 'components/input/input.js',\n 'pk-input-group': 'components/input-group/input-group.js',\n 'pk-input-group-addon': 'components/input-group/input-group-addon.js',\n 'pk-input-group-button': 'components/input-group/input-group-button.js',\n 'pk-input-group-input': 'components/input-group/input-group-input.js',\n 'pk-input-group-text': 'components/input-group/input-group-text.js',\n 'pk-input-group-textarea': 'components/input-group/input-group-textarea.js',\n 'pk-textarea': 'components/textarea/textarea.js',\n 'pk-tiptap-editor': 'components/tiptap/tiptap-editor.js',\n 'pk-tiptap-input': 'components/tiptap/tiptap-input.js',\n 'pk-tiptap-content': 'components/tiptap/tiptap-content.js',\n 'pk-field': 'components/field/field.js',\n 'pk-separator': 'components/separator/separator.js',\n 'pk-status': 'components/status/status.js',\n 'pk-toggle': 'components/toggle/toggle.js',\n 'pk-toggle-group': 'components/toggle-group/toggle-group.js',\n 'pk-lightswitch': 'components/lightswitch/lightswitch.js',\n 'pk-button-group': 'components/button-group/button-group.js',\n 'pk-button-group-separator': 'components/button-group/button-group-separator.js',\n 'pk-button-group-text': 'components/button-group/button-group-text.js',\n 'pk-dialog': 'components/dialog/dialog.js',\n 'pk-popup': 'components/popup/popup.js',\n 'pk-dropdown-label': 'components/dropdown-menu/dropdown-label.js',\n 'pk-dropdown-item': 'components/dropdown-menu/dropdown-item.js',\n 'pk-dropdown-separator': 'components/dropdown-menu/dropdown-separator.js',\n 'pk-dropdown-menu': 'components/dropdown-menu/dropdown-menu.js',\n 'pk-popover': 'components/popover/popover.js',\n 'pk-tooltip': 'components/tooltip/tooltip.js',\n 'pk-radio': 'components/radio-group/radio.js',\n 'pk-radio-group': 'components/radio-group/radio-group.js',\n 'pk-tab': 'components/tabs/tab.js',\n 'pk-tab-heading': 'components/tabs/tab-heading.js',\n 'pk-tab-panel': 'components/tabs/tab-panel.js',\n 'pk-tabs': 'components/tabs/tabs.js',\n 'pk-scroll-area': 'components/scroll-area/scroll-area.js',\n 'pk-option': 'components/select/option.js',\n 'pk-option-group': 'components/select/option-group.js',\n 'pk-select': 'components/select/select.js',\n 'pk-calendar': 'components/calendar/calendar.js',\n 'pk-date-picker': 'components/date-picker/date-picker.js',\n 'pk-combobox': 'components/combobox/combobox.js',\n 'pk-autocomplete': 'components/autocomplete/autocomplete.js',\n 'pk-image-browser': 'components/image-browser/image-browser.js',\n 'pk-time-picker': 'components/time-picker/time-picker.js',\n 'pk-copy-button': 'components/copy-button/copy-button.js',\n 'pk-connect': 'components/connect/connect.js',\n 'pk-connect-oauth': 'components/connect/connect-oauth.js',\n 'pk-editable-table': 'components/editable-table/editable-table.js',\n};\n\n/**\n * Canonical list of every `pk-*` custom element tag.\n * Single source of truth for FOUCE CSS generation and any tag enumeration.\n */\nexport const PK_COMPONENT_TAGS: readonly string[] = Object.keys(COMPONENT_MODULE_PATHS);\n\n/** Vite loader-build entries: output key → source module. */\nexport const LOADER_COMPONENT_ENTRIES: Record<string, string> = {\n 'components/alert/alert': 'src/components/alert/pk-alert.ts',\n 'components/state-panel/state-panel': 'src/components/state-panel/pk-state-panel.ts',\n 'components/spinner/spinner': 'src/components/spinner/pk-spinner.ts',\n // Loader ships the full icon set; bundler family `components/icon.js` stays opt-in.\n 'components/icon/icon': 'src/components/icon/pk-icon-loader.ts',\n 'components/button/button': 'src/components/button/pk-button.ts',\n 'components/checkbox/checkbox': 'src/components/checkbox/pk-checkbox.ts',\n 'components/checkbox-select/checkbox-select': 'src/components/checkbox-select/pk-checkbox-select.ts',\n 'components/color-input/color-input': 'src/components/color-input/pk-color-input.ts',\n 'components/code-editor/code-editor': 'src/components/code-editor/pk-code-editor.ts',\n 'components/input/input': 'src/components/input/pk-input.ts',\n 'components/input-group/input-group': 'src/components/input-group/pk-input-group.ts',\n 'components/input-group/input-group-addon': 'src/components/input-group/pk-input-group-addon.ts',\n 'components/input-group/input-group-button': 'src/components/input-group/pk-input-group-button.ts',\n 'components/input-group/input-group-input': 'src/components/input-group/pk-input-group-input.ts',\n 'components/input-group/input-group-text': 'src/components/input-group/pk-input-group-text.ts',\n 'components/input-group/input-group-textarea': 'src/components/input-group/pk-input-group-textarea.ts',\n 'components/textarea/textarea': 'src/components/textarea/pk-textarea.ts',\n 'components/tiptap/tiptap-editor': 'src/components/tiptap/pk-tiptap-editor.ts',\n 'components/tiptap/tiptap-input': 'src/components/tiptap/pk-tiptap-input.ts',\n 'components/tiptap/tiptap-content': 'src/components/tiptap/pk-tiptap-content.ts',\n 'components/field/field': 'src/components/field/pk-field.ts',\n 'components/separator/separator': 'src/components/separator/pk-separator.ts',\n 'components/status/status': 'src/components/status/pk-status.ts',\n 'components/toggle/toggle': 'src/components/toggle/pk-toggle.ts',\n 'components/toggle-group/toggle-group': 'src/components/toggle-group/pk-toggle-group.ts',\n 'components/lightswitch/lightswitch': 'src/components/lightswitch/pk-lightswitch.ts',\n 'components/button-group/button-group': 'src/components/button-group/pk-button-group.ts',\n 'components/button-group/button-group-separator': 'src/components/button-group/pk-button-group-separator.ts',\n 'components/button-group/button-group-text': 'src/components/button-group/pk-button-group-text.ts',\n 'components/dialog/dialog': 'src/components/dialog/pk-dialog.ts',\n 'components/popup/popup': 'src/components/popup/pk-popup.ts',\n 'components/dropdown-menu/dropdown-label': 'src/components/dropdown-menu/pk-dropdown-label.ts',\n 'components/dropdown-menu/dropdown-item': 'src/components/dropdown-menu/pk-dropdown-item.ts',\n 'components/dropdown-menu/dropdown-separator': 'src/components/dropdown-menu/pk-dropdown-separator.ts',\n 'components/dropdown-menu/dropdown-menu': 'src/components/dropdown-menu/pk-dropdown-menu.ts',\n 'components/popover/popover': 'src/components/popover/pk-popover.ts',\n 'components/tooltip/tooltip': 'src/components/tooltip/pk-tooltip.ts',\n 'components/radio-group/radio': 'src/components/radio-group/pk-radio.ts',\n 'components/radio-group/radio-group': 'src/components/radio-group/pk-radio-group.ts',\n 'components/tabs/tab': 'src/components/tabs/pk-tab.ts',\n 'components/tabs/tab-heading': 'src/components/tabs/pk-tab-heading.ts',\n 'components/tabs/tab-panel': 'src/components/tabs/pk-tab-panel.ts',\n 'components/tabs/tabs': 'src/components/tabs/pk-tabs.ts',\n 'components/scroll-area/scroll-area': 'src/components/scroll-area/pk-scroll-area.ts',\n 'components/select/option': 'src/components/select/pk-option.ts',\n 'components/select/option-group': 'src/components/select/pk-option-group.ts',\n 'components/select/select': 'src/components/select/pk-select.ts',\n 'components/calendar/calendar': 'src/components/calendar/pk-calendar.ts',\n 'components/date-picker/date-picker': 'src/components/date-picker/pk-date-picker.ts',\n 'components/combobox/combobox': 'src/components/combobox/pk-combobox.ts',\n 'components/autocomplete/autocomplete': 'src/components/autocomplete/pk-autocomplete.ts',\n 'components/image-browser/image-browser': 'src/components/image-browser/pk-image-browser.ts',\n 'components/time-picker/time-picker': 'src/components/time-picker/pk-time-picker.ts',\n 'components/copy-button/copy-button': 'src/components/copy-button/pk-copy-button.ts',\n 'components/connect/connect': 'src/components/connect/pk-connect.ts',\n 'components/connect/connect-oauth': 'src/components/connect/pk-connect-oauth.ts',\n 'components/editable-table/editable-table': 'src/components/editable-table/pk-editable-table.ts',\n};\n\n/** Loader-only shims → real element modules for the bundler dist graph. */\nconst BUNDLER_SRC_OVERRIDES: Record<string, string> = {\n 'src/components/icon/pk-icon-loader.ts': 'src/components/icon/pk-icon.ts',\n};\n\n/**\n * Vite `dist/` build entries for bundler cherry-picking.\n * Output paths mirror source layout, e.g. `dist/components/button/pk-button.js`.\n */\nexport const BUNDLER_COMPONENT_ENTRIES: Record<string, string> = Object.fromEntries(\n Object.values(LOADER_COMPONENT_ENTRIES).map((srcRel) => {\n const bundlerSrc = BUNDLER_SRC_OVERRIDES[srcRel] ?? srcRel;\n const key = bundlerSrc.replace(/^src\\//, '').replace(/\\.ts$/, '');\n return [key, bundlerSrc];\n }),\n);\n\n/** Tag → bundler dist subpath (relative to package root, no `./` prefix). */\nexport const BUNDLER_TAG_IMPORT_PATHS: Record<string, string> = Object.fromEntries(\n Object.keys(BUNDLER_COMPONENT_ENTRIES).map((key) => {\n const tag = key.split('/').pop()!;\n return [tag, `${key}.js`];\n }),\n);\n\nexport type PkComponentTag = keyof typeof BUNDLER_TAG_IMPORT_PATHS;\n\n/**\n * Short consumer entries published as `@verbb/plugin-kit-web/components/{key}.js`.\n * Each module side-effect-registers its family (compound folders register every tag).\n *\n * TipTap stays split — importing one surface must not pull the other two.\n */\nexport const COMPONENT_FAMILY_ENTRIES: Record<string, string> = {\n 'alert': 'src/components/alert/index.ts',\n 'state-panel': 'src/components/state-panel/index.ts',\n 'button': 'src/components/button/index.ts',\n 'button-group': 'src/components/button-group/index.ts',\n 'calendar': 'src/components/calendar/index.ts',\n 'checkbox': 'src/components/checkbox/index.ts',\n 'checkbox-select': 'src/components/checkbox-select/index.ts',\n 'code-editor': 'src/components/code-editor/index.ts',\n 'color-input': 'src/components/color-input/index.ts',\n 'autocomplete': 'src/components/autocomplete/index.ts',\n 'combobox': 'src/components/combobox/index.ts',\n 'copy-button': 'src/components/copy-button/index.ts',\n 'connect': 'src/components/connect/index.ts',\n 'date-picker': 'src/components/date-picker/index.ts',\n 'dialog': 'src/components/dialog/index.ts',\n 'dropdown-menu': 'src/components/dropdown-menu/index.ts',\n 'editable-table': 'src/components/editable-table/index.ts',\n 'field': 'src/components/field/index.ts',\n 'icon': 'src/components/icon/index.ts',\n 'image-browser': 'src/components/image-browser/index.ts',\n 'input': 'src/components/input/index.ts',\n 'input-group': 'src/components/input-group/index.ts',\n 'lightswitch': 'src/components/lightswitch/index.ts',\n 'popover': 'src/components/popover/index.ts',\n 'popup': 'src/components/popup/index.ts',\n 'radio-group': 'src/components/radio-group/index.ts',\n 'scroll-area': 'src/components/scroll-area/index.ts',\n 'select': 'src/components/select/index.ts',\n 'separator': 'src/components/separator/index.ts',\n 'spinner': 'src/components/spinner/index.ts',\n 'status': 'src/components/status/index.ts',\n 'tabs': 'src/components/tabs/index.ts',\n 'textarea': 'src/components/textarea/index.ts',\n 'time-picker': 'src/components/time-picker/index.ts',\n 'tiptap-content': 'src/components/tiptap/pk-tiptap-content.ts',\n 'tiptap-editor': 'src/components/tiptap/pk-tiptap-editor.ts',\n 'tiptap-input': 'src/components/tiptap/pk-tiptap-input.ts',\n 'toggle': 'src/components/toggle/index.ts',\n 'toggle-group': 'src/components/toggle-group/index.ts',\n 'tooltip': 'src/components/tooltip/index.ts',\n};\n"],"mappings":";;;;;AAIA,IAAa,yBAAiD;CAC1D,YAAY;CACZ,kBAAkB;CAClB,cAAc;CACd,WAAW;CACX,aAAa;CACb,eAAe;CACf,sBAAsB;CACtB,kBAAkB;CAClB,kBAAkB;CAClB,YAAY;CACZ,kBAAkB;CAClB,wBAAwB;CACxB,yBAAyB;CACzB,wBAAwB;CACxB,uBAAuB;CACvB,2BAA2B;CAC3B,eAAe;CACf,oBAAoB;CACpB,mBAAmB;CACnB,qBAAqB;CACrB,YAAY;CACZ,gBAAgB;CAChB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,kBAAkB;CAClB,mBAAmB;CACnB,6BAA6B;CAC7B,wBAAwB;CACxB,aAAa;CACb,YAAY;CACZ,qBAAqB;CACrB,oBAAoB;CACpB,yBAAyB;CACzB,oBAAoB;CACpB,cAAc;CACd,cAAc;CACd,YAAY;CACZ,kBAAkB;CAClB,UAAU;CACV,kBAAkB;CAClB,gBAAgB;CAChB,WAAW;CACX,kBAAkB;CAClB,aAAa;CACb,mBAAmB;CACnB,aAAa;CACb,eAAe;CACf,kBAAkB;CAClB,eAAe;CACf,mBAAmB;CACnB,oBAAoB;CACpB,kBAAkB;CAClB,kBAAkB;CAClB,cAAc;CACd,oBAAoB;CACpB,qBAAqB;CACxB;;AASD,IAAa,2BAAmD;CAC5D,0BAA0B;CAC1B,sCAAsC;CACtC,8BAA8B;CAE9B,wBAAwB;CACxB,4BAA4B;CAC5B,gCAAgC;CAChC,8CAA8C;CAC9C,sCAAsC;CACtC,sCAAsC;CACtC,0BAA0B;CAC1B,sCAAsC;CACtC,4CAA4C;CAC5C,6CAA6C;CAC7C,4CAA4C;CAC5C,2CAA2C;CAC3C,+CAA+C;CAC/C,gCAAgC;CAChC,mCAAmC;CACnC,kCAAkC;CAClC,oCAAoC;CACpC,0BAA0B;CAC1B,kCAAkC;CAClC,4BAA4B;CAC5B,4BAA4B;CAC5B,wCAAwC;CACxC,sCAAsC;CACtC,wCAAwC;CACxC,kDAAkD;CAClD,6CAA6C;CAC7C,4BAA4B;CAC5B,0BAA0B;CAC1B,2CAA2C;CAC3C,0CAA0C;CAC1C,+CAA+C;CAC/C,0CAA0C;CAC1C,8BAA8B;CAC9B,8BAA8B;CAC9B,gCAAgC;CAChC,sCAAsC;CACtC,uBAAuB;CACvB,+BAA+B;CAC/B,6BAA6B;CAC7B,wBAAwB;CACxB,sCAAsC;CACtC,4BAA4B;CAC5B,kCAAkC;CAClC,4BAA4B;CAC5B,gCAAgC;CAChC,sCAAsC;CACtC,gCAAgC;CAChC,wCAAwC;CACxC,0CAA0C;CAC1C,sCAAsC;CACtC,sCAAsC;CACtC,8BAA8B;CAC9B,oCAAoC;CACpC,4CAA4C;CAC/C;;AAGD,IAAM,wBAAgD,EAClD,yCAAyC,kCAC5C;;;;;AAMD,IAAa,4BAAoD,OAAO,YACpE,OAAO,OAAO,yBAAyB,CAAC,KAAK,WAAW;CACpD,MAAM,aAAa,sBAAsB,WAAW;AAEpD,QAAO,CADK,WAAW,QAAQ,UAAU,GAAG,CAAC,QAAQ,SAAS,GACtD,EAAK,WAAW;EAC1B,CACL;;AAGD,IAAa,2BAAmD,OAAO,YACnE,OAAO,KAAK,0BAA0B,CAAC,KAAK,QAAQ;AAEhD,QAAO,CADK,IAAI,MAAM,IAAI,CAAC,KACnB,EAAK,GAAG,IAAI,KAAK;EAC3B,CACL"}
1
+ {"version":3,"file":"component-registry-B5pnAZsb.js","names":[],"sources":["../../src/component-registry.ts"],"sourcesContent":["/**\n * Canonical tag → loader module path mapping for the autoloader.\n * Module paths are relative to the directory that contains plugin-kit.loader.js.\n */\nexport const COMPONENT_MODULE_PATHS: Record<string, string> = {\n 'pk-alert': 'components/alert/alert.js',\n 'pk-state-panel': 'components/state-panel/state-panel.js',\n 'pk-spinner': 'components/spinner/spinner.js',\n 'pk-icon': 'components/icon/icon.js',\n 'pk-button': 'components/button/button.js',\n 'pk-checkbox': 'components/checkbox/checkbox.js',\n 'pk-checkbox-select': 'components/checkbox-select/checkbox-select.js',\n 'pk-color-input': 'components/color-input/color-input.js',\n 'pk-code-editor': 'components/code-editor/code-editor.js',\n 'pk-input': 'components/input/input.js',\n 'pk-input-group': 'components/input-group/input-group.js',\n 'pk-input-group-addon': 'components/input-group/input-group-addon.js',\n 'pk-input-group-button': 'components/input-group/input-group-button.js',\n 'pk-input-group-input': 'components/input-group/input-group-input.js',\n 'pk-input-group-text': 'components/input-group/input-group-text.js',\n 'pk-input-group-textarea': 'components/input-group/input-group-textarea.js',\n 'pk-textarea': 'components/textarea/textarea.js',\n 'pk-tiptap-editor': 'components/tiptap/tiptap-editor.js',\n 'pk-tiptap-input': 'components/tiptap/tiptap-input.js',\n 'pk-tiptap-content': 'components/tiptap/tiptap-content.js',\n 'pk-field': 'components/field/field.js',\n 'pk-separator': 'components/separator/separator.js',\n 'pk-status': 'components/status/status.js',\n 'pk-toggle': 'components/toggle/toggle.js',\n 'pk-toggle-group': 'components/toggle-group/toggle-group.js',\n 'pk-lightswitch': 'components/lightswitch/lightswitch.js',\n 'pk-button-group': 'components/button-group/button-group.js',\n 'pk-button-group-separator': 'components/button-group/button-group-separator.js',\n 'pk-button-group-text': 'components/button-group/button-group-text.js',\n 'pk-dialog': 'components/dialog/dialog.js',\n 'pk-popup': 'components/popup/popup.js',\n 'pk-dropdown-label': 'components/dropdown-menu/dropdown-label.js',\n 'pk-dropdown-item': 'components/dropdown-menu/dropdown-item.js',\n 'pk-dropdown-separator': 'components/dropdown-menu/dropdown-separator.js',\n 'pk-dropdown-menu': 'components/dropdown-menu/dropdown-menu.js',\n 'pk-popover': 'components/popover/popover.js',\n 'pk-tooltip': 'components/tooltip/tooltip.js',\n 'pk-radio': 'components/radio-group/radio.js',\n 'pk-radio-group': 'components/radio-group/radio-group.js',\n 'pk-tab': 'components/tabs/tab.js',\n 'pk-tab-heading': 'components/tabs/tab-heading.js',\n 'pk-tab-panel': 'components/tabs/tab-panel.js',\n 'pk-tabs': 'components/tabs/tabs.js',\n 'pk-scroll-area': 'components/scroll-area/scroll-area.js',\n 'pk-option': 'components/select/option.js',\n 'pk-option-group': 'components/select/option-group.js',\n 'pk-select': 'components/select/select.js',\n 'pk-calendar': 'components/calendar/calendar.js',\n 'pk-date-picker': 'components/date-picker/date-picker.js',\n 'pk-combobox': 'components/combobox/combobox.js',\n 'pk-autocomplete': 'components/autocomplete/autocomplete.js',\n 'pk-image-browser': 'components/image-browser/image-browser.js',\n 'pk-time-picker': 'components/time-picker/time-picker.js',\n 'pk-copy-button': 'components/copy-button/copy-button.js',\n 'pk-connect': 'components/connect/connect.js',\n 'pk-connect-oauth': 'components/connect/connect-oauth.js',\n 'pk-editable-table': 'components/editable-table/editable-table.js',\n};\n\n/**\n * Canonical list of every `pk-*` custom element tag.\n * Single source of truth for FOUCE CSS generation and any tag enumeration.\n */\nexport const PK_COMPONENT_TAGS: readonly string[] = Object.keys(COMPONENT_MODULE_PATHS);\n\n/** Vite loader-build entries: output key → source module. */\nexport const LOADER_COMPONENT_ENTRIES: Record<string, string> = {\n 'components/alert/alert': 'src/components/alert/pk-alert.ts',\n 'components/state-panel/state-panel': 'src/components/state-panel/pk-state-panel.ts',\n 'components/spinner/spinner': 'src/components/spinner/pk-spinner.ts',\n // Loader ships the full icon set; bundler family `components/icon.js` stays opt-in.\n 'components/icon/icon': 'src/components/icon/pk-icon-loader.ts',\n 'components/button/button': 'src/components/button/pk-button.ts',\n 'components/checkbox/checkbox': 'src/components/checkbox/pk-checkbox.ts',\n 'components/checkbox-select/checkbox-select': 'src/components/checkbox-select/pk-checkbox-select.ts',\n 'components/color-input/color-input': 'src/components/color-input/pk-color-input.ts',\n 'components/code-editor/code-editor': 'src/components/code-editor/pk-code-editor.ts',\n 'components/input/input': 'src/components/input/pk-input.ts',\n 'components/input-group/input-group': 'src/components/input-group/pk-input-group.ts',\n 'components/input-group/input-group-addon': 'src/components/input-group/pk-input-group-addon.ts',\n 'components/input-group/input-group-button': 'src/components/input-group/pk-input-group-button.ts',\n 'components/input-group/input-group-input': 'src/components/input-group/pk-input-group-input.ts',\n 'components/input-group/input-group-text': 'src/components/input-group/pk-input-group-text.ts',\n 'components/input-group/input-group-textarea': 'src/components/input-group/pk-input-group-textarea.ts',\n 'components/textarea/textarea': 'src/components/textarea/pk-textarea.ts',\n 'components/tiptap/tiptap-editor': 'src/components/tiptap/pk-tiptap-editor.ts',\n 'components/tiptap/tiptap-input': 'src/components/tiptap/pk-tiptap-input.ts',\n 'components/tiptap/tiptap-content': 'src/components/tiptap/pk-tiptap-content.ts',\n 'components/field/field': 'src/components/field/pk-field.ts',\n 'components/separator/separator': 'src/components/separator/pk-separator.ts',\n 'components/status/status': 'src/components/status/pk-status.ts',\n 'components/toggle/toggle': 'src/components/toggle/pk-toggle.ts',\n 'components/toggle-group/toggle-group': 'src/components/toggle-group/pk-toggle-group.ts',\n 'components/lightswitch/lightswitch': 'src/components/lightswitch/pk-lightswitch.ts',\n 'components/button-group/button-group': 'src/components/button-group/pk-button-group.ts',\n 'components/button-group/button-group-separator': 'src/components/button-group/pk-button-group-separator.ts',\n 'components/button-group/button-group-text': 'src/components/button-group/pk-button-group-text.ts',\n 'components/dialog/dialog': 'src/components/dialog/pk-dialog.ts',\n 'components/popup/popup': 'src/components/popup/pk-popup.ts',\n 'components/dropdown-menu/dropdown-label': 'src/components/dropdown-menu/pk-dropdown-label.ts',\n 'components/dropdown-menu/dropdown-item': 'src/components/dropdown-menu/pk-dropdown-item.ts',\n 'components/dropdown-menu/dropdown-separator': 'src/components/dropdown-menu/pk-dropdown-separator.ts',\n 'components/dropdown-menu/dropdown-menu': 'src/components/dropdown-menu/pk-dropdown-menu.ts',\n 'components/popover/popover': 'src/components/popover/pk-popover.ts',\n 'components/tooltip/tooltip': 'src/components/tooltip/pk-tooltip.ts',\n 'components/radio-group/radio': 'src/components/radio-group/pk-radio.ts',\n 'components/radio-group/radio-group': 'src/components/radio-group/pk-radio-group.ts',\n 'components/tabs/tab': 'src/components/tabs/pk-tab.ts',\n 'components/tabs/tab-heading': 'src/components/tabs/pk-tab-heading.ts',\n 'components/tabs/tab-panel': 'src/components/tabs/pk-tab-panel.ts',\n 'components/tabs/tabs': 'src/components/tabs/pk-tabs.ts',\n 'components/scroll-area/scroll-area': 'src/components/scroll-area/pk-scroll-area.ts',\n 'components/select/option': 'src/components/select/pk-option.ts',\n 'components/select/option-group': 'src/components/select/pk-option-group.ts',\n 'components/select/select': 'src/components/select/pk-select.ts',\n 'components/calendar/calendar': 'src/components/calendar/pk-calendar.ts',\n 'components/date-picker/date-picker': 'src/components/date-picker/pk-date-picker.ts',\n 'components/combobox/combobox': 'src/components/combobox/pk-combobox.ts',\n 'components/autocomplete/autocomplete': 'src/components/autocomplete/pk-autocomplete.ts',\n 'components/image-browser/image-browser': 'src/components/image-browser/pk-image-browser.ts',\n 'components/time-picker/time-picker': 'src/components/time-picker/pk-time-picker.ts',\n 'components/copy-button/copy-button': 'src/components/copy-button/pk-copy-button.ts',\n 'components/connect/connect': 'src/components/connect/pk-connect.ts',\n 'components/connect/connect-oauth': 'src/components/connect/pk-connect-oauth.ts',\n 'components/editable-table/editable-table': 'src/components/editable-table/pk-editable-table.ts',\n};\n\n/** Loader-only shims → real element modules for the bundler dist graph. */\nconst BUNDLER_SRC_OVERRIDES: Record<string, string> = {\n 'src/components/icon/pk-icon-loader.ts': 'src/components/icon/pk-icon.ts',\n};\n\n/**\n * Vite `dist/` build entries for bundler cherry-picking.\n * Output paths mirror source layout, e.g. `dist/components/button/pk-button.js`.\n */\nexport const BUNDLER_COMPONENT_ENTRIES: Record<string, string> = Object.fromEntries(\n Object.values(LOADER_COMPONENT_ENTRIES).map((srcRel) => {\n const bundlerSrc = BUNDLER_SRC_OVERRIDES[srcRel] ?? srcRel;\n const key = bundlerSrc.replace(/^src\\//, '').replace(/\\.ts$/, '');\n return [key, bundlerSrc];\n }),\n);\n\n/** Tag → bundler dist subpath (relative to package root, no `./` prefix). */\nexport const BUNDLER_TAG_IMPORT_PATHS: Record<string, string> = Object.fromEntries(\n Object.keys(BUNDLER_COMPONENT_ENTRIES).map((key) => {\n const tag = key.split('/').pop()!;\n return [tag, `${key}.js`];\n }),\n);\n\nexport type PkComponentTag = keyof typeof BUNDLER_TAG_IMPORT_PATHS;\n\n/**\n * Short consumer entries published as `@verbb/plugin-kit-web/components/{key}.js`.\n * Each module side-effect-registers its family (compound folders register every tag).\n *\n * TipTap stays split — importing one surface must not pull the other two.\n */\nexport const COMPONENT_FAMILY_ENTRIES: Record<string, string> = {\n 'alert': 'src/components/alert/index.ts',\n 'state-panel': 'src/components/state-panel/index.ts',\n 'button': 'src/components/button/index.ts',\n 'button-group': 'src/components/button-group/index.ts',\n 'calendar': 'src/components/calendar/index.ts',\n 'checkbox': 'src/components/checkbox/index.ts',\n 'checkbox-select': 'src/components/checkbox-select/index.ts',\n 'code-editor': 'src/components/code-editor/index.ts',\n 'color-input': 'src/components/color-input/index.ts',\n 'autocomplete': 'src/components/autocomplete/index.ts',\n 'combobox': 'src/components/combobox/index.ts',\n 'copy-button': 'src/components/copy-button/index.ts',\n 'connect': 'src/components/connect/index.ts',\n 'date-picker': 'src/components/date-picker/index.ts',\n 'dialog': 'src/components/dialog/index.ts',\n 'dropdown-menu': 'src/components/dropdown-menu/index.ts',\n 'editable-table': 'src/components/editable-table/index.ts',\n 'field': 'src/components/field/index.ts',\n 'icon': 'src/components/icon/index.ts',\n 'image-browser': 'src/components/image-browser/index.ts',\n 'input': 'src/components/input/index.ts',\n 'input-group': 'src/components/input-group/index.ts',\n 'lightswitch': 'src/components/lightswitch/index.ts',\n 'popover': 'src/components/popover/index.ts',\n 'popup': 'src/components/popup/index.ts',\n 'radio-group': 'src/components/radio-group/index.ts',\n 'scroll-area': 'src/components/scroll-area/index.ts',\n 'select': 'src/components/select/index.ts',\n 'separator': 'src/components/separator/index.ts',\n 'spinner': 'src/components/spinner/index.ts',\n 'status': 'src/components/status/index.ts',\n 'tabs': 'src/components/tabs/index.ts',\n 'textarea': 'src/components/textarea/index.ts',\n 'time-picker': 'src/components/time-picker/index.ts',\n 'tiptap-content': 'src/components/tiptap/pk-tiptap-content.ts',\n 'tiptap-editor': 'src/components/tiptap/pk-tiptap-editor.ts',\n 'tiptap-input': 'src/components/tiptap/pk-tiptap-input.ts',\n 'toggle': 'src/components/toggle/index.ts',\n 'toggle-group': 'src/components/toggle-group/index.ts',\n 'tooltip': 'src/components/tooltip/index.ts',\n};\n"],"mappings":";;;;;AAIA,IAAa,yBAAiD;CAC1D,YAAY;CACZ,kBAAkB;CAClB,cAAc;CACd,WAAW;CACX,aAAa;CACb,eAAe;CACf,sBAAsB;CACtB,kBAAkB;CAClB,kBAAkB;CAClB,YAAY;CACZ,kBAAkB;CAClB,wBAAwB;CACxB,yBAAyB;CACzB,wBAAwB;CACxB,uBAAuB;CACvB,2BAA2B;CAC3B,eAAe;CACf,oBAAoB;CACpB,mBAAmB;CACnB,qBAAqB;CACrB,YAAY;CACZ,gBAAgB;CAChB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,kBAAkB;CAClB,mBAAmB;CACnB,6BAA6B;CAC7B,wBAAwB;CACxB,aAAa;CACb,YAAY;CACZ,qBAAqB;CACrB,oBAAoB;CACpB,yBAAyB;CACzB,oBAAoB;CACpB,cAAc;CACd,cAAc;CACd,YAAY;CACZ,kBAAkB;CAClB,UAAU;CACV,kBAAkB;CAClB,gBAAgB;CAChB,WAAW;CACX,kBAAkB;CAClB,aAAa;CACb,mBAAmB;CACnB,aAAa;CACb,eAAe;CACf,kBAAkB;CAClB,eAAe;CACf,mBAAmB;CACnB,oBAAoB;CACpB,kBAAkB;CAClB,kBAAkB;CAClB,cAAc;CACd,oBAAoB;CACpB,qBAAqB;AACzB;AAMoD,OAAO,KAAK,sBAAsB;;AAGtF,IAAa,2BAAmD;CAC5D,0BAA0B;CAC1B,sCAAsC;CACtC,8BAA8B;CAE9B,wBAAwB;CACxB,4BAA4B;CAC5B,gCAAgC;CAChC,8CAA8C;CAC9C,sCAAsC;CACtC,sCAAsC;CACtC,0BAA0B;CAC1B,sCAAsC;CACtC,4CAA4C;CAC5C,6CAA6C;CAC7C,4CAA4C;CAC5C,2CAA2C;CAC3C,+CAA+C;CAC/C,gCAAgC;CAChC,mCAAmC;CACnC,kCAAkC;CAClC,oCAAoC;CACpC,0BAA0B;CAC1B,kCAAkC;CAClC,4BAA4B;CAC5B,4BAA4B;CAC5B,wCAAwC;CACxC,sCAAsC;CACtC,wCAAwC;CACxC,kDAAkD;CAClD,6CAA6C;CAC7C,4BAA4B;CAC5B,0BAA0B;CAC1B,2CAA2C;CAC3C,0CAA0C;CAC1C,+CAA+C;CAC/C,0CAA0C;CAC1C,8BAA8B;CAC9B,8BAA8B;CAC9B,gCAAgC;CAChC,sCAAsC;CACtC,uBAAuB;CACvB,+BAA+B;CAC/B,6BAA6B;CAC7B,wBAAwB;CACxB,sCAAsC;CACtC,4BAA4B;CAC5B,kCAAkC;CAClC,4BAA4B;CAC5B,gCAAgC;CAChC,sCAAsC;CACtC,gCAAgC;CAChC,wCAAwC;CACxC,0CAA0C;CAC1C,sCAAsC;CACtC,sCAAsC;CACtC,8BAA8B;CAC9B,oCAAoC;CACpC,4CAA4C;AAChD;;AAGA,IAAM,wBAAgD,EAClD,yCAAyC,iCAC7C;;;;;AAMA,IAAa,4BAAoD,OAAO,YACpE,OAAO,OAAO,wBAAwB,CAAC,CAAC,KAAK,WAAW;CACpD,MAAM,aAAa,sBAAsB,WAAW;CAEpD,OAAO,CADK,WAAW,QAAQ,UAAU,EAAE,CAAC,CAAC,QAAQ,SAAS,EACtD,GAAK,UAAU;AAC3B,CAAC,CACL;;AAGA,IAAa,2BAAmD,OAAO,YACnE,OAAO,KAAK,yBAAyB,CAAC,CAAC,KAAK,QAAQ;CAEhD,OAAO,CADK,IAAI,MAAM,GAAG,CAAC,CAAC,IACnB,GAAK,GAAG,IAAI,IAAI;AAC5B,CAAC,CACL"}
@@ -66,4 +66,4 @@ var HostAriaMirror = class {
66
66
  //#endregion
67
67
  export { syncStandaloneControlAria as n, HostAriaMirror as t };
68
68
 
69
- //# sourceMappingURL=control-aria-CzouQRZD.js.map
69
+ //# sourceMappingURL=control-aria-CtNg2izr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"control-aria-CzouQRZD.js","names":[],"sources":["../../src/internal/control-aria.ts"],"sourcesContent":["/** ARIA attributes mirrored from a field shell host onto the focusable native control. */\nexport const MIRRORED_ARIA_ATTRIBUTES = [\n 'aria-labelledby',\n 'aria-describedby',\n 'aria-invalid',\n 'aria-errormessage',\n 'aria-required',\n 'aria-label',\n] as const;\n\n/** True when a parent `pk-field` (or similar) has wired external field chrome. */\nexport function hasExternalFieldAria(host: Element): boolean {\n return host.hasAttribute('aria-labelledby')\n || host.hasAttribute('aria-describedby')\n || host.hasAttribute('aria-errormessage');\n}\n\n/** Copy mirrored ARIA attributes from `source` onto `target`. */\nexport function mirrorAriaAttributes(source: Element, target: Element): void {\n for (const name of MIRRORED_ARIA_ATTRIBUTES) {\n const value = source.getAttribute(name);\n\n if (value !== null) {\n target.setAttribute(name, value);\n } else {\n target.removeAttribute(name);\n }\n }\n}\n\nexport type StandaloneControlAriaOptions = {\n control: HTMLElement;\n labelId?: string;\n instructionsId?: string;\n hasLabel: boolean;\n hasInstructions: boolean;\n required?: boolean;\n invalid?: boolean;\n};\n\n/** Wire label/instructions/required/invalid for standalone controls ( internal layout). */\nexport function syncStandaloneControlAria({\n control,\n labelId,\n instructionsId,\n hasLabel,\n hasInstructions,\n required = false,\n invalid = false,\n}: StandaloneControlAriaOptions): void {\n if (hasLabel && labelId) {\n control.setAttribute('aria-labelledby', labelId);\n } else {\n control.removeAttribute('aria-labelledby');\n }\n\n if (hasInstructions && instructionsId) {\n control.setAttribute('aria-describedby', instructionsId);\n } else {\n control.removeAttribute('aria-describedby');\n }\n\n if (required) {\n control.setAttribute('aria-required', 'true');\n } else {\n control.removeAttribute('aria-required');\n }\n\n if (invalid) {\n control.setAttribute('aria-invalid', 'true');\n } else {\n control.removeAttribute('aria-invalid');\n }\n\n control.removeAttribute('aria-errormessage');\n}\n\n/** Observes host ARIA attribute changes and mirrors them to a focusable inner control. */\nexport class HostAriaMirror {\n private observer?: MutationObserver;\n\n constructor(\n private readonly host: HTMLElement,\n private readonly getTarget: () => HTMLElement | null | undefined,\n private readonly onSync?: () => void,\n ) {}\n\n connect(): void {\n this.sync();\n\n this.observer = new MutationObserver(() => {\n this.sync();\n });\n\n this.observer.observe(this.host, {\n attributes: true,\n attributeFilter: [...MIRRORED_ARIA_ATTRIBUTES],\n });\n }\n\n disconnect(): void {\n this.observer?.disconnect();\n this.observer = undefined;\n }\n\n sync(): void {\n if (!hasExternalFieldAria(this.host)) {\n this.onSync?.();\n return;\n }\n\n const target = this.getTarget();\n\n if (!target) {\n return;\n }\n\n mirrorAriaAttributes(this.host, target);\n }\n}\n\n/** Mirror host ARIA onto the first slotted input/textarea inside a group wrapper. */\nexport function mirrorHostAriaToSlottedControl(host: HTMLElement, slot: HTMLSlotElement): void {\n if (!hasExternalFieldAria(host)) {\n return;\n }\n\n const [control] = slot.assignedElements({ flatten: true }).filter((element) => {\n if (!(element instanceof HTMLElement)) {\n return false;\n }\n\n if (element.matches('pk-input-group-input, pk-input-group-textarea')) {\n return true;\n }\n\n return element.querySelector('input, textarea, select') instanceof HTMLElement;\n });\n\n if (!(control instanceof HTMLElement)) {\n return;\n }\n\n const target = control.matches('pk-input-group-input, pk-input-group-textarea')\n ? control.shadowRoot?.querySelector('input, textarea') ?? control.querySelector('input, textarea')\n : control.querySelector('input, textarea, select, button[aria-haspopup]');\n\n if (target instanceof HTMLElement) {\n mirrorAriaAttributes(host, target);\n }\n}\n"],"mappings":";;AACA,IAAa,2BAA2B;CACpC;CACA;CACA;CACA;CACA;CACA;CACH;;AAGD,SAAgB,qBAAqB,MAAwB;AACzD,QAAO,KAAK,aAAa,kBAAkB,IACpC,KAAK,aAAa,mBAAmB,IACrC,KAAK,aAAa,oBAAoB;;;AAIjD,SAAgB,qBAAqB,QAAiB,QAAuB;AACzE,MAAK,MAAM,QAAQ,0BAA0B;EACzC,MAAM,QAAQ,OAAO,aAAa,KAAK;AAEvC,MAAI,UAAU,KACV,QAAO,aAAa,MAAM,MAAM;MAEhC,QAAO,gBAAgB,KAAK;;;;AAgBxC,SAAgB,0BAA0B,EACtC,SACA,SACA,gBACA,UACA,iBACA,WAAW,OACX,UAAU,SACyB;AACnC,KAAI,YAAY,QACZ,SAAQ,aAAa,mBAAmB,QAAQ;KAEhD,SAAQ,gBAAgB,kBAAkB;AAG9C,KAAI,mBAAmB,eACnB,SAAQ,aAAa,oBAAoB,eAAe;KAExD,SAAQ,gBAAgB,mBAAmB;AAG/C,KAAI,SACA,SAAQ,aAAa,iBAAiB,OAAO;KAE7C,SAAQ,gBAAgB,gBAAgB;AAG5C,KAAI,QACA,SAAQ,aAAa,gBAAgB,OAAO;KAE5C,SAAQ,gBAAgB,eAAe;AAG3C,SAAQ,gBAAgB,oBAAoB;;;AAIhD,IAAa,iBAAb,MAA4B;CAGxB,YACI,MACA,WACA,QACF;AAHmB,OAAA,OAAA;AACA,OAAA,YAAA;AACA,OAAA,SAAA;;CAGrB,UAAgB;AACZ,OAAK,MAAM;AAEX,OAAK,WAAW,IAAI,uBAAuB;AACvC,QAAK,MAAM;IACb;AAEF,OAAK,SAAS,QAAQ,KAAK,MAAM;GAC7B,YAAY;GACZ,iBAAiB,CAAC,GAAG,yBAAyB;GACjD,CAAC;;CAGN,aAAmB;AACf,OAAK,UAAU,YAAY;AAC3B,OAAK,WAAW,KAAA;;CAGpB,OAAa;AACT,MAAI,CAAC,qBAAqB,KAAK,KAAK,EAAE;AAClC,QAAK,UAAU;AACf;;EAGJ,MAAM,SAAS,KAAK,WAAW;AAE/B,MAAI,CAAC,OACD;AAGJ,uBAAqB,KAAK,MAAM,OAAO"}
1
+ {"version":3,"file":"control-aria-CtNg2izr.js","names":[],"sources":["../../src/internal/control-aria.ts"],"sourcesContent":["/** ARIA attributes mirrored from a field shell host onto the focusable native control. */\nexport const MIRRORED_ARIA_ATTRIBUTES = [\n 'aria-labelledby',\n 'aria-describedby',\n 'aria-invalid',\n 'aria-errormessage',\n 'aria-required',\n 'aria-label',\n] as const;\n\n/** True when a parent `pk-field` (or similar) has wired external field chrome. */\nexport function hasExternalFieldAria(host: Element): boolean {\n return host.hasAttribute('aria-labelledby')\n || host.hasAttribute('aria-describedby')\n || host.hasAttribute('aria-errormessage');\n}\n\n/** Copy mirrored ARIA attributes from `source` onto `target`. */\nexport function mirrorAriaAttributes(source: Element, target: Element): void {\n for (const name of MIRRORED_ARIA_ATTRIBUTES) {\n const value = source.getAttribute(name);\n\n if (value !== null) {\n target.setAttribute(name, value);\n } else {\n target.removeAttribute(name);\n }\n }\n}\n\nexport type StandaloneControlAriaOptions = {\n control: HTMLElement;\n labelId?: string;\n instructionsId?: string;\n hasLabel: boolean;\n hasInstructions: boolean;\n required?: boolean;\n invalid?: boolean;\n};\n\n/** Wire label/instructions/required/invalid for standalone controls ( internal layout). */\nexport function syncStandaloneControlAria({\n control,\n labelId,\n instructionsId,\n hasLabel,\n hasInstructions,\n required = false,\n invalid = false,\n}: StandaloneControlAriaOptions): void {\n if (hasLabel && labelId) {\n control.setAttribute('aria-labelledby', labelId);\n } else {\n control.removeAttribute('aria-labelledby');\n }\n\n if (hasInstructions && instructionsId) {\n control.setAttribute('aria-describedby', instructionsId);\n } else {\n control.removeAttribute('aria-describedby');\n }\n\n if (required) {\n control.setAttribute('aria-required', 'true');\n } else {\n control.removeAttribute('aria-required');\n }\n\n if (invalid) {\n control.setAttribute('aria-invalid', 'true');\n } else {\n control.removeAttribute('aria-invalid');\n }\n\n control.removeAttribute('aria-errormessage');\n}\n\n/** Observes host ARIA attribute changes and mirrors them to a focusable inner control. */\nexport class HostAriaMirror {\n private observer?: MutationObserver;\n\n constructor(\n private readonly host: HTMLElement,\n private readonly getTarget: () => HTMLElement | null | undefined,\n private readonly onSync?: () => void,\n ) {}\n\n connect(): void {\n this.sync();\n\n this.observer = new MutationObserver(() => {\n this.sync();\n });\n\n this.observer.observe(this.host, {\n attributes: true,\n attributeFilter: [...MIRRORED_ARIA_ATTRIBUTES],\n });\n }\n\n disconnect(): void {\n this.observer?.disconnect();\n this.observer = undefined;\n }\n\n sync(): void {\n if (!hasExternalFieldAria(this.host)) {\n this.onSync?.();\n return;\n }\n\n const target = this.getTarget();\n\n if (!target) {\n return;\n }\n\n mirrorAriaAttributes(this.host, target);\n }\n}\n\n/** Mirror host ARIA onto the first slotted input/textarea inside a group wrapper. */\nexport function mirrorHostAriaToSlottedControl(host: HTMLElement, slot: HTMLSlotElement): void {\n if (!hasExternalFieldAria(host)) {\n return;\n }\n\n const [control] = slot.assignedElements({ flatten: true }).filter((element) => {\n if (!(element instanceof HTMLElement)) {\n return false;\n }\n\n if (element.matches('pk-input-group-input, pk-input-group-textarea')) {\n return true;\n }\n\n return element.querySelector('input, textarea, select') instanceof HTMLElement;\n });\n\n if (!(control instanceof HTMLElement)) {\n return;\n }\n\n const target = control.matches('pk-input-group-input, pk-input-group-textarea')\n ? control.shadowRoot?.querySelector('input, textarea') ?? control.querySelector('input, textarea')\n : control.querySelector('input, textarea, select, button[aria-haspopup]');\n\n if (target instanceof HTMLElement) {\n mirrorAriaAttributes(host, target);\n }\n}\n"],"mappings":";;AACA,IAAa,2BAA2B;CACpC;CACA;CACA;CACA;CACA;CACA;AACJ;;AAGA,SAAgB,qBAAqB,MAAwB;CACzD,OAAO,KAAK,aAAa,iBAAiB,KACnC,KAAK,aAAa,kBAAkB,KACpC,KAAK,aAAa,mBAAmB;AAChD;;AAGA,SAAgB,qBAAqB,QAAiB,QAAuB;CACzE,KAAK,MAAM,QAAQ,0BAA0B;EACzC,MAAM,QAAQ,OAAO,aAAa,IAAI;EAEtC,IAAI,UAAU,MACV,OAAO,aAAa,MAAM,KAAK;OAE/B,OAAO,gBAAgB,IAAI;CAEnC;AACJ;;AAaA,SAAgB,0BAA0B,EACtC,SACA,SACA,gBACA,UACA,iBACA,WAAW,OACX,UAAU,SACyB;CACnC,IAAI,YAAY,SACZ,QAAQ,aAAa,mBAAmB,OAAO;MAE/C,QAAQ,gBAAgB,iBAAiB;CAG7C,IAAI,mBAAmB,gBACnB,QAAQ,aAAa,oBAAoB,cAAc;MAEvD,QAAQ,gBAAgB,kBAAkB;CAG9C,IAAI,UACA,QAAQ,aAAa,iBAAiB,MAAM;MAE5C,QAAQ,gBAAgB,eAAe;CAG3C,IAAI,SACA,QAAQ,aAAa,gBAAgB,MAAM;MAE3C,QAAQ,gBAAgB,cAAc;CAG1C,QAAQ,gBAAgB,mBAAmB;AAC/C;;AAGA,IAAa,iBAAb,MAA4B;CAGxB,YACI,MACA,WACA,QACF;EAHmB,KAAA,OAAA;EACA,KAAA,YAAA;EACA,KAAA,SAAA;CAClB;CAEH,UAAgB;EACZ,KAAK,KAAK;EAEV,KAAK,WAAW,IAAI,uBAAuB;GACvC,KAAK,KAAK;EACd,CAAC;EAED,KAAK,SAAS,QAAQ,KAAK,MAAM;GAC7B,YAAY;GACZ,iBAAiB,CAAC,GAAG,wBAAwB;EACjD,CAAC;CACL;CAEA,aAAmB;EACf,KAAK,UAAU,WAAW;EAC1B,KAAK,WAAW,KAAA;CACpB;CAEA,OAAa;EACT,IAAI,CAAC,qBAAqB,KAAK,IAAI,GAAG;GAClC,KAAK,SAAS;GACd;EACJ;EAEA,MAAM,SAAS,KAAK,UAAU;EAE9B,IAAI,CAAC,QACD;EAGJ,qBAAqB,KAAK,MAAM,MAAM;CAC1C;AACJ"}
@@ -1,5 +1,4 @@
1
1
  import { LitElement, css, unsafeCSS } from "lit";
2
- import { property as property$1, query, state } from "lit/decorators.js";
3
2
  //#region src/internal/safe-custom-element.ts
4
3
  var customElement = (tagName) => (classOrTarget, context) => {
5
4
  const define = () => {
@@ -147,7 +146,7 @@ var PkElement = class extends LitElement {
147
146
  }
148
147
  };
149
148
  //#endregion
150
- //#region \0@oxc-project+runtime@0.127.0/helpers/decorate.js
149
+ //#region \0@oxc-project+runtime@0.152.0/helpers/esm/decorate.js
151
150
  function __decorate(decorators, target, key, desc) {
152
151
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
153
152
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -155,6 +154,6 @@ function __decorate(decorators, target, key, desc) {
155
154
  return c > 3 && r && Object.defineProperty(target, key, r), r;
156
155
  }
157
156
  //#endregion
158
- export { query as a, property$1 as i, PkElement as n, state as o, hostDisplayInlineBlock as r, customElement as s, __decorate as t };
157
+ export { customElement as i, PkElement as n, hostDisplayInlineBlock as r, __decorate as t };
159
158
 
160
- //# sourceMappingURL=decorate-R0X811qp.js.map
159
+ //# sourceMappingURL=decorate-Br_PE9pq.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorate-R0X811qp.js","names":[],"sources":["../../src/internal/safe-custom-element.ts","../../src/base/styles.ts","../../src/base/shadow-reset.styles.ts","../../src/base/pk-element.ts"],"sourcesContent":["/**\n * Lit's `@customElement` always calls `customElements.define`. On Craft CP pages\n * that load multiple Plugin Kit consumers (each with its own bundled copy of the\n * same tag), the second define throws NotSupportedError and aborts the rest of\n * that register bundle. Skip redefine — first registrant wins.\n *\n * Drop-in replacement for `customElement` from `lit/decorators.js` /\n * `@lit/reactive-element/decorators/custom-element.js`.\n */\n\ntype CustomElementClass = Omit<typeof HTMLElement, 'new'>;\n\ntype Constructor<T> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n};\n\nexport type CustomElementDecorator = {\n (cls: CustomElementClass): void;\n (\n target: CustomElementClass,\n context: ClassDecoratorContext<Constructor<HTMLElement>>,\n ): void;\n};\n\nexport const customElement =\n (tagName: string): CustomElementDecorator =>\n (\n classOrTarget: CustomElementClass | Constructor<HTMLElement>,\n context?: ClassDecoratorContext<Constructor<HTMLElement>>,\n ) => {\n const define = (): void => {\n if (customElements.get(tagName)) {\n return;\n }\n\n customElements.define(tagName, classOrTarget as CustomElementConstructor);\n };\n\n if (context !== undefined) {\n context.addInitializer(define);\n } else {\n define();\n }\n };\n","import { css, unsafeCSS, type CSSResultGroup } from 'lit';\n\nconst sharedStyleSheets = new Map<string, CSSStyleSheet>();\n\n/**\n * Share constructable stylesheets across component instances ( pattern).\n * Falls back to an injected `<style>` tag when adoptedStyleSheets aren't supported.\n */\nexport function adoptStyles(\n shadowRoot: ShadowRoot,\n styleResults: CSSResultGroup[],\n cacheKey?: string,\n): void {\n const cssText = styleResults\n .flatMap((result) => (Array.isArray(result) ? result : [result]))\n .map((result) => {\n if ('cssText' in result && typeof result.cssText === 'string') {\n return result.cssText;\n }\n\n return unsafeCSS(result).cssText;\n })\n .join('\\n');\n\n if (!('adoptedStyleSheets' in Document.prototype) || typeof CSSStyleSheet === 'undefined') {\n const styleKey = cacheKey ?? String(styleResults.length);\n\n if (!shadowRoot.querySelector(`style[data-pk-adopted-styles=\"${styleKey}\"]`)) {\n const style = document.createElement('style');\n style.dataset.pkAdoptedStyles = styleKey;\n style.textContent = cssText;\n shadowRoot.prepend(style);\n }\n\n return;\n }\n\n const key = cacheKey ?? cssText;\n let sheet = sharedStyleSheets.get(key);\n\n if (!sheet) {\n sheet = new CSSStyleSheet();\n sheet.replaceSync(cssText);\n sharedStyleSheets.set(key, sheet);\n }\n\n shadowRoot.adoptedStyleSheets = [...shadowRoot.adoptedStyleSheets, sheet];\n}\n\nexport const hostDisplayInlineBlock = css`\n @layer pk-component {\n :host {\n display: inline-block;\n vertical-align: middle;\n }\n }\n`;\n\nexport const focusRing = css`\n .pk-focus-ring:focus {\n outline: none;\n }\n\n .pk-focus-ring:focus-visible {\n box-shadow: var(--pk-shadow-focus);\n }\n`;\n","import { css } from 'lit';\n\n/**\n * Shadow-root baseline — box model + inherited typography inside every pk-* component.\n * Applied via PkElement.createRenderRoot(); does not replace per-component styles.\n */\nexport const shadowResetStyles = css`\n @layer pk-reset {\n :host {\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: border-box;\n }\n\n :host(:not([hidden])) {\n /* Prevent UA / CP margin on unstyled custom element hosts in light DOM. */\n margin: 0;\n }\n }\n`;\n","import { LitElement } from 'lit';\n\nimport { adoptStyles } from './styles.js';\nimport { shadowResetStyles } from './shadow-reset.styles.js';\n\nexport type PkElementErrorDetail = {\n tagName: string;\n message: string;\n stack?: string;\n};\n\ndeclare global {\n interface GlobalEventHandlersEventMap {\n 'pk-error': CustomEvent<PkElementErrorDetail>;\n }\n}\n\n/**\n * Base class for Plugin Kit web components.\n * Open shadow root; Lit adopts constructable stylesheets where supported.\n *\n * `performUpdate` is wrapped so a single control failure degrades inline instead of\n * taking down the whole CP surface (React error boundaries do not see Lit throws).\n */\nexport class PkElement extends LitElement {\n static override shadowRootOptions: ShadowRootInit = {\n mode: 'open',\n delegatesFocus: true,\n };\n\n /** When set, subclasses should skip normal render — base shows a minimal error shell. */\n protected pkRenderFailed = false;\n\n override connectedCallback(): void {\n super.connectedCallback();\n // Host marker for document/shadow peers (e.g. Tailwind preflight). Must not set\n // attributes in the constructor — CE rules forbid that on createElement().\n if (!this.hasAttribute('data-pk')) {\n this.setAttribute('data-pk', '');\n }\n }\n\n override createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n adoptStyles(root as ShadowRoot, [shadowResetStyles], 'pk-shadow-reset');\n return root;\n }\n\n override performUpdate(): void {\n if (this.pkRenderFailed) {\n return;\n }\n\n try {\n const result = super.performUpdate();\n\n // Lit deprecates returning a Promise from performUpdate — handle async render\n // failures without making this override async (avoids dev-mode update-queue bugs).\n // Lit may return void; keep a Promise guard for older async performUpdate paths.\n if ((result as unknown) instanceof Promise) {\n void (result as unknown as Promise<unknown>).catch((error: unknown) => {\n this.handleRenderFailure(error);\n });\n }\n } catch (error) {\n this.handleRenderFailure(error);\n }\n }\n\n protected handleRenderFailure(error: unknown): void {\n const err = error instanceof Error ? error : new Error(String(error));\n this.pkRenderFailed = true;\n\n this.dispatchEvent(\n new CustomEvent<PkElementErrorDetail>('pk-error', {\n detail: {\n tagName: this.localName || this.tagName.toLowerCase(),\n message: err.message,\n stack: err.stack,\n },\n bubbles: true,\n composed: true,\n }),\n );\n\n // Last-resort inline fallback — plain DOM so we do not recurse through Lit render().\n try {\n const root = this.renderRoot as ShadowRoot | HTMLElement | undefined;\n\n if (root) {\n root.textContent = '';\n const shell = document.createElement('div');\n shell.setAttribute('part', 'error');\n shell.setAttribute('role', 'alert');\n shell.textContent = 'This control failed to load.';\n root.appendChild(shell);\n }\n } catch {\n /* never throw from the error handler */\n }\n }\n}\n"],"mappings":";;;AAyBA,IAAa,iBACR,aAEG,eACA,YACC;CACD,MAAM,eAAqB;AACvB,MAAI,eAAe,IAAI,QAAQ,CAC3B;AAGJ,iBAAe,OAAO,SAAS,cAA0C;;AAG7E,KAAI,YAAY,KAAA,EACZ,SAAQ,eAAe,OAAO;KAE9B,SAAQ;;;;ACxCpB,IAAM,oCAAoB,IAAI,KAA4B;;;;;AAM1D,SAAgB,YACZ,YACA,cACA,UACI;CACJ,MAAM,UAAU,aACX,SAAS,WAAY,MAAM,QAAQ,OAAO,GAAG,SAAS,CAAC,OAAO,CAAE,CAChE,KAAK,WAAW;AACb,MAAI,aAAa,UAAU,OAAO,OAAO,YAAY,SACjD,QAAO,OAAO;AAGlB,SAAO,UAAU,OAAO,CAAC;GAC3B,CACD,KAAK,KAAK;AAEf,KAAI,EAAE,wBAAwB,SAAS,cAAc,OAAO,kBAAkB,aAAa;EACvF,MAAM,WAAW,YAAY,OAAO,aAAa,OAAO;AAExD,MAAI,CAAC,WAAW,cAAc,iCAAiC,SAAS,IAAI,EAAE;GAC1E,MAAM,QAAQ,SAAS,cAAc,QAAQ;AAC7C,SAAM,QAAQ,kBAAkB;AAChC,SAAM,cAAc;AACpB,cAAW,QAAQ,MAAM;;AAG7B;;CAGJ,MAAM,MAAM,YAAY;CACxB,IAAI,QAAQ,kBAAkB,IAAI,IAAI;AAEtC,KAAI,CAAC,OAAO;AACR,UAAQ,IAAI,eAAe;AAC3B,QAAM,YAAY,QAAQ;AAC1B,oBAAkB,IAAI,KAAK,MAAM;;AAGrC,YAAW,qBAAqB,CAAC,GAAG,WAAW,oBAAoB,MAAM;;AAG7E,IAAa,yBAAyB,GAAG;;;;;;;;AAShB,GAAG;;;;;;;;;;;;;;;ACpD5B,IAAa,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;ACkBpC,IAAa,YAAb,cAA+B,WAAW;;;wBAOX;;;2BANyB;GAChD,MAAM;GACN,gBAAgB;GACnB;;CAKD,oBAAmC;AAC/B,QAAM,mBAAmB;AAGzB,MAAI,CAAC,KAAK,aAAa,UAAU,CAC7B,MAAK,aAAa,WAAW,GAAG;;CAIxC,mBAA4D;EACxD,MAAM,OAAO,MAAM,kBAAkB;AACrC,cAAY,MAAoB,CAAC,kBAAkB,EAAE,kBAAkB;AACvE,SAAO;;CAGX,gBAA+B;AAC3B,MAAI,KAAK,eACL;AAGJ,MAAI;GACA,MAAM,SAAS,MAAM,eAAe;AAKpC,OAAK,kBAA8B,QACzB,QAAuC,OAAO,UAAmB;AACnE,SAAK,oBAAoB,MAAM;KACjC;WAED,OAAO;AACZ,QAAK,oBAAoB,MAAM;;;CAIvC,oBAA8B,OAAsB;EAChD,MAAM,MAAM,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,MAAM,CAAC;AACrE,OAAK,iBAAiB;AAEtB,OAAK,cACD,IAAI,YAAkC,YAAY;GAC9C,QAAQ;IACJ,SAAS,KAAK,aAAa,KAAK,QAAQ,aAAa;IACrD,SAAS,IAAI;IACb,OAAO,IAAI;IACd;GACD,SAAS;GACT,UAAU;GACb,CAAC,CACL;AAGD,MAAI;GACA,MAAM,OAAO,KAAK;AAElB,OAAI,MAAM;AACN,SAAK,cAAc;IACnB,MAAM,QAAQ,SAAS,cAAc,MAAM;AAC3C,UAAM,aAAa,QAAQ,QAAQ;AACnC,UAAM,aAAa,QAAQ,QAAQ;AACnC,UAAM,cAAc;AACpB,SAAK,YAAY,MAAM;;UAEvB"}
1
+ {"version":3,"file":"decorate-Br_PE9pq.js","names":[],"sources":["../../src/internal/safe-custom-element.ts","../../src/base/styles.ts","../../src/base/shadow-reset.styles.ts","../../src/base/pk-element.ts"],"sourcesContent":["/**\n * Lit's `@customElement` always calls `customElements.define`. On Craft CP pages\n * that load multiple Plugin Kit consumers (each with its own bundled copy of the\n * same tag), the second define throws NotSupportedError and aborts the rest of\n * that register bundle. Skip redefine — first registrant wins.\n *\n * Drop-in replacement for `customElement` from `lit/decorators.js` /\n * `@lit/reactive-element/decorators/custom-element.js`.\n */\n\ntype CustomElementClass = Omit<typeof HTMLElement, 'new'>;\n\ntype Constructor<T> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (...args: any[]): T;\n};\n\nexport type CustomElementDecorator = {\n (cls: CustomElementClass): void;\n (\n target: CustomElementClass,\n context: ClassDecoratorContext<Constructor<HTMLElement>>,\n ): void;\n};\n\nexport const customElement =\n (tagName: string): CustomElementDecorator =>\n (\n classOrTarget: CustomElementClass | Constructor<HTMLElement>,\n context?: ClassDecoratorContext<Constructor<HTMLElement>>,\n ) => {\n const define = (): void => {\n if (customElements.get(tagName)) {\n return;\n }\n\n customElements.define(tagName, classOrTarget as CustomElementConstructor);\n };\n\n if (context !== undefined) {\n context.addInitializer(define);\n } else {\n define();\n }\n };\n","import { css, unsafeCSS, type CSSResultGroup } from 'lit';\n\nconst sharedStyleSheets = new Map<string, CSSStyleSheet>();\n\n/**\n * Share constructable stylesheets across component instances ( pattern).\n * Falls back to an injected `<style>` tag when adoptedStyleSheets aren't supported.\n */\nexport function adoptStyles(\n shadowRoot: ShadowRoot,\n styleResults: CSSResultGroup[],\n cacheKey?: string,\n): void {\n const cssText = styleResults\n .flatMap((result) => (Array.isArray(result) ? result : [result]))\n .map((result) => {\n if ('cssText' in result && typeof result.cssText === 'string') {\n return result.cssText;\n }\n\n return unsafeCSS(result).cssText;\n })\n .join('\\n');\n\n if (!('adoptedStyleSheets' in Document.prototype) || typeof CSSStyleSheet === 'undefined') {\n const styleKey = cacheKey ?? String(styleResults.length);\n\n if (!shadowRoot.querySelector(`style[data-pk-adopted-styles=\"${styleKey}\"]`)) {\n const style = document.createElement('style');\n style.dataset.pkAdoptedStyles = styleKey;\n style.textContent = cssText;\n shadowRoot.prepend(style);\n }\n\n return;\n }\n\n const key = cacheKey ?? cssText;\n let sheet = sharedStyleSheets.get(key);\n\n if (!sheet) {\n sheet = new CSSStyleSheet();\n sheet.replaceSync(cssText);\n sharedStyleSheets.set(key, sheet);\n }\n\n shadowRoot.adoptedStyleSheets = [...shadowRoot.adoptedStyleSheets, sheet];\n}\n\nexport const hostDisplayInlineBlock = css`\n @layer pk-component {\n :host {\n display: inline-block;\n vertical-align: middle;\n }\n }\n`;\n\nexport const focusRing = css`\n .pk-focus-ring:focus {\n outline: none;\n }\n\n .pk-focus-ring:focus-visible {\n box-shadow: var(--pk-shadow-focus);\n }\n`;\n","import { css } from 'lit';\n\n/**\n * Shadow-root baseline — box model + inherited typography inside every pk-* component.\n * Applied via PkElement.createRenderRoot(); does not replace per-component styles.\n */\nexport const shadowResetStyles = css`\n @layer pk-reset {\n :host {\n box-sizing: border-box;\n }\n\n :host *,\n :host *::before,\n :host *::after {\n box-sizing: border-box;\n }\n\n :host(:not([hidden])) {\n /* Prevent UA / CP margin on unstyled custom element hosts in light DOM. */\n margin: 0;\n }\n }\n`;\n","import { LitElement } from 'lit';\n\nimport { adoptStyles } from './styles.js';\nimport { shadowResetStyles } from './shadow-reset.styles.js';\n\nexport type PkElementErrorDetail = {\n tagName: string;\n message: string;\n stack?: string;\n};\n\ndeclare global {\n interface GlobalEventHandlersEventMap {\n 'pk-error': CustomEvent<PkElementErrorDetail>;\n }\n}\n\n/**\n * Base class for Plugin Kit web components.\n * Open shadow root; Lit adopts constructable stylesheets where supported.\n *\n * `performUpdate` is wrapped so a single control failure degrades inline instead of\n * taking down the whole CP surface (React error boundaries do not see Lit throws).\n */\nexport class PkElement extends LitElement {\n static override shadowRootOptions: ShadowRootInit = {\n mode: 'open',\n delegatesFocus: true,\n };\n\n /** When set, subclasses should skip normal render — base shows a minimal error shell. */\n protected pkRenderFailed = false;\n\n override connectedCallback(): void {\n super.connectedCallback();\n // Host marker for document/shadow peers (e.g. Tailwind preflight). Must not set\n // attributes in the constructor — CE rules forbid that on createElement().\n if (!this.hasAttribute('data-pk')) {\n this.setAttribute('data-pk', '');\n }\n }\n\n override createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n adoptStyles(root as ShadowRoot, [shadowResetStyles], 'pk-shadow-reset');\n return root;\n }\n\n override performUpdate(): void {\n if (this.pkRenderFailed) {\n return;\n }\n\n try {\n const result = super.performUpdate();\n\n // Lit deprecates returning a Promise from performUpdate — handle async render\n // failures without making this override async (avoids dev-mode update-queue bugs).\n // Lit may return void; keep a Promise guard for older async performUpdate paths.\n if ((result as unknown) instanceof Promise) {\n void (result as unknown as Promise<unknown>).catch((error: unknown) => {\n this.handleRenderFailure(error);\n });\n }\n } catch (error) {\n this.handleRenderFailure(error);\n }\n }\n\n protected handleRenderFailure(error: unknown): void {\n const err = error instanceof Error ? error : new Error(String(error));\n this.pkRenderFailed = true;\n\n this.dispatchEvent(\n new CustomEvent<PkElementErrorDetail>('pk-error', {\n detail: {\n tagName: this.localName || this.tagName.toLowerCase(),\n message: err.message,\n stack: err.stack,\n },\n bubbles: true,\n composed: true,\n }),\n );\n\n // Last-resort inline fallback — plain DOM so we do not recurse through Lit render().\n try {\n const root = this.renderRoot as ShadowRoot | HTMLElement | undefined;\n\n if (root) {\n root.textContent = '';\n const shell = document.createElement('div');\n shell.setAttribute('part', 'error');\n shell.setAttribute('role', 'alert');\n shell.textContent = 'This control failed to load.';\n root.appendChild(shell);\n }\n } catch {\n /* never throw from the error handler */\n }\n }\n}\n"],"mappings":";;AAyBA,IAAa,iBACR,aAEG,eACA,YACC;CACD,MAAM,eAAqB;EACvB,IAAI,eAAe,IAAI,OAAO,GAC1B;EAGJ,eAAe,OAAO,SAAS,aAAyC;CAC5E;CAEA,IAAI,YAAY,KAAA,GACZ,QAAQ,eAAe,MAAM;MAE7B,OAAO;AAEf;;;AC1CJ,IAAM,oCAAoB,IAAI,IAA2B;;;;;AAMzD,SAAgB,YACZ,YACA,cACA,UACI;CACJ,MAAM,UAAU,aACX,SAAS,WAAY,MAAM,QAAQ,MAAM,IAAI,SAAS,CAAC,MAAM,CAAE,CAAC,CAChE,KAAK,WAAW;EACb,IAAI,aAAa,UAAU,OAAO,OAAO,YAAY,UACjD,OAAO,OAAO;EAGlB,OAAO,UAAU,MAAM,CAAC,CAAC;CAC7B,CAAC,CAAC,CACD,KAAK,IAAI;CAEd,IAAI,EAAE,wBAAwB,SAAS,cAAc,OAAO,kBAAkB,aAAa;EACvF,MAAM,WAAW,YAAY,OAAO,aAAa,MAAM;EAEvD,IAAI,CAAC,WAAW,cAAc,iCAAiC,SAAS,GAAG,GAAG;GAC1E,MAAM,QAAQ,SAAS,cAAc,OAAO;GAC5C,MAAM,QAAQ,kBAAkB;GAChC,MAAM,cAAc;GACpB,WAAW,QAAQ,KAAK;EAC5B;EAEA;CACJ;CAEA,MAAM,MAAM,YAAY;CACxB,IAAI,QAAQ,kBAAkB,IAAI,GAAG;CAErC,IAAI,CAAC,OAAO;EACR,QAAQ,IAAI,cAAc;EAC1B,MAAM,YAAY,OAAO;EACzB,kBAAkB,IAAI,KAAK,KAAK;CACpC;CAEA,WAAW,qBAAqB,CAAC,GAAG,WAAW,oBAAoB,KAAK;AAC5E;AAEA,IAAa,yBAAyB,GAAG;;;;;;;;AAShB,GAAG;;;;;;;;;;;;;;;ACpD5B,IAAa,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;ACkBpC,IAAa,YAAb,cAA+B,WAAW;;;EAOX,KAAA,iBAAA;;;EANyB,KAAA,oBAAA;GAChD,MAAM;GACN,gBAAgB;EACpB;;CAKA,oBAAmC;EAC/B,MAAM,kBAAkB;EAGxB,IAAI,CAAC,KAAK,aAAa,SAAS,GAC5B,KAAK,aAAa,WAAW,EAAE;CAEvC;CAEA,mBAA4D;EACxD,MAAM,OAAO,MAAM,iBAAiB;EACpC,YAAY,MAAoB,CAAC,iBAAiB,GAAG,iBAAiB;EACtE,OAAO;CACX;CAEA,gBAA+B;EAC3B,IAAI,KAAK,gBACL;EAGJ,IAAI;GACA,MAAM,SAAS,MAAM,cAAc;GAKnC,IAAK,kBAA8B,SAC/B,OAA6C,OAAO,UAAmB;IACnE,KAAK,oBAAoB,KAAK;GAClC,CAAC;EAET,SAAS,OAAO;GACZ,KAAK,oBAAoB,KAAK;EAClC;CACJ;CAEA,oBAA8B,OAAsB;EAChD,MAAM,MAAM,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,CAAC;EACpE,KAAK,iBAAiB;EAEtB,KAAK,cACD,IAAI,YAAkC,YAAY;GAC9C,QAAQ;IACJ,SAAS,KAAK,aAAa,KAAK,QAAQ,YAAY;IACpD,SAAS,IAAI;IACb,OAAO,IAAI;GACf;GACA,SAAS;GACT,UAAU;EACd,CAAC,CACL;EAGA,IAAI;GACA,MAAM,OAAO,KAAK;GAElB,IAAI,MAAM;IACN,KAAK,cAAc;IACnB,MAAM,QAAQ,SAAS,cAAc,KAAK;IAC1C,MAAM,aAAa,QAAQ,OAAO;IAClC,MAAM,aAAa,QAAQ,OAAO;IAClC,MAAM,cAAc;IACpB,KAAK,YAAY,KAAK;GAC1B;EACJ,QAAQ,CAER;CACJ;AACJ"}
@@ -0,0 +1,2 @@
1
+ import { property as property$1, query, state } from "lit/decorators.js";
2
+ export { query as n, state as r, property$1 as t };
@@ -29,4 +29,4 @@ function getDismissibleStackSnapshot() {
29
29
  //#endregion
30
30
  export { unregisterDismissible as i, isTopDismissible as n, registerDismissible as r, getDismissibleStackSnapshot as t };
31
31
 
32
- //# sourceMappingURL=dismissible-stack-B3BgzdQb.js.map
32
+ //# sourceMappingURL=dismissible-stack-CwhtwAyo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dismissible-stack-B3BgzdQb.js","names":[],"sources":["../../src/a11y/dismissible-stack.ts"],"sourcesContent":["/**\n * Dismissible stack — adapted from internal/dismissible-stack.ts.\n * Ensures only the topmost overlay handles Escape.\n */\nconst dismissibleStack: object[] = [];\n\nexport function registerDismissible(key: object): void {\n dismissibleStack.push(key);\n}\n\nexport function unregisterDismissible(key: object): void {\n for (let index = dismissibleStack.length - 1; index >= 0; index -= 1) {\n if (dismissibleStack[index] === key) {\n dismissibleStack.splice(index, 1);\n break;\n }\n }\n}\n\nexport function isTopDismissible(key: object): boolean {\n return dismissibleStack.length > 0 && dismissibleStack[dismissibleStack.length - 1] === key;\n}\n\n/** Dev/diagnostic — ordered stack of dismissible overlay hosts (bottom → top). */\nexport function getDismissibleStackSnapshot(): string[] {\n return dismissibleStack.map((key) => {\n if (key instanceof HTMLElement) {\n const id = key.id ? `#${key.id}` : '';\n return `<${key.localName}${id}>`;\n }\n\n return key.constructor?.name ?? 'object';\n });\n}\n"],"mappings":";;;;;AAIA,IAAM,mBAA6B,EAAE;AAErC,SAAgB,oBAAoB,KAAmB;AACnD,kBAAiB,KAAK,IAAI;;AAG9B,SAAgB,sBAAsB,KAAmB;AACrD,MAAK,IAAI,QAAQ,iBAAiB,SAAS,GAAG,SAAS,GAAG,SAAS,EAC/D,KAAI,iBAAiB,WAAW,KAAK;AACjC,mBAAiB,OAAO,OAAO,EAAE;AACjC;;;AAKZ,SAAgB,iBAAiB,KAAsB;AACnD,QAAO,iBAAiB,SAAS,KAAK,iBAAiB,iBAAiB,SAAS,OAAO;;;AAI5F,SAAgB,8BAAwC;AACpD,QAAO,iBAAiB,KAAK,QAAQ;AACjC,MAAI,eAAe,aAAa;GAC5B,MAAM,KAAK,IAAI,KAAK,IAAI,IAAI,OAAO;AACnC,UAAO,IAAI,IAAI,YAAY,GAAG;;AAGlC,SAAO,IAAI,aAAa,QAAQ;GAClC"}
1
+ {"version":3,"file":"dismissible-stack-CwhtwAyo.js","names":[],"sources":["../../src/a11y/dismissible-stack.ts"],"sourcesContent":["/**\n * Dismissible stack — adapted from internal/dismissible-stack.ts.\n * Ensures only the topmost overlay handles Escape.\n */\nconst dismissibleStack: object[] = [];\n\nexport function registerDismissible(key: object): void {\n dismissibleStack.push(key);\n}\n\nexport function unregisterDismissible(key: object): void {\n for (let index = dismissibleStack.length - 1; index >= 0; index -= 1) {\n if (dismissibleStack[index] === key) {\n dismissibleStack.splice(index, 1);\n break;\n }\n }\n}\n\nexport function isTopDismissible(key: object): boolean {\n return dismissibleStack.length > 0 && dismissibleStack[dismissibleStack.length - 1] === key;\n}\n\n/** Dev/diagnostic — ordered stack of dismissible overlay hosts (bottom → top). */\nexport function getDismissibleStackSnapshot(): string[] {\n return dismissibleStack.map((key) => {\n if (key instanceof HTMLElement) {\n const id = key.id ? `#${key.id}` : '';\n return `<${key.localName}${id}>`;\n }\n\n return key.constructor?.name ?? 'object';\n });\n}\n"],"mappings":";;;;;AAIA,IAAM,mBAA6B,CAAC;AAEpC,SAAgB,oBAAoB,KAAmB;CACnD,iBAAiB,KAAK,GAAG;AAC7B;AAEA,SAAgB,sBAAsB,KAAmB;CACrD,KAAK,IAAI,QAAQ,iBAAiB,SAAS,GAAG,SAAS,GAAG,SAAS,GAC/D,IAAI,iBAAiB,WAAW,KAAK;EACjC,iBAAiB,OAAO,OAAO,CAAC;EAChC;CACJ;AAER;AAEA,SAAgB,iBAAiB,KAAsB;CACnD,OAAO,iBAAiB,SAAS,KAAK,iBAAiB,iBAAiB,SAAS,OAAO;AAC5F;;AAGA,SAAgB,8BAAwC;CACpD,OAAO,iBAAiB,KAAK,QAAQ;EACjC,IAAI,eAAe,aAAa;GAC5B,MAAM,KAAK,IAAI,KAAK,IAAI,IAAI,OAAO;GACnC,OAAO,IAAI,IAAI,YAAY,GAAG;EAClC;EAEA,OAAO,IAAI,aAAa,QAAQ;CACpC,CAAC;AACL"}
@@ -11,4 +11,4 @@ function hasInstructionContent(hasSlot, instructions, withInstructions = false)
11
11
  //#endregion
12
12
  export { readLegacyInstructions as n, hasInstructionContent as t };
13
13
 
14
- //# sourceMappingURL=field-labels-CGSfAGf-.js.map
14
+ //# sourceMappingURL=field-labels-pY-gQDwQ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"field-labels-CGSfAGf-.js","names":[],"sources":["../../src/internal/field-labels.ts"],"sourcesContent":["/** Reads the legacy `hint` attribute when `instructions` is empty. */\nexport function readLegacyInstructions(element: HTMLElement, instructions: string): string {\n if (instructions) {\n return instructions;\n }\n\n return element.getAttribute('hint') ?? '';\n}\n\n/** Whether a named slot (or legacy alias) has content. */\nexport function hasInstructionContent(\n hasSlot: (name: string, flag?: boolean) => boolean,\n instructions: string,\n withInstructions = false,\n): boolean {\n return Boolean(instructions)\n || hasSlot('instructions', withInstructions)\n || hasSlot('hint');\n}\n"],"mappings":";;AACA,SAAgB,uBAAuB,SAAsB,cAA8B;AACvF,KAAI,aACA,QAAO;AAGX,QAAO,QAAQ,aAAa,OAAO,IAAI;;;AAI3C,SAAgB,sBACZ,SACA,cACA,mBAAmB,OACZ;AACP,QAAO,QAAQ,aAAa,IACrB,QAAQ,gBAAgB,iBAAiB,IACzC,QAAQ,OAAO"}
1
+ {"version":3,"file":"field-labels-pY-gQDwQ.js","names":[],"sources":["../../src/internal/field-labels.ts"],"sourcesContent":["/** Reads the legacy `hint` attribute when `instructions` is empty. */\nexport function readLegacyInstructions(element: HTMLElement, instructions: string): string {\n if (instructions) {\n return instructions;\n }\n\n return element.getAttribute('hint') ?? '';\n}\n\n/** Whether a named slot (or legacy alias) has content. */\nexport function hasInstructionContent(\n hasSlot: (name: string, flag?: boolean) => boolean,\n instructions: string,\n withInstructions = false,\n): boolean {\n return Boolean(instructions)\n || hasSlot('instructions', withInstructions)\n || hasSlot('hint');\n}\n"],"mappings":";;AACA,SAAgB,uBAAuB,SAAsB,cAA8B;CACvF,IAAI,cACA,OAAO;CAGX,OAAO,QAAQ,aAAa,MAAM,KAAK;AAC3C;;AAGA,SAAgB,sBACZ,SACA,cACA,mBAAmB,OACZ;CACP,OAAO,QAAQ,YAAY,KACpB,QAAQ,gBAAgB,gBAAgB,KACxC,QAAQ,MAAM;AACzB"}
@@ -1,4 +1,4 @@
1
- import { n as getDeepestActiveElement } from "./active-elements-DM_lCHaW.js";
1
+ import { n as getDeepestActiveElement } from "./active-elements-739kISON.js";
2
2
  //#region src/a11y/focus.ts
3
3
  var idCounter = 0;
4
4
  /** Stable unique id for aria-labelledby / aria-controls wiring inside components. */
@@ -119,4 +119,4 @@ var LiveRegion = class {
119
119
  //#endregion
120
120
  export { uniqueId as i, createFocusTrap as n, getFocusableElements as r, LiveRegion as t };
121
121
 
122
- //# sourceMappingURL=focus-C6pY4Ym4.js.map
122
+ //# sourceMappingURL=focus-DcVUPVqn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"focus-C6pY4Ym4.js","names":[],"sources":["../../src/a11y/focus.ts"],"sourcesContent":["import { getDeepestActiveElement } from './active-elements.js';\n\nlet idCounter = 0;\n\n/** Stable unique id for aria-labelledby / aria-controls wiring inside components. */\nexport function uniqueId(prefix = 'pk'): string {\n idCounter += 1;\n return `${prefix}-${idCounter}`;\n}\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\nconst FOCUSABLE_SELECTOR_WITH_DISABLED = [\n 'a[href]',\n 'button',\n 'input',\n 'select',\n 'textarea',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\nfunction isDisplayed(element: HTMLElement): boolean {\n return element.offsetParent !== null || element.getClientRects().length > 0;\n}\n\nfunction matchesFocusable(element: HTMLElement, includeDisabled: boolean): boolean {\n return element.matches(includeDisabled ? FOCUSABLE_SELECTOR_WITH_DISABLED : FOCUSABLE_SELECTOR);\n}\n\n/** Walks shadow roots and assigned slot content — required for slotted dialog actions. */\nfunction gatherFocusableElements(\n node: Node,\n includeDisabled: boolean,\n results: HTMLElement[],\n seen: Set<HTMLElement>,\n): void {\n if (node instanceof HTMLSlotElement) {\n for (const assigned of node.assignedElements({ flatten: true })) {\n gatherFocusableElements(assigned, includeDisabled, results, seen);\n }\n\n return;\n }\n\n if (!(node instanceof HTMLElement)) {\n return;\n }\n\n if (matchesFocusable(node, includeDisabled) && isDisplayed(node) && !seen.has(node)) {\n seen.add(node);\n results.push(node);\n }\n\n const subtree = node.shadowRoot ?? node;\n\n for (const child of subtree.childNodes) {\n gatherFocusableElements(child, includeDisabled, results, seen);\n }\n}\n\nexport function getFocusableElements(root: ParentNode, includeDisabled = false): HTMLElement[] {\n const results: HTMLElement[] = [];\n const seen = new Set<HTMLElement>();\n\n if (root instanceof DocumentFragment) {\n for (const child of root.childNodes) {\n gatherFocusableElements(child, includeDisabled, results, seen);\n }\n\n return results;\n }\n\n gatherFocusableElements(root as Node, includeDisabled, results, seen);\n return results;\n}\n\nfunction containsActiveElement(element: HTMLElement, active: Element | null | undefined): boolean {\n if (!active) {\n return false;\n }\n\n return element === active || element.contains(active);\n}\n\nfunction getActiveFocusIndex(focusable: HTMLElement[], active: Element | null | undefined): number {\n if (!active) {\n return -1;\n }\n\n return focusable.findIndex((element) => containsActiveElement(element, active));\n}\n\nexport type FocusTrapOptions = {\n root: HTMLElement;\n onEscape?: () => void;\n};\n\n/**\n * Focus trap for overlays — adapted from dialog patterns.\n * Uses deepest active element so shadow-DOM controls participate correctly.\n */\nexport function createFocusTrap({ root, onEscape }: FocusTrapOptions): () => void {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onEscape?.();\n return;\n }\n\n if (event.key !== 'Tab') {\n return;\n }\n\n const focusable = getFocusableElements(root);\n\n if (focusable.length === 0) {\n event.preventDefault();\n return;\n }\n\n const first = focusable[0]!;\n const last = focusable[focusable.length - 1]!;\n const active = getDeepestActiveElement() ?? document.activeElement;\n const activeIndex = getActiveFocusIndex(focusable, active);\n\n if (event.shiftKey) {\n if (activeIndex <= 0) {\n event.preventDefault();\n last.focus();\n }\n\n return;\n }\n\n if (activeIndex === -1 || activeIndex >= focusable.length - 1) {\n event.preventDefault();\n first.focus();\n }\n };\n\n document.addEventListener('keydown', handleKeyDown, true);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown, true);\n };\n}\n\n/** Screen reader announcements for async overlay state changes. */\nexport class LiveRegion {\n private readonly element: HTMLElement;\n\n constructor(politeness: 'polite' | 'assertive' = 'polite') {\n this.element = document.createElement('div');\n this.element.setAttribute('aria-live', politeness);\n this.element.setAttribute('aria-atomic', 'true');\n this.element.className = 'pk-visually-hidden';\n this.element.style.cssText = 'position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;';\n document.body.append(this.element);\n }\n\n announce(message: string): void {\n this.element.textContent = '';\n requestAnimationFrame(() => {\n this.element.textContent = message;\n });\n }\n\n destroy(): void {\n this.element.remove();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"focus-DcVUPVqn.js","names":[],"sources":["../../src/a11y/focus.ts"],"sourcesContent":["import { getDeepestActiveElement } from './active-elements.js';\n\nlet idCounter = 0;\n\n/** Stable unique id for aria-labelledby / aria-controls wiring inside components. */\nexport function uniqueId(prefix = 'pk'): string {\n idCounter += 1;\n return `${prefix}-${idCounter}`;\n}\n\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\nconst FOCUSABLE_SELECTOR_WITH_DISABLED = [\n 'a[href]',\n 'button',\n 'input',\n 'select',\n 'textarea',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\nfunction isDisplayed(element: HTMLElement): boolean {\n return element.offsetParent !== null || element.getClientRects().length > 0;\n}\n\nfunction matchesFocusable(element: HTMLElement, includeDisabled: boolean): boolean {\n return element.matches(includeDisabled ? FOCUSABLE_SELECTOR_WITH_DISABLED : FOCUSABLE_SELECTOR);\n}\n\n/** Walks shadow roots and assigned slot content — required for slotted dialog actions. */\nfunction gatherFocusableElements(\n node: Node,\n includeDisabled: boolean,\n results: HTMLElement[],\n seen: Set<HTMLElement>,\n): void {\n if (node instanceof HTMLSlotElement) {\n for (const assigned of node.assignedElements({ flatten: true })) {\n gatherFocusableElements(assigned, includeDisabled, results, seen);\n }\n\n return;\n }\n\n if (!(node instanceof HTMLElement)) {\n return;\n }\n\n if (matchesFocusable(node, includeDisabled) && isDisplayed(node) && !seen.has(node)) {\n seen.add(node);\n results.push(node);\n }\n\n const subtree = node.shadowRoot ?? node;\n\n for (const child of subtree.childNodes) {\n gatherFocusableElements(child, includeDisabled, results, seen);\n }\n}\n\nexport function getFocusableElements(root: ParentNode, includeDisabled = false): HTMLElement[] {\n const results: HTMLElement[] = [];\n const seen = new Set<HTMLElement>();\n\n if (root instanceof DocumentFragment) {\n for (const child of root.childNodes) {\n gatherFocusableElements(child, includeDisabled, results, seen);\n }\n\n return results;\n }\n\n gatherFocusableElements(root as Node, includeDisabled, results, seen);\n return results;\n}\n\nfunction containsActiveElement(element: HTMLElement, active: Element | null | undefined): boolean {\n if (!active) {\n return false;\n }\n\n return element === active || element.contains(active);\n}\n\nfunction getActiveFocusIndex(focusable: HTMLElement[], active: Element | null | undefined): number {\n if (!active) {\n return -1;\n }\n\n return focusable.findIndex((element) => containsActiveElement(element, active));\n}\n\nexport type FocusTrapOptions = {\n root: HTMLElement;\n onEscape?: () => void;\n};\n\n/**\n * Focus trap for overlays — adapted from dialog patterns.\n * Uses deepest active element so shadow-DOM controls participate correctly.\n */\nexport function createFocusTrap({ root, onEscape }: FocusTrapOptions): () => void {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n onEscape?.();\n return;\n }\n\n if (event.key !== 'Tab') {\n return;\n }\n\n const focusable = getFocusableElements(root);\n\n if (focusable.length === 0) {\n event.preventDefault();\n return;\n }\n\n const first = focusable[0]!;\n const last = focusable[focusable.length - 1]!;\n const active = getDeepestActiveElement() ?? document.activeElement;\n const activeIndex = getActiveFocusIndex(focusable, active);\n\n if (event.shiftKey) {\n if (activeIndex <= 0) {\n event.preventDefault();\n last.focus();\n }\n\n return;\n }\n\n if (activeIndex === -1 || activeIndex >= focusable.length - 1) {\n event.preventDefault();\n first.focus();\n }\n };\n\n document.addEventListener('keydown', handleKeyDown, true);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown, true);\n };\n}\n\n/** Screen reader announcements for async overlay state changes. */\nexport class LiveRegion {\n private readonly element: HTMLElement;\n\n constructor(politeness: 'polite' | 'assertive' = 'polite') {\n this.element = document.createElement('div');\n this.element.setAttribute('aria-live', politeness);\n this.element.setAttribute('aria-atomic', 'true');\n this.element.className = 'pk-visually-hidden';\n this.element.style.cssText = 'position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;';\n document.body.append(this.element);\n }\n\n announce(message: string): void {\n this.element.textContent = '';\n requestAnimationFrame(() => {\n this.element.textContent = message;\n });\n }\n\n destroy(): void {\n this.element.remove();\n }\n}\n"],"mappings":"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"}
@@ -105,4 +105,4 @@ var formControlStyles = css`
105
105
  //#endregion
106
106
  export { formControlStyles as t };
107
107
 
108
- //# sourceMappingURL=form-control.styles-BHwSsx_y.js.map
108
+ //# sourceMappingURL=form-control.styles-CQ93gnVf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-control.styles-BHwSsx_y.js","names":[],"sources":["../../src/base/form-control.styles.ts"],"sourcesContent":["import { css } from 'lit';\n\n/** Shared label/instructions layout for form controls — Craft tokens, structure. */\nexport const formControlStyles = css`\n @layer pk-component {\n .form-control {\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n width: 100%;\n }\n\n .form-control__header {\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n min-width: 0;\n }\n\n .form-control__label {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n margin: 0;\n color: var(--pk-color-gray-700);\n font-family: var(--pk-font-family);\n font-size: var(--pk-font-size-base);\n font-weight: 700;\n line-height: var(--pk-line-height);\n }\n\n .form-control__instructions,\n .form-control__hint {\n margin: 0;\n color: var(--pk-color-gray-500);\n font-family: var(--pk-font-family);\n font-size: var(--pk-font-size-base);\n line-height: var(--pk-line-height);\n }\n\n .form-control__instructions:empty,\n .form-control__hint:empty {\n display: none;\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n .form-control__input {\n display: flex;\n align-items: stretch;\n position: relative;\n width: 100%;\n }\n\n .form-control__start,\n .form-control__end {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n }\n\n .form-control__start {\n margin-inline-end: 6px;\n }\n\n .form-control__end {\n margin-inline-start: 6px;\n }\n\n .icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n color: var(--pk-color-gray-500);\n cursor: pointer;\n line-height: 0;\n }\n\n .icon-button:focus-visible {\n outline: none;\n box-shadow: var(--pk-shadow-focus);\n border-radius: var(--pk-radius-sm);\n }\n\n .icon-button:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n`;\n"],"mappings":";;;AAGA,IAAa,oBAAoB,GAAG"}
1
+ {"version":3,"file":"form-control.styles-CQ93gnVf.js","names":[],"sources":["../../src/base/form-control.styles.ts"],"sourcesContent":["import { css } from 'lit';\n\n/** Shared label/instructions layout for form controls — Craft tokens, structure. */\nexport const formControlStyles = css`\n @layer pk-component {\n .form-control {\n display: flex;\n flex-direction: column;\n gap: 0.375rem;\n width: 100%;\n }\n\n .form-control__header {\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n min-width: 0;\n }\n\n .form-control__label {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n margin: 0;\n color: var(--pk-color-gray-700);\n font-family: var(--pk-font-family);\n font-size: var(--pk-font-size-base);\n font-weight: 700;\n line-height: var(--pk-line-height);\n }\n\n .form-control__instructions,\n .form-control__hint {\n margin: 0;\n color: var(--pk-color-gray-500);\n font-family: var(--pk-font-family);\n font-size: var(--pk-font-size-base);\n line-height: var(--pk-line-height);\n }\n\n .form-control__instructions:empty,\n .form-control__hint:empty {\n display: none;\n }\n\n .sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n .form-control__input {\n display: flex;\n align-items: stretch;\n position: relative;\n width: 100%;\n }\n\n .form-control__start,\n .form-control__end {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n }\n\n .form-control__start {\n margin-inline-end: 6px;\n }\n\n .form-control__end {\n margin-inline-start: 6px;\n }\n\n .icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin: 0;\n padding: 0;\n border: 0;\n background: transparent;\n color: var(--pk-color-gray-500);\n cursor: pointer;\n line-height: 0;\n }\n\n .icon-button:focus-visible {\n outline: none;\n box-shadow: var(--pk-shadow-focus);\n border-radius: var(--pk-radius-sm);\n }\n\n .icon-button:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n`;\n"],"mappings":";;;AAGA,IAAa,oBAAoB,GAAG"}
@@ -71,4 +71,4 @@ var HasSlotController = class {
71
71
  //#endregion
72
72
  export { HasSlotController as t };
73
73
 
74
- //# sourceMappingURL=has-slot-9zjTXvea.js.map
74
+ //# sourceMappingURL=has-slot-DJv86HKx.js.map