@verbb/plugin-kit-web 2.0.22 → 2.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/custom-elements.json +8414 -7031
  3. package/dist/chunks/{active-elements-BwpXu8Lb.js → active-elements-DM_lCHaW.js} +1 -1
  4. package/dist/chunks/{active-elements-BwpXu8Lb.js.map → active-elements-DM_lCHaW.js.map} +1 -1
  5. package/dist/chunks/{animate-with-class-CsDwYnXL.js → animate-with-class-NP-yJVt_.js} +1 -1
  6. package/dist/chunks/{animate-with-class-CsDwYnXL.js.map → animate-with-class-NP-yJVt_.js.map} +1 -1
  7. package/dist/chunks/{autoloader-dJO3tYOX.js → autoloader-DnSfHkrD.js} +3 -3
  8. package/dist/chunks/{autoloader-dJO3tYOX.js.map → autoloader-DnSfHkrD.js.map} +1 -1
  9. package/dist/chunks/{button-group-item.styles-DYmBR28a.js → button-group-item.styles-G05d0DNI.js} +1 -1
  10. package/dist/chunks/{button-group-item.styles-DYmBR28a.js.map → button-group-item.styles-G05d0DNI.js.map} +1 -1
  11. package/dist/chunks/{component-registry-D34fm8xW.js → component-registry-DoevfR-u.js} +5 -1
  12. package/dist/chunks/component-registry-DoevfR-u.js.map +1 -0
  13. package/dist/chunks/{control-aria-B2QMq4ji.js → control-aria-CzouQRZD.js} +1 -1
  14. package/dist/chunks/{control-aria-B2QMq4ji.js.map → control-aria-CzouQRZD.js.map} +1 -1
  15. package/dist/chunks/{dismissible-stack-XQUMfKO3.js → dismissible-stack-B3BgzdQb.js} +1 -1
  16. package/dist/chunks/{dismissible-stack-XQUMfKO3.js.map → dismissible-stack-B3BgzdQb.js.map} +1 -1
  17. package/dist/chunks/{field-labels-CmuAW8Cl.js → field-labels-CGSfAGf-.js} +1 -1
  18. package/dist/chunks/{field-labels-CmuAW8Cl.js.map → field-labels-CGSfAGf-.js.map} +1 -1
  19. package/dist/chunks/{focus-aa5dlv8k.js → focus-C6pY4Ym4.js} +2 -2
  20. package/dist/chunks/{focus-aa5dlv8k.js.map → focus-C6pY4Ym4.js.map} +1 -1
  21. package/dist/chunks/{form-control.styles-BQdimE5o.js → form-control.styles-BHwSsx_y.js} +1 -1
  22. package/dist/chunks/{form-control.styles-BQdimE5o.js.map → form-control.styles-BHwSsx_y.js.map} +1 -1
  23. package/dist/chunks/{has-slot-8BvCt_qo.js → has-slot-9zjTXvea.js} +1 -1
  24. package/dist/chunks/{has-slot-8BvCt_qo.js.map → has-slot-9zjTXvea.js.map} +1 -1
  25. package/dist/chunks/{icon.styles-BLTWLqYp.js → icon.styles-pNyUmVtP.js} +1 -1
  26. package/dist/chunks/{icon.styles-BLTWLqYp.js.map → icon.styles-pNyUmVtP.js.map} +1 -1
  27. package/dist/chunks/{icons-BR8JcQj2.js → icons-B8siZLOe.js} +2 -2
  28. package/dist/chunks/{icons-BR8JcQj2.js.map → icons-B8siZLOe.js.map} +1 -1
  29. package/dist/chunks/{mirror-validator-DCjNYrrx.js → mirror-validator-Cszpqlxk.js} +1 -1
  30. package/dist/chunks/{mirror-validator-DCjNYrrx.js.map → mirror-validator-Cszpqlxk.js.map} +1 -1
  31. package/dist/chunks/{option-filter-BQqr8Z21.js → option-filter-Cj5SvyzI.js} +2 -2
  32. package/dist/chunks/{option-filter-BQqr8Z21.js.map → option-filter-Cj5SvyzI.js.map} +1 -1
  33. package/dist/chunks/{overlay-lifecycle-D0pkTQyI.js → overlay-lifecycle-CAoT0LE8.js} +1 -1
  34. package/dist/chunks/{overlay-lifecycle-D0pkTQyI.js.map → overlay-lifecycle-CAoT0LE8.js.map} +1 -1
  35. package/dist/chunks/pk-alert-Cjxl6CY_.js +664 -0
  36. package/dist/chunks/pk-alert-Cjxl6CY_.js.map +1 -0
  37. package/dist/chunks/{pk-autocomplete-qy2Psvqm.js → pk-autocomplete-DA77kdTN.js} +19 -19
  38. package/dist/chunks/{pk-autocomplete-qy2Psvqm.js.map → pk-autocomplete-DA77kdTN.js.map} +1 -1
  39. package/dist/chunks/{pk-button-BrH4u4Qr.js → pk-button-DCtNLEPr.js} +6 -6
  40. package/dist/chunks/{pk-button-BrH4u4Qr.js.map → pk-button-DCtNLEPr.js.map} +1 -1
  41. package/dist/chunks/{pk-button-group-BSz5T5iS.js → pk-button-group-DBdKK_2_.js} +1 -1
  42. package/dist/chunks/{pk-button-group-BSz5T5iS.js.map → pk-button-group-DBdKK_2_.js.map} +1 -1
  43. package/dist/chunks/{pk-button-group-separator-DH3Rl24b.js → pk-button-group-separator-D0Aa0a0f.js} +1 -1
  44. package/dist/chunks/{pk-button-group-separator-DH3Rl24b.js.map → pk-button-group-separator-D0Aa0a0f.js.map} +1 -1
  45. package/dist/chunks/{pk-button-group-text-Qro_KmZb.js → pk-button-group-text-BsqEM-dB.js} +2 -2
  46. package/dist/chunks/{pk-button-group-text-Qro_KmZb.js.map → pk-button-group-text-BsqEM-dB.js.map} +1 -1
  47. package/dist/chunks/{pk-calendar-Z7Y0PjeY.js → pk-calendar-hBz1MnOu.js} +6 -6
  48. package/dist/chunks/{pk-calendar-Z7Y0PjeY.js.map → pk-calendar-hBz1MnOu.js.map} +1 -1
  49. package/dist/chunks/{pk-checkbox-13ArHSmt.js → pk-checkbox-dvHRoVbL.js} +4 -4
  50. package/dist/chunks/{pk-checkbox-13ArHSmt.js.map → pk-checkbox-dvHRoVbL.js.map} +1 -1
  51. package/dist/chunks/{pk-checkbox-select-Ckvfbu83.js → pk-checkbox-select-Cqx5ZCMq.js} +2 -2
  52. package/dist/chunks/{pk-checkbox-select-Ckvfbu83.js.map → pk-checkbox-select-Cqx5ZCMq.js.map} +1 -1
  53. package/dist/chunks/{pk-clear--mPWZP7H.js → pk-clear-LzxwxEX7.js} +1 -1
  54. package/dist/chunks/{pk-clear--mPWZP7H.js.map → pk-clear-LzxwxEX7.js.map} +1 -1
  55. package/dist/chunks/{pk-code-editor-BlG6O5qB.js → pk-code-editor-C_PqjR75.js} +4 -4
  56. package/dist/chunks/{pk-code-editor-BlG6O5qB.js.map → pk-code-editor-C_PqjR75.js.map} +1 -1
  57. package/dist/chunks/{pk-color-input-BRgQ5-vB.js → pk-color-input-4LDV0Z3W.js} +4 -4
  58. package/dist/chunks/{pk-color-input-BRgQ5-vB.js.map → pk-color-input-4LDV0Z3W.js.map} +1 -1
  59. package/dist/chunks/{pk-combobox-ag89QEX2.js → pk-combobox-BeddzAsl.js} +19 -19
  60. package/dist/chunks/{pk-combobox-ag89QEX2.js.map → pk-combobox-BeddzAsl.js.map} +1 -1
  61. package/dist/chunks/{pk-connect.styles-BhW406jt.js → pk-connect.styles-ciqZMK3B.js} +1 -1
  62. package/dist/chunks/{pk-connect.styles-BhW406jt.js.map → pk-connect.styles-ciqZMK3B.js.map} +1 -1
  63. package/dist/chunks/{pk-copy-button-BVaOLtYG.js → pk-copy-button-KegSx46o.js} +29 -8
  64. package/dist/chunks/pk-copy-button-KegSx46o.js.map +1 -0
  65. package/dist/chunks/{pk-date-picker-C2YvDPNm.js → pk-date-picker-D_JFep-Y.js} +19 -19
  66. package/dist/chunks/{pk-date-picker-C2YvDPNm.js.map → pk-date-picker-D_JFep-Y.js.map} +1 -1
  67. package/dist/chunks/{pk-dialog-VMQqLW1f.js → pk-dialog-CFU850OH.js} +8 -8
  68. package/dist/chunks/{pk-dialog-VMQqLW1f.js.map → pk-dialog-CFU850OH.js.map} +1 -1
  69. package/dist/chunks/{pk-dropdown-item-D9OaG5o-.js → pk-dropdown-item-A4P4zfVF.js} +5 -5
  70. package/dist/chunks/{pk-dropdown-item-D9OaG5o-.js.map → pk-dropdown-item-A4P4zfVF.js.map} +1 -1
  71. package/dist/chunks/{pk-dropdown-label-CRNWMWQd.js → pk-dropdown-label-PqDxMkCI.js} +1 -1
  72. package/dist/chunks/{pk-dropdown-label-CRNWMWQd.js.map → pk-dropdown-label-PqDxMkCI.js.map} +1 -1
  73. package/dist/chunks/{pk-dropdown-menu-DW1wI8xQ.js → pk-dropdown-menu-C_vasBoa.js} +9 -9
  74. package/dist/chunks/{pk-dropdown-menu-DW1wI8xQ.js.map → pk-dropdown-menu-C_vasBoa.js.map} +1 -1
  75. package/dist/chunks/{pk-editable-table-DDnu1I8Y.js → pk-editable-table-B85NhFYY.js} +18 -18
  76. package/dist/chunks/{pk-editable-table-DDnu1I8Y.js.map → pk-editable-table-B85NhFYY.js.map} +1 -1
  77. package/dist/chunks/{pk-field-UAlMq6mQ.js → pk-field-BJA2fZ6s.js} +7 -7
  78. package/dist/chunks/{pk-field-UAlMq6mQ.js.map → pk-field-BJA2fZ6s.js.map} +1 -1
  79. package/dist/chunks/{pk-form-associated-element-GxX5lbnk.js → pk-form-associated-element-MqaHdIoH.js} +2 -2
  80. package/dist/chunks/{pk-form-associated-element-GxX5lbnk.js.map → pk-form-associated-element-MqaHdIoH.js.map} +1 -1
  81. package/dist/chunks/{pk-image-browser-Bj8LhWfk.js → pk-image-browser-DLAQcjFt.js} +19 -19
  82. package/dist/chunks/{pk-image-browser-Bj8LhWfk.js.map → pk-image-browser-DLAQcjFt.js.map} +1 -1
  83. package/dist/chunks/{pk-input-BywmK5n2.js → pk-input-CiUNLTSW.js} +11 -11
  84. package/dist/chunks/{pk-input-BywmK5n2.js.map → pk-input-CiUNLTSW.js.map} +1 -1
  85. package/dist/chunks/{pk-input-group-addon-ClBkGmAw.js → pk-input-group-addon-piOznzSS.js} +1 -1
  86. package/dist/chunks/{pk-input-group-addon-ClBkGmAw.js.map → pk-input-group-addon-piOznzSS.js.map} +1 -1
  87. package/dist/chunks/{pk-input-group-button-CHQHsWd4.js → pk-input-group-button-Di2vEJLo.js} +1 -1
  88. package/dist/chunks/{pk-input-group-button-CHQHsWd4.js.map → pk-input-group-button-Di2vEJLo.js.map} +1 -1
  89. package/dist/chunks/{pk-input-group-input-oNnqMBGU.js → pk-input-group-input-CwaaEfr1.js} +1 -1
  90. package/dist/chunks/{pk-input-group-input-oNnqMBGU.js.map → pk-input-group-input-CwaaEfr1.js.map} +1 -1
  91. package/dist/chunks/{pk-input-group-BLqKPnfc.js → pk-input-group-k7WV0pQI.js} +3 -3
  92. package/dist/chunks/{pk-input-group-BLqKPnfc.js.map → pk-input-group-k7WV0pQI.js.map} +1 -1
  93. package/dist/chunks/{pk-input-group-text-HUxlXROB.js → pk-input-group-text-C0VAdy0J.js} +1 -1
  94. package/dist/chunks/{pk-input-group-text-HUxlXROB.js.map → pk-input-group-text-C0VAdy0J.js.map} +1 -1
  95. package/dist/chunks/{pk-input-group-textarea-Cl2FNuw-.js → pk-input-group-textarea-DOG1NIlE.js} +1 -1
  96. package/dist/chunks/{pk-input-group-textarea-Cl2FNuw-.js.map → pk-input-group-textarea-DOG1NIlE.js.map} +1 -1
  97. package/dist/chunks/{pk-lightswitch-VHfJizBW.js → pk-lightswitch-FH5ZxMG2.js} +7 -7
  98. package/dist/chunks/{pk-lightswitch-VHfJizBW.js.map → pk-lightswitch-FH5ZxMG2.js.map} +1 -1
  99. package/dist/chunks/{pk-option-DQZHV9jL.js → pk-option-Cx52kLmz.js} +3 -3
  100. package/dist/chunks/{pk-option-DQZHV9jL.js.map → pk-option-Cx52kLmz.js.map} +1 -1
  101. package/dist/chunks/{pk-option-group-CCzJkBFp.js → pk-option-group-CYo9Ukue.js} +2 -2
  102. package/dist/chunks/{pk-option-group-CCzJkBFp.js.map → pk-option-group-CYo9Ukue.js.map} +1 -1
  103. package/dist/chunks/{pk-popover-D3jkHfwB.js → pk-popover-209LdoPr.js} +9 -9
  104. package/dist/chunks/{pk-popover-D3jkHfwB.js.map → pk-popover-209LdoPr.js.map} +1 -1
  105. package/dist/chunks/{pk-popup-B65tZMQH.js → pk-popup-0EIt9X_W.js} +3 -3
  106. package/dist/chunks/{pk-popup-B65tZMQH.js.map → pk-popup-0EIt9X_W.js.map} +1 -1
  107. package/dist/chunks/{pk-radio-group-Dzd-3HaQ.js → pk-radio-group-CruMBeeF.js} +6 -6
  108. package/dist/chunks/{pk-radio-group-Dzd-3HaQ.js.map → pk-radio-group-CruMBeeF.js.map} +1 -1
  109. package/dist/chunks/{pk-radio-B5XkMHy3.js → pk-radio-jgj6A0Wy.js} +1 -1
  110. package/dist/chunks/{pk-radio-B5XkMHy3.js.map → pk-radio-jgj6A0Wy.js.map} +1 -1
  111. package/dist/chunks/{pk-scroll-area-CdfNxYz8.js → pk-scroll-area-BaqN798b.js} +1 -1
  112. package/dist/chunks/{pk-scroll-area-CdfNxYz8.js.map → pk-scroll-area-BaqN798b.js.map} +1 -1
  113. package/dist/chunks/{pk-select-b5S5WKc-.js → pk-select-UUH7FE4H.js} +18 -18
  114. package/dist/chunks/{pk-select-b5S5WKc-.js.map → pk-select-UUH7FE4H.js.map} +1 -1
  115. package/dist/chunks/{pk-separator-N-VyjYE6.js → pk-separator-Bcxg_GO2.js} +1 -1
  116. package/dist/chunks/{pk-separator-N-VyjYE6.js.map → pk-separator-Bcxg_GO2.js.map} +1 -1
  117. package/dist/chunks/{pk-spinner-DweuYJ_Z.js → pk-spinner-CN365srE.js} +1 -1
  118. package/dist/chunks/{pk-spinner-DweuYJ_Z.js.map → pk-spinner-CN365srE.js.map} +1 -1
  119. package/dist/chunks/pk-state-panel-DPP7t-er.js +603 -0
  120. package/dist/chunks/pk-state-panel-DPP7t-er.js.map +1 -0
  121. package/dist/chunks/{pk-status-BehQARDv.js → pk-status-CYcadu0Q.js} +1 -1
  122. package/dist/chunks/{pk-status-BehQARDv.js.map → pk-status-CYcadu0Q.js.map} +1 -1
  123. package/dist/chunks/{pk-tab-CTloD18e.js → pk-tab-BmXNyDg7.js} +1 -1
  124. package/dist/chunks/{pk-tab-CTloD18e.js.map → pk-tab-BmXNyDg7.js.map} +1 -1
  125. package/dist/chunks/{pk-tab-heading-Cjcgebxn.js → pk-tab-heading-GZHVmCAd.js} +1 -1
  126. package/dist/chunks/{pk-tab-heading-Cjcgebxn.js.map → pk-tab-heading-GZHVmCAd.js.map} +1 -1
  127. package/dist/chunks/{pk-tab-panel-CkKU5-Ah.js → pk-tab-panel-OpM3f_cm.js} +1 -1
  128. package/dist/chunks/{pk-tab-panel-CkKU5-Ah.js.map → pk-tab-panel-OpM3f_cm.js.map} +1 -1
  129. package/dist/chunks/{pk-tabs-BgEBki1q.js → pk-tabs-x26NAw-V.js} +2 -2
  130. package/dist/chunks/{pk-tabs-BgEBki1q.js.map → pk-tabs-x26NAw-V.js.map} +1 -1
  131. package/dist/chunks/{pk-textarea-Dhj1WFLH.js → pk-textarea-CBijEmcV.js} +9 -9
  132. package/dist/chunks/{pk-textarea-Dhj1WFLH.js.map → pk-textarea-CBijEmcV.js.map} +1 -1
  133. package/dist/chunks/{pk-time-picker-ChRbKHNB.js → pk-time-picker-D-u5-7pf.js} +5 -5
  134. package/dist/chunks/{pk-time-picker-ChRbKHNB.js.map → pk-time-picker-D-u5-7pf.js.map} +1 -1
  135. package/dist/chunks/{pk-tiptap-content-CL8smjGi.js → pk-tiptap-content-BGxMO3T4.js} +2 -2
  136. package/dist/chunks/{pk-tiptap-content-CL8smjGi.js.map → pk-tiptap-content-BGxMO3T4.js.map} +1 -1
  137. package/dist/chunks/{pk-tiptap-editor-BMwedkPt.js → pk-tiptap-editor-BeuyzH5l.js} +17 -17
  138. package/dist/chunks/{pk-tiptap-editor-BMwedkPt.js.map → pk-tiptap-editor-BeuyzH5l.js.map} +1 -1
  139. package/dist/chunks/{pk-tiptap-input-YKg4VLp_.js → pk-tiptap-input-CQojaxDH.js} +5 -5
  140. package/dist/chunks/{pk-tiptap-input-YKg4VLp_.js.map → pk-tiptap-input-CQojaxDH.js.map} +1 -1
  141. package/dist/chunks/{pk-toggle-BthhH7vl.js → pk-toggle-CAtGO_Le.js} +2 -2
  142. package/dist/chunks/{pk-toggle-BthhH7vl.js.map → pk-toggle-CAtGO_Le.js.map} +1 -1
  143. package/dist/chunks/{pk-toggle-group-D2Quux8D.js → pk-toggle-group-CLso6OE7.js} +1 -1
  144. package/dist/chunks/{pk-toggle-group-D2Quux8D.js.map → pk-toggle-group-CLso6OE7.js.map} +1 -1
  145. package/dist/chunks/{pk-tooltip--QBV6puX.js → pk-tooltip-C6yb4CXI.js} +5 -5
  146. package/dist/chunks/{pk-tooltip--QBV6puX.js.map → pk-tooltip-C6yb4CXI.js.map} +1 -1
  147. package/dist/chunks/{popup-content-animation.styles-BnNiguJo.js → popup-content-animation.styles-EUnGV75J.js} +1 -1
  148. package/dist/chunks/{popup-content-animation.styles-BnNiguJo.js.map → popup-content-animation.styles-EUnGV75J.js.map} +1 -1
  149. package/dist/chunks/{popup-placement-animation-WlEXnS85.js → popup-placement-animation-GvFXER7D.js} +1 -1
  150. package/dist/chunks/{popup-placement-animation-WlEXnS85.js.map → popup-placement-animation-GvFXER7D.js.map} +1 -1
  151. package/dist/chunks/{popup-pointer-CuLjk1th.js → popup-pointer-BTS3Y6LE.js} +1 -1
  152. package/dist/chunks/{popup-pointer-CuLjk1th.js.map → popup-pointer-BTS3Y6LE.js.map} +1 -1
  153. package/dist/chunks/{register-BqkU5JNH.js → register-BDO_LUHK.js} +57 -51
  154. package/dist/chunks/register-BDO_LUHK.js.map +1 -0
  155. package/dist/chunks/{register-components-BT9THgdh.js → register-components-Dcdn1e3S.js} +1 -1
  156. package/dist/chunks/{register-components-BT9THgdh.js.map → register-components-Dcdn1e3S.js.map} +1 -1
  157. package/dist/chunks/{render-Dvc3MHQR.js → render-BKGW1a68.js} +1 -1
  158. package/dist/chunks/{render-Dvc3MHQR.js.map → render-BKGW1a68.js.map} +1 -1
  159. package/dist/chunks/{required-validator-CEg8dvjS.js → required-validator-CaRnQk1V.js} +1 -1
  160. package/dist/chunks/{required-validator-CEg8dvjS.js.map → required-validator-CaRnQk1V.js.map} +1 -1
  161. package/dist/chunks/{scroll-lock-Bbh3Sc5g.js → scroll-lock-gTFrvIPu.js} +1 -1
  162. package/dist/chunks/{scroll-lock-Bbh3Sc5g.js.map → scroll-lock-gTFrvIPu.js.map} +1 -1
  163. package/dist/chunks/{spinner-utils-CDfHypTv.js → spinner-utils-Co_4X3ip.js} +1 -1
  164. package/dist/chunks/{spinner-utils-CDfHypTv.js.map → spinner-utils-Co_4X3ip.js.map} +1 -1
  165. package/dist/chunks/{supports-popover-CUBsbHpS.js → supports-popover-6lNVStLh.js} +1 -1
  166. package/dist/chunks/{supports-popover-CUBsbHpS.js.map → supports-popover-6lNVStLh.js.map} +1 -1
  167. package/dist/chunks/{sync-listbox-separators-B1-V0oJi.js → sync-listbox-separators-CPFtrpNq.js} +1 -1
  168. package/dist/chunks/{sync-listbox-separators-B1-V0oJi.js.map → sync-listbox-separators-CPFtrpNq.js.map} +1 -1
  169. package/dist/chunks/{tiptap.styles-CPRows--.js → tiptap.styles-DjhIrSBN.js} +2 -2
  170. package/dist/chunks/{tiptap.styles-CPRows--.js.map → tiptap.styles-DjhIrSBN.js.map} +1 -1
  171. package/dist/component-registry.d.ts.map +1 -1
  172. package/dist/components/alert/index.d.ts +2 -0
  173. package/dist/components/alert/index.d.ts.map +1 -0
  174. package/dist/components/alert/pk-alert.d.ts +95 -0
  175. package/dist/components/alert/pk-alert.d.ts.map +1 -0
  176. package/dist/components/alert/pk-alert.js +2 -0
  177. package/dist/components/alert/pk-alert.styles.d.ts +2 -0
  178. package/dist/components/alert/pk-alert.styles.d.ts.map +1 -0
  179. package/dist/components/alert.d.ts +2 -0
  180. package/dist/components/alert.js +2 -0
  181. package/dist/components/autocomplete/pk-autocomplete.js +1 -1
  182. package/dist/components/autocomplete.js +1 -1
  183. package/dist/components/button/pk-button.js +1 -1
  184. package/dist/components/button-group/pk-button-group-separator.js +1 -1
  185. package/dist/components/button-group/pk-button-group-text.js +1 -1
  186. package/dist/components/button-group/pk-button-group.js +1 -1
  187. package/dist/components/button-group.js +3 -3
  188. package/dist/components/button.js +1 -1
  189. package/dist/components/calendar/pk-calendar.js +1 -1
  190. package/dist/components/calendar.js +1 -1
  191. package/dist/components/checkbox/pk-checkbox.js +1 -1
  192. package/dist/components/checkbox-select/pk-checkbox-select.js +1 -1
  193. package/dist/components/checkbox-select.js +1 -1
  194. package/dist/components/checkbox.js +1 -1
  195. package/dist/components/code-editor/pk-code-editor.js +1 -1
  196. package/dist/components/code-editor.js +1 -1
  197. package/dist/components/color-input/pk-color-input.js +1 -1
  198. package/dist/components/color-input.js +1 -1
  199. package/dist/components/combobox/pk-combobox.js +1 -1
  200. package/dist/components/combobox.js +1 -1
  201. package/dist/components/connect/pk-connect-oauth.js +3 -3
  202. package/dist/components/connect/pk-connect.d.ts +0 -1
  203. package/dist/components/connect/pk-connect.d.ts.map +1 -1
  204. package/dist/components/connect/pk-connect.js +25 -48
  205. package/dist/components/connect/pk-connect.js.map +1 -1
  206. package/dist/components/copy-button/pk-copy-button.d.ts +17 -2
  207. package/dist/components/copy-button/pk-copy-button.d.ts.map +1 -1
  208. package/dist/components/copy-button/pk-copy-button.js +1 -1
  209. package/dist/components/copy-button/pk-copy-button.styles.d.ts.map +1 -1
  210. package/dist/components/copy-button.js +1 -1
  211. package/dist/components/date-picker/pk-date-picker.js +1 -1
  212. package/dist/components/date-picker.js +1 -1
  213. package/dist/components/dialog/pk-dialog.js +1 -1
  214. package/dist/components/dialog.js +1 -1
  215. package/dist/components/dropdown-menu/pk-dropdown-item.js +1 -1
  216. package/dist/components/dropdown-menu/pk-dropdown-label.js +1 -1
  217. package/dist/components/dropdown-menu/pk-dropdown-menu.js +1 -1
  218. package/dist/components/dropdown-menu.js +3 -3
  219. package/dist/components/editable-table/pk-editable-table.js +1 -1
  220. package/dist/components/editable-table.js +1 -1
  221. package/dist/components/field/pk-field.js +1 -1
  222. package/dist/components/field.js +1 -1
  223. package/dist/components/image-browser/pk-image-browser.js +1 -1
  224. package/dist/components/image-browser.js +1 -1
  225. package/dist/components/input/pk-input.js +1 -1
  226. package/dist/components/input-group/pk-input-group-addon.js +1 -1
  227. package/dist/components/input-group/pk-input-group-button.js +1 -1
  228. package/dist/components/input-group/pk-input-group-input.js +1 -1
  229. package/dist/components/input-group/pk-input-group-text.js +1 -1
  230. package/dist/components/input-group/pk-input-group-textarea.js +1 -1
  231. package/dist/components/input-group/pk-input-group.js +1 -1
  232. package/dist/components/input-group.js +6 -6
  233. package/dist/components/input.js +1 -1
  234. package/dist/components/lightswitch/pk-lightswitch.js +1 -1
  235. package/dist/components/lightswitch.js +1 -1
  236. package/dist/components/popover/pk-popover.js +1 -1
  237. package/dist/components/popover.js +1 -1
  238. package/dist/components/popup/pk-popup.js +1 -1
  239. package/dist/components/popup.js +1 -1
  240. package/dist/components/radio-group/pk-radio-group.js +1 -1
  241. package/dist/components/radio-group/pk-radio.js +1 -1
  242. package/dist/components/radio-group.js +2 -2
  243. package/dist/components/scroll-area/pk-scroll-area.js +1 -1
  244. package/dist/components/scroll-area.js +1 -1
  245. package/dist/components/select/pk-option-group.js +1 -1
  246. package/dist/components/select/pk-option.js +1 -1
  247. package/dist/components/select/pk-select.js +1 -1
  248. package/dist/components/select.js +3 -3
  249. package/dist/components/separator/pk-separator.js +1 -1
  250. package/dist/components/separator.js +1 -1
  251. package/dist/components/spinner/pk-spinner.js +1 -1
  252. package/dist/components/spinner.js +2 -2
  253. package/dist/components/state-panel/index.d.ts +2 -0
  254. package/dist/components/state-panel/index.d.ts.map +1 -0
  255. package/dist/components/state-panel/pk-state-panel.d.ts +89 -0
  256. package/dist/components/state-panel/pk-state-panel.d.ts.map +1 -0
  257. package/dist/components/state-panel/pk-state-panel.js +2 -0
  258. package/dist/components/state-panel/pk-state-panel.styles.d.ts +2 -0
  259. package/dist/components/state-panel/pk-state-panel.styles.d.ts.map +1 -0
  260. package/dist/components/state-panel.d.ts +2 -0
  261. package/dist/components/state-panel.js +2 -0
  262. package/dist/components/status/pk-status.js +1 -1
  263. package/dist/components/status.js +1 -1
  264. package/dist/components/tabs/pk-tab-heading.js +1 -1
  265. package/dist/components/tabs/pk-tab-panel.js +1 -1
  266. package/dist/components/tabs/pk-tab.js +1 -1
  267. package/dist/components/tabs/pk-tabs.js +1 -1
  268. package/dist/components/tabs.js +4 -4
  269. package/dist/components/textarea/pk-textarea.js +1 -1
  270. package/dist/components/textarea.js +1 -1
  271. package/dist/components/time-picker/pk-time-picker.js +1 -1
  272. package/dist/components/time-picker.js +1 -1
  273. package/dist/components/tiptap/pk-tiptap-content.js +1 -1
  274. package/dist/components/tiptap/pk-tiptap-editor.js +1 -1
  275. package/dist/components/tiptap/pk-tiptap-input.js +1 -1
  276. package/dist/components/tiptap-content.js +1 -1
  277. package/dist/components/tiptap-editor.js +1 -1
  278. package/dist/components/tiptap-input.js +1 -1
  279. package/dist/components/toggle/pk-toggle.js +1 -1
  280. package/dist/components/toggle-group/pk-toggle-group.js +1 -1
  281. package/dist/components/toggle-group.js +1 -1
  282. package/dist/components/toggle.js +1 -1
  283. package/dist/components/tooltip/pk-tooltip.js +1 -1
  284. package/dist/components/tooltip.js +1 -1
  285. package/dist/connect/register-cp-connect.d.ts.map +1 -1
  286. package/dist/connect/register-cp-connect.js +8 -9
  287. package/dist/connect/register-cp-connect.js.map +1 -1
  288. package/dist/events/pk-dismiss.d.ts +10 -0
  289. package/dist/events/pk-dismiss.d.ts.map +1 -0
  290. package/dist/icons/index.js +2 -2
  291. package/dist/index.d.ts +3 -0
  292. package/dist/index.d.ts.map +1 -1
  293. package/dist/index.js +73 -66
  294. package/dist/index.js.map +1 -1
  295. package/dist/plugin-kit.css +2 -0
  296. package/dist/plugin-kit.js +4 -4
  297. package/dist/register-components.js +1 -1
  298. package/dist/register-pk.generated.d.ts +4 -0
  299. package/dist/register-pk.generated.d.ts.map +1 -1
  300. package/dist/register.d.ts +5 -1
  301. package/dist/register.d.ts.map +1 -1
  302. package/dist/register.js +59 -55
  303. package/dist/styles/connect/pk-connect.css +6 -107
  304. package/dist/utilities/fouce.css +2 -0
  305. package/dist-loader/chunks/{button-group-item.styles-CsBQ3Cyh.js → button-group-item.styles-CXLuiMeZ.js} +1 -1
  306. package/dist-loader/chunks/{lit-DpLik9Rf.js → lit-s6aadvWG.js} +78 -78
  307. package/dist-loader/chunks/{option-filter-Bc5aNNT0.js → option-filter-DH11hDpV.js} +1 -1
  308. package/dist-loader/chunks/{pk-base-B2MqxErC.js → pk-base-Om6X9ab5.js} +1 -1
  309. package/dist-loader/chunks/{pk-button-Dfm23jEC.js → pk-button-nSZxt8_B.js} +5 -5
  310. package/dist-loader/chunks/{pk-calendar-BuSULJCU.js → pk-calendar-BS7Mfme_.js} +5 -5
  311. package/dist-loader/chunks/{pk-checkbox-BDoq3xg0.js → pk-checkbox-CYUcOnco.js} +4 -4
  312. package/dist-loader/chunks/{pk-color-input-eLjO9zfn.js → pk-color-input-BjDit7z0.js} +4 -4
  313. package/dist-loader/chunks/{pk-combobox-DBvcyxRC.js → pk-combobox-DyexEhFo.js} +14 -14
  314. package/dist-loader/chunks/{pk-connect.styles-k61snd3X.js → pk-connect.styles-BsPAXjgF.js} +1 -1
  315. package/dist-loader/chunks/pk-copy-button-CoN83ilF.js +198 -0
  316. package/dist-loader/chunks/{pk-date-picker-CYLpYIji.js → pk-date-picker-CO6deRCu.js} +14 -14
  317. package/dist-loader/chunks/{pk-dialog-BtrH5Ke0.js → pk-dialog-BWo6iDnY.js} +6 -6
  318. package/dist-loader/chunks/{pk-dropdown-item-D8tfEU-k.js → pk-dropdown-item-CbujjI8U.js} +7 -7
  319. package/dist-loader/chunks/{pk-dropdown-label-TbLj4bHK.js → pk-dropdown-label-9X4ctyES.js} +2 -2
  320. package/dist-loader/chunks/{pk-dropdown-menu-C4GDW5pE.js → pk-dropdown-menu-D1KpGuqU.js} +8 -8
  321. package/dist-loader/chunks/{pk-field-BM0XD9Ij.js → pk-field-DzggayrX.js} +5 -5
  322. package/dist-loader/chunks/{pk-icon-_1F1aL74.js → pk-icon-DQPqxFKW.js} +3 -3
  323. package/dist-loader/chunks/{pk-input-DvBrD7Md.js → pk-input-C1peOijH.js} +8 -8
  324. package/dist-loader/chunks/{pk-lightswitch-CcwlLQ9f.js → pk-lightswitch-Y-I3eKCt.js} +6 -6
  325. package/dist-loader/chunks/{pk-option-DATPm0Bo.js → pk-option-IfazQDxz.js} +4 -4
  326. package/dist-loader/chunks/{pk-popup-CUuGs8r_.js → pk-popup-BrLT_4kD.js} +4 -4
  327. package/dist-loader/chunks/{pk-select-DpcvbzUL.js → pk-select-49fogRYV.js} +13 -13
  328. package/dist-loader/chunks/{pk-spinner-Dk_LbvHW.js → pk-spinner-BmnrA60m.js} +2 -2
  329. package/dist-loader/chunks/pk-state-panel-DKf54EnJ.js +600 -0
  330. package/dist-loader/chunks/{pk-status-B8UvjIp2.js → pk-status-Dat3_D-T.js} +2 -2
  331. package/dist-loader/chunks/{pk-textarea-DeSuxufJ.js → pk-textarea-DPb2R8gV.js} +6 -6
  332. package/dist-loader/chunks/{pk-time-picker-DpJt8biN.js → pk-time-picker-CJiQTVuC.js} +6 -6
  333. package/dist-loader/chunks/{pk-tooltip-DcF9J5GT.js → pk-tooltip-CqwQfOPV.js} +5 -5
  334. package/dist-loader/chunks/{popup-content-animation.styles-duCg9-CH.js → popup-content-animation.styles-CWR2mend.js} +1 -1
  335. package/dist-loader/chunks/{render-Bnzcxfss.js → render-BuA2YeZN.js} +1 -1
  336. package/dist-loader/chunks/{svg-Bz-bXZn7.js → svg-C6YcJMk9.js} +8 -1
  337. package/dist-loader/chunks/{tiptap-CgXkiK8d.js → tiptap-BhYH5Dva.js} +1 -1
  338. package/dist-loader/chunks/{tiptap.styles-C0E1NpSx.js → tiptap.styles-BckAim0_.js} +2 -2
  339. package/dist-loader/components/alert/alert.js +661 -0
  340. package/dist-loader/components/autocomplete/autocomplete.js +14 -14
  341. package/dist-loader/components/button/button.js +1 -1
  342. package/dist-loader/components/button-group/button-group-separator.js +2 -2
  343. package/dist-loader/components/button-group/button-group-text.js +3 -3
  344. package/dist-loader/components/button-group/button-group.js +2 -2
  345. package/dist-loader/components/calendar/calendar.js +1 -1
  346. package/dist-loader/components/checkbox/checkbox.js +1 -1
  347. package/dist-loader/components/checkbox-select/checkbox-select.js +3 -3
  348. package/dist-loader/components/code-editor/code-editor.js +4 -4
  349. package/dist-loader/components/color-input/color-input.js +1 -1
  350. package/dist-loader/components/combobox/combobox.js +1 -1
  351. package/dist-loader/components/connect/connect-oauth.js +5 -5
  352. package/dist-loader/components/connect/connect.js +28 -51
  353. package/dist-loader/components/copy-button/copy-button.js +1 -176
  354. package/dist-loader/components/date-picker/date-picker.js +1 -1
  355. package/dist-loader/components/dialog/dialog.js +1 -1
  356. package/dist-loader/components/dropdown-menu/dropdown-item.js +1 -1
  357. package/dist-loader/components/dropdown-menu/dropdown-label.js +1 -1
  358. package/dist-loader/components/dropdown-menu/dropdown-menu.js +1 -1
  359. package/dist-loader/components/dropdown-menu/dropdown-separator.js +2 -2
  360. package/dist-loader/components/editable-table/editable-table.js +18 -18
  361. package/dist-loader/components/field/field.js +1 -1
  362. package/dist-loader/components/icon/icon.js +2 -2
  363. package/dist-loader/components/image-browser/image-browser.js +14 -14
  364. package/dist-loader/components/input/input.js +1 -1
  365. package/dist-loader/components/input-group/input-group-addon.js +2 -2
  366. package/dist-loader/components/input-group/input-group-button.js +2 -2
  367. package/dist-loader/components/input-group/input-group-input.js +2 -2
  368. package/dist-loader/components/input-group/input-group-text.js +2 -2
  369. package/dist-loader/components/input-group/input-group-textarea.js +2 -2
  370. package/dist-loader/components/input-group/input-group.js +3 -3
  371. package/dist-loader/components/lightswitch/lightswitch.js +1 -1
  372. package/dist-loader/components/popover/popover.js +8 -8
  373. package/dist-loader/components/popup/popup.js +1 -1
  374. package/dist-loader/components/radio-group/radio-group.js +5 -5
  375. package/dist-loader/components/radio-group/radio.js +2 -2
  376. package/dist-loader/components/scroll-area/scroll-area.js +2 -2
  377. package/dist-loader/components/select/option-group.js +2 -2
  378. package/dist-loader/components/select/option.js +1 -1
  379. package/dist-loader/components/select/select.js +1 -1
  380. package/dist-loader/components/separator/separator.js +2 -2
  381. package/dist-loader/components/spinner/spinner.js +1 -1
  382. package/dist-loader/components/state-panel/state-panel.js +2 -0
  383. package/dist-loader/components/status/status.js +1 -1
  384. package/dist-loader/components/tabs/tab-heading.js +2 -2
  385. package/dist-loader/components/tabs/tab-panel.js +2 -2
  386. package/dist-loader/components/tabs/tab.js +2 -2
  387. package/dist-loader/components/tabs/tabs.js +2 -2
  388. package/dist-loader/components/textarea/textarea.js +1 -1
  389. package/dist-loader/components/time-picker/time-picker.js +1 -1
  390. package/dist-loader/components/tiptap/tiptap-content.js +4 -4
  391. package/dist-loader/components/tiptap/tiptap-editor.js +16 -16
  392. package/dist-loader/components/tiptap/tiptap-input.js +5 -5
  393. package/dist-loader/components/toggle/toggle.js +3 -3
  394. package/dist-loader/components/toggle-group/toggle-group.js +2 -2
  395. package/dist-loader/components/tooltip/tooltip.js +1 -1
  396. package/dist-loader/plugin-kit.css +2 -0
  397. package/dist-loader/plugin-kit.loader.js +4 -0
  398. package/dist-loader/styles/connect/pk-connect.css +6 -107
  399. package/dist-loader/utilities/fouce.css +2 -0
  400. package/package.json +47 -7
  401. package/dist/chunks/component-registry-D34fm8xW.js.map +0 -1
  402. package/dist/chunks/pk-copy-button-BVaOLtYG.js.map +0 -1
  403. package/dist/chunks/register-BqkU5JNH.js.map +0 -1
  404. /package/dist-loader/chunks/{animate-with-class-DT0jwaR_.js → animate-with-class-BpZi7v-y.js} +0 -0
  405. /package/dist-loader/chunks/{codemirror-CSgOT0QM.js → codemirror-CU2NB7wh.js} +0 -0
  406. /package/dist-loader/chunks/{field-labels-D3lKQ2nq.js → field-labels-D7ccWdRn.js} +0 -0
  407. /package/dist-loader/chunks/{floating-ui-Cj0imr6d.js → floating-ui-B84As3F-.js} +0 -0
  408. /package/dist-loader/chunks/{has-slot-BGJeJdHr.js → has-slot-BvdEcnpm.js} +0 -0
  409. /package/dist-loader/chunks/{mirror-validator-C5XrXPaq.js → mirror-validator-9X0wdFnh.js} +0 -0
  410. /package/dist-loader/chunks/{overlay-lifecycle-C3tSQ3UR.js → overlay-lifecycle-CSIBJZgQ.js} +0 -0
  411. /package/dist-loader/chunks/{pk-clear-BMZUzwDt.js → pk-clear-BL8m1NyC.js} +0 -0
  412. /package/dist-loader/chunks/{popup-placement-animation-WlEXnS85.js → popup-placement-animation-BQdKabXq.js} +0 -0
  413. /package/dist-loader/chunks/{popup-pointer-Ck28WdVP.js → popup-pointer-BNwlPGKA.js} +0 -0
  414. /package/dist-loader/chunks/{required-validator-0XwZtX9k.js → required-validator-DCTovZ6r.js} +0 -0
  415. /package/dist-loader/chunks/{sync-listbox-separators-Ch5krDUs.js → sync-listbox-separators-rbu8jrAa.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"pk-input-group-addon-ClBkGmAw.js","names":[],"sources":["../../src/components/input-group/pk-input-group-addon.styles.ts","../../src/components/input-group/pk-input-group-addon.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkInputGroupAddonStyles = css`\n @layer pk-component {\n :host {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n padding-inline: 0.5rem;\n font-size: var(--pk-font-size-sm);\n color: var(--pk-color-gray-500);\n cursor: text;\n user-select: none;\n flex-shrink: 0;\n }\n\n :host([align='inline-start']) {\n padding-inline-start: 0.5rem;\n }\n\n :host([align='inline-end']) {\n padding-inline-end: 0.5rem;\n }\n\n :host([align='block-start']) {\n width: 100%;\n align-self: stretch;\n justify-content: flex-start;\n padding: 0.625rem 0.625rem 0;\n }\n\n :host([align='block-end']) {\n width: 100%;\n align-self: stretch;\n justify-content: flex-start;\n padding: 0 0.625rem 0.625rem;\n }\n\n :host([align='block-start']) .addon,\n :host([align='block-end']) .addon {\n display: flex;\n width: 100%;\n box-sizing: border-box;\n }\n\n :host([align='block-start']) ::slotted(*),\n :host([align='block-end']) ::slotted(*) {\n width: 100%;\n }\n\n :host([align='inline-start']) ::slotted(pk-input-group-button) {\n margin-inline-start: -0.3rem;\n }\n\n :host([align='inline-end']) ::slotted(pk-input-group-button) {\n margin-inline-end: -0.3rem;\n }\n\n ::slotted(svg) {\n width: 0.75rem;\n height: 0.75rem;\n flex-shrink: 0;\n }\n }\n`;\n","import { html } from 'lit';\nimport { customElement, property } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkInputGroupAddonStyles } from './pk-input-group-addon.styles.js';\n\nexport type PkInputGroupAddonAlign = 'inline-start' | 'inline-end' | 'block-start' | 'block-end';\n\n/**\n * Icon, text, or button content alongside an input-group control.\n *\n * Place after the control in the DOM; use `align` to position visually.\n *\n * @slot - Addon content\n *\n * @csspart base - Addon container\n */\n@customElement('pk-input-group-addon')\nexport class PkInputGroupAddon extends PkElement {\n static override styles = pkInputGroupAddonStyles;\n\n @property({ reflect: true })\n align: PkInputGroupAddonAlign = 'inline-start';\n\n private handleClick(event: MouseEvent): void {\n if ((event.target as HTMLElement).closest('button, pk-input-group-button, pk-button')) {\n return;\n }\n\n const group = this.closest('pk-input-group');\n\n const control = group?.querySelector('pk-input-group-input, pk-input-group-textarea') as\n | (HTMLElement & { focus(options?: FocusOptions): void })\n | null;\n\n control?.focus();\n }\n\n override render() {\n return html`\n <div\n part=\"base\"\n class=\"addon\"\n role=\"group\"\n @click=${this.handleClick}\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-input-group-addon': PkInputGroupAddon;\n }\n}\n"],"mappings":";;;AAEA,IAAa,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACgBnC,IAAA,oBAAA,MAAM,0BAA0B,UAAU;;;eAIb;;;gBAHP;;CAKzB,YAAoB,OAAyB;AACzC,MAAK,MAAM,OAAuB,QAAQ,2CAA2C,CACjF;AASJ,GANc,KAAK,QAAQ,iBAEX,EAAO,cAAc,gDAAgD,GAI5E,OAAO;;CAGpB,SAAkB;AACd,SAAO,IAAI;;;;;yBAKM,KAAK,YAAY;;;;;;;YAvBrC,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,kBAAA,WAAA,SAAA,KAAA,EAAA;gCAJ/B,cAAc,uBAAuB,CAAA,EAAA,kBAAA"}
1
+ {"version":3,"file":"pk-input-group-addon-piOznzSS.js","names":[],"sources":["../../src/components/input-group/pk-input-group-addon.styles.ts","../../src/components/input-group/pk-input-group-addon.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkInputGroupAddonStyles = css`\n @layer pk-component {\n :host {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n padding-inline: 0.5rem;\n font-size: var(--pk-font-size-sm);\n color: var(--pk-color-gray-500);\n cursor: text;\n user-select: none;\n flex-shrink: 0;\n }\n\n :host([align='inline-start']) {\n padding-inline-start: 0.5rem;\n }\n\n :host([align='inline-end']) {\n padding-inline-end: 0.5rem;\n }\n\n :host([align='block-start']) {\n width: 100%;\n align-self: stretch;\n justify-content: flex-start;\n padding: 0.625rem 0.625rem 0;\n }\n\n :host([align='block-end']) {\n width: 100%;\n align-self: stretch;\n justify-content: flex-start;\n padding: 0 0.625rem 0.625rem;\n }\n\n :host([align='block-start']) .addon,\n :host([align='block-end']) .addon {\n display: flex;\n width: 100%;\n box-sizing: border-box;\n }\n\n :host([align='block-start']) ::slotted(*),\n :host([align='block-end']) ::slotted(*) {\n width: 100%;\n }\n\n :host([align='inline-start']) ::slotted(pk-input-group-button) {\n margin-inline-start: -0.3rem;\n }\n\n :host([align='inline-end']) ::slotted(pk-input-group-button) {\n margin-inline-end: -0.3rem;\n }\n\n ::slotted(svg) {\n width: 0.75rem;\n height: 0.75rem;\n flex-shrink: 0;\n }\n }\n`;\n","import { html } from 'lit';\nimport { customElement, property } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkInputGroupAddonStyles } from './pk-input-group-addon.styles.js';\n\nexport type PkInputGroupAddonAlign = 'inline-start' | 'inline-end' | 'block-start' | 'block-end';\n\n/**\n * Icon, text, or button content alongside an input-group control.\n *\n * Place after the control in the DOM; use `align` to position visually.\n *\n * @slot - Addon content\n *\n * @csspart base - Addon container\n */\n@customElement('pk-input-group-addon')\nexport class PkInputGroupAddon extends PkElement {\n static override styles = pkInputGroupAddonStyles;\n\n @property({ reflect: true })\n align: PkInputGroupAddonAlign = 'inline-start';\n\n private handleClick(event: MouseEvent): void {\n if ((event.target as HTMLElement).closest('button, pk-input-group-button, pk-button')) {\n return;\n }\n\n const group = this.closest('pk-input-group');\n\n const control = group?.querySelector('pk-input-group-input, pk-input-group-textarea') as\n | (HTMLElement & { focus(options?: FocusOptions): void })\n | null;\n\n control?.focus();\n }\n\n override render() {\n return html`\n <div\n part=\"base\"\n class=\"addon\"\n role=\"group\"\n @click=${this.handleClick}\n >\n <slot></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-input-group-addon': PkInputGroupAddon;\n }\n}\n"],"mappings":";;;AAEA,IAAa,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACgBnC,IAAA,oBAAA,MAAM,0BAA0B,UAAU;;;eAIb;;;gBAHP;;CAKzB,YAAoB,OAAyB;AACzC,MAAK,MAAM,OAAuB,QAAQ,2CAA2C,CACjF;AASJ,GANc,KAAK,QAAQ,iBAEX,EAAO,cAAc,gDAAgD,GAI5E,OAAO;;CAGpB,SAAkB;AACd,SAAO,IAAI;;;;;yBAKM,KAAK,YAAY;;;;;;;YAvBrC,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,kBAAA,WAAA,SAAA,KAAA,EAAA;gCAJ/B,cAAc,uBAAuB,CAAA,EAAA,kBAAA"}
@@ -51,4 +51,4 @@ PkInputGroupButton = __decorate([customElement("pk-input-group-button")], PkInpu
51
51
  //#endregion
52
52
  export { PkInputGroupButton as t };
53
53
 
54
- //# sourceMappingURL=pk-input-group-button-CHQHsWd4.js.map
54
+ //# sourceMappingURL=pk-input-group-button-Di2vEJLo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pk-input-group-button-CHQHsWd4.js","names":[],"sources":["../../src/components/input-group/pk-input-group-button.styles.ts","../../src/components/input-group/pk-input-group-button.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkInputGroupButtonStyles = css`\n @layer pk-component {\n :host {\n display: inline-flex;\n }\n\n pk-button {\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-radius: var(--pk-btn-radius-sm);\n }\n }\n`;\n","import { html } from 'lit';\nimport { customElement, property } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkInputGroupButtonStyles } from './pk-input-group-button.styles.js';\n\nexport type PkInputGroupButtonSize = 'xs' | 'sm' | 'icon-xs' | 'icon-sm';\n\n/**\n * Compact button for use inside an input-group addon.\n *\n * @slot - Button label or icon\n *\n * @csspart base - Button element\n */\n@customElement('pk-input-group-button')\nexport class PkInputGroupButton extends PkElement {\n static override styles = pkInputGroupButtonStyles;\n\n @property({ reflect: true })\n variant = 'none';\n\n @property({ reflect: true })\n size: PkInputGroupButtonSize = 'xs';\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n override render() {\n return html`\n <pk-button\n part=\"base\"\n variant=${this.variant}\n size=${this.size === 'icon-xs' || this.size === 'icon-sm' ? 'xs' : 'xs'}\n ?disabled=${this.disabled}\n >\n <slot></slot>\n </pk-button>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-input-group-button': PkInputGroupButton;\n }\n}\n"],"mappings":";;;AAEA,IAAa,2BAA2B,GAAG;;;;;;;;;;;;;;;;;ACcpC,IAAA,qBAAA,MAAM,2BAA2B,UAAU;;;iBAIpC;cAGqB;kBAGpB;;;gBATc;;CAWzB,SAAkB;AACd,SAAO,IAAI;;;0BAGO,KAAK,QAAQ;uBAChB,KAAK,SAAS,aAAa,KAAK,SAAS,YAAY,OAAO,KAAK;4BAC5D,KAAK,SAAS;;;;;;;YAfrC,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,mBAAA,WAAA,WAAA,KAAA,EAAA;YAG3B,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,mBAAA,WAAA,QAAA,KAAA,EAAA;YAG3B,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,mBAAA,WAAA,YAAA,KAAA,EAAA;iCAV9C,cAAc,wBAAwB,CAAA,EAAA,mBAAA"}
1
+ {"version":3,"file":"pk-input-group-button-Di2vEJLo.js","names":[],"sources":["../../src/components/input-group/pk-input-group-button.styles.ts","../../src/components/input-group/pk-input-group-button.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkInputGroupButtonStyles = css`\n @layer pk-component {\n :host {\n display: inline-flex;\n }\n\n pk-button {\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-radius: var(--pk-btn-radius-sm);\n }\n }\n`;\n","import { html } from 'lit';\nimport { customElement, property } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkInputGroupButtonStyles } from './pk-input-group-button.styles.js';\n\nexport type PkInputGroupButtonSize = 'xs' | 'sm' | 'icon-xs' | 'icon-sm';\n\n/**\n * Compact button for use inside an input-group addon.\n *\n * @slot - Button label or icon\n *\n * @csspart base - Button element\n */\n@customElement('pk-input-group-button')\nexport class PkInputGroupButton extends PkElement {\n static override styles = pkInputGroupButtonStyles;\n\n @property({ reflect: true })\n variant = 'none';\n\n @property({ reflect: true })\n size: PkInputGroupButtonSize = 'xs';\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n override render() {\n return html`\n <pk-button\n part=\"base\"\n variant=${this.variant}\n size=${this.size === 'icon-xs' || this.size === 'icon-sm' ? 'xs' : 'xs'}\n ?disabled=${this.disabled}\n >\n <slot></slot>\n </pk-button>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-input-group-button': PkInputGroupButton;\n }\n}\n"],"mappings":";;;AAEA,IAAa,2BAA2B,GAAG;;;;;;;;;;;;;;;;;ACcpC,IAAA,qBAAA,MAAM,2BAA2B,UAAU;;;iBAIpC;cAGqB;kBAGpB;;;gBATc;;CAWzB,SAAkB;AACd,SAAO,IAAI;;;0BAGO,KAAK,QAAQ;uBAChB,KAAK,SAAS,aAAa,KAAK,SAAS,YAAY,OAAO,KAAK;4BAC5D,KAAK,SAAS;;;;;;;YAfrC,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,mBAAA,WAAA,WAAA,KAAA,EAAA;YAG3B,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,mBAAA,WAAA,QAAA,KAAA,EAAA;YAG3B,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,mBAAA,WAAA,YAAA,KAAA,EAAA;iCAV9C,cAAc,wBAAwB,CAAA,EAAA,mBAAA"}
@@ -132,4 +132,4 @@ PkInputGroupInput = __decorate([customElement("pk-input-group-input")], PkInputG
132
132
  //#endregion
133
133
  export { PkInputGroupInput as t };
134
134
 
135
- //# sourceMappingURL=pk-input-group-input-oNnqMBGU.js.map
135
+ //# sourceMappingURL=pk-input-group-input-CwaaEfr1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pk-input-group-input-oNnqMBGU.js","names":[],"sources":["../../src/components/input-group/pk-input-group-input.styles.ts","../../src/components/input-group/pk-input-group-input.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkInputGroupInputStyles = css`\n @layer pk-component {\n :host {\n display: flex;\n flex: 1 1 auto;\n min-width: 0;\n align-self: stretch;\n }\n\n .input {\n display: block;\n width: 100%;\n min-width: 0;\n margin: 0;\n padding: 6px 8px;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: var(--pk-color-gray-700);\n font: inherit;\n line-height: 1.4;\n appearance: none;\n box-sizing: border-box;\n box-shadow: none;\n outline: none;\n }\n\n .input::placeholder {\n color: var(--pk-input-placeholder-color, var(--pk-color-gray-400));\n }\n\n .input:disabled {\n cursor: not-allowed;\n }\n\n :host([size='xs']) .input {\n padding: 4px 6px;\n font-size: 11px;\n }\n\n :host([size='sm']) .input {\n padding: 4px 8px;\n font-size: 12px;\n }\n\n :host([size='lg']) .input {\n padding: 8px 12px;\n font-size: var(--pk-font-size-base);\n }\n\n :host([size='xl']) .input {\n padding: 10px 16px;\n font-size: 16px;\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport { customElement, property, query } from '../../decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkInputGroupInputStyles } from './pk-input-group-input.styles.js';\n\nexport type PkInputGroupInputSize = 'xs' | 'sm' | 'default' | 'lg' | 'xl';\n\n/**\n * Borderless input for use inside `pk-input-group`.\n *\n * @csspart input - Native input element\n */\n@customElement('pk-input-group-input')\nexport class PkInputGroupInput extends PkElement {\n static override styles = pkInputGroupInputStyles;\n\n @query('.input')\n inputElement!: HTMLInputElement;\n\n @property({ reflect: true })\n type = 'text';\n\n @property({ reflect: true })\n size: PkInputGroupInputSize = 'default';\n\n @property()\n placeholder = '';\n\n @property({ attribute: 'value', reflect: true })\n value = '';\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: Boolean, reflect: true })\n readonly = false;\n\n @property({ type: Boolean, reflect: true })\n invalid = false;\n\n @property()\n autocomplete?: string;\n\n focus(options?: FocusOptions): void {\n this.inputElement?.focus(options);\n }\n\n override render() {\n return html`\n <input\n part=\"input\"\n class=\"input\"\n data-slot=\"input-group-control\"\n type=${this.type}\n .value=${this.value}\n placeholder=${this.placeholder}\n autocomplete=${ifDefined(this.autocomplete)}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n aria-invalid=${this.invalid ? 'true' : nothing}\n @input=${this.handleInput}\n />\n `;\n }\n\n private handleInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-input-group-input': PkInputGroupInput;\n }\n}\n"],"mappings":";;;;AAEA,IAAa,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACanC,IAAA,oBAAA,MAAM,0BAA0B,UAAU;;;cAOtC;cAGuB;qBAGhB;eAGN;kBAGG;kBAGA;iBAGD;;;gBAxBe;;CA6BzB,MAAM,SAA8B;AAChC,OAAK,cAAc,MAAM,QAAQ;;CAGrC,SAAkB;AACd,SAAO,IAAI;;;;;uBAKI,KAAK,KAAK;yBACR,KAAK,MAAM;8BACN,KAAK,YAAY;+BAChB,UAAU,KAAK,aAAa,CAAC;4BAChC,KAAK,SAAS;4BACd,KAAK,SAAS;+BACX,KAAK,UAAU,SAAS,QAAQ;yBACtC,KAAK,YAAY;;;;CAKtC,YAAoB,OAAoB;EACpC,MAAM,SAAS,MAAM;AACrB,OAAK,QAAQ,OAAO;AACpB,OAAK,cAAc,IAAI,MAAM,SAAS;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC,CAAC;AACzE,OAAK,cAAc,IAAI,MAAM,UAAU;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC,CAAC;;;YArD7E,MAAM,SAAS,CAAA,EAAA,kBAAA,WAAA,gBAAA,KAAA,EAAA;YAGf,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,kBAAA,WAAA,QAAA,KAAA,EAAA;YAG3B,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,kBAAA,WAAA,QAAA,KAAA,EAAA;YAG3B,UAAU,CAAA,EAAA,kBAAA,WAAA,eAAA,KAAA,EAAA;YAGV,SAAS;CAAE,WAAW;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,kBAAA,WAAA,SAAA,KAAA,EAAA;YAG/C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,kBAAA,WAAA,YAAA,KAAA,EAAA;YAG1C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,kBAAA,WAAA,YAAA,KAAA,EAAA;YAG1C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,kBAAA,WAAA,WAAA,KAAA,EAAA;YAG1C,UAAU,CAAA,EAAA,kBAAA,WAAA,gBAAA,KAAA,EAAA;gCA5Bd,cAAc,uBAAuB,CAAA,EAAA,kBAAA"}
1
+ {"version":3,"file":"pk-input-group-input-CwaaEfr1.js","names":[],"sources":["../../src/components/input-group/pk-input-group-input.styles.ts","../../src/components/input-group/pk-input-group-input.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkInputGroupInputStyles = css`\n @layer pk-component {\n :host {\n display: flex;\n flex: 1 1 auto;\n min-width: 0;\n align-self: stretch;\n }\n\n .input {\n display: block;\n width: 100%;\n min-width: 0;\n margin: 0;\n padding: 6px 8px;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: var(--pk-color-gray-700);\n font: inherit;\n line-height: 1.4;\n appearance: none;\n box-sizing: border-box;\n box-shadow: none;\n outline: none;\n }\n\n .input::placeholder {\n color: var(--pk-input-placeholder-color, var(--pk-color-gray-400));\n }\n\n .input:disabled {\n cursor: not-allowed;\n }\n\n :host([size='xs']) .input {\n padding: 4px 6px;\n font-size: 11px;\n }\n\n :host([size='sm']) .input {\n padding: 4px 8px;\n font-size: 12px;\n }\n\n :host([size='lg']) .input {\n padding: 8px 12px;\n font-size: var(--pk-font-size-base);\n }\n\n :host([size='xl']) .input {\n padding: 10px 16px;\n font-size: 16px;\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport { customElement, property, query } from '../../decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkInputGroupInputStyles } from './pk-input-group-input.styles.js';\n\nexport type PkInputGroupInputSize = 'xs' | 'sm' | 'default' | 'lg' | 'xl';\n\n/**\n * Borderless input for use inside `pk-input-group`.\n *\n * @csspart input - Native input element\n */\n@customElement('pk-input-group-input')\nexport class PkInputGroupInput extends PkElement {\n static override styles = pkInputGroupInputStyles;\n\n @query('.input')\n inputElement!: HTMLInputElement;\n\n @property({ reflect: true })\n type = 'text';\n\n @property({ reflect: true })\n size: PkInputGroupInputSize = 'default';\n\n @property()\n placeholder = '';\n\n @property({ attribute: 'value', reflect: true })\n value = '';\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: Boolean, reflect: true })\n readonly = false;\n\n @property({ type: Boolean, reflect: true })\n invalid = false;\n\n @property()\n autocomplete?: string;\n\n focus(options?: FocusOptions): void {\n this.inputElement?.focus(options);\n }\n\n override render() {\n return html`\n <input\n part=\"input\"\n class=\"input\"\n data-slot=\"input-group-control\"\n type=${this.type}\n .value=${this.value}\n placeholder=${this.placeholder}\n autocomplete=${ifDefined(this.autocomplete)}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n aria-invalid=${this.invalid ? 'true' : nothing}\n @input=${this.handleInput}\n />\n `;\n }\n\n private handleInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-input-group-input': PkInputGroupInput;\n }\n}\n"],"mappings":";;;;AAEA,IAAa,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACanC,IAAA,oBAAA,MAAM,0BAA0B,UAAU;;;cAOtC;cAGuB;qBAGhB;eAGN;kBAGG;kBAGA;iBAGD;;;gBAxBe;;CA6BzB,MAAM,SAA8B;AAChC,OAAK,cAAc,MAAM,QAAQ;;CAGrC,SAAkB;AACd,SAAO,IAAI;;;;;uBAKI,KAAK,KAAK;yBACR,KAAK,MAAM;8BACN,KAAK,YAAY;+BAChB,UAAU,KAAK,aAAa,CAAC;4BAChC,KAAK,SAAS;4BACd,KAAK,SAAS;+BACX,KAAK,UAAU,SAAS,QAAQ;yBACtC,KAAK,YAAY;;;;CAKtC,YAAoB,OAAoB;EACpC,MAAM,SAAS,MAAM;AACrB,OAAK,QAAQ,OAAO;AACpB,OAAK,cAAc,IAAI,MAAM,SAAS;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC,CAAC;AACzE,OAAK,cAAc,IAAI,MAAM,UAAU;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC,CAAC;;;YArD7E,MAAM,SAAS,CAAA,EAAA,kBAAA,WAAA,gBAAA,KAAA,EAAA;YAGf,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,kBAAA,WAAA,QAAA,KAAA,EAAA;YAG3B,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,kBAAA,WAAA,QAAA,KAAA,EAAA;YAG3B,UAAU,CAAA,EAAA,kBAAA,WAAA,eAAA,KAAA,EAAA;YAGV,SAAS;CAAE,WAAW;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,kBAAA,WAAA,SAAA,KAAA,EAAA;YAG/C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,kBAAA,WAAA,YAAA,KAAA,EAAA;YAG1C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,kBAAA,WAAA,YAAA,KAAA,EAAA;YAG1C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,kBAAA,WAAA,WAAA,KAAA,EAAA;YAG1C,UAAU,CAAA,EAAA,kBAAA,WAAA,gBAAA,KAAA,EAAA;gCA5Bd,cAAc,uBAAuB,CAAA,EAAA,kBAAA"}
@@ -1,6 +1,6 @@
1
1
  import { a as query, n as PkElement, s as customElement, t as __decorate } from "./decorate-R0X811qp.js";
2
- import { n as buttonGroupCornerRadiusStyles, r as buttonGroupCornerRoleStyles, t as buttonGroupBorderJoinStyles } from "./button-group-item.styles-DYmBR28a.js";
3
- import { t as HostAriaMirror } from "./control-aria-B2QMq4ji.js";
2
+ import { n as buttonGroupCornerRadiusStyles, r as buttonGroupCornerRoleStyles, t as buttonGroupBorderJoinStyles } from "./button-group-item.styles-G05d0DNI.js";
3
+ import { t as HostAriaMirror } from "./control-aria-CzouQRZD.js";
4
4
  import { css, html } from "lit";
5
5
  //#region src/components/input-group/pk-input-group.styles.ts
6
6
  var pkInputGroupStyles = [
@@ -234,4 +234,4 @@ PkInputGroup = __decorate([customElement("pk-input-group")], PkInputGroup);
234
234
  //#endregion
235
235
  export { PkInputGroup as t };
236
236
 
237
- //# sourceMappingURL=pk-input-group-BLqKPnfc.js.map
237
+ //# sourceMappingURL=pk-input-group-k7WV0pQI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pk-input-group-BLqKPnfc.js","names":[],"sources":["../../src/components/input-group/pk-input-group.styles.ts","../../src/components/input-group/pk-input-group.ts"],"sourcesContent":["import { css } from 'lit';\n\nimport {\n buttonGroupBorderJoinStyles,\n buttonGroupCornerRadiusStyles,\n buttonGroupCornerRoleStyles,\n} from '../button-group/button-group-item.styles.js';\n\nexport const pkInputGroupStyles = [\n buttonGroupCornerRoleStyles(),\n buttonGroupCornerRadiusStyles('.group', 'var(--pk-radius-lg)'),\n buttonGroupBorderJoinStyles('.group'),\n css`\n @layer pk-component {\n :host {\n display: block;\n width: 100%;\n min-width: 0;\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([data-pk-group-orientation]) {\n display: flex;\n flex-direction: column;\n width: auto;\n flex: 0 1 auto;\n align-self: stretch;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join]:not([data-pk-group-divider])) {\n margin-inline-start: var(--pk-bg-horizontal-indent-outlined, 0);\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-join]:not([data-pk-group-divider])) {\n margin-block-start: var(--pk-bg-vertical-indent-outlined, 0);\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider][data-pk-group-join]) {\n margin-inline-start: var(--pk-bg-horizontal-indent-outlined, 0);\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider][data-pk-group-join]) {\n margin-block-start: var(--pk-bg-vertical-indent-outlined, 0);\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider]) .group {\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([data-pk-group-orientation='vertical'][data-pk-group-divider]) .group {\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([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail]) .group {\n border-right-width: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail]) .group {\n border-bottom-width: 0;\n }\n\n .group {\n display: flex;\n position: relative;\n align-items: center;\n width: 100%;\n min-width: 0;\n min-height: var(--pk-btn-height-default);\n border: var(--pk-input-border, 1px solid var(--pk-input-border-color));\n border-radius: var(--pk-input-border-radius, var(--pk-radius-sm));\n background: var(--pk-input-bg);\n background-clip: padding-box;\n box-sizing: border-box;\n transition: border-color 0.12s ease, box-shadow 0.12s ease;\n }\n\n :host([data-block-layout]) .group {\n flex-direction: column;\n align-items: stretch;\n height: auto;\n min-height: 0;\n }\n\n :host([data-block-layout]) ::slotted(pk-input-group-textarea),\n :host([data-block-layout]) ::slotted(pk-input-group-addon[align='block-start']),\n :host([data-block-layout]) ::slotted(pk-input-group-addon[align='block-end']) {\n width: 100%;\n align-self: stretch;\n }\n\n ::slotted(pk-input-group-input),\n ::slotted(pk-input-group-textarea) {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n ::slotted(pk-input-group-addon[align='inline-start']) {\n order: -1;\n }\n\n ::slotted(pk-input-group-addon[align='inline-end']) {\n order: 1;\n }\n\n ::slotted(pk-input-group-addon[align='block-start']) {\n order: -1;\n }\n\n ::slotted(pk-input-group-addon[align='block-end']) {\n order: 1;\n }\n\n /*\n * Do not use :host(:has(slotted…)) for focus/invalid — Chromium cannot see\n * light-DOM slotted children from shadow :has() (same reason as data-block-layout).\n * :host(:focus-within) follows the composed tree into nested shadow inputs.\n * data-invalid / data-disabled are synced from the slotted control in TS.\n */\n /* Craft focus = box-shadow only; keep resting / invalid border (no stacked border-color). */\n :host(:focus-within:not([data-invalid])) .group {\n box-shadow: var(--pk-input-focus-shadow);\n }\n\n :host([data-invalid]) .group {\n border-color: var(--pk-color-rose-600);\n }\n\n :host([data-invalid]:focus-within) .group {\n box-shadow: var(--pk-input-invalid-focus-shadow);\n }\n\n :host([data-disabled]) .group {\n opacity: 0.5;\n }\n }\n `,\n];\n","import { html } from 'lit';\nimport { customElement, query } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { HostAriaMirror } from '../../internal/control-aria.js';\nimport { pkInputGroupStyles } from './pk-input-group.styles.js';\n\nfunction getSlottedFocusTarget(slot: HTMLSlotElement): HTMLElement | null {\n const [control] = slot.assignedElements({ flatten: true });\n\n if (!(control instanceof HTMLElement)) {\n return null;\n }\n\n if (control.matches('pk-input-group-input, pk-input-group-textarea')) {\n const inner = control.shadowRoot?.querySelector('input, textarea');\n\n return inner instanceof HTMLElement ? inner : null;\n }\n\n const nested = control.querySelector('input, textarea, select, button[aria-haspopup]');\n\n return nested instanceof HTMLElement ? nested : null;\n}\n\n/**\n * Groups an input with addons inside one field boundary — ShadCN / Base UI input-group pattern.\n *\n * Place `pk-input-group-input` or `pk-input-group-textarea` first in the DOM, then addons.\n * Use the addon `align` prop to position them visually.\n *\n * @slot - Input controls and addons\n *\n * @csspart base - Group shell\n */\n@customElement('pk-input-group')\nexport class PkInputGroup extends PkElement {\n static override styles = pkInputGroupStyles;\n\n @query('slot')\n private defaultSlot!: HTMLSlotElement;\n\n private hostAriaMirror?: HostAriaMirror;\n\n /** Watch slotted control `invalid` / `disabled` / `aria-invalid` for host state attributes. */\n private controlStateObserver?: MutationObserver;\n\n override disconnectedCallback(): void {\n this.hostAriaMirror?.disconnect();\n this.hostAriaMirror = undefined;\n this.controlStateObserver?.disconnect();\n this.controlStateObserver = undefined;\n super.disconnectedCallback();\n }\n\n override firstUpdated(): void {\n this.syncSlotDerivedState();\n this.connectAriaMirror();\n this.connectControlStateObserver();\n }\n\n private connectAriaMirror(): void {\n this.hostAriaMirror?.disconnect();\n this.hostAriaMirror = new HostAriaMirror(\n this,\n () => (this.defaultSlot ? getSlottedFocusTarget(this.defaultSlot) : null),\n );\n this.hostAriaMirror.connect();\n }\n\n private connectControlStateObserver(): void {\n this.controlStateObserver?.disconnect();\n this.controlStateObserver = new MutationObserver(() => {\n this.syncControlChromeState();\n });\n this.observeAssignedControls();\n }\n\n private observeAssignedControls(): void {\n if (!this.controlStateObserver) {\n return;\n }\n\n this.controlStateObserver.disconnect();\n\n for (const element of this.defaultSlot?.assignedElements({ flatten: true }) ?? []) {\n this.controlStateObserver.observe(element, {\n attributes: true,\n attributeFilter: ['invalid', 'disabled', 'aria-invalid'],\n });\n }\n }\n\n private handleSlotChange = (): void => {\n this.syncSlotDerivedState();\n this.observeAssignedControls();\n this.hostAriaMirror?.sync();\n };\n\n private syncSlotDerivedState(): void {\n this.syncBlockLayout();\n this.syncControlChromeState();\n }\n\n /** Block addons live in light DOM; `:host(:has())` cannot see slotted children from shadow styles. */\n private syncBlockLayout(): void {\n const elements = this.defaultSlot?.assignedElements({ flatten: true }) ?? [];\n const blockLayout = elements.some((element) =>\n element.matches('pk-input-group-addon[align=\"block-start\"], pk-input-group-addon[align=\"block-end\"]'),\n );\n\n this.toggleAttribute('data-block-layout', blockLayout);\n }\n\n /**\n * Mirror control invalid/disabled onto the host so shadow styles can paint the shell\n * without `:host(:has(…))` (unreliable for light-DOM slotted children in Chromium).\n */\n private syncControlChromeState(): void {\n const elements = this.defaultSlot?.assignedElements({ flatten: true }) ?? [];\n const control = elements.find((element) =>\n element.matches('pk-input-group-input, pk-input-group-textarea'),\n );\n\n const isInvalid = Boolean(\n control\n && (control.hasAttribute('invalid')\n || control.getAttribute('aria-invalid') === 'true'\n || ('invalid' in control && Boolean((control as HTMLElement & { invalid?: boolean }).invalid))),\n );\n\n const isDisabled = elements.some((element) =>\n element.hasAttribute('disabled')\n || ('disabled' in element && Boolean((element as HTMLElement & { disabled?: boolean }).disabled)),\n );\n\n this.toggleAttribute('data-invalid', isInvalid);\n this.toggleAttribute('data-disabled', isDisabled);\n }\n\n override render() {\n return html`\n <div part=\"base\" class=\"group\" role=\"group\">\n <slot @slotchange=${this.handleSlotChange}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-input-group': PkInputGroup;\n }\n}\n"],"mappings":";;;;;AAQA,IAAa,qBAAqB;CAC9B,6BAA6B;CAC7B,8BAA8B,UAAU,sBAAsB;CAC9D,4BAA4B,SAAS;CACrC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoIN;;;ACzID,SAAS,sBAAsB,MAA2C;CACtE,MAAM,CAAC,WAAW,KAAK,iBAAiB,EAAE,SAAS,MAAM,CAAC;AAE1D,KAAI,EAAE,mBAAmB,aACrB,QAAO;AAGX,KAAI,QAAQ,QAAQ,gDAAgD,EAAE;EAClE,MAAM,QAAQ,QAAQ,YAAY,cAAc,kBAAkB;AAElE,SAAO,iBAAiB,cAAc,QAAQ;;CAGlD,MAAM,SAAS,QAAQ,cAAc,iDAAiD;AAEtF,QAAO,kBAAkB,cAAc,SAAS;;AAc7C,IAAA,eAAA,MAAM,qBAAqB,UAAU;;;gCAyDD;AACnC,QAAK,sBAAsB;AAC3B,QAAK,yBAAyB;AAC9B,QAAK,gBAAgB,MAAM;;;;gBA3DN;;CAUzB,uBAAsC;AAClC,OAAK,gBAAgB,YAAY;AACjC,OAAK,iBAAiB,KAAA;AACtB,OAAK,sBAAsB,YAAY;AACvC,OAAK,uBAAuB,KAAA;AAC5B,QAAM,sBAAsB;;CAGhC,eAA8B;AAC1B,OAAK,sBAAsB;AAC3B,OAAK,mBAAmB;AACxB,OAAK,6BAA6B;;CAGtC,oBAAkC;AAC9B,OAAK,gBAAgB,YAAY;AACjC,OAAK,iBAAiB,IAAI,eACtB,YACO,KAAK,cAAc,sBAAsB,KAAK,YAAY,GAAG,KACvE;AACD,OAAK,eAAe,SAAS;;CAGjC,8BAA4C;AACxC,OAAK,sBAAsB,YAAY;AACvC,OAAK,uBAAuB,IAAI,uBAAuB;AACnD,QAAK,wBAAwB;IAC/B;AACF,OAAK,yBAAyB;;CAGlC,0BAAwC;AACpC,MAAI,CAAC,KAAK,qBACN;AAGJ,OAAK,qBAAqB,YAAY;AAEtC,OAAK,MAAM,WAAW,KAAK,aAAa,iBAAiB,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE,CAC7E,MAAK,qBAAqB,QAAQ,SAAS;GACvC,YAAY;GACZ,iBAAiB;IAAC;IAAW;IAAY;IAAe;GAC3D,CAAC;;CAUV,uBAAqC;AACjC,OAAK,iBAAiB;AACtB,OAAK,wBAAwB;;;CAIjC,kBAAgC;EAE5B,MAAM,eADW,KAAK,aAAa,iBAAiB,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE,EAC/C,MAAM,YAC/B,QAAQ,QAAQ,yFAAqF,CACxG;AAED,OAAK,gBAAgB,qBAAqB,YAAY;;;;;;CAO1D,yBAAuC;EACnC,MAAM,WAAW,KAAK,aAAa,iBAAiB,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE;EAC5E,MAAM,UAAU,SAAS,MAAM,YAC3B,QAAQ,QAAQ,gDAAgD,CACnE;EAED,MAAM,YAAY,QACd,YACI,QAAQ,aAAa,UAAU,IAC5B,QAAQ,aAAa,eAAe,KAAK,UACxC,aAAa,WAAW,QAAS,QAAgD,QAAQ,EACpG;EAED,MAAM,aAAa,SAAS,MAAM,YAC9B,QAAQ,aAAa,WAAW,IAC5B,cAAc,WAAW,QAAS,QAAiD,SAAS,CACnG;AAED,OAAK,gBAAgB,gBAAgB,UAAU;AAC/C,OAAK,gBAAgB,iBAAiB,WAAW;;CAGrD,SAAkB;AACd,SAAO,IAAI;;oCAEiB,KAAK,iBAAiB;;;;;YAxGrD,MAAM,OAAO,CAAA,EAAA,aAAA,WAAA,eAAA,KAAA,EAAA;2BAJjB,cAAc,iBAAiB,CAAA,EAAA,aAAA"}
1
+ {"version":3,"file":"pk-input-group-k7WV0pQI.js","names":[],"sources":["../../src/components/input-group/pk-input-group.styles.ts","../../src/components/input-group/pk-input-group.ts"],"sourcesContent":["import { css } from 'lit';\n\nimport {\n buttonGroupBorderJoinStyles,\n buttonGroupCornerRadiusStyles,\n buttonGroupCornerRoleStyles,\n} from '../button-group/button-group-item.styles.js';\n\nexport const pkInputGroupStyles = [\n buttonGroupCornerRoleStyles(),\n buttonGroupCornerRadiusStyles('.group', 'var(--pk-radius-lg)'),\n buttonGroupBorderJoinStyles('.group'),\n css`\n @layer pk-component {\n :host {\n display: block;\n width: 100%;\n min-width: 0;\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([data-pk-group-orientation]) {\n display: flex;\n flex-direction: column;\n width: auto;\n flex: 0 1 auto;\n align-self: stretch;\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-join]:not([data-pk-group-divider])) {\n margin-inline-start: var(--pk-bg-horizontal-indent-outlined, 0);\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-join]:not([data-pk-group-divider])) {\n margin-block-start: var(--pk-bg-vertical-indent-outlined, 0);\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider][data-pk-group-join]) {\n margin-inline-start: var(--pk-bg-horizontal-indent-outlined, 0);\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-divider][data-pk-group-join]) {\n margin-block-start: var(--pk-bg-vertical-indent-outlined, 0);\n }\n\n :host([data-pk-group-orientation='horizontal'][data-pk-group-divider]) .group {\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([data-pk-group-orientation='vertical'][data-pk-group-divider]) .group {\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([data-pk-group-orientation='horizontal'][data-pk-group-internal-trail]) .group {\n border-right-width: 0;\n }\n\n :host([data-pk-group-orientation='vertical'][data-pk-group-internal-trail]) .group {\n border-bottom-width: 0;\n }\n\n .group {\n display: flex;\n position: relative;\n align-items: center;\n width: 100%;\n min-width: 0;\n min-height: var(--pk-btn-height-default);\n border: var(--pk-input-border, 1px solid var(--pk-input-border-color));\n border-radius: var(--pk-input-border-radius, var(--pk-radius-sm));\n background: var(--pk-input-bg);\n background-clip: padding-box;\n box-sizing: border-box;\n transition: border-color 0.12s ease, box-shadow 0.12s ease;\n }\n\n :host([data-block-layout]) .group {\n flex-direction: column;\n align-items: stretch;\n height: auto;\n min-height: 0;\n }\n\n :host([data-block-layout]) ::slotted(pk-input-group-textarea),\n :host([data-block-layout]) ::slotted(pk-input-group-addon[align='block-start']),\n :host([data-block-layout]) ::slotted(pk-input-group-addon[align='block-end']) {\n width: 100%;\n align-self: stretch;\n }\n\n ::slotted(pk-input-group-input),\n ::slotted(pk-input-group-textarea) {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n ::slotted(pk-input-group-addon[align='inline-start']) {\n order: -1;\n }\n\n ::slotted(pk-input-group-addon[align='inline-end']) {\n order: 1;\n }\n\n ::slotted(pk-input-group-addon[align='block-start']) {\n order: -1;\n }\n\n ::slotted(pk-input-group-addon[align='block-end']) {\n order: 1;\n }\n\n /*\n * Do not use :host(:has(slotted…)) for focus/invalid — Chromium cannot see\n * light-DOM slotted children from shadow :has() (same reason as data-block-layout).\n * :host(:focus-within) follows the composed tree into nested shadow inputs.\n * data-invalid / data-disabled are synced from the slotted control in TS.\n */\n /* Craft focus = box-shadow only; keep resting / invalid border (no stacked border-color). */\n :host(:focus-within:not([data-invalid])) .group {\n box-shadow: var(--pk-input-focus-shadow);\n }\n\n :host([data-invalid]) .group {\n border-color: var(--pk-color-rose-600);\n }\n\n :host([data-invalid]:focus-within) .group {\n box-shadow: var(--pk-input-invalid-focus-shadow);\n }\n\n :host([data-disabled]) .group {\n opacity: 0.5;\n }\n }\n `,\n];\n","import { html } from 'lit';\nimport { customElement, query } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { HostAriaMirror } from '../../internal/control-aria.js';\nimport { pkInputGroupStyles } from './pk-input-group.styles.js';\n\nfunction getSlottedFocusTarget(slot: HTMLSlotElement): HTMLElement | null {\n const [control] = slot.assignedElements({ flatten: true });\n\n if (!(control instanceof HTMLElement)) {\n return null;\n }\n\n if (control.matches('pk-input-group-input, pk-input-group-textarea')) {\n const inner = control.shadowRoot?.querySelector('input, textarea');\n\n return inner instanceof HTMLElement ? inner : null;\n }\n\n const nested = control.querySelector('input, textarea, select, button[aria-haspopup]');\n\n return nested instanceof HTMLElement ? nested : null;\n}\n\n/**\n * Groups an input with addons inside one field boundary — ShadCN / Base UI input-group pattern.\n *\n * Place `pk-input-group-input` or `pk-input-group-textarea` first in the DOM, then addons.\n * Use the addon `align` prop to position them visually.\n *\n * @slot - Input controls and addons\n *\n * @csspart base - Group shell\n */\n@customElement('pk-input-group')\nexport class PkInputGroup extends PkElement {\n static override styles = pkInputGroupStyles;\n\n @query('slot')\n private defaultSlot!: HTMLSlotElement;\n\n private hostAriaMirror?: HostAriaMirror;\n\n /** Watch slotted control `invalid` / `disabled` / `aria-invalid` for host state attributes. */\n private controlStateObserver?: MutationObserver;\n\n override disconnectedCallback(): void {\n this.hostAriaMirror?.disconnect();\n this.hostAriaMirror = undefined;\n this.controlStateObserver?.disconnect();\n this.controlStateObserver = undefined;\n super.disconnectedCallback();\n }\n\n override firstUpdated(): void {\n this.syncSlotDerivedState();\n this.connectAriaMirror();\n this.connectControlStateObserver();\n }\n\n private connectAriaMirror(): void {\n this.hostAriaMirror?.disconnect();\n this.hostAriaMirror = new HostAriaMirror(\n this,\n () => (this.defaultSlot ? getSlottedFocusTarget(this.defaultSlot) : null),\n );\n this.hostAriaMirror.connect();\n }\n\n private connectControlStateObserver(): void {\n this.controlStateObserver?.disconnect();\n this.controlStateObserver = new MutationObserver(() => {\n this.syncControlChromeState();\n });\n this.observeAssignedControls();\n }\n\n private observeAssignedControls(): void {\n if (!this.controlStateObserver) {\n return;\n }\n\n this.controlStateObserver.disconnect();\n\n for (const element of this.defaultSlot?.assignedElements({ flatten: true }) ?? []) {\n this.controlStateObserver.observe(element, {\n attributes: true,\n attributeFilter: ['invalid', 'disabled', 'aria-invalid'],\n });\n }\n }\n\n private handleSlotChange = (): void => {\n this.syncSlotDerivedState();\n this.observeAssignedControls();\n this.hostAriaMirror?.sync();\n };\n\n private syncSlotDerivedState(): void {\n this.syncBlockLayout();\n this.syncControlChromeState();\n }\n\n /** Block addons live in light DOM; `:host(:has())` cannot see slotted children from shadow styles. */\n private syncBlockLayout(): void {\n const elements = this.defaultSlot?.assignedElements({ flatten: true }) ?? [];\n const blockLayout = elements.some((element) =>\n element.matches('pk-input-group-addon[align=\"block-start\"], pk-input-group-addon[align=\"block-end\"]'),\n );\n\n this.toggleAttribute('data-block-layout', blockLayout);\n }\n\n /**\n * Mirror control invalid/disabled onto the host so shadow styles can paint the shell\n * without `:host(:has(…))` (unreliable for light-DOM slotted children in Chromium).\n */\n private syncControlChromeState(): void {\n const elements = this.defaultSlot?.assignedElements({ flatten: true }) ?? [];\n const control = elements.find((element) =>\n element.matches('pk-input-group-input, pk-input-group-textarea'),\n );\n\n const isInvalid = Boolean(\n control\n && (control.hasAttribute('invalid')\n || control.getAttribute('aria-invalid') === 'true'\n || ('invalid' in control && Boolean((control as HTMLElement & { invalid?: boolean }).invalid))),\n );\n\n const isDisabled = elements.some((element) =>\n element.hasAttribute('disabled')\n || ('disabled' in element && Boolean((element as HTMLElement & { disabled?: boolean }).disabled)),\n );\n\n this.toggleAttribute('data-invalid', isInvalid);\n this.toggleAttribute('data-disabled', isDisabled);\n }\n\n override render() {\n return html`\n <div part=\"base\" class=\"group\" role=\"group\">\n <slot @slotchange=${this.handleSlotChange}></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-input-group': PkInputGroup;\n }\n}\n"],"mappings":";;;;;AAQA,IAAa,qBAAqB;CAC9B,6BAA6B;CAC7B,8BAA8B,UAAU,sBAAsB;CAC9D,4BAA4B,SAAS;CACrC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoIN;;;ACzID,SAAS,sBAAsB,MAA2C;CACtE,MAAM,CAAC,WAAW,KAAK,iBAAiB,EAAE,SAAS,MAAM,CAAC;AAE1D,KAAI,EAAE,mBAAmB,aACrB,QAAO;AAGX,KAAI,QAAQ,QAAQ,gDAAgD,EAAE;EAClE,MAAM,QAAQ,QAAQ,YAAY,cAAc,kBAAkB;AAElE,SAAO,iBAAiB,cAAc,QAAQ;;CAGlD,MAAM,SAAS,QAAQ,cAAc,iDAAiD;AAEtF,QAAO,kBAAkB,cAAc,SAAS;;AAc7C,IAAA,eAAA,MAAM,qBAAqB,UAAU;;;gCAyDD;AACnC,QAAK,sBAAsB;AAC3B,QAAK,yBAAyB;AAC9B,QAAK,gBAAgB,MAAM;;;;gBA3DN;;CAUzB,uBAAsC;AAClC,OAAK,gBAAgB,YAAY;AACjC,OAAK,iBAAiB,KAAA;AACtB,OAAK,sBAAsB,YAAY;AACvC,OAAK,uBAAuB,KAAA;AAC5B,QAAM,sBAAsB;;CAGhC,eAA8B;AAC1B,OAAK,sBAAsB;AAC3B,OAAK,mBAAmB;AACxB,OAAK,6BAA6B;;CAGtC,oBAAkC;AAC9B,OAAK,gBAAgB,YAAY;AACjC,OAAK,iBAAiB,IAAI,eACtB,YACO,KAAK,cAAc,sBAAsB,KAAK,YAAY,GAAG,KACvE;AACD,OAAK,eAAe,SAAS;;CAGjC,8BAA4C;AACxC,OAAK,sBAAsB,YAAY;AACvC,OAAK,uBAAuB,IAAI,uBAAuB;AACnD,QAAK,wBAAwB;IAC/B;AACF,OAAK,yBAAyB;;CAGlC,0BAAwC;AACpC,MAAI,CAAC,KAAK,qBACN;AAGJ,OAAK,qBAAqB,YAAY;AAEtC,OAAK,MAAM,WAAW,KAAK,aAAa,iBAAiB,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE,CAC7E,MAAK,qBAAqB,QAAQ,SAAS;GACvC,YAAY;GACZ,iBAAiB;IAAC;IAAW;IAAY;IAAe;GAC3D,CAAC;;CAUV,uBAAqC;AACjC,OAAK,iBAAiB;AACtB,OAAK,wBAAwB;;;CAIjC,kBAAgC;EAE5B,MAAM,eADW,KAAK,aAAa,iBAAiB,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE,EAC/C,MAAM,YAC/B,QAAQ,QAAQ,yFAAqF,CACxG;AAED,OAAK,gBAAgB,qBAAqB,YAAY;;;;;;CAO1D,yBAAuC;EACnC,MAAM,WAAW,KAAK,aAAa,iBAAiB,EAAE,SAAS,MAAM,CAAC,IAAI,EAAE;EAC5E,MAAM,UAAU,SAAS,MAAM,YAC3B,QAAQ,QAAQ,gDAAgD,CACnE;EAED,MAAM,YAAY,QACd,YACI,QAAQ,aAAa,UAAU,IAC5B,QAAQ,aAAa,eAAe,KAAK,UACxC,aAAa,WAAW,QAAS,QAAgD,QAAQ,EACpG;EAED,MAAM,aAAa,SAAS,MAAM,YAC9B,QAAQ,aAAa,WAAW,IAC5B,cAAc,WAAW,QAAS,QAAiD,SAAS,CACnG;AAED,OAAK,gBAAgB,gBAAgB,UAAU;AAC/C,OAAK,gBAAgB,iBAAiB,WAAW;;CAGrD,SAAkB;AACd,SAAO,IAAI;;oCAEiB,KAAK,iBAAiB;;;;;YAxGrD,MAAM,OAAO,CAAA,EAAA,aAAA,WAAA,eAAA,KAAA,EAAA;2BAJjB,cAAc,iBAAiB,CAAA,EAAA,aAAA"}
@@ -36,4 +36,4 @@ PkInputGroupText = __decorate([customElement("pk-input-group-text")], PkInputGro
36
36
  //#endregion
37
37
  export { PkInputGroupText as t };
38
38
 
39
- //# sourceMappingURL=pk-input-group-text-HUxlXROB.js.map
39
+ //# sourceMappingURL=pk-input-group-text-C0VAdy0J.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pk-input-group-text-HUxlXROB.js","names":[],"sources":["../../src/components/input-group/pk-input-group-text.styles.ts","../../src/components/input-group/pk-input-group-text.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkInputGroupTextStyles = css`\n @layer pk-component {\n :host {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n font-size: var(--pk-font-size-sm);\n color: var(--pk-color-gray-500);\n }\n\n .text ::slotted(svg) {\n width: 0.75rem;\n height: 0.75rem;\n pointer-events: none;\n }\n }\n`;\n","import { html } from 'lit';\nimport { customElement } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkInputGroupTextStyles } from './pk-input-group-text.styles.js';\n\n/**\n * Muted label text inside an input-group addon.\n *\n * @slot - Text content\n *\n * @csspart base - Text container\n */\n@customElement('pk-input-group-text')\nexport class PkInputGroupText extends PkElement {\n static override styles = pkInputGroupTextStyles;\n\n override render() {\n return html`\n <span part=\"base\" class=\"text\">\n <slot></slot>\n </span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-input-group-text': PkInputGroupText;\n }\n}\n"],"mappings":";;;AAEA,IAAa,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;ACYlC,IAAA,mBAAA,MAAM,yBAAyB,UAAU;;gBACnB;;CAEzB,SAAkB;AACd,SAAO,IAAI;;;;;;;+BALlB,cAAc,sBAAsB,CAAA,EAAA,iBAAA"}
1
+ {"version":3,"file":"pk-input-group-text-C0VAdy0J.js","names":[],"sources":["../../src/components/input-group/pk-input-group-text.styles.ts","../../src/components/input-group/pk-input-group-text.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkInputGroupTextStyles = css`\n @layer pk-component {\n :host {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n font-size: var(--pk-font-size-sm);\n color: var(--pk-color-gray-500);\n }\n\n .text ::slotted(svg) {\n width: 0.75rem;\n height: 0.75rem;\n pointer-events: none;\n }\n }\n`;\n","import { html } from 'lit';\nimport { customElement } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkInputGroupTextStyles } from './pk-input-group-text.styles.js';\n\n/**\n * Muted label text inside an input-group addon.\n *\n * @slot - Text content\n *\n * @csspart base - Text container\n */\n@customElement('pk-input-group-text')\nexport class PkInputGroupText extends PkElement {\n static override styles = pkInputGroupTextStyles;\n\n override render() {\n return html`\n <span part=\"base\" class=\"text\">\n <slot></slot>\n </span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-input-group-text': PkInputGroupText;\n }\n}\n"],"mappings":";;;AAEA,IAAa,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;ACYlC,IAAA,mBAAA,MAAM,yBAAyB,UAAU;;gBACnB;;CAEzB,SAAkB;AACd,SAAO,IAAI;;;;;;;+BALlB,cAAc,sBAAsB,CAAA,EAAA,iBAAA"}
@@ -109,4 +109,4 @@ PkInputGroupTextarea = __decorate([customElement("pk-input-group-textarea")], Pk
109
109
  //#endregion
110
110
  export { PkInputGroupTextarea as t };
111
111
 
112
- //# sourceMappingURL=pk-input-group-textarea-Cl2FNuw-.js.map
112
+ //# sourceMappingURL=pk-input-group-textarea-DOG1NIlE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pk-input-group-textarea-Cl2FNuw-.js","names":[],"sources":["../../src/components/input-group/pk-input-group-textarea.styles.ts","../../src/components/input-group/pk-input-group-textarea.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkInputGroupTextareaStyles = css`\n @layer pk-component {\n :host {\n display: flex;\n flex: 1 1 auto;\n min-width: 0;\n align-self: stretch;\n }\n\n .textarea {\n display: block;\n width: 100%;\n min-width: 0;\n min-height: 5rem;\n margin: 0;\n padding: 7px 10px;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: var(--pk-color-gray-700);\n font: inherit;\n line-height: 1.4;\n appearance: none;\n box-sizing: border-box;\n box-shadow: none;\n outline: none;\n resize: none;\n }\n\n .textarea::placeholder {\n color: var(--pk-color-gray-400);\n }\n\n .textarea:disabled {\n cursor: not-allowed;\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport { customElement, property, query } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkInputGroupTextareaStyles } from './pk-input-group-textarea.styles.js';\n\n/**\n * Borderless textarea for use inside `pk-input-group`.\n *\n * @csspart textarea - Native textarea element\n */\n@customElement('pk-input-group-textarea')\nexport class PkInputGroupTextarea extends PkElement {\n static override styles = pkInputGroupTextareaStyles;\n\n @query('.textarea')\n textareaElement!: HTMLTextAreaElement;\n\n @property()\n placeholder = '';\n\n @property({ attribute: 'value', reflect: true })\n value = '';\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: Boolean, reflect: true })\n readonly = false;\n\n @property({ type: Boolean, reflect: true })\n invalid = false;\n\n @property({ type: Number })\n rows = 3;\n\n focus(options?: FocusOptions): void {\n this.textareaElement?.focus(options);\n }\n\n override render() {\n return html`\n <textarea\n part=\"textarea\"\n class=\"textarea\"\n data-slot=\"input-group-control\"\n rows=${this.rows}\n .value=${this.value}\n placeholder=${this.placeholder}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n aria-invalid=${this.invalid ? 'true' : nothing}\n @input=${this.handleInput}\n ></textarea>\n `;\n }\n\n private handleInput(event: Event): void {\n const target = event.target as HTMLTextAreaElement;\n this.value = target.value;\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-input-group-textarea': PkInputGroupTextarea;\n }\n}\n"],"mappings":";;;AAEA,IAAa,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACUtC,IAAA,uBAAA,MAAM,6BAA6B,UAAU;;;qBAOlC;eAGN;kBAGG;kBAGA;iBAGD;cAGH;;;gBArBkB;;CAuBzB,MAAM,SAA8B;AAChC,OAAK,iBAAiB,MAAM,QAAQ;;CAGxC,SAAkB;AACd,SAAO,IAAI;;;;;uBAKI,KAAK,KAAK;yBACR,KAAK,MAAM;8BACN,KAAK,YAAY;4BACnB,KAAK,SAAS;4BACd,KAAK,SAAS;+BACX,KAAK,UAAU,SAAS,QAAQ;yBACtC,KAAK,YAAY;;;;CAKtC,YAAoB,OAAoB;EACpC,MAAM,SAAS,MAAM;AACrB,OAAK,QAAQ,OAAO;AACpB,OAAK,cAAc,IAAI,MAAM,SAAS;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC,CAAC;AACzE,OAAK,cAAc,IAAI,MAAM,UAAU;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC,CAAC;;;YA9C7E,MAAM,YAAY,CAAA,EAAA,qBAAA,WAAA,mBAAA,KAAA,EAAA;YAGlB,UAAU,CAAA,EAAA,qBAAA,WAAA,eAAA,KAAA,EAAA;YAGV,SAAS;CAAE,WAAW;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,qBAAA,WAAA,SAAA,KAAA,EAAA;YAG/C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,qBAAA,WAAA,YAAA,KAAA,EAAA;YAG1C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,qBAAA,WAAA,YAAA,KAAA,EAAA;YAG1C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,qBAAA,WAAA,WAAA,KAAA,EAAA;YAG1C,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,qBAAA,WAAA,QAAA,KAAA,EAAA;mCAtB9B,cAAc,0BAA0B,CAAA,EAAA,qBAAA"}
1
+ {"version":3,"file":"pk-input-group-textarea-DOG1NIlE.js","names":[],"sources":["../../src/components/input-group/pk-input-group-textarea.styles.ts","../../src/components/input-group/pk-input-group-textarea.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkInputGroupTextareaStyles = css`\n @layer pk-component {\n :host {\n display: flex;\n flex: 1 1 auto;\n min-width: 0;\n align-self: stretch;\n }\n\n .textarea {\n display: block;\n width: 100%;\n min-width: 0;\n min-height: 5rem;\n margin: 0;\n padding: 7px 10px;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: var(--pk-color-gray-700);\n font: inherit;\n line-height: 1.4;\n appearance: none;\n box-sizing: border-box;\n box-shadow: none;\n outline: none;\n resize: none;\n }\n\n .textarea::placeholder {\n color: var(--pk-color-gray-400);\n }\n\n .textarea:disabled {\n cursor: not-allowed;\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport { customElement, property, query } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkInputGroupTextareaStyles } from './pk-input-group-textarea.styles.js';\n\n/**\n * Borderless textarea for use inside `pk-input-group`.\n *\n * @csspart textarea - Native textarea element\n */\n@customElement('pk-input-group-textarea')\nexport class PkInputGroupTextarea extends PkElement {\n static override styles = pkInputGroupTextareaStyles;\n\n @query('.textarea')\n textareaElement!: HTMLTextAreaElement;\n\n @property()\n placeholder = '';\n\n @property({ attribute: 'value', reflect: true })\n value = '';\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: Boolean, reflect: true })\n readonly = false;\n\n @property({ type: Boolean, reflect: true })\n invalid = false;\n\n @property({ type: Number })\n rows = 3;\n\n focus(options?: FocusOptions): void {\n this.textareaElement?.focus(options);\n }\n\n override render() {\n return html`\n <textarea\n part=\"textarea\"\n class=\"textarea\"\n data-slot=\"input-group-control\"\n rows=${this.rows}\n .value=${this.value}\n placeholder=${this.placeholder}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n aria-invalid=${this.invalid ? 'true' : nothing}\n @input=${this.handleInput}\n ></textarea>\n `;\n }\n\n private handleInput(event: Event): void {\n const target = event.target as HTMLTextAreaElement;\n this.value = target.value;\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-input-group-textarea': PkInputGroupTextarea;\n }\n}\n"],"mappings":";;;AAEA,IAAa,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACUtC,IAAA,uBAAA,MAAM,6BAA6B,UAAU;;;qBAOlC;eAGN;kBAGG;kBAGA;iBAGD;cAGH;;;gBArBkB;;CAuBzB,MAAM,SAA8B;AAChC,OAAK,iBAAiB,MAAM,QAAQ;;CAGxC,SAAkB;AACd,SAAO,IAAI;;;;;uBAKI,KAAK,KAAK;yBACR,KAAK,MAAM;8BACN,KAAK,YAAY;4BACnB,KAAK,SAAS;4BACd,KAAK,SAAS;+BACX,KAAK,UAAU,SAAS,QAAQ;yBACtC,KAAK,YAAY;;;;CAKtC,YAAoB,OAAoB;EACpC,MAAM,SAAS,MAAM;AACrB,OAAK,QAAQ,OAAO;AACpB,OAAK,cAAc,IAAI,MAAM,SAAS;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC,CAAC;AACzE,OAAK,cAAc,IAAI,MAAM,UAAU;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC,CAAC;;;YA9C7E,MAAM,YAAY,CAAA,EAAA,qBAAA,WAAA,mBAAA,KAAA,EAAA;YAGlB,UAAU,CAAA,EAAA,qBAAA,WAAA,eAAA,KAAA,EAAA;YAGV,SAAS;CAAE,WAAW;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,qBAAA,WAAA,SAAA,KAAA,EAAA;YAG/C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,qBAAA,WAAA,YAAA,KAAA,EAAA;YAG1C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,qBAAA,WAAA,YAAA,KAAA,EAAA;YAG1C,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,qBAAA,WAAA,WAAA,KAAA,EAAA;YAG1C,SAAS,EAAE,MAAM,QAAQ,CAAC,CAAA,EAAA,qBAAA,WAAA,QAAA,KAAA,EAAA;mCAtB9B,cAAc,0BAA0B,CAAA,EAAA,qBAAA"}
@@ -1,10 +1,10 @@
1
1
  import { a as query, i as property, s as customElement, t as __decorate } from "./decorate-R0X811qp.js";
2
- import { t as PkFormAssociatedElement } from "./pk-form-associated-element-GxX5lbnk.js";
3
- import { t as MirrorValidator } from "./mirror-validator-DCjNYrrx.js";
4
- import { t as RequiredValidator } from "./required-validator-CEg8dvjS.js";
5
- import { t as HasSlotController } from "./has-slot-8BvCt_qo.js";
6
- import { t as formControlStyles } from "./form-control.styles-BQdimE5o.js";
7
- import { n as readLegacyInstructions, t as hasInstructionContent } from "./field-labels-CmuAW8Cl.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 MirrorValidator } from "./mirror-validator-Cszpqlxk.js";
5
+ import { t as RequiredValidator } from "./required-validator-CaRnQk1V.js";
6
+ import { t as formControlStyles } from "./form-control.styles-BHwSsx_y.js";
7
+ import { n as readLegacyInstructions, t as hasInstructionContent } from "./field-labels-CGSfAGf-.js";
8
8
  import { css, html, nothing } from "lit";
9
9
  //#region src/components/lightswitch/pk-lightswitch.styles.ts
10
10
  var pkLightswitchStyles = css`
@@ -428,4 +428,4 @@ PkLightswitch = __decorate([customElement("pk-lightswitch")], PkLightswitch);
428
428
  //#endregion
429
429
  export { PkLightswitch as t };
430
430
 
431
- //# sourceMappingURL=pk-lightswitch-VHfJizBW.js.map
431
+ //# sourceMappingURL=pk-lightswitch-FH5ZxMG2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pk-lightswitch-VHfJizBW.js","names":[],"sources":["../../src/components/lightswitch/pk-lightswitch.styles.ts","../../src/components/lightswitch/pk-lightswitch.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkLightswitchStyles = css`\n @layer pk-component {\n :host {\n display: inline-flex;\n vertical-align: middle;\n font-family: var(--pk-font-family);\n font-size: var(--pk-font-size-sm);\n line-height: var(--pk-line-height);\n --pk-lightswitch-border-color: var(--pk-color-slate-800);\n --pk-lightswitch-track-off: var(--pk-color-gray-200);\n --pk-lightswitch-track-on: var(--pk-color-teal-550);\n --pk-lightswitch-track-on-border: var(--pk-color-teal-550-border);\n --pk-lightswitch-focus-shadow: 0 0 0 1px #fff, 0 0 0 3px var(--pk-color-sky-600),\n 0 0 6px 1px hsl(from var(--pk-color-sky-600) h s l / 0.8);\n --pk-lightswitch-invalid-shadow: 0 0 0 1px #fff, 0 0 0 2.5px var(--pk-color-rose-600);\n --pk-lightswitch-invalid-focus-shadow: 0 0 0 1px #fff, 0 0 0 3px var(--pk-color-rose-600),\n 0 0 6px 1px hsl(from var(--pk-color-rose-600) h s l / 0.8);\n }\n\n :host([disabled]) {\n cursor: not-allowed;\n }\n\n .base {\n display: inline-flex;\n align-items: flex-start;\n gap: 0.5rem;\n }\n\n :host([disabled]) .base {\n opacity: 0.5;\n }\n\n .content {\n min-width: 0;\n cursor: pointer;\n user-select: none;\n }\n\n :host([disabled]) .content {\n cursor: not-allowed;\n }\n\n .label {\n display: block;\n /* Match checkbox / radio option labels (gray-700), not gray-900. */\n color: var(--pk-color-gray-700);\n line-height: 1rem;\n }\n\n .label:empty {\n display: none;\n }\n\n .instructions:empty,\n .hint:empty {\n display: none;\n }\n\n .switch {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n margin: 0;\n padding: 0;\n border: 0;\n border-radius: 11px;\n background: var(--pk-lightswitch-track-off, #d8dee7);\n box-shadow: inset 0 0 0 1px var(--pk-lightswitch-border-color, #667c92);\n cursor: pointer;\n user-select: none;\n appearance: none;\n transition: background-color 0.15s ease, box-shadow 0.15s ease;\n }\n\n .switch:focus {\n outline: none;\n }\n\n .switch:focus-visible {\n box-shadow: var(--pk-lightswitch-focus-shadow);\n }\n\n .switch[aria-checked='true'] {\n background: var(--pk-lightswitch-track-on, #0f9d8a);\n box-shadow: inset 0 0 0 1px var(--pk-lightswitch-track-on-border, #007d6f);\n }\n\n .switch[aria-checked='true']:focus-visible {\n box-shadow: var(--pk-lightswitch-focus-shadow);\n }\n\n :host([invalid]) .switch,\n :host(:state(user-invalid)) .switch,\n .switch[aria-invalid='true'] {\n box-shadow: var(--pk-lightswitch-invalid-shadow);\n }\n\n :host([invalid]) .switch[aria-checked='true'],\n :host(:state(user-invalid)) .switch[aria-checked='true'],\n .switch[aria-invalid='true'][aria-checked='true'] {\n background: var(--pk-lightswitch-track-on);\n }\n\n :host([invalid]) .switch:focus-visible,\n :host(:state(user-invalid)) .switch:focus-visible,\n .switch[aria-invalid='true']:focus-visible {\n box-shadow: var(--pk-lightswitch-invalid-focus-shadow);\n }\n\n .switch:disabled {\n cursor: not-allowed;\n }\n\n :host([size='default']) .switch {\n width: 34px;\n height: 22px;\n }\n\n :host([size='sm']) .switch {\n width: 28px;\n height: 18px;\n border-radius: 9px;\n }\n\n :host([size='xs']) .switch {\n width: 24px;\n height: 16px;\n border-radius: 8px;\n }\n\n :host([size='xxs']) .switch {\n width: 24px;\n height: 14px;\n border-radius: 7px;\n }\n\n .thumb {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n background: var(--pk-color-white, #fff);\n box-shadow: inset 0 0 0 1px var(--pk-lightswitch-border-color, #667c92);\n pointer-events: none;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n }\n\n :host([size='default']) .thumb {\n width: 18px;\n height: 18px;\n transform: translateX(2px);\n }\n\n :host([size='default']) .switch[aria-checked='true'] .thumb {\n transform: translateX(calc(100% - 4px));\n box-shadow: inset 0 0 0 1px var(--pk-lightswitch-track-on-border);\n }\n\n :host([size='sm']) .thumb {\n width: 14px;\n height: 14px;\n transform: translateX(2px);\n }\n\n :host([size='sm']) .switch[aria-checked='true'] .thumb {\n transform: translateX(calc(100% - 2px));\n box-shadow: inset 0 0 0 1px var(--pk-lightswitch-track-on-border);\n }\n\n :host([size='xs']) .thumb {\n width: 12px;\n height: 12px;\n transform: translateX(2px);\n }\n\n :host([size='xs']) .switch[aria-checked='true'] .thumb {\n transform: translateX(calc(100% - 2px));\n box-shadow: inset 0 0 0 1px var(--pk-lightswitch-track-on-border);\n }\n\n :host([size='xxs']) .thumb {\n width: 10px;\n height: 10px;\n transform: translateX(2px);\n }\n\n :host([size='xxs']) .switch[aria-checked='true'] .thumb {\n transform: translateX(12px);\n box-shadow: inset 0 0 0 1px var(--pk-lightswitch-track-on-border, #007d6f);\n }\n\n .thumb svg {\n width: 14px;\n height: 14px;\n color: var(--pk-lightswitch-track-on);\n opacity: 0;\n transform: translateY(1px);\n transition: opacity 0.15s ease;\n }\n\n .switch[aria-checked='true'] .thumb svg {\n opacity: 1;\n }\n\n :host([size='sm']) .thumb svg {\n width: 10px;\n height: 10px;\n }\n\n :host([size='xs']) .thumb svg,\n :host([size='xxs']) .thumb svg {\n display: none;\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 }\n }\n`;\n","import { html, nothing } from 'lit';\nimport { customElement, property, query } from '../../decorators.js';\nimport type { PropertyValues } from 'lit';\n\nimport { formControlStyles } from '../../base/form-control.styles.js';\nimport { PkFormAssociatedElement } from '../../base/pk-form-associated-element.js';\nimport { HasSlotController } from '../../internal/has-slot.js';\nimport { hasInstructionContent, readLegacyInstructions } from '../../internal/field-labels.js';\nimport { MirrorValidator, RequiredValidator } from '../../validators/index.js';\nimport { pkLightswitchStyles } from './pk-lightswitch.styles.js';\n\nconst CHECK_ICON = html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" aria-hidden=\"true\">\n <path fill=\"currentColor\" 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 </svg>\n`;\n\nexport type PkLightswitchSize = 'default' | 'sm' | 'xs' | 'xxs';\n\n/**\n * Craft lightswitch — switch API (`role=\"switch\"`), form-associated.\n *\n * @slot - Switch label\n * @slot instructions - Instructions text (or use `instructions` attribute)\n * @slot hint - Alias for `instructions`\n *\n * @csspart base - Root wrapper\n * @csspart switch - Switch button\n * @csspart thumb - Thumb element\n * @csspart label - Label text\n * @csspart instructions - Instructions text\n * @csspart input - Hidden checkbox input\n */\n@customElement('pk-lightswitch')\nexport class PkLightswitch extends PkFormAssociatedElement {\n static override shadowRootOptions: ShadowRootInit = {\n mode: 'open',\n delegatesFocus: true,\n };\n\n static override styles = [formControlStyles, pkLightswitchStyles];\n\n static override get validators() {\n return [...super.validators, MirrorValidator(), RequiredValidator({ validationProperty: 'checked' })];\n }\n\n override assumeInteractionOn = ['change'];\n\n private readonly hasSlotController = new HasSlotController(this, 'instructions', 'hint');\n\n @property({ type: Boolean, reflect: true })\n checked = false;\n\n @property({ attribute: 'default-checked', type: Boolean })\n defaultChecked = false;\n\n @property({ type: Boolean, reflect: true })\n invalid = false;\n\n @property({ reflect: true })\n size: PkLightswitchSize = 'default';\n\n @property()\n value = 'on';\n\n @property()\n label = '';\n\n @property()\n instructions = '';\n\n @query('.input')\n override input!: HTMLInputElement;\n\n @query('[part=\"switch\"]')\n private switchElement!: HTMLButtonElement;\n\n override connectedCallback(): void {\n this.instructions = readLegacyInstructions(this, this.instructions);\n super.connectedCallback();\n }\n\n protected override get validationTarget(): HTMLElement {\n return this.input;\n }\n\n protected override syncFormValue(): void {\n this.setFormValue(this.checked ? this.value : null, this.checked ? 'on' : 'off');\n }\n\n protected override resetToDefaultValue(): void {\n this.checked = this.defaultChecked;\n }\n\n protected override restoreFormState(state: string | File | FormData | null): void {\n if (state === 'on' || state === this.value) {\n this.checked = true;\n } else {\n this.checked = false;\n }\n }\n\n override updated(changed: PropertyValues): void {\n if (this.input && changed.has('checked')) {\n this.input.checked = this.checked;\n }\n\n super.updated(changed);\n }\n\n click(): void {\n this.switchElement?.click();\n }\n\n override focus(options?: FocusOptions): void {\n this.switchElement?.focus(options);\n }\n\n override blur(): void {\n this.switchElement?.blur();\n }\n\n private toggle(): void {\n if (this.disabled) {\n return;\n }\n\n this.checked = !this.checked;\n this.emitCheckedChange();\n }\n\n private handleKeyDown(event: KeyboardEvent): void {\n const isRtl = this.matches(':dir(rtl)');\n\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.toggle();\n return;\n }\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n this.checked = isRtl;\n this.emitCheckedChange();\n return;\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n this.checked = !isRtl;\n this.emitCheckedChange();\n }\n }\n\n private emitCheckedChange(): void {\n this.hasInteracted = true;\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 private handleLabelClick(event: Event): void {\n if (this.disabled || event.target === this.switchElement) {\n return;\n }\n\n this.toggle();\n }\n\n private hasLabelContent(): boolean {\n if (this.label) {\n return true;\n }\n\n const slot = this.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement | null;\n\n if (!slot) {\n return false;\n }\n\n return slot.assignedNodes({ flatten: true }).some((node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n return Boolean(node.textContent?.trim());\n }\n\n return node.nodeType === Node.ELEMENT_NODE;\n });\n }\n\n override render() {\n const hasInstructions = hasInstructionContent(\n (name, flag) => this.hasSlotController.test(name, flag),\n this.instructions,\n );\n const hasLabel = this.hasLabelContent();\n\n return html`\n <div part=\"base\" class=\"base\">\n <button\n part=\"switch\"\n class=\"switch\"\n type=\"button\"\n role=\"switch\"\n ?disabled=${this.disabled}\n aria-checked=${this.checked ? 'true' : 'false'}\n aria-invalid=${this.invalid ? 'true' : nothing}\n aria-describedby=${hasInstructions ? 'instructions' : nothing}\n aria-labelledby=${hasLabel ? 'label' : nothing}\n @click=${this.toggle}\n @keydown=${this.handleKeyDown}\n >\n <span part=\"thumb\" class=\"thumb\">${CHECK_ICON}</span>\n </button>\n <input\n part=\"input\"\n class=\"input\"\n type=\"checkbox\"\n tabindex=\"-1\"\n .checked=${this.checked}\n ?disabled=${this.disabled}\n ?required=${this.required}\n value=${this.value}\n aria-invalid=${this.invalid ? 'true' : nothing}\n @change=${(event: Event) => event.stopPropagation()}\n />\n ${hasLabel || hasInstructions\n ? html`\n <div class=\"content\" @click=${this.handleLabelClick}>\n ${hasLabel\n ? html`\n <span part=\"label\" class=\"label\" id=\"label\">\n <slot></slot>${this.label}\n </span>\n `\n : nothing}\n ${hasInstructions\n ? html`\n <span part=\"instructions\" class=\"instructions form-control__instructions\" id=\"instructions\">\n <slot name=\"instructions\">${this.instructions}</slot>\n <slot name=\"hint\"></slot>\n </span>\n `\n : nothing}\n </div>\n `\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-lightswitch': PkLightswitch;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"pk-lightswitch-FH5ZxMG2.js","names":[],"sources":["../../src/components/lightswitch/pk-lightswitch.styles.ts","../../src/components/lightswitch/pk-lightswitch.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkLightswitchStyles = css`\n @layer pk-component {\n :host {\n display: inline-flex;\n vertical-align: middle;\n font-family: var(--pk-font-family);\n font-size: var(--pk-font-size-sm);\n line-height: var(--pk-line-height);\n --pk-lightswitch-border-color: var(--pk-color-slate-800);\n --pk-lightswitch-track-off: var(--pk-color-gray-200);\n --pk-lightswitch-track-on: var(--pk-color-teal-550);\n --pk-lightswitch-track-on-border: var(--pk-color-teal-550-border);\n --pk-lightswitch-focus-shadow: 0 0 0 1px #fff, 0 0 0 3px var(--pk-color-sky-600),\n 0 0 6px 1px hsl(from var(--pk-color-sky-600) h s l / 0.8);\n --pk-lightswitch-invalid-shadow: 0 0 0 1px #fff, 0 0 0 2.5px var(--pk-color-rose-600);\n --pk-lightswitch-invalid-focus-shadow: 0 0 0 1px #fff, 0 0 0 3px var(--pk-color-rose-600),\n 0 0 6px 1px hsl(from var(--pk-color-rose-600) h s l / 0.8);\n }\n\n :host([disabled]) {\n cursor: not-allowed;\n }\n\n .base {\n display: inline-flex;\n align-items: flex-start;\n gap: 0.5rem;\n }\n\n :host([disabled]) .base {\n opacity: 0.5;\n }\n\n .content {\n min-width: 0;\n cursor: pointer;\n user-select: none;\n }\n\n :host([disabled]) .content {\n cursor: not-allowed;\n }\n\n .label {\n display: block;\n /* Match checkbox / radio option labels (gray-700), not gray-900. */\n color: var(--pk-color-gray-700);\n line-height: 1rem;\n }\n\n .label:empty {\n display: none;\n }\n\n .instructions:empty,\n .hint:empty {\n display: none;\n }\n\n .switch {\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n margin: 0;\n padding: 0;\n border: 0;\n border-radius: 11px;\n background: var(--pk-lightswitch-track-off, #d8dee7);\n box-shadow: inset 0 0 0 1px var(--pk-lightswitch-border-color, #667c92);\n cursor: pointer;\n user-select: none;\n appearance: none;\n transition: background-color 0.15s ease, box-shadow 0.15s ease;\n }\n\n .switch:focus {\n outline: none;\n }\n\n .switch:focus-visible {\n box-shadow: var(--pk-lightswitch-focus-shadow);\n }\n\n .switch[aria-checked='true'] {\n background: var(--pk-lightswitch-track-on, #0f9d8a);\n box-shadow: inset 0 0 0 1px var(--pk-lightswitch-track-on-border, #007d6f);\n }\n\n .switch[aria-checked='true']:focus-visible {\n box-shadow: var(--pk-lightswitch-focus-shadow);\n }\n\n :host([invalid]) .switch,\n :host(:state(user-invalid)) .switch,\n .switch[aria-invalid='true'] {\n box-shadow: var(--pk-lightswitch-invalid-shadow);\n }\n\n :host([invalid]) .switch[aria-checked='true'],\n :host(:state(user-invalid)) .switch[aria-checked='true'],\n .switch[aria-invalid='true'][aria-checked='true'] {\n background: var(--pk-lightswitch-track-on);\n }\n\n :host([invalid]) .switch:focus-visible,\n :host(:state(user-invalid)) .switch:focus-visible,\n .switch[aria-invalid='true']:focus-visible {\n box-shadow: var(--pk-lightswitch-invalid-focus-shadow);\n }\n\n .switch:disabled {\n cursor: not-allowed;\n }\n\n :host([size='default']) .switch {\n width: 34px;\n height: 22px;\n }\n\n :host([size='sm']) .switch {\n width: 28px;\n height: 18px;\n border-radius: 9px;\n }\n\n :host([size='xs']) .switch {\n width: 24px;\n height: 16px;\n border-radius: 8px;\n }\n\n :host([size='xxs']) .switch {\n width: 24px;\n height: 14px;\n border-radius: 7px;\n }\n\n .thumb {\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n background: var(--pk-color-white, #fff);\n box-shadow: inset 0 0 0 1px var(--pk-lightswitch-border-color, #667c92);\n pointer-events: none;\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n }\n\n :host([size='default']) .thumb {\n width: 18px;\n height: 18px;\n transform: translateX(2px);\n }\n\n :host([size='default']) .switch[aria-checked='true'] .thumb {\n transform: translateX(calc(100% - 4px));\n box-shadow: inset 0 0 0 1px var(--pk-lightswitch-track-on-border);\n }\n\n :host([size='sm']) .thumb {\n width: 14px;\n height: 14px;\n transform: translateX(2px);\n }\n\n :host([size='sm']) .switch[aria-checked='true'] .thumb {\n transform: translateX(calc(100% - 2px));\n box-shadow: inset 0 0 0 1px var(--pk-lightswitch-track-on-border);\n }\n\n :host([size='xs']) .thumb {\n width: 12px;\n height: 12px;\n transform: translateX(2px);\n }\n\n :host([size='xs']) .switch[aria-checked='true'] .thumb {\n transform: translateX(calc(100% - 2px));\n box-shadow: inset 0 0 0 1px var(--pk-lightswitch-track-on-border);\n }\n\n :host([size='xxs']) .thumb {\n width: 10px;\n height: 10px;\n transform: translateX(2px);\n }\n\n :host([size='xxs']) .switch[aria-checked='true'] .thumb {\n transform: translateX(12px);\n box-shadow: inset 0 0 0 1px var(--pk-lightswitch-track-on-border, #007d6f);\n }\n\n .thumb svg {\n width: 14px;\n height: 14px;\n color: var(--pk-lightswitch-track-on);\n opacity: 0;\n transform: translateY(1px);\n transition: opacity 0.15s ease;\n }\n\n .switch[aria-checked='true'] .thumb svg {\n opacity: 1;\n }\n\n :host([size='sm']) .thumb svg {\n width: 10px;\n height: 10px;\n }\n\n :host([size='xs']) .thumb svg,\n :host([size='xxs']) .thumb svg {\n display: none;\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 }\n }\n`;\n","import { html, nothing } from 'lit';\nimport { customElement, property, query } from '../../decorators.js';\nimport type { PropertyValues } from 'lit';\n\nimport { formControlStyles } from '../../base/form-control.styles.js';\nimport { PkFormAssociatedElement } from '../../base/pk-form-associated-element.js';\nimport { HasSlotController } from '../../internal/has-slot.js';\nimport { hasInstructionContent, readLegacyInstructions } from '../../internal/field-labels.js';\nimport { MirrorValidator, RequiredValidator } from '../../validators/index.js';\nimport { pkLightswitchStyles } from './pk-lightswitch.styles.js';\n\nconst CHECK_ICON = html`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 640 640\" aria-hidden=\"true\">\n <path fill=\"currentColor\" 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 </svg>\n`;\n\nexport type PkLightswitchSize = 'default' | 'sm' | 'xs' | 'xxs';\n\n/**\n * Craft lightswitch — switch API (`role=\"switch\"`), form-associated.\n *\n * @slot - Switch label\n * @slot instructions - Instructions text (or use `instructions` attribute)\n * @slot hint - Alias for `instructions`\n *\n * @csspart base - Root wrapper\n * @csspart switch - Switch button\n * @csspart thumb - Thumb element\n * @csspart label - Label text\n * @csspart instructions - Instructions text\n * @csspart input - Hidden checkbox input\n */\n@customElement('pk-lightswitch')\nexport class PkLightswitch extends PkFormAssociatedElement {\n static override shadowRootOptions: ShadowRootInit = {\n mode: 'open',\n delegatesFocus: true,\n };\n\n static override styles = [formControlStyles, pkLightswitchStyles];\n\n static override get validators() {\n return [...super.validators, MirrorValidator(), RequiredValidator({ validationProperty: 'checked' })];\n }\n\n override assumeInteractionOn = ['change'];\n\n private readonly hasSlotController = new HasSlotController(this, 'instructions', 'hint');\n\n @property({ type: Boolean, reflect: true })\n checked = false;\n\n @property({ attribute: 'default-checked', type: Boolean })\n defaultChecked = false;\n\n @property({ type: Boolean, reflect: true })\n invalid = false;\n\n @property({ reflect: true })\n size: PkLightswitchSize = 'default';\n\n @property()\n value = 'on';\n\n @property()\n label = '';\n\n @property()\n instructions = '';\n\n @query('.input')\n override input!: HTMLInputElement;\n\n @query('[part=\"switch\"]')\n private switchElement!: HTMLButtonElement;\n\n override connectedCallback(): void {\n this.instructions = readLegacyInstructions(this, this.instructions);\n super.connectedCallback();\n }\n\n protected override get validationTarget(): HTMLElement {\n return this.input;\n }\n\n protected override syncFormValue(): void {\n this.setFormValue(this.checked ? this.value : null, this.checked ? 'on' : 'off');\n }\n\n protected override resetToDefaultValue(): void {\n this.checked = this.defaultChecked;\n }\n\n protected override restoreFormState(state: string | File | FormData | null): void {\n if (state === 'on' || state === this.value) {\n this.checked = true;\n } else {\n this.checked = false;\n }\n }\n\n override updated(changed: PropertyValues): void {\n if (this.input && changed.has('checked')) {\n this.input.checked = this.checked;\n }\n\n super.updated(changed);\n }\n\n click(): void {\n this.switchElement?.click();\n }\n\n override focus(options?: FocusOptions): void {\n this.switchElement?.focus(options);\n }\n\n override blur(): void {\n this.switchElement?.blur();\n }\n\n private toggle(): void {\n if (this.disabled) {\n return;\n }\n\n this.checked = !this.checked;\n this.emitCheckedChange();\n }\n\n private handleKeyDown(event: KeyboardEvent): void {\n const isRtl = this.matches(':dir(rtl)');\n\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n this.toggle();\n return;\n }\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n this.checked = isRtl;\n this.emitCheckedChange();\n return;\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n this.checked = !isRtl;\n this.emitCheckedChange();\n }\n }\n\n private emitCheckedChange(): void {\n this.hasInteracted = true;\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 private handleLabelClick(event: Event): void {\n if (this.disabled || event.target === this.switchElement) {\n return;\n }\n\n this.toggle();\n }\n\n private hasLabelContent(): boolean {\n if (this.label) {\n return true;\n }\n\n const slot = this.shadowRoot?.querySelector('slot:not([name])') as HTMLSlotElement | null;\n\n if (!slot) {\n return false;\n }\n\n return slot.assignedNodes({ flatten: true }).some((node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n return Boolean(node.textContent?.trim());\n }\n\n return node.nodeType === Node.ELEMENT_NODE;\n });\n }\n\n override render() {\n const hasInstructions = hasInstructionContent(\n (name, flag) => this.hasSlotController.test(name, flag),\n this.instructions,\n );\n const hasLabel = this.hasLabelContent();\n\n return html`\n <div part=\"base\" class=\"base\">\n <button\n part=\"switch\"\n class=\"switch\"\n type=\"button\"\n role=\"switch\"\n ?disabled=${this.disabled}\n aria-checked=${this.checked ? 'true' : 'false'}\n aria-invalid=${this.invalid ? 'true' : nothing}\n aria-describedby=${hasInstructions ? 'instructions' : nothing}\n aria-labelledby=${hasLabel ? 'label' : nothing}\n @click=${this.toggle}\n @keydown=${this.handleKeyDown}\n >\n <span part=\"thumb\" class=\"thumb\">${CHECK_ICON}</span>\n </button>\n <input\n part=\"input\"\n class=\"input\"\n type=\"checkbox\"\n tabindex=\"-1\"\n .checked=${this.checked}\n ?disabled=${this.disabled}\n ?required=${this.required}\n value=${this.value}\n aria-invalid=${this.invalid ? 'true' : nothing}\n @change=${(event: Event) => event.stopPropagation()}\n />\n ${hasLabel || hasInstructions\n ? html`\n <div class=\"content\" @click=${this.handleLabelClick}>\n ${hasLabel\n ? html`\n <span part=\"label\" class=\"label\" id=\"label\">\n <slot></slot>${this.label}\n </span>\n `\n : nothing}\n ${hasInstructions\n ? html`\n <span part=\"instructions\" class=\"instructions form-control__instructions\" id=\"instructions\">\n <slot name=\"instructions\">${this.instructions}</slot>\n <slot name=\"hint\"></slot>\n </span>\n `\n : nothing}\n </div>\n `\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-lightswitch': PkLightswitch;\n }\n}\n"],"mappings":";;;;;;;;;AAEA,IAAa,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACStC,IAAM,aAAa,IAAI;;;;;AAuBhB,IAAA,gBAAA,MAAM,sBAAsB,wBAAwB;;;6BAYxB,CAAC,SAAS;2BAEJ,IAAI,kBAAkB,MAAM,gBAAgB,OAAO;iBAG9E;wBAGO;iBAGP;cAGgB;eAGlB;eAGA;sBAGO;;;2BAlCqC;GAChD,MAAM;GACN,gBAAgB;GACnB;;;gBAEwB,CAAC,mBAAmB,oBAAoB;;CAEjE,WAAoB,aAAa;AAC7B,SAAO;GAAC,GAAG,MAAM;GAAY,iBAAiB;GAAE,kBAAkB,EAAE,oBAAoB,WAAW,CAAC;GAAC;;CAkCzG,oBAAmC;AAC/B,OAAK,eAAe,uBAAuB,MAAM,KAAK,aAAa;AACnE,QAAM,mBAAmB;;CAG7B,IAAuB,mBAAgC;AACnD,SAAO,KAAK;;CAGhB,gBAAyC;AACrC,OAAK,aAAa,KAAK,UAAU,KAAK,QAAQ,MAAM,KAAK,UAAU,OAAO,MAAM;;CAGpF,sBAA+C;AAC3C,OAAK,UAAU,KAAK;;CAGxB,iBAAoC,OAA8C;AAC9E,MAAI,UAAU,QAAQ,UAAU,KAAK,MACjC,MAAK,UAAU;MAEf,MAAK,UAAU;;CAIvB,QAAiB,SAA+B;AAC5C,MAAI,KAAK,SAAS,QAAQ,IAAI,UAAU,CACpC,MAAK,MAAM,UAAU,KAAK;AAG9B,QAAM,QAAQ,QAAQ;;CAG1B,QAAc;AACV,OAAK,eAAe,OAAO;;CAG/B,MAAe,SAA8B;AACzC,OAAK,eAAe,MAAM,QAAQ;;CAGtC,OAAsB;AAClB,OAAK,eAAe,MAAM;;CAG9B,SAAuB;AACnB,MAAI,KAAK,SACL;AAGJ,OAAK,UAAU,CAAC,KAAK;AACrB,OAAK,mBAAmB;;CAG5B,cAAsB,OAA4B;EAC9C,MAAM,QAAQ,KAAK,QAAQ,YAAY;AAEvC,MAAI,MAAM,QAAQ,OAAO,MAAM,QAAQ,SAAS;AAC5C,SAAM,gBAAgB;AACtB,QAAK,QAAQ;AACb;;AAGJ,MAAI,MAAM,QAAQ,aAAa;AAC3B,SAAM,gBAAgB;AACtB,QAAK,UAAU;AACf,QAAK,mBAAmB;AACxB;;AAGJ,MAAI,MAAM,QAAQ,cAAc;AAC5B,SAAM,gBAAgB;AACtB,QAAK,UAAU,CAAC;AAChB,QAAK,mBAAmB;;;CAIhC,oBAAkC;AAC9B,OAAK,gBAAgB;AAErB,OAAK,cAAc,IAAI,YAAY,aAAa;GAC5C,QAAQ,EAAE,SAAS,KAAK,SAAS;GACjC,SAAS;GACT,UAAU;GACb,CAAC,CAAC;AAEH,OAAK,cAAc,IAAI,MAAM,SAAS;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC,CAAC;AACzE,OAAK,cAAc,IAAI,MAAM,UAAU;GAAE,SAAS;GAAM,UAAU;GAAM,CAAC,CAAC;;CAG9E,iBAAyB,OAAoB;AACzC,MAAI,KAAK,YAAY,MAAM,WAAW,KAAK,cACvC;AAGJ,OAAK,QAAQ;;CAGjB,kBAAmC;AAC/B,MAAI,KAAK,MACL,QAAO;EAGX,MAAM,OAAO,KAAK,YAAY,cAAc,mBAAmB;AAE/D,MAAI,CAAC,KACD,QAAO;AAGX,SAAO,KAAK,cAAc,EAAE,SAAS,MAAM,CAAC,CAAC,MAAM,SAAS;AACxD,OAAI,KAAK,aAAa,KAAK,UACvB,QAAO,QAAQ,KAAK,aAAa,MAAM,CAAC;AAG5C,UAAO,KAAK,aAAa,KAAK;IAChC;;CAGN,SAAkB;EACd,MAAM,kBAAkB,uBACnB,MAAM,SAAS,KAAK,kBAAkB,KAAK,MAAM,KAAK,EACvD,KAAK,aACR;EACD,MAAM,WAAW,KAAK,iBAAiB;AAEvC,SAAO,IAAI;;;;;;;gCAOa,KAAK,SAAS;mCACX,KAAK,UAAU,SAAS,QAAQ;mCAChC,KAAK,UAAU,SAAS,QAAQ;uCAC5B,kBAAkB,iBAAiB,QAAQ;sCAC5C,WAAW,UAAU,QAAQ;6BACtC,KAAK,OAAO;+BACV,KAAK,cAAc;;uDAEK,WAAW;;;;;;;+BAOnC,KAAK,QAAQ;gCACZ,KAAK,SAAS;gCACd,KAAK,SAAS;4BAClB,KAAK,MAAM;mCACJ,KAAK,UAAU,SAAS,QAAQ;+BACpC,UAAiB,MAAM,iBAAiB,CAAC;;kBAEtD,YAAY,kBACR,IAAI;sDAC4B,KAAK,iBAAiB;8BAC9C,WACI,IAAI;;uDAEiB,KAAK,MAAM;;oCAGhC,QAAQ;8BACZ,kBACI,IAAI;;oEAE8B,KAAK,aAAa;;;oCAIpD,QAAQ;;wBAGpB,QAAQ;;;;;YAzMzB,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,cAAA,WAAA,WAAA,KAAA,EAAA;YAG1C,SAAS;CAAE,WAAW;CAAmB,MAAM;CAAS,CAAC,CAAA,EAAA,cAAA,WAAA,kBAAA,KAAA,EAAA;YAGzD,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,cAAA,WAAA,WAAA,KAAA,EAAA;YAG1C,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,cAAA,WAAA,QAAA,KAAA,EAAA;YAG3B,UAAU,CAAA,EAAA,cAAA,WAAA,SAAA,KAAA,EAAA;YAGV,UAAU,CAAA,EAAA,cAAA,WAAA,SAAA,KAAA,EAAA;YAGV,UAAU,CAAA,EAAA,cAAA,WAAA,gBAAA,KAAA,EAAA;YAGV,MAAM,SAAS,CAAA,EAAA,cAAA,WAAA,SAAA,KAAA,EAAA;YAGf,MAAM,oBAAkB,CAAA,EAAA,cAAA,WAAA,iBAAA,KAAA,EAAA;4BAzC5B,cAAc,iBAAiB,CAAA,EAAA,cAAA"}
@@ -1,6 +1,6 @@
1
- import { t as icons_exports } from "./icons-BR8JcQj2.js";
1
+ import { t as icons_exports } from "./icons-B8siZLOe.js";
2
2
  import { i as property, n as PkElement, s as customElement, t as __decorate } from "./decorate-R0X811qp.js";
3
- import { n as renderIconHtml } from "./render-Dvc3MHQR.js";
3
+ import { n as renderIconHtml } from "./render-BKGW1a68.js";
4
4
  import { css, html, nothing } from "lit";
5
5
  import { unsafeSVG } from "lit/directives/unsafe-svg.js";
6
6
  //#region src/utils/highlight-text.ts
@@ -317,4 +317,4 @@ PkOption = __decorate([customElement("pk-option")], PkOption);
317
317
  //#endregion
318
318
  export { PkOption as t };
319
319
 
320
- //# sourceMappingURL=pk-option-DQZHV9jL.js.map
320
+ //# sourceMappingURL=pk-option-Cx52kLmz.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pk-option-DQZHV9jL.js","names":[],"sources":["../../src/utils/highlight-text.ts","../../src/components/select/pk-option.styles.ts","../../src/components/select/pk-option.ts"],"sourcesContent":["export type HighlightPart = {\n text: string;\n match: boolean;\n};\n\n/** Split label text into matched/unmatched segments for typeahead highlighting. */\nexport function splitHighlightParts(text: string, search: string): HighlightPart[] {\n const label = String(text ?? '');\n const query = String(search ?? '').trim();\n\n if (!query) {\n return [{ text: label, match: false }];\n }\n\n const lowerLabel = label.toLowerCase();\n const lowerQuery = query.toLowerCase();\n const parts: HighlightPart[] = [];\n let cursor = 0;\n let matchIndex = lowerLabel.indexOf(lowerQuery);\n\n while (matchIndex !== -1) {\n if (matchIndex > cursor) {\n parts.push({\n text: label.slice(cursor, matchIndex),\n match: false,\n });\n }\n\n parts.push({\n text: label.slice(matchIndex, matchIndex + query.length),\n match: true,\n });\n\n cursor = matchIndex + query.length;\n matchIndex = lowerLabel.indexOf(lowerQuery, cursor);\n }\n\n if (cursor < label.length) {\n parts.push({\n text: label.slice(cursor),\n match: false,\n });\n }\n\n return parts.length > 0 ? parts : [{ text: label, match: false }];\n}\n","import { css } from 'lit';\n\nexport const pkOptionStyles = css`\n @layer pk-component {\n :host {\n display: block;\n /*\n * Slotted option labels inherit type metrics from this host (same\n * Craft-vs-Tailwind trap as pk-dropdown-item). Size tokens arrive via\n * pk-select ::slotted(pk-option) custom properties.\n */\n font-family: var(--pk-font-family);\n font-size: var(--pk-select-item-font-size, var(--pk-font-size-base));\n line-height: var(--pk-select-item-line-height, 1.4);\n color: var(--pk-color-gray-700);\n }\n\n .option {\n position: relative;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n margin: 0;\n min-height: var(--pk-select-item-min-height, var(--pk-input-height));\n padding-block: var(--pk-select-item-padding-block, 6px);\n padding-inline-start: var(--pk-select-item-padding-inline, 10px);\n padding-inline-end: var(--pk-select-item-padding-inline-end, 2rem);\n border: var(--pk-select-trigger-border-width, 1px) solid transparent;\n background: transparent;\n color: inherit;\n font: inherit;\n font-family: var(--pk-font-family);\n font-size: var(--pk-select-item-font-size, var(--pk-font-size-base));\n line-height: var(--pk-select-item-line-height, 1.4);\n text-align: left;\n white-space: nowrap;\n cursor: default;\n user-select: none;\n outline: none;\n box-sizing: border-box;\n }\n\n .start {\n display: none;\n flex: 0 0 auto;\n align-items: center;\n }\n\n :host([data-has-start]) .start {\n display: inline-flex;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n .option:focus-visible,\n :host([highlighted]) .option {\n background: var(--pk-color-slate-100);\n }\n\n :host([disabled]) .option,\n .option[aria-disabled='true'] {\n pointer-events: none;\n opacity: 0.5;\n }\n\n .check {\n position: absolute;\n inset-inline-end: var(--pk-select-item-indicator-inset, 0.5rem);\n top: 50%;\n display: none;\n align-items: center;\n justify-content: center;\n width: var(--pk-select-item-indicator-size, 0.75rem);\n height: var(--pk-select-item-indicator-size, 0.75rem);\n color: var(--pk-color-gray-700);\n pointer-events: none;\n transform: translateY(-50%);\n line-height: 0;\n }\n\n :host([selected]) .check {\n display: inline-flex;\n }\n\n .check svg {\n display: block;\n width: var(--pk-select-item-indicator-size, 0.75rem);\n height: var(--pk-select-item-indicator-size, 0.75rem);\n flex-shrink: 0;\n pointer-events: none;\n }\n\n .label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n /* Allow custom multi-line option layouts (title + subtitle) to stack. */\n white-space: normal;\n }\n\n .match {\n padding: 0;\n border-radius: 2px;\n background: var(--pk-color-blue-100);\n color: inherit;\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport { customElement, property } from '../../decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\n\nimport { check, renderIconHtml } from '../../icons/index.js';\nimport { PkElement } from '../../base/pk-element.js';\nimport { splitHighlightParts } from '../../utils/highlight-text.js';\nimport { pkOptionStyles } from './pk-option.styles.js';\n\nconst CHECK_ICON = renderIconHtml(check);\n\n/**\n * Select option — use inside `pk-select`, `pk-combobox`, or `pk-autocomplete`.\n *\n * @slot start - Presentational decoration before the label (e.g. `pk-status`).\n * @slot - Option label\n *\n * @csspart start - Start decoration container\n * @csspart option - Option button\n * @csspart label - Option label\n * @csspart check - Selected-state check indicator\n *\n * @event pk-option-select - Emitted when the option is activated (click / Enter).\n * @event pk-option-highlight - Emitted when the option becomes the highlighted item.\n */\n@customElement('pk-option')\nexport class PkOption extends PkElement {\n static override styles = pkOptionStyles;\n\n /** Option value submitted / emitted when selected. */\n @property()\n value = '';\n\n /**\n * Optional short label for the closed trigger / filter identity (v1 itemToStringLabel).\n * When set, preferred over concatenating rich default-slot text (title + subtitle).\n */\n @property()\n label = '';\n\n /** Disables the option so it cannot be selected. */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /** Whether this option is currently selected. */\n @property({ type: Boolean, reflect: true })\n selected = false;\n\n /** Keyboard / pointer highlight within the listbox. */\n @property({ type: Boolean, reflect: true })\n highlighted = false;\n\n /** Hides the option from the list (e.g. filtered combobox results). */\n @property({ type: Boolean, reflect: true })\n hidden = false;\n\n @property({ type: Number, attribute: 'focus-index' })\n focusIndex = -1;\n\n @property()\n optionId = '';\n\n /** When set, the label renders with matching query text highlighted (combobox filter). */\n @property({ attribute: false })\n matchQuery = '';\n\n /** Focus the option’s inner control (listbox keyboard navigation). */\n focusControl(preventScroll = true): void {\n this.shadowRoot?.querySelector<HTMLButtonElement>('.option')?.focus({ preventScroll });\n }\n\n /**\n * Label for the closed combobox/select value.\n * Prefers the `label` attribute when set; otherwise default-slot text\n * (excluding `slot=\"start\"`), joined with spaces for multi-node layouts.\n */\n getLabel(): string {\n if (this.label.trim()) {\n return this.label.trim();\n }\n\n const labelSlot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])');\n\n if (!labelSlot) {\n return this.textContent?.trim() ?? this.value;\n }\n\n // Join with spaces so multi-line custom labels (\"Link\" + \"Craft CMS\") do not\n // concatenate into \"LinkCraft CMS\" when no explicit `label` is set.\n return labelSlot.assignedNodes()\n .map((node) => (node.textContent ?? '').trim())\n .filter(Boolean)\n .join(' ')\n .trim();\n }\n\n /** Full default-slot text for typeahead matching (includes subtitle lines). */\n getSearchText(): string {\n const labelSlot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])');\n\n if (!labelSlot) {\n return this.getLabel();\n }\n\n const fromSlot = labelSlot.assignedNodes()\n .map((node) => (node.textContent ?? '').trim())\n .filter(Boolean)\n .join(' ')\n .trim();\n\n return fromSlot || this.getLabel();\n }\n\n /** True when the default slot has element children (custom multi-line / rich layouts). */\n private hasRichLabelContent(): boolean {\n return [...this.children].some((node) => {\n if (!(node instanceof HTMLElement)) {\n return false;\n }\n\n // Named slots (e.g. start) are not part of the label.\n return !node.slot || node.slot === '';\n });\n }\n\n /** Light-DOM elements assigned to the start decoration slot. */\n getStartElements(): HTMLElement[] {\n return [...this.querySelectorAll(':scope > [slot=\"start\"]')].filter(\n (node): node is HTMLElement => node instanceof HTMLElement,\n );\n }\n\n override firstUpdated(): void {\n const startSlot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot[name=\"start\"]');\n\n startSlot?.addEventListener('slotchange', () => this.syncStartDecoration());\n this.syncStartDecoration();\n }\n\n private syncStartDecoration(): void {\n this.toggleAttribute('data-has-start', this.getStartElements().length > 0);\n }\n\n private handleClick(): void {\n if (this.disabled) {\n return;\n }\n\n this.dispatchEvent(new CustomEvent('pk-option-select', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }));\n }\n\n private handleMouseEnter(): void {\n if (this.disabled || this.hidden) {\n return;\n }\n\n this.dispatchEvent(new CustomEvent('pk-option-highlight', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }));\n }\n\n private handleKeyDown(event: KeyboardEvent): void {\n const navKeys = new Set([\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Home',\n 'End',\n 'Enter',\n ' ',\n 'Escape',\n ]);\n\n if (!navKeys.has(event.key)) {\n return;\n }\n\n const owner = this.closest('pk-select, pk-combobox, pk-autocomplete');\n const panel = owner ? null : this.closest('[role=\"listbox\"]');\n\n if (!owner && !panel) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const keydownEvent = new CustomEvent('pk-listbox-keydown', {\n detail: { keyboardEvent: event },\n bubbles: true,\n });\n\n if (owner) {\n owner.dispatchEvent(keydownEvent);\n return;\n }\n\n panel!.dispatchEvent(keydownEvent);\n }\n\n private renderLabel() {\n const query = this.matchQuery.trim();\n // Flat highlight replaces the default slot — that collapses custom layouts\n // (title + subtitle) into one run when filtering. Keep the slot for rich content.\n if (!query || this.hasRichLabelContent()) {\n return html`\n <span part=\"label\" class=\"label\">\n <slot></slot>\n </span>\n `;\n }\n\n const label = this.getLabel();\n const parts = splitHighlightParts(label, query);\n\n return html`\n <span part=\"label\" class=\"label\">\n ${parts.map((part) => part.match\n ? html`<mark class=\"match\">${part.text}</mark>`\n : html`<span>${part.text}</span>`)}\n </span>\n `;\n }\n\n override render() {\n return html`\n <button\n part=\"option\"\n type=\"button\"\n class=\"option\"\n role=\"option\"\n id=${this.optionId || nothing}\n ?disabled=${this.disabled}\n aria-disabled=${this.disabled ? 'true' : nothing}\n aria-selected=${this.selected ? 'true' : 'false'}\n tabindex=${this.focusIndex}\n @click=${this.handleClick}\n @mouseenter=${this.handleMouseEnter}\n @keydown=${this.handleKeyDown}\n >\n <span part=\"start\" class=\"start\">\n <slot name=\"start\"></slot>\n </span>\n ${this.renderLabel()}\n <span part=\"check\" class=\"check\" aria-hidden=\"true\">${unsafeSVG(CHECK_ICON)}</span>\n </button>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-option': PkOption;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"pk-option-Cx52kLmz.js","names":[],"sources":["../../src/utils/highlight-text.ts","../../src/components/select/pk-option.styles.ts","../../src/components/select/pk-option.ts"],"sourcesContent":["export type HighlightPart = {\n text: string;\n match: boolean;\n};\n\n/** Split label text into matched/unmatched segments for typeahead highlighting. */\nexport function splitHighlightParts(text: string, search: string): HighlightPart[] {\n const label = String(text ?? '');\n const query = String(search ?? '').trim();\n\n if (!query) {\n return [{ text: label, match: false }];\n }\n\n const lowerLabel = label.toLowerCase();\n const lowerQuery = query.toLowerCase();\n const parts: HighlightPart[] = [];\n let cursor = 0;\n let matchIndex = lowerLabel.indexOf(lowerQuery);\n\n while (matchIndex !== -1) {\n if (matchIndex > cursor) {\n parts.push({\n text: label.slice(cursor, matchIndex),\n match: false,\n });\n }\n\n parts.push({\n text: label.slice(matchIndex, matchIndex + query.length),\n match: true,\n });\n\n cursor = matchIndex + query.length;\n matchIndex = lowerLabel.indexOf(lowerQuery, cursor);\n }\n\n if (cursor < label.length) {\n parts.push({\n text: label.slice(cursor),\n match: false,\n });\n }\n\n return parts.length > 0 ? parts : [{ text: label, match: false }];\n}\n","import { css } from 'lit';\n\nexport const pkOptionStyles = css`\n @layer pk-component {\n :host {\n display: block;\n /*\n * Slotted option labels inherit type metrics from this host (same\n * Craft-vs-Tailwind trap as pk-dropdown-item). Size tokens arrive via\n * pk-select ::slotted(pk-option) custom properties.\n */\n font-family: var(--pk-font-family);\n font-size: var(--pk-select-item-font-size, var(--pk-font-size-base));\n line-height: var(--pk-select-item-line-height, 1.4);\n color: var(--pk-color-gray-700);\n }\n\n .option {\n position: relative;\n display: flex;\n align-items: center;\n gap: 0.5rem;\n width: 100%;\n margin: 0;\n min-height: var(--pk-select-item-min-height, var(--pk-input-height));\n padding-block: var(--pk-select-item-padding-block, 6px);\n padding-inline-start: var(--pk-select-item-padding-inline, 10px);\n padding-inline-end: var(--pk-select-item-padding-inline-end, 2rem);\n border: var(--pk-select-trigger-border-width, 1px) solid transparent;\n background: transparent;\n color: inherit;\n font: inherit;\n font-family: var(--pk-font-family);\n font-size: var(--pk-select-item-font-size, var(--pk-font-size-base));\n line-height: var(--pk-select-item-line-height, 1.4);\n text-align: left;\n white-space: nowrap;\n cursor: default;\n user-select: none;\n outline: none;\n box-sizing: border-box;\n }\n\n .start {\n display: none;\n flex: 0 0 auto;\n align-items: center;\n }\n\n :host([data-has-start]) .start {\n display: inline-flex;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n .option:focus-visible,\n :host([highlighted]) .option {\n background: var(--pk-color-slate-100);\n }\n\n :host([disabled]) .option,\n .option[aria-disabled='true'] {\n pointer-events: none;\n opacity: 0.5;\n }\n\n .check {\n position: absolute;\n inset-inline-end: var(--pk-select-item-indicator-inset, 0.5rem);\n top: 50%;\n display: none;\n align-items: center;\n justify-content: center;\n width: var(--pk-select-item-indicator-size, 0.75rem);\n height: var(--pk-select-item-indicator-size, 0.75rem);\n color: var(--pk-color-gray-700);\n pointer-events: none;\n transform: translateY(-50%);\n line-height: 0;\n }\n\n :host([selected]) .check {\n display: inline-flex;\n }\n\n .check svg {\n display: block;\n width: var(--pk-select-item-indicator-size, 0.75rem);\n height: var(--pk-select-item-indicator-size, 0.75rem);\n flex-shrink: 0;\n pointer-events: none;\n }\n\n .label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n /* Allow custom multi-line option layouts (title + subtitle) to stack. */\n white-space: normal;\n }\n\n .match {\n padding: 0;\n border-radius: 2px;\n background: var(--pk-color-blue-100);\n color: inherit;\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport { customElement, property } from '../../decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\n\nimport { check, renderIconHtml } from '../../icons/index.js';\nimport { PkElement } from '../../base/pk-element.js';\nimport { splitHighlightParts } from '../../utils/highlight-text.js';\nimport { pkOptionStyles } from './pk-option.styles.js';\n\nconst CHECK_ICON = renderIconHtml(check);\n\n/**\n * Select option — use inside `pk-select`, `pk-combobox`, or `pk-autocomplete`.\n *\n * @slot start - Presentational decoration before the label (e.g. `pk-status`).\n * @slot - Option label\n *\n * @csspart start - Start decoration container\n * @csspart option - Option button\n * @csspart label - Option label\n * @csspart check - Selected-state check indicator\n *\n * @event pk-option-select - Emitted when the option is activated (click / Enter).\n * @event pk-option-highlight - Emitted when the option becomes the highlighted item.\n */\n@customElement('pk-option')\nexport class PkOption extends PkElement {\n static override styles = pkOptionStyles;\n\n /** Option value submitted / emitted when selected. */\n @property()\n value = '';\n\n /**\n * Optional short label for the closed trigger / filter identity (v1 itemToStringLabel).\n * When set, preferred over concatenating rich default-slot text (title + subtitle).\n */\n @property()\n label = '';\n\n /** Disables the option so it cannot be selected. */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /** Whether this option is currently selected. */\n @property({ type: Boolean, reflect: true })\n selected = false;\n\n /** Keyboard / pointer highlight within the listbox. */\n @property({ type: Boolean, reflect: true })\n highlighted = false;\n\n /** Hides the option from the list (e.g. filtered combobox results). */\n @property({ type: Boolean, reflect: true })\n hidden = false;\n\n @property({ type: Number, attribute: 'focus-index' })\n focusIndex = -1;\n\n @property()\n optionId = '';\n\n /** When set, the label renders with matching query text highlighted (combobox filter). */\n @property({ attribute: false })\n matchQuery = '';\n\n /** Focus the option’s inner control (listbox keyboard navigation). */\n focusControl(preventScroll = true): void {\n this.shadowRoot?.querySelector<HTMLButtonElement>('.option')?.focus({ preventScroll });\n }\n\n /**\n * Label for the closed combobox/select value.\n * Prefers the `label` attribute when set; otherwise default-slot text\n * (excluding `slot=\"start\"`), joined with spaces for multi-node layouts.\n */\n getLabel(): string {\n if (this.label.trim()) {\n return this.label.trim();\n }\n\n const labelSlot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])');\n\n if (!labelSlot) {\n return this.textContent?.trim() ?? this.value;\n }\n\n // Join with spaces so multi-line custom labels (\"Link\" + \"Craft CMS\") do not\n // concatenate into \"LinkCraft CMS\" when no explicit `label` is set.\n return labelSlot.assignedNodes()\n .map((node) => (node.textContent ?? '').trim())\n .filter(Boolean)\n .join(' ')\n .trim();\n }\n\n /** Full default-slot text for typeahead matching (includes subtitle lines). */\n getSearchText(): string {\n const labelSlot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])');\n\n if (!labelSlot) {\n return this.getLabel();\n }\n\n const fromSlot = labelSlot.assignedNodes()\n .map((node) => (node.textContent ?? '').trim())\n .filter(Boolean)\n .join(' ')\n .trim();\n\n return fromSlot || this.getLabel();\n }\n\n /** True when the default slot has element children (custom multi-line / rich layouts). */\n private hasRichLabelContent(): boolean {\n return [...this.children].some((node) => {\n if (!(node instanceof HTMLElement)) {\n return false;\n }\n\n // Named slots (e.g. start) are not part of the label.\n return !node.slot || node.slot === '';\n });\n }\n\n /** Light-DOM elements assigned to the start decoration slot. */\n getStartElements(): HTMLElement[] {\n return [...this.querySelectorAll(':scope > [slot=\"start\"]')].filter(\n (node): node is HTMLElement => node instanceof HTMLElement,\n );\n }\n\n override firstUpdated(): void {\n const startSlot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot[name=\"start\"]');\n\n startSlot?.addEventListener('slotchange', () => this.syncStartDecoration());\n this.syncStartDecoration();\n }\n\n private syncStartDecoration(): void {\n this.toggleAttribute('data-has-start', this.getStartElements().length > 0);\n }\n\n private handleClick(): void {\n if (this.disabled) {\n return;\n }\n\n this.dispatchEvent(new CustomEvent('pk-option-select', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }));\n }\n\n private handleMouseEnter(): void {\n if (this.disabled || this.hidden) {\n return;\n }\n\n this.dispatchEvent(new CustomEvent('pk-option-highlight', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }));\n }\n\n private handleKeyDown(event: KeyboardEvent): void {\n const navKeys = new Set([\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Home',\n 'End',\n 'Enter',\n ' ',\n 'Escape',\n ]);\n\n if (!navKeys.has(event.key)) {\n return;\n }\n\n const owner = this.closest('pk-select, pk-combobox, pk-autocomplete');\n const panel = owner ? null : this.closest('[role=\"listbox\"]');\n\n if (!owner && !panel) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const keydownEvent = new CustomEvent('pk-listbox-keydown', {\n detail: { keyboardEvent: event },\n bubbles: true,\n });\n\n if (owner) {\n owner.dispatchEvent(keydownEvent);\n return;\n }\n\n panel!.dispatchEvent(keydownEvent);\n }\n\n private renderLabel() {\n const query = this.matchQuery.trim();\n // Flat highlight replaces the default slot — that collapses custom layouts\n // (title + subtitle) into one run when filtering. Keep the slot for rich content.\n if (!query || this.hasRichLabelContent()) {\n return html`\n <span part=\"label\" class=\"label\">\n <slot></slot>\n </span>\n `;\n }\n\n const label = this.getLabel();\n const parts = splitHighlightParts(label, query);\n\n return html`\n <span part=\"label\" class=\"label\">\n ${parts.map((part) => part.match\n ? html`<mark class=\"match\">${part.text}</mark>`\n : html`<span>${part.text}</span>`)}\n </span>\n `;\n }\n\n override render() {\n return html`\n <button\n part=\"option\"\n type=\"button\"\n class=\"option\"\n role=\"option\"\n id=${this.optionId || nothing}\n ?disabled=${this.disabled}\n aria-disabled=${this.disabled ? 'true' : nothing}\n aria-selected=${this.selected ? 'true' : 'false'}\n tabindex=${this.focusIndex}\n @click=${this.handleClick}\n @mouseenter=${this.handleMouseEnter}\n @keydown=${this.handleKeyDown}\n >\n <span part=\"start\" class=\"start\">\n <slot name=\"start\"></slot>\n </span>\n ${this.renderLabel()}\n <span part=\"check\" class=\"check\" aria-hidden=\"true\">${unsafeSVG(CHECK_ICON)}</span>\n </button>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-option': PkOption;\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { i as property, n as PkElement, s as customElement, t as __decorate } from "./decorate-R0X811qp.js";
2
- import { i as uniqueId } from "./focus-aa5dlv8k.js";
2
+ import { i as uniqueId } from "./focus-C6pY4Ym4.js";
3
3
  import { css, html } from "lit";
4
4
  //#region src/components/select/pk-option-group.styles.ts
5
5
  var pkOptionGroupStyles = css`
@@ -68,4 +68,4 @@ PkOptionGroup = __decorate([customElement("pk-option-group")], PkOptionGroup);
68
68
  //#endregion
69
69
  export { PkOptionGroup as t };
70
70
 
71
- //# sourceMappingURL=pk-option-group-CCzJkBFp.js.map
71
+ //# sourceMappingURL=pk-option-group-CYo9Ukue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pk-option-group-CCzJkBFp.js","names":[],"sources":["../../src/components/select/pk-option-group.styles.ts","../../src/components/select/pk-option-group.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkOptionGroupStyles = css`\n @layer pk-component {\n :host {\n display: block;\n }\n\n /* Hard hex fallbacks: when groups portal outside pk-select, size-token\n * vars / theme tokens may be absent and invalid color inherits option black.\n * Weight/color match v1 ComboboxLabel / SelectLabel (text-slate-700, no font-medium). */\n .label {\n padding-block-start: var(--pk-select-group-label-padding-block-start, 8px);\n padding-block-end: var(--pk-select-group-label-padding-block-end, 2px);\n padding-inline: var(--pk-select-item-padding-inline, 10px);\n color: var(--pk-select-group-label-color, var(--pk-color-slate-700, rgba(96, 125, 159, 0.7)));\n font-family: var(--pk-font-family);\n /* Default matches v1 ComboboxLabel/SelectLabel text-xs (12px). */\n font-size: var(--pk-select-group-label-font-size, 12px);\n font-weight: 400;\n line-height: 1.3;\n /* Light-DOM ancestors (e.g. Formie empty dropzone text-center) must not center labels. */\n text-align: left;\n user-select: none;\n pointer-events: none;\n }\n\n :host([hidden]),\n :host([data-pk-filter-empty]) {\n display: none !important;\n }\n }\n`;\n","import { html } from 'lit';\nimport { customElement, property } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { uniqueId } from '../../a11y/focus.js';\nimport { pkOptionGroupStyles } from './pk-option-group.styles.js';\n\n/**\n * Visual option group for `pk-select` — listbox grouping pattern.\n *\n * @slot - `pk-option` items in this group\n *\n * @csspart label - Group label\n */\n@customElement('pk-option-group')\nexport class PkOptionGroup extends PkElement {\n static override styles = pkOptionGroupStyles;\n\n /** Visible group heading above the options. */\n @property({ reflect: true })\n label = '';\n\n /** Hides the group and its options. */\n @property({ type: Boolean, reflect: true })\n hidden = false;\n\n private readonly labelId = uniqueId('pk-option-group-label');\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'group');\n this.setAttribute('aria-labelledby', this.labelId);\n }\n\n override render() {\n return html`\n <div part=\"label\" class=\"label\" id=${this.labelId}>${this.label}</div>\n <div role=\"presentation\">\n <slot></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-option-group': PkOptionGroup;\n }\n}\n"],"mappings":";;;;AAEA,IAAa,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACa/B,IAAA,gBAAA,MAAM,sBAAsB,UAAU;;;eAKjC;gBAIC;iBAEkB,SAAS,wBAAwB;;;gBAVnC;;CAYzB,oBAAmC;AAC/B,QAAM,mBAAmB;AACzB,OAAK,aAAa,QAAQ,QAAQ;AAClC,OAAK,aAAa,mBAAmB,KAAK,QAAQ;;CAGtD,SAAkB;AACd,SAAO,IAAI;iDAC8B,KAAK,QAAQ,GAAG,KAAK,MAAM;;;;;;;YAjBvE,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,cAAA,WAAA,SAAA,KAAA,EAAA;YAI3B,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,cAAA,WAAA,UAAA,KAAA,EAAA;4BAT9C,cAAc,kBAAkB,CAAA,EAAA,cAAA"}
1
+ {"version":3,"file":"pk-option-group-CYo9Ukue.js","names":[],"sources":["../../src/components/select/pk-option-group.styles.ts","../../src/components/select/pk-option-group.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkOptionGroupStyles = css`\n @layer pk-component {\n :host {\n display: block;\n }\n\n /* Hard hex fallbacks: when groups portal outside pk-select, size-token\n * vars / theme tokens may be absent and invalid color inherits option black.\n * Weight/color match v1 ComboboxLabel / SelectLabel (text-slate-700, no font-medium). */\n .label {\n padding-block-start: var(--pk-select-group-label-padding-block-start, 8px);\n padding-block-end: var(--pk-select-group-label-padding-block-end, 2px);\n padding-inline: var(--pk-select-item-padding-inline, 10px);\n color: var(--pk-select-group-label-color, var(--pk-color-slate-700, rgba(96, 125, 159, 0.7)));\n font-family: var(--pk-font-family);\n /* Default matches v1 ComboboxLabel/SelectLabel text-xs (12px). */\n font-size: var(--pk-select-group-label-font-size, 12px);\n font-weight: 400;\n line-height: 1.3;\n /* Light-DOM ancestors (e.g. Formie empty dropzone text-center) must not center labels. */\n text-align: left;\n user-select: none;\n pointer-events: none;\n }\n\n :host([hidden]),\n :host([data-pk-filter-empty]) {\n display: none !important;\n }\n }\n`;\n","import { html } from 'lit';\nimport { customElement, property } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { uniqueId } from '../../a11y/focus.js';\nimport { pkOptionGroupStyles } from './pk-option-group.styles.js';\n\n/**\n * Visual option group for `pk-select` — listbox grouping pattern.\n *\n * @slot - `pk-option` items in this group\n *\n * @csspart label - Group label\n */\n@customElement('pk-option-group')\nexport class PkOptionGroup extends PkElement {\n static override styles = pkOptionGroupStyles;\n\n /** Visible group heading above the options. */\n @property({ reflect: true })\n label = '';\n\n /** Hides the group and its options. */\n @property({ type: Boolean, reflect: true })\n hidden = false;\n\n private readonly labelId = uniqueId('pk-option-group-label');\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'group');\n this.setAttribute('aria-labelledby', this.labelId);\n }\n\n override render() {\n return html`\n <div part=\"label\" class=\"label\" id=${this.labelId}>${this.label}</div>\n <div role=\"presentation\">\n <slot></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-option-group': PkOptionGroup;\n }\n}\n"],"mappings":";;;;AAEA,IAAa,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACa/B,IAAA,gBAAA,MAAM,sBAAsB,UAAU;;;eAKjC;gBAIC;iBAEkB,SAAS,wBAAwB;;;gBAVnC;;CAYzB,oBAAmC;AAC/B,QAAM,mBAAmB;AACzB,OAAK,aAAa,QAAQ,QAAQ;AAClC,OAAK,aAAa,mBAAmB,KAAK,QAAQ;;CAGtD,SAAkB;AACd,SAAO,IAAI;iDAC8B,KAAK,QAAQ,GAAG,KAAK,MAAM;;;;;;;YAjBvE,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,cAAA,WAAA,SAAA,KAAA,EAAA;YAI3B,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,cAAA,WAAA,UAAA,KAAA,EAAA;4BAT9C,cAAc,kBAAkB,CAAA,EAAA,cAAA"}
@@ -1,12 +1,12 @@
1
1
  import { a as query, i as property, n as PkElement, o as state, s as customElement, t as __decorate } from "./decorate-R0X811qp.js";
2
- import { r as buttonGroupCornerRoleStyles } from "./button-group-item.styles-DYmBR28a.js";
3
- import { i as uniqueId } from "./focus-aa5dlv8k.js";
4
- import { i as unregisterDismissible, n as isTopDismissible, r as registerDismissible } from "./dismissible-stack-XQUMfKO3.js";
5
- import { i as PkShowEvent, n as PkAfterShowEvent, r as PkHideEvent, t as PkAfterHideEvent } from "./overlay-lifecycle-D0pkTQyI.js";
6
- import { r as resolveElementById } from "./pk-popup-B65tZMQH.js";
7
- import { i as waitForPopupReposition, r as syncPopupPlacementAnimation } from "./popup-placement-animation-WlEXnS85.js";
8
- import { n as isPointerInsideOverlay } from "./popup-pointer-CuLjk1th.js";
9
- import { t as popupContentAnimationStyles } from "./popup-content-animation.styles-BnNiguJo.js";
2
+ import { r as buttonGroupCornerRoleStyles } from "./button-group-item.styles-G05d0DNI.js";
3
+ import { i as uniqueId } from "./focus-C6pY4Ym4.js";
4
+ import { i as unregisterDismissible, n as isTopDismissible, r as registerDismissible } from "./dismissible-stack-B3BgzdQb.js";
5
+ import { i as PkShowEvent, n as PkAfterShowEvent, r as PkHideEvent, t as PkAfterHideEvent } from "./overlay-lifecycle-CAoT0LE8.js";
6
+ import { r as resolveElementById } from "./pk-popup-0EIt9X_W.js";
7
+ import { i as waitForPopupReposition, r as syncPopupPlacementAnimation } from "./popup-placement-animation-GvFXER7D.js";
8
+ import { n as isPointerInsideOverlay } from "./popup-pointer-BTS3Y6LE.js";
9
+ import { t as popupContentAnimationStyles } from "./popup-content-animation.styles-EUnGV75J.js";
10
10
  import { css, html, nothing } from "lit";
11
11
  import { classMap } from "lit/directives/class-map.js";
12
12
  //#region src/components/popover/pk-popover.styles.ts
@@ -373,4 +373,4 @@ PkPopover = __decorate([customElement("pk-popover")], PkPopover);
373
373
  //#endregion
374
374
  export { PkPopover as t };
375
375
 
376
- //# sourceMappingURL=pk-popover-D3jkHfwB.js.map
376
+ //# sourceMappingURL=pk-popover-209LdoPr.js.map