@mhmo91/schmancy 0.6.19 → 0.7.2
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/ai/menu.md +117 -186
- package/dist/ai/menu.md +117 -186
- package/dist/{animated-text-CgKXZOvy.cjs → animated-text-B8pXfnjg.cjs} +2 -2
- package/dist/{animated-text-CgKXZOvy.cjs.map → animated-text-B8pXfnjg.cjs.map} +1 -1
- package/dist/{animated-text-Df3UZBT2.js → animated-text-C7RzcmyV.js} +3 -3
- package/dist/{animated-text-Df3UZBT2.js.map → animated-text-C7RzcmyV.js.map} +1 -1
- package/dist/animated-text.cjs +1 -1
- package/dist/animated-text.js +1 -1
- package/dist/area.cjs +1 -1
- package/dist/{area.component-DXQff5kK.js → area.component-DfGcGjsN.js} +3 -3
- package/dist/{area.component-DXQff5kK.js.map → area.component-DfGcGjsN.js.map} +1 -1
- package/dist/{area.component-_AwKbrLf.cjs → area.component-TRIJcSoQ.cjs} +2 -2
- package/dist/{area.component-_AwKbrLf.cjs.map → area.component-TRIJcSoQ.cjs.map} +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-DLzc6eqO.js → autocomplete-Bhv2JOnL.js} +4 -4
- package/dist/autocomplete-Bhv2JOnL.js.map +1 -0
- package/dist/{autocomplete-DEzGDw9s.cjs → autocomplete-Dio0lk_E.cjs} +2 -2
- package/dist/autocomplete-Dio0lk_E.cjs.map +1 -0
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-YRXX1DQy.js → avatar-BCLeThlA.js} +51 -51
- package/dist/{avatar-YRXX1DQy.js.map → avatar-BCLeThlA.js.map} +1 -1
- package/dist/{avatar-B_Mf0HXa.cjs → avatar-DecX7RJw.cjs} +2 -2
- package/dist/{avatar-B_Mf0HXa.cjs.map → avatar-DecX7RJw.cjs.map} +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-VzOnSD8z.cjs → boat-B3IhIJhy.cjs} +2 -2
- package/dist/{boat-VzOnSD8z.cjs.map → boat-B3IhIJhy.cjs.map} +1 -1
- package/dist/{boat-CWADeoFv.js → boat-DrAkyCAd.js} +3 -3
- package/dist/{boat-CWADeoFv.js.map → boat-DrAkyCAd.js.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-ZryxdmZz.js → checkbox-BKT1cZnv.js} +2 -2
- package/dist/checkbox-BKT1cZnv.js.map +1 -0
- package/dist/{checkbox-DClxbWbU.cjs → checkbox-C4CHTajr.cjs} +2 -2
- package/dist/checkbox-C4CHTajr.cjs.map +1 -0
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/{code-preview-BoYqlMxl.cjs → code-preview-CEbRCvUd.cjs} +2 -2
- package/dist/code-preview-CEbRCvUd.cjs.map +1 -0
- package/dist/{code-preview-Bn2K5K9h.js → code-preview-DzMETSJv.js} +2 -2
- package/dist/code-preview-DzMETSJv.js.map +1 -0
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/consume-5D1qfVWM.js.map +1 -1
- package/dist/consume-edta5ng5.cjs.map +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/context-create-CA907mdD.cjs.map +1 -1
- package/dist/context-create-DCiujzV2.js.map +1 -1
- package/dist/{date-range-CCQsqKSy.js → date-range-B-5LtvhH.js} +3 -3
- package/dist/date-range-B-5LtvhH.js.map +1 -0
- package/dist/{date-range-B-rPnyst.cjs → date-range-B1PGOR7h.cjs} +2 -2
- package/dist/date-range-B1PGOR7h.cjs.map +1 -0
- package/dist/{date-range-inline-DO0Ps_QS.js → date-range-inline-D90CpK7z.js} +3 -3
- package/dist/{date-range-inline-DO0Ps_QS.js.map → date-range-inline-D90CpK7z.js.map} +1 -1
- package/dist/{date-range-inline-NACS06ev.cjs → date-range-inline-DLV7jB_x.cjs} +2 -2
- package/dist/{date-range-inline-NACS06ev.cjs.map → date-range-inline-DLV7jB_x.cjs.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-BaltOHAs.js → delay-D5RAR00M.js} +2 -2
- package/dist/delay-D5RAR00M.js.map +1 -0
- package/dist/{delay-DzqfMSBJ.cjs → delay-UAjkp-21.cjs} +2 -2
- package/dist/delay-UAjkp-21.cjs.map +1 -0
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{details-Bic4ZKNZ.js → details-CiuixU2H.js} +2 -2
- package/dist/{details-Bic4ZKNZ.js.map → details-CiuixU2H.js.map} +1 -1
- package/dist/{details-DPSpg2dL.cjs → details-RHTdNCLS.cjs} +2 -2
- package/dist/{details-DPSpg2dL.cjs.map → details-RHTdNCLS.cjs.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{dialog-content-CR4l1Yts.cjs → dialog-content-BF1xiYWw.cjs} +2 -2
- package/dist/{dialog-content-CR4l1Yts.cjs.map → dialog-content-BF1xiYWw.cjs.map} +1 -1
- package/dist/{dialog-content-CwsV3nWG.js → dialog-content-dtIrTHLU.js} +3 -3
- package/dist/{dialog-content-CwsV3nWG.js.map → dialog-content-dtIrTHLU.js.map} +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +1 -1
- package/dist/{divider-ChXDN5-E.js → divider-DcEB9uHV.js} +3 -3
- package/dist/{divider-ChXDN5-E.js.map → divider-DcEB9uHV.js.map} +1 -1
- package/dist/{divider-CpiE9MZW.cjs → divider-ZhcWRyc2.cjs} +2 -2
- package/dist/{divider-CpiE9MZW.cjs.map → divider-ZhcWRyc2.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-BmA6vuhB.js → dropdown-content-BoUnfAyz.js} +3 -3
- package/dist/{dropdown-content-BmA6vuhB.js.map → dropdown-content-BoUnfAyz.js.map} +1 -1
- package/dist/{dropdown-content-8I1uIUoF.cjs → dropdown-content-klaWLDI-.cjs} +2 -2
- package/dist/{dropdown-content-8I1uIUoF.cjs.map → dropdown-content-klaWLDI-.cjs.map} +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/{email-recipients-Cl_-UNWo.cjs → email-recipients-DA2HLG8K.cjs} +2 -2
- package/dist/{email-recipients-Cl_-UNWo.cjs.map → email-recipients-DA2HLG8K.cjs.map} +1 -1
- package/dist/{email-recipients-Ew87bYRp.js → email-recipients-yN1Jcu9X.js} +6 -6
- package/dist/{email-recipients-Ew87bYRp.js.map → email-recipients-yN1Jcu9X.js.map} +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{flex-DsHnuUb7.cjs → flex-CYCtLC7W.cjs} +2 -2
- package/dist/{flex-DsHnuUb7.cjs.map → flex-CYCtLC7W.cjs.map} +1 -1
- package/dist/{flex-CW7oSqU1.js → flex-C_fGjgWC.js} +2 -2
- package/dist/{flex-CW7oSqU1.js.map → flex-C_fGjgWC.js.map} +1 -1
- package/dist/flow-D0e7hGXO.cjs.map +1 -1
- package/dist/flow-DXYqC9OA.js.map +1 -1
- package/dist/{form-DZ9l7TjO.cjs → form-CYBgxvdH.cjs} +2 -2
- package/dist/{form-DZ9l7TjO.cjs.map → form-CYBgxvdH.cjs.map} +1 -1
- package/dist/{form-C5d6gWUg.js → form-Dn3XWE7d.js} +2 -2
- package/dist/{form-C5d6gWUg.js.map → form-Dn3XWE7d.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formField.mixin-BW4RaqbT.cjs → formField.mixin-D_gQgJXC.cjs} +2 -2
- package/dist/{formField.mixin-BW4RaqbT.cjs.map → formField.mixin-D_gQgJXC.cjs.map} +1 -1
- package/dist/{formField.mixin-DpD9oPMR.js → formField.mixin-Ds2S1kRc.js} +2 -2
- package/dist/{formField.mixin-DpD9oPMR.js.map → formField.mixin-Ds2S1kRc.js.map} +1 -1
- package/dist/{icon-BATnNWHh.js → icon-Bw8hqRtQ.js} +2 -2
- package/dist/{icon-BATnNWHh.js.map → icon-Bw8hqRtQ.js.map} +1 -1
- package/dist/{icon-CV5KKSMK.cjs → icon-DYGsNRVu.cjs} +2 -2
- package/dist/{icon-CV5KKSMK.cjs.map → icon-DYGsNRVu.cjs.map} +1 -1
- package/dist/{icon-button-BCdwHPLZ.cjs → icon-button-BfjcTNKq.cjs} +2 -2
- package/dist/{icon-button-BCdwHPLZ.cjs.map → icon-button-BfjcTNKq.cjs.map} +1 -1
- package/dist/{icon-button-BCqgaB3e.js → icon-button-Cu-RShdY.js} +3 -3
- package/dist/{icon-button-BCqgaB3e.js.map → icon-button-Cu-RShdY.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/index-CCi1otmh.cjs.map +1 -1
- package/dist/index-CW6PhEkx.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +50 -50
- package/dist/{input-RPj2xLz4.cjs → input-D-YRT2vo.cjs} +2 -2
- package/dist/input-D-YRT2vo.cjs.map +1 -0
- package/dist/{input-BJvZX3nK.js → input-UlrGLoXt.js} +3 -3
- package/dist/input-UlrGLoXt.js.map +1 -0
- package/dist/{input-chip-CyvaAJiR.js → input-chip-BwEuJAV5.js} +2 -2
- package/dist/{input-chip-CyvaAJiR.js.map → input-chip-BwEuJAV5.js.map} +1 -1
- package/dist/{input-chip-CGilKpgN.cjs → input-chip-pho9bYvS.cjs} +2 -2
- package/dist/{input-chip-CGilKpgN.cjs.map → input-chip-pho9bYvS.cjs.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{list-Dqwbw_0L.js → list-B4x432bs.js} +2 -2
- package/dist/{list-Dqwbw_0L.js.map → list-B4x432bs.js.map} +1 -1
- package/dist/{list-Dphnkgjm.cjs → list-CyCR5ywg.cjs} +2 -2
- package/dist/{list-Dphnkgjm.cjs.map → list-CyCR5ywg.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-BbwZRaPp.js → litElement.mixin-BPe38Tqd.js} +2 -2
- package/dist/{litElement.mixin-BbwZRaPp.js.map → litElement.mixin-BPe38Tqd.js.map} +1 -1
- package/dist/{litElement.mixin-1i17ImwN.cjs → litElement.mixin-DXaT0TQx.cjs} +2 -2
- package/dist/{litElement.mixin-1i17ImwN.cjs.map → litElement.mixin-DXaT0TQx.cjs.map} +1 -1
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-DEjWWl14.cjs → map-C2fG3es8.cjs} +2 -2
- package/dist/{map-DEjWWl14.cjs.map → map-C2fG3es8.cjs.map} +1 -1
- package/dist/{map-BHfXl4eZ.js → map-CNoi0TZi.js} +2 -2
- package/dist/{map-BHfXl4eZ.js.map → map-CNoi0TZi.js.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/{media-CFqac3i-.js → media-D_ne5TmT.js} +2 -2
- package/dist/{media-CFqac3i-.js.map → media-D_ne5TmT.js.map} +1 -1
- package/dist/{media-wEB2juTQ.cjs → media-dMr54ISj.cjs} +2 -2
- package/dist/{media-wEB2juTQ.cjs.map → media-dMr54ISj.cjs.map} +1 -1
- package/dist/menu-BdWhwHXc.js +89 -0
- package/dist/menu-BdWhwHXc.js.map +1 -0
- package/dist/menu-BsX4Mjjn.cjs +23 -0
- package/dist/menu-BsX4Mjjn.cjs.map +1 -0
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins.cjs +2 -0
- package/dist/mixins.cjs.map +1 -0
- package/dist/mixins.js +12 -0
- package/dist/mixins.js.map +1 -0
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/{navigation-rail-Cdklj_Vy.js → navigation-rail-DM2NQY_2.js} +3 -3
- package/dist/{navigation-rail-Cdklj_Vy.js.map → navigation-rail-DM2NQY_2.js.map} +1 -1
- package/dist/{navigation-rail-eNmqnFXJ.cjs → navigation-rail-DfFgV2PX.cjs} +2 -2
- package/dist/{navigation-rail-eNmqnFXJ.cjs.map → navigation-rail-DfFgV2PX.cjs.map} +1 -1
- package/dist/navigation-rail.cjs +1 -1
- package/dist/navigation-rail.js +1 -1
- package/dist/{notification-service-jityv87S.cjs → notification-service-Cm_0BsnA.cjs} +2 -2
- package/dist/{notification-service-jityv87S.cjs.map → notification-service-Cm_0BsnA.cjs.map} +1 -1
- package/dist/{notification-service-CqxmKVJX.js → notification-service-DDfyKN2r.js} +4 -4
- package/dist/{notification-service-CqxmKVJX.js.map → notification-service-DDfyKN2r.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +2 -2
- package/dist/{notify-C8EM_JmR.js → notify-BGHQRbsD.js} +2 -2
- package/dist/{notify-C8EM_JmR.js.map → notify-BGHQRbsD.js.map} +1 -1
- package/dist/{notify-CxqHlCZF.cjs → notify-DMoBBADS.cjs} +2 -2
- package/dist/{notify-CxqHlCZF.cjs.map → notify-DMoBBADS.cjs.map} +1 -1
- package/dist/{option-COJIldwK.js → option-EBGoYClu.js} +2 -2
- package/dist/{option-COJIldwK.js.map → option-EBGoYClu.js.map} +1 -1
- package/dist/{option-CBQoRZ86.cjs → option-MaqD_vGw.cjs} +2 -2
- package/dist/{option-CBQoRZ86.cjs.map → option-MaqD_vGw.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{payment-card-form-BzDuKScU.cjs → payment-card-form-DZmaLaVl.cjs} +2 -2
- package/dist/payment-card-form-DZmaLaVl.cjs.map +1 -0
- package/dist/{payment-card-form-CHMYeZs2.js → payment-card-form-p_Wj1NRm.js} +3 -3
- package/dist/payment-card-form-p_Wj1NRm.js.map +1 -0
- package/dist/{progress-nOhWloHs.cjs → progress-BqIOFoJX.cjs} +2 -2
- package/dist/{progress-nOhWloHs.cjs.map → progress-BqIOFoJX.cjs.map} +1 -1
- package/dist/{progress-CtNg2SPw.js → progress-DC88fksT.js} +2 -2
- package/dist/{progress-CtNg2SPw.js.map → progress-DC88fksT.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/provide-BxZ2kn_p.cjs.map +1 -1
- package/dist/provide-tcktw8xB.js.map +1 -1
- package/dist/{radio-button-DttgXEeY.cjs → radio-button-BfpkkEgE.cjs} +2 -2
- package/dist/radio-button-BfpkkEgE.cjs.map +1 -0
- package/dist/{radio-button-DggshTfa.js → radio-button-DQA5Kswx.js} +3 -3
- package/dist/radio-button-DQA5Kswx.js.map +1 -0
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{schmancy-steps-container-DhtHaKgX.js → schmancy-steps-container-Br5qKWIs.js} +2 -2
- package/dist/{schmancy-steps-container-DhtHaKgX.js.map → schmancy-steps-container-Br5qKWIs.js.map} +1 -1
- package/dist/{schmancy-steps-container-hIBLjMgI.cjs → schmancy-steps-container-Cr2B9C-w.cjs} +2 -2
- package/dist/{schmancy-steps-container-hIBLjMgI.cjs.map → schmancy-steps-container-Cr2B9C-w.cjs.map} +1 -1
- package/dist/{select-BqyRn0cF.js → select-B_DaDLhe.js} +3 -3
- package/dist/select-B_DaDLhe.js.map +1 -0
- package/dist/{select-xZKW8cHu.cjs → select-DwaiJBG2.cjs} +2 -2
- package/dist/select-DwaiJBG2.cjs.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-DE8jIQUk.js → sheet-5c6WR3vS.js} +5 -5
- package/dist/{sheet-DE8jIQUk.js.map → sheet-5c6WR3vS.js.map} +1 -1
- package/dist/{sheet-C6Liqa_3.cjs → sheet-BrK8_X4J.cjs} +2 -2
- package/dist/{sheet-C6Liqa_3.cjs.map → sheet-BrK8_X4J.cjs.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +2 -2
- package/dist/{sheet.service-NAV5vSsM.cjs → sheet.service-BkKHvgFa.cjs} +2 -2
- package/dist/{sheet.service-NAV5vSsM.cjs.map → sheet.service-BkKHvgFa.cjs.map} +1 -1
- package/dist/{sheet.service-1jZMJbNp.js → sheet.service-EPEmcCpX.js} +2 -2
- package/dist/{sheet.service-1jZMJbNp.js.map → sheet.service-EPEmcCpX.js.map} +1 -1
- package/dist/{slider-BvbkpEef.js → slider-CiNvtgZJ.js} +3 -3
- package/dist/{slider-BvbkpEef.js.map → slider-CiNvtgZJ.js.map} +1 -1
- package/dist/{slider-lEoCLK-7.cjs → slider-DW9URxIY.cjs} +2 -2
- package/dist/{slider-lEoCLK-7.cjs.map → slider-DW9URxIY.cjs.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-CQxy0lF3.cjs → spinner-9JRrKdub.cjs} +2 -2
- package/dist/{spinner-CQxy0lF3.cjs.map → spinner-9JRrKdub.cjs.map} +1 -1
- package/dist/{spinner-DdG6BEOr.js → spinner-D8stZ8uP.js} +2 -2
- package/dist/{spinner-DdG6BEOr.js.map → spinner-D8stZ8uP.js.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/{suggestion-chip-BRz15zwU.js → suggestion-chip-CXPMf7Je.js} +3 -3
- package/dist/{suggestion-chip-BRz15zwU.js.map → suggestion-chip-CXPMf7Je.js.map} +1 -1
- package/dist/{suggestion-chip-DK4xFJvZ.cjs → suggestion-chip-inBIBMff.cjs} +2 -2
- package/dist/{suggestion-chip-DK4xFJvZ.cjs.map → suggestion-chip-inBIBMff.cjs.map} +1 -1
- package/dist/{surface-C3vER2uq.js → surface-BcZEnDON.js} +2 -2
- package/dist/{surface-C3vER2uq.js.map → surface-BcZEnDON.js.map} +1 -1
- package/dist/{surface-Bt1FetPM.cjs → surface-BsrV4kzE.cjs} +2 -2
- package/dist/{surface-Bt1FetPM.cjs.map → surface-BsrV4kzE.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-DhheYeQ8.js → table-B5CHKp8S.js} +2 -2
- package/dist/table-B5CHKp8S.js.map +1 -0
- package/dist/{table-DYay68qu.cjs → table-CzejyN5W.cjs} +2 -2
- package/dist/table-CzejyN5W.cjs.map +1 -0
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-C-gQwADa.js → tabs-compatibility-8NddfF1x.js} +2 -2
- package/dist/{tabs-compatibility-C-gQwADa.js.map → tabs-compatibility-8NddfF1x.js.map} +1 -1
- package/dist/{tabs-compatibility-Dz5YaB06.cjs → tabs-compatibility-UitZoxcs.cjs} +2 -2
- package/dist/{tabs-compatibility-Dz5YaB06.cjs.map → tabs-compatibility-UitZoxcs.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-2PdnHg0B.cjs +2 -0
- package/dist/{tailwind.mixin-Ge3p8F8Z.cjs.map → tailwind.mixin-2PdnHg0B.cjs.map} +1 -1
- package/dist/tailwind.mixin-BgdEBNZM.js +67 -0
- package/dist/{tailwind.mixin-BTS7jBB1.js.map → tailwind.mixin-BgdEBNZM.js.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-DmoZM65K.js → textarea-2oVdZPXR.js} +2 -2
- package/dist/textarea-2oVdZPXR.js.map +1 -0
- package/dist/{textarea-Dn1lmlIx.cjs → textarea-D24UakyK.cjs} +2 -2
- package/dist/textarea-D24UakyK.cjs.map +1 -0
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-CtF2dxRy.cjs → theme-button-D0Xi4WHC.cjs} +2 -2
- package/dist/{theme-button-CtF2dxRy.cjs.map → theme-button-D0Xi4WHC.cjs.map} +1 -1
- package/dist/{theme-button-BkoRO_Ko.js → theme-button-D4BhpOj6.js} +2 -2
- package/dist/{theme-button-BkoRO_Ko.js.map → theme-button-D4BhpOj6.js.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/{theme-controller-boat-DDsW4EOJ.js → theme-controller-boat-C8AnrOkJ.js} +4 -4
- package/dist/theme-controller-boat-C8AnrOkJ.js.map +1 -0
- package/dist/{theme-controller-boat-CBQlbHHc.cjs → theme-controller-boat-r74J3tyl.cjs} +2 -2
- package/dist/theme-controller-boat-r74J3tyl.cjs.map +1 -0
- package/dist/theme.cjs +1 -1
- package/dist/theme.js +1 -1
- package/dist/{timezone-DM_3vLZj.cjs → timezone-BbGoZoJM.cjs} +2 -2
- package/dist/{timezone-DM_3vLZj.cjs.map → timezone-BbGoZoJM.cjs.map} +1 -1
- package/dist/{timezone-C-V8qJE3.js → timezone-D4wUA6zL.js} +3 -3
- package/dist/{timezone-C-V8qJE3.js.map → timezone-D4wUA6zL.js.map} +1 -1
- package/dist/{tooltip-Cw5mfhRj.js → tooltip-BL92Hwwe.js} +2 -2
- package/dist/{tooltip-Cw5mfhRj.js.map → tooltip-BL92Hwwe.js.map} +1 -1
- package/dist/{tooltip-DntsYOsj.cjs → tooltip-DxdU3Drr.cjs} +2 -2
- package/dist/{tooltip-DntsYOsj.cjs.map → tooltip-DxdU3Drr.cjs.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-C3487udC.cjs → tree-BuGpk0as.cjs} +2 -2
- package/dist/{tree-C3487udC.cjs.map → tree-BuGpk0as.cjs.map} +1 -1
- package/dist/{tree-DimUJjcj.js → tree-cZIPOana.js} +2 -2
- package/dist/{tree-DimUJjcj.js.map → tree-cZIPOana.js.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/tslib.es6-DgOcxv4s.cjs.map +1 -1
- package/dist/tslib.es6-ujVQHAQ4.js.map +1 -1
- package/dist/{typewriter-B7nBcBU9.js → typewriter-DT0f_Fla.js} +4 -4
- package/dist/typewriter-DT0f_Fla.js.map +1 -0
- package/dist/{typewriter-CHcRZUee.cjs → typewriter-Dc7MHBRy.cjs} +2 -2
- package/dist/typewriter-Dc7MHBRy.cjs.map +1 -0
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-CRVUouR2.cjs → typography-BBCRpsA_.cjs} +2 -2
- package/dist/{typography-CRVUouR2.cjs.map → typography-BBCRpsA_.cjs.map} +1 -1
- package/dist/{typography-DnZjZEIe.js → typography-DayYVIRD.js} +2 -2
- package/dist/{typography-DnZjZEIe.js.map → typography-DayYVIRD.js.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/package.json +5 -10
- package/types/src/autocomplete/autocomplete.d.ts +11 -0
- package/types/src/extra/timezone/timezone.d.ts +8 -0
- package/types/src/input/input.d.ts +1 -0
- package/types/src/menu/menu.d.ts +5 -6
- package/types/src/radio-group/radio-button.d.ts +8 -0
- package/types/src/select/select.d.ts +11 -0
- package/types/src/textarea/textarea.d.ts +12 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Display-Bold.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Display-Light.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Display-Medium.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Display-Regular.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Display-Thin.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Display-UBold.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Display-ULight.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Bold-Italic.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Bold.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Book-Italic.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Book.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Light.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Medium-Italic.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Medium.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Regular.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Thin-Italic.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-Thin.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-ULight-Italic.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Pro-Text-ULight.woff +0 -0
- package/dist/GT-Eesti/GT-Eesti-Text-Regular.woff2 +0 -0
- package/dist/_headers +0 -3
- package/dist/autocomplete-DEzGDw9s.cjs.map +0 -1
- package/dist/autocomplete-DLzc6eqO.js.map +0 -1
- package/dist/checkbox-DClxbWbU.cjs.map +0 -1
- package/dist/checkbox-ZryxdmZz.js.map +0 -1
- package/dist/code-preview-Bn2K5K9h.js.map +0 -1
- package/dist/code-preview-BoYqlMxl.cjs.map +0 -1
- package/dist/date-range-B-rPnyst.cjs.map +0 -1
- package/dist/date-range-CCQsqKSy.js.map +0 -1
- package/dist/delay-BaltOHAs.js.map +0 -1
- package/dist/delay-DzqfMSBJ.cjs.map +0 -1
- package/dist/input-BJvZX3nK.js.map +0 -1
- package/dist/input-RPj2xLz4.cjs.map +0 -1
- package/dist/logo-dark.png +0 -0
- package/dist/menu-BlR27aWR.js +0 -100
- package/dist/menu-BlR27aWR.js.map +0 -1
- package/dist/menu-DYWTnN4u.cjs +0 -36
- package/dist/menu-DYWTnN4u.cjs.map +0 -1
- package/dist/netlify.toml +0 -366
- package/dist/payment-card-form-BzDuKScU.cjs.map +0 -1
- package/dist/payment-card-form-CHMYeZs2.js.map +0 -1
- package/dist/radio-button-DggshTfa.js.map +0 -1
- package/dist/radio-button-DttgXEeY.cjs.map +0 -1
- package/dist/select-BqyRn0cF.js.map +0 -1
- package/dist/select-xZKW8cHu.cjs.map +0 -1
- package/dist/table-DYay68qu.cjs.map +0 -1
- package/dist/table-DhheYeQ8.js.map +0 -1
- package/dist/tailwind.mixin-BTS7jBB1.js +0 -66
- package/dist/tailwind.mixin-Ge3p8F8Z.cjs +0 -2
- package/dist/textarea-DmoZM65K.js.map +0 -1
- package/dist/textarea-Dn1lmlIx.cjs.map +0 -1
- package/dist/theme-controller-boat-CBQlbHHc.cjs.map +0 -1
- package/dist/theme-controller-boat-DDsW4EOJ.js.map +0 -1
- package/dist/typewriter-B7nBcBU9.js.map +0 -1
- package/dist/typewriter-CHcRZUee.cjs.map +0 -1
- package/readme.md +0 -307
- /package/{dist/mixins → mixins}/baseElement.ts +0 -0
- /package/{dist/mixins → mixins}/constructor.ts +0 -0
- /package/{dist/mixins → mixins}/discovery.service.ts +0 -0
- /package/{dist/mixins → mixins}/formField.mixin.ts +0 -0
- /package/{dist/mixins → mixins}/index.ts +0 -0
- /package/{dist/mixins → mixins}/litElement.mixin.ts +0 -0
- /package/{dist/mixins → mixins}/scss.d.ts +0 -0
- /package/{dist/mixins → mixins}/tailwind.css +0 -0
- /package/{dist/mixins → mixins}/tailwind.mixin.ts +0 -0
package/ai/menu.md
CHANGED
|
@@ -1,217 +1,148 @@
|
|
|
1
1
|
# Schmancy Menu - AI Reference
|
|
2
2
|
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The menu component provides context menus and dropdown menus using the `$dialog` service for positioning. Menus are portaled to `document.body` for proper z-index handling and work correctly in complex layouts (tables, virtualizers, overflow containers).
|
|
6
|
+
|
|
7
|
+
## Architecture
|
|
8
|
+
|
|
9
|
+
- **Positioning**: Uses `$dialog.component()` with mouse event position
|
|
10
|
+
- **Portal Pattern**: Menu items are temporarily moved to dialog at `document.body` level
|
|
11
|
+
- **Fixed Positioning**: Menus stay fixed to viewport and don't scroll with content
|
|
12
|
+
- **Auto-close**: Menus close on item click or when clicking outside
|
|
13
|
+
|
|
14
|
+
## Basic Usage
|
|
15
|
+
|
|
3
16
|
```js
|
|
4
17
|
// Basic Menu
|
|
5
|
-
<schmancy-menu
|
|
6
|
-
<schmancy-menu-item
|
|
7
|
-
<schmancy-menu-item
|
|
8
|
-
<schmancy-menu-item
|
|
9
|
-
<schmancy-divider></schmancy-divider>
|
|
10
|
-
<schmancy-menu-item value="item4">Item 4</schmancy-menu-item>
|
|
18
|
+
<schmancy-menu>
|
|
19
|
+
<schmancy-menu-item @click=${() => console.log('Item 1')}>Item 1</schmancy-menu-item>
|
|
20
|
+
<schmancy-menu-item @click=${() => console.log('Item 2')}>Item 2</schmancy-menu-item>
|
|
21
|
+
<schmancy-menu-item @click=${() => console.log('Item 3')}>Item 3</schmancy-menu-item>
|
|
11
22
|
</schmancy-menu>
|
|
12
23
|
|
|
13
24
|
// Menu with icons
|
|
14
25
|
<schmancy-menu>
|
|
15
|
-
<schmancy-menu-item
|
|
16
|
-
<schmancy-icon slot="
|
|
26
|
+
<schmancy-menu-item @click=${handleCopy}>
|
|
27
|
+
<schmancy-icon slot="leading">content_copy</schmancy-icon>
|
|
17
28
|
Copy
|
|
18
29
|
</schmancy-menu-item>
|
|
19
|
-
|
|
20
|
-
<schmancy-menu-item
|
|
21
|
-
<schmancy-icon slot="
|
|
30
|
+
|
|
31
|
+
<schmancy-menu-item @click=${handleCut}>
|
|
32
|
+
<schmancy-icon slot="leading">content_cut</schmancy-icon>
|
|
22
33
|
Cut
|
|
23
34
|
</schmancy-menu-item>
|
|
24
|
-
|
|
25
|
-
<schmancy-menu-item value="paste">
|
|
26
|
-
<schmancy-icon slot="prefix" icon="clipboard"></schmancy-icon>
|
|
27
|
-
Paste
|
|
28
|
-
</schmancy-menu-item>
|
|
29
|
-
</schmancy-menu>
|
|
30
35
|
|
|
31
|
-
|
|
32
|
-
<schmancy-
|
|
33
|
-
|
|
34
|
-
<schmancy-icon slot="prefix" icon="bold"></schmancy-icon>
|
|
35
|
-
Bold
|
|
36
|
-
</schmancy-menu-item>
|
|
37
|
-
|
|
38
|
-
<schmancy-menu-item value="italic" checkable>
|
|
39
|
-
<schmancy-icon slot="prefix" icon="italic"></schmancy-icon>
|
|
40
|
-
Italic
|
|
41
|
-
</schmancy-menu-item>
|
|
42
|
-
|
|
43
|
-
<schmancy-menu-item value="underline" checkable>
|
|
44
|
-
<schmancy-icon slot="prefix" icon="underline"></schmancy-icon>
|
|
45
|
-
Underline
|
|
36
|
+
<schmancy-menu-item @click=${handlePaste}>
|
|
37
|
+
<schmancy-icon slot="leading">content_paste</schmancy-icon>
|
|
38
|
+
Paste
|
|
46
39
|
</schmancy-menu-item>
|
|
47
40
|
</schmancy-menu>
|
|
48
41
|
|
|
49
|
-
// Menu
|
|
50
|
-
<schmancy-
|
|
51
|
-
<schmancy-button slot="
|
|
52
|
-
|
|
42
|
+
// Menu with custom trigger button
|
|
43
|
+
<schmancy-menu>
|
|
44
|
+
<schmancy-button slot="button" variant="filled">
|
|
45
|
+
Actions
|
|
53
46
|
</schmancy-button>
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
<schmancy-menu-item value="edit">Edit</schmancy-menu-item>
|
|
57
|
-
<schmancy-menu-item value="duplicate">Duplicate</schmancy-menu-item>
|
|
58
|
-
<schmancy-menu-item value="archive">Archive</schmancy-menu-item>
|
|
59
|
-
<schmancy-divider></schmancy-divider>
|
|
60
|
-
<schmancy-menu-item value="delete" variant="danger">Delete</schmancy-menu-item>
|
|
61
|
-
</schmancy-menu>
|
|
62
|
-
</schmancy-dropdown>
|
|
63
|
-
|
|
64
|
-
// Menu Properties
|
|
65
|
-
multiple: boolean // Allow selecting multiple items
|
|
66
|
-
value: string|string[] // Selected item value(s)
|
|
67
|
-
size: string // Size: "small", "medium", "large"
|
|
68
|
-
dense: boolean // More compact appearance
|
|
69
|
-
|
|
70
|
-
// Menu Item Properties
|
|
71
|
-
value: string // Value for selection
|
|
72
|
-
disabled: boolean // Disable the item
|
|
73
|
-
selected: boolean // Whether the item is selected
|
|
74
|
-
checkable: boolean // Show checkbox/radio indicator
|
|
75
|
-
checked: boolean // Checked state for checkable items
|
|
76
|
-
variant: string // Variant: "default", "primary", "danger", etc.
|
|
77
|
-
|
|
78
|
-
// Menu Events
|
|
79
|
-
@select // Fires when item is selected, with { detail: { value, item } }
|
|
80
|
-
@change // Fires when selection changes, with { detail: { value } }
|
|
81
|
-
|
|
82
|
-
// Examples
|
|
83
|
-
// Context menu
|
|
84
|
-
<schmancy-dropdown>
|
|
85
|
-
<div
|
|
86
|
-
slot="trigger"
|
|
87
|
-
@contextmenu=${(e) => {
|
|
88
|
-
e.preventDefault();
|
|
89
|
-
dropdown.open({ x: e.clientX, y: e.clientY });
|
|
90
|
-
}}
|
|
91
|
-
style="width: 300px; height: 200px; border: 1px dashed #ccc; display: flex; align-items: center; justify-content: center;">
|
|
92
|
-
Right-click me
|
|
93
|
-
</div>
|
|
94
|
-
|
|
95
|
-
<schmancy-menu slot="content" @select=${handleContextMenuSelect}>
|
|
96
|
-
<schmancy-menu-item value="view">
|
|
97
|
-
<schmancy-icon slot="prefix" icon="eye"></schmancy-icon>
|
|
98
|
-
View
|
|
99
|
-
</schmancy-menu-item>
|
|
100
|
-
|
|
101
|
-
<schmancy-menu-item value="edit">
|
|
102
|
-
<schmancy-icon slot="prefix" icon="edit"></schmancy-icon>
|
|
103
|
-
Edit
|
|
104
|
-
</schmancy-menu-item>
|
|
105
|
-
|
|
106
|
-
<schmancy-menu-item value="share">
|
|
107
|
-
<schmancy-icon slot="prefix" icon="share"></schmancy-icon>
|
|
108
|
-
Share
|
|
109
|
-
<schmancy-icon slot="suffix" icon="external-link"></schmancy-icon>
|
|
110
|
-
</schmancy-menu-item>
|
|
111
|
-
|
|
112
|
-
<schmancy-divider></schmancy-divider>
|
|
113
|
-
|
|
114
|
-
<schmancy-menu-item value="delete" variant="danger">
|
|
115
|
-
<schmancy-icon slot="prefix" icon="trash"></schmancy-icon>
|
|
116
|
-
Delete
|
|
117
|
-
</schmancy-menu-item>
|
|
118
|
-
</schmancy-menu>
|
|
119
|
-
</schmancy-dropdown>
|
|
120
|
-
|
|
121
|
-
// Multi-select menu
|
|
122
|
-
<schmancy-menu
|
|
123
|
-
multiple
|
|
124
|
-
.value=${selectedOptions}
|
|
125
|
-
@change=${(e) => selectedOptions = e.detail.value}>
|
|
126
|
-
|
|
127
|
-
<schmancy-menu-item value="wifi" checkable>
|
|
128
|
-
<schmancy-icon slot="prefix" icon="wifi"></schmancy-icon>
|
|
129
|
-
Wi-Fi
|
|
130
|
-
</schmancy-menu-item>
|
|
131
|
-
|
|
132
|
-
<schmancy-menu-item value="bluetooth" checkable>
|
|
133
|
-
<schmancy-icon slot="prefix" icon="bluetooth"></schmancy-icon>
|
|
134
|
-
Bluetooth
|
|
135
|
-
</schmancy-menu-item>
|
|
136
|
-
|
|
137
|
-
<schmancy-menu-item value="airplane" checkable>
|
|
138
|
-
<schmancy-icon slot="prefix" icon="airplane"></schmancy-icon>
|
|
139
|
-
Airplane Mode
|
|
47
|
+
<schmancy-menu-item @click=${() => console.log('Edit')}>
|
|
48
|
+
Edit
|
|
140
49
|
</schmancy-menu-item>
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
<schmancy-icon slot="prefix" icon="map-pin"></schmancy-icon>
|
|
144
|
-
Location
|
|
50
|
+
<schmancy-menu-item @click=${() => console.log('Delete')}>
|
|
51
|
+
Delete
|
|
145
52
|
</schmancy-menu-item>
|
|
146
53
|
</schmancy-menu>
|
|
147
54
|
|
|
148
|
-
//
|
|
55
|
+
// Default icon button trigger (no button slot provided)
|
|
149
56
|
<schmancy-menu>
|
|
150
|
-
<schmancy-menu-item
|
|
151
|
-
|
|
152
|
-
New File
|
|
153
|
-
<span slot="suffix">Ctrl+N</span>
|
|
154
|
-
</schmancy-menu-item>
|
|
155
|
-
|
|
156
|
-
<schmancy-menu-item value="open">
|
|
157
|
-
<schmancy-icon slot="prefix" icon="folder-open"></schmancy-icon>
|
|
158
|
-
Open...
|
|
159
|
-
<span slot="suffix">Ctrl+O</span>
|
|
160
|
-
</schmancy-menu-item>
|
|
161
|
-
|
|
162
|
-
<schmancy-menu-item value="save">
|
|
163
|
-
<schmancy-icon slot="prefix" icon="save"></schmancy-icon>
|
|
164
|
-
Save
|
|
165
|
-
<span slot="suffix">Ctrl+S</span>
|
|
166
|
-
</schmancy-menu-item>
|
|
167
|
-
|
|
168
|
-
<schmancy-menu-item value="saveAs">
|
|
169
|
-
<schmancy-icon slot="prefix" icon="save"></schmancy-icon>
|
|
170
|
-
Save As...
|
|
171
|
-
<span slot="suffix">Ctrl+Shift+S</span>
|
|
172
|
-
</schmancy-menu-item>
|
|
173
|
-
|
|
174
|
-
<schmancy-divider></schmancy-divider>
|
|
175
|
-
|
|
176
|
-
<schmancy-menu-item value="exit">
|
|
177
|
-
<schmancy-icon slot="prefix" icon="x"></schmancy-icon>
|
|
178
|
-
Exit
|
|
179
|
-
<span slot="suffix">Alt+F4</span>
|
|
180
|
-
</schmancy-menu-item>
|
|
57
|
+
<schmancy-menu-item @click=${handleAction1}>Action 1</schmancy-menu-item>
|
|
58
|
+
<schmancy-menu-item @click=${handleAction2}>Action 2</schmancy-menu-item>
|
|
181
59
|
</schmancy-menu>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## API Reference
|
|
63
|
+
|
|
64
|
+
### Menu Component
|
|
65
|
+
|
|
66
|
+
**Slots:**
|
|
67
|
+
- `button` - Custom trigger button (defaults to icon button with more_vert if not provided)
|
|
68
|
+
- `default` - Menu items (use schmancy-menu-item components)
|
|
182
69
|
|
|
183
|
-
|
|
70
|
+
**Positioning:**
|
|
71
|
+
- Automatically positioned using $dialog service
|
|
72
|
+
- Fixed to viewport (doesn't scroll with content)
|
|
73
|
+
- Portaled to document.body for proper stacking
|
|
74
|
+
- Works in complex layouts (tables, virtualizers, etc.)
|
|
75
|
+
|
|
76
|
+
### Menu Item Component
|
|
77
|
+
|
|
78
|
+
**Slots:**
|
|
79
|
+
- `leading` - Icon or content before the text
|
|
80
|
+
- `trailing` - Icon or content after the text
|
|
81
|
+
- `default` - Main content
|
|
82
|
+
|
|
83
|
+
**Events:**
|
|
84
|
+
- `schmancy-menu-item-click` - Fired when clicked (bubbles up, auto-closes menu)
|
|
85
|
+
|
|
86
|
+
## Real-World Examples
|
|
87
|
+
|
|
88
|
+
### Menu in Table Header (sorting)
|
|
89
|
+
```js
|
|
184
90
|
<schmancy-menu>
|
|
185
|
-
<schmancy-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
91
|
+
<schmancy-icon-button slot="button" size="sm">
|
|
92
|
+
${sortDirection === 'asc' ? 'arrow_upward' : 'arrow_downward'}
|
|
93
|
+
</schmancy-icon-button>
|
|
94
|
+
${sortOptions.map(opt => html`
|
|
95
|
+
<schmancy-menu-item @click=${() => handleSort(opt.value)}>
|
|
96
|
+
${opt.active ? html`<schmancy-icon slot="start">check</schmancy-icon>` : ''}
|
|
97
|
+
${opt.label}
|
|
98
|
+
${opt.active ? html`<schmancy-icon slot="end">${direction}</schmancy-icon>` : ''}
|
|
193
99
|
</schmancy-menu-item>
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
100
|
+
`)}
|
|
101
|
+
</schmancy-menu>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Menu in Virtualized List/Table
|
|
105
|
+
Works correctly in lit-virtualizer, overflow containers, and complex layouts:
|
|
106
|
+
```js
|
|
107
|
+
<lit-virtualizer .items=${items} .renderItem=${item => html`
|
|
108
|
+
<div class="table-row">
|
|
109
|
+
<span>${item.name}</span>
|
|
110
|
+
<schmancy-menu>
|
|
111
|
+
<schmancy-menu-item @click=${() => edit(item)}>Edit</schmancy-menu-item>
|
|
112
|
+
<schmancy-menu-item @click=${() => delete(item)}>Delete</schmancy-menu-item>
|
|
113
|
+
</schmancy-menu>
|
|
114
|
+
</div>
|
|
115
|
+
`}></lit-virtualizer>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Menu in Cards
|
|
119
|
+
```js
|
|
120
|
+
<schmancy-surface type="container" class="p-6">
|
|
121
|
+
<div class="flex justify-between items-start">
|
|
122
|
+
<h3>Card Title</h3>
|
|
123
|
+
<schmancy-menu>
|
|
124
|
+
<schmancy-menu-item @click=${handleShare}>
|
|
125
|
+
<schmancy-icon slot="leading">share</schmancy-icon>
|
|
126
|
+
Share
|
|
199
127
|
</schmancy-menu-item>
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
Table
|
|
128
|
+
<schmancy-menu-item @click=${handleEdit}>
|
|
129
|
+
<schmancy-icon slot="leading">edit</schmancy-icon>
|
|
130
|
+
Edit
|
|
204
131
|
</schmancy-menu-item>
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
Chart
|
|
132
|
+
<schmancy-menu-item @click=${handleDelete}>
|
|
133
|
+
<schmancy-icon slot="leading">delete</schmancy-icon>
|
|
134
|
+
Delete
|
|
209
135
|
</schmancy-menu-item>
|
|
210
136
|
</schmancy-menu>
|
|
211
|
-
</
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
137
|
+
</div>
|
|
138
|
+
</schmancy-surface>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Implementation Notes
|
|
142
|
+
|
|
143
|
+
- Menu items are temporarily moved to dialog container when opened
|
|
144
|
+
- Items are moved back to original location when menu closes
|
|
145
|
+
- All event handlers remain functional during the move
|
|
146
|
+
- Menu positioning is handled by $dialog service using floating-ui
|
|
147
|
+
- No need to manage z-index or positioning manually
|
|
217
148
|
```
|
package/dist/ai/menu.md
CHANGED
|
@@ -1,217 +1,148 @@
|
|
|
1
1
|
# Schmancy Menu - AI Reference
|
|
2
2
|
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The menu component provides context menus and dropdown menus using the `$dialog` service for positioning. Menus are portaled to `document.body` for proper z-index handling and work correctly in complex layouts (tables, virtualizers, overflow containers).
|
|
6
|
+
|
|
7
|
+
## Architecture
|
|
8
|
+
|
|
9
|
+
- **Positioning**: Uses `$dialog.component()` with mouse event position
|
|
10
|
+
- **Portal Pattern**: Menu items are temporarily moved to dialog at `document.body` level
|
|
11
|
+
- **Fixed Positioning**: Menus stay fixed to viewport and don't scroll with content
|
|
12
|
+
- **Auto-close**: Menus close on item click or when clicking outside
|
|
13
|
+
|
|
14
|
+
## Basic Usage
|
|
15
|
+
|
|
3
16
|
```js
|
|
4
17
|
// Basic Menu
|
|
5
|
-
<schmancy-menu
|
|
6
|
-
<schmancy-menu-item
|
|
7
|
-
<schmancy-menu-item
|
|
8
|
-
<schmancy-menu-item
|
|
9
|
-
<schmancy-divider></schmancy-divider>
|
|
10
|
-
<schmancy-menu-item value="item4">Item 4</schmancy-menu-item>
|
|
18
|
+
<schmancy-menu>
|
|
19
|
+
<schmancy-menu-item @click=${() => console.log('Item 1')}>Item 1</schmancy-menu-item>
|
|
20
|
+
<schmancy-menu-item @click=${() => console.log('Item 2')}>Item 2</schmancy-menu-item>
|
|
21
|
+
<schmancy-menu-item @click=${() => console.log('Item 3')}>Item 3</schmancy-menu-item>
|
|
11
22
|
</schmancy-menu>
|
|
12
23
|
|
|
13
24
|
// Menu with icons
|
|
14
25
|
<schmancy-menu>
|
|
15
|
-
<schmancy-menu-item
|
|
16
|
-
<schmancy-icon slot="
|
|
26
|
+
<schmancy-menu-item @click=${handleCopy}>
|
|
27
|
+
<schmancy-icon slot="leading">content_copy</schmancy-icon>
|
|
17
28
|
Copy
|
|
18
29
|
</schmancy-menu-item>
|
|
19
|
-
|
|
20
|
-
<schmancy-menu-item
|
|
21
|
-
<schmancy-icon slot="
|
|
30
|
+
|
|
31
|
+
<schmancy-menu-item @click=${handleCut}>
|
|
32
|
+
<schmancy-icon slot="leading">content_cut</schmancy-icon>
|
|
22
33
|
Cut
|
|
23
34
|
</schmancy-menu-item>
|
|
24
|
-
|
|
25
|
-
<schmancy-menu-item value="paste">
|
|
26
|
-
<schmancy-icon slot="prefix" icon="clipboard"></schmancy-icon>
|
|
27
|
-
Paste
|
|
28
|
-
</schmancy-menu-item>
|
|
29
|
-
</schmancy-menu>
|
|
30
35
|
|
|
31
|
-
|
|
32
|
-
<schmancy-
|
|
33
|
-
|
|
34
|
-
<schmancy-icon slot="prefix" icon="bold"></schmancy-icon>
|
|
35
|
-
Bold
|
|
36
|
-
</schmancy-menu-item>
|
|
37
|
-
|
|
38
|
-
<schmancy-menu-item value="italic" checkable>
|
|
39
|
-
<schmancy-icon slot="prefix" icon="italic"></schmancy-icon>
|
|
40
|
-
Italic
|
|
41
|
-
</schmancy-menu-item>
|
|
42
|
-
|
|
43
|
-
<schmancy-menu-item value="underline" checkable>
|
|
44
|
-
<schmancy-icon slot="prefix" icon="underline"></schmancy-icon>
|
|
45
|
-
Underline
|
|
36
|
+
<schmancy-menu-item @click=${handlePaste}>
|
|
37
|
+
<schmancy-icon slot="leading">content_paste</schmancy-icon>
|
|
38
|
+
Paste
|
|
46
39
|
</schmancy-menu-item>
|
|
47
40
|
</schmancy-menu>
|
|
48
41
|
|
|
49
|
-
// Menu
|
|
50
|
-
<schmancy-
|
|
51
|
-
<schmancy-button slot="
|
|
52
|
-
|
|
42
|
+
// Menu with custom trigger button
|
|
43
|
+
<schmancy-menu>
|
|
44
|
+
<schmancy-button slot="button" variant="filled">
|
|
45
|
+
Actions
|
|
53
46
|
</schmancy-button>
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
<schmancy-menu-item value="edit">Edit</schmancy-menu-item>
|
|
57
|
-
<schmancy-menu-item value="duplicate">Duplicate</schmancy-menu-item>
|
|
58
|
-
<schmancy-menu-item value="archive">Archive</schmancy-menu-item>
|
|
59
|
-
<schmancy-divider></schmancy-divider>
|
|
60
|
-
<schmancy-menu-item value="delete" variant="danger">Delete</schmancy-menu-item>
|
|
61
|
-
</schmancy-menu>
|
|
62
|
-
</schmancy-dropdown>
|
|
63
|
-
|
|
64
|
-
// Menu Properties
|
|
65
|
-
multiple: boolean // Allow selecting multiple items
|
|
66
|
-
value: string|string[] // Selected item value(s)
|
|
67
|
-
size: string // Size: "small", "medium", "large"
|
|
68
|
-
dense: boolean // More compact appearance
|
|
69
|
-
|
|
70
|
-
// Menu Item Properties
|
|
71
|
-
value: string // Value for selection
|
|
72
|
-
disabled: boolean // Disable the item
|
|
73
|
-
selected: boolean // Whether the item is selected
|
|
74
|
-
checkable: boolean // Show checkbox/radio indicator
|
|
75
|
-
checked: boolean // Checked state for checkable items
|
|
76
|
-
variant: string // Variant: "default", "primary", "danger", etc.
|
|
77
|
-
|
|
78
|
-
// Menu Events
|
|
79
|
-
@select // Fires when item is selected, with { detail: { value, item } }
|
|
80
|
-
@change // Fires when selection changes, with { detail: { value } }
|
|
81
|
-
|
|
82
|
-
// Examples
|
|
83
|
-
// Context menu
|
|
84
|
-
<schmancy-dropdown>
|
|
85
|
-
<div
|
|
86
|
-
slot="trigger"
|
|
87
|
-
@contextmenu=${(e) => {
|
|
88
|
-
e.preventDefault();
|
|
89
|
-
dropdown.open({ x: e.clientX, y: e.clientY });
|
|
90
|
-
}}
|
|
91
|
-
style="width: 300px; height: 200px; border: 1px dashed #ccc; display: flex; align-items: center; justify-content: center;">
|
|
92
|
-
Right-click me
|
|
93
|
-
</div>
|
|
94
|
-
|
|
95
|
-
<schmancy-menu slot="content" @select=${handleContextMenuSelect}>
|
|
96
|
-
<schmancy-menu-item value="view">
|
|
97
|
-
<schmancy-icon slot="prefix" icon="eye"></schmancy-icon>
|
|
98
|
-
View
|
|
99
|
-
</schmancy-menu-item>
|
|
100
|
-
|
|
101
|
-
<schmancy-menu-item value="edit">
|
|
102
|
-
<schmancy-icon slot="prefix" icon="edit"></schmancy-icon>
|
|
103
|
-
Edit
|
|
104
|
-
</schmancy-menu-item>
|
|
105
|
-
|
|
106
|
-
<schmancy-menu-item value="share">
|
|
107
|
-
<schmancy-icon slot="prefix" icon="share"></schmancy-icon>
|
|
108
|
-
Share
|
|
109
|
-
<schmancy-icon slot="suffix" icon="external-link"></schmancy-icon>
|
|
110
|
-
</schmancy-menu-item>
|
|
111
|
-
|
|
112
|
-
<schmancy-divider></schmancy-divider>
|
|
113
|
-
|
|
114
|
-
<schmancy-menu-item value="delete" variant="danger">
|
|
115
|
-
<schmancy-icon slot="prefix" icon="trash"></schmancy-icon>
|
|
116
|
-
Delete
|
|
117
|
-
</schmancy-menu-item>
|
|
118
|
-
</schmancy-menu>
|
|
119
|
-
</schmancy-dropdown>
|
|
120
|
-
|
|
121
|
-
// Multi-select menu
|
|
122
|
-
<schmancy-menu
|
|
123
|
-
multiple
|
|
124
|
-
.value=${selectedOptions}
|
|
125
|
-
@change=${(e) => selectedOptions = e.detail.value}>
|
|
126
|
-
|
|
127
|
-
<schmancy-menu-item value="wifi" checkable>
|
|
128
|
-
<schmancy-icon slot="prefix" icon="wifi"></schmancy-icon>
|
|
129
|
-
Wi-Fi
|
|
130
|
-
</schmancy-menu-item>
|
|
131
|
-
|
|
132
|
-
<schmancy-menu-item value="bluetooth" checkable>
|
|
133
|
-
<schmancy-icon slot="prefix" icon="bluetooth"></schmancy-icon>
|
|
134
|
-
Bluetooth
|
|
135
|
-
</schmancy-menu-item>
|
|
136
|
-
|
|
137
|
-
<schmancy-menu-item value="airplane" checkable>
|
|
138
|
-
<schmancy-icon slot="prefix" icon="airplane"></schmancy-icon>
|
|
139
|
-
Airplane Mode
|
|
47
|
+
<schmancy-menu-item @click=${() => console.log('Edit')}>
|
|
48
|
+
Edit
|
|
140
49
|
</schmancy-menu-item>
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
<schmancy-icon slot="prefix" icon="map-pin"></schmancy-icon>
|
|
144
|
-
Location
|
|
50
|
+
<schmancy-menu-item @click=${() => console.log('Delete')}>
|
|
51
|
+
Delete
|
|
145
52
|
</schmancy-menu-item>
|
|
146
53
|
</schmancy-menu>
|
|
147
54
|
|
|
148
|
-
//
|
|
55
|
+
// Default icon button trigger (no button slot provided)
|
|
149
56
|
<schmancy-menu>
|
|
150
|
-
<schmancy-menu-item
|
|
151
|
-
|
|
152
|
-
New File
|
|
153
|
-
<span slot="suffix">Ctrl+N</span>
|
|
154
|
-
</schmancy-menu-item>
|
|
155
|
-
|
|
156
|
-
<schmancy-menu-item value="open">
|
|
157
|
-
<schmancy-icon slot="prefix" icon="folder-open"></schmancy-icon>
|
|
158
|
-
Open...
|
|
159
|
-
<span slot="suffix">Ctrl+O</span>
|
|
160
|
-
</schmancy-menu-item>
|
|
161
|
-
|
|
162
|
-
<schmancy-menu-item value="save">
|
|
163
|
-
<schmancy-icon slot="prefix" icon="save"></schmancy-icon>
|
|
164
|
-
Save
|
|
165
|
-
<span slot="suffix">Ctrl+S</span>
|
|
166
|
-
</schmancy-menu-item>
|
|
167
|
-
|
|
168
|
-
<schmancy-menu-item value="saveAs">
|
|
169
|
-
<schmancy-icon slot="prefix" icon="save"></schmancy-icon>
|
|
170
|
-
Save As...
|
|
171
|
-
<span slot="suffix">Ctrl+Shift+S</span>
|
|
172
|
-
</schmancy-menu-item>
|
|
173
|
-
|
|
174
|
-
<schmancy-divider></schmancy-divider>
|
|
175
|
-
|
|
176
|
-
<schmancy-menu-item value="exit">
|
|
177
|
-
<schmancy-icon slot="prefix" icon="x"></schmancy-icon>
|
|
178
|
-
Exit
|
|
179
|
-
<span slot="suffix">Alt+F4</span>
|
|
180
|
-
</schmancy-menu-item>
|
|
57
|
+
<schmancy-menu-item @click=${handleAction1}>Action 1</schmancy-menu-item>
|
|
58
|
+
<schmancy-menu-item @click=${handleAction2}>Action 2</schmancy-menu-item>
|
|
181
59
|
</schmancy-menu>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## API Reference
|
|
63
|
+
|
|
64
|
+
### Menu Component
|
|
65
|
+
|
|
66
|
+
**Slots:**
|
|
67
|
+
- `button` - Custom trigger button (defaults to icon button with more_vert if not provided)
|
|
68
|
+
- `default` - Menu items (use schmancy-menu-item components)
|
|
182
69
|
|
|
183
|
-
|
|
70
|
+
**Positioning:**
|
|
71
|
+
- Automatically positioned using $dialog service
|
|
72
|
+
- Fixed to viewport (doesn't scroll with content)
|
|
73
|
+
- Portaled to document.body for proper stacking
|
|
74
|
+
- Works in complex layouts (tables, virtualizers, etc.)
|
|
75
|
+
|
|
76
|
+
### Menu Item Component
|
|
77
|
+
|
|
78
|
+
**Slots:**
|
|
79
|
+
- `leading` - Icon or content before the text
|
|
80
|
+
- `trailing` - Icon or content after the text
|
|
81
|
+
- `default` - Main content
|
|
82
|
+
|
|
83
|
+
**Events:**
|
|
84
|
+
- `schmancy-menu-item-click` - Fired when clicked (bubbles up, auto-closes menu)
|
|
85
|
+
|
|
86
|
+
## Real-World Examples
|
|
87
|
+
|
|
88
|
+
### Menu in Table Header (sorting)
|
|
89
|
+
```js
|
|
184
90
|
<schmancy-menu>
|
|
185
|
-
<schmancy-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
91
|
+
<schmancy-icon-button slot="button" size="sm">
|
|
92
|
+
${sortDirection === 'asc' ? 'arrow_upward' : 'arrow_downward'}
|
|
93
|
+
</schmancy-icon-button>
|
|
94
|
+
${sortOptions.map(opt => html`
|
|
95
|
+
<schmancy-menu-item @click=${() => handleSort(opt.value)}>
|
|
96
|
+
${opt.active ? html`<schmancy-icon slot="start">check</schmancy-icon>` : ''}
|
|
97
|
+
${opt.label}
|
|
98
|
+
${opt.active ? html`<schmancy-icon slot="end">${direction}</schmancy-icon>` : ''}
|
|
193
99
|
</schmancy-menu-item>
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
100
|
+
`)}
|
|
101
|
+
</schmancy-menu>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Menu in Virtualized List/Table
|
|
105
|
+
Works correctly in lit-virtualizer, overflow containers, and complex layouts:
|
|
106
|
+
```js
|
|
107
|
+
<lit-virtualizer .items=${items} .renderItem=${item => html`
|
|
108
|
+
<div class="table-row">
|
|
109
|
+
<span>${item.name}</span>
|
|
110
|
+
<schmancy-menu>
|
|
111
|
+
<schmancy-menu-item @click=${() => edit(item)}>Edit</schmancy-menu-item>
|
|
112
|
+
<schmancy-menu-item @click=${() => delete(item)}>Delete</schmancy-menu-item>
|
|
113
|
+
</schmancy-menu>
|
|
114
|
+
</div>
|
|
115
|
+
`}></lit-virtualizer>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Menu in Cards
|
|
119
|
+
```js
|
|
120
|
+
<schmancy-surface type="container" class="p-6">
|
|
121
|
+
<div class="flex justify-between items-start">
|
|
122
|
+
<h3>Card Title</h3>
|
|
123
|
+
<schmancy-menu>
|
|
124
|
+
<schmancy-menu-item @click=${handleShare}>
|
|
125
|
+
<schmancy-icon slot="leading">share</schmancy-icon>
|
|
126
|
+
Share
|
|
199
127
|
</schmancy-menu-item>
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
Table
|
|
128
|
+
<schmancy-menu-item @click=${handleEdit}>
|
|
129
|
+
<schmancy-icon slot="leading">edit</schmancy-icon>
|
|
130
|
+
Edit
|
|
204
131
|
</schmancy-menu-item>
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
Chart
|
|
132
|
+
<schmancy-menu-item @click=${handleDelete}>
|
|
133
|
+
<schmancy-icon slot="leading">delete</schmancy-icon>
|
|
134
|
+
Delete
|
|
209
135
|
</schmancy-menu-item>
|
|
210
136
|
</schmancy-menu>
|
|
211
|
-
</
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
137
|
+
</div>
|
|
138
|
+
</schmancy-surface>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Implementation Notes
|
|
142
|
+
|
|
143
|
+
- Menu items are temporarily moved to dialog container when opened
|
|
144
|
+
- Items are moved back to original location when menu closes
|
|
145
|
+
- All event handlers remain functional during the move
|
|
146
|
+
- Menu positioning is handled by $dialog service using floating-ui
|
|
147
|
+
- No need to manage z-index or positioning manually
|
|
217
148
|
```
|