├── docs ├── .nojekyll ├── logo.png ├── favicon.ico ├── _nuxt │ ├── static │ │ └── 1651415609 │ │ │ ├── payload.js │ │ │ ├── user │ │ │ └── wishlist │ │ │ │ ├── payload.js │ │ │ │ └── state.js │ │ │ ├── product_detail │ │ │ ├── 1 │ │ │ │ ├── payload.js │ │ │ │ └── state.js │ │ │ ├── 2 │ │ │ │ ├── payload.js │ │ │ │ └── state.js │ │ │ ├── 3 │ │ │ │ ├── payload.js │ │ │ │ └── state.js │ │ │ ├── 4 │ │ │ │ ├── payload.js │ │ │ │ └── state.js │ │ │ ├── 5 │ │ │ │ ├── payload.js │ │ │ │ └── state.js │ │ │ ├── 6 │ │ │ │ ├── payload.js │ │ │ │ └── state.js │ │ │ ├── 7 │ │ │ │ ├── payload.js │ │ │ │ └── state.js │ │ │ ├── 8 │ │ │ │ ├── payload.js │ │ │ │ └── state.js │ │ │ ├── 9 │ │ │ │ ├── payload.js │ │ │ │ └── state.js │ │ │ └── state.js │ │ │ ├── manifest.js │ │ │ └── state.js │ ├── img │ │ └── vuemmerce-logo.6809a10.png │ ├── LICENSES │ ├── e6bdf6b.js │ ├── e2c4646.js │ ├── 24f74bf.js │ └── 762a57e.js ├── apple-icon.png ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon-96x96.png ├── ms-icon-70x70.png ├── apple-icon-57x57.png ├── apple-icon-60x60.png ├── apple-icon-72x72.png ├── apple-icon-76x76.png ├── ms-icon-144x144.png ├── ms-icon-150x150.png ├── ms-icon-310x310.png ├── vuemmerce-logo.png ├── android-icon-36x36.png ├── android-icon-48x48.png ├── android-icon-72x72.png ├── android-icon-96x96.png ├── apple-icon-114x114.png ├── apple-icon-120x120.png ├── apple-icon-144x144.png ├── apple-icon-152x152.png ├── apple-icon-180x180.png ├── android-icon-144x144.png ├── android-icon-192x192.png ├── apple-icon-precomposed.png ├── browserconfig.xml ├── README.md ├── manifest.json ├── sw.js ├── 200.html ├── product_detail │ ├── 1 │ │ └── index.html │ └── index.html └── user │ └── wishlist │ └── index.html ├── .gitattributes ├── static ├── logo.png ├── favicon.ico ├── apple-icon.png ├── favicon-16x16.png ├── favicon-32x32.png ├── favicon-96x96.png ├── ms-icon-70x70.png ├── vuemmerce-logo.png ├── apple-icon-57x57.png ├── apple-icon-60x60.png ├── apple-icon-72x72.png ├── apple-icon-76x76.png ├── ms-icon-144x144.png ├── ms-icon-150x150.png ├── ms-icon-310x310.png ├── android-icon-36x36.png ├── android-icon-48x48.png ├── android-icon-72x72.png ├── android-icon-96x96.png ├── apple-icon-114x114.png ├── apple-icon-120x120.png ├── apple-icon-144x144.png ├── apple-icon-152x152.png ├── apple-icon-180x180.png ├── android-icon-144x144.png ├── android-icon-192x192.png ├── apple-icon-precomposed.png ├── browserconfig.xml ├── README.md ├── manifest.json └── sw.js ├── assets ├── css │ └── main.css ├── filters.js └── validators.js ├── babel.config.js ├── media └── Vuemmerce-logo.jpg ├── .editorconfig ├── .gitignore ├── plugins └── README.md ├── components ├── subheader │ └── Subheader.vue ├── hero │ └── Hero.vue ├── search │ └── Search.vue ├── products_list │ └── ProductsListContainer.vue ├── modal │ ├── Checkout.vue │ ├── Login.vue │ └── Signup.vue ├── header │ └── Header.vue ├── Products.vue └── footer │ └── Footer.vue ├── store ├── README.md └── index.js ├── pages ├── index.vue ├── user │ └── wishlist │ │ └── index.vue └── product_detail │ └── _id.vue ├── tailwind.config.js ├── .github └── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug_report.md ├── .eslintrc.js ├── LICENSE ├── package.json ├── layouts └── default.vue ├── README.md ├── changelog.md └── nuxt.config.js /docs/.nojekyll: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js text eol=lf -------------------------------------------------------------------------------- /docs/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/logo.png -------------------------------------------------------------------------------- /static/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/logo.png -------------------------------------------------------------------------------- /assets/css/main.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/favicon.ico -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/payload.js: -------------------------------------------------------------------------------- 1 | __NUXT_JSONP__("/", {data:[{}],fetch:{},mutations:[]}); -------------------------------------------------------------------------------- /docs/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/apple-icon.png -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/favicon.ico -------------------------------------------------------------------------------- /docs/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/favicon-16x16.png -------------------------------------------------------------------------------- /docs/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/favicon-32x32.png -------------------------------------------------------------------------------- /docs/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/favicon-96x96.png -------------------------------------------------------------------------------- /docs/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/ms-icon-70x70.png -------------------------------------------------------------------------------- /static/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/apple-icon.png -------------------------------------------------------------------------------- /docs/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/apple-icon-57x57.png -------------------------------------------------------------------------------- /docs/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/apple-icon-60x60.png -------------------------------------------------------------------------------- /docs/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/apple-icon-72x72.png -------------------------------------------------------------------------------- /docs/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/apple-icon-76x76.png -------------------------------------------------------------------------------- /docs/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/ms-icon-144x144.png -------------------------------------------------------------------------------- /docs/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/ms-icon-150x150.png -------------------------------------------------------------------------------- /docs/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/ms-icon-310x310.png -------------------------------------------------------------------------------- /docs/vuemmerce-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/vuemmerce-logo.png -------------------------------------------------------------------------------- /media/Vuemmerce-logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/media/Vuemmerce-logo.jpg -------------------------------------------------------------------------------- /static/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/favicon-16x16.png -------------------------------------------------------------------------------- /static/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/favicon-32x32.png -------------------------------------------------------------------------------- /static/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/favicon-96x96.png -------------------------------------------------------------------------------- /static/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/ms-icon-70x70.png -------------------------------------------------------------------------------- /static/vuemmerce-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/vuemmerce-logo.png -------------------------------------------------------------------------------- /docs/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/android-icon-36x36.png -------------------------------------------------------------------------------- /docs/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/android-icon-48x48.png -------------------------------------------------------------------------------- /docs/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/android-icon-72x72.png -------------------------------------------------------------------------------- /docs/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/android-icon-96x96.png -------------------------------------------------------------------------------- /docs/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/apple-icon-114x114.png -------------------------------------------------------------------------------- /docs/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/apple-icon-120x120.png -------------------------------------------------------------------------------- /docs/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/apple-icon-144x144.png -------------------------------------------------------------------------------- /docs/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/apple-icon-152x152.png -------------------------------------------------------------------------------- /docs/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/apple-icon-180x180.png -------------------------------------------------------------------------------- /static/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/apple-icon-57x57.png -------------------------------------------------------------------------------- /static/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/apple-icon-60x60.png -------------------------------------------------------------------------------- /static/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/apple-icon-72x72.png -------------------------------------------------------------------------------- /static/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/apple-icon-76x76.png -------------------------------------------------------------------------------- /static/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/ms-icon-144x144.png -------------------------------------------------------------------------------- /static/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/ms-icon-150x150.png -------------------------------------------------------------------------------- /static/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/ms-icon-310x310.png -------------------------------------------------------------------------------- /docs/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/android-icon-144x144.png -------------------------------------------------------------------------------- /docs/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/android-icon-192x192.png -------------------------------------------------------------------------------- /static/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/android-icon-36x36.png -------------------------------------------------------------------------------- /static/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/android-icon-48x48.png -------------------------------------------------------------------------------- /static/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/android-icon-72x72.png -------------------------------------------------------------------------------- /static/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/android-icon-96x96.png -------------------------------------------------------------------------------- /static/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/apple-icon-114x114.png -------------------------------------------------------------------------------- /static/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/apple-icon-120x120.png -------------------------------------------------------------------------------- /static/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/apple-icon-144x144.png -------------------------------------------------------------------------------- /static/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/apple-icon-152x152.png -------------------------------------------------------------------------------- /static/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/apple-icon-180x180.png -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/user/wishlist/payload.js: -------------------------------------------------------------------------------- 1 | __NUXT_JSONP__("/user/wishlist", {data:[{}],fetch:{},mutations:[]}); -------------------------------------------------------------------------------- /docs/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/apple-icon-precomposed.png -------------------------------------------------------------------------------- /static/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/android-icon-144x144.png -------------------------------------------------------------------------------- /static/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/android-icon-192x192.png -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/1/payload.js: -------------------------------------------------------------------------------- 1 | __NUXT_JSONP__("/product_detail/1", {data:[{}],fetch:{},mutations:[]}); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/2/payload.js: -------------------------------------------------------------------------------- 1 | __NUXT_JSONP__("/product_detail/2", {data:[{}],fetch:{},mutations:[]}); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/3/payload.js: -------------------------------------------------------------------------------- 1 | __NUXT_JSONP__("/product_detail/3", {data:[{}],fetch:{},mutations:[]}); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/4/payload.js: -------------------------------------------------------------------------------- 1 | __NUXT_JSONP__("/product_detail/4", {data:[{}],fetch:{},mutations:[]}); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/5/payload.js: -------------------------------------------------------------------------------- 1 | __NUXT_JSONP__("/product_detail/5", {data:[{}],fetch:{},mutations:[]}); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/6/payload.js: -------------------------------------------------------------------------------- 1 | __NUXT_JSONP__("/product_detail/6", {data:[{}],fetch:{},mutations:[]}); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/7/payload.js: -------------------------------------------------------------------------------- 1 | __NUXT_JSONP__("/product_detail/7", {data:[{}],fetch:{},mutations:[]}); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/8/payload.js: -------------------------------------------------------------------------------- 1 | __NUXT_JSONP__("/product_detail/8", {data:[{}],fetch:{},mutations:[]}); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/9/payload.js: -------------------------------------------------------------------------------- 1 | __NUXT_JSONP__("/product_detail/9", {data:[{}],fetch:{},mutations:[]}); -------------------------------------------------------------------------------- /static/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/static/apple-icon-precomposed.png -------------------------------------------------------------------------------- /docs/_nuxt/img/vuemmerce-logo.6809a10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frozen-dev71/Vuemmerce/main/docs/_nuxt/img/vuemmerce-logo.6809a10.png -------------------------------------------------------------------------------- /assets/filters.js: -------------------------------------------------------------------------------- 1 | export function getByTitle (list, keyword) { 2 | const search = keyword.trim().toLowerCase(); 3 | if (!search.length) return list; 4 | return list.filter(item => item.title.toLowerCase().indexOf(search) > -1); 5 | } -------------------------------------------------------------------------------- /assets/validators.js: -------------------------------------------------------------------------------- 1 | export function isValidEmail (email) { 2 | const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 3 | return re.test(email); 4 | } -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /docs/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff -------------------------------------------------------------------------------- /static/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | .nuxt 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw* 22 | -------------------------------------------------------------------------------- /plugins/README.md: -------------------------------------------------------------------------------- 1 | # PLUGINS 2 | 3 | **This directory is not required, you can delete it if you don't want to use it.** 4 | 5 | This directory contains Javascript plugins that you want to run before mounting the root Vue.js application. 6 | 7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/plugins). 8 | -------------------------------------------------------------------------------- /components/subheader/Subheader.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/manifest.js: -------------------------------------------------------------------------------- 1 | __NUXT_JSONP__("manifest.js", {routes:["\u002F","\u002Fuser\u002Fwishlist","\u002Fproduct_detail\u002F2","\u002Fproduct_detail\u002F5","\u002Fproduct_detail\u002F6","\u002Fproduct_detail\u002F7","\u002Fproduct_detail\u002F4","\u002Fproduct_detail\u002F3","\u002Fproduct_detail\u002F8","\u002Fproduct_detail\u002F9","\u002Fproduct_detail\u002F1"]}) -------------------------------------------------------------------------------- /components/hero/Hero.vue: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # STATIC 2 | 3 | **This directory is not required, you can delete it if you don't want to use it.** 4 | 5 | This directory contains your static files. 6 | Each file inside this directory is mapped to `/`. 7 | 8 | Example: `/static/robots.txt` is mapped as `/robots.txt`. 9 | 10 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#static). 11 | -------------------------------------------------------------------------------- /static/README.md: -------------------------------------------------------------------------------- 1 | # STATIC 2 | 3 | **This directory is not required, you can delete it if you don't want to use it.** 4 | 5 | This directory contains your static files. 6 | Each file inside this directory is mapped to `/`. 7 | 8 | Example: `/static/robots.txt` is mapped as `/robots.txt`. 9 | 10 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#static). 11 | -------------------------------------------------------------------------------- /store/README.md: -------------------------------------------------------------------------------- 1 | # STORE 2 | 3 | **This directory is not required, you can delete it if you don't want to use it.** 4 | 5 | This directory contains your Vuex Store files. 6 | Vuex Store option is implemented in the Nuxt.js framework. 7 | 8 | Creating a file in this directory automatically activates the option in the framework. 9 | 10 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/vuex-store). 11 | -------------------------------------------------------------------------------- /pages/index.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 23 | -------------------------------------------------------------------------------- /docs/_nuxt/LICENSES: -------------------------------------------------------------------------------- 1 | /*! 2 | * vue-router v3.5.2 3 | * (c) 2021 Evan You 4 | * @license MIT 5 | */ 6 | 7 | /*! 8 | * Vue.js v2.6.14 9 | * (c) 2014-2021 Evan You 10 | * Released under the MIT License. 11 | */ 12 | 13 | /*! 14 | * vuex v3.6.2 15 | * (c) 2021 Evan You 16 | * @license MIT 17 | */ 18 | 19 | 20 | /*! 21 | * vue-client-only v0.0.0-semantic-release 22 | * (c) 2021-present egoist <0x142857@gmail.com> 23 | * Released under the MIT License. 24 | */ 25 | 26 | /*! 27 | * vue-no-ssr v1.1.1 28 | * (c) 2018-present egoist <0x142857@gmail.com> 29 | * Released under the MIT License. 30 | */ 31 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: [ 3 | "./components/**/*.{js,vue,ts}", 4 | "./layouts/**/*.vue", 5 | "./pages/**/*.vue", 6 | "./plugins/**/*.{js,ts}", 7 | "./nuxt.config.{js,ts}", 8 | ], 9 | theme: { 10 | colors: { 11 | blue_light: '#b9e2fc', 12 | blue: '#51bafc', 13 | black: '#000000', 14 | white: '#ffffff', 15 | grey_light: '#edeaeb', 16 | grey_dark: '#515151', 17 | red: '#ed4f10', 18 | green: '#24e527', 19 | gold : '#f1c40f' 20 | 21 | }, 22 | extend: { 23 | boxShadow: { 24 | 'custom': '0 0px 3px 1px rgba(0, 0, 0, 0.08)', 25 | } 26 | } 27 | }, 28 | plugins: [], 29 | } 30 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /components/search/Search.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 43 | 44 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | // https://eslint.org/docs/user-guide/configuring 2 | 3 | module.exports = { 4 | root: true, 5 | parser: 'babel-eslint', 6 | parserOptions: { 7 | sourceType: 'module' 8 | }, 9 | env: { 10 | browser: true, 11 | }, 12 | extends: 'airbnb-base', 13 | // required to lint *.vue files 14 | plugins: [ 15 | 'html' 16 | ], 17 | // check if imports actually resolve 18 | 'settings': { 19 | 'import/resolver': { 20 | 'webpack': { 21 | 'config': 'build/webpack.base.conf.js' 22 | } 23 | } 24 | }, 25 | // add your custom rules here 26 | 'rules': { 27 | // don't require .vue extension when importing 28 | 'import/extensions': ['error', 'always', { 29 | 'js': 'never', 30 | 'vue': 'never' 31 | }], 32 | // allow optionalDependencies 33 | 'import/no-extraneous-dependencies': ['error', { 34 | 'optionalDependencies': ['test/unit/index.js'] 35 | }], 36 | // allow debugger during development 37 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, 38 | 'linebreak-style': 0 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Ivan Lori 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /docs/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "Vuemmerce", 3 | "name": "Vuemmerce", 4 | "icons": [ 5 | { 6 | "src": "\/android-icon-36x36.png", 7 | "sizes": "36x36", 8 | "type": "image\/png", 9 | "density": "0.75" 10 | }, 11 | { 12 | "src": "\/android-icon-48x48.png", 13 | "sizes": "48x48", 14 | "type": "image\/png", 15 | "density": "1.0" 16 | }, 17 | { 18 | "src": "\/android-icon-72x72.png", 19 | "sizes": "72x72", 20 | "type": "image\/png", 21 | "density": "1.5" 22 | }, 23 | { 24 | "src": "\/android-icon-96x96.png", 25 | "sizes": "96x96", 26 | "type": "image\/png", 27 | "density": "2.0" 28 | }, 29 | { 30 | "src": "\/android-icon-144x144.png", 31 | "sizes": "144x144", 32 | "type": "image\/png", 33 | "density": "3.0" 34 | }, 35 | { 36 | "src": "\/android-icon-192x192.png", 37 | "sizes": "192x192", 38 | "type": "image\/png", 39 | "density": "4.0" 40 | } 41 | ], 42 | "start_url": "/?source=pwa", 43 | "background_color": "#51bafc", 44 | "display": "standalone", 45 | "scope": "/", 46 | "theme_color": "#51bafc" 47 | } -------------------------------------------------------------------------------- /static/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "Vuemmerce", 3 | "name": "Vuemmerce", 4 | "icons": [ 5 | { 6 | "src": "\/android-icon-36x36.png", 7 | "sizes": "36x36", 8 | "type": "image\/png", 9 | "density": "0.75" 10 | }, 11 | { 12 | "src": "\/android-icon-48x48.png", 13 | "sizes": "48x48", 14 | "type": "image\/png", 15 | "density": "1.0" 16 | }, 17 | { 18 | "src": "\/android-icon-72x72.png", 19 | "sizes": "72x72", 20 | "type": "image\/png", 21 | "density": "1.5" 22 | }, 23 | { 24 | "src": "\/android-icon-96x96.png", 25 | "sizes": "96x96", 26 | "type": "image\/png", 27 | "density": "2.0" 28 | }, 29 | { 30 | "src": "\/android-icon-144x144.png", 31 | "sizes": "144x144", 32 | "type": "image\/png", 33 | "density": "3.0" 34 | }, 35 | { 36 | "src": "\/android-icon-192x192.png", 37 | "sizes": "192x192", 38 | "type": "image\/png", 39 | "density": "4.0" 40 | } 41 | ], 42 | "start_url": "/?source=pwa", 43 | "background_color": "#51bafc", 44 | "display": "standalone", 45 | "scope": "/", 46 | "theme_color": "#51bafc" 47 | } -------------------------------------------------------------------------------- /docs/sw.js: -------------------------------------------------------------------------------- 1 | importScripts('/_nuxt/workbox.4c4f5ca6.js') 2 | 3 | workbox.precaching.precacheAndRoute([ 4 | { 5 | "url": "/_nuxt/0e825988fd23cfd59176.js", 6 | "revision": "6901e7b20fd6777b2a8ad0ae8b0cb90e" 7 | }, 8 | { 9 | "url": "/_nuxt/119e06f47cd89b770181.js", 10 | "revision": "3632e3bc662cd615c004a0ef00b162cd" 11 | }, 12 | { 13 | "url": "/_nuxt/3edbda2ea11498514265.js", 14 | "revision": "3ee81d6f0f9af187405c8ddc463dd966" 15 | }, 16 | { 17 | "url": "/_nuxt/5c255fa57b9b2d9da0b9.js", 18 | "revision": "0258c3bd6a3f7f7619985f3ab9a70abc" 19 | }, 20 | { 21 | "url": "/_nuxt/5f5b6d3d8b632ae38685.js", 22 | "revision": "704e3c75118f7dc8d16c26fd10c4aa53" 23 | }, 24 | { 25 | "url": "/_nuxt/761a8ab4fe5f43cdf684.js", 26 | "revision": "0be2011eddf5b17916a5f032e78669c3" 27 | }, 28 | { 29 | "url": "/_nuxt/cec8e07344cfa58c7096.js", 30 | "revision": "29c510d8a276d4bf03753dcd9ac6d989" 31 | } 32 | ], { 33 | "cacheId": "vuemmerce", 34 | "directoryIndex": "/", 35 | "cleanUrls": false 36 | }) 37 | 38 | workbox.clientsClaim() 39 | workbox.skipWaiting() 40 | 41 | workbox.routing.registerRoute(new RegExp('/_nuxt/.*'), workbox.strategies.cacheFirst({}), 'GET') 42 | 43 | workbox.routing.registerRoute(new RegExp('/.*'), workbox.strategies.networkFirst({}), 'GET') 44 | -------------------------------------------------------------------------------- /static/sw.js: -------------------------------------------------------------------------------- 1 | importScripts('/_nuxt/workbox.4c4f5ca6.js') 2 | 3 | workbox.precaching.precacheAndRoute([ 4 | { 5 | "url": "/_nuxt/0e825988fd23cfd59176.js", 6 | "revision": "6901e7b20fd6777b2a8ad0ae8b0cb90e" 7 | }, 8 | { 9 | "url": "/_nuxt/119e06f47cd89b770181.js", 10 | "revision": "3632e3bc662cd615c004a0ef00b162cd" 11 | }, 12 | { 13 | "url": "/_nuxt/3edbda2ea11498514265.js", 14 | "revision": "3ee81d6f0f9af187405c8ddc463dd966" 15 | }, 16 | { 17 | "url": "/_nuxt/5c255fa57b9b2d9da0b9.js", 18 | "revision": "0258c3bd6a3f7f7619985f3ab9a70abc" 19 | }, 20 | { 21 | "url": "/_nuxt/5f5b6d3d8b632ae38685.js", 22 | "revision": "704e3c75118f7dc8d16c26fd10c4aa53" 23 | }, 24 | { 25 | "url": "/_nuxt/761a8ab4fe5f43cdf684.js", 26 | "revision": "0be2011eddf5b17916a5f032e78669c3" 27 | }, 28 | { 29 | "url": "/_nuxt/cec8e07344cfa58c7096.js", 30 | "revision": "29c510d8a276d4bf03753dcd9ac6d989" 31 | } 32 | ], { 33 | "cacheId": "vuemmerce", 34 | "directoryIndex": "/", 35 | "cleanUrls": false 36 | }) 37 | 38 | workbox.clientsClaim() 39 | workbox.skipWaiting() 40 | 41 | workbox.routing.registerRoute(new RegExp('/_nuxt/.*'), workbox.strategies.cacheFirst({}), 'GET') 42 | 43 | workbox.routing.registerRoute(new RegExp('/.*'), workbox.strategies.networkFirst({}), 'GET') 44 | -------------------------------------------------------------------------------- /components/products_list/ProductsListContainer.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 64 | -------------------------------------------------------------------------------- /pages/user/wishlist/index.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/state.js: -------------------------------------------------------------------------------- 1 | window.__NUXT__=(function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){return {staticAssetsBase:"\u002FVuemmerce\u002F_nuxt\u002Fstatic\u002F1651415609",layout:"default",error:k,state:{products:[{id:b,title:"Product 1",description:c,price:g,ratings:e,reviews:d,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:f,title:"Product 2",description:c,price:h,ratings:d,reviews:10,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:e,title:"Product 3",description:c,price:i,ratings:f,reviews:e,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:j,title:"Product 4",description:c,price:g,ratings:b,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:d,title:"Product 5",description:c,price:h,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:6,title:"Product 6",description:c,price:i,ratings:d,reviews:b,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:m,title:"Product 7",description:c,price:g,ratings:d,reviews:m,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:8,title:"Product 8",description:c,price:h,ratings:e,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:9,title:"Product 9",description:c,price:i,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b}],userInfo:{isLoggedIn:a,isSignedUp:a,hasSearched:a,name:n,productTitleSearched:n},systemInfo:{openLoginModal:a,openSignupModal:a,openCheckoutModal:a}},serverRendered:true,routePath:"\u002F",config:{_app:{basePath:"\u002FVuemmerce\u002F",assetsPath:"\u002FVuemmerce\u002F_nuxt\u002F",cdnURL:k}}}}(false,1,"Lorem ipsum dolor sit amet, consectetur adipiscing elit",5,3,2,50,35,110,4,null,0,7,"")); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vuemmerce", 3 | "version": "1.1.0", 4 | "description": "Ecommerce template built with Vue.js and Nuxt.js", 5 | "author": "ivan lori ", 6 | "scripts": { 7 | "dev": "nuxt", 8 | "build": "nuxt generate" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "https://github.com/ivanlori/Vuemmerce.git" 13 | }, 14 | "keywords": [ 15 | "css", 16 | "js", 17 | "html", 18 | "template", 19 | "ecommerce", 20 | "vuejs", 21 | "theme", 22 | "responsive", 23 | "nuxtjs" 24 | ], 25 | "license": "MIT", 26 | "dependencies": { 27 | "babel-polyfill": "^6.26.0", 28 | "babel-runtime": "^6.26.0", 29 | "nuxt": "^2.15.8", 30 | "vue": "^2.6.14", 31 | "vue-router": "^3.5.2", 32 | "vuex": "^3.6.2" 33 | }, 34 | "devDependencies": { 35 | "@babel/preset-env": "^7.14.8", 36 | "@nuxt/postcss8": "^1.1.3", 37 | "@vue/cli-plugin-babel": "^4.5.13", 38 | "@vue/cli-service": "^4.5.13", 39 | "autoprefixer": "^10.4.5", 40 | "babel-plugin-transform-runtime": "~6.23.0", 41 | "css-loader": "^6.7.1", 42 | "node-sass": "^7.0.1", 43 | "nuxt-purgecss": "^1.0.0", 44 | "postcss": "^8.4.13", 45 | "sass": "^1.51.0", 46 | "sass-loader": "^10", 47 | "tailwindcss": "^3.0.24", 48 | "vue-template-compiler": "^2.6.14" 49 | }, 50 | "eslintConfig": { 51 | "root": true, 52 | "env": { 53 | "node": true 54 | }, 55 | "extends": "plugin:vue/essential", 56 | "rules": {} 57 | }, 58 | "browserslist": [ 59 | "> 1%", 60 | "last 2 versions", 61 | "not ie <= 8" 62 | ] 63 | } 64 | -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/user/wishlist/state.js: -------------------------------------------------------------------------------- 1 | window.__NUXT__=(function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){return {staticAssetsBase:"\u002FVuemmerce\u002F_nuxt\u002Fstatic\u002F1651415609",layout:"default",error:k,state:{products:[{id:b,title:"Product 1",description:c,price:g,ratings:e,reviews:d,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:f,title:"Product 2",description:c,price:h,ratings:d,reviews:10,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:e,title:"Product 3",description:c,price:i,ratings:f,reviews:e,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:j,title:"Product 4",description:c,price:g,ratings:b,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:d,title:"Product 5",description:c,price:h,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:6,title:"Product 6",description:c,price:i,ratings:d,reviews:b,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:m,title:"Product 7",description:c,price:g,ratings:d,reviews:m,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:8,title:"Product 8",description:c,price:h,ratings:e,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:9,title:"Product 9",description:c,price:i,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b}],userInfo:{isLoggedIn:a,isSignedUp:a,hasSearched:a,name:n,productTitleSearched:n},systemInfo:{openLoginModal:a,openSignupModal:a,openCheckoutModal:a}},serverRendered:true,routePath:"\u002Fuser\u002Fwishlist",config:{_app:{basePath:"\u002FVuemmerce\u002F",assetsPath:"\u002FVuemmerce\u002F_nuxt\u002F",cdnURL:k}}}}(false,1,"Lorem ipsum dolor sit amet, consectetur adipiscing elit",5,3,2,50,35,110,4,null,0,7,"")); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/1/state.js: -------------------------------------------------------------------------------- 1 | window.__NUXT__=(function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){return {staticAssetsBase:"\u002FVuemmerce\u002F_nuxt\u002Fstatic\u002F1651415609",layout:"default",error:k,state:{products:[{id:b,title:"Product 1",description:c,price:g,ratings:e,reviews:d,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:f,title:"Product 2",description:c,price:h,ratings:d,reviews:10,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:e,title:"Product 3",description:c,price:i,ratings:f,reviews:e,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:j,title:"Product 4",description:c,price:g,ratings:b,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:d,title:"Product 5",description:c,price:h,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:6,title:"Product 6",description:c,price:i,ratings:d,reviews:b,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:m,title:"Product 7",description:c,price:g,ratings:d,reviews:m,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:8,title:"Product 8",description:c,price:h,ratings:e,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:9,title:"Product 9",description:c,price:i,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b}],userInfo:{isLoggedIn:a,isSignedUp:a,hasSearched:a,name:n,productTitleSearched:n},systemInfo:{openLoginModal:a,openSignupModal:a,openCheckoutModal:a}},serverRendered:true,routePath:"\u002Fproduct_detail\u002F1",config:{_app:{basePath:"\u002FVuemmerce\u002F",assetsPath:"\u002FVuemmerce\u002F_nuxt\u002F",cdnURL:k}}}}(false,1,"Lorem ipsum dolor sit amet, consectetur adipiscing elit",5,3,2,50,35,110,4,null,0,7,"")); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/2/state.js: -------------------------------------------------------------------------------- 1 | window.__NUXT__=(function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){return {staticAssetsBase:"\u002FVuemmerce\u002F_nuxt\u002Fstatic\u002F1651415609",layout:"default",error:k,state:{products:[{id:b,title:"Product 1",description:c,price:g,ratings:e,reviews:d,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:f,title:"Product 2",description:c,price:h,ratings:d,reviews:10,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:e,title:"Product 3",description:c,price:i,ratings:f,reviews:e,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:j,title:"Product 4",description:c,price:g,ratings:b,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:d,title:"Product 5",description:c,price:h,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:6,title:"Product 6",description:c,price:i,ratings:d,reviews:b,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:m,title:"Product 7",description:c,price:g,ratings:d,reviews:m,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:8,title:"Product 8",description:c,price:h,ratings:e,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:9,title:"Product 9",description:c,price:i,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b}],userInfo:{isLoggedIn:a,isSignedUp:a,hasSearched:a,name:n,productTitleSearched:n},systemInfo:{openLoginModal:a,openSignupModal:a,openCheckoutModal:a}},serverRendered:true,routePath:"\u002Fproduct_detail\u002F2",config:{_app:{basePath:"\u002FVuemmerce\u002F",assetsPath:"\u002FVuemmerce\u002F_nuxt\u002F",cdnURL:k}}}}(false,1,"Lorem ipsum dolor sit amet, consectetur adipiscing elit",5,3,2,50,35,110,4,null,0,7,"")); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/3/state.js: -------------------------------------------------------------------------------- 1 | window.__NUXT__=(function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){return {staticAssetsBase:"\u002FVuemmerce\u002F_nuxt\u002Fstatic\u002F1651415609",layout:"default",error:k,state:{products:[{id:b,title:"Product 1",description:c,price:g,ratings:e,reviews:d,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:f,title:"Product 2",description:c,price:h,ratings:d,reviews:10,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:e,title:"Product 3",description:c,price:i,ratings:f,reviews:e,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:j,title:"Product 4",description:c,price:g,ratings:b,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:d,title:"Product 5",description:c,price:h,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:6,title:"Product 6",description:c,price:i,ratings:d,reviews:b,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:m,title:"Product 7",description:c,price:g,ratings:d,reviews:m,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:8,title:"Product 8",description:c,price:h,ratings:e,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:9,title:"Product 9",description:c,price:i,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b}],userInfo:{isLoggedIn:a,isSignedUp:a,hasSearched:a,name:n,productTitleSearched:n},systemInfo:{openLoginModal:a,openSignupModal:a,openCheckoutModal:a}},serverRendered:true,routePath:"\u002Fproduct_detail\u002F3",config:{_app:{basePath:"\u002FVuemmerce\u002F",assetsPath:"\u002FVuemmerce\u002F_nuxt\u002F",cdnURL:k}}}}(false,1,"Lorem ipsum dolor sit amet, consectetur adipiscing elit",5,3,2,50,35,110,4,null,0,7,"")); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/4/state.js: -------------------------------------------------------------------------------- 1 | window.__NUXT__=(function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){return {staticAssetsBase:"\u002FVuemmerce\u002F_nuxt\u002Fstatic\u002F1651415609",layout:"default",error:k,state:{products:[{id:b,title:"Product 1",description:c,price:g,ratings:e,reviews:d,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:f,title:"Product 2",description:c,price:h,ratings:d,reviews:10,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:e,title:"Product 3",description:c,price:i,ratings:f,reviews:e,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:j,title:"Product 4",description:c,price:g,ratings:b,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:d,title:"Product 5",description:c,price:h,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:6,title:"Product 6",description:c,price:i,ratings:d,reviews:b,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:m,title:"Product 7",description:c,price:g,ratings:d,reviews:m,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:8,title:"Product 8",description:c,price:h,ratings:e,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:9,title:"Product 9",description:c,price:i,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b}],userInfo:{isLoggedIn:a,isSignedUp:a,hasSearched:a,name:n,productTitleSearched:n},systemInfo:{openLoginModal:a,openSignupModal:a,openCheckoutModal:a}},serverRendered:true,routePath:"\u002Fproduct_detail\u002F4",config:{_app:{basePath:"\u002FVuemmerce\u002F",assetsPath:"\u002FVuemmerce\u002F_nuxt\u002F",cdnURL:k}}}}(false,1,"Lorem ipsum dolor sit amet, consectetur adipiscing elit",5,3,2,50,35,110,4,null,0,7,"")); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/5/state.js: -------------------------------------------------------------------------------- 1 | window.__NUXT__=(function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){return {staticAssetsBase:"\u002FVuemmerce\u002F_nuxt\u002Fstatic\u002F1651415609",layout:"default",error:k,state:{products:[{id:b,title:"Product 1",description:c,price:g,ratings:e,reviews:d,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:f,title:"Product 2",description:c,price:h,ratings:d,reviews:10,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:e,title:"Product 3",description:c,price:i,ratings:f,reviews:e,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:j,title:"Product 4",description:c,price:g,ratings:b,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:d,title:"Product 5",description:c,price:h,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:6,title:"Product 6",description:c,price:i,ratings:d,reviews:b,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:m,title:"Product 7",description:c,price:g,ratings:d,reviews:m,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:8,title:"Product 8",description:c,price:h,ratings:e,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:9,title:"Product 9",description:c,price:i,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b}],userInfo:{isLoggedIn:a,isSignedUp:a,hasSearched:a,name:n,productTitleSearched:n},systemInfo:{openLoginModal:a,openSignupModal:a,openCheckoutModal:a}},serverRendered:true,routePath:"\u002Fproduct_detail\u002F5",config:{_app:{basePath:"\u002FVuemmerce\u002F",assetsPath:"\u002FVuemmerce\u002F_nuxt\u002F",cdnURL:k}}}}(false,1,"Lorem ipsum dolor sit amet, consectetur adipiscing elit",5,3,2,50,35,110,4,null,0,7,"")); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/6/state.js: -------------------------------------------------------------------------------- 1 | window.__NUXT__=(function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){return {staticAssetsBase:"\u002FVuemmerce\u002F_nuxt\u002Fstatic\u002F1651415609",layout:"default",error:k,state:{products:[{id:b,title:"Product 1",description:c,price:g,ratings:e,reviews:d,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:f,title:"Product 2",description:c,price:h,ratings:d,reviews:10,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:e,title:"Product 3",description:c,price:i,ratings:f,reviews:e,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:j,title:"Product 4",description:c,price:g,ratings:b,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:d,title:"Product 5",description:c,price:h,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:6,title:"Product 6",description:c,price:i,ratings:d,reviews:b,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:m,title:"Product 7",description:c,price:g,ratings:d,reviews:m,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:8,title:"Product 8",description:c,price:h,ratings:e,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:9,title:"Product 9",description:c,price:i,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b}],userInfo:{isLoggedIn:a,isSignedUp:a,hasSearched:a,name:n,productTitleSearched:n},systemInfo:{openLoginModal:a,openSignupModal:a,openCheckoutModal:a}},serverRendered:true,routePath:"\u002Fproduct_detail\u002F6",config:{_app:{basePath:"\u002FVuemmerce\u002F",assetsPath:"\u002FVuemmerce\u002F_nuxt\u002F",cdnURL:k}}}}(false,1,"Lorem ipsum dolor sit amet, consectetur adipiscing elit",5,3,2,50,35,110,4,null,0,7,"")); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/7/state.js: -------------------------------------------------------------------------------- 1 | window.__NUXT__=(function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){return {staticAssetsBase:"\u002FVuemmerce\u002F_nuxt\u002Fstatic\u002F1651415609",layout:"default",error:k,state:{products:[{id:b,title:"Product 1",description:c,price:g,ratings:e,reviews:d,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:f,title:"Product 2",description:c,price:h,ratings:d,reviews:10,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:e,title:"Product 3",description:c,price:i,ratings:f,reviews:e,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:j,title:"Product 4",description:c,price:g,ratings:b,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:d,title:"Product 5",description:c,price:h,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:6,title:"Product 6",description:c,price:i,ratings:d,reviews:b,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:m,title:"Product 7",description:c,price:g,ratings:d,reviews:m,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:8,title:"Product 8",description:c,price:h,ratings:e,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:9,title:"Product 9",description:c,price:i,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b}],userInfo:{isLoggedIn:a,isSignedUp:a,hasSearched:a,name:n,productTitleSearched:n},systemInfo:{openLoginModal:a,openSignupModal:a,openCheckoutModal:a}},serverRendered:true,routePath:"\u002Fproduct_detail\u002F7",config:{_app:{basePath:"\u002FVuemmerce\u002F",assetsPath:"\u002FVuemmerce\u002F_nuxt\u002F",cdnURL:k}}}}(false,1,"Lorem ipsum dolor sit amet, consectetur adipiscing elit",5,3,2,50,35,110,4,null,0,7,"")); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/8/state.js: -------------------------------------------------------------------------------- 1 | window.__NUXT__=(function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){return {staticAssetsBase:"\u002FVuemmerce\u002F_nuxt\u002Fstatic\u002F1651415609",layout:"default",error:k,state:{products:[{id:b,title:"Product 1",description:c,price:g,ratings:e,reviews:d,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:f,title:"Product 2",description:c,price:h,ratings:d,reviews:10,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:e,title:"Product 3",description:c,price:i,ratings:f,reviews:e,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:j,title:"Product 4",description:c,price:g,ratings:b,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:d,title:"Product 5",description:c,price:h,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:6,title:"Product 6",description:c,price:i,ratings:d,reviews:b,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:m,title:"Product 7",description:c,price:g,ratings:d,reviews:m,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:8,title:"Product 8",description:c,price:h,ratings:e,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:9,title:"Product 9",description:c,price:i,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b}],userInfo:{isLoggedIn:a,isSignedUp:a,hasSearched:a,name:n,productTitleSearched:n},systemInfo:{openLoginModal:a,openSignupModal:a,openCheckoutModal:a}},serverRendered:true,routePath:"\u002Fproduct_detail\u002F8",config:{_app:{basePath:"\u002FVuemmerce\u002F",assetsPath:"\u002FVuemmerce\u002F_nuxt\u002F",cdnURL:k}}}}(false,1,"Lorem ipsum dolor sit amet, consectetur adipiscing elit",5,3,2,50,35,110,4,null,0,7,"")); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/9/state.js: -------------------------------------------------------------------------------- 1 | window.__NUXT__=(function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){return {staticAssetsBase:"\u002FVuemmerce\u002F_nuxt\u002Fstatic\u002F1651415609",layout:"default",error:k,state:{products:[{id:b,title:"Product 1",description:c,price:g,ratings:e,reviews:d,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:f,title:"Product 2",description:c,price:h,ratings:d,reviews:10,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:e,title:"Product 3",description:c,price:i,ratings:f,reviews:e,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:j,title:"Product 4",description:c,price:g,ratings:b,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:d,title:"Product 5",description:c,price:h,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:6,title:"Product 6",description:c,price:i,ratings:d,reviews:b,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:m,title:"Product 7",description:c,price:g,ratings:d,reviews:m,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:8,title:"Product 8",description:c,price:h,ratings:e,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:9,title:"Product 9",description:c,price:i,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b}],userInfo:{isLoggedIn:a,isSignedUp:a,hasSearched:a,name:n,productTitleSearched:n},systemInfo:{openLoginModal:a,openSignupModal:a,openCheckoutModal:a}},serverRendered:true,routePath:"\u002Fproduct_detail\u002F9",config:{_app:{basePath:"\u002FVuemmerce\u002F",assetsPath:"\u002FVuemmerce\u002F_nuxt\u002F",cdnURL:k}}}}(false,1,"Lorem ipsum dolor sit amet, consectetur adipiscing elit",5,3,2,50,35,110,4,null,0,7,"")); -------------------------------------------------------------------------------- /docs/_nuxt/static/1651415609/product_detail/state.js: -------------------------------------------------------------------------------- 1 | window.__NUXT__=(function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){return {staticAssetsBase:"\u002FVuemmerce\u002F_nuxt\u002Fstatic\u002F1651415609",layout:"default",error:{statusCode:404,path:k,message:"This page could not be found"},state:{products:[{id:b,title:"Product 1",description:c,price:g,ratings:e,reviews:d,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:f,title:"Product 2",description:c,price:h,ratings:d,reviews:10,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:e,title:"Product 3",description:c,price:i,ratings:f,reviews:e,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:j,title:"Product 4",description:c,price:g,ratings:b,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:d,title:"Product 5",description:c,price:h,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:6,title:"Product 6",description:c,price:i,ratings:d,reviews:b,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:m,title:"Product 7",description:c,price:g,ratings:d,reviews:m,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:8,title:"Product 8",description:c,price:h,ratings:e,reviews:l,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b},{id:9,title:"Product 9",description:c,price:i,ratings:j,reviews:f,isAddedToCart:a,isAddedBtn:a,isFavourite:a,quantity:b}],userInfo:{isLoggedIn:a,isSignedUp:a,hasSearched:a,name:n,productTitleSearched:n},systemInfo:{openLoginModal:a,openSignupModal:a,openCheckoutModal:a}},serverRendered:a,routePath:k,config:{_app:{basePath:"\u002FVuemmerce\u002F",assetsPath:"\u002FVuemmerce\u002F_nuxt\u002F",cdnURL:null}}}}(false,1,"Lorem ipsum dolor sit amet, consectetur adipiscing elit",5,3,2,50,35,110,4,"\u002Fproduct_detail",0,7,"")); -------------------------------------------------------------------------------- /layouts/default.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 31 | 32 | 85 | -------------------------------------------------------------------------------- /pages/product_detail/_id.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 80 | 81 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | Vuemmerce – Ecommerce Template 6 |

7 |

8 | Ecommerce template built with VueJs and NuxtJs 9 |

10 |

11 | GitHub issues 12 | GitHub forks 13 | GitHub stars 14 | GitHub license 15 |

16 | 17 |

18 | Check the DEMO out! 19 |

20 | 21 | ## 🚀 Installation 22 | 23 | ``` 24 | 25 | # clone repository 26 | git clone https://github.com/ivanlori/Vuemmerce.git 27 | 28 | # install dependencies 29 | yarn install 30 | 31 | # serve with hot reload at localhost:3000 32 | yarn dev 33 | 34 | # generate static pages via nuxt.js for static hosting 35 | yarn build 36 | ``` 37 | 38 | ## 🐛 Bugs 39 | 40 | Have you found a bug? Feel free to open an issue here. 41 | 42 | ## 🙋 Discussions 43 | 44 | Do you have questions, ideas or any request related to Vuemmerce? Start a discussion here. 45 | 46 | ## 📌 Changelog 47 | 48 | See the release notes into [changelog.md](changelog.md) 49 | 50 | ## 🏷️ License 51 | 52 | This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details 53 | 54 | ## 📣 Sveltemmerce is here 55 | 56 | Searching an ecommerce template built with SvelteJs? 57 | Check [Sveltemmerce](https://github.com/ivanlori/Sveltemmerce) out! 58 | -------------------------------------------------------------------------------- /docs/_nuxt/e6bdf6b.js: -------------------------------------------------------------------------------- 1 | !function(e){function r(data){for(var r,n,l=data[0],f=data[1],d=data[2],i=0,h=[];i 2 |
3 | 4 | 31 |
32 | 33 | 34 | 120 | 121 | 128 | -------------------------------------------------------------------------------- /components/header/Header.vue: -------------------------------------------------------------------------------- 1 | 52 | 53 | 122 | 123 | 149 | -------------------------------------------------------------------------------- /nuxt.config.js: -------------------------------------------------------------------------------- 1 | const pkg = require("./package"); 2 | const path = require('path') 3 | 4 | module.exports = { 5 | target: "static", 6 | 7 | router: { 8 | base: "/Vuemmerce/" 9 | }, 10 | 11 | /* 12 | ** Headers of the page 13 | */ 14 | head: { 15 | title: pkg.description, 16 | meta: [ 17 | { charset: "utf-8" }, 18 | { name: "viewport", content: "width=device-width, initial-scale=1" }, 19 | { hid: "description", name: "description", content: pkg.description }, 20 | { "http-equiv": "x-ua-compatible", content: "ie=edge" }, 21 | { name: "msapplication-TileColor", content: "#ffffff" }, 22 | { name: "msapplication-TileImage", content: "/ms-icon-144x144.png" }, 23 | { name: "theme-color", content: "#ffffff" }, 24 | 25 | // Facebook open graph 26 | { property: "og:type", content: "website" }, 27 | { property: "og:url", content: "https://example.com/page.html" }, 28 | { property: "og:title", content: "Content Title" }, 29 | { property: "og:image", content: "https://example.com/image.jpg" }, 30 | { property: "og:description", content: "Description Here" }, 31 | { property: "og:site_name", content: "Site Name" }, 32 | { property: "og:locale", content: "en_US" }, 33 | 34 | // Twitter card 35 | { property: "twitter:card", content: "summary" }, 36 | { property: "twitter:site", content: "@site_account" }, 37 | { property: "twitter:creator", content: "@individual_account" }, 38 | { property: "twitter:url", content: "https://example.com/page.html" }, 39 | { property: "twitter:title", content: "Content Title" }, 40 | { 41 | property: "twitter:description", 42 | content: "Content description less than 200 characters" 43 | }, 44 | { property: "twitter:image", content: "https://example.com/image.jpg" } 45 | ], 46 | link: [ 47 | { rel: "icon", type: "image/x-icon", href: "/favicon.ico" }, 48 | { 49 | rel: "icon", 50 | type: "image/png", 51 | sizes: "192x192", 52 | href: "/android-icon-192x192.png" 53 | }, 54 | { 55 | rel: "icon", 56 | type: "image/png", 57 | sizes: "96x96", 58 | href: "/favicon-96x96.png" 59 | }, 60 | { 61 | rel: "icon", 62 | type: "image/png", 63 | sizes: "16x16", 64 | href: "/favicon-16x16.png" 65 | }, 66 | { 67 | rel: "apple-touch-icon", 68 | sizes: "57x57", 69 | href: "/apple-icon-57x57.png" 70 | }, 71 | { 72 | rel: "apple-touch-icon", 73 | sizes: "60x60", 74 | href: "/apple-icon-60x60.png" 75 | }, 76 | { 77 | rel: "apple-touch-icon", 78 | sizes: "72x72", 79 | href: "/apple-icon-72x72.png" 80 | }, 81 | { 82 | rel: "apple-touch-icon", 83 | sizes: "76x76", 84 | href: "/apple-icon-76x76.png" 85 | }, 86 | { 87 | rel: "apple-touch-icon", 88 | sizes: "114x114", 89 | href: "/apple-icon-114x114.png" 90 | }, 91 | { 92 | rel: "apple-touch-icon", 93 | sizes: "120x120", 94 | href: "/apple-icon-120x120.png" 95 | }, 96 | { 97 | rel: "apple-touch-icon", 98 | sizes: "144x144", 99 | href: "/apple-icon-144x144.png" 100 | }, 101 | { 102 | rel: "apple-touch-icon", 103 | sizes: "152x152", 104 | href: "/apple-icon-152x152.png" 105 | }, 106 | { 107 | rel: "apple-touch-icon", 108 | sizes: "180x180", 109 | href: "/apple-icon-180x180.png" 110 | }, 111 | { 112 | rel: "stylesheet", 113 | href: 114 | "https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons" 115 | }, 116 | { 117 | rel: "stylesheet", 118 | integrity: 119 | "sha384-AYmEC3Yw5cVb3ZcuHtOA93w35dYTsvhLPVnYs9eStHfGJvOvKxVfELGroGkvsg+p", 120 | crossorigin: "anonymous", 121 | href: "https://pro.fontawesome.com/releases/v5.10.0/css/all.css" 122 | } 123 | ] 124 | }, 125 | 126 | /* 127 | ** Customize the progress-bar color 128 | */ 129 | loading: { color: "#fff" }, 130 | 131 | /* 132 | ** Global CSS 133 | */ 134 | css: ['@/assets/css/main.css'], 135 | 136 | /* 137 | ** Plugins to load before mounting the App 138 | */ 139 | plugins: [], 140 | 141 | /* 142 | ** Nuxt.js modules 143 | */ 144 | modules: [ 145 | '@nuxt/postcss8', 146 | 'nuxt-purgecss', 147 | ], 148 | /* 149 | ** Axios module configuration 150 | */ 151 | axios: { 152 | // See https://github.com/nuxt-community/axios-module#options 153 | }, 154 | 155 | generate: { 156 | dir: "docs" 157 | }, 158 | 159 | purgeCSS: { 160 | mode: 'postcss', 161 | enabled: (process.env.NODE_ENV === 'production') 162 | }, 163 | 164 | build: { 165 | postcss: { 166 | plugins: { 167 | tailwindcss: path.resolve(__dirname, './tailwind.config.js'), 168 | 'postcss-import': {}, 169 | 'postcss-nested': {} 170 | }, 171 | }, 172 | } 173 | }; 174 | -------------------------------------------------------------------------------- /components/modal/Login.vue: -------------------------------------------------------------------------------- 1 | 53 | 54 | 141 | 142 | 150 | 151 | 152 | -------------------------------------------------------------------------------- /docs/200.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Ecommerce template built with Vue.js and Nuxt.js 5 | 6 | 7 |
Loading...
8 | 9 | 10 | -------------------------------------------------------------------------------- /components/Products.vue: -------------------------------------------------------------------------------- 1 | 78 | 79 | 151 | 152 | 175 | -------------------------------------------------------------------------------- /components/footer/Footer.vue: -------------------------------------------------------------------------------- 1 | 84 | 85 | 90 | 91 | 101 | -------------------------------------------------------------------------------- /store/index.js: -------------------------------------------------------------------------------- 1 | export const state = () => ({ 2 | products: [ 3 | { 4 | id: 1, 5 | title: 'Product 1', 6 | description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', 7 | price: 50, 8 | ratings: 3, 9 | reviews: 5, 10 | isAddedToCart: false, 11 | isAddedBtn: false, 12 | isFavourite: false, 13 | quantity: 1 14 | }, 15 | { 16 | id: 2, 17 | title: 'Product 2', 18 | description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', 19 | price: 35, 20 | ratings: 5, 21 | reviews: 10, 22 | isAddedToCart: false, 23 | isAddedBtn: false, 24 | isFavourite: false, 25 | quantity: 1 26 | }, 27 | { 28 | id: 3, 29 | title: 'Product 3', 30 | description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', 31 | price: 110, 32 | ratings: 2, 33 | reviews: 3, 34 | isAddedToCart: false, 35 | isAddedBtn: false, 36 | isFavourite: false, 37 | quantity: 1 38 | }, 39 | { 40 | id: 4, 41 | title: 'Product 4', 42 | description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', 43 | price: 50, 44 | ratings: 1, 45 | reviews: 0, 46 | isAddedToCart: false, 47 | isAddedBtn: false, 48 | isFavourite: false, 49 | quantity: 1 50 | }, 51 | { 52 | id: 5, 53 | title: 'Product 5', 54 | description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', 55 | price: 35, 56 | ratings: 4, 57 | reviews: 2, 58 | isAddedToCart: false, 59 | isAddedBtn: false, 60 | isFavourite: false, 61 | quantity: 1 62 | }, 63 | { 64 | id: 6, 65 | title: 'Product 6', 66 | description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', 67 | price: 110, 68 | ratings: 5, 69 | reviews: 1, 70 | isAddedToCart: false, 71 | isAddedBtn: false, 72 | isFavourite: false, 73 | quantity: 1 74 | }, 75 | { 76 | id: 7, 77 | title: 'Product 7', 78 | description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', 79 | price: 50, 80 | ratings: 5, 81 | reviews: 7, 82 | isAddedToCart: false, 83 | isAddedBtn: false, 84 | isFavourite: false, 85 | quantity: 1 86 | }, 87 | { 88 | id: 8, 89 | title: 'Product 8', 90 | description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', 91 | price: 35, 92 | ratings: 3, 93 | reviews: 0, 94 | isAddedToCart: false, 95 | isAddedBtn: false, 96 | isFavourite: false, 97 | quantity: 1 98 | }, 99 | { 100 | id: 9, 101 | title: 'Product 9', 102 | description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', 103 | price: 110, 104 | ratings: 4, 105 | reviews: 2, 106 | isAddedToCart: false, 107 | isAddedBtn: false, 108 | isFavourite: false, 109 | quantity: 1 110 | } 111 | ], 112 | userInfo: { 113 | isLoggedIn: false, 114 | isSignedUp: false, 115 | hasSearched: false, 116 | name: '', 117 | productTitleSearched: '' 118 | }, 119 | systemInfo: { 120 | openLoginModal: false, 121 | openSignupModal: false, 122 | openCheckoutModal: false 123 | } 124 | }) 125 | 126 | export const getters = { 127 | productsAdded: state => { 128 | return state.products.filter(el => { 129 | return el.isAddedToCart; 130 | }); 131 | }, 132 | productsAddedToFavourite: state => { 133 | return state.products.filter(el => { 134 | return el.isFavourite; 135 | }); 136 | }, 137 | getProductById: state => id => { 138 | return state.products.find(product => product.id == id); 139 | }, 140 | isUserLoggedIn: state => { 141 | return state.userInfo.isLoggedIn; 142 | }, 143 | isUserSignedUp: state => { 144 | return state.userInfo.isSignedUp; 145 | }, 146 | getUserName: state => { 147 | return state.userInfo.name; 148 | }, 149 | isLoginModalOpen: state => { 150 | return state.systemInfo.openLoginModal; 151 | }, 152 | isSignupModalOpen: state => { 153 | return state.systemInfo.openSignupModal; 154 | }, 155 | isCheckoutModalOpen: state => { 156 | return state.systemInfo.openCheckoutModal; 157 | }, 158 | quantity: state => { 159 | return state.products.quantity; 160 | } 161 | } 162 | 163 | export const mutations = { 164 | addToCart: (state, id) => { 165 | state.products.forEach(el => { 166 | if (id === el.id) { 167 | el.isAddedToCart = true; 168 | } 169 | }); 170 | }, 171 | setAddedBtn: (state, data) => { 172 | state.products.forEach(el => { 173 | if (data.id === el.id) { 174 | el.isAddedBtn = data.status; 175 | } 176 | }); 177 | }, 178 | removeFromCart: (state, id) => { 179 | state.products.forEach(el => { 180 | if (id === el.id) { 181 | el.isAddedToCart = false; 182 | } 183 | }); 184 | }, 185 | removeProductsFromFavourite: state => { 186 | state.products.filter(el => { 187 | el.isFavourite = false; 188 | }); 189 | }, 190 | isUserLoggedIn: (state, isUserLoggedIn) => { 191 | state.userInfo.isLoggedIn = isUserLoggedIn; 192 | }, 193 | isUserSignedUp: (state, isSignedUp) => { 194 | state.userInfo.isSignedUp = isSignedUp; 195 | }, 196 | setHasUserSearched: (state, hasSearched) => { 197 | state.userInfo.hasSearched = hasSearched; 198 | }, 199 | setUserName: (state, name) => { 200 | state.userInfo.name = name; 201 | }, 202 | setProductTitleSearched: (state, titleSearched) => { 203 | state.userInfo.productTitleSearched = titleSearched; 204 | }, 205 | showLoginModal: (state, show) => { 206 | state.systemInfo.openLoginModal = show; 207 | }, 208 | showSignupModal: (state, show) => { 209 | state.systemInfo.openSignupModal = show; 210 | }, 211 | showCheckoutModal: (state, show) => { 212 | state.systemInfo.openCheckoutModal = show; 213 | }, 214 | addToFavourite: (state, id) => { 215 | state.products.forEach(el => { 216 | if (id === el.id) { 217 | el.isFavourite = true; 218 | } 219 | }); 220 | }, 221 | removeFromFavourite: (state, id) => { 222 | state.products.forEach(el => { 223 | if (id === el.id) { 224 | el.isFavourite = false; 225 | } 226 | }); 227 | }, 228 | quantity: (state, data) => { 229 | state.products.forEach(el => { 230 | if (data.id === el.id) { 231 | el.quantity = data.quantity; 232 | } 233 | }); 234 | }, 235 | SET_USER(state, authUser) { 236 | state.authUser = authUser 237 | } 238 | } 239 | /* 240 | export const actions = { 241 | async nuxtServerInit({ commit }) { 242 | const res = await this.$axios.get("/api/current_user") 243 | commit("SET_USER", res.data) 244 | }, 245 | 246 | async logout({ commit }) { 247 | const { data } = await this.$axios.get("/api/logout") 248 | if (data.ok) commit("SET_USER", null) 249 | }, 250 | 251 | async handleToken({ commit }, token) { 252 | const res = await this.$axios.post("/api/stripe", token) 253 | commit("SET_USER", res.data) 254 | } 255 | } */ 256 | -------------------------------------------------------------------------------- /components/modal/Signup.vue: -------------------------------------------------------------------------------- 1 | 72 | 73 | 204 | 205 | 213 | 214 | 215 | -------------------------------------------------------------------------------- /docs/_nuxt/e2c4646.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[3],{188:function(t,e,r){var content=r(190);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[t.i,content,""]]),content.locals&&(t.exports=content.locals);(0,r(19).default)("55699728",content,!0,{sourceMap:!1})},189:function(t,e,r){"use strict";r(188)},190:function(t,e,r){var o=r(18)((function(i){return i[1]}));o.push([t.i,".detail[data-v-8bd4d122]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}@media (min-width: 1024px){.detail[data-v-8bd4d122]{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.detail[data-v-8bd4d122]{margin:1.25rem;--tw-shadow:0 25px 50px -12px rgb(0 0 0 / 0.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);-webkit-box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.detail .img-wrapper[data-v-8bd4d122]{-webkit-box-flex:1;-ms-flex:1;flex:1}@media (min-width: 1024px){.detail .img-wrapper img[data-v-8bd4d122]{border-radius:0px;border-top-left-radius:1rem;border-bottom-left-radius:1rem}}.detail .text-wrapper[data-v-8bd4d122]{-webkit-box-flex:2;-ms-flex:2;flex:2}",""]),o.locals={},t.exports=o},191:function(t,e,r){"use strict";var o={name:"products",props:["product","detail"],data:function(){return{addToCartLabel:"Add to cart",viewDetailsLabel:"Details",removeFromCartLabel:"Remove from cart",addToFavouriteLabel:"Add to favourite",removeFromFavouriteLabel:"Remove from favourite",selected:1,quantityArray:[]}},mounted:function(){for(var i=1;i<=20;i++)this.quantityArray.push(i);this.$props.product.quantity>1&&(this.selected=this.$props.product.quantity)},computed:{isUserLogged:function(){return this.$store.getters.isUserLoggedIn}},methods:{addToCart:function(t){var data={id:t,status:!0};this.$store.commit("addToCart",t),this.$store.commit("setAddedBtn",data)},removeFromCart:function(t){var data={id:t,status:!1};this.$store.commit("removeFromCart",t),this.$store.commit("setAddedBtn",data)},saveToFavorite:function(t){this.$store.state.userInfo.isLoggedIn?this.$store.commit("addToFavourite",t):this.$store.commit("showLoginModal",!0)},removeFromFavourite:function(t){this.$store.commit("removeFromFavourite",t)},onSelectQuantity:function(t){var data={id:t,quantity:this.selected};this.$store.commit("quantity",data)}}},d=(r(189),r(6)),component=Object(d.a)(o,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"rounded-2xl shadow-xl shadow-slate-300/60",class:[t.detail?"detail":""]},[r("div",{staticClass:"img-wrapper rounded-t-2xl"},[r("nuxt-link",{attrs:{to:{name:"product_detail-id",params:{id:t.product.id,title:t.product.title,price:t.product.price,rating:t.product.ratings,reviews:t.product.reviews,isAddedBtn:t.product.isAddedBtn}}}},[r("img",{staticClass:"rounded-t-2xl",attrs:{src:"https://bulma.io/images/placeholders/1280x960.png",alt:"Placeholder image"}})])],1),t._v(" "),r("div",{staticClass:"text-wrapper p-4"},[r("div",{staticClass:"flex items-center justify-between mb-3"},[r("div",{staticClass:"media-content"},[r("nuxt-link",{attrs:{to:{name:"product_detail-id",params:{id:t.product.id,title:t.product.title,price:t.product.price,rating:t.product.ratings,reviews:t.product.reviews,isAddedBtn:t.product.isAddedBtn}}}},[r("span",{class:[t.detail?"text-3xl":"text-lg"]},[t._v(t._s(t.product.title))])])],1),t._v(" "),r("button",{directives:[{name:"show",rawName:"v-show",value:t.product.isFavourite,expression:"product.isFavourite"}],staticClass:"button text-lg",attrs:{title:t.removeFromFavouriteLabel},on:{click:function(e){return t.removeFromFavourite(t.product.id)}}},[t._m(0)]),t._v(" "),r("button",{directives:[{name:"show",rawName:"v-show",value:!t.product.isFavourite,expression:"!product.isFavourite"}],staticClass:"button text-lg",attrs:{title:t.addToFavouriteLabel},on:{click:function(e){return t.saveToFavorite(t.product.id)}}},[t._m(1)])]),t._v(" "),r("div",{staticClass:"content is-clearfix"},[r("p",{class:[t.detail?"text-2xl":"text-base"]},[t._v(t._s(t.product.description))]),t._v(" "),r("div",{staticClass:"flex justify-between"},[r("div",{staticClass:"flex items-center"},[1===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),2===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),2===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),3===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),3===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),3===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),4===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),4===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),4===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),4===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),5===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),5===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),5===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),5===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),5===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),r("p",{staticClass:"ml-2 text-lg"},[t._v(t._s(t.product.reviews>0?t.product.reviews+" Reviews":"No reviews"))])]),t._v(" "),r("p",{staticClass:"text-3xl font-medium"},[r("strong",[t._v("€ "+t._s(t.product.price))])])]),t._v(" "),r("div",{staticClass:"flex justify-between mt-5 items-center"},[r("select",{directives:[{name:"model",rawName:"v-model",value:t.selected,expression:"selected"}],staticClass:"p-2 border-2 rounded-2xl",on:{change:[function(e){var r=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.selected=e.target.multiple?r:r[0]},function(e){return t.onSelectQuantity(t.product.id)}]}},t._l(t.quantityArray,(function(e){return r("option",{key:e,domProps:{value:e}},[t._v("\n "+t._s(e)+"\n ")])})),0),t._v(" "),t.product.isAddedToCart?t._e():r("button",{staticClass:"rounded-xl p-3 bg-blue text-white",on:{click:function(e){return t.addToCart(t.product.id)}}},[t._v(t._s(t.addToCartLabel))]),t._v(" "),t.product.isAddedToCart?r("button",{staticClass:"rounded-xl p-3",on:{click:function(e){return t.removeFromCart(t.product.id,!1)}}},[t._v(t._s(t.removeFromCartLabel))]):t._e()])])])])}),[function(){var t=this.$createElement,e=this._self._c||t;return e("span",{staticClass:"icon"},[e("i",{staticClass:"fas fa-heart"})])},function(){var t=this.$createElement,e=this._self._c||t;return e("span",{staticClass:"icon"},[e("i",{staticClass:"far fa-heart"})])}],!1,null,"8bd4d122",null);e.a=component.exports},195:function(t,e,r){"use strict";r.r(e);var o={name:"product_detail-id",components:{Product:r(191).a},validate:function(t){var e=t.params;return/^\d+$/.test(e.id)},data:function(){return{product:{},selected:1,quantityArray:[]}},mounted:function(){this.product=this.$store.getters.getProductById(this.$route.params.id),this.selected=this.product.quantity;for(var i=1;i<=20;i++)this.quantityArray.push(i)},computed:{isAddedBtn:function(){return this.product.isAddedBtn}},methods:{addToCart:function(t){var data={id:t,status:!0};this.$store.commit("addToCart",t),this.$store.commit("setAddedBtn",data)},removeFromCart:function(t){var data={id:t,status:!1};this.$store.commit("removeFromCart",t),this.$store.commit("setAddedBtn",data)},onSelectQuantity:function(t){var data={id:t,quantity:this.selected};this.$store.commit("quantity",data)},saveToFavorite:function(t){this.$store.state.userInfo.isLoggedIn?this.$store.commit("addToFavourite",t):this.$store.commit("showLoginModal",!0)},removeFromFavourite:function(t){this.$store.commit("removeFromFavourite",t)}}},d=r(6),component=Object(d.a)(o,(function(){var t=this,e=t.$createElement;return(t._self._c||e)("Product",{attrs:{detail:!0,product:t.product}})}),[],!1,null,null,null);e.default=component.exports}}]); -------------------------------------------------------------------------------- /docs/_nuxt/24f74bf.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[4],{188:function(t,e,r){var content=r(190);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[t.i,content,""]]),content.locals&&(t.exports=content.locals);(0,r(19).default)("55699728",content,!0,{sourceMap:!1})},189:function(t,e,r){"use strict";r(188)},190:function(t,e,r){var o=r(18)((function(i){return i[1]}));o.push([t.i,".detail[data-v-8bd4d122]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}@media (min-width: 1024px){.detail[data-v-8bd4d122]{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.detail[data-v-8bd4d122]{margin:1.25rem;--tw-shadow:0 25px 50px -12px rgb(0 0 0 / 0.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);-webkit-box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.detail .img-wrapper[data-v-8bd4d122]{-webkit-box-flex:1;-ms-flex:1;flex:1}@media (min-width: 1024px){.detail .img-wrapper img[data-v-8bd4d122]{border-radius:0px;border-top-left-radius:1rem;border-bottom-left-radius:1rem}}.detail .text-wrapper[data-v-8bd4d122]{-webkit-box-flex:2;-ms-flex:2;flex:2}",""]),o.locals={},t.exports=o},191:function(t,e,r){"use strict";var o={name:"products",props:["product","detail"],data:function(){return{addToCartLabel:"Add to cart",viewDetailsLabel:"Details",removeFromCartLabel:"Remove from cart",addToFavouriteLabel:"Add to favourite",removeFromFavouriteLabel:"Remove from favourite",selected:1,quantityArray:[]}},mounted:function(){for(var i=1;i<=20;i++)this.quantityArray.push(i);this.$props.product.quantity>1&&(this.selected=this.$props.product.quantity)},computed:{isUserLogged:function(){return this.$store.getters.isUserLoggedIn}},methods:{addToCart:function(t){var data={id:t,status:!0};this.$store.commit("addToCart",t),this.$store.commit("setAddedBtn",data)},removeFromCart:function(t){var data={id:t,status:!1};this.$store.commit("removeFromCart",t),this.$store.commit("setAddedBtn",data)},saveToFavorite:function(t){this.$store.state.userInfo.isLoggedIn?this.$store.commit("addToFavourite",t):this.$store.commit("showLoginModal",!0)},removeFromFavourite:function(t){this.$store.commit("removeFromFavourite",t)},onSelectQuantity:function(t){var data={id:t,quantity:this.selected};this.$store.commit("quantity",data)}}},d=(r(189),r(6)),component=Object(d.a)(o,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"rounded-2xl shadow-xl shadow-slate-300/60",class:[t.detail?"detail":""]},[r("div",{staticClass:"img-wrapper rounded-t-2xl"},[r("nuxt-link",{attrs:{to:{name:"product_detail-id",params:{id:t.product.id,title:t.product.title,price:t.product.price,rating:t.product.ratings,reviews:t.product.reviews,isAddedBtn:t.product.isAddedBtn}}}},[r("img",{staticClass:"rounded-t-2xl",attrs:{src:"https://bulma.io/images/placeholders/1280x960.png",alt:"Placeholder image"}})])],1),t._v(" "),r("div",{staticClass:"text-wrapper p-4"},[r("div",{staticClass:"flex items-center justify-between mb-3"},[r("div",{staticClass:"media-content"},[r("nuxt-link",{attrs:{to:{name:"product_detail-id",params:{id:t.product.id,title:t.product.title,price:t.product.price,rating:t.product.ratings,reviews:t.product.reviews,isAddedBtn:t.product.isAddedBtn}}}},[r("span",{class:[t.detail?"text-3xl":"text-lg"]},[t._v(t._s(t.product.title))])])],1),t._v(" "),r("button",{directives:[{name:"show",rawName:"v-show",value:t.product.isFavourite,expression:"product.isFavourite"}],staticClass:"button text-lg",attrs:{title:t.removeFromFavouriteLabel},on:{click:function(e){return t.removeFromFavourite(t.product.id)}}},[t._m(0)]),t._v(" "),r("button",{directives:[{name:"show",rawName:"v-show",value:!t.product.isFavourite,expression:"!product.isFavourite"}],staticClass:"button text-lg",attrs:{title:t.addToFavouriteLabel},on:{click:function(e){return t.saveToFavorite(t.product.id)}}},[t._m(1)])]),t._v(" "),r("div",{staticClass:"content is-clearfix"},[r("p",{class:[t.detail?"text-2xl":"text-base"]},[t._v(t._s(t.product.description))]),t._v(" "),r("div",{staticClass:"flex justify-between"},[r("div",{staticClass:"flex items-center"},[1===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),2===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),2===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),3===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),3===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),3===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),4===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),4===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),4===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),4===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),5===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),5===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),5===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),5===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),5===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),r("p",{staticClass:"ml-2 text-lg"},[t._v(t._s(t.product.reviews>0?t.product.reviews+" Reviews":"No reviews"))])]),t._v(" "),r("p",{staticClass:"text-3xl font-medium"},[r("strong",[t._v("€ "+t._s(t.product.price))])])]),t._v(" "),r("div",{staticClass:"flex justify-between mt-5 items-center"},[r("select",{directives:[{name:"model",rawName:"v-model",value:t.selected,expression:"selected"}],staticClass:"p-2 border-2 rounded-2xl",on:{change:[function(e){var r=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.selected=e.target.multiple?r:r[0]},function(e){return t.onSelectQuantity(t.product.id)}]}},t._l(t.quantityArray,(function(e){return r("option",{key:e,domProps:{value:e}},[t._v("\n "+t._s(e)+"\n ")])})),0),t._v(" "),t.product.isAddedToCart?t._e():r("button",{staticClass:"rounded-xl p-3 bg-blue text-white",on:{click:function(e){return t.addToCart(t.product.id)}}},[t._v(t._s(t.addToCartLabel))]),t._v(" "),t.product.isAddedToCart?r("button",{staticClass:"rounded-xl p-3",on:{click:function(e){return t.removeFromCart(t.product.id,!1)}}},[t._v(t._s(t.removeFromCartLabel))]):t._e()])])])])}),[function(){var t=this.$createElement,e=this._self._c||t;return e("span",{staticClass:"icon"},[e("i",{staticClass:"fas fa-heart"})])},function(){var t=this.$createElement,e=this._self._c||t;return e("span",{staticClass:"icon"},[e("i",{staticClass:"far fa-heart"})])}],!1,null,"8bd4d122",null);e.a=component.exports},192:function(t,e,r){"use strict";r.d(e,"a",(function(){return o}));r(26);function o(t,e){var r=e.trim().toLowerCase();return r.length?t.filter((function(t){return t.title.toLowerCase().indexOf(r)>-1})):t}},194:function(t,e,r){"use strict";r.r(e);var o=r(191),d=r(192),n={name:"user-wishlist",data:function(){return{pageTitle:"Your Wishlist",noProductLabel:"Your wishlist is empty"}},components:{VmProductsList:o.a},computed:{productsInWishlist:function(){return this.$store.state.userInfo.hasSearched?this.getProductByTitle():this.$store.getters.productsAddedToFavourite}},methods:{getProductByTitle:function(){var t=this.$store,e=t.getters.productsAddedToFavourite,r=t.state.userInfo.productTitleSearched;return this.productsFiltered=Object(d.a)(e,r)}}},c=r(6),component=Object(c.a)(n,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"p-5"},[r("h3",{staticClass:"text-2xl mb-4"},[t._v(t._s(t.pageTitle))]),t._v(" "),r("div",{staticClass:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},[t._l(t.productsInWishlist,(function(t){return r("div",{key:t.id},[r("VmProductsList",{attrs:{product:t}})],1)})),t._v(" "),0===t.productsInWishlist.length?r("div",{staticClass:"section"},[r("p",[t._v(t._s(t.noProductLabel))])]):t._e()],2)])}),[],!1,null,null,null);e.default=component.exports}}]); -------------------------------------------------------------------------------- /docs/_nuxt/762a57e.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[2],{188:function(t,e,r){var content=r(190);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[t.i,content,""]]),content.locals&&(t.exports=content.locals);(0,r(19).default)("55699728",content,!0,{sourceMap:!1})},189:function(t,e,r){"use strict";r(188)},190:function(t,e,r){var o=r(18)((function(i){return i[1]}));o.push([t.i,".detail[data-v-8bd4d122]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}@media (min-width: 1024px){.detail[data-v-8bd4d122]{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.detail[data-v-8bd4d122]{margin:1.25rem;--tw-shadow:0 25px 50px -12px rgb(0 0 0 / 0.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);-webkit-box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.detail .img-wrapper[data-v-8bd4d122]{-webkit-box-flex:1;-ms-flex:1;flex:1}@media (min-width: 1024px){.detail .img-wrapper img[data-v-8bd4d122]{border-radius:0px;border-top-left-radius:1rem;border-bottom-left-radius:1rem}}.detail .text-wrapper[data-v-8bd4d122]{-webkit-box-flex:2;-ms-flex:2;flex:2}",""]),o.locals={},t.exports=o},191:function(t,e,r){"use strict";var o={name:"products",props:["product","detail"],data:function(){return{addToCartLabel:"Add to cart",viewDetailsLabel:"Details",removeFromCartLabel:"Remove from cart",addToFavouriteLabel:"Add to favourite",removeFromFavouriteLabel:"Remove from favourite",selected:1,quantityArray:[]}},mounted:function(){for(var i=1;i<=20;i++)this.quantityArray.push(i);this.$props.product.quantity>1&&(this.selected=this.$props.product.quantity)},computed:{isUserLogged:function(){return this.$store.getters.isUserLoggedIn}},methods:{addToCart:function(t){var data={id:t,status:!0};this.$store.commit("addToCart",t),this.$store.commit("setAddedBtn",data)},removeFromCart:function(t){var data={id:t,status:!1};this.$store.commit("removeFromCart",t),this.$store.commit("setAddedBtn",data)},saveToFavorite:function(t){this.$store.state.userInfo.isLoggedIn?this.$store.commit("addToFavourite",t):this.$store.commit("showLoginModal",!0)},removeFromFavourite:function(t){this.$store.commit("removeFromFavourite",t)},onSelectQuantity:function(t){var data={id:t,quantity:this.selected};this.$store.commit("quantity",data)}}},n=(r(189),r(6)),component=Object(n.a)(o,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"rounded-2xl shadow-xl shadow-slate-300/60",class:[t.detail?"detail":""]},[r("div",{staticClass:"img-wrapper rounded-t-2xl"},[r("nuxt-link",{attrs:{to:{name:"product_detail-id",params:{id:t.product.id,title:t.product.title,price:t.product.price,rating:t.product.ratings,reviews:t.product.reviews,isAddedBtn:t.product.isAddedBtn}}}},[r("img",{staticClass:"rounded-t-2xl",attrs:{src:"https://bulma.io/images/placeholders/1280x960.png",alt:"Placeholder image"}})])],1),t._v(" "),r("div",{staticClass:"text-wrapper p-4"},[r("div",{staticClass:"flex items-center justify-between mb-3"},[r("div",{staticClass:"media-content"},[r("nuxt-link",{attrs:{to:{name:"product_detail-id",params:{id:t.product.id,title:t.product.title,price:t.product.price,rating:t.product.ratings,reviews:t.product.reviews,isAddedBtn:t.product.isAddedBtn}}}},[r("span",{class:[t.detail?"text-3xl":"text-lg"]},[t._v(t._s(t.product.title))])])],1),t._v(" "),r("button",{directives:[{name:"show",rawName:"v-show",value:t.product.isFavourite,expression:"product.isFavourite"}],staticClass:"button text-lg",attrs:{title:t.removeFromFavouriteLabel},on:{click:function(e){return t.removeFromFavourite(t.product.id)}}},[t._m(0)]),t._v(" "),r("button",{directives:[{name:"show",rawName:"v-show",value:!t.product.isFavourite,expression:"!product.isFavourite"}],staticClass:"button text-lg",attrs:{title:t.addToFavouriteLabel},on:{click:function(e){return t.saveToFavorite(t.product.id)}}},[t._m(1)])]),t._v(" "),r("div",{staticClass:"content is-clearfix"},[r("p",{class:[t.detail?"text-2xl":"text-base"]},[t._v(t._s(t.product.description))]),t._v(" "),r("div",{staticClass:"flex justify-between"},[r("div",{staticClass:"flex items-center"},[1===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),2===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),2===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),3===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),3===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),3===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),4===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),4===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),4===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),4===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),5===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),5===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),5===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),5===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),5===t.product.ratings?r("i",{staticClass:"fa fa-star"}):t._e(),t._v(" "),r("p",{staticClass:"ml-2 text-lg"},[t._v(t._s(t.product.reviews>0?t.product.reviews+" Reviews":"No reviews"))])]),t._v(" "),r("p",{staticClass:"text-3xl font-medium"},[r("strong",[t._v("€ "+t._s(t.product.price))])])]),t._v(" "),r("div",{staticClass:"flex justify-between mt-5 items-center"},[r("select",{directives:[{name:"model",rawName:"v-model",value:t.selected,expression:"selected"}],staticClass:"p-2 border-2 rounded-2xl",on:{change:[function(e){var r=Array.prototype.filter.call(e.target.options,(function(t){return t.selected})).map((function(t){return"_value"in t?t._value:t.value}));t.selected=e.target.multiple?r:r[0]},function(e){return t.onSelectQuantity(t.product.id)}]}},t._l(t.quantityArray,(function(e){return r("option",{key:e,domProps:{value:e}},[t._v("\n "+t._s(e)+"\n ")])})),0),t._v(" "),t.product.isAddedToCart?t._e():r("button",{staticClass:"rounded-xl p-3 bg-blue text-white",on:{click:function(e){return t.addToCart(t.product.id)}}},[t._v(t._s(t.addToCartLabel))]),t._v(" "),t.product.isAddedToCart?r("button",{staticClass:"rounded-xl p-3",on:{click:function(e){return t.removeFromCart(t.product.id,!1)}}},[t._v(t._s(t.removeFromCartLabel))]):t._e()])])])])}),[function(){var t=this.$createElement,e=this._self._c||t;return e("span",{staticClass:"icon"},[e("i",{staticClass:"fas fa-heart"})])},function(){var t=this.$createElement,e=this._self._c||t;return e("span",{staticClass:"icon"},[e("i",{staticClass:"far fa-heart"})])}],!1,null,"8bd4d122",null);e.a=component.exports},192:function(t,e,r){"use strict";r.d(e,"a",(function(){return o}));r(26);function o(t,e){var r=e.trim().toLowerCase();return r.length?t.filter((function(t){return t.title.toLowerCase().indexOf(r)>-1})):t}},193:function(t,e,r){"use strict";r.r(e);var o=r(191),n=r(192),c={name:"productsList",components:{Products:o.a},data:function(){return{id:"",noProductLabel:"No product found"}},computed:{products:function(){var t=this.$store.state,e=t.products;return t.userInfo.hasSearched?this.getProductByTitle():e}},methods:{getProductByTitle:function(){var t=this.$store.state,e=t.products,r=t.userInfo.productTitleSearched;return Object(n.a)(e,r)}}},d=r(6),l=Object(d.a)(c,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"m-5"},[r("div",{staticClass:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4"},t._l(t.products,(function(t){return r("div",{key:t.id},[r("Products",{attrs:{detail:!1,product:t}})],1)})),0),t._v(" "),0===t.products.length?r("div",{staticClass:"text-center"},[r("h2",{staticClass:"text-2xl"},[t._v(t._s(t.noProductLabel))])]):t._e()])}),[],!1,null,null,null).exports,m=Object(d.a)({},(function(){var t=this,e=t.$createElement;t._self._c;return t._m(0)}),[function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",{staticClass:"bg-blue p-10 lg:p-36"},[r("h1",{staticClass:"text-white text-4xl mb-5"},[t._v("\n Free ecommerce template for Vue.js projects\n ")]),t._v(" "),r("h2",{staticClass:"text-white text-2xl"},[t._v("\n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt\n ")])])}],!1,null,null,null).exports,v={name:"search",data:function(){return{value:""}},computed:{placeholder:function(){return"/wishlist"===this.$route.path?"Search in wishlist...":"Search..."}},methods:{search:function(t){t.length>0?(this.$store.commit("setHasUserSearched",!0),this.$store.commit("setProductTitleSearched",t)):(this.$store.commit("setHasUserSearched",!1),this.$store.commit("setProductTitleSearched",""))}}},f={name:"VmSubheader",components:{VmSearch:Object(d.a)(v,(function(){var t=this,e=t.$createElement;return(t._self._c||e)("input",{directives:[{name:"model",rawName:"v-model",value:t.value,expression:"value"}],staticClass:"input",attrs:{type:"search",placeholder:t.placeholder},domProps:{value:t.value},on:{keyup:function(e){return t.search(t.value)},input:function(e){e.target.composing||(t.value=e.target.value)}}})}),[],!1,null,null,null).exports}},h={name:"index",components:{VmProductsList:l,VmHero:m,VmSubheader:Object(d.a)(f,(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"m-4 p-4 text-center"},[e("VmSearch")],1)}),[],!1,null,null,null).exports}},_=Object(d.a)(h,(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",[r("VmHero"),t._v(" "),r("VmSubheader"),t._v(" "),r("VmProductsList")],1)}),[],!1,null,null,null);e.default=_.exports}}]); -------------------------------------------------------------------------------- /docs/product_detail/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | This page could not be found 5 | 6 | 7 |
8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/user/wishlist/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Ecommerce template built with Vue.js and Nuxt.js 5 | 6 | 7 |

Your Wishlist

Your wishlist is empty

20 | 21 | 22 | -------------------------------------------------------------------------------- /docs/product_detail/1/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Ecommerce template built with Vue.js and Nuxt.js 5 | 6 | 7 |
Placeholder image

No reviews

20 | 21 | 22 | --------------------------------------------------------------------------------