@verbb/plugin-kit-web 2.0.23 → 2.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (446) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/chunks/{active-elements-DM_lCHaW.js → active-elements-739kISON.js} +1 -1
  3. package/dist/chunks/{active-elements-DM_lCHaW.js.map → active-elements-739kISON.js.map} +1 -1
  4. package/dist/chunks/{animate-with-class-NP-yJVt_.js → animate-with-class-CjTZI0NU.js} +1 -1
  5. package/dist/chunks/{animate-with-class-NP-yJVt_.js.map → animate-with-class-CjTZI0NU.js.map} +1 -1
  6. package/dist/chunks/{autoloader-DnSfHkrD.js → autoloader-DcwybeWc.js} +3 -3
  7. package/dist/chunks/{autoloader-DnSfHkrD.js.map → autoloader-DcwybeWc.js.map} +1 -1
  8. package/dist/chunks/{button-group-item.styles-G05d0DNI.js → button-group-item.styles-D7tuu-sr.js} +1 -1
  9. package/dist/chunks/{button-group-item.styles-G05d0DNI.js.map → button-group-item.styles-D7tuu-sr.js.map} +1 -1
  10. package/dist/chunks/{component-registry-DoevfR-u.js → component-registry-B5pnAZsb.js} +2 -1
  11. package/dist/chunks/{component-registry-DoevfR-u.js.map → component-registry-B5pnAZsb.js.map} +1 -1
  12. package/dist/chunks/{control-aria-CzouQRZD.js → control-aria-CtNg2izr.js} +1 -1
  13. package/dist/chunks/{control-aria-CzouQRZD.js.map → control-aria-CtNg2izr.js.map} +1 -1
  14. package/dist/chunks/{decorate-R0X811qp.js → decorate-Br_PE9pq.js} +3 -4
  15. package/dist/chunks/{decorate-R0X811qp.js.map → decorate-Br_PE9pq.js.map} +1 -1
  16. package/dist/chunks/decorators-BkErmuYK.js +2 -0
  17. package/dist/chunks/{dismissible-stack-B3BgzdQb.js → dismissible-stack-CwhtwAyo.js} +1 -1
  18. package/dist/chunks/{dismissible-stack-B3BgzdQb.js.map → dismissible-stack-CwhtwAyo.js.map} +1 -1
  19. package/dist/chunks/{field-labels-CGSfAGf-.js → field-labels-pY-gQDwQ.js} +1 -1
  20. package/dist/chunks/{field-labels-CGSfAGf-.js.map → field-labels-pY-gQDwQ.js.map} +1 -1
  21. package/dist/chunks/{focus-C6pY4Ym4.js → focus-DcVUPVqn.js} +2 -2
  22. package/dist/chunks/{focus-C6pY4Ym4.js.map → focus-DcVUPVqn.js.map} +1 -1
  23. package/dist/chunks/{form-control.styles-BHwSsx_y.js → form-control.styles-CQ93gnVf.js} +1 -1
  24. package/dist/chunks/{form-control.styles-BHwSsx_y.js.map → form-control.styles-CQ93gnVf.js.map} +1 -1
  25. package/dist/chunks/{has-slot-9zjTXvea.js → has-slot-DJv86HKx.js} +1 -1
  26. package/dist/chunks/{has-slot-9zjTXvea.js.map → has-slot-DJv86HKx.js.map} +1 -1
  27. package/dist/chunks/{icon.styles-pNyUmVtP.js → icon.styles-KWvfi7RV.js} +1 -1
  28. package/dist/chunks/{icon.styles-pNyUmVtP.js.map → icon.styles-KWvfi7RV.js.map} +1 -1
  29. package/dist/chunks/{icons-B8siZLOe.js → icons-k1pvx6yX.js} +2 -2
  30. package/dist/chunks/{icons-B8siZLOe.js.map → icons-k1pvx6yX.js.map} +1 -1
  31. package/dist/chunks/{mirror-validator-Cszpqlxk.js → mirror-validator-BkZlEv1Z.js} +1 -1
  32. package/dist/chunks/{mirror-validator-Cszpqlxk.js.map → mirror-validator-BkZlEv1Z.js.map} +1 -1
  33. package/dist/chunks/{option-filter-Cj5SvyzI.js → option-filter-BkKyBg8L.js} +2 -2
  34. package/dist/chunks/{option-filter-Cj5SvyzI.js.map → option-filter-BkKyBg8L.js.map} +1 -1
  35. package/dist/chunks/{overlay-lifecycle-CAoT0LE8.js → overlay-lifecycle-C582MGBJ.js} +1 -1
  36. package/dist/chunks/{overlay-lifecycle-CAoT0LE8.js.map → overlay-lifecycle-C582MGBJ.js.map} +1 -1
  37. package/dist/chunks/{pk-alert-Cjxl6CY_.js → pk-alert-BQAb4lJc.js} +9 -7
  38. package/dist/chunks/pk-alert-BQAb4lJc.js.map +1 -0
  39. package/dist/chunks/{pk-autocomplete-DA77kdTN.js → pk-autocomplete-DUXhs1hi.js} +20 -19
  40. package/dist/chunks/pk-autocomplete-DUXhs1hi.js.map +1 -0
  41. package/dist/chunks/{pk-button-group-DBdKK_2_.js → pk-button-group-BY12Lbk7.js} +10 -7
  42. package/dist/chunks/pk-button-group-BY12Lbk7.js.map +1 -0
  43. package/dist/chunks/{pk-button-group-separator-D0Aa0a0f.js → pk-button-group-separator-B1a8dP9A.js} +3 -2
  44. package/dist/chunks/pk-button-group-separator-B1a8dP9A.js.map +1 -0
  45. package/dist/chunks/{pk-button-group-text-BsqEM-dB.js → pk-button-group-text-CWNlZkyV.js} +3 -3
  46. package/dist/chunks/pk-button-group-text-CWNlZkyV.js.map +1 -0
  47. package/dist/chunks/{pk-button-DCtNLEPr.js → pk-button-ntSVrer_.js} +7 -6
  48. package/dist/chunks/pk-button-ntSVrer_.js.map +1 -0
  49. package/dist/chunks/{pk-calendar-hBz1MnOu.js → pk-calendar-Df0c5u79.js} +11 -10
  50. package/dist/chunks/pk-calendar-Df0c5u79.js.map +1 -0
  51. package/dist/chunks/{pk-checkbox-dvHRoVbL.js → pk-checkbox-L5uRex3b.js} +6 -5
  52. package/dist/chunks/pk-checkbox-L5uRex3b.js.map +1 -0
  53. package/dist/chunks/{pk-checkbox-select-Cqx5ZCMq.js → pk-checkbox-select-6OS0wFYO.js} +4 -3
  54. package/dist/chunks/pk-checkbox-select-6OS0wFYO.js.map +1 -0
  55. package/dist/chunks/{pk-clear-LzxwxEX7.js → pk-clear-DHxP_2cm.js} +1 -1
  56. package/dist/chunks/{pk-clear-LzxwxEX7.js.map → pk-clear-DHxP_2cm.js.map} +1 -1
  57. package/dist/chunks/{pk-code-editor-C_PqjR75.js → pk-code-editor-vZriNR67.js} +6 -5
  58. package/dist/chunks/pk-code-editor-vZriNR67.js.map +1 -0
  59. package/dist/chunks/{pk-color-input-4LDV0Z3W.js → pk-color-input-Csbm4ROT.js} +6 -5
  60. package/dist/chunks/pk-color-input-Csbm4ROT.js.map +1 -0
  61. package/dist/chunks/{pk-combobox-BeddzAsl.js → pk-combobox-BrSBrldb.js} +24 -22
  62. package/dist/chunks/pk-combobox-BrSBrldb.js.map +1 -0
  63. package/dist/chunks/{pk-connect.styles-ciqZMK3B.js → pk-connect.styles-oKhxa_m2.js} +1 -1
  64. package/dist/chunks/{pk-connect.styles-ciqZMK3B.js.map → pk-connect.styles-oKhxa_m2.js.map} +1 -1
  65. package/dist/chunks/{pk-copy-button-KegSx46o.js → pk-copy-button-5i9v_zmu.js} +7 -6
  66. package/dist/chunks/pk-copy-button-5i9v_zmu.js.map +1 -0
  67. package/dist/chunks/{pk-date-picker-D_JFep-Y.js → pk-date-picker-C-w6Mn6j.js} +20 -19
  68. package/dist/chunks/pk-date-picker-C-w6Mn6j.js.map +1 -0
  69. package/dist/chunks/{pk-dialog-CFU850OH.js → pk-dialog-C7KZGpQs.js} +9 -8
  70. package/dist/chunks/pk-dialog-C7KZGpQs.js.map +1 -0
  71. package/dist/chunks/{pk-dropdown-item-A4P4zfVF.js → pk-dropdown-item-Ck2N_suK.js} +11 -8
  72. package/dist/chunks/pk-dropdown-item-Ck2N_suK.js.map +1 -0
  73. package/dist/chunks/{pk-dropdown-label-PqDxMkCI.js → pk-dropdown-label-BdZLeizJ.js} +2 -2
  74. package/dist/chunks/pk-dropdown-label-BdZLeizJ.js.map +1 -0
  75. package/dist/chunks/{pk-dropdown-menu-C_vasBoa.js → pk-dropdown-menu-DBsO1uYR.js} +22 -18
  76. package/dist/chunks/pk-dropdown-menu-DBsO1uYR.js.map +1 -0
  77. package/dist/chunks/{pk-editable-table-B85NhFYY.js → pk-editable-table-Cd8K6vT4.js} +25 -22
  78. package/dist/chunks/pk-editable-table-Cd8K6vT4.js.map +1 -0
  79. package/dist/chunks/{pk-field-BJA2fZ6s.js → pk-field--PCE9nOd.js} +8 -7
  80. package/dist/chunks/pk-field--PCE9nOd.js.map +1 -0
  81. package/dist/chunks/{pk-form-associated-element-MqaHdIoH.js → pk-form-associated-element-Doh2K3pG.js} +3 -3
  82. package/dist/chunks/pk-form-associated-element-Doh2K3pG.js.map +1 -0
  83. package/dist/chunks/{pk-image-browser-DLAQcjFt.js → pk-image-browser-iUqdcLKs.js} +20 -20
  84. package/dist/chunks/pk-image-browser-iUqdcLKs.js.map +1 -0
  85. package/dist/chunks/{pk-input-CiUNLTSW.js → pk-input-BUbXj9We.js} +14 -13
  86. package/dist/chunks/pk-input-BUbXj9We.js.map +1 -0
  87. package/dist/chunks/{pk-input-group-k7WV0pQI.js → pk-input-group-CN79c5HT.js} +5 -4
  88. package/dist/chunks/pk-input-group-CN79c5HT.js.map +1 -0
  89. package/dist/chunks/{pk-input-group-addon-piOznzSS.js → pk-input-group-addon-DpxfuYp1.js} +3 -2
  90. package/dist/chunks/pk-input-group-addon-DpxfuYp1.js.map +1 -0
  91. package/dist/chunks/{pk-input-group-button-Di2vEJLo.js → pk-input-group-button-D5Hm4saA.js} +3 -2
  92. package/dist/chunks/pk-input-group-button-D5Hm4saA.js.map +1 -0
  93. package/dist/chunks/{pk-input-group-input-CwaaEfr1.js → pk-input-group-input-Cm1MoHgN.js} +3 -2
  94. package/dist/chunks/pk-input-group-input-Cm1MoHgN.js.map +1 -0
  95. package/dist/chunks/{pk-input-group-text-C0VAdy0J.js → pk-input-group-text-CtyJZ_Kg.js} +2 -2
  96. package/dist/chunks/pk-input-group-text-CtyJZ_Kg.js.map +1 -0
  97. package/dist/chunks/{pk-input-group-textarea-DOG1NIlE.js → pk-input-group-textarea-BxmKGjdt.js} +3 -2
  98. package/dist/chunks/pk-input-group-textarea-BxmKGjdt.js.map +1 -0
  99. package/dist/chunks/{pk-lightswitch-FH5ZxMG2.js → pk-lightswitch-CSvgiHVQ.js} +9 -8
  100. package/dist/chunks/pk-lightswitch-CSvgiHVQ.js.map +1 -0
  101. package/dist/chunks/{pk-option-Cx52kLmz.js → pk-option-B_PF4v_Z.js} +9 -7
  102. package/dist/chunks/pk-option-B_PF4v_Z.js.map +1 -0
  103. package/dist/chunks/{pk-option-group-CYo9Ukue.js → pk-option-group-D6bHfn0j.js} +4 -3
  104. package/dist/chunks/pk-option-group-D6bHfn0j.js.map +1 -0
  105. package/dist/chunks/{pk-popover-209LdoPr.js → pk-popover-BOoGfR7I.js} +11 -10
  106. package/dist/chunks/pk-popover-BOoGfR7I.js.map +1 -0
  107. package/dist/chunks/{pk-popup-0EIt9X_W.js → pk-popup-DVE93VSV.js} +32 -28
  108. package/dist/chunks/pk-popup-DVE93VSV.js.map +1 -0
  109. package/dist/chunks/{pk-radio-jgj6A0Wy.js → pk-radio-D0eqmnlH.js} +3 -2
  110. package/dist/chunks/pk-radio-D0eqmnlH.js.map +1 -0
  111. package/dist/chunks/{pk-radio-group-CruMBeeF.js → pk-radio-group-BehEZG_k.js} +8 -7
  112. package/dist/chunks/pk-radio-group-BehEZG_k.js.map +1 -0
  113. package/dist/chunks/{pk-scroll-area-BaqN798b.js → pk-scroll-area-BeaLZ6k-.js} +3 -2
  114. package/dist/chunks/pk-scroll-area-BeaLZ6k-.js.map +1 -0
  115. package/dist/chunks/{pk-select-UUH7FE4H.js → pk-select-DZNpEk5Z.js} +19 -18
  116. package/dist/chunks/pk-select-DZNpEk5Z.js.map +1 -0
  117. package/dist/chunks/{pk-separator-Bcxg_GO2.js → pk-separator-ZkRowI5Y.js} +3 -2
  118. package/dist/chunks/pk-separator-ZkRowI5Y.js.map +1 -0
  119. package/dist/chunks/{pk-spinner-CN365srE.js → pk-spinner-Bxkn4iVO.js} +3 -2
  120. package/dist/chunks/pk-spinner-Bxkn4iVO.js.map +1 -0
  121. package/dist/chunks/{pk-state-panel-DPP7t-er.js → pk-state-panel-BTo2xiug.js} +7 -6
  122. package/dist/chunks/pk-state-panel-BTo2xiug.js.map +1 -0
  123. package/dist/chunks/{pk-status-CYcadu0Q.js → pk-status-CdiRBRyh.js} +3 -2
  124. package/dist/chunks/pk-status-CdiRBRyh.js.map +1 -0
  125. package/dist/chunks/{pk-tab-BmXNyDg7.js → pk-tab-CSbI3XxX.js} +2 -2
  126. package/dist/chunks/pk-tab-CSbI3XxX.js.map +1 -0
  127. package/dist/chunks/{pk-tab-heading-GZHVmCAd.js → pk-tab-heading-BMyLTBNc.js} +2 -2
  128. package/dist/chunks/pk-tab-heading-BMyLTBNc.js.map +1 -0
  129. package/dist/chunks/{pk-tab-panel-OpM3f_cm.js → pk-tab-panel-sgdRjV8o.js} +2 -2
  130. package/dist/chunks/pk-tab-panel-sgdRjV8o.js.map +1 -0
  131. package/dist/chunks/{pk-tabs-x26NAw-V.js → pk-tabs-bBNCu_4h.js} +10 -7
  132. package/dist/chunks/pk-tabs-bBNCu_4h.js.map +1 -0
  133. package/dist/chunks/{pk-textarea-CBijEmcV.js → pk-textarea-B401dUWa.js} +11 -10
  134. package/dist/chunks/pk-textarea-B401dUWa.js.map +1 -0
  135. package/dist/chunks/{pk-time-picker-D-u5-7pf.js → pk-time-picker-DnNZVwRk.js} +6 -6
  136. package/dist/chunks/pk-time-picker-DnNZVwRk.js.map +1 -0
  137. package/dist/chunks/{pk-tiptap-content-BGxMO3T4.js → pk-tiptap-content-DmS_2EUi.js} +4 -3
  138. package/dist/chunks/pk-tiptap-content-DmS_2EUi.js.map +1 -0
  139. package/dist/chunks/{pk-tiptap-editor-BeuyzH5l.js → pk-tiptap-editor-DCgHtgoi.js} +20 -21
  140. package/dist/chunks/pk-tiptap-editor-DCgHtgoi.js.map +1 -0
  141. package/dist/chunks/{pk-tiptap-input-CQojaxDH.js → pk-tiptap-input-asrD-8W6.js} +7 -6
  142. package/dist/chunks/pk-tiptap-input-asrD-8W6.js.map +1 -0
  143. package/dist/chunks/{pk-toggle-CAtGO_Le.js → pk-toggle-Co8GsHuK.js} +4 -3
  144. package/dist/chunks/pk-toggle-Co8GsHuK.js.map +1 -0
  145. package/dist/chunks/{pk-toggle-group-CLso6OE7.js → pk-toggle-group-Ct1ljI-7.js} +7 -4
  146. package/dist/chunks/pk-toggle-group-Ct1ljI-7.js.map +1 -0
  147. package/dist/chunks/{pk-tooltip-C6yb4CXI.js → pk-tooltip-Cvv2f7T5.js} +7 -6
  148. package/dist/chunks/pk-tooltip-Cvv2f7T5.js.map +1 -0
  149. package/dist/chunks/{popup-content-animation.styles-EUnGV75J.js → popup-content-animation.styles-CJ8zGJz-.js} +1 -1
  150. package/dist/chunks/{popup-content-animation.styles-EUnGV75J.js.map → popup-content-animation.styles-CJ8zGJz-.js.map} +1 -1
  151. package/dist/chunks/{popup-placement-animation-GvFXER7D.js → popup-placement-animation-ClUYI79z.js} +1 -1
  152. package/dist/chunks/{popup-placement-animation-GvFXER7D.js.map → popup-placement-animation-ClUYI79z.js.map} +1 -1
  153. package/dist/chunks/{popup-pointer-BTS3Y6LE.js → popup-pointer-Bh_d205v.js} +1 -1
  154. package/dist/chunks/{popup-pointer-BTS3Y6LE.js.map → popup-pointer-Bh_d205v.js.map} +1 -1
  155. package/dist/chunks/{register-components-Dcdn1e3S.js → register-components-CZtpgZe3.js} +1 -1
  156. package/dist/chunks/{register-components-Dcdn1e3S.js.map → register-components-CZtpgZe3.js.map} +1 -1
  157. package/dist/chunks/{render-BKGW1a68.js → render-DQZp_Rak.js} +1 -1
  158. package/dist/chunks/{render-BKGW1a68.js.map → render-DQZp_Rak.js.map} +1 -1
  159. package/dist/chunks/{required-validator-CaRnQk1V.js → required-validator-I58oJGZ3.js} +1 -1
  160. package/dist/chunks/{required-validator-CaRnQk1V.js.map → required-validator-I58oJGZ3.js.map} +1 -1
  161. package/dist/chunks/{scroll-lock-gTFrvIPu.js → scroll-lock-DE1pElMQ.js} +2 -2
  162. package/dist/chunks/{scroll-lock-gTFrvIPu.js.map → scroll-lock-DE1pElMQ.js.map} +1 -1
  163. package/dist/chunks/{spinner-utils-Co_4X3ip.js → spinner-utils-DXwIxQ6z.js} +1 -1
  164. package/dist/chunks/{spinner-utils-Co_4X3ip.js.map → spinner-utils-DXwIxQ6z.js.map} +1 -1
  165. package/dist/chunks/{supports-popover-6lNVStLh.js → supports-popover-BCqyOPtO.js} +1 -1
  166. package/dist/chunks/{supports-popover-6lNVStLh.js.map → supports-popover-BCqyOPtO.js.map} +1 -1
  167. package/dist/chunks/{sync-listbox-separators-CPFtrpNq.js → sync-listbox-separators-saLEtPpJ.js} +2 -2
  168. package/dist/chunks/{sync-listbox-separators-CPFtrpNq.js.map → sync-listbox-separators-saLEtPpJ.js.map} +1 -1
  169. package/dist/chunks/{tiptap.styles-DjhIrSBN.js → tiptap.styles-Cwb_cj9g.js} +21 -2
  170. package/dist/chunks/{tiptap.styles-DjhIrSBN.js.map → tiptap.styles-Cwb_cj9g.js.map} +1 -1
  171. package/dist/components/alert/pk-alert.js +1 -1
  172. package/dist/components/alert.js +1 -1
  173. package/dist/components/autocomplete/pk-autocomplete.js +1 -1
  174. package/dist/components/autocomplete.js +1 -1
  175. package/dist/components/button/pk-button.js +1 -1
  176. package/dist/components/button-group/pk-button-group-separator.js +1 -1
  177. package/dist/components/button-group/pk-button-group-text.js +1 -1
  178. package/dist/components/button-group/pk-button-group.js +1 -1
  179. package/dist/components/button-group.js +3 -3
  180. package/dist/components/button.js +1 -1
  181. package/dist/components/calendar/pk-calendar.js +1 -1
  182. package/dist/components/calendar.js +1 -1
  183. package/dist/components/checkbox/pk-checkbox.js +1 -1
  184. package/dist/components/checkbox-select/pk-checkbox-select.js +1 -1
  185. package/dist/components/checkbox-select.js +1 -1
  186. package/dist/components/checkbox.js +1 -1
  187. package/dist/components/code-editor/pk-code-editor.js +1 -1
  188. package/dist/components/code-editor.js +1 -1
  189. package/dist/components/color-input/pk-color-input.js +1 -1
  190. package/dist/components/color-input.js +1 -1
  191. package/dist/components/combobox/pk-combobox.js +1 -1
  192. package/dist/components/combobox.js +1 -1
  193. package/dist/components/connect/pk-connect-oauth.js +5 -4
  194. package/dist/components/connect/pk-connect-oauth.js.map +1 -1
  195. package/dist/components/connect/pk-connect.js +7 -6
  196. package/dist/components/connect/pk-connect.js.map +1 -1
  197. package/dist/components/copy-button/pk-copy-button.js +1 -1
  198. package/dist/components/copy-button.js +1 -1
  199. package/dist/components/date-picker/pk-date-picker.js +1 -1
  200. package/dist/components/date-picker.js +1 -1
  201. package/dist/components/dialog/pk-dialog.js +1 -1
  202. package/dist/components/dialog.js +1 -1
  203. package/dist/components/dropdown-menu/pk-dropdown-item.js +1 -1
  204. package/dist/components/dropdown-menu/pk-dropdown-label.js +1 -1
  205. package/dist/components/dropdown-menu/pk-dropdown-menu.js +1 -1
  206. package/dist/components/dropdown-menu/pk-dropdown-separator.js +1 -1
  207. package/dist/components/dropdown-menu/pk-dropdown-separator.js.map +1 -1
  208. package/dist/components/dropdown-menu.js +3 -3
  209. package/dist/components/editable-table/pk-editable-table.js +1 -1
  210. package/dist/components/editable-table.js +1 -1
  211. package/dist/components/field/pk-field.js +1 -1
  212. package/dist/components/field.js +1 -1
  213. package/dist/components/icon/pk-icon.js +2 -1
  214. package/dist/components/icon/pk-icon.js.map +1 -1
  215. package/dist/components/image-browser/pk-image-browser.js +1 -1
  216. package/dist/components/image-browser.js +1 -1
  217. package/dist/components/input/pk-input.js +1 -1
  218. package/dist/components/input-group/pk-input-group-addon.js +1 -1
  219. package/dist/components/input-group/pk-input-group-button.js +1 -1
  220. package/dist/components/input-group/pk-input-group-input.js +1 -1
  221. package/dist/components/input-group/pk-input-group-text.js +1 -1
  222. package/dist/components/input-group/pk-input-group-textarea.js +1 -1
  223. package/dist/components/input-group/pk-input-group.js +1 -1
  224. package/dist/components/input-group.js +6 -6
  225. package/dist/components/input.js +1 -1
  226. package/dist/components/lightswitch/pk-lightswitch.js +1 -1
  227. package/dist/components/lightswitch.js +1 -1
  228. package/dist/components/popover/pk-popover.js +1 -1
  229. package/dist/components/popover.js +1 -1
  230. package/dist/components/popup/pk-popup.js +1 -1
  231. package/dist/components/popup.js +1 -1
  232. package/dist/components/radio-group/pk-radio-group.js +1 -1
  233. package/dist/components/radio-group/pk-radio.js +1 -1
  234. package/dist/components/radio-group.js +2 -2
  235. package/dist/components/scroll-area/pk-scroll-area.js +1 -1
  236. package/dist/components/scroll-area.js +1 -1
  237. package/dist/components/select/pk-option-group.js +1 -1
  238. package/dist/components/select/pk-option.js +1 -1
  239. package/dist/components/select/pk-select.js +1 -1
  240. package/dist/components/select.js +3 -3
  241. package/dist/components/separator/pk-separator.js +1 -1
  242. package/dist/components/separator.js +1 -1
  243. package/dist/components/spinner/pk-spinner.js +1 -1
  244. package/dist/components/spinner.js +2 -2
  245. package/dist/components/state-panel/pk-state-panel.js +1 -1
  246. package/dist/components/state-panel.js +1 -1
  247. package/dist/components/status/pk-status.js +1 -1
  248. package/dist/components/status.js +1 -1
  249. package/dist/components/tabs/pk-tab-heading.js +1 -1
  250. package/dist/components/tabs/pk-tab-panel.js +1 -1
  251. package/dist/components/tabs/pk-tab.js +1 -1
  252. package/dist/components/tabs/pk-tabs.js +1 -1
  253. package/dist/components/tabs.js +4 -4
  254. package/dist/components/textarea/pk-textarea.js +1 -1
  255. package/dist/components/textarea.js +1 -1
  256. package/dist/components/time-picker/pk-time-picker.js +1 -1
  257. package/dist/components/time-picker.js +1 -1
  258. package/dist/components/tiptap/pk-tiptap-content.js +1 -1
  259. package/dist/components/tiptap/pk-tiptap-editor.js +1 -1
  260. package/dist/components/tiptap/pk-tiptap-input.js +1 -1
  261. package/dist/components/tiptap/tiptap.styles.d.ts.map +1 -1
  262. package/dist/components/tiptap-content.js +1 -1
  263. package/dist/components/tiptap-editor.js +1 -1
  264. package/dist/components/tiptap-input.js +1 -1
  265. package/dist/components/toggle/pk-toggle.js +1 -1
  266. package/dist/components/toggle-group/pk-toggle-group.js +1 -1
  267. package/dist/components/toggle-group.js +1 -1
  268. package/dist/components/toggle.js +1 -1
  269. package/dist/components/tooltip/pk-tooltip.js +1 -1
  270. package/dist/components/tooltip.js +1 -1
  271. package/dist/connect/register-cp-connect.js +4 -4
  272. package/dist/connect/register-cp-connect.js.map +1 -1
  273. package/dist/icons/index.js +2 -2
  274. package/dist/index.js +67 -67
  275. package/dist/plugin-kit.js +4 -4
  276. package/dist/plugin-kit.js.map +1 -1
  277. package/dist/register-components.js +1 -1
  278. package/dist/register.js +120 -55
  279. package/dist/register.js.map +1 -0
  280. package/dist-loader/chunks/{button-group-item.styles-CXLuiMeZ.js → button-group-item.styles-BQbvE3sC.js} +1 -1
  281. package/dist-loader/chunks/{codemirror-CU2NB7wh.js → codemirror-C_TTKlG1.js} +584 -436
  282. package/dist-loader/chunks/editor-CS16rBkM.js +110 -0
  283. package/dist-loader/chunks/{floating-ui-B84As3F-.js → floating-ui-BJQPB-Ip.js} +9 -11
  284. package/dist-loader/chunks/{lit-s6aadvWG.js → lit-B6nFKgbW.js} +52 -14
  285. package/dist-loader/chunks/{option-filter-DH11hDpV.js → option-filter-BkKyBg8L.js} +1 -1
  286. package/dist-loader/chunks/{pk-a11y-CjB4-U-R.js → pk-a11y-mGj0G5AE.js} +1 -1
  287. package/dist-loader/chunks/{pk-base-Om6X9ab5.js → pk-base-BGegy7-X.js} +2 -2
  288. package/dist-loader/chunks/{pk-button-nSZxt8_B.js → pk-button-DV9Tk5Pd.js} +5 -5
  289. package/dist-loader/chunks/{pk-calendar-BS7Mfme_.js → pk-calendar-C0xpIVIw.js} +9 -9
  290. package/dist-loader/chunks/{pk-checkbox-CYUcOnco.js → pk-checkbox-DhP0iMoP.js} +9 -6
  291. package/dist-loader/chunks/{pk-color-input-BjDit7z0.js → pk-color-input-B02cYzyr.js} +4 -4
  292. package/dist-loader/chunks/{pk-combobox-DyexEhFo.js → pk-combobox-S_tpNUHK.js} +19 -18
  293. package/dist-loader/chunks/{pk-connect.styles-BsPAXjgF.js → pk-connect.styles-B5qe5yQB.js} +1 -1
  294. package/dist-loader/chunks/{pk-copy-button-CoN83ilF.js → pk-copy-button-D6tPuhJ3.js} +6 -6
  295. package/dist-loader/chunks/{pk-date-picker-CO6deRCu.js → pk-date-picker-C0y4sfSf.js} +15 -15
  296. package/dist-loader/chunks/{pk-dialog-BWo6iDnY.js → pk-dialog-BJs5fVHS.js} +7 -7
  297. package/dist-loader/chunks/{pk-dropdown-item-CbujjI8U.js → pk-dropdown-item-Bs5NZDRh.js} +11 -9
  298. package/dist-loader/chunks/{pk-dropdown-label-9X4ctyES.js → pk-dropdown-label-Cpl9-bzB.js} +2 -2
  299. package/dist-loader/chunks/{pk-dropdown-menu-D1KpGuqU.js → pk-dropdown-menu-CLrfuD3i.js} +20 -17
  300. package/dist-loader/chunks/{pk-field-DzggayrX.js → pk-field-Pg61fxBR.js} +140 -74
  301. package/dist-loader/chunks/{pk-icon-DQPqxFKW.js → pk-icon-B7ywfPb6.js} +4 -4
  302. package/dist-loader/chunks/{pk-input-C1peOijH.js → pk-input-Cj5s8eBT.js} +10 -10
  303. package/dist-loader/chunks/{pk-lightswitch-Y-I3eKCt.js → pk-lightswitch-rUGB1p8q.js} +6 -6
  304. package/dist-loader/chunks/{pk-option-IfazQDxz.js → pk-option-B-MeLvZf.js} +8 -7
  305. package/dist-loader/chunks/{pk-popup-BrLT_4kD.js → pk-popup-CeyruJFh.js} +35 -29
  306. package/dist-loader/chunks/{pk-select-49fogRYV.js → pk-select-JUx3mxRS.js} +14 -14
  307. package/dist-loader/chunks/{pk-spinner-BmnrA60m.js → pk-spinner-B8iuHDQ9.js} +2 -2
  308. package/dist-loader/chunks/{pk-state-panel-DKf54EnJ.js → pk-state-panel-BhdZGllL.js} +7 -7
  309. package/dist-loader/chunks/{pk-status-Dat3_D-T.js → pk-status-D3qVwWlR.js} +2 -2
  310. package/dist-loader/chunks/{pk-textarea-DPb2R8gV.js → pk-textarea-KnpJMQX2.js} +7 -7
  311. package/dist-loader/chunks/{pk-time-picker-CJiQTVuC.js → pk-time-picker-DCqZ5z7M.js} +6 -6
  312. package/dist-loader/chunks/{pk-tooltip-CqwQfOPV.js → pk-tooltip-DStkplzy.js} +6 -6
  313. package/dist-loader/chunks/{popup-content-animation.styles-CWR2mend.js → popup-content-animation.styles-BtUVJg82.js} +1 -1
  314. package/dist-loader/chunks/{render-BuA2YeZN.js → render-D9G_a_c2.js} +1 -1
  315. package/dist-loader/chunks/{sync-listbox-separators-rbu8jrAa.js → sync-listbox-separators-saLEtPpJ.js} +1 -1
  316. package/dist-loader/chunks/{tiptap-BhYH5Dva.js → tiptap-DYSRDaas.js} +10392 -7521
  317. package/dist-loader/chunks/tiptap.styles-CZUkf2K6.js +915 -0
  318. package/dist-loader/components/alert/alert.js +8 -7
  319. package/dist-loader/components/autocomplete/autocomplete.js +15 -15
  320. package/dist-loader/components/button/button.js +1 -1
  321. package/dist-loader/components/button-group/button-group-separator.js +2 -2
  322. package/dist-loader/components/button-group/button-group-text.js +3 -3
  323. package/dist-loader/components/button-group/button-group.js +9 -7
  324. package/dist-loader/components/calendar/calendar.js +1 -1
  325. package/dist-loader/components/checkbox/checkbox.js +1 -1
  326. package/dist-loader/components/checkbox-select/checkbox-select.js +3 -3
  327. package/dist-loader/components/code-editor/code-editor.js +4 -4
  328. package/dist-loader/components/color-input/color-input.js +1 -1
  329. package/dist-loader/components/combobox/combobox.js +1 -1
  330. package/dist-loader/components/connect/connect-oauth.js +5 -5
  331. package/dist-loader/components/connect/connect.js +8 -8
  332. package/dist-loader/components/copy-button/copy-button.js +1 -1
  333. package/dist-loader/components/date-picker/date-picker.js +1 -1
  334. package/dist-loader/components/dialog/dialog.js +1 -1
  335. package/dist-loader/components/dropdown-menu/dropdown-item.js +1 -1
  336. package/dist-loader/components/dropdown-menu/dropdown-label.js +1 -1
  337. package/dist-loader/components/dropdown-menu/dropdown-menu.js +1 -1
  338. package/dist-loader/components/dropdown-menu/dropdown-separator.js +2 -2
  339. package/dist-loader/components/editable-table/editable-table.js +25 -23
  340. package/dist-loader/components/field/field.js +1 -1
  341. package/dist-loader/components/icon/icon.js +3 -3
  342. package/dist-loader/components/image-browser/image-browser.js +15 -16
  343. package/dist-loader/components/input/input.js +1 -1
  344. package/dist-loader/components/input-group/input-group-addon.js +2 -2
  345. package/dist-loader/components/input-group/input-group-button.js +2 -2
  346. package/dist-loader/components/input-group/input-group-input.js +2 -2
  347. package/dist-loader/components/input-group/input-group-text.js +2 -2
  348. package/dist-loader/components/input-group/input-group-textarea.js +2 -2
  349. package/dist-loader/components/input-group/input-group.js +3 -3
  350. package/dist-loader/components/lightswitch/lightswitch.js +1 -1
  351. package/dist-loader/components/popover/popover.js +9 -9
  352. package/dist-loader/components/popup/popup.js +1 -1
  353. package/dist-loader/components/radio-group/radio-group.js +5 -5
  354. package/dist-loader/components/radio-group/radio.js +2 -2
  355. package/dist-loader/components/scroll-area/scroll-area.js +2 -2
  356. package/dist-loader/components/select/option-group.js +3 -3
  357. package/dist-loader/components/select/option.js +1 -1
  358. package/dist-loader/components/select/select.js +1 -1
  359. package/dist-loader/components/separator/separator.js +2 -2
  360. package/dist-loader/components/spinner/spinner.js +1 -1
  361. package/dist-loader/components/state-panel/state-panel.js +1 -1
  362. package/dist-loader/components/status/status.js +1 -1
  363. package/dist-loader/components/tabs/tab-heading.js +2 -2
  364. package/dist-loader/components/tabs/tab-panel.js +2 -2
  365. package/dist-loader/components/tabs/tab.js +2 -2
  366. package/dist-loader/components/tabs/tabs.js +9 -7
  367. package/dist-loader/components/textarea/textarea.js +1 -1
  368. package/dist-loader/components/time-picker/time-picker.js +1 -1
  369. package/dist-loader/components/tiptap/tiptap-content.js +5 -4
  370. package/dist-loader/components/tiptap/tiptap-editor.js +594 -20
  371. package/dist-loader/components/tiptap/tiptap-input.js +273 -5
  372. package/dist-loader/components/toggle/toggle.js +3 -3
  373. package/dist-loader/components/toggle-group/toggle-group.js +6 -4
  374. package/dist-loader/components/tooltip/tooltip.js +1 -1
  375. package/dist-loader/plugin-kit.loader.js +2 -1
  376. package/package.json +9 -9
  377. package/dist/chunks/pk-alert-Cjxl6CY_.js.map +0 -1
  378. package/dist/chunks/pk-autocomplete-DA77kdTN.js.map +0 -1
  379. package/dist/chunks/pk-button-DCtNLEPr.js.map +0 -1
  380. package/dist/chunks/pk-button-group-DBdKK_2_.js.map +0 -1
  381. package/dist/chunks/pk-button-group-separator-D0Aa0a0f.js.map +0 -1
  382. package/dist/chunks/pk-button-group-text-BsqEM-dB.js.map +0 -1
  383. package/dist/chunks/pk-calendar-hBz1MnOu.js.map +0 -1
  384. package/dist/chunks/pk-checkbox-dvHRoVbL.js.map +0 -1
  385. package/dist/chunks/pk-checkbox-select-Cqx5ZCMq.js.map +0 -1
  386. package/dist/chunks/pk-code-editor-C_PqjR75.js.map +0 -1
  387. package/dist/chunks/pk-color-input-4LDV0Z3W.js.map +0 -1
  388. package/dist/chunks/pk-combobox-BeddzAsl.js.map +0 -1
  389. package/dist/chunks/pk-copy-button-KegSx46o.js.map +0 -1
  390. package/dist/chunks/pk-date-picker-D_JFep-Y.js.map +0 -1
  391. package/dist/chunks/pk-dialog-CFU850OH.js.map +0 -1
  392. package/dist/chunks/pk-dropdown-item-A4P4zfVF.js.map +0 -1
  393. package/dist/chunks/pk-dropdown-label-PqDxMkCI.js.map +0 -1
  394. package/dist/chunks/pk-dropdown-menu-C_vasBoa.js.map +0 -1
  395. package/dist/chunks/pk-editable-table-B85NhFYY.js.map +0 -1
  396. package/dist/chunks/pk-field-BJA2fZ6s.js.map +0 -1
  397. package/dist/chunks/pk-form-associated-element-MqaHdIoH.js.map +0 -1
  398. package/dist/chunks/pk-image-browser-DLAQcjFt.js.map +0 -1
  399. package/dist/chunks/pk-input-CiUNLTSW.js.map +0 -1
  400. package/dist/chunks/pk-input-group-addon-piOznzSS.js.map +0 -1
  401. package/dist/chunks/pk-input-group-button-Di2vEJLo.js.map +0 -1
  402. package/dist/chunks/pk-input-group-input-CwaaEfr1.js.map +0 -1
  403. package/dist/chunks/pk-input-group-k7WV0pQI.js.map +0 -1
  404. package/dist/chunks/pk-input-group-text-C0VAdy0J.js.map +0 -1
  405. package/dist/chunks/pk-input-group-textarea-DOG1NIlE.js.map +0 -1
  406. package/dist/chunks/pk-lightswitch-FH5ZxMG2.js.map +0 -1
  407. package/dist/chunks/pk-option-Cx52kLmz.js.map +0 -1
  408. package/dist/chunks/pk-option-group-CYo9Ukue.js.map +0 -1
  409. package/dist/chunks/pk-popover-209LdoPr.js.map +0 -1
  410. package/dist/chunks/pk-popup-0EIt9X_W.js.map +0 -1
  411. package/dist/chunks/pk-radio-group-CruMBeeF.js.map +0 -1
  412. package/dist/chunks/pk-radio-jgj6A0Wy.js.map +0 -1
  413. package/dist/chunks/pk-scroll-area-BaqN798b.js.map +0 -1
  414. package/dist/chunks/pk-select-UUH7FE4H.js.map +0 -1
  415. package/dist/chunks/pk-separator-Bcxg_GO2.js.map +0 -1
  416. package/dist/chunks/pk-spinner-CN365srE.js.map +0 -1
  417. package/dist/chunks/pk-state-panel-DPP7t-er.js.map +0 -1
  418. package/dist/chunks/pk-status-CYcadu0Q.js.map +0 -1
  419. package/dist/chunks/pk-tab-BmXNyDg7.js.map +0 -1
  420. package/dist/chunks/pk-tab-heading-GZHVmCAd.js.map +0 -1
  421. package/dist/chunks/pk-tab-panel-OpM3f_cm.js.map +0 -1
  422. package/dist/chunks/pk-tabs-x26NAw-V.js.map +0 -1
  423. package/dist/chunks/pk-textarea-CBijEmcV.js.map +0 -1
  424. package/dist/chunks/pk-time-picker-D-u5-7pf.js.map +0 -1
  425. package/dist/chunks/pk-tiptap-content-BGxMO3T4.js.map +0 -1
  426. package/dist/chunks/pk-tiptap-editor-BeuyzH5l.js.map +0 -1
  427. package/dist/chunks/pk-tiptap-input-CQojaxDH.js.map +0 -1
  428. package/dist/chunks/pk-toggle-CAtGO_Le.js.map +0 -1
  429. package/dist/chunks/pk-toggle-group-CLso6OE7.js.map +0 -1
  430. package/dist/chunks/pk-tooltip-C6yb4CXI.js.map +0 -1
  431. package/dist/chunks/register-BDO_LUHK.js +0 -154
  432. package/dist/chunks/register-BDO_LUHK.js.map +0 -1
  433. package/dist-loader/chunks/rolldown-runtime-CzwdidQP.js +0 -13
  434. package/dist-loader/chunks/supports-popover-COjbi2RP.js +0 -5
  435. package/dist-loader/chunks/tiptap.styles-BckAim0_.js +0 -1848
  436. /package/dist-loader/chunks/{animate-with-class-BpZi7v-y.js → animate-with-class-CjTZI0NU.js} +0 -0
  437. /package/dist-loader/chunks/{field-labels-D7ccWdRn.js → field-labels-pY-gQDwQ.js} +0 -0
  438. /package/dist-loader/chunks/{has-slot-BvdEcnpm.js → has-slot-DJv86HKx.js} +0 -0
  439. /package/dist-loader/chunks/{mirror-validator-9X0wdFnh.js → mirror-validator-BkZlEv1Z.js} +0 -0
  440. /package/dist-loader/chunks/{overlay-lifecycle-CSIBJZgQ.js → overlay-lifecycle-C582MGBJ.js} +0 -0
  441. /package/dist-loader/chunks/{pk-clear-BL8m1NyC.js → pk-clear-DHxP_2cm.js} +0 -0
  442. /package/dist-loader/chunks/{popup-placement-animation-BQdKabXq.js → popup-placement-animation-ClUYI79z.js} +0 -0
  443. /package/dist-loader/chunks/{popup-pointer-BNwlPGKA.js → popup-pointer-Bh_d205v.js} +0 -0
  444. /package/dist-loader/chunks/{registry-BanyScVR.js → registry-CJc164pT.js} +0 -0
  445. /package/dist-loader/chunks/{required-validator-DCTovZ6r.js → required-validator-I58oJGZ3.js} +0 -0
  446. /package/dist-loader/chunks/{svg-C6YcJMk9.js → svg-BRgqS9vA.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pk-button-group-BY12Lbk7.js","names":["_decorate"],"sources":["../../src/components/button-group/pk-button-group.styles.ts","../../src/components/button-group/pk-button-group.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkButtonGroupStyles = css`\n @layer pk-component {\n :host {\n display: inline-flex;\n width: fit-content;\n vertical-align: middle;\n }\n\n .group {\n display: flex;\n position: relative;\n isolation: isolate;\n flex-wrap: nowrap;\n gap: 0;\n width: fit-content;\n max-width: 100%;\n align-items: stretch;\n }\n\n :host([orientation='horizontal']) .group {\n flex-direction: row;\n }\n\n :host([orientation='vertical']) .group {\n flex-direction: column;\n align-items: stretch;\n }\n\n :host([orientation='vertical']) ::slotted(pk-button),\n :host([orientation='vertical']) ::slotted(pk-toggle),\n :host([orientation='vertical']) ::slotted(pk-input),\n :host([orientation='vertical']) ::slotted(pk-input-group),\n :host([orientation='vertical']) ::slotted(.button-group-text),\n :host([orientation='vertical']) ::slotted(select.button-group-select) {\n align-self: stretch;\n width: 100%;\n max-width: 100%;\n box-sizing: border-box;\n }\n\n @media (hover: hover) {\n .group > :hover,\n ::slotted(:hover) {\n z-index: 1;\n }\n }\n\n .group > :focus-visible,\n ::slotted(:focus-visible),\n ::slotted(:focus-within),\n ::slotted([aria-checked='true']),\n ::slotted([checked]) {\n position: relative;\n z-index: 2;\n }\n\n /* Flush join: filled controls sit edge-to-edge; outlined controls overlap 1px to collapse borders */\n :host([orientation='horizontal']) {\n --pk-bg-horizontal-indent: 0;\n --pk-bg-horizontal-indent-outlined: -1px;\n --pk-btn-group-gap: 1px;\n --pk-btn-group-divider-color-outline: var(--pk-color-slate-400);\n --pk-btn-group-divider-color-dashed: var(--pk-color-slate-500);\n }\n\n :host([orientation='vertical']) {\n --pk-bg-vertical-indent: 0;\n --pk-bg-vertical-indent-outlined: -1px;\n --pk-btn-group-gap: 1px;\n --pk-btn-group-divider-color-outline: var(--pk-color-slate-400);\n --pk-btn-group-divider-color-dashed: var(--pk-color-slate-500);\n }\n\n :host([separators][orientation='horizontal']) {\n --pk-bg-horizontal-indent: 0;\n }\n\n :host([separators][orientation='vertical']) {\n --pk-bg-vertical-indent: 0;\n }\n\n ::slotted([data-pk-group-orientation='horizontal']:not([data-pk-group-item-first]):not([data-pk-group-item-last])) {\n --pk-bg-start-start-radius: 0;\n --pk-bg-start-end-radius: 0;\n --pk-bg-end-start-radius: 0;\n --pk-bg-end-end-radius: 0;\n }\n\n ::slotted([data-pk-group-orientation='horizontal'][data-pk-group-item-first]:not([data-pk-group-item-last])) {\n --pk-bg-start-end-radius: 0;\n --pk-bg-end-end-radius: 0;\n }\n\n ::slotted([data-pk-group-orientation='horizontal'][data-pk-group-item-last]:not([data-pk-group-item-first])) {\n --pk-bg-start-start-radius: 0;\n --pk-bg-end-start-radius: 0;\n }\n\n ::slotted([data-pk-group-orientation='vertical']:not([data-pk-group-item-first]):not([data-pk-group-item-last])) {\n --pk-bg-start-start-radius: 0;\n --pk-bg-start-end-radius: 0;\n --pk-bg-end-start-radius: 0;\n --pk-bg-end-end-radius: 0;\n }\n\n ::slotted([data-pk-group-orientation='vertical'][data-pk-group-item-first]:not([data-pk-group-item-last])) {\n --pk-bg-end-start-radius: 0;\n --pk-bg-end-end-radius: 0;\n }\n\n ::slotted([data-pk-group-orientation='vertical'][data-pk-group-item-last]:not([data-pk-group-item-first])) {\n --pk-bg-start-start-radius: 0;\n --pk-bg-start-end-radius: 0;\n }\n\n :host([exclusive]) ::slotted(pk-button[aria-pressed='true']) {\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:has(::slotted(pk-button-group-separator)) {\n --pk-btn-group-separator-color: transparent;\n }\n\n ::slotted(pk-input),\n ::slotted(pk-input-group) {\n width: auto;\n flex: 0 1 auto;\n align-self: stretch;\n }\n\n ::slotted(pk-popover),\n ::slotted(pk-dropdown-menu) {\n display: inline-flex;\n align-self: auto;\n flex: 0 0 auto;\n }\n\n ::slotted(.button-group-text) {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n min-height: var(--pk-btn-height-default);\n padding: 0 0.625rem;\n border-width: 1px;\n border-style: solid;\n border-color: var(--pk-color-slate-400);\n background: var(--pk-color-gray-100);\n color: var(--pk-color-gray-700);\n font-family: var(--pk-font-family);\n font-size: var(--pk-font-size-sm);\n font-weight: 500;\n line-height: var(--pk-line-height);\n box-sizing: border-box;\n white-space: nowrap;\n border-top-left-radius: var(--pk-bg-start-start-radius, var(--pk-radius-lg));\n border-top-right-radius: var(--pk-bg-start-end-radius, var(--pk-radius-lg));\n border-bottom-left-radius: var(--pk-bg-end-start-radius, var(--pk-radius-lg));\n border-bottom-right-radius: var(--pk-bg-end-end-radius, var(--pk-radius-lg));\n }\n\n :host([orientation='horizontal']) ::slotted([data-pk-group-orientation='horizontal'][data-pk-group-join]:not([data-pk-group-divider]).button-group-text),\n :host([orientation='horizontal']) ::slotted([data-pk-group-orientation='horizontal'][data-pk-group-join]:not([data-pk-group-divider])select.button-group-select),\n :host([orientation='horizontal']) ::slotted([data-pk-group-orientation='horizontal'][data-pk-group-join]:not([data-pk-group-divider])pk-input-group) {\n margin-inline-start: var(--pk-bg-horizontal-indent-outlined, 0);\n border-left-width: 0;\n }\n\n :host([orientation='vertical']) ::slotted([data-pk-group-orientation='vertical'][data-pk-group-join]:not([data-pk-group-divider]).button-group-text),\n :host([orientation='vertical']) ::slotted([data-pk-group-orientation='vertical'][data-pk-group-join]:not([data-pk-group-divider])select.button-group-select),\n :host([orientation='vertical']) ::slotted([data-pk-group-orientation='vertical'][data-pk-group-join]:not([data-pk-group-divider])pk-input-group) {\n margin-block-start: var(--pk-bg-vertical-indent-outlined, 0);\n border-top-width: 0;\n }\n\n ::slotted(select.button-group-select) {\n display: block;\n margin: 0;\n padding: 0 10px;\n border-width: 1px;\n border-style: solid;\n border-color: var(--pk-color-slate-400);\n background: var(--pk-color-white);\n color: var(--pk-color-gray-900);\n font-family: var(--pk-font-family);\n font-size: var(--pk-font-size-base);\n line-height: 1.4;\n appearance: none;\n box-sizing: border-box;\n align-self: stretch;\n min-height: var(--pk-btn-height-default);\n height: var(--pk-btn-height-default);\n border-top-left-radius: var(--pk-bg-start-start-radius, var(--pk-radius-lg));\n border-top-right-radius: var(--pk-bg-start-end-radius, var(--pk-radius-lg));\n border-bottom-left-radius: var(--pk-bg-end-start-radius, var(--pk-radius-lg));\n border-bottom-right-radius: var(--pk-bg-end-end-radius, var(--pk-radius-lg));\n }\n\n ::slotted(pk-separator) {\n align-self: stretch;\n }\n\n ::slotted(pk-separator[orientation='vertical']),\n ::slotted(pk-button-group-separator) {\n height: auto;\n flex-shrink: 0;\n }\n\n :host([orientation='horizontal']) ::slotted([data-pk-group-orientation='horizontal'][data-pk-group-divider][data-pk-group-join].button-group-text),\n :host([orientation='horizontal']) ::slotted([data-pk-group-orientation='horizontal'][data-pk-group-divider][data-pk-group-join]select.button-group-select),\n :host([orientation='horizontal']) ::slotted([data-pk-group-orientation='horizontal'][data-pk-group-divider][data-pk-group-join]pk-input-group) {\n margin-inline-start: var(--pk-bg-horizontal-indent-outlined, 0);\n }\n\n :host([orientation='vertical']) ::slotted([data-pk-group-orientation='vertical'][data-pk-group-divider][data-pk-group-join].button-group-text),\n :host([orientation='vertical']) ::slotted([data-pk-group-orientation='vertical'][data-pk-group-divider][data-pk-group-join]select.button-group-select),\n :host([orientation='vertical']) ::slotted([data-pk-group-orientation='vertical'][data-pk-group-divider][data-pk-group-join]pk-input-group) {\n margin-block-start: var(--pk-bg-vertical-indent-outlined, 0);\n }\n\n :host([orientation='horizontal']) ::slotted(.button-group-text[data-pk-group-divider]),\n :host([orientation='horizontal']) ::slotted(select.button-group-select[data-pk-group-divider]),\n :host([orientation='horizontal']) ::slotted(pk-input-group[data-pk-group-divider]) {\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 box-shadow: none;\n }\n\n :host([orientation='vertical']) ::slotted(.button-group-text[data-pk-group-divider]),\n :host([orientation='vertical']) ::slotted(select.button-group-select[data-pk-group-divider]),\n :host([orientation='vertical']) ::slotted(pk-input-group[data-pk-group-divider]) {\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 box-shadow: none;\n }\n\n :host([orientation='horizontal']) ::slotted([data-pk-group-internal-trail].button-group-text),\n :host([orientation='horizontal']) ::slotted([data-pk-group-internal-trail].button-group-select),\n :host([orientation='horizontal']) ::slotted([data-pk-group-internal-trail]select.button-group-select),\n :host([orientation='horizontal']) ::slotted([data-pk-group-internal-trail]pk-input-group) {\n border-right-width: 0;\n }\n\n :host([orientation='vertical']) ::slotted([data-pk-group-internal-trail].button-group-text),\n :host([orientation='vertical']) ::slotted([data-pk-group-internal-trail].button-group-select),\n :host([orientation='vertical']) ::slotted([data-pk-group-internal-trail]select.button-group-select),\n :host([orientation='vertical']) ::slotted([data-pk-group-internal-trail]pk-input-group) {\n border-bottom-width: 0;\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport { customElement, property, query } from '../../decorators.js';\nimport type { PropertyValues } from 'lit';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkButtonGroupStyles } from './pk-button-group.styles.js';\n\nexport type PkButtonGroupOrientation = 'horizontal' | 'vertical';\n\nconst GROUP_JOIN_ATTR = 'data-pk-group-join';\nconst GROUP_DIVIDER_ATTR = 'data-pk-group-divider';\nconst GROUP_ITEM_FIRST = 'data-pk-group-item-first';\nconst GROUP_ITEM_LAST = 'data-pk-group-item-last';\nconst GROUP_INTERNAL_TRAIL = 'data-pk-group-internal-trail';\nconst GROUP_BTN_LAST = 'data-pk-group-btn-last';\nconst GROUP_ORIENTATION_ATTR = 'data-pk-group-orientation';\nconst GROUP_SEPARATOR_TAGS = new Set(['PK-SEPARATOR', 'PK-BUTTON-GROUP-SEPARATOR']);\nconst OVERLAY_WRAPPER_TAGS = new Set(['PK-POPOVER', 'PK-DROPDOWN-MENU']);\n\n/** Boolean attribute defaulting to true — absent means on; `separators=\"false\"` opts out. */\nconst separatorsConverter = {\n fromAttribute(value: string | null): boolean {\n if (value === null) {\n return true;\n }\n\n return value !== 'false';\n },\n toAttribute(value: boolean): string | null {\n if (value) {\n return '';\n }\n\n return 'false';\n },\n};\n\nfunction isGroupSeparator(element: Element): boolean {\n return GROUP_SEPARATOR_TAGS.has(element.tagName);\n}\n\nfunction getLayoutTarget(element: Element): Element {\n if (OVERLAY_WRAPPER_TAGS.has(element.tagName)) {\n return element.querySelector('[slot=\"trigger\"]') ?? element;\n }\n\n return element;\n}\n\nfunction getLayoutTargets(element: Element): Element[] {\n if (OVERLAY_WRAPPER_TAGS.has(element.tagName)) {\n const trigger = getLayoutTarget(element);\n\n return trigger === element ? [element] : [element, trigger];\n }\n\n return [element];\n}\n\nfunction getCornerTargets(element: Element, surface: Element): Element[] {\n return element === surface ? [element] : [element, surface];\n}\n\nfunction collectSyncTargets(element: Element): Element[] {\n const surface = getLayoutTarget(element);\n\n return [...new Set([...getLayoutTargets(element), ...getCornerTargets(element, surface)])];\n}\n\nfunction clearLayoutAttrs(element: Element): void {\n for (const target of collectSyncTargets(element)) {\n target.removeAttribute(GROUP_JOIN_ATTR);\n target.removeAttribute(GROUP_DIVIDER_ATTR);\n target.removeAttribute(GROUP_ITEM_FIRST);\n target.removeAttribute(GROUP_ITEM_LAST);\n target.removeAttribute(GROUP_INTERNAL_TRAIL);\n target.removeAttribute(GROUP_BTN_LAST);\n target.removeAttribute(GROUP_ORIENTATION_ATTR);\n }\n}\n\nfunction isGroupTrigger(element: Element): boolean {\n const target = getLayoutTarget(element);\n\n return target.hasAttribute('group-trigger')\n || element.hasAttribute('group-trigger');\n}\n\nfunction splitSegments(items: Element[]): Element[][] {\n const segments: Element[][] = [];\n let current: Element[] = [];\n\n for (const item of items) {\n if (isGroupSeparator(item)) {\n if (current.length) {\n segments.push(current);\n }\n\n current = [];\n continue;\n }\n\n current.push(item);\n }\n\n if (current.length) {\n segments.push(current);\n }\n\n return segments;\n}\n\n/**\n * Visually groups related buttons — `pk-button-group` pattern (CSS var join, no JS).\n *\n * @slot - Buttons, toolbars, and overlay triggers\n *\n * @csspart base - Group container\n */\n@customElement('pk-button-group')\nexport class PkButtonGroup extends PkElement {\n static override styles = pkButtonGroupStyles;\n\n @property({ reflect: true })\n orientation: PkButtonGroupOrientation = 'horizontal';\n\n /**\n * Draw 1px dividers between adjacent controls (Craft default).\n * Set `separators=\"false\"` for flush join. Explicit `pk-button-group-separator` elements always work for segment splits.\n */\n @property({ type: Boolean, reflect: true, converter: separatorsConverter })\n separators = true;\n\n /**\n * Exclusive icon/text toggle styling — Craft `.btngroup--exclusive`.\n * Use with `pk-toggle` items for view-mode pickers.\n */\n @property({ type: Boolean, reflect: true })\n exclusive = false;\n\n /** Accessible label for the group — `pk-button-group.label`. */\n @property()\n label = '';\n\n @query('slot:not([name])')\n private defaultSlot!: HTMLSlotElement;\n\n override firstUpdated(): void {\n this.scheduleSyncGroupLayout();\n }\n\n override updated(changed: PropertyValues): void {\n if (changed.has('orientation')) {\n this.setAttribute('aria-orientation', this.orientation);\n this.scheduleSyncGroupLayout();\n }\n\n if (changed.has('label')) {\n if (this.label) {\n this.setAttribute('aria-label', this.label);\n } else {\n this.removeAttribute('aria-label');\n }\n }\n\n if (changed.has('separators') || changed.has('exclusive')) {\n this.scheduleSyncGroupLayout();\n }\n }\n\n private scheduleSyncGroupLayout(): void {\n this.syncGroupLayout();\n queueMicrotask(() => this.syncGroupLayout());\n }\n\n private handleSlotChange(): void {\n this.scheduleSyncGroupLayout();\n }\n\n /** Overlap-join adjacent items within each segment; 1px divider between joins when `separators` is on. */\n private syncGroupLayout(): void {\n const items = this.defaultSlot?.assignedElements({ flatten: true }) ?? [];\n const segments = splitSegments(items);\n\n for (const element of items) {\n clearLayoutAttrs(element);\n }\n\n for (const element of items) {\n for (const target of collectSyncTargets(element)) {\n target.setAttribute(GROUP_ORIENTATION_ATTR, this.orientation);\n }\n }\n\n for (let segmentIndex = 0; segmentIndex < segments.length; segmentIndex++) {\n const segment = segments[segmentIndex];\n const isFirstSegment = segmentIndex === 0;\n const isLastSegment = segmentIndex === segments.length - 1;\n\n for (let index = 0; index < segment.length; index++) {\n const element = segment[index];\n const surface = getLayoutTarget(element);\n const cornerTargets = getCornerTargets(element, surface);\n const isOnly = segment.length === 1;\n const isFirst = index === 0;\n const isLast = index === segment.length - 1;\n\n for (const target of cornerTargets) {\n if (isOnly) {\n if (isFirstSegment) {\n target.setAttribute(GROUP_ITEM_FIRST, '');\n }\n\n if (isLastSegment) {\n target.setAttribute(GROUP_ITEM_LAST, '');\n }\n } else {\n if (isFirst) {\n target.setAttribute(GROUP_ITEM_FIRST, '');\n }\n\n if (isLast) {\n target.setAttribute(GROUP_ITEM_LAST, '');\n }\n }\n }\n\n if (isFirst) {\n if (this.separators && !isLast) {\n for (const target of getLayoutTargets(element)) {\n target.setAttribute(GROUP_INTERNAL_TRAIL, '');\n }\n }\n\n continue;\n }\n\n for (const target of getLayoutTargets(element)) {\n target.setAttribute(GROUP_JOIN_ATTR, '');\n\n if (this.separators) {\n target.setAttribute(GROUP_DIVIDER_ATTR, '');\n }\n }\n\n if (this.separators && !isLast) {\n for (const target of getLayoutTargets(element)) {\n target.setAttribute(GROUP_INTERNAL_TRAIL, '');\n }\n }\n\n if (isGroupTrigger(element)) {\n surface.setAttribute(GROUP_BTN_LAST, '');\n }\n }\n }\n }\n\n override render() {\n return html`\n <div part=\"base\" class=\"group\" role=\"group\" aria-label=${this.label || nothing}>\n <slot @slotchange=${this.handleSlotChange}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-button-group': PkButtonGroup;\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { i as property, n as PkElement, s as customElement, t as __decorate } from "./decorate-R0X811qp.js";
1
+ import { i as customElement, n as PkElement, t as __decorate } from "./decorate-Br_PE9pq.js";
2
+ import { t as property } from "./decorators-BkErmuYK.js";
2
3
  import { css, html } from "lit";
3
4
  //#region src/components/button-group/pk-button-group-separator.styles.ts
4
5
  var pkButtonGroupSeparatorStyles = css`
@@ -57,4 +58,4 @@ PkButtonGroupSeparator = __decorate([customElement("pk-button-group-separator")]
57
58
  //#endregion
58
59
  export { PkButtonGroupSeparator as t };
59
60
 
60
- //# sourceMappingURL=pk-button-group-separator-D0Aa0a0f.js.map
61
+ //# sourceMappingURL=pk-button-group-separator-B1a8dP9A.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pk-button-group-separator-B1a8dP9A.js","names":["_decorate"],"sources":["../../src/components/button-group/pk-button-group-separator.styles.ts","../../src/components/button-group/pk-button-group-separator.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkButtonGroupSeparatorStyles = css`\n @layer pk-component {\n :host {\n display: inline-block;\n align-self: stretch;\n flex-shrink: 0;\n }\n\n .separator {\n display: block;\n width: 1px;\n height: 100%;\n margin-block: 1px;\n background: var(--pk-btn-group-separator-color, transparent);\n }\n\n :host-context(pk-button-group[orientation='vertical']) {\n display: block;\n width: 100%;\n height: auto;\n }\n\n :host-context(pk-button-group[orientation='vertical']) .separator {\n width: 100%;\n height: 1px;\n margin-block: 1px;\n }\n }\n`;\n","import { html } from 'lit';\nimport { customElement, property } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkButtonGroupSeparatorStyles } from './pk-button-group-separator.styles.js';\n\nexport type PkButtonGroupSeparatorOrientation = 'horizontal' | 'vertical';\n\n/**\n * Vertical separator for button groups.\n *\n * @csspart base - Separator element\n */\n@customElement('pk-button-group-separator')\nexport class PkButtonGroupSeparator extends PkElement {\n static override styles = pkButtonGroupSeparatorStyles;\n\n @property({ reflect: true })\n orientation: PkButtonGroupSeparatorOrientation = 'vertical';\n\n override render() {\n return html`\n <div\n part=\"base\"\n class=\"separator pk-btn-group__separator\"\n role=\"separator\"\n aria-orientation=${this.orientation}\n data-orientation=${this.orientation}\n ></div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-button-group-separator': PkButtonGroupSeparator;\n }\n}\n"],"mappings":";;;;AAEA,IAAa,+BAA+B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACYxC,IAAM,yBAAN,MAAM,+BAA+B,UAAU;;;EAID,KAAA,cAAA;;;EAHxB,KAAA,SAAA;;CAKzB,SAAkB;EACd,OAAO,IAAI;;;;;mCAKgB,KAAK,YAAY;mCACjB,KAAK,YAAY;;;CAGhD;AACJ;AAdKA,WAAA,CAAA,SAAS,EAAE,SAAS,KAAK,CAAC,CAAA,GAAA,uBAAA,WAAA,eAAA,KAAA,CAAA;AAJ9B,yBAAAA,WAAA,CAAA,cAAc,2BAA2B,CAAA,GAAA,sBAAA"}
@@ -1,5 +1,5 @@
1
- import { n as PkElement, s as customElement, t as __decorate } from "./decorate-R0X811qp.js";
2
- import { n as buttonGroupCornerRadiusStyles } from "./button-group-item.styles-G05d0DNI.js";
1
+ import { i as customElement, n as PkElement, t as __decorate } from "./decorate-Br_PE9pq.js";
2
+ import { n as buttonGroupCornerRadiusStyles } from "./button-group-item.styles-D7tuu-sr.js";
3
3
  import { css, html } from "lit";
4
4
  //#region src/components/button-group/pk-button-group-text.styles.ts
5
5
  var pkButtonGroupTextStyles = [buttonGroupCornerRadiusStyles(".text", "var(--pk-radius-lg)"), css`
@@ -45,4 +45,4 @@ PkButtonGroupText = __decorate([customElement("pk-button-group-text")], PkButton
45
45
  //#endregion
46
46
  export { PkButtonGroupText as t };
47
47
 
48
- //# sourceMappingURL=pk-button-group-text-BsqEM-dB.js.map
48
+ //# sourceMappingURL=pk-button-group-text-CWNlZkyV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pk-button-group-text-CWNlZkyV.js","names":["_decorate"],"sources":["../../src/components/button-group/pk-button-group-text.styles.ts","../../src/components/button-group/pk-button-group-text.ts"],"sourcesContent":["import { css } from 'lit';\n\nimport { buttonGroupCornerRadiusStyles } from './button-group-item.styles.js';\n\nexport const pkButtonGroupTextStyles = [\n buttonGroupCornerRadiusStyles('.text', 'var(--pk-radius-lg)'),\n css`\n @layer pk-component {\n :host {\n display: inline-flex;\n vertical-align: middle;\n margin-inline-start: var(--pk-bg-horizontal-indent-outlined, 0);\n margin-block-start: var(--pk-bg-vertical-indent-outlined, 0);\n }\n\n .text {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0 0.625rem;\n border: 1px solid var(--pk-color-slate-400);\n background: var(--pk-color-gray-100);\n color: var(--pk-color-gray-700);\n font-family: var(--pk-font-family);\n font-size: var(--pk-font-size-sm);\n font-weight: 500;\n line-height: var(--pk-line-height);\n white-space: nowrap;\n }\n }\n `,\n];\n","import { html } from 'lit';\nimport { customElement } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkButtonGroupTextStyles } from './pk-button-group-text.styles.js';\n\n/**\n * Prefix text span for URL / compound button groups.\n *\n * @slot - Prefix text content\n *\n * @csspart base - Text container\n */\n@customElement('pk-button-group-text')\nexport class PkButtonGroupText extends PkElement {\n static override styles = pkButtonGroupTextStyles;\n\n override render() {\n return html`\n <span part=\"base\" class=\"text pk-btn-group__text\">\n <slot></slot>\n </span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-button-group-text': PkButtonGroupText;\n }\n}\n"],"mappings":";;;;AAIA,IAAa,0BAA0B,CACnC,8BAA8B,SAAS,qBAAqB,GAC5D,GAAG;;;;;;;;;;;;;;;;;;;;;;;;KAyBP;;;ACjBO,IAAM,oBAAN,MAAM,0BAA0B,UAAU;;EACpB,KAAA,SAAA;;CAEzB,SAAkB;EACd,OAAO,IAAI;;;;;CAKf;AACJ;AAXC,oBAAAA,WAAA,CAAA,cAAc,sBAAsB,CAAA,GAAA,iBAAA"}
@@ -1,8 +1,9 @@
1
- import { i as property, n as PkElement, o as state, r as hostDisplayInlineBlock, s as customElement, t as __decorate } from "./decorate-R0X811qp.js";
2
- import { n as resolveSpinnerVariant, t as getButtonSpinnerSize } from "./spinner-utils-Co_4X3ip.js";
3
- import "./pk-spinner-CN365srE.js";
4
- import { t as iconStyles } from "./icon.styles-pNyUmVtP.js";
5
- import { i as buttonGroupIndentStyles, n as buttonGroupCornerRadiusStyles, r as buttonGroupCornerRoleStyles, t as buttonGroupBorderJoinStyles } from "./button-group-item.styles-G05d0DNI.js";
1
+ import { i as customElement, n as PkElement, r as hostDisplayInlineBlock, t as __decorate } from "./decorate-Br_PE9pq.js";
2
+ import { r as state, t as property } from "./decorators-BkErmuYK.js";
3
+ import { n as resolveSpinnerVariant, t as getButtonSpinnerSize } from "./spinner-utils-DXwIxQ6z.js";
4
+ import "./pk-spinner-Bxkn4iVO.js";
5
+ import { t as iconStyles } from "./icon.styles-KWvfi7RV.js";
6
+ import { i as buttonGroupIndentStyles, n as buttonGroupCornerRadiusStyles, r as buttonGroupCornerRoleStyles, t as buttonGroupBorderJoinStyles } from "./button-group-item.styles-D7tuu-sr.js";
6
7
  import { css, html, nothing } from "lit";
7
8
  import { unsafeSVG } from "lit/directives/unsafe-svg.js";
8
9
  import { chevronDown, iconToSvg } from "@verbb/plugin-kit-icons";
@@ -845,4 +846,4 @@ PkButton = __decorate([customElement("pk-button")], PkButton);
845
846
  //#endregion
846
847
  export { PkButton as t };
847
848
 
848
- //# sourceMappingURL=pk-button-DCtNLEPr.js.map
849
+ //# sourceMappingURL=pk-button-ntSVrer_.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pk-button-ntSVrer_.js","names":["_decorate"],"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 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 * Slotted labels inherit from the host — pin the size-token font\n * (and button line-height) so Craft CP / Tailwind hosts match.\n */\n font-size: var(--pk-btn-font);\n line-height: 1.2;\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 '../../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 / link element\n *\n * @cssproperty [--pk-btn-height=var(--pk-btn-height-default)] - Control height (also min-height).\n * @cssproperty [--pk-btn-font=var(--pk-btn-font-default)] - Label font size.\n * @cssproperty [--pk-btn-padding-inline=var(--pk-btn-padding-inline-default)] - Horizontal padding.\n * @cssproperty [--pk-btn-padding-block=0] - Vertical padding override.\n * @cssproperty [--pk-btn-icon-size=var(--pk-btn-icon-size-default)] - Start/end slot glyph size.\n * @cssproperty [--pk-btn-icon-gap=var(--pk-btn-icon-gap-default)] - Gap between icons and label.\n * @cssproperty [--pk-btn-caret-size=var(--pk-btn-caret-size-default)] - Built-in caret glyph size.\n * @cssproperty [--pk-btn-radius=var(--pk-btn-radius-default)] - Border radius.\n * @cssproperty [--pk-btn-fill] - Background fill (filled variants).\n * @cssproperty [--pk-btn-fill-hover] - Hover fill.\n * @cssproperty [--pk-btn-fill-active] - Active / pressed fill.\n * @cssproperty [--pk-btn-on] - Foreground color on filled variants.\n *\n * @dependency pk-spinner - Loading indicator rendered while `loading` is set.\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 /** Visual treatment — filled, outline, link, etc. */\n @property({ reflect: true })\n variant: PkButtonVariant = 'default';\n\n /** Shared CP size scale (`xxs` … `xl`); `none` skips presets for host token overrides. */\n @property({ reflect: true })\n size: PkButtonSize = 'default';\n\n /** Disables the control and blocks activation. */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /** Shows an inline spinner and prevents activation while busy. */\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 /** Loading spinner visual style. Defaults from the button variant when unset. */\n @property({ reflect: true, attribute: 'spinner-variant' })\n spinnerVariant?: PkSpinnerVariant;\n\n /** Loading spinner tone. Defaults from the button variant when unset. */\n @property({ reflect: true, attribute: 'spinner-tone' })\n spinnerTone?: PkSpinnerTone;\n\n /** Shows a disclosure caret after the label. */\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 /** When set, renders as an anchor instead of a button. */\n @property()\n href?: string;\n\n /** Anchor `target` when `href` is set. */\n @property()\n target?: string;\n\n /** Anchor `rel` when `href` is set. */\n @property()\n rel?: string;\n\n /** Native `name` when used as a submit/reset control. */\n @property()\n name?: string;\n\n /** Native `value` when used as a submit control. */\n @property()\n value?: string;\n\n /**\n * Accessible name for icon-only / unlabeled controls.\n * Applied as `aria-label` — never as HTML `title` (no native hover tooltip).\n * Prefer the `aria-label` attribute when setting from markup; `title` remains\n * as a concise alias for the same accessible name.\n */\n @property()\n title = '';\n\n /** Accessible name — wins over {@link title} when both are set. */\n @property({ attribute: 'aria-label' })\n ariaLabel: string | null = null;\n\n /** Native button type — ignored when `href` is set. */\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 // Accessible name only — never HTML title (native tooltips get in the way).\n const accessibleName = this.ariaLabel || this.title || '';\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 aria-label=${accessibleName || 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 aria-label=${accessibleName || nothing}\n name=${this.name ?? nothing}\n value=${this.value ?? 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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"}
@@ -1,8 +1,9 @@
1
- import { t as icons_exports } from "./icons-B8siZLOe.js";
2
- import { i as property, n as PkElement, o as state, s as customElement, t as __decorate } from "./decorate-R0X811qp.js";
3
- import { n as renderIconHtml } from "./render-BKGW1a68.js";
4
- import { t as HasSlotController } from "./has-slot-9zjTXvea.js";
5
- import { t as iconStyles } from "./icon.styles-pNyUmVtP.js";
1
+ import { t as icons_exports } from "./icons-k1pvx6yX.js";
2
+ import { i as customElement, n as PkElement, t as __decorate } from "./decorate-Br_PE9pq.js";
3
+ import { r as state, t as property } from "./decorators-BkErmuYK.js";
4
+ import { n as renderIconHtml } from "./render-DQZp_Rak.js";
5
+ import { t as HasSlotController } from "./has-slot-DJv86HKx.js";
6
+ import { t as iconStyles } from "./icon.styles-KWvfi7RV.js";
6
7
  import { css, html, nothing } from "lit";
7
8
  import { unsafeSVG } from "lit/directives/unsafe-svg.js";
8
9
  import { unsafeHTML } from "lit/directives/unsafe-html.js";
@@ -142,7 +143,7 @@ function isoWeekNumber(date) {
142
143
  const firstThursday = new Date(target.getFullYear(), 0, 4);
143
144
  const firstDayNum = (firstThursday.getDay() + 6) % 7;
144
145
  firstThursday.setDate(firstThursday.getDate() - firstDayNum + 3);
145
- return 1 + Math.round((target.getTime() - firstThursday.getTime()) / (7 * 864e5));
146
+ return 1 + Math.round((target.getTime() - firstThursday.getTime()) / 6048e5);
146
147
  }
147
148
  function formatDisplayDate(date, locale) {
148
149
  return new Intl.DateTimeFormat(locale || void 0, {
@@ -214,7 +215,7 @@ function allDisabledInRange(start, end, isDisabled) {
214
215
  }
215
216
  //#endregion
216
217
  //#region src/utils/week-info.ts
217
- var SUNDAY_FIRST = new Set([
218
+ var SUNDAY_FIRST = /* @__PURE__ */ new Set([
218
219
  "US",
219
220
  "CA",
220
221
  "MX",
@@ -252,7 +253,7 @@ var SUNDAY_FIRST = new Set([
252
253
  "ET",
253
254
  "KE"
254
255
  ]);
255
- var SATURDAY_FIRST = new Set([
256
+ var SATURDAY_FIRST = /* @__PURE__ */ new Set([
256
257
  "SA",
257
258
  "AE",
258
259
  "QA",
@@ -268,7 +269,7 @@ var SATURDAY_FIRST = new Set([
268
269
  "DZ",
269
270
  "LY"
270
271
  ]);
271
- var FRI_SAT_WEEKEND = new Set([
272
+ var FRI_SAT_WEEKEND = /* @__PURE__ */ new Set([
272
273
  "SA",
273
274
  "AE",
274
275
  "QA",
@@ -1461,4 +1462,4 @@ PkCalendar = __decorate([customElement("pk-calendar")], PkCalendar);
1461
1462
  //#endregion
1462
1463
  export { parseIsoDate as a, parseDateList as i, coerceToDate as n, parseRange as o, formatIsoDate as r, PkCalendar as t };
1463
1464
 
1464
- //# sourceMappingURL=pk-calendar-hBz1MnOu.js.map
1465
+ //# sourceMappingURL=pk-calendar-Df0c5u79.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pk-calendar-Df0c5u79.js","names":["chevronLeft","chevronRight","_decorate"],"sources":["../../src/utils/date.ts","../../src/utils/date-matchers.ts","../../src/utils/week-info.ts","../../src/components/calendar/pk-calendar.styles.ts","../../src/components/calendar/pk-calendar.ts"],"sourcesContent":["/** ISO date helpers — ported from `date-picker/internal/iso`. */\n\nconst ISO_DATE = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\n\nexport function parseIsoDate(value: string | Date | null | undefined): Date | null {\n if (value == null || value === '') {\n return null;\n }\n\n // React/v1 DatePicker often passes a Date; never call string methods on it.\n if (value instanceof Date) {\n return coerceToDate(value);\n }\n\n if (typeof value !== 'string') {\n return null;\n }\n\n const match = ISO_DATE.exec(value.trim());\n\n if (!match) {\n return null;\n }\n\n const year = Number(match[1]);\n const month = Number(match[2]);\n const day = Number(match[3]);\n\n if (month < 1 || month > 12 || day < 1 || day > 31) {\n return null;\n }\n\n const date = new Date(year, month - 1, day);\n\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return null;\n }\n\n return date;\n}\n\nexport function formatIsoDate(date: Date | null | undefined): string {\n if (!date || Number.isNaN(date.getTime())) {\n return '';\n }\n\n const year = String(date.getFullYear()).padStart(4, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n\n return `${year}-${month}-${day}`;\n}\n\nexport function coerceToDate(value: unknown): Date | null {\n if (value == null) {\n return null;\n }\n\n if (value instanceof Date) {\n if (Number.isNaN(value.getTime())) {\n return null;\n }\n\n return new Date(value.getFullYear(), value.getMonth(), value.getDate());\n }\n\n return parseIsoDate(String(value));\n}\n\nexport type DateRange = {\n from: Date | null;\n to: Date | null;\n};\n\nexport function parseRange(value: string | null | undefined): DateRange {\n if (!value) {\n return { from: null, to: null };\n }\n\n const parts = value.split('/');\n\n if (parts.length === 1) {\n return { from: parseIsoDate(parts[0]), to: null };\n }\n\n const from = parseIsoDate(parts[0]);\n const to = parseIsoDate(parts[1]);\n\n if (!from || !to) {\n return { from, to };\n }\n\n return from.getTime() <= to.getTime()\n ? { from, to }\n : { from: to, to: from };\n}\n\nexport function formatRange(range: DateRange | null | undefined): string {\n if (!range) {\n return '';\n }\n\n const { from, to } = range;\n\n if (!from && !to) {\n return '';\n }\n\n if (from && !to) {\n return formatIsoDate(from);\n }\n\n if (!from && to) {\n return formatIsoDate(to);\n }\n\n return `${formatIsoDate(from)}/${formatIsoDate(to)}`;\n}\n\n/**\n * Multi-date (\"multiple\" mode) serialization: a comma-separated list of ISO dates.\n * Always parsed/emitted deduped and sorted ascending so the stored value is stable\n * regardless of the order the user clicked days.\n */\nexport function parseDateList(value: string | null | undefined): Date[] {\n if (!value) {\n return [];\n }\n\n const seen = new Set<string>();\n const dates: Date[] = [];\n\n for (const part of value.split(',')) {\n const date = parseIsoDate(part.trim());\n\n if (!date) {\n continue;\n }\n\n const iso = formatIsoDate(date);\n\n if (seen.has(iso)) {\n continue;\n }\n\n seen.add(iso);\n dates.push(date);\n }\n\n dates.sort((a, b) => a.getTime() - b.getTime());\n\n return dates;\n}\n\nexport function formatDateList(dates: ReadonlyArray<Date | null | undefined>): string {\n const seen = new Set<string>();\n\n for (const date of dates) {\n const iso = formatIsoDate(date ?? null);\n\n if (iso) {\n seen.add(iso);\n }\n }\n\n return [...seen].sort().join(',');\n}\n\n/** Toggle a day in/out of a multi-date list, returning the new sorted CSV value. */\nexport function toggleDateInList(value: string | null | undefined, date: Date): string {\n const iso = formatIsoDate(date);\n\n if (!iso) {\n return value ?? '';\n }\n\n const existing = parseDateList(value);\n const next = existing.some((entry) => isSameDay(entry, date))\n ? existing.filter((entry) => !isSameDay(entry, date))\n : [...existing, date];\n\n return formatDateList(next);\n}\n\nexport function isSameDay(a: Date | null | undefined, b: Date | null | undefined): boolean {\n if (!a || !b) {\n return false;\n }\n\n return a.getFullYear() === b.getFullYear()\n && a.getMonth() === b.getMonth()\n && a.getDate() === b.getDate();\n}\n\nexport function isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n}\n\nexport function addDays(date: Date, days: number): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days);\n}\n\nexport function addMonths(date: Date, months: number): Date {\n const target = new Date(date.getFullYear(), date.getMonth() + months, 1);\n const lastDay = daysInMonth(target.getFullYear(), target.getMonth());\n\n return new Date(target.getFullYear(), target.getMonth(), Math.min(date.getDate(), lastDay));\n}\n\nexport function addYears(date: Date, years: number): Date {\n return addMonths(date, years * 12);\n}\n\nexport function daysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate();\n}\n\nexport function startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nexport function todayDate(): Date {\n const now = new Date();\n\n return new Date(now.getFullYear(), now.getMonth(), now.getDate());\n}\n\nexport function diffDays(a: Date, b: Date): number {\n const ms = a.getTime() - b.getTime();\n\n return Math.round(ms / 86_400_000);\n}\n\n/** ISO 8601 week number for the given date. */\nexport function isoWeekNumber(date: Date): number {\n const target = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n const dayNum = (target.getDay() + 6) % 7;\n target.setDate(target.getDate() - dayNum + 3);\n\n const firstThursday = new Date(target.getFullYear(), 0, 4);\n const firstDayNum = (firstThursday.getDay() + 6) % 7;\n firstThursday.setDate(firstThursday.getDate() - firstDayNum + 3);\n\n return 1 + Math.round((target.getTime() - firstThursday.getTime()) / (7 * 86_400_000));\n}\n\nexport function formatDisplayDate(date: Date, locale?: string): string {\n return new Intl.DateTimeFormat(locale || undefined, {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n }).format(date);\n}\n","/** Date disabling matchers — ported from `date-picker/internal/matchers`. */\n\nimport {\n isSameDay,\n parseIsoDate,\n} from './date.js';\n\nexport type DisabledMatcherOptions = {\n min?: Date | null;\n max?: Date | null;\n disabledDates?: Date[];\n disabledDaysOfWeek?: number[];\n disablePast?: boolean;\n disableFuture?: boolean;\n today: Date;\n isDateDisabled?: (date: Date) => boolean;\n};\n\nexport function buildDisabledMatcher(options: DisabledMatcherOptions): (date: Date) => boolean {\n const {\n min,\n max,\n disabledDates = [],\n disabledDaysOfWeek = [],\n disablePast = false,\n disableFuture = false,\n today,\n isDateDisabled,\n } = options;\n\n const minTime = min?.getTime() ?? Number.NEGATIVE_INFINITY;\n const maxTime = max?.getTime() ?? Number.POSITIVE_INFINITY;\n const todayTime = today.getTime();\n const dayOfWeekSet = new Set(disabledDaysOfWeek);\n const dateTimeSet = new Set(disabledDates.map((date) => date.getTime()));\n\n return function isDisabled(date: Date): boolean {\n const time = date.getTime();\n\n if (time < minTime || time > maxTime) {\n return true;\n }\n\n if (disablePast && time < todayTime) {\n return true;\n }\n\n if (disableFuture && time > todayTime) {\n return true;\n }\n\n if (dayOfWeekSet.size && dayOfWeekSet.has(date.getDay())) {\n return true;\n }\n\n if (dateTimeSet.size && dateTimeSet.has(time)) {\n return true;\n }\n\n if (isDateDisabled?.(date)) {\n return true;\n }\n\n return false;\n };\n}\n\nexport function parseDisabledDates(value: string | string[] | Date[] | null | undefined): Date[] {\n if (value == null || value === '') {\n return [];\n }\n\n const list = Array.isArray(value) ? value : value.split(/\\s+/);\n const out: Date[] = [];\n\n for (const item of list) {\n if (item instanceof Date) {\n if (!Number.isNaN(item.getTime())) {\n out.push(new Date(item.getFullYear(), item.getMonth(), item.getDate()));\n }\n\n continue;\n }\n\n const parsed = parseIsoDate(String(item).trim());\n\n if (parsed) {\n out.push(parsed);\n }\n }\n\n return out;\n}\n\nconst WEEKDAY_NAMES = {\n sun: 0,\n mon: 1,\n tue: 2,\n wed: 3,\n thu: 4,\n fri: 5,\n sat: 6,\n} as const;\n\nexport type WeekdayName = keyof typeof WEEKDAY_NAMES;\n\nexport function parseDaysOfWeek(value: string | null | undefined): number[] {\n if (value == null || value === '') {\n return [];\n }\n\n const tokens = String(value).toLowerCase().split(/\\s+/).filter(Boolean);\n const out = new Set<number>();\n\n for (const token of tokens) {\n if (token in WEEKDAY_NAMES) {\n out.add(WEEKDAY_NAMES[token as WeekdayName]);\n }\n }\n\n return [...out];\n}\n\nexport function includesDay(arr: Date[], target: Date): boolean {\n return arr.some((date) => isSameDay(date, target));\n}\n\nexport function anyDisabledInRange(\n start: Date,\n end: Date,\n isDisabled: (date: Date) => boolean,\n): boolean {\n const rangeStart = start.getTime() <= end.getTime() ? start : end;\n const rangeEnd = start.getTime() <= end.getTime() ? end : start;\n const cursor = new Date(rangeStart.getFullYear(), rangeStart.getMonth(), rangeStart.getDate());\n\n while (cursor.getTime() <= rangeEnd.getTime()) {\n if (isDisabled(cursor)) {\n return true;\n }\n\n cursor.setDate(cursor.getDate() + 1);\n }\n\n return false;\n}\n\nexport function allDisabledInRange(\n start: Date,\n end: Date,\n isDisabled: (date: Date) => boolean,\n): boolean {\n const rangeStart = start.getTime() <= end.getTime() ? start : end;\n const rangeEnd = start.getTime() <= end.getTime() ? end : start;\n const cursor = new Date(rangeStart.getFullYear(), rangeStart.getMonth(), rangeStart.getDate());\n\n while (cursor.getTime() <= rangeEnd.getTime()) {\n if (!isDisabled(cursor)) {\n return false;\n }\n\n cursor.setDate(cursor.getDate() + 1);\n }\n\n return true;\n}\n","/** Locale week info — ported from `date-picker/internal/week-info`. */\n\nexport type WeekdayName = 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat';\n\nexport type WeekInfo = {\n /** First day of the week (1=Monday … 7=Sunday, per Intl spec). */\n firstDay: number;\n /** Weekend day numbers (1=Monday … 7=Sunday). */\n weekend: number[];\n};\n\nconst SUNDAY_FIRST = new Set([\n 'US', 'CA', 'MX', 'BR', 'JP', 'PH', 'IL', 'AU', 'NZ', 'ZA',\n 'CO', 'VE', 'PE', 'EC', 'GT', 'HN', 'NI', 'SV', 'CR', 'PA',\n 'DO', 'PR', 'JM', 'TT', 'BS', 'BB', 'BZ', 'BO', 'BM', 'TW',\n 'HK', 'MO', 'SG', 'TH', 'ET', 'KE',\n]);\n\nconst SATURDAY_FIRST = new Set(['SA', 'AE', 'QA', 'KW', 'BH', 'OM', 'YE', 'JO', 'SY', 'IQ', 'EG', 'SD', 'DZ', 'LY']);\n\nconst FRI_SAT_WEEKEND = new Set([\n 'SA', 'AE', 'QA', 'KW', 'BH', 'OM', 'YE', 'JO', 'EG', 'SD',\n 'DZ', 'LY', 'SY', 'IQ', 'IL',\n]);\n\nfunction regionFromLocale(locale: string): string | null {\n try {\n const parsed = new Intl.Locale(locale);\n const region = parsed.maximize().region;\n\n return region ?? null;\n } catch {\n return null;\n }\n}\n\nfunction fallbackWeekInfo(locale: string): WeekInfo {\n const region = regionFromLocale(locale);\n let firstDay = 1;\n\n if (region && SUNDAY_FIRST.has(region)) {\n firstDay = 7;\n } else if (region && SATURDAY_FIRST.has(region)) {\n firstDay = 6;\n }\n\n const weekend = region && FRI_SAT_WEEKEND.has(region) ? [5, 6] : [6, 7];\n\n return { firstDay, weekend };\n}\n\nexport function getWeekInfo(locale: string): WeekInfo {\n try {\n const parsed = new Intl.Locale(locale) as Intl.Locale & {\n getWeekInfo?: () => WeekInfo;\n weekInfo?: WeekInfo;\n };\n\n const info = typeof parsed.getWeekInfo === 'function'\n ? parsed.getWeekInfo()\n : parsed.weekInfo;\n\n if (info && typeof info.firstDay === 'number' && Array.isArray(info.weekend)) {\n return { firstDay: info.firstDay, weekend: info.weekend };\n }\n } catch {\n // fall through\n }\n\n return fallbackWeekInfo(locale);\n}\n\n/** Convert Intl first day (1=Mon..7=Sun) to JS `Date.getDay()` (0=Sun..6=Sat). */\nexport function intlFirstDayToJsDay(intlFirstDay: number): number {\n return intlFirstDay === 7 ? 0 : intlFirstDay;\n}\n\nexport function intlWeekendToJsDays(intlWeekend: number[]): number[] {\n return intlWeekend.map(intlFirstDayToJsDay);\n}\n\nexport function resolveFirstDayOfWeek(\n attribute: 'auto' | WeekdayName,\n locale: string,\n): number {\n if (attribute !== 'auto') {\n const map: Record<WeekdayName, number> = {\n sun: 0,\n mon: 1,\n tue: 2,\n wed: 3,\n thu: 4,\n fri: 5,\n sat: 6,\n };\n\n return map[attribute];\n }\n\n return intlFirstDayToJsDay(getWeekInfo(locale).firstDay);\n}\n","import { css } from 'lit';\n\nimport { iconStyles } from '../../base/icon.styles.js';\n\nexport const pkCalendarStyles = css`\n ${iconStyles}\n @layer pk-component {\n :host {\n display: inline-block;\n width: fit-content;\n max-width: 100%;\n color: var(--pk-color-gray-900);\n font-family: var(--pk-font-family);\n font-size: var(--pk-font-size-base);\n line-height: 1;\n --pk-date-cell-size: 1.75rem;\n --pk-date-cell-radius: 100%;\n --pk-date-gap: 0.25rem;\n --pk-date-column-min: var(--pk-date-cell-size);\n --pk-date-column-gap: 0;\n }\n\n :host([weekday-format='short']) {\n --pk-date-column-min: 2.125rem;\n --pk-date-column-gap: 0.125rem;\n }\n\n :host([weekday-format='long']) {\n --pk-date-column-min: 3.375rem;\n --pk-date-column-gap: 0.125rem;\n }\n\n :host([weekday-format='long']) .weekday {\n font-size: 0.7rem;\n }\n\n :host([size='xs']) {\n --pk-date-cell-size: 1.5rem;\n font-size: 11px;\n }\n\n :host([size='sm']) {\n --pk-date-cell-size: 1.625rem;\n font-size: 12px;\n }\n\n :host([size='lg']) {\n --pk-date-cell-size: 2rem;\n font-size: 14px;\n }\n\n :host([size='xl']) {\n --pk-date-cell-size: 2.25rem;\n font-size: 15px;\n }\n\n :host([disabled]) {\n opacity: 0.5;\n pointer-events: none;\n }\n\n .base {\n display: flex;\n flex-direction: column;\n gap: var(--pk-date-gap);\n width: fit-content;\n padding: 0.5rem;\n border: var(--pk-calendar-border, var(--pk-input-border));\n border-radius: var(--pk-radius-md);\n background: var(--pk-calendar-background, var(--pk-color-white));\n }\n\n :host(:not([bordered])) {\n --pk-calendar-border: 0;\n --pk-calendar-background: transparent;\n }\n\n .header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.25rem;\n min-height: var(--pk-date-cell-size);\n padding-inline: 0.125rem;\n }\n\n .title {\n flex: 1;\n margin: 0;\n padding: 0.25rem 0.5rem;\n border: 0;\n border-radius: var(--pk-radius-sm);\n background: transparent;\n color: var(--pk-color-gray-900);\n font: inherit;\n font-size: 13px;\n font-weight: 500;\n line-height: 1.2;\n text-align: center;\n cursor: pointer;\n user-select: none;\n }\n\n .title:hover:not(:disabled) {\n background: var(--pk-color-slate-100);\n }\n\n .nav-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--pk-date-cell-size);\n height: var(--pk-date-cell-size);\n margin: 0;\n padding: 0.25rem;\n border: 0;\n border-radius: var(--pk-radius-sm);\n background: transparent;\n color: var(--pk-color-gray-600);\n cursor: pointer;\n }\n\n .nav-button:hover:not(:disabled) {\n background: var(--pk-color-slate-100);\n color: var(--pk-color-gray-900);\n }\n\n .nav-button:disabled {\n opacity: 0.35;\n cursor: not-allowed;\n }\n\n .nav-button .icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 12px;\n height: 12px;\n flex-shrink: 0;\n }\n\n .nav-button .icon svg {\n display: block;\n width: 12px;\n height: 12px;\n }\n\n .months {\n display: flex;\n gap: 1rem;\n }\n\n .month {\n display: flex;\n flex-direction: column;\n width: fit-content;\n min-width: calc(var(--pk-date-column-min) * 7 + var(--pk-date-column-gap) * 6);\n }\n\n :host([data-week-numbers]) .month {\n min-width: calc(\n var(--pk-date-cell-size) + var(--pk-date-column-gap) + var(--pk-date-column-min) * 7 + var(--pk-date-column-gap) * 6\n );\n }\n\n .month-label {\n margin-bottom: 0.5rem;\n font-size: 12px;\n font-weight: 500;\n text-align: center;\n color: var(--pk-color-gray-700);\n }\n\n .weekdays,\n .week {\n display: grid;\n grid-template-columns: repeat(7, minmax(var(--pk-date-column-min), 1fr));\n column-gap: var(--pk-date-column-gap);\n align-items: center;\n width: 100%;\n }\n\n :host([data-week-numbers]) .weekdays,\n :host([data-week-numbers]) .week {\n grid-template-columns: var(--pk-date-cell-size) repeat(7, minmax(var(--pk-date-column-min), 1fr));\n }\n\n .grid {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n width: 100%;\n margin-top: 0.2rem;\n }\n\n .weeknumber-header,\n .weeknumber {\n display: flex;\n align-items: center;\n justify-content: center;\n height: var(--pk-date-cell-size);\n color: var(--pk-color-gray-500);\n font-size: 0.8rem;\n font-weight: 400;\n user-select: none;\n }\n\n .weekday {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: var(--pk-date-column-min);\n height: var(--pk-date-cell-size);\n padding-inline: 0.125rem;\n color: var(--pk-color-gray-500);\n font-size: 0.8rem;\n font-weight: 400;\n line-height: 1.1;\n text-align: center;\n white-space: nowrap;\n user-select: none;\n }\n\n .day,\n .day.is-placeholder {\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n justify-self: center;\n width: var(--pk-date-cell-size);\n min-width: var(--pk-date-cell-size);\n max-width: var(--pk-date-cell-size);\n height: var(--pk-date-cell-size);\n margin: 0;\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: var(--pk-color-gray-900);\n font: inherit;\n font-size: 13px;\n font-weight: 400;\n line-height: 1;\n cursor: pointer;\n }\n\n .day.is-range-start,\n .day.is-range-end,\n .day.is-range-inner,\n .day.is-range-preview {\n justify-self: stretch;\n width: 100%;\n min-width: 0;\n max-width: none;\n }\n\n .day.is-range-start.is-range-end {\n justify-self: center;\n width: var(--pk-date-cell-size);\n min-width: var(--pk-date-cell-size);\n max-width: var(--pk-date-cell-size);\n }\n\n .day:focus-visible {\n outline: 2px solid var(--pk-color-blue-500);\n outline-offset: 1px;\n z-index: 1;\n }\n\n .day.is-outside {\n opacity: 0.6;\n }\n\n .day.is-disabled {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n /* Day grid — circular today ring (fixed cell size, not column width) */\n .day.is-today:not(.is-range-start):not(.is-range-end):not(.is-range-inner)::after {\n content: '';\n position: absolute;\n inset: 0;\n border: 1px solid var(--pk-color-blue-500);\n border-radius: var(--pk-date-cell-radius);\n pointer-events: none;\n }\n\n .day.is-selected:not(.is-range-start):not(.is-range-end):not(.is-range-inner) {\n background: var(--pk-color-gray-200);\n border-radius: var(--pk-date-cell-radius);\n color: var(--pk-color-gray-900);\n font-weight: 400;\n }\n\n .day.is-range-start,\n .day.is-range-end {\n background: var(--pk-color-gray-200);\n color: var(--pk-color-gray-900);\n font-weight: 400;\n }\n\n .day.is-range-start.is-range-end {\n border-radius: var(--pk-date-cell-radius);\n }\n\n .day.is-range-start:not(.is-range-end) {\n border-radius: var(--pk-date-cell-radius) 0 0 var(--pk-date-cell-radius);\n }\n\n .day.is-range-end:not(.is-range-start) {\n border-radius: 0 var(--pk-date-cell-radius) var(--pk-date-cell-radius) 0;\n }\n\n .day.is-range-inner {\n background: var(--pk-color-gray-200);\n border-radius: 0;\n }\n\n .day.is-range-preview:not(.is-range-start):not(.is-range-end) {\n background: var(--pk-color-gray-200);\n opacity: 0.7;\n }\n\n .day.is-placeholder {\n visibility: hidden;\n pointer-events: none;\n }\n\n .live-region {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n slot[name='footer']::slotted(*) {\n display: block;\n padding-top: 0.25rem;\n }\n\n .view-grid {\n display: grid;\n grid-template-columns: repeat(3, minmax(var(--pk-date-cell-size), 1fr));\n gap: 0.25rem;\n width: 100%;\n min-width: calc(var(--pk-date-column-min) * 7 + var(--pk-date-column-gap) * 6);\n }\n\n .view-row {\n display: contents;\n }\n\n .view-cell {\n display: contents;\n }\n\n .view-item {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: var(--pk-date-cell-size);\n margin: 0;\n padding: 0.375rem 0.5rem;\n border: 0;\n border-radius: var(--pk-radius-sm);\n background: transparent;\n color: var(--pk-color-gray-900);\n font: inherit;\n font-size: 13px;\n cursor: pointer;\n }\n\n .view-item.is-selected {\n background: var(--pk-color-gray-200);\n font-weight: 500;\n }\n\n /* Month/year grid — rectangular today outline */\n .view-item.is-today:not(.is-selected) {\n box-shadow: inset 0 0 0 1px var(--pk-color-blue-500);\n border-radius: var(--pk-radius-sm);\n }\n\n .view-item.is-disabled {\n opacity: 0.4;\n cursor: not-allowed;\n }\n\n .view-item:focus-visible {\n outline: 2px solid var(--pk-color-blue-500);\n outline-offset: 1px;\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, state } from '../../decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\nimport type { PropertyValues } from 'lit';\n\nimport { chevronLeft, chevronRight, renderIconHtml } from '../../icons/index.js';\nimport { PkElement } from '../../base/pk-element.js';\nimport { HasSlotController } from '../../internal/has-slot.js';\nimport {\n addDays,\n addMonths,\n addYears,\n coerceToDate,\n diffDays,\n formatDisplayDate,\n formatIsoDate,\n formatRange,\n isoWeekNumber,\n isSameDay,\n isSameMonth,\n parseDateList,\n parseIsoDate,\n parseRange,\n startOfMonth,\n todayDate,\n toggleDateInList,\n type DateRange,\n} from '../../utils/date.js';\nimport {\n allDisabledInRange,\n buildDisabledMatcher,\n parseDaysOfWeek,\n parseDisabledDates,\n} from '../../utils/date-matchers.js';\nimport {\n getWeekInfo,\n intlWeekendToJsDays,\n resolveFirstDayOfWeek,\n type WeekdayName,\n} from '../../utils/week-info.js';\nimport { pkCalendarStyles } from './pk-calendar.styles.js';\n\nexport type PkCalendarMode = 'single' | 'range' | 'multiple';\nexport type PkCalendarSize = 'xs' | 'sm' | 'default' | 'lg' | 'xl';\nexport type PkCalendarFirstDayOfWeek = 'auto' | WeekdayName;\nexport type PkCalendarView = 'days' | 'months' | 'years';\nexport type PkCalendarPageBy = 'months' | 'single';\nexport type PkCalendarDayContent = (date: Date) => string | null;\n\nconst CHEVRON_LEFT = renderIconHtml(chevronLeft);\nconst CHEVRON_RIGHT = renderIconHtml(chevronRight);\n\ntype DayState = {\n date: Date;\n monthAnchor: Date;\n outside: boolean;\n today: boolean;\n weekend: boolean;\n disabled: boolean;\n selected: boolean;\n rangeStart: boolean;\n rangeEnd: boolean;\n rangeInner: boolean;\n rangePreview: boolean;\n roving: boolean;\n};\n\n/**\n * Inline calendar grid — mirrors React `Calendar` ( `pk-date-picker` API).\n *\n * @slot previous-icon\n * @slot next-icon\n * @slot footer\n * @slot day-YYYY-MM-DD - Custom content for a specific day cell\n *\n * @event input - Value changes during interaction\n * @event change - User commits a new value\n * @event pk-focus-day - Focused day changed; `detail.date`\n * @event pk-view-change - View changed; `detail.view`, `detail.date`\n */\n@customElement('pk-calendar')\nexport class PkCalendar extends PkElement {\n static override styles = pkCalendarStyles;\n\n private readonly hasSlotController = new HasSlotController(this, 'footer', 'previous-icon', 'next-icon');\n\n @property({ reflect: true })\n mode: PkCalendarMode = 'single';\n\n @property({ reflect: true })\n size: PkCalendarSize = 'default';\n\n @property({ reflect: true })\n value = '';\n\n @property({ reflect: true })\n min = '';\n\n @property({ reflect: true })\n max = '';\n\n @property({ reflect: true })\n today = '';\n\n @property({ reflect: true })\n view: PkCalendarView = 'days';\n\n @property({ type: Number, reflect: true })\n months: 1 | 2 = 1;\n\n @property({ attribute: 'page-by', reflect: true })\n pageBy: PkCalendarPageBy = 'months';\n\n @property({ attribute: 'focused-date', reflect: true })\n focusedDate = '';\n\n @property({ attribute: 'first-day-of-week', reflect: true })\n firstDayOfWeek: PkCalendarFirstDayOfWeek = 'auto';\n\n @property({ attribute: 'with-outside-days', type: Boolean, reflect: true })\n withOutsideDays = true;\n\n @property({ attribute: 'with-week-numbers', type: Boolean, reflect: true })\n withWeekNumbers = false;\n\n @property({ attribute: 'weekday-format', reflect: true })\n weekdayFormat: 'narrow' | 'short' | 'long' = 'narrow';\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: Boolean, reflect: true })\n readonly = false;\n\n /** When false, omits the outer frame — use inside popovers (e.g. `pk-date-picker`). */\n @property({ type: Boolean, reflect: true })\n bordered = true;\n\n @property({ attribute: 'disabled-dates' })\n disabledDatesRaw = '';\n\n @property({ attribute: 'disabled-days-of-week', reflect: true })\n disabledDaysOfWeek = '';\n\n @property({ attribute: 'disable-past', type: Boolean, reflect: true })\n disablePast = false;\n\n @property({ attribute: 'disable-future', type: Boolean, reflect: true })\n disableFuture = false;\n\n @property({ attribute: 'min-range', type: Number })\n minRange = 0;\n\n @property({ attribute: 'max-range', type: Number })\n maxRange = 0;\n\n @property({ reflect: true })\n locale = '';\n\n @property({ attribute: false })\n isDateDisabled?: (date: Date) => boolean;\n\n @property({ attribute: false })\n dayContent?: PkCalendarDayContent;\n\n @state()\n private viewAnchor = startOfMonth(todayDate());\n\n @state()\n private rangeAnchor: Date | null = null;\n\n @state()\n private hoverDate: Date | null = null;\n\n @state()\n private liveAnnouncement = '';\n\n @state()\n private focusedMonth: number | null = null;\n\n @state()\n private focusedYear: number | null = null;\n\n @state()\n private daySlotNames: string[] = [];\n\n private childrenObserver?: MutationObserver;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.syncViewAnchor();\n this.syncCustomStates();\n this.updateDaySlots();\n this.childrenObserver = new MutationObserver(() => this.updateDaySlots());\n this.childrenObserver.observe(this, { childList: true, attributes: true, attributeFilter: ['slot'] });\n }\n\n override disconnectedCallback(): void {\n this.childrenObserver?.disconnect();\n super.disconnectedCallback();\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n if (changed.has('value') || changed.has('focusedDate') || changed.has('mode')) {\n this.syncViewAnchor();\n }\n\n if (changed.has('disabled') || changed.has('readonly') || changed.has('mode') || changed.has('withWeekNumbers')) {\n this.syncCustomStates();\n }\n\n if (changed.has('view')) {\n this.emitViewChange();\n }\n\n super.willUpdate(changed);\n }\n\n private updateDaySlots(): void {\n const names = [...this.children]\n .map((child) => child.getAttribute('slot'))\n .filter((name): name is string => Boolean(name?.startsWith('day-')));\n\n if (names.join(',') !== this.daySlotNames.join(',')) {\n this.daySlotNames = names;\n }\n }\n\n private syncCustomStates(): void {\n this.toggleAttribute('data-range', this.mode === 'range');\n this.toggleAttribute('data-multiple', this.mode === 'multiple');\n this.toggleAttribute('data-week-numbers', this.withWeekNumbers);\n }\n\n private get resolvedLocale(): string {\n return this.locale || this.lang || document.documentElement.lang || 'en';\n }\n\n private get resolvedToday(): Date {\n return parseIsoDate(this.today) ?? todayDate();\n }\n\n /** Representative selected date used to anchor the view/focus across all modes. */\n private get primarySelectedDate(): Date | null {\n if (this.mode === 'single') {\n return parseIsoDate(this.value);\n }\n\n if (this.mode === 'multiple') {\n return parseDateList(this.value)[0] ?? null;\n }\n\n return parseRange(this.value).from;\n }\n\n private get resolvedFocusedDate(): Date {\n return parseIsoDate(this.focusedDate)\n ?? coerceToDate(this.primarySelectedDate)\n ?? this.resolvedToday;\n }\n\n private get isDisabledMatcher(): (date: Date) => boolean {\n return buildDisabledMatcher({\n min: parseIsoDate(this.min),\n max: parseIsoDate(this.max),\n disabledDates: parseDisabledDates(this.disabledDatesRaw),\n disabledDaysOfWeek: parseDaysOfWeek(this.disabledDaysOfWeek),\n disablePast: this.disablePast,\n disableFuture: this.disableFuture,\n today: this.resolvedToday,\n isDateDisabled: this.isDateDisabled,\n });\n }\n\n private get weekendDays(): Set<number> {\n return new Set(intlWeekendToJsDays(getWeekInfo(this.resolvedLocale).weekend));\n }\n\n private get pageStep(): number {\n return this.pageBy === 'single' ? 1 : this.months;\n }\n\n private get visibleMonthAnchors(): Date[] {\n const anchors = [this.viewAnchor];\n\n if (this.months === 2) {\n anchors.push(startOfMonth(addMonths(this.viewAnchor, 1)));\n }\n\n return anchors;\n }\n\n private syncViewAnchor(): void {\n const focus = this.resolvedFocusedDate;\n\n if (!this.visibleMonthAnchors.some((anchor) => isSameMonth(focus, anchor))) {\n this.viewAnchor = startOfMonth(focus);\n }\n }\n\n get valueAsDate(): Date | null {\n return this.mode === 'single' ? parseIsoDate(this.value) : null;\n }\n\n get valueAsRange(): DateRange {\n return parseRange(this.value);\n }\n\n /** Sorted, deduped selection for `multiple` mode (empty otherwise). */\n get valueAsDates(): Date[] {\n return this.mode === 'multiple' ? parseDateList(this.value) : [];\n }\n\n focus(options?: FocusOptions): void {\n const selector = this.view === 'days'\n ? '.day.is-roving'\n : this.view === 'months'\n ? '.view-item.is-roving'\n : '.view-item.is-roving';\n\n this.renderRoot.querySelector<HTMLButtonElement>(selector)?.focus(options);\n }\n\n goToDate(date: string | Date): void {\n const parsed = coerceToDate(date);\n\n if (!parsed) {\n return;\n }\n\n this.viewAnchor = startOfMonth(parsed);\n this.focusedDate = formatIsoDate(parsed);\n this.view = 'days';\n }\n\n goToToday(): void {\n this.goToDate(this.resolvedToday);\n }\n\n clear(): void {\n if (this.disabled || this.readonly) {\n return;\n }\n\n this.value = '';\n this.rangeAnchor = null;\n this.hoverDate = null;\n this.emitInput();\n this.emitChange();\n }\n\n private emitInput(): void {\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n }\n\n private emitChange(): void {\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n\n private emitFocusDay(date: Date): void {\n this.dispatchEvent(new CustomEvent('pk-focus-day', {\n detail: { date },\n bubbles: true,\n composed: true,\n }));\n }\n\n private emitViewChange(): void {\n this.dispatchEvent(new CustomEvent('pk-view-change', {\n detail: { view: this.view, date: this.resolvedFocusedDate },\n bubbles: true,\n composed: true,\n }));\n }\n\n private announce(message: string): void {\n this.liveAnnouncement = `${message}\\u200B`;\n }\n\n private setView(next: PkCalendarView): void {\n if (this.view === next) {\n return;\n }\n\n this.view = next;\n }\n\n private handlePrevious = (): void => {\n if (this.view === 'days') {\n this.viewAnchor = addMonths(this.viewAnchor, -this.pageStep);\n return;\n }\n\n if (this.view === 'months') {\n this.viewAnchor = addYears(this.viewAnchor, -1);\n return;\n }\n\n this.viewAnchor = addYears(this.viewAnchor, -12);\n };\n\n private handleNext = (): void => {\n if (this.view === 'days') {\n this.viewAnchor = addMonths(this.viewAnchor, this.pageStep);\n return;\n }\n\n if (this.view === 'months') {\n this.viewAnchor = addYears(this.viewAnchor, 1);\n return;\n }\n\n this.viewAnchor = addYears(this.viewAnchor, 12);\n };\n\n private handleTitleClick = (): void => {\n if (this.disabled) {\n return;\n }\n\n if (this.view === 'days') {\n this.setView('months');\n this.focusedMonth = this.resolvedFocusedDate.getMonth();\n return;\n }\n\n if (this.view === 'months') {\n this.setView('years');\n this.focusedYear = this.resolvedFocusedDate.getFullYear();\n }\n };\n\n private handleDayClick(date: Date, disabled: boolean): void {\n if (this.disabled || this.readonly || disabled) {\n return;\n }\n\n if (this.mode === 'single') {\n this.value = formatIsoDate(date);\n this.focusedDate = formatIsoDate(date);\n this.emitInput();\n this.emitChange();\n this.announce(formatDisplayDate(date, this.resolvedLocale));\n return;\n }\n\n if (this.mode === 'multiple') {\n // Each click toggles the day in/out of the set; the picker keeps the panel\n // open so several dates can be chosen before dismissing.\n const wasSelected = parseDateList(this.value).some((entry) => isSameDay(entry, date));\n this.value = toggleDateInList(this.value, date);\n this.focusedDate = formatIsoDate(date);\n this.emitInput();\n this.emitChange();\n this.announce(\n `${wasSelected ? 'Removed' : 'Added'} ${formatDisplayDate(date, this.resolvedLocale)}`,\n );\n return;\n }\n\n if (!this.rangeAnchor) {\n this.rangeAnchor = date;\n this.value = formatIsoDate(date);\n this.focusedDate = formatIsoDate(date);\n this.emitInput();\n return;\n }\n\n const from = this.rangeAnchor;\n const to = date;\n const ordered = from.getTime() <= to.getTime()\n ? { from, to }\n : { from: to, to: from };\n\n if (this.minRange > 0 && diffDays(ordered.to, ordered.from) + 1 < this.minRange) {\n this.announce(`Range must be at least ${this.minRange} days`);\n return;\n }\n\n if (this.maxRange > 0 && diffDays(ordered.to, ordered.from) + 1 > this.maxRange) {\n this.announce(`Range must be at most ${this.maxRange} days`);\n return;\n }\n\n this.value = formatRange(ordered);\n this.focusedDate = formatIsoDate(date);\n this.rangeAnchor = null;\n this.hoverDate = null;\n this.emitInput();\n this.emitChange();\n this.announce(`${formatDisplayDate(ordered.from, this.resolvedLocale)} – ${formatDisplayDate(ordered.to, this.resolvedLocale)}`);\n }\n\n private handleDayHover(date: Date): void {\n if (this.mode !== 'range' || !this.rangeAnchor) {\n return;\n }\n\n this.hoverDate = date;\n this.emitFocusDay(date);\n }\n\n private handleGridMouseLeave = (): void => {\n this.hoverDate = null;\n };\n\n private handleMonthPick(monthIndex: number): void {\n if (this.disabled || this.readonly) {\n return;\n }\n\n const next = new Date(this.viewAnchor.getFullYear(), monthIndex, 1);\n\n if (this.isMonthFullyDisabled(next)) {\n return;\n }\n\n this.viewAnchor = next;\n this.focusedDate = formatIsoDate(next);\n this.setView('days');\n }\n\n private handleYearPick(year: number): void {\n if (this.disabled || this.readonly) {\n return;\n }\n\n const next = new Date(year, this.viewAnchor.getMonth(), 1);\n\n if (this.isYearFullyDisabled(year)) {\n return;\n }\n\n this.viewAnchor = next;\n this.focusedDate = formatIsoDate(next);\n this.setView('months');\n this.focusedMonth = next.getMonth();\n }\n\n private handleDayKeyDown(event: KeyboardEvent, date: Date, disabled: boolean): void {\n if (disabled) {\n return;\n }\n\n let next: Date | null = null;\n\n switch (event.key) {\n case 'ArrowLeft':\n next = addDays(date, -1);\n break;\n case 'ArrowRight':\n next = addDays(date, 1);\n break;\n case 'ArrowUp':\n next = addDays(date, -7);\n break;\n case 'ArrowDown':\n next = addDays(date, 7);\n break;\n case 'PageUp':\n next = addMonths(date, -1);\n break;\n case 'PageDown':\n next = addMonths(date, 1);\n break;\n case 'Home':\n next = startOfMonth(date);\n break;\n case 'End':\n next = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n this.handleDayClick(date, disabled);\n return;\n case 'Escape':\n if (this.rangeAnchor) {\n event.preventDefault();\n this.rangeAnchor = null;\n this.hoverDate = null;\n this.requestUpdate();\n }\n\n return;\n default:\n return;\n }\n\n event.preventDefault();\n\n if (!next) {\n return;\n }\n\n this.focusedDate = formatIsoDate(next);\n\n if (!this.visibleMonthAnchors.some((anchor) => isSameMonth(next!, anchor))) {\n this.viewAnchor = startOfMonth(next);\n }\n\n this.emitFocusDay(next);\n this.requestUpdate();\n queueMicrotask(() => this.focus());\n }\n\n private isMonthFullyDisabled(monthStart: Date): boolean {\n const end = new Date(monthStart.getFullYear(), monthStart.getMonth() + 1, 0);\n return allDisabledInRange(monthStart, end, this.isDisabledMatcher);\n }\n\n private isYearFullyDisabled(year: number): boolean {\n const start = new Date(year, 0, 1);\n const end = new Date(year, 11, 31);\n return allDisabledInRange(start, end, this.isDisabledMatcher);\n }\n\n private formatWeekdayLabel(date: Date): string {\n if (this.weekdayFormat === 'narrow') {\n // Match react-day-picker cccccc — two-letter labels (Su, Mo, Tu…)\n const short = new Intl.DateTimeFormat(this.resolvedLocale, { weekday: 'short' }).format(date);\n return short.slice(0, 2);\n }\n\n return new Intl.DateTimeFormat(this.resolvedLocale, { weekday: this.weekdayFormat }).format(date);\n }\n\n private buildWeekdayLabels(): string[] {\n const firstDay = resolveFirstDayOfWeek(this.firstDayOfWeek, this.resolvedLocale);\n const labels: string[] = [];\n\n for (let index = 0; index < 7; index += 1) {\n const day = (firstDay + index) % 7;\n const date = new Date(2024, 0, day === 0 ? 7 : day);\n labels.push(this.formatWeekdayLabel(date));\n }\n\n return labels;\n }\n\n private buildMonthDays(monthAnchor: Date): Date[] {\n const firstDay = resolveFirstDayOfWeek(this.firstDayOfWeek, this.resolvedLocale);\n const monthStart = startOfMonth(monthAnchor);\n const offset = (monthStart.getDay() - firstDay + 7) % 7;\n const gridStart = addDays(monthStart, -offset);\n const days: Date[] = [];\n\n for (let index = 0; index < 42; index += 1) {\n days.push(addDays(gridStart, index));\n }\n\n return days;\n }\n\n private computeDayState(date: Date, monthAnchor: Date): DayState {\n const isDisabled = this.isDisabledMatcher(date);\n const range = parseRange(this.value);\n const selectedSingle = this.mode === 'single' && isSameDay(parseIsoDate(this.value), date);\n const selectedMultiple = this.mode === 'multiple'\n && parseDateList(this.value).some((entry) => isSameDay(entry, date));\n const rangeStart = this.mode === 'range' && isSameDay(range.from, date);\n const rangeEnd = this.mode === 'range' && isSameDay(range.to, date);\n const rangeInner = this.mode === 'range'\n && range.from\n && range.to\n && date.getTime() > range.from.getTime()\n && date.getTime() < range.to.getTime();\n\n let rangePreview = false;\n\n if (this.mode === 'range' && this.rangeAnchor && this.hoverDate) {\n const anchor = this.rangeAnchor;\n const hover = this.hoverDate;\n const start = anchor.getTime() <= hover.getTime() ? anchor : hover;\n const end = anchor.getTime() <= hover.getTime() ? hover : anchor;\n\n rangePreview = date.getTime() >= start.getTime() && date.getTime() <= end.getTime();\n }\n\n return {\n date,\n monthAnchor,\n outside: !isSameMonth(date, monthAnchor),\n today: isSameDay(date, this.resolvedToday),\n weekend: this.weekendDays.has(date.getDay()),\n disabled: isDisabled,\n selected: selectedSingle || selectedMultiple || rangeStart || rangeEnd,\n rangeStart,\n rangeEnd,\n rangeInner: Boolean(rangeInner),\n rangePreview,\n roving: isSameDay(date, this.resolvedFocusedDate),\n };\n }\n\n private renderDayContent(state: DayState) {\n const slotName = `day-${formatIsoDate(state.date)}`;\n\n if (this.daySlotNames.includes(slotName)) {\n return html`<slot name=${slotName}></slot>`;\n }\n\n const custom = this.dayContent?.(state.date);\n\n if (custom) {\n return unsafeHTML(custom);\n }\n\n return html`<span part=\"day-label\">${state.date.getDate()}</span>`;\n }\n\n private renderDay(state: DayState) {\n if (!this.withOutsideDays && state.outside) {\n return html`<span part=\"day-placeholder\" class=\"day is-placeholder\" aria-hidden=\"true\"></span>`;\n }\n\n const label = formatDisplayDate(state.date, this.resolvedLocale);\n\n return html`\n <button\n type=\"button\"\n part=\"day\"\n class=${classMap({\n day: true,\n 'is-outside': state.outside,\n 'is-today': state.today,\n 'is-weekend': state.weekend,\n 'is-disabled': state.disabled,\n 'is-selected': state.selected,\n 'is-range-start': state.rangeStart,\n 'is-range-end': state.rangeEnd,\n 'is-range-inner': state.rangeInner,\n 'is-range-preview': state.rangePreview,\n 'is-roving': state.roving,\n })}\n tabindex=${state.roving ? '0' : '-1'}\n ?disabled=${state.disabled}\n aria-label=${label}\n aria-selected=${state.selected ? 'true' : 'false'}\n aria-current=${state.today ? 'date' : nothing}\n @click=${() => this.handleDayClick(state.date, state.disabled)}\n @mouseenter=${() => this.handleDayHover(state.date)}\n @keydown=${(event: KeyboardEvent) => this.handleDayKeyDown(event, state.date, state.disabled)}\n >\n ${this.renderDayContent(state)}\n </button>\n `;\n }\n\n private getMonthWeeks(monthAnchor: Date): Date[][] {\n const days = this.buildMonthDays(monthAnchor);\n const weeks: Date[][] = [];\n\n for (let index = 0; index < days.length; index += 7) {\n weeks.push(days.slice(index, index + 7));\n }\n\n if (this.withOutsideDays) {\n return weeks;\n }\n\n return weeks.filter((week) => week.some((date) => isSameMonth(date, monthAnchor)));\n }\n\n private renderMonth(monthAnchor: Date, showLabel = false) {\n const weekdays = this.buildWeekdayLabels();\n const title = new Intl.DateTimeFormat(this.resolvedLocale, {\n month: 'long',\n year: 'numeric',\n }).format(monthAnchor);\n\n const weeks = this.getMonthWeeks(monthAnchor);\n\n return html`\n <div part=\"month\" class=\"month\">\n ${showLabel\n ? html`<div part=\"month-label\" class=\"month-label\">${title}</div>`\n : nothing}\n <div part=\"weekdays\" class=\"weekdays\" role=\"row\">\n ${this.withWeekNumbers\n ? html`<span part=\"weeknumbers\" class=\"weeknumber-header\" role=\"columnheader\">#</span>`\n : nothing}\n ${weekdays.map((weekday) => html`\n <span part=\"weekday\" class=\"weekday\" role=\"columnheader\">${weekday}</span>\n `)}\n </div>\n <div\n part=\"grid\"\n class=\"grid\"\n role=\"grid\"\n aria-label=${title}\n @mouseleave=${this.handleGridMouseLeave}\n >\n ${weeks.map((week) => html`\n <div part=\"week\" class=\"week\" role=\"row\">\n ${this.withWeekNumbers\n ? html`<span part=\"weeknumber\" class=\"weeknumber\" role=\"gridcell\">${isoWeekNumber(week[0])}</span>`\n : nothing}\n ${week.map((date) => this.renderDay(this.computeDayState(date, monthAnchor)))}\n </div>\n `)}\n </div>\n </div>\n `;\n }\n\n private renderViewRows(items: Array<ReturnType<typeof html>>) {\n const rows: Array<ReturnType<typeof html>> = [];\n\n for (let index = 0; index < items.length; index += 3) {\n rows.push(html`\n <div part=\"view-row\" class=\"view-row\" role=\"row\">\n ${items.slice(index, index + 3)}\n </div>\n `);\n }\n\n return rows;\n }\n\n private renderMonthsView() {\n const year = this.viewAnchor.getFullYear();\n const formatter = new Intl.DateTimeFormat(this.resolvedLocale, { month: 'long' });\n const selectedDate = this.primarySelectedDate;\n const selectedMonth = selectedDate?.getMonth();\n const rovingMonth = this.focusedMonth ?? this.resolvedFocusedDate.getMonth();\n const items = [];\n\n for (let monthIndex = 0; monthIndex < 12; monthIndex += 1) {\n const monthStart = new Date(year, monthIndex, 1);\n const disabled = this.isMonthFullyDisabled(monthStart);\n const selected = selectedMonth === monthIndex;\n const todayMonth = this.resolvedToday.getFullYear() === year && this.resolvedToday.getMonth() === monthIndex;\n const roving = rovingMonth === monthIndex;\n\n items.push(html`\n <div part=\"view-cell\" class=\"view-cell\" role=\"gridcell\">\n <button\n type=\"button\"\n part=\"view-item ${todayMonth ? 'view-item-today' : ''} ${selected ? 'view-item-selected' : ''} ${disabled ? 'view-item-disabled' : ''}\"\n class=${classMap({\n 'view-item': true,\n 'is-today': todayMonth,\n 'is-selected': selected,\n 'is-disabled': disabled,\n 'is-roving': roving,\n })}\n tabindex=${roving ? '0' : '-1'}\n ?disabled=${disabled}\n @click=${() => this.handleMonthPick(monthIndex)}\n >\n ${formatter.format(monthStart)}\n </button>\n </div>\n `);\n }\n\n return html`\n <div part=\"view-grid\" class=\"view-grid\" role=\"grid\">\n ${this.renderViewRows(items)}\n </div>\n `;\n }\n\n private renderYearsView() {\n const centerYear = this.viewAnchor.getFullYear();\n const decadeStart = Math.floor(centerYear / 12) * 12;\n const selectedDate = this.primarySelectedDate;\n const selectedYear = selectedDate?.getFullYear();\n const rovingYear = this.focusedYear ?? this.resolvedFocusedDate.getFullYear();\n const items = [];\n\n for (let offset = 0; offset < 12; offset += 1) {\n const year = decadeStart + offset;\n const disabled = this.isYearFullyDisabled(year);\n const selected = selectedYear === year;\n const todayYear = this.resolvedToday.getFullYear() === year;\n const roving = rovingYear === year;\n\n items.push(html`\n <div part=\"view-cell\" class=\"view-cell\" role=\"gridcell\">\n <button\n type=\"button\"\n part=\"view-item ${todayYear ? 'view-item-today' : ''} ${selected ? 'view-item-selected' : ''} ${disabled ? 'view-item-disabled' : ''}\"\n class=${classMap({\n 'view-item': true,\n 'is-today': todayYear,\n 'is-selected': selected,\n 'is-disabled': disabled,\n 'is-roving': roving,\n })}\n tabindex=${roving ? '0' : '-1'}\n ?disabled=${disabled}\n @click=${() => this.handleYearPick(year)}\n >\n ${year}\n </button>\n </div>\n `);\n }\n\n return html`\n <div part=\"view-grid\" class=\"view-grid\" role=\"grid\">\n ${this.renderViewRows(items)}\n </div>\n `;\n }\n\n private renderHeaderTitle() {\n if (this.view === 'months') {\n return String(this.viewAnchor.getFullYear());\n }\n\n if (this.view === 'years') {\n const centerYear = this.viewAnchor.getFullYear();\n const decadeStart = Math.floor(centerYear / 12) * 12;\n return `${decadeStart} – ${decadeStart + 11}`;\n }\n\n if (this.months === 2) {\n const first = new Intl.DateTimeFormat(this.resolvedLocale, { month: 'long', year: 'numeric' }).format(this.viewAnchor);\n const second = new Intl.DateTimeFormat(this.resolvedLocale, { month: 'long', year: 'numeric' }).format(addMonths(this.viewAnchor, 1));\n return `${first} – ${second}`;\n }\n\n return new Intl.DateTimeFormat(this.resolvedLocale, {\n month: 'long',\n year: 'numeric',\n }).format(this.viewAnchor);\n }\n\n override render() {\n const showDualLabels = this.view === 'days' && this.months === 2;\n\n return html`\n <div part=\"base\" class=\"base\">\n <div part=\"header\" class=\"header\">\n <button\n type=\"button\"\n part=\"previous\"\n class=\"nav-button\"\n aria-label=\"Previous\"\n ?disabled=${this.disabled}\n @click=${this.handlePrevious}\n >\n <slot name=\"previous-icon\">\n <span class=\"icon\" aria-hidden=\"true\">${unsafeSVG(CHEVRON_LEFT)}</span>\n </slot>\n </button>\n <button\n type=\"button\"\n part=\"title\"\n class=\"title\"\n ?disabled=${this.disabled}\n @click=${this.view === 'years' ? undefined : this.handleTitleClick}\n >\n ${this.renderHeaderTitle()}\n </button>\n <button\n type=\"button\"\n part=\"next\"\n class=\"nav-button\"\n aria-label=\"Next\"\n ?disabled=${this.disabled}\n @click=${this.handleNext}\n >\n <slot name=\"next-icon\">\n <span class=\"icon\" aria-hidden=\"true\">${unsafeSVG(CHEVRON_RIGHT)}</span>\n </slot>\n </button>\n </div>\n\n <div part=\"months\" class=\"months\">\n ${this.view === 'days'\n ? this.visibleMonthAnchors.map((anchor) => this.renderMonth(anchor, showDualLabels))\n : this.view === 'months'\n ? this.renderMonthsView()\n : this.renderYearsView()}\n </div>\n\n ${this.hasSlotController.test('footer')\n ? html`<div part=\"footer\"><slot name=\"footer\"></slot></div>`\n : nothing}\n\n <div class=\"live-region\" aria-live=\"polite\" aria-atomic=\"true\">\n ${this.liveAnnouncement}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-calendar': PkCalendar;\n }\n}\n"],"mappings":"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"}
@@ -1,7 +1,8 @@
1
- import { a as query, i as property, o as state, s as customElement, t as __decorate } from "./decorate-R0X811qp.js";
2
- import { t as HasSlotController } from "./has-slot-9zjTXvea.js";
3
- import { t as PkFormAssociatedElement } from "./pk-form-associated-element-MqaHdIoH.js";
4
- import { t as RequiredValidator } from "./required-validator-CaRnQk1V.js";
1
+ import { i as customElement, t as __decorate } from "./decorate-Br_PE9pq.js";
2
+ import { n as query, r as state, t as property } from "./decorators-BkErmuYK.js";
3
+ import { t as HasSlotController } from "./has-slot-DJv86HKx.js";
4
+ import { t as PkFormAssociatedElement } from "./pk-form-associated-element-Doh2K3pG.js";
5
+ import { t as RequiredValidator } from "./required-validator-I58oJGZ3.js";
5
6
  import { css, html, nothing } from "lit";
6
7
  import { classMap } from "lit/directives/class-map.js";
7
8
  //#region src/icons/checkbox-indicators.ts
@@ -357,4 +358,4 @@ PkCheckbox = __decorate([customElement("pk-checkbox")], PkCheckbox);
357
358
  //#endregion
358
359
  export { PkCheckbox as t };
359
360
 
360
- //# sourceMappingURL=pk-checkbox-dvHRoVbL.js.map
361
+ //# sourceMappingURL=pk-checkbox-L5uRex3b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pk-checkbox-L5uRex3b.js","names":["_decorate"],"sources":["../../src/icons/checkbox-indicators.ts","../../src/base/checkbox-control.styles.ts","../../src/components/checkbox/pk-checkbox.styles.ts","../../src/components/checkbox/pk-checkbox.ts"],"sourcesContent":["import { html, type TemplateResult } from 'lit';\n\n/** Craft checkbox tick — matches plugin-kit-react Checkbox.tsx */\nexport function renderCheckboxCheckIcon(): TemplateResult {\n return html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-hidden=\"true\" viewBox=\"0 0 640 640\">\n <path\n fill=\"currentColor\"\n d=\"M557.5 192L534.9 214.6L278.9 470.6C266.4 483.1 246.1 483.1 233.6 470.6L105.6 342.6L83 320L128.3 274.7C129.6 276 172.3 318.7 256.3 402.7L489.7 169.3L512.3 146.7L557.6 192z\"\n />\n </svg>\n `;\n}\n\n/** Craft checkbox indeterminate mark — matches plugin-kit-react Checkbox.tsx */\nexport function renderCheckboxIndeterminateIcon(): TemplateResult {\n return html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-hidden=\"true\" viewBox=\"0 0 640 640\">\n <path fill=\"currentColor\" d=\"M96 352V288H544V352H96z\" />\n </svg>\n `;\n}\n","import { css } from 'lit';\n\n/** Shared checkbox/radio control box — Craft tokens, border-box sizing. */\nexport const checkboxControlStyles = css`\n @layer pk-component {\n .control {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n position: relative;\n box-sizing: border-box;\n width: var(--pk-checkbox-size);\n height: var(--pk-checkbox-size);\n border: 1px solid var(--pk-checkbox-border-color, #c0cbd9);\n border-radius: var(--pk-radius-sm);\n background: var(--pk-color-white);\n cursor: pointer;\n transition: border-color 0.12s ease, box-shadow 0.12s ease;\n }\n\n :host([disabled]) .control {\n cursor: not-allowed;\n }\n\n .input:focus-visible + .control {\n border-color: var(--pk-color-sky-600);\n box-shadow: 0 0 0 1px var(--pk-color-sky-600), 0 0 4px 0 hsl(from var(--pk-color-sky-600) h s l / 0.7);\n }\n\n :host([invalid]) .control,\n .input[aria-invalid='true'] + .control {\n border-color: var(--pk-color-rose-600);\n }\n\n :host([invalid]) .input:focus-visible + .control,\n .input[aria-invalid='true']:focus-visible + .control {\n border-color: var(--pk-color-rose-600);\n box-shadow: 0 0 0 1px var(--pk-color-rose-600), 0 0 4px 0 hsl(from var(--pk-color-rose-600) h s l / 0.7);\n }\n\n .indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--pk-color-gray-900);\n }\n\n .icon-check,\n .icon-indeterminate {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0;\n pointer-events: none;\n }\n\n .icon-check svg {\n width: 14px;\n height: 14px;\n transform: translateY(1px) scale(1.2);\n }\n\n .icon-indeterminate svg {\n width: 12px;\n height: 12px;\n }\n\n :host([checked]) .icon-check,\n .input:checked + .control .icon-check {\n opacity: 1;\n }\n\n :host([indeterminate]) .icon-check,\n .input:indeterminate + .control .icon-check {\n opacity: 0;\n }\n\n :host([indeterminate]) .icon-indeterminate,\n .input:indeterminate + .control .icon-indeterminate {\n opacity: 1;\n }\n }\n`;\n","import { css } from 'lit';\n\nimport { checkboxControlStyles } from '../../base/checkbox-control.styles.js';\n\nconst pkCheckboxLayoutStyles = css`\n @layer pk-component {\n :host {\n display: inline-flex;\n vertical-align: middle;\n /* Hit target is the content-sized .root label (Craft checkbox-select), not the host. */\n cursor: default;\n font-family: var(--pk-font-family);\n font-size: var(--pk-font-size-base);\n line-height: var(--pk-line-height);\n }\n\n :host([disabled]) {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .root {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: flex-start;\n gap: var(--pk-control-label-gap);\n /* Content-sized like Craft's <label> beside the checkbox — not full-row. */\n width: fit-content;\n max-width: 100%;\n margin: 0;\n min-height: 0;\n cursor: pointer;\n user-select: none;\n position: relative;\n }\n\n :host([disabled]) .root {\n cursor: not-allowed;\n }\n\n .root--with-hint {\n align-items: flex-start;\n }\n\n .input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n opacity: 0;\n appearance: none;\n }\n\n .text {\n display: flex;\n flex-direction: column;\n gap: 0.125rem;\n min-width: 0;\n }\n\n .label {\n line-height: max(1rem, var(--pk-checkbox-size));\n /* Match form-control / Craft body labels (gray-700), not gray-900. */\n color: var(--pk-color-gray-700);\n cursor: pointer;\n }\n\n :host([disabled]) .label {\n cursor: not-allowed;\n }\n\n :host(.all-option) .label {\n font-weight: 700;\n }\n\n .hint {\n margin: 0;\n color: var(--pk-color-gray-500);\n font-size: var(--pk-font-size-sm);\n line-height: var(--pk-line-height);\n }\n\n .hint:empty {\n display: none;\n }\n }\n`;\n\nexport const pkCheckboxStyles = [checkboxControlStyles, pkCheckboxLayoutStyles];\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 { PkFormAssociatedElement } from '../../base/pk-form-associated-element.js';\nimport { renderCheckboxCheckIcon, renderCheckboxIndeterminateIcon } from '../../icons/checkbox-indicators.js';\nimport { HasSlotController } from '../../internal/has-slot.js';\nimport { RequiredValidator } from '../../validators/index.js';\nimport { pkCheckboxStyles } from './pk-checkbox.styles.js';\n\n/**\n * –aligned checkbox control.\n *\n * @slot - Checkbox label text\n * @slot hint - Descriptive hint (or use the `hint` attribute)\n *\n * @csspart base - Root label element\n * @csspart input - Native checkbox input\n * @csspart control - Visual checkbox box\n * @csspart label - Label text container\n * @csspart hint - Hint text container\n * @csspart checked-icon - Checked state icon\n * @csspart indeterminate-icon - Indeterminate state icon\n */\n@customElement('pk-checkbox')\nexport class PkCheckbox extends PkFormAssociatedElement {\n static override shadowRootOptions: ShadowRootInit = {\n mode: 'open',\n delegatesFocus: true,\n };\n\n static override styles = pkCheckboxStyles;\n\n static override get validators() {\n return [...super.validators, RequiredValidator({ validationProperty: 'checked' })];\n }\n\n override assumeInteractionOn = ['change'];\n\n private readonly hasSlotController = new HasSlotController(this, 'hint');\n\n @property({ type: Boolean, reflect: true })\n checked = false;\n\n @property({ type: Boolean, reflect: true })\n indeterminate = false;\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: Boolean, reflect: true })\n invalid = false;\n\n @property()\n checkboxValue = 'on';\n\n @property({ attribute: 'default-checked', type: Boolean })\n defaultChecked = false;\n\n @property({ attribute: 'aria-label' })\n ariaLabel: string | null = null;\n\n /** Descriptive hint — use the `hint` slot for HTML content. */\n @property()\n hint = '';\n\n /** Only required for SSR when slotting a hint. */\n @property({ type: Boolean, attribute: 'with-hint' })\n withHint = false;\n\n @query('.input')\n override input!: HTMLInputElement;\n\n @state()\n private hasDefaultSlotContent = false;\n\n protected override get validationTarget(): HTMLElement {\n return this.input;\n }\n\n protected override syncFormValue(): void {\n this.setFormValue(this.checked ? this.checkboxValue : null, this.checked ? 'on' : 'off');\n }\n\n protected override resetToDefaultValue(): void {\n this.checked = this.defaultChecked;\n this.indeterminate = false;\n }\n\n protected override restoreFormState(state: string | File | FormData | null): void {\n if (state === 'on' || state === this.checkboxValue) {\n this.checked = true;\n } else {\n this.checked = false;\n }\n }\n\n override updated(changed: PropertyValues): void {\n if (!this.input) {\n super.updated(changed);\n return;\n }\n\n if (changed.has('checkboxValue')) {\n this.syncFormValue();\n }\n\n if (changed.has('indeterminate') || changed.has('checked')) {\n this.input.indeterminate = this.indeterminate;\n this.input.checked = this.checked;\n }\n\n super.updated(changed);\n }\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 handleChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n this.checked = input.checked;\n this.indeterminate = false;\n\n this.dispatchEvent(new CustomEvent('pk-change', {\n detail: { checked: this.checked },\n bubbles: true,\n composed: true,\n }));\n\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n\n override render() {\n const hasLabel = this.hasDefaultSlotContent;\n const hasHint = Boolean(this.hint) || this.hasSlotController.test('hint', this.withHint);\n\n return html`\n <label\n part=\"base\"\n class=${classMap({\n root: true,\n 'root--with-hint': hasHint,\n })}\n >\n <input\n part=\"input\"\n class=\"input\"\n type=\"checkbox\"\n .checked=${this.checked}\n ?disabled=${this.disabled}\n ?required=${this.required}\n name=${this.name ?? nothing}\n value=${this.checkboxValue}\n aria-labelledby=${hasLabel ? 'label' : nothing}\n aria-describedby=${hasHint ? 'hint' : nothing}\n aria-label=${!hasLabel ? (this.ariaLabel ?? nothing) : nothing}\n aria-invalid=${this.invalid ? 'true' : nothing}\n @change=${this.handleChange}\n />\n <span part=\"control\" class=\"control\">\n <span part=\"checked-icon\" class=\"icon-check\">${renderCheckboxCheckIcon()}</span>\n <span part=\"indeterminate-icon\" class=\"icon-indeterminate\">${renderCheckboxIndeterminateIcon()}</span>\n </span>\n ${hasLabel || hasHint\n ? html`\n <span class=\"text\">\n ${hasLabel\n ? html`\n <span part=\"label\" class=\"label\" id=\"label\">\n <slot @slotchange=${this.defaultSlotChanged}></slot>\n </span>\n `\n : html`<slot @slotchange=${this.defaultSlotChanged} hidden></slot>`}\n ${hasHint\n ? html`\n <span part=\"hint\" class=\"hint\" id=\"hint\">\n <slot name=\"hint\">${this.hint}</slot>\n </span>\n `\n : nothing}\n </span>\n `\n : html`<slot @slotchange=${this.defaultSlotChanged} hidden></slot>`}\n </label>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-checkbox': PkCheckbox;\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { i as property, n as PkElement, o as state, s as customElement, t as __decorate } from "./decorate-R0X811qp.js";
2
- import "./pk-checkbox-dvHRoVbL.js";
1
+ import { i as customElement, n as PkElement, t as __decorate } from "./decorate-Br_PE9pq.js";
2
+ import { r as state, t as property } from "./decorators-BkErmuYK.js";
3
+ import "./pk-checkbox-L5uRex3b.js";
3
4
  import { css, html } from "lit";
4
5
  import { classMap } from "lit/directives/class-map.js";
5
6
  //#region src/components/checkbox-select/pk-checkbox-select.styles.ts
@@ -218,4 +219,4 @@ PkCheckboxSelect = __decorate([customElement("pk-checkbox-select")], PkCheckboxS
218
219
  //#endregion
219
220
  export { PkCheckboxSelect as n, ALL_VALUE as t };
220
221
 
221
- //# sourceMappingURL=pk-checkbox-select-Cqx5ZCMq.js.map
222
+ //# sourceMappingURL=pk-checkbox-select-6OS0wFYO.js.map