@verbb/plugin-kit-web 2.0.21 → 2.0.23

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 (419) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/custom-elements.json +1400 -13
  3. package/dist/chunks/{active-elements-BwpXu8Lb.js → active-elements-DM_lCHaW.js} +1 -1
  4. package/dist/chunks/{active-elements-BwpXu8Lb.js.map → active-elements-DM_lCHaW.js.map} +1 -1
  5. package/dist/chunks/{animate-with-class-CsDwYnXL.js → animate-with-class-NP-yJVt_.js} +1 -1
  6. package/dist/chunks/{animate-with-class-CsDwYnXL.js.map → animate-with-class-NP-yJVt_.js.map} +1 -1
  7. package/dist/chunks/{autoloader-dJO3tYOX.js → autoloader-DnSfHkrD.js} +3 -3
  8. package/dist/chunks/{autoloader-dJO3tYOX.js.map → autoloader-DnSfHkrD.js.map} +1 -1
  9. package/dist/chunks/{button-group-item.styles-DYmBR28a.js → button-group-item.styles-G05d0DNI.js} +1 -1
  10. package/dist/chunks/{button-group-item.styles-DYmBR28a.js.map → button-group-item.styles-G05d0DNI.js.map} +1 -1
  11. package/dist/chunks/{component-registry-D34fm8xW.js → component-registry-DoevfR-u.js} +5 -1
  12. package/dist/chunks/component-registry-DoevfR-u.js.map +1 -0
  13. package/dist/chunks/{control-aria-B2QMq4ji.js → control-aria-CzouQRZD.js} +1 -1
  14. package/dist/chunks/{control-aria-B2QMq4ji.js.map → control-aria-CzouQRZD.js.map} +1 -1
  15. package/dist/chunks/{dismissible-stack-XQUMfKO3.js → dismissible-stack-B3BgzdQb.js} +1 -1
  16. package/dist/chunks/{dismissible-stack-XQUMfKO3.js.map → dismissible-stack-B3BgzdQb.js.map} +1 -1
  17. package/dist/chunks/{field-labels-CmuAW8Cl.js → field-labels-CGSfAGf-.js} +1 -1
  18. package/dist/chunks/{field-labels-CmuAW8Cl.js.map → field-labels-CGSfAGf-.js.map} +1 -1
  19. package/dist/chunks/{focus-aa5dlv8k.js → focus-C6pY4Ym4.js} +2 -2
  20. package/dist/chunks/{focus-aa5dlv8k.js.map → focus-C6pY4Ym4.js.map} +1 -1
  21. package/dist/chunks/{form-control.styles-BQdimE5o.js → form-control.styles-BHwSsx_y.js} +1 -1
  22. package/dist/chunks/{form-control.styles-BQdimE5o.js.map → form-control.styles-BHwSsx_y.js.map} +1 -1
  23. package/dist/chunks/{has-slot-8BvCt_qo.js → has-slot-9zjTXvea.js} +1 -1
  24. package/dist/chunks/{has-slot-8BvCt_qo.js.map → has-slot-9zjTXvea.js.map} +1 -1
  25. package/dist/chunks/{icon.styles-BLTWLqYp.js → icon.styles-pNyUmVtP.js} +1 -1
  26. package/dist/chunks/{icon.styles-BLTWLqYp.js.map → icon.styles-pNyUmVtP.js.map} +1 -1
  27. package/dist/chunks/{icons-BR8JcQj2.js → icons-B8siZLOe.js} +2 -2
  28. package/dist/chunks/{icons-BR8JcQj2.js.map → icons-B8siZLOe.js.map} +1 -1
  29. package/dist/chunks/{mirror-validator-DCjNYrrx.js → mirror-validator-Cszpqlxk.js} +1 -1
  30. package/dist/chunks/{mirror-validator-DCjNYrrx.js.map → mirror-validator-Cszpqlxk.js.map} +1 -1
  31. package/dist/chunks/{option-filter-BQqr8Z21.js → option-filter-Cj5SvyzI.js} +2 -2
  32. package/dist/chunks/{option-filter-BQqr8Z21.js.map → option-filter-Cj5SvyzI.js.map} +1 -1
  33. package/dist/chunks/{overlay-lifecycle-D0pkTQyI.js → overlay-lifecycle-CAoT0LE8.js} +1 -1
  34. package/dist/chunks/{overlay-lifecycle-D0pkTQyI.js.map → overlay-lifecycle-CAoT0LE8.js.map} +1 -1
  35. package/dist/chunks/pk-alert-Cjxl6CY_.js +664 -0
  36. package/dist/chunks/pk-alert-Cjxl6CY_.js.map +1 -0
  37. package/dist/chunks/{pk-autocomplete-qy2Psvqm.js → pk-autocomplete-DA77kdTN.js} +19 -19
  38. package/dist/chunks/{pk-autocomplete-qy2Psvqm.js.map → pk-autocomplete-DA77kdTN.js.map} +1 -1
  39. package/dist/chunks/{pk-button-BrH4u4Qr.js → pk-button-DCtNLEPr.js} +6 -6
  40. package/dist/chunks/{pk-button-BrH4u4Qr.js.map → pk-button-DCtNLEPr.js.map} +1 -1
  41. package/dist/chunks/{pk-button-group-BSz5T5iS.js → pk-button-group-DBdKK_2_.js} +1 -1
  42. package/dist/chunks/{pk-button-group-BSz5T5iS.js.map → pk-button-group-DBdKK_2_.js.map} +1 -1
  43. package/dist/chunks/{pk-button-group-separator-DH3Rl24b.js → pk-button-group-separator-D0Aa0a0f.js} +1 -1
  44. package/dist/chunks/{pk-button-group-separator-DH3Rl24b.js.map → pk-button-group-separator-D0Aa0a0f.js.map} +1 -1
  45. package/dist/chunks/{pk-button-group-text-Qro_KmZb.js → pk-button-group-text-BsqEM-dB.js} +2 -2
  46. package/dist/chunks/{pk-button-group-text-Qro_KmZb.js.map → pk-button-group-text-BsqEM-dB.js.map} +1 -1
  47. package/dist/chunks/{pk-calendar-Z7Y0PjeY.js → pk-calendar-hBz1MnOu.js} +6 -6
  48. package/dist/chunks/{pk-calendar-Z7Y0PjeY.js.map → pk-calendar-hBz1MnOu.js.map} +1 -1
  49. package/dist/chunks/{pk-checkbox-13ArHSmt.js → pk-checkbox-dvHRoVbL.js} +4 -4
  50. package/dist/chunks/{pk-checkbox-13ArHSmt.js.map → pk-checkbox-dvHRoVbL.js.map} +1 -1
  51. package/dist/chunks/{pk-checkbox-select-Ckvfbu83.js → pk-checkbox-select-Cqx5ZCMq.js} +2 -2
  52. package/dist/chunks/{pk-checkbox-select-Ckvfbu83.js.map → pk-checkbox-select-Cqx5ZCMq.js.map} +1 -1
  53. package/dist/chunks/{pk-clear--mPWZP7H.js → pk-clear-LzxwxEX7.js} +1 -1
  54. package/dist/chunks/{pk-clear--mPWZP7H.js.map → pk-clear-LzxwxEX7.js.map} +1 -1
  55. package/dist/chunks/{pk-code-editor-BlG6O5qB.js → pk-code-editor-C_PqjR75.js} +4 -4
  56. package/dist/chunks/{pk-code-editor-BlG6O5qB.js.map → pk-code-editor-C_PqjR75.js.map} +1 -1
  57. package/dist/chunks/{pk-color-input-BRgQ5-vB.js → pk-color-input-4LDV0Z3W.js} +4 -4
  58. package/dist/chunks/{pk-color-input-BRgQ5-vB.js.map → pk-color-input-4LDV0Z3W.js.map} +1 -1
  59. package/dist/chunks/{pk-combobox-ag89QEX2.js → pk-combobox-BeddzAsl.js} +19 -19
  60. package/dist/chunks/{pk-combobox-ag89QEX2.js.map → pk-combobox-BeddzAsl.js.map} +1 -1
  61. package/dist/chunks/{pk-connect.styles-BhW406jt.js → pk-connect.styles-ciqZMK3B.js} +1 -1
  62. package/dist/chunks/{pk-connect.styles-BhW406jt.js.map → pk-connect.styles-ciqZMK3B.js.map} +1 -1
  63. package/dist/chunks/{pk-copy-button-BVaOLtYG.js → pk-copy-button-KegSx46o.js} +29 -8
  64. package/dist/chunks/pk-copy-button-KegSx46o.js.map +1 -0
  65. package/dist/chunks/{pk-date-picker-C2YvDPNm.js → pk-date-picker-D_JFep-Y.js} +19 -19
  66. package/dist/chunks/{pk-date-picker-C2YvDPNm.js.map → pk-date-picker-D_JFep-Y.js.map} +1 -1
  67. package/dist/chunks/{pk-dialog-VMQqLW1f.js → pk-dialog-CFU850OH.js} +8 -8
  68. package/dist/chunks/{pk-dialog-VMQqLW1f.js.map → pk-dialog-CFU850OH.js.map} +1 -1
  69. package/dist/chunks/{pk-dropdown-item-D9OaG5o-.js → pk-dropdown-item-A4P4zfVF.js} +5 -5
  70. package/dist/chunks/{pk-dropdown-item-D9OaG5o-.js.map → pk-dropdown-item-A4P4zfVF.js.map} +1 -1
  71. package/dist/chunks/{pk-dropdown-label-CRNWMWQd.js → pk-dropdown-label-PqDxMkCI.js} +1 -1
  72. package/dist/chunks/{pk-dropdown-label-CRNWMWQd.js.map → pk-dropdown-label-PqDxMkCI.js.map} +1 -1
  73. package/dist/chunks/{pk-dropdown-menu-DW1wI8xQ.js → pk-dropdown-menu-C_vasBoa.js} +9 -9
  74. package/dist/chunks/{pk-dropdown-menu-DW1wI8xQ.js.map → pk-dropdown-menu-C_vasBoa.js.map} +1 -1
  75. package/dist/chunks/{pk-editable-table-DDnu1I8Y.js → pk-editable-table-B85NhFYY.js} +18 -18
  76. package/dist/chunks/{pk-editable-table-DDnu1I8Y.js.map → pk-editable-table-B85NhFYY.js.map} +1 -1
  77. package/dist/chunks/{pk-field-UAlMq6mQ.js → pk-field-BJA2fZ6s.js} +7 -7
  78. package/dist/chunks/{pk-field-UAlMq6mQ.js.map → pk-field-BJA2fZ6s.js.map} +1 -1
  79. package/dist/chunks/{pk-form-associated-element-GxX5lbnk.js → pk-form-associated-element-MqaHdIoH.js} +2 -2
  80. package/dist/chunks/{pk-form-associated-element-GxX5lbnk.js.map → pk-form-associated-element-MqaHdIoH.js.map} +1 -1
  81. package/dist/chunks/{pk-image-browser-Bj8LhWfk.js → pk-image-browser-DLAQcjFt.js} +19 -19
  82. package/dist/chunks/{pk-image-browser-Bj8LhWfk.js.map → pk-image-browser-DLAQcjFt.js.map} +1 -1
  83. package/dist/chunks/{pk-input-BywmK5n2.js → pk-input-CiUNLTSW.js} +11 -11
  84. package/dist/chunks/{pk-input-BywmK5n2.js.map → pk-input-CiUNLTSW.js.map} +1 -1
  85. package/dist/chunks/{pk-input-group-addon-ClBkGmAw.js → pk-input-group-addon-piOznzSS.js} +1 -1
  86. package/dist/chunks/{pk-input-group-addon-ClBkGmAw.js.map → pk-input-group-addon-piOznzSS.js.map} +1 -1
  87. package/dist/chunks/{pk-input-group-button-CHQHsWd4.js → pk-input-group-button-Di2vEJLo.js} +1 -1
  88. package/dist/chunks/{pk-input-group-button-CHQHsWd4.js.map → pk-input-group-button-Di2vEJLo.js.map} +1 -1
  89. package/dist/chunks/{pk-input-group-input-oNnqMBGU.js → pk-input-group-input-CwaaEfr1.js} +1 -1
  90. package/dist/chunks/{pk-input-group-input-oNnqMBGU.js.map → pk-input-group-input-CwaaEfr1.js.map} +1 -1
  91. package/dist/chunks/{pk-input-group-BLqKPnfc.js → pk-input-group-k7WV0pQI.js} +3 -3
  92. package/dist/chunks/{pk-input-group-BLqKPnfc.js.map → pk-input-group-k7WV0pQI.js.map} +1 -1
  93. package/dist/chunks/{pk-input-group-text-HUxlXROB.js → pk-input-group-text-C0VAdy0J.js} +1 -1
  94. package/dist/chunks/{pk-input-group-text-HUxlXROB.js.map → pk-input-group-text-C0VAdy0J.js.map} +1 -1
  95. package/dist/chunks/{pk-input-group-textarea-Cl2FNuw-.js → pk-input-group-textarea-DOG1NIlE.js} +1 -1
  96. package/dist/chunks/{pk-input-group-textarea-Cl2FNuw-.js.map → pk-input-group-textarea-DOG1NIlE.js.map} +1 -1
  97. package/dist/chunks/{pk-lightswitch-VHfJizBW.js → pk-lightswitch-FH5ZxMG2.js} +7 -7
  98. package/dist/chunks/{pk-lightswitch-VHfJizBW.js.map → pk-lightswitch-FH5ZxMG2.js.map} +1 -1
  99. package/dist/chunks/{pk-option-DQZHV9jL.js → pk-option-Cx52kLmz.js} +3 -3
  100. package/dist/chunks/{pk-option-DQZHV9jL.js.map → pk-option-Cx52kLmz.js.map} +1 -1
  101. package/dist/chunks/{pk-option-group-CCzJkBFp.js → pk-option-group-CYo9Ukue.js} +2 -2
  102. package/dist/chunks/{pk-option-group-CCzJkBFp.js.map → pk-option-group-CYo9Ukue.js.map} +1 -1
  103. package/dist/chunks/{pk-popover-D3jkHfwB.js → pk-popover-209LdoPr.js} +9 -9
  104. package/dist/chunks/{pk-popover-D3jkHfwB.js.map → pk-popover-209LdoPr.js.map} +1 -1
  105. package/dist/chunks/{pk-popup-B65tZMQH.js → pk-popup-0EIt9X_W.js} +3 -3
  106. package/dist/chunks/{pk-popup-B65tZMQH.js.map → pk-popup-0EIt9X_W.js.map} +1 -1
  107. package/dist/chunks/{pk-radio-group-Dzd-3HaQ.js → pk-radio-group-CruMBeeF.js} +6 -6
  108. package/dist/chunks/{pk-radio-group-Dzd-3HaQ.js.map → pk-radio-group-CruMBeeF.js.map} +1 -1
  109. package/dist/chunks/{pk-radio-B5XkMHy3.js → pk-radio-jgj6A0Wy.js} +1 -1
  110. package/dist/chunks/{pk-radio-B5XkMHy3.js.map → pk-radio-jgj6A0Wy.js.map} +1 -1
  111. package/dist/chunks/{pk-scroll-area-CdfNxYz8.js → pk-scroll-area-BaqN798b.js} +1 -1
  112. package/dist/chunks/{pk-scroll-area-CdfNxYz8.js.map → pk-scroll-area-BaqN798b.js.map} +1 -1
  113. package/dist/chunks/{pk-select-b5S5WKc-.js → pk-select-UUH7FE4H.js} +18 -18
  114. package/dist/chunks/{pk-select-b5S5WKc-.js.map → pk-select-UUH7FE4H.js.map} +1 -1
  115. package/dist/chunks/{pk-separator-N-VyjYE6.js → pk-separator-Bcxg_GO2.js} +1 -1
  116. package/dist/chunks/{pk-separator-N-VyjYE6.js.map → pk-separator-Bcxg_GO2.js.map} +1 -1
  117. package/dist/chunks/{pk-spinner-DweuYJ_Z.js → pk-spinner-CN365srE.js} +1 -1
  118. package/dist/chunks/{pk-spinner-DweuYJ_Z.js.map → pk-spinner-CN365srE.js.map} +1 -1
  119. package/dist/chunks/pk-state-panel-DPP7t-er.js +603 -0
  120. package/dist/chunks/pk-state-panel-DPP7t-er.js.map +1 -0
  121. package/dist/chunks/{pk-status-BehQARDv.js → pk-status-CYcadu0Q.js} +1 -1
  122. package/dist/chunks/{pk-status-BehQARDv.js.map → pk-status-CYcadu0Q.js.map} +1 -1
  123. package/dist/chunks/{pk-tab-CTloD18e.js → pk-tab-BmXNyDg7.js} +1 -1
  124. package/dist/chunks/{pk-tab-CTloD18e.js.map → pk-tab-BmXNyDg7.js.map} +1 -1
  125. package/dist/chunks/{pk-tab-heading-Cjcgebxn.js → pk-tab-heading-GZHVmCAd.js} +1 -1
  126. package/dist/chunks/{pk-tab-heading-Cjcgebxn.js.map → pk-tab-heading-GZHVmCAd.js.map} +1 -1
  127. package/dist/chunks/{pk-tab-panel-CkKU5-Ah.js → pk-tab-panel-OpM3f_cm.js} +1 -1
  128. package/dist/chunks/{pk-tab-panel-CkKU5-Ah.js.map → pk-tab-panel-OpM3f_cm.js.map} +1 -1
  129. package/dist/chunks/{pk-tabs-BgEBki1q.js → pk-tabs-x26NAw-V.js} +2 -2
  130. package/dist/chunks/{pk-tabs-BgEBki1q.js.map → pk-tabs-x26NAw-V.js.map} +1 -1
  131. package/dist/chunks/{pk-textarea-Dhj1WFLH.js → pk-textarea-CBijEmcV.js} +9 -9
  132. package/dist/chunks/{pk-textarea-Dhj1WFLH.js.map → pk-textarea-CBijEmcV.js.map} +1 -1
  133. package/dist/chunks/{pk-time-picker-ChRbKHNB.js → pk-time-picker-D-u5-7pf.js} +5 -5
  134. package/dist/chunks/{pk-time-picker-ChRbKHNB.js.map → pk-time-picker-D-u5-7pf.js.map} +1 -1
  135. package/dist/chunks/{pk-tiptap-content-CL8smjGi.js → pk-tiptap-content-BGxMO3T4.js} +2 -2
  136. package/dist/chunks/{pk-tiptap-content-CL8smjGi.js.map → pk-tiptap-content-BGxMO3T4.js.map} +1 -1
  137. package/dist/chunks/{pk-tiptap-editor-BzZ-J2sl.js → pk-tiptap-editor-BeuyzH5l.js} +20 -20
  138. package/dist/chunks/pk-tiptap-editor-BeuyzH5l.js.map +1 -0
  139. package/dist/chunks/{pk-tiptap-input-YKg4VLp_.js → pk-tiptap-input-CQojaxDH.js} +5 -5
  140. package/dist/chunks/{pk-tiptap-input-YKg4VLp_.js.map → pk-tiptap-input-CQojaxDH.js.map} +1 -1
  141. package/dist/chunks/{pk-toggle-BthhH7vl.js → pk-toggle-CAtGO_Le.js} +2 -2
  142. package/dist/chunks/{pk-toggle-BthhH7vl.js.map → pk-toggle-CAtGO_Le.js.map} +1 -1
  143. package/dist/chunks/{pk-toggle-group-D2Quux8D.js → pk-toggle-group-CLso6OE7.js} +1 -1
  144. package/dist/chunks/{pk-toggle-group-D2Quux8D.js.map → pk-toggle-group-CLso6OE7.js.map} +1 -1
  145. package/dist/chunks/{pk-tooltip--QBV6puX.js → pk-tooltip-C6yb4CXI.js} +5 -5
  146. package/dist/chunks/{pk-tooltip--QBV6puX.js.map → pk-tooltip-C6yb4CXI.js.map} +1 -1
  147. package/dist/chunks/{popup-content-animation.styles-BnNiguJo.js → popup-content-animation.styles-EUnGV75J.js} +1 -1
  148. package/dist/chunks/{popup-content-animation.styles-BnNiguJo.js.map → popup-content-animation.styles-EUnGV75J.js.map} +1 -1
  149. package/dist/chunks/{popup-placement-animation-WlEXnS85.js → popup-placement-animation-GvFXER7D.js} +1 -1
  150. package/dist/chunks/{popup-placement-animation-WlEXnS85.js.map → popup-placement-animation-GvFXER7D.js.map} +1 -1
  151. package/dist/chunks/{popup-pointer-CuLjk1th.js → popup-pointer-BTS3Y6LE.js} +1 -1
  152. package/dist/chunks/{popup-pointer-CuLjk1th.js.map → popup-pointer-BTS3Y6LE.js.map} +1 -1
  153. package/dist/chunks/{register-C6_F-VwU.js → register-BDO_LUHK.js} +57 -51
  154. package/dist/chunks/register-BDO_LUHK.js.map +1 -0
  155. package/dist/chunks/{register-components-BT9THgdh.js → register-components-Dcdn1e3S.js} +1 -1
  156. package/dist/chunks/{register-components-BT9THgdh.js.map → register-components-Dcdn1e3S.js.map} +1 -1
  157. package/dist/chunks/{render-Dvc3MHQR.js → render-BKGW1a68.js} +1 -1
  158. package/dist/chunks/{render-Dvc3MHQR.js.map → render-BKGW1a68.js.map} +1 -1
  159. package/dist/chunks/{required-validator-CEg8dvjS.js → required-validator-CaRnQk1V.js} +1 -1
  160. package/dist/chunks/{required-validator-CEg8dvjS.js.map → required-validator-CaRnQk1V.js.map} +1 -1
  161. package/dist/chunks/{scroll-lock-Bbh3Sc5g.js → scroll-lock-gTFrvIPu.js} +1 -1
  162. package/dist/chunks/{scroll-lock-Bbh3Sc5g.js.map → scroll-lock-gTFrvIPu.js.map} +1 -1
  163. package/dist/chunks/{spinner-utils-CDfHypTv.js → spinner-utils-Co_4X3ip.js} +1 -1
  164. package/dist/chunks/{spinner-utils-CDfHypTv.js.map → spinner-utils-Co_4X3ip.js.map} +1 -1
  165. package/dist/chunks/{supports-popover-CUBsbHpS.js → supports-popover-6lNVStLh.js} +1 -1
  166. package/dist/chunks/{supports-popover-CUBsbHpS.js.map → supports-popover-6lNVStLh.js.map} +1 -1
  167. package/dist/chunks/{sync-listbox-separators-B1-V0oJi.js → sync-listbox-separators-CPFtrpNq.js} +1 -1
  168. package/dist/chunks/{sync-listbox-separators-B1-V0oJi.js.map → sync-listbox-separators-CPFtrpNq.js.map} +1 -1
  169. package/dist/chunks/{tiptap.styles-CPRows--.js → tiptap.styles-DjhIrSBN.js} +2 -2
  170. package/dist/chunks/{tiptap.styles-CPRows--.js.map → tiptap.styles-DjhIrSBN.js.map} +1 -1
  171. package/dist/component-registry.d.ts.map +1 -1
  172. package/dist/components/alert/index.d.ts +2 -0
  173. package/dist/components/alert/index.d.ts.map +1 -0
  174. package/dist/components/alert/pk-alert.d.ts +95 -0
  175. package/dist/components/alert/pk-alert.d.ts.map +1 -0
  176. package/dist/components/alert/pk-alert.js +2 -0
  177. package/dist/components/alert/pk-alert.styles.d.ts +2 -0
  178. package/dist/components/alert/pk-alert.styles.d.ts.map +1 -0
  179. package/dist/components/alert.d.ts +2 -0
  180. package/dist/components/alert.js +2 -0
  181. package/dist/components/autocomplete/pk-autocomplete.js +1 -1
  182. package/dist/components/autocomplete.js +1 -1
  183. package/dist/components/button/pk-button.js +1 -1
  184. package/dist/components/button-group/pk-button-group-separator.js +1 -1
  185. package/dist/components/button-group/pk-button-group-text.js +1 -1
  186. package/dist/components/button-group/pk-button-group.js +1 -1
  187. package/dist/components/button-group.js +3 -3
  188. package/dist/components/button.js +1 -1
  189. package/dist/components/calendar/pk-calendar.js +1 -1
  190. package/dist/components/calendar.js +1 -1
  191. package/dist/components/checkbox/pk-checkbox.js +1 -1
  192. package/dist/components/checkbox-select/pk-checkbox-select.js +1 -1
  193. package/dist/components/checkbox-select.js +1 -1
  194. package/dist/components/checkbox.js +1 -1
  195. package/dist/components/code-editor/pk-code-editor.js +1 -1
  196. package/dist/components/code-editor.js +1 -1
  197. package/dist/components/color-input/pk-color-input.js +1 -1
  198. package/dist/components/color-input.js +1 -1
  199. package/dist/components/combobox/pk-combobox.js +1 -1
  200. package/dist/components/combobox.js +1 -1
  201. package/dist/components/connect/pk-connect-oauth.js +3 -3
  202. package/dist/components/connect/pk-connect.d.ts +0 -1
  203. package/dist/components/connect/pk-connect.d.ts.map +1 -1
  204. package/dist/components/connect/pk-connect.js +25 -48
  205. package/dist/components/connect/pk-connect.js.map +1 -1
  206. package/dist/components/copy-button/pk-copy-button.d.ts +17 -2
  207. package/dist/components/copy-button/pk-copy-button.d.ts.map +1 -1
  208. package/dist/components/copy-button/pk-copy-button.js +1 -1
  209. package/dist/components/copy-button/pk-copy-button.styles.d.ts.map +1 -1
  210. package/dist/components/copy-button.js +1 -1
  211. package/dist/components/date-picker/pk-date-picker.js +1 -1
  212. package/dist/components/date-picker.js +1 -1
  213. package/dist/components/dialog/pk-dialog.js +1 -1
  214. package/dist/components/dialog.js +1 -1
  215. package/dist/components/dropdown-menu/pk-dropdown-item.js +1 -1
  216. package/dist/components/dropdown-menu/pk-dropdown-label.js +1 -1
  217. package/dist/components/dropdown-menu/pk-dropdown-menu.js +1 -1
  218. package/dist/components/dropdown-menu.js +3 -3
  219. package/dist/components/editable-table/pk-editable-table.js +1 -1
  220. package/dist/components/editable-table.js +1 -1
  221. package/dist/components/field/pk-field.js +1 -1
  222. package/dist/components/field.js +1 -1
  223. package/dist/components/image-browser/pk-image-browser.js +1 -1
  224. package/dist/components/image-browser.js +1 -1
  225. package/dist/components/input/pk-input.js +1 -1
  226. package/dist/components/input-group/pk-input-group-addon.js +1 -1
  227. package/dist/components/input-group/pk-input-group-button.js +1 -1
  228. package/dist/components/input-group/pk-input-group-input.js +1 -1
  229. package/dist/components/input-group/pk-input-group-text.js +1 -1
  230. package/dist/components/input-group/pk-input-group-textarea.js +1 -1
  231. package/dist/components/input-group/pk-input-group.js +1 -1
  232. package/dist/components/input-group.js +6 -6
  233. package/dist/components/input.js +1 -1
  234. package/dist/components/lightswitch/pk-lightswitch.js +1 -1
  235. package/dist/components/lightswitch.js +1 -1
  236. package/dist/components/popover/pk-popover.js +1 -1
  237. package/dist/components/popover.js +1 -1
  238. package/dist/components/popup/pk-popup.js +1 -1
  239. package/dist/components/popup.js +1 -1
  240. package/dist/components/radio-group/pk-radio-group.js +1 -1
  241. package/dist/components/radio-group/pk-radio.js +1 -1
  242. package/dist/components/radio-group.js +2 -2
  243. package/dist/components/scroll-area/pk-scroll-area.js +1 -1
  244. package/dist/components/scroll-area.js +1 -1
  245. package/dist/components/select/pk-option-group.js +1 -1
  246. package/dist/components/select/pk-option.js +1 -1
  247. package/dist/components/select/pk-select.js +1 -1
  248. package/dist/components/select.js +3 -3
  249. package/dist/components/separator/pk-separator.js +1 -1
  250. package/dist/components/separator.js +1 -1
  251. package/dist/components/spinner/pk-spinner.js +1 -1
  252. package/dist/components/spinner.js +2 -2
  253. package/dist/components/state-panel/index.d.ts +2 -0
  254. package/dist/components/state-panel/index.d.ts.map +1 -0
  255. package/dist/components/state-panel/pk-state-panel.d.ts +89 -0
  256. package/dist/components/state-panel/pk-state-panel.d.ts.map +1 -0
  257. package/dist/components/state-panel/pk-state-panel.js +2 -0
  258. package/dist/components/state-panel/pk-state-panel.styles.d.ts +2 -0
  259. package/dist/components/state-panel/pk-state-panel.styles.d.ts.map +1 -0
  260. package/dist/components/state-panel.d.ts +2 -0
  261. package/dist/components/state-panel.js +2 -0
  262. package/dist/components/status/pk-status.js +1 -1
  263. package/dist/components/status.js +1 -1
  264. package/dist/components/tabs/pk-tab-heading.js +1 -1
  265. package/dist/components/tabs/pk-tab-panel.js +1 -1
  266. package/dist/components/tabs/pk-tab.js +1 -1
  267. package/dist/components/tabs/pk-tabs.js +1 -1
  268. package/dist/components/tabs.js +4 -4
  269. package/dist/components/textarea/pk-textarea.js +1 -1
  270. package/dist/components/textarea.js +1 -1
  271. package/dist/components/time-picker/pk-time-picker.js +1 -1
  272. package/dist/components/time-picker.js +1 -1
  273. package/dist/components/tiptap/pk-tiptap-content.js +1 -1
  274. package/dist/components/tiptap/pk-tiptap-editor.d.ts +2 -0
  275. package/dist/components/tiptap/pk-tiptap-editor.d.ts.map +1 -1
  276. package/dist/components/tiptap/pk-tiptap-editor.js +1 -1
  277. package/dist/components/tiptap/pk-tiptap-input.js +1 -1
  278. package/dist/components/tiptap/tiptap-utils.d.ts.map +1 -1
  279. package/dist/components/tiptap-content.js +1 -1
  280. package/dist/components/tiptap-editor.js +1 -1
  281. package/dist/components/tiptap-input.js +1 -1
  282. package/dist/components/toggle/pk-toggle.js +1 -1
  283. package/dist/components/toggle-group/pk-toggle-group.js +1 -1
  284. package/dist/components/toggle-group.js +1 -1
  285. package/dist/components/toggle.js +1 -1
  286. package/dist/components/tooltip/pk-tooltip.js +1 -1
  287. package/dist/components/tooltip.js +1 -1
  288. package/dist/connect/register-cp-connect.d.ts.map +1 -1
  289. package/dist/connect/register-cp-connect.js +8 -9
  290. package/dist/connect/register-cp-connect.js.map +1 -1
  291. package/dist/events/pk-dismiss.d.ts +10 -0
  292. package/dist/events/pk-dismiss.d.ts.map +1 -0
  293. package/dist/icons/index.js +2 -2
  294. package/dist/index.d.ts +3 -0
  295. package/dist/index.d.ts.map +1 -1
  296. package/dist/index.js +73 -66
  297. package/dist/index.js.map +1 -1
  298. package/dist/plugin-kit.css +2 -0
  299. package/dist/plugin-kit.js +4 -4
  300. package/dist/register-components.js +1 -1
  301. package/dist/register-pk.generated.d.ts +4 -0
  302. package/dist/register-pk.generated.d.ts.map +1 -1
  303. package/dist/register.d.ts +5 -1
  304. package/dist/register.d.ts.map +1 -1
  305. package/dist/register.js +59 -55
  306. package/dist/styles/connect/pk-connect.css +6 -107
  307. package/dist/utilities/fouce.css +2 -0
  308. package/dist-loader/chunks/{button-group-item.styles-CsBQ3Cyh.js → button-group-item.styles-CXLuiMeZ.js} +1 -1
  309. package/dist-loader/chunks/{lit-DpLik9Rf.js → lit-s6aadvWG.js} +78 -78
  310. package/dist-loader/chunks/{option-filter-Bc5aNNT0.js → option-filter-DH11hDpV.js} +1 -1
  311. package/dist-loader/chunks/{pk-base-B2MqxErC.js → pk-base-Om6X9ab5.js} +1 -1
  312. package/dist-loader/chunks/{pk-button-Dfm23jEC.js → pk-button-nSZxt8_B.js} +5 -5
  313. package/dist-loader/chunks/{pk-calendar-BuSULJCU.js → pk-calendar-BS7Mfme_.js} +5 -5
  314. package/dist-loader/chunks/{pk-checkbox-BDoq3xg0.js → pk-checkbox-CYUcOnco.js} +4 -4
  315. package/dist-loader/chunks/{pk-color-input-eLjO9zfn.js → pk-color-input-BjDit7z0.js} +4 -4
  316. package/dist-loader/chunks/{pk-combobox-DBvcyxRC.js → pk-combobox-DyexEhFo.js} +14 -14
  317. package/dist-loader/chunks/{pk-connect.styles-k61snd3X.js → pk-connect.styles-BsPAXjgF.js} +1 -1
  318. package/dist-loader/chunks/pk-copy-button-CoN83ilF.js +198 -0
  319. package/dist-loader/chunks/{pk-date-picker-CYLpYIji.js → pk-date-picker-CO6deRCu.js} +14 -14
  320. package/dist-loader/chunks/{pk-dialog-BtrH5Ke0.js → pk-dialog-BWo6iDnY.js} +6 -6
  321. package/dist-loader/chunks/{pk-dropdown-item-D8tfEU-k.js → pk-dropdown-item-CbujjI8U.js} +7 -7
  322. package/dist-loader/chunks/{pk-dropdown-label-TbLj4bHK.js → pk-dropdown-label-9X4ctyES.js} +2 -2
  323. package/dist-loader/chunks/{pk-dropdown-menu-C4GDW5pE.js → pk-dropdown-menu-D1KpGuqU.js} +8 -8
  324. package/dist-loader/chunks/{pk-field-BM0XD9Ij.js → pk-field-DzggayrX.js} +5 -5
  325. package/dist-loader/chunks/{pk-icon-_1F1aL74.js → pk-icon-DQPqxFKW.js} +3 -3
  326. package/dist-loader/chunks/{pk-input-DvBrD7Md.js → pk-input-C1peOijH.js} +8 -8
  327. package/dist-loader/chunks/{pk-lightswitch-CcwlLQ9f.js → pk-lightswitch-Y-I3eKCt.js} +6 -6
  328. package/dist-loader/chunks/{pk-option-DATPm0Bo.js → pk-option-IfazQDxz.js} +4 -4
  329. package/dist-loader/chunks/{pk-popup-CUuGs8r_.js → pk-popup-BrLT_4kD.js} +4 -4
  330. package/dist-loader/chunks/{pk-select-DpcvbzUL.js → pk-select-49fogRYV.js} +13 -13
  331. package/dist-loader/chunks/{pk-spinner-Dk_LbvHW.js → pk-spinner-BmnrA60m.js} +2 -2
  332. package/dist-loader/chunks/pk-state-panel-DKf54EnJ.js +600 -0
  333. package/dist-loader/chunks/{pk-status-B8UvjIp2.js → pk-status-Dat3_D-T.js} +2 -2
  334. package/dist-loader/chunks/{pk-textarea-DeSuxufJ.js → pk-textarea-DPb2R8gV.js} +6 -6
  335. package/dist-loader/chunks/{pk-time-picker-DpJt8biN.js → pk-time-picker-CJiQTVuC.js} +6 -6
  336. package/dist-loader/chunks/{pk-tooltip-DcF9J5GT.js → pk-tooltip-CqwQfOPV.js} +5 -5
  337. package/dist-loader/chunks/{popup-content-animation.styles-duCg9-CH.js → popup-content-animation.styles-CWR2mend.js} +1 -1
  338. package/dist-loader/chunks/{render-Bnzcxfss.js → render-BuA2YeZN.js} +1 -1
  339. package/dist-loader/chunks/{svg-Bz-bXZn7.js → svg-C6YcJMk9.js} +8 -1
  340. package/dist-loader/chunks/{tiptap-CgXkiK8d.js → tiptap-BhYH5Dva.js} +1 -1
  341. package/dist-loader/chunks/{tiptap.styles-C0E1NpSx.js → tiptap.styles-BckAim0_.js} +2 -2
  342. package/dist-loader/components/alert/alert.js +661 -0
  343. package/dist-loader/components/autocomplete/autocomplete.js +14 -14
  344. package/dist-loader/components/button/button.js +1 -1
  345. package/dist-loader/components/button-group/button-group-separator.js +2 -2
  346. package/dist-loader/components/button-group/button-group-text.js +3 -3
  347. package/dist-loader/components/button-group/button-group.js +2 -2
  348. package/dist-loader/components/calendar/calendar.js +1 -1
  349. package/dist-loader/components/checkbox/checkbox.js +1 -1
  350. package/dist-loader/components/checkbox-select/checkbox-select.js +3 -3
  351. package/dist-loader/components/code-editor/code-editor.js +4 -4
  352. package/dist-loader/components/color-input/color-input.js +1 -1
  353. package/dist-loader/components/combobox/combobox.js +1 -1
  354. package/dist-loader/components/connect/connect-oauth.js +5 -5
  355. package/dist-loader/components/connect/connect.js +28 -51
  356. package/dist-loader/components/copy-button/copy-button.js +1 -176
  357. package/dist-loader/components/date-picker/date-picker.js +1 -1
  358. package/dist-loader/components/dialog/dialog.js +1 -1
  359. package/dist-loader/components/dropdown-menu/dropdown-item.js +1 -1
  360. package/dist-loader/components/dropdown-menu/dropdown-label.js +1 -1
  361. package/dist-loader/components/dropdown-menu/dropdown-menu.js +1 -1
  362. package/dist-loader/components/dropdown-menu/dropdown-separator.js +2 -2
  363. package/dist-loader/components/editable-table/editable-table.js +18 -18
  364. package/dist-loader/components/field/field.js +1 -1
  365. package/dist-loader/components/icon/icon.js +2 -2
  366. package/dist-loader/components/image-browser/image-browser.js +14 -14
  367. package/dist-loader/components/input/input.js +1 -1
  368. package/dist-loader/components/input-group/input-group-addon.js +2 -2
  369. package/dist-loader/components/input-group/input-group-button.js +2 -2
  370. package/dist-loader/components/input-group/input-group-input.js +2 -2
  371. package/dist-loader/components/input-group/input-group-text.js +2 -2
  372. package/dist-loader/components/input-group/input-group-textarea.js +2 -2
  373. package/dist-loader/components/input-group/input-group.js +3 -3
  374. package/dist-loader/components/lightswitch/lightswitch.js +1 -1
  375. package/dist-loader/components/popover/popover.js +8 -8
  376. package/dist-loader/components/popup/popup.js +1 -1
  377. package/dist-loader/components/radio-group/radio-group.js +5 -5
  378. package/dist-loader/components/radio-group/radio.js +2 -2
  379. package/dist-loader/components/scroll-area/scroll-area.js +2 -2
  380. package/dist-loader/components/select/option-group.js +2 -2
  381. package/dist-loader/components/select/option.js +1 -1
  382. package/dist-loader/components/select/select.js +1 -1
  383. package/dist-loader/components/separator/separator.js +2 -2
  384. package/dist-loader/components/spinner/spinner.js +1 -1
  385. package/dist-loader/components/state-panel/state-panel.js +2 -0
  386. package/dist-loader/components/status/status.js +1 -1
  387. package/dist-loader/components/tabs/tab-heading.js +2 -2
  388. package/dist-loader/components/tabs/tab-panel.js +2 -2
  389. package/dist-loader/components/tabs/tab.js +2 -2
  390. package/dist-loader/components/tabs/tabs.js +2 -2
  391. package/dist-loader/components/textarea/textarea.js +1 -1
  392. package/dist-loader/components/time-picker/time-picker.js +1 -1
  393. package/dist-loader/components/tiptap/tiptap-content.js +4 -4
  394. package/dist-loader/components/tiptap/tiptap-editor.js +19 -19
  395. package/dist-loader/components/tiptap/tiptap-input.js +5 -5
  396. package/dist-loader/components/toggle/toggle.js +3 -3
  397. package/dist-loader/components/toggle-group/toggle-group.js +2 -2
  398. package/dist-loader/components/tooltip/tooltip.js +1 -1
  399. package/dist-loader/plugin-kit.css +2 -0
  400. package/dist-loader/plugin-kit.loader.js +4 -0
  401. package/dist-loader/styles/connect/pk-connect.css +6 -107
  402. package/dist-loader/utilities/fouce.css +2 -0
  403. package/package.json +47 -7
  404. package/dist/chunks/component-registry-D34fm8xW.js.map +0 -1
  405. package/dist/chunks/pk-copy-button-BVaOLtYG.js.map +0 -1
  406. package/dist/chunks/pk-tiptap-editor-BzZ-J2sl.js.map +0 -1
  407. package/dist/chunks/register-C6_F-VwU.js.map +0 -1
  408. /package/dist-loader/chunks/{animate-with-class-DT0jwaR_.js → animate-with-class-BpZi7v-y.js} +0 -0
  409. /package/dist-loader/chunks/{codemirror-CSgOT0QM.js → codemirror-CU2NB7wh.js} +0 -0
  410. /package/dist-loader/chunks/{field-labels-D3lKQ2nq.js → field-labels-D7ccWdRn.js} +0 -0
  411. /package/dist-loader/chunks/{floating-ui-Cj0imr6d.js → floating-ui-B84As3F-.js} +0 -0
  412. /package/dist-loader/chunks/{has-slot-BGJeJdHr.js → has-slot-BvdEcnpm.js} +0 -0
  413. /package/dist-loader/chunks/{mirror-validator-C5XrXPaq.js → mirror-validator-9X0wdFnh.js} +0 -0
  414. /package/dist-loader/chunks/{overlay-lifecycle-C3tSQ3UR.js → overlay-lifecycle-CSIBJZgQ.js} +0 -0
  415. /package/dist-loader/chunks/{pk-clear-BMZUzwDt.js → pk-clear-BL8m1NyC.js} +0 -0
  416. /package/dist-loader/chunks/{popup-placement-animation-WlEXnS85.js → popup-placement-animation-BQdKabXq.js} +0 -0
  417. /package/dist-loader/chunks/{popup-pointer-Ck28WdVP.js → popup-pointer-BNwlPGKA.js} +0 -0
  418. /package/dist-loader/chunks/{required-validator-0XwZtX9k.js → required-validator-DCTovZ6r.js} +0 -0
  419. /package/dist-loader/chunks/{sync-listbox-separators-Ch5krDUs.js → sync-listbox-separators-rbu8jrAa.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"pk-tooltip--QBV6puX.js","names":[],"sources":["../../src/components/tooltip/pk-tooltip.styles.ts","../../src/components/tooltip/pk-tooltip.ts"],"sourcesContent":["import { css } from 'lit';\n\n/**\n * Tooltip motion — enter: fade + zoom + slide; exit: fade + zoom only, 150ms ease.\n */\nconst tooltipContentAnimationStyles = css`\n @layer pk-component {\n .content.pk-popup-content {\n transform-origin: var(--pk-transform-origin, top);\n }\n\n .content.pk-popup-content[data-open] {\n animation: pk-tooltip-in 150ms ease forwards;\n }\n\n .content.pk-popup-content[data-open][data-side='top'] {\n animation-name: pk-tooltip-in-top;\n }\n\n .content.pk-popup-content[data-open][data-side='bottom'] {\n animation-name: pk-tooltip-in-bottom;\n }\n\n .content.pk-popup-content[data-open][data-side='left'] {\n animation-name: pk-tooltip-in-left;\n }\n\n .content.pk-popup-content[data-open][data-side='right'] {\n animation-name: pk-tooltip-in-right;\n }\n\n .content.pk-popup-content.closing {\n animation: pk-tooltip-out 150ms ease;\n }\n\n @keyframes pk-tooltip-in {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n\n to {\n opacity: 1;\n transform: scale(1);\n }\n }\n\n @keyframes pk-tooltip-out {\n from {\n opacity: 1;\n transform: scale(1);\n }\n\n to {\n opacity: 0;\n transform: scale(0.95);\n }\n }\n\n @keyframes pk-tooltip-in-top {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(0.5rem);\n }\n\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n }\n\n @keyframes pk-tooltip-in-bottom {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(-0.5rem);\n }\n\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n }\n\n @keyframes pk-tooltip-in-left {\n from {\n opacity: 0;\n transform: scale(0.95) translateX(0.5rem);\n }\n\n to {\n opacity: 1;\n transform: scale(1) translateX(0);\n }\n }\n\n @keyframes pk-tooltip-in-right {\n from {\n opacity: 0;\n transform: scale(0.95) translateX(-0.5rem);\n }\n\n to {\n opacity: 1;\n transform: scale(1) translateX(0);\n }\n }\n }\n`;\n\nexport const pkTooltipStyles = [\n tooltipContentAnimationStyles,\n css`\n @layer pk-component {\n :host {\n display: inline-block;\n max-width: 100%;\n align-self: flex-start;\n flex: none;\n vertical-align: middle;\n --pk-popup-z-index: 250;\n --pk-tooltip-arrow-size: 9px;\n --pk-tooltip-arrow-inset: 1px;\n }\n\n .content:not([data-open]):not(.closing) {\n opacity: 0;\n pointer-events: none;\n }\n\n .content[data-open]:not(.closing) {\n opacity: 1;\n }\n\n .content {\n position: relative;\n isolation: isolate;\n overflow: visible;\n width: fit-content;\n max-width: 20rem;\n padding: 4px 8px;\n border-radius: var(--pk-radius-sm);\n background: #1c2e36;\n color: var(--pk-color-white);\n font-family: var(--pk-font-family);\n font-size: 12px;\n line-height: 1.4;\n pointer-events: none;\n }\n\n .content::after {\n content: '';\n position: absolute;\n z-index: -1;\n width: var(--pk-tooltip-arrow-size);\n height: var(--pk-tooltip-arrow-size);\n background: #1c2e36;\n border-radius: 2px;\n rotate: 45deg;\n pointer-events: none;\n }\n\n .content[data-side='top']::after {\n left: calc(50% - var(--pk-tooltip-arrow-size) / 2);\n bottom: calc(var(--pk-tooltip-arrow-size) * -0.5 + var(--pk-tooltip-arrow-inset));\n }\n\n .content[data-side='bottom']::after {\n left: calc(50% - var(--pk-tooltip-arrow-size) / 2);\n top: calc(var(--pk-tooltip-arrow-size) * -0.5 + var(--pk-tooltip-arrow-inset));\n }\n\n .content[data-side='left']::after {\n top: calc(50% - var(--pk-tooltip-arrow-size) / 2);\n right: calc(var(--pk-tooltip-arrow-size) * -0.5 + var(--pk-tooltip-arrow-inset));\n }\n\n .content[data-side='right']::after {\n top: calc(50% - var(--pk-tooltip-arrow-size) / 2);\n left: calc(var(--pk-tooltip-arrow-size) * -0.5 + var(--pk-tooltip-arrow-inset));\n }\n\n .content[hidden] {\n display: none !important;\n }\n }\n `,\n];\n","import { html, nothing } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query, state } from '../../decorators.js';\nimport type { PropertyValues } from 'lit';\n\nimport { uniqueId } from '../../a11y/focus.js';\nimport { PkElement } from '../../base/pk-element.js';\nimport { resolveElementById } from '../../internal/resolve-element-by-id.js';\nimport {\n PkAfterHideEvent,\n PkAfterShowEvent,\n PkHideEvent,\n PkShowEvent,\n} from '../../events/overlay-lifecycle.js';\n// Keep the internal element registered when production builds erase type-only imports.\nimport '../popup/pk-popup.js';\nimport type { PkPopup, PkPopupPlacement } from '../popup/pk-popup.js';\nimport { syncPopupPlacementAnimation, waitForPopupReposition, getPopupSide } from '../../utils/popup-placement-animation.js';\nimport { pkTooltipStyles } from './pk-tooltip.styles.js';\n\n/**\n * Tooltip — pattern: hover/focus shows floating hint.\n *\n * @slot trigger - Element that receives the tooltip\n * @slot - Tooltip content (falls back to `content` attribute)\n *\n * @csspart content - Tooltip body\n */\n@customElement('pk-tooltip')\nexport class PkTooltip extends PkElement {\n static override styles = pkTooltipStyles;\n\n @property({ reflect: true })\n placement: PkPopupPlacement = 'top';\n\n /** `hover focus` (default) or `manual` for programmatic open only. */\n @property({ reflect: true })\n trigger: 'hover focus' | 'manual' = 'hover focus';\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: Number, attribute: 'open-delay' })\n openDelay = 0;\n\n @property({ type: Number, attribute: 'close-delay' })\n closeDelay = 0;\n\n @property()\n content = '';\n\n /** Anchor element id — alternative to the trigger slot. */\n @property({ reflect: true })\n for = '';\n\n @query('pk-popup')\n private popupElement!: PkPopup;\n\n @state()\n private open = false;\n\n private triggerElement: HTMLElement | null = null;\n\n @state()\n private contentAnimated = false;\n\n @state()\n private closing = false;\n\n @state()\n private contentSide: ReturnType<typeof getPopupSide> | null = null;\n\n /**\n * True only when the default slot has real nodes. Pretty-printed HTML often\n * leaves whitespace text nodes in the default slot, which would otherwise\n * suppress the `content` attribute fallback and show an empty tooltip body.\n */\n @state()\n private hasSlottedBody = false;\n\n private readonly triggerId = uniqueId('pk-tooltip-trigger');\n private openTimer?: number;\n private closeTimer?: number;\n private readonly tooltipId = uniqueId('pk-tooltip');\n private showGeneration = 0;\n private exitGeneration = 0;\n\n override disconnectedCallback(): void {\n this.popupElement?.removeEventListener('pk-reposition', this.syncPlacementAnimation);\n this.clearTimers();\n this.hideTooltip(true);\n super.disconnectedCallback();\n }\n\n override updated(changed: PropertyValues): void {\n super.updated(changed);\n\n if (changed.has('trigger') || changed.has('disabled') || changed.has('for')) {\n this.rebindTrigger();\n }\n\n if (this.disabled && this.open) {\n this.hideTooltip(true);\n }\n }\n\n override firstUpdated(): void {\n this.popupElement.addEventListener('pk-reposition', this.syncPlacementAnimation);\n\n if (this.for) {\n queueMicrotask(() => {\n this.resolveExternalTrigger();\n });\n }\n }\n\n /** Opens the tooltip programmatically. */\n async show(): Promise<void> {\n if (this.disabled) {\n return;\n }\n\n this.clearTimers();\n this.showTooltip(true);\n await this.updateComplete;\n }\n\n /** Closes the tooltip programmatically. */\n async hide(): Promise<void> {\n this.clearTimers();\n this.hideTooltip(true);\n await this.updateComplete;\n }\n\n private clearTimers(): void {\n window.clearTimeout(this.openTimer);\n window.clearTimeout(this.closeTimer);\n }\n\n private syncPlacementAnimation = (): void => {\n const placement = this.popupElement?.getAttribute('data-current-placement') ?? this.placement;\n const content = this.popupElement?.getContentElement();\n\n this.contentSide = placement ? getPopupSide(placement) : null;\n syncPopupPlacementAnimation(this.popupElement, placement);\n\n if (content) {\n syncPopupPlacementAnimation(content, placement);\n }\n };\n\n private resolveExternalTrigger(): void {\n this.triggerElement = resolveElementById(this, this.for);\n this.rebindTrigger();\n }\n\n private onTriggerSlotChange(event: Event): void {\n const slot = event.target as HTMLSlotElement;\n const [trigger] = slot.assignedElements({ flatten: true }) as HTMLElement[];\n\n this.unbindTrigger(this.triggerElement);\n this.triggerElement = trigger ?? null;\n this.rebindTrigger();\n this.requestUpdate();\n }\n\n private onBodySlotChange = (event: Event): void => {\n const slot = event.target as HTMLSlotElement;\n this.hasSlottedBody = slot.assignedNodes({ flatten: true }).some((node) => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n return true;\n }\n\n return node.nodeType === Node.TEXT_NODE && Boolean(node.textContent?.trim());\n });\n };\n\n private rebindTrigger(): void {\n this.unbindTrigger(this.triggerElement);\n\n if (this.for) {\n this.triggerElement = resolveElementById(this, this.for);\n }\n\n this.bindTrigger(this.triggerElement);\n }\n\n private usesPointerTrigger(): boolean {\n return !this.disabled && this.trigger !== 'manual';\n }\n\n private bindTrigger(trigger: HTMLElement | null): void {\n if (!trigger || !this.usesPointerTrigger()) {\n return;\n }\n\n if (!trigger.id) {\n trigger.id = this.triggerId;\n }\n\n trigger.setAttribute('aria-describedby', this.tooltipId);\n trigger.addEventListener('mouseenter', this.scheduleShow);\n trigger.addEventListener('mouseleave', this.scheduleHide);\n trigger.addEventListener('focus', this.scheduleShow);\n trigger.addEventListener('blur', this.scheduleHide);\n }\n\n private unbindTrigger(trigger: HTMLElement | null): void {\n if (!trigger) {\n return;\n }\n\n trigger.removeAttribute('aria-describedby');\n trigger.removeEventListener('mouseenter', this.scheduleShow);\n trigger.removeEventListener('mouseleave', this.scheduleHide);\n trigger.removeEventListener('focus', this.scheduleShow);\n trigger.removeEventListener('blur', this.scheduleHide);\n }\n\n private scheduleShow = (): void => {\n if (!this.usesPointerTrigger()) {\n return;\n }\n\n window.clearTimeout(this.closeTimer);\n window.clearTimeout(this.openTimer);\n this.openTimer = window.setTimeout(() => this.showTooltip(), this.openDelay);\n };\n\n private scheduleHide = (): void => {\n if (!this.usesPointerTrigger()) {\n return;\n }\n\n window.clearTimeout(this.openTimer);\n window.clearTimeout(this.closeTimer);\n this.closeTimer = window.setTimeout(() => this.hideTooltip(), this.closeDelay);\n };\n\n private getAnchor(): Element | string | null {\n if (this.for) {\n return resolveElementById(this, this.for);\n }\n\n if (this.triggerElement) {\n return this.triggerElement;\n }\n\n return null;\n }\n\n private prepareContentForEnter(content: HTMLElement | null | undefined): void {\n if (!content) {\n return;\n }\n\n content.classList.remove('closing');\n content.style.animation = 'none';\n void content.getBoundingClientRect();\n content.style.removeProperty('animation');\n content.style.removeProperty('opacity');\n content.style.removeProperty('transform');\n }\n\n private showTooltip(force = false): void {\n if (!this.getAnchor()) {\n return;\n }\n\n if (this.open && this.contentAnimated && !this.closing && !force) {\n return;\n }\n\n if (!this.open) {\n this.dispatchEvent(new PkShowEvent());\n }\n\n const generation = ++this.showGeneration;\n this.exitGeneration += 1;\n this.closing = false;\n this.open = true;\n this.contentAnimated = false;\n this.prepareContentForEnter(this.popupElement?.getContentElement());\n\n void this.updateComplete.then(async () => {\n if (generation !== this.showGeneration) {\n return;\n }\n\n await waitForPopupReposition(this.popupElement, this.placement);\n\n if (generation !== this.showGeneration) {\n return;\n }\n\n this.syncPlacementAnimation();\n this.prepareContentForEnter(this.popupElement?.getContentElement());\n this.contentAnimated = true;\n\n this.dispatchEvent(new PkAfterShowEvent());\n this.dispatchEvent(new CustomEvent('pk-open-change', {\n detail: { open: true },\n bubbles: true,\n composed: true,\n }));\n });\n }\n\n private hideTooltip(immediate = false, cancelable = false): void {\n if ((!this.open && !this.closing) && !immediate) {\n return;\n }\n\n if (this.closing && !immediate) {\n return;\n }\n\n if (cancelable) {\n const hideEvent = new PkHideEvent('api');\n\n if (!this.dispatchEvent(hideEvent)) {\n return;\n }\n }\n\n this.showGeneration += 1;\n\n if (immediate) {\n this.finishHide();\n return;\n }\n\n if (!this.contentAnimated) {\n this.finishHide();\n return;\n }\n\n void this.playExitAnimation();\n }\n\n private async playExitAnimation(): Promise<void> {\n if (!this.open) {\n return;\n }\n\n const generation = this.exitGeneration + 1;\n this.exitGeneration = generation;\n\n const content = this.popupElement?.getContentElement();\n\n this.closing = true;\n this.contentAnimated = false;\n\n if (content) {\n await this.waitForExitAnimation(content);\n }\n\n if (generation !== this.exitGeneration) {\n return;\n }\n\n this.finishHide();\n }\n\n private waitForExitAnimation(content: HTMLElement): Promise<void> {\n return new Promise((resolve) => {\n let settled = false;\n\n const finish = (): void => {\n if (settled) {\n return;\n }\n\n settled = true;\n content.removeEventListener('animationend', onAnimationEnd);\n window.clearTimeout(fallback);\n content.classList.remove('closing');\n resolve();\n };\n\n const onAnimationEnd = (event: AnimationEvent): void => {\n if (event.target === content && event.animationName.startsWith('pk-tooltip-out')) {\n finish();\n }\n };\n\n content.classList.add('closing');\n content.addEventListener('animationend', onAnimationEnd);\n const fallback = window.setTimeout(finish, 200);\n });\n }\n\n private finishHide(): void {\n const content = this.popupElement?.getContentElement();\n\n this.closing = false;\n this.contentAnimated = false;\n this.contentSide = null;\n this.open = false;\n this.popupElement?.removeAttribute('data-side');\n this.prepareContentForEnter(content);\n\n this.dispatchEvent(new PkAfterHideEvent());\n this.dispatchEvent(new CustomEvent('pk-open-change', {\n detail: { open: false },\n bubbles: true,\n composed: true,\n }));\n }\n\n override render() {\n const anchor = this.getAnchor();\n\n return html`\n <slot name=\"trigger\" @slotchange=${this.onTriggerSlotChange}></slot>\n <pk-popup\n .active=${this.open || this.closing}\n .anchor=${anchor ?? ''}\n .placement=${this.placement}\n .distance=${4}\n hover-bridge\n flip\n shift\n >\n <div\n part=\"content\"\n class=${classMap({\n content: true,\n 'pk-popup-content': true,\n closing: this.closing,\n })}\n id=${this.tooltipId}\n role=\"tooltip\"\n ?hidden=${!this.open && !this.closing}\n data-open=${this.contentAnimated && !this.closing ? '' : nothing}\n data-side=${this.contentSide ?? nothing}\n >\n <slot @slotchange=${this.onBodySlotChange}></slot>\n ${this.hasSlottedBody ? nothing : (this.content || nothing)}\n </div>\n </pk-popup>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-tooltip': PkTooltip;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"pk-tooltip-C6yb4CXI.js","names":[],"sources":["../../src/components/tooltip/pk-tooltip.styles.ts","../../src/components/tooltip/pk-tooltip.ts"],"sourcesContent":["import { css } from 'lit';\n\n/**\n * Tooltip motion — enter: fade + zoom + slide; exit: fade + zoom only, 150ms ease.\n */\nconst tooltipContentAnimationStyles = css`\n @layer pk-component {\n .content.pk-popup-content {\n transform-origin: var(--pk-transform-origin, top);\n }\n\n .content.pk-popup-content[data-open] {\n animation: pk-tooltip-in 150ms ease forwards;\n }\n\n .content.pk-popup-content[data-open][data-side='top'] {\n animation-name: pk-tooltip-in-top;\n }\n\n .content.pk-popup-content[data-open][data-side='bottom'] {\n animation-name: pk-tooltip-in-bottom;\n }\n\n .content.pk-popup-content[data-open][data-side='left'] {\n animation-name: pk-tooltip-in-left;\n }\n\n .content.pk-popup-content[data-open][data-side='right'] {\n animation-name: pk-tooltip-in-right;\n }\n\n .content.pk-popup-content.closing {\n animation: pk-tooltip-out 150ms ease;\n }\n\n @keyframes pk-tooltip-in {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n\n to {\n opacity: 1;\n transform: scale(1);\n }\n }\n\n @keyframes pk-tooltip-out {\n from {\n opacity: 1;\n transform: scale(1);\n }\n\n to {\n opacity: 0;\n transform: scale(0.95);\n }\n }\n\n @keyframes pk-tooltip-in-top {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(0.5rem);\n }\n\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n }\n\n @keyframes pk-tooltip-in-bottom {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(-0.5rem);\n }\n\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n }\n\n @keyframes pk-tooltip-in-left {\n from {\n opacity: 0;\n transform: scale(0.95) translateX(0.5rem);\n }\n\n to {\n opacity: 1;\n transform: scale(1) translateX(0);\n }\n }\n\n @keyframes pk-tooltip-in-right {\n from {\n opacity: 0;\n transform: scale(0.95) translateX(-0.5rem);\n }\n\n to {\n opacity: 1;\n transform: scale(1) translateX(0);\n }\n }\n }\n`;\n\nexport const pkTooltipStyles = [\n tooltipContentAnimationStyles,\n css`\n @layer pk-component {\n :host {\n display: inline-block;\n max-width: 100%;\n align-self: flex-start;\n flex: none;\n vertical-align: middle;\n --pk-popup-z-index: 250;\n --pk-tooltip-arrow-size: 9px;\n --pk-tooltip-arrow-inset: 1px;\n }\n\n .content:not([data-open]):not(.closing) {\n opacity: 0;\n pointer-events: none;\n }\n\n .content[data-open]:not(.closing) {\n opacity: 1;\n }\n\n .content {\n position: relative;\n isolation: isolate;\n overflow: visible;\n width: fit-content;\n max-width: 20rem;\n padding: 4px 8px;\n border-radius: var(--pk-radius-sm);\n background: #1c2e36;\n color: var(--pk-color-white);\n font-family: var(--pk-font-family);\n font-size: 12px;\n line-height: 1.4;\n pointer-events: none;\n }\n\n .content::after {\n content: '';\n position: absolute;\n z-index: -1;\n width: var(--pk-tooltip-arrow-size);\n height: var(--pk-tooltip-arrow-size);\n background: #1c2e36;\n border-radius: 2px;\n rotate: 45deg;\n pointer-events: none;\n }\n\n .content[data-side='top']::after {\n left: calc(50% - var(--pk-tooltip-arrow-size) / 2);\n bottom: calc(var(--pk-tooltip-arrow-size) * -0.5 + var(--pk-tooltip-arrow-inset));\n }\n\n .content[data-side='bottom']::after {\n left: calc(50% - var(--pk-tooltip-arrow-size) / 2);\n top: calc(var(--pk-tooltip-arrow-size) * -0.5 + var(--pk-tooltip-arrow-inset));\n }\n\n .content[data-side='left']::after {\n top: calc(50% - var(--pk-tooltip-arrow-size) / 2);\n right: calc(var(--pk-tooltip-arrow-size) * -0.5 + var(--pk-tooltip-arrow-inset));\n }\n\n .content[data-side='right']::after {\n top: calc(50% - var(--pk-tooltip-arrow-size) / 2);\n left: calc(var(--pk-tooltip-arrow-size) * -0.5 + var(--pk-tooltip-arrow-inset));\n }\n\n .content[hidden] {\n display: none !important;\n }\n }\n `,\n];\n","import { html, nothing } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query, state } from '../../decorators.js';\nimport type { PropertyValues } from 'lit';\n\nimport { uniqueId } from '../../a11y/focus.js';\nimport { PkElement } from '../../base/pk-element.js';\nimport { resolveElementById } from '../../internal/resolve-element-by-id.js';\nimport {\n PkAfterHideEvent,\n PkAfterShowEvent,\n PkHideEvent,\n PkShowEvent,\n} from '../../events/overlay-lifecycle.js';\n// Keep the internal element registered when production builds erase type-only imports.\nimport '../popup/pk-popup.js';\nimport type { PkPopup, PkPopupPlacement } from '../popup/pk-popup.js';\nimport { syncPopupPlacementAnimation, waitForPopupReposition, getPopupSide } from '../../utils/popup-placement-animation.js';\nimport { pkTooltipStyles } from './pk-tooltip.styles.js';\n\n/**\n * Tooltip — pattern: hover/focus shows floating hint.\n *\n * @slot trigger - Element that receives the tooltip\n * @slot - Tooltip content (falls back to `content` attribute)\n *\n * @csspart content - Tooltip body\n */\n@customElement('pk-tooltip')\nexport class PkTooltip extends PkElement {\n static override styles = pkTooltipStyles;\n\n @property({ reflect: true })\n placement: PkPopupPlacement = 'top';\n\n /** `hover focus` (default) or `manual` for programmatic open only. */\n @property({ reflect: true })\n trigger: 'hover focus' | 'manual' = 'hover focus';\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: Number, attribute: 'open-delay' })\n openDelay = 0;\n\n @property({ type: Number, attribute: 'close-delay' })\n closeDelay = 0;\n\n @property()\n content = '';\n\n /** Anchor element id — alternative to the trigger slot. */\n @property({ reflect: true })\n for = '';\n\n @query('pk-popup')\n private popupElement!: PkPopup;\n\n @state()\n private open = false;\n\n private triggerElement: HTMLElement | null = null;\n\n @state()\n private contentAnimated = false;\n\n @state()\n private closing = false;\n\n @state()\n private contentSide: ReturnType<typeof getPopupSide> | null = null;\n\n /**\n * True only when the default slot has real nodes. Pretty-printed HTML often\n * leaves whitespace text nodes in the default slot, which would otherwise\n * suppress the `content` attribute fallback and show an empty tooltip body.\n */\n @state()\n private hasSlottedBody = false;\n\n private readonly triggerId = uniqueId('pk-tooltip-trigger');\n private openTimer?: number;\n private closeTimer?: number;\n private readonly tooltipId = uniqueId('pk-tooltip');\n private showGeneration = 0;\n private exitGeneration = 0;\n\n override disconnectedCallback(): void {\n this.popupElement?.removeEventListener('pk-reposition', this.syncPlacementAnimation);\n this.clearTimers();\n this.hideTooltip(true);\n super.disconnectedCallback();\n }\n\n override updated(changed: PropertyValues): void {\n super.updated(changed);\n\n if (changed.has('trigger') || changed.has('disabled') || changed.has('for')) {\n this.rebindTrigger();\n }\n\n if (this.disabled && this.open) {\n this.hideTooltip(true);\n }\n }\n\n override firstUpdated(): void {\n this.popupElement.addEventListener('pk-reposition', this.syncPlacementAnimation);\n\n if (this.for) {\n queueMicrotask(() => {\n this.resolveExternalTrigger();\n });\n }\n }\n\n /** Opens the tooltip programmatically. */\n async show(): Promise<void> {\n if (this.disabled) {\n return;\n }\n\n this.clearTimers();\n this.showTooltip(true);\n await this.updateComplete;\n }\n\n /** Closes the tooltip programmatically. */\n async hide(): Promise<void> {\n this.clearTimers();\n this.hideTooltip(true);\n await this.updateComplete;\n }\n\n private clearTimers(): void {\n window.clearTimeout(this.openTimer);\n window.clearTimeout(this.closeTimer);\n }\n\n private syncPlacementAnimation = (): void => {\n const placement = this.popupElement?.getAttribute('data-current-placement') ?? this.placement;\n const content = this.popupElement?.getContentElement();\n\n this.contentSide = placement ? getPopupSide(placement) : null;\n syncPopupPlacementAnimation(this.popupElement, placement);\n\n if (content) {\n syncPopupPlacementAnimation(content, placement);\n }\n };\n\n private resolveExternalTrigger(): void {\n this.triggerElement = resolveElementById(this, this.for);\n this.rebindTrigger();\n }\n\n private onTriggerSlotChange(event: Event): void {\n const slot = event.target as HTMLSlotElement;\n const [trigger] = slot.assignedElements({ flatten: true }) as HTMLElement[];\n\n this.unbindTrigger(this.triggerElement);\n this.triggerElement = trigger ?? null;\n this.rebindTrigger();\n this.requestUpdate();\n }\n\n private onBodySlotChange = (event: Event): void => {\n const slot = event.target as HTMLSlotElement;\n this.hasSlottedBody = slot.assignedNodes({ flatten: true }).some((node) => {\n if (node.nodeType === Node.ELEMENT_NODE) {\n return true;\n }\n\n return node.nodeType === Node.TEXT_NODE && Boolean(node.textContent?.trim());\n });\n };\n\n private rebindTrigger(): void {\n this.unbindTrigger(this.triggerElement);\n\n if (this.for) {\n this.triggerElement = resolveElementById(this, this.for);\n }\n\n this.bindTrigger(this.triggerElement);\n }\n\n private usesPointerTrigger(): boolean {\n return !this.disabled && this.trigger !== 'manual';\n }\n\n private bindTrigger(trigger: HTMLElement | null): void {\n if (!trigger || !this.usesPointerTrigger()) {\n return;\n }\n\n if (!trigger.id) {\n trigger.id = this.triggerId;\n }\n\n trigger.setAttribute('aria-describedby', this.tooltipId);\n trigger.addEventListener('mouseenter', this.scheduleShow);\n trigger.addEventListener('mouseleave', this.scheduleHide);\n trigger.addEventListener('focus', this.scheduleShow);\n trigger.addEventListener('blur', this.scheduleHide);\n }\n\n private unbindTrigger(trigger: HTMLElement | null): void {\n if (!trigger) {\n return;\n }\n\n trigger.removeAttribute('aria-describedby');\n trigger.removeEventListener('mouseenter', this.scheduleShow);\n trigger.removeEventListener('mouseleave', this.scheduleHide);\n trigger.removeEventListener('focus', this.scheduleShow);\n trigger.removeEventListener('blur', this.scheduleHide);\n }\n\n private scheduleShow = (): void => {\n if (!this.usesPointerTrigger()) {\n return;\n }\n\n window.clearTimeout(this.closeTimer);\n window.clearTimeout(this.openTimer);\n this.openTimer = window.setTimeout(() => this.showTooltip(), this.openDelay);\n };\n\n private scheduleHide = (): void => {\n if (!this.usesPointerTrigger()) {\n return;\n }\n\n window.clearTimeout(this.openTimer);\n window.clearTimeout(this.closeTimer);\n this.closeTimer = window.setTimeout(() => this.hideTooltip(), this.closeDelay);\n };\n\n private getAnchor(): Element | string | null {\n if (this.for) {\n return resolveElementById(this, this.for);\n }\n\n if (this.triggerElement) {\n return this.triggerElement;\n }\n\n return null;\n }\n\n private prepareContentForEnter(content: HTMLElement | null | undefined): void {\n if (!content) {\n return;\n }\n\n content.classList.remove('closing');\n content.style.animation = 'none';\n void content.getBoundingClientRect();\n content.style.removeProperty('animation');\n content.style.removeProperty('opacity');\n content.style.removeProperty('transform');\n }\n\n private showTooltip(force = false): void {\n if (!this.getAnchor()) {\n return;\n }\n\n if (this.open && this.contentAnimated && !this.closing && !force) {\n return;\n }\n\n if (!this.open) {\n this.dispatchEvent(new PkShowEvent());\n }\n\n const generation = ++this.showGeneration;\n this.exitGeneration += 1;\n this.closing = false;\n this.open = true;\n this.contentAnimated = false;\n this.prepareContentForEnter(this.popupElement?.getContentElement());\n\n void this.updateComplete.then(async () => {\n if (generation !== this.showGeneration) {\n return;\n }\n\n await waitForPopupReposition(this.popupElement, this.placement);\n\n if (generation !== this.showGeneration) {\n return;\n }\n\n this.syncPlacementAnimation();\n this.prepareContentForEnter(this.popupElement?.getContentElement());\n this.contentAnimated = true;\n\n this.dispatchEvent(new PkAfterShowEvent());\n this.dispatchEvent(new CustomEvent('pk-open-change', {\n detail: { open: true },\n bubbles: true,\n composed: true,\n }));\n });\n }\n\n private hideTooltip(immediate = false, cancelable = false): void {\n if ((!this.open && !this.closing) && !immediate) {\n return;\n }\n\n if (this.closing && !immediate) {\n return;\n }\n\n if (cancelable) {\n const hideEvent = new PkHideEvent('api');\n\n if (!this.dispatchEvent(hideEvent)) {\n return;\n }\n }\n\n this.showGeneration += 1;\n\n if (immediate) {\n this.finishHide();\n return;\n }\n\n if (!this.contentAnimated) {\n this.finishHide();\n return;\n }\n\n void this.playExitAnimation();\n }\n\n private async playExitAnimation(): Promise<void> {\n if (!this.open) {\n return;\n }\n\n const generation = this.exitGeneration + 1;\n this.exitGeneration = generation;\n\n const content = this.popupElement?.getContentElement();\n\n this.closing = true;\n this.contentAnimated = false;\n\n if (content) {\n await this.waitForExitAnimation(content);\n }\n\n if (generation !== this.exitGeneration) {\n return;\n }\n\n this.finishHide();\n }\n\n private waitForExitAnimation(content: HTMLElement): Promise<void> {\n return new Promise((resolve) => {\n let settled = false;\n\n const finish = (): void => {\n if (settled) {\n return;\n }\n\n settled = true;\n content.removeEventListener('animationend', onAnimationEnd);\n window.clearTimeout(fallback);\n content.classList.remove('closing');\n resolve();\n };\n\n const onAnimationEnd = (event: AnimationEvent): void => {\n if (event.target === content && event.animationName.startsWith('pk-tooltip-out')) {\n finish();\n }\n };\n\n content.classList.add('closing');\n content.addEventListener('animationend', onAnimationEnd);\n const fallback = window.setTimeout(finish, 200);\n });\n }\n\n private finishHide(): void {\n const content = this.popupElement?.getContentElement();\n\n this.closing = false;\n this.contentAnimated = false;\n this.contentSide = null;\n this.open = false;\n this.popupElement?.removeAttribute('data-side');\n this.prepareContentForEnter(content);\n\n this.dispatchEvent(new PkAfterHideEvent());\n this.dispatchEvent(new CustomEvent('pk-open-change', {\n detail: { open: false },\n bubbles: true,\n composed: true,\n }));\n }\n\n override render() {\n const anchor = this.getAnchor();\n\n return html`\n <slot name=\"trigger\" @slotchange=${this.onTriggerSlotChange}></slot>\n <pk-popup\n .active=${this.open || this.closing}\n .anchor=${anchor ?? ''}\n .placement=${this.placement}\n .distance=${4}\n hover-bridge\n flip\n shift\n >\n <div\n part=\"content\"\n class=${classMap({\n content: true,\n 'pk-popup-content': true,\n closing: this.closing,\n })}\n id=${this.tooltipId}\n role=\"tooltip\"\n ?hidden=${!this.open && !this.closing}\n data-open=${this.contentAnimated && !this.closing ? '' : nothing}\n data-side=${this.contentSide ?? nothing}\n >\n <slot @slotchange=${this.onBodySlotChange}></slot>\n ${this.hasSlottedBody ? nothing : (this.content || nothing)}\n </div>\n </pk-popup>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-tooltip': PkTooltip;\n }\n}\n"],"mappings":"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"}
@@ -114,4 +114,4 @@ var popupContentAnimationStyles = css`
114
114
  //#endregion
115
115
  export { popupContentAnimationStyles as t };
116
116
 
117
- //# sourceMappingURL=popup-content-animation.styles-BnNiguJo.js.map
117
+ //# sourceMappingURL=popup-content-animation.styles-EUnGV75J.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"popup-content-animation.styles-BnNiguJo.js","names":[],"sources":["../../src/styles/popup-content-animation.styles.ts"],"sourcesContent":["import { css } from 'lit';\n\n/**\n * Placement-aware popup enter/exit motion — mirrors plugin-kit-react DropdownMenu\n * (fade + zoom + side slide on enter; fade + zoom only on exit).\n *\n * Keyframes stay outside `@layer` so constructed stylesheets resolve animation\n * names reliably (Chrome DevTools otherwise reports them as undefined).\n */\nexport const popupContentAnimationStyles = css`\n @layer pk-component {\n .pk-popup-content {\n transform-origin: var(--pk-transform-origin, top);\n }\n\n .pk-popup-content[data-open] {\n animation: pk-popup-content-in 100ms ease-out;\n }\n\n .pk-popup-content[data-open][data-side='bottom'] {\n animation-name: pk-popup-content-in-bottom;\n }\n\n .pk-popup-content[data-open][data-side='top'] {\n animation-name: pk-popup-content-in-top;\n }\n\n .pk-popup-content[data-open][data-side='left'] {\n animation-name: pk-popup-content-in-left;\n }\n\n .pk-popup-content[data-open][data-side='right'] {\n animation-name: pk-popup-content-in-right;\n }\n\n /* Exit: fade + zoom only — matches tw-animate animate-out / tooltip motion. */\n .pk-popup-content.closing {\n animation: pk-popup-content-out 100ms ease-in forwards;\n }\n }\n\n @keyframes pk-popup-content-in {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n\n to {\n opacity: 1;\n transform: scale(1);\n }\n }\n\n @keyframes pk-popup-content-out {\n from {\n opacity: 1;\n transform: scale(1);\n }\n\n to {\n opacity: 0;\n transform: scale(0.95);\n }\n }\n\n @keyframes pk-popup-content-in-bottom {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(-0.5rem);\n }\n\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n }\n\n @keyframes pk-popup-content-in-top {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(0.5rem);\n }\n\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n }\n\n @keyframes pk-popup-content-in-left {\n from {\n opacity: 0;\n transform: scale(0.95) translateX(0.5rem);\n }\n\n to {\n opacity: 1;\n transform: scale(1) translateX(0);\n }\n }\n\n @keyframes pk-popup-content-in-right {\n from {\n opacity: 0;\n transform: scale(0.95) translateX(-0.5rem);\n }\n\n to {\n opacity: 1;\n transform: scale(1) translateX(0);\n }\n }\n`;\n"],"mappings":";;;;;;;;;AASA,IAAa,8BAA8B,GAAG"}
1
+ {"version":3,"file":"popup-content-animation.styles-EUnGV75J.js","names":[],"sources":["../../src/styles/popup-content-animation.styles.ts"],"sourcesContent":["import { css } from 'lit';\n\n/**\n * Placement-aware popup enter/exit motion — mirrors plugin-kit-react DropdownMenu\n * (fade + zoom + side slide on enter; fade + zoom only on exit).\n *\n * Keyframes stay outside `@layer` so constructed stylesheets resolve animation\n * names reliably (Chrome DevTools otherwise reports them as undefined).\n */\nexport const popupContentAnimationStyles = css`\n @layer pk-component {\n .pk-popup-content {\n transform-origin: var(--pk-transform-origin, top);\n }\n\n .pk-popup-content[data-open] {\n animation: pk-popup-content-in 100ms ease-out;\n }\n\n .pk-popup-content[data-open][data-side='bottom'] {\n animation-name: pk-popup-content-in-bottom;\n }\n\n .pk-popup-content[data-open][data-side='top'] {\n animation-name: pk-popup-content-in-top;\n }\n\n .pk-popup-content[data-open][data-side='left'] {\n animation-name: pk-popup-content-in-left;\n }\n\n .pk-popup-content[data-open][data-side='right'] {\n animation-name: pk-popup-content-in-right;\n }\n\n /* Exit: fade + zoom only — matches tw-animate animate-out / tooltip motion. */\n .pk-popup-content.closing {\n animation: pk-popup-content-out 100ms ease-in forwards;\n }\n }\n\n @keyframes pk-popup-content-in {\n from {\n opacity: 0;\n transform: scale(0.95);\n }\n\n to {\n opacity: 1;\n transform: scale(1);\n }\n }\n\n @keyframes pk-popup-content-out {\n from {\n opacity: 1;\n transform: scale(1);\n }\n\n to {\n opacity: 0;\n transform: scale(0.95);\n }\n }\n\n @keyframes pk-popup-content-in-bottom {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(-0.5rem);\n }\n\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n }\n\n @keyframes pk-popup-content-in-top {\n from {\n opacity: 0;\n transform: scale(0.95) translateY(0.5rem);\n }\n\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n }\n\n @keyframes pk-popup-content-in-left {\n from {\n opacity: 0;\n transform: scale(0.95) translateX(0.5rem);\n }\n\n to {\n opacity: 1;\n transform: scale(1) translateX(0);\n }\n }\n\n @keyframes pk-popup-content-in-right {\n from {\n opacity: 0;\n transform: scale(0.95) translateX(-0.5rem);\n }\n\n to {\n opacity: 1;\n transform: scale(1) translateX(0);\n }\n }\n`;\n"],"mappings":";;;;;;;;;AASA,IAAa,8BAA8B,GAAG"}
@@ -57,4 +57,4 @@ function waitForPopupReposition(popup, fallbackPlacement, timeoutMs = 100, optio
57
57
  //#endregion
58
58
  export { waitForPopupReposition as i, getPopupSide as n, syncPopupPlacementAnimation as r, computePopupTransformOrigin as t };
59
59
 
60
- //# sourceMappingURL=popup-placement-animation-WlEXnS85.js.map
60
+ //# sourceMappingURL=popup-placement-animation-GvFXER7D.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"popup-placement-animation-WlEXnS85.js","names":[],"sources":["../../src/utils/popup-placement-animation.ts"],"sourcesContent":["type PopupSide = 'top' | 'bottom' | 'left' | 'right';\n\ntype RectLike = {\n x: number;\n y: number;\n width: number;\n height: number;\n};\n\n/** Maps Floating UI placement to a physical side for motion CSS. */\nexport function getPopupSide(placement: string): PopupSide {\n const side = placement.split('-')[0];\n\n if (side === 'inline-start') {\n return 'left';\n }\n\n if (side === 'inline-end') {\n return 'right';\n }\n\n if (side === 'top' || side === 'bottom' || side === 'left' || side === 'right') {\n return side;\n }\n\n return 'bottom';\n}\n\n/**\n * Transform origin at the anchor center on the connecting edge — matches Base UI\n * (`@base-ui/react` useAnchorPositioning transformOrigin middleware), which\n * plugin-kit-react relies on via `--transform-origin`.\n */\nexport function computePopupTransformOrigin(\n placement: string,\n referenceRect: RectLike,\n floatingRect: RectLike,\n sideOffset: number,\n shift?: { x?: number; y?: number },\n): string {\n const side = getPopupSide(placement);\n const transformX = referenceRect.x + referenceRect.width / 2 - floatingRect.x;\n const transformY = referenceRect.y + referenceRect.height / 2 - floatingRect.y;\n const shiftY = Math.abs(shift?.y ?? 0);\n const isOverlappingAnchor = shiftY > sideOffset;\n\n if (isOverlappingAnchor && (side === 'top' || side === 'bottom')) {\n return `${transformX}px ${referenceRect.y + referenceRect.height / 2 - floatingRect.y}px`;\n }\n\n const adjacentTransformOrigin: Record<PopupSide, string> = {\n top: `${transformX}px calc(100% + ${sideOffset}px)`,\n bottom: `${transformX}px ${-sideOffset}px`,\n left: `calc(100% + ${sideOffset}px) ${transformY}px`,\n right: `${-sideOffset}px ${transformY}px`,\n };\n\n return adjacentTransformOrigin[side];\n}\n\n/** Applies `data-side` for placement-aware slide/zoom CSS. */\nexport function syncPopupPlacementAnimation(element: HTMLElement, placement: string | null | undefined): void {\n if (!placement) {\n element.removeAttribute('data-side');\n return;\n }\n\n element.setAttribute('data-side', getPopupSide(placement));\n}\n\n/** Waits for the first `pk-reposition` on a popup. */\nexport function waitForPopupReposition(\n popup: HTMLElement,\n fallbackPlacement: string,\n timeoutMs = 100,\n options?: { requireEvent?: boolean },\n): Promise<string> {\n const readPlacement = (): string => {\n return popup.getAttribute('data-current-placement') ?? fallbackPlacement;\n };\n\n if (!options?.requireEvent && popup.hasAttribute('data-current-placement')) {\n return Promise.resolve(readPlacement());\n }\n\n return new Promise((resolve) => {\n let settled = false;\n\n const finish = (): void => {\n if (settled) {\n return;\n }\n\n settled = true;\n resolve(readPlacement());\n };\n\n popup.addEventListener('pk-reposition', finish, { once: true });\n\n // Attribute-only poll races settleInitialPosition: data-current-placement is\n // written before .positioned (visibility:hidden clears). Skip when the caller\n // needs the post-reveal pk-reposition (focus / enter animation).\n if (!options?.requireEvent) {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (popup.hasAttribute('data-current-placement')) {\n finish();\n }\n });\n });\n }\n\n window.setTimeout(finish, timeoutMs);\n });\n}\n"],"mappings":";;AAUA,SAAgB,aAAa,WAA8B;CACvD,MAAM,OAAO,UAAU,MAAM,IAAI,CAAC;AAElC,KAAI,SAAS,eACT,QAAO;AAGX,KAAI,SAAS,aACT,QAAO;AAGX,KAAI,SAAS,SAAS,SAAS,YAAY,SAAS,UAAU,SAAS,QACnE,QAAO;AAGX,QAAO;;;;;;;AAQX,SAAgB,4BACZ,WACA,eACA,cACA,YACA,OACM;CACN,MAAM,OAAO,aAAa,UAAU;CACpC,MAAM,aAAa,cAAc,IAAI,cAAc,QAAQ,IAAI,aAAa;CAC5E,MAAM,aAAa,cAAc,IAAI,cAAc,SAAS,IAAI,aAAa;AAI7E,KAHe,KAAK,IAAI,OAAO,KAAK,EACR,GAAS,eAET,SAAS,SAAS,SAAS,UACnD,QAAO,GAAG,WAAW,KAAK,cAAc,IAAI,cAAc,SAAS,IAAI,aAAa,EAAE;AAU1F,QAAO;EANH,KAAK,GAAG,WAAW,iBAAiB,WAAW;EAC/C,QAAQ,GAAG,WAAW,KAAK,CAAC,WAAW;EACvC,MAAM,eAAe,WAAW,MAAM,WAAW;EACjD,OAAO,GAAG,CAAC,WAAW,KAAK,WAAW;EAGnC,CAAwB;;;AAInC,SAAgB,4BAA4B,SAAsB,WAA4C;AAC1G,KAAI,CAAC,WAAW;AACZ,UAAQ,gBAAgB,YAAY;AACpC;;AAGJ,SAAQ,aAAa,aAAa,aAAa,UAAU,CAAC;;;AAI9D,SAAgB,uBACZ,OACA,mBACA,YAAY,KACZ,SACe;CACf,MAAM,sBAA8B;AAChC,SAAO,MAAM,aAAa,yBAAyB,IAAI;;AAG3D,KAAI,CAAC,SAAS,gBAAgB,MAAM,aAAa,yBAAyB,CACtE,QAAO,QAAQ,QAAQ,eAAe,CAAC;AAG3C,QAAO,IAAI,SAAS,YAAY;EAC5B,IAAI,UAAU;EAEd,MAAM,eAAqB;AACvB,OAAI,QACA;AAGJ,aAAU;AACV,WAAQ,eAAe,CAAC;;AAG5B,QAAM,iBAAiB,iBAAiB,QAAQ,EAAE,MAAM,MAAM,CAAC;AAK/D,MAAI,CAAC,SAAS,aACV,6BAA4B;AACxB,+BAA4B;AACxB,QAAI,MAAM,aAAa,yBAAyB,CAC5C,SAAQ;KAEd;IACJ;AAGN,SAAO,WAAW,QAAQ,UAAU;GACtC"}
1
+ {"version":3,"file":"popup-placement-animation-GvFXER7D.js","names":[],"sources":["../../src/utils/popup-placement-animation.ts"],"sourcesContent":["type PopupSide = 'top' | 'bottom' | 'left' | 'right';\n\ntype RectLike = {\n x: number;\n y: number;\n width: number;\n height: number;\n};\n\n/** Maps Floating UI placement to a physical side for motion CSS. */\nexport function getPopupSide(placement: string): PopupSide {\n const side = placement.split('-')[0];\n\n if (side === 'inline-start') {\n return 'left';\n }\n\n if (side === 'inline-end') {\n return 'right';\n }\n\n if (side === 'top' || side === 'bottom' || side === 'left' || side === 'right') {\n return side;\n }\n\n return 'bottom';\n}\n\n/**\n * Transform origin at the anchor center on the connecting edge — matches Base UI\n * (`@base-ui/react` useAnchorPositioning transformOrigin middleware), which\n * plugin-kit-react relies on via `--transform-origin`.\n */\nexport function computePopupTransformOrigin(\n placement: string,\n referenceRect: RectLike,\n floatingRect: RectLike,\n sideOffset: number,\n shift?: { x?: number; y?: number },\n): string {\n const side = getPopupSide(placement);\n const transformX = referenceRect.x + referenceRect.width / 2 - floatingRect.x;\n const transformY = referenceRect.y + referenceRect.height / 2 - floatingRect.y;\n const shiftY = Math.abs(shift?.y ?? 0);\n const isOverlappingAnchor = shiftY > sideOffset;\n\n if (isOverlappingAnchor && (side === 'top' || side === 'bottom')) {\n return `${transformX}px ${referenceRect.y + referenceRect.height / 2 - floatingRect.y}px`;\n }\n\n const adjacentTransformOrigin: Record<PopupSide, string> = {\n top: `${transformX}px calc(100% + ${sideOffset}px)`,\n bottom: `${transformX}px ${-sideOffset}px`,\n left: `calc(100% + ${sideOffset}px) ${transformY}px`,\n right: `${-sideOffset}px ${transformY}px`,\n };\n\n return adjacentTransformOrigin[side];\n}\n\n/** Applies `data-side` for placement-aware slide/zoom CSS. */\nexport function syncPopupPlacementAnimation(element: HTMLElement, placement: string | null | undefined): void {\n if (!placement) {\n element.removeAttribute('data-side');\n return;\n }\n\n element.setAttribute('data-side', getPopupSide(placement));\n}\n\n/** Waits for the first `pk-reposition` on a popup. */\nexport function waitForPopupReposition(\n popup: HTMLElement,\n fallbackPlacement: string,\n timeoutMs = 100,\n options?: { requireEvent?: boolean },\n): Promise<string> {\n const readPlacement = (): string => {\n return popup.getAttribute('data-current-placement') ?? fallbackPlacement;\n };\n\n if (!options?.requireEvent && popup.hasAttribute('data-current-placement')) {\n return Promise.resolve(readPlacement());\n }\n\n return new Promise((resolve) => {\n let settled = false;\n\n const finish = (): void => {\n if (settled) {\n return;\n }\n\n settled = true;\n resolve(readPlacement());\n };\n\n popup.addEventListener('pk-reposition', finish, { once: true });\n\n // Attribute-only poll races settleInitialPosition: data-current-placement is\n // written before .positioned (visibility:hidden clears). Skip when the caller\n // needs the post-reveal pk-reposition (focus / enter animation).\n if (!options?.requireEvent) {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (popup.hasAttribute('data-current-placement')) {\n finish();\n }\n });\n });\n }\n\n window.setTimeout(finish, timeoutMs);\n });\n}\n"],"mappings":";;AAUA,SAAgB,aAAa,WAA8B;CACvD,MAAM,OAAO,UAAU,MAAM,IAAI,CAAC;AAElC,KAAI,SAAS,eACT,QAAO;AAGX,KAAI,SAAS,aACT,QAAO;AAGX,KAAI,SAAS,SAAS,SAAS,YAAY,SAAS,UAAU,SAAS,QACnE,QAAO;AAGX,QAAO;;;;;;;AAQX,SAAgB,4BACZ,WACA,eACA,cACA,YACA,OACM;CACN,MAAM,OAAO,aAAa,UAAU;CACpC,MAAM,aAAa,cAAc,IAAI,cAAc,QAAQ,IAAI,aAAa;CAC5E,MAAM,aAAa,cAAc,IAAI,cAAc,SAAS,IAAI,aAAa;AAI7E,KAHe,KAAK,IAAI,OAAO,KAAK,EACR,GAAS,eAET,SAAS,SAAS,SAAS,UACnD,QAAO,GAAG,WAAW,KAAK,cAAc,IAAI,cAAc,SAAS,IAAI,aAAa,EAAE;AAU1F,QAAO;EANH,KAAK,GAAG,WAAW,iBAAiB,WAAW;EAC/C,QAAQ,GAAG,WAAW,KAAK,CAAC,WAAW;EACvC,MAAM,eAAe,WAAW,MAAM,WAAW;EACjD,OAAO,GAAG,CAAC,WAAW,KAAK,WAAW;EAGnC,CAAwB;;;AAInC,SAAgB,4BAA4B,SAAsB,WAA4C;AAC1G,KAAI,CAAC,WAAW;AACZ,UAAQ,gBAAgB,YAAY;AACpC;;AAGJ,SAAQ,aAAa,aAAa,aAAa,UAAU,CAAC;;;AAI9D,SAAgB,uBACZ,OACA,mBACA,YAAY,KACZ,SACe;CACf,MAAM,sBAA8B;AAChC,SAAO,MAAM,aAAa,yBAAyB,IAAI;;AAG3D,KAAI,CAAC,SAAS,gBAAgB,MAAM,aAAa,yBAAyB,CACtE,QAAO,QAAQ,QAAQ,eAAe,CAAC;AAG3C,QAAO,IAAI,SAAS,YAAY;EAC5B,IAAI,UAAU;EAEd,MAAM,eAAqB;AACvB,OAAI,QACA;AAGJ,aAAU;AACV,WAAQ,eAAe,CAAC;;AAG5B,QAAM,iBAAiB,iBAAiB,QAAQ,EAAE,MAAM,MAAM,CAAC;AAK/D,MAAI,CAAC,SAAS,aACV,6BAA4B;AACxB,+BAA4B;AACxB,QAAI,MAAM,aAAa,yBAAyB,CAC5C,SAAQ;KAEd;IACJ;AAGN,SAAO,WAAW,QAAQ,UAAU;GACtC"}
@@ -31,4 +31,4 @@ function isPointerInsideOverlay(event, options = {}) {
31
31
  //#endregion
32
32
  export { isPointerInsideOverlay as n, isEventInsideOverlay as t };
33
33
 
34
- //# sourceMappingURL=popup-pointer-CuLjk1th.js.map
34
+ //# sourceMappingURL=popup-pointer-BTS3Y6LE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"popup-pointer-CuLjk1th.js","names":[],"sources":["../../src/utils/popup-pointer.ts"],"sourcesContent":["/**\n * Returns true when a pointer event occurred on pk-popup content.\n *\n * Intentionally matches *any* popup surface — callers that need overlay-scoped\n * hit testing should use {@link isEventInsideOverlay} instead.\n */\nexport function isPointerInPopupSurface(event: PointerEvent): boolean {\n return event.composedPath().some((node) => {\n if (!(node instanceof HTMLElement)) {\n return false;\n }\n\n return node.classList.contains('popup')\n || node.localName === 'pk-popup';\n });\n}\n\nexport type PointerInsideOverlayOptions = {\n host?: HTMLElement;\n anchor?: Element | null;\n panel?: Element | null;\n extraMatches?: (element: HTMLElement) => boolean;\n};\n\n/** Resolve the pk-popup that owns this overlay's panel (or the host's popup). */\nfunction resolveOwnPopup(options: PointerInsideOverlayOptions): Element | null {\n if (options.panel instanceof Element) {\n const closest = options.panel.closest('pk-popup');\n\n if (closest) {\n return closest;\n }\n\n // Panel may live in a shadow tree whose host is pk-popup.\n const root = options.panel.getRootNode();\n\n if (root instanceof ShadowRoot && root.host.localName === 'pk-popup') {\n return root.host;\n }\n }\n\n if (options.host instanceof HTMLElement) {\n return options.host.shadowRoot?.querySelector('pk-popup')\n ?? options.host.querySelector(':scope > pk-popup')\n ?? options.host.querySelector('pk-popup');\n }\n\n return null;\n}\n\n/** Shared hit/focus-path testing for pk-popup consumers (pointer or keyboard events). */\nexport function isEventInsideOverlay(\n event: Event,\n options: PointerInsideOverlayOptions = {},\n): boolean {\n const path = event.composedPath();\n\n if (options.host && path.includes(options.host)) {\n return true;\n }\n\n if (options.anchor && path.includes(options.anchor)) {\n return true;\n }\n\n if (options.panel && path.includes(options.panel)) {\n return true;\n }\n\n // Only *this* overlay's popup counts. Dropdown menus slot their trigger inside\n // pk-popup as the anchor — matching any pk-popup here would treat a click on\n // another menu's trigger as \"inside\" and block light-dismiss (two menus open).\n const ownPopup = resolveOwnPopup(options);\n\n if (ownPopup && path.includes(ownPopup)) {\n return true;\n }\n\n return path.some((node) => {\n if (!(node instanceof HTMLElement)) {\n return false;\n }\n\n // Own popup internals may use a `.popup` surface node that is not the\n // custom element itself — still scoped via ancestry to ownPopup.\n if (\n ownPopup\n && node.classList.contains('popup')\n && (node === ownPopup || ownPopup.contains(node))\n ) {\n return true;\n }\n\n return options.extraMatches?.(node) ?? false;\n });\n}\n\n/** Shared light-dismiss hit testing for pk-popup consumers. */\nexport function isPointerInsideOverlay(\n event: PointerEvent,\n options: PointerInsideOverlayOptions = {},\n): boolean {\n return isEventInsideOverlay(event, options);\n}\n"],"mappings":";;AAyBA,SAAS,gBAAgB,SAAsD;AAC3E,KAAI,QAAQ,iBAAiB,SAAS;EAClC,MAAM,UAAU,QAAQ,MAAM,QAAQ,WAAW;AAEjD,MAAI,QACA,QAAO;EAIX,MAAM,OAAO,QAAQ,MAAM,aAAa;AAExC,MAAI,gBAAgB,cAAc,KAAK,KAAK,cAAc,WACtD,QAAO,KAAK;;AAIpB,KAAI,QAAQ,gBAAgB,YACxB,QAAO,QAAQ,KAAK,YAAY,cAAc,WAAW,IAClD,QAAQ,KAAK,cAAc,oBAAoB,IAC/C,QAAQ,KAAK,cAAc,WAAW;AAGjD,QAAO;;;AAIX,SAAgB,qBACZ,OACA,UAAuC,EAAE,EAClC;CACP,MAAM,OAAO,MAAM,cAAc;AAEjC,KAAI,QAAQ,QAAQ,KAAK,SAAS,QAAQ,KAAK,CAC3C,QAAO;AAGX,KAAI,QAAQ,UAAU,KAAK,SAAS,QAAQ,OAAO,CAC/C,QAAO;AAGX,KAAI,QAAQ,SAAS,KAAK,SAAS,QAAQ,MAAM,CAC7C,QAAO;CAMX,MAAM,WAAW,gBAAgB,QAAQ;AAEzC,KAAI,YAAY,KAAK,SAAS,SAAS,CACnC,QAAO;AAGX,QAAO,KAAK,MAAM,SAAS;AACvB,MAAI,EAAE,gBAAgB,aAClB,QAAO;AAKX,MACI,YACG,KAAK,UAAU,SAAS,QAAQ,KAC/B,SAAS,YAAY,SAAS,SAAS,KAAK,EAEhD,QAAO;AAGX,SAAO,QAAQ,eAAe,KAAK,IAAI;GACzC;;;AAIN,SAAgB,uBACZ,OACA,UAAuC,EAAE,EAClC;AACP,QAAO,qBAAqB,OAAO,QAAQ"}
1
+ {"version":3,"file":"popup-pointer-BTS3Y6LE.js","names":[],"sources":["../../src/utils/popup-pointer.ts"],"sourcesContent":["/**\n * Returns true when a pointer event occurred on pk-popup content.\n *\n * Intentionally matches *any* popup surface — callers that need overlay-scoped\n * hit testing should use {@link isEventInsideOverlay} instead.\n */\nexport function isPointerInPopupSurface(event: PointerEvent): boolean {\n return event.composedPath().some((node) => {\n if (!(node instanceof HTMLElement)) {\n return false;\n }\n\n return node.classList.contains('popup')\n || node.localName === 'pk-popup';\n });\n}\n\nexport type PointerInsideOverlayOptions = {\n host?: HTMLElement;\n anchor?: Element | null;\n panel?: Element | null;\n extraMatches?: (element: HTMLElement) => boolean;\n};\n\n/** Resolve the pk-popup that owns this overlay's panel (or the host's popup). */\nfunction resolveOwnPopup(options: PointerInsideOverlayOptions): Element | null {\n if (options.panel instanceof Element) {\n const closest = options.panel.closest('pk-popup');\n\n if (closest) {\n return closest;\n }\n\n // Panel may live in a shadow tree whose host is pk-popup.\n const root = options.panel.getRootNode();\n\n if (root instanceof ShadowRoot && root.host.localName === 'pk-popup') {\n return root.host;\n }\n }\n\n if (options.host instanceof HTMLElement) {\n return options.host.shadowRoot?.querySelector('pk-popup')\n ?? options.host.querySelector(':scope > pk-popup')\n ?? options.host.querySelector('pk-popup');\n }\n\n return null;\n}\n\n/** Shared hit/focus-path testing for pk-popup consumers (pointer or keyboard events). */\nexport function isEventInsideOverlay(\n event: Event,\n options: PointerInsideOverlayOptions = {},\n): boolean {\n const path = event.composedPath();\n\n if (options.host && path.includes(options.host)) {\n return true;\n }\n\n if (options.anchor && path.includes(options.anchor)) {\n return true;\n }\n\n if (options.panel && path.includes(options.panel)) {\n return true;\n }\n\n // Only *this* overlay's popup counts. Dropdown menus slot their trigger inside\n // pk-popup as the anchor — matching any pk-popup here would treat a click on\n // another menu's trigger as \"inside\" and block light-dismiss (two menus open).\n const ownPopup = resolveOwnPopup(options);\n\n if (ownPopup && path.includes(ownPopup)) {\n return true;\n }\n\n return path.some((node) => {\n if (!(node instanceof HTMLElement)) {\n return false;\n }\n\n // Own popup internals may use a `.popup` surface node that is not the\n // custom element itself — still scoped via ancestry to ownPopup.\n if (\n ownPopup\n && node.classList.contains('popup')\n && (node === ownPopup || ownPopup.contains(node))\n ) {\n return true;\n }\n\n return options.extraMatches?.(node) ?? false;\n });\n}\n\n/** Shared light-dismiss hit testing for pk-popup consumers. */\nexport function isPointerInsideOverlay(\n event: PointerEvent,\n options: PointerInsideOverlayOptions = {},\n): boolean {\n return isEventInsideOverlay(event, options);\n}\n"],"mappings":";;AAyBA,SAAS,gBAAgB,SAAsD;AAC3E,KAAI,QAAQ,iBAAiB,SAAS;EAClC,MAAM,UAAU,QAAQ,MAAM,QAAQ,WAAW;AAEjD,MAAI,QACA,QAAO;EAIX,MAAM,OAAO,QAAQ,MAAM,aAAa;AAExC,MAAI,gBAAgB,cAAc,KAAK,KAAK,cAAc,WACtD,QAAO,KAAK;;AAIpB,KAAI,QAAQ,gBAAgB,YACxB,QAAO,QAAQ,KAAK,YAAY,cAAc,WAAW,IAClD,QAAQ,KAAK,cAAc,oBAAoB,IAC/C,QAAQ,KAAK,cAAc,WAAW;AAGjD,QAAO;;;AAIX,SAAgB,qBACZ,OACA,UAAuC,EAAE,EAClC;CACP,MAAM,OAAO,MAAM,cAAc;AAEjC,KAAI,QAAQ,QAAQ,KAAK,SAAS,QAAQ,KAAK,CAC3C,QAAO;AAGX,KAAI,QAAQ,UAAU,KAAK,SAAS,QAAQ,OAAO,CAC/C,QAAO;AAGX,KAAI,QAAQ,SAAS,KAAK,SAAS,QAAQ,MAAM,CAC7C,QAAO;CAMX,MAAM,WAAW,gBAAgB,QAAQ;AAEzC,KAAI,YAAY,KAAK,SAAS,SAAS,CACnC,QAAO;AAGX,QAAO,KAAK,MAAM,SAAS;AACvB,MAAI,EAAE,gBAAgB,aAClB,QAAO;AAKX,MACI,YACG,KAAK,UAAU,SAAS,QAAQ,KAC/B,SAAS,YAAY,SAAS,SAAS,KAAK,EAEhD,QAAO;AAGX,SAAO,QAAQ,eAAe,KAAK,IAAI;GACzC;;;AAIN,SAAgB,uBACZ,OACA,UAAuC,EAAE,EAClC;AACP,QAAO,qBAAqB,OAAO,QAAQ"}
@@ -1,89 +1,95 @@
1
- import { t as PkSpinner } from "./pk-spinner-DweuYJ_Z.js";
2
- import { t as PkButton } from "./pk-button-BrH4u4Qr.js";
1
+ import { t as PkCopyButton } from "./pk-copy-button-KegSx46o.js";
2
+ import { t as PkAlert } from "./pk-alert-Cjxl6CY_.js";
3
+ import { t as PkSpinner } from "./pk-spinner-CN365srE.js";
4
+ import { t as PkButton } from "./pk-button-DCtNLEPr.js";
5
+ import "../components/alert.js";
6
+ import { PkIcon } from "../components/icon/pk-icon.js";
7
+ import { t as PkStatePanel } from "./pk-state-panel-DPP7t-er.js";
8
+ import "../components/state-panel.js";
3
9
  import "../components/button.js";
4
- import { t as PkButtonGroup } from "./pk-button-group-BSz5T5iS.js";
5
- import { t as PkButtonGroupSeparator } from "./pk-button-group-separator-DH3Rl24b.js";
6
- import { t as PkButtonGroupText } from "./pk-button-group-text-Qro_KmZb.js";
10
+ import { t as PkButtonGroup } from "./pk-button-group-DBdKK_2_.js";
11
+ import { t as PkButtonGroupSeparator } from "./pk-button-group-separator-D0Aa0a0f.js";
12
+ import { t as PkButtonGroupText } from "./pk-button-group-text-BsqEM-dB.js";
7
13
  import "../components/button-group.js";
8
- import { t as PkCheckbox } from "./pk-checkbox-13ArHSmt.js";
14
+ import { t as PkCheckbox } from "./pk-checkbox-dvHRoVbL.js";
9
15
  import "../components/checkbox.js";
10
- import { n as PkCheckboxSelect } from "./pk-checkbox-select-Ckvfbu83.js";
16
+ import { n as PkCheckboxSelect } from "./pk-checkbox-select-Cqx5ZCMq.js";
11
17
  import "../components/checkbox-select.js";
12
- import { t as PkCodeEditor } from "./pk-code-editor-BlG6O5qB.js";
18
+ import { t as PkCodeEditor } from "./pk-code-editor-C_PqjR75.js";
13
19
  import "../components/code-editor.js";
14
- import { t as PkCombobox } from "./pk-combobox-ag89QEX2.js";
15
- import { t as PkPopup } from "./pk-popup-B65tZMQH.js";
16
- import { t as PkInput } from "./pk-input-BywmK5n2.js";
20
+ import { t as PkCombobox } from "./pk-combobox-BeddzAsl.js";
21
+ import { t as PkPopup } from "./pk-popup-0EIt9X_W.js";
22
+ import { t as PkInput } from "./pk-input-CiUNLTSW.js";
17
23
  import "../components/input.js";
18
- import { t as PkInputGroup } from "./pk-input-group-BLqKPnfc.js";
19
- import { t as PkInputGroupAddon } from "./pk-input-group-addon-ClBkGmAw.js";
20
- import { t as PkInputGroupButton } from "./pk-input-group-button-CHQHsWd4.js";
21
- import { t as PkInputGroupInput } from "./pk-input-group-input-oNnqMBGU.js";
22
- import { t as PkInputGroupText } from "./pk-input-group-text-HUxlXROB.js";
23
- import { t as PkInputGroupTextarea } from "./pk-input-group-textarea-Cl2FNuw-.js";
24
+ import { t as PkInputGroup } from "./pk-input-group-k7WV0pQI.js";
25
+ import { t as PkInputGroupAddon } from "./pk-input-group-addon-piOznzSS.js";
26
+ import { t as PkInputGroupButton } from "./pk-input-group-button-Di2vEJLo.js";
27
+ import { t as PkInputGroupInput } from "./pk-input-group-input-CwaaEfr1.js";
28
+ import { t as PkInputGroupText } from "./pk-input-group-text-C0VAdy0J.js";
29
+ import { t as PkInputGroupTextarea } from "./pk-input-group-textarea-DOG1NIlE.js";
24
30
  import "../components/input-group.js";
25
- import { t as PkTextarea } from "./pk-textarea-Dhj1WFLH.js";
31
+ import { t as PkTextarea } from "./pk-textarea-CBijEmcV.js";
26
32
  import "../components/textarea.js";
27
- import { t as PkSeparator } from "./pk-separator-N-VyjYE6.js";
33
+ import { t as PkSeparator } from "./pk-separator-Bcxg_GO2.js";
28
34
  import "../components/separator.js";
29
- import { t as PkStatus } from "./pk-status-BehQARDv.js";
35
+ import { t as PkStatus } from "./pk-status-CYcadu0Q.js";
30
36
  import "../components/status.js";
31
- import { t as PkToggle } from "./pk-toggle-BthhH7vl.js";
37
+ import { t as PkToggle } from "./pk-toggle-CAtGO_Le.js";
32
38
  import "../components/toggle.js";
33
- import { t as PkToggleGroup } from "./pk-toggle-group-D2Quux8D.js";
39
+ import { t as PkToggleGroup } from "./pk-toggle-group-CLso6OE7.js";
34
40
  import "../components/toggle-group.js";
35
- import { t as PkLightswitch } from "./pk-lightswitch-VHfJizBW.js";
41
+ import { t as PkLightswitch } from "./pk-lightswitch-FH5ZxMG2.js";
36
42
  import "../components/lightswitch.js";
37
- import { t as PkDialog } from "./pk-dialog-VMQqLW1f.js";
38
- import { PkIcon } from "../components/icon/pk-icon.js";
43
+ import { t as PkDialog } from "./pk-dialog-CFU850OH.js";
39
44
  import { PkConnect } from "../components/connect/pk-connect.js";
40
45
  import { PkConnectOauth } from "../components/connect/pk-connect-oauth.js";
41
46
  import "../components/connect.js";
42
- import { t as PkCopyButton } from "./pk-copy-button-BVaOLtYG.js";
43
47
  import "../components/copy-button.js";
44
48
  import "../components/dialog.js";
45
- import { t as PkDropdownItem } from "./pk-dropdown-item-D9OaG5o-.js";
46
- import { t as PkDropdownMenu } from "./pk-dropdown-menu-DW1wI8xQ.js";
47
- import { t as PkDropdownLabel } from "./pk-dropdown-label-CRNWMWQd.js";
49
+ import { t as PkDropdownItem } from "./pk-dropdown-item-A4P4zfVF.js";
50
+ import { t as PkDropdownMenu } from "./pk-dropdown-menu-C_vasBoa.js";
51
+ import { t as PkDropdownLabel } from "./pk-dropdown-label-PqDxMkCI.js";
48
52
  import { PkDropdownSeparator } from "../components/dropdown-menu/pk-dropdown-separator.js";
49
53
  import "../components/dropdown-menu.js";
50
- import { t as PkColorInput } from "./pk-color-input-BRgQ5-vB.js";
51
- import { t as PkCalendar } from "./pk-calendar-Z7Y0PjeY.js";
52
- import { t as PkDatePicker } from "./pk-date-picker-C2YvDPNm.js";
53
- import { t as PkOption } from "./pk-option-DQZHV9jL.js";
54
- import { t as PkSelect } from "./pk-select-b5S5WKc-.js";
55
- import { t as PkTimePicker } from "./pk-time-picker-ChRbKHNB.js";
56
- import { t as PkEditableTable } from "./pk-editable-table-DDnu1I8Y.js";
57
- import { t as PkField } from "./pk-field-UAlMq6mQ.js";
54
+ import { t as PkColorInput } from "./pk-color-input-4LDV0Z3W.js";
55
+ import { t as PkCalendar } from "./pk-calendar-hBz1MnOu.js";
56
+ import { t as PkDatePicker } from "./pk-date-picker-D_JFep-Y.js";
57
+ import { t as PkOption } from "./pk-option-Cx52kLmz.js";
58
+ import { t as PkSelect } from "./pk-select-UUH7FE4H.js";
59
+ import { t as PkTimePicker } from "./pk-time-picker-D-u5-7pf.js";
60
+ import { t as PkEditableTable } from "./pk-editable-table-B85NhFYY.js";
61
+ import { t as PkField } from "./pk-field-BJA2fZ6s.js";
58
62
  import "../components/field.js";
59
- import { t as PkPopover } from "./pk-popover-D3jkHfwB.js";
63
+ import { t as PkPopover } from "./pk-popover-209LdoPr.js";
60
64
  import "../components/popover.js";
61
65
  import "../components/popup.js";
62
- import { t as PkTooltip } from "./pk-tooltip--QBV6puX.js";
66
+ import { t as PkTooltip } from "./pk-tooltip-C6yb4CXI.js";
63
67
  import "../components/tooltip.js";
64
- import { t as PkRadio } from "./pk-radio-B5XkMHy3.js";
65
- import { t as PkRadioGroup } from "./pk-radio-group-Dzd-3HaQ.js";
68
+ import { t as PkRadio } from "./pk-radio-jgj6A0Wy.js";
69
+ import { t as PkRadioGroup } from "./pk-radio-group-CruMBeeF.js";
66
70
  import "../components/radio-group.js";
67
- import { t as PkTab } from "./pk-tab-CTloD18e.js";
68
- import { t as PkTabHeading } from "./pk-tab-heading-Cjcgebxn.js";
69
- import { t as PkTabPanel } from "./pk-tab-panel-CkKU5-Ah.js";
70
- import { t as PkTabs } from "./pk-tabs-BgEBki1q.js";
71
+ import { t as PkTab } from "./pk-tab-BmXNyDg7.js";
72
+ import { t as PkTabHeading } from "./pk-tab-heading-GZHVmCAd.js";
73
+ import { t as PkTabPanel } from "./pk-tab-panel-OpM3f_cm.js";
74
+ import { t as PkTabs } from "./pk-tabs-x26NAw-V.js";
71
75
  import "../components/tabs.js";
72
- import { t as PkScrollArea } from "./pk-scroll-area-CdfNxYz8.js";
76
+ import { t as PkScrollArea } from "./pk-scroll-area-BaqN798b.js";
73
77
  import "../components/scroll-area.js";
74
78
  import "../components/color-input.js";
75
79
  import "../components/calendar.js";
76
80
  import "../components/date-picker.js";
77
- import { t as PkOptionGroup } from "./pk-option-group-CCzJkBFp.js";
81
+ import { t as PkOptionGroup } from "./pk-option-group-CYo9Ukue.js";
78
82
  import "../components/select.js";
79
83
  import "../components/time-picker.js";
80
84
  import "../components/spinner.js";
81
- import { t as PkTiptapContent } from "./pk-tiptap-content-CL8smjGi.js";
82
- import { t as PkTiptapEditor } from "./pk-tiptap-editor-BzZ-J2sl.js";
83
- import { t as PkTiptapInput } from "./pk-tiptap-input-YKg4VLp_.js";
85
+ import { t as PkTiptapContent } from "./pk-tiptap-content-BGxMO3T4.js";
86
+ import { t as PkTiptapEditor } from "./pk-tiptap-editor-BeuyzH5l.js";
87
+ import { t as PkTiptapInput } from "./pk-tiptap-input-CQojaxDH.js";
84
88
  import "@verbb/plugin-kit-icons/all.js";
85
89
  //#region src/register.ts
86
90
  var COMPONENTS = [
91
+ ["pk-alert", PkAlert],
92
+ ["pk-state-panel", PkStatePanel],
87
93
  ["pk-spinner", PkSpinner],
88
94
  ["pk-icon", PkIcon],
89
95
  ["pk-button", PkButton],
@@ -145,4 +151,4 @@ function registerAll() {
145
151
  //#endregion
146
152
  export { registerAll as t };
147
153
 
148
- //# sourceMappingURL=register-C6_F-VwU.js.map
154
+ //# sourceMappingURL=register-BDO_LUHK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-BDO_LUHK.js","names":[],"sources":["../../src/register.ts"],"sourcesContent":["// Full-library path: every curated glyph is available to `<pk-icon icon=\"…\">`.\nimport '@verbb/plugin-kit-icons/all.js';\n\nimport { PkAlert } from './components/alert/pk-alert.js';\nimport { PkStatePanel } from './components/state-panel/pk-state-panel.js';\nimport { PkButton } from './components/button/pk-button.js';\nimport { PkButtonGroup } from './components/button-group/pk-button-group.js';\nimport { PkButtonGroupSeparator } from './components/button-group/pk-button-group-separator.js';\nimport { PkButtonGroupText } from './components/button-group/pk-button-group-text.js';\nimport { PkCheckbox } from './components/checkbox/pk-checkbox.js';\nimport { PkCheckboxSelect } from './components/checkbox-select/pk-checkbox-select.js';\nimport { PkCodeEditor } from './components/code-editor/pk-code-editor.js';\nimport { PkColorInput } from './components/color-input/pk-color-input.js';\nimport { PkCalendar } from './components/calendar/pk-calendar.js';\nimport { PkDatePicker } from './components/date-picker/pk-date-picker.js';\nimport { PkCombobox } from './components/combobox/pk-combobox.js';\nimport { PkConnect } from './components/connect/pk-connect.js';\nimport { PkConnectOauth } from './components/connect/pk-connect-oauth.js';\nimport { PkCopyButton } from './components/copy-button/pk-copy-button.js';\nimport { PkDialog } from './components/dialog/pk-dialog.js';\nimport { PkDropdownLabel } from './components/dropdown-menu/pk-dropdown-label.js';\nimport { PkDropdownMenu } from './components/dropdown-menu/pk-dropdown-menu.js';\nimport { PkDropdownItem } from './components/dropdown-menu/pk-dropdown-item.js';\nimport { PkDropdownSeparator } from './components/dropdown-menu/pk-dropdown-separator.js';\nimport { PkEditableTable } from './components/editable-table/pk-editable-table.js';\nimport { PkField } from './components/field/pk-field.js';\nimport { PkIcon } from './components/icon/pk-icon.js';\nimport { PkInput } from './components/input/pk-input.js';\nimport { PkInputGroup } from './components/input-group/pk-input-group.js';\nimport { PkInputGroupAddon } from './components/input-group/pk-input-group-addon.js';\nimport { PkInputGroupButton } from './components/input-group/pk-input-group-button.js';\nimport { PkInputGroupInput } from './components/input-group/pk-input-group-input.js';\nimport { PkInputGroupText } from './components/input-group/pk-input-group-text.js';\nimport { PkInputGroupTextarea } from './components/input-group/pk-input-group-textarea.js';\nimport { PkLightswitch } from './components/lightswitch/pk-lightswitch.js';\nimport { PkOption } from './components/select/pk-option.js';\nimport { PkOptionGroup } from './components/select/pk-option-group.js';\nimport { PkPopover } from './components/popover/pk-popover.js';\nimport { PkPopup } from './components/popup/pk-popup.js';\nimport { PkRadio } from './components/radio-group/pk-radio.js';\nimport { PkRadioGroup } from './components/radio-group/pk-radio-group.js';\nimport { PkScrollArea } from './components/scroll-area/pk-scroll-area.js';\nimport { PkSelect } from './components/select/pk-select.js';\nimport { PkSeparator } from './components/separator/pk-separator.js';\nimport { PkSpinner } from './components/spinner/pk-spinner.js';\nimport { PkStatus } from './components/status/pk-status.js';\nimport { PkTab } from './components/tabs/pk-tab.js';\nimport { PkTabHeading } from './components/tabs/pk-tab-heading.js';\nimport { PkTabPanel } from './components/tabs/pk-tab-panel.js';\nimport { PkTabs } from './components/tabs/pk-tabs.js';\nimport { PkTextarea } from './components/textarea/pk-textarea.js';\nimport { PkTiptapContent } from './components/tiptap/pk-tiptap-content.js';\nimport { PkTiptapEditor } from './components/tiptap/pk-tiptap-editor.js';\nimport { PkTiptapInput } from './components/tiptap/pk-tiptap-input.js';\nimport { PkTimePicker } from './components/time-picker/pk-time-picker.js';\nimport { PkToggle } from './components/toggle/pk-toggle.js';\nimport { PkToggleGroup } from './components/toggle-group/pk-toggle-group.js';\nimport { PkTooltip } from './components/tooltip/pk-tooltip.js';\n\nexport * from './components/alert/index.js';\nexport * from './components/state-panel/index.js';\nexport * from './components/button/index.js';\nexport * from './components/button-group/index.js';\nexport * from './components/checkbox/index.js';\nexport * from './components/checkbox-select/index.js';\nexport * from './components/input/index.js';\nexport * from './components/input-group/index.js';\nexport * from './components/textarea/index.js';\nexport * from './components/separator/index.js';\nexport * from './components/status/index.js';\nexport * from './components/toggle/index.js';\nexport * from './components/toggle-group/index.js';\nexport * from './components/lightswitch/index.js';\nexport * from './components/connect/index.js';\nexport * from './components/copy-button/index.js';\nexport * from './components/dialog/index.js';\nexport * from './components/dropdown-menu/index.js';\nexport * from './components/field/index.js';\nexport * from './components/popover/index.js';\nexport * from './components/popup/index.js';\nexport * from './components/tooltip/index.js';\nexport * from './components/radio-group/index.js';\nexport * from './components/tabs/index.js';\nexport * from './components/scroll-area/index.js';\nexport * from './components/color-input/index.js';\nexport * from './components/code-editor/index.js';\nexport * from './components/calendar/index.js';\nexport * from './components/date-picker/index.js';\nexport * from './components/select/index.js';\nexport * from './components/spinner/index.js';\nexport * from './components/time-picker/index.js';\nexport * from './components/tiptap/index.js';\n\nexport {\n PkAlert,\n PkStatePanel,\n PkButton,\n PkButtonGroup,\n PkButtonGroupSeparator,\n PkButtonGroupText,\n PkCheckbox,\n PkCheckboxSelect,\n PkColorInput,\n PkCodeEditor,\n PkCalendar,\n PkDatePicker,\n PkCombobox,\n PkConnect,\n PkConnectOauth,\n PkCopyButton,\n PkDialog,\n PkDropdownMenu,\n PkDropdownItem,\n PkDropdownSeparator,\n PkEditableTable,\n PkField,\n PkIcon,\n PkInput,\n PkInputGroup,\n PkInputGroupAddon,\n PkInputGroupButton,\n PkInputGroupInput,\n PkInputGroupText,\n PkInputGroupTextarea,\n PkLightswitch,\n PkOption,\n PkOptionGroup,\n PkPopover,\n PkPopup,\n PkRadio,\n PkRadioGroup,\n PkScrollArea,\n PkSelect,\n PkSeparator,\n PkSpinner,\n PkStatus,\n PkTab,\n PkTabPanel,\n PkTabs,\n PkTextarea,\n PkTimePicker,\n PkTiptapContent,\n PkTiptapEditor,\n PkTiptapInput,\n PkToggle,\n PkToggleGroup,\n PkTooltip,\n};\n\nconst COMPONENTS: [string, CustomElementConstructor][] = [\n ['pk-alert', PkAlert],\n ['pk-state-panel', PkStatePanel],\n ['pk-spinner', PkSpinner],\n ['pk-icon', PkIcon],\n ['pk-button', PkButton],\n ['pk-checkbox', PkCheckbox],\n ['pk-checkbox-select', PkCheckboxSelect],\n ['pk-color-input', PkColorInput],\n ['pk-code-editor', PkCodeEditor],\n ['pk-input', PkInput],\n ['pk-input-group', PkInputGroup],\n ['pk-input-group-addon', PkInputGroupAddon],\n ['pk-input-group-button', PkInputGroupButton],\n ['pk-input-group-input', PkInputGroupInput],\n ['pk-input-group-text', PkInputGroupText],\n ['pk-input-group-textarea', PkInputGroupTextarea],\n ['pk-textarea', PkTextarea],\n ['pk-tiptap-editor', PkTiptapEditor],\n ['pk-tiptap-input', PkTiptapInput],\n ['pk-tiptap-content', PkTiptapContent],\n ['pk-field', PkField],\n ['pk-separator', PkSeparator],\n ['pk-status', PkStatus],\n ['pk-toggle', PkToggle],\n ['pk-toggle-group', PkToggleGroup],\n ['pk-lightswitch', PkLightswitch],\n ['pk-button-group', PkButtonGroup],\n ['pk-button-group-separator', PkButtonGroupSeparator],\n ['pk-button-group-text', PkButtonGroupText],\n ['pk-dialog', PkDialog],\n ['pk-popup', PkPopup],\n ['pk-dropdown-label', PkDropdownLabel],\n ['pk-dropdown-item', PkDropdownItem],\n ['pk-dropdown-separator', PkDropdownSeparator],\n ['pk-dropdown-menu', PkDropdownMenu],\n ['pk-editable-table', PkEditableTable],\n ['pk-popover', PkPopover],\n ['pk-tooltip', PkTooltip],\n ['pk-radio', PkRadio],\n ['pk-radio-group', PkRadioGroup],\n ['pk-tab', PkTab],\n ['pk-tab-heading', PkTabHeading],\n ['pk-tab-panel', PkTabPanel],\n ['pk-tabs', PkTabs],\n ['pk-scroll-area', PkScrollArea],\n ['pk-option', PkOption],\n ['pk-option-group', PkOptionGroup],\n ['pk-select', PkSelect],\n ['pk-calendar', PkCalendar],\n ['pk-date-picker', PkDatePicker],\n ['pk-combobox', PkCombobox],\n ['pk-connect', PkConnect],\n ['pk-connect-oauth', PkConnectOauth],\n ['pk-time-picker', PkTimePicker],\n ['pk-copy-button', PkCopyButton],\n];\n\n/** Side-effect registration for all Plugin Kit web components. */\nexport function registerAll(): void {\n for (const [tag, ctor] of COMPONENTS) {\n if (!customElements.get(tag)) {\n customElements.define(tag, ctor);\n }\n }\n}\n\nexport {\n createRegisterComponents,\n type PkComponentTag,\n} from './register-components.js';\n\nexport { BUNDLER_TAG_IMPORT_PATHS as componentImportPaths } from './component-registry.js';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqJA,IAAM,aAAmD;CACrD,CAAC,YAAY,QAAQ;CACrB,CAAC,kBAAkB,aAAa;CAChC,CAAC,cAAc,UAAU;CACzB,CAAC,WAAW,OAAO;CACnB,CAAC,aAAa,SAAS;CACvB,CAAC,eAAe,WAAW;CAC3B,CAAC,sBAAsB,iBAAiB;CACxC,CAAC,kBAAkB,aAAa;CAChC,CAAC,kBAAkB,aAAa;CAChC,CAAC,YAAY,QAAQ;CACrB,CAAC,kBAAkB,aAAa;CAChC,CAAC,wBAAwB,kBAAkB;CAC3C,CAAC,yBAAyB,mBAAmB;CAC7C,CAAC,wBAAwB,kBAAkB;CAC3C,CAAC,uBAAuB,iBAAiB;CACzC,CAAC,2BAA2B,qBAAqB;CACjD,CAAC,eAAe,WAAW;CAC3B,CAAC,oBAAoB,eAAe;CACpC,CAAC,mBAAmB,cAAc;CAClC,CAAC,qBAAqB,gBAAgB;CACtC,CAAC,YAAY,QAAQ;CACrB,CAAC,gBAAgB,YAAY;CAC7B,CAAC,aAAa,SAAS;CACvB,CAAC,aAAa,SAAS;CACvB,CAAC,mBAAmB,cAAc;CAClC,CAAC,kBAAkB,cAAc;CACjC,CAAC,mBAAmB,cAAc;CAClC,CAAC,6BAA6B,uBAAuB;CACrD,CAAC,wBAAwB,kBAAkB;CAC3C,CAAC,aAAa,SAAS;CACvB,CAAC,YAAY,QAAQ;CACrB,CAAC,qBAAqB,gBAAgB;CACtC,CAAC,oBAAoB,eAAe;CACpC,CAAC,yBAAyB,oBAAoB;CAC9C,CAAC,oBAAoB,eAAe;CACpC,CAAC,qBAAqB,gBAAgB;CACtC,CAAC,cAAc,UAAU;CACzB,CAAC,cAAc,UAAU;CACzB,CAAC,YAAY,QAAQ;CACrB,CAAC,kBAAkB,aAAa;CAChC,CAAC,UAAU,MAAM;CACjB,CAAC,kBAAkB,aAAa;CAChC,CAAC,gBAAgB,WAAW;CAC5B,CAAC,WAAW,OAAO;CACnB,CAAC,kBAAkB,aAAa;CAChC,CAAC,aAAa,SAAS;CACvB,CAAC,mBAAmB,cAAc;CAClC,CAAC,aAAa,SAAS;CACvB,CAAC,eAAe,WAAW;CAC3B,CAAC,kBAAkB,aAAa;CAChC,CAAC,eAAe,WAAW;CAC3B,CAAC,cAAc,UAAU;CACzB,CAAC,oBAAoB,eAAe;CACpC,CAAC,kBAAkB,aAAa;CAChC,CAAC,kBAAkB,aAAa;CACnC;;AAGD,SAAgB,cAAoB;AAChC,MAAK,MAAM,CAAC,KAAK,SAAS,WACtB,KAAI,CAAC,eAAe,IAAI,IAAI,CACxB,gBAAe,OAAO,KAAK,KAAK"}
@@ -12,4 +12,4 @@ function createRegisterComponents(loaders) {
12
12
  //#endregion
13
13
  export { createRegisterComponents as t };
14
14
 
15
- //# sourceMappingURL=register-components-BT9THgdh.js.map
15
+ //# sourceMappingURL=register-components-Dcdn1e3S.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"register-components-BT9THgdh.js","names":[],"sources":["../../src/create-register-components.ts"],"sourcesContent":["/**\n * Tiny helper for building a local async registrar from an explicit loader map.\n * Prefer short family side-effect imports for Craft CP bundles:\n * `import '@verbb/plugin-kit-web/components/button.js'`.\n */\nexport function createRegisterComponents<T extends string>(\n loaders: Record<T, () => Promise<unknown>>,\n): (tags: readonly T[]) => Promise<void> {\n return async (tags) => {\n await Promise.all(tags.map((tag) => loaders[tag]()));\n };\n}\n"],"mappings":";;;;;;AAKA,SAAgB,yBACZ,SACqC;AACrC,QAAO,OAAO,SAAS;AACnB,QAAM,QAAQ,IAAI,KAAK,KAAK,QAAQ,QAAQ,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"register-components-Dcdn1e3S.js","names":[],"sources":["../../src/create-register-components.ts"],"sourcesContent":["/**\n * Tiny helper for building a local async registrar from an explicit loader map.\n * Prefer short family side-effect imports for Craft CP bundles:\n * `import '@verbb/plugin-kit-web/components/button.js'`.\n */\nexport function createRegisterComponents<T extends string>(\n loaders: Record<T, () => Promise<unknown>>,\n): (tags: readonly T[]) => Promise<void> {\n return async (tags) => {\n await Promise.all(tags.map((tag) => loaders[tag]()));\n };\n}\n"],"mappings":";;;;;;AAKA,SAAgB,yBACZ,SACqC;AACrC,QAAO,OAAO,SAAS;AACnB,QAAM,QAAQ,IAAI,KAAK,KAAK,QAAQ,QAAQ,MAAM,CAAC,CAAC"}
@@ -13,4 +13,4 @@ var createIconElement = (icon, options = {}) => {
13
13
  //#endregion
14
14
  export { renderIconHtml as n, createIconElement as t };
15
15
 
16
- //# sourceMappingURL=render-Dvc3MHQR.js.map
16
+ //# sourceMappingURL=render-BKGW1a68.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render-Dvc3MHQR.js","names":[],"sources":["../../src/icons/render.ts"],"sourcesContent":["import { iconToSvg, type PkIcon } from '@verbb/plugin-kit-icons';\n\nexport type RenderIconOptions = {\n title?: string;\n};\n\nexport const renderIconHtml = (\n icon: PkIcon,\n options: RenderIconOptions = {},\n): string => {\n return iconToSvg(icon, { title: options.title });\n};\n\nexport const createIconElement = (\n icon: PkIcon,\n options: RenderIconOptions = {},\n): SVGSVGElement => {\n const template = document.createElement('template');\n template.innerHTML = renderIconHtml(icon, options);\n\n const element = template.content.firstElementChild;\n\n if (!(element instanceof SVGSVGElement)) {\n throw new Error('Icon render did not produce an SVG element.');\n }\n\n return element;\n};\n"],"mappings":";;AAMA,IAAa,kBACT,MACA,UAA6B,EAAE,KACtB;AACT,QAAO,UAAU,MAAM,EAAE,OAAO,QAAQ,OAAO,CAAC;;AAGpD,IAAa,qBACT,MACA,UAA6B,EAAE,KACf;CAChB,MAAM,WAAW,SAAS,cAAc,WAAW;AACnD,UAAS,YAAY,eAAe,MAAM,QAAQ;CAElD,MAAM,UAAU,SAAS,QAAQ;AAEjC,KAAI,EAAE,mBAAmB,eACrB,OAAM,IAAI,MAAM,8CAA8C;AAGlE,QAAO"}
1
+ {"version":3,"file":"render-BKGW1a68.js","names":[],"sources":["../../src/icons/render.ts"],"sourcesContent":["import { iconToSvg, type PkIcon } from '@verbb/plugin-kit-icons';\n\nexport type RenderIconOptions = {\n title?: string;\n};\n\nexport const renderIconHtml = (\n icon: PkIcon,\n options: RenderIconOptions = {},\n): string => {\n return iconToSvg(icon, { title: options.title });\n};\n\nexport const createIconElement = (\n icon: PkIcon,\n options: RenderIconOptions = {},\n): SVGSVGElement => {\n const template = document.createElement('template');\n template.innerHTML = renderIconHtml(icon, options);\n\n const element = template.content.firstElementChild;\n\n if (!(element instanceof SVGSVGElement)) {\n throw new Error('Icon render did not produce an SVG element.');\n }\n\n return element;\n};\n"],"mappings":";;AAMA,IAAa,kBACT,MACA,UAA6B,EAAE,KACtB;AACT,QAAO,UAAU,MAAM,EAAE,OAAO,QAAQ,OAAO,CAAC;;AAGpD,IAAa,qBACT,MACA,UAA6B,EAAE,KACf;CAChB,MAAM,WAAW,SAAS,cAAc,WAAW;AACnD,UAAS,YAAY,eAAe,MAAM,QAAQ;CAElD,MAAM,UAAU,SAAS,QAAQ;AAEjC,KAAI,EAAE,mBAAmB,eACrB,OAAM,IAAI,MAAM,8CAA8C;AAGlE,QAAO"}
@@ -26,4 +26,4 @@ function RequiredValidator(options = {}) {
26
26
  //#endregion
27
27
  export { RequiredValidator as t };
28
28
 
29
- //# sourceMappingURL=required-validator-CEg8dvjS.js.map
29
+ //# sourceMappingURL=required-validator-CaRnQk1V.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"required-validator-CEg8dvjS.js","names":[],"sources":["../../src/validators/required-validator.ts"],"sourcesContent":["import type { PkFormAssociatedElement } from '../base/pk-form-associated-element.js';\nimport type { PkValidator } from './types.js';\n\nexport type RequiredValidatorOptions = {\n validationElement?: HTMLInputElement | HTMLSelectElement;\n validationProperty?: string;\n};\n\nexport function RequiredValidator(options: RequiredValidatorOptions = {}): PkValidator {\n let { validationElement, validationProperty } = options;\n\n if (!validationElement && typeof document !== 'undefined') {\n validationElement = Object.assign(document.createElement('input'), { required: true });\n }\n\n if (!validationProperty) {\n validationProperty = 'value';\n }\n\n const validator: PkValidator = {\n observedAttributes: ['required'],\n message: validationElement?.validationMessage ?? 'Please fill out this field.',\n checkValidity(element: PkFormAssociatedElement) {\n const result = {\n message: '',\n isValid: true,\n invalidKeys: [] as ReturnType<PkValidator['checkValidity']>['invalidKeys'],\n };\n\n if (!element.required) {\n return result;\n }\n\n const value = (element as unknown as Record<string, unknown>)[validationProperty!];\n const isEmpty = value === null || value === undefined || value === false || value === '';\n\n if (!isEmpty) {\n return result;\n }\n\n result.isValid = false;\n result.message = typeof validator.message === 'function'\n ? validator.message(element)\n : validator.message ?? '';\n result.invalidKeys.push('valueMissing');\n\n return result;\n },\n };\n\n return validator;\n}\n"],"mappings":";AAQA,SAAgB,kBAAkB,UAAoC,EAAE,EAAe;CACnF,IAAI,EAAE,mBAAmB,uBAAuB;AAEhD,KAAI,CAAC,qBAAqB,OAAO,aAAa,YAC1C,qBAAoB,OAAO,OAAO,SAAS,cAAc,QAAQ,EAAE,EAAE,UAAU,MAAM,CAAC;AAG1F,KAAI,CAAC,mBACD,sBAAqB;CAGzB,MAAM,YAAyB;EAC3B,oBAAoB,CAAC,WAAW;EAChC,SAAS,mBAAmB,qBAAqB;EACjD,cAAc,SAAkC;GAC5C,MAAM,SAAS;IACX,SAAS;IACT,SAAS;IACT,aAAa,EAAE;IAClB;AAED,OAAI,CAAC,QAAQ,SACT,QAAO;GAGX,MAAM,QAAS,QAA+C;AAG9D,OAAI,EAFY,UAAU,QAAQ,UAAU,KAAA,KAAa,UAAU,SAAS,UAAU,IAGlF,QAAO;AAGX,UAAO,UAAU;AACjB,UAAO,UAAU,OAAO,UAAU,YAAY,aACxC,UAAU,QAAQ,QAAQ,GAC1B,UAAU,WAAW;AAC3B,UAAO,YAAY,KAAK,eAAe;AAEvC,UAAO;;EAEd;AAED,QAAO"}
1
+ {"version":3,"file":"required-validator-CaRnQk1V.js","names":[],"sources":["../../src/validators/required-validator.ts"],"sourcesContent":["import type { PkFormAssociatedElement } from '../base/pk-form-associated-element.js';\nimport type { PkValidator } from './types.js';\n\nexport type RequiredValidatorOptions = {\n validationElement?: HTMLInputElement | HTMLSelectElement;\n validationProperty?: string;\n};\n\nexport function RequiredValidator(options: RequiredValidatorOptions = {}): PkValidator {\n let { validationElement, validationProperty } = options;\n\n if (!validationElement && typeof document !== 'undefined') {\n validationElement = Object.assign(document.createElement('input'), { required: true });\n }\n\n if (!validationProperty) {\n validationProperty = 'value';\n }\n\n const validator: PkValidator = {\n observedAttributes: ['required'],\n message: validationElement?.validationMessage ?? 'Please fill out this field.',\n checkValidity(element: PkFormAssociatedElement) {\n const result = {\n message: '',\n isValid: true,\n invalidKeys: [] as ReturnType<PkValidator['checkValidity']>['invalidKeys'],\n };\n\n if (!element.required) {\n return result;\n }\n\n const value = (element as unknown as Record<string, unknown>)[validationProperty!];\n const isEmpty = value === null || value === undefined || value === false || value === '';\n\n if (!isEmpty) {\n return result;\n }\n\n result.isValid = false;\n result.message = typeof validator.message === 'function'\n ? validator.message(element)\n : validator.message ?? '';\n result.invalidKeys.push('valueMissing');\n\n return result;\n },\n };\n\n return validator;\n}\n"],"mappings":";AAQA,SAAgB,kBAAkB,UAAoC,EAAE,EAAe;CACnF,IAAI,EAAE,mBAAmB,uBAAuB;AAEhD,KAAI,CAAC,qBAAqB,OAAO,aAAa,YAC1C,qBAAoB,OAAO,OAAO,SAAS,cAAc,QAAQ,EAAE,EAAE,UAAU,MAAM,CAAC;AAG1F,KAAI,CAAC,mBACD,sBAAqB;CAGzB,MAAM,YAAyB;EAC3B,oBAAoB,CAAC,WAAW;EAChC,SAAS,mBAAmB,qBAAqB;EACjD,cAAc,SAAkC;GAC5C,MAAM,SAAS;IACX,SAAS;IACT,SAAS;IACT,aAAa,EAAE;IAClB;AAED,OAAI,CAAC,QAAQ,SACT,QAAO;GAGX,MAAM,QAAS,QAA+C;AAG9D,OAAI,EAFY,UAAU,QAAQ,UAAU,KAAA,KAAa,UAAU,SAAS,UAAU,IAGlF,QAAO;AAGX,UAAO,UAAU;AACjB,UAAO,UAAU,OAAO,UAAU,YAAY,aACxC,UAAU,QAAQ,QAAQ,GAC1B,UAAU,WAAW;AAC3B,UAAO,YAAY,KAAK,eAAe;AAEvC,UAAO;;EAEd;AAED,QAAO"}
@@ -157,4 +157,4 @@ function scrollIntoView(element, container, direction = "vertical", behavior = "
157
157
  //#endregion
158
158
  export { unlockBodyScrolling as a, scrollIntoView as i, getScrollLockDepth as n, getOffset as o, lockBodyScrolling as r, forceClearScrollLock as t };
159
159
 
160
- //# sourceMappingURL=scroll-lock-Bbh3Sc5g.js.map
160
+ //# sourceMappingURL=scroll-lock-gTFrvIPu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-lock-Bbh3Sc5g.js","names":[],"sources":["../../src/a11y/offset.ts","../../src/a11y/scroll-lock.ts"],"sourcesContent":["/**\n * Element offset relative to a parent — adapted from internal/offset.ts.\n * Works around shadow-DOM offsetParent quirks in Chromium.\n */\nexport function getOffset(element: HTMLElement, parent: HTMLElement): { top: number; left: number } {\n return {\n top: Math.round(element.getBoundingClientRect().top - parent.getBoundingClientRect().top),\n left: Math.round(element.getBoundingClientRect().left - parent.getBoundingClientRect().left),\n };\n}\n","/**\n * Document scroll lock for overlays (dialog, etc.).\n *\n * Ref-counted so nested overlays unlock only when all close.\n *\n * Aligns with Craft / Garnish.Modal where it matters:\n * - Modal + shade are `position: fixed` (hosts, not the document).\n * - Document lock is `body { overflow: hidden }` (Craft’s `.no-scroll`) — **not**\n * `body { position: fixed }`, and **not** `overflow: hidden` on `html`.\n * Body-only overflow keeps Craft’s sticky `#global-sidebar` stuck at the current\n * scrollY; html overflow / body fixed both make sticky “let go” and the nav jumps.\n *\n * Craft’s class alone still lets the page scroll under the shade (wheel / scrollBy).\n * We add wheel / touch / page-key `preventDefault` outside locking overlay hosts so\n * user scrolling actually stops — without a `scroll` listener that rubber-bands the\n * position back (that felt gross).\n *\n * Also avoid: permanent/lock-time `scrollbar-gutter`, and `padding-right` compensation\n * (Craft fixed tip bars ignore body padding and jump).\n */\n\nimport { getOffset } from './offset.js';\n\nconst locks = new Set<HTMLElement>();\n\n/** Undo for the currently applied lock (only while locks.size > 0). */\nlet restoreLock: (() => void) | null = null;\n\nconst SCROLL_KEYS = new Set([\n ' ',\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'PageUp',\n 'PageDown',\n 'Home',\n 'End',\n]);\n\nfunction eventPathContainsLock(event: Event): boolean {\n for (const node of event.composedPath()) {\n if (node instanceof HTMLElement && locks.has(node)) {\n return true;\n }\n }\n return false;\n}\n\nfunction isEditableTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n if (target.isContentEditable) {\n return true;\n }\n const tag = target.tagName;\n return tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT';\n}\n\n/**\n * Craft-like body overflow + gesture block (no scroll-position pin).\n * Returns a restore function.\n */\nfunction applyScrollLock(): () => void {\n const body = document.body;\n const prevOverflow = body.style.overflow;\n\n // Same idea as Craft `.no-scroll { overflow: hidden !important }` — body only.\n body.style.setProperty('overflow', 'hidden', 'important');\n\n const onWheel = (event: WheelEvent) => {\n if (eventPathContainsLock(event)) {\n return;\n }\n event.preventDefault();\n };\n\n const onTouchMove = (event: TouchEvent) => {\n if (eventPathContainsLock(event)) {\n return;\n }\n event.preventDefault();\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (!SCROLL_KEYS.has(event.key)) {\n return;\n }\n if (eventPathContainsLock(event) || isEditableTarget(event.target)) {\n return;\n }\n event.preventDefault();\n };\n\n // Capture + non-passive so preventDefault actually stops scrolling.\n // Deliberately no `scroll` listener — resetting scrollY after the fact rubber-bands.\n window.addEventListener('wheel', onWheel, { passive: false, capture: true });\n window.addEventListener('touchmove', onTouchMove, { passive: false, capture: true });\n window.addEventListener('keydown', onKeyDown, { capture: true });\n\n return () => {\n window.removeEventListener('wheel', onWheel, { capture: true } as EventListenerOptions);\n window.removeEventListener('touchmove', onTouchMove, { capture: true } as EventListenerOptions);\n window.removeEventListener('keydown', onKeyDown, { capture: true } as EventListenerOptions);\n body.style.removeProperty('overflow');\n if (prevOverflow) {\n body.style.overflow = prevOverflow;\n }\n };\n}\n\nexport function lockBodyScrolling(lockingEl: HTMLElement): void {\n locks.add(lockingEl);\n\n if (locks.size === 1) {\n document.documentElement.classList.add('pk-scroll-lock');\n // Always 0 — we never pad the body (Craft fixed chrome must not shift).\n document.documentElement.style.setProperty('--pk-scroll-lock-size', '0px');\n restoreLock = applyScrollLock();\n }\n}\n\nexport function unlockBodyScrolling(lockingEl: HTMLElement): void {\n locks.delete(lockingEl);\n\n if (locks.size === 0) {\n restoreLock?.();\n restoreLock = null;\n document.documentElement.classList.remove('pk-scroll-lock');\n document.documentElement.style.removeProperty('--pk-scroll-lock-size');\n document.documentElement.style.removeProperty('--pk-scroll-lock-gutter');\n }\n}\n\n/** Dev/diagnostic — how many overlay hosts currently hold the scroll lock. */\nexport function getScrollLockDepth(): number {\n return locks.size;\n}\n\n/** Emergency clear when lock ref-count and html class drift out of sync. */\nexport function forceClearScrollLock(): void {\n locks.clear();\n restoreLock?.();\n restoreLock = null;\n document.documentElement.classList.remove('pk-scroll-lock');\n document.documentElement.style.removeProperty('--pk-scroll-lock-size');\n document.documentElement.style.removeProperty('--pk-scroll-lock-gutter');\n}\n\n/** Scroll an element into view of its scroll container if needed. */\nexport function scrollIntoView(\n element: HTMLElement,\n container: HTMLElement,\n direction: 'horizontal' | 'vertical' | 'both' = 'vertical',\n behavior: ScrollBehavior = 'smooth',\n): void {\n const offset = getOffset(element, container);\n const offsetTop = offset.top + container.scrollTop;\n const offsetLeft = offset.left + container.scrollLeft;\n const minX = container.scrollLeft;\n const maxX = container.scrollLeft + container.offsetWidth;\n const minY = container.scrollTop;\n const maxY = container.scrollTop + container.offsetHeight;\n\n if (direction === 'horizontal' || direction === 'both') {\n if (offsetLeft < minX) {\n container.scrollTo({ left: offsetLeft, behavior });\n } else if (offsetLeft + element.clientWidth > maxX) {\n container.scrollTo({\n left: offsetLeft - container.offsetWidth + element.clientWidth,\n behavior,\n });\n }\n }\n\n if (direction === 'vertical' || direction === 'both') {\n if (offsetTop < minY) {\n container.scrollTo({ top: offsetTop, behavior });\n } else if (offsetTop + element.clientHeight > maxY) {\n container.scrollTo({\n top: offsetTop - container.offsetHeight + element.clientHeight,\n behavior,\n });\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"scroll-lock-gTFrvIPu.js","names":[],"sources":["../../src/a11y/offset.ts","../../src/a11y/scroll-lock.ts"],"sourcesContent":["/**\n * Element offset relative to a parent — adapted from internal/offset.ts.\n * Works around shadow-DOM offsetParent quirks in Chromium.\n */\nexport function getOffset(element: HTMLElement, parent: HTMLElement): { top: number; left: number } {\n return {\n top: Math.round(element.getBoundingClientRect().top - parent.getBoundingClientRect().top),\n left: Math.round(element.getBoundingClientRect().left - parent.getBoundingClientRect().left),\n };\n}\n","/**\n * Document scroll lock for overlays (dialog, etc.).\n *\n * Ref-counted so nested overlays unlock only when all close.\n *\n * Aligns with Craft / Garnish.Modal where it matters:\n * - Modal + shade are `position: fixed` (hosts, not the document).\n * - Document lock is `body { overflow: hidden }` (Craft’s `.no-scroll`) — **not**\n * `body { position: fixed }`, and **not** `overflow: hidden` on `html`.\n * Body-only overflow keeps Craft’s sticky `#global-sidebar` stuck at the current\n * scrollY; html overflow / body fixed both make sticky “let go” and the nav jumps.\n *\n * Craft’s class alone still lets the page scroll under the shade (wheel / scrollBy).\n * We add wheel / touch / page-key `preventDefault` outside locking overlay hosts so\n * user scrolling actually stops — without a `scroll` listener that rubber-bands the\n * position back (that felt gross).\n *\n * Also avoid: permanent/lock-time `scrollbar-gutter`, and `padding-right` compensation\n * (Craft fixed tip bars ignore body padding and jump).\n */\n\nimport { getOffset } from './offset.js';\n\nconst locks = new Set<HTMLElement>();\n\n/** Undo for the currently applied lock (only while locks.size > 0). */\nlet restoreLock: (() => void) | null = null;\n\nconst SCROLL_KEYS = new Set([\n ' ',\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'PageUp',\n 'PageDown',\n 'Home',\n 'End',\n]);\n\nfunction eventPathContainsLock(event: Event): boolean {\n for (const node of event.composedPath()) {\n if (node instanceof HTMLElement && locks.has(node)) {\n return true;\n }\n }\n return false;\n}\n\nfunction isEditableTarget(target: EventTarget | null): boolean {\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n if (target.isContentEditable) {\n return true;\n }\n const tag = target.tagName;\n return tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT';\n}\n\n/**\n * Craft-like body overflow + gesture block (no scroll-position pin).\n * Returns a restore function.\n */\nfunction applyScrollLock(): () => void {\n const body = document.body;\n const prevOverflow = body.style.overflow;\n\n // Same idea as Craft `.no-scroll { overflow: hidden !important }` — body only.\n body.style.setProperty('overflow', 'hidden', 'important');\n\n const onWheel = (event: WheelEvent) => {\n if (eventPathContainsLock(event)) {\n return;\n }\n event.preventDefault();\n };\n\n const onTouchMove = (event: TouchEvent) => {\n if (eventPathContainsLock(event)) {\n return;\n }\n event.preventDefault();\n };\n\n const onKeyDown = (event: KeyboardEvent) => {\n if (!SCROLL_KEYS.has(event.key)) {\n return;\n }\n if (eventPathContainsLock(event) || isEditableTarget(event.target)) {\n return;\n }\n event.preventDefault();\n };\n\n // Capture + non-passive so preventDefault actually stops scrolling.\n // Deliberately no `scroll` listener — resetting scrollY after the fact rubber-bands.\n window.addEventListener('wheel', onWheel, { passive: false, capture: true });\n window.addEventListener('touchmove', onTouchMove, { passive: false, capture: true });\n window.addEventListener('keydown', onKeyDown, { capture: true });\n\n return () => {\n window.removeEventListener('wheel', onWheel, { capture: true } as EventListenerOptions);\n window.removeEventListener('touchmove', onTouchMove, { capture: true } as EventListenerOptions);\n window.removeEventListener('keydown', onKeyDown, { capture: true } as EventListenerOptions);\n body.style.removeProperty('overflow');\n if (prevOverflow) {\n body.style.overflow = prevOverflow;\n }\n };\n}\n\nexport function lockBodyScrolling(lockingEl: HTMLElement): void {\n locks.add(lockingEl);\n\n if (locks.size === 1) {\n document.documentElement.classList.add('pk-scroll-lock');\n // Always 0 — we never pad the body (Craft fixed chrome must not shift).\n document.documentElement.style.setProperty('--pk-scroll-lock-size', '0px');\n restoreLock = applyScrollLock();\n }\n}\n\nexport function unlockBodyScrolling(lockingEl: HTMLElement): void {\n locks.delete(lockingEl);\n\n if (locks.size === 0) {\n restoreLock?.();\n restoreLock = null;\n document.documentElement.classList.remove('pk-scroll-lock');\n document.documentElement.style.removeProperty('--pk-scroll-lock-size');\n document.documentElement.style.removeProperty('--pk-scroll-lock-gutter');\n }\n}\n\n/** Dev/diagnostic — how many overlay hosts currently hold the scroll lock. */\nexport function getScrollLockDepth(): number {\n return locks.size;\n}\n\n/** Emergency clear when lock ref-count and html class drift out of sync. */\nexport function forceClearScrollLock(): void {\n locks.clear();\n restoreLock?.();\n restoreLock = null;\n document.documentElement.classList.remove('pk-scroll-lock');\n document.documentElement.style.removeProperty('--pk-scroll-lock-size');\n document.documentElement.style.removeProperty('--pk-scroll-lock-gutter');\n}\n\n/** Scroll an element into view of its scroll container if needed. */\nexport function scrollIntoView(\n element: HTMLElement,\n container: HTMLElement,\n direction: 'horizontal' | 'vertical' | 'both' = 'vertical',\n behavior: ScrollBehavior = 'smooth',\n): void {\n const offset = getOffset(element, container);\n const offsetTop = offset.top + container.scrollTop;\n const offsetLeft = offset.left + container.scrollLeft;\n const minX = container.scrollLeft;\n const maxX = container.scrollLeft + container.offsetWidth;\n const minY = container.scrollTop;\n const maxY = container.scrollTop + container.offsetHeight;\n\n if (direction === 'horizontal' || direction === 'both') {\n if (offsetLeft < minX) {\n container.scrollTo({ left: offsetLeft, behavior });\n } else if (offsetLeft + element.clientWidth > maxX) {\n container.scrollTo({\n left: offsetLeft - container.offsetWidth + element.clientWidth,\n behavior,\n });\n }\n }\n\n if (direction === 'vertical' || direction === 'both') {\n if (offsetTop < minY) {\n container.scrollTo({ top: offsetTop, behavior });\n } else if (offsetTop + element.clientHeight > maxY) {\n container.scrollTo({\n top: offsetTop - container.offsetHeight + element.clientHeight,\n behavior,\n });\n }\n }\n}\n"],"mappings":"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"}
@@ -12,4 +12,4 @@ function resolveSpinnerVariant(buttonVariant = "default", override) {
12
12
  //#endregion
13
13
  export { resolveSpinnerVariant as n, getButtonSpinnerSize as t };
14
14
 
15
- //# sourceMappingURL=spinner-utils-CDfHypTv.js.map
15
+ //# sourceMappingURL=spinner-utils-Co_4X3ip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spinner-utils-CDfHypTv.js","names":[],"sources":["../../src/components/spinner/spinner-utils.ts"],"sourcesContent":["import type { PkSpinnerSize, PkSpinnerVariant } from './pk-spinner.js';\n\ntype ButtonSize = 'default' | 'xxs' | 'xs' | 'sm' | 'lg' | 'xl' | 'none';\ntype ButtonVariant =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'outline'\n | 'transparent'\n | 'link'\n | 'dashed'\n | 'none';\n\nexport function getButtonSpinnerSize(buttonSize: ButtonSize = 'default'): PkSpinnerSize {\n if (buttonSize === 'xxs' || buttonSize === 'xs') {\n return 'xxs';\n }\n\n if (buttonSize === 'lg' || buttonSize === 'xl') {\n return 'sm';\n }\n\n return 'xs';\n}\n\nexport function resolveSpinnerVariant(\n buttonVariant: ButtonVariant = 'default',\n override?: PkSpinnerVariant,\n): PkSpinnerVariant {\n if (override) {\n return override;\n }\n\n if (\n buttonVariant === 'primary'\n || buttonVariant === 'secondary'\n || buttonVariant === 'dashed'\n || buttonVariant === 'outline'\n || buttonVariant === 'transparent'\n ) {\n return buttonVariant;\n }\n\n return 'default';\n}\n"],"mappings":";AAaA,SAAgB,qBAAqB,aAAyB,WAA0B;AACpF,KAAI,eAAe,SAAS,eAAe,KACvC,QAAO;AAGX,KAAI,eAAe,QAAQ,eAAe,KACtC,QAAO;AAGX,QAAO;;AAGX,SAAgB,sBACZ,gBAA+B,WAC/B,UACgB;AAChB,KAAI,SACA,QAAO;AAGX,KACI,kBAAkB,aACf,kBAAkB,eAClB,kBAAkB,YAClB,kBAAkB,aAClB,kBAAkB,cAErB,QAAO;AAGX,QAAO"}
1
+ {"version":3,"file":"spinner-utils-Co_4X3ip.js","names":[],"sources":["../../src/components/spinner/spinner-utils.ts"],"sourcesContent":["import type { PkSpinnerSize, PkSpinnerVariant } from './pk-spinner.js';\n\ntype ButtonSize = 'default' | 'xxs' | 'xs' | 'sm' | 'lg' | 'xl' | 'none';\ntype ButtonVariant =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'outline'\n | 'transparent'\n | 'link'\n | 'dashed'\n | 'none';\n\nexport function getButtonSpinnerSize(buttonSize: ButtonSize = 'default'): PkSpinnerSize {\n if (buttonSize === 'xxs' || buttonSize === 'xs') {\n return 'xxs';\n }\n\n if (buttonSize === 'lg' || buttonSize === 'xl') {\n return 'sm';\n }\n\n return 'xs';\n}\n\nexport function resolveSpinnerVariant(\n buttonVariant: ButtonVariant = 'default',\n override?: PkSpinnerVariant,\n): PkSpinnerVariant {\n if (override) {\n return override;\n }\n\n if (\n buttonVariant === 'primary'\n || buttonVariant === 'secondary'\n || buttonVariant === 'dashed'\n || buttonVariant === 'outline'\n || buttonVariant === 'transparent'\n ) {\n return buttonVariant;\n }\n\n return 'default';\n}\n"],"mappings":";AAaA,SAAgB,qBAAqB,aAAyB,WAA0B;AACpF,KAAI,eAAe,SAAS,eAAe,KACvC,QAAO;AAGX,KAAI,eAAe,QAAQ,eAAe,KACtC,QAAO;AAGX,QAAO;;AAGX,SAAgB,sBACZ,gBAA+B,WAC/B,UACgB;AAChB,KAAI,SACA,QAAO;AAGX,KACI,kBAAkB,aACf,kBAAkB,eAClB,kBAAkB,YAClB,kBAAkB,aAClB,kBAAkB,cAErB,QAAO;AAGX,QAAO"}
@@ -4,4 +4,4 @@ var SUPPORTS_POPOVER = typeof globalThis.HTMLElement !== "undefined" && Object.p
4
4
  //#endregion
5
5
  export { SUPPORTS_POPOVER as t };
6
6
 
7
- //# sourceMappingURL=supports-popover-CUBsbHpS.js.map
7
+ //# sourceMappingURL=supports-popover-6lNVStLh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"supports-popover-CUBsbHpS.js","names":[],"sources":["../../src/utils/supports-popover.ts"],"sourcesContent":["/** Whether the host supports the Popover API (`popover` + `showPopover` / `hidePopover`). */\nexport const SUPPORTS_POPOVER = typeof globalThis.HTMLElement !== 'undefined'\n && Object.prototype.hasOwnProperty.call(globalThis.HTMLElement.prototype, 'popover');\n"],"mappings":";;AACA,IAAa,mBAAmB,OAAO,WAAW,gBAAgB,eAC3D,OAAO,UAAU,eAAe,KAAK,WAAW,YAAY,WAAW,UAAU"}
1
+ {"version":3,"file":"supports-popover-6lNVStLh.js","names":[],"sources":["../../src/utils/supports-popover.ts"],"sourcesContent":["/** Whether the host supports the Popover API (`popover` + `showPopover` / `hidePopover`). */\nexport const SUPPORTS_POPOVER = typeof globalThis.HTMLElement !== 'undefined'\n && Object.prototype.hasOwnProperty.call(globalThis.HTMLElement.prototype, 'popover');\n"],"mappings":";;AACA,IAAa,mBAAmB,OAAO,WAAW,gBAAgB,eAC3D,OAAO,UAAU,eAAe,KAAK,WAAW,YAAY,WAAW,UAAU"}
@@ -146,4 +146,4 @@ var syncListboxSeparators = (root) => {
146
146
  //#endregion
147
147
  export { isListboxTypeToSelectKey as a, handleListboxKeyDown as i, LISTBOX_NAVIGATION_KEYS as n, createTypeToSelectHandler as r, syncListboxSeparators as t };
148
148
 
149
- //# sourceMappingURL=sync-listbox-separators-B1-V0oJi.js.map
149
+ //# sourceMappingURL=sync-listbox-separators-CPFtrpNq.js.map