├── store ├── index.js ├── README.md └── localStorage.js ├── .prettierrc ├── static └── favicon.ico ├── assets ├── fonts │ ├── Inter-100-greek4.woff2 │ ├── Inter-100-latin7.woff2 │ ├── Inter-200-greek11.woff2 │ ├── Inter-200-latin14.woff2 │ ├── Inter-300-greek18.woff2 │ ├── Inter-300-latin21.woff2 │ ├── Inter-400-greek25.woff2 │ ├── Inter-400-latin28.woff2 │ ├── Inter-500-greek32.woff2 │ ├── Inter-500-latin35.woff2 │ ├── Inter-600-greek39.woff2 │ ├── Inter-600-latin42.woff2 │ ├── Inter-700-greek46.woff2 │ ├── Inter-700-latin49.woff2 │ ├── Inter-800-greek53.woff2 │ ├── Inter-800-latin56.woff2 │ ├── Inter-900-greek60.woff2 │ ├── Inter-900-latin63.woff2 │ ├── Inter-100-cyrillic2.woff2 │ ├── Inter-100-greek-ext3.woff2 │ ├── Inter-100-latin-ext6.woff2 │ ├── Inter-200-cyrillic9.woff2 │ ├── Inter-300-cyrillic16.woff2 │ ├── Inter-400-cyrillic23.woff2 │ ├── Inter-500-cyrillic30.woff2 │ ├── Inter-600-cyrillic37.woff2 │ ├── Inter-700-cyrillic44.woff2 │ ├── Inter-800-cyrillic51.woff2 │ ├── Inter-900-cyrillic58.woff2 │ ├── Inter-100-vietnamese5.woff2 │ ├── Inter-200-greek-ext10.woff2 │ ├── Inter-200-latin-ext13.woff2 │ ├── Inter-200-vietnamese12.woff2 │ ├── Inter-300-greek-ext17.woff2 │ ├── Inter-300-latin-ext20.woff2 │ ├── Inter-300-vietnamese19.woff2 │ ├── Inter-400-greek-ext24.woff2 │ ├── Inter-400-latin-ext27.woff2 │ ├── Inter-400-vietnamese26.woff2 │ ├── Inter-500-greek-ext31.woff2 │ ├── Inter-500-latin-ext34.woff2 │ ├── Inter-500-vietnamese33.woff2 │ ├── Inter-600-greek-ext38.woff2 │ ├── Inter-600-latin-ext41.woff2 │ ├── Inter-600-vietnamese40.woff2 │ ├── Inter-700-greek-ext45.woff2 │ ├── Inter-700-latin-ext48.woff2 │ ├── Inter-700-vietnamese47.woff2 │ ├── Inter-800-greek-ext52.woff2 │ ├── Inter-800-latin-ext55.woff2 │ ├── Inter-800-vietnamese54.woff2 │ ├── Inter-900-greek-ext59.woff2 │ ├── Inter-900-latin-ext62.woff2 │ ├── Inter-900-vietnamese61.woff2 │ ├── Inter-100-cyrillic-ext1.woff2 │ ├── Inter-200-cyrillic-ext8.woff2 │ ├── Inter-300-cyrillic-ext15.woff2 │ ├── Inter-400-cyrillic-ext22.woff2 │ ├── Inter-500-cyrillic-ext29.woff2 │ ├── Inter-600-cyrillic-ext36.woff2 │ ├── Inter-700-cyrillic-ext43.woff2 │ ├── Inter-800-cyrillic-ext50.woff2 │ └── Inter-900-cyrillic-ext57.woff2 └── css │ └── fonts.css ├── .env.example ├── layouts └── default.vue ├── plugins ├── options.js ├── directus.js ├── metamask.js └── website.js ├── jsconfig.json ├── .editorconfig ├── tailwind.config.js ├── package.json ├── LICENSE ├── README.md ├── .gitignore ├── components └── Nav.vue ├── nuxt.config.js └── pages ├── index.vue ├── cart.vue └── shop └── _id.vue /store/index.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true 4 | } 5 | -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/static/favicon.ico -------------------------------------------------------------------------------- /assets/fonts/Inter-100-greek4.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-100-greek4.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-100-latin7.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-100-latin7.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-200-greek11.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-200-greek11.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-200-latin14.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-200-latin14.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-300-greek18.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-300-greek18.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-300-latin21.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-300-latin21.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-400-greek25.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-400-greek25.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-400-latin28.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-400-latin28.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-500-greek32.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-500-greek32.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-500-latin35.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-500-latin35.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-600-greek39.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-600-greek39.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-600-latin42.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-600-latin42.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-700-greek46.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-700-greek46.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-700-latin49.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-700-latin49.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-800-greek53.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-800-greek53.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-800-latin56.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-800-latin56.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-900-greek60.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-900-greek60.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-900-latin63.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-900-latin63.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-100-cyrillic2.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-100-cyrillic2.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-100-greek-ext3.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-100-greek-ext3.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-100-latin-ext6.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-100-latin-ext6.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-200-cyrillic9.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-200-cyrillic9.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-300-cyrillic16.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-300-cyrillic16.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-400-cyrillic23.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-400-cyrillic23.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-500-cyrillic30.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-500-cyrillic30.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-600-cyrillic37.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-600-cyrillic37.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-700-cyrillic44.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-700-cyrillic44.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-800-cyrillic51.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-800-cyrillic51.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-900-cyrillic58.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-900-cyrillic58.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-100-vietnamese5.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-100-vietnamese5.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-200-greek-ext10.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-200-greek-ext10.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-200-latin-ext13.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-200-latin-ext13.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-200-vietnamese12.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-200-vietnamese12.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-300-greek-ext17.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-300-greek-ext17.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-300-latin-ext20.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-300-latin-ext20.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-300-vietnamese19.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-300-vietnamese19.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-400-greek-ext24.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-400-greek-ext24.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-400-latin-ext27.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-400-latin-ext27.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-400-vietnamese26.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-400-vietnamese26.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-500-greek-ext31.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-500-greek-ext31.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-500-latin-ext34.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-500-latin-ext34.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-500-vietnamese33.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-500-vietnamese33.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-600-greek-ext38.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-600-greek-ext38.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-600-latin-ext41.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-600-latin-ext41.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-600-vietnamese40.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-600-vietnamese40.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-700-greek-ext45.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-700-greek-ext45.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-700-latin-ext48.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-700-latin-ext48.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-700-vietnamese47.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-700-vietnamese47.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-800-greek-ext52.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-800-greek-ext52.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-800-latin-ext55.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-800-latin-ext55.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-800-vietnamese54.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-800-vietnamese54.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-900-greek-ext59.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-900-greek-ext59.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-900-latin-ext62.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-900-latin-ext62.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-900-vietnamese61.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-900-vietnamese61.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-100-cyrillic-ext1.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-100-cyrillic-ext1.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-200-cyrillic-ext8.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-200-cyrillic-ext8.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-300-cyrillic-ext15.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-300-cyrillic-ext15.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-400-cyrillic-ext22.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-400-cyrillic-ext22.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-500-cyrillic-ext29.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-500-cyrillic-ext29.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-600-cyrillic-ext36.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-600-cyrillic-ext36.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-700-cyrillic-ext43.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-700-cyrillic-ext43.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-800-cyrillic-ext50.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-800-cyrillic-ext50.woff2 -------------------------------------------------------------------------------- /assets/fonts/Inter-900-cyrillic-ext57.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/florianjs/Toko/HEAD/assets/fonts/Inter-900-cyrillic-ext57.woff2 -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | BASE_URL=https://your.directus-cms.com 2 | STRIPE_PUBLISHABLE_KEY=yourStripePublishableKey 3 | PLAUSIBLE_DOMAIN=your.plausible.id -------------------------------------------------------------------------------- /layouts/default.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /plugins/options.js: -------------------------------------------------------------------------------- 1 | export default ({ app, $directus }, inject) => { 2 | async function data() { 3 | return await $directus.items('website').readMany() 4 | } 5 | 6 | inject('website', data()) 7 | } 8 | -------------------------------------------------------------------------------- /plugins/directus.js: -------------------------------------------------------------------------------- 1 | const { Directus } = require('@directus/sdk') 2 | 3 | export default ({ app }, inject) => { 4 | const directus = new Directus(process.env.BASE_URL) 5 | 6 | inject('directus', directus) 7 | } 8 | -------------------------------------------------------------------------------- /plugins/metamask.js: -------------------------------------------------------------------------------- 1 | export default ({ app }, inject) => { 2 | let metamask 3 | 4 | if (typeof window.ethereum !== 'undefined') { 5 | metamask = window.ethereum 6 | } else { 7 | metamask = false 8 | } 9 | 10 | inject('metamask', metamask) 11 | } 12 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": ".", 4 | "paths": { 5 | "~/*": ["./*"], 6 | "@/*": ["./*"], 7 | "~~/*": ["./*"], 8 | "@@/*": ["./*"] 9 | } 10 | }, 11 | "exclude": ["node_modules", ".nuxt", "dist"] 12 | } 13 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | purge: { 3 | options: { 4 | // Whitelisting some classes to avoid purge 5 | safelist: [/^bg-/, /^text-/, /^hover:bg-/], 6 | }, 7 | }, 8 | theme: { 9 | extend: { 10 | fontFamily: { 11 | inter: ['Inter'], 12 | }, 13 | }, 14 | }, 15 | } 16 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "toko", 3 | "version": "0.0.4", 4 | "private": true, 5 | "scripts": { 6 | "dev": "nuxt", 7 | "build": "nuxt build", 8 | "start": "nuxt start", 9 | "generate": "nuxt generate" 10 | }, 11 | "dependencies": { 12 | "@directus/sdk": "^9.0.0-rc.83", 13 | "@nuxtjs/axios": "^5.13.6", 14 | "core-js": "^3.15.1", 15 | "nuxt": "^2.15.7", 16 | "nuxt-stripe-module": "^3.2.0", 17 | "nuxt-vuex-localstorage": "^1.3.0", 18 | "sharp": "^0.28.3" 19 | }, 20 | "devDependencies": { 21 | "@nuxt/image": "^0.4.17", 22 | "@nuxtjs/google-fonts": "^1.3.0", 23 | "@nuxtjs/tailwindcss": "^4.2.0", 24 | "eslint-config-prettier": "^8.3.0", 25 | "postcss": "^8.3.5", 26 | "prettier": "^2.3.2" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /plugins/website.js: -------------------------------------------------------------------------------- 1 | export default async function ({ $axios }, inject) { 2 | const datas = $axios 3 | .get(process.env.BASE_URL + '/items/website/') 4 | .then((response) => { 5 | return { 6 | color: response.data.data.color_schema, 7 | seo: response.data.data.seo_title, 8 | keywords: response.data.data.seo_keywords, 9 | description: response.data.data.seo_description, 10 | og_banner: response.data.data.og_banner, 11 | og_alt: response.data.data.og_alt, 12 | url: response.data.data.front_url, 13 | logo: response.data.data.website_logo, 14 | logo_format: response.data.data.logo_format, 15 | header_image: response.data.data.header_image, 16 | } 17 | }) 18 | inject('seo', await datas) 19 | } 20 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Florian ARGAUD 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Toko banner](https://i.imgur.com/NFuayuP.png) 2 | 3 | **⚠️ Toko is currently in highly development mode, so I DO NOT recommend using it for production mode since it will change over the following weeks.** 4 | 5 | ## Jamstack e-commerce solution 6 | 7 | Toko is an **Open Source Jamstack e-commerce** solution powered by NuxtJS (Front-End) and Directus (CMS). Toko focuses on four key points: **Performances** to give users fast loading time, **low data consumption** to improve the eco-conception, **SEO-friendly** content, and **modern design** templates. 8 | 9 | ![Toko performances](https://i.imgur.com/51fJBC3.png) 10 | 11 | ## Free and Open Source 12 | 13 | Toko is also mainly **free to use**, thanks to the Jamstack. You can deploy your front-end to Netlify and the CMS to Heroku for free. The only expense you'll need is probably a domain name ($10 / year), but this is optional. 14 | 15 | ## Focus on content creation 16 | 17 | Toko is **perfect for people looking to focus on content creation** and not technical and performance optimization. Once everything is deployed, set up, and customized, you can start selling right away! 18 | 19 | # How-To 20 | 21 | _Coming soon_ 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Node template 3 | # Logs 4 | /logs 5 | *.log 6 | npm-debug.log* 7 | yarn-debug.log* 8 | yarn-error.log* 9 | 10 | # Runtime data 11 | pids 12 | *.pid 13 | *.seed 14 | *.pid.lock 15 | 16 | # Directory for instrumented libs generated by jscoverage/JSCover 17 | lib-cov 18 | 19 | # Coverage directory used by tools like istanbul 20 | coverage 21 | 22 | # nyc test coverage 23 | .nyc_output 24 | 25 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 26 | .grunt 27 | 28 | # Bower dependency directory (https://bower.io/) 29 | bower_components 30 | 31 | # node-waf configuration 32 | .lock-wscript 33 | 34 | # Compiled binary addons (https://nodejs.org/api/addons.html) 35 | build/Release 36 | 37 | # Dependency directories 38 | node_modules/ 39 | jspm_packages/ 40 | 41 | # TypeScript v1 declaration files 42 | typings/ 43 | 44 | # Optional npm cache directory 45 | .npm 46 | 47 | # Optional eslint cache 48 | .eslintcache 49 | 50 | # Optional REPL history 51 | .node_repl_history 52 | 53 | # Output of 'npm pack' 54 | *.tgz 55 | 56 | # Yarn Integrity file 57 | .yarn-integrity 58 | 59 | # dotenv environment variables file 60 | .env 61 | 62 | # parcel-bundler cache (https://parceljs.org/) 63 | .cache 64 | 65 | # next.js build output 66 | .next 67 | 68 | # nuxt.js build output 69 | .nuxt 70 | 71 | # Nuxt generate 72 | dist 73 | 74 | # vuepress build output 75 | .vuepress/dist 76 | 77 | # Serverless directories 78 | .serverless 79 | 80 | # IDE / Editor 81 | .idea 82 | 83 | # Service worker 84 | sw.* 85 | 86 | # macOS 87 | .DS_Store 88 | 89 | # Vim swap files 90 | *.swp 91 | -------------------------------------------------------------------------------- /store/localStorage.js: -------------------------------------------------------------------------------- 1 | export const state = () => ({ 2 | cart: [], 3 | }) 4 | 5 | export const mutations = { 6 | add(state, item) { 7 | let alreadyExist = { state: false, index: 0 } 8 | state.cart.forEach((element, index) => { 9 | if (element.item_variants.stripe === item.item_variants.stripe) { 10 | alreadyExist.state = true 11 | alreadyExist.index = index 12 | } 13 | }) 14 | alreadyExist.state 15 | ? state.cart[alreadyExist.index].item_quantity++ 16 | : state.cart.push(item) 17 | }, 18 | addOne(state, item) { 19 | let alreadyExist = { state: false, index: 0 } 20 | state.cart.forEach((element, index) => { 21 | if (element.item_variants.stripe === item.item_variants.stripe) { 22 | alreadyExist.state = true 23 | alreadyExist.index = index 24 | } 25 | }) 26 | alreadyExist.state 27 | ? state.cart[alreadyExist.index].item_quantity++ 28 | : state.cart.push(item) 29 | }, 30 | subsctractOne(state, item) { 31 | let alreadyExist = { state: false, index: 0 } 32 | state.cart.forEach((element, index) => { 33 | if (element.item_variants.stripe === item.item_variants.stripe) { 34 | alreadyExist.state = true 35 | alreadyExist.index = index 36 | } 37 | }) 38 | alreadyExist.state 39 | ? state.cart[alreadyExist.index].item_quantity-- 40 | : state.cart.push(item) 41 | }, 42 | remove(state, index) { 43 | Array.prototype.remove = function (from, to) { 44 | let rest = this.slice((to || from) + 1 || this.length) 45 | this.length = from < 0 ? this.length + from : from 46 | return this.push.apply(this, rest) 47 | } 48 | 49 | state.cart.remove(index) 50 | }, 51 | 52 | reset(state) { 53 | state.cart = [] 54 | }, 55 | } 56 | -------------------------------------------------------------------------------- /components/Nav.vue: -------------------------------------------------------------------------------- 1 | 46 | 47 | 68 | -------------------------------------------------------------------------------- /nuxt.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | // Target: https://go.nuxtjs.dev/config-target 3 | target: 'static', 4 | 5 | dev: process.env.DEV || false, 6 | 7 | env: { 8 | BASE_URL: process.env.BASE_URL, 9 | }, 10 | 11 | // Global page headers: https://go.nuxtjs.dev/config-head 12 | head: { 13 | title: 'toko', 14 | script: [ 15 | { 16 | src: 'https://plausible.io/js/plausible.js', 17 | async: true, 18 | defer: true, 19 | 'data-domain': process.env.PLAUSIBLE_DOMAIN, 20 | }, 21 | ], 22 | htmlAttrs: { 23 | lang: 'en', 24 | }, 25 | meta: [ 26 | { charset: 'utf-8' }, 27 | { name: 'viewport', content: 'width=device-width, initial-scale=1' }, 28 | { name: 'format-detection', content: 'telephone=no' }, 29 | ], 30 | link: [{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }], 31 | }, 32 | 33 | googleFonts: { 34 | display: 'swap', 35 | families: { 36 | Inter: [100, 200, 300, 400, 500, 600, 700, 800, 900], 37 | }, 38 | }, 39 | 40 | // Global CSS: https://go.nuxtjs.dev/config-css 41 | css: [], 42 | 43 | // Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins 44 | plugins: [ 45 | '~/plugins/directus.js', 46 | { src: '~/plugins/website.js' }, 47 | { src: '~/plugins/metamask.js', mode: 'client' }, 48 | ], 49 | 50 | // Auto import components: https://go.nuxtjs.dev/config-components 51 | components: true, 52 | 53 | // Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules 54 | buildModules: [ 55 | // https://go.nuxtjs.dev/tailwindcss 56 | '@nuxtjs/tailwindcss', 57 | '@nuxtjs/google-fonts', 58 | '@nuxt/image', 59 | ], 60 | 61 | // Modules: https://go.nuxtjs.dev/config-modules 62 | modules: [ 63 | // https://go.nuxtjs.dev/axios 64 | '@nuxtjs/axios', 65 | 'nuxt-vuex-localstorage', 66 | [ 67 | 'nuxt-stripe-module', 68 | { 69 | publishableKey: process.env.STRIPE_PUBLISHABLE_KEY, 70 | }, 71 | ], 72 | ], 73 | 74 | // Axios module configuration: https://go.nuxtjs.dev/config-axios 75 | axios: {}, 76 | 77 | // Build Configuration: https://go.nuxtjs.dev/config-build 78 | build: {}, 79 | } 80 | -------------------------------------------------------------------------------- /pages/index.vue: -------------------------------------------------------------------------------- 1 | 83 | 84 | 216 | -------------------------------------------------------------------------------- /pages/cart.vue: -------------------------------------------------------------------------------- 1 | 207 | 208 | 286 | 287 | 383 | -------------------------------------------------------------------------------- /pages/shop/_id.vue: -------------------------------------------------------------------------------- 1 | 218 | 219 | 365 | 366 | 380 | -------------------------------------------------------------------------------- /assets/css/fonts.css: -------------------------------------------------------------------------------- 1 | /* cyrillic-ext */ 2 | @font-face { 3 | font-family: 'Inter'; 4 | font-style: normal; 5 | font-weight: 100; 6 | src: url('~assets/fonts/Inter-100-cyrillic-ext1.woff2') format('woff2'); 7 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 8 | } 9 | /* cyrillic */ 10 | @font-face { 11 | font-family: 'Inter'; 12 | font-style: normal; 13 | font-weight: 100; 14 | src: url('~assets/fonts/Inter-100-cyrillic2.woff2') format('woff2'); 15 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 16 | } 17 | /* greek-ext */ 18 | @font-face { 19 | font-family: 'Inter'; 20 | font-style: normal; 21 | font-weight: 100; 22 | src: url('~assets/fonts/Inter-100-greek-ext3.woff2') format('woff2'); 23 | unicode-range: U+1F00-1FFF; 24 | } 25 | /* greek */ 26 | @font-face { 27 | font-family: 'Inter'; 28 | font-style: normal; 29 | font-weight: 100; 30 | src: url('~assets/fonts/Inter-100-greek4.woff2') format('woff2'); 31 | unicode-range: U+0370-03FF; 32 | } 33 | /* vietnamese */ 34 | @font-face { 35 | font-family: 'Inter'; 36 | font-style: normal; 37 | font-weight: 100; 38 | src: url('~assets/fonts/Inter-100-vietnamese5.woff2') format('woff2'); 39 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 40 | } 41 | /* latin-ext */ 42 | @font-face { 43 | font-family: 'Inter'; 44 | font-style: normal; 45 | font-weight: 100; 46 | src: url('~assets/fonts/Inter-100-latin-ext6.woff2') format('woff2'); 47 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 48 | } 49 | /* latin */ 50 | @font-face { 51 | font-family: 'Inter'; 52 | font-style: normal; 53 | font-weight: 100; 54 | src: url('~assets/fonts/Inter-100-latin7.woff2') format('woff2'); 55 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 56 | } 57 | /* cyrillic-ext */ 58 | @font-face { 59 | font-family: 'Inter'; 60 | font-style: normal; 61 | font-weight: 200; 62 | src: url('~assets/fonts/Inter-200-cyrillic-ext8.woff2') format('woff2'); 63 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 64 | } 65 | /* cyrillic */ 66 | @font-face { 67 | font-family: 'Inter'; 68 | font-style: normal; 69 | font-weight: 200; 70 | src: url('~assets/fonts/Inter-200-cyrillic9.woff2') format('woff2'); 71 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 72 | } 73 | /* greek-ext */ 74 | @font-face { 75 | font-family: 'Inter'; 76 | font-style: normal; 77 | font-weight: 200; 78 | src: url('~assets/fonts/Inter-200-greek-ext10.woff2') format('woff2'); 79 | unicode-range: U+1F00-1FFF; 80 | } 81 | /* greek */ 82 | @font-face { 83 | font-family: 'Inter'; 84 | font-style: normal; 85 | font-weight: 200; 86 | src: url('~assets/fonts/Inter-200-greek11.woff2') format('woff2'); 87 | unicode-range: U+0370-03FF; 88 | } 89 | /* vietnamese */ 90 | @font-face { 91 | font-family: 'Inter'; 92 | font-style: normal; 93 | font-weight: 200; 94 | src: url('~assets/fonts/Inter-200-vietnamese12.woff2') format('woff2'); 95 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 96 | } 97 | /* latin-ext */ 98 | @font-face { 99 | font-family: 'Inter'; 100 | font-style: normal; 101 | font-weight: 200; 102 | src: url('~assets/fonts/Inter-200-latin-ext13.woff2') format('woff2'); 103 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 104 | } 105 | /* latin */ 106 | @font-face { 107 | font-family: 'Inter'; 108 | font-style: normal; 109 | font-weight: 200; 110 | src: url('~assets/fonts/Inter-200-latin14.woff2') format('woff2'); 111 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 112 | } 113 | /* cyrillic-ext */ 114 | @font-face { 115 | font-family: 'Inter'; 116 | font-style: normal; 117 | font-weight: 300; 118 | src: url('~assets/fonts/Inter-300-cyrillic-ext15.woff2') format('woff2'); 119 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 120 | } 121 | /* cyrillic */ 122 | @font-face { 123 | font-family: 'Inter'; 124 | font-style: normal; 125 | font-weight: 300; 126 | src: url('~assets/fonts/Inter-300-cyrillic16.woff2') format('woff2'); 127 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 128 | } 129 | /* greek-ext */ 130 | @font-face { 131 | font-family: 'Inter'; 132 | font-style: normal; 133 | font-weight: 300; 134 | src: url('~assets/fonts/Inter-300-greek-ext17.woff2') format('woff2'); 135 | unicode-range: U+1F00-1FFF; 136 | } 137 | /* greek */ 138 | @font-face { 139 | font-family: 'Inter'; 140 | font-style: normal; 141 | font-weight: 300; 142 | src: url('~assets/fonts/Inter-300-greek18.woff2') format('woff2'); 143 | unicode-range: U+0370-03FF; 144 | } 145 | /* vietnamese */ 146 | @font-face { 147 | font-family: 'Inter'; 148 | font-style: normal; 149 | font-weight: 300; 150 | src: url('~assets/fonts/Inter-300-vietnamese19.woff2') format('woff2'); 151 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 152 | } 153 | /* latin-ext */ 154 | @font-face { 155 | font-family: 'Inter'; 156 | font-style: normal; 157 | font-weight: 300; 158 | src: url('~assets/fonts/Inter-300-latin-ext20.woff2') format('woff2'); 159 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 160 | } 161 | /* latin */ 162 | @font-face { 163 | font-family: 'Inter'; 164 | font-style: normal; 165 | font-weight: 300; 166 | src: url('~assets/fonts/Inter-300-latin21.woff2') format('woff2'); 167 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 168 | } 169 | /* cyrillic-ext */ 170 | @font-face { 171 | font-family: 'Inter'; 172 | font-style: normal; 173 | font-weight: 400; 174 | src: url('~assets/fonts/Inter-400-cyrillic-ext22.woff2') format('woff2'); 175 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 176 | } 177 | /* cyrillic */ 178 | @font-face { 179 | font-family: 'Inter'; 180 | font-style: normal; 181 | font-weight: 400; 182 | src: url('~assets/fonts/Inter-400-cyrillic23.woff2') format('woff2'); 183 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 184 | } 185 | /* greek-ext */ 186 | @font-face { 187 | font-family: 'Inter'; 188 | font-style: normal; 189 | font-weight: 400; 190 | src: url('~assets/fonts/Inter-400-greek-ext24.woff2') format('woff2'); 191 | unicode-range: U+1F00-1FFF; 192 | } 193 | /* greek */ 194 | @font-face { 195 | font-family: 'Inter'; 196 | font-style: normal; 197 | font-weight: 400; 198 | src: url('~assets/fonts/Inter-400-greek25.woff2') format('woff2'); 199 | unicode-range: U+0370-03FF; 200 | } 201 | /* vietnamese */ 202 | @font-face { 203 | font-family: 'Inter'; 204 | font-style: normal; 205 | font-weight: 400; 206 | src: url('~assets/fonts/Inter-400-vietnamese26.woff2') format('woff2'); 207 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 208 | } 209 | /* latin-ext */ 210 | @font-face { 211 | font-family: 'Inter'; 212 | font-style: normal; 213 | font-weight: 400; 214 | src: url('~assets/fonts/Inter-400-latin-ext27.woff2') format('woff2'); 215 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 216 | } 217 | /* latin */ 218 | @font-face { 219 | font-family: 'Inter'; 220 | font-style: normal; 221 | font-weight: 400; 222 | src: url('~assets/fonts/Inter-400-latin28.woff2') format('woff2'); 223 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 224 | } 225 | /* cyrillic-ext */ 226 | @font-face { 227 | font-family: 'Inter'; 228 | font-style: normal; 229 | font-weight: 500; 230 | src: url('~assets/fonts/Inter-500-cyrillic-ext29.woff2') format('woff2'); 231 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 232 | } 233 | /* cyrillic */ 234 | @font-face { 235 | font-family: 'Inter'; 236 | font-style: normal; 237 | font-weight: 500; 238 | src: url('~assets/fonts/Inter-500-cyrillic30.woff2') format('woff2'); 239 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 240 | } 241 | /* greek-ext */ 242 | @font-face { 243 | font-family: 'Inter'; 244 | font-style: normal; 245 | font-weight: 500; 246 | src: url('~assets/fonts/Inter-500-greek-ext31.woff2') format('woff2'); 247 | unicode-range: U+1F00-1FFF; 248 | } 249 | /* greek */ 250 | @font-face { 251 | font-family: 'Inter'; 252 | font-style: normal; 253 | font-weight: 500; 254 | src: url('~assets/fonts/Inter-500-greek32.woff2') format('woff2'); 255 | unicode-range: U+0370-03FF; 256 | } 257 | /* vietnamese */ 258 | @font-face { 259 | font-family: 'Inter'; 260 | font-style: normal; 261 | font-weight: 500; 262 | src: url('~assets/fonts/Inter-500-vietnamese33.woff2') format('woff2'); 263 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 264 | } 265 | /* latin-ext */ 266 | @font-face { 267 | font-family: 'Inter'; 268 | font-style: normal; 269 | font-weight: 500; 270 | src: url('~assets/fonts/Inter-500-latin-ext34.woff2') format('woff2'); 271 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 272 | } 273 | /* latin */ 274 | @font-face { 275 | font-family: 'Inter'; 276 | font-style: normal; 277 | font-weight: 500; 278 | src: url('~assets/fonts/Inter-500-latin35.woff2') format('woff2'); 279 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 280 | } 281 | /* cyrillic-ext */ 282 | @font-face { 283 | font-family: 'Inter'; 284 | font-style: normal; 285 | font-weight: 600; 286 | src: url('~assets/fonts/Inter-600-cyrillic-ext36.woff2') format('woff2'); 287 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 288 | } 289 | /* cyrillic */ 290 | @font-face { 291 | font-family: 'Inter'; 292 | font-style: normal; 293 | font-weight: 600; 294 | src: url('~assets/fonts/Inter-600-cyrillic37.woff2') format('woff2'); 295 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 296 | } 297 | /* greek-ext */ 298 | @font-face { 299 | font-family: 'Inter'; 300 | font-style: normal; 301 | font-weight: 600; 302 | src: url('~assets/fonts/Inter-600-greek-ext38.woff2') format('woff2'); 303 | unicode-range: U+1F00-1FFF; 304 | } 305 | /* greek */ 306 | @font-face { 307 | font-family: 'Inter'; 308 | font-style: normal; 309 | font-weight: 600; 310 | src: url('~assets/fonts/Inter-600-greek39.woff2') format('woff2'); 311 | unicode-range: U+0370-03FF; 312 | } 313 | /* vietnamese */ 314 | @font-face { 315 | font-family: 'Inter'; 316 | font-style: normal; 317 | font-weight: 600; 318 | src: url('~assets/fonts/Inter-600-vietnamese40.woff2') format('woff2'); 319 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 320 | } 321 | /* latin-ext */ 322 | @font-face { 323 | font-family: 'Inter'; 324 | font-style: normal; 325 | font-weight: 600; 326 | src: url('~assets/fonts/Inter-600-latin-ext41.woff2') format('woff2'); 327 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 328 | } 329 | /* latin */ 330 | @font-face { 331 | font-family: 'Inter'; 332 | font-style: normal; 333 | font-weight: 600; 334 | src: url('~assets/fonts/Inter-600-latin42.woff2') format('woff2'); 335 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 336 | } 337 | /* cyrillic-ext */ 338 | @font-face { 339 | font-family: 'Inter'; 340 | font-style: normal; 341 | font-weight: 700; 342 | src: url('~assets/fonts/Inter-700-cyrillic-ext43.woff2') format('woff2'); 343 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 344 | } 345 | /* cyrillic */ 346 | @font-face { 347 | font-family: 'Inter'; 348 | font-style: normal; 349 | font-weight: 700; 350 | src: url('~assets/fonts/Inter-700-cyrillic44.woff2') format('woff2'); 351 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 352 | } 353 | /* greek-ext */ 354 | @font-face { 355 | font-family: 'Inter'; 356 | font-style: normal; 357 | font-weight: 700; 358 | src: url('~assets/fonts/Inter-700-greek-ext45.woff2') format('woff2'); 359 | unicode-range: U+1F00-1FFF; 360 | } 361 | /* greek */ 362 | @font-face { 363 | font-family: 'Inter'; 364 | font-style: normal; 365 | font-weight: 700; 366 | src: url('~assets/fonts/Inter-700-greek46.woff2') format('woff2'); 367 | unicode-range: U+0370-03FF; 368 | } 369 | /* vietnamese */ 370 | @font-face { 371 | font-family: 'Inter'; 372 | font-style: normal; 373 | font-weight: 700; 374 | src: url('~assets/fonts/Inter-700-vietnamese47.woff2') format('woff2'); 375 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 376 | } 377 | /* latin-ext */ 378 | @font-face { 379 | font-family: 'Inter'; 380 | font-style: normal; 381 | font-weight: 700; 382 | src: url('~assets/fonts/Inter-700-latin-ext48.woff2') format('woff2'); 383 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 384 | } 385 | /* latin */ 386 | @font-face { 387 | font-family: 'Inter'; 388 | font-style: normal; 389 | font-weight: 700; 390 | src: url('~assets/fonts/Inter-700-latin49.woff2') format('woff2'); 391 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 392 | } 393 | /* cyrillic-ext */ 394 | @font-face { 395 | font-family: 'Inter'; 396 | font-style: normal; 397 | font-weight: 800; 398 | src: url('~assets/fonts/Inter-800-cyrillic-ext50.woff2') format('woff2'); 399 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 400 | } 401 | /* cyrillic */ 402 | @font-face { 403 | font-family: 'Inter'; 404 | font-style: normal; 405 | font-weight: 800; 406 | src: url('~assets/fonts/Inter-800-cyrillic51.woff2') format('woff2'); 407 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 408 | } 409 | /* greek-ext */ 410 | @font-face { 411 | font-family: 'Inter'; 412 | font-style: normal; 413 | font-weight: 800; 414 | src: url('~assets/fonts/Inter-800-greek-ext52.woff2') format('woff2'); 415 | unicode-range: U+1F00-1FFF; 416 | } 417 | /* greek */ 418 | @font-face { 419 | font-family: 'Inter'; 420 | font-style: normal; 421 | font-weight: 800; 422 | src: url('~assets/fonts/Inter-800-greek53.woff2') format('woff2'); 423 | unicode-range: U+0370-03FF; 424 | } 425 | /* vietnamese */ 426 | @font-face { 427 | font-family: 'Inter'; 428 | font-style: normal; 429 | font-weight: 800; 430 | src: url('~assets/fonts/Inter-800-vietnamese54.woff2') format('woff2'); 431 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 432 | } 433 | /* latin-ext */ 434 | @font-face { 435 | font-family: 'Inter'; 436 | font-style: normal; 437 | font-weight: 800; 438 | src: url('~assets/fonts/Inter-800-latin-ext55.woff2') format('woff2'); 439 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 440 | } 441 | /* latin */ 442 | @font-face { 443 | font-family: 'Inter'; 444 | font-style: normal; 445 | font-weight: 800; 446 | src: url('~assets/fonts/Inter-800-latin56.woff2') format('woff2'); 447 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 448 | } 449 | /* cyrillic-ext */ 450 | @font-face { 451 | font-family: 'Inter'; 452 | font-style: normal; 453 | font-weight: 900; 454 | src: url('~assets/fonts/Inter-900-cyrillic-ext57.woff2') format('woff2'); 455 | unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 456 | } 457 | /* cyrillic */ 458 | @font-face { 459 | font-family: 'Inter'; 460 | font-style: normal; 461 | font-weight: 900; 462 | src: url('~assets/fonts/Inter-900-cyrillic58.woff2') format('woff2'); 463 | unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 464 | } 465 | /* greek-ext */ 466 | @font-face { 467 | font-family: 'Inter'; 468 | font-style: normal; 469 | font-weight: 900; 470 | src: url('~assets/fonts/Inter-900-greek-ext59.woff2') format('woff2'); 471 | unicode-range: U+1F00-1FFF; 472 | } 473 | /* greek */ 474 | @font-face { 475 | font-family: 'Inter'; 476 | font-style: normal; 477 | font-weight: 900; 478 | src: url('~assets/fonts/Inter-900-greek60.woff2') format('woff2'); 479 | unicode-range: U+0370-03FF; 480 | } 481 | /* vietnamese */ 482 | @font-face { 483 | font-family: 'Inter'; 484 | font-style: normal; 485 | font-weight: 900; 486 | src: url('~assets/fonts/Inter-900-vietnamese61.woff2') format('woff2'); 487 | unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; 488 | } 489 | /* latin-ext */ 490 | @font-face { 491 | font-family: 'Inter'; 492 | font-style: normal; 493 | font-weight: 900; 494 | src: url('~assets/fonts/Inter-900-latin-ext62.woff2') format('woff2'); 495 | unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; 496 | } 497 | /* latin */ 498 | @font-face { 499 | font-family: 'Inter'; 500 | font-style: normal; 501 | font-weight: 900; 502 | src: url('~assets/fonts/Inter-900-latin63.woff2') format('woff2'); 503 | unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; 504 | } 505 | --------------------------------------------------------------------------------