@verbb/plugin-kit-web 2.0.3 → 2.0.5

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 (192) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/chunks/{autoloader-DzOTQqe6.js → autoloader-DXK9MVuw.js} +2 -2
  3. package/dist/chunks/{autoloader-DzOTQqe6.js.map → autoloader-DXK9MVuw.js.map} +1 -1
  4. package/dist/chunks/{component-registry-CpZiIDh4.js → component-registry-BOlxFlou.js} +1 -1
  5. package/dist/chunks/{component-registry-CpZiIDh4.js.map → component-registry-BOlxFlou.js.map} +1 -1
  6. package/dist/chunks/decorate-W02hmVTt.js.map +1 -1
  7. package/dist/chunks/{pk-button-Cilu5WAT.js → pk-button-QpDDlRbG.js} +8 -3
  8. package/dist/chunks/pk-button-QpDDlRbG.js.map +1 -0
  9. package/dist/chunks/{pk-calendar-CcV-La-9.js → pk-calendar-TEFA09cI.js} +61 -6
  10. package/dist/chunks/pk-calendar-TEFA09cI.js.map +1 -0
  11. package/dist/chunks/{pk-checkbox-select-ZEJ6WIQn.js → pk-checkbox-select-9lqd9Rwz.js} +2 -1
  12. package/dist/chunks/{pk-checkbox-select-ZEJ6WIQn.js.map → pk-checkbox-select-9lqd9Rwz.js.map} +1 -1
  13. package/dist/chunks/{pk-color-input-D4L0DE5S.js → pk-color-input-CNnmHJJB.js} +10 -2
  14. package/dist/chunks/{pk-color-input-D4L0DE5S.js.map → pk-color-input-CNnmHJJB.js.map} +1 -1
  15. package/dist/chunks/{pk-combobox-Dd1ik0Ko.js → pk-combobox-DtkXaX67.js} +3 -2
  16. package/dist/chunks/pk-combobox-DtkXaX67.js.map +1 -0
  17. package/dist/chunks/{pk-copy-button-DPh5TOF9.js → pk-copy-button-C17MLLYS.js} +2 -1
  18. package/dist/chunks/{pk-copy-button-DPh5TOF9.js.map → pk-copy-button-C17MLLYS.js.map} +1 -1
  19. package/dist/chunks/{pk-date-picker-CkwU4DzD.js → pk-date-picker-x-qkpQWF.js} +28 -7
  20. package/dist/chunks/pk-date-picker-x-qkpQWF.js.map +1 -0
  21. package/dist/chunks/{pk-dropdown-item-BFyjtsL5.js → pk-dropdown-item-P3LLojCI.js} +16 -1
  22. package/dist/chunks/pk-dropdown-item-P3LLojCI.js.map +1 -0
  23. package/dist/chunks/{pk-dropdown-label-DfACId-K.js → pk-dropdown-label-ibVrU6-U.js} +10 -4
  24. package/dist/chunks/pk-dropdown-label-ibVrU6-U.js.map +1 -0
  25. package/dist/chunks/{pk-dropdown-menu-DWlxkDIs.js → pk-dropdown-menu-CsX95MCP.js} +2 -2
  26. package/dist/chunks/pk-dropdown-menu-CsX95MCP.js.map +1 -0
  27. package/dist/chunks/{pk-editable-table-pBkD6izs.js → pk-editable-table-DVqOEz3W.js} +14 -1
  28. package/dist/chunks/pk-editable-table-DVqOEz3W.js.map +1 -0
  29. package/dist/chunks/{pk-option-C3Zqmu3z.js → pk-option-C-cR-jOv.js} +11 -3
  30. package/dist/chunks/pk-option-C-cR-jOv.js.map +1 -0
  31. package/dist/chunks/{pk-popover-XZZdJ4WI.js → pk-popover-CVvwXMld.js} +2 -2
  32. package/dist/chunks/pk-popover-CVvwXMld.js.map +1 -0
  33. package/dist/chunks/{pk-select-B17rV6BR.js → pk-select-odSNU1tN.js} +3 -2
  34. package/dist/chunks/pk-select-odSNU1tN.js.map +1 -0
  35. package/dist/chunks/{pk-tab-CzV7pOdp.js → pk-tab-BdoPiYfT.js} +8 -2
  36. package/dist/chunks/pk-tab-BdoPiYfT.js.map +1 -0
  37. package/dist/chunks/{pk-time-picker-DbW_hMs2.js → pk-time-picker-DtX0LtID.js} +3 -2
  38. package/dist/chunks/{pk-time-picker-DbW_hMs2.js.map → pk-time-picker-DtX0LtID.js.map} +1 -1
  39. package/dist/chunks/{pk-tiptap-editor-umIuEaXh.js → pk-tiptap-editor-CdoutapZ.js} +10 -1
  40. package/dist/chunks/{pk-tiptap-editor-umIuEaXh.js.map → pk-tiptap-editor-CdoutapZ.js.map} +1 -1
  41. package/dist/chunks/pk-tooltip-fcUbVGli.js.map +1 -1
  42. package/dist/chunks/popup-pointer-DMnuZDQl.js +34 -0
  43. package/dist/chunks/popup-pointer-DMnuZDQl.js.map +1 -0
  44. package/dist/chunks/register-BYPBQHrq.js +143 -0
  45. package/dist/chunks/register-BYPBQHrq.js.map +1 -0
  46. package/dist/chunks/{register-components-DNw6EYNo.js → register-components-BG_6_v_T.js} +1 -1
  47. package/dist/chunks/{register-components-DNw6EYNo.js.map → register-components-BG_6_v_T.js.map} +1 -1
  48. package/dist/components/button/pk-button.js +1 -1
  49. package/dist/components/button/pk-button.styles.d.ts.map +1 -1
  50. package/dist/components/button.js +1 -1
  51. package/dist/components/calendar/pk-calendar.d.ts +5 -1
  52. package/dist/components/calendar/pk-calendar.d.ts.map +1 -1
  53. package/dist/components/calendar/pk-calendar.js +1 -1
  54. package/dist/components/calendar.js +1 -1
  55. package/dist/components/checkbox-select/pk-checkbox-select.js +1 -1
  56. package/dist/components/checkbox-select.js +1 -1
  57. package/dist/components/color-input/pk-color-input.d.ts +1 -0
  58. package/dist/components/color-input/pk-color-input.d.ts.map +1 -1
  59. package/dist/components/color-input/pk-color-input.js +1 -1
  60. package/dist/components/color-input.js +1 -1
  61. package/dist/components/combobox/pk-combobox.d.ts.map +1 -1
  62. package/dist/components/combobox/pk-combobox.js +1 -1
  63. package/dist/components/combobox.js +1 -1
  64. package/dist/components/copy-button/pk-copy-button.js +1 -1
  65. package/dist/components/copy-button.js +1 -1
  66. package/dist/components/date-picker/pk-date-picker.d.ts +9 -1
  67. package/dist/components/date-picker/pk-date-picker.d.ts.map +1 -1
  68. package/dist/components/date-picker/pk-date-picker.js +1 -1
  69. package/dist/components/date-picker.js +1 -1
  70. package/dist/components/dropdown-menu/dropdown-menu-size.styles.d.ts.map +1 -1
  71. package/dist/components/dropdown-menu/pk-dropdown-item.js +1 -1
  72. package/dist/components/dropdown-menu/pk-dropdown-item.styles.d.ts.map +1 -1
  73. package/dist/components/dropdown-menu/pk-dropdown-label.js +1 -1
  74. package/dist/components/dropdown-menu/pk-dropdown-label.styles.d.ts.map +1 -1
  75. package/dist/components/dropdown-menu/pk-dropdown-menu.d.ts.map +1 -1
  76. package/dist/components/dropdown-menu/pk-dropdown-menu.js +1 -1
  77. package/dist/components/dropdown-menu.js +3 -3
  78. package/dist/components/editable-table/pk-editable-table.d.ts +1 -1
  79. package/dist/components/editable-table/pk-editable-table.d.ts.map +1 -1
  80. package/dist/components/editable-table/pk-editable-table.js +1 -1
  81. package/dist/components/editable-table.js +1 -1
  82. package/dist/components/popover/pk-popover.d.ts.map +1 -1
  83. package/dist/components/popover/pk-popover.js +1 -1
  84. package/dist/components/popover.js +1 -1
  85. package/dist/components/select/pk-option.js +1 -1
  86. package/dist/components/select/pk-option.styles.d.ts.map +1 -1
  87. package/dist/components/select/pk-select.d.ts.map +1 -1
  88. package/dist/components/select/pk-select.js +1 -1
  89. package/dist/components/select.js +2 -2
  90. package/dist/components/tabs/pk-tab.js +1 -1
  91. package/dist/components/tabs/pk-tab.styles.d.ts.map +1 -1
  92. package/dist/components/tabs.js +1 -1
  93. package/dist/components/time-picker/pk-time-picker.js +1 -1
  94. package/dist/components/time-picker.js +1 -1
  95. package/dist/components/tiptap/pk-tiptap-editor.js +1 -1
  96. package/dist/components/tiptap-editor.js +1 -1
  97. package/dist/components/tooltip/pk-tooltip.d.ts.map +1 -1
  98. package/dist/index.js +21 -21
  99. package/dist/plugin-kit.js +2 -2
  100. package/dist/register-components.js +1 -1
  101. package/dist/register.js +20 -81
  102. package/dist/utils/date.d.ts +9 -0
  103. package/dist/utils/date.d.ts.map +1 -1
  104. package/dist/utils/popup-pointer.d.ts +3 -0
  105. package/dist/utils/popup-pointer.d.ts.map +1 -1
  106. package/dist-loader/chunks/{pk-button-BlSs4e6V.js → pk-button-CK5FZiwP.js} +9 -5
  107. package/dist-loader/chunks/{pk-calendar-RXCDDhLI.js → pk-calendar-CoJWxcxi.js} +63 -8
  108. package/dist-loader/chunks/{pk-checkbox-hJCj8In8.js → pk-checkbox-CoDX2G3J.js} +2 -2
  109. package/dist-loader/chunks/{pk-color-input-BfNtLznP.js → pk-color-input-B73zaGYj.js} +11 -3
  110. package/dist-loader/chunks/{pk-combobox-1PJBcIrV.js → pk-combobox-fXGaY4L0.js} +11 -10
  111. package/dist-loader/chunks/{pk-date-picker-D4vCtbw-.js → pk-date-picker-CE4TlRRZ.js} +36 -15
  112. package/dist-loader/chunks/{pk-dialog-D1RZjwQN.js → pk-dialog-CP1YT85H.js} +4 -4
  113. package/dist-loader/chunks/{pk-dropdown-item-BJIhQ0Mw.js → pk-dropdown-item-DkZRcPJ5.js} +20 -5
  114. package/dist-loader/chunks/{pk-dropdown-menu-I1s3TBiA.js → pk-dropdown-menu-CajQAobW.js} +6 -6
  115. package/dist-loader/chunks/{pk-field-BnKPT_Kk.js → pk-field-CUySYljn.js} +24 -12
  116. package/dist-loader/chunks/{pk-input-Oarjv7Vc.js → pk-input-CXE7_rTQ.js} +6 -6
  117. package/dist-loader/chunks/{pk-lightswitch-D-UrNM3y.js → pk-lightswitch-BHEOy7aK.js} +4 -4
  118. package/dist-loader/chunks/{pk-option-CCZebfif.js → pk-option-vh8UvSAI.js} +12 -4
  119. package/dist-loader/chunks/{pk-popup-BNRyCsVX.js → pk-popup-BYFbKaHH.js} +2 -2
  120. package/dist-loader/chunks/{pk-select-BcbtjIoP.js → pk-select-CbmPJCx8.js} +11 -10
  121. package/dist-loader/chunks/{pk-textarea-CC6WXpIu.js → pk-textarea-Ch8JpP83.js} +4 -4
  122. package/dist-loader/chunks/{pk-time-picker-BtGXo-KJ.js → pk-time-picker-DZljwJn9.js} +4 -3
  123. package/dist-loader/chunks/{pk-tooltip-JJRxVXYD.js → pk-tooltip-DHiCn33o.js} +3 -3
  124. package/dist-loader/chunks/popup-pointer-BTS3Y6LE.js +32 -0
  125. package/dist-loader/chunks/{render-DApFfV9S.js → render-BCU9WDSk.js} +1 -1
  126. package/dist-loader/chunks/{icons-B1i-oRoD.js → svg-BCGsRUz7.js} +34 -1
  127. package/dist-loader/chunks/{tiptap-Db7MTUH1.js → tiptap-_LAjdgeV.js} +1 -1
  128. package/dist-loader/chunks/{tiptap.styles-DAH_90Fi.js → tiptap.styles-CDjt6Iz4.js} +1 -1
  129. package/dist-loader/components/button/button.js +1 -1
  130. package/dist-loader/components/button-group/button-group-text.js +1 -1
  131. package/dist-loader/components/calendar/calendar.js +1 -1
  132. package/dist-loader/components/checkbox/checkbox.js +1 -1
  133. package/dist-loader/components/checkbox-select/checkbox-select.js +1 -0
  134. package/dist-loader/components/code-editor/code-editor.js +7 -7
  135. package/dist-loader/components/color-input/color-input.js +1 -1
  136. package/dist-loader/components/combobox/combobox.js +1 -1
  137. package/dist-loader/components/copy-button/copy-button.js +3 -2
  138. package/dist-loader/components/date-picker/date-picker.js +1 -1
  139. package/dist-loader/components/dialog/dialog.js +1 -1
  140. package/dist-loader/components/dropdown-menu/dropdown-item.js +1 -1
  141. package/dist-loader/components/dropdown-menu/dropdown-label.js +9 -3
  142. package/dist-loader/components/dropdown-menu/dropdown-menu.js +1 -1
  143. package/dist-loader/components/editable-table/editable-table.js +16 -3
  144. package/dist-loader/components/field/field.js +1 -1
  145. package/dist-loader/components/icon/icon.js +43 -2
  146. package/dist-loader/components/input/input.js +1 -1
  147. package/dist-loader/components/input-group/input-group.js +1 -1
  148. package/dist-loader/components/lightswitch/lightswitch.js +1 -1
  149. package/dist-loader/components/popover/popover.js +6 -6
  150. package/dist-loader/components/popup/popup.js +1 -1
  151. package/dist-loader/components/radio-group/radio-group.js +3 -3
  152. package/dist-loader/components/select/option.js +1 -1
  153. package/dist-loader/components/select/select.js +1 -1
  154. package/dist-loader/components/tabs/tab.js +7 -1
  155. package/dist-loader/components/textarea/textarea.js +1 -1
  156. package/dist-loader/components/time-picker/time-picker.js +1 -1
  157. package/dist-loader/components/tiptap/tiptap-content.js +2 -2
  158. package/dist-loader/components/tiptap/tiptap-editor.js +13 -5
  159. package/dist-loader/components/tiptap/tiptap-input.js +3 -3
  160. package/dist-loader/components/toggle/toggle.js +1 -1
  161. package/dist-loader/components/tooltip/tooltip.js +1 -1
  162. package/package.json +8 -7
  163. package/dist/chunks/pk-button-Cilu5WAT.js.map +0 -1
  164. package/dist/chunks/pk-calendar-CcV-La-9.js.map +0 -1
  165. package/dist/chunks/pk-combobox-Dd1ik0Ko.js.map +0 -1
  166. package/dist/chunks/pk-date-picker-CkwU4DzD.js.map +0 -1
  167. package/dist/chunks/pk-dropdown-item-BFyjtsL5.js.map +0 -1
  168. package/dist/chunks/pk-dropdown-label-DfACId-K.js.map +0 -1
  169. package/dist/chunks/pk-dropdown-menu-DWlxkDIs.js.map +0 -1
  170. package/dist/chunks/pk-editable-table-pBkD6izs.js.map +0 -1
  171. package/dist/chunks/pk-option-C3Zqmu3z.js.map +0 -1
  172. package/dist/chunks/pk-popover-XZZdJ4WI.js.map +0 -1
  173. package/dist/chunks/pk-select-B17rV6BR.js.map +0 -1
  174. package/dist/chunks/pk-tab-CzV7pOdp.js.map +0 -1
  175. package/dist/chunks/popup-pointer-C8lypj8V.js +0 -21
  176. package/dist/chunks/popup-pointer-C8lypj8V.js.map +0 -1
  177. package/dist/register.js.map +0 -1
  178. package/dist-loader/chunks/popup-pointer-BC4n_sNb.js +0 -19
  179. package/dist-loader/chunks/svg-Boar0Kf1.js +0 -34
  180. /package/dist-loader/chunks/{animate-with-class-DT0jwaR_.js → animate-with-class-B2hHgK5M.js} +0 -0
  181. /package/dist-loader/chunks/{button-group-item.styles-Dwakbyx5.js → button-group-item.styles-BNc-ksl1.js} +0 -0
  182. /package/dist-loader/chunks/{codemirror-CSgOT0QM.js → codemirror-CHXb-wYU.js} +0 -0
  183. /package/dist-loader/chunks/{field-labels-D3lKQ2nq.js → field-labels-Vo3wHq49.js} +0 -0
  184. /package/dist-loader/chunks/{floating-ui-87vslRWW.js → floating-ui-BTBNFWAR.js} +0 -0
  185. /package/dist-loader/chunks/{has-slot-BGJeJdHr.js → has-slot-BZDcCpf9.js} +0 -0
  186. /package/dist-loader/chunks/{mirror-validator-C5XrXPaq.js → mirror-validator-DEz3BsbN.js} +0 -0
  187. /package/dist-loader/chunks/{overlay-lifecycle-C3tSQ3UR.js → overlay-lifecycle-BG4QMRLw.js} +0 -0
  188. /package/dist-loader/chunks/{pk-clear-BMZUzwDt.js → pk-clear-BRS8vkV-.js} +0 -0
  189. /package/dist-loader/chunks/{popup-content-animation.styles-S6CK-zPp.js → popup-content-animation.styles-C9ffC35f.js} +0 -0
  190. /package/dist-loader/chunks/{popup-placement-animation-WlEXnS85.js → popup-placement-animation-BPjq650B.js} +0 -0
  191. /package/dist-loader/chunks/{required-validator-0XwZtX9k.js → required-validator-DXqqPVeW.js} +0 -0
  192. /package/dist-loader/chunks/{sync-listbox-separators-Bcja51HC.js → sync-listbox-separators-CT3oGzTf.js} +0 -0
@@ -1,7 +1,8 @@
1
1
  import { c as r, l as n, m as i, o, p as b, u as t } from "../../chunks/lit-Dnn7gEi2.js";
2
2
  import { c as __decorate, l as PkElement } from "../../chunks/pk-base-BlxAYXJD.js";
3
- import { p as check } from "../../chunks/icons-B1i-oRoD.js";
4
- import { n as renderIconHtml } from "../../chunks/render-DApFfV9S.js";
3
+ import { m as check } from "../../chunks/svg-BCGsRUz7.js";
4
+ import "../../chunks/pk-button-CK5FZiwP.js";
5
+ import { n as renderIconHtml } from "../../chunks/render-BCU9WDSk.js";
5
6
  //#region src/events/pk-copy.ts
6
7
  /** Emitted when copy-button successfully copies text. */
7
8
  var PkCopyEvent = class extends Event {
@@ -1,2 +1,2 @@
1
- import { t as PkDatePicker } from "../../chunks/pk-date-picker-D4vCtbw-.js";
1
+ import { t as PkDatePicker } from "../../chunks/pk-date-picker-CE4TlRRZ.js";
2
2
  export { PkDatePicker };
@@ -1,2 +1,2 @@
1
- import { t as PkDialog } from "../../chunks/pk-dialog-D1RZjwQN.js";
1
+ import { t as PkDialog } from "../../chunks/pk-dialog-CP1YT85H.js";
2
2
  export { PkDialog };
@@ -1,2 +1,2 @@
1
- import { t as PkDropdownItem } from "../../chunks/pk-dropdown-item-BJIhQ0Mw.js";
1
+ import { t as PkDropdownItem } from "../../chunks/pk-dropdown-item-DkZRcPJ5.js";
2
2
  export { PkDropdownItem };
@@ -5,6 +5,13 @@ var pkDropdownLabelStyles = i`
5
5
  @layer pk-component {
6
6
  :host {
7
7
  display: block;
8
+ /*
9
+ * Slotted label copy inherits through the flat tree from this host
10
+ * when page metrics would otherwise leak via font:inherit chains.
11
+ */
12
+ font-size: var(--pk-dropdown-label-font-size, 13px);
13
+ line-height: 1.3;
14
+ color: var(--pk-color-slate-700, rgba(96, 125, 159, 0.7));
8
15
  }
9
16
 
10
17
  /* Match v1 DropdownMenuLabel — text-slate-700, regular weight (not medium). */
@@ -13,10 +20,9 @@ var pkDropdownLabelStyles = i`
13
20
  padding-block-start: 6px;
14
21
  padding-block-end: 4px;
15
22
  padding-inline: var(--pk-dropdown-label-padding-inline, 12px);
16
- color: var(--pk-color-slate-700, rgba(96, 125, 159, 0.7));
17
- font-size: var(--pk-dropdown-label-font-size, 13px);
23
+ color: inherit;
24
+ font: inherit;
18
25
  font-weight: 400;
19
- line-height: 1.3;
20
26
  user-select: none;
21
27
  pointer-events: none;
22
28
  }
@@ -1,2 +1,2 @@
1
- import { t as PkDropdownMenu } from "../../chunks/pk-dropdown-menu-I1s3TBiA.js";
1
+ import { t as PkDropdownMenu } from "../../chunks/pk-dropdown-menu-CajQAobW.js";
2
2
  export { PkDropdownMenu };
@@ -1,9 +1,22 @@
1
1
  import { c as r, f as A, i as e, l as n, m as i, o, p as b, t as c, u as t } from "../../chunks/lit-Dnn7gEi2.js";
2
2
  import { c as __decorate, i as PkFormAssociatedElement } from "../../chunks/pk-base-BlxAYXJD.js";
3
- import { R as plus, a as arrowDown, c as arrowUp, q as xmark, x as gear, y as ellipsis } from "../../chunks/icons-B1i-oRoD.js";
3
+ import { J as xmark, S as gear, b as ellipsis, l as arrowUp, o as arrowDown, z as plus } from "../../chunks/svg-BCGsRUz7.js";
4
4
  import { t as getIcon } from "../../chunks/registry-CmL0rH9r.js";
5
- import { t as RequiredValidator } from "../../chunks/required-validator-0XwZtX9k.js";
6
- import { n as renderIconHtml } from "../../chunks/render-DApFfV9S.js";
5
+ import "../../chunks/pk-button-CK5FZiwP.js";
6
+ import { t as RequiredValidator } from "../../chunks/required-validator-DXqqPVeW.js";
7
+ import "../../chunks/pk-checkbox-CoDX2G3J.js";
8
+ import "../../chunks/pk-color-input-B73zaGYj.js";
9
+ import "../../chunks/pk-input-CXE7_rTQ.js";
10
+ import "../../chunks/pk-textarea-Ch8JpP83.js";
11
+ import { n as renderIconHtml } from "../../chunks/render-BCU9WDSk.js";
12
+ import "../../chunks/pk-dropdown-item-DkZRcPJ5.js";
13
+ import "../../chunks/pk-dropdown-menu-CajQAobW.js";
14
+ import "../../chunks/pk-lightswitch-BHEOy7aK.js";
15
+ import "../../chunks/pk-option-vh8UvSAI.js";
16
+ import "../../chunks/pk-select-CbmPJCx8.js";
17
+ import "../../chunks/pk-date-picker-CE4TlRRZ.js";
18
+ import "../../chunks/pk-combobox-fXGaY4L0.js";
19
+ import "../../chunks/pk-time-picker-DZljwJn9.js";
7
20
  //#region src/components/editable-table/editable-table-dnd.ts
8
21
  /**
9
22
  * Table-native pointer drag for `<pk-editable-table>` rows.
@@ -1,2 +1,2 @@
1
- import { t as PkField } from "../../chunks/pk-field-BnKPT_Kk.js";
1
+ import { t as PkField } from "../../chunks/pk-field-CUySYljn.js";
2
2
  export { PkField };
@@ -1,5 +1,7 @@
1
- import { A as icons } from "../../chunks/icons-B1i-oRoD.js";
2
- import { n as normalizeIconName, r as registerIcons } from "../../chunks/registry-CmL0rH9r.js";
1
+ import { a as o, f as A, l as n, m as i, p as b, u as t } from "../../chunks/lit-Dnn7gEi2.js";
2
+ import { c as __decorate, l as PkElement } from "../../chunks/pk-base-BlxAYXJD.js";
3
+ import { j as icons, t as iconToSvg } from "../../chunks/svg-BCGsRUz7.js";
4
+ import { n as normalizeIconName, r as registerIcons, t as getIcon } from "../../chunks/registry-CmL0rH9r.js";
3
5
  //#region ../plugin-kit-icons/dist/all.js
4
6
  /**
5
7
  * Side-effect entry: register every curated icon for `<pk-icon icon="…">` lookup.
@@ -15,3 +17,42 @@ var entries = {};
15
17
  for (const [name, icon] of Object.entries(icons)) entries[normalizeIconName(name)] = icon;
16
18
  registerIcons(entries);
17
19
  //#endregion
20
+ //#region src/components/icon/pk-icon.ts
21
+ var PkIcon = class PkIcon extends PkElement {
22
+ constructor(..._args) {
23
+ super(..._args);
24
+ this.icon = "";
25
+ this.name = "";
26
+ }
27
+ static {
28
+ this.styles = i`
29
+ :host {
30
+ display: inline-flex;
31
+ align-items: center;
32
+ justify-content: center;
33
+ flex: none;
34
+ width: 1em;
35
+ height: 1em;
36
+ line-height: 1;
37
+ vertical-align: -0.125em;
38
+ }
39
+
40
+ svg {
41
+ display: block;
42
+ width: 100%;
43
+ height: 100%;
44
+ fill: currentColor;
45
+ }
46
+ `;
47
+ }
48
+ render() {
49
+ const icon = getIcon(this.icon || this.name);
50
+ if (!icon) return A;
51
+ return b`${o(iconToSvg(icon, { title: this.label }))}`;
52
+ }
53
+ };
54
+ __decorate([n()], PkIcon.prototype, "icon", void 0);
55
+ __decorate([n()], PkIcon.prototype, "name", void 0);
56
+ __decorate([n()], PkIcon.prototype, "label", void 0);
57
+ PkIcon = __decorate([t("pk-icon")], PkIcon);
58
+ //#endregion
@@ -1,2 +1,2 @@
1
- import { t as PkInput } from "../../chunks/pk-input-Oarjv7Vc.js";
1
+ import { t as PkInput } from "../../chunks/pk-input-CXE7_rTQ.js";
2
2
  export { PkInput };
@@ -1,6 +1,6 @@
1
1
  import { m as i, p as b, s as e, u as t } from "../../chunks/lit-Dnn7gEi2.js";
2
2
  import { a as HostAriaMirror, c as __decorate, l as PkElement } from "../../chunks/pk-base-BlxAYXJD.js";
3
- import { n as buttonGroupCornerRadiusStyles, r as buttonGroupCornerRoleStyles, t as buttonGroupBorderJoinStyles } from "../../chunks/button-group-item.styles-Dwakbyx5.js";
3
+ import { n as buttonGroupCornerRadiusStyles, r as buttonGroupCornerRoleStyles, t as buttonGroupBorderJoinStyles } from "../../chunks/button-group-item.styles-BNc-ksl1.js";
4
4
  //#region src/components/input-group/pk-input-group.styles.ts
5
5
  var pkInputGroupStyles = [
6
6
  buttonGroupCornerRoleStyles(),
@@ -1,2 +1,2 @@
1
- import { t as PkLightswitch } from "../../chunks/pk-lightswitch-D-UrNM3y.js";
1
+ import { t as PkLightswitch } from "../../chunks/pk-lightswitch-BHEOy7aK.js";
2
2
  export { PkLightswitch };
@@ -1,12 +1,12 @@
1
1
  import { d as registerDismissible, f as unregisterDismissible, n as uniqueId, u as isTopDismissible } from "../../chunks/pk-a11y-Cx5RZvhu.js";
2
2
  import { c as r, f as A, i as e, l as n, m as i, p as b, s as e$1, u as t } from "../../chunks/lit-Dnn7gEi2.js";
3
3
  import { c as __decorate, l as PkElement } from "../../chunks/pk-base-BlxAYXJD.js";
4
- import { r as buttonGroupCornerRoleStyles } from "../../chunks/button-group-item.styles-Dwakbyx5.js";
5
- import { i as PkShowEvent, n as PkAfterShowEvent, r as PkHideEvent, t as PkAfterHideEvent } from "../../chunks/overlay-lifecycle-C3tSQ3UR.js";
6
- import { i as waitForPopupReposition, r as syncPopupPlacementAnimation } from "../../chunks/popup-placement-animation-WlEXnS85.js";
7
- import { t as popupContentAnimationStyles } from "../../chunks/popup-content-animation.styles-S6CK-zPp.js";
8
- import { n as resolveElementById } from "../../chunks/pk-popup-BNRyCsVX.js";
9
- import { n as isPointerInsideOverlay } from "../../chunks/popup-pointer-BC4n_sNb.js";
4
+ import { r as buttonGroupCornerRoleStyles } from "../../chunks/button-group-item.styles-BNc-ksl1.js";
5
+ import { i as PkShowEvent, n as PkAfterShowEvent, r as PkHideEvent, t as PkAfterHideEvent } from "../../chunks/overlay-lifecycle-BG4QMRLw.js";
6
+ import { i as waitForPopupReposition, r as syncPopupPlacementAnimation } from "../../chunks/popup-placement-animation-BPjq650B.js";
7
+ import { t as popupContentAnimationStyles } from "../../chunks/popup-content-animation.styles-C9ffC35f.js";
8
+ import { n as resolveElementById } from "../../chunks/pk-popup-BYFbKaHH.js";
9
+ import { n as isPointerInsideOverlay } from "../../chunks/popup-pointer-BTS3Y6LE.js";
10
10
  //#region src/components/popover/pk-popover.styles.ts
11
11
  var pkPopoverStyles = [
12
12
  buttonGroupCornerRoleStyles(),
@@ -1,2 +1,2 @@
1
- import { t as PkPopup } from "../../chunks/pk-popup-BNRyCsVX.js";
1
+ import { t as PkPopup } from "../../chunks/pk-popup-BYFbKaHH.js";
2
2
  export { PkPopup };
@@ -1,8 +1,8 @@
1
1
  import { c as r, f as A, i as e, l as n, m as i, p as b, s as e$1, u as t } from "../../chunks/lit-Dnn7gEi2.js";
2
2
  import { c as __decorate, i as PkFormAssociatedElement, n as formControlStyles } from "../../chunks/pk-base-BlxAYXJD.js";
3
- import { t as RequiredValidator } from "../../chunks/required-validator-0XwZtX9k.js";
4
- import { t as HasSlotController } from "../../chunks/has-slot-BGJeJdHr.js";
5
- import { n as readLegacyInstructions, t as hasInstructionContent } from "../../chunks/field-labels-D3lKQ2nq.js";
3
+ import { t as RequiredValidator } from "../../chunks/required-validator-DXqqPVeW.js";
4
+ import { t as HasSlotController } from "../../chunks/has-slot-BZDcCpf9.js";
5
+ import { n as readLegacyInstructions, t as hasInstructionContent } from "../../chunks/field-labels-Vo3wHq49.js";
6
6
  //#region src/components/radio-group/pk-radio-group.styles.ts
7
7
  var pkRadioGroupStyles = i`
8
8
  @layer pk-component {
@@ -1,2 +1,2 @@
1
- import { t as PkOption } from "../../chunks/pk-option-CCZebfif.js";
1
+ import { t as PkOption } from "../../chunks/pk-option-vh8UvSAI.js";
2
2
  export { PkOption };
@@ -1,2 +1,2 @@
1
- import { t as PkSelect } from "../../chunks/pk-select-BcbtjIoP.js";
1
+ import { t as PkSelect } from "../../chunks/pk-select-CbmPJCx8.js";
2
2
  export { PkSelect };
@@ -87,6 +87,12 @@ var pkTabStyles = i`
87
87
  height: auto;
88
88
  min-height: auto;
89
89
  align-items: stretch;
90
+ /* Pin type metrics for slotted labels — vars cascade from pk-tabs. */
91
+ font-family: var(--pk-font-family);
92
+ font-size: var(--pk-tabs-trigger-font-size, 13px);
93
+ font-weight: var(--pk-tabs-trigger-font-weight, 400);
94
+ line-height: var(--pk-tabs-trigger-line-height, 1.4);
95
+ color: var(--pk-tabs-trigger-color, inherit);
90
96
  }
91
97
 
92
98
  .trigger {
@@ -103,7 +109,7 @@ var pkTabStyles = i`
103
109
  border-top: var(--pk-tabs-trigger-border-top, 0 solid transparent);
104
110
  border-radius: var(--pk-tabs-trigger-radius, var(--pk-radius-sm));
105
111
  background: transparent;
106
- color: var(--pk-tabs-trigger-color, inherit);
112
+ color: inherit;
107
113
  font: inherit;
108
114
  font-family: var(--pk-font-family);
109
115
  font-size: var(--pk-tabs-trigger-font-size, 13px);
@@ -1,2 +1,2 @@
1
- import { t as PkTextarea } from "../../chunks/pk-textarea-CC6WXpIu.js";
1
+ import { t as PkTextarea } from "../../chunks/pk-textarea-Ch8JpP83.js";
2
2
  export { PkTextarea };
@@ -1,2 +1,2 @@
1
- import { t as PkTimePicker } from "../../chunks/pk-time-picker-BtGXo-KJ.js";
1
+ import { t as PkTimePicker } from "../../chunks/pk-time-picker-DZljwJn9.js";
2
2
  export { PkTimePicker };
@@ -1,7 +1,7 @@
1
1
  import { l as n, m as i, p as b, s as e, u as t } from "../../chunks/lit-Dnn7gEi2.js";
2
2
  import { c as __decorate, l as PkElement } from "../../chunks/pk-base-BlxAYXJD.js";
3
- import { k as Editor } from "../../chunks/tiptap-Db7MTUH1.js";
4
- import { A as createTiptapExtensions, i as createVariableTagDomNodeView, k as valueToContent, t as tiptapContentProseMirrorStyles } from "../../chunks/tiptap.styles-DAH_90Fi.js";
3
+ import { k as Editor } from "../../chunks/tiptap-_LAjdgeV.js";
4
+ import { A as createTiptapExtensions, i as createVariableTagDomNodeView, k as valueToContent, t as tiptapContentProseMirrorStyles } from "../../chunks/tiptap.styles-CDjt6Iz4.js";
5
5
  //#region src/components/tiptap/pk-tiptap-content.styles.ts
6
6
  var pkTiptapContentStyles = i`
7
7
  @layer pk-component {
@@ -1,12 +1,20 @@
1
1
  import { n as uniqueId } from "../../chunks/pk-a11y-Cx5RZvhu.js";
2
2
  import { a as o, c as r, f as A, l as n, m as i, p as b, s as e, u as t } from "../../chunks/lit-Dnn7gEi2.js";
3
3
  import { c as __decorate, i as PkFormAssociatedElement, n as formControlStyles } from "../../chunks/pk-base-BlxAYXJD.js";
4
- import { B as strikethrough, C as h2, D as h6, E as h5, F as listUl, G as triangleExclamation, H as superscript, I as minus, K as underline, L as paragraph, N as link, O as heading, P as listOl, S as h1, T as h4, U as table, V as subscript, W as textSlash, b as fileDashedLine, d as bracketsCurly, i as alignRight, j as italic, k as highlighter, m as chevronDown, n as alignJustify, o as arrowRotateLeft, r as alignLeft, s as arrowRotateRight, t as alignCenter, u as bold, v as code, w as h3, z as quoteRight } from "../../chunks/icons-B1i-oRoD.js";
5
- import { t as MirrorValidator } from "../../chunks/mirror-validator-C5XrXPaq.js";
6
- import { M as posToDOMRect, j as getMarkRange, k as Editor } from "../../chunks/tiptap-Db7MTUH1.js";
7
- import { A as createTiptapExtensions, D as getFatalTiptapContentError, O as normalizeContentArray, S as openCraftElementLinkSelector, _ as getLinkOpenInNewTab, a as getToolbarGroupDefaultIcon, b as getCraftLinkOptions, c as isFormattingToolbarPreset, d as parseToolbarConfig, f as runToolbarButton, g as getLinkEditState, h as applyLinkToEditor, i as createVariableTagDomNodeView, k as valueToContent, l as isHeadingsOnlyToolbarPreset, m as isTiptapButtonActive, o as getToolbarGroupMenuItems, p as toolbarIncludesButton, r as tiptapProseMirrorStyles, s as getToolbarGroupTriggerState, u as isToolbarButtonActive, v as getSelectedText, x as getLinkOptionsElementSiteId, y as unsetLinkFromEditor } from "../../chunks/tiptap.styles-DAH_90Fi.js";
8
- import { n as renderIconHtml } from "../../chunks/render-DApFfV9S.js";
4
+ import { A as highlighter, B as quoteRight, C as h1, D as h5, E as h4, F as listOl, G as textSlash, H as subscript, I as listUl, K as triangleExclamation, L as minus, M as italic, O as h6, P as link, R as paragraph, T as h3, U as superscript, V as strikethrough, W as table, a as alignRight, c as arrowRotateRight, d as bold, f as bracketsCurly, h as chevronDown, i as alignLeft, k as heading, n as alignCenter, q as underline, r as alignJustify, s as arrowRotateLeft, w as h2, x as fileDashedLine, y as code } from "../../chunks/svg-BCGsRUz7.js";
5
+ import "../../chunks/pk-button-CK5FZiwP.js";
6
+ import { t as MirrorValidator } from "../../chunks/mirror-validator-DEz3BsbN.js";
7
+ import "../../chunks/pk-checkbox-CoDX2G3J.js";
8
+ import "../../chunks/pk-input-CXE7_rTQ.js";
9
+ import { M as posToDOMRect, j as getMarkRange, k as Editor } from "../../chunks/tiptap-_LAjdgeV.js";
10
+ import { A as createTiptapExtensions, D as getFatalTiptapContentError, O as normalizeContentArray, S as openCraftElementLinkSelector, _ as getLinkOpenInNewTab, a as getToolbarGroupDefaultIcon, b as getCraftLinkOptions, c as isFormattingToolbarPreset, d as parseToolbarConfig, f as runToolbarButton, g as getLinkEditState, h as applyLinkToEditor, i as createVariableTagDomNodeView, k as valueToContent, l as isHeadingsOnlyToolbarPreset, m as isTiptapButtonActive, o as getToolbarGroupMenuItems, p as toolbarIncludesButton, r as tiptapProseMirrorStyles, s as getToolbarGroupTriggerState, u as isToolbarButtonActive, v as getSelectedText, x as getLinkOptionsElementSiteId, y as unsetLinkFromEditor } from "../../chunks/tiptap.styles-CDjt6Iz4.js";
11
+ import { n as renderIconHtml } from "../../chunks/render-BCU9WDSk.js";
12
+ import "../../chunks/pk-field-CUySYljn.js";
13
+ import "../../chunks/pk-dialog-CP1YT85H.js";
14
+ import "../../chunks/pk-dropdown-item-DkZRcPJ5.js";
15
+ import "../../chunks/pk-dropdown-menu-CajQAobW.js";
9
16
  import "../dropdown-menu/dropdown-separator.js";
17
+ import "../../chunks/pk-tooltip-DHiCn33o.js";
10
18
  //#region src/components/tiptap/tiptap-editor-host.ts
11
19
  function serializeTiptapDocumentContent(content) {
12
20
  return JSON.stringify(normalizeContentArray(content));
@@ -1,8 +1,8 @@
1
1
  import { c as r, l as n, m as i, p as b, s as e, u as t } from "../../chunks/lit-Dnn7gEi2.js";
2
2
  import { c as __decorate, i as PkFormAssociatedElement, n as formControlStyles } from "../../chunks/pk-base-BlxAYXJD.js";
3
- import { t as MirrorValidator } from "../../chunks/mirror-validator-C5XrXPaq.js";
4
- import { k as Editor } from "../../chunks/tiptap-Db7MTUH1.js";
5
- import { C as contentToValue, E as valueToContent, T as flattenVariableOptions, i as createVariableTagDomNodeView, j as createTiptapInputExtensions, n as tiptapInputProseMirrorStyles, w as dedupeVariableOptions } from "../../chunks/tiptap.styles-DAH_90Fi.js";
3
+ import { t as MirrorValidator } from "../../chunks/mirror-validator-DEz3BsbN.js";
4
+ import { k as Editor } from "../../chunks/tiptap-_LAjdgeV.js";
5
+ import { C as contentToValue, E as valueToContent, T as flattenVariableOptions, i as createVariableTagDomNodeView, j as createTiptapInputExtensions, n as tiptapInputProseMirrorStyles, w as dedupeVariableOptions } from "../../chunks/tiptap.styles-CDjt6Iz4.js";
6
6
  //#region src/components/tiptap/pk-tiptap-input.styles.ts
7
7
  var pkTiptapInputStyles = i`
8
8
  @layer pk-component {
@@ -1,6 +1,6 @@
1
1
  import { f as A, l as n, m as i, p as b, u as t } from "../../chunks/lit-Dnn7gEi2.js";
2
2
  import { c as __decorate, l as PkElement } from "../../chunks/pk-base-BlxAYXJD.js";
3
- import { i as buttonGroupIndentStyles, n as buttonGroupCornerRadiusStyles, r as buttonGroupCornerRoleStyles, t as buttonGroupBorderJoinStyles } from "../../chunks/button-group-item.styles-Dwakbyx5.js";
3
+ import { i as buttonGroupIndentStyles, n as buttonGroupCornerRadiusStyles, r as buttonGroupCornerRoleStyles, t as buttonGroupBorderJoinStyles } from "../../chunks/button-group-item.styles-BNc-ksl1.js";
4
4
  //#region src/components/toggle/pk-toggle.styles.ts
5
5
  var pkToggleStyles = [
6
6
  buttonGroupCornerRoleStyles(),
@@ -1,2 +1,2 @@
1
- import { t as PkTooltip } from "../../chunks/pk-tooltip-JJRxVXYD.js";
1
+ import { t as PkTooltip } from "../../chunks/pk-tooltip-DHiCn33o.js";
2
2
  export { PkTooltip };
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@verbb/plugin-kit-web",
3
- "version": "2.0.3",
3
+ "version": "2.0.5",
4
4
  "description": "Plugin Kit web components (shadow DOM, Craft design system)",
5
5
  "type": "module",
6
6
  "types": "dist/index.d.ts",
7
7
  "sideEffects": [
8
8
  "**/*.css",
9
+ "./src/components/**/*.ts",
9
10
  "./dist/register.js",
10
11
  "./dist/components/**/*.js",
11
12
  "./dist-loader/**/*.js"
@@ -935,18 +936,18 @@
935
936
  },
936
937
  "peerDependencies": {
937
938
  "@floating-ui/dom": "^1.7.3",
938
- "@verbb/plugin-kit-core": "^2.0.3",
939
- "@verbb/plugin-kit-icons": "^2.0.3",
939
+ "@verbb/plugin-kit-core": "^2.0.5",
940
+ "@verbb/plugin-kit-icons": "^2.0.5",
940
941
  "lit": "^3.3.0"
941
942
  },
942
943
  "license": "MIT",
943
944
  "dependencies": {
944
945
  "@floating-ui/dom": "^1.7.3",
945
946
  "@tiptap/core": "^3.22.4",
946
- "@verbb/plugin-kit-codemirror-core": "2.0.3",
947
- "@verbb/plugin-kit-core": "^2.0.3",
948
- "@verbb/plugin-kit-icons": "^2.0.3",
949
- "@verbb/plugin-kit-tiptap-core": "^2.0.3",
947
+ "@verbb/plugin-kit-codemirror-core": "2.0.5",
948
+ "@verbb/plugin-kit-core": "^2.0.5",
949
+ "@verbb/plugin-kit-icons": "^2.0.5",
950
+ "@verbb/plugin-kit-tiptap-core": "^2.0.5",
950
951
  "composed-offset-position": "^0.0.6",
951
952
  "lit": "^3.3.0"
952
953
  },
@@ -1 +0,0 @@
1
- {"version":3,"file":"pk-button-Cilu5WAT.js","names":[],"sources":["../../src/components/button/pk-button.styles.ts","../../src/components/button/pk-button.ts"],"sourcesContent":["import { css } from 'lit';\n\nimport { hostDisplayInlineBlock } from '../../base/styles.js';\nimport { iconStyles } from '../../base/icon.styles.js';\nimport {\n buttonGroupBorderJoinStyles,\n buttonGroupCornerRadiusStyles,\n buttonGroupCornerRoleStyles,\n buttonGroupIndentStyles,\n} from '../button-group/button-group-item.styles.js';\n\nexport const pkButtonStyles = [\n hostDisplayInlineBlock,\n iconStyles,\n buttonGroupCornerRoleStyles(),\n buttonGroupCornerRadiusStyles('.button'),\n buttonGroupIndentStyles(),\n buttonGroupBorderJoinStyles('.button'),\n css`\n @layer pk-component {\n :host {\n font-family: var(--pk-font-family);\n font-size: var(--pk-font-size-base);\n line-height: var(--pk-line-height);\n cursor: pointer;\n --pk-btn-height: var(--pk-btn-height-default);\n --pk-btn-font: var(--pk-btn-font-default);\n --pk-btn-padding-inline: var(--pk-btn-padding-inline-default);\n --pk-btn-icon-size: var(--pk-btn-icon-size-default);\n --pk-btn-icon-gap: var(--pk-btn-icon-gap-default);\n --pk-btn-caret-size: var(--pk-btn-caret-size-default);\n --pk-btn-radius: var(--pk-btn-radius-default);\n }\n\n :host([disabled]) {\n cursor: not-allowed;\n pointer-events: none;\n }\n\n :host([loading]):not([disabled]) {\n pointer-events: none;\n }\n\n .button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--pk-btn-icon-gap);\n box-sizing: border-box;\n width: auto;\n margin: 0;\n /* Every button carries a 1px border (transparent for fill/plain variants) so the box\n * model is identical across variants and states. Prevents width shift when swapping a\n * button between filled and outline/dashed, or toggling states. Matches Bootstrap\n * (transparent baseline) and (border always present, only color changes).\n */\n border: 1px solid transparent;\n border-radius: var(--pk-btn-radius);\n font: inherit;\n font-size: var(--pk-btn-font);\n font-weight: 400;\n line-height: 1.2;\n text-decoration: none;\n white-space: nowrap;\n /* Inherit host cursor so className/style (e.g. cursor-move) pierce shadow. */\n cursor: inherit;\n user-select: none;\n vertical-align: middle;\n appearance: none;\n background: var(--pk-btn-fill, var(--pk-action-fill));\n color: var(--pk-btn-on, var(--pk-action-on));\n height: var(--pk-btn-height);\n min-height: var(--pk-btn-height);\n /* Block padding defaults to 0 (height tokens center content). Override for nav rows. */\n padding-block: var(--pk-btn-padding-block, 0);\n padding-inline: var(--pk-btn-padding-inline);\n transition: background-color 0.12s ease, box-shadow 0.12s ease, color 0.12s ease;\n }\n\n .button:disabled {\n opacity: 0.5;\n }\n\n .icon-slot {\n display: none;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n line-height: 0;\n }\n\n .icon-slot--has-content {\n display: inline-flex;\n }\n\n /* Fixed token sizes for all icons (labeled or icon-only) — matches plugin-kit-react Button. */\n .icon-slot slot::slotted(svg),\n slot[name='start']::slotted(svg),\n slot[name='end']::slotted(svg) {\n display: block;\n width: var(--pk-btn-icon-size);\n height: var(--pk-btn-icon-size);\n flex-shrink: 0;\n pointer-events: none;\n }\n\n .icon-slot slot::slotted(img),\n slot[name='start']::slotted(img),\n slot[name='end']::slotted(img) {\n display: block;\n width: var(--pk-btn-icon-size);\n height: var(--pk-btn-icon-size);\n object-fit: contain;\n flex-shrink: 0;\n pointer-events: none;\n }\n\n /* pk-icon sizes itself from font-size (1em), so scale it to the\n * icon token. This keeps the idiomatic slotted pk-icon usage in\n * sync with raw slotted svg. Set width/height explicitly — %/size-full\n * collapses when the icon-slot has no definite box.\n */\n .icon-slot slot::slotted(pk-icon),\n slot[name='start']::slotted(pk-icon),\n slot[name='end']::slotted(pk-icon) {\n font-size: var(--pk-btn-icon-size);\n width: var(--pk-btn-icon-size);\n height: var(--pk-btn-icon-size);\n /* Kill pk-icon's text-baseline nudge (-0.125em) — flex slots center optically. */\n vertical-align: 0;\n flex-shrink: 0;\n pointer-events: none;\n }\n\n .label {\n display: inline-flex;\n align-items: center;\n min-width: 0;\n line-height: 1.2;\n }\n\n /* Trailing slot (status): grow + clip the label so end sits at the far edge\n * and long titles truncate instead of colliding with the indicator.\n */\n .button:has(.icon-slot--end.icon-slot--has-content) .label:not(.is-empty) {\n flex: 1 1 auto;\n overflow: hidden;\n }\n\n .label.is-empty {\n display: none;\n }\n\n /* Icon-only (no label): square hit box = size height. Button owns the target;\n * glyph size comes from --pk-btn-icon-size. Do not Tailwind-size the Icon.\n * Opt out with icon (compact), size=none, or group-trigger (narrow disclosure cap).\n */\n :host(:not([icon]):not([size='none']):not([group-trigger])) .button:not(.has-label) {\n width: var(--pk-btn-height);\n min-width: var(--pk-btn-height);\n padding-inline: 0;\n }\n\n /* Compact density (icon attr): padless box that hugs the glyph.\n * size still drives --pk-btn-icon-size; height/width tiers do not apply.\n * Use for dense x / ellipsis in cells — not for table action rows (prefer square above).\n * line-height: 0 collapses whitespace flex-struts so the glyph sits dead-center.\n */\n :host([icon]) {\n display: inline-flex;\n line-height: 0;\n vertical-align: middle;\n }\n\n :host([icon]) .button {\n display: flex;\n width: auto;\n min-width: 0;\n height: auto;\n min-height: 0;\n padding-inline: 0.25rem;\n padding-block: 0;\n line-height: 0;\n align-items: center;\n justify-content: center;\n }\n\n /* Keep label space while loading even before slotchange runs. */\n .button.loading .label.is-empty {\n display: inline-flex;\n visibility: hidden;\n }\n\n /* Sizes — token-driven scale (see tokens.css) */\n :host([size='xxs']) {\n --pk-btn-height: var(--pk-btn-height-xxs);\n --pk-btn-font: var(--pk-btn-font-xxs);\n --pk-btn-padding-inline: var(--pk-btn-padding-inline-xxs);\n --pk-btn-icon-size: var(--pk-btn-icon-size-xxs);\n --pk-btn-icon-gap: var(--pk-btn-icon-gap-xxs);\n --pk-btn-caret-size: var(--pk-btn-caret-size-xxs);\n --pk-btn-radius: var(--pk-btn-radius-xxs);\n }\n\n :host([size='xs']) {\n --pk-btn-height: var(--pk-btn-height-xs);\n --pk-btn-font: var(--pk-btn-font-xs);\n --pk-btn-padding-inline: var(--pk-btn-padding-inline-xs);\n --pk-btn-icon-size: var(--pk-btn-icon-size-xs);\n --pk-btn-icon-gap: var(--pk-btn-icon-gap-xs);\n --pk-btn-caret-size: var(--pk-btn-caret-size-xs);\n --pk-btn-radius: var(--pk-btn-radius-xs);\n }\n\n :host([size='sm']) {\n --pk-btn-height: var(--pk-btn-height-sm);\n --pk-btn-font: var(--pk-btn-font-sm);\n --pk-btn-padding-inline: var(--pk-btn-padding-inline-sm);\n --pk-btn-icon-size: var(--pk-btn-icon-size-sm);\n --pk-btn-icon-gap: var(--pk-btn-icon-gap-sm);\n --pk-btn-caret-size: var(--pk-btn-caret-size-sm);\n --pk-btn-radius: var(--pk-btn-radius-sm);\n }\n\n :host([size='default']) {\n --pk-btn-height: var(--pk-btn-height-default);\n --pk-btn-font: var(--pk-btn-font-default);\n --pk-btn-padding-inline: var(--pk-btn-padding-inline-default);\n --pk-btn-icon-size: var(--pk-btn-icon-size-default);\n --pk-btn-icon-gap: var(--pk-btn-icon-gap-default);\n --pk-btn-caret-size: var(--pk-btn-caret-size-default);\n --pk-btn-radius: var(--pk-btn-radius-default);\n }\n\n :host([size='lg']) {\n --pk-btn-height: var(--pk-btn-height-lg);\n --pk-btn-font: var(--pk-btn-font-lg);\n --pk-btn-padding-inline: var(--pk-btn-padding-inline-lg);\n --pk-btn-icon-size: var(--pk-btn-icon-size-lg);\n --pk-btn-icon-gap: var(--pk-btn-icon-gap-lg);\n --pk-btn-caret-size: var(--pk-btn-caret-size-lg);\n --pk-btn-radius: var(--pk-btn-radius-lg);\n }\n\n :host([size='xl']) {\n --pk-btn-height: var(--pk-btn-height-xl);\n --pk-btn-font: var(--pk-btn-font-xl);\n --pk-btn-padding-inline: var(--pk-btn-padding-inline-xl);\n --pk-btn-icon-size: var(--pk-btn-icon-size-xl);\n --pk-btn-icon-gap: var(--pk-btn-icon-gap-xl);\n --pk-btn-caret-size: var(--pk-btn-caret-size-xl);\n --pk-btn-radius: var(--pk-btn-radius-xl);\n }\n\n /* No preset scale — size to content or set --pk-btn-* on the host for one-off dimensions\n * (height, padding, font, icon, radius) without fighting a named size tier.\n * Pair with icon for a padless glyph host, or set --pk-btn-padding-inline / --pk-btn-height yourself.\n */\n :host([size='none']) {\n --pk-btn-height: auto;\n --pk-btn-font: inherit;\n --pk-btn-padding-inline: 0px;\n --pk-btn-padding-block: 0px;\n --pk-btn-icon-size: 1em;\n --pk-btn-icon-gap: 0px;\n --pk-btn-caret-size: 1em;\n --pk-btn-radius: 0px;\n }\n\n :host([size='none']) .button {\n height: auto;\n min-height: auto;\n width: 100%;\n }\n\n /* Variants */\n :host([variant='default']) {\n --pk-btn-fill: var(--pk-action-fill);\n --pk-btn-fill-hover: var(--pk-action-fill-hover);\n --pk-btn-fill-active: var(--pk-action-fill-active);\n --pk-btn-on: var(--pk-action-on);\n }\n\n :host([variant='primary']) {\n --pk-btn-fill: var(--pk-action-primary-fill);\n --pk-btn-fill-hover: var(--pk-action-primary-fill-hover);\n --pk-btn-fill-active: var(--pk-action-primary-fill-active);\n --pk-btn-on: var(--pk-action-primary-on);\n }\n\n :host([variant='primary']) .button,\n :host([variant='secondary']) .button {\n -moz-osx-font-smoothing: grayscale;\n -webkit-font-smoothing: antialiased;\n }\n\n :host([variant='secondary']) {\n --pk-btn-fill: var(--pk-color-gray-500);\n --pk-btn-fill-hover: var(--pk-color-gray-550);\n --pk-btn-fill-active: var(--pk-color-gray-600);\n --pk-btn-on: var(--pk-color-white);\n }\n\n :host([variant='outline']) .button {\n background: transparent;\n border-color: var(--pk-color-slate-400);\n color: var(--pk-color-gray-700);\n }\n\n :host([variant='transparent']) .button {\n background: transparent;\n color: var(--pk-color-gray-700);\n }\n\n /* link/none opt out of the shared transparent 1px border: they never render a border, so\n * carrying one only pads the box by 2px inline (and 2px block at size='none', where height\n * is auto). These are the \"inline text\" / \"no chrome\" variants — content-sized is the point,\n * and neither participates in button-group border joins. Other variants keep the stable box.\n */\n /*\n * Craft CP sets --link-color on :root (inherits into shadow). Prefer that,\n * then kit --pk-color-link — not sky-700 (reads as a different “CP blue”).\n * Color on :host so consumer utilities (e.g. text-[var(--link-color)]) can override.\n * Height must be content-sized — default --pk-btn-height (34px) bloated table rows.\n */\n :host([variant='link']) {\n color: var(--link-color, var(--pk-color-link));\n --pk-btn-height: auto;\n --pk-btn-padding-inline: 0;\n --pk-btn-padding-block: 0;\n }\n\n :host([variant='link']) .button {\n background: transparent;\n border-width: 0;\n border-radius: 0;\n color: inherit;\n width: auto;\n height: auto;\n min-height: 0;\n padding: 0;\n text-underline-offset: 2px;\n }\n\n :host([variant='dashed']) .button {\n background: transparent;\n border-style: dashed;\n border-color: var(--pk-color-slate-500);\n color: var(--pk-color-gray-700);\n }\n\n :host([variant='none']) .button {\n border-width: 0;\n border-radius: 0;\n background: transparent;\n color: inherit;\n }\n\n /* Interaction — pseudo-classes only; playground matrices use dev/pk-button-demo-states.css */\n .button:hover:not(:disabled) {\n background: var(--pk-btn-fill-hover, var(--pk-btn-fill));\n }\n\n :host([variant='outline']) .button:hover:not(:disabled),\n :host([variant='transparent']) .button:hover:not(:disabled),\n :host([variant='dashed']) .button:hover:not(:disabled) {\n background: var(--pk-color-slate-150);\n }\n\n :host([variant='link']) .button:hover:not(:disabled) {\n background: transparent;\n text-decoration: underline;\n }\n\n :host([variant='none']) .button:hover:not(:disabled) {\n background: transparent;\n }\n\n .button:active:not(:disabled) {\n background: var(--pk-btn-fill-active, var(--pk-btn-fill-hover, var(--pk-btn-fill)));\n }\n\n :host([variant='outline']) .button:active:not(:disabled),\n :host([variant='transparent']) .button:active:not(:disabled),\n :host([variant='dashed']) .button:active:not(:disabled) {\n background: var(--pk-color-slate-200);\n }\n\n :host([variant='link']) .button:active:not(:disabled),\n :host([variant='none']) .button:active:not(:disabled) {\n background: transparent;\n }\n\n .button:focus {\n outline: none;\n }\n\n .button:focus-visible {\n box-shadow: var(--pk-shadow-focus);\n }\n\n /* Bordered variants: fold the button's own border into the focus ring by recoloring it to\n * the accent (and solidifying dashed) so focus reads as one cohesive ring instead of a\n * doubled border. The ring is thinned to 1px here because the recolored 1px border already\n * supplies the other half — total 2px, matching the filled variants' ring weight.\n */\n :host([variant='outline']) .button:focus-visible,\n :host([variant='dashed']) .button:focus-visible {\n border-color: var(--pk-color-sky-600);\n box-shadow: 0 0 0 1px var(--pk-color-sky-600), 0 0 5px 1px hsl(from var(--pk-color-sky-600) h s l / 0.7);\n }\n\n :host([variant='dashed']) .button:focus-visible {\n border-style: solid;\n }\n\n :host(.pk-dialog__close) .button:focus-visible {\n box-shadow: 0 0 0 2px var(--pk-color-gray-600);\n }\n\n :host-context(pk-button-group) {\n position: relative;\n }\n\n :host-context(pk-button-group[orientation='vertical']) {\n display: block;\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n }\n\n :host-context(pk-button-group[orientation='vertical']) .button {\n width: 100%;\n box-sizing: border-box;\n }\n\n :host-context(pk-button-group:focus-visible) {\n z-index: 2;\n }\n\n /* Bordered variants — matching border divider (filled uses margin gap via buttonGroupIndentStyles) */\n\n :host([variant='primary']) .button:focus-visible,\n :host([variant='secondary']) .button:focus-visible {\n box-shadow: var(--pk-shadow-focus-inset);\n }\n\n :host-context(pk-button-group[exclusive]):host([aria-pressed='true']) .button {\n background: var(--pk-color-gray-500);\n color: var(--pk-color-white);\n }\n\n :host-context(pk-button-group[exclusive]):host([aria-pressed='true']) .button:hover:not(:disabled) {\n background: var(--pk-color-gray-550);\n }\n\n :host-context(pk-button-group[exclusive]):host([aria-pressed='true']) .button:active:not(:disabled) {\n background: var(--pk-color-gray-600);\n }\n\n :host-context(pk-button-group[exclusive]):host([aria-pressed='true']) .button:focus-visible {\n box-shadow: var(--pk-shadow-focus);\n }\n\n :host([variant='link']) .button:focus-visible {\n box-shadow: none;\n text-decoration: underline;\n }\n\n .button.loading {\n position: relative;\n cursor: default;\n pointer-events: none;\n }\n\n .label.loading {\n visibility: hidden;\n }\n\n .button.loading .icon-slot,\n .button.loading slot[name='start']::slotted(*),\n .button.loading slot[name='end']::slotted(*) {\n visibility: hidden;\n }\n\n .button.caret .icon-slot--end.icon-slot--has-content {\n display: none;\n }\n\n /* Scope to the caret span — the button host also gets class caret when\n with-caret is set; an unscoped .caret rule was adding 2px margin\n to the whole button and shifting dropdown anchors left. */\n .button > .caret {\n display: inline-flex;\n align-self: center;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n line-height: 0;\n /* Sits slightly further from the label than the flex gap alone. */\n margin-inline-start: 2px;\n }\n\n /* Caret has its own per-size token (--pk-btn-caret-size), kept deliberately smaller than\n * --pk-btn-icon-size so it reads as a subordinate dropdown affordance next to real icons.\n */\n .button > .caret svg {\n display: block;\n width: var(--pk-btn-caret-size);\n height: var(--pk-btn-caret-size);\n }\n\n :host([group-trigger]) .button {\n padding-inline: 6px;\n }\n\n /* Compact disclosure cap — hide content, keep only the shared SVG caret (centered). */\n :host([group-trigger]) .label,\n :host([group-trigger]) .icon-slot {\n display: none;\n }\n\n :host([group-trigger]) .button > .caret {\n margin-inline-start: 0;\n }\n\n :host([size='sm'][group-trigger]) .button,\n :host([size='xs'][group-trigger]) .button,\n :host([size='xxs'][group-trigger]) .button {\n padding-inline: 6px;\n }\n\n :host([size='lg'][group-trigger]) .button {\n padding-inline: 10px;\n }\n\n :host([size='xl'][group-trigger]) .button {\n padding-inline: 12px;\n }\n\n :host-context(pk-button-group[orientation='horizontal']):host([data-pk-group-join]:not([data-pk-group-divider])[variant='outline']) .button,\n :host-context(pk-button-group[orientation='horizontal']):host([data-pk-group-join]:not([data-pk-group-divider])[variant='dashed']) .button,\n :host-context(pk-button-group[orientation='horizontal']):host([data-pk-group-join]:not([data-pk-group-divider])[variant='transparent']) .button {\n border-left-width: 0;\n }\n\n :host-context(pk-button-group[orientation='vertical']):host([data-pk-group-join]:not([data-pk-group-divider])[variant='outline']) .button,\n :host-context(pk-button-group[orientation='vertical']):host([data-pk-group-join]:not([data-pk-group-divider])[variant='dashed']) .button,\n :host-context(pk-button-group[orientation='vertical']):host([data-pk-group-join]:not([data-pk-group-divider])[variant='transparent']) .button {\n border-top-width: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join]:not([data-pk-group-divider])[variant='outline']) .button,\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join]:not([data-pk-group-divider])[variant='dashed']) .button,\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join]:not([data-pk-group-divider])[variant='transparent']) .button {\n border-left-width: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-join]:not([data-pk-group-divider])[variant='outline']) .button,\n :host([data-pk-group-orientation='vertical'][data-pk-group-join]:not([data-pk-group-divider])[variant='dashed']) .button,\n :host([data-pk-group-orientation='vertical'][data-pk-group-join]:not([data-pk-group-divider])[variant='transparent']) .button {\n border-top-width: 0;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider][variant='outline']) .button {\n box-shadow: none;\n border-left-width: 1px;\n border-left-style: solid;\n border-left-color: var(--pk-btn-group-divider-color-outline, var(--pk-color-slate-400));\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider][variant='outline']) .button {\n box-shadow: none;\n border-top-width: 1px;\n border-top-style: solid;\n border-top-color: var(--pk-btn-group-divider-color-outline, var(--pk-color-slate-400));\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider][variant='dashed']) .button {\n box-shadow: none;\n border-left-width: 1px;\n border-left-style: dashed;\n border-left-color: var(--pk-btn-group-divider-color-dashed, var(--pk-color-slate-500));\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider][variant='dashed']) .button {\n box-shadow: none;\n border-top-width: 1px;\n border-top-style: dashed;\n border-top-color: var(--pk-btn-group-divider-color-dashed, var(--pk-color-slate-500));\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider][variant='outline']) .button:focus-visible,\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider][variant='dashed']) .button:focus-visible {\n box-shadow: var(--pk-shadow-focus);\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider][variant='outline']) .button:focus-visible,\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider][variant='dashed']) .button:focus-visible {\n box-shadow: var(--pk-shadow-focus);\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail][variant='outline']) .button,\n :host([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail][variant='dashed']) .button {\n border-right-width: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail][variant='outline']) .button,\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail][variant='dashed']) .button {\n border-bottom-width: 0;\n }\n }\n `,\n];\n","import { html, nothing } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { chevronDown, iconToSvg } from '@verbb/plugin-kit-icons';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { getButtonSpinnerSize, resolveSpinnerVariant } from '../spinner/spinner-utils.js';\nimport type { PkSpinnerSize, PkSpinnerTone, PkSpinnerVariant } from '../spinner/pk-spinner.js';\n\nexport type { PkSpinnerSize };\nimport '../spinner/pk-spinner.js';\nimport { pkButtonStyles } from './pk-button.styles.js';\n\nexport type PkButtonVariant =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'outline'\n | 'transparent'\n | 'link'\n | 'dashed'\n | 'none';\n\nexport type PkButtonSize = 'default' | 'xxs' | 'xs' | 'sm' | 'lg' | 'xl' | 'none';\n\nconst CARET_ICON = iconToSvg(chevronDown);\n\n/**\n * Craft-aligned action button.\n *\n * @slot - Button label\n * @slot start - Leading icon or prefix\n * @slot end - Trailing icon or suffix\n *\n * @csspart base - The native button element\n */\n@customElement('pk-button')\nexport class PkButton extends PkElement {\n static override shadowRootOptions: ShadowRootInit = {\n mode: 'open',\n delegatesFocus: true,\n };\n\n static override styles = pkButtonStyles;\n\n @property({ reflect: true })\n variant: PkButtonVariant = 'default';\n\n @property({ reflect: true })\n size: PkButtonSize = 'default';\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: Boolean, reflect: true })\n loading = false;\n\n /**\n * Override loading spinner size. When unset, derived from `size` via\n * `getButtonSpinnerSize` — same defaults as v1 Button (xxs/xs → xxs, lg/xl → sm, else xs).\n * Formie New Form passes `xs` on `size=\"lg\"` so the ring stays size-4 (1rem), not sm (1.5rem).\n */\n @property({ reflect: true, attribute: 'spinner-size' })\n spinnerSize?: PkSpinnerSize;\n\n @property({ reflect: true, attribute: 'spinner-variant' })\n spinnerVariant?: PkSpinnerVariant;\n\n @property({ reflect: true, attribute: 'spinner-tone' })\n spinnerTone?: PkSpinnerTone;\n\n @property({ type: Boolean, reflect: true, attribute: 'with-caret' })\n withCaret = false;\n\n /**\n * Compact chevron-only trigger for grouped split actions — Craft `.menubtn`.\n *\n * Not a variant or size: set this boolean on the disclosure end-cap in a split group.\n * Hides label/icons and draws a CSS `::after` chevron (0.4375rem, 2px borders).\n * Inherits `variant`/`size` from sibling buttons; inline padding narrows to 8px.\n * Do not pass a chevron icon — use `icon` + a start-slot icon for a padless square control.\n */\n @property({ type: Boolean, reflect: true, attribute: 'group-trigger' })\n groupTrigger = false;\n\n /**\n * Compact icon density: padless box that hugs the glyph (no square hit target).\n *\n * Prefer default icon-only usage for action rows — without this flag, icon-only\n * buttons are square (`width`/`height` = size height) with the glyph from\n * `--pk-btn-icon-size`. Use `icon` for dense × / ⋯ in cells.\n * For one-off dimensions use `size=\"none\"` and set `--pk-btn-*` on the host.\n */\n @property({ type: Boolean, reflect: true })\n icon = false;\n\n @property()\n href?: string;\n\n @property()\n target?: string;\n\n @property()\n rel?: string;\n\n @property()\n name?: string;\n\n @property()\n value?: string;\n\n @property()\n title = '';\n\n @property()\n type: 'button' | 'submit' | 'reset' = 'button';\n\n /**\n * HTML form owner id — same as native `<button form=\"…\">`.\n * Needed when the submit control lives outside the `<form>` (e.g. dialog footer).\n */\n @property({ reflect: true })\n form?: string;\n\n @state()\n private hasDefaultSlotContent = false;\n\n @state()\n private hasStartSlotContent = false;\n\n @state()\n private hasEndSlotContent = false;\n\n private defaultSlotChanged(event: Event): void {\n const slot = event.target as HTMLSlotElement;\n this.hasDefaultSlotContent = slot.assignedNodes({ flatten: true }).some((node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent?.trim();\n }\n\n return node.nodeType === Node.ELEMENT_NODE;\n });\n }\n\n private iconSlotChanged(event: Event, which: 'start' | 'end'): void {\n const slot = event.target as HTMLSlotElement;\n const hasContent = slot.assignedNodes({ flatten: true }).some((node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent?.trim();\n }\n\n return node.nodeType === Node.ELEMENT_NODE;\n });\n\n if (which === 'start') {\n this.hasStartSlotContent = hasContent;\n } else {\n this.hasEndSlotContent = hasContent;\n }\n }\n\n private startSlotChanged = (event: Event): void => {\n this.iconSlotChanged(event, 'start');\n };\n\n private endSlotChanged = (event: Event): void => {\n this.iconSlotChanged(event, 'end');\n };\n\n private buttonClasses() {\n return classMap({\n button: true,\n 'has-label': this.hasDefaultSlotContent,\n loading: this.loading,\n caret: this.withCaret,\n 'group-trigger': this.groupTrigger,\n });\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('data-slot', 'button');\n this.addEventListener('click', this.handleHostClick);\n }\n\n override disconnectedCallback(): void {\n this.removeEventListener('click', this.handleHostClick);\n super.disconnectedCallback();\n }\n\n /**\n * Resolve the light-DOM form for submit/reset.\n * Prefer `form` id (dialog footer submitters), then ancestor `<form>`.\n * Never target Craft’s `#main` shell.\n */\n private resolveAssociatedForm(): HTMLFormElement | null {\n const byId = (this.form || this.getAttribute('form') || '').trim();\n\n if (byId) {\n const el = this.ownerDocument?.getElementById(byId);\n\n if (el instanceof HTMLFormElement && el.id !== 'main') {\n return el;\n }\n }\n\n const closest = this.closest('form');\n\n if (closest && closest.id !== 'main') {\n return closest;\n }\n\n return null;\n }\n\n /**\n * Shadow inner `<button type=\"submit|reset\">` is not a form owner for an\n * ancestor light-DOM `<form>` — bridge click → `requestSubmit` / `reset`.\n * Skip Craft’s `#main` shell form (same guard as implicit Enter submit).\n */\n private handleHostClick = (event: MouseEvent): void => {\n if (this.disabled || this.loading || this.href) {\n return;\n }\n\n if (this.type !== 'submit' && this.type !== 'reset') {\n return;\n }\n\n const form = this.resolveAssociatedForm();\n\n if (!form) {\n return;\n }\n\n // Stop the inner shadow button’s non-associated default; we own submit/reset.\n event.preventDefault();\n event.stopPropagation();\n\n if (this.type === 'reset') {\n form.reset();\n return;\n }\n\n if (typeof form.requestSubmit === 'function') {\n form.requestSubmit();\n return;\n }\n\n form.dispatchEvent(new Event('submit', { bubbles: true, cancelable: true }));\n };\n\n override render() {\n // Explicit spinner-size wins (v1 Button `spinnerSize`); else map from button size.\n const spinnerSize = this.spinnerSize || getButtonSpinnerSize(this.size);\n const spinnerVariant = resolveSpinnerVariant(this.variant, this.spinnerVariant);\n const isLink = Boolean(this.href);\n\n return html`\n ${isLink\n ? html`\n <a\n part=\"base\"\n class=${this.buttonClasses()}\n href=${this.href!}\n target=${this.target ?? nothing}\n rel=${this.rel ?? nothing}\n title=${this.title || nothing}\n >\n ${this.renderInner(spinnerSize, spinnerVariant)}\n </a>\n `\n : html`\n <button\n part=\"base\"\n class=${this.buttonClasses()}\n type=${this.type}\n ?disabled=${this.disabled}\n aria-disabled=${this.disabled ? 'true' : nothing}\n aria-busy=${this.loading ? 'true' : nothing}\n name=${this.name ?? nothing}\n value=${this.value ?? nothing}\n title=${this.title || nothing}\n >\n ${this.renderInner(spinnerSize, spinnerVariant)}\n </button>\n `}\n `;\n }\n\n private renderInner(spinnerSize: PkSpinnerSize, spinnerVariant: PkSpinnerVariant) {\n return html`\n <span\n class=${classMap({\n 'icon-slot': true,\n 'icon-slot--start': true,\n 'icon-slot--has-content': this.hasStartSlotContent,\n })}\n >\n <slot name=\"start\" @slotchange=${this.startSlotChanged}></slot>\n </span>\n ${this.loading\n ? html`\n <pk-spinner\n variant=${spinnerVariant}\n size=${spinnerSize}\n tone=${this.spinnerTone ?? nothing}\n centered\n ></pk-spinner>\n `\n : nothing}\n <span\n class=${classMap({\n label: true,\n 'is-empty': !this.hasDefaultSlotContent,\n loading: this.loading,\n })}\n >\n <slot @slotchange=${this.defaultSlotChanged}></slot>\n </span>\n <span\n class=${classMap({\n 'icon-slot': true,\n 'icon-slot--end': true,\n 'icon-slot--has-content': this.hasEndSlotContent,\n })}\n >\n <slot name=\"end\" @slotchange=${this.endSlotChanged}></slot>\n </span>\n ${this.withCaret || this.groupTrigger\n ? html`<span part=\"caret\" class=\"caret\">${unsafeSVG(CARET_ICON)}</span>`\n : nothing}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-button': PkButton;\n }\n}\n"],"mappings":"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"}