@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.
- package/README.md +79 -0
- package/app/assets/bootstrap/css/bootstrap-grid.min.css +6 -0
- package/app/assets/bootstrap/css/bootstrap-reboot.min.css +7 -0
- package/app/assets/bootstrap/css/bootstrap.min.css +11696 -0
- package/app/assets/bootstrap/js/bootstrap.bundle.min.js +6 -0
- package/app/assets/bootstrap/js/bootstrap.min.js +7 -0
- package/app/assets/commerce/css/bootstrap.css +8878 -0
- package/app/assets/commerce/css/bootstrap.css.map +7 -0
- package/app/assets/commerce/css/responsive.css +105 -0
- package/app/assets/commerce/css/responsive.css.map +7 -0
- package/app/assets/commerce/css/ui.css +1277 -0
- package/app/assets/commerce/css/ui.css.map +7 -0
- package/app/assets/commerce/fonts/fontawesome/css/all.css +4335 -0
- package/app/assets/commerce/fonts/fontawesome/css/all.min.css +5 -0
- package/app/assets/commerce/fonts/fontawesome/css/brands.css +14 -0
- package/app/assets/commerce/fonts/fontawesome/css/brands.min.css +5 -0
- package/app/assets/commerce/fonts/fontawesome/css/fontawesome.css +4302 -0
- package/app/assets/commerce/fonts/fontawesome/css/fontawesome.min.css +5 -0
- package/app/assets/commerce/fonts/fontawesome/css/regular.css +15 -0
- package/app/assets/commerce/fonts/fontawesome/css/regular.min.css +5 -0
- package/app/assets/commerce/fonts/fontawesome/css/solid.css +16 -0
- package/app/assets/commerce/fonts/fontawesome/css/solid.min.css +5 -0
- package/app/assets/commerce/fonts/fontawesome/css/svg-with-js.css +346 -0
- package/app/assets/commerce/fonts/fontawesome/css/svg-with-js.min.css +5 -0
- package/app/assets/commerce/fonts/fontawesome/css/v4-shims.css +2166 -0
- package/app/assets/commerce/fonts/fontawesome/css/v4-shims.min.css +5 -0
- package/app/assets/commerce/fonts/fontawesome/webfonts/fa-brands-400.eot +0 -0
- package/app/assets/commerce/fonts/fontawesome/webfonts/fa-brands-400.svg +3452 -0
- package/app/assets/commerce/fonts/fontawesome/webfonts/fa-brands-400.ttf +0 -0
- package/app/assets/commerce/fonts/fontawesome/webfonts/fa-brands-400.woff +0 -0
- package/app/assets/commerce/fonts/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
- package/app/assets/commerce/fonts/fontawesome/webfonts/fa-regular-400.eot +0 -0
- package/app/assets/commerce/fonts/fontawesome/webfonts/fa-regular-400.svg +803 -0
- package/app/assets/commerce/fonts/fontawesome/webfonts/fa-regular-400.ttf +0 -0
- package/app/assets/commerce/fonts/fontawesome/webfonts/fa-regular-400.woff +0 -0
- package/app/assets/commerce/fonts/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
- package/app/assets/commerce/fonts/fontawesome/webfonts/fa-solid-900.eot +0 -0
- package/app/assets/commerce/fonts/fontawesome/webfonts/fa-solid-900.svg +4527 -0
- package/app/assets/commerce/fonts/fontawesome/webfonts/fa-solid-900.ttf +0 -0
- package/app/assets/commerce/fonts/fontawesome/webfonts/fa-solid-900.woff +0 -0
- package/app/assets/commerce/fonts/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
- package/app/assets/commerce/fonts/roboto/Roboto-Bold.ttf +0 -0
- package/app/assets/commerce/fonts/roboto/Roboto-Light.ttf +0 -0
- package/app/assets/commerce/fonts/roboto/Roboto-Medium.ttf +0 -0
- package/app/assets/commerce/fonts/roboto/Roboto-Regular.ttf +0 -0
- package/app/assets/commerce/fonts/roboto/Roboto-Thin.ttf +0 -0
- package/app/assets/commerce/fonts/roboto/font.css +23 -0
- package/app/assets/commerce/images/avatars/avatar1.jpg +0 -0
- package/app/assets/commerce/images/avatars/avatar2.jpg +0 -0
- package/app/assets/commerce/images/avatars/avatar3.jpg +0 -0
- package/app/assets/commerce/images/banners/ad-sm.png +0 -0
- package/app/assets/commerce/images/banners/ad.png +0 -0
- package/app/assets/commerce/images/banners/banner-item1.jpg +0 -0
- package/app/assets/commerce/images/banners/banner-item2.jpg +0 -0
- package/app/assets/commerce/images/banners/banner-item3.jpg +0 -0
- package/app/assets/commerce/images/banners/banner1.jpg +0 -0
- package/app/assets/commerce/images/banners/banner2.jpg +0 -0
- package/app/assets/commerce/images/banners/banner3.jpg +0 -0
- package/app/assets/commerce/images/banners/banner4.jpg +0 -0
- package/app/assets/commerce/images/banners/banner5.jpg +0 -0
- package/app/assets/commerce/images/banners/banner6.jpg +0 -0
- package/app/assets/commerce/images/banners/banner7.jpg +0 -0
- package/app/assets/commerce/images/banners/banner8.jpg +0 -0
- package/app/assets/commerce/images/banners/banner9.jpg +0 -0
- package/app/assets/commerce/images/banners/slide1.jpg +0 -0
- package/app/assets/commerce/images/banners/slide2.jpg +0 -0
- package/app/assets/commerce/images/banners/slide3.jpg +0 -0
- package/app/assets/commerce/images/favicon.ico +0 -0
- package/app/assets/commerce/images/icons/flags/AU.png +0 -0
- package/app/assets/commerce/images/icons/flags/AU@2x.png +0 -0
- package/app/assets/commerce/images/icons/flags/CN.png +0 -0
- package/app/assets/commerce/images/icons/flags/CN@2x.png +0 -0
- package/app/assets/commerce/images/icons/flags/DE.png +0 -0
- package/app/assets/commerce/images/icons/flags/DE@2x.png +0 -0
- package/app/assets/commerce/images/icons/flags/GB.png +0 -0
- package/app/assets/commerce/images/icons/flags/GB@2x.png +0 -0
- package/app/assets/commerce/images/icons/flags/IN.png +0 -0
- package/app/assets/commerce/images/icons/flags/IN@2x.png +0 -0
- package/app/assets/commerce/images/icons/flags/RU.png +0 -0
- package/app/assets/commerce/images/icons/flags/RU@2x.png +0 -0
- package/app/assets/commerce/images/icons/flags/TR.png +0 -0
- package/app/assets/commerce/images/icons/flags/TR@2x.png +0 -0
- package/app/assets/commerce/images/icons/flags/US.png +0 -0
- package/app/assets/commerce/images/icons/flags/US@2x.png +0 -0
- package/app/assets/commerce/images/icons/flags/UZ.png +0 -0
- package/app/assets/commerce/images/icons/flags/UZ@2x.png +0 -0
- package/app/assets/commerce/images/icons/pay-american-ex.png +0 -0
- package/app/assets/commerce/images/icons/pay-bank.png +0 -0
- package/app/assets/commerce/images/icons/pay-mastercard.png +0 -0
- package/app/assets/commerce/images/icons/pay-visa-el.png +0 -0
- package/app/assets/commerce/images/icons/pay-visa.png +0 -0
- package/app/assets/commerce/images/items/1.jpg +0 -0
- package/app/assets/commerce/images/items/10.jpg +0 -0
- package/app/assets/commerce/images/items/11.jpg +0 -0
- package/app/assets/commerce/images/items/12.jpg +0 -0
- package/app/assets/commerce/images/items/13.jpg +0 -0
- package/app/assets/commerce/images/items/14.jpg +0 -0
- package/app/assets/commerce/images/items/15-1.jpg +0 -0
- package/app/assets/commerce/images/items/15-2.jpg +0 -0
- package/app/assets/commerce/images/items/15.jpg +0 -0
- package/app/assets/commerce/images/items/2.jpg +0 -0
- package/app/assets/commerce/images/items/3.jpg +0 -0
- package/app/assets/commerce/images/items/4.jpg +0 -0
- package/app/assets/commerce/images/items/5.jpg +0 -0
- package/app/assets/commerce/images/items/6.jpg +0 -0
- package/app/assets/commerce/images/items/7.jpg +0 -0
- package/app/assets/commerce/images/items/8.jpg +0 -0
- package/app/assets/commerce/images/items/9.jpg +0 -0
- package/app/assets/commerce/images/logo-white.png +0 -0
- package/app/assets/commerce/images/logo.png +0 -0
- package/app/assets/commerce/images/logo.svg +16 -0
- package/app/assets/commerce/images/misc/appstore.png +0 -0
- package/app/assets/commerce/images/misc/payments.png +0 -0
- package/app/assets/commerce/images/misc/playmarket.png +0 -0
- package/app/assets/commerce/images/posts/1.jpg +0 -0
- package/app/assets/commerce/images/posts/2.jpg +0 -0
- package/app/assets/commerce/images/posts/3.jpg +0 -0
- package/app/assets/commerce/images/posts/4.jpg +0 -0
- package/app/assets/commerce/js/bootstrap.bundle.min.js +7 -0
- package/app/assets/commerce/js/jquery-2.0.0.min.js +6 -0
- package/app/assets/commerce/js/script.js +30 -0
- package/app/assets/commerce/sass/_variables-custom.scss +1102 -0
- package/app/assets/commerce/sass/bootstrap-assets/_alert.scss +51 -0
- package/app/assets/commerce/sass/bootstrap-assets/_badge.scss +54 -0
- package/app/assets/commerce/sass/bootstrap-assets/_bootstrap.scss +44 -0
- package/app/assets/commerce/sass/bootstrap-assets/_breadcrumb.scss +40 -0
- package/app/assets/commerce/sass/bootstrap-assets/_button-group.scss +163 -0
- package/app/assets/commerce/sass/bootstrap-assets/_buttons.scss +137 -0
- package/app/assets/commerce/sass/bootstrap-assets/_card.scss +289 -0
- package/app/assets/commerce/sass/bootstrap-assets/_carousel.scss +197 -0
- package/app/assets/commerce/sass/bootstrap-assets/_close.scss +41 -0
- package/app/assets/commerce/sass/bootstrap-assets/_code.scss +48 -0
- package/app/assets/commerce/sass/bootstrap-assets/_custom-forms.scss +507 -0
- package/app/assets/commerce/sass/bootstrap-assets/_dropdown.scss +191 -0
- package/app/assets/commerce/sass/bootstrap-assets/_forms.scss +330 -0
- package/app/assets/commerce/sass/bootstrap-assets/_functions.scss +86 -0
- package/app/assets/commerce/sass/bootstrap-assets/_grid.scss +52 -0
- package/app/assets/commerce/sass/bootstrap-assets/_images.scss +42 -0
- package/app/assets/commerce/sass/bootstrap-assets/_input-group.scss +193 -0
- package/app/assets/commerce/sass/bootstrap-assets/_jumbotron.scss +17 -0
- package/app/assets/commerce/sass/bootstrap-assets/_list-group.scss +149 -0
- package/app/assets/commerce/sass/bootstrap-assets/_media.scss +8 -0
- package/app/assets/commerce/sass/bootstrap-assets/_mixins.scss +47 -0
- package/app/assets/commerce/sass/bootstrap-assets/_modal.scss +229 -0
- package/app/assets/commerce/sass/bootstrap-assets/_nav.scss +119 -0
- package/app/assets/commerce/sass/bootstrap-assets/_navbar.scss +295 -0
- package/app/assets/commerce/sass/bootstrap-assets/_pagination.scss +73 -0
- package/app/assets/commerce/sass/bootstrap-assets/_popover.scss +171 -0
- package/app/assets/commerce/sass/bootstrap-assets/_print.scss +141 -0
- package/app/assets/commerce/sass/bootstrap-assets/_progress.scss +43 -0
- package/app/assets/commerce/sass/bootstrap-assets/_reboot.scss +483 -0
- package/app/assets/commerce/sass/bootstrap-assets/_root.scss +19 -0
- package/app/assets/commerce/sass/bootstrap-assets/_spinners.scss +55 -0
- package/app/assets/commerce/sass/bootstrap-assets/_tables.scss +185 -0
- package/app/assets/commerce/sass/bootstrap-assets/_toasts.scss +44 -0
- package/app/assets/commerce/sass/bootstrap-assets/_tooltip.scss +115 -0
- package/app/assets/commerce/sass/bootstrap-assets/_transitions.scss +20 -0
- package/app/assets/commerce/sass/bootstrap-assets/_type.scss +125 -0
- package/app/assets/commerce/sass/bootstrap-assets/_utilities.scss +17 -0
- package/app/assets/commerce/sass/bootstrap-assets/_variables.scss +1123 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_alert.scss +13 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_background-variant.scss +21 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_badge.scss +17 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_border-radius.scss +63 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_box-shadow.scss +20 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_breakpoints.scss +123 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_buttons.scss +107 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_caret.scss +62 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_clearfix.scss +7 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_deprecate.scss +10 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_float.scss +14 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_forms.scss +192 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_gradients.scss +45 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_grid-framework.scss +66 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_grid.scss +51 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_hover.scss +37 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_image.scss +36 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_list-group.scss +21 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_lists.scss +7 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_nav-divider.scss +10 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_pagination.scss +22 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_reset-text.scss +17 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_resize.scss +6 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_screen-reader.scss +33 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_size.scss +7 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_table-row.scss +39 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_text-emphasis.scss +16 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_text-hide.scss +11 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_text-truncate.scss +8 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_transition.scss +16 -0
- package/app/assets/commerce/sass/bootstrap-assets/mixins/_visibility.scss +8 -0
- package/app/assets/commerce/sass/bootstrap-assets/utilities/_align.scss +8 -0
- package/app/assets/commerce/sass/bootstrap-assets/utilities/_background.scss +19 -0
- package/app/assets/commerce/sass/bootstrap-assets/utilities/_borders.scss +75 -0
- package/app/assets/commerce/sass/bootstrap-assets/utilities/_clearfix.scss +3 -0
- package/app/assets/commerce/sass/bootstrap-assets/utilities/_display.scss +26 -0
- package/app/assets/commerce/sass/bootstrap-assets/utilities/_embed.scss +39 -0
- package/app/assets/commerce/sass/bootstrap-assets/utilities/_flex.scss +51 -0
- package/app/assets/commerce/sass/bootstrap-assets/utilities/_float.scss +11 -0
- package/app/assets/commerce/sass/bootstrap-assets/utilities/_overflow.scss +5 -0
- package/app/assets/commerce/sass/bootstrap-assets/utilities/_position.scss +32 -0
- package/app/assets/commerce/sass/bootstrap-assets/utilities/_screenreaders.scss +11 -0
- package/app/assets/commerce/sass/bootstrap-assets/utilities/_shadows.scss +6 -0
- package/app/assets/commerce/sass/bootstrap-assets/utilities/_sizing.scss +20 -0
- package/app/assets/commerce/sass/bootstrap-assets/utilities/_spacing.scss +73 -0
- package/app/assets/commerce/sass/bootstrap-assets/utilities/_stretched-link.scss +19 -0
- package/app/assets/commerce/sass/bootstrap-assets/utilities/_text.scss +72 -0
- package/app/assets/commerce/sass/bootstrap-assets/utilities/_visibility.scss +13 -0
- package/app/assets/commerce/sass/bootstrap-assets/vendor/_rfs.scss +204 -0
- package/app/assets/commerce/sass/bootstrap.scss +9 -0
- package/app/assets/commerce/sass/responsive.scss +114 -0
- package/app/assets/commerce/sass/ui-assets/components/_buttons.scss +23 -0
- package/app/assets/commerce/sass/ui-assets/components/_cards-item.scss +113 -0
- package/app/assets/commerce/sass/ui-assets/components/_elements.scss +72 -0
- package/app/assets/commerce/sass/ui-assets/components/_forms.scss +19 -0
- package/app/assets/commerce/sass/ui-assets/components/_items.scss +25 -0
- package/app/assets/commerce/sass/ui-assets/components/_lists.scss +90 -0
- package/app/assets/commerce/sass/ui-assets/components/_menu.scss +25 -0
- package/app/assets/commerce/sass/ui-assets/components/_plugin-styles.scss +1 -0
- package/app/assets/commerce/sass/ui-assets/helpers/_bg.scss +53 -0
- package/app/assets/commerce/sass/ui-assets/helpers/_helper-classes.scss +110 -0
- package/app/assets/commerce/sass/ui-assets/helpers/_mixins.scss +50 -0
- package/app/assets/commerce/sass/ui-assets/helpers/_typography.scss +44 -0
- package/app/assets/commerce/sass/ui-assets/pages/_page-account.scss +0 -0
- package/app/assets/commerce/sass/ui-assets/pages/_page-base.scss +10 -0
- package/app/assets/commerce/sass/ui-assets/pages/_page-detail.scss +30 -0
- package/app/assets/commerce/sass/ui-assets/pages/_page-home.scss +92 -0
- package/app/assets/commerce/sass/ui-assets/pages/_page-listing.scss +1 -0
- package/app/assets/commerce/sass/ui-assets/pages/_page-order.scss +9 -0
- package/app/assets/commerce/sass/ui-assets/sections/_footer.scss +26 -0
- package/app/assets/commerce/sass/ui-assets/sections/_header.scss +64 -0
- package/app/assets/commerce/sass/ui-assets/sections/_sidebar.scss +0 -0
- package/app/assets/commerce/sass/ui.scss +51 -0
- package/app/assets/embla/embla.min.js +1 -0
- package/app/assets/embla/script.js +7 -0
- package/app/assets/images/apachelogo.png +0 -0
- package/app/assets/images/backgraund-trend.jpg +0 -0
- package/app/assets/images/background10.jpg +0 -0
- package/app/assets/images/background2.jpg +0 -0
- package/app/assets/images/graphqllogo.png +0 -0
- package/app/assets/images/group1.svg +1 -0
- package/app/assets/images/grpclogo.png +0 -0
- package/app/assets/images/hashes.json +1 -0
- package/app/assets/images/image1.jpg +0 -0
- package/app/assets/images/image10.jpg +0 -0
- package/app/assets/images/image11.jpg +0 -0
- package/app/assets/images/image13.jpg +0 -0
- package/app/assets/images/image14.jpg +0 -0
- package/app/assets/images/image15.jpg +0 -0
- package/app/assets/images/image2.jpg +0 -0
- package/app/assets/images/image3.jpg +0 -0
- package/app/assets/images/image5.jpg +0 -0
- package/app/assets/images/image7.jpg +0 -0
- package/app/assets/images/image8.jpg +0 -0
- package/app/assets/images/image9.jpg +0 -0
- package/app/assets/images/jsonlogo.png +0 -0
- package/app/assets/images/logo5.png +0 -0
- package/app/assets/images/mbr.jpg +0 -0
- package/app/assets/images/mongodblogo.png +0 -0
- package/app/assets/images/mysqllogo.png +0 -0
- package/app/assets/images/neo4jlogo.png +0 -0
- package/app/assets/images/odatalogo.png +0 -0
- package/app/assets/images/openapilogo.png +0 -0
- package/app/assets/images/postgraphqllogo.png +0 -0
- package/app/assets/images/quadr.svg +42 -0
- package/app/assets/images/shop1.jpg +0 -0
- package/app/assets/images/shop2.jpg +0 -0
- package/app/assets/images/shop3.jpg +0 -0
- package/app/assets/images/shop4.jpg +0 -0
- package/app/assets/images/soaplogo.png +0 -0
- package/app/assets/images/sqlitelogo.png +0 -0
- package/app/assets/images/team1.jpg +0 -0
- package/app/assets/images/team2.jpg +0 -0
- package/app/assets/images/team3.jpg +0 -0
- package/app/assets/images/trend12.jpg +0 -0
- package/app/assets/images/trend13.jpg +0 -0
- package/app/assets/images/trend14.jpg +0 -0
- package/app/assets/images/trend15.jpg +0 -0
- package/app/assets/images/trend18.jpg +0 -0
- package/app/assets/images/triangle-blue-transp.svg +69 -0
- package/app/assets/images/triangle-purpl-transp.svg +92 -0
- package/app/assets/mobirise/css/mbr-additional.css +1678 -0
- package/app/assets/parallax/jarallax.css +15 -0
- package/app/assets/parallax/jarallax.js +45 -0
- package/app/assets/parallax/jarallax.min.js +7 -0
- package/app/assets/playervimeo/vimeo_player.js +39 -0
- package/app/assets/popper/popper.min.js +4 -0
- package/app/assets/smoothscroll/smooth-scroll.js +29 -0
- package/app/assets/styles/mobile.css +349 -0
- package/app/assets/styles/styles.css +26 -0
- package/app/assets/tether/tether.min.css +1 -0
- package/app/assets/tether/tether.min.js +1 -0
- package/app/assets/theme/css/style.css +934 -0
- package/app/assets/theme/js/script.js +54 -0
- package/app/assets/web/assets/jquery/jquery.min.js +2 -0
- package/app/assets/web/assets/mobirise-icons2/mobirise2.css +498 -0
- package/app/assets/web/assets/mobirise-icons2/mobirise2.eot +0 -0
- package/app/assets/web/assets/mobirise-icons2/mobirise2.svg +167 -0
- package/app/assets/web/assets/mobirise-icons2/mobirise2.ttf +0 -0
- package/app/assets/web/assets/mobirise-icons2/mobirise2.woff +0 -0
- package/app/assets/ytplayer/index.js +24 -0
- package/app/components/blocks/LeafletMap.vue +151 -0
- package/app/components/blocks/comments.vue +79 -0
- package/app/components/blocks/copyright.vue +43 -0
- package/app/components/blocks/events/about.vue +147 -0
- package/app/components/blocks/flag.vue +84 -0
- package/app/components/blocks/groups/about.vue +102 -0
- package/app/components/blocks/groups/feeds.vue +16 -0
- package/app/components/blocks/groups/lists.vue +11 -0
- package/app/components/blocks/groups/media.vue +28 -0
- package/app/components/blocks/groups/members.vue +9 -0
- package/app/components/blocks/groups/products.vue +9 -0
- package/app/components/blocks/groups/spaceLists.vue +9 -0
- package/app/components/blocks/reactions.vue +42 -0
- package/app/components/blocks/repost.vue +9 -0
- package/app/components/blocks/share.vue +25 -0
- package/app/components/blocks/stickers.vue +11 -0
- package/app/components/blocks/video.vue +44 -0
- package/app/components/features/account/addresses.vue +279 -0
- package/app/components/features/account/dashboard.vue +104 -0
- package/app/components/features/account/downloads.vue +146 -0
- package/app/components/features/account/reviews.vue +320 -0
- package/app/components/features/account/setting/accessibility.vue +57 -0
- package/app/components/features/account/setting/account.vue +133 -0
- package/app/components/features/account/setting/communications.vue +125 -0
- package/app/components/features/account/setting/language.vue +93 -0
- package/app/components/features/account/setting/payments.vue +130 -0
- package/app/components/features/account/setting/personalization.vue +152 -0
- package/app/components/features/account/setting/privacy.vue +90 -0
- package/app/components/features/account/setting/security.vue +84 -0
- package/app/components/features/account/settings.vue +255 -0
- package/app/components/features/addresses/add-address.vue +191 -0
- package/app/components/features/addresses/update-address.vue +320 -0
- package/app/components/features/birthdays.vue +140 -0
- package/app/components/features/event/yourEvents.vue +158 -0
- package/app/components/features/events.vue +107 -0
- package/app/components/features/feed/add-post.vue +45 -0
- package/app/components/features/feed/posts.vue +56 -0
- package/app/components/features/feed/relatedposts.vue +37 -0
- package/app/components/features/feed/update-post.vue +279 -0
- package/app/components/features/feeds.vue +148 -0
- package/app/components/features/friends.vue +131 -0
- package/app/components/features/hashtags.vue +101 -0
- package/app/components/features/media/video.vue +0 -0
- package/app/components/features/media.vue +143 -0
- package/app/components/features/members.vue +59 -0
- package/app/components/features/memories.vue +66 -0
- package/app/components/features/radio.vue +59 -0
- package/app/components/features/spaceSections/audioSpaces.vue +84 -0
- package/app/components/features/spaceSections/crud/add-space.vue +52 -0
- package/app/components/features/spaceSections/crud/update-space.vue +224 -0
- package/app/components/features/spaceSections/defaultSpaces.vue +85 -0
- package/app/components/features/spaceSections/imageSpaces.vue +84 -0
- package/app/components/features/spaceSections/textSpaces.vue +84 -0
- package/app/components/features/spaceSections/videoSpaces.vue +84 -0
- package/app/components/features/spaces.vue +127 -0
- package/app/components/features/vibeSections/add-live.vue +47 -0
- package/app/components/features/vibeSections/relatedshorts.vue +35 -0
- package/app/components/features/vibeSections/shorts.vue +207 -0
- package/app/components/features/vibeSections/update-short.vue +266 -0
- package/app/components/features/vibez.vue +221 -0
- package/app/components/menus/lowerbar.vue +37 -0
- package/app/components/related/memberList.vue +38 -0
- package/app/components/related/post.vue +119 -0
- package/app/components/related/radio.vue +36 -0
- package/app/components/related/relatedposts.vue +30 -0
- package/app/components/related/relatedshorts.vue +30 -0
- package/app/components/related/relatedspaces.vue +30 -0
- package/app/components/related/relatedusers.vue +34 -0
- package/app/components/related/short.vue +68 -0
- package/app/components/related/space.vue +47 -0
- package/app/components/related/tag.vue +21 -0
- package/app/composables/cache.ts +44 -0
- package/app/composables/charts/createChart.js +33 -0
- package/app/composables/charts/deleteChart.js +15 -0
- package/app/composables/charts/updateChart.js +15 -0
- package/app/composables/config.ts +20 -0
- package/app/composables/contacts/createContact.js +64 -0
- package/app/composables/contacts/deleteContact.js +15 -0
- package/app/composables/contacts/updateContact.js +15 -0
- package/app/composables/errors.ts +16 -0
- package/app/composables/metrics.ts +52 -0
- package/app/composables/posts/createPost.js +40 -0
- package/app/composables/posts/deletePost.js +15 -0
- package/app/composables/posts/updatePost.js +15 -0
- package/app/composables/posts/usePosts.ts +22 -0
- package/app/composables/providers/atproto.ts +75 -0
- package/app/composables/providers/mastodon.ts +45 -0
- package/app/composables/rateLimit.ts +41 -0
- package/app/composables/registry.ts +13 -0
- package/app/composables/retry.ts +40 -0
- package/app/composables/settings/useAccessibilitySettings.js +43 -0
- package/app/composables/shorts/createShort.js +33 -0
- package/app/composables/shorts/deleteShort.js +15 -0
- package/app/composables/shorts/updateShort.js +15 -0
- package/app/composables/social/getActivity.js +33 -0
- package/app/composables/social/getGroups.js +33 -0
- package/app/composables/spaces/createSpace.js +29 -0
- package/app/composables/spaces/deleteSpace.js +15 -0
- package/app/composables/spaces/updateSpace.js +15 -0
- package/app/composables/spaces/useSpaceRegistry.ts +49 -0
- package/app/composables/stations/createStation.js +33 -0
- package/app/composables/stations/deleteStation.js +15 -0
- package/app/composables/stations/updateStation.js +15 -0
- package/app/composables/swr.ts +22 -0
- package/app/composables/types/BlueSkyTypes.ts +108 -0
- package/app/composables/types.ts +28 -0
- package/app/composables/useSocial.ts +25 -0
- package/app/composables/utils.ts +99 -0
- package/app/layouts/spaces-audio.vue +9 -0
- package/app/layouts/spaces-dating.vue +9 -0
- package/app/layouts/spaces-forum.vue +9 -0
- package/app/layouts/spaces-video.vue +9 -0
- package/app/pages/connect/event/[...slug].vue +96 -0
- package/app/pages/connect/hashtag/[...slug].vue +110 -0
- package/app/pages/connect/post/[...slug].vue +232 -0
- package/app/pages/connect/space/[...slug].vue +170 -0
- package/app/pages/connect/vibe/[...id].vue +204 -0
- package/app/pages/connect/vibe/preview.vue +100 -0
- package/app/pages/connect/vibe/upload.vue +115 -0
- package/app/pages/profile/[...slug].vue +91 -0
- package/app/plugins/rocketchat-api.js +105 -0
- package/app/stores/index.ts +0 -0
- package/app/stores/reactions.ts +206 -0
- package/app/stores/useCommentsStore.js +20 -0
- package/nuxt.config.ts +11 -0
- package/package.json +23 -0
- package/tsconfig.json +14 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<v-card>
|
|
3
|
+
<v-card-title>Language and Localization</v-card-title>
|
|
4
|
+
<v-card-text>
|
|
5
|
+
<v-select
|
|
6
|
+
v-model="selectedLanguage"
|
|
7
|
+
:items="languages"
|
|
8
|
+
label="Preferred Language"
|
|
9
|
+
item-title="label"
|
|
10
|
+
item-value="value"
|
|
11
|
+
:loading="loading"
|
|
12
|
+
></v-select>
|
|
13
|
+
<v-btn @click="saveLanguagePreference" color="primary" :loading="saving">
|
|
14
|
+
Save Language Preference
|
|
15
|
+
</v-btn>
|
|
16
|
+
</v-card-text>
|
|
17
|
+
</v-card>
|
|
18
|
+
</template>
|
|
19
|
+
|
|
20
|
+
<script setup>
|
|
21
|
+
import { ref, onMounted } from 'vue';
|
|
22
|
+
|
|
23
|
+
const config = useRuntimeConfig();
|
|
24
|
+
const baseUrl = config.public.vendureUrl; // Magento API base URL
|
|
25
|
+
|
|
26
|
+
const selectedLanguage = ref('');
|
|
27
|
+
const languages = ref([]);
|
|
28
|
+
const loading = ref(false);
|
|
29
|
+
const saving = ref(false);
|
|
30
|
+
|
|
31
|
+
// Fetch available languages
|
|
32
|
+
const fetchLanguages = async () => {
|
|
33
|
+
loading.value = true;
|
|
34
|
+
try {
|
|
35
|
+
const response = await $fetch(`/api/store/storeConfigs`, {
|
|
36
|
+
headers: {
|
|
37
|
+
'Content-Type': 'application/json',
|
|
38
|
+
'Authorization': `Bearer ${config.public.vendureApiToken}`
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// Check if response is an array, if not, wrap it in an array
|
|
43
|
+
const storeConfigs = Array.isArray(response) ? response : [response];
|
|
44
|
+
|
|
45
|
+
languages.value = storeConfigs.map(store => ({
|
|
46
|
+
label: store.locale,
|
|
47
|
+
value: store.code
|
|
48
|
+
}));
|
|
49
|
+
|
|
50
|
+
// Set default selected language if available
|
|
51
|
+
if (languages.value.length > 0) {
|
|
52
|
+
selectedLanguage.value = languages.value[0].value;
|
|
53
|
+
}
|
|
54
|
+
} catch (error) {
|
|
55
|
+
console.error('Error fetching languages:', error);
|
|
56
|
+
// You might want to add user-friendly error handling here
|
|
57
|
+
} finally {
|
|
58
|
+
loading.value = false;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
// Save language preference
|
|
63
|
+
const saveLanguagePreference = async () => {
|
|
64
|
+
if (!selectedLanguage.value) return;
|
|
65
|
+
|
|
66
|
+
saving.value = true;
|
|
67
|
+
try {
|
|
68
|
+
await $fetch(`/api/customers/me`, {
|
|
69
|
+
method: 'PUT',
|
|
70
|
+
headers: {
|
|
71
|
+
'Content-Type': 'application/json',
|
|
72
|
+
'Authorization': `Bearer ${localStorage.getItem('customerToken')}`,
|
|
73
|
+
},
|
|
74
|
+
body: {
|
|
75
|
+
customer: {
|
|
76
|
+
store_id: selectedLanguage.value,
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
console.log('Language preference saved successfully');
|
|
81
|
+
// You might want to add a success message here
|
|
82
|
+
} catch (error) {
|
|
83
|
+
console.error('Error saving language preference:', error);
|
|
84
|
+
// You might want to add an error message here
|
|
85
|
+
} finally {
|
|
86
|
+
saving.value = false;
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
onMounted(() => {
|
|
91
|
+
fetchLanguages();
|
|
92
|
+
});
|
|
93
|
+
</script>
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<v-card>
|
|
3
|
+
<v-card-title>Payment Methods</v-card-title>
|
|
4
|
+
<v-card-text>
|
|
5
|
+
<v-alert v-if="error" type="error">{{ error }}</v-alert>
|
|
6
|
+
<v-progress-circular v-if="loading" indeterminate color="primary"></v-progress-circular>
|
|
7
|
+
<v-list v-else>
|
|
8
|
+
<v-list-item v-for="(method, index) in paymentMethods" :key="index">
|
|
9
|
+
<v-list-item-title>{{ method.type }} ending in {{ method.last4 }}</v-list-item-title>
|
|
10
|
+
<template v-slot:append>
|
|
11
|
+
<v-btn icon @click="removePaymentMethod(method.id)">
|
|
12
|
+
<v-icon>mdi-delete</v-icon>
|
|
13
|
+
</v-btn>
|
|
14
|
+
</template>
|
|
15
|
+
</v-list-item>
|
|
16
|
+
</v-list>
|
|
17
|
+
<div ref="paypalButtonContainer"></div>
|
|
18
|
+
</v-card-text>
|
|
19
|
+
</v-card>
|
|
20
|
+
</template>
|
|
21
|
+
|
|
22
|
+
<script setup>
|
|
23
|
+
import { ref, onMounted } from 'vue';
|
|
24
|
+
import { useRuntimeConfig } from '#imports'
|
|
25
|
+
|
|
26
|
+
const config = useRuntimeConfig()
|
|
27
|
+
const paymentMethods = ref([]);
|
|
28
|
+
const loading = ref(false);
|
|
29
|
+
const error = ref(null);
|
|
30
|
+
const paypalButtonContainer = ref(null);
|
|
31
|
+
|
|
32
|
+
const fetchPaymentMethods = async () => {
|
|
33
|
+
loading.value = true;
|
|
34
|
+
error.value = null;
|
|
35
|
+
try {
|
|
36
|
+
const response = await $fetch('/api/customers/me/payment-methods', {
|
|
37
|
+
method: 'GET',
|
|
38
|
+
headers: {
|
|
39
|
+
// Include any necessary authentication headers
|
|
40
|
+
'Authorization': `Bearer ${config.public.vendureApiToken}`
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
console.log('API Response:', response);
|
|
45
|
+
|
|
46
|
+
if (typeof response === 'string' && response.startsWith('<!DOCTYPE html>')) {
|
|
47
|
+
throw new Error('Received HTML response instead of JSON. This might indicate an authentication issue or incorrect API endpoint.');
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (Array.isArray(response)) {
|
|
51
|
+
paymentMethods.value = response.map(method => ({
|
|
52
|
+
id: method.id || '',
|
|
53
|
+
type: method.type || '',
|
|
54
|
+
last4: method.last4 || ''
|
|
55
|
+
}));
|
|
56
|
+
} else if (response && typeof response === 'object') {
|
|
57
|
+
// If the response is an object, it might contain a data property with the array
|
|
58
|
+
const methodsArray = response.data || [];
|
|
59
|
+
if (Array.isArray(methodsArray)) {
|
|
60
|
+
paymentMethods.value = methodsArray.map(method => ({
|
|
61
|
+
id: method.id || '',
|
|
62
|
+
type: method.type || '',
|
|
63
|
+
last4: method.last4 || ''
|
|
64
|
+
}));
|
|
65
|
+
} else {
|
|
66
|
+
throw new Error(`Unexpected response format: ${JSON.stringify(response)}`);
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
throw new Error(`Unexpected response format: ${JSON.stringify(response)}`);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
console.log('Processed payment methods:', paymentMethods.value);
|
|
73
|
+
} catch (err) {
|
|
74
|
+
error.value = 'Failed to fetch payment methods: ' + (err.message || 'Unknown error');
|
|
75
|
+
console.error('Error fetching payment methods:', err);
|
|
76
|
+
} finally {
|
|
77
|
+
loading.value = false;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const initializePayPalButton = () => {
|
|
82
|
+
if (window.paypal) {
|
|
83
|
+
window.paypal.Buttons({
|
|
84
|
+
createOrder: (data, actions) => {
|
|
85
|
+
// This function sets up the details of the transaction
|
|
86
|
+
return actions.order.create({
|
|
87
|
+
purchase_units: [{
|
|
88
|
+
amount: {
|
|
89
|
+
value: '0.01' // Set this to the appropriate amount or handle it dynamically
|
|
90
|
+
}
|
|
91
|
+
}]
|
|
92
|
+
});
|
|
93
|
+
},
|
|
94
|
+
onApprove: async (data, actions) => {
|
|
95
|
+
// This function captures the funds from the transaction
|
|
96
|
+
const order = await actions.order.capture();
|
|
97
|
+
console.log('Transaction completed', order);
|
|
98
|
+
|
|
99
|
+
// Here you would typically send the order details to your server
|
|
100
|
+
// to save the new payment method
|
|
101
|
+
try {
|
|
102
|
+
await fetch('/api/customers/me/payment-methods', {
|
|
103
|
+
method: 'POST',
|
|
104
|
+
body: JSON.stringify({
|
|
105
|
+
paypalOrderId: order.id,
|
|
106
|
+
// Include any other necessary details
|
|
107
|
+
})
|
|
108
|
+
});
|
|
109
|
+
await fetchPaymentMethods(); // Refresh the list of payment methods
|
|
110
|
+
} catch (err) {
|
|
111
|
+
error.value = 'Failed to save new payment method';
|
|
112
|
+
console.error(err);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}).render(paypalButtonContainer.value);
|
|
116
|
+
} else {
|
|
117
|
+
console.error('PayPal SDK not loaded');
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
onMounted(() => {
|
|
122
|
+
fetchPaymentMethods();
|
|
123
|
+
|
|
124
|
+
// Load PayPal SDK
|
|
125
|
+
const script = document.createElement('script');
|
|
126
|
+
script.src = `https://www.paypal.com/sdk/js?client-id=YOUR_PAYPAL_CLIENT_ID`;
|
|
127
|
+
script.addEventListener('load', initializePayPalButton);
|
|
128
|
+
document.body.appendChild(script);
|
|
129
|
+
});
|
|
130
|
+
</script>
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<v-card>
|
|
3
|
+
<v-card-title>Personalization</v-card-title>
|
|
4
|
+
<v-card-text>
|
|
5
|
+
<v-select
|
|
6
|
+
v-model="preferredCategories"
|
|
7
|
+
:items="categories"
|
|
8
|
+
item-title="title"
|
|
9
|
+
item-value="value"
|
|
10
|
+
label="Preferred Categories"
|
|
11
|
+
multiple
|
|
12
|
+
chips
|
|
13
|
+
:loading="!categories.length"
|
|
14
|
+
></v-select>
|
|
15
|
+
<v-select
|
|
16
|
+
v-model="preferredBrands"
|
|
17
|
+
:items="brands"
|
|
18
|
+
item-title="title"
|
|
19
|
+
item-value="value"
|
|
20
|
+
label="Preferred Brands"
|
|
21
|
+
multiple
|
|
22
|
+
chips
|
|
23
|
+
:loading="!brands.length"
|
|
24
|
+
></v-select>
|
|
25
|
+
<v-switch
|
|
26
|
+
v-model="enableRecommendations"
|
|
27
|
+
label="Enable Product Recommendations"
|
|
28
|
+
></v-switch>
|
|
29
|
+
<v-btn @click="savePersonalization" color="primary" :loading="loading">
|
|
30
|
+
Save Preferences
|
|
31
|
+
</v-btn>
|
|
32
|
+
<v-alert v-if="successMessage" type="success" class="mt-3">
|
|
33
|
+
{{ successMessage }}
|
|
34
|
+
</v-alert>
|
|
35
|
+
<v-alert v-if="errorMessage" type="error" class="mt-3">
|
|
36
|
+
{{ errorMessage }}
|
|
37
|
+
</v-alert>
|
|
38
|
+
</v-card-text>
|
|
39
|
+
</v-card>
|
|
40
|
+
</template>
|
|
41
|
+
|
|
42
|
+
<script setup>
|
|
43
|
+
import { ref } from 'vue';
|
|
44
|
+
import { useRuntimeConfig } from '#imports';
|
|
45
|
+
|
|
46
|
+
const config = useRuntimeConfig();
|
|
47
|
+
const preferredCategories = ref([]);
|
|
48
|
+
const preferredBrands = ref([]);
|
|
49
|
+
const enableRecommendations = ref(true);
|
|
50
|
+
|
|
51
|
+
// These would typically come from your backend
|
|
52
|
+
const categories = ref([]);
|
|
53
|
+
const brands = ref([]);
|
|
54
|
+
|
|
55
|
+
const loading = ref(false);
|
|
56
|
+
const successMessage = ref('');
|
|
57
|
+
const errorMessage = ref('');
|
|
58
|
+
|
|
59
|
+
const fetchCategories = async () => {
|
|
60
|
+
try {
|
|
61
|
+
const response = await $fetch(`${config.public.vendureUrl}/V1/categories`, {
|
|
62
|
+
method: 'GET',
|
|
63
|
+
headers: {
|
|
64
|
+
'Content-Type': 'application/json',
|
|
65
|
+
// If your API requires authentication for this endpoint, include the token
|
|
66
|
+
'Authorization': `Bearer ${config.public.vendureApiToken}`
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// Magento returns a category tree, so we need to flatten it
|
|
71
|
+
const flattenCategories = (category) => {
|
|
72
|
+
let result = [{
|
|
73
|
+
value: category.id,
|
|
74
|
+
title: category.name
|
|
75
|
+
}];
|
|
76
|
+
if (category.children_data) {
|
|
77
|
+
category.children_data.forEach(child => {
|
|
78
|
+
result = result.concat(flattenCategories(child));
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
return result;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
categories.value = flattenCategories(response);
|
|
85
|
+
} catch (error) {
|
|
86
|
+
console.error('Error fetching categories:', error);
|
|
87
|
+
errorMessage.value = 'Failed to load categories. Please refresh the page.';
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
// New function to fetch brands
|
|
92
|
+
const fetchBrands = async () => {
|
|
93
|
+
try {
|
|
94
|
+
const response = await $fetch('/api/commerce/catalog/brands')
|
|
95
|
+
brands.value = response.map(brand => ({
|
|
96
|
+
value: brand.brand_id,
|
|
97
|
+
title: brand.brand_name
|
|
98
|
+
}))
|
|
99
|
+
} catch (error) {
|
|
100
|
+
console.error('Error fetching brands:', error)
|
|
101
|
+
errorMessage.value = 'Failed to load brands. Please refresh the page.'
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Fetch categories when the component is mounted
|
|
106
|
+
onMounted(() => {
|
|
107
|
+
fetchCategories();
|
|
108
|
+
fetchBrands()
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
const savePersonalization = async () => {
|
|
112
|
+
loading.value = true;
|
|
113
|
+
successMessage.value = '';
|
|
114
|
+
errorMessage.value = '';
|
|
115
|
+
|
|
116
|
+
try {
|
|
117
|
+
const response = await $fetch(`${config.public.vendureUrl}/V1/customers/me`, {
|
|
118
|
+
method: 'PUT',
|
|
119
|
+
headers: {
|
|
120
|
+
'Content-Type': 'application/json',
|
|
121
|
+
'Authorization': `Bearer ${config.public.vendureApiToken}` // You need to obtain and store the customer token
|
|
122
|
+
},
|
|
123
|
+
body: JSON.stringify({
|
|
124
|
+
customer: {
|
|
125
|
+
custom_attributes: [
|
|
126
|
+
{
|
|
127
|
+
attribute_code: 'preferred_categories',
|
|
128
|
+
value: JSON.stringify(preferredCategories.value)
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
attribute_code: 'preferred_brands',
|
|
132
|
+
value: JSON.stringify(preferredBrands.value)
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
attribute_code: 'enable_recommendations',
|
|
136
|
+
value: enableRecommendations.value ? '1' : '0'
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
}
|
|
140
|
+
})
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
successMessage.value = 'Personalization preferences saved successfully!';
|
|
144
|
+
} catch (error) {
|
|
145
|
+
console.error('Error saving personalization preferences:', error);
|
|
146
|
+
errorMessage.value = 'Failed to save preferences. Please try again.';
|
|
147
|
+
} finally {
|
|
148
|
+
loading.value = false;
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
</script>
|
|
152
|
+
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<v-card>
|
|
3
|
+
<v-card-title>Privacy and Data</v-card-title>
|
|
4
|
+
<v-card-text>
|
|
5
|
+
<!--<v-switch
|
|
6
|
+
v-model="dataSharing"
|
|
7
|
+
label="Allow Data Sharing for Personalized Experiences"
|
|
8
|
+
@change="updateDataSharingPreference"
|
|
9
|
+
></v-switch>-->
|
|
10
|
+
<v-row>
|
|
11
|
+
<v-col><v-btn @click="requestDataReport" class="mb-4">Request Personal Data Report</v-btn></v-col>
|
|
12
|
+
<v-col><v-btn @click="deleteAccount" color="error">Delete Account</v-btn></v-col>
|
|
13
|
+
</v-row>
|
|
14
|
+
</v-card-text>
|
|
15
|
+
</v-card>
|
|
16
|
+
</template>
|
|
17
|
+
|
|
18
|
+
<script setup>
|
|
19
|
+
import { ref, onMounted } from 'vue';
|
|
20
|
+
import { useUserStore } from '#auth/app/stores/user';
|
|
21
|
+
|
|
22
|
+
const customerStore = useUserStore();
|
|
23
|
+
|
|
24
|
+
const dataSharing = ref(true);
|
|
25
|
+
|
|
26
|
+
onMounted(async () => {
|
|
27
|
+
await fetchPrivacySettings();
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
const fetchPrivacySettings = async () => {
|
|
31
|
+
try {
|
|
32
|
+
const settings = await customerStore.getPrivacySettings();
|
|
33
|
+
dataSharing.value = settings.data_sharing_enabled;
|
|
34
|
+
} catch (error) {
|
|
35
|
+
console.error('Error fetching privacy settings:', error);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const requestDataReport = async () => {
|
|
40
|
+
try {
|
|
41
|
+
const response = await $fetch('/api/customer/gdpr/delete-customer', {
|
|
42
|
+
method: 'POST',
|
|
43
|
+
headers: {
|
|
44
|
+
'Content-Type': 'application/json',
|
|
45
|
+
// Add any necessary authentication headers
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
console.log('Personal data report requested successfully');
|
|
49
|
+
// Handle the response as needed
|
|
50
|
+
} catch (error) {
|
|
51
|
+
console.error('Error requesting personal data report:', error);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const deleteAccount = async () => {
|
|
56
|
+
try {
|
|
57
|
+
const response = await $fetch('/api/customers/me', {
|
|
58
|
+
method: 'DELETE',
|
|
59
|
+
headers: {
|
|
60
|
+
'Content-Type': 'application/json',
|
|
61
|
+
// Add any necessary authentication headers
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
console.log('Account deletion process initiated');
|
|
65
|
+
// Handle the response, e.g., log out the user and redirect
|
|
66
|
+
} catch (error) {
|
|
67
|
+
console.error('Error initiating account deletion:', error);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
const updateDataSharingPreference = async () => {
|
|
72
|
+
try {
|
|
73
|
+
const response = await $fetch('/api/customers/me/data-sharing', {
|
|
74
|
+
method: 'PUT',
|
|
75
|
+
headers: {
|
|
76
|
+
'Content-Type': 'application/json',
|
|
77
|
+
// Add any necessary authentication headers
|
|
78
|
+
},
|
|
79
|
+
body: JSON.stringify({
|
|
80
|
+
data_sharing_enabled: dataSharing.value
|
|
81
|
+
}),
|
|
82
|
+
});
|
|
83
|
+
console.log('Data sharing preference updated successfully');
|
|
84
|
+
// Handle the response as needed
|
|
85
|
+
} catch (error) {
|
|
86
|
+
console.error('Error updating data sharing preference:', error);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
</script>
|
|
90
|
+
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<v-card>
|
|
3
|
+
<v-card-title>Security Settings</v-card-title>
|
|
4
|
+
<v-card-text>
|
|
5
|
+
<v-switch v-model="twoFactorAuth" label="Enable Two-Factor Authentication"
|
|
6
|
+
@change="toggleTwoFactorAuth"></v-switch>
|
|
7
|
+
<!--<v-row>
|
|
8
|
+
<v-col><v-btn @click="viewLoginHistory" class="mb-4">View Login History</v-btn></v-col>
|
|
9
|
+
<v-col><v-btn @click="manageActiveSessions" color="warning">Manage Active Sessions</v-btn></v-col>
|
|
10
|
+
</v-row>-->
|
|
11
|
+
</v-card-text>
|
|
12
|
+
</v-card>
|
|
13
|
+
</template>
|
|
14
|
+
|
|
15
|
+
<script setup>
|
|
16
|
+
import {
|
|
17
|
+
ref
|
|
18
|
+
} from 'vue';
|
|
19
|
+
|
|
20
|
+
const config = useRuntimeConfig();
|
|
21
|
+
const twoFactorAuth = ref(false);
|
|
22
|
+
|
|
23
|
+
const toggleTwoFactorAuth = async () => {
|
|
24
|
+
try {
|
|
25
|
+
const response = await $fetch(`/api/V1/tfa/google/configure`, {
|
|
26
|
+
method: 'POST',
|
|
27
|
+
headers: {
|
|
28
|
+
'Content-Type': 'application/json',
|
|
29
|
+
'Authorization': `Bearer ${config.public.vendureApiToken}` // Replace with actual auth token
|
|
30
|
+
},
|
|
31
|
+
body: JSON.stringify({
|
|
32
|
+
'tfa_enabled': twoFactorAuth.value
|
|
33
|
+
})
|
|
34
|
+
});
|
|
35
|
+
console.log('2FA status updated:', response);
|
|
36
|
+
} catch (error) {
|
|
37
|
+
console.error('Error updating 2FA status:', error);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const viewLoginHistory = async () => {
|
|
42
|
+
try {
|
|
43
|
+
const response = await $fetch(`/api/V1/customer/login-history`, {
|
|
44
|
+
headers: {
|
|
45
|
+
'Authorization': `Bearer ${config.public.vendureApiToken}` // Replace with actual auth token
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
console.log('Login history:', response);
|
|
49
|
+
// You can then update the UI to display this information
|
|
50
|
+
} catch (error) {
|
|
51
|
+
console.error('Error fetching login history:', error);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const manageActiveSessions = async () => {
|
|
56
|
+
try {
|
|
57
|
+
const response = await $fetch(`/api/V1/customer/active-sessions`, {
|
|
58
|
+
headers: {
|
|
59
|
+
'Authorization': `Bearer ${config.public.vendureApiToken}` // Replace with actual auth token
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
console.log('Active sessions:', response);
|
|
63
|
+
// You can then update the UI to display this information and allow management
|
|
64
|
+
} catch (error) {
|
|
65
|
+
console.error('Error fetching active sessions:', error);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const terminateSession = async (sessionId) => {
|
|
70
|
+
try {
|
|
71
|
+
const response = await $fetch(`/api/V1/customer/terminate-session/${sessionId}`, {
|
|
72
|
+
method: 'POST',
|
|
73
|
+
headers: {
|
|
74
|
+
'Authorization': `Bearer ${config.public.vendureApiToken}` // Replace with actual auth token
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
console.log('Session terminated:', response);
|
|
78
|
+
// Refresh the list of active sessions
|
|
79
|
+
await manageActiveSessions();
|
|
80
|
+
} catch (error) {
|
|
81
|
+
console.error('Error terminating session:', error);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
</script>
|