@crm-market/template-shared 1.0.0
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/assets/css/custom.css +70 -0
- package/assets/css/remixicon.css +2782 -0
- package/assets/css/satoshi-font.css +31 -0
- package/assets/fonts/flaticon.css +463 -0
- package/assets/fonts/flaticon.eot +0 -0
- package/assets/fonts/flaticon.html +2153 -0
- package/assets/fonts/flaticon.svg +441 -0
- package/assets/fonts/flaticon.ttf +0 -0
- package/assets/fonts/flaticon.woff +0 -0
- package/assets/fonts/flaticon.woff2 +0 -0
- package/assets/fonts/remixicon.eot +0 -0
- package/assets/fonts/remixicon.svg +8230 -0
- package/assets/fonts/remixicon.ttf +0 -0
- package/assets/fonts/remixicon.woff +0 -0
- package/assets/fonts/remixicon.woff2 +0 -0
- package/assets/scss/_variables.scss +31 -0
- package/assets/scss/components/_about.scss +58 -0
- package/assets/scss/components/_authentication.scss +124 -0
- package/assets/scss/components/_backtoptop.scss +27 -0
- package/assets/scss/components/_banner.scss +396 -0
- package/assets/scss/components/_best-deals.scss +74 -0
- package/assets/scss/components/_blank.scss +40 -0
- package/assets/scss/components/_blog.scss +193 -0
- package/assets/scss/components/_cart.scss +108 -0
- package/assets/scss/components/_categories.scss +82 -0
- package/assets/scss/components/_checkout.scss +110 -0
- package/assets/scss/components/_dashboard.scss +388 -0
- package/assets/scss/components/_faq.scss +22 -0
- package/assets/scss/components/_filter-rang.scss +109 -0
- package/assets/scss/components/_footer.scss +270 -0
- package/assets/scss/components/_global.scss +550 -0
- package/assets/scss/components/_header.scss +587 -0
- package/assets/scss/components/_hurry.scss +52 -0
- package/assets/scss/components/_navbar.scss +1008 -0
- package/assets/scss/components/_offers.scss +689 -0
- package/assets/scss/components/_pagination.scss +71 -0
- package/assets/scss/components/_popup.scss +172 -0
- package/assets/scss/components/_preloader.scss +108 -0
- package/assets/scss/components/_products.scss +1147 -0
- package/assets/scss/components/_rtl.scss +806 -0
- package/assets/scss/components/_services.scss +16 -0
- package/assets/scss/components/_sidebar.scss +259 -0
- package/assets/scss/style.css +6676 -0
- package/assets/scss/style.css.map +1 -0
- package/assets/scss/style.scss +40 -0
- package/assets/webfonts/Satoshi-Bold.eot +0 -0
- package/assets/webfonts/Satoshi-Bold.woff +0 -0
- package/assets/webfonts/Satoshi-Bold.woff2 +0 -0
- package/assets/webfonts/Satoshi-Medium.eot +0 -0
- package/assets/webfonts/Satoshi-Medium.woff +0 -0
- package/assets/webfonts/Satoshi-Medium.woff2 +0 -0
- package/assets/webfonts/Satoshi-Regular.eot +0 -0
- package/assets/webfonts/Satoshi-Regular.woff +0 -0
- package/assets/webfonts/Satoshi-Regular.woff2 +0 -0
- package/components/AboutUs/AboutUsTuan.vue +25 -0
- package/components/AboutUs/Statistics.vue +42 -0
- package/components/AboutUs/SubscribeToTheNewsletter.vue +57 -0
- package/components/AddAddress/index.vue +70 -0
- package/components/BestSellers/Products.vue +1562 -0
- package/components/BestSellers/RecentlyViewed.vue +304 -0
- package/components/Cart/ProductQuantity.vue +29 -0
- package/components/Cart/index.vue +167 -0
- package/components/Categories/index.vue +305 -0
- package/components/ChangePassword/index.vue +71 -0
- package/components/Checkout/index.vue +192 -0
- package/components/Common/DashboardNavigation.vue +37 -0
- package/components/Common/PageBanner.vue +28 -0
- package/components/Common/ProductCard.vue +152 -0
- package/components/Common/Services.vue +58 -0
- package/components/Contact/ContactForm.vue +91 -0
- package/components/Contact/ContactInfo.vue +74 -0
- package/components/Dashboard/RecentOrder.vue +173 -0
- package/components/Dashboard/index.vue +79 -0
- package/components/EditAddress/index.vue +119 -0
- package/components/EditProfile/index.vue +97 -0
- package/components/FAQ/index.vue +121 -0
- package/components/FeaturedProduct/FeaturedProducts.vue +304 -0
- package/components/FeaturedProduct/Products.vue +1562 -0
- package/components/ForgotPassword/index.vue +51 -0
- package/components/Layout/BackToUp.vue +38 -0
- package/components/Layout/Copyright.vue +25 -0
- package/components/Layout/Footer.vue +183 -0
- package/components/Layout/FooterTwo.vue +165 -0
- package/components/Layout/LocationOption.vue +178 -0
- package/components/Layout/MiddleHeader.vue +229 -0
- package/components/Layout/MiddleHeaderThree.vue +204 -0
- package/components/Layout/MiddleHeaderTwo.vue +240 -0
- package/components/Layout/Navbar.vue +185 -0
- package/components/Layout/NavbarStyleFour.vue +334 -0
- package/components/Layout/NavbarStyleThree.vue +188 -0
- package/components/Layout/NavbarStyleTwo.vue +108 -0
- package/components/Layout/Preloader.vue +18 -0
- package/components/Layout/RTLSwitchBtn.vue +40 -0
- package/components/Layout/ResponsiveNavbar.vue +431 -0
- package/components/Layout/TopHeader.vue +130 -0
- package/components/Login/index.vue +94 -0
- package/components/MyAccount/index.vue +154 -0
- package/components/NewArrivals/Products.vue +1969 -0
- package/components/NewArrivals/RecentlyViewed.vue +304 -0
- package/components/OrderDetails/index.vue +77 -0
- package/components/OrderHistory/index.vue +197 -0
- package/components/PrivacyPolicy/index.vue +112 -0
- package/components/ProductDetails/ProductDetailsTab.vue +343 -0
- package/components/ProductDetails/ProductQuantity.vue +29 -0
- package/components/ProductDetails/RecentlyViewed.vue +304 -0
- package/components/ProductDetails/index.vue +268 -0
- package/components/Products/RecentlyViewed.vue +304 -0
- package/components/Products/index.vue +292 -0
- package/components/Register/index.vue +88 -0
- package/components/TermsConditions/index.vue +112 -0
- package/components/TrendingProducts/FeaturedProducts.vue +304 -0
- package/components/TrendingProducts/Products.vue +1564 -0
- package/components/Wishlist/ProductQuantity.vue +29 -0
- package/components/Wishlist/index.vue +128 -0
- package/composables/useCart.ts +149 -0
- package/composables/useCategories.ts +87 -0
- package/composables/useCheckout.ts +131 -0
- package/composables/useProducts.ts +162 -0
- package/composables/useSiteConfig.ts +236 -0
- package/composables/useTemplateSections.ts +74 -0
- package/e2e/cart.spec.ts +71 -0
- package/e2e/fixtures/mock-api.ts +166 -0
- package/e2e/homepage.spec.ts +65 -0
- package/e2e/layout.spec.ts +73 -0
- package/e2e/navigation.spec.ts +61 -0
- package/e2e/pages/cart.page.ts +44 -0
- package/e2e/pages/homepage.page.ts +46 -0
- package/e2e/playwright.config.ts +32 -0
- package/e2e/products.spec.ts +33 -0
- package/layouts/default.vue +94 -0
- package/layouts/inner.vue +70 -0
- package/nuxt.config.ts +86 -0
- package/package.json +38 -0
- package/pages/about-us.vue +12 -0
- package/pages/address.vue +10 -0
- package/pages/cart.vue +10 -0
- package/pages/categories.vue +10 -0
- package/pages/change-password.vue +10 -0
- package/pages/checkout.vue +10 -0
- package/pages/contact.vue +11 -0
- package/pages/dashboard.vue +10 -0
- package/pages/edit-address.vue +10 -0
- package/pages/edit-profile.vue +10 -0
- package/pages/faq.vue +10 -0
- package/pages/forgot-password.vue +10 -0
- package/pages/login.vue +10 -0
- package/pages/my-account.vue +10 -0
- package/pages/order-details.vue +10 -0
- package/pages/order-history.vue +10 -0
- package/pages/privacy-policy.vue +10 -0
- package/pages/product-details.vue +10 -0
- package/pages/products.vue +10 -0
- package/pages/register.vue +10 -0
- package/pages/terms-conditions.vue +10 -0
- package/pages/wishlist.vue +10 -0
- package/plugins/site-init.client.ts +24 -0
- package/plugins/vuetify.ts +18 -0
- package/types/index.ts +121 -0
- package/utils/image.ts +13 -0
- package/utils/store.ts +21 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="authentication-area ptb-60">
|
|
3
|
+
<div class="container">
|
|
4
|
+
<div class="authentication-content">
|
|
5
|
+
<div class="row align-items-center">
|
|
6
|
+
<div class="col-lg-5">
|
|
7
|
+
<div class="login text-center">
|
|
8
|
+
<img src="~/assets/images/login.png" alt="login" />
|
|
9
|
+
</div>
|
|
10
|
+
</div>
|
|
11
|
+
<div class="col-lg-7">
|
|
12
|
+
<div class="authentication-form">
|
|
13
|
+
<ul class="nav nav-tabs login-tabs" id="myTab" role="tablist">
|
|
14
|
+
<li class="nav-item" role="presentation">
|
|
15
|
+
<NuxtLink to="/forgot-password" class="nav-link active">
|
|
16
|
+
Forgot Password
|
|
17
|
+
</NuxtLink>
|
|
18
|
+
</li>
|
|
19
|
+
</ul>
|
|
20
|
+
<p>Lorem ipsum, dolor sit amet consectetur adipisicing elit.</p>
|
|
21
|
+
<form>
|
|
22
|
+
<div class="form-group mb-4">
|
|
23
|
+
<label class="label">Email Address</label>
|
|
24
|
+
<input
|
|
25
|
+
type="email"
|
|
26
|
+
class="form-control"
|
|
27
|
+
placeholder="Enter Your Email"
|
|
28
|
+
/>
|
|
29
|
+
</div>
|
|
30
|
+
<div class="form-group mb-0">
|
|
31
|
+
<button
|
|
32
|
+
type="submit"
|
|
33
|
+
class="btn btn-warning btn-pill text-white w-100 d-block"
|
|
34
|
+
>
|
|
35
|
+
Forgot Password
|
|
36
|
+
</button>
|
|
37
|
+
</div>
|
|
38
|
+
</form>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</template>
|
|
46
|
+
|
|
47
|
+
<script>
|
|
48
|
+
export default {
|
|
49
|
+
name: "ForgotPassword",
|
|
50
|
+
};
|
|
51
|
+
</script>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<button
|
|
3
|
+
type="button"
|
|
4
|
+
class="backtotop"
|
|
5
|
+
:class="[{ active: isTop }]"
|
|
6
|
+
@click="scrollToTop()"
|
|
7
|
+
>
|
|
8
|
+
<i class="ri-upload-line"></i>
|
|
9
|
+
</button>
|
|
10
|
+
</template>
|
|
11
|
+
|
|
12
|
+
<script lang="ts">
|
|
13
|
+
import { defineComponent } from "vue";
|
|
14
|
+
|
|
15
|
+
export default defineComponent({
|
|
16
|
+
name: "BackToUp",
|
|
17
|
+
data() {
|
|
18
|
+
return {
|
|
19
|
+
isTop: false,
|
|
20
|
+
};
|
|
21
|
+
},
|
|
22
|
+
methods: {
|
|
23
|
+
scrollToTop() {
|
|
24
|
+
window.scrollTo(0, 0);
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
mounted() {
|
|
28
|
+
window.addEventListener("scroll", () => {
|
|
29
|
+
let scrollPos = window.scrollY;
|
|
30
|
+
if (scrollPos >= 100) {
|
|
31
|
+
this.isTop = true;
|
|
32
|
+
} else {
|
|
33
|
+
this.isTop = false;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
</script>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="copyright-area bg-white">
|
|
3
|
+
<div class="container">
|
|
4
|
+
<v-row class="align-items-center">
|
|
5
|
+
<v-col cols="12" lg="6" md="6">
|
|
6
|
+
<p class="mb-2 mb-md-0 text-center text-md-start">
|
|
7
|
+
© <span>Tuan.</span> All Rights Reserved by
|
|
8
|
+
<a href="https://envytheme.com/" target="_blank">EnvyTheme</a>
|
|
9
|
+
</p>
|
|
10
|
+
</v-col>
|
|
11
|
+
<v-col cols="12" lg="6" md="6">
|
|
12
|
+
<div class="text-center text-md-end">
|
|
13
|
+
<img src="~/assets/images/payment.svg" alt="payment" />
|
|
14
|
+
</div>
|
|
15
|
+
</v-col>
|
|
16
|
+
</v-row>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
</template>
|
|
20
|
+
|
|
21
|
+
<script>
|
|
22
|
+
export default {
|
|
23
|
+
name: "Copyright",
|
|
24
|
+
};
|
|
25
|
+
</script>
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="footer-area pb-60 bg-gray1">
|
|
3
|
+
<div class="container">
|
|
4
|
+
<div class="border-top pt-60 pb-35">
|
|
5
|
+
<v-row class="justify-content-center">
|
|
6
|
+
<v-col cols="12" lg="3" sm="6">
|
|
7
|
+
<div class="single-footer-widget">
|
|
8
|
+
<h3>{{ storeName }}</h3>
|
|
9
|
+
<p v-if="siteConfig?.siteDescription">
|
|
10
|
+
{{ siteConfig.siteDescription }}
|
|
11
|
+
</p>
|
|
12
|
+
<p v-else>
|
|
13
|
+
Your online store for the best products and deals.
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
<div class="call-info" v-if="phone">
|
|
17
|
+
<span class="title">Got Question? Call us 24/7</span>
|
|
18
|
+
<div class="d-flex align-items-center">
|
|
19
|
+
<i class="flaticon-headphones-1"></i>
|
|
20
|
+
<a :href="`tel:${phone}`">{{ phone }}</a>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
<div class="call-info" v-if="email">
|
|
24
|
+
<a :href="`mailto:${email}`">{{ email }}</a>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="mt-2" v-if="address">
|
|
27
|
+
<small class="text-muted">{{ address }}</small>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
</v-col>
|
|
31
|
+
<v-col cols="12" lg="3" sm="6">
|
|
32
|
+
<div class="single-footer-widget">
|
|
33
|
+
<h3>Popular Categories</h3>
|
|
34
|
+
|
|
35
|
+
<ul class="ps-0 mb-0 list-unstyled import-link">
|
|
36
|
+
<li v-for="category in footerCategories" :key="category.id">
|
|
37
|
+
<NuxtLink :to="`/products?categoryId=${category.id}`">
|
|
38
|
+
{{ category.name }}
|
|
39
|
+
</NuxtLink>
|
|
40
|
+
</li>
|
|
41
|
+
<li v-if="footerCategories.length === 0">
|
|
42
|
+
<NuxtLink to="/products">All Products</NuxtLink>
|
|
43
|
+
</li>
|
|
44
|
+
</ul>
|
|
45
|
+
</div>
|
|
46
|
+
</v-col>
|
|
47
|
+
<v-col cols="12" lg="3" sm="6">
|
|
48
|
+
<div class="single-footer-widget">
|
|
49
|
+
<h3>Let Us Help You</h3>
|
|
50
|
+
|
|
51
|
+
<ul class="ps-0 mb-0 list-unstyled import-link">
|
|
52
|
+
<li>
|
|
53
|
+
<NuxtLink to="/dashboard">Your Account</NuxtLink>
|
|
54
|
+
</li>
|
|
55
|
+
<li>
|
|
56
|
+
<NuxtLink to="/order-history">Your Orders</NuxtLink>
|
|
57
|
+
</li>
|
|
58
|
+
<li>
|
|
59
|
+
<NuxtLink to="/privacy-policy">Privacy Policy</NuxtLink>
|
|
60
|
+
</li>
|
|
61
|
+
<li>
|
|
62
|
+
<NuxtLink to="/faq">Help Center</NuxtLink>
|
|
63
|
+
</li>
|
|
64
|
+
<li>
|
|
65
|
+
<NuxtLink to="/terms-conditions">Terms & Conditions</NuxtLink>
|
|
66
|
+
</li>
|
|
67
|
+
</ul>
|
|
68
|
+
</div>
|
|
69
|
+
</v-col>
|
|
70
|
+
<v-col cols="12" lg="3" sm="6">
|
|
71
|
+
<div class="single-footer-widget">
|
|
72
|
+
<h3>Get to Know Us</h3>
|
|
73
|
+
|
|
74
|
+
<ul class="ps-0 mb-0 list-unstyled import-link">
|
|
75
|
+
<li>
|
|
76
|
+
<NuxtLink to="/about-us">About Us</NuxtLink>
|
|
77
|
+
</li>
|
|
78
|
+
<li>
|
|
79
|
+
<NuxtLink to="/contact">Contact Us</NuxtLink>
|
|
80
|
+
</li>
|
|
81
|
+
<li>
|
|
82
|
+
<NuxtLink to="/categories">Categories</NuxtLink>
|
|
83
|
+
</li>
|
|
84
|
+
<li>
|
|
85
|
+
<NuxtLink to="/products">All Products</NuxtLink>
|
|
86
|
+
</li>
|
|
87
|
+
</ul>
|
|
88
|
+
</div>
|
|
89
|
+
</v-col>
|
|
90
|
+
</v-row>
|
|
91
|
+
</div>
|
|
92
|
+
<v-row class="align-items-end justify-content-center">
|
|
93
|
+
<v-col cols="12" lg="3" md="6">
|
|
94
|
+
<div class="single-footer-bottom-item">
|
|
95
|
+
<span class="title">Subscribe to the newsletter</span>
|
|
96
|
+
<form class="subscribe-form position-relative" @submit.prevent>
|
|
97
|
+
<input
|
|
98
|
+
type="text"
|
|
99
|
+
class="form-control"
|
|
100
|
+
placeholder="Enter your email"
|
|
101
|
+
/>
|
|
102
|
+
<button
|
|
103
|
+
class="btn btn-warning text-white position-absolute top-50 end-0 translate-middle-y"
|
|
104
|
+
>
|
|
105
|
+
Submit Now
|
|
106
|
+
</button>
|
|
107
|
+
</form>
|
|
108
|
+
</div>
|
|
109
|
+
</v-col>
|
|
110
|
+
<v-col cols="12" lg="4" md="6">
|
|
111
|
+
<div class="single-footer-bottom-item" v-if="hasSocialMedia">
|
|
112
|
+
<ul
|
|
113
|
+
class="ps-0 mb-0 list-unstyled d-flex align-items-center social-link justify-content-center"
|
|
114
|
+
>
|
|
115
|
+
<li>
|
|
116
|
+
<span class="titles">Follow Us:</span>
|
|
117
|
+
</li>
|
|
118
|
+
<li v-if="socialMedia?.facebook">
|
|
119
|
+
<a :href="socialMedia.facebook" target="_blank">
|
|
120
|
+
<i class="ri-facebook-fill"></i>
|
|
121
|
+
</a>
|
|
122
|
+
</li>
|
|
123
|
+
<li v-if="socialMedia?.twitter">
|
|
124
|
+
<a :href="socialMedia.twitter" target="_blank">
|
|
125
|
+
<i class="ri-twitter-x-line"></i>
|
|
126
|
+
</a>
|
|
127
|
+
</li>
|
|
128
|
+
<li v-if="socialMedia?.instagram">
|
|
129
|
+
<a :href="socialMedia.instagram" target="_blank">
|
|
130
|
+
<i class="ri-instagram-line"></i>
|
|
131
|
+
</a>
|
|
132
|
+
</li>
|
|
133
|
+
</ul>
|
|
134
|
+
</div>
|
|
135
|
+
</v-col>
|
|
136
|
+
<v-col cols="12" lg="5" md="6">
|
|
137
|
+
<div class="single-footer-bottom-item">
|
|
138
|
+
<p class="text-center text-lg-end mb-0 text-muted">
|
|
139
|
+
© {{ new Date().getFullYear() }} {{ storeName }}. All rights reserved.
|
|
140
|
+
</p>
|
|
141
|
+
</div>
|
|
142
|
+
</v-col>
|
|
143
|
+
</v-row>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
</template>
|
|
147
|
+
|
|
148
|
+
<script lang="ts">
|
|
149
|
+
import { computed } from "vue";
|
|
150
|
+
|
|
151
|
+
export default {
|
|
152
|
+
name: "Footer",
|
|
153
|
+
setup() {
|
|
154
|
+
const { siteConfig, siteName, contactInfo } = useSiteConfig();
|
|
155
|
+
const { topLevelCategories } = useCategories();
|
|
156
|
+
|
|
157
|
+
const storeName = computed(() => siteName.value || 'Our Store');
|
|
158
|
+
const phone = computed(() => contactInfo.value?.phone);
|
|
159
|
+
const email = computed(() => contactInfo.value?.email);
|
|
160
|
+
const address = computed(() => contactInfo.value?.address);
|
|
161
|
+
const socialMedia = computed(() => contactInfo.value?.socialMedia);
|
|
162
|
+
const hasSocialMedia = computed(() => {
|
|
163
|
+
const sm = socialMedia.value;
|
|
164
|
+
return sm && (sm.facebook || sm.twitter || sm.instagram);
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
const footerCategories = computed(() =>
|
|
168
|
+
topLevelCategories.value.slice(0, 6)
|
|
169
|
+
);
|
|
170
|
+
|
|
171
|
+
return {
|
|
172
|
+
siteConfig,
|
|
173
|
+
storeName,
|
|
174
|
+
phone,
|
|
175
|
+
email,
|
|
176
|
+
address,
|
|
177
|
+
socialMedia,
|
|
178
|
+
hasSocialMedia,
|
|
179
|
+
footerCategories,
|
|
180
|
+
};
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
</script>
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="footer-area pb-60 bg-gray1">
|
|
3
|
+
<div class="container">
|
|
4
|
+
<div class="border-top pt-60 pb-35">
|
|
5
|
+
<v-row class="justify-content-center">
|
|
6
|
+
<v-col cols="12" lg="3" sm="6">
|
|
7
|
+
<div class="single-footer-widget">
|
|
8
|
+
<h3>About The Shop</h3>
|
|
9
|
+
<p>
|
|
10
|
+
We're not just an online store; we're your gateway to a world of
|
|
11
|
+
cutting-edge electronics and telemobile devices
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
<div class="call-info">
|
|
15
|
+
<span class="title">Got Question? Call us 24/7</span>
|
|
16
|
+
<div class="d-flex align-items-center">
|
|
17
|
+
<i class="flaticon-headphones-1"></i>
|
|
18
|
+
<a href="tel:(808)-555-0111">(808) 555-0111</a>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
</v-col>
|
|
23
|
+
<v-col cols="12" lg="3" sm="6">
|
|
24
|
+
<div class="single-footer-widget">
|
|
25
|
+
<h3>Popular Categories</h3>
|
|
26
|
+
|
|
27
|
+
<ul class="ps-0 mb-0 list-unstyled import-link">
|
|
28
|
+
<li>
|
|
29
|
+
<NuxtLink to="/products">Smartphone & Tablets</NuxtLink>
|
|
30
|
+
</li>
|
|
31
|
+
<li>
|
|
32
|
+
<NuxtLink to="/products">Laptop & Desktop</NuxtLink>
|
|
33
|
+
</li>
|
|
34
|
+
<li>
|
|
35
|
+
<NuxtLink to="/products">Headphones</NuxtLink>
|
|
36
|
+
</li>
|
|
37
|
+
<li>
|
|
38
|
+
<NuxtLink to="/products">Smart Watches</NuxtLink>
|
|
39
|
+
</li>
|
|
40
|
+
<li>
|
|
41
|
+
<NuxtLink to="/products">Drone & Camera</NuxtLink>
|
|
42
|
+
</li>
|
|
43
|
+
<li>
|
|
44
|
+
<NuxtLink to="/products">Home Electronics</NuxtLink>
|
|
45
|
+
</li>
|
|
46
|
+
</ul>
|
|
47
|
+
</div>
|
|
48
|
+
</v-col>
|
|
49
|
+
<v-col cols="12" lg="3" sm="6">
|
|
50
|
+
<div class="single-footer-widget">
|
|
51
|
+
<h3>Let Us Help You</h3>
|
|
52
|
+
|
|
53
|
+
<ul class="ps-0 mb-0 list-unstyled import-link">
|
|
54
|
+
<li>
|
|
55
|
+
<NuxtLink to="/dashboard">Your Account</NuxtLink>
|
|
56
|
+
</li>
|
|
57
|
+
<li>
|
|
58
|
+
<NuxtLink to="/order-history">Your Order</NuxtLink>
|
|
59
|
+
</li>
|
|
60
|
+
<li>
|
|
61
|
+
<NuxtLink to="/privacy-policy">Return Policy</NuxtLink>
|
|
62
|
+
</li>
|
|
63
|
+
<li>
|
|
64
|
+
<NuxtLink to="/faq">Help Center</NuxtLink>
|
|
65
|
+
</li>
|
|
66
|
+
<li>
|
|
67
|
+
<NuxtLink to="/products">Product Replacement</NuxtLink>
|
|
68
|
+
</li>
|
|
69
|
+
<li>
|
|
70
|
+
<NuxtLink to="/dashboard">Shop With Points</NuxtLink>
|
|
71
|
+
</li>
|
|
72
|
+
</ul>
|
|
73
|
+
</div>
|
|
74
|
+
</v-col>
|
|
75
|
+
<v-col cols="12" lg="3" sm="6">
|
|
76
|
+
<div class="single-footer-widget">
|
|
77
|
+
<h3>Get to Know Us</h3>
|
|
78
|
+
|
|
79
|
+
<ul class="ps-0 mb-0 list-unstyled import-link">
|
|
80
|
+
<li>
|
|
81
|
+
<NuxtLink to="/about-us">About Us</NuxtLink>
|
|
82
|
+
</li>
|
|
83
|
+
<li>
|
|
84
|
+
<NuxtLink to="/about-us">Careers</NuxtLink>
|
|
85
|
+
</li>
|
|
86
|
+
<li>
|
|
87
|
+
<NuxtLink to="/contact">Store Location</NuxtLink>
|
|
88
|
+
</li>
|
|
89
|
+
<li>
|
|
90
|
+
<NuxtLink to="/our-blog">News Center</NuxtLink>
|
|
91
|
+
</li>
|
|
92
|
+
<li>
|
|
93
|
+
<NuxtLink to="/about-us">Investor Relations</NuxtLink>
|
|
94
|
+
</li>
|
|
95
|
+
<li>
|
|
96
|
+
<NuxtLink to="/contact">Contact Us</NuxtLink>
|
|
97
|
+
</li>
|
|
98
|
+
</ul>
|
|
99
|
+
</div>
|
|
100
|
+
</v-col>
|
|
101
|
+
</v-row>
|
|
102
|
+
</div>
|
|
103
|
+
<v-row class="align-items-end justify-content-center">
|
|
104
|
+
<v-col cols="12" lg="6" md="6">
|
|
105
|
+
<div class="single-footer-bottom-item">
|
|
106
|
+
<ul
|
|
107
|
+
class="ps-0 mb-0 list-unstyled d-flex align-items-center social-link ms-0 justify-content-md-start justify-content-center"
|
|
108
|
+
>
|
|
109
|
+
<li>
|
|
110
|
+
<span class="titles">Follow Us:</span>
|
|
111
|
+
</li>
|
|
112
|
+
<li>
|
|
113
|
+
<a href="https://www.facebook.com/" target="_blank">
|
|
114
|
+
<i class="ri-facebook-fill"></i>
|
|
115
|
+
</a>
|
|
116
|
+
</li>
|
|
117
|
+
<li>
|
|
118
|
+
<a href="https://www.twitter.com/" target="_blank">
|
|
119
|
+
<i class="ri-twitter-x-line"></i>
|
|
120
|
+
</a>
|
|
121
|
+
</li>
|
|
122
|
+
<li>
|
|
123
|
+
<a href="https://www.linkedin.com/" target="_blank">
|
|
124
|
+
<i class="ri-linkedin-fill"></i>
|
|
125
|
+
</a>
|
|
126
|
+
</li>
|
|
127
|
+
<li>
|
|
128
|
+
<a href="https://www.whatsapp.com/" target="_blank">
|
|
129
|
+
<i class="ri-whatsapp-line"></i>
|
|
130
|
+
</a>
|
|
131
|
+
</li>
|
|
132
|
+
</ul>
|
|
133
|
+
</div>
|
|
134
|
+
</v-col>
|
|
135
|
+
<v-col cols="12" lg="6" md="6">
|
|
136
|
+
<div class="single-footer-bottom-item">
|
|
137
|
+
<ul
|
|
138
|
+
class="ps-0 mb-0 list-unstyled d-flex align-items-center justify-content-center justify-content-lg-end app-link"
|
|
139
|
+
>
|
|
140
|
+
<li>
|
|
141
|
+
<span class="titles">Download App:</span>
|
|
142
|
+
</li>
|
|
143
|
+
<li>
|
|
144
|
+
<a href="https://www.apple.com/store" target="_blank">
|
|
145
|
+
<img src="~/assets/images/ios.svg" alt="ios" />
|
|
146
|
+
</a>
|
|
147
|
+
</li>
|
|
148
|
+
<li>
|
|
149
|
+
<a href="https://play.google.com/store/games" target="_blank">
|
|
150
|
+
<img src="~/assets/images/gplay.svg" alt="gplay" />
|
|
151
|
+
</a>
|
|
152
|
+
</li>
|
|
153
|
+
</ul>
|
|
154
|
+
</div>
|
|
155
|
+
</v-col>
|
|
156
|
+
</v-row>
|
|
157
|
+
</div>
|
|
158
|
+
</div>
|
|
159
|
+
</template>
|
|
160
|
+
|
|
161
|
+
<script>
|
|
162
|
+
export default {
|
|
163
|
+
name: "FooterTwo",
|
|
164
|
+
};
|
|
165
|
+
</script>
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div :class="['location-option', { show: stateStoreInstance.open }]">
|
|
3
|
+
<div class="modal-dialog modal-dialog-centered">
|
|
4
|
+
<div class="modal-content">
|
|
5
|
+
<div class="modal-header border-0 pb-0">
|
|
6
|
+
<h3 class="modal-title" id="exampleModal2Label">
|
|
7
|
+
Where to deliver your products?
|
|
8
|
+
</h3>
|
|
9
|
+
<button
|
|
10
|
+
type="button"
|
|
11
|
+
class="btn-close"
|
|
12
|
+
@click="stateStoreInstance.onChange"
|
|
13
|
+
></button>
|
|
14
|
+
</div>
|
|
15
|
+
<div class="modal-body">
|
|
16
|
+
<form>
|
|
17
|
+
<div class="form-group mb-4">
|
|
18
|
+
<label class="label">Search your location</label>
|
|
19
|
+
<div class="position-relative">
|
|
20
|
+
<input
|
|
21
|
+
type="text"
|
|
22
|
+
class="form-control ps-5"
|
|
23
|
+
placeholder="Search your location"
|
|
24
|
+
/>
|
|
25
|
+
<i
|
|
26
|
+
class="ri-map-pin-line position-absolute top-50 start-0 translate-middle-y ps-3"
|
|
27
|
+
></i>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
<h6>Select a Location</h6>
|
|
31
|
+
|
|
32
|
+
<ul class="ps-0 mb-0 list-unstyled location-list">
|
|
33
|
+
<li>
|
|
34
|
+
<div class="form-check ps-0 position-relative mb-0">
|
|
35
|
+
<label
|
|
36
|
+
class="form-check-label d-block"
|
|
37
|
+
for="flexRadioDefault4"
|
|
38
|
+
>
|
|
39
|
+
<span class="title1">Alberta</span>
|
|
40
|
+
<span class="dec">Athabasca T9S</span>
|
|
41
|
+
</label>
|
|
42
|
+
<input
|
|
43
|
+
class="form-check-input"
|
|
44
|
+
type="radio"
|
|
45
|
+
name="flexRadioDefault4"
|
|
46
|
+
id="flexRadioDefault4"
|
|
47
|
+
/>
|
|
48
|
+
</div>
|
|
49
|
+
</li>
|
|
50
|
+
<li>
|
|
51
|
+
<div class="form-check ps-0 position-relative mb-0">
|
|
52
|
+
<label
|
|
53
|
+
class="form-check-label d-block"
|
|
54
|
+
for="flexRadioDefault5"
|
|
55
|
+
>
|
|
56
|
+
<span class="title1">British Columbia</span>
|
|
57
|
+
<span class="dec">Athabasca T9S</span>
|
|
58
|
+
</label>
|
|
59
|
+
<input
|
|
60
|
+
class="form-check-input"
|
|
61
|
+
type="radio"
|
|
62
|
+
name="flexRadioDefault5"
|
|
63
|
+
id="flexRadioDefault5"
|
|
64
|
+
/>
|
|
65
|
+
</div>
|
|
66
|
+
</li>
|
|
67
|
+
<li>
|
|
68
|
+
<div class="form-check ps-0 position-relative mb-0">
|
|
69
|
+
<label
|
|
70
|
+
class="form-check-label d-block"
|
|
71
|
+
for="flexRadioDefault6"
|
|
72
|
+
>
|
|
73
|
+
<span class="title1">New Brunswick</span>
|
|
74
|
+
<span class="dec">Athabasca T9S</span>
|
|
75
|
+
</label>
|
|
76
|
+
<input
|
|
77
|
+
class="form-check-input"
|
|
78
|
+
type="radio"
|
|
79
|
+
name="flexRadioDefault6"
|
|
80
|
+
id="flexRadioDefault6"
|
|
81
|
+
/>
|
|
82
|
+
</div>
|
|
83
|
+
</li>
|
|
84
|
+
<li>
|
|
85
|
+
<div class="form-check ps-0 position-relative mb-0">
|
|
86
|
+
<label
|
|
87
|
+
class="form-check-label d-block"
|
|
88
|
+
for="flexRadioDefault7"
|
|
89
|
+
>
|
|
90
|
+
<span class="title1">Nova Scotia</span>
|
|
91
|
+
<span class="dec">Athabasca T9S</span>
|
|
92
|
+
</label>
|
|
93
|
+
<input
|
|
94
|
+
class="form-check-input"
|
|
95
|
+
type="radio"
|
|
96
|
+
name="flexRadioDefault7"
|
|
97
|
+
id="flexRadioDefault7"
|
|
98
|
+
/>
|
|
99
|
+
</div>
|
|
100
|
+
</li>
|
|
101
|
+
<li>
|
|
102
|
+
<div class="form-check ps-0 position-relative mb-0">
|
|
103
|
+
<label
|
|
104
|
+
class="form-check-label d-block"
|
|
105
|
+
for="flexRadioDefault8"
|
|
106
|
+
>
|
|
107
|
+
<span class="title1">Ontario</span>
|
|
108
|
+
<span class="dec">Athabasca T9S</span>
|
|
109
|
+
</label>
|
|
110
|
+
<input
|
|
111
|
+
class="form-check-input"
|
|
112
|
+
type="radio"
|
|
113
|
+
name="flexRadioDefault8"
|
|
114
|
+
id="flexRadioDefault8"
|
|
115
|
+
/>
|
|
116
|
+
</div>
|
|
117
|
+
</li>
|
|
118
|
+
<li>
|
|
119
|
+
<div class="form-check ps-0 position-relative mb-0">
|
|
120
|
+
<label
|
|
121
|
+
class="form-check-label d-block"
|
|
122
|
+
for="flexRadioDefault9"
|
|
123
|
+
>
|
|
124
|
+
<span class="title1">Quebec</span>
|
|
125
|
+
<span class="dec">Athabasca T9S</span>
|
|
126
|
+
</label>
|
|
127
|
+
<input
|
|
128
|
+
class="form-check-input"
|
|
129
|
+
type="radio"
|
|
130
|
+
name="flexRadioDefault9"
|
|
131
|
+
id="flexRadioDefault9"
|
|
132
|
+
/>
|
|
133
|
+
</div>
|
|
134
|
+
</li>
|
|
135
|
+
<li>
|
|
136
|
+
<div class="form-check ps-0 position-relative mb-0">
|
|
137
|
+
<label
|
|
138
|
+
class="form-check-label d-block"
|
|
139
|
+
for="flexRadioDefault10"
|
|
140
|
+
>
|
|
141
|
+
<span class="title1">Yukon</span>
|
|
142
|
+
<span class="dec">Athabasca T9S</span>
|
|
143
|
+
</label>
|
|
144
|
+
<input
|
|
145
|
+
class="form-check-input"
|
|
146
|
+
type="radio"
|
|
147
|
+
name="flexRadioDefault10"
|
|
148
|
+
id="flexRadioDefault10"
|
|
149
|
+
/>
|
|
150
|
+
</div>
|
|
151
|
+
</li>
|
|
152
|
+
</ul>
|
|
153
|
+
</form>
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
</div>
|
|
157
|
+
</div>
|
|
158
|
+
</template>
|
|
159
|
+
|
|
160
|
+
<script lang="ts">
|
|
161
|
+
import { defineComponent } from "vue";
|
|
162
|
+
import stateStore from "~/utils/store";
|
|
163
|
+
|
|
164
|
+
export default defineComponent({
|
|
165
|
+
name: "MobileDeviceNavbar",
|
|
166
|
+
setup() {
|
|
167
|
+
const stateStoreInstance = stateStore;
|
|
168
|
+
const handleClick = () => {
|
|
169
|
+
stateStoreInstance.open = false;
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
return {
|
|
173
|
+
stateStoreInstance,
|
|
174
|
+
handleClick,
|
|
175
|
+
};
|
|
176
|
+
},
|
|
177
|
+
});
|
|
178
|
+
</script>
|