@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.
Files changed (333) hide show
  1. package/ai/map.md +232 -0
  2. package/ai/notification.md +158 -45
  3. package/dist/ai/map.md +232 -0
  4. package/dist/ai/notification.md +158 -45
  5. package/dist/{animated-text-D26Fv13t.js → animated-text-Bns9oiIU.js} +3 -3
  6. package/dist/{animated-text-D26Fv13t.js.map → animated-text-Bns9oiIU.js.map} +1 -1
  7. package/dist/{animated-text-CtXY3MHV.cjs → animated-text-CHUcj2G2.cjs} +2 -2
  8. package/dist/{animated-text-CtXY3MHV.cjs.map → animated-text-CHUcj2G2.cjs.map} +1 -1
  9. package/dist/animated-text.cjs +1 -1
  10. package/dist/animated-text.js +1 -1
  11. package/dist/area.cjs +1 -1
  12. package/dist/{area.component-BCcq9Nb7.js → area.component-Aur5h5TN.js} +10 -10
  13. package/dist/{area.component-BCcq9Nb7.js.map → area.component-Aur5h5TN.js.map} +1 -1
  14. package/dist/{area.component-DQ_erV9e.cjs → area.component-BTZcyqR5.cjs} +2 -2
  15. package/dist/{area.component-DQ_erV9e.cjs.map → area.component-BTZcyqR5.cjs.map} +1 -1
  16. package/dist/area.js +1 -1
  17. package/dist/{autocomplete-CkycjWy4.js → autocomplete-BhjrqWor.js} +3 -3
  18. package/dist/{autocomplete-CkycjWy4.js.map → autocomplete-BhjrqWor.js.map} +1 -1
  19. package/dist/{autocomplete-CrhgxhFI.cjs → autocomplete-CleoNM85.cjs} +2 -2
  20. package/dist/{autocomplete-CrhgxhFI.cjs.map → autocomplete-CleoNM85.cjs.map} +1 -1
  21. package/dist/autocomplete.cjs +1 -1
  22. package/dist/autocomplete.js +1 -1
  23. package/dist/{avatar-nwqyt3uc.cjs → avatar-DoUVCqad.cjs} +2 -2
  24. package/dist/{avatar-nwqyt3uc.cjs.map → avatar-DoUVCqad.cjs.map} +1 -1
  25. package/dist/{avatar-BXx1oJMG.js → avatar-j733KoCV.js} +53 -51
  26. package/dist/{avatar-BXx1oJMG.js.map → avatar-j733KoCV.js.map} +1 -1
  27. package/dist/badge.cjs +1 -1
  28. package/dist/badge.js +1 -1
  29. package/dist/{boat-C_BvtlNQ.js → boat-CIA-nk8V.js} +2 -2
  30. package/dist/{boat-C_BvtlNQ.js.map → boat-CIA-nk8V.js.map} +1 -1
  31. package/dist/{boat-B_xZilsk.cjs → boat-DU_GhEJ2.cjs} +2 -2
  32. package/dist/{boat-B_xZilsk.cjs.map → boat-DU_GhEJ2.cjs.map} +1 -1
  33. package/dist/boat.cjs +1 -1
  34. package/dist/boat.js +1 -1
  35. package/dist/busy.cjs +1 -1
  36. package/dist/busy.js +1 -1
  37. package/dist/button.cjs +1 -1
  38. package/dist/button.js +1 -1
  39. package/dist/card.cjs +1 -1
  40. package/dist/card.js +1 -1
  41. package/dist/{checkbox-c3DzDvWH.js → checkbox-BCTABF4s.js} +6 -6
  42. package/dist/{checkbox-c3DzDvWH.js.map → checkbox-BCTABF4s.js.map} +1 -1
  43. package/dist/{checkbox-BAuVXvYL.cjs → checkbox-DblOhLz_.cjs} +2 -2
  44. package/dist/{checkbox-BAuVXvYL.cjs.map → checkbox-DblOhLz_.cjs.map} +1 -1
  45. package/dist/checkbox.cjs +1 -1
  46. package/dist/checkbox.js +1 -1
  47. package/dist/{chips-Dn8RpKCE.js → chips-BbMM2s8r.js} +3 -3
  48. package/dist/{chips-Dn8RpKCE.js.map → chips-BbMM2s8r.js.map} +1 -1
  49. package/dist/{chips-Dg2otqDI.cjs → chips-LAtr3to0.cjs} +2 -2
  50. package/dist/{chips-Dg2otqDI.cjs.map → chips-LAtr3to0.cjs.map} +1 -1
  51. package/dist/chips.cjs +1 -1
  52. package/dist/chips.js +1 -1
  53. package/dist/{circular-progress-DZUJU-z3.cjs → circular-progress-BKwcIgEZ.cjs} +2 -2
  54. package/dist/{circular-progress-DZUJU-z3.cjs.map → circular-progress-BKwcIgEZ.cjs.map} +1 -1
  55. package/dist/{circular-progress-B1RjFzcp.js → circular-progress-DtAG2JJn.js} +3 -3
  56. package/dist/{circular-progress-B1RjFzcp.js.map → circular-progress-DtAG2JJn.js.map} +1 -1
  57. package/dist/circular-progress.cjs +1 -1
  58. package/dist/circular-progress.js +1 -1
  59. package/dist/code-highlight.cjs +1 -1
  60. package/dist/code-highlight.js +1 -1
  61. package/dist/{code-preview-JlSLKkKg.js → code-preview-BgwAlMc_.js} +2 -2
  62. package/dist/{code-preview-JlSLKkKg.js.map → code-preview-BgwAlMc_.js.map} +1 -1
  63. package/dist/{code-preview-CYHNaPek.cjs → code-preview-Bn6-jpNm.cjs} +2 -2
  64. package/dist/{code-preview-CYHNaPek.cjs.map → code-preview-Bn6-jpNm.cjs.map} +1 -1
  65. package/dist/components.cjs +1 -1
  66. package/dist/components.js +1 -1
  67. package/dist/content-drawer.cjs +1 -1
  68. package/dist/content-drawer.js +1 -1
  69. package/dist/{date-range-8o_f5N7V.js → date-range-CBfV-vU_.js} +4 -4
  70. package/dist/{date-range-8o_f5N7V.js.map → date-range-CBfV-vU_.js.map} +1 -1
  71. package/dist/{date-range-9NUFmKqd.cjs → date-range-CNsf8eFb.cjs} +2 -2
  72. package/dist/{date-range-9NUFmKqd.cjs.map → date-range-CNsf8eFb.cjs.map} +1 -1
  73. package/dist/{date-range-inline-Czq1wHs1.cjs → date-range-inline-ECHd558D.cjs} +2 -2
  74. package/dist/{date-range-inline-Czq1wHs1.cjs.map → date-range-inline-ECHd558D.cjs.map} +1 -1
  75. package/dist/{date-range-inline-B_K4YPtB.js → date-range-inline-VA3xdfyl.js} +3 -3
  76. package/dist/{date-range-inline-B_K4YPtB.js.map → date-range-inline-VA3xdfyl.js.map} +1 -1
  77. package/dist/date-range-inline.cjs +1 -1
  78. package/dist/date-range-inline.js +1 -1
  79. package/dist/date-range.cjs +1 -1
  80. package/dist/date-range.js +1 -1
  81. package/dist/{delay-DtVBjjLV.js → delay-B_3yscDy.js} +2 -2
  82. package/dist/{delay-DtVBjjLV.js.map → delay-B_3yscDy.js.map} +1 -1
  83. package/dist/{delay-FgtrEHdo.cjs → delay-DtUJwLKe.cjs} +2 -2
  84. package/dist/{delay-FgtrEHdo.cjs.map → delay-DtUJwLKe.cjs.map} +1 -1
  85. package/dist/delay.cjs +1 -1
  86. package/dist/delay.js +1 -1
  87. package/dist/details-Bkt6fV0b.js +134 -0
  88. package/dist/details-Bkt6fV0b.js.map +1 -0
  89. package/dist/details-X-ciBYba.cjs +109 -0
  90. package/dist/details-X-ciBYba.cjs.map +1 -0
  91. package/dist/details.cjs +2 -0
  92. package/dist/details.cjs.map +1 -0
  93. package/dist/details.js +5 -0
  94. package/dist/details.js.map +1 -0
  95. package/dist/{dialog-content-C_paCOeM.js → dialog-content-Y4RvMloi.js} +4 -4
  96. package/dist/{dialog-content-C_paCOeM.js.map → dialog-content-Y4RvMloi.js.map} +1 -1
  97. package/dist/{dialog-content-tGl9B67L.cjs → dialog-content-puP-JDoT.cjs} +2 -2
  98. package/dist/{dialog-content-tGl9B67L.cjs.map → dialog-content-puP-JDoT.cjs.map} +1 -1
  99. package/dist/{dialog-service-JNWTLfAy.cjs → dialog-service-BCfRtG2U.cjs} +2 -2
  100. package/dist/{dialog-service-JNWTLfAy.cjs.map → dialog-service-BCfRtG2U.cjs.map} +1 -1
  101. package/dist/{dialog-service-DZv4KB89.js → dialog-service-CY9yBEhe.js} +2 -2
  102. package/dist/{dialog-service-DZv4KB89.js.map → dialog-service-CY9yBEhe.js.map} +1 -1
  103. package/dist/dialog.cjs +1 -1
  104. package/dist/dialog.js +2 -2
  105. package/dist/{divider-Dn26vIou.js → divider-BZq3k_da.js} +3 -3
  106. package/dist/{divider-Dn26vIou.js.map → divider-BZq3k_da.js.map} +1 -1
  107. package/dist/{divider-2yg9r1tF.cjs → divider-t1KWAOnw.cjs} +2 -2
  108. package/dist/{divider-2yg9r1tF.cjs.map → divider-t1KWAOnw.cjs.map} +1 -1
  109. package/dist/divider.cjs +1 -1
  110. package/dist/divider.js +1 -1
  111. package/dist/{dropdown-content-DJ4CA3ug.cjs → dropdown-content-D834SoZi.cjs} +2 -2
  112. package/dist/{dropdown-content-DJ4CA3ug.cjs.map → dropdown-content-D834SoZi.cjs.map} +1 -1
  113. package/dist/{dropdown-content-DNJhJCdV.js → dropdown-content-JvpnX2RS.js} +3 -3
  114. package/dist/{dropdown-content-DNJhJCdV.js.map → dropdown-content-JvpnX2RS.js.map} +1 -1
  115. package/dist/dropdown.cjs +1 -1
  116. package/dist/dropdown.js +1 -1
  117. package/dist/extra.cjs +1 -1
  118. package/dist/extra.js +1 -1
  119. package/dist/{flex-DV2W2Zgu.js → flex-CAsda_Fe.js} +2 -2
  120. package/dist/{flex-DV2W2Zgu.js.map → flex-CAsda_Fe.js.map} +1 -1
  121. package/dist/{flex-DWnX0ZPR.cjs → flex-LjqLwPhI.cjs} +2 -2
  122. package/dist/{flex-DWnX0ZPR.cjs.map → flex-LjqLwPhI.cjs.map} +1 -1
  123. package/dist/{form-Dpokur4M.cjs → form-CpIQ4L1j.cjs} +2 -2
  124. package/dist/{form-Dpokur4M.cjs.map → form-CpIQ4L1j.cjs.map} +1 -1
  125. package/dist/{form-Cots2cbN.js → form-czxHWLos.js} +2 -2
  126. package/dist/{form-Cots2cbN.js.map → form-czxHWLos.js.map} +1 -1
  127. package/dist/form.cjs +1 -1
  128. package/dist/form.js +1 -1
  129. package/dist/{formField.mixin-ySoLTrgX.cjs → formField.mixin-BD-_Rnyy.cjs} +2 -2
  130. package/dist/{formField.mixin-ySoLTrgX.cjs.map → formField.mixin-BD-_Rnyy.cjs.map} +1 -1
  131. package/dist/{formField.mixin-DdTDdv9g.js → formField.mixin-bSNupTkm.js} +2 -2
  132. package/dist/{formField.mixin-DdTDdv9g.js.map → formField.mixin-bSNupTkm.js.map} +1 -1
  133. package/dist/{icon-BZxC9aoA.js → icon-B8LhF-rS.js} +2 -2
  134. package/dist/{icon-BZxC9aoA.js.map → icon-B8LhF-rS.js.map} +1 -1
  135. package/dist/{icon-mhchC8Qw.cjs → icon-DgnS9IuB.cjs} +2 -2
  136. package/dist/{icon-mhchC8Qw.cjs.map → icon-DgnS9IuB.cjs.map} +1 -1
  137. package/dist/{icon-button-DbvjV5zJ.cjs → icon-button-CK0UyXcE.cjs} +2 -2
  138. package/dist/{icon-button-DbvjV5zJ.cjs.map → icon-button-CK0UyXcE.cjs.map} +1 -1
  139. package/dist/{icon-button-BGvSPuE-.js → icon-button-DdvdiQga.js} +3 -3
  140. package/dist/{icon-button-BGvSPuE-.js.map → icon-button-DdvdiQga.js.map} +1 -1
  141. package/dist/icons.cjs +1 -1
  142. package/dist/icons.js +1 -1
  143. package/dist/index.cjs +1 -1
  144. package/dist/index.js +166 -159
  145. package/dist/index.js.map +1 -1
  146. package/dist/{input-DzNoI9qU.cjs → input-DJKVCqiL.cjs} +2 -2
  147. package/dist/{input-DzNoI9qU.cjs.map → input-DJKVCqiL.cjs.map} +1 -1
  148. package/dist/{input-Cpo-ws8k.js → input-rNxC53BQ.js} +3 -3
  149. package/dist/{input-Cpo-ws8k.js.map → input-rNxC53BQ.js.map} +1 -1
  150. package/dist/input.cjs +1 -1
  151. package/dist/input.js +1 -1
  152. package/dist/layout.cjs +1 -1
  153. package/dist/layout.js +1 -1
  154. package/dist/{list-BTyoQ42F.js → list-ccMISKKN.js} +2 -2
  155. package/dist/{list-BTyoQ42F.js.map → list-ccMISKKN.js.map} +1 -1
  156. package/dist/{list-DRbkWHho.cjs → list-e54Aokyk.cjs} +2 -2
  157. package/dist/{list-DRbkWHho.cjs.map → list-e54Aokyk.cjs.map} +1 -1
  158. package/dist/list.cjs +1 -1
  159. package/dist/list.js +1 -1
  160. package/dist/{litElement.mixin-BH9PTyUD.js → litElement.mixin-BMewYv9c.js} +2 -2
  161. package/dist/{litElement.mixin-BH9PTyUD.js.map → litElement.mixin-BMewYv9c.js.map} +1 -1
  162. package/dist/{litElement.mixin-B01R2oT7.cjs → litElement.mixin-Brn_lsa3.cjs} +2 -2
  163. package/dist/{litElement.mixin-B01R2oT7.cjs.map → litElement.mixin-Brn_lsa3.cjs.map} +1 -1
  164. package/dist/map-CsuRRLbB.js +175 -0
  165. package/dist/map-CsuRRLbB.js.map +1 -0
  166. package/dist/map-D3nhiTCn.cjs +81 -0
  167. package/dist/map-D3nhiTCn.cjs.map +1 -0
  168. package/dist/map.cjs +2 -0
  169. package/dist/map.cjs.map +1 -0
  170. package/dist/map.js +5 -0
  171. package/dist/map.js.map +1 -0
  172. package/dist/{media-BO-aZBTp.js → media-BtAS-xyw.js} +2 -2
  173. package/dist/{media-BO-aZBTp.js.map → media-BtAS-xyw.js.map} +1 -1
  174. package/dist/{media-CIuTybvD.cjs → media-Dd0PTrZ3.cjs} +2 -2
  175. package/dist/{media-CIuTybvD.cjs.map → media-Dd0PTrZ3.cjs.map} +1 -1
  176. package/dist/{menu-DWCDQvGY.js → menu-CAhuu8Ei.js} +3 -3
  177. package/dist/{menu-DWCDQvGY.js.map → menu-CAhuu8Ei.js.map} +1 -1
  178. package/dist/{menu-DEbZxoXr.cjs → menu-CFqp1aH7.cjs} +2 -2
  179. package/dist/{menu-DEbZxoXr.cjs.map → menu-CFqp1aH7.cjs.map} +1 -1
  180. package/dist/menu.cjs +1 -1
  181. package/dist/menu.js +1 -1
  182. package/dist/nav-drawer.cjs +1 -1
  183. package/dist/nav-drawer.js +1 -1
  184. package/dist/{notification-service-L_h9_d4v.js → notification-service-Byz67oln.js} +142 -113
  185. package/dist/notification-service-Byz67oln.js.map +1 -0
  186. package/dist/notification-service-KWQfnc6d.cjs +143 -0
  187. package/dist/notification-service-KWQfnc6d.cjs.map +1 -0
  188. package/dist/notification.cjs +1 -1
  189. package/dist/notification.js +7 -4
  190. package/dist/notification.js.map +1 -1
  191. package/dist/notify-BIdXyvMf.js +35 -0
  192. package/dist/notify-BIdXyvMf.js.map +1 -0
  193. package/dist/notify-DDzsX0lt.cjs +2 -0
  194. package/dist/notify-DDzsX0lt.cjs.map +1 -0
  195. package/dist/number-B7aCRYnH.cjs.map +1 -1
  196. package/dist/number-BhTiptLA.js.map +1 -1
  197. package/dist/{option-vRGeXw_u.js → option-BCg6S7Jj.js} +2 -2
  198. package/dist/{option-vRGeXw_u.js.map → option-BCg6S7Jj.js.map} +1 -1
  199. package/dist/{option-BPmOG_Hw.cjs → option-DarGe_f3.cjs} +2 -2
  200. package/dist/{option-BPmOG_Hw.cjs.map → option-DarGe_f3.cjs.map} +1 -1
  201. package/dist/option.cjs +1 -1
  202. package/dist/option.js +1 -1
  203. package/dist/{payment-card-form-Cs5bP5Di.js → payment-card-form-C1W2DPu4.js} +3 -3
  204. package/dist/{payment-card-form-Cs5bP5Di.js.map → payment-card-form-C1W2DPu4.js.map} +1 -1
  205. package/dist/{payment-card-form-ccF9dfGC.cjs → payment-card-form-CW3KC9QK.cjs} +2 -2
  206. package/dist/{payment-card-form-ccF9dfGC.cjs.map → payment-card-form-CW3KC9QK.cjs.map} +1 -1
  207. package/dist/{progress-BqZ7yHQe.cjs → progress-B-ZZ40CK.cjs} +2 -2
  208. package/dist/{progress-BqZ7yHQe.cjs.map → progress-B-ZZ40CK.cjs.map} +1 -1
  209. package/dist/{progress-DM_jha7D.js → progress-BSJSsYj7.js} +2 -2
  210. package/dist/{progress-DM_jha7D.js.map → progress-BSJSsYj7.js.map} +1 -1
  211. package/dist/progress.cjs +1 -1
  212. package/dist/progress.js +1 -1
  213. package/dist/{radio-button-WmbuT_YW.cjs → radio-button-CsIIrM_C.cjs} +2 -2
  214. package/dist/{radio-button-WmbuT_YW.cjs.map → radio-button-CsIIrM_C.cjs.map} +1 -1
  215. package/dist/{radio-button-YDzqdRA-.js → radio-button-DX4XSjAy.js} +3 -3
  216. package/dist/{radio-button-YDzqdRA-.js.map → radio-button-DX4XSjAy.js.map} +1 -1
  217. package/dist/radio-group.cjs +1 -1
  218. package/dist/radio-group.js +1 -1
  219. package/dist/{schmancy-steps-container-CoARMXfB.js → schmancy-steps-container-8RdoKtdK.js} +2 -2
  220. package/dist/{schmancy-steps-container-CoARMXfB.js.map → schmancy-steps-container-8RdoKtdK.js.map} +1 -1
  221. package/dist/{schmancy-steps-container-CjAsrjKf.cjs → schmancy-steps-container-DADzK9o0.cjs} +2 -2
  222. package/dist/{schmancy-steps-container-CjAsrjKf.cjs.map → schmancy-steps-container-DADzK9o0.cjs.map} +1 -1
  223. package/dist/{select-rwocpGs2.js → select-C-KLPYEJ.js} +3 -3
  224. package/dist/{select-rwocpGs2.js.map → select-C-KLPYEJ.js.map} +1 -1
  225. package/dist/{select-CPnSionr.cjs → select-CF9aojhZ.cjs} +2 -2
  226. package/dist/{select-CPnSionr.cjs.map → select-CF9aojhZ.cjs.map} +1 -1
  227. package/dist/select.cjs +1 -1
  228. package/dist/select.js +1 -1
  229. package/dist/{sheet-Cw2qLdzN.js → sheet-BQ2PhU-0.js} +4 -4
  230. package/dist/{sheet-Cw2qLdzN.js.map → sheet-BQ2PhU-0.js.map} +1 -1
  231. package/dist/{sheet-eCDoMdHF.cjs → sheet-CzCiJ3yC.cjs} +2 -2
  232. package/dist/{sheet-eCDoMdHF.cjs.map → sheet-CzCiJ3yC.cjs.map} +1 -1
  233. package/dist/sheet.cjs +1 -1
  234. package/dist/sheet.js +1 -1
  235. package/dist/{slider-C7Z1bPq7.js → slider-Bo0_X0Xt.js} +3 -3
  236. package/dist/{slider-C7Z1bPq7.js.map → slider-Bo0_X0Xt.js.map} +1 -1
  237. package/dist/{slider-DBNoXRWS.cjs → slider-C4fwo5P3.cjs} +2 -2
  238. package/dist/{slider-DBNoXRWS.cjs.map → slider-C4fwo5P3.cjs.map} +1 -1
  239. package/dist/slider.cjs +1 -1
  240. package/dist/slider.js +1 -1
  241. package/dist/{spinner-CbA-FXRK.js → spinner-CKnK4QHu.js} +2 -2
  242. package/dist/{spinner-CbA-FXRK.js.map → spinner-CKnK4QHu.js.map} +1 -1
  243. package/dist/{spinner-CV62BBoF.cjs → spinner-DMoZTIMe.cjs} +2 -2
  244. package/dist/{spinner-CV62BBoF.cjs.map → spinner-DMoZTIMe.cjs.map} +1 -1
  245. package/dist/steps.cjs +1 -1
  246. package/dist/steps.js +1 -1
  247. package/dist/{surface-By8o7nWa.js → surface-BEaRxAZt.js} +2 -2
  248. package/dist/{surface-By8o7nWa.js.map → surface-BEaRxAZt.js.map} +1 -1
  249. package/dist/{surface-ClfeUI6q.cjs → surface-Bcy2LzAX.cjs} +2 -2
  250. package/dist/{surface-ClfeUI6q.cjs.map → surface-Bcy2LzAX.cjs.map} +1 -1
  251. package/dist/surface.cjs +1 -1
  252. package/dist/surface.js +1 -1
  253. package/dist/{table-Rqnb4AJl.cjs → table-9AyLMNRe.cjs} +2 -2
  254. package/dist/{table-Rqnb4AJl.cjs.map → table-9AyLMNRe.cjs.map} +1 -1
  255. package/dist/{table-CvMo5lOi.js → table-MzCzXjAC.js} +2 -2
  256. package/dist/{table-CvMo5lOi.js.map → table-MzCzXjAC.js.map} +1 -1
  257. package/dist/table.cjs +1 -1
  258. package/dist/table.js +1 -1
  259. package/dist/{tabs-compatibility-BEXurIiZ.js → tabs-compatibility-D5xv33oo.js} +2 -2
  260. package/dist/{tabs-compatibility-BEXurIiZ.js.map → tabs-compatibility-D5xv33oo.js.map} +1 -1
  261. package/dist/{tabs-compatibility-B1bE7hSG.cjs → tabs-compatibility-N1qxOCYJ.cjs} +2 -2
  262. package/dist/{tabs-compatibility-B1bE7hSG.cjs.map → tabs-compatibility-N1qxOCYJ.cjs.map} +1 -1
  263. package/dist/tabs.cjs +1 -1
  264. package/dist/tabs.js +1 -1
  265. package/dist/tailwind.mixin-BTGoGfEI.js +43 -0
  266. package/dist/{tailwind.mixin-CaIkmP6j.js.map → tailwind.mixin-BTGoGfEI.js.map} +1 -1
  267. package/dist/tailwind.mixin-KC3Nl9kj.cjs +2 -0
  268. package/dist/{tailwind.mixin-DVKI3qb9.cjs.map → tailwind.mixin-KC3Nl9kj.cjs.map} +1 -1
  269. package/dist/teleport.cjs +1 -1
  270. package/dist/teleport.js +1 -1
  271. package/dist/{textarea-DM3lgEUp.js → textarea-BHGIbEBY.js} +2 -2
  272. package/dist/{textarea-DM3lgEUp.js.map → textarea-BHGIbEBY.js.map} +1 -1
  273. package/dist/{textarea-Dlnyyrbq.cjs → textarea-DUBjaAfu.cjs} +2 -2
  274. package/dist/{textarea-Dlnyyrbq.cjs.map → textarea-DUBjaAfu.cjs.map} +1 -1
  275. package/dist/textarea.cjs +1 -1
  276. package/dist/textarea.js +1 -1
  277. package/dist/{theme-button-Cao8AH8r.cjs → theme-button-C2-L23sJ.cjs} +2 -2
  278. package/dist/{theme-button-Cao8AH8r.cjs.map → theme-button-C2-L23sJ.cjs.map} +1 -1
  279. package/dist/{theme-button-C4JWRMiC.js → theme-button-FU1OUOBA.js} +2 -2
  280. package/dist/{theme-button-C4JWRMiC.js.map → theme-button-FU1OUOBA.js.map} +1 -1
  281. package/dist/theme-button.cjs +1 -1
  282. package/dist/theme-button.js +1 -1
  283. package/dist/theme.cjs +1 -1
  284. package/dist/{theme.component-RtV3l-Ns.cjs → theme.component-BQr3n0fE.cjs} +3 -3
  285. package/dist/{theme.component-RtV3l-Ns.cjs.map → theme.component-BQr3n0fE.cjs.map} +1 -1
  286. package/dist/{theme.component-ColRTbY5.js → theme.component-BYGB9dTb.js} +2 -2
  287. package/dist/{theme.component-ColRTbY5.js.map → theme.component-BYGB9dTb.js.map} +1 -1
  288. package/dist/theme.js +1 -1
  289. package/dist/{timezone-Cvsd--fr.js → timezone-BgX3qSF-.js} +3 -3
  290. package/dist/{timezone-Cvsd--fr.js.map → timezone-BgX3qSF-.js.map} +1 -1
  291. package/dist/{timezone-UBBApQoU.cjs → timezone-DexhNs9f.cjs} +2 -2
  292. package/dist/{timezone-UBBApQoU.cjs.map → timezone-DexhNs9f.cjs.map} +1 -1
  293. package/dist/{tooltip-nwQwCEgl.js → tooltip-CkGy17kd.js} +2 -2
  294. package/dist/{tooltip-nwQwCEgl.js.map → tooltip-CkGy17kd.js.map} +1 -1
  295. package/dist/{tooltip-WpE4e-fO.cjs → tooltip-xj7RGLlB.cjs} +2 -2
  296. package/dist/{tooltip-WpE4e-fO.cjs.map → tooltip-xj7RGLlB.cjs.map} +1 -1
  297. package/dist/tooltip.cjs +1 -1
  298. package/dist/tooltip.js +1 -1
  299. package/dist/{tree-BDmB7KmQ.js → tree-BeU8nzGP.js} +2 -2
  300. package/dist/{tree-BDmB7KmQ.js.map → tree-BeU8nzGP.js.map} +1 -1
  301. package/dist/{tree-Dn0t7MUR.cjs → tree-DSpkwuOO.cjs} +2 -2
  302. package/dist/{tree-Dn0t7MUR.cjs.map → tree-DSpkwuOO.cjs.map} +1 -1
  303. package/dist/tree.cjs +1 -1
  304. package/dist/tree.js +1 -1
  305. package/dist/{typewriter-Fq4uV6Gm.cjs → typewriter-Bn7fe4nG.cjs} +2 -2
  306. package/dist/{typewriter-Fq4uV6Gm.cjs.map → typewriter-Bn7fe4nG.cjs.map} +1 -1
  307. package/dist/{typewriter-CXadCi-4.js → typewriter-CbONIeGA.js} +7 -7
  308. package/dist/{typewriter-CXadCi-4.js.map → typewriter-CbONIeGA.js.map} +1 -1
  309. package/dist/typewriter.cjs +1 -1
  310. package/dist/typewriter.js +1 -1
  311. package/dist/{typography-BhCrqK_b.cjs → typography-CJ5-RiNW.cjs} +2 -2
  312. package/dist/{typography-BhCrqK_b.cjs.map → typography-CJ5-RiNW.cjs.map} +1 -1
  313. package/dist/{typography-DYCOngD7.js → typography-D1m-mdd7.js} +2 -2
  314. package/dist/{typography-DYCOngD7.js.map → typography-D1m-mdd7.js.map} +1 -1
  315. package/dist/typography.cjs +1 -1
  316. package/dist/typography.js +1 -1
  317. package/package.json +1 -1
  318. package/types/src/details/details.d.ts +14 -0
  319. package/types/src/details/index.d.ts +1 -0
  320. package/types/src/index.d.ts +2 -0
  321. package/types/src/map/index.d.ts +1 -0
  322. package/types/src/map/map.d.ts +129 -0
  323. package/types/src/notification/index.d.ts +2 -0
  324. package/types/src/notification/notification-container.d.ts +3 -0
  325. package/types/src/notification/notification-service.d.ts +19 -0
  326. package/types/src/notification/notification.d.ts +2 -0
  327. package/types/src/notification/notify.d.ts +100 -0
  328. package/types/src/utils/number.d.ts +2 -0
  329. package/dist/notification-service-B6nHqzq5.cjs +0 -141
  330. package/dist/notification-service-B6nHqzq5.cjs.map +0 -1
  331. package/dist/notification-service-L_h9_d4v.js.map +0 -1
  332. package/dist/tailwind.mixin-CaIkmP6j.js +0 -43
  333. 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
@@ -1,79 +1,192 @@
1
1
  # Schmancy Notification - AI Reference
2
2
 
3
+ ## Core Notification Service
4
+
3
5
  ```js
4
- // Notification Service API
5
- import { $notification } from '@mhmo91/schmancy';
6
+ import { $notify } from '@mhmo91/schmancy'
6
7
 
7
8
  // Display notification methods
8
- $notification.info(message?, options?) -> string // Returns notification ID
9
- $notification.success(message?, options?) -> string
10
- $notification.warning(message?, options?) -> string
11
- $notification.error(message?, options?) -> string
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
- $notification.notify({
15
+ $notify.show({
15
16
  message: string,
16
17
  type?: 'info'|'success'|'warning'|'error',
17
18
  title?: string,
18
- duration?: number, // milliseconds, default 1000 (1 second)
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 // Returns notification ID
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
- // Notification Container Component
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" // Max number shown at once (default: 2)
28
- play-sound="true|false" // Enable/disable sounds (default: false)
29
- audio-volume="0.1"> // Volume level 0-1 (default: 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
- // Individual Notification Component (used internally)
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" // Auto-close after ms (0 = no auto-close)
133
+ duration="5000"
38
134
  closable="true"
39
135
  play-sound="true"
40
- @close> // Fired when notification closes
136
+ show-progress="false"
137
+ @close>
41
138
  </sch-notification>
139
+ ```
42
140
 
43
- // Examples
44
- // Basic usage
45
- $notification.success("Operation completed successfully");
141
+ ## Examples
46
142
 
47
- // Without message (just icon)
48
- $notification.success();
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
- // With options
51
- $notification.error("Failed to save changes", {
52
- title: "Error",
53
- duration: 10000,
54
- closable: true
55
- });
149
+ // Persistent notification
150
+ const id = $notify.persistent("Processing...")
151
+ // Later: $notify.dismiss(id)
56
152
 
57
- // Custom notification
58
- $notification.notify({
59
- type: "info",
60
- message: "Custom message",
61
- title: "Information",
62
- duration: 0, // won't auto-close
63
- playSound: false
64
- });
65
-
66
- // Programmatic control
67
- const notificationId = $notification.info("Processing...", { duration: 0 });
68
- // Later, to remove it:
69
- const container = document.querySelector('sch-notification-container');
70
- container.removeNotification(notificationId);
71
-
72
- // Setup notification container
73
- // Add this once in your app layout:
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