@meeovi/layer-social 1.0.3

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 (428) hide show
  1. package/README.md +79 -0
  2. package/app/assets/bootstrap/css/bootstrap-grid.min.css +6 -0
  3. package/app/assets/bootstrap/css/bootstrap-reboot.min.css +7 -0
  4. package/app/assets/bootstrap/css/bootstrap.min.css +11696 -0
  5. package/app/assets/bootstrap/js/bootstrap.bundle.min.js +6 -0
  6. package/app/assets/bootstrap/js/bootstrap.min.js +7 -0
  7. package/app/assets/commerce/css/bootstrap.css +8878 -0
  8. package/app/assets/commerce/css/bootstrap.css.map +7 -0
  9. package/app/assets/commerce/css/responsive.css +105 -0
  10. package/app/assets/commerce/css/responsive.css.map +7 -0
  11. package/app/assets/commerce/css/ui.css +1277 -0
  12. package/app/assets/commerce/css/ui.css.map +7 -0
  13. package/app/assets/commerce/fonts/fontawesome/css/all.css +4335 -0
  14. package/app/assets/commerce/fonts/fontawesome/css/all.min.css +5 -0
  15. package/app/assets/commerce/fonts/fontawesome/css/brands.css +14 -0
  16. package/app/assets/commerce/fonts/fontawesome/css/brands.min.css +5 -0
  17. package/app/assets/commerce/fonts/fontawesome/css/fontawesome.css +4302 -0
  18. package/app/assets/commerce/fonts/fontawesome/css/fontawesome.min.css +5 -0
  19. package/app/assets/commerce/fonts/fontawesome/css/regular.css +15 -0
  20. package/app/assets/commerce/fonts/fontawesome/css/regular.min.css +5 -0
  21. package/app/assets/commerce/fonts/fontawesome/css/solid.css +16 -0
  22. package/app/assets/commerce/fonts/fontawesome/css/solid.min.css +5 -0
  23. package/app/assets/commerce/fonts/fontawesome/css/svg-with-js.css +346 -0
  24. package/app/assets/commerce/fonts/fontawesome/css/svg-with-js.min.css +5 -0
  25. package/app/assets/commerce/fonts/fontawesome/css/v4-shims.css +2166 -0
  26. package/app/assets/commerce/fonts/fontawesome/css/v4-shims.min.css +5 -0
  27. package/app/assets/commerce/fonts/fontawesome/webfonts/fa-brands-400.eot +0 -0
  28. package/app/assets/commerce/fonts/fontawesome/webfonts/fa-brands-400.svg +3452 -0
  29. package/app/assets/commerce/fonts/fontawesome/webfonts/fa-brands-400.ttf +0 -0
  30. package/app/assets/commerce/fonts/fontawesome/webfonts/fa-brands-400.woff +0 -0
  31. package/app/assets/commerce/fonts/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
  32. package/app/assets/commerce/fonts/fontawesome/webfonts/fa-regular-400.eot +0 -0
  33. package/app/assets/commerce/fonts/fontawesome/webfonts/fa-regular-400.svg +803 -0
  34. package/app/assets/commerce/fonts/fontawesome/webfonts/fa-regular-400.ttf +0 -0
  35. package/app/assets/commerce/fonts/fontawesome/webfonts/fa-regular-400.woff +0 -0
  36. package/app/assets/commerce/fonts/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
  37. package/app/assets/commerce/fonts/fontawesome/webfonts/fa-solid-900.eot +0 -0
  38. package/app/assets/commerce/fonts/fontawesome/webfonts/fa-solid-900.svg +4527 -0
  39. package/app/assets/commerce/fonts/fontawesome/webfonts/fa-solid-900.ttf +0 -0
  40. package/app/assets/commerce/fonts/fontawesome/webfonts/fa-solid-900.woff +0 -0
  41. package/app/assets/commerce/fonts/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
  42. package/app/assets/commerce/fonts/roboto/Roboto-Bold.ttf +0 -0
  43. package/app/assets/commerce/fonts/roboto/Roboto-Light.ttf +0 -0
  44. package/app/assets/commerce/fonts/roboto/Roboto-Medium.ttf +0 -0
  45. package/app/assets/commerce/fonts/roboto/Roboto-Regular.ttf +0 -0
  46. package/app/assets/commerce/fonts/roboto/Roboto-Thin.ttf +0 -0
  47. package/app/assets/commerce/fonts/roboto/font.css +23 -0
  48. package/app/assets/commerce/images/avatars/avatar1.jpg +0 -0
  49. package/app/assets/commerce/images/avatars/avatar2.jpg +0 -0
  50. package/app/assets/commerce/images/avatars/avatar3.jpg +0 -0
  51. package/app/assets/commerce/images/banners/ad-sm.png +0 -0
  52. package/app/assets/commerce/images/banners/ad.png +0 -0
  53. package/app/assets/commerce/images/banners/banner-item1.jpg +0 -0
  54. package/app/assets/commerce/images/banners/banner-item2.jpg +0 -0
  55. package/app/assets/commerce/images/banners/banner-item3.jpg +0 -0
  56. package/app/assets/commerce/images/banners/banner1.jpg +0 -0
  57. package/app/assets/commerce/images/banners/banner2.jpg +0 -0
  58. package/app/assets/commerce/images/banners/banner3.jpg +0 -0
  59. package/app/assets/commerce/images/banners/banner4.jpg +0 -0
  60. package/app/assets/commerce/images/banners/banner5.jpg +0 -0
  61. package/app/assets/commerce/images/banners/banner6.jpg +0 -0
  62. package/app/assets/commerce/images/banners/banner7.jpg +0 -0
  63. package/app/assets/commerce/images/banners/banner8.jpg +0 -0
  64. package/app/assets/commerce/images/banners/banner9.jpg +0 -0
  65. package/app/assets/commerce/images/banners/slide1.jpg +0 -0
  66. package/app/assets/commerce/images/banners/slide2.jpg +0 -0
  67. package/app/assets/commerce/images/banners/slide3.jpg +0 -0
  68. package/app/assets/commerce/images/favicon.ico +0 -0
  69. package/app/assets/commerce/images/icons/flags/AU.png +0 -0
  70. package/app/assets/commerce/images/icons/flags/AU@2x.png +0 -0
  71. package/app/assets/commerce/images/icons/flags/CN.png +0 -0
  72. package/app/assets/commerce/images/icons/flags/CN@2x.png +0 -0
  73. package/app/assets/commerce/images/icons/flags/DE.png +0 -0
  74. package/app/assets/commerce/images/icons/flags/DE@2x.png +0 -0
  75. package/app/assets/commerce/images/icons/flags/GB.png +0 -0
  76. package/app/assets/commerce/images/icons/flags/GB@2x.png +0 -0
  77. package/app/assets/commerce/images/icons/flags/IN.png +0 -0
  78. package/app/assets/commerce/images/icons/flags/IN@2x.png +0 -0
  79. package/app/assets/commerce/images/icons/flags/RU.png +0 -0
  80. package/app/assets/commerce/images/icons/flags/RU@2x.png +0 -0
  81. package/app/assets/commerce/images/icons/flags/TR.png +0 -0
  82. package/app/assets/commerce/images/icons/flags/TR@2x.png +0 -0
  83. package/app/assets/commerce/images/icons/flags/US.png +0 -0
  84. package/app/assets/commerce/images/icons/flags/US@2x.png +0 -0
  85. package/app/assets/commerce/images/icons/flags/UZ.png +0 -0
  86. package/app/assets/commerce/images/icons/flags/UZ@2x.png +0 -0
  87. package/app/assets/commerce/images/icons/pay-american-ex.png +0 -0
  88. package/app/assets/commerce/images/icons/pay-bank.png +0 -0
  89. package/app/assets/commerce/images/icons/pay-mastercard.png +0 -0
  90. package/app/assets/commerce/images/icons/pay-visa-el.png +0 -0
  91. package/app/assets/commerce/images/icons/pay-visa.png +0 -0
  92. package/app/assets/commerce/images/items/1.jpg +0 -0
  93. package/app/assets/commerce/images/items/10.jpg +0 -0
  94. package/app/assets/commerce/images/items/11.jpg +0 -0
  95. package/app/assets/commerce/images/items/12.jpg +0 -0
  96. package/app/assets/commerce/images/items/13.jpg +0 -0
  97. package/app/assets/commerce/images/items/14.jpg +0 -0
  98. package/app/assets/commerce/images/items/15-1.jpg +0 -0
  99. package/app/assets/commerce/images/items/15-2.jpg +0 -0
  100. package/app/assets/commerce/images/items/15.jpg +0 -0
  101. package/app/assets/commerce/images/items/2.jpg +0 -0
  102. package/app/assets/commerce/images/items/3.jpg +0 -0
  103. package/app/assets/commerce/images/items/4.jpg +0 -0
  104. package/app/assets/commerce/images/items/5.jpg +0 -0
  105. package/app/assets/commerce/images/items/6.jpg +0 -0
  106. package/app/assets/commerce/images/items/7.jpg +0 -0
  107. package/app/assets/commerce/images/items/8.jpg +0 -0
  108. package/app/assets/commerce/images/items/9.jpg +0 -0
  109. package/app/assets/commerce/images/logo-white.png +0 -0
  110. package/app/assets/commerce/images/logo.png +0 -0
  111. package/app/assets/commerce/images/logo.svg +16 -0
  112. package/app/assets/commerce/images/misc/appstore.png +0 -0
  113. package/app/assets/commerce/images/misc/payments.png +0 -0
  114. package/app/assets/commerce/images/misc/playmarket.png +0 -0
  115. package/app/assets/commerce/images/posts/1.jpg +0 -0
  116. package/app/assets/commerce/images/posts/2.jpg +0 -0
  117. package/app/assets/commerce/images/posts/3.jpg +0 -0
  118. package/app/assets/commerce/images/posts/4.jpg +0 -0
  119. package/app/assets/commerce/js/bootstrap.bundle.min.js +7 -0
  120. package/app/assets/commerce/js/jquery-2.0.0.min.js +6 -0
  121. package/app/assets/commerce/js/script.js +30 -0
  122. package/app/assets/commerce/sass/_variables-custom.scss +1102 -0
  123. package/app/assets/commerce/sass/bootstrap-assets/_alert.scss +51 -0
  124. package/app/assets/commerce/sass/bootstrap-assets/_badge.scss +54 -0
  125. package/app/assets/commerce/sass/bootstrap-assets/_bootstrap.scss +44 -0
  126. package/app/assets/commerce/sass/bootstrap-assets/_breadcrumb.scss +40 -0
  127. package/app/assets/commerce/sass/bootstrap-assets/_button-group.scss +163 -0
  128. package/app/assets/commerce/sass/bootstrap-assets/_buttons.scss +137 -0
  129. package/app/assets/commerce/sass/bootstrap-assets/_card.scss +289 -0
  130. package/app/assets/commerce/sass/bootstrap-assets/_carousel.scss +197 -0
  131. package/app/assets/commerce/sass/bootstrap-assets/_close.scss +41 -0
  132. package/app/assets/commerce/sass/bootstrap-assets/_code.scss +48 -0
  133. package/app/assets/commerce/sass/bootstrap-assets/_custom-forms.scss +507 -0
  134. package/app/assets/commerce/sass/bootstrap-assets/_dropdown.scss +191 -0
  135. package/app/assets/commerce/sass/bootstrap-assets/_forms.scss +330 -0
  136. package/app/assets/commerce/sass/bootstrap-assets/_functions.scss +86 -0
  137. package/app/assets/commerce/sass/bootstrap-assets/_grid.scss +52 -0
  138. package/app/assets/commerce/sass/bootstrap-assets/_images.scss +42 -0
  139. package/app/assets/commerce/sass/bootstrap-assets/_input-group.scss +193 -0
  140. package/app/assets/commerce/sass/bootstrap-assets/_jumbotron.scss +17 -0
  141. package/app/assets/commerce/sass/bootstrap-assets/_list-group.scss +149 -0
  142. package/app/assets/commerce/sass/bootstrap-assets/_media.scss +8 -0
  143. package/app/assets/commerce/sass/bootstrap-assets/_mixins.scss +47 -0
  144. package/app/assets/commerce/sass/bootstrap-assets/_modal.scss +229 -0
  145. package/app/assets/commerce/sass/bootstrap-assets/_nav.scss +119 -0
  146. package/app/assets/commerce/sass/bootstrap-assets/_navbar.scss +295 -0
  147. package/app/assets/commerce/sass/bootstrap-assets/_pagination.scss +73 -0
  148. package/app/assets/commerce/sass/bootstrap-assets/_popover.scss +171 -0
  149. package/app/assets/commerce/sass/bootstrap-assets/_print.scss +141 -0
  150. package/app/assets/commerce/sass/bootstrap-assets/_progress.scss +43 -0
  151. package/app/assets/commerce/sass/bootstrap-assets/_reboot.scss +483 -0
  152. package/app/assets/commerce/sass/bootstrap-assets/_root.scss +19 -0
  153. package/app/assets/commerce/sass/bootstrap-assets/_spinners.scss +55 -0
  154. package/app/assets/commerce/sass/bootstrap-assets/_tables.scss +185 -0
  155. package/app/assets/commerce/sass/bootstrap-assets/_toasts.scss +44 -0
  156. package/app/assets/commerce/sass/bootstrap-assets/_tooltip.scss +115 -0
  157. package/app/assets/commerce/sass/bootstrap-assets/_transitions.scss +20 -0
  158. package/app/assets/commerce/sass/bootstrap-assets/_type.scss +125 -0
  159. package/app/assets/commerce/sass/bootstrap-assets/_utilities.scss +17 -0
  160. package/app/assets/commerce/sass/bootstrap-assets/_variables.scss +1123 -0
  161. package/app/assets/commerce/sass/bootstrap-assets/mixins/_alert.scss +13 -0
  162. package/app/assets/commerce/sass/bootstrap-assets/mixins/_background-variant.scss +21 -0
  163. package/app/assets/commerce/sass/bootstrap-assets/mixins/_badge.scss +17 -0
  164. package/app/assets/commerce/sass/bootstrap-assets/mixins/_border-radius.scss +63 -0
  165. package/app/assets/commerce/sass/bootstrap-assets/mixins/_box-shadow.scss +20 -0
  166. package/app/assets/commerce/sass/bootstrap-assets/mixins/_breakpoints.scss +123 -0
  167. package/app/assets/commerce/sass/bootstrap-assets/mixins/_buttons.scss +107 -0
  168. package/app/assets/commerce/sass/bootstrap-assets/mixins/_caret.scss +62 -0
  169. package/app/assets/commerce/sass/bootstrap-assets/mixins/_clearfix.scss +7 -0
  170. package/app/assets/commerce/sass/bootstrap-assets/mixins/_deprecate.scss +10 -0
  171. package/app/assets/commerce/sass/bootstrap-assets/mixins/_float.scss +14 -0
  172. package/app/assets/commerce/sass/bootstrap-assets/mixins/_forms.scss +192 -0
  173. package/app/assets/commerce/sass/bootstrap-assets/mixins/_gradients.scss +45 -0
  174. package/app/assets/commerce/sass/bootstrap-assets/mixins/_grid-framework.scss +66 -0
  175. package/app/assets/commerce/sass/bootstrap-assets/mixins/_grid.scss +51 -0
  176. package/app/assets/commerce/sass/bootstrap-assets/mixins/_hover.scss +37 -0
  177. package/app/assets/commerce/sass/bootstrap-assets/mixins/_image.scss +36 -0
  178. package/app/assets/commerce/sass/bootstrap-assets/mixins/_list-group.scss +21 -0
  179. package/app/assets/commerce/sass/bootstrap-assets/mixins/_lists.scss +7 -0
  180. package/app/assets/commerce/sass/bootstrap-assets/mixins/_nav-divider.scss +10 -0
  181. package/app/assets/commerce/sass/bootstrap-assets/mixins/_pagination.scss +22 -0
  182. package/app/assets/commerce/sass/bootstrap-assets/mixins/_reset-text.scss +17 -0
  183. package/app/assets/commerce/sass/bootstrap-assets/mixins/_resize.scss +6 -0
  184. package/app/assets/commerce/sass/bootstrap-assets/mixins/_screen-reader.scss +33 -0
  185. package/app/assets/commerce/sass/bootstrap-assets/mixins/_size.scss +7 -0
  186. package/app/assets/commerce/sass/bootstrap-assets/mixins/_table-row.scss +39 -0
  187. package/app/assets/commerce/sass/bootstrap-assets/mixins/_text-emphasis.scss +16 -0
  188. package/app/assets/commerce/sass/bootstrap-assets/mixins/_text-hide.scss +11 -0
  189. package/app/assets/commerce/sass/bootstrap-assets/mixins/_text-truncate.scss +8 -0
  190. package/app/assets/commerce/sass/bootstrap-assets/mixins/_transition.scss +16 -0
  191. package/app/assets/commerce/sass/bootstrap-assets/mixins/_visibility.scss +8 -0
  192. package/app/assets/commerce/sass/bootstrap-assets/utilities/_align.scss +8 -0
  193. package/app/assets/commerce/sass/bootstrap-assets/utilities/_background.scss +19 -0
  194. package/app/assets/commerce/sass/bootstrap-assets/utilities/_borders.scss +75 -0
  195. package/app/assets/commerce/sass/bootstrap-assets/utilities/_clearfix.scss +3 -0
  196. package/app/assets/commerce/sass/bootstrap-assets/utilities/_display.scss +26 -0
  197. package/app/assets/commerce/sass/bootstrap-assets/utilities/_embed.scss +39 -0
  198. package/app/assets/commerce/sass/bootstrap-assets/utilities/_flex.scss +51 -0
  199. package/app/assets/commerce/sass/bootstrap-assets/utilities/_float.scss +11 -0
  200. package/app/assets/commerce/sass/bootstrap-assets/utilities/_overflow.scss +5 -0
  201. package/app/assets/commerce/sass/bootstrap-assets/utilities/_position.scss +32 -0
  202. package/app/assets/commerce/sass/bootstrap-assets/utilities/_screenreaders.scss +11 -0
  203. package/app/assets/commerce/sass/bootstrap-assets/utilities/_shadows.scss +6 -0
  204. package/app/assets/commerce/sass/bootstrap-assets/utilities/_sizing.scss +20 -0
  205. package/app/assets/commerce/sass/bootstrap-assets/utilities/_spacing.scss +73 -0
  206. package/app/assets/commerce/sass/bootstrap-assets/utilities/_stretched-link.scss +19 -0
  207. package/app/assets/commerce/sass/bootstrap-assets/utilities/_text.scss +72 -0
  208. package/app/assets/commerce/sass/bootstrap-assets/utilities/_visibility.scss +13 -0
  209. package/app/assets/commerce/sass/bootstrap-assets/vendor/_rfs.scss +204 -0
  210. package/app/assets/commerce/sass/bootstrap.scss +9 -0
  211. package/app/assets/commerce/sass/responsive.scss +114 -0
  212. package/app/assets/commerce/sass/ui-assets/components/_buttons.scss +23 -0
  213. package/app/assets/commerce/sass/ui-assets/components/_cards-item.scss +113 -0
  214. package/app/assets/commerce/sass/ui-assets/components/_elements.scss +72 -0
  215. package/app/assets/commerce/sass/ui-assets/components/_forms.scss +19 -0
  216. package/app/assets/commerce/sass/ui-assets/components/_items.scss +25 -0
  217. package/app/assets/commerce/sass/ui-assets/components/_lists.scss +90 -0
  218. package/app/assets/commerce/sass/ui-assets/components/_menu.scss +25 -0
  219. package/app/assets/commerce/sass/ui-assets/components/_plugin-styles.scss +1 -0
  220. package/app/assets/commerce/sass/ui-assets/helpers/_bg.scss +53 -0
  221. package/app/assets/commerce/sass/ui-assets/helpers/_helper-classes.scss +110 -0
  222. package/app/assets/commerce/sass/ui-assets/helpers/_mixins.scss +50 -0
  223. package/app/assets/commerce/sass/ui-assets/helpers/_typography.scss +44 -0
  224. package/app/assets/commerce/sass/ui-assets/pages/_page-account.scss +0 -0
  225. package/app/assets/commerce/sass/ui-assets/pages/_page-base.scss +10 -0
  226. package/app/assets/commerce/sass/ui-assets/pages/_page-detail.scss +30 -0
  227. package/app/assets/commerce/sass/ui-assets/pages/_page-home.scss +92 -0
  228. package/app/assets/commerce/sass/ui-assets/pages/_page-listing.scss +1 -0
  229. package/app/assets/commerce/sass/ui-assets/pages/_page-order.scss +9 -0
  230. package/app/assets/commerce/sass/ui-assets/sections/_footer.scss +26 -0
  231. package/app/assets/commerce/sass/ui-assets/sections/_header.scss +64 -0
  232. package/app/assets/commerce/sass/ui-assets/sections/_sidebar.scss +0 -0
  233. package/app/assets/commerce/sass/ui.scss +51 -0
  234. package/app/assets/embla/embla.min.js +1 -0
  235. package/app/assets/embla/script.js +7 -0
  236. package/app/assets/images/apachelogo.png +0 -0
  237. package/app/assets/images/backgraund-trend.jpg +0 -0
  238. package/app/assets/images/background10.jpg +0 -0
  239. package/app/assets/images/background2.jpg +0 -0
  240. package/app/assets/images/graphqllogo.png +0 -0
  241. package/app/assets/images/group1.svg +1 -0
  242. package/app/assets/images/grpclogo.png +0 -0
  243. package/app/assets/images/hashes.json +1 -0
  244. package/app/assets/images/image1.jpg +0 -0
  245. package/app/assets/images/image10.jpg +0 -0
  246. package/app/assets/images/image11.jpg +0 -0
  247. package/app/assets/images/image13.jpg +0 -0
  248. package/app/assets/images/image14.jpg +0 -0
  249. package/app/assets/images/image15.jpg +0 -0
  250. package/app/assets/images/image2.jpg +0 -0
  251. package/app/assets/images/image3.jpg +0 -0
  252. package/app/assets/images/image5.jpg +0 -0
  253. package/app/assets/images/image7.jpg +0 -0
  254. package/app/assets/images/image8.jpg +0 -0
  255. package/app/assets/images/image9.jpg +0 -0
  256. package/app/assets/images/jsonlogo.png +0 -0
  257. package/app/assets/images/logo5.png +0 -0
  258. package/app/assets/images/mbr.jpg +0 -0
  259. package/app/assets/images/mongodblogo.png +0 -0
  260. package/app/assets/images/mysqllogo.png +0 -0
  261. package/app/assets/images/neo4jlogo.png +0 -0
  262. package/app/assets/images/odatalogo.png +0 -0
  263. package/app/assets/images/openapilogo.png +0 -0
  264. package/app/assets/images/postgraphqllogo.png +0 -0
  265. package/app/assets/images/quadr.svg +42 -0
  266. package/app/assets/images/shop1.jpg +0 -0
  267. package/app/assets/images/shop2.jpg +0 -0
  268. package/app/assets/images/shop3.jpg +0 -0
  269. package/app/assets/images/shop4.jpg +0 -0
  270. package/app/assets/images/soaplogo.png +0 -0
  271. package/app/assets/images/sqlitelogo.png +0 -0
  272. package/app/assets/images/team1.jpg +0 -0
  273. package/app/assets/images/team2.jpg +0 -0
  274. package/app/assets/images/team3.jpg +0 -0
  275. package/app/assets/images/trend12.jpg +0 -0
  276. package/app/assets/images/trend13.jpg +0 -0
  277. package/app/assets/images/trend14.jpg +0 -0
  278. package/app/assets/images/trend15.jpg +0 -0
  279. package/app/assets/images/trend18.jpg +0 -0
  280. package/app/assets/images/triangle-blue-transp.svg +69 -0
  281. package/app/assets/images/triangle-purpl-transp.svg +92 -0
  282. package/app/assets/mobirise/css/mbr-additional.css +1678 -0
  283. package/app/assets/parallax/jarallax.css +15 -0
  284. package/app/assets/parallax/jarallax.js +45 -0
  285. package/app/assets/parallax/jarallax.min.js +7 -0
  286. package/app/assets/playervimeo/vimeo_player.js +39 -0
  287. package/app/assets/popper/popper.min.js +4 -0
  288. package/app/assets/smoothscroll/smooth-scroll.js +29 -0
  289. package/app/assets/styles/mobile.css +349 -0
  290. package/app/assets/styles/styles.css +26 -0
  291. package/app/assets/tether/tether.min.css +1 -0
  292. package/app/assets/tether/tether.min.js +1 -0
  293. package/app/assets/theme/css/style.css +934 -0
  294. package/app/assets/theme/js/script.js +54 -0
  295. package/app/assets/web/assets/jquery/jquery.min.js +2 -0
  296. package/app/assets/web/assets/mobirise-icons2/mobirise2.css +498 -0
  297. package/app/assets/web/assets/mobirise-icons2/mobirise2.eot +0 -0
  298. package/app/assets/web/assets/mobirise-icons2/mobirise2.svg +167 -0
  299. package/app/assets/web/assets/mobirise-icons2/mobirise2.ttf +0 -0
  300. package/app/assets/web/assets/mobirise-icons2/mobirise2.woff +0 -0
  301. package/app/assets/ytplayer/index.js +24 -0
  302. package/app/components/blocks/LeafletMap.vue +151 -0
  303. package/app/components/blocks/comments.vue +79 -0
  304. package/app/components/blocks/copyright.vue +43 -0
  305. package/app/components/blocks/events/about.vue +147 -0
  306. package/app/components/blocks/flag.vue +84 -0
  307. package/app/components/blocks/groups/about.vue +102 -0
  308. package/app/components/blocks/groups/feeds.vue +16 -0
  309. package/app/components/blocks/groups/lists.vue +11 -0
  310. package/app/components/blocks/groups/media.vue +28 -0
  311. package/app/components/blocks/groups/members.vue +9 -0
  312. package/app/components/blocks/groups/products.vue +9 -0
  313. package/app/components/blocks/groups/spaceLists.vue +9 -0
  314. package/app/components/blocks/reactions.vue +42 -0
  315. package/app/components/blocks/repost.vue +9 -0
  316. package/app/components/blocks/share.vue +25 -0
  317. package/app/components/blocks/stickers.vue +11 -0
  318. package/app/components/blocks/video.vue +44 -0
  319. package/app/components/features/account/addresses.vue +279 -0
  320. package/app/components/features/account/dashboard.vue +104 -0
  321. package/app/components/features/account/downloads.vue +146 -0
  322. package/app/components/features/account/reviews.vue +320 -0
  323. package/app/components/features/account/setting/accessibility.vue +57 -0
  324. package/app/components/features/account/setting/account.vue +133 -0
  325. package/app/components/features/account/setting/communications.vue +125 -0
  326. package/app/components/features/account/setting/language.vue +93 -0
  327. package/app/components/features/account/setting/payments.vue +130 -0
  328. package/app/components/features/account/setting/personalization.vue +152 -0
  329. package/app/components/features/account/setting/privacy.vue +90 -0
  330. package/app/components/features/account/setting/security.vue +84 -0
  331. package/app/components/features/account/settings.vue +255 -0
  332. package/app/components/features/addresses/add-address.vue +191 -0
  333. package/app/components/features/addresses/update-address.vue +320 -0
  334. package/app/components/features/birthdays.vue +140 -0
  335. package/app/components/features/event/yourEvents.vue +158 -0
  336. package/app/components/features/events.vue +107 -0
  337. package/app/components/features/feed/add-post.vue +45 -0
  338. package/app/components/features/feed/posts.vue +56 -0
  339. package/app/components/features/feed/relatedposts.vue +37 -0
  340. package/app/components/features/feed/update-post.vue +279 -0
  341. package/app/components/features/feeds.vue +148 -0
  342. package/app/components/features/friends.vue +131 -0
  343. package/app/components/features/hashtags.vue +101 -0
  344. package/app/components/features/media/video.vue +0 -0
  345. package/app/components/features/media.vue +143 -0
  346. package/app/components/features/members.vue +59 -0
  347. package/app/components/features/memories.vue +66 -0
  348. package/app/components/features/radio.vue +59 -0
  349. package/app/components/features/spaceSections/audioSpaces.vue +84 -0
  350. package/app/components/features/spaceSections/crud/add-space.vue +52 -0
  351. package/app/components/features/spaceSections/crud/update-space.vue +224 -0
  352. package/app/components/features/spaceSections/defaultSpaces.vue +85 -0
  353. package/app/components/features/spaceSections/imageSpaces.vue +84 -0
  354. package/app/components/features/spaceSections/textSpaces.vue +84 -0
  355. package/app/components/features/spaceSections/videoSpaces.vue +84 -0
  356. package/app/components/features/spaces.vue +127 -0
  357. package/app/components/features/vibeSections/add-live.vue +47 -0
  358. package/app/components/features/vibeSections/relatedshorts.vue +35 -0
  359. package/app/components/features/vibeSections/shorts.vue +207 -0
  360. package/app/components/features/vibeSections/update-short.vue +266 -0
  361. package/app/components/features/vibez.vue +221 -0
  362. package/app/components/menus/lowerbar.vue +37 -0
  363. package/app/components/related/memberList.vue +38 -0
  364. package/app/components/related/post.vue +119 -0
  365. package/app/components/related/radio.vue +36 -0
  366. package/app/components/related/relatedposts.vue +30 -0
  367. package/app/components/related/relatedshorts.vue +30 -0
  368. package/app/components/related/relatedspaces.vue +30 -0
  369. package/app/components/related/relatedusers.vue +34 -0
  370. package/app/components/related/short.vue +68 -0
  371. package/app/components/related/space.vue +47 -0
  372. package/app/components/related/tag.vue +21 -0
  373. package/app/composables/cache.ts +44 -0
  374. package/app/composables/charts/createChart.js +33 -0
  375. package/app/composables/charts/deleteChart.js +15 -0
  376. package/app/composables/charts/updateChart.js +15 -0
  377. package/app/composables/config.ts +20 -0
  378. package/app/composables/contacts/createContact.js +64 -0
  379. package/app/composables/contacts/deleteContact.js +15 -0
  380. package/app/composables/contacts/updateContact.js +15 -0
  381. package/app/composables/errors.ts +16 -0
  382. package/app/composables/metrics.ts +52 -0
  383. package/app/composables/posts/createPost.js +40 -0
  384. package/app/composables/posts/deletePost.js +15 -0
  385. package/app/composables/posts/updatePost.js +15 -0
  386. package/app/composables/posts/usePosts.ts +22 -0
  387. package/app/composables/providers/atproto.ts +75 -0
  388. package/app/composables/providers/mastodon.ts +45 -0
  389. package/app/composables/rateLimit.ts +41 -0
  390. package/app/composables/registry.ts +13 -0
  391. package/app/composables/retry.ts +40 -0
  392. package/app/composables/settings/useAccessibilitySettings.js +43 -0
  393. package/app/composables/shorts/createShort.js +33 -0
  394. package/app/composables/shorts/deleteShort.js +15 -0
  395. package/app/composables/shorts/updateShort.js +15 -0
  396. package/app/composables/social/getActivity.js +33 -0
  397. package/app/composables/social/getGroups.js +33 -0
  398. package/app/composables/spaces/createSpace.js +29 -0
  399. package/app/composables/spaces/deleteSpace.js +15 -0
  400. package/app/composables/spaces/updateSpace.js +15 -0
  401. package/app/composables/spaces/useSpaceRegistry.ts +49 -0
  402. package/app/composables/stations/createStation.js +33 -0
  403. package/app/composables/stations/deleteStation.js +15 -0
  404. package/app/composables/stations/updateStation.js +15 -0
  405. package/app/composables/swr.ts +22 -0
  406. package/app/composables/types/BlueSkyTypes.ts +108 -0
  407. package/app/composables/types.ts +28 -0
  408. package/app/composables/useSocial.ts +25 -0
  409. package/app/composables/utils.ts +99 -0
  410. package/app/layouts/spaces-audio.vue +9 -0
  411. package/app/layouts/spaces-dating.vue +9 -0
  412. package/app/layouts/spaces-forum.vue +9 -0
  413. package/app/layouts/spaces-video.vue +9 -0
  414. package/app/pages/connect/event/[...slug].vue +96 -0
  415. package/app/pages/connect/hashtag/[...slug].vue +110 -0
  416. package/app/pages/connect/post/[...slug].vue +232 -0
  417. package/app/pages/connect/space/[...slug].vue +170 -0
  418. package/app/pages/connect/vibe/[...id].vue +204 -0
  419. package/app/pages/connect/vibe/preview.vue +100 -0
  420. package/app/pages/connect/vibe/upload.vue +115 -0
  421. package/app/pages/profile/[...slug].vue +91 -0
  422. package/app/plugins/rocketchat-api.js +105 -0
  423. package/app/stores/index.ts +0 -0
  424. package/app/stores/reactions.ts +206 -0
  425. package/app/stores/useCommentsStore.js +20 -0
  426. package/nuxt.config.ts +11 -0
  427. package/package.json +23 -0
  428. package/tsconfig.json +14 -0
@@ -0,0 +1,320 @@
1
+ <template>
2
+ <div>
3
+ <!---->
4
+ <v-toolbar color="transparent" density="compact" title="My Reviews">
5
+ <v-spacer />
6
+ <v-text-field
7
+ v-model="search"
8
+ append-icon="fas:fa fa-search"
9
+ label="Search Reviews"
10
+ single-line
11
+ hide-details
12
+ density="compact"
13
+ class="search-field"
14
+ />
15
+ </v-toolbar>
16
+
17
+ <v-card>
18
+ <v-tabs v-model="tab" bg-color="transparent">
19
+ <v-tab value="written">Reviews Written</v-tab>
20
+ <v-tab value="pending">Pending Reviews</v-tab>
21
+ </v-tabs>
22
+
23
+ <v-card-text>
24
+ <v-tabs-window v-model="tab">
25
+ <v-tabs-window-item value="written">
26
+ <v-table>
27
+ <thead>
28
+ <tr>
29
+ <th class="text-left">Product</th>
30
+ <th class="text-left">Rating</th>
31
+ <th class="text-left">Review</th>
32
+ <th class="text-left">Date</th>
33
+ <th class="text-left">Status</th>
34
+ <th class="text-left">Actions</th>
35
+ </tr>
36
+ </thead>
37
+ <tbody>
38
+ <tr v-for="review in filteredReviews" :key="review.id">
39
+ <td>
40
+ <div class="d-flex align-center">
41
+ <v-img
42
+ :src="review.product_image"
43
+ width="50"
44
+ height="50"
45
+ class="mr-2"
46
+ />
47
+ {{ review.product_name }}
48
+ </div>
49
+ </td>
50
+ <td>
51
+ <v-rating
52
+ :model-value="review.rating"
53
+ readonly
54
+ density="compact"
55
+ />
56
+ </td>
57
+ <td>{{ review.title }}</td>
58
+ <td>{{ formatDate(review.created_at) }}</td>
59
+ <td>
60
+ <v-chip
61
+ :color="review.status === 'approved' ? 'success' : 'warning'"
62
+ size="small"
63
+ >
64
+ {{ review.status }}
65
+ </v-chip>
66
+ </td>
67
+ <td>
68
+ <v-btn
69
+ icon="fas:fa fa-edit"
70
+ color="primary"
71
+ size="small"
72
+ @click="editReview(review)"
73
+ />
74
+ <v-btn
75
+ icon="fas:fa fa-trash"
76
+ color="error"
77
+ size="small"
78
+ @click="deleteReview(review.id)"
79
+ />
80
+ </td>
81
+ </tr>
82
+ </tbody>
83
+ </v-table>
84
+ </v-tabs-window-item>
85
+
86
+ <v-tabs-window-item value="pending">
87
+ <v-table>
88
+ <thead>
89
+ <tr>
90
+ <th class="text-left">Product</th>
91
+ <th class="text-left">Order Date</th>
92
+ <th class="text-left">Actions</th>
93
+ </tr>
94
+ </thead>
95
+ <tbody>
96
+ <tr v-for="order in pendingReviews" :key="order.id">
97
+ <td>
98
+ <div class="d-flex align-center">
99
+ <v-img
100
+ :src="order.product_image"
101
+ width="50"
102
+ height="50"
103
+ class="mr-2"
104
+ />
105
+ {{ order.product_name }}
106
+ </div>
107
+ </td>
108
+ <td>{{ formatDate(order.created_at) }}</td>
109
+ <td>
110
+ <v-btn
111
+ color="primary"
112
+ size="small"
113
+ @click="writeReview(order)"
114
+ >
115
+ Write Review
116
+ </v-btn>
117
+ </td>
118
+ </tr>
119
+ </tbody>
120
+ </v-table>
121
+ </v-tabs-window-item>
122
+ </v-tabs-window>
123
+ </v-card-text>
124
+
125
+ <v-pagination
126
+ v-model="page"
127
+ :length="totalPages"
128
+ @update:model-value="loadReviews"
129
+ />
130
+ </v-card>
131
+
132
+ <!-- Review Dialog -->
133
+ <v-dialog v-model="showReviewDialog" max-width="600px">
134
+ <v-card>
135
+ <v-card-title>
136
+ {{ editingReview ? 'Edit Review' : 'Write Review' }}
137
+ </v-card-title>
138
+ <v-card-text>
139
+ <v-form ref="reviewForm" v-model="reviewValid">
140
+ <DirectusFormElement
141
+ v-for="field in reviewFields"
142
+ :key="field.field"
143
+ :field="field"
144
+ v-model="reviewForm[field.field]"
145
+ />
146
+ </v-form>
147
+ </v-card-text>
148
+ <v-card-actions>
149
+ <v-spacer />
150
+ <v-btn color="error" @click="showReviewDialog = false">Cancel</v-btn>
151
+ <v-btn
152
+ color="primary"
153
+ @click="saveReview"
154
+ :loading="saving"
155
+ :disabled="!reviewValid"
156
+ >
157
+ Save Review
158
+ </v-btn>
159
+ </v-card-actions>
160
+ </v-card>
161
+ </v-dialog>
162
+ </div>
163
+ </template>
164
+
165
+ <script setup>
166
+ import {
167
+ ref,
168
+ computed,
169
+ onMounted
170
+ } from 'vue'
171
+
172
+ const { $directus, $readFieldsByCollection, $createItem, $updateItem, $deleteItem } = useNuxtApp()
173
+
174
+ const reviews = ref([])
175
+ const pendingReviews = ref([])
176
+ const search = ref('')
177
+ const page = ref(1)
178
+ const totalPages = ref(1)
179
+ const showReviewDialog = ref(false)
180
+ const reviewValid = ref(false)
181
+ const saving = ref(false)
182
+ const editingReview = ref(null)
183
+ const reviewFields = ref([])
184
+
185
+ const reviewForm = ref({
186
+ rating: 0,
187
+ title: '',
188
+ detail: '',
189
+ product_id: null
190
+ })
191
+
192
+ const filteredReviews = computed(() => {
193
+ if (!search.value) return reviews.value
194
+ const searchLower = search.value.toLowerCase()
195
+ return reviews.value.filter(review =>
196
+ review.product_name.toLowerCase().includes(searchLower) ||
197
+ review.title.toLowerCase().includes(searchLower)
198
+ )
199
+ })
200
+
201
+ const formatDate = (dateString) => {
202
+ return new Date(dateString).toLocaleDateString()
203
+ }
204
+
205
+ const loadReviewFields = async () => {
206
+ try {
207
+ const fields = await $directus.request($readFieldsByCollection('reviews'))
208
+ reviewFields.value = fields.filter(field =>
209
+ ['rating', 'title', 'detail'].includes(field.field)
210
+ )
211
+ } catch (error) {
212
+ console.error('Failed to load review fields:', error)
213
+ }
214
+ }
215
+
216
+ const loadReviews = async () => {
217
+ try {
218
+ const response = await $directus.request($readItems('reviews', {
219
+ params: {
220
+ page: page.value,
221
+ limit: 10,
222
+ filter: {
223
+ status: { _neq: 'pending' }
224
+ }
225
+ }
226
+ }))
227
+ reviews.value = response.data
228
+ totalPages.value = Math.ceil(response.meta.total_count / 10)
229
+ } catch (error) {
230
+ console.error('Failed to load reviews:', error)
231
+ }
232
+ }
233
+
234
+ const loadPendingReviews = async () => {
235
+ try {
236
+ const response = await $directus.request($readItems('reviews', {
237
+ params: {
238
+ filter: {
239
+ status: 'pending'
240
+ }
241
+ }
242
+ }))
243
+ pendingReviews.value = response.data
244
+ } catch (error) {
245
+ console.error('Failed to load pending reviews:', error)
246
+ }
247
+ }
248
+
249
+ const editReview = (review) => {
250
+ editingReview.value = review
251
+ reviewForm.value = {
252
+ rating: review.rating,
253
+ title: review.title,
254
+ detail: review.detail,
255
+ product_id: review.product_id
256
+ }
257
+ showReviewDialog.value = true
258
+ }
259
+
260
+ const writeReview = (order) => {
261
+ editingReview.value = null
262
+ reviewForm.value = {
263
+ rating: 0,
264
+ title: '',
265
+ detail: '',
266
+ product_id: order.product_id
267
+ }
268
+ showReviewDialog.value = true
269
+ }
270
+
271
+ const saveReview = async () => {
272
+ try {
273
+ saving.value = true
274
+ if (editingReview.value) {
275
+ await $directus.request($updateItem('reviews', editingReview.value.id, reviewForm.value))
276
+ } else {
277
+ await $directus.request($createItem('reviews', {
278
+ ...reviewForm.value,
279
+ status: 'pending'
280
+ }))
281
+ }
282
+ showReviewDialog.value = false
283
+ await loadReviews()
284
+ await loadPendingReviews()
285
+ } catch (error) {
286
+ console.error('Failed to save review:', error)
287
+ } finally {
288
+ saving.value = false
289
+ }
290
+ }
291
+
292
+ const deleteReview = async (reviewId) => {
293
+ if (!confirm('Are you sure you want to delete this review?')) return
294
+
295
+ try {
296
+ await $directus.request($deleteItem('reviews', reviewId))
297
+ await loadReviews()
298
+ } catch (error) {
299
+ console.error('Failed to delete review:', error)
300
+ }
301
+ }
302
+
303
+ const tab = ref(null)
304
+
305
+ onMounted(() => {
306
+ loadReviewFields()
307
+ loadReviews()
308
+ loadPendingReviews()
309
+ })
310
+
311
+ useHead({
312
+ title: 'My Reviews'
313
+ })
314
+ </script>
315
+
316
+ <style scoped>
317
+ .search-field {
318
+ max-width: 300px;
319
+ }
320
+ </style>
@@ -0,0 +1,57 @@
1
+ <template>
2
+ <v-card>
3
+ <v-card-title>Accessibility Settings</v-card-title>
4
+ <v-card-text>
5
+ <v-switch
6
+ v-model="highContrast"
7
+ label="High Contrast Mode"
8
+ ></v-switch>
9
+ <v-slider
10
+ v-model="fontSize"
11
+ label="Font Size"
12
+ min="12"
13
+ max="24"
14
+ step="2"
15
+ thumb-label
16
+ ></v-slider>
17
+ </v-card-text>
18
+ </v-card>
19
+ </template>
20
+
21
+ <script setup>
22
+ import { useAccessibilitySettings } from '~/composables/settings/useAccessibilitySettings'
23
+
24
+ const { highContrast, fontSize } = useAccessibilitySettings()
25
+ </script>
26
+
27
+ <style>
28
+ /* Add these styles to your global CSS */
29
+ body {
30
+ transition: background-color 0.3s, color 0.3s;
31
+ }
32
+
33
+ body.high-contrast {
34
+ background-color: #000;
35
+ color: #fff;
36
+ }
37
+
38
+ body.high-contrast a {
39
+ color: #ffff00;
40
+ }
41
+
42
+ /* Adjust Vuetify components for high contrast mode */
43
+ body.high-contrast .v-card {
44
+ background-color: #333;
45
+ color: #fff;
46
+ }
47
+
48
+ body.high-contrast .v-switch__track {
49
+ background-color: #666 !important;
50
+ }
51
+
52
+ body.high-contrast .v-switch__thumb {
53
+ background-color: #fff !important;
54
+ }
55
+
56
+ /* Add more high-contrast styles for other components as needed */
57
+ </style>
@@ -0,0 +1,133 @@
1
+ <template>
2
+ <form class="form-widget" @submit.prevent="updateProfile">
3
+ <avatar v-model:path="avatar_path" @upload="updateProfile" />
4
+ <div>
5
+ <v-text-field label="Email" id="email" type="email" :value="user.email" disabled />
6
+ </div>
7
+ <div>
8
+ <v-text-field label="Username" id="username" v-model="username" />
9
+ </div>
10
+
11
+ <div>
12
+ <v-text-field label="Date of Birth" id="date_of_birth" v-model="date_of_birth" />
13
+ </div>
14
+
15
+ <div>
16
+ <v-text-field label="Default Billing Address" id="default_billing" v-model="default_billing" />
17
+ </div>
18
+
19
+ <div>
20
+ <v-text-field label="Default Shipping Address" id="default_shipping" v-model="default_shipping" />
21
+ </div>
22
+
23
+ <div>
24
+ <v-text-field label="Prefix" id="prefix" v-model="prefix" />
25
+ </div>
26
+
27
+ <div>
28
+ <v-text-field label="First Name" id="firstname" v-model="firstname" />
29
+ </div>
30
+
31
+ <div>
32
+ <v-text-field label="Middle Name" id="middlename" v-model="middlename" />
33
+ </div>
34
+
35
+ <div>
36
+ <v-text-field label="Last Name" id="lastname" v-model="lastname" />
37
+ </div>
38
+
39
+ <div>
40
+ <v-text-field label="Suffix" id="suffix" v-model="suffix" />
41
+ </div>
42
+
43
+ <div>
44
+ <v-text-field label="Job Title" id="job_title" v-model="job_title" />
45
+ </div>
46
+
47
+ <div>
48
+ <v-text-field label="Gender" id="gender" v-model="gender" />
49
+ </div>
50
+
51
+ <div>
52
+ <v-text-field label="Company" id="companies" v-model="companies" />
53
+ </div>
54
+
55
+ <div>
56
+ <v-text-field label="Role" id="role" v-model="role" />
57
+ </div>
58
+
59
+ <div>
60
+ <v-text-field label="Tax VAT" id="taxvat" v-model="taxvat" />
61
+ </div>
62
+
63
+ <div>
64
+ <v-text-field label="Team" id="team" v-model="team" />
65
+ </div>
66
+
67
+ <div>
68
+ <v-text-field label="Phone Number" id="telephone" v-model="telephone" />
69
+ </div>
70
+
71
+ <div>
72
+ <v-text-field label="Website" id="website" v-model="website" />
73
+ </div>
74
+
75
+ <div>
76
+ <v-btn class="btn btn-info display-7" type="submit" :value="loading ? 'Loading ...' : 'Update'"
77
+ :disabled="loading" />
78
+ </div>
79
+ </form>
80
+ </template>
81
+
82
+ <script setup>
83
+ import { ref } from 'vue';
84
+ import { useMutation } from '@vue/apollo-composable';
85
+ import { UPDATE_CUSTOMER } from '#graphql/commerce/mutations/updateCustomer.gql?raw';
86
+
87
+ const firstname = ref('');
88
+ const middlename = ref('');
89
+ const lastname = ref('');
90
+ const prefix = ref('');
91
+ const suffix = ref('');
92
+ const dob = ref('');
93
+ const default_billing = ref('');
94
+ const default_shipping = ref('');
95
+ const job_title = ref('');
96
+ const gender = ref('');
97
+ const company = ref('');
98
+ const role = ref('');
99
+ const taxvat = ref('');
100
+ const team = ref('');
101
+ const telephone = ref('');
102
+ const website = ref('');
103
+ const avatar_path = ref('');
104
+
105
+ const { mutate: updateCustomer, loading, error } = useMutation(UPDATE_CUSTOMER);
106
+
107
+ const updateProfile = async () => {
108
+ try {
109
+ await updateCustomer({
110
+ firstname: firstname.value,
111
+ middlename: middlename.value,
112
+ lastname: lastname.value,
113
+ prefix: prefix.value,
114
+ suffix: suffix.value,
115
+ dob: dob.value,
116
+ default_billing: default_billing.value,
117
+ default_shipping: default_shipping.value,
118
+ job_title: job_title.value,
119
+ gender: Number.parseInt(gender.value), // Convert to integer if required
120
+ company: company.value,
121
+ role: role.value,
122
+ taxvat: taxvat.value,
123
+ team: team.value,
124
+ telephone: telephone.value,
125
+ website: website.value,
126
+ avatar_path: avatar_path.value,
127
+ });
128
+ console.log('Profile updated successfully');
129
+ } catch (err) {
130
+ console.error('Error updating profile', err);
131
+ }
132
+ };
133
+ </script>
@@ -0,0 +1,125 @@
1
+ <template>
2
+ <v-card>
3
+ <v-card-title>Communication Preferences</v-card-title>
4
+ <v-card-text>
5
+ <!-- Newsletter subscriptions -->
6
+ <v-list v-if="newsletters.length">
7
+ <v-list-subheader>Your Newsletter Subscriptions:</v-list-subheader>
8
+ <v-list-item v-for="newsletter in newsletters" :key="newsletter.id">
9
+ <v-list-item-content>
10
+ <v-list-item-title>{{ newsletter.name }}</v-list-item-title>
11
+ </v-list-item-content>
12
+ <v-list-item-action>
13
+ <v-switch v-model="newsletter.subscribed" @change="updateSubscription(newsletter)"></v-switch>
14
+ </v-list-item-action>
15
+ </v-list-item>
16
+ </v-list>
17
+ <v-alert v-else type="info">You are not subscribed to any newsletters.</v-alert>
18
+
19
+ <!-- SMS Notifications -->
20
+ <v-switch
21
+ v-model="smsNotifications.enabled"
22
+ label="Receive SMS Notifications"
23
+ @change="updateSmsNotifications"
24
+ ></v-switch>
25
+ <v-text-field
26
+ v-if="smsNotifications.enabled"
27
+ v-model="smsNotifications.phoneNumber"
28
+ label="Phone Number for SMS"
29
+ placeholder="Enter your phone number"
30
+ @input="updateSmsNotifications"
31
+ ></v-text-field>
32
+
33
+ <!-- Push Notifications -->
34
+ <v-switch
35
+ v-model="pushNotifications.enabled"
36
+ label="Receive Push Notifications"
37
+ @change="updatePushNotifications"
38
+ ></v-switch>
39
+
40
+ <v-btn @click="savePreferences" color="primary">Save Preferences</v-btn>
41
+ </v-card-text>
42
+ </v-card>
43
+ </template>
44
+
45
+ <script setup>
46
+ import { ref, onMounted } from 'vue';
47
+
48
+ const { $magento } = useNuxtApp();
49
+
50
+ const newsletters = ref([]);
51
+ const smsNotifications = ref({
52
+ enabled: false,
53
+ phoneNumber: ''
54
+ });
55
+ const pushNotifications = ref({
56
+ enabled: false
57
+ });
58
+
59
+ const fetchNewsletterSubscriptions = async () => {
60
+ try {
61
+ const response = await $magento.customer.getNewsletterSubscriptions();
62
+ newsletters.value = response.map(subscription => ({
63
+ id: subscription.id,
64
+ name: subscription.name,
65
+ subscribed: subscription.subscribed
66
+ }));
67
+ } catch (error) {
68
+ console.error('Error fetching newsletter subscriptions:', error);
69
+ }
70
+ };
71
+
72
+ const updateSubscription = async (newsletter) => {
73
+ try {
74
+ await $magento.customer.updateNewsletterSubscription(newsletter.id, newsletter.subscribed);
75
+ } catch (error) {
76
+ console.error('Error updating subscription:', error);
77
+ newsletter.subscribed = !newsletter.subscribed;
78
+ }
79
+ };
80
+
81
+ const updateSmsNotifications = async () => {
82
+ try {
83
+ await $magento.customer.updateSmsNotifications(smsNotifications.value);
84
+ } catch (error) {
85
+ console.error('Error updating SMS notifications:', error);
86
+ }
87
+ };
88
+
89
+ const updatePushNotifications = async () => {
90
+ try {
91
+ await $magento.customer.updatePushNotifications(pushNotifications.value.enabled);
92
+ } catch (error) {
93
+ console.error('Error updating push notifications:', error);
94
+ }
95
+ };
96
+
97
+ const savePreferences = async () => {
98
+ try {
99
+ await Promise.all([
100
+ updateSmsNotifications(),
101
+ updatePushNotifications()
102
+ ]);
103
+ console.log('Saving communication preferences');
104
+ // Optionally, show a success message
105
+ } catch (error) {
106
+ console.error('Error saving preferences:', error);
107
+ // Handle error (e.g., show an error message to the user)
108
+ }
109
+ };
110
+
111
+ const fetchPreferences = async () => {
112
+ try {
113
+ const preferences = await $magento.customer.getCommunicationPreferences();
114
+ smsNotifications.value = preferences.smsNotifications;
115
+ pushNotifications.value = preferences.pushNotifications;
116
+ } catch (error) {
117
+ console.error('Error fetching preferences:', error);
118
+ }
119
+ };
120
+
121
+ onMounted(() => {
122
+ fetchNewsletterSubscriptions();
123
+ fetchPreferences();
124
+ });
125
+ </script>