@mhmo91/schmancy 0.4.23 → 0.4.24
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/select.md +35 -0
- package/ai/sheet.md +422 -85
- package/ai/tabs.md +186 -63
- package/dist/ai/select.md +35 -0
- package/dist/ai/sheet.md +422 -85
- package/dist/ai/tabs.md +186 -63
- package/dist/{animated-text-Be4toKE0.cjs → animated-text-BitOmeE1.cjs} +2 -2
- package/dist/{animated-text-Be4toKE0.cjs.map → animated-text-BitOmeE1.cjs.map} +1 -1
- package/dist/{animated-text-CNPSIIYg.js → animated-text-DcLpvyCq.js} +3 -3
- package/dist/{animated-text-CNPSIIYg.js.map → animated-text-DcLpvyCq.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-YKEQV9hc.cjs → area.component-BTLn3oIv.cjs} +2 -2
- package/dist/{area.component-YKEQV9hc.cjs.map → area.component-BTLn3oIv.cjs.map} +1 -1
- package/dist/{area.component-i-mmh5is.js → area.component-xbNRrst9.js} +3 -3
- package/dist/{area.component-i-mmh5is.js.map → area.component-xbNRrst9.js.map} +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-EapOt3ES.js → autocomplete-BqRrw118.js} +3 -3
- package/dist/{autocomplete-EapOt3ES.js.map → autocomplete-BqRrw118.js.map} +1 -1
- package/dist/{autocomplete-C0EU8KiN.cjs → autocomplete-Dvc06UNM.cjs} +2 -2
- package/dist/{autocomplete-C0EU8KiN.cjs.map → autocomplete-Dvc06UNM.cjs.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-D1ojwes6.cjs → avatar-CP5pbPbp.cjs} +12 -18
- package/dist/avatar-CP5pbPbp.cjs.map +1 -0
- package/dist/{avatar-DzJUPJtZ.js → avatar-Cb_cbT8R.js} +60 -66
- package/dist/avatar-Cb_cbT8R.js.map +1 -0
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-DPTS3Kpw.js → boat-ByFTBKD2.js} +2 -2
- package/dist/{boat-DPTS3Kpw.js.map → boat-ByFTBKD2.js.map} +1 -1
- package/dist/{boat-C59hzqZ0.cjs → boat-Dtum9CaN.cjs} +2 -2
- package/dist/{boat-C59hzqZ0.cjs.map → boat-Dtum9CaN.cjs.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-C-kjO37F.cjs → checkbox-220X9LTx.cjs} +2 -2
- package/dist/{checkbox-C-kjO37F.cjs.map → checkbox-220X9LTx.cjs.map} +1 -1
- package/dist/{checkbox-B85eeKqn.js → checkbox-Dq0Lm3AM.js} +2 -2
- package/dist/{checkbox-B85eeKqn.js.map → checkbox-Dq0Lm3AM.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-BNRMzGrx.js → chips-aRU1fwEV.js} +3 -3
- package/dist/{chips-BNRMzGrx.js.map → chips-aRU1fwEV.js.map} +1 -1
- package/dist/{chips-DW6y4ZMs.cjs → chips-jORxgpG7.cjs} +2 -2
- package/dist/{chips-DW6y4ZMs.cjs.map → chips-jORxgpG7.cjs.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +1 -1
- package/dist/{circular-progress-BridvYCS.cjs → circular-progress-DMccmWrI.cjs} +2 -2
- package/dist/{circular-progress-BridvYCS.cjs.map → circular-progress-DMccmWrI.cjs.map} +1 -1
- package/dist/{circular-progress-Cl_dXUPO.js → circular-progress-Dis30LMa.js} +3 -3
- package/dist/{circular-progress-Cl_dXUPO.js.map → circular-progress-Dis30LMa.js.map} +1 -1
- package/dist/circular-progress.cjs +1 -1
- package/dist/circular-progress.js +1 -1
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/{code-preview-B8X7JaxA.js → code-preview-BwIb73Yd.js} +2 -2
- package/dist/{code-preview-B8X7JaxA.js.map → code-preview-BwIb73Yd.js.map} +1 -1
- package/dist/{code-preview-B0oGIV9F.cjs → code-preview-CCHcWZvS.cjs} +2 -2
- package/dist/{code-preview-B0oGIV9F.cjs.map → code-preview-CCHcWZvS.cjs.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{date-range-9sVFbxK0.js → date-range-CA_4vjWe.js} +3 -3
- package/dist/{date-range-9sVFbxK0.js.map → date-range-CA_4vjWe.js.map} +1 -1
- package/dist/{date-range-DqaB9kwM.cjs → date-range-DinaPWK0.cjs} +2 -2
- package/dist/{date-range-DqaB9kwM.cjs.map → date-range-DinaPWK0.cjs.map} +1 -1
- package/dist/{date-range-inline-DGRKHzTX.cjs → date-range-inline-CGMvaSeh.cjs} +2 -2
- package/dist/{date-range-inline-DGRKHzTX.cjs.map → date-range-inline-CGMvaSeh.cjs.map} +1 -1
- package/dist/{date-range-inline-Bqnc8wBb.js → date-range-inline-DFjyAvPv.js} +3 -3
- package/dist/{date-range-inline-Bqnc8wBb.js.map → date-range-inline-DFjyAvPv.js.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-u5isp6Vb.js → delay-BJwsHbg3.js} +2 -2
- package/dist/{delay-u5isp6Vb.js.map → delay-BJwsHbg3.js.map} +1 -1
- package/dist/{delay-ClP0gwsX.cjs → delay-CHAH30wI.cjs} +2 -2
- package/dist/{delay-ClP0gwsX.cjs.map → delay-CHAH30wI.cjs.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{dialog-content-CGgHTvcB.cjs → dialog-content-Bp2kwzxD.cjs} +2 -2
- package/dist/{dialog-content-CGgHTvcB.cjs.map → dialog-content-Bp2kwzxD.cjs.map} +1 -1
- package/dist/{dialog-content-ZpgRQC1m.js → dialog-content-CEZqJRzH.js} +3 -3
- package/dist/{dialog-content-ZpgRQC1m.js.map → dialog-content-CEZqJRzH.js.map} +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +1 -1
- package/dist/{divider-CIXGsKd7.cjs → divider-BEVgt1wl.cjs} +2 -2
- package/dist/{divider-CIXGsKd7.cjs.map → divider-BEVgt1wl.cjs.map} +1 -1
- package/dist/{divider-BK4PNB76.js → divider-DfetUf4S.js} +3 -3
- package/dist/{divider-BK4PNB76.js.map → divider-DfetUf4S.js.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-CeYUqD56.cjs → dropdown-content-CERnSXjI.cjs} +2 -2
- package/dist/{dropdown-content-CeYUqD56.cjs.map → dropdown-content-CERnSXjI.cjs.map} +1 -1
- package/dist/{dropdown-content-DbHKYDCS.js → dropdown-content-TJmZ3rpA.js} +3 -3
- package/dist/{dropdown-content-DbHKYDCS.js.map → dropdown-content-TJmZ3rpA.js.map} +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{flex-Dub7SPI7.cjs → flex-ByanQCYb.cjs} +2 -2
- package/dist/{flex-Dub7SPI7.cjs.map → flex-ByanQCYb.cjs.map} +1 -1
- package/dist/{flex-JcwYdb2G.js → flex-CXMNh-nH.js} +2 -2
- package/dist/{flex-JcwYdb2G.js.map → flex-CXMNh-nH.js.map} +1 -1
- package/dist/{form-CMv0SQko.js → form-Boc5Pqhf.js} +2 -2
- package/dist/{form-CMv0SQko.js.map → form-Boc5Pqhf.js.map} +1 -1
- package/dist/{form-DKF6UgIS.cjs → form-lhQx_Ry0.cjs} +2 -2
- package/dist/{form-DKF6UgIS.cjs.map → form-lhQx_Ry0.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formField.mixin-D0GeY28y.js → formField.mixin-CX7_nvVy.js} +2 -2
- package/dist/{formField.mixin-D0GeY28y.js.map → formField.mixin-CX7_nvVy.js.map} +1 -1
- package/dist/{formField.mixin-BrHllh45.cjs → formField.mixin-DhiLSVHT.cjs} +2 -2
- package/dist/{formField.mixin-BrHllh45.cjs.map → formField.mixin-DhiLSVHT.cjs.map} +1 -1
- package/dist/{icon--s5dpU1N.js → icon-BZw88sCH.js} +2 -2
- package/dist/{icon--s5dpU1N.js.map → icon-BZw88sCH.js.map} +1 -1
- package/dist/{icon-CJe2TSk1.cjs → icon-D1qw18N6.cjs} +2 -2
- package/dist/{icon-CJe2TSk1.cjs.map → icon-D1qw18N6.cjs.map} +1 -1
- package/dist/{icon-button-x5uqpaeg.cjs → icon-button-DBvZApEC.cjs} +2 -2
- package/dist/{icon-button-x5uqpaeg.cjs.map → icon-button-DBvZApEC.cjs.map} +1 -1
- package/dist/{icon-button-Ckd9jE-a.js → icon-button-TbwQrO1b.js} +3 -3
- package/dist/{icon-button-Ckd9jE-a.js.map → icon-button-TbwQrO1b.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +134 -133
- package/dist/{input-DHNBYBq4.js → input-BUtEXu3y.js} +3 -3
- package/dist/{input-DHNBYBq4.js.map → input-BUtEXu3y.js.map} +1 -1
- package/dist/{input-BN9xQTH0.cjs → input-C0F9cNoD.cjs} +2 -2
- package/dist/{input-BN9xQTH0.cjs.map → input-C0F9cNoD.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-rGydduh7.js → list-BCD8h2Do.js} +2 -2
- package/dist/{list-rGydduh7.js.map → list-BCD8h2Do.js.map} +1 -1
- package/dist/{list-DZAZpM5m.cjs → list-Bz6tq7ZP.cjs} +2 -2
- package/dist/{list-DZAZpM5m.cjs.map → list-Bz6tq7ZP.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-B1eYYBf4.cjs → litElement.mixin-CII9bbap.cjs} +2 -2
- package/dist/{litElement.mixin-B1eYYBf4.cjs.map → litElement.mixin-CII9bbap.cjs.map} +1 -1
- package/dist/{litElement.mixin-Cq-COufw.js → litElement.mixin-DGeprHKB.js} +2 -2
- package/dist/{litElement.mixin-Cq-COufw.js.map → litElement.mixin-DGeprHKB.js.map} +1 -1
- package/dist/{media-hg61JS4R.cjs → media-CBLuAmNZ.cjs} +2 -2
- package/dist/{media-hg61JS4R.cjs.map → media-CBLuAmNZ.cjs.map} +1 -1
- package/dist/{media-DHgb7H9L.js → media-D6ba0wB1.js} +2 -2
- package/dist/{media-DHgb7H9L.js.map → media-D6ba0wB1.js.map} +1 -1
- package/dist/{menu-D5aDG-Rp.cjs → menu-BDQr8EZ1.cjs} +2 -2
- package/dist/{menu-D5aDG-Rp.cjs.map → menu-BDQr8EZ1.cjs.map} +1 -1
- package/dist/{menu-DvZSvoOx.js → menu-C0SauakY.js} +3 -3
- package/dist/{menu-DvZSvoOx.js.map → menu-C0SauakY.js.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/{notification-service-BzzXjm4l.cjs → notification-service-B1f848tO.cjs} +2 -2
- package/dist/{notification-service-BzzXjm4l.cjs.map → notification-service-B1f848tO.cjs.map} +1 -1
- package/dist/{notification-service-DKHubhXv.js → notification-service-X8mRASdk.js} +3 -3
- package/dist/{notification-service-DKHubhXv.js.map → notification-service-X8mRASdk.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-T6zGawbH.js → option-DVlCqux7.js} +2 -2
- package/dist/{option-T6zGawbH.js.map → option-DVlCqux7.js.map} +1 -1
- package/dist/{option-DqN5-RK7.cjs → option-ckV22mLf.cjs} +2 -2
- package/dist/{option-DqN5-RK7.cjs.map → option-ckV22mLf.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{payment-card-form-C42icpX4.cjs → payment-card-form-BUsPCZPp.cjs} +2 -2
- package/dist/{payment-card-form-C42icpX4.cjs.map → payment-card-form-BUsPCZPp.cjs.map} +1 -1
- package/dist/{payment-card-form-GEOaUypQ.js → payment-card-form-D7PV8spa.js} +3 -3
- package/dist/{payment-card-form-GEOaUypQ.js.map → payment-card-form-D7PV8spa.js.map} +1 -1
- package/dist/{progress-EL16etnw.js → progress-BZ6AFT0f.js} +2 -2
- package/dist/{progress-EL16etnw.js.map → progress-BZ6AFT0f.js.map} +1 -1
- package/dist/{progress-CL35MIi9.cjs → progress-CABg45XF.cjs} +2 -2
- package/dist/{progress-CL35MIi9.cjs.map → progress-CABg45XF.cjs.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-button-BQ7snEVj.js → radio-button-D4Y1bWGN.js} +3 -3
- package/dist/{radio-button-BQ7snEVj.js.map → radio-button-D4Y1bWGN.js.map} +1 -1
- package/dist/{radio-button-DrSJB4B-.cjs → radio-button-DQ4VclEZ.cjs} +2 -2
- package/dist/{radio-button-DrSJB4B-.cjs.map → radio-button-DQ4VclEZ.cjs.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{schmancy-steps-container-2WW-9LYL.js → schmancy-steps-container-BskkdQwD.js} +2 -2
- package/dist/{schmancy-steps-container-2WW-9LYL.js.map → schmancy-steps-container-BskkdQwD.js.map} +1 -1
- package/dist/{schmancy-steps-container-C_HHZFeb.cjs → schmancy-steps-container-CZ0upElE.cjs} +2 -2
- package/dist/{schmancy-steps-container-C_HHZFeb.cjs.map → schmancy-steps-container-CZ0upElE.cjs.map} +1 -1
- package/dist/select-DfQogfes.cjs +57 -0
- package/dist/{select-Bl8FO2kb.js.map → select-DfQogfes.cjs.map} +1 -1
- package/dist/{select-Bl8FO2kb.js → select-wui4bIUE.js} +23 -20
- package/dist/select-wui4bIUE.js.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.js +3 -2
- package/dist/{selector-hook-DPe2CGKx.js → selector-hook-DL0SIQiY.js} +16 -16
- package/dist/{selector-hook-DPe2CGKx.js.map → selector-hook-DL0SIQiY.js.map} +1 -1
- package/dist/{sheet-BVr3bq9r.cjs → sheet-DMOsLeJL.cjs} +2 -2
- package/dist/{sheet-BVr3bq9r.cjs.map → sheet-DMOsLeJL.cjs.map} +1 -1
- package/dist/{sheet-CdcA_ZIk.js → sheet-DmrPnCAk.js} +4 -4
- package/dist/{sheet-CdcA_ZIk.js.map → sheet-DmrPnCAk.js.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +7 -6
- package/dist/{sheet.service-CKznL-dB.js → sheet.service-22gvsyq8.js} +82 -80
- package/dist/{sheet.service-CKznL-dB.js.map → sheet.service-22gvsyq8.js.map} +1 -1
- package/dist/{sheet.service-D_jE8pUg.cjs → sheet.service-sSYoAEbY.cjs} +3 -3
- package/dist/{sheet.service-D_jE8pUg.cjs.map → sheet.service-sSYoAEbY.cjs.map} +1 -1
- package/dist/{slider-DX-XUnE-.cjs → slider-C2oEvRAS.cjs} +2 -2
- package/dist/{slider-DX-XUnE-.cjs.map → slider-C2oEvRAS.cjs.map} +1 -1
- package/dist/{slider-4ggti1yr.js → slider-Dwm1KfNL.js} +3 -3
- package/dist/{slider-4ggti1yr.js.map → slider-Dwm1KfNL.js.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-BPqLh7JL.js → spinner-Bh6XkC88.js} +2 -2
- package/dist/{spinner-BPqLh7JL.js.map → spinner-Bh6XkC88.js.map} +1 -1
- package/dist/{spinner-Cq8tY2xk.cjs → spinner-DKgZemVU.cjs} +2 -2
- package/dist/{spinner-Cq8tY2xk.cjs.map → spinner-DKgZemVU.cjs.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/store.js +1 -1
- package/dist/{surface-YyZ8eXfj.cjs → surface-DIIUamff.cjs} +2 -2
- package/dist/{surface-YyZ8eXfj.cjs.map → surface-DIIUamff.cjs.map} +1 -1
- package/dist/{surface-1xboRERM.js → surface-DhiuAGb8.js} +2 -2
- package/dist/{surface-1xboRERM.js.map → surface-DhiuAGb8.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-DpXmflf7.cjs → table-BrAoSQhN.cjs} +2 -2
- package/dist/{table-DpXmflf7.cjs.map → table-BrAoSQhN.cjs.map} +1 -1
- package/dist/{table-C6EWKqDY.js → table-DSZ9kmUG.js} +2 -2
- package/dist/{table-C6EWKqDY.js.map → table-DSZ9kmUG.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-AFzKAP2D.js → tabs-compatibility-B7aJnQ0X.js} +2 -2
- package/dist/{tabs-compatibility-AFzKAP2D.js.map → tabs-compatibility-B7aJnQ0X.js.map} +1 -1
- package/dist/{tabs-compatibility-ThgWuSrK.cjs → tabs-compatibility-Ck74XeID.cjs} +2 -2
- package/dist/{tabs-compatibility-ThgWuSrK.cjs.map → tabs-compatibility-Ck74XeID.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-CBu1BEQZ.cjs +2 -0
- package/dist/{tailwind.mixin-DNME2oUL.cjs.map → tailwind.mixin-CBu1BEQZ.cjs.map} +1 -1
- package/dist/tailwind.mixin-DWhCm94g.js +43 -0
- package/dist/{tailwind.mixin-epCxS6FK.js.map → tailwind.mixin-DWhCm94g.js.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-JO7OVdfk.js → textarea-Bq0XdGaH.js} +2 -2
- package/dist/{textarea-JO7OVdfk.js.map → textarea-Bq0XdGaH.js.map} +1 -1
- package/dist/{textarea-B_TlKSop.cjs → textarea-CGTMdhoF.cjs} +2 -2
- package/dist/{textarea-B_TlKSop.cjs.map → textarea-CGTMdhoF.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-DnrKANEK.cjs → theme-button-CznhJ8g_.cjs} +2 -2
- package/dist/{theme-button-DnrKANEK.cjs.map → theme-button-CznhJ8g_.cjs.map} +1 -1
- package/dist/{theme-button-C8cK7un6.js → theme-button-DYoygmRA.js} +2 -2
- package/dist/{theme-button-C8cK7un6.js.map → theme-button-DYoygmRA.js.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/theme.js +1 -1
- package/dist/{timezone-C56jMhLK.cjs → timezone-BCGcdasU.cjs} +2 -2
- package/dist/{timezone-C56jMhLK.cjs.map → timezone-BCGcdasU.cjs.map} +1 -1
- package/dist/{timezone-CEEEd-9_.js → timezone-Co7gqqQt.js} +3 -3
- package/dist/{timezone-CEEEd-9_.js.map → timezone-Co7gqqQt.js.map} +1 -1
- package/dist/{tooltip-twQMYpmk.cjs → tooltip-Bqa0D34J.cjs} +2 -2
- package/dist/{tooltip-twQMYpmk.cjs.map → tooltip-Bqa0D34J.cjs.map} +1 -1
- package/dist/{tooltip-CnuYee5c.js → tooltip-DBuaAFmK.js} +2 -2
- package/dist/{tooltip-CnuYee5c.js.map → tooltip-DBuaAFmK.js.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-Dv5R6kdP.cjs → tree-CFeXYaJy.cjs} +2 -2
- package/dist/{tree-Dv5R6kdP.cjs.map → tree-CFeXYaJy.cjs.map} +1 -1
- package/dist/{tree-CfnCGGn7.js → tree-CfE695gp.js} +2 -2
- package/dist/{tree-CfnCGGn7.js.map → tree-CfE695gp.js.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-egr1HiFJ.cjs → typewriter-B6Jb22Pe.cjs} +2 -2
- package/dist/{typewriter-egr1HiFJ.cjs.map → typewriter-B6Jb22Pe.cjs.map} +1 -1
- package/dist/{typewriter-DAxRjeRy.js → typewriter-BZ_adVXB.js} +4 -4
- package/dist/{typewriter-DAxRjeRy.js.map → typewriter-BZ_adVXB.js.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-De5UXL0j.js → typography-DI5RXpWs.js} +2 -2
- package/dist/{typography-De5UXL0j.js.map → typography-DI5RXpWs.js.map} +1 -1
- package/dist/{typography-DVZ2ezpU.cjs → typography-DvVeO1a_.cjs} +2 -2
- package/dist/{typography-DVZ2ezpU.cjs.map → typography-DvVeO1a_.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/package.json +1 -1
- package/types/src/sheet/sheet.service.d.ts +1 -0
- package/dist/avatar-D1ojwes6.cjs.map +0 -1
- package/dist/avatar-DzJUPJtZ.js.map +0 -1
- package/dist/select-BHRtVoTo.cjs +0 -56
- package/dist/select-BHRtVoTo.cjs.map +0 -1
- package/dist/tailwind.mixin-DNME2oUL.cjs +0 -2
- package/dist/tailwind.mixin-epCxS6FK.js +0 -43
package/ai/select.md
CHANGED
|
@@ -61,6 +61,40 @@
|
|
|
61
61
|
<!-- Many options -->
|
|
62
62
|
</schmancy-select>
|
|
63
63
|
|
|
64
|
+
// Different sizes
|
|
65
|
+
<schmancy-select size="sm" label="Small Select">
|
|
66
|
+
<schmancy-option value="1">Option 1</schmancy-option>
|
|
67
|
+
<schmancy-option value="2">Option 2</schmancy-option>
|
|
68
|
+
</schmancy-select>
|
|
69
|
+
|
|
70
|
+
<schmancy-select size="md" label="Medium Select (default)">
|
|
71
|
+
<schmancy-option value="1">Option 1</schmancy-option>
|
|
72
|
+
<schmancy-option value="2">Option 2</schmancy-option>
|
|
73
|
+
</schmancy-select>
|
|
74
|
+
|
|
75
|
+
<schmancy-select size="lg" label="Large Select">
|
|
76
|
+
<schmancy-option value="1">Option 1</schmancy-option>
|
|
77
|
+
<schmancy-option value="2">Option 2</schmancy-option>
|
|
78
|
+
</schmancy-select>
|
|
79
|
+
|
|
80
|
+
// Aligned with input (same size)
|
|
81
|
+
<div style="display: flex; gap: 16px;">
|
|
82
|
+
<schmancy-input
|
|
83
|
+
size="md"
|
|
84
|
+
label="First Name"
|
|
85
|
+
placeholder="Enter first name">
|
|
86
|
+
</schmancy-input>
|
|
87
|
+
|
|
88
|
+
<schmancy-select
|
|
89
|
+
size="md"
|
|
90
|
+
label="Country"
|
|
91
|
+
placeholder="Select country">
|
|
92
|
+
<schmancy-option value="us">United States</schmancy-option>
|
|
93
|
+
<schmancy-option value="uk">United Kingdom</schmancy-option>
|
|
94
|
+
<schmancy-option value="ca">Canada</schmancy-option>
|
|
95
|
+
</schmancy-select>
|
|
96
|
+
</div>
|
|
97
|
+
|
|
64
98
|
// Select Methods
|
|
65
99
|
select.focus() -> void // Focus the select
|
|
66
100
|
select.blur() -> void // Remove focus
|
|
@@ -80,6 +114,7 @@ required: boolean // Whether a selection is required
|
|
|
80
114
|
error: string // Error message to display
|
|
81
115
|
searchable: boolean // Whether to allow searching within options
|
|
82
116
|
open: boolean // Whether the dropdown is open
|
|
117
|
+
size: 'sm' | 'md' | 'lg' // Size of the select (default: 'md')
|
|
83
118
|
|
|
84
119
|
// Option Properties
|
|
85
120
|
value: string // Value of this option
|
package/ai/sheet.md
CHANGED
|
@@ -1,122 +1,459 @@
|
|
|
1
1
|
# Schmancy Sheet - AI Reference
|
|
2
2
|
|
|
3
|
+
The sheet component provides a sliding panel overlay that can be used for forms, details views, or any content that needs to be displayed in a drawer-style interface.
|
|
4
|
+
|
|
3
5
|
```js
|
|
4
|
-
//
|
|
5
|
-
import {
|
|
6
|
+
// Import Options
|
|
7
|
+
import { sheet } from '@mhmo91/schmancy'; // Legacy import
|
|
8
|
+
import { $sheet } from '@mhmo91/schmancy'; // New recommended import
|
|
6
9
|
|
|
7
|
-
//
|
|
10
|
+
// Sheet Service API
|
|
8
11
|
$sheet.open({
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
afterOpen?: Function,
|
|
20
|
-
beforeClose?: Function,
|
|
21
|
-
afterClose?: Function
|
|
22
|
-
}
|
|
23
|
-
}) -> SheetRef
|
|
12
|
+
component: HTMLElement | TemplateResult, // Content to display
|
|
13
|
+
uid?: string, // Unique identifier for the sheet
|
|
14
|
+
position?: 'side' | 'bottom', // Position (default: responsive based on screen size)
|
|
15
|
+
persist?: boolean, // Keep sheet in DOM after closing (default: false)
|
|
16
|
+
close?: () => void, // Callback when sheet closes
|
|
17
|
+
lock?: boolean, // Prevent dismissal via ESC/overlay click (default: false)
|
|
18
|
+
handleHistory?: boolean, // Integrate with browser back button (default: true)
|
|
19
|
+
title?: string, // Sheet title
|
|
20
|
+
header?: 'hidden' | 'visible' // Header visibility (default: 'visible')
|
|
21
|
+
}) -> void
|
|
24
22
|
|
|
25
|
-
//
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
// Service Methods
|
|
24
|
+
$sheet.dismiss(uid?: string) // Close specific sheet or most recent if no uid
|
|
25
|
+
$sheet.isOpen(uid: string) // Check if a sheet is open
|
|
26
|
+
$sheet.closeAll() // Close all open sheets
|
|
27
|
+
|
|
28
|
+
// Position Enum
|
|
29
|
+
SchmancySheetPosition.Side // Side panel (desktop)
|
|
30
|
+
SchmancySheetPosition.Bottom // Bottom sheet (mobile)
|
|
31
31
|
|
|
32
|
-
// Sheet Component
|
|
32
|
+
// Sheet Component (Direct Usage)
|
|
33
33
|
<schmancy-sheet
|
|
34
|
+
uid="unique-id"
|
|
35
|
+
position="side|bottom"
|
|
36
|
+
open?
|
|
37
|
+
persist?
|
|
38
|
+
lock?
|
|
39
|
+
handleHistory?
|
|
34
40
|
title="Sheet Title"
|
|
35
|
-
|
|
36
|
-
width="600px"
|
|
37
|
-
height="auto"
|
|
38
|
-
closable?
|
|
39
|
-
backdrop?
|
|
41
|
+
header="visible|hidden"
|
|
40
42
|
@close=${handleClose}>
|
|
41
43
|
|
|
42
|
-
|
|
43
|
-
<!-- Custom header content -->
|
|
44
|
-
</div>
|
|
45
|
-
|
|
46
|
-
<!-- Main content -->
|
|
44
|
+
<!-- Main content goes in default slot -->
|
|
47
45
|
<div>Sheet content goes here</div>
|
|
48
|
-
|
|
49
|
-
<div slot="footer">
|
|
50
|
-
<!-- Footer content -->
|
|
51
|
-
<schmancy-button @click=${closeSheet}>Close</schmancy-button>
|
|
52
|
-
</div>
|
|
53
46
|
</schmancy-sheet>
|
|
54
47
|
|
|
55
48
|
// Sheet Header Component
|
|
56
49
|
<schmancy-sheet-header
|
|
57
50
|
title="Sheet Title"
|
|
58
|
-
closable?
|
|
59
51
|
@close=${handleClose}>
|
|
60
|
-
|
|
52
|
+
<schmancy-icon-button slot="trailing">more_vert</schmancy-icon-button>
|
|
61
53
|
</schmancy-sheet-header>
|
|
62
54
|
|
|
63
|
-
// Sheet Hook (for programmatic usage)
|
|
64
|
-
const [openSheet, SheetComponent] = useSheet({
|
|
65
|
-
title: "Sheet Title",
|
|
66
|
-
content: () => html`<div>Sheet content</div>`,
|
|
67
|
-
position: "right"
|
|
68
|
-
});
|
|
69
|
-
|
|
70
55
|
// Examples
|
|
71
|
-
|
|
56
|
+
|
|
57
|
+
// 1. Basic Sheet with Form
|
|
72
58
|
$sheet.open({
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
59
|
+
component: html`
|
|
60
|
+
<div class="p-6">
|
|
61
|
+
<schmancy-typography type="headline" token="md" class="mb-4">
|
|
62
|
+
User Details
|
|
63
|
+
</schmancy-typography>
|
|
76
64
|
<schmancy-form>
|
|
77
65
|
<schmancy-input label="Name" value="John Doe"></schmancy-input>
|
|
78
66
|
<schmancy-input label="Email" value="john@example.com"></schmancy-input>
|
|
67
|
+
<schmancy-button type="submit">Save</schmancy-button>
|
|
79
68
|
</schmancy-form>
|
|
80
69
|
</div>
|
|
81
70
|
`,
|
|
82
|
-
|
|
71
|
+
title: "Edit User"
|
|
83
72
|
});
|
|
84
73
|
|
|
85
|
-
// Using
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
74
|
+
// 2. Using HTMLElement Component
|
|
75
|
+
const myComponent = document.createElement('my-custom-element');
|
|
76
|
+
$sheet.open({
|
|
77
|
+
component: myComponent,
|
|
78
|
+
uid: 'my-custom-element', // Will reuse existing sheet if already open
|
|
79
|
+
persist: true, // Keep in DOM after closing
|
|
80
|
+
title: "Custom Component"
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
// 3. Sheet with Lock (cannot be dismissed by ESC or clicking outside)
|
|
84
|
+
$sheet.open({
|
|
85
|
+
component: html`
|
|
86
|
+
<div class="p-6">
|
|
87
|
+
<schmancy-typography type="body" token="lg">
|
|
88
|
+
This action requires confirmation. Please complete the form.
|
|
89
|
+
</schmancy-typography>
|
|
90
|
+
<schmancy-button @click=${() => $sheet.dismiss()}>
|
|
91
|
+
Complete Action
|
|
92
|
+
</schmancy-button>
|
|
93
|
+
</div>
|
|
94
|
+
`,
|
|
95
|
+
lock: true,
|
|
96
|
+
title: "Required Action"
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
// 4. Bottom Sheet (Mobile Pattern)
|
|
100
|
+
$sheet.open({
|
|
101
|
+
component: html`
|
|
102
|
+
<schmancy-list>
|
|
103
|
+
<schmancy-list-item @click=${() => handleShare('email')}>
|
|
104
|
+
<schmancy-icon slot="start">email</schmancy-icon>
|
|
105
|
+
Share via Email
|
|
106
|
+
</schmancy-list-item>
|
|
107
|
+
<schmancy-list-item @click=${() => handleShare('link')}>
|
|
108
|
+
<schmancy-icon slot="start">link</schmancy-icon>
|
|
109
|
+
Copy Link
|
|
110
|
+
</schmancy-list-item>
|
|
111
|
+
</schmancy-list>
|
|
112
|
+
`,
|
|
113
|
+
position: 'bottom',
|
|
114
|
+
title: "Share"
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
// 5. Programmatic Control
|
|
118
|
+
// Open a sheet and store reference
|
|
119
|
+
const uid = 'settings-sheet';
|
|
120
|
+
$sheet.open({
|
|
121
|
+
component: html`<settings-panel></settings-panel>`,
|
|
122
|
+
uid: uid,
|
|
123
|
+
title: "Settings"
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
// Check if open
|
|
127
|
+
if ($sheet.isOpen(uid)) {
|
|
128
|
+
console.log('Settings sheet is open');
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Close specific sheet
|
|
132
|
+
$sheet.dismiss(uid);
|
|
133
|
+
|
|
134
|
+
// Close all sheets
|
|
135
|
+
$sheet.closeAll();
|
|
136
|
+
|
|
137
|
+
// 6. Sheet with Custom Close Handler
|
|
138
|
+
$sheet.open({
|
|
139
|
+
component: html`
|
|
140
|
+
<div class="p-6">
|
|
141
|
+
<schmancy-form @submit=${async (e) => {
|
|
142
|
+
const values = e.detail.values;
|
|
143
|
+
await saveData(values);
|
|
144
|
+
$sheet.dismiss(); // Close after save
|
|
145
|
+
}}>
|
|
146
|
+
<schmancy-input name="title" label="Title" required></schmancy-input>
|
|
147
|
+
<schmancy-textarea name="description" label="Description"></schmancy-textarea>
|
|
148
|
+
<div class="flex gap-2 mt-4">
|
|
149
|
+
<schmancy-button type="submit">Save</schmancy-button>
|
|
150
|
+
<schmancy-button type="button" variant="text" @click=${() => $sheet.dismiss()}>
|
|
151
|
+
Cancel
|
|
152
|
+
</schmancy-button>
|
|
153
|
+
</div>
|
|
154
|
+
</schmancy-form>
|
|
155
|
+
</div>
|
|
156
|
+
`,
|
|
157
|
+
title: "New Item",
|
|
158
|
+
close: () => {
|
|
159
|
+
// Optional cleanup when sheet closes
|
|
160
|
+
console.log('Sheet closed');
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
// 7. Responsive Sheet (auto-adjusts position)
|
|
165
|
+
$sheet.open({
|
|
166
|
+
component: html`<product-details .product=${product}></product-details>`,
|
|
167
|
+
// Position will be 'side' on desktop, 'bottom' on mobile
|
|
168
|
+
title: "Product Details"
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
// 8. No Browser History Integration
|
|
172
|
+
$sheet.open({
|
|
173
|
+
component: html`<quick-actions></quick-actions>`,
|
|
174
|
+
handleHistory: false, // Won't add to browser history
|
|
175
|
+
title: "Quick Actions"
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
// 9. Hidden Header
|
|
179
|
+
$sheet.open({
|
|
180
|
+
component: html`
|
|
181
|
+
<div class="p-4">
|
|
182
|
+
<div class="flex justify-between items-center mb-4">
|
|
183
|
+
<schmancy-typography type="headline" token="sm">Custom Header</schmancy-typography>
|
|
184
|
+
<schmancy-icon-button @click=${() => $sheet.dismiss()}>close</schmancy-icon-button>
|
|
100
185
|
</div>
|
|
101
|
-
|
|
102
|
-
|
|
186
|
+
<div>Content with custom header layout</div>
|
|
187
|
+
</div>
|
|
188
|
+
`,
|
|
189
|
+
header: 'hidden' // Hide default header
|
|
103
190
|
});
|
|
104
191
|
|
|
105
|
-
//
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
position="right"
|
|
109
|
-
width="400px"
|
|
110
|
-
@close=${() => this.sheetOpen = false}>
|
|
192
|
+
// 10. Sheet with Loading State
|
|
193
|
+
class ProductEditor extends LitElement {
|
|
194
|
+
@state() loading = false;
|
|
111
195
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
196
|
+
async saveProduct(values) {
|
|
197
|
+
this.loading = true;
|
|
198
|
+
try {
|
|
199
|
+
await api.saveProduct(values);
|
|
200
|
+
$sheet.dismiss();
|
|
201
|
+
} finally {
|
|
202
|
+
this.loading = false;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
render() {
|
|
207
|
+
return html`
|
|
208
|
+
<schmancy-form @submit=${(e) => this.saveProduct(e.detail.values)}>
|
|
209
|
+
<schmancy-input name="name" label="Product Name" required></schmancy-input>
|
|
210
|
+
<schmancy-input name="price" label="Price" type="number" required></schmancy-input>
|
|
211
|
+
<schmancy-button type="submit" .loading=${this.loading}>
|
|
212
|
+
Save Product
|
|
213
|
+
</schmancy-button>
|
|
214
|
+
</schmancy-form>
|
|
215
|
+
`;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
$sheet.open({
|
|
220
|
+
component: new ProductEditor(),
|
|
221
|
+
uid: 'product-editor',
|
|
222
|
+
title: "Edit Product"
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
// 11. Nested Sheets
|
|
226
|
+
$sheet.open({
|
|
227
|
+
component: html`
|
|
228
|
+
<div class="p-6">
|
|
229
|
+
<schmancy-button @click=${() => {
|
|
230
|
+
// Open another sheet on top
|
|
231
|
+
$sheet.open({
|
|
232
|
+
component: html`<color-picker @select=${(e) => {
|
|
233
|
+
selectedColor = e.detail.color;
|
|
234
|
+
$sheet.dismiss('color-picker');
|
|
235
|
+
}}></color-picker>`,
|
|
236
|
+
uid: 'color-picker',
|
|
237
|
+
title: "Choose Color"
|
|
238
|
+
});
|
|
239
|
+
}}>
|
|
240
|
+
Select Color
|
|
241
|
+
</schmancy-button>
|
|
242
|
+
</div>
|
|
243
|
+
`,
|
|
244
|
+
uid: 'main-settings',
|
|
245
|
+
title: "Settings"
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
// Advanced Patterns
|
|
249
|
+
|
|
250
|
+
// Pattern: Confirmation Sheet
|
|
251
|
+
function confirmAction(message, onConfirm) {
|
|
252
|
+
$sheet.open({
|
|
253
|
+
component: html`
|
|
254
|
+
<div class="p-6">
|
|
255
|
+
<schmancy-typography type="body" token="lg" class="mb-4">
|
|
256
|
+
${message}
|
|
257
|
+
</schmancy-typography>
|
|
258
|
+
<div class="flex gap-2 justify-end">
|
|
259
|
+
<schmancy-button variant="text" @click=${() => $sheet.dismiss()}>
|
|
260
|
+
Cancel
|
|
261
|
+
</schmancy-button>
|
|
262
|
+
<schmancy-button variant="filled" @click=${() => {
|
|
263
|
+
onConfirm();
|
|
264
|
+
$sheet.dismiss();
|
|
265
|
+
}}>
|
|
266
|
+
Confirm
|
|
267
|
+
</schmancy-button>
|
|
268
|
+
</div>
|
|
269
|
+
</div>
|
|
270
|
+
`,
|
|
271
|
+
lock: true,
|
|
272
|
+
position: 'bottom',
|
|
273
|
+
title: "Confirm Action"
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// Pattern: Form Sheet with Validation
|
|
278
|
+
class FormSheet extends LitElement {
|
|
279
|
+
@state() errors = {};
|
|
280
|
+
|
|
281
|
+
async handleSubmit(e) {
|
|
282
|
+
const values = e.detail.values;
|
|
283
|
+
|
|
284
|
+
// Validate
|
|
285
|
+
this.errors = this.validate(values);
|
|
286
|
+
if (Object.keys(this.errors).length > 0) {
|
|
287
|
+
e.preventDefault();
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// Save and close
|
|
292
|
+
await this.save(values);
|
|
293
|
+
$sheet.dismiss();
|
|
294
|
+
}
|
|
117
295
|
|
|
118
|
-
|
|
119
|
-
|
|
296
|
+
render() {
|
|
297
|
+
return html`
|
|
298
|
+
<schmancy-form @submit=${this.handleSubmit}>
|
|
299
|
+
<schmancy-input
|
|
300
|
+
name="email"
|
|
301
|
+
label="Email"
|
|
302
|
+
type="email"
|
|
303
|
+
.error=${this.errors.email}
|
|
304
|
+
required>
|
|
305
|
+
</schmancy-input>
|
|
306
|
+
<!-- More fields -->
|
|
307
|
+
</schmancy-form>
|
|
308
|
+
`;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
// Pattern: Wizard/Multi-step Sheet
|
|
313
|
+
class WizardSheet extends LitElement {
|
|
314
|
+
@state() currentStep = 0;
|
|
315
|
+
steps = ['Basic Info', 'Details', 'Review'];
|
|
316
|
+
|
|
317
|
+
nextStep() {
|
|
318
|
+
if (this.currentStep < this.steps.length - 1) {
|
|
319
|
+
this.currentStep++;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
prevStep() {
|
|
324
|
+
if (this.currentStep > 0) {
|
|
325
|
+
this.currentStep--;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
render() {
|
|
330
|
+
return html`
|
|
331
|
+
<div class="p-6">
|
|
332
|
+
<schmancy-steps .items=${this.steps} .current=${this.currentStep}></schmancy-steps>
|
|
333
|
+
|
|
334
|
+
<div class="mt-6">
|
|
335
|
+
${this.renderStep()}
|
|
336
|
+
</div>
|
|
337
|
+
|
|
338
|
+
<div class="flex justify-between mt-6">
|
|
339
|
+
<schmancy-button
|
|
340
|
+
variant="text"
|
|
341
|
+
@click=${this.prevStep}
|
|
342
|
+
?disabled=${this.currentStep === 0}>
|
|
343
|
+
Previous
|
|
344
|
+
</schmancy-button>
|
|
345
|
+
<schmancy-button
|
|
346
|
+
@click=${this.currentStep === this.steps.length - 1 ? this.submit : this.nextStep}>
|
|
347
|
+
${this.currentStep === this.steps.length - 1 ? 'Submit' : 'Next'}
|
|
348
|
+
</schmancy-button>
|
|
349
|
+
</div>
|
|
350
|
+
</div>
|
|
351
|
+
`;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
// Best Practices
|
|
356
|
+
|
|
357
|
+
// 1. Always provide a title for accessibility
|
|
358
|
+
$sheet.open({
|
|
359
|
+
component: content,
|
|
360
|
+
title: "Descriptive Title" // Required for screen readers
|
|
361
|
+
});
|
|
362
|
+
|
|
363
|
+
// 2. Use uid for singleton sheets
|
|
364
|
+
// Bad: Opens multiple sheets
|
|
365
|
+
button.addEventListener('click', () => {
|
|
366
|
+
$sheet.open({ component: html`<settings-panel></settings-panel>` });
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
// Good: Reuses existing sheet
|
|
370
|
+
button.addEventListener('click', () => {
|
|
371
|
+
$sheet.open({
|
|
372
|
+
component: html`<settings-panel></settings-panel>`,
|
|
373
|
+
uid: 'settings' // Only one settings sheet will be open
|
|
374
|
+
});
|
|
375
|
+
});
|
|
376
|
+
|
|
377
|
+
// 3. Clean up resources on close
|
|
378
|
+
$sheet.open({
|
|
379
|
+
component: html`<video-player></video-player>`,
|
|
380
|
+
close: () => {
|
|
381
|
+
// Stop video playback, clear timers, etc.
|
|
382
|
+
videoPlayer.cleanup();
|
|
383
|
+
}
|
|
384
|
+
});
|
|
385
|
+
|
|
386
|
+
// 4. Use appropriate positions
|
|
387
|
+
// Desktop: side sheets for forms and details
|
|
388
|
+
// Mobile: bottom sheets for actions and options
|
|
389
|
+
const position = window.innerWidth < 768 ? 'bottom' : 'side';
|
|
390
|
+
$sheet.open({ component, position });
|
|
391
|
+
|
|
392
|
+
// 5. Handle errors gracefully
|
|
393
|
+
try {
|
|
394
|
+
await saveData();
|
|
395
|
+
$sheet.dismiss();
|
|
396
|
+
} catch (error) {
|
|
397
|
+
showNotification({ message: 'Save failed', type: 'error' });
|
|
398
|
+
// Don't close sheet on error
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
// Common Issues & Solutions
|
|
402
|
+
|
|
403
|
+
// Issue: Sheet content is cut off
|
|
404
|
+
// Solution: Ensure content has proper padding and scrolling
|
|
405
|
+
html`
|
|
406
|
+
<div class="p-6 overflow-y-auto max-h-[80vh]">
|
|
407
|
+
<!-- Long content -->
|
|
120
408
|
</div>
|
|
121
|
-
|
|
409
|
+
`
|
|
410
|
+
|
|
411
|
+
// Issue: Form submission closes sheet prematurely
|
|
412
|
+
// Solution: Prevent default and handle async
|
|
413
|
+
html`
|
|
414
|
+
<schmancy-form @submit=${async (e) => {
|
|
415
|
+
e.preventDefault(); // Important!
|
|
416
|
+
await handleSubmit(e.detail.values);
|
|
417
|
+
$sheet.dismiss();
|
|
418
|
+
}}>
|
|
419
|
+
`
|
|
420
|
+
|
|
421
|
+
// Issue: Multiple sheets open at once
|
|
422
|
+
// Solution: Use closeAll() before opening new sheet
|
|
423
|
+
$sheet.closeAll();
|
|
424
|
+
$sheet.open({ component: newContent });
|
|
425
|
+
|
|
426
|
+
// Integration with Other Components
|
|
427
|
+
|
|
428
|
+
// With Dialog Service
|
|
429
|
+
import { dialog } from '@mhmo91/schmancy';
|
|
430
|
+
|
|
431
|
+
async function deleteItem(id) {
|
|
432
|
+
const confirmed = await dialog.confirm({
|
|
433
|
+
title: 'Delete Item?',
|
|
434
|
+
message: 'This action cannot be undone.'
|
|
435
|
+
});
|
|
436
|
+
|
|
437
|
+
if (confirmed) {
|
|
438
|
+
await api.delete(id);
|
|
439
|
+
$sheet.dismiss(); // Close the sheet after deletion
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
// With Notification Service
|
|
444
|
+
import { notification } from '@mhmo91/schmancy';
|
|
445
|
+
|
|
446
|
+
$sheet.open({
|
|
447
|
+
component: html`
|
|
448
|
+
<schmancy-form @submit=${async (e) => {
|
|
449
|
+
try {
|
|
450
|
+
await api.save(e.detail.values);
|
|
451
|
+
notification.success('Saved successfully');
|
|
452
|
+
$sheet.dismiss();
|
|
453
|
+
} catch (error) {
|
|
454
|
+
notification.error('Failed to save');
|
|
455
|
+
}
|
|
456
|
+
}}>
|
|
457
|
+
`
|
|
458
|
+
});
|
|
122
459
|
```
|