@verbb/plugin-kit-web 2.0.23 → 2.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/dist/chunks/{active-elements-DM_lCHaW.js → active-elements-739kISON.js} +1 -1
- package/dist/chunks/{active-elements-DM_lCHaW.js.map → active-elements-739kISON.js.map} +1 -1
- package/dist/chunks/{animate-with-class-NP-yJVt_.js → animate-with-class-CjTZI0NU.js} +1 -1
- package/dist/chunks/{animate-with-class-NP-yJVt_.js.map → animate-with-class-CjTZI0NU.js.map} +1 -1
- package/dist/chunks/{autoloader-DnSfHkrD.js → autoloader-DcwybeWc.js} +3 -3
- package/dist/chunks/{autoloader-DnSfHkrD.js.map → autoloader-DcwybeWc.js.map} +1 -1
- package/dist/chunks/{button-group-item.styles-G05d0DNI.js → button-group-item.styles-D7tuu-sr.js} +1 -1
- package/dist/chunks/{button-group-item.styles-G05d0DNI.js.map → button-group-item.styles-D7tuu-sr.js.map} +1 -1
- package/dist/chunks/{component-registry-DoevfR-u.js → component-registry-B5pnAZsb.js} +2 -1
- package/dist/chunks/{component-registry-DoevfR-u.js.map → component-registry-B5pnAZsb.js.map} +1 -1
- package/dist/chunks/{control-aria-CzouQRZD.js → control-aria-CtNg2izr.js} +1 -1
- package/dist/chunks/{control-aria-CzouQRZD.js.map → control-aria-CtNg2izr.js.map} +1 -1
- package/dist/chunks/{decorate-R0X811qp.js → decorate-Br_PE9pq.js} +3 -4
- package/dist/chunks/{decorate-R0X811qp.js.map → decorate-Br_PE9pq.js.map} +1 -1
- package/dist/chunks/decorators-BkErmuYK.js +2 -0
- package/dist/chunks/{dismissible-stack-B3BgzdQb.js → dismissible-stack-CwhtwAyo.js} +1 -1
- package/dist/chunks/{dismissible-stack-B3BgzdQb.js.map → dismissible-stack-CwhtwAyo.js.map} +1 -1
- package/dist/chunks/{field-labels-CGSfAGf-.js → field-labels-pY-gQDwQ.js} +1 -1
- package/dist/chunks/{field-labels-CGSfAGf-.js.map → field-labels-pY-gQDwQ.js.map} +1 -1
- package/dist/chunks/{focus-C6pY4Ym4.js → focus-DcVUPVqn.js} +2 -2
- package/dist/chunks/{focus-C6pY4Ym4.js.map → focus-DcVUPVqn.js.map} +1 -1
- package/dist/chunks/{form-control.styles-BHwSsx_y.js → form-control.styles-CQ93gnVf.js} +1 -1
- package/dist/chunks/{form-control.styles-BHwSsx_y.js.map → form-control.styles-CQ93gnVf.js.map} +1 -1
- package/dist/chunks/{has-slot-9zjTXvea.js → has-slot-DJv86HKx.js} +1 -1
- package/dist/chunks/{has-slot-9zjTXvea.js.map → has-slot-DJv86HKx.js.map} +1 -1
- package/dist/chunks/{icon.styles-pNyUmVtP.js → icon.styles-KWvfi7RV.js} +1 -1
- package/dist/chunks/{icon.styles-pNyUmVtP.js.map → icon.styles-KWvfi7RV.js.map} +1 -1
- package/dist/chunks/{icons-B8siZLOe.js → icons-k1pvx6yX.js} +2 -2
- package/dist/chunks/{icons-B8siZLOe.js.map → icons-k1pvx6yX.js.map} +1 -1
- package/dist/chunks/{mirror-validator-Cszpqlxk.js → mirror-validator-BkZlEv1Z.js} +1 -1
- package/dist/chunks/{mirror-validator-Cszpqlxk.js.map → mirror-validator-BkZlEv1Z.js.map} +1 -1
- package/dist/chunks/{option-filter-Cj5SvyzI.js → option-filter-BkKyBg8L.js} +2 -2
- package/dist/chunks/{option-filter-Cj5SvyzI.js.map → option-filter-BkKyBg8L.js.map} +1 -1
- package/dist/chunks/{overlay-lifecycle-CAoT0LE8.js → overlay-lifecycle-C582MGBJ.js} +1 -1
- package/dist/chunks/{overlay-lifecycle-CAoT0LE8.js.map → overlay-lifecycle-C582MGBJ.js.map} +1 -1
- package/dist/chunks/{pk-alert-Cjxl6CY_.js → pk-alert-BQAb4lJc.js} +9 -7
- package/dist/chunks/pk-alert-BQAb4lJc.js.map +1 -0
- package/dist/chunks/{pk-autocomplete-DA77kdTN.js → pk-autocomplete-DUXhs1hi.js} +20 -19
- package/dist/chunks/pk-autocomplete-DUXhs1hi.js.map +1 -0
- package/dist/chunks/{pk-button-group-DBdKK_2_.js → pk-button-group-BY12Lbk7.js} +10 -7
- package/dist/chunks/pk-button-group-BY12Lbk7.js.map +1 -0
- package/dist/chunks/{pk-button-group-separator-D0Aa0a0f.js → pk-button-group-separator-B1a8dP9A.js} +3 -2
- package/dist/chunks/pk-button-group-separator-B1a8dP9A.js.map +1 -0
- package/dist/chunks/{pk-button-group-text-BsqEM-dB.js → pk-button-group-text-CWNlZkyV.js} +3 -3
- package/dist/chunks/pk-button-group-text-CWNlZkyV.js.map +1 -0
- package/dist/chunks/{pk-button-DCtNLEPr.js → pk-button-ntSVrer_.js} +7 -6
- package/dist/chunks/pk-button-ntSVrer_.js.map +1 -0
- package/dist/chunks/{pk-calendar-hBz1MnOu.js → pk-calendar-Df0c5u79.js} +11 -10
- package/dist/chunks/pk-calendar-Df0c5u79.js.map +1 -0
- package/dist/chunks/{pk-checkbox-dvHRoVbL.js → pk-checkbox-L5uRex3b.js} +6 -5
- package/dist/chunks/pk-checkbox-L5uRex3b.js.map +1 -0
- package/dist/chunks/{pk-checkbox-select-Cqx5ZCMq.js → pk-checkbox-select-6OS0wFYO.js} +4 -3
- package/dist/chunks/pk-checkbox-select-6OS0wFYO.js.map +1 -0
- package/dist/chunks/{pk-clear-LzxwxEX7.js → pk-clear-DHxP_2cm.js} +1 -1
- package/dist/chunks/{pk-clear-LzxwxEX7.js.map → pk-clear-DHxP_2cm.js.map} +1 -1
- package/dist/chunks/{pk-code-editor-C_PqjR75.js → pk-code-editor-vZriNR67.js} +6 -5
- package/dist/chunks/pk-code-editor-vZriNR67.js.map +1 -0
- package/dist/chunks/{pk-color-input-4LDV0Z3W.js → pk-color-input-Csbm4ROT.js} +6 -5
- package/dist/chunks/pk-color-input-Csbm4ROT.js.map +1 -0
- package/dist/chunks/{pk-combobox-BeddzAsl.js → pk-combobox-BrSBrldb.js} +24 -22
- package/dist/chunks/pk-combobox-BrSBrldb.js.map +1 -0
- package/dist/chunks/{pk-connect.styles-ciqZMK3B.js → pk-connect.styles-oKhxa_m2.js} +1 -1
- package/dist/chunks/{pk-connect.styles-ciqZMK3B.js.map → pk-connect.styles-oKhxa_m2.js.map} +1 -1
- package/dist/chunks/{pk-copy-button-KegSx46o.js → pk-copy-button-5i9v_zmu.js} +7 -6
- package/dist/chunks/pk-copy-button-5i9v_zmu.js.map +1 -0
- package/dist/chunks/{pk-date-picker-D_JFep-Y.js → pk-date-picker-C-w6Mn6j.js} +20 -19
- package/dist/chunks/pk-date-picker-C-w6Mn6j.js.map +1 -0
- package/dist/chunks/{pk-dialog-CFU850OH.js → pk-dialog-C7KZGpQs.js} +9 -8
- package/dist/chunks/pk-dialog-C7KZGpQs.js.map +1 -0
- package/dist/chunks/{pk-dropdown-item-A4P4zfVF.js → pk-dropdown-item-Ck2N_suK.js} +11 -8
- package/dist/chunks/pk-dropdown-item-Ck2N_suK.js.map +1 -0
- package/dist/chunks/{pk-dropdown-label-PqDxMkCI.js → pk-dropdown-label-BdZLeizJ.js} +2 -2
- package/dist/chunks/pk-dropdown-label-BdZLeizJ.js.map +1 -0
- package/dist/chunks/{pk-dropdown-menu-C_vasBoa.js → pk-dropdown-menu-DBsO1uYR.js} +22 -18
- package/dist/chunks/pk-dropdown-menu-DBsO1uYR.js.map +1 -0
- package/dist/chunks/{pk-editable-table-B85NhFYY.js → pk-editable-table-Cd8K6vT4.js} +25 -22
- package/dist/chunks/pk-editable-table-Cd8K6vT4.js.map +1 -0
- package/dist/chunks/{pk-field-BJA2fZ6s.js → pk-field--PCE9nOd.js} +8 -7
- package/dist/chunks/pk-field--PCE9nOd.js.map +1 -0
- package/dist/chunks/{pk-form-associated-element-MqaHdIoH.js → pk-form-associated-element-Doh2K3pG.js} +3 -3
- package/dist/chunks/pk-form-associated-element-Doh2K3pG.js.map +1 -0
- package/dist/chunks/{pk-image-browser-DLAQcjFt.js → pk-image-browser-iUqdcLKs.js} +20 -20
- package/dist/chunks/pk-image-browser-iUqdcLKs.js.map +1 -0
- package/dist/chunks/{pk-input-CiUNLTSW.js → pk-input-BUbXj9We.js} +14 -13
- package/dist/chunks/pk-input-BUbXj9We.js.map +1 -0
- package/dist/chunks/{pk-input-group-k7WV0pQI.js → pk-input-group-CN79c5HT.js} +5 -4
- package/dist/chunks/pk-input-group-CN79c5HT.js.map +1 -0
- package/dist/chunks/{pk-input-group-addon-piOznzSS.js → pk-input-group-addon-DpxfuYp1.js} +3 -2
- package/dist/chunks/pk-input-group-addon-DpxfuYp1.js.map +1 -0
- package/dist/chunks/{pk-input-group-button-Di2vEJLo.js → pk-input-group-button-D5Hm4saA.js} +3 -2
- package/dist/chunks/pk-input-group-button-D5Hm4saA.js.map +1 -0
- package/dist/chunks/{pk-input-group-input-CwaaEfr1.js → pk-input-group-input-Cm1MoHgN.js} +3 -2
- package/dist/chunks/pk-input-group-input-Cm1MoHgN.js.map +1 -0
- package/dist/chunks/{pk-input-group-text-C0VAdy0J.js → pk-input-group-text-CtyJZ_Kg.js} +2 -2
- package/dist/chunks/pk-input-group-text-CtyJZ_Kg.js.map +1 -0
- package/dist/chunks/{pk-input-group-textarea-DOG1NIlE.js → pk-input-group-textarea-BxmKGjdt.js} +3 -2
- package/dist/chunks/pk-input-group-textarea-BxmKGjdt.js.map +1 -0
- package/dist/chunks/{pk-lightswitch-FH5ZxMG2.js → pk-lightswitch-CSvgiHVQ.js} +9 -8
- package/dist/chunks/pk-lightswitch-CSvgiHVQ.js.map +1 -0
- package/dist/chunks/{pk-option-Cx52kLmz.js → pk-option-B_PF4v_Z.js} +9 -7
- package/dist/chunks/pk-option-B_PF4v_Z.js.map +1 -0
- package/dist/chunks/{pk-option-group-CYo9Ukue.js → pk-option-group-D6bHfn0j.js} +4 -3
- package/dist/chunks/pk-option-group-D6bHfn0j.js.map +1 -0
- package/dist/chunks/{pk-popover-209LdoPr.js → pk-popover-BOoGfR7I.js} +11 -10
- package/dist/chunks/pk-popover-BOoGfR7I.js.map +1 -0
- package/dist/chunks/{pk-popup-0EIt9X_W.js → pk-popup-DVE93VSV.js} +32 -28
- package/dist/chunks/pk-popup-DVE93VSV.js.map +1 -0
- package/dist/chunks/{pk-radio-jgj6A0Wy.js → pk-radio-D0eqmnlH.js} +3 -2
- package/dist/chunks/pk-radio-D0eqmnlH.js.map +1 -0
- package/dist/chunks/{pk-radio-group-CruMBeeF.js → pk-radio-group-BehEZG_k.js} +8 -7
- package/dist/chunks/pk-radio-group-BehEZG_k.js.map +1 -0
- package/dist/chunks/{pk-scroll-area-BaqN798b.js → pk-scroll-area-BeaLZ6k-.js} +3 -2
- package/dist/chunks/pk-scroll-area-BeaLZ6k-.js.map +1 -0
- package/dist/chunks/{pk-select-UUH7FE4H.js → pk-select-DZNpEk5Z.js} +19 -18
- package/dist/chunks/pk-select-DZNpEk5Z.js.map +1 -0
- package/dist/chunks/{pk-separator-Bcxg_GO2.js → pk-separator-ZkRowI5Y.js} +3 -2
- package/dist/chunks/pk-separator-ZkRowI5Y.js.map +1 -0
- package/dist/chunks/{pk-spinner-CN365srE.js → pk-spinner-Bxkn4iVO.js} +3 -2
- package/dist/chunks/pk-spinner-Bxkn4iVO.js.map +1 -0
- package/dist/chunks/{pk-state-panel-DPP7t-er.js → pk-state-panel-BTo2xiug.js} +7 -6
- package/dist/chunks/pk-state-panel-BTo2xiug.js.map +1 -0
- package/dist/chunks/{pk-status-CYcadu0Q.js → pk-status-CdiRBRyh.js} +3 -2
- package/dist/chunks/pk-status-CdiRBRyh.js.map +1 -0
- package/dist/chunks/{pk-tab-BmXNyDg7.js → pk-tab-CSbI3XxX.js} +2 -2
- package/dist/chunks/pk-tab-CSbI3XxX.js.map +1 -0
- package/dist/chunks/{pk-tab-heading-GZHVmCAd.js → pk-tab-heading-BMyLTBNc.js} +2 -2
- package/dist/chunks/pk-tab-heading-BMyLTBNc.js.map +1 -0
- package/dist/chunks/{pk-tab-panel-OpM3f_cm.js → pk-tab-panel-sgdRjV8o.js} +2 -2
- package/dist/chunks/pk-tab-panel-sgdRjV8o.js.map +1 -0
- package/dist/chunks/{pk-tabs-x26NAw-V.js → pk-tabs-bBNCu_4h.js} +10 -7
- package/dist/chunks/pk-tabs-bBNCu_4h.js.map +1 -0
- package/dist/chunks/{pk-textarea-CBijEmcV.js → pk-textarea-B401dUWa.js} +11 -10
- package/dist/chunks/pk-textarea-B401dUWa.js.map +1 -0
- package/dist/chunks/{pk-time-picker-D-u5-7pf.js → pk-time-picker-DnNZVwRk.js} +6 -6
- package/dist/chunks/pk-time-picker-DnNZVwRk.js.map +1 -0
- package/dist/chunks/{pk-tiptap-content-BGxMO3T4.js → pk-tiptap-content-DmS_2EUi.js} +4 -3
- package/dist/chunks/pk-tiptap-content-DmS_2EUi.js.map +1 -0
- package/dist/chunks/{pk-tiptap-editor-BeuyzH5l.js → pk-tiptap-editor-DCgHtgoi.js} +20 -21
- package/dist/chunks/pk-tiptap-editor-DCgHtgoi.js.map +1 -0
- package/dist/chunks/{pk-tiptap-input-CQojaxDH.js → pk-tiptap-input-asrD-8W6.js} +7 -6
- package/dist/chunks/pk-tiptap-input-asrD-8W6.js.map +1 -0
- package/dist/chunks/{pk-toggle-CAtGO_Le.js → pk-toggle-Co8GsHuK.js} +4 -3
- package/dist/chunks/pk-toggle-Co8GsHuK.js.map +1 -0
- package/dist/chunks/{pk-toggle-group-CLso6OE7.js → pk-toggle-group-Ct1ljI-7.js} +7 -4
- package/dist/chunks/pk-toggle-group-Ct1ljI-7.js.map +1 -0
- package/dist/chunks/{pk-tooltip-C6yb4CXI.js → pk-tooltip-Cvv2f7T5.js} +7 -6
- package/dist/chunks/pk-tooltip-Cvv2f7T5.js.map +1 -0
- package/dist/chunks/{popup-content-animation.styles-EUnGV75J.js → popup-content-animation.styles-CJ8zGJz-.js} +1 -1
- package/dist/chunks/{popup-content-animation.styles-EUnGV75J.js.map → popup-content-animation.styles-CJ8zGJz-.js.map} +1 -1
- package/dist/chunks/{popup-placement-animation-GvFXER7D.js → popup-placement-animation-ClUYI79z.js} +1 -1
- package/dist/chunks/{popup-placement-animation-GvFXER7D.js.map → popup-placement-animation-ClUYI79z.js.map} +1 -1
- package/dist/chunks/{popup-pointer-BTS3Y6LE.js → popup-pointer-Bh_d205v.js} +1 -1
- package/dist/chunks/{popup-pointer-BTS3Y6LE.js.map → popup-pointer-Bh_d205v.js.map} +1 -1
- package/dist/chunks/{register-components-Dcdn1e3S.js → register-components-CZtpgZe3.js} +1 -1
- package/dist/chunks/{register-components-Dcdn1e3S.js.map → register-components-CZtpgZe3.js.map} +1 -1
- package/dist/chunks/{render-BKGW1a68.js → render-DQZp_Rak.js} +1 -1
- package/dist/chunks/{render-BKGW1a68.js.map → render-DQZp_Rak.js.map} +1 -1
- package/dist/chunks/{required-validator-CaRnQk1V.js → required-validator-I58oJGZ3.js} +1 -1
- package/dist/chunks/{required-validator-CaRnQk1V.js.map → required-validator-I58oJGZ3.js.map} +1 -1
- package/dist/chunks/{scroll-lock-gTFrvIPu.js → scroll-lock-DE1pElMQ.js} +2 -2
- package/dist/chunks/{scroll-lock-gTFrvIPu.js.map → scroll-lock-DE1pElMQ.js.map} +1 -1
- package/dist/chunks/{spinner-utils-Co_4X3ip.js → spinner-utils-DXwIxQ6z.js} +1 -1
- package/dist/chunks/{spinner-utils-Co_4X3ip.js.map → spinner-utils-DXwIxQ6z.js.map} +1 -1
- package/dist/chunks/{supports-popover-6lNVStLh.js → supports-popover-BCqyOPtO.js} +1 -1
- package/dist/chunks/{supports-popover-6lNVStLh.js.map → supports-popover-BCqyOPtO.js.map} +1 -1
- package/dist/chunks/{sync-listbox-separators-CPFtrpNq.js → sync-listbox-separators-saLEtPpJ.js} +2 -2
- package/dist/chunks/{sync-listbox-separators-CPFtrpNq.js.map → sync-listbox-separators-saLEtPpJ.js.map} +1 -1
- package/dist/chunks/{tiptap.styles-DjhIrSBN.js → tiptap.styles-Cwb_cj9g.js} +21 -2
- package/dist/chunks/{tiptap.styles-DjhIrSBN.js.map → tiptap.styles-Cwb_cj9g.js.map} +1 -1
- package/dist/components/alert/pk-alert.js +1 -1
- package/dist/components/alert.js +1 -1
- package/dist/components/autocomplete/pk-autocomplete.js +1 -1
- package/dist/components/autocomplete.js +1 -1
- package/dist/components/button/pk-button.js +1 -1
- package/dist/components/button-group/pk-button-group-separator.js +1 -1
- package/dist/components/button-group/pk-button-group-text.js +1 -1
- package/dist/components/button-group/pk-button-group.js +1 -1
- package/dist/components/button-group.js +3 -3
- package/dist/components/button.js +1 -1
- package/dist/components/calendar/pk-calendar.js +1 -1
- package/dist/components/calendar.js +1 -1
- package/dist/components/checkbox/pk-checkbox.js +1 -1
- package/dist/components/checkbox-select/pk-checkbox-select.js +1 -1
- package/dist/components/checkbox-select.js +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/code-editor/pk-code-editor.js +1 -1
- package/dist/components/code-editor.js +1 -1
- package/dist/components/color-input/pk-color-input.js +1 -1
- package/dist/components/color-input.js +1 -1
- package/dist/components/combobox/pk-combobox.js +1 -1
- package/dist/components/combobox.js +1 -1
- package/dist/components/connect/pk-connect-oauth.js +5 -4
- package/dist/components/connect/pk-connect-oauth.js.map +1 -1
- package/dist/components/connect/pk-connect.js +7 -6
- package/dist/components/connect/pk-connect.js.map +1 -1
- package/dist/components/copy-button/pk-copy-button.js +1 -1
- package/dist/components/copy-button.js +1 -1
- package/dist/components/date-picker/pk-date-picker.js +1 -1
- package/dist/components/date-picker.js +1 -1
- package/dist/components/dialog/pk-dialog.js +1 -1
- package/dist/components/dialog.js +1 -1
- package/dist/components/dropdown-menu/pk-dropdown-item.js +1 -1
- package/dist/components/dropdown-menu/pk-dropdown-label.js +1 -1
- package/dist/components/dropdown-menu/pk-dropdown-menu.js +1 -1
- package/dist/components/dropdown-menu/pk-dropdown-separator.js +1 -1
- package/dist/components/dropdown-menu/pk-dropdown-separator.js.map +1 -1
- package/dist/components/dropdown-menu.js +3 -3
- package/dist/components/editable-table/pk-editable-table.js +1 -1
- package/dist/components/editable-table.js +1 -1
- package/dist/components/field/pk-field.js +1 -1
- package/dist/components/field.js +1 -1
- package/dist/components/icon/pk-icon.js +2 -1
- package/dist/components/icon/pk-icon.js.map +1 -1
- package/dist/components/image-browser/pk-image-browser.js +1 -1
- package/dist/components/image-browser.js +1 -1
- package/dist/components/input/pk-input.js +1 -1
- package/dist/components/input-group/pk-input-group-addon.js +1 -1
- package/dist/components/input-group/pk-input-group-button.js +1 -1
- package/dist/components/input-group/pk-input-group-input.js +1 -1
- package/dist/components/input-group/pk-input-group-text.js +1 -1
- package/dist/components/input-group/pk-input-group-textarea.js +1 -1
- package/dist/components/input-group/pk-input-group.js +1 -1
- package/dist/components/input-group.js +6 -6
- package/dist/components/input.js +1 -1
- package/dist/components/lightswitch/pk-lightswitch.js +1 -1
- package/dist/components/lightswitch.js +1 -1
- package/dist/components/popover/pk-popover.js +1 -1
- package/dist/components/popover.js +1 -1
- package/dist/components/popup/pk-popup.js +1 -1
- package/dist/components/popup.js +1 -1
- package/dist/components/radio-group/pk-radio-group.js +1 -1
- package/dist/components/radio-group/pk-radio.js +1 -1
- package/dist/components/radio-group.js +2 -2
- package/dist/components/scroll-area/pk-scroll-area.js +1 -1
- package/dist/components/scroll-area.js +1 -1
- package/dist/components/select/pk-option-group.js +1 -1
- package/dist/components/select/pk-option.js +1 -1
- package/dist/components/select/pk-select.js +1 -1
- package/dist/components/select.js +3 -3
- package/dist/components/separator/pk-separator.js +1 -1
- package/dist/components/separator.js +1 -1
- package/dist/components/spinner/pk-spinner.js +1 -1
- package/dist/components/spinner.js +2 -2
- package/dist/components/state-panel/pk-state-panel.js +1 -1
- package/dist/components/state-panel.js +1 -1
- package/dist/components/status/pk-status.js +1 -1
- package/dist/components/status.js +1 -1
- package/dist/components/tabs/pk-tab-heading.js +1 -1
- package/dist/components/tabs/pk-tab-panel.js +1 -1
- package/dist/components/tabs/pk-tab.js +1 -1
- package/dist/components/tabs/pk-tabs.js +1 -1
- package/dist/components/tabs.js +4 -4
- package/dist/components/textarea/pk-textarea.js +1 -1
- package/dist/components/textarea.js +1 -1
- package/dist/components/time-picker/pk-time-picker.js +1 -1
- package/dist/components/time-picker.js +1 -1
- package/dist/components/tiptap/pk-tiptap-content.js +1 -1
- package/dist/components/tiptap/pk-tiptap-editor.js +1 -1
- package/dist/components/tiptap/pk-tiptap-input.js +1 -1
- package/dist/components/tiptap/tiptap.styles.d.ts.map +1 -1
- package/dist/components/tiptap-content.js +1 -1
- package/dist/components/tiptap-editor.js +1 -1
- package/dist/components/tiptap-input.js +1 -1
- package/dist/components/toggle/pk-toggle.js +1 -1
- package/dist/components/toggle-group/pk-toggle-group.js +1 -1
- package/dist/components/toggle-group.js +1 -1
- package/dist/components/toggle.js +1 -1
- package/dist/components/tooltip/pk-tooltip.js +1 -1
- package/dist/components/tooltip.js +1 -1
- package/dist/connect/register-cp-connect.js +4 -4
- package/dist/connect/register-cp-connect.js.map +1 -1
- package/dist/icons/index.js +2 -2
- package/dist/index.js +67 -67
- package/dist/plugin-kit.js +4 -4
- package/dist/plugin-kit.js.map +1 -1
- package/dist/register-components.js +1 -1
- package/dist/register.js +120 -55
- package/dist/register.js.map +1 -0
- package/dist-loader/chunks/{button-group-item.styles-CXLuiMeZ.js → button-group-item.styles-BQbvE3sC.js} +1 -1
- package/dist-loader/chunks/{codemirror-CU2NB7wh.js → codemirror-C_TTKlG1.js} +584 -436
- package/dist-loader/chunks/editor-CS16rBkM.js +110 -0
- package/dist-loader/chunks/{floating-ui-B84As3F-.js → floating-ui-BJQPB-Ip.js} +9 -11
- package/dist-loader/chunks/{lit-s6aadvWG.js → lit-B6nFKgbW.js} +52 -14
- package/dist-loader/chunks/{option-filter-DH11hDpV.js → option-filter-BkKyBg8L.js} +1 -1
- package/dist-loader/chunks/{pk-a11y-CjB4-U-R.js → pk-a11y-mGj0G5AE.js} +1 -1
- package/dist-loader/chunks/{pk-base-Om6X9ab5.js → pk-base-BGegy7-X.js} +2 -2
- package/dist-loader/chunks/{pk-button-nSZxt8_B.js → pk-button-DV9Tk5Pd.js} +5 -5
- package/dist-loader/chunks/{pk-calendar-BS7Mfme_.js → pk-calendar-C0xpIVIw.js} +9 -9
- package/dist-loader/chunks/{pk-checkbox-CYUcOnco.js → pk-checkbox-DhP0iMoP.js} +9 -6
- package/dist-loader/chunks/{pk-color-input-BjDit7z0.js → pk-color-input-B02cYzyr.js} +4 -4
- package/dist-loader/chunks/{pk-combobox-DyexEhFo.js → pk-combobox-S_tpNUHK.js} +19 -18
- package/dist-loader/chunks/{pk-connect.styles-BsPAXjgF.js → pk-connect.styles-B5qe5yQB.js} +1 -1
- package/dist-loader/chunks/{pk-copy-button-CoN83ilF.js → pk-copy-button-D6tPuhJ3.js} +6 -6
- package/dist-loader/chunks/{pk-date-picker-CO6deRCu.js → pk-date-picker-C0y4sfSf.js} +15 -15
- package/dist-loader/chunks/{pk-dialog-BWo6iDnY.js → pk-dialog-BJs5fVHS.js} +7 -7
- package/dist-loader/chunks/{pk-dropdown-item-CbujjI8U.js → pk-dropdown-item-Bs5NZDRh.js} +11 -9
- package/dist-loader/chunks/{pk-dropdown-label-9X4ctyES.js → pk-dropdown-label-Cpl9-bzB.js} +2 -2
- package/dist-loader/chunks/{pk-dropdown-menu-D1KpGuqU.js → pk-dropdown-menu-CLrfuD3i.js} +20 -17
- package/dist-loader/chunks/{pk-field-DzggayrX.js → pk-field-Pg61fxBR.js} +140 -74
- package/dist-loader/chunks/{pk-icon-DQPqxFKW.js → pk-icon-B7ywfPb6.js} +4 -4
- package/dist-loader/chunks/{pk-input-C1peOijH.js → pk-input-Cj5s8eBT.js} +10 -10
- package/dist-loader/chunks/{pk-lightswitch-Y-I3eKCt.js → pk-lightswitch-rUGB1p8q.js} +6 -6
- package/dist-loader/chunks/{pk-option-IfazQDxz.js → pk-option-B-MeLvZf.js} +8 -7
- package/dist-loader/chunks/{pk-popup-BrLT_4kD.js → pk-popup-CeyruJFh.js} +35 -29
- package/dist-loader/chunks/{pk-select-49fogRYV.js → pk-select-JUx3mxRS.js} +14 -14
- package/dist-loader/chunks/{pk-spinner-BmnrA60m.js → pk-spinner-B8iuHDQ9.js} +2 -2
- package/dist-loader/chunks/{pk-state-panel-DKf54EnJ.js → pk-state-panel-BhdZGllL.js} +7 -7
- package/dist-loader/chunks/{pk-status-Dat3_D-T.js → pk-status-D3qVwWlR.js} +2 -2
- package/dist-loader/chunks/{pk-textarea-DPb2R8gV.js → pk-textarea-KnpJMQX2.js} +7 -7
- package/dist-loader/chunks/{pk-time-picker-CJiQTVuC.js → pk-time-picker-DCqZ5z7M.js} +6 -6
- package/dist-loader/chunks/{pk-tooltip-CqwQfOPV.js → pk-tooltip-DStkplzy.js} +6 -6
- package/dist-loader/chunks/{popup-content-animation.styles-CWR2mend.js → popup-content-animation.styles-BtUVJg82.js} +1 -1
- package/dist-loader/chunks/{render-BuA2YeZN.js → render-D9G_a_c2.js} +1 -1
- package/dist-loader/chunks/{sync-listbox-separators-rbu8jrAa.js → sync-listbox-separators-saLEtPpJ.js} +1 -1
- package/dist-loader/chunks/{tiptap-BhYH5Dva.js → tiptap-DYSRDaas.js} +10392 -7521
- package/dist-loader/chunks/tiptap.styles-CZUkf2K6.js +915 -0
- package/dist-loader/components/alert/alert.js +8 -7
- package/dist-loader/components/autocomplete/autocomplete.js +15 -15
- package/dist-loader/components/button/button.js +1 -1
- package/dist-loader/components/button-group/button-group-separator.js +2 -2
- package/dist-loader/components/button-group/button-group-text.js +3 -3
- package/dist-loader/components/button-group/button-group.js +9 -7
- package/dist-loader/components/calendar/calendar.js +1 -1
- package/dist-loader/components/checkbox/checkbox.js +1 -1
- package/dist-loader/components/checkbox-select/checkbox-select.js +3 -3
- package/dist-loader/components/code-editor/code-editor.js +4 -4
- package/dist-loader/components/color-input/color-input.js +1 -1
- package/dist-loader/components/combobox/combobox.js +1 -1
- package/dist-loader/components/connect/connect-oauth.js +5 -5
- package/dist-loader/components/connect/connect.js +8 -8
- package/dist-loader/components/copy-button/copy-button.js +1 -1
- package/dist-loader/components/date-picker/date-picker.js +1 -1
- package/dist-loader/components/dialog/dialog.js +1 -1
- package/dist-loader/components/dropdown-menu/dropdown-item.js +1 -1
- package/dist-loader/components/dropdown-menu/dropdown-label.js +1 -1
- package/dist-loader/components/dropdown-menu/dropdown-menu.js +1 -1
- package/dist-loader/components/dropdown-menu/dropdown-separator.js +2 -2
- package/dist-loader/components/editable-table/editable-table.js +25 -23
- package/dist-loader/components/field/field.js +1 -1
- package/dist-loader/components/icon/icon.js +3 -3
- package/dist-loader/components/image-browser/image-browser.js +15 -16
- package/dist-loader/components/input/input.js +1 -1
- package/dist-loader/components/input-group/input-group-addon.js +2 -2
- package/dist-loader/components/input-group/input-group-button.js +2 -2
- package/dist-loader/components/input-group/input-group-input.js +2 -2
- package/dist-loader/components/input-group/input-group-text.js +2 -2
- package/dist-loader/components/input-group/input-group-textarea.js +2 -2
- package/dist-loader/components/input-group/input-group.js +3 -3
- package/dist-loader/components/lightswitch/lightswitch.js +1 -1
- package/dist-loader/components/popover/popover.js +9 -9
- package/dist-loader/components/popup/popup.js +1 -1
- package/dist-loader/components/radio-group/radio-group.js +5 -5
- package/dist-loader/components/radio-group/radio.js +2 -2
- package/dist-loader/components/scroll-area/scroll-area.js +2 -2
- package/dist-loader/components/select/option-group.js +3 -3
- package/dist-loader/components/select/option.js +1 -1
- package/dist-loader/components/select/select.js +1 -1
- package/dist-loader/components/separator/separator.js +2 -2
- package/dist-loader/components/spinner/spinner.js +1 -1
- package/dist-loader/components/state-panel/state-panel.js +1 -1
- package/dist-loader/components/status/status.js +1 -1
- package/dist-loader/components/tabs/tab-heading.js +2 -2
- package/dist-loader/components/tabs/tab-panel.js +2 -2
- package/dist-loader/components/tabs/tab.js +2 -2
- package/dist-loader/components/tabs/tabs.js +9 -7
- package/dist-loader/components/textarea/textarea.js +1 -1
- package/dist-loader/components/time-picker/time-picker.js +1 -1
- package/dist-loader/components/tiptap/tiptap-content.js +5 -4
- package/dist-loader/components/tiptap/tiptap-editor.js +594 -20
- package/dist-loader/components/tiptap/tiptap-input.js +273 -5
- package/dist-loader/components/toggle/toggle.js +3 -3
- package/dist-loader/components/toggle-group/toggle-group.js +6 -4
- package/dist-loader/components/tooltip/tooltip.js +1 -1
- package/dist-loader/plugin-kit.loader.js +2 -1
- package/package.json +9 -9
- package/dist/chunks/pk-alert-Cjxl6CY_.js.map +0 -1
- package/dist/chunks/pk-autocomplete-DA77kdTN.js.map +0 -1
- package/dist/chunks/pk-button-DCtNLEPr.js.map +0 -1
- package/dist/chunks/pk-button-group-DBdKK_2_.js.map +0 -1
- package/dist/chunks/pk-button-group-separator-D0Aa0a0f.js.map +0 -1
- package/dist/chunks/pk-button-group-text-BsqEM-dB.js.map +0 -1
- package/dist/chunks/pk-calendar-hBz1MnOu.js.map +0 -1
- package/dist/chunks/pk-checkbox-dvHRoVbL.js.map +0 -1
- package/dist/chunks/pk-checkbox-select-Cqx5ZCMq.js.map +0 -1
- package/dist/chunks/pk-code-editor-C_PqjR75.js.map +0 -1
- package/dist/chunks/pk-color-input-4LDV0Z3W.js.map +0 -1
- package/dist/chunks/pk-combobox-BeddzAsl.js.map +0 -1
- package/dist/chunks/pk-copy-button-KegSx46o.js.map +0 -1
- package/dist/chunks/pk-date-picker-D_JFep-Y.js.map +0 -1
- package/dist/chunks/pk-dialog-CFU850OH.js.map +0 -1
- package/dist/chunks/pk-dropdown-item-A4P4zfVF.js.map +0 -1
- package/dist/chunks/pk-dropdown-label-PqDxMkCI.js.map +0 -1
- package/dist/chunks/pk-dropdown-menu-C_vasBoa.js.map +0 -1
- package/dist/chunks/pk-editable-table-B85NhFYY.js.map +0 -1
- package/dist/chunks/pk-field-BJA2fZ6s.js.map +0 -1
- package/dist/chunks/pk-form-associated-element-MqaHdIoH.js.map +0 -1
- package/dist/chunks/pk-image-browser-DLAQcjFt.js.map +0 -1
- package/dist/chunks/pk-input-CiUNLTSW.js.map +0 -1
- package/dist/chunks/pk-input-group-addon-piOznzSS.js.map +0 -1
- package/dist/chunks/pk-input-group-button-Di2vEJLo.js.map +0 -1
- package/dist/chunks/pk-input-group-input-CwaaEfr1.js.map +0 -1
- package/dist/chunks/pk-input-group-k7WV0pQI.js.map +0 -1
- package/dist/chunks/pk-input-group-text-C0VAdy0J.js.map +0 -1
- package/dist/chunks/pk-input-group-textarea-DOG1NIlE.js.map +0 -1
- package/dist/chunks/pk-lightswitch-FH5ZxMG2.js.map +0 -1
- package/dist/chunks/pk-option-Cx52kLmz.js.map +0 -1
- package/dist/chunks/pk-option-group-CYo9Ukue.js.map +0 -1
- package/dist/chunks/pk-popover-209LdoPr.js.map +0 -1
- package/dist/chunks/pk-popup-0EIt9X_W.js.map +0 -1
- package/dist/chunks/pk-radio-group-CruMBeeF.js.map +0 -1
- package/dist/chunks/pk-radio-jgj6A0Wy.js.map +0 -1
- package/dist/chunks/pk-scroll-area-BaqN798b.js.map +0 -1
- package/dist/chunks/pk-select-UUH7FE4H.js.map +0 -1
- package/dist/chunks/pk-separator-Bcxg_GO2.js.map +0 -1
- package/dist/chunks/pk-spinner-CN365srE.js.map +0 -1
- package/dist/chunks/pk-state-panel-DPP7t-er.js.map +0 -1
- package/dist/chunks/pk-status-CYcadu0Q.js.map +0 -1
- package/dist/chunks/pk-tab-BmXNyDg7.js.map +0 -1
- package/dist/chunks/pk-tab-heading-GZHVmCAd.js.map +0 -1
- package/dist/chunks/pk-tab-panel-OpM3f_cm.js.map +0 -1
- package/dist/chunks/pk-tabs-x26NAw-V.js.map +0 -1
- package/dist/chunks/pk-textarea-CBijEmcV.js.map +0 -1
- package/dist/chunks/pk-time-picker-D-u5-7pf.js.map +0 -1
- package/dist/chunks/pk-tiptap-content-BGxMO3T4.js.map +0 -1
- package/dist/chunks/pk-tiptap-editor-BeuyzH5l.js.map +0 -1
- package/dist/chunks/pk-tiptap-input-CQojaxDH.js.map +0 -1
- package/dist/chunks/pk-toggle-CAtGO_Le.js.map +0 -1
- package/dist/chunks/pk-toggle-group-CLso6OE7.js.map +0 -1
- package/dist/chunks/pk-tooltip-C6yb4CXI.js.map +0 -1
- package/dist/chunks/register-BDO_LUHK.js +0 -154
- package/dist/chunks/register-BDO_LUHK.js.map +0 -1
- package/dist-loader/chunks/rolldown-runtime-CzwdidQP.js +0 -13
- package/dist-loader/chunks/supports-popover-COjbi2RP.js +0 -5
- package/dist-loader/chunks/tiptap.styles-BckAim0_.js +0 -1848
- /package/dist-loader/chunks/{animate-with-class-BpZi7v-y.js → animate-with-class-CjTZI0NU.js} +0 -0
- /package/dist-loader/chunks/{field-labels-D7ccWdRn.js → field-labels-pY-gQDwQ.js} +0 -0
- /package/dist-loader/chunks/{has-slot-BvdEcnpm.js → has-slot-DJv86HKx.js} +0 -0
- /package/dist-loader/chunks/{mirror-validator-9X0wdFnh.js → mirror-validator-BkZlEv1Z.js} +0 -0
- /package/dist-loader/chunks/{overlay-lifecycle-CSIBJZgQ.js → overlay-lifecycle-C582MGBJ.js} +0 -0
- /package/dist-loader/chunks/{pk-clear-BL8m1NyC.js → pk-clear-DHxP_2cm.js} +0 -0
- /package/dist-loader/chunks/{popup-placement-animation-BQdKabXq.js → popup-placement-animation-ClUYI79z.js} +0 -0
- /package/dist-loader/chunks/{popup-pointer-BNwlPGKA.js → popup-pointer-Bh_d205v.js} +0 -0
- /package/dist-loader/chunks/{registry-BanyScVR.js → registry-CJc164pT.js} +0 -0
- /package/dist-loader/chunks/{required-validator-DCTovZ6r.js → required-validator-I58oJGZ3.js} +0 -0
- /package/dist-loader/chunks/{svg-C6YcJMk9.js → svg-BRgqS9vA.js} +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as customElement, n as PkElement, t as __decorate } from "./decorate-Br_PE9pq.js";
|
|
2
|
+
import { n as query, r as state, t as property } from "./decorators-BkErmuYK.js";
|
|
2
3
|
import { css, html, nothing } from "lit";
|
|
3
4
|
import { classMap } from "lit/directives/class-map.js";
|
|
4
5
|
//#region src/components/radio-group/pk-radio.styles.ts
|
|
@@ -229,4 +230,4 @@ PkRadio = __decorate([customElement("pk-radio")], PkRadio);
|
|
|
229
230
|
//#endregion
|
|
230
231
|
export { PkRadio as t };
|
|
231
232
|
|
|
232
|
-
//# sourceMappingURL=pk-radio-
|
|
233
|
+
//# sourceMappingURL=pk-radio-D0eqmnlH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pk-radio-D0eqmnlH.js","names":["_decorate"],"sources":["../../src/components/radio-group/pk-radio.styles.ts","../../src/components/radio-group/pk-radio.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkRadioStyles = 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-base);\n line-height: var(--pk-line-height);\n }\n\n :host([disabled]) {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .item {\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n user-select: none;\n position: relative;\n margin: 0;\n }\n\n :host([disabled]) .item {\n cursor: not-allowed;\n }\n\n .item--with-label {\n gap: 0.5rem;\n }\n\n .control {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1rem;\n height: 1rem;\n border: 1px solid var(--pk-color-slate-400);\n border-radius: 9999px;\n background: var(--pk-color-white);\n transition: border-color 0.12s ease, box-shadow 0.12s ease;\n }\n\n .item:focus-visible .control,\n :host([data-focus-visible]) .control {\n border-color: var(--pk-color-sky-600);\n box-shadow: 0 0 0 1px var(--pk-color-sky-600), 0 0 4px 0 hsl(from var(--pk-color-sky-600) h s l / 0.7);\n }\n\n :host([invalid]) .control {\n border-color: var(--pk-color-rose-600);\n }\n\n :host([invalid]:focus-visible) .control,\n :host([invalid][data-focus-visible]) .control {\n box-shadow: 0 0 0 1px var(--pk-color-rose-600), 0 0 4px 0 hsl(from var(--pk-color-rose-600) h s l / 0.7);\n }\n\n :host([checked]) .control {\n background: var(--pk-color-gray-50);\n color: #1f2933;\n }\n\n .indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n color: currentcolor;\n }\n\n .indicator-dot {\n width: 0.5rem;\n height: 0.5rem;\n border-radius: 9999px;\n background: currentcolor;\n transition: opacity 0.12s ease, transform 0.12s ease;\n }\n\n :host(:not([checked])) .indicator-dot {\n opacity: 0;\n transform: scale(0);\n }\n\n .input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n opacity: 0;\n appearance: none;\n }\n\n .label {\n line-height: var(--pk-line-height);\n /* Match checkbox / form-control labels (gray-700). */\n color: var(--pk-color-gray-700);\n }\n\n .label.is-empty {\n display: none;\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query, state } from '../../decorators.js';\nimport type { PropertyValues } from 'lit';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkRadioStyles } from './pk-radio.styles.js';\n\n/**\n * Radio button — use inside `pk-radio-group`.\n *\n * @slot - Visible label text\n *\n * @csspart base - Root label element\n * @csspart input - Native radio input\n * @csspart control - Visual radio circle\n * @csspart indicator - Indicator container\n */\n@customElement('pk-radio')\nexport class PkRadio extends PkElement {\n static override styles = pkRadioStyles;\n\n @property()\n value = '';\n\n @property({ type: Boolean, reflect: true })\n checked = false;\n\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n @property({ type: Boolean, reflect: true })\n invalid = false;\n\n @property({ type: Boolean, reflect: true })\n required = false;\n\n @property({ type: Number })\n tabIndex = -1;\n\n @property({ attribute: 'aria-label' })\n ariaLabel: string | null = null;\n\n /** Set by `pk-radio-group` when the group is disabled. */\n @property({ type: Boolean, attribute: false })\n forceDisabled = false;\n\n @query('.input')\n private input!: HTMLInputElement;\n\n @state()\n private hasDefaultSlotContent = false;\n\n override updated(changed: PropertyValues): void {\n if (this.input && changed.has('checked')) {\n this.input.checked = this.checked;\n }\n\n if (this.input && changed.has('tabIndex')) {\n this.input.tabIndex = this.tabIndex;\n }\n }\n\n focusControl(options?: FocusOptions): void {\n this.input.focus(options);\n }\n\n private defaultSlotChanged(event: Event): void {\n const slot = event.target as HTMLSlotElement;\n this.hasDefaultSlotContent = slot.assignedNodes({ flatten: true }).some((node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent?.trim();\n }\n\n return node.nodeType === Node.ELEMENT_NODE;\n });\n }\n\n private handleChange(event: Event): void {\n event.stopPropagation();\n const input = event.target as HTMLInputElement;\n\n if (this.disabled || this.forceDisabled || !input.checked) {\n return;\n }\n\n this.dispatchEvent(new CustomEvent('pk-radio-select', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }));\n }\n\n override render() {\n const isDisabled = this.disabled || this.forceDisabled;\n\n return html`\n <label\n part=\"base\"\n class=${classMap({\n item: true,\n 'pk-radio-group__item': true,\n 'item--with-label': this.hasDefaultSlotContent,\n })}\n data-state=${this.checked ? 'checked' : nothing}\n ?data-disabled=${isDisabled}\n aria-disabled=${isDisabled ? 'true' : nothing}\n >\n <span part=\"control\" class=\"control pk-radio-group__control\">\n <span part=\"indicator\" class=\"indicator pk-radio-group__indicator\">\n <span class=\"indicator-dot pk-radio-group__indicator-dot\"></span>\n </span>\n </span>\n <input\n part=\"input\"\n class=\"input\"\n type=\"radio\"\n .checked=${this.checked}\n ?disabled=${isDisabled}\n ?required=${this.required}\n value=${this.value}\n tabindex=${this.tabIndex}\n aria-label=${this.ariaLabel ?? nothing}\n aria-invalid=${this.invalid ? 'true' : nothing}\n aria-checked=${this.checked ? 'true' : 'false'}\n @change=${this.handleChange}\n />\n <span\n class=${classMap({\n label: true,\n 'is-empty': !this.hasDefaultSlotContent,\n })}\n >\n <slot @slotchange=${this.defaultSlotChanged}></slot>\n </span>\n </label>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-radio': PkRadio;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
4
|
-
import { t as
|
|
5
|
-
import { t as
|
|
6
|
-
import {
|
|
1
|
+
import { i as customElement, t as __decorate } from "./decorate-Br_PE9pq.js";
|
|
2
|
+
import { n as query, r as state, t as property } from "./decorators-BkErmuYK.js";
|
|
3
|
+
import { t as HasSlotController } from "./has-slot-DJv86HKx.js";
|
|
4
|
+
import { t as PkFormAssociatedElement } from "./pk-form-associated-element-Doh2K3pG.js";
|
|
5
|
+
import { t as RequiredValidator } from "./required-validator-I58oJGZ3.js";
|
|
6
|
+
import { t as formControlStyles } from "./form-control.styles-CQ93gnVf.js";
|
|
7
|
+
import { n as readLegacyInstructions, t as hasInstructionContent } from "./field-labels-pY-gQDwQ.js";
|
|
7
8
|
import { css, html, nothing } from "lit";
|
|
8
9
|
import { classMap } from "lit/directives/class-map.js";
|
|
9
10
|
//#region src/components/radio-group/pk-radio-group.styles.ts
|
|
@@ -250,4 +251,4 @@ PkRadioGroup = __decorate([customElement("pk-radio-group")], PkRadioGroup);
|
|
|
250
251
|
//#endregion
|
|
251
252
|
export { PkRadioGroup as t };
|
|
252
253
|
|
|
253
|
-
//# sourceMappingURL=pk-radio-group-
|
|
254
|
+
//# sourceMappingURL=pk-radio-group-BehEZG_k.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pk-radio-group-BehEZG_k.js","names":["_decorate"],"sources":["../../src/components/radio-group/pk-radio-group.styles.ts","../../src/components/radio-group/pk-radio-group.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkRadioGroupStyles = css`\n @layer pk-component {\n :host {\n display: block;\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 .group {\n display: grid;\n gap: 0.375rem;\n }\n\n .group--horizontal {\n grid-auto-flow: column;\n grid-auto-columns: max-content;\n align-items: center;\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query, state } from '../../decorators.js';\nimport type { PropertyValues } from 'lit';\n\nimport { 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 { RequiredValidator } from '../../validators/index.js';\nimport type { PkRadio } from './pk-radio.js';\nimport { pkRadioGroupStyles } from './pk-radio-group.styles.js';\n\nexport type PkRadioGroupOrientation = 'horizontal' | 'vertical';\n\n/**\n * Radio group — pattern: light-DOM `pk-radio` children, shared value + validation.\n *\n * @slot label - Group label\n * @slot instructions - Instructions text\n * @slot hint - Alias for `instructions`\n * @slot - `pk-radio` items\n *\n * @csspart form-control - Form control wrapper\n * @csspart label - Label text\n * @csspart radios - Radio items container\n * @csspart instructions - Instructions text\n */\n@customElement('pk-radio-group')\nexport class PkRadioGroup extends PkFormAssociatedElement {\n static override shadowRootOptions: ShadowRootInit = {\n mode: 'open',\n delegatesFocus: true,\n };\n\n static override styles = [formControlStyles, pkRadioGroupStyles];\n\n static override get validators() {\n return [...super.validators, RequiredValidator()];\n }\n\n override assumeInteractionOn = ['change'];\n\n private readonly hasSlotController = new HasSlotController(this, 'instructions', 'hint', 'label');\n\n private _value: string | null = null;\n\n get value(): string {\n if (this.valueHasChanged) {\n return this._value ?? '';\n }\n\n return this._value ?? this.defaultValue ?? '';\n }\n\n @state()\n set value(val: string | null) {\n this._value = val == null ? null : String(val);\n this.valueHasChanged = true;\n }\n\n /** Default value — reflected as the `value` attribute. */\n @property({ attribute: 'value', reflect: true })\n defaultValue = '';\n\n @property({ reflect: true })\n orientation: PkRadioGroupOrientation = 'vertical';\n\n @property({ type: Boolean, reflect: true })\n invalid = false;\n\n @property()\n label = '';\n\n @property()\n instructions = '';\n\n @property({ attribute: 'aria-label' })\n override ariaLabel: string | null = null;\n\n @query('slot:not([name])')\n private defaultSlot!: HTMLSlotElement;\n\n @state()\n private items: PkRadio[] = [];\n\n protected override syncFormValue(): void {\n this.setFormValue(this.value || null);\n }\n\n protected override resetToDefaultValue(): void {\n this._value = null;\n this.applySelection();\n }\n\n protected override restoreFormState(state: string | File | FormData | null): void {\n if (typeof state === 'string') {\n this.value = state;\n this.applySelection();\n }\n }\n\n protected override get validationTarget(): HTMLElement | undefined {\n return this.getAllRadios().find((item) => !item.disabled) ?? this.getAllRadios()[0];\n }\n\n override connectedCallback(): void {\n this.instructions = readLegacyInstructions(this, this.instructions);\n super.connectedCallback();\n this.addEventListener('keydown', this.handleKeyDown);\n this.addEventListener('click', this.handleRadioClick);\n }\n\n override disconnectedCallback(): void {\n this.removeEventListener('keydown', this.handleKeyDown);\n this.removeEventListener('click', this.handleRadioClick);\n super.disconnectedCallback();\n }\n\n override updated(changed: PropertyValues): void {\n if (changed.has('value') || changed.has('disabled') || changed.has('invalid') || changed.has('name')) {\n this.applySelection();\n }\n\n super.updated(changed);\n }\n\n override formResetCallback(): void {\n this._value = null;\n super.formResetCallback();\n this.applySelection();\n }\n\n override focus(options?: FocusOptions): void {\n if (this.disabled) {\n return;\n }\n\n const radios = this.getEnabledItems();\n const checked = radios.find((radio) => radio.checked);\n const target = checked ?? radios[0];\n target?.focusControl(options);\n }\n\n private getAllRadios(): PkRadio[] {\n return [...this.querySelectorAll('pk-radio')];\n }\n\n private syncItems = (): void => {\n this.items = this.getAllRadios();\n this.applySelection();\n };\n\n private getEnabledItems(): PkRadio[] {\n return this.items.filter((item) => !item.disabled && !this.disabled);\n }\n\n private applySelection(): void {\n const radios = this.getAllRadios();\n this.items = radios;\n\n const enabled = this.getEnabledItems();\n const checkedRadio = enabled.find((item) => item.value === this.value);\n\n for (const item of radios) {\n const checked = item.value === this.value;\n // React sets CE booleans as properties, while hand-written HTML uses attributes.\n // Preserve item-level disabled state from either source, but do not let a prior\n // group-level disabled pass permanently mark every child disabled.\n const itemDisabled = item.hasAttribute('disabled') || (item.disabled && !item.forceDisabled);\n item.checked = checked;\n item.disabled = this.disabled || itemDisabled;\n item.invalid = this.invalid;\n item.required = this.required;\n item.forceDisabled = this.disabled;\n }\n\n if (this.disabled) {\n for (const item of radios) {\n item.tabIndex = -1;\n }\n return;\n }\n\n if (checkedRadio) {\n for (const item of enabled) {\n item.tabIndex = item.checked ? 0 : -1;\n }\n } else if (enabled.length > 0) {\n enabled.forEach((item, index) => {\n item.tabIndex = index === 0 ? 0 : -1;\n });\n }\n\n for (const item of radios.filter((radio) => radio.disabled)) {\n item.tabIndex = -1;\n }\n }\n\n private handleRadioClick = (event: Event): void => {\n const clickedRadio = (event.target as HTMLElement).closest('pk-radio') as PkRadio | null;\n\n if (!clickedRadio || clickedRadio.disabled || clickedRadio.forceDisabled || this.disabled) {\n return;\n }\n\n const oldValue = this.value;\n this.value = clickedRadio.value;\n this.applySelection();\n\n if (this.value !== oldValue) {\n this.emitValueChange();\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n if (!['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', ' ', 'Home', 'End'].includes(event.key) || this.disabled) {\n return;\n }\n\n const radios = this.getEnabledItems();\n\n if (radios.length === 0) {\n return;\n }\n\n event.preventDefault();\n\n const oldValue = this.value;\n const checkedRadio = radios.find((radio) => radio.checked) ?? radios[0]!;\n let index = radios.indexOf(checkedRadio);\n\n if (event.key === ' ') {\n // Space selects focused radio without moving\n } else if (event.key === 'Home') {\n index = 0;\n } else if (event.key === 'End') {\n index = radios.length - 1;\n } else {\n const increment = ['ArrowUp', 'ArrowLeft'].includes(event.key) ? -1 : 1;\n index += increment;\n\n if (index < 0) {\n index = radios.length - 1;\n }\n\n if (index >= radios.length) {\n index = 0;\n }\n }\n\n this.value = radios[index]!.value;\n this.applySelection();\n radios[index]!.focusControl();\n\n if (this.value !== oldValue) {\n this.emitValueChange();\n }\n };\n\n private emitValueChange(): void {\n this.dispatchEvent(new CustomEvent('pk-change', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }));\n\n this.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));\n }\n\n override render() {\n const hasLabelSlot = this.hasSlotController.test('label');\n const hasInstructions = hasInstructionContent(\n (name, flag) => this.hasSlotController.test(name, flag),\n this.instructions,\n );\n const hasLabel = Boolean(this.label) || hasLabelSlot;\n\n return html`\n <div part=\"form-control\" class=\"form-control\">\n ${hasLabel\n ? html`\n <div part=\"label\" class=\"form-control__label\" id=\"label\">\n <slot name=\"label\">${this.label}</slot>\n </div>\n `\n : nothing}\n\n ${hasInstructions\n ? html`\n <div part=\"instructions\" class=\"form-control__instructions\" id=\"instructions\">\n <slot name=\"instructions\">${this.instructions}</slot>\n <slot name=\"hint\"></slot>\n </div>\n `\n : nothing}\n\n <div\n part=\"radios\"\n class=${classMap({\n group: true,\n 'pk-radio-group': true,\n 'group--horizontal': this.orientation === 'horizontal',\n 'pk-radio-group--horizontal': this.orientation === 'horizontal',\n })}\n role=\"radiogroup\"\n aria-labelledby=${hasLabel ? 'label' : nothing}\n aria-label=${!hasLabel ? (this.ariaLabel ?? nothing) : nothing}\n aria-describedby=${hasInstructions ? 'instructions' : nothing}\n aria-invalid=${this.invalid ? 'true' : nothing}\n aria-required=${this.required ? 'true' : nothing}\n >\n <slot @slotchange=${this.syncItems}></slot>\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-radio-group': PkRadioGroup;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as customElement, n as PkElement, t as __decorate } from "./decorate-Br_PE9pq.js";
|
|
2
|
+
import { n as query, r as state, t as property } from "./decorators-BkErmuYK.js";
|
|
2
3
|
import { css, html, nothing } from "lit";
|
|
3
4
|
import { classMap } from "lit/directives/class-map.js";
|
|
4
5
|
//#region src/components/scroll-area/pk-scroll-area.styles.ts
|
|
@@ -398,4 +399,4 @@ PkScrollArea = __decorate([customElement("pk-scroll-area")], PkScrollArea);
|
|
|
398
399
|
//#endregion
|
|
399
400
|
export { PkScrollArea as t };
|
|
400
401
|
|
|
401
|
-
//# sourceMappingURL=pk-scroll-area-
|
|
402
|
+
//# sourceMappingURL=pk-scroll-area-BeaLZ6k-.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pk-scroll-area-BeaLZ6k-.js","names":["_decorate"],"sources":["../../src/components/scroll-area/pk-scroll-area.styles.ts","../../src/components/scroll-area/pk-scroll-area.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkScrollAreaStyles = css`\n @layer pk-component {\n :host {\n --pk-shadow-color: var(--pk-color-white);\n --pk-shadow-size: 2rem;\n --pk-start-shadow-opacity: 0;\n --pk-end-shadow-opacity: 0;\n\n display: block;\n position: relative;\n max-width: 100%;\n overflow: hidden;\n isolation: isolate;\n font-family: var(--pk-font-family);\n }\n\n :host([orientation='vertical']) {\n display: flex;\n flex-direction: column;\n height: 100%;\n }\n\n .root {\n position: relative;\n overflow: hidden;\n width: 100%;\n height: 100%;\n }\n\n .viewport {\n z-index: 1;\n width: 100%;\n height: 100%;\n border-radius: inherit;\n outline: none;\n scroll-behavior: smooth;\n scrollbar-width: none;\n }\n\n .viewport::-webkit-scrollbar {\n display: none;\n }\n\n .viewport:focus-visible {\n box-shadow: 0 0 0 3px color-mix(in oklab, var(--pk-color-sky-600) 50%, transparent);\n }\n\n :host([orientation='horizontal']) .viewport {\n overflow-x: auto;\n overflow-y: hidden;\n }\n\n :host([orientation='vertical']) .viewport {\n flex: 1 1 auto;\n min-height: 0;\n overflow-x: hidden;\n overflow-y: auto;\n }\n\n .content {\n min-height: 100%;\n }\n\n :host([orientation='horizontal']) .content {\n width: max-content;\n min-height: 100%;\n }\n\n .start-shadow,\n .end-shadow {\n z-index: 2;\n position: absolute;\n pointer-events: none;\n }\n\n .start-shadow {\n opacity: var(--pk-start-shadow-opacity);\n }\n\n .end-shadow {\n opacity: var(--pk-end-shadow-opacity);\n }\n\n :host([orientation='horizontal']) .start-shadow,\n :host([orientation='horizontal']) .end-shadow {\n top: 0;\n bottom: 0;\n width: var(--pk-shadow-size);\n }\n\n :host([orientation='horizontal']) .start-shadow {\n left: 0;\n background: linear-gradient(to right, var(--pk-shadow-color), transparent 100%);\n }\n\n :host([orientation='horizontal']) .end-shadow {\n right: 0;\n background: linear-gradient(to left, var(--pk-shadow-color), transparent 100%);\n }\n\n :host([orientation='vertical']) .start-shadow,\n :host([orientation='vertical']) .end-shadow {\n left: 0;\n right: 0;\n height: var(--pk-shadow-size);\n }\n\n :host([orientation='vertical']) .start-shadow {\n top: 0;\n background: linear-gradient(to bottom, var(--pk-shadow-color), transparent 100%);\n }\n\n :host([orientation='vertical']) .end-shadow {\n bottom: 0;\n background: linear-gradient(to top, var(--pk-shadow-color), transparent 100%);\n }\n\n .scrollbar {\n /* Cross-axis thickness — size variants override via --pk-scroll-thumb-size. */\n --pk-scroll-thumb-size: 8px;\n\n z-index: 3;\n position: absolute;\n touch-action: none;\n user-select: none;\n border-radius: 9999px;\n /* Track stays subtle; thumb carries the Craft gray affordance. */\n background: color-mix(in oklab, var(--pk-color-gray-200) 70%, transparent);\n opacity: 0;\n transition: opacity 0.15s ease;\n }\n\n .scrollbar.pk-scroll-area__scrollbar--size-xs {\n --pk-scroll-thumb-size: 6px;\n }\n\n .scrollbar.pk-scroll-area__scrollbar--size-sm {\n --pk-scroll-thumb-size: 7px;\n }\n\n .scrollbar.pk-scroll-area__scrollbar--size-default {\n --pk-scroll-thumb-size: 8px;\n }\n\n /* Inset from the clipped host edge so the rounded thumb is fully visible. */\n .scrollbar[data-orientation='vertical'] {\n top: 4px;\n right: 3px;\n bottom: 4px;\n width: var(--pk-scroll-thumb-size);\n height: auto;\n }\n\n .scrollbar[data-orientation='horizontal'] {\n left: 4px;\n right: 4px;\n bottom: 3px;\n width: auto;\n height: var(--pk-scroll-thumb-size);\n }\n\n .scrollbar[data-hovering],\n .scrollbar[data-scrolling] {\n opacity: 1;\n }\n\n .thumb {\n position: absolute;\n border-radius: 9999px;\n background: var(--pk-color-gray-350);\n transition: background 0.12s ease;\n }\n\n /* Min size is along the scroll axis only — never force cross-axis past the track. */\n .scrollbar[data-orientation='vertical'] .thumb {\n left: 0;\n right: 0;\n width: auto;\n min-height: 24px;\n }\n\n .scrollbar[data-orientation='horizontal'] .thumb {\n top: 0;\n bottom: 0;\n height: auto;\n min-width: 24px;\n }\n\n .thumb:hover {\n background: var(--pk-color-gray-500);\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query, state } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkScrollAreaStyles } from './pk-scroll-area.styles.js';\n\nexport type PkScrollAreaSize = 'xs' | 'sm' | 'default';\nexport type PkScrollAreaOrientation = 'horizontal' | 'vertical';\n\n/**\n * Scrollable region — scroller pattern with optional custom thumb + edge shadows.\n *\n * @slot - Scrollable content\n *\n * @event pk-scroll - Emitted when the viewport scrolls.\n *\n * @csspart base - Root container\n * @csspart content - Scrollable content wrapper\n * @csspart viewport - Scroll viewport (alias for content)\n * @csspart start-shadow - Leading edge shadow\n * @csspart end-shadow - Trailing edge shadow\n * @csspart scrollbar - Custom scrollbar track\n * @csspart thumb - Custom scrollbar thumb\n */\n@customElement('pk-scroll-area')\nexport class PkScrollArea extends PkElement {\n static override styles = pkScrollAreaStyles;\n\n @property({ reflect: true })\n orientation: PkScrollAreaOrientation = 'vertical';\n\n @property({ reflect: true })\n size: PkScrollAreaSize = 'default';\n\n @property({ attribute: 'without-shadow', type: Boolean, reflect: true })\n withoutShadow = false;\n\n @property({ attribute: 'without-scrollbar', type: Boolean, reflect: true })\n withoutScrollbar = false;\n\n /** Readonly reference to the internal scroll container. */\n @query('.viewport')\n content!: HTMLDivElement;\n\n @query('.scrollbar')\n private scrollbarElement?: HTMLDivElement;\n\n @query('.thumb')\n private thumbElement?: HTMLDivElement;\n\n @state()\n private hovering = false;\n\n @state()\n private scrolling = false;\n\n @state()\n private canScroll = false;\n\n private scrollTimeout = 0;\n private resizeObserver?: ResizeObserver;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.resizeObserver = new ResizeObserver(() => this.updateScroll());\n }\n\n override disconnectedCallback(): void {\n this.resizeObserver?.disconnect();\n window.clearTimeout(this.scrollTimeout);\n super.disconnectedCallback();\n }\n\n override firstUpdated(): void {\n this.resizeObserver?.observe(this.content);\n this.updateScroll();\n }\n\n /** Scrolls the internal viewport. */\n scrollContentTo(options?: ScrollToOptions): void {\n this.content.scrollTo(options ?? {});\n }\n\n private handleScroll(): void {\n this.scrolling = true;\n window.clearTimeout(this.scrollTimeout);\n this.scrollTimeout = window.setTimeout(() => {\n this.scrolling = false;\n }, 800);\n\n this.updateScroll();\n this.dispatchEvent(new CustomEvent('pk-scroll', { bubbles: true, composed: true }));\n }\n\n private handleSlotChange(): void {\n this.updateScroll();\n }\n\n private handlePointerEnter(): void {\n this.hovering = true;\n }\n\n private handlePointerLeave(): void {\n this.hovering = false;\n }\n\n private handleKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Home') {\n event.preventDefault();\n this.content.scrollTo({\n left: this.orientation === 'horizontal' ? 0 : undefined,\n top: this.orientation === 'vertical' ? 0 : undefined,\n });\n }\n\n if (event.key === 'End') {\n event.preventDefault();\n this.content.scrollTo({\n left: this.orientation === 'horizontal' ? this.content.scrollWidth : undefined,\n top: this.orientation === 'vertical' ? this.content.scrollHeight : undefined,\n });\n }\n }\n\n private updateScroll(): void {\n const content = this.content;\n\n if (!content) {\n return;\n }\n\n if (this.orientation === 'horizontal') {\n const clientWidth = Math.ceil(content.clientWidth);\n const scrollLeft = Math.abs(Math.ceil(content.scrollLeft));\n const scrollWidth = Math.ceil(content.scrollWidth);\n const maxScroll = scrollWidth - clientWidth;\n\n this.canScroll = maxScroll > 0;\n\n if (!this.withoutShadow) {\n const startShadowOpacity = maxScroll > 0 ? Math.min(1, scrollLeft / (maxScroll * 0.05)) : 0;\n const endShadowOpacity = maxScroll > 0 ? Math.min(1, (maxScroll - scrollLeft) / (maxScroll * 0.05)) : 0;\n this.style.setProperty('--pk-start-shadow-opacity', String(startShadowOpacity || 0));\n this.style.setProperty('--pk-end-shadow-opacity', String(endShadowOpacity || 0));\n }\n } else {\n const clientHeight = Math.ceil(content.clientHeight);\n const scrollTop = Math.abs(Math.ceil(content.scrollTop));\n const scrollHeight = Math.ceil(content.scrollHeight);\n const maxScroll = scrollHeight - clientHeight;\n\n this.canScroll = maxScroll > 0;\n\n if (!this.withoutShadow) {\n const startShadowOpacity = maxScroll > 0 ? Math.min(1, scrollTop / (maxScroll * 0.05)) : 0;\n const endShadowOpacity = maxScroll > 0 ? Math.min(1, (maxScroll - scrollTop) / (maxScroll * 0.05)) : 0;\n this.style.setProperty('--pk-start-shadow-opacity', String(startShadowOpacity || 0));\n this.style.setProperty('--pk-end-shadow-opacity', String(endShadowOpacity || 0));\n }\n }\n\n this.updateThumb();\n }\n\n private updateThumb(): void {\n if (this.withoutScrollbar || !this.thumbElement || !this.scrollbarElement) {\n return;\n }\n\n const content = this.content;\n\n if (this.orientation === 'horizontal') {\n const { scrollLeft, scrollWidth, clientWidth } = content;\n\n if (scrollWidth <= clientWidth) {\n this.scrollbarElement.style.display = 'none';\n return;\n }\n\n this.scrollbarElement.style.display = 'flex';\n const trackWidth = this.scrollbarElement.clientWidth;\n const thumbRatio = clientWidth / scrollWidth;\n const thumbWidth = Math.max(trackWidth * thumbRatio, 24);\n const maxScroll = scrollWidth - clientWidth;\n const scrollRatio = maxScroll > 0 ? scrollLeft / maxScroll : 0;\n const thumbLeft = scrollRatio * (trackWidth - thumbWidth);\n\n this.thumbElement.style.width = `${thumbWidth}px`;\n this.thumbElement.style.height = '';\n this.thumbElement.style.transform = `translateX(${thumbLeft}px)`;\n return;\n }\n\n const { scrollTop, scrollHeight, clientHeight } = content;\n\n if (scrollHeight <= clientHeight) {\n this.scrollbarElement.style.display = 'none';\n return;\n }\n\n this.scrollbarElement.style.display = 'flex';\n\n const trackHeight = this.scrollbarElement.clientHeight;\n const thumbRatio = clientHeight / scrollHeight;\n const thumbHeight = Math.max(trackHeight * thumbRatio, 24);\n const maxScroll = scrollHeight - clientHeight;\n const scrollRatio = maxScroll > 0 ? scrollTop / maxScroll : 0;\n const thumbTop = scrollRatio * (trackHeight - thumbHeight);\n\n this.thumbElement.style.height = `${thumbHeight}px`;\n this.thumbElement.style.width = '';\n this.thumbElement.style.transform = `translateY(${thumbTop}px)`;\n }\n\n override render() {\n const isVertical = this.orientation === 'vertical';\n\n return html`\n <div\n part=\"base\"\n class=\"root pk-scroll-area\"\n @pointerenter=${this.handlePointerEnter}\n @pointerleave=${this.handlePointerLeave}\n >\n ${this.withoutShadow\n ? nothing\n : html`\n <div part=\"start-shadow\" class=\"start-shadow\" aria-hidden=\"true\"></div>\n <div part=\"end-shadow\" class=\"end-shadow\" aria-hidden=\"true\"></div>\n `}\n <div\n part=\"viewport\"\n class=\"viewport pk-scroll-area__viewport\"\n tabindex=${this.canScroll ? '0' : nothing}\n @scroll=${this.handleScroll}\n @keydown=${this.handleKeyDown}\n >\n <div\n part=\"content\"\n class=\"content pk-scroll-area__content\"\n @slotchange=${this.handleSlotChange}\n >\n <slot></slot>\n </div>\n </div>\n ${this.withoutScrollbar\n ? nothing\n : html`\n <div\n part=\"scrollbar\"\n class=${classMap({\n scrollbar: true,\n 'pk-scroll-area__scrollbar': true,\n [`pk-scroll-area__scrollbar--size-${this.size}`]: true,\n })}\n data-orientation=${this.orientation}\n ?data-hovering=${this.hovering}\n ?data-scrolling=${this.scrolling}\n >\n <div part=\"thumb\" class=\"thumb pk-scroll-area__thumb\"></div>\n </div>\n `}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-scroll-area': PkScrollArea;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
import { t as icons_exports } from "./icons-
|
|
2
|
-
import {
|
|
3
|
-
import { n as
|
|
4
|
-
import {
|
|
5
|
-
import { t as
|
|
6
|
-
import { t as
|
|
7
|
-
import { t as
|
|
8
|
-
import {
|
|
9
|
-
import { i as
|
|
10
|
-
import { i as
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import "./
|
|
14
|
-
import
|
|
15
|
-
import {
|
|
16
|
-
import { n as
|
|
17
|
-
import { t as
|
|
1
|
+
import { t as icons_exports } from "./icons-k1pvx6yX.js";
|
|
2
|
+
import { i as customElement, t as __decorate } from "./decorate-Br_PE9pq.js";
|
|
3
|
+
import { n as query, r as state, t as property } from "./decorators-BkErmuYK.js";
|
|
4
|
+
import { n as renderIconHtml } from "./render-DQZp_Rak.js";
|
|
5
|
+
import { t as HasSlotController } from "./has-slot-DJv86HKx.js";
|
|
6
|
+
import { t as iconStyles } from "./icon.styles-KWvfi7RV.js";
|
|
7
|
+
import { t as PkFormAssociatedElement } from "./pk-form-associated-element-Doh2K3pG.js";
|
|
8
|
+
import { t as MirrorValidator } from "./mirror-validator-BkZlEv1Z.js";
|
|
9
|
+
import { i as uniqueId } from "./focus-DcVUPVqn.js";
|
|
10
|
+
import { i as unregisterDismissible, n as isTopDismissible, r as registerDismissible } from "./dismissible-stack-CwhtwAyo.js";
|
|
11
|
+
import { i as scrollIntoView } from "./scroll-lock-DE1pElMQ.js";
|
|
12
|
+
import { t as PkClearEvent } from "./pk-clear-DHxP_2cm.js";
|
|
13
|
+
import { i as PkShowEvent, n as PkAfterShowEvent, r as PkHideEvent, t as PkAfterHideEvent } from "./overlay-lifecycle-C582MGBJ.js";
|
|
14
|
+
import "./pk-popup-DVE93VSV.js";
|
|
15
|
+
import { i as waitForPopupReposition, r as syncPopupPlacementAnimation } from "./popup-placement-animation-ClUYI79z.js";
|
|
16
|
+
import { a as isListboxTypeToSelectKey, i as handleListboxKeyDown, n as LISTBOX_NAVIGATION_KEYS, r as createTypeToSelectHandler, t as syncListboxSeparators } from "./sync-listbox-separators-saLEtPpJ.js";
|
|
17
|
+
import { n as isPointerInsideOverlay, t as isEventInsideOverlay } from "./popup-pointer-Bh_d205v.js";
|
|
18
|
+
import { t as popupContentAnimationStyles } from "./popup-content-animation.styles-CJ8zGJz-.js";
|
|
18
19
|
import { css, html, nothing } from "lit";
|
|
19
20
|
import { unsafeSVG } from "lit/directives/unsafe-svg.js";
|
|
20
21
|
import { classMap } from "lit/directives/class-map.js";
|
|
@@ -1129,4 +1130,4 @@ PkSelect = __decorate([customElement("pk-select")], PkSelect);
|
|
|
1129
1130
|
//#endregion
|
|
1130
1131
|
export { pkSelectStyles as n, PkSelect as t };
|
|
1131
1132
|
|
|
1132
|
-
//# sourceMappingURL=pk-select-
|
|
1133
|
+
//# sourceMappingURL=pk-select-DZNpEk5Z.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pk-select-DZNpEk5Z.js","names":["chevronDown","_decorate"],"sources":["../../src/components/select/pk-select.styles.ts","../../src/components/select/pk-select.ts"],"sourcesContent":["import { css } from 'lit';\n\nimport { iconStyles } from '../../base/icon.styles.js';\nimport { popupContentAnimationStyles } from '../../styles/popup-content-animation.styles.js';\n\nexport const pkSelectStyles = [\n popupContentAnimationStyles,\n css`\n ${iconStyles}\n @layer pk-component {\n :host {\n display: inline-block;\n position: relative;\n width: fit-content;\n max-width: 100%;\n align-self: flex-start;\n flex: none;\n color: var(--pk-color-gray-700);\n font-family: var(--pk-font-family);\n font-size: var(--pk-font-size-base);\n line-height: var(--pk-line-height);\n --pk-select-trigger-border-width: 1px;\n --pk-select-item-min-height: var(--pk-input-height);\n --pk-select-item-padding-block: 6px;\n --pk-select-item-padding-inline: 10px;\n --pk-select-item-padding-inline-end: 2rem;\n --pk-select-item-font-size: var(--pk-font-size-base);\n --pk-select-item-line-height: var(--pk-input-control-line-height, 1.25rem);\n --pk-select-item-indicator-size: 0.75rem;\n --pk-select-item-indicator-inset: 0.5rem;\n /* v1 SelectLabel default: text-xs → 12px */\n --pk-select-group-label-font-size: 12px;\n --pk-select-decoration-size: 0.875rem;\n }\n\n :host([width='full']) {\n display: block;\n width: 100%;\n }\n\n :host([width='full']) .control {\n width: 100%;\n }\n\n :host([width='full']) button.control .icon {\n margin-inline-start: auto;\n }\n\n .control {\n display: inline-flex;\n align-items: center;\n gap: 0.5rem;\n /* Fill the host when consumers set min-width/width on :host. */\n width: 100%;\n max-width: 100%;\n min-width: 0;\n margin: 0;\n padding: var(--pk-select-item-padding-block) var(--pk-select-item-padding-inline);\n border: var(--pk-select-trigger-border-width) solid transparent;\n border-radius: var(--pk-radius-lg);\n --pk-select-fill: var(--pk-color-slate-250);\n --pk-select-fill-hover: var(--pk-color-slate-300);\n background: var(--pk-select-fill);\n color: var(--pk-color-gray-700);\n font: inherit;\n font-size: var(--pk-select-item-font-size);\n line-height: var(--pk-input-control-line-height, 1.25rem);\n white-space: nowrap;\n cursor: pointer;\n outline: none;\n box-sizing: border-box;\n transition: border-color 0.12s ease, box-shadow 0.12s ease, background 0.12s ease;\n }\n\n button.control {\n appearance: none;\n -webkit-appearance: none;\n text-align: left;\n background-color: var(--pk-select-fill);\n border: var(--pk-select-trigger-border-width) solid transparent;\n }\n\n :host(:not([disabled])) .control:hover:not(.is-disabled):not(:disabled),\n :host(:not([disabled])) button.control:hover:not(.is-disabled):not(:disabled) {\n background: var(--pk-select-fill-hover);\n }\n\n :host(:not([disabled])) button.control:hover:not(.is-disabled):not(:disabled) {\n background-color: var(--pk-select-fill-hover);\n }\n\n :host(:not([invalid]):not(:state(user-invalid))) button.control:focus-visible,\n :host(:not([invalid]):not(:state(user-invalid))[data-state='focus-visible']) button.control {\n border-color: var(--pk-color-sky-600);\n box-shadow: var(--pk-input-focus-shadow);\n }\n\n .control.is-disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n\n .trigger {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 auto;\n min-width: 0;\n padding: 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n cursor: inherit;\n outline: none;\n }\n\n .control > .trigger:not(.trigger--icon) {\n flex: 0 1 auto;\n justify-content: flex-start;\n }\n\n .trigger--icon {\n width: 1.25rem;\n }\n\n .trigger-start {\n display: none;\n flex: 0 0 auto;\n align-items: center;\n }\n\n .trigger-start.has-decoration {\n display: inline-flex;\n }\n\n .control-start,\n .control-end {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n line-height: 0;\n color: var(--pk-color-gray-600);\n }\n\n slot[name='start']::slotted(svg),\n slot[name='end']::slotted(svg) {\n width: var(--pk-select-decoration-size);\n height: var(--pk-select-decoration-size);\n }\n\n .value {\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n }\n\n .icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n line-height: 0;\n pointer-events: none;\n color: var(--pk-color-gray-600);\n }\n\n /* Extra space before the expand chevron (control gap stays for start icon ↔ label). */\n .control > .icon,\n .control > .trigger--icon {\n margin-inline-start: 0.25rem;\n }\n\n .icon svg {\n display: block;\n width: 0.75rem;\n height: 0.75rem;\n }\n\n .tags {\n display: flex;\n flex: 0 1 auto;\n flex-wrap: wrap;\n gap: 0.25rem;\n min-width: 0;\n }\n\n .tag {\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n max-width: 10ch;\n padding: 0.125rem 0.375rem;\n border-radius: var(--pk-radius-sm);\n background: var(--pk-color-gray-200);\n color: var(--pk-color-gray-800);\n font-size: 12px;\n line-height: 1.3;\n }\n\n .tag-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .tag-remove {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 0.875rem;\n height: 0.875rem;\n padding: 0;\n border: 0;\n border-radius: var(--pk-radius-sm);\n background: transparent;\n color: var(--pk-color-gray-600);\n cursor: pointer;\n }\n\n .tag-remove:hover {\n background: rgb(0 0 0 / 8%);\n }\n\n .clear-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.25rem;\n height: 1.25rem;\n padding: 0;\n border: 0;\n border-radius: var(--pk-radius-sm);\n background: transparent;\n color: var(--pk-color-gray-600);\n cursor: pointer;\n flex-shrink: 0;\n }\n\n .clear-button:hover {\n background: rgb(0 0 0 / 6%);\n color: var(--pk-color-gray-800);\n }\n\n .value-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 }\n\n .panel ::slotted(pk-separator) {\n margin: 4px 0;\n }\n\n .panel {\n width: max-content;\n min-width: var(--pk-select-anchor-width, 8rem);\n max-height: 16rem;\n overflow: auto;\n padding: 0;\n border: 0;\n border-radius: var(--pk-radius-md);\n background: var(--pk-color-white);\n box-shadow: var(--pk-shadow-popup);\n color: var(--pk-color-gray-700);\n outline: none;\n }\n\n .panel[hidden] {\n display: none !important;\n }\n\n :host([invalid]) .control,\n :host(:state(user-invalid)) .control {\n border-color: var(--pk-color-rose-600);\n }\n\n :host([invalid]) button.control:focus-visible,\n :host([invalid][data-state='focus-visible']) button.control,\n :host(:state(user-invalid)) button.control:focus-visible,\n :host(:state(user-invalid)[data-state='focus-visible']) button.control {\n border-color: var(--pk-color-rose-600);\n box-shadow: var(--pk-input-invalid-focus-shadow);\n }\n\n :host([size='xs']) {\n --pk-select-item-min-height: 0;\n --pk-select-item-padding-block: 4px;\n --pk-select-item-padding-inline: 8px;\n --pk-select-item-padding-inline-end: 1.75rem;\n --pk-select-item-font-size: 11px;\n --pk-select-item-line-height: 1.25;\n /* v1 SelectLabel xs: text-[11px] */\n --pk-select-group-label-font-size: 11px;\n --pk-select-decoration-size: 0.625rem;\n }\n\n :host([size='xs']) .control {\n border-radius: var(--pk-radius-sm);\n /* Match trigger line-height to the compact item token (default is 1.25rem). */\n line-height: var(--pk-select-item-line-height, 1.25);\n }\n\n :host([size='xs']) .icon svg {\n width: 0.625rem;\n height: 0.625rem;\n }\n\n /* Options live in light DOM; ::slotted pushes size tokens onto each pk-option\n * host so the open listbox matches the trigger (inheritance alone is flaky when\n * the panel is promoted to the popover top layer). */\n :host([size='xs']) ::slotted(pk-option) {\n --pk-select-item-min-height: 0;\n --pk-select-item-padding-block: 4px;\n --pk-select-item-padding-inline: 8px;\n --pk-select-item-padding-inline-end: 1.75rem;\n --pk-select-item-font-size: 11px;\n --pk-select-item-line-height: 1.25;\n --pk-select-item-indicator-size: 0.625rem;\n }\n\n :host([size='xs']) .panel {\n max-height: 12rem;\n }\n\n /* Editable-table cells only (class set by pk-editable-table) — compact chip + menu. */\n :host(.cell-pk-control) {\n --pk-select-item-min-height: 0;\n --pk-select-item-padding-block: 5px;\n --pk-select-item-padding-inline: 8px;\n --pk-select-item-padding-inline-end: 1.5rem;\n --pk-select-item-font-size: 11px;\n --pk-select-item-line-height: 1.2;\n /* Compact table chip — match xs label size. */\n --pk-select-group-label-font-size: 11px;\n --pk-select-decoration-size: 0.625rem;\n --pk-select-item-indicator-size: 0.625rem;\n }\n\n :host(.cell-pk-control) .control {\n border-radius: var(--pk-radius-sm);\n line-height: var(--pk-select-item-line-height, 1.2);\n }\n\n :host(.cell-pk-control) ::slotted(pk-option) {\n --pk-select-item-min-height: 0;\n --pk-select-item-padding-block: 5px;\n --pk-select-item-padding-inline: 8px;\n --pk-select-item-padding-inline-end: 1.5rem;\n --pk-select-item-font-size: 11px;\n --pk-select-item-line-height: 1.2;\n --pk-select-item-indicator-size: 0.625rem;\n }\n\n :host(.cell-pk-control) .panel {\n max-height: 11rem;\n }\n\n :host([size='sm']) {\n --pk-select-item-min-height: 0;\n --pk-select-item-padding-block: 6px;\n --pk-select-item-padding-inline: 10px;\n --pk-select-item-padding-inline-end: 1.75rem;\n --pk-select-item-font-size: 12px;\n --pk-select-item-indicator-inset: 0.625rem;\n /* v1 SelectLabel sm: text-[12px] */\n --pk-select-group-label-font-size: 12px;\n --pk-select-decoration-size: 0.6875rem;\n }\n\n :host([size='sm']) .control {\n border-radius: var(--pk-radius-md);\n }\n\n :host([size='sm']) .icon svg {\n width: 0.6875rem;\n height: 0.6875rem;\n }\n\n :host([size='lg']) {\n --pk-select-item-padding-block: 8px;\n --pk-select-item-padding-inline: 12px;\n --pk-select-item-font-size: var(--pk-font-size-base);\n --pk-select-item-indicator-inset: 0.75rem;\n /* v1 SelectLabel lg: text-sm → 14px */\n --pk-select-group-label-font-size: 14px;\n --pk-select-decoration-size: 1rem;\n }\n\n :host([size='xl']) {\n --pk-select-item-padding-block: 10px;\n --pk-select-item-padding-inline: 14px;\n --pk-select-item-padding-inline-end: 2.25rem;\n --pk-select-item-font-size: var(--pk-font-size-base);\n --pk-select-item-indicator-inset: 0.875rem;\n /* v1 SelectLabel xl: text-base → 16px */\n --pk-select-group-label-font-size: 16px;\n --pk-select-decoration-size: 1.125rem;\n }\n\n :host([size='xl']) .icon svg {\n width: 0.875rem;\n height: 0.875rem;\n }\n }\n`,\n];\n","import { html, nothing } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { customElement, property, query, state } from '../../decorators.js';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport type { PropertyValues } from 'lit';\n\nimport { chevronDown, renderIconHtml } from '../../icons/index.js';\n\nimport { isTopDismissible, registerDismissible, unregisterDismissible } from '../../a11y/dismissible-stack.js';\nimport { scrollIntoView } from '../../a11y/scroll-lock.js';\nimport { uniqueId } from '../../a11y/focus.js';\nimport { PkFormAssociatedElement } from '../../base/pk-form-associated-element.js';\nimport { HasSlotController } from '../../internal/has-slot.js';\nimport { PkClearEvent } from '../../events/pk-clear.js';\nimport {\n PkAfterHideEvent,\n PkAfterShowEvent,\n PkHideEvent,\n PkShowEvent,\n type PkOverlaySource,\n} from '../../events/overlay-lifecycle.js';\nimport type { PkValidator } from '../../validators/types.js';\nimport { MirrorValidator } from '../../validators/mirror-validator.js';\n// Keep the internal element registered when production builds erase type-only imports.\nimport '../popup/pk-popup.js';\nimport type { PkPopup, PkPopupPlacement } from '../popup/pk-popup.js';\nimport {\n createTypeToSelectHandler,\n handleListboxKeyDown,\n isListboxTypeToSelectKey,\n LISTBOX_NAVIGATION_KEYS,\n} from '../../utils/listbox-keyboard.js';\nimport {\n syncPopupPlacementAnimation,\n waitForPopupReposition,\n} from '../../utils/popup-placement-animation.js';\nimport { isEventInsideOverlay, isPointerInsideOverlay } from '../../utils/popup-pointer.js';\nimport { syncListboxSeparators } from '../../internal/sync-listbox-separators.js';\nimport type { PkOption } from './pk-option.js';\nimport type { PkOptionGroup } from './pk-option-group.js';\nimport { pkSelectStyles } from './pk-select.styles.js';\n\nexport type PkSelectSize = 'xs' | 'sm' | 'default' | 'lg' | 'xl';\n\nconst CHEVRON_ICON = renderIconHtml(chevronDown);\n\n/**\n * Select — slotted `pk-option` children, form-associated, clearable, multiselect tags.\n *\n * @slot start - Presentational decoration before the trigger label (e.g. icons)\n * @slot end - Presentational decoration before the expand chevron\n * @slot - `pk-option` and `pk-option-group` items\n *\n * @csspart control - Trigger control wrapper\n * @csspart start - Host start decoration container\n * @csspart end - Host end decoration container\n * @csspart trigger-start - Mirrored start decoration from the selected option\n * @csspart trigger - Select trigger button\n * @csspart panel - Listbox panel\n *\n * @cssproperty [--pk-select-fill=var(--pk-color-slate-250)] - Closed trigger background.\n * @cssproperty [--pk-select-fill-hover=var(--pk-color-slate-300)] - Closed trigger hover background.\n * @cssproperty [--pk-select-anchor-width] - Panel min-width; set from the trigger width while open.\n * @cssproperty [--pk-select-decoration-size=0.875rem] - Start/end decoration glyph size.\n *\n * @event pk-show - Emitted when the listbox begins to open.\n * @event pk-after-show - Emitted after the listbox opens and enter motion finishes.\n * @event {{ source: string }} pk-hide - Emitted when the listbox begins to close (cancelable).\n * @event pk-after-hide - Emitted after the listbox closes and exit motion finishes.\n * @event {{ open: boolean }} pk-open-change - Emitted when `open` changes after show/hide settles.\n * @event {{ value: string, values: string[] }} pk-change - Emitted when the selection changes.\n * @event pk-clear - Emitted when the value is cleared via the clear control.\n * @event pk-invalid - Emitted when constraint validation fails.\n * @event input - Native input event when the selection changes.\n * @event change - Native change event when the selection changes.\n *\n * @method show - Opens the listbox.\n * @method hide - Closes the listbox.\n * @method checkValidity - Runs constraint validation without showing the browser UI.\n * @method reportValidity - Runs constraint validation and shows the browser UI when invalid.\n * @method setCustomValidity - Sets or clears a custom validation message.\n * @method resetValidity - Clears custom errors and re-syncs validity state.\n *\n * @dependency pk-popup - Positioned listbox panel host.\n */\n@customElement('pk-select')\nexport class PkSelect extends PkFormAssociatedElement {\n static override styles = pkSelectStyles;\n\n static override get validators(): PkValidator[] {\n return [\n ...super.validators,\n MirrorValidator(),\n {\n observedAttributes: ['required'],\n checkValidity: (element) => {\n const select = element as PkSelect;\n const result = {\n message: 'Please select an item in the list.',\n isValid: true,\n invalidKeys: [] as ReturnType<PkValidator['checkValidity']>['invalidKeys'],\n };\n\n if (!select.required) {\n return result;\n }\n\n const missing = select.multiple ? select.values.length === 0 : !select.value;\n\n if (!missing) {\n return result;\n }\n\n result.isValid = false;\n result.invalidKeys.push('valueMissing');\n return result;\n },\n },\n ];\n }\n\n override assumeInteractionOn = ['blur', 'input'];\n\n /** Whether the listbox is open. Prefer `show()` / `hide()` for animated transitions. */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /** Allow more than one option to be selected (tag display). */\n @property({ type: Boolean, reflect: true })\n multiple = false;\n\n /** Preferred listbox placement; may flip to stay in viewport. */\n @property({ reflect: true })\n placement: PkPopupPlacement = 'bottom-start';\n\n /** Gap between the trigger and listbox panel in px. */\n @property({ attribute: 'side-offset', type: Number })\n sideOffset = 4;\n\n /** Alias of `with-clear` — shows a clear control when the value is non-empty. */\n @property({ type: Boolean, reflect: true })\n clearable = false;\n\n /** Shows a clear control when the value is non-empty. */\n @property({ attribute: 'with-clear', type: Boolean })\n withClear = false;\n\n /** Marks the control invalid (visual + ARIA). */\n @property({ type: Boolean, reflect: true })\n invalid = false;\n\n /** Shared CP size scale for the closed trigger and list items. */\n @property({ reflect: true })\n size: PkSelectSize = 'default';\n\n /** When `full`, the trigger stretches to the host width. */\n @property({ reflect: true })\n width?: 'full';\n\n /** Prompt shown when nothing is selected. Empty by default. */\n @property()\n placeholder = '';\n\n /** Selected value (single-select). Empty string when cleared. */\n @property()\n value = '';\n\n /** Initial value before user interaction (form reset baseline). */\n @property({ attribute: 'default-value' })\n defaultValue = '';\n\n /** Selected values when `multiple` is set. Property-only (not an attribute). */\n @property({ type: Array, attribute: false })\n values: string[] = [];\n\n /** Initial multi values before user interaction. Property-only. */\n @property({ attribute: false })\n defaultValues: string[] = [];\n\n /** Accessible name for the trigger when no visible label is present. */\n @property({ attribute: 'aria-label' })\n ariaLabel: string | null = null;\n\n /**\n * Whether arrow-key focus loops from the last option back to the first (and vice versa).\n * Base UI `Select` has no equivalent; default: `false`.\n */\n @property({ attribute: 'loop-focus', type: Boolean })\n loopFocus = false;\n\n private readonly hasSlotController = new HasSlotController(this, 'start', 'end');\n\n private readonly listboxId = uniqueId('pk-select-listbox');\n private readonly triggerId = uniqueId('pk-select-trigger');\n\n @query('.trigger-start')\n private triggerStartElement?: HTMLSpanElement;\n\n @query('pk-popup')\n private popupElement!: PkPopup;\n\n @query('.control')\n private controlElement!: HTMLElement;\n\n @query('button.control, .control > button.trigger')\n private triggerButton?: HTMLButtonElement;\n\n @query('.value-input')\n override input!: HTMLInputElement;\n\n private get panelElement(): HTMLDivElement | null {\n return this.popupElement?.getContentElement() as HTMLDivElement | null ?? null;\n }\n\n private options: PkOption[] = [];\n\n @state()\n private highlightedIndex = 0;\n\n private dismissRegistered = false;\n private panelEventTarget: HTMLElement | null = null;\n private typeToSelect = createTypeToSelectHandler([], () => {});\n private optionsObserver?: MutationObserver;\n\n /** True while the shared popup-content exit animation is running. */\n @state()\n private closing = false;\n\n /** Gates `data-open` so enter motion starts after Floating UI places the panel. */\n @state()\n private panelAnimated = false;\n\n override connectedCallback(): void {\n this.refreshOptions();\n super.connectedCallback();\n this.addEventListener('pk-listbox-keydown', this.handleListboxKeyDownEvent as EventListener);\n this.addEventListener('keydown', this.onKeyDown);\n this.optionsObserver = new MutationObserver(() => {\n this.handleOptionsMutation({ render: true });\n });\n this.optionsObserver.observe(this, { childList: true, subtree: true });\n }\n\n override disconnectedCallback(): void {\n this.unbindPanelEvents();\n this.removeEventListener('pk-listbox-keydown', this.handleListboxKeyDownEvent as EventListener);\n this.removeEventListener('keydown', this.onKeyDown);\n this.optionsObserver?.disconnect();\n void this.closePanel('api');\n super.disconnectedCallback();\n }\n\n override updated(changed: PropertyValues): void {\n if (changed.has('value') || changed.has('values') || changed.has('multiple')) {\n this.applySelection();\n }\n\n if (changed.has('values') || changed.has('multiple')) {\n this.syncFormValue();\n }\n\n super.updated(changed);\n }\n\n private getOptionElements(): PkOption[] {\n const portaled = this.popupElement?.getContentElement()?.querySelectorAll('pk-option');\n\n if (portaled && portaled.length > 0) {\n return [...portaled];\n }\n\n return [...this.querySelectorAll('pk-option')];\n }\n\n private handleOptionsMutation = (options: { render?: boolean } = {}): void => {\n const next = this.getOptionElements();\n const changed = next.length !== this.options.length\n || next.some((option, index) => option !== this.options[index]);\n\n this.options = next;\n this.applySelection();\n this.updateTypeToSelect();\n\n if (options.render !== false && changed) {\n this.requestUpdate();\n }\n };\n\n private refreshOptions(): void {\n this.handleOptionsMutation({ render: false });\n }\n\n private syncOptions = (): void => {\n this.handleOptionsMutation({ render: true });\n };\n\n /** Portaled listbox options are outside the host tree — listen on the panel instead. */\n private bindPanelEvents(): void {\n const panel = this.panelElement;\n\n if (!panel || panel === this.panelEventTarget) {\n return;\n }\n\n this.unbindPanelEvents();\n this.panelEventTarget = panel;\n panel.addEventListener('pk-option-select', this.handleOptionSelect as EventListener);\n panel.addEventListener('pk-option-highlight', this.handleOptionHighlight as EventListener);\n panel.addEventListener('pk-listbox-keydown', this.handleListboxKeyDownEvent as EventListener);\n }\n\n private unbindPanelEvents(): void {\n if (!this.panelEventTarget) {\n return;\n }\n\n this.panelEventTarget.removeEventListener('pk-option-select', this.handleOptionSelect as EventListener);\n this.panelEventTarget.removeEventListener('pk-option-highlight', this.handleOptionHighlight as EventListener);\n this.panelEventTarget.removeEventListener('pk-listbox-keydown', this.handleListboxKeyDownEvent as EventListener);\n this.panelEventTarget = null;\n }\n\n protected override get validationTarget(): HTMLElement | undefined {\n return this.input ?? this.triggerButton ?? this.controlElement;\n }\n\n protected override getAriaMirrorTarget(): HTMLElement | null {\n return this.triggerButton ?? this.controlElement ?? null;\n }\n\n protected override syncFormValue(): void {\n if (!this.name) {\n this.setFormValue(null);\n return;\n }\n\n if (this.multiple) {\n const formData = new FormData();\n\n for (const item of this.values) {\n formData.append(this.name, item);\n }\n\n this.setFormValue(formData);\n return;\n }\n\n this.setFormValue(this.value || '');\n }\n\n protected override resetToDefaultValue(): void {\n if (this.multiple) {\n this.values = [...this.defaultValues];\n } else {\n this.value = this.defaultValue;\n }\n\n this.applySelection();\n }\n\n protected override restoreFormState(state: string | File | FormData | null): void {\n if (state instanceof FormData && this.name) {\n this.values = state.getAll(this.name).map(String);\n return;\n }\n\n if (typeof state === 'string') {\n this.value = state;\n }\n }\n\n private isOptionInHiddenGroup(option: PkOption): boolean {\n const group = option.closest('pk-option-group') as PkOptionGroup | null;\n\n return Boolean(group?.hidden);\n }\n\n private getVisibleOptions(): PkOption[] {\n return this.options.filter((option) => !this.isOptionInHiddenGroup(option));\n }\n\n private getEnabledVisibleOptions(): PkOption[] {\n return this.getVisibleOptions().filter((option) => !option.disabled);\n }\n\n private isSelected(value: string): boolean {\n if (this.multiple) {\n return this.values.includes(value);\n }\n\n return this.value === value;\n }\n\n private applySelection(): void {\n const visible = this.getVisibleOptions();\n\n for (const option of this.options) {\n option.selected = this.isSelected(option.value);\n option.hidden = !visible.includes(option);\n option.optionId = `${this.listboxId}-option-${option.value}`;\n }\n\n for (const group of this.querySelectorAll('pk-option-group')) {\n const groupOptions = [...group.querySelectorAll('pk-option')];\n group.hidden = groupOptions.length > 0 && groupOptions.every((option) => option.hidden);\n }\n\n syncListboxSeparators(this);\n\n this.syncValueInput();\n this.syncTriggerDecorations();\n\n if (this.open) {\n this.syncHighlight();\n }\n }\n\n private syncValueInput(): void {\n if (!this.input) {\n return;\n }\n\n if (this.multiple) {\n this.input.value = this.values.join(',');\n this.input.required = this.required;\n return;\n }\n\n this.input.value = this.value;\n this.input.required = this.required;\n }\n\n private getDisplayValue(): string {\n if (this.multiple) {\n const labels = this.getSelectedOptions()\n .map((option) => option.getLabel());\n\n return labels.length > 0 ? labels.join(', ') : this.placeholder;\n }\n\n const selected = this.options.find((option) => option.value === this.value);\n\n return selected?.getLabel() || this.placeholder;\n }\n\n private getSelectedOptions(): PkOption[] {\n return this.options.filter((option) => this.isSelected(option.value));\n }\n\n /**\n * Mirror the selected option's `slot=\"start\"` decorations into the trigger —\n * `pk-select` start/end decoration pattern.\n */\n private syncTriggerDecorations(): void {\n const container = this.triggerStartElement;\n\n if (!container || this.multiple) {\n return;\n }\n\n container.replaceChildren();\n container.classList.remove('has-decoration');\n\n const selected = this.options.find((option) => option.value === this.value);\n\n if (!selected) {\n return;\n }\n\n for (const element of selected.getStartElements()) {\n container.append(element.cloneNode(true));\n }\n\n container.classList.toggle('has-decoration', container.childElementCount > 0);\n }\n\n private hasSelection(): boolean {\n if (this.multiple) {\n return this.values.length > 0;\n }\n\n // Empty-string values are valid when an option declares them (e.g. \"Default\").\n return this.options.some((option) => option.value === this.value) || Boolean(this.value);\n }\n\n private syncHighlightedIndexToSelection(): void {\n if (this.multiple) {\n return;\n }\n\n const enabled = this.getEnabledVisibleOptions();\n\n if (enabled.length === 0) {\n return;\n }\n\n const selectedIndex = enabled.findIndex((option) => option.value === this.value);\n\n if (selectedIndex >= 0) {\n this.highlightedIndex = selectedIndex;\n }\n }\n\n private syncHighlight(): void {\n const enabled = this.getEnabledVisibleOptions();\n\n for (const option of this.options) {\n option.highlighted = false;\n option.focusIndex = -1;\n }\n\n if (enabled.length === 0) {\n this.highlightedIndex = 0;\n return;\n }\n\n if (this.highlightedIndex >= enabled.length) {\n this.highlightedIndex = 0;\n }\n\n const highlighted = enabled[this.highlightedIndex];\n\n if (highlighted && this.panelElement) {\n highlighted.highlighted = true;\n highlighted.focusIndex = 0;\n scrollIntoView(highlighted, this.panelElement, 'vertical', 'auto');\n }\n }\n\n private updateTypeToSelect(): void {\n this.typeToSelect = createTypeToSelectHandler(\n this.getEnabledVisibleOptions() as unknown as HTMLElement[],\n (index) => {\n this.highlightedIndex = index;\n this.syncHighlight();\n this.getEnabledVisibleOptions()[index]?.focusControl();\n },\n );\n }\n\n private togglePanel = (event?: Event): void => {\n event?.preventDefault();\n event?.stopPropagation();\n\n if (this.disabled || this.closing) {\n return;\n }\n\n if (this.open) {\n void this.closePanel('api');\n } else {\n void this.openPanel();\n }\n };\n\n private getPopupAnchor(): HTMLElement | null {\n return this.controlElement ?? null;\n }\n\n private getActiveDescendantId(): string | null {\n const enabled = this.getEnabledVisibleOptions();\n const highlighted = enabled[this.highlightedIndex];\n return highlighted?.optionId || null;\n }\n\n /** Opens the listbox. */\n async show(): Promise<void> {\n if (this.open || this.closing || this.disabled) {\n return;\n }\n\n await this.openPanel();\n }\n\n /** Closes the listbox. */\n async hide(source: PkOverlaySource = 'api'): Promise<void> {\n if (!this.open || this.closing) {\n return;\n }\n\n await this.closePanel(source);\n }\n\n private openPanel(): Promise<void> {\n const anchor = this.getPopupAnchor();\n\n if (!anchor || this.closing) {\n return Promise.resolve();\n }\n\n this.dispatchEvent(new PkShowEvent());\n this.closing = false;\n this.panelAnimated = false;\n this.open = true;\n this.popupElement.active = true;\n this.applySelection();\n this.syncHighlightedIndexToSelection();\n\n if (this.panelElement) {\n this.panelElement.hidden = false;\n // Seed side before first paint so enter keyframes pick a direction.\n syncPopupPlacementAnimation(this.panelElement, this.placement);\n }\n\n const anchorWidth = anchor.getBoundingClientRect().width;\n this.style.setProperty('--pk-select-anchor-width', `${anchorWidth}px`);\n this.registerDismissHandlers();\n this.syncHighlight();\n this.updateTypeToSelect();\n\n return this.updateComplete.then(async () => {\n const placement = await waitForPopupReposition(this.popupElement, this.placement, 300, {\n requireEvent: true,\n });\n\n if (this.panelElement) {\n syncPopupPlacementAnimation(this.panelElement, placement);\n }\n\n // Flip data-open after placement so the shared enter animation can run.\n this.panelAnimated = true;\n this.bindPanelEvents();\n this.refreshOptions();\n this.getEnabledVisibleOptions()[this.highlightedIndex]?.focusControl();\n\n this.dispatchEvent(new PkAfterShowEvent());\n this.dispatchEvent(new CustomEvent('pk-open-change', {\n detail: { open: true },\n bubbles: true,\n composed: true,\n }));\n });\n }\n\n private async closePanel(source: PkOverlaySource = 'unknown'): Promise<void> {\n if (!this.open || this.closing) {\n return;\n }\n\n const hideEvent = new PkHideEvent(source);\n\n if (!this.dispatchEvent(hideEvent)) {\n return;\n }\n\n this.typeToSelect.reset();\n this.unbindPanelEvents();\n this.unregisterDismissHandlers();\n\n this.closing = true;\n this.panelAnimated = false;\n await this.waitForExitAnimation();\n\n this.open = false;\n this.closing = false;\n this.panelAnimated = false;\n\n if (this.panelElement) {\n this.panelElement.hidden = true;\n this.panelElement.removeAttribute('data-side');\n }\n\n this.popupElement.active = false;\n\n this.dispatchEvent(new PkAfterHideEvent());\n this.dispatchEvent(new CustomEvent('pk-open-change', {\n detail: { open: false },\n bubbles: true,\n composed: true,\n }));\n\n if (this.shouldReturnFocusToTrigger(source)) {\n this.triggerButton?.focus({ preventScroll: true });\n } else {\n this.triggerButton?.blur();\n }\n }\n\n private waitForExitAnimation(): Promise<void> {\n const panel = this.panelElement;\n\n if (!panel) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n let settled = false;\n\n const finish = (): void => {\n if (settled) {\n return;\n }\n\n settled = true;\n panel.removeEventListener('animationend', onAnimationEnd);\n window.clearTimeout(fallback);\n panel.classList.remove('closing');\n resolve();\n };\n\n const onAnimationEnd = (event: AnimationEvent): void => {\n if (event.target === panel && event.animationName.startsWith('pk-popup-content-out')) {\n finish();\n }\n };\n\n panel.classList.add('closing');\n panel.addEventListener('animationend', onAnimationEnd);\n const fallback = window.setTimeout(finish, 150);\n });\n }\n\n /** Base UI skips return focus on outside press — avoids an unwanted focus ring after light dismiss. */\n private shouldReturnFocusToTrigger(source: PkOverlaySource): boolean {\n return source !== 'light-dismiss' && source !== 'pointer-dismiss';\n }\n\n private registerDismissHandlers(): void {\n registerDismissible(this);\n this.dismissRegistered = true;\n document.addEventListener('pointerdown', this.onDocumentPointerDown, true);\n document.addEventListener('keydown', this.onDocumentKeyDown, true);\n }\n\n private unregisterDismissHandlers(): void {\n if (this.dismissRegistered) {\n unregisterDismissible(this);\n this.dismissRegistered = false;\n }\n\n document.removeEventListener('pointerdown', this.onDocumentPointerDown, true);\n document.removeEventListener('keydown', this.onDocumentKeyDown, true);\n }\n\n private onDocumentPointerDown = (event: PointerEvent): void => {\n if (this.isPointerInside(event)) {\n return;\n }\n\n void this.closePanel('light-dismiss');\n };\n\n private isPointerInside(event: PointerEvent): boolean {\n return isPointerInsideOverlay(event, {\n anchor: this.getPopupAnchor(),\n panel: this.panelElement,\n });\n };\n\n private onDocumentKeyDown = (event: KeyboardEvent): void => {\n if (!this.open) {\n return;\n }\n\n if (event.key === 'Escape') {\n if (!isTopDismissible(this)) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n void this.closePanel('escape');\n return;\n }\n\n const isListboxKey = LISTBOX_NAVIGATION_KEYS.has(event.key) || isListboxTypeToSelectKey(event);\n\n if (!isListboxKey) {\n return;\n }\n\n if (!isEventInsideOverlay(event, {\n anchor: this.getPopupAnchor(),\n panel: this.panelElement,\n })) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n this.onListboxKeyDown(event);\n };\n\n private handleOptionSelect = (event: CustomEvent<{ value: string }>): void => {\n const { value } = event.detail;\n\n if (this.multiple) {\n this.values = this.values.includes(value)\n ? this.values.filter((v) => v !== value)\n : [...this.values, value];\n } else {\n this.value = value;\n void this.closePanel('api');\n }\n\n this.applySelection();\n this.emitValueChange();\n };\n\n private handleOptionHighlight = (event: CustomEvent<{ value: string }>): void => {\n if (!this.open) {\n return;\n }\n\n const enabled = this.getEnabledVisibleOptions();\n const index = enabled.findIndex((option) => option.value === event.detail.value);\n\n if (index === -1 || index === this.highlightedIndex) {\n return;\n }\n\n this.highlightedIndex = index;\n this.syncHighlight();\n };\n\n private removeTag(value: string, event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.values = this.values.filter((item) => item !== value);\n this.applySelection();\n this.emitValueChange();\n }\n\n private handleClear(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.multiple) {\n this.values = [];\n } else {\n this.value = '';\n }\n\n this.applySelection();\n this.dispatchEvent(new PkClearEvent());\n this.emitValueChange();\n this.triggerButton?.focus();\n }\n\n private emitValueChange(): void {\n this.dispatchEvent(new CustomEvent('pk-change', {\n detail: {\n value: this.multiple ? [...this.values] : this.value,\n },\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 onKeyDown = (event: KeyboardEvent): void => {\n if (!this.open) {\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n void this.openPanel();\n }\n\n return;\n }\n\n this.onListboxKeyDown(event);\n };\n\n private onListboxKeyDown(event: KeyboardEvent): void {\n const enabled = this.getEnabledVisibleOptions();\n\n this.highlightedIndex = handleListboxKeyDown(event, {\n items: enabled as unknown as HTMLElement[],\n currentIndex: this.highlightedIndex,\n multiselect: this.multiple,\n loop: this.loopFocus,\n onSelect: (index) => {\n this.highlightedIndex = index;\n this.syncHighlight();\n },\n focusItem: (index) => {\n enabled[index]?.focusControl();\n },\n onClose: () => { void this.closePanel('escape'); },\n });\n\n if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n this.typeToSelect.handleKey(event);\n }\n }\n\n private handleListboxKeyDownEvent = (event: CustomEvent<{ keyboardEvent: KeyboardEvent }>): void => {\n if (!this.open) {\n return;\n }\n\n this.onListboxKeyDown(event.detail.keyboardEvent);\n };\n\n private renderTags() {\n return this.getSelectedOptions().map((option) => html`\n <span class=\"tag\" part=\"tag\">\n <span class=\"tag-label\">${option.getLabel()}</span>\n <button\n type=\"button\"\n class=\"tag-remove\"\n part=\"tag-remove\"\n aria-label=${`Remove ${option.getLabel()}`}\n @click=${(event: Event) => this.removeTag(option.value, event)}\n >\n ×\n </button>\n </span>\n `);\n }\n\n private renderChevronIcon() {\n return html`\n <span class=\"icon\" aria-hidden=\"true\">${unsafeSVG(CHEVRON_ICON)}</span>\n `;\n }\n\n private renderHostDecorationSlot(name: 'start' | 'end') {\n if (!this.hasSlotController.test(name)) {\n return html`<slot name=${name} hidden></slot>`;\n }\n\n const className = name === 'start' ? 'control-start' : 'control-end';\n\n return html`\n <span part=${name} class=${className}>\n <slot name=${name}></slot>\n </span>\n `;\n }\n\n override render() {\n const displayValue = this.getDisplayValue();\n const isPlaceholder = !this.hasSelection();\n const showClear = (this.clearable || this.withClear) && this.hasSelection() && !this.disabled;\n\n return html`\n <input\n class=\"value-input\"\n part=\"value-input\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n .value=${this.multiple ? this.values.join(',') : this.value}\n ?required=${this.required}\n @input=${() => this.updateValidity()}\n />\n ${this.multiple\n ? html`\n <div\n part=\"control\"\n class=${classMap({\n control: true,\n 'is-disabled': this.disabled,\n })}\n >\n ${this.renderHostDecorationSlot('start')}\n ${this.hasSelection()\n ? html`\n <div class=\"tags\" part=\"tags\">${this.renderTags()}</div>\n ${showClear\n ? html`\n <button\n type=\"button\"\n class=\"clear-button\"\n part=\"clear-button\"\n aria-label=\"Clear selection\"\n @click=${this.handleClear}\n >\n ×\n </button>\n `\n : nothing}\n `\n : html`\n <button\n part=\"trigger\"\n type=\"button\"\n class=\"trigger\"\n id=${this.triggerId}\n ?disabled=${this.disabled}\n aria-label=${this.ariaLabel ?? nothing}\n aria-haspopup=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-controls=${this.listboxId}\n @click=${this.togglePanel}\n >\n <span class=\"value is-placeholder\">${this.placeholder}</span>\n </button>\n `}\n ${this.renderHostDecorationSlot('end')}\n <button\n type=\"button\"\n class=\"trigger trigger--icon\"\n part=\"trigger expand-button\"\n aria-label=\"Toggle options\"\n ?disabled=${this.disabled}\n @click=${this.togglePanel}\n >\n ${this.renderChevronIcon()}\n </button>\n </div>\n `\n : html`\n <button\n part=\"control\"\n type=\"button\"\n class=${classMap({\n control: true,\n 'is-disabled': this.disabled,\n })}\n id=${this.triggerId}\n ?disabled=${this.disabled}\n aria-label=${this.ariaLabel ?? nothing}\n aria-haspopup=\"listbox\"\n aria-expanded=${this.open ? 'true' : 'false'}\n aria-controls=${this.listboxId}\n @click=${this.togglePanel}\n >\n ${this.renderHostDecorationSlot('start')}\n <span part=\"trigger-start\" class=\"trigger-start\"></span>\n <span\n class=${classMap({\n value: true,\n 'is-placeholder': isPlaceholder,\n })}\n >${displayValue}</span>\n ${showClear\n ? html`\n <span\n class=\"clear-button\"\n part=\"clear-button\"\n role=\"button\"\n tabindex=\"-1\"\n aria-label=\"Clear selection\"\n @click=${this.handleClear}\n >\n ×\n </span>\n `\n : nothing}\n ${this.renderHostDecorationSlot('end')}\n ${this.renderChevronIcon()}\n </button>\n `}\n <pk-popup\n .anchor=${this.getPopupAnchor() ?? ''}\n .placement=${this.placement}\n .distance=${this.sideOffset}\n .sync=${'width'}\n flip\n shift\n >\n <div\n part=\"panel\"\n class=${classMap({\n panel: true,\n 'pk-popup-content': true,\n closing: this.closing,\n })}\n id=${this.listboxId}\n role=\"listbox\"\n aria-multiselectable=${this.multiple ? 'true' : 'false'}\n tabindex=\"-1\"\n ?hidden=${!this.open && !this.closing}\n data-open=${this.panelAnimated && !this.closing ? '' : nothing}\n @slotchange=${this.syncOptions}\n >\n <slot></slot>\n </div>\n </pk-popup>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-select': PkSelect;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { i as
|
|
1
|
+
import { i as customElement, n as PkElement, t as __decorate } from "./decorate-Br_PE9pq.js";
|
|
2
|
+
import { t as property } from "./decorators-BkErmuYK.js";
|
|
2
3
|
import { css, html } from "lit";
|
|
3
4
|
//#region src/components/separator/pk-separator.styles.ts
|
|
4
5
|
/**
|
|
@@ -85,4 +86,4 @@ PkSeparator = __decorate([customElement("pk-separator")], PkSeparator);
|
|
|
85
86
|
//#endregion
|
|
86
87
|
export { PkSeparator as t };
|
|
87
88
|
|
|
88
|
-
//# sourceMappingURL=pk-separator-
|
|
89
|
+
//# sourceMappingURL=pk-separator-ZkRowI5Y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pk-separator-ZkRowI5Y.js","names":["_decorate"],"sources":["../../src/components/separator/pk-separator.styles.ts","../../src/components/separator/pk-separator.ts"],"sourcesContent":["import { css } from 'lit';\n\n/**\n * Default block rhythm lives on the inner `.line`, not `:host` margin.\n *\n * Outer author styles (Tailwind preflight `* { margin: 0 }`, utilities, etc.) win\n * over shadow `:host` margins — so host margin cannot be the spacing mechanism\n * when kit sits next to a reset. Internal shadow margins are insulated.\n */\nexport const pkSeparatorStyles = css`\n @layer pk-component {\n :host {\n display: block;\n flex-shrink: 0;\n margin: 0;\n padding: 0;\n border: 0;\n box-sizing: border-box;\n background: transparent;\n }\n\n .line {\n display: block;\n margin: 0;\n padding: 0;\n border: 0;\n box-sizing: border-box;\n background: var(--pk-color-slate-200);\n }\n\n :host([orientation='horizontal']) .line {\n width: 100%;\n height: 1px;\n margin-block: 0.25rem;\n }\n\n :host([orientation='vertical']) {\n display: inline-block;\n align-self: stretch;\n width: auto;\n height: 100%;\n }\n\n :host([orientation='vertical']) .line {\n width: 1px;\n height: 100%;\n margin-inline: 0.25rem;\n }\n\n /* CE :host { display } otherwise wins over the UA [hidden] rule. */\n :host([hidden]) {\n display: none !important;\n }\n }\n`;\n","import { html } from 'lit';\nimport { customElement, property } from '../../decorators.js';\nimport type { PropertyValues } from 'lit';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkSeparatorStyles } from './pk-separator.styles.js';\n\nexport type PkSeparatorOrientation = 'horizontal' | 'vertical';\n\n/**\n * Visual divider between related content.\n *\n * Default rhythm uses an inner `.line` (not `:host` margin) so outer resets\n * like Tailwind preflight cannot zero the spacing.\n *\n * @csspart base - Painted rule (inner line)\n */\n@customElement('pk-separator')\nexport class PkSeparator extends PkElement {\n static override styles = pkSeparatorStyles;\n\n @property({ reflect: true })\n orientation: PkSeparatorOrientation = 'horizontal';\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'separator');\n this.syncAriaOrientation();\n }\n\n override updated(changed: PropertyValues): void {\n super.updated(changed);\n\n if (changed.has('orientation')) {\n this.syncAriaOrientation();\n }\n }\n\n private syncAriaOrientation(): void {\n this.setAttribute('aria-orientation', this.orientation);\n }\n\n override render() {\n // Paint + default margin live inside the shadow — insulated from outer `* { margin: 0 }`.\n return html`<div class=\"line\" part=\"base\"></div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-separator': PkSeparator;\n }\n}\n"],"mappings":";;;;;;;;;;;AASA,IAAa,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACS7B,IAAM,cAAN,MAAM,oBAAoB,UAAU;;;EAID,KAAA,cAAA;;;EAHb,KAAA,SAAA;;CAKzB,oBAAmC;EAC/B,MAAM,kBAAkB;EACxB,KAAK,aAAa,QAAQ,WAAW;EACrC,KAAK,oBAAoB;CAC7B;CAEA,QAAiB,SAA+B;EAC5C,MAAM,QAAQ,OAAO;EAErB,IAAI,QAAQ,IAAI,aAAa,GACzB,KAAK,oBAAoB;CAEjC;CAEA,sBAAoC;EAChC,KAAK,aAAa,oBAAoB,KAAK,WAAW;CAC1D;CAEA,SAAkB;EAEd,OAAO,IAAI;CACf;AACJ;AAzBKA,WAAA,CAAA,SAAS,EAAE,SAAS,KAAK,CAAC,CAAA,GAAA,YAAA,WAAA,eAAA,KAAA,CAAA;AAJ9B,cAAAA,WAAA,CAAA,cAAc,cAAc,CAAA,GAAA,WAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { i as
|
|
1
|
+
import { i as customElement, n as PkElement, r as hostDisplayInlineBlock, t as __decorate } from "./decorate-Br_PE9pq.js";
|
|
2
|
+
import { t as property } from "./decorators-BkErmuYK.js";
|
|
2
3
|
import { css, html } from "lit";
|
|
3
4
|
//#region src/components/spinner/pk-spinner.styles.ts
|
|
4
5
|
var pkSpinnerStyles = [hostDisplayInlineBlock, css`
|
|
@@ -144,4 +145,4 @@ PkSpinner = __decorate([customElement("pk-spinner")], PkSpinner);
|
|
|
144
145
|
//#endregion
|
|
145
146
|
export { PkSpinner as t };
|
|
146
147
|
|
|
147
|
-
//# sourceMappingURL=pk-spinner-
|
|
148
|
+
//# sourceMappingURL=pk-spinner-Bxkn4iVO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pk-spinner-Bxkn4iVO.js","names":["_decorate"],"sources":["../../src/components/spinner/pk-spinner.styles.ts","../../src/components/spinner/pk-spinner.ts"],"sourcesContent":["import { css } from 'lit';\n\nimport { hostDisplayInlineBlock } from '../../base/styles.js';\n\nexport const pkSpinnerStyles = [\n hostDisplayInlineBlock,\n css`\n @layer pk-component {\n :host {\n display: block;\n box-sizing: border-box;\n }\n\n :host([centered]) {\n position: absolute;\n top: 50%;\n left: 50%;\n display: block;\n width: fit-content;\n height: fit-content;\n margin: 0;\n transform: translate(-50%, -50%);\n }\n\n .spinner {\n display: block;\n box-sizing: border-box;\n margin-inline: auto;\n border-style: solid;\n border-bottom-color: transparent;\n border-left-color: transparent;\n border-radius: 50%;\n animation: pk-spinner-spin 0.5s linear infinite;\n }\n\n /* Sizes */\n :host([size='xxs']) .spinner {\n width: 0.75rem;\n height: 0.75rem;\n border-width: 1px;\n }\n\n :host([size='xs']) .spinner {\n width: 1rem;\n height: 1rem;\n border-width: 2px;\n }\n\n :host([size='sm']) .spinner,\n :host(:not([size])) .spinner {\n width: 1.5rem;\n height: 1.5rem;\n border-width: 2px;\n }\n\n :host([size='md']) .spinner {\n width: 2rem;\n height: 2rem;\n border-width: 2px;\n }\n\n :host([size='lg']) .spinner {\n width: 3rem;\n height: 3rem;\n border-width: 2px;\n }\n\n :host([size='xl']) .spinner {\n width: 4rem;\n height: 4rem;\n border-width: 2px;\n }\n\n /* Variants — matched to button loading contrast */\n :host([variant='default']:not([tone])) .spinner {\n border-top-color: var(--pk-color-red-500);\n border-right-color: var(--pk-color-red-500);\n }\n\n :host([variant='primary']:not([tone])) .spinner,\n :host([variant='secondary']:not([tone])) .spinner {\n border-top-color: var(--pk-color-white);\n border-right-color: var(--pk-color-white);\n }\n\n :host([variant='dashed']:not([tone])) .spinner,\n :host([variant='outline']:not([tone])) .spinner,\n :host([variant='transparent']:not([tone])) .spinner {\n border-top-color: var(--pk-color-gray-700);\n border-right-color: var(--pk-color-gray-700);\n }\n\n /* Standalone tone overrides */\n :host([tone='sky']) .spinner {\n border-top-color: var(--pk-color-sky-600);\n border-right-color: var(--pk-color-sky-600);\n }\n\n :host([tone='emerald']) .spinner {\n border-top-color: var(--pk-color-emerald-600);\n border-right-color: var(--pk-color-emerald-600);\n }\n\n :host([tone='violet']) .spinner {\n border-top-color: var(--pk-color-violet-600);\n border-right-color: var(--pk-color-violet-600);\n }\n\n :host([tone='amber']) .spinner {\n border-top-color: var(--pk-color-amber-500);\n border-right-color: var(--pk-color-amber-500);\n }\n\n @keyframes pk-spinner-spin {\n to {\n transform: rotate(360deg);\n }\n }\n }\n `,\n];\n","import { html } from 'lit';\nimport { customElement, property } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkSpinnerStyles } from './pk-spinner.styles.js';\n\nexport type PkSpinnerVariant =\n | 'default'\n | 'primary'\n | 'secondary'\n | 'dashed'\n | 'outline'\n | 'transparent';\n\nexport type PkSpinnerSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport type PkSpinnerTone = 'sky' | 'emerald' | 'violet' | 'amber';\n\n/**\n * Loading indicator — mirrors plugin-kit-ui / plugin-kit-react Spinner.\n *\n * @csspart base - The spinning ring element\n */\n@customElement('pk-spinner')\nexport class PkSpinner extends PkElement {\n static override styles = pkSpinnerStyles;\n\n @property({ reflect: true })\n variant: PkSpinnerVariant = 'default';\n\n @property({ reflect: true })\n size: PkSpinnerSize = 'sm';\n\n @property({ reflect: true })\n tone?: PkSpinnerTone;\n\n @property({ type: Boolean, reflect: true })\n centered = false;\n\n override render() {\n return html`\n <div part=\"base\" class=\"spinner\" aria-hidden=\"true\"></div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-spinner': PkSpinner;\n }\n}\n"],"mappings":";;;;AAIA,IAAa,kBAAkB,CAC3B,wBACA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkHP;;;AChGO,IAAM,YAAN,MAAM,kBAAkB,UAAU;;;EAIT,KAAA,UAAA;EAGN,KAAA,OAAA;EAMX,KAAA,WAAA;;;EAZc,KAAA,SAAA;;CAczB,SAAkB;EACd,OAAO,IAAI;;;CAGf;AACJ;AAjBKA,WAAA,CAAA,SAAS,EAAE,SAAS,KAAK,CAAC,CAAA,GAAA,UAAA,WAAA,WAAA,KAAA,CAAA;AAG1BA,WAAA,CAAA,SAAS,EAAE,SAAS,KAAK,CAAC,CAAA,GAAA,UAAA,WAAA,QAAA,KAAA,CAAA;AAG1BA,WAAA,CAAA,SAAS,EAAE,SAAS,KAAK,CAAC,CAAA,GAAA,UAAA,WAAA,QAAA,KAAA,CAAA;AAG1BA,WAAA,CAAA,SAAS;CAAE,MAAM;CAAS,SAAS;AAAK,CAAC,CAAA,GAAA,UAAA,WAAA,YAAA,KAAA,CAAA;AAb7C,YAAAA,WAAA,CAAA,cAAc,YAAY,CAAA,GAAA,SAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { t as icons_exports } from "./icons-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { n as
|
|
5
|
-
import {
|
|
1
|
+
import { t as icons_exports } from "./icons-k1pvx6yX.js";
|
|
2
|
+
import { i as customElement, n as PkElement, t as __decorate } from "./decorate-Br_PE9pq.js";
|
|
3
|
+
import { n as query, r as state, t as property } from "./decorators-BkErmuYK.js";
|
|
4
|
+
import { a as PkCopyEvent, i as PkCopyErrorEvent, n as copyToClipboard } from "./pk-copy-button-5i9v_zmu.js";
|
|
5
|
+
import { n as renderIconHtml } from "./render-DQZp_Rak.js";
|
|
6
|
+
import { t as HasSlotController } from "./has-slot-DJv86HKx.js";
|
|
6
7
|
import "../components/icon/pk-icon.js";
|
|
7
8
|
import { css, html, nothing } from "lit";
|
|
8
9
|
import { unsafeSVG } from "lit/directives/unsafe-svg.js";
|
|
@@ -600,4 +601,4 @@ PkStatePanel = __decorate([customElement("pk-state-panel")], PkStatePanel);
|
|
|
600
601
|
//#endregion
|
|
601
602
|
export { PkStatePanel as t };
|
|
602
603
|
|
|
603
|
-
//# sourceMappingURL=pk-state-panel-
|
|
604
|
+
//# sourceMappingURL=pk-state-panel-BTo2xiug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pk-state-panel-BTo2xiug.js","names":["emptySet","circleInfo","circleCheck","triangleExclamation","_decorate"],"sources":["../../src/components/state-panel/pk-state-panel.styles.ts","../../src/components/state-panel/pk-state-panel.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkStatePanelStyles = css`\n @layer pk-component {\n :host {\n display: flex;\n flex: 1 1 auto;\n box-sizing: border-box;\n align-items: center;\n justify-content: center;\n width: 100%;\n min-height: var(--pk-state-panel-min-height, var(--_pk-state-panel-min-height));\n padding: var(--pk-state-panel-padding, var(--_pk-state-panel-padding));\n color: var(--pk-state-panel-body-color, var(--pk-color-gray-500));\n font-family: var(--pk-font-family);\n font-size: var(--_pk-state-panel-font-size);\n line-height: var(--pk-line-height);\n text-align: center;\n --pk-state-panel-accent: var(--pk-color-slate-500);\n --pk-state-panel-icon-background: color-mix(\n in srgb,\n var(--pk-color-slate-200) 55%,\n transparent\n );\n --_pk-state-panel-font-size: var(--pk-font-size-sm);\n --_pk-state-panel-title-size: var(--pk-font-size-base);\n --_pk-state-panel-content-width: 32rem;\n --_pk-state-panel-min-height: 11rem;\n --_pk-state-panel-padding: 2rem 0.875rem;\n --_pk-state-panel-icon-shell-size: 2.125rem;\n --_pk-state-panel-icon-size: 1.0625rem;\n --_pk-state-panel-icon-radius: var(--pk-radius-lg);\n --_pk-state-panel-icon-margin-bottom: 0.625rem;\n --_pk-state-panel-body-margin-top: 0.375rem;\n --_pk-state-panel-details-margin-top: 0.75rem;\n --_pk-state-panel-details-font-size: 0.75rem;\n --_pk-state-panel-details-content-margin-top: 0.625rem;\n --_pk-state-panel-details-max-height: 14rem;\n --_pk-state-panel-details-pre-padding: 0.625rem;\n --_pk-state-panel-details-pre-radius: var(--pk-radius-md);\n --_pk-state-panel-details-pre-font-size: 0.6875rem;\n --_pk-state-panel-copy-button-size: var(--pk-btn-height-xs);\n --_pk-state-panel-copy-icon-size: var(--pk-btn-icon-size-xs);\n --_pk-state-panel-copy-inset: 0.375rem;\n --_pk-state-panel-copy-radius: var(--pk-radius-md);\n --_pk-state-panel-copy-status-size: 0.6875rem;\n --_pk-state-panel-actions-gap: 0.4375rem;\n --_pk-state-panel-actions-margin-top: 1rem;\n --_pk-state-panel-action-height: var(--pk-btn-height-sm);\n --_pk-state-panel-action-font: var(--pk-btn-font-sm);\n --_pk-state-panel-action-padding-inline: var(--pk-btn-padding-inline-sm);\n --_pk-state-panel-action-icon-size: var(--pk-btn-icon-size-sm);\n --_pk-state-panel-action-icon-gap: var(--pk-btn-icon-gap-sm);\n --_pk-state-panel-action-caret-size: var(--pk-btn-caret-size-sm);\n --_pk-state-panel-action-radius: var(--pk-btn-radius-sm);\n }\n\n :host([size='sm']) {\n --_pk-state-panel-font-size: var(--pk-btn-font-xs);\n --_pk-state-panel-title-size: var(--pk-font-size-sm);\n --_pk-state-panel-content-width: 28rem;\n --_pk-state-panel-min-height: 8rem;\n --_pk-state-panel-padding: 1.25rem 0.75rem;\n --_pk-state-panel-icon-shell-size: 1.75rem;\n --_pk-state-panel-icon-size: 0.875rem;\n --_pk-state-panel-icon-radius: var(--pk-radius-md);\n --_pk-state-panel-icon-margin-bottom: 0.5rem;\n --_pk-state-panel-body-margin-top: 0.25rem;\n --_pk-state-panel-details-margin-top: 0.625rem;\n --_pk-state-panel-details-font-size: 0.6875rem;\n --_pk-state-panel-details-content-margin-top: 0.5rem;\n --_pk-state-panel-details-max-height: 10rem;\n --_pk-state-panel-details-pre-padding: 0.5rem;\n --_pk-state-panel-details-pre-radius: var(--pk-radius-sm);\n --_pk-state-panel-details-pre-font-size: 0.6875rem;\n --_pk-state-panel-copy-button-size: var(--pk-btn-height-xxs);\n --_pk-state-panel-copy-icon-size: var(--pk-btn-icon-size-xxs);\n --_pk-state-panel-copy-inset: 0.3125rem;\n --_pk-state-panel-copy-radius: var(--pk-radius-sm);\n --_pk-state-panel-copy-status-size: 0.6875rem;\n --_pk-state-panel-actions-gap: 0.375rem;\n --_pk-state-panel-actions-margin-top: 0.75rem;\n --_pk-state-panel-action-height: var(--pk-btn-height-xs);\n --_pk-state-panel-action-font: var(--pk-btn-font-xs);\n --_pk-state-panel-action-padding-inline: var(--pk-btn-padding-inline-xs);\n --_pk-state-panel-action-icon-size: var(--pk-btn-icon-size-xs);\n --_pk-state-panel-action-icon-gap: var(--pk-btn-icon-gap-xs);\n --_pk-state-panel-action-caret-size: var(--pk-btn-caret-size-xs);\n --_pk-state-panel-action-radius: var(--pk-btn-radius-xs);\n }\n\n :host([size='lg']) {\n --_pk-state-panel-font-size: var(--pk-font-size-base);\n --_pk-state-panel-title-size: 1rem;\n --_pk-state-panel-content-width: 35rem;\n --_pk-state-panel-min-height: 14rem;\n --_pk-state-panel-padding: 2.5rem 1rem;\n --_pk-state-panel-icon-shell-size: 2.5rem;\n --_pk-state-panel-icon-size: 1.25rem;\n --_pk-state-panel-icon-radius: 0.625rem;\n --_pk-state-panel-icon-margin-bottom: 0.75rem;\n --_pk-state-panel-body-margin-top: 0.5rem;\n --_pk-state-panel-details-margin-top: 1rem;\n --_pk-state-panel-details-font-size: 0.8125rem;\n --_pk-state-panel-details-content-margin-top: 0.75rem;\n --_pk-state-panel-details-max-height: 18rem;\n --_pk-state-panel-details-pre-padding: 0.75rem;\n --_pk-state-panel-details-pre-radius: var(--pk-radius-lg);\n --_pk-state-panel-details-pre-font-size: 0.75rem;\n --_pk-state-panel-copy-button-size: var(--pk-btn-height-sm);\n --_pk-state-panel-copy-icon-size: var(--pk-btn-icon-size-sm);\n --_pk-state-panel-copy-inset: 0.5rem;\n --_pk-state-panel-copy-radius: var(--pk-radius-lg);\n --_pk-state-panel-copy-status-size: 0.75rem;\n --_pk-state-panel-actions-gap: 0.5rem;\n --_pk-state-panel-actions-margin-top: 1.25rem;\n --_pk-state-panel-action-height: 2.125rem;\n --_pk-state-panel-action-font: var(--pk-font-size-base);\n --_pk-state-panel-action-padding-inline: 9px;\n --_pk-state-panel-action-icon-size: 14px;\n --_pk-state-panel-action-icon-gap: 6px;\n --_pk-state-panel-action-caret-size: 12px;\n --_pk-state-panel-action-radius: var(--pk-radius-lg);\n }\n\n :host([variant='info']) {\n --pk-state-panel-accent: var(--pk-color-sky-600);\n --pk-state-panel-icon-background: var(--pk-color-sky-50);\n }\n\n :host([variant='success']) {\n --pk-state-panel-accent: var(--pk-color-teal-600);\n --pk-state-panel-icon-background: var(--pk-color-teal-50);\n }\n\n :host([variant='warning']) {\n --pk-state-panel-accent: var(--pk-color-amber-600);\n --pk-state-panel-icon-background: var(--pk-color-amber-50);\n }\n\n :host([variant='error']) {\n --pk-state-panel-accent: var(--pk-color-rose-600);\n --pk-state-panel-icon-background: color-mix(\n in srgb,\n var(--pk-color-rose-500) 12%,\n transparent\n );\n }\n\n .panel {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: min(\n 100%,\n var(--pk-state-panel-content-width, var(--_pk-state-panel-content-width))\n );\n min-width: 0;\n }\n\n .icon-shell {\n display: inline-flex;\n flex: 0 0 auto;\n align-items: center;\n justify-content: center;\n width: var(--pk-state-panel-icon-shell-size, var(--_pk-state-panel-icon-shell-size));\n height: var(--pk-state-panel-icon-shell-size, var(--_pk-state-panel-icon-shell-size));\n margin-bottom: var(--_pk-state-panel-icon-margin-bottom);\n border-radius: var(--pk-state-panel-icon-radius, var(--_pk-state-panel-icon-radius));\n background: var(--pk-state-panel-icon-background);\n color: var(--pk-state-panel-accent);\n }\n\n .icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--pk-state-panel-icon-size, var(--_pk-state-panel-icon-size));\n height: var(--pk-state-panel-icon-size, var(--_pk-state-panel-icon-size));\n font-size: var(--pk-state-panel-icon-size, var(--_pk-state-panel-icon-size));\n }\n\n .icon svg,\n .icon pk-icon,\n .icon ::slotted(*) {\n display: block;\n width: 100%;\n height: 100%;\n fill: currentColor;\n }\n\n .title {\n margin: 0;\n color: var(--pk-state-panel-title-color, var(--pk-color-gray-900));\n font-size: var(--pk-state-panel-title-size, var(--_pk-state-panel-title-size));\n font-weight: 600;\n line-height: 1.4;\n }\n\n .title ::slotted(*) {\n margin: 0;\n color: inherit;\n font: inherit;\n }\n\n .body {\n max-width: 100%;\n margin-top: var(--_pk-state-panel-body-margin-top);\n }\n\n .body ::slotted(*) {\n margin-block: 0;\n }\n\n .details {\n width: 100%;\n margin-top: var(--_pk-state-panel-details-margin-top);\n color: var(--pk-state-panel-accent);\n font-size: var(--_pk-state-panel-details-font-size);\n }\n\n summary {\n width: fit-content;\n margin-inline: auto;\n border-radius: var(--pk-radius-sm);\n cursor: pointer;\n }\n\n summary:focus-visible,\n .copy:focus-visible {\n outline: none;\n box-shadow: var(--pk-shadow-focus);\n }\n\n .details-content {\n position: relative;\n margin-top: var(--_pk-state-panel-details-content-margin-top);\n color: var(--pk-color-gray-800);\n text-align: start;\n }\n\n .details-scroll {\n min-width: 0;\n }\n\n .details-content ::slotted(pre) {\n box-sizing: border-box;\n max-height: var(\n --pk-state-panel-details-max-height,\n var(--_pk-state-panel-details-max-height)\n );\n margin: 0;\n padding: var(--_pk-state-panel-details-pre-padding);\n overflow: auto;\n border: 1px solid var(--pk-color-gray-200);\n border-radius: var(--_pk-state-panel-details-pre-radius);\n background: var(--pk-color-white);\n color: var(--pk-color-gray-800);\n font:\n var(--_pk-state-panel-details-pre-font-size)/1.5 ui-monospace,\n SFMono-Regular,\n Consolas,\n 'Liberation Mono',\n monospace;\n overflow-wrap: anywhere;\n user-select: text;\n white-space: pre-wrap;\n }\n\n :host([copyable]) .details-content ::slotted(pre) {\n max-height: none;\n padding-inline-end: calc(\n var(--_pk-state-panel-details-pre-padding) +\n var(--_pk-state-panel-copy-button-size) +\n var(--_pk-state-panel-copy-inset)\n );\n overflow: visible;\n border: 0;\n border-radius: 0;\n background: transparent;\n }\n\n :host([copyable]) .details-content {\n overflow: hidden;\n border: 1px solid var(--pk-color-gray-200);\n border-radius: var(--_pk-state-panel-details-pre-radius);\n background: var(--pk-color-white);\n }\n\n :host([copyable]) .details-scroll {\n position: relative;\n max-height: var(\n --pk-state-panel-details-max-height,\n var(--_pk-state-panel-details-max-height)\n );\n overflow: auto;\n }\n\n .copy-overlay {\n position: sticky;\n z-index: 1;\n top: 0;\n display: flex;\n justify-content: flex-end;\n height: 0;\n pointer-events: none;\n }\n\n .copy {\n flex: none;\n margin-block-start: var(--_pk-state-panel-copy-inset);\n margin-inline-end: var(--_pk-state-panel-copy-inset);\n pointer-events: auto;\n --pk-btn-height-default: var(--_pk-state-panel-copy-button-size);\n --pk-btn-icon-size-default: var(--_pk-state-panel-copy-icon-size);\n --pk-btn-radius-default: var(--_pk-state-panel-copy-radius);\n --pk-copy-button-background: var(--pk-color-white);\n --pk-copy-button-border-color: transparent;\n --pk-copy-button-hover-border-color: transparent;\n --pk-copy-button-color: var(--pk-color-gray-300);\n --pk-copy-button-hover-color: var(--pk-color-gray-500);\n --pk-copy-button-hover-background: color-mix(\n in srgb,\n var(--pk-color-gray-300) 6%,\n var(--pk-color-white)\n );\n }\n\n .copy-status {\n display: block;\n margin-top: 0.375rem;\n color: var(--pk-color-red-700);\n font-size: var(--_pk-state-panel-copy-status-size);\n text-align: start;\n }\n\n .copy-status:not([data-error]) {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n }\n\n .actions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n gap: var(--_pk-state-panel-actions-gap);\n margin-top: var(--_pk-state-panel-actions-margin-top);\n }\n\n .actions slot::slotted(pk-button) {\n --pk-btn-height-default: var(--_pk-state-panel-action-height);\n --pk-btn-font-default: var(--_pk-state-panel-action-font);\n --pk-btn-padding-inline-default: var(--_pk-state-panel-action-padding-inline);\n --pk-btn-icon-size-default: var(--_pk-state-panel-action-icon-size);\n --pk-btn-icon-gap-default: var(--_pk-state-panel-action-icon-gap);\n --pk-btn-caret-size-default: var(--_pk-state-panel-action-caret-size);\n --pk-btn-radius-default: var(--_pk-state-panel-action-radius);\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js';\nimport { customElement, property, query, state } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { PkCopyErrorEvent, PkCopyEvent } from '../../events/pk-copy.js';\nimport {\n circleCheck,\n circleInfo,\n emptySet,\n renderIconHtml,\n triangleExclamation,\n} from '../../icons/index.js';\nimport { HasSlotController } from '../../internal/has-slot.js';\nimport { copyToClipboard } from '../../utils/copy-to-clipboard.js';\nimport type { PkCopyButton } from '../copy-button/pk-copy-button.js';\nimport '../copy-button/pk-copy-button.js';\nimport '../icon/pk-icon.js';\nimport { pkStatePanelStyles } from './pk-state-panel.styles.js';\n\nexport type PkStatePanelVariant = 'empty' | 'info' | 'success' | 'warning' | 'error';\nexport type PkStatePanelAnnouncement = 'off' | 'polite' | 'assertive';\nexport type PkStatePanelHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;\nexport type PkStatePanelSize = 'sm' | 'default' | 'lg';\n\nconst COPY_STATUS_RESET_MS = 3000;\n\nconst defaultIcons = {\n empty: emptySet,\n info: circleInfo,\n success: circleCheck,\n warning: triangleExclamation,\n error: triangleExclamation,\n};\n\n/**\n * Centered replacement surface for empty, unavailable, completed or failed content regions.\n *\n * @slot title - Custom heading content. Takes precedence over the `heading` property.\n * @slot icon - Custom icon. The component supplies a variant icon by default.\n * @slot - State description or other primary content.\n * @slot details - Optional content inside the collapsible details region.\n * @slot actions - Optional buttons or links.\n *\n * @event pk-copy - Emitted when the details are copied successfully.\n * @event pk-copy-error - Emitted when the details cannot be copied.\n *\n * @csspart base - Centered state container.\n * @csspart icon-shell - Icon background container.\n * @csspart icon - Icon wrapper.\n * @csspart title - State heading.\n * @csspart body - Default content wrapper.\n * @csspart details - Collapsible details element.\n * @csspart details-summary - Details disclosure label.\n * @csspart details-content - Details content wrapper.\n * @csspart copy-button - Copy-details button.\n * @csspart copy-status - Copy result status.\n * @csspart actions - Actions wrapper.\n *\n * @cssproperty --pk-state-panel-accent - Variant accent colour.\n * @cssproperty --pk-state-panel-body-color - Primary content colour.\n * @cssproperty --pk-state-panel-title-color - Heading colour.\n * @cssproperty --pk-state-panel-title-size - Heading font size.\n * @cssproperty --pk-state-panel-icon-background - Icon container background.\n * @cssproperty --pk-state-panel-icon-shell-size - Icon container width and height.\n * @cssproperty --pk-state-panel-icon-size - Icon width and height.\n * @cssproperty --pk-state-panel-icon-radius - Icon container radius.\n * @cssproperty --pk-state-panel-content-width - Maximum content width.\n * @cssproperty --pk-state-panel-min-height - Minimum component height.\n * @cssproperty --pk-state-panel-padding - Component padding.\n * @cssproperty --pk-state-panel-details-max-height - Maximum height of diagnostic details.\n *\n * @dependency pk-copy-button - Compact copy-details action.\n */\n@customElement('pk-state-panel')\nexport class PkStatePanel extends PkElement {\n static override styles = pkStatePanelStyles;\n\n private readonly hasSlotController = new HasSlotController(\n this,\n 'title',\n 'icon',\n 'details',\n 'actions',\n );\n\n /** Semantic colour and fallback icon for the replacement state. */\n @property({ reflect: true })\n variant: PkStatePanelVariant = 'empty';\n\n /** Overall density, including typography, icons, spacing, details, and actions. */\n @property({ reflect: true })\n size: PkStatePanelSize = 'default';\n\n @property()\n heading = '';\n\n @property({ type: Number, attribute: 'heading-level' })\n headingLevel: PkStatePanelHeadingLevel = 2;\n\n /** Registered icon name. A custom `icon` slot takes precedence. */\n @property()\n icon = '';\n\n @property({ type: Boolean, attribute: 'hide-icon', reflect: true })\n hideIcon = false;\n\n @property({ reflect: true })\n announce: PkStatePanelAnnouncement = 'off';\n\n @property({ attribute: 'details-label' })\n detailsLabel = 'Details';\n\n @property({ type: Boolean, attribute: 'details-open', reflect: true })\n detailsOpen = false;\n\n @property({ type: Boolean, reflect: true })\n copyable = false;\n\n @property({ attribute: 'copy-label' })\n copyLabel = 'Copy details';\n\n @property({ attribute: 'copied-label' })\n copiedLabel = 'Details copied.';\n\n @property({ attribute: 'copy-error-label' })\n copyErrorLabel = 'Copy failed. Select the details and copy them manually.';\n\n @query('slot[name=\"details\"]')\n private detailsSlot!: HTMLSlotElement;\n\n @query('pk-copy-button.copy')\n private copyButton?: PkCopyButton;\n\n @state()\n private copyStatus = '';\n\n @state()\n private copyFailed = false;\n\n private copyStatusResetTimer?: number;\n\n override disconnectedCallback(): void {\n window.clearTimeout(this.copyStatusResetTimer);\n super.disconnectedCallback();\n }\n\n private hasTitle(): boolean {\n return Boolean(this.heading) || this.hasSlotController.test('title');\n }\n\n private get detailsValue(): string {\n return (this.detailsSlot?.assignedNodes({ flatten: true }) ?? [])\n .map((node) => node.textContent ?? '')\n .join('')\n .trim();\n }\n\n private resetCopyStatusLater(): void {\n window.clearTimeout(this.copyStatusResetTimer);\n this.copyStatusResetTimer = window.setTimeout(() => {\n this.copyStatus = '';\n this.copyFailed = false;\n }, COPY_STATUS_RESET_MS);\n }\n\n private showCopySuccess(): void {\n this.copyFailed = false;\n this.copyStatus = this.copiedLabel;\n this.resetCopyStatusLater();\n }\n\n private showCopyError(): void {\n this.copyFailed = true;\n this.copyStatus = this.copyErrorLabel;\n this.resetCopyStatusLater();\n }\n\n private handleCopySuccess(): void {\n this.showCopySuccess();\n }\n\n private handleCopyError(): void {\n this.showCopyError();\n this.selectDetails();\n }\n\n private selectDetails(): void {\n const nodes = this.detailsSlot?.assignedNodes({ flatten: true }) ?? [];\n const first = nodes[0];\n const last = nodes[nodes.length - 1];\n\n if (!first || !last) {\n return;\n }\n\n this.detailsOpen = true;\n\n const range = document.createRange();\n range.setStartBefore(first);\n range.setEndAfter(last);\n\n const selection = window.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n\n /** Copy the plain text assigned to the details slot. */\n async copyDetails(): Promise<void> {\n const value = this.detailsValue;\n\n if (!value) {\n this.showCopyError();\n this.dispatchEvent(new PkCopyErrorEvent());\n return;\n }\n\n if (this.copyButton) {\n this.copyButton.value = value;\n await this.copyButton.copy();\n return;\n }\n\n try {\n await copyToClipboard(value);\n this.showCopySuccess();\n const copyEvent = new PkCopyEvent(value);\n this.dispatchEvent(copyEvent);\n } catch {\n this.showCopyError();\n this.selectDetails();\n this.dispatchEvent(new PkCopyErrorEvent());\n }\n }\n\n private handleDetailsToggle(event: Event): void {\n this.detailsOpen = (event.currentTarget as HTMLDetailsElement).open;\n }\n\n private renderIcon() {\n if (this.hideIcon) {\n return nothing;\n }\n\n let icon;\n\n if (this.hasSlotController.test('icon')) {\n icon = html`<slot name=\"icon\"></slot>`;\n } else if (this.icon) {\n icon = html`<pk-icon .icon=${this.icon}></pk-icon>`;\n } else {\n icon = unsafeSVG(renderIconHtml(defaultIcons[this.variant] ?? defaultIcons.empty));\n }\n\n return html`\n <span part=\"icon-shell\" class=\"icon-shell\" aria-hidden=\"true\">\n <span part=\"icon\" class=\"icon\">${icon}</span>\n </span>\n `;\n }\n\n override render() {\n const role = this.announce === 'assertive'\n ? 'alert'\n : this.announce === 'polite'\n ? 'status'\n : nothing;\n const live = this.announce === 'off' ? nothing : this.announce;\n const hasDetails = this.hasSlotController.test('details');\n const hasActions = this.hasSlotController.test('actions');\n\n return html`\n <div\n part=\"base\"\n class=\"panel\"\n role=${role}\n aria-live=${live}\n aria-atomic=${this.announce === 'off' ? nothing : 'true'}\n >\n ${this.renderIcon()}\n\n ${this.hasTitle()\n ? html`\n <div\n part=\"title\"\n class=\"title\"\n role=\"heading\"\n aria-level=${this.headingLevel}\n >\n ${this.hasSlotController.test('title')\n ? html`<slot name=\"title\"></slot>`\n : this.heading}\n </div>\n `\n : nothing}\n\n <div part=\"body\" class=\"body\"><slot></slot></div>\n\n ${hasDetails\n ? html`\n <details\n part=\"details\"\n class=\"details\"\n ?open=${this.detailsOpen}\n @toggle=${this.handleDetailsToggle}\n >\n <summary part=\"details-summary\">${this.detailsLabel}</summary>\n <div part=\"details-content\" class=\"details-content\">\n <div class=\"details-scroll\">\n ${this.copyable\n ? html`\n <div class=\"copy-overlay\">\n <pk-copy-button\n part=\"copy-button\"\n class=\"copy\"\n variant=\"transparent\"\n aria-label=${this.copyLabel}\n .copiedLabel=${this.copiedLabel}\n .value=${this.detailsValue}\n @pk-copy=${this.handleCopySuccess}\n @pk-copy-error=${this.handleCopyError}\n ></pk-copy-button>\n </div>\n `\n : nothing}\n <slot name=\"details\"></slot>\n </div>\n </div>\n\n ${this.copyable\n ? html`\n <span\n part=\"copy-status\"\n class=\"copy-status\"\n data-error=${this.copyFailed ? '' : nothing}\n role=\"status\"\n aria-live=\"polite\"\n >${this.copyStatus}</span>\n `\n : nothing}\n </details>\n `\n : nothing}\n\n ${hasActions\n ? html`<div part=\"actions\" class=\"actions\"><slot name=\"actions\"></slot></div>`\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-state-panel': PkStatePanel;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { i as
|
|
1
|
+
import { i as customElement, n as PkElement, t as __decorate } from "./decorate-Br_PE9pq.js";
|
|
2
|
+
import { t as property } from "./decorators-BkErmuYK.js";
|
|
2
3
|
import { css, html, nothing } from "lit";
|
|
3
4
|
//#region src/components/status/pk-status.styles.ts
|
|
4
5
|
var pkStatusStyles = css`
|
|
@@ -88,4 +89,4 @@ PkStatus = __decorate([customElement("pk-status")], PkStatus);
|
|
|
88
89
|
//#endregion
|
|
89
90
|
export { PkStatus as t };
|
|
90
91
|
|
|
91
|
-
//# sourceMappingURL=pk-status-
|
|
92
|
+
//# sourceMappingURL=pk-status-CdiRBRyh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pk-status-CdiRBRyh.js","names":["_decorate"],"sources":["../../src/components/status/pk-status.styles.ts","../../src/components/status/pk-status.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const pkStatusStyles = css`\n @layer pk-component {\n :host {\n display: inline-block;\n flex-shrink: 0;\n width: 0.75rem;\n height: 0.75rem;\n border-radius: 9999px;\n vertical-align: middle;\n }\n\n .status {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: inherit;\n }\n\n :host([status='all']) .status { background: linear-gradient(60deg, #184cef, #e5422b); }\n :host([status='on']) .status,\n :host([status='live']) .status,\n :host([status='active']) .status,\n :host([status='enabled']) .status,\n :host([status='teal']) .status,\n :host([status='turquoise']) .status { background: var(--pk-color-teal-550); }\n :host([status='off']) .status,\n :host([status='suspended']) .status,\n :host([status='expired']) .status,\n :host([status='red']) .status { background: var(--pk-color-red-600); }\n :host([status='warning']) .status { background: var(--pk-color-amber-100); }\n :host([status='pending']) .status,\n :host([status='orange']) .status { background: var(--pk-color-orange-400); }\n :host([status='amber']) .status { background: var(--pk-color-amber-500); }\n :host([status='yellow']) .status { background: var(--pk-color-yellow-500); }\n :host([status='lime']) .status { background: var(--pk-color-lime-500); }\n :host([status='green']) .status { background: var(--pk-color-green-600); }\n :host([status='emerald']) .status { background: var(--pk-color-emerald-500); }\n :host([status='cyan']) .status { background: var(--pk-color-cyan-500); }\n :host([status='sky']) .status { background: var(--pk-color-sky-500); }\n :host([status='blue']) .status { background: var(--pk-color-blue-600); }\n :host([status='indigo']) .status { background: var(--pk-color-indigo-500); }\n :host([status='violet']) .status { background: var(--pk-color-violet-500); }\n :host([status='purple']) .status { background: var(--pk-color-purple-500); }\n :host([status='fuchsia']) .status { background: var(--pk-color-fuchsia-500); }\n :host([status='pink']) .status { background: var(--pk-color-pink-500); }\n :host([status='rose']) .status { background: var(--pk-color-rose-500); }\n :host([status='light']) .status { background: var(--pk-color-gray-100); }\n :host([status='gray']) .status,\n :host([status='grey']) .status { background: var(--pk-color-gray-300); }\n :host([status='white']) .status { background: var(--pk-color-white); }\n :host([status='black']) .status { background: var(--pk-color-gray-800); }\n :host([status='disabled']) .status,\n :host([status='inactive']) .status {\n /* Ring color is overridable for inverted / selected surfaces. */\n background: transparent;\n box-shadow: inset 0 0 0 2px var(--pk-status-ring, var(--pk-color-gray-500));\n }\n }\n`;\n","import { html, nothing } from 'lit';\nimport { customElement, property } from '../../decorators.js';\n\nimport { PkElement } from '../../base/pk-element.js';\nimport { pkStatusStyles } from './pk-status.styles.js';\n\nexport type PkStatusVariant =\n | 'all' | 'on' | 'live' | 'active' | 'enabled' | 'off' | 'suspended' | 'expired'\n | 'warning' | 'pending' | 'red' | 'orange' | 'amber' | 'yellow' | 'lime' | 'green'\n | 'emerald' | 'teal' | 'turquoise' | 'cyan' | 'sky' | 'blue' | 'indigo' | 'violet'\n | 'purple' | 'fuchsia' | 'pink' | 'rose' | 'light' | 'gray' | 'grey' | 'white'\n | 'black' | 'disabled' | 'inactive';\n\n/**\n * Compact semantic status indicator dot.\n *\n * @csspart base - Status dot element\n */\n@customElement('pk-status')\nexport class PkStatus extends PkElement {\n static override styles = pkStatusStyles;\n\n @property({ reflect: true })\n status: PkStatusVariant = 'on';\n\n @property({ attribute: 'aria-label' })\n ariaLabel: string | null = null;\n\n override render() {\n return html`\n <span\n part=\"base\"\n class=\"status\"\n role=\"status\"\n aria-label=${this.ariaLabel ?? nothing}\n ></span>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'pk-status': PkStatus;\n }\n}\n"],"mappings":";;;;AAEA,IAAa,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACiB1B,IAAM,WAAN,MAAM,iBAAiB,UAAU;;;EAIV,KAAA,SAAA;EAGC,KAAA,YAAA;;;EANF,KAAA,SAAA;;CAQzB,SAAkB;EACd,OAAO,IAAI;;;;;6BAKU,KAAK,aAAa,QAAQ;;;CAGnD;AACJ;AAhBKA,WAAA,CAAA,SAAS,EAAE,SAAS,KAAK,CAAC,CAAA,GAAA,SAAA,WAAA,UAAA,KAAA,CAAA;AAG1BA,WAAA,CAAA,SAAS,EAAE,WAAW,aAAa,CAAC,CAAA,GAAA,SAAA,WAAA,aAAA,KAAA,CAAA;AAPxC,WAAAA,WAAA,CAAA,cAAc,WAAW,CAAA,GAAA,QAAA"}
|