@mhmo91/schmancy 0.4.53 → 0.4.55
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/map.md +232 -0
- package/ai/notification.md +158 -45
- package/dist/ai/map.md +232 -0
- package/dist/ai/notification.md +158 -45
- package/dist/{animated-text-D26Fv13t.js → animated-text-Bns9oiIU.js} +3 -3
- package/dist/{animated-text-D26Fv13t.js.map → animated-text-Bns9oiIU.js.map} +1 -1
- package/dist/{animated-text-CtXY3MHV.cjs → animated-text-CHUcj2G2.cjs} +2 -2
- package/dist/{animated-text-CtXY3MHV.cjs.map → animated-text-CHUcj2G2.cjs.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-BCcq9Nb7.js → area.component-Aur5h5TN.js} +10 -10
- package/dist/{area.component-BCcq9Nb7.js.map → area.component-Aur5h5TN.js.map} +1 -1
- package/dist/{area.component-DQ_erV9e.cjs → area.component-BTZcyqR5.cjs} +2 -2
- package/dist/{area.component-DQ_erV9e.cjs.map → area.component-BTZcyqR5.cjs.map} +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-CkycjWy4.js → autocomplete-BhjrqWor.js} +3 -3
- package/dist/{autocomplete-CkycjWy4.js.map → autocomplete-BhjrqWor.js.map} +1 -1
- package/dist/{autocomplete-CrhgxhFI.cjs → autocomplete-CleoNM85.cjs} +2 -2
- package/dist/{autocomplete-CrhgxhFI.cjs.map → autocomplete-CleoNM85.cjs.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-nwqyt3uc.cjs → avatar-DoUVCqad.cjs} +2 -2
- package/dist/{avatar-nwqyt3uc.cjs.map → avatar-DoUVCqad.cjs.map} +1 -1
- package/dist/{avatar-BXx1oJMG.js → avatar-j733KoCV.js} +53 -51
- package/dist/{avatar-BXx1oJMG.js.map → avatar-j733KoCV.js.map} +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-C_BvtlNQ.js → boat-CIA-nk8V.js} +2 -2
- package/dist/{boat-C_BvtlNQ.js.map → boat-CIA-nk8V.js.map} +1 -1
- package/dist/{boat-B_xZilsk.cjs → boat-DU_GhEJ2.cjs} +2 -2
- package/dist/{boat-B_xZilsk.cjs.map → boat-DU_GhEJ2.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-c3DzDvWH.js → checkbox-BCTABF4s.js} +6 -6
- package/dist/{checkbox-c3DzDvWH.js.map → checkbox-BCTABF4s.js.map} +1 -1
- package/dist/{checkbox-BAuVXvYL.cjs → checkbox-DblOhLz_.cjs} +2 -2
- package/dist/{checkbox-BAuVXvYL.cjs.map → checkbox-DblOhLz_.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-Dn8RpKCE.js → chips-BbMM2s8r.js} +3 -3
- package/dist/{chips-Dn8RpKCE.js.map → chips-BbMM2s8r.js.map} +1 -1
- package/dist/{chips-Dg2otqDI.cjs → chips-LAtr3to0.cjs} +2 -2
- package/dist/{chips-Dg2otqDI.cjs.map → chips-LAtr3to0.cjs.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +1 -1
- package/dist/{circular-progress-DZUJU-z3.cjs → circular-progress-BKwcIgEZ.cjs} +2 -2
- package/dist/{circular-progress-DZUJU-z3.cjs.map → circular-progress-BKwcIgEZ.cjs.map} +1 -1
- package/dist/{circular-progress-B1RjFzcp.js → circular-progress-DtAG2JJn.js} +3 -3
- package/dist/{circular-progress-B1RjFzcp.js.map → circular-progress-DtAG2JJn.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-JlSLKkKg.js → code-preview-BgwAlMc_.js} +2 -2
- package/dist/{code-preview-JlSLKkKg.js.map → code-preview-BgwAlMc_.js.map} +1 -1
- package/dist/{code-preview-CYHNaPek.cjs → code-preview-Bn6-jpNm.cjs} +2 -2
- package/dist/{code-preview-CYHNaPek.cjs.map → code-preview-Bn6-jpNm.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-8o_f5N7V.js → date-range-CBfV-vU_.js} +4 -4
- package/dist/{date-range-8o_f5N7V.js.map → date-range-CBfV-vU_.js.map} +1 -1
- package/dist/{date-range-9NUFmKqd.cjs → date-range-CNsf8eFb.cjs} +2 -2
- package/dist/{date-range-9NUFmKqd.cjs.map → date-range-CNsf8eFb.cjs.map} +1 -1
- package/dist/{date-range-inline-Czq1wHs1.cjs → date-range-inline-ECHd558D.cjs} +2 -2
- package/dist/{date-range-inline-Czq1wHs1.cjs.map → date-range-inline-ECHd558D.cjs.map} +1 -1
- package/dist/{date-range-inline-B_K4YPtB.js → date-range-inline-VA3xdfyl.js} +3 -3
- package/dist/{date-range-inline-B_K4YPtB.js.map → date-range-inline-VA3xdfyl.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-DtVBjjLV.js → delay-B_3yscDy.js} +2 -2
- package/dist/{delay-DtVBjjLV.js.map → delay-B_3yscDy.js.map} +1 -1
- package/dist/{delay-FgtrEHdo.cjs → delay-DtUJwLKe.cjs} +2 -2
- package/dist/{delay-FgtrEHdo.cjs.map → delay-DtUJwLKe.cjs.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/details-Bkt6fV0b.js +134 -0
- package/dist/details-Bkt6fV0b.js.map +1 -0
- package/dist/details-X-ciBYba.cjs +109 -0
- package/dist/details-X-ciBYba.cjs.map +1 -0
- package/dist/details.cjs +2 -0
- package/dist/details.cjs.map +1 -0
- package/dist/details.js +5 -0
- package/dist/details.js.map +1 -0
- package/dist/{dialog-content-C_paCOeM.js → dialog-content-Y4RvMloi.js} +4 -4
- package/dist/{dialog-content-C_paCOeM.js.map → dialog-content-Y4RvMloi.js.map} +1 -1
- package/dist/{dialog-content-tGl9B67L.cjs → dialog-content-puP-JDoT.cjs} +2 -2
- package/dist/{dialog-content-tGl9B67L.cjs.map → dialog-content-puP-JDoT.cjs.map} +1 -1
- package/dist/{dialog-service-JNWTLfAy.cjs → dialog-service-BCfRtG2U.cjs} +2 -2
- package/dist/{dialog-service-JNWTLfAy.cjs.map → dialog-service-BCfRtG2U.cjs.map} +1 -1
- package/dist/{dialog-service-DZv4KB89.js → dialog-service-CY9yBEhe.js} +2 -2
- package/dist/{dialog-service-DZv4KB89.js.map → dialog-service-CY9yBEhe.js.map} +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +2 -2
- package/dist/{divider-Dn26vIou.js → divider-BZq3k_da.js} +3 -3
- package/dist/{divider-Dn26vIou.js.map → divider-BZq3k_da.js.map} +1 -1
- package/dist/{divider-2yg9r1tF.cjs → divider-t1KWAOnw.cjs} +2 -2
- package/dist/{divider-2yg9r1tF.cjs.map → divider-t1KWAOnw.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-DJ4CA3ug.cjs → dropdown-content-D834SoZi.cjs} +2 -2
- package/dist/{dropdown-content-DJ4CA3ug.cjs.map → dropdown-content-D834SoZi.cjs.map} +1 -1
- package/dist/{dropdown-content-DNJhJCdV.js → dropdown-content-JvpnX2RS.js} +3 -3
- package/dist/{dropdown-content-DNJhJCdV.js.map → dropdown-content-JvpnX2RS.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-DV2W2Zgu.js → flex-CAsda_Fe.js} +2 -2
- package/dist/{flex-DV2W2Zgu.js.map → flex-CAsda_Fe.js.map} +1 -1
- package/dist/{flex-DWnX0ZPR.cjs → flex-LjqLwPhI.cjs} +2 -2
- package/dist/{flex-DWnX0ZPR.cjs.map → flex-LjqLwPhI.cjs.map} +1 -1
- package/dist/{form-Dpokur4M.cjs → form-CpIQ4L1j.cjs} +2 -2
- package/dist/{form-Dpokur4M.cjs.map → form-CpIQ4L1j.cjs.map} +1 -1
- package/dist/{form-Cots2cbN.js → form-czxHWLos.js} +2 -2
- package/dist/{form-Cots2cbN.js.map → form-czxHWLos.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formField.mixin-ySoLTrgX.cjs → formField.mixin-BD-_Rnyy.cjs} +2 -2
- package/dist/{formField.mixin-ySoLTrgX.cjs.map → formField.mixin-BD-_Rnyy.cjs.map} +1 -1
- package/dist/{formField.mixin-DdTDdv9g.js → formField.mixin-bSNupTkm.js} +2 -2
- package/dist/{formField.mixin-DdTDdv9g.js.map → formField.mixin-bSNupTkm.js.map} +1 -1
- package/dist/{icon-BZxC9aoA.js → icon-B8LhF-rS.js} +2 -2
- package/dist/{icon-BZxC9aoA.js.map → icon-B8LhF-rS.js.map} +1 -1
- package/dist/{icon-mhchC8Qw.cjs → icon-DgnS9IuB.cjs} +2 -2
- package/dist/{icon-mhchC8Qw.cjs.map → icon-DgnS9IuB.cjs.map} +1 -1
- package/dist/{icon-button-DbvjV5zJ.cjs → icon-button-CK0UyXcE.cjs} +2 -2
- package/dist/{icon-button-DbvjV5zJ.cjs.map → icon-button-CK0UyXcE.cjs.map} +1 -1
- package/dist/{icon-button-BGvSPuE-.js → icon-button-DdvdiQga.js} +3 -3
- package/dist/{icon-button-BGvSPuE-.js.map → icon-button-DdvdiQga.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 +166 -159
- package/dist/index.js.map +1 -1
- package/dist/{input-DzNoI9qU.cjs → input-DJKVCqiL.cjs} +2 -2
- package/dist/{input-DzNoI9qU.cjs.map → input-DJKVCqiL.cjs.map} +1 -1
- package/dist/{input-Cpo-ws8k.js → input-rNxC53BQ.js} +3 -3
- package/dist/{input-Cpo-ws8k.js.map → input-rNxC53BQ.js.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-BTyoQ42F.js → list-ccMISKKN.js} +2 -2
- package/dist/{list-BTyoQ42F.js.map → list-ccMISKKN.js.map} +1 -1
- package/dist/{list-DRbkWHho.cjs → list-e54Aokyk.cjs} +2 -2
- package/dist/{list-DRbkWHho.cjs.map → list-e54Aokyk.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-BH9PTyUD.js → litElement.mixin-BMewYv9c.js} +2 -2
- package/dist/{litElement.mixin-BH9PTyUD.js.map → litElement.mixin-BMewYv9c.js.map} +1 -1
- package/dist/{litElement.mixin-B01R2oT7.cjs → litElement.mixin-Brn_lsa3.cjs} +2 -2
- package/dist/{litElement.mixin-B01R2oT7.cjs.map → litElement.mixin-Brn_lsa3.cjs.map} +1 -1
- package/dist/map-CsuRRLbB.js +175 -0
- package/dist/map-CsuRRLbB.js.map +1 -0
- package/dist/map-D3nhiTCn.cjs +81 -0
- package/dist/map-D3nhiTCn.cjs.map +1 -0
- package/dist/map.cjs +2 -0
- package/dist/map.cjs.map +1 -0
- package/dist/map.js +5 -0
- package/dist/map.js.map +1 -0
- package/dist/{media-BO-aZBTp.js → media-BtAS-xyw.js} +2 -2
- package/dist/{media-BO-aZBTp.js.map → media-BtAS-xyw.js.map} +1 -1
- package/dist/{media-CIuTybvD.cjs → media-Dd0PTrZ3.cjs} +2 -2
- package/dist/{media-CIuTybvD.cjs.map → media-Dd0PTrZ3.cjs.map} +1 -1
- package/dist/{menu-DWCDQvGY.js → menu-CAhuu8Ei.js} +3 -3
- package/dist/{menu-DWCDQvGY.js.map → menu-CAhuu8Ei.js.map} +1 -1
- package/dist/{menu-DEbZxoXr.cjs → menu-CFqp1aH7.cjs} +2 -2
- package/dist/{menu-DEbZxoXr.cjs.map → menu-CFqp1aH7.cjs.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-L_h9_d4v.js → notification-service-Byz67oln.js} +142 -113
- package/dist/notification-service-Byz67oln.js.map +1 -0
- package/dist/notification-service-KWQfnc6d.cjs +143 -0
- package/dist/notification-service-KWQfnc6d.cjs.map +1 -0
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +7 -4
- package/dist/notification.js.map +1 -1
- package/dist/notify-BIdXyvMf.js +35 -0
- package/dist/notify-BIdXyvMf.js.map +1 -0
- package/dist/notify-DDzsX0lt.cjs +2 -0
- package/dist/notify-DDzsX0lt.cjs.map +1 -0
- package/dist/number-B7aCRYnH.cjs.map +1 -1
- package/dist/number-BhTiptLA.js.map +1 -1
- package/dist/{option-vRGeXw_u.js → option-BCg6S7Jj.js} +2 -2
- package/dist/{option-vRGeXw_u.js.map → option-BCg6S7Jj.js.map} +1 -1
- package/dist/{option-BPmOG_Hw.cjs → option-DarGe_f3.cjs} +2 -2
- package/dist/{option-BPmOG_Hw.cjs.map → option-DarGe_f3.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{payment-card-form-Cs5bP5Di.js → payment-card-form-C1W2DPu4.js} +3 -3
- package/dist/{payment-card-form-Cs5bP5Di.js.map → payment-card-form-C1W2DPu4.js.map} +1 -1
- package/dist/{payment-card-form-ccF9dfGC.cjs → payment-card-form-CW3KC9QK.cjs} +2 -2
- package/dist/{payment-card-form-ccF9dfGC.cjs.map → payment-card-form-CW3KC9QK.cjs.map} +1 -1
- package/dist/{progress-BqZ7yHQe.cjs → progress-B-ZZ40CK.cjs} +2 -2
- package/dist/{progress-BqZ7yHQe.cjs.map → progress-B-ZZ40CK.cjs.map} +1 -1
- package/dist/{progress-DM_jha7D.js → progress-BSJSsYj7.js} +2 -2
- package/dist/{progress-DM_jha7D.js.map → progress-BSJSsYj7.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-button-WmbuT_YW.cjs → radio-button-CsIIrM_C.cjs} +2 -2
- package/dist/{radio-button-WmbuT_YW.cjs.map → radio-button-CsIIrM_C.cjs.map} +1 -1
- package/dist/{radio-button-YDzqdRA-.js → radio-button-DX4XSjAy.js} +3 -3
- package/dist/{radio-button-YDzqdRA-.js.map → radio-button-DX4XSjAy.js.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{schmancy-steps-container-CoARMXfB.js → schmancy-steps-container-8RdoKtdK.js} +2 -2
- package/dist/{schmancy-steps-container-CoARMXfB.js.map → schmancy-steps-container-8RdoKtdK.js.map} +1 -1
- package/dist/{schmancy-steps-container-CjAsrjKf.cjs → schmancy-steps-container-DADzK9o0.cjs} +2 -2
- package/dist/{schmancy-steps-container-CjAsrjKf.cjs.map → schmancy-steps-container-DADzK9o0.cjs.map} +1 -1
- package/dist/{select-rwocpGs2.js → select-C-KLPYEJ.js} +3 -3
- package/dist/{select-rwocpGs2.js.map → select-C-KLPYEJ.js.map} +1 -1
- package/dist/{select-CPnSionr.cjs → select-CF9aojhZ.cjs} +2 -2
- package/dist/{select-CPnSionr.cjs.map → select-CF9aojhZ.cjs.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-Cw2qLdzN.js → sheet-BQ2PhU-0.js} +4 -4
- package/dist/{sheet-Cw2qLdzN.js.map → sheet-BQ2PhU-0.js.map} +1 -1
- package/dist/{sheet-eCDoMdHF.cjs → sheet-CzCiJ3yC.cjs} +2 -2
- package/dist/{sheet-eCDoMdHF.cjs.map → sheet-CzCiJ3yC.cjs.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-C7Z1bPq7.js → slider-Bo0_X0Xt.js} +3 -3
- package/dist/{slider-C7Z1bPq7.js.map → slider-Bo0_X0Xt.js.map} +1 -1
- package/dist/{slider-DBNoXRWS.cjs → slider-C4fwo5P3.cjs} +2 -2
- package/dist/{slider-DBNoXRWS.cjs.map → slider-C4fwo5P3.cjs.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-CbA-FXRK.js → spinner-CKnK4QHu.js} +2 -2
- package/dist/{spinner-CbA-FXRK.js.map → spinner-CKnK4QHu.js.map} +1 -1
- package/dist/{spinner-CV62BBoF.cjs → spinner-DMoZTIMe.cjs} +2 -2
- package/dist/{spinner-CV62BBoF.cjs.map → spinner-DMoZTIMe.cjs.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/{surface-By8o7nWa.js → surface-BEaRxAZt.js} +2 -2
- package/dist/{surface-By8o7nWa.js.map → surface-BEaRxAZt.js.map} +1 -1
- package/dist/{surface-ClfeUI6q.cjs → surface-Bcy2LzAX.cjs} +2 -2
- package/dist/{surface-ClfeUI6q.cjs.map → surface-Bcy2LzAX.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-Rqnb4AJl.cjs → table-9AyLMNRe.cjs} +2 -2
- package/dist/{table-Rqnb4AJl.cjs.map → table-9AyLMNRe.cjs.map} +1 -1
- package/dist/{table-CvMo5lOi.js → table-MzCzXjAC.js} +2 -2
- package/dist/{table-CvMo5lOi.js.map → table-MzCzXjAC.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-BEXurIiZ.js → tabs-compatibility-D5xv33oo.js} +2 -2
- package/dist/{tabs-compatibility-BEXurIiZ.js.map → tabs-compatibility-D5xv33oo.js.map} +1 -1
- package/dist/{tabs-compatibility-B1bE7hSG.cjs → tabs-compatibility-N1qxOCYJ.cjs} +2 -2
- package/dist/{tabs-compatibility-B1bE7hSG.cjs.map → tabs-compatibility-N1qxOCYJ.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-BTGoGfEI.js +43 -0
- package/dist/{tailwind.mixin-CaIkmP6j.js.map → tailwind.mixin-BTGoGfEI.js.map} +1 -1
- package/dist/tailwind.mixin-KC3Nl9kj.cjs +2 -0
- package/dist/{tailwind.mixin-DVKI3qb9.cjs.map → tailwind.mixin-KC3Nl9kj.cjs.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-DM3lgEUp.js → textarea-BHGIbEBY.js} +2 -2
- package/dist/{textarea-DM3lgEUp.js.map → textarea-BHGIbEBY.js.map} +1 -1
- package/dist/{textarea-Dlnyyrbq.cjs → textarea-DUBjaAfu.cjs} +2 -2
- package/dist/{textarea-Dlnyyrbq.cjs.map → textarea-DUBjaAfu.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-Cao8AH8r.cjs → theme-button-C2-L23sJ.cjs} +2 -2
- package/dist/{theme-button-Cao8AH8r.cjs.map → theme-button-C2-L23sJ.cjs.map} +1 -1
- package/dist/{theme-button-C4JWRMiC.js → theme-button-FU1OUOBA.js} +2 -2
- package/dist/{theme-button-C4JWRMiC.js.map → theme-button-FU1OUOBA.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.component-RtV3l-Ns.cjs → theme.component-BQr3n0fE.cjs} +3 -3
- package/dist/{theme.component-RtV3l-Ns.cjs.map → theme.component-BQr3n0fE.cjs.map} +1 -1
- package/dist/{theme.component-ColRTbY5.js → theme.component-BYGB9dTb.js} +2 -2
- package/dist/{theme.component-ColRTbY5.js.map → theme.component-BYGB9dTb.js.map} +1 -1
- package/dist/theme.js +1 -1
- package/dist/{timezone-Cvsd--fr.js → timezone-BgX3qSF-.js} +3 -3
- package/dist/{timezone-Cvsd--fr.js.map → timezone-BgX3qSF-.js.map} +1 -1
- package/dist/{timezone-UBBApQoU.cjs → timezone-DexhNs9f.cjs} +2 -2
- package/dist/{timezone-UBBApQoU.cjs.map → timezone-DexhNs9f.cjs.map} +1 -1
- package/dist/{tooltip-nwQwCEgl.js → tooltip-CkGy17kd.js} +2 -2
- package/dist/{tooltip-nwQwCEgl.js.map → tooltip-CkGy17kd.js.map} +1 -1
- package/dist/{tooltip-WpE4e-fO.cjs → tooltip-xj7RGLlB.cjs} +2 -2
- package/dist/{tooltip-WpE4e-fO.cjs.map → tooltip-xj7RGLlB.cjs.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-BDmB7KmQ.js → tree-BeU8nzGP.js} +2 -2
- package/dist/{tree-BDmB7KmQ.js.map → tree-BeU8nzGP.js.map} +1 -1
- package/dist/{tree-Dn0t7MUR.cjs → tree-DSpkwuOO.cjs} +2 -2
- package/dist/{tree-Dn0t7MUR.cjs.map → tree-DSpkwuOO.cjs.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-Fq4uV6Gm.cjs → typewriter-Bn7fe4nG.cjs} +2 -2
- package/dist/{typewriter-Fq4uV6Gm.cjs.map → typewriter-Bn7fe4nG.cjs.map} +1 -1
- package/dist/{typewriter-CXadCi-4.js → typewriter-CbONIeGA.js} +7 -7
- package/dist/{typewriter-CXadCi-4.js.map → typewriter-CbONIeGA.js.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-BhCrqK_b.cjs → typography-CJ5-RiNW.cjs} +2 -2
- package/dist/{typography-BhCrqK_b.cjs.map → typography-CJ5-RiNW.cjs.map} +1 -1
- package/dist/{typography-DYCOngD7.js → typography-D1m-mdd7.js} +2 -2
- package/dist/{typography-DYCOngD7.js.map → typography-D1m-mdd7.js.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/package.json +1 -1
- package/types/src/details/details.d.ts +14 -0
- package/types/src/details/index.d.ts +1 -0
- package/types/src/index.d.ts +2 -0
- package/types/src/map/index.d.ts +1 -0
- package/types/src/map/map.d.ts +129 -0
- package/types/src/notification/index.d.ts +2 -0
- package/types/src/notification/notification-container.d.ts +3 -0
- package/types/src/notification/notification-service.d.ts +19 -0
- package/types/src/notification/notification.d.ts +2 -0
- package/types/src/notification/notify.d.ts +100 -0
- package/types/src/utils/number.d.ts +2 -0
- package/dist/notification-service-B6nHqzq5.cjs +0 -141
- package/dist/notification-service-B6nHqzq5.cjs.map +0 -1
- package/dist/notification-service-L_h9_d4v.js.map +0 -1
- package/dist/tailwind.mixin-CaIkmP6j.js +0 -43
- package/dist/tailwind.mixin-DVKI3qb9.cjs +0 -2
package/ai/map.md
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
# Schmancy Map Component
|
|
2
|
+
|
|
3
|
+
The `schmancy-map` component provides an easy-to-use Google Maps integration with an intuitive API designed for both technical and non-technical users.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @mhmo91/schmancy
|
|
9
|
+
# or
|
|
10
|
+
yarn add @mhmo91/schmancy
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Import
|
|
14
|
+
|
|
15
|
+
```javascript
|
|
16
|
+
import '@mhmo91/schmancy/map'
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## API Reference
|
|
20
|
+
|
|
21
|
+
| Property | Type | Default | Description |
|
|
22
|
+
|----------|------|---------|-------------|
|
|
23
|
+
| `address` | `string` | `''` | Simple address string that automatically geocodes to display the location. Takes precedence over latitude/longitude if both are provided. |
|
|
24
|
+
| `latitude` | `number` | `undefined` | Latitude coordinate for precise location. Used when address is not provided. |
|
|
25
|
+
| `longitude` | `number` | `undefined` | Longitude coordinate for precise location. Used when address is not provided. |
|
|
26
|
+
| `zoom` | `number` | `15` | Map zoom level. Higher numbers show more detail (1-20). |
|
|
27
|
+
| `height` | `string` | `"400px"` | Height of the map with CSS unit (e.g., "400px", "50vh"). |
|
|
28
|
+
| `marker` | `boolean` | `true` | Whether to show a marker at the location. |
|
|
29
|
+
| `markerTitle` | `string` | `''` | Tooltip text for the location marker. |
|
|
30
|
+
| `type` | `'roadmap' \| 'satellite' \| 'hybrid' \| 'terrain'` | `'roadmap'` | Map display type. |
|
|
31
|
+
| `interactive` | `boolean` | `true` | Whether users can interact with the map (pan, zoom, click). |
|
|
32
|
+
| `controls` | `boolean` | `true` | Whether to show map controls (zoom buttons, fullscreen, etc.). |
|
|
33
|
+
| `apiKey` | `string` | `''` | Google Maps API key. Falls back to GOOGLE_MAPS_API_KEY environment variable. |
|
|
34
|
+
|
|
35
|
+
## Basic Usage
|
|
36
|
+
|
|
37
|
+
### Simple Address
|
|
38
|
+
The easiest way to display a map - just provide an address:
|
|
39
|
+
|
|
40
|
+
```html
|
|
41
|
+
<schmancy-map address="Times Square, New York"></schmancy-map>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Coordinates
|
|
45
|
+
For precise positioning, use latitude and longitude:
|
|
46
|
+
|
|
47
|
+
```html
|
|
48
|
+
<schmancy-map
|
|
49
|
+
latitude="40.758"
|
|
50
|
+
longitude="-73.985"
|
|
51
|
+
zoom="17">
|
|
52
|
+
</schmancy-map>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Custom Height
|
|
56
|
+
Adjust the map size:
|
|
57
|
+
|
|
58
|
+
```html
|
|
59
|
+
<schmancy-map
|
|
60
|
+
address="Central Park, New York"
|
|
61
|
+
height="600px">
|
|
62
|
+
</schmancy-map>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Map Types
|
|
66
|
+
|
|
67
|
+
### Satellite View
|
|
68
|
+
```html
|
|
69
|
+
<schmancy-map
|
|
70
|
+
address="Grand Canyon"
|
|
71
|
+
type="satellite"
|
|
72
|
+
height="500px">
|
|
73
|
+
</schmancy-map>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Hybrid View
|
|
77
|
+
Combines satellite imagery with labels:
|
|
78
|
+
|
|
79
|
+
```html
|
|
80
|
+
<schmancy-map
|
|
81
|
+
address="Mount Everest"
|
|
82
|
+
type="hybrid">
|
|
83
|
+
</schmancy-map>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Terrain View
|
|
87
|
+
Shows topographical features:
|
|
88
|
+
|
|
89
|
+
```html
|
|
90
|
+
<schmancy-map
|
|
91
|
+
address="Yellowstone National Park"
|
|
92
|
+
type="terrain">
|
|
93
|
+
</schmancy-map>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Static Maps
|
|
97
|
+
|
|
98
|
+
For display-only maps without user interaction:
|
|
99
|
+
|
|
100
|
+
```html
|
|
101
|
+
<schmancy-map
|
|
102
|
+
address="Eiffel Tower, Paris"
|
|
103
|
+
interactive="false"
|
|
104
|
+
controls="false">
|
|
105
|
+
</schmancy-map>
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Customization
|
|
109
|
+
|
|
110
|
+
### Custom Marker
|
|
111
|
+
```html
|
|
112
|
+
<schmancy-map
|
|
113
|
+
address="Statue of Liberty"
|
|
114
|
+
markerTitle="Welcome to Liberty Island">
|
|
115
|
+
</schmancy-map>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### No Marker
|
|
119
|
+
```html
|
|
120
|
+
<schmancy-map
|
|
121
|
+
address="Pacific Ocean"
|
|
122
|
+
marker="false">
|
|
123
|
+
</schmancy-map>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Different Zoom Levels
|
|
127
|
+
```html
|
|
128
|
+
<!-- City view -->
|
|
129
|
+
<schmancy-map address="Tokyo" zoom="10"></schmancy-map>
|
|
130
|
+
|
|
131
|
+
<!-- Street view -->
|
|
132
|
+
<schmancy-map address="Tokyo Tower" zoom="18"></schmancy-map>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## API Key Setup
|
|
136
|
+
|
|
137
|
+
### Environment Variable (Recommended)
|
|
138
|
+
Set `GOOGLE_MAPS_API_KEY` in your environment:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
GOOGLE_MAPS_API_KEY=your_api_key_here
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Direct Property
|
|
145
|
+
```html
|
|
146
|
+
<schmancy-map
|
|
147
|
+
address="Sydney Opera House"
|
|
148
|
+
api-key="your_api_key_here">
|
|
149
|
+
</schmancy-map>
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Features
|
|
153
|
+
|
|
154
|
+
### Automatic Geocoding
|
|
155
|
+
- Converts human-readable addresses to coordinates
|
|
156
|
+
- Handles various address formats
|
|
157
|
+
- Provides error feedback for invalid addresses
|
|
158
|
+
|
|
159
|
+
### Responsive Design
|
|
160
|
+
- Adapts to container width
|
|
161
|
+
- Configurable height with CSS units
|
|
162
|
+
- Maintains aspect ratio on mobile
|
|
163
|
+
|
|
164
|
+
### Loading States
|
|
165
|
+
- Shows spinner while loading
|
|
166
|
+
- Displays error messages for failed loads
|
|
167
|
+
- Graceful fallback when maps can't load
|
|
168
|
+
|
|
169
|
+
### Performance
|
|
170
|
+
- Lazy loads Google Maps API
|
|
171
|
+
- Caches script loading across components
|
|
172
|
+
- Minimal bundle size impact
|
|
173
|
+
|
|
174
|
+
## Error Handling
|
|
175
|
+
|
|
176
|
+
The component handles various error scenarios:
|
|
177
|
+
|
|
178
|
+
- **Invalid Address**: Shows error message with geocoding failure
|
|
179
|
+
- **Missing API Key**: Clear error message about required API key
|
|
180
|
+
- **Network Issues**: Graceful fallback with retry capability
|
|
181
|
+
- **Invalid Coordinates**: Validation of latitude/longitude ranges
|
|
182
|
+
|
|
183
|
+
## Accessibility
|
|
184
|
+
|
|
185
|
+
- Proper ARIA labels for screen readers
|
|
186
|
+
- Keyboard navigation support (when interactive)
|
|
187
|
+
- High contrast error states
|
|
188
|
+
- Semantic HTML structure
|
|
189
|
+
|
|
190
|
+
## Browser Support
|
|
191
|
+
|
|
192
|
+
- Modern browsers with ES2015+ support
|
|
193
|
+
- Google Maps API compatibility
|
|
194
|
+
- Progressive enhancement for older browsers
|
|
195
|
+
|
|
196
|
+
## Examples in Real Applications
|
|
197
|
+
|
|
198
|
+
### Store Locator
|
|
199
|
+
```html
|
|
200
|
+
<schmancy-map
|
|
201
|
+
address="Apple Store, 5th Avenue, New York"
|
|
202
|
+
zoom="16"
|
|
203
|
+
marker-title="Apple Store - 5th Avenue">
|
|
204
|
+
</schmancy-map>
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Event Location
|
|
208
|
+
```html
|
|
209
|
+
<schmancy-map
|
|
210
|
+
address="Madison Square Garden, New York"
|
|
211
|
+
height="300px"
|
|
212
|
+
interactive="false">
|
|
213
|
+
</schmancy-map>
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Property Listing
|
|
217
|
+
```html
|
|
218
|
+
<schmancy-map
|
|
219
|
+
latitude="40.7831"
|
|
220
|
+
longitude="-73.9712"
|
|
221
|
+
zoom="15"
|
|
222
|
+
marker-title="Beautiful Apartment">
|
|
223
|
+
</schmancy-map>
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## Best Practices
|
|
227
|
+
|
|
228
|
+
1. **Use addresses for user-friendly input**: Most users understand addresses better than coordinates
|
|
229
|
+
2. **Set appropriate zoom levels**: 10-12 for cities, 15-17 for neighborhoods, 18+ for buildings
|
|
230
|
+
3. **Consider mobile users**: Use responsive heights like "50vh" for mobile-friendly maps
|
|
231
|
+
4. **Provide meaningful marker titles**: Help users understand what the marker represents
|
|
232
|
+
5. **Use static maps for display-only**: Disable interaction when the map is purely informational
|
package/ai/notification.md
CHANGED
|
@@ -1,79 +1,192 @@
|
|
|
1
1
|
# Schmancy Notification - AI Reference
|
|
2
2
|
|
|
3
|
+
## Core Notification Service
|
|
4
|
+
|
|
3
5
|
```js
|
|
4
|
-
|
|
5
|
-
import { $notification } from '@mhmo91/schmancy';
|
|
6
|
+
import { $notify } from '@mhmo91/schmancy'
|
|
6
7
|
|
|
7
8
|
// Display notification methods
|
|
8
|
-
$
|
|
9
|
-
$
|
|
10
|
-
$
|
|
11
|
-
$
|
|
9
|
+
$notify.info(message?, options?) -> string // Returns notification ID
|
|
10
|
+
$notify.success(message?, options?) -> string
|
|
11
|
+
$notify.warning(message?, options?) -> string
|
|
12
|
+
$notify.error(message?, options?) -> string
|
|
12
13
|
|
|
13
14
|
// Custom notification
|
|
14
|
-
$
|
|
15
|
+
$notify.show({
|
|
15
16
|
message: string,
|
|
16
17
|
type?: 'info'|'success'|'warning'|'error',
|
|
17
18
|
title?: string,
|
|
18
|
-
duration?: number, // milliseconds, default 1000
|
|
19
|
+
duration?: number, // milliseconds, default 1000
|
|
19
20
|
closable?: boolean, // default true
|
|
20
21
|
playSound?: boolean, // default true
|
|
22
|
+
showProgress?: boolean, // show progress bar
|
|
21
23
|
id?: string // custom ID
|
|
22
|
-
}) -> string
|
|
24
|
+
}) -> string
|
|
25
|
+
|
|
26
|
+
// Dismiss notifications
|
|
27
|
+
$notify.dismiss(id?) // Dismisses specific notification or latest if no ID
|
|
28
|
+
|
|
29
|
+
// Update notification content
|
|
30
|
+
$notify.update(id, options) // Update existing notification
|
|
31
|
+
|
|
32
|
+
// Persistent notification
|
|
33
|
+
$notify.persistent(message, options) // Won't auto-dismiss (duration: 0)
|
|
34
|
+
|
|
35
|
+
// Custom duration
|
|
36
|
+
$notify.customDuration(message, duration, options)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## API Integration with notify()
|
|
40
|
+
|
|
41
|
+
The `notify()` operator wraps observables with automatic notification lifecycle management.
|
|
42
|
+
|
|
43
|
+
```js
|
|
44
|
+
import { notify } from '@mhmo91/schmancy'
|
|
45
|
+
|
|
46
|
+
// Basic usage - minimal configuration
|
|
47
|
+
someApiCall().pipe(
|
|
48
|
+
notify({
|
|
49
|
+
loadingMessage: 'Loading data...',
|
|
50
|
+
successMessage: 'Data loaded!',
|
|
51
|
+
errorMessage: 'Failed to load'
|
|
52
|
+
})
|
|
53
|
+
).subscribe()
|
|
54
|
+
|
|
55
|
+
// With custom durations
|
|
56
|
+
saveData().pipe(
|
|
57
|
+
notify({
|
|
58
|
+
loadingMessage: 'Saving...',
|
|
59
|
+
successMessage: 'Saved!',
|
|
60
|
+
successDuration: 5000, // Success stays 5 seconds
|
|
61
|
+
errorMessage: 'Save failed',
|
|
62
|
+
errorDuration: 0 // Error is persistent
|
|
63
|
+
})
|
|
64
|
+
).subscribe()
|
|
65
|
+
|
|
66
|
+
// Full configuration
|
|
67
|
+
uploadFile().pipe(
|
|
68
|
+
notify({
|
|
69
|
+
// Loading state
|
|
70
|
+
loadingMessage: 'Uploading file...',
|
|
71
|
+
loadingType: 'info',
|
|
72
|
+
|
|
73
|
+
// Success state
|
|
74
|
+
successMessage: 'Upload complete!',
|
|
75
|
+
successType: 'success',
|
|
76
|
+
successDuration: 3000,
|
|
77
|
+
|
|
78
|
+
// Error state
|
|
79
|
+
errorMessage: (err) => `Upload failed: ${err.message}`,
|
|
80
|
+
errorType: 'error',
|
|
81
|
+
errorDuration: 10000,
|
|
82
|
+
|
|
83
|
+
// Options
|
|
84
|
+
autoDismissLoading: true
|
|
85
|
+
})
|
|
86
|
+
).subscribe()
|
|
87
|
+
|
|
88
|
+
// With progress tracking
|
|
89
|
+
// Automatically detects { progress: number } or { loaded, total } in emissions
|
|
90
|
+
fileUpload().pipe(
|
|
91
|
+
notify({
|
|
92
|
+
loadingMessage: 'Uploading...', // Updates to "Uploading... (50%)"
|
|
93
|
+
successMessage: 'Upload complete!',
|
|
94
|
+
errorMessage: 'Upload failed'
|
|
95
|
+
})
|
|
96
|
+
).subscribe()
|
|
97
|
+
```
|
|
23
98
|
|
|
24
|
-
|
|
99
|
+
### notify() Options
|
|
100
|
+
|
|
101
|
+
| Option | Type | Description |
|
|
102
|
+
|--------|------|-------------|
|
|
103
|
+
| `loadingMessage` | string | Message during loading |
|
|
104
|
+
| `loadingType` | NotificationType | Type for loading notification |
|
|
105
|
+
| `successMessage` | string | Message on success |
|
|
106
|
+
| `successType` | NotificationType | Type for success notification |
|
|
107
|
+
| `successDuration` | number | Duration for success (ms, 0 = persistent) |
|
|
108
|
+
| `errorMessage` | string \| (err) => string | Message on error |
|
|
109
|
+
| `errorType` | NotificationType | Type for error notification |
|
|
110
|
+
| `errorDuration` | number | Duration for error (ms, 0 = persistent) |
|
|
111
|
+
| `autoDismissLoading` | boolean | Auto-dismiss loading on complete |
|
|
112
|
+
|
|
113
|
+
## Components
|
|
114
|
+
|
|
115
|
+
### Notification Container
|
|
116
|
+
|
|
117
|
+
```html
|
|
25
118
|
<sch-notification-container
|
|
26
119
|
position="top-right|top-left|bottom-right|bottom-left|top-center|bottom-center"
|
|
27
|
-
max-visible-notifications="2"
|
|
28
|
-
play-sound="true|false"
|
|
29
|
-
audio-volume="0.1">
|
|
120
|
+
max-visible-notifications="2"
|
|
121
|
+
play-sound="true|false"
|
|
122
|
+
audio-volume="0.1">
|
|
30
123
|
</sch-notification-container>
|
|
124
|
+
```
|
|
31
125
|
|
|
32
|
-
|
|
126
|
+
### Individual Notification (used internally)
|
|
127
|
+
|
|
128
|
+
```html
|
|
33
129
|
<sch-notification
|
|
34
130
|
title="Title"
|
|
35
131
|
message="Message text"
|
|
36
132
|
type="info|success|warning|error"
|
|
37
|
-
duration="5000"
|
|
133
|
+
duration="5000"
|
|
38
134
|
closable="true"
|
|
39
135
|
play-sound="true"
|
|
40
|
-
|
|
136
|
+
show-progress="false"
|
|
137
|
+
@close>
|
|
41
138
|
</sch-notification>
|
|
139
|
+
```
|
|
42
140
|
|
|
43
|
-
|
|
44
|
-
// Basic usage
|
|
45
|
-
$notification.success("Operation completed successfully");
|
|
141
|
+
## Examples
|
|
46
142
|
|
|
47
|
-
|
|
48
|
-
|
|
143
|
+
```js
|
|
144
|
+
// Basic notifications
|
|
145
|
+
$notify.success("Operation completed")
|
|
146
|
+
$notify.error("Failed to save", { duration: 5000 })
|
|
147
|
+
$notify.info() // Just icon, no message
|
|
49
148
|
|
|
50
|
-
//
|
|
51
|
-
$
|
|
52
|
-
|
|
53
|
-
duration: 10000,
|
|
54
|
-
closable: true
|
|
55
|
-
});
|
|
149
|
+
// Persistent notification
|
|
150
|
+
const id = $notify.persistent("Processing...")
|
|
151
|
+
// Later: $notify.dismiss(id)
|
|
56
152
|
|
|
57
|
-
//
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
//
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
//
|
|
153
|
+
// API with loading state
|
|
154
|
+
fetchData().pipe(
|
|
155
|
+
notify({
|
|
156
|
+
loadingMessage: 'Fetching...',
|
|
157
|
+
successMessage: 'Data loaded!',
|
|
158
|
+
errorMessage: 'Failed'
|
|
159
|
+
})
|
|
160
|
+
).subscribe()
|
|
161
|
+
|
|
162
|
+
// File upload with progress
|
|
163
|
+
upload(file).pipe(
|
|
164
|
+
notify({
|
|
165
|
+
loadingMessage: 'Uploading file...',
|
|
166
|
+
successMessage: 'Upload complete!',
|
|
167
|
+
successDuration: 3000,
|
|
168
|
+
errorMessage: (err) => `Upload failed: ${err.message}`,
|
|
169
|
+
errorDuration: 0 // Persistent error
|
|
170
|
+
})
|
|
171
|
+
).subscribe()
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Setup
|
|
175
|
+
|
|
176
|
+
Add the notification container once in your app layout:
|
|
177
|
+
|
|
178
|
+
```html
|
|
74
179
|
<sch-notification-container
|
|
75
180
|
position="top-right"
|
|
76
181
|
max-visible-notifications="3"
|
|
77
182
|
play-sound="true">
|
|
78
183
|
</sch-notification-container>
|
|
79
|
-
```
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Progress Indication
|
|
187
|
+
|
|
188
|
+
- Notifications automatically show a progress bar when `duration > 0` (countdown)
|
|
189
|
+
- When using `notify()` operator, shows indeterminate progress during loading
|
|
190
|
+
- Detects progress in observable emissions:
|
|
191
|
+
- `{ progress: 50 }` - Shows "Loading... (50%)"
|
|
192
|
+
- `{ loaded: 500, total: 1000 }` - Shows "Loading... (50%)"
|
package/dist/ai/map.md
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
# Schmancy Map Component
|
|
2
|
+
|
|
3
|
+
The `schmancy-map` component provides an easy-to-use Google Maps integration with an intuitive API designed for both technical and non-technical users.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @mhmo91/schmancy
|
|
9
|
+
# or
|
|
10
|
+
yarn add @mhmo91/schmancy
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Import
|
|
14
|
+
|
|
15
|
+
```javascript
|
|
16
|
+
import '@mhmo91/schmancy/map'
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## API Reference
|
|
20
|
+
|
|
21
|
+
| Property | Type | Default | Description |
|
|
22
|
+
|----------|------|---------|-------------|
|
|
23
|
+
| `address` | `string` | `''` | Simple address string that automatically geocodes to display the location. Takes precedence over latitude/longitude if both are provided. |
|
|
24
|
+
| `latitude` | `number` | `undefined` | Latitude coordinate for precise location. Used when address is not provided. |
|
|
25
|
+
| `longitude` | `number` | `undefined` | Longitude coordinate for precise location. Used when address is not provided. |
|
|
26
|
+
| `zoom` | `number` | `15` | Map zoom level. Higher numbers show more detail (1-20). |
|
|
27
|
+
| `height` | `string` | `"400px"` | Height of the map with CSS unit (e.g., "400px", "50vh"). |
|
|
28
|
+
| `marker` | `boolean` | `true` | Whether to show a marker at the location. |
|
|
29
|
+
| `markerTitle` | `string` | `''` | Tooltip text for the location marker. |
|
|
30
|
+
| `type` | `'roadmap' \| 'satellite' \| 'hybrid' \| 'terrain'` | `'roadmap'` | Map display type. |
|
|
31
|
+
| `interactive` | `boolean` | `true` | Whether users can interact with the map (pan, zoom, click). |
|
|
32
|
+
| `controls` | `boolean` | `true` | Whether to show map controls (zoom buttons, fullscreen, etc.). |
|
|
33
|
+
| `apiKey` | `string` | `''` | Google Maps API key. Falls back to GOOGLE_MAPS_API_KEY environment variable. |
|
|
34
|
+
|
|
35
|
+
## Basic Usage
|
|
36
|
+
|
|
37
|
+
### Simple Address
|
|
38
|
+
The easiest way to display a map - just provide an address:
|
|
39
|
+
|
|
40
|
+
```html
|
|
41
|
+
<schmancy-map address="Times Square, New York"></schmancy-map>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Coordinates
|
|
45
|
+
For precise positioning, use latitude and longitude:
|
|
46
|
+
|
|
47
|
+
```html
|
|
48
|
+
<schmancy-map
|
|
49
|
+
latitude="40.758"
|
|
50
|
+
longitude="-73.985"
|
|
51
|
+
zoom="17">
|
|
52
|
+
</schmancy-map>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Custom Height
|
|
56
|
+
Adjust the map size:
|
|
57
|
+
|
|
58
|
+
```html
|
|
59
|
+
<schmancy-map
|
|
60
|
+
address="Central Park, New York"
|
|
61
|
+
height="600px">
|
|
62
|
+
</schmancy-map>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Map Types
|
|
66
|
+
|
|
67
|
+
### Satellite View
|
|
68
|
+
```html
|
|
69
|
+
<schmancy-map
|
|
70
|
+
address="Grand Canyon"
|
|
71
|
+
type="satellite"
|
|
72
|
+
height="500px">
|
|
73
|
+
</schmancy-map>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Hybrid View
|
|
77
|
+
Combines satellite imagery with labels:
|
|
78
|
+
|
|
79
|
+
```html
|
|
80
|
+
<schmancy-map
|
|
81
|
+
address="Mount Everest"
|
|
82
|
+
type="hybrid">
|
|
83
|
+
</schmancy-map>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Terrain View
|
|
87
|
+
Shows topographical features:
|
|
88
|
+
|
|
89
|
+
```html
|
|
90
|
+
<schmancy-map
|
|
91
|
+
address="Yellowstone National Park"
|
|
92
|
+
type="terrain">
|
|
93
|
+
</schmancy-map>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Static Maps
|
|
97
|
+
|
|
98
|
+
For display-only maps without user interaction:
|
|
99
|
+
|
|
100
|
+
```html
|
|
101
|
+
<schmancy-map
|
|
102
|
+
address="Eiffel Tower, Paris"
|
|
103
|
+
interactive="false"
|
|
104
|
+
controls="false">
|
|
105
|
+
</schmancy-map>
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Customization
|
|
109
|
+
|
|
110
|
+
### Custom Marker
|
|
111
|
+
```html
|
|
112
|
+
<schmancy-map
|
|
113
|
+
address="Statue of Liberty"
|
|
114
|
+
markerTitle="Welcome to Liberty Island">
|
|
115
|
+
</schmancy-map>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### No Marker
|
|
119
|
+
```html
|
|
120
|
+
<schmancy-map
|
|
121
|
+
address="Pacific Ocean"
|
|
122
|
+
marker="false">
|
|
123
|
+
</schmancy-map>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Different Zoom Levels
|
|
127
|
+
```html
|
|
128
|
+
<!-- City view -->
|
|
129
|
+
<schmancy-map address="Tokyo" zoom="10"></schmancy-map>
|
|
130
|
+
|
|
131
|
+
<!-- Street view -->
|
|
132
|
+
<schmancy-map address="Tokyo Tower" zoom="18"></schmancy-map>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## API Key Setup
|
|
136
|
+
|
|
137
|
+
### Environment Variable (Recommended)
|
|
138
|
+
Set `GOOGLE_MAPS_API_KEY` in your environment:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
GOOGLE_MAPS_API_KEY=your_api_key_here
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Direct Property
|
|
145
|
+
```html
|
|
146
|
+
<schmancy-map
|
|
147
|
+
address="Sydney Opera House"
|
|
148
|
+
api-key="your_api_key_here">
|
|
149
|
+
</schmancy-map>
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Features
|
|
153
|
+
|
|
154
|
+
### Automatic Geocoding
|
|
155
|
+
- Converts human-readable addresses to coordinates
|
|
156
|
+
- Handles various address formats
|
|
157
|
+
- Provides error feedback for invalid addresses
|
|
158
|
+
|
|
159
|
+
### Responsive Design
|
|
160
|
+
- Adapts to container width
|
|
161
|
+
- Configurable height with CSS units
|
|
162
|
+
- Maintains aspect ratio on mobile
|
|
163
|
+
|
|
164
|
+
### Loading States
|
|
165
|
+
- Shows spinner while loading
|
|
166
|
+
- Displays error messages for failed loads
|
|
167
|
+
- Graceful fallback when maps can't load
|
|
168
|
+
|
|
169
|
+
### Performance
|
|
170
|
+
- Lazy loads Google Maps API
|
|
171
|
+
- Caches script loading across components
|
|
172
|
+
- Minimal bundle size impact
|
|
173
|
+
|
|
174
|
+
## Error Handling
|
|
175
|
+
|
|
176
|
+
The component handles various error scenarios:
|
|
177
|
+
|
|
178
|
+
- **Invalid Address**: Shows error message with geocoding failure
|
|
179
|
+
- **Missing API Key**: Clear error message about required API key
|
|
180
|
+
- **Network Issues**: Graceful fallback with retry capability
|
|
181
|
+
- **Invalid Coordinates**: Validation of latitude/longitude ranges
|
|
182
|
+
|
|
183
|
+
## Accessibility
|
|
184
|
+
|
|
185
|
+
- Proper ARIA labels for screen readers
|
|
186
|
+
- Keyboard navigation support (when interactive)
|
|
187
|
+
- High contrast error states
|
|
188
|
+
- Semantic HTML structure
|
|
189
|
+
|
|
190
|
+
## Browser Support
|
|
191
|
+
|
|
192
|
+
- Modern browsers with ES2015+ support
|
|
193
|
+
- Google Maps API compatibility
|
|
194
|
+
- Progressive enhancement for older browsers
|
|
195
|
+
|
|
196
|
+
## Examples in Real Applications
|
|
197
|
+
|
|
198
|
+
### Store Locator
|
|
199
|
+
```html
|
|
200
|
+
<schmancy-map
|
|
201
|
+
address="Apple Store, 5th Avenue, New York"
|
|
202
|
+
zoom="16"
|
|
203
|
+
marker-title="Apple Store - 5th Avenue">
|
|
204
|
+
</schmancy-map>
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Event Location
|
|
208
|
+
```html
|
|
209
|
+
<schmancy-map
|
|
210
|
+
address="Madison Square Garden, New York"
|
|
211
|
+
height="300px"
|
|
212
|
+
interactive="false">
|
|
213
|
+
</schmancy-map>
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Property Listing
|
|
217
|
+
```html
|
|
218
|
+
<schmancy-map
|
|
219
|
+
latitude="40.7831"
|
|
220
|
+
longitude="-73.9712"
|
|
221
|
+
zoom="15"
|
|
222
|
+
marker-title="Beautiful Apartment">
|
|
223
|
+
</schmancy-map>
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## Best Practices
|
|
227
|
+
|
|
228
|
+
1. **Use addresses for user-friendly input**: Most users understand addresses better than coordinates
|
|
229
|
+
2. **Set appropriate zoom levels**: 10-12 for cities, 15-17 for neighborhoods, 18+ for buildings
|
|
230
|
+
3. **Consider mobile users**: Use responsive heights like "50vh" for mobile-friendly maps
|
|
231
|
+
4. **Provide meaningful marker titles**: Help users understand what the marker represents
|
|
232
|
+
5. **Use static maps for display-only**: Disable interaction when the map is purely informational
|