├── .gitignore
├── .vscode
└── extensions.json
├── README.md
├── data
└── data.js
├── index.html
├── package-lock.json
├── package.json
├── public
└── favicon.ico
├── src
├── App.vue
├── assets
│ ├── base.css
│ ├── logo.svg
│ └── main.css
├── components
│ └── TopMenu.vue
├── main.js
├── router
│ └── index.js
├── store
│ └── store.js
└── views
│ ├── ProductDetails.vue
│ ├── ProductList.vue
│ └── ShoppingCart.vue
└── vite.config.js
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | .DS_Store
12 | dist
13 | dist-ssr
14 | coverage
15 | *.local
16 |
17 | /cypress/videos/
18 | /cypress/screenshots/
19 |
20 | # Editor directories and files
21 | .vscode/*
22 | !.vscode/extensions.json
23 | .idea
24 | *.suo
25 | *.ntvs*
26 | *.njsproj
27 | *.sln
28 | *.sw?
29 |
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
3 | }
4 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vue-demo
2 |
3 | This template should help get you started developing with Vue 3 in Vite.
4 |
5 | ## Recommended IDE Setup
6 |
7 | [VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
8 |
9 | ## Customize configuration
10 |
11 | See [Vite Configuration Reference](https://vitejs.dev/config/).
12 |
13 | ## Project Setup
14 |
15 | ```sh
16 | npm install
17 | ```
18 |
19 | ### Compile and Hot-Reload for Development
20 |
21 | ```sh
22 | npm run dev
23 | ```
24 |
25 | ### Compile and Minify for Production
26 |
27 | ```sh
28 | npm run build
29 | ```
30 |
--------------------------------------------------------------------------------
/data/data.js:
--------------------------------------------------------------------------------
1 | export default [
2 | {
3 | "id":1,
4 | "userName": "jenlooper-cactus",
5 | "Maker": "@jenlooper",
6 | "img": "https://user-images.githubusercontent.com/41929050/61567048-13938600-aa33-11e9-9cfd-712191013192.jpeg",
7 | "Url": "https://www.hackster.io/agent-hawking-1/the-quantified-cactus-an-easy-plant-soil-moisture-sensor-e65393",
8 | "Title": "The Quantified Cactus: An Easy Plant Soil Moisture Sensor",
9 | "Description": "This project is a good learning project to get comfortable with soldering and programming an Arduino.",
10 | "Ratings": [
11 | 5,
12 | 5
13 | ],
14 | "price": 145
15 | },
16 | {
17 | "id":2,
18 | "userName": "jenlooper-light",
19 | "Maker": "jenlooper",
20 | "img": "https://user-images.githubusercontent.com/41929050/61567049-13938600-aa33-11e9-9c69-a4184bf8e524.jpeg",
21 | "Url": "https://www.hackster.io/agent-hawking-1/book-light-dee7e4",
22 | "Title": "A beautiful switch-on book light",
23 | "Description": "Use craft items you have around the house, plus two LEDs and a LilyPad battery holder, to create a useful book light for reading in the dark.",
24 | "Ratings": null,
25 | "price": 250
26 | },
27 | {
28 | "id":3,
29 | "userName": "jenlooper-lightshow",
30 | "Maker": "@jenlooper",
31 | "img": "https://user-images.githubusercontent.com/41929050/61567053-13938600-aa33-11e9-9780-104fe4019659.png",
32 | "Url": "https://www.hackster.io/agent-hawking-1/bling-your-laptop-with-an-internet-connected-light-show-30e4db",
33 | "Title": "Bling your Laptop with an Internet-Connected Light Show",
34 | "Description": "Create a web-connected light-strip API controllable from your website, using the Particle.io.",
35 | "Ratings": null,
36 | "price": 90
37 | },
38 | {
39 | "id":4,
40 | "userName": "jenlooper-survival",
41 | "Maker": "jenlooper",
42 | "img": "https://user-images.githubusercontent.com/41929050/61567051-13938600-aa33-11e9-8ae7-0b5c19aafab4.jpeg",
43 | "Url": "https://www.hackster.io/agent-hawking-1/create-a-compact-survival-kit-38bfdb",
44 | "Title": "Create a Compact Survival Kit with LED Track Lighting",
45 | "Description": "Use an Altoids tin with Chibitronics sticker LEDs to create a light-up compact that doubles as a survival kit for the young hipster",
46 | "Ratings": null,
47 | "price": 275
48 | },
49 | {
50 | "id":5,
51 | "userName": "sailorhg-bubblesortpic",
52 | "Maker": "sailorhg",
53 | "img": "https://user-images.githubusercontent.com/41929050/61567054-13938600-aa33-11e9-9163-eec98e239b7a.png",
54 | "Url": "https://twitter.com/sailorhg/status/1090107740049952770",
55 | "Title": "Bubblesort Visualization",
56 | "Description": "Visualization of sailor scouts sorted by bubblesort algorithm by their planet\u0027s distance from the sun",
57 | "Ratings": null,
58 | "price": 175
59 | },
60 | {
61 | "id":6,
62 | "userName": "sailorhg-corsage",
63 | "Maker": "sailorhg",
64 | "img": "https://user-images.githubusercontent.com/41929050/61567055-142c1c80-aa33-11e9-96ff-9fbac6413625.png",
65 | "Url": "https://twitter.com/sailorhg/status/1090113666911891456",
66 | "Title": "Light-up Corsage",
67 | "Description": "Light-up corsage I made with my summer intern.",
68 | "Ratings": null,
69 | "price": 300
70 | },
71 | {
72 | "id":7,
73 | "userName": "sailorhg-kit",
74 | "Maker": "sailorhg",
75 | "img": "https://user-images.githubusercontent.com/41929050/61567056-142c1c80-aa33-11e9-8682-10065d338145.png",
76 | "Url": "https://twitter.com/sailorhg/status/1090122822007963648",
77 | "Title": "Pastel hardware kit",
78 | "Description": "Pastel hardware kits complete with custom manufactured pastel alligator clips.",
79 | "Ratings": null,
80 | "price": 140
81 | },
82 | {
83 | "id":8,
84 | "userName": "sailorhg-led",
85 | "Maker": "sailorhg",
86 | "img": "https://user-images.githubusercontent.com/41929050/61567052-13938600-aa33-11e9-9a88-cd842073ba44.jpg",
87 | "Url": "https://twitter.com/sailorhg/status/1090117277540745216",
88 | "Title": "Heart-shaped LED",
89 | "Description": "custom molded heart shaped LED with sprinkles.",
90 | "Ratings": null,
91 | "price": 105
92 | },
93 | {
94 | "id":9,
95 | "userName": "selinazawacki-soi-shirt",
96 | "Maker": "selinazawacki",
97 | "img": "https://user-images.githubusercontent.com/41929050/61567060-142c1c80-aa33-11e9-8188-5a4803844a9e.png",
98 | "Url": "https://www.instagram.com/p/BNvESj-j8PI/",
99 | "Title": "Black Sweatshirt",
100 | "Description": "Black sweatshirt hoody with the Sick of the Internet logo.",
101 | "Ratings": null,
102 | "price": 215
103 | },
104 | {
105 | "id":10,
106 | "userName": "selinazawacki-soi-pins",
107 | "Maker": "selinazawacki",
108 | "img": "https://user-images.githubusercontent.com/41929050/61567059-142c1c80-aa33-11e9-939b-2ecf4492786d.png",
109 | "Url": "https://www.instagram.com/p/BNm6hZzDoEF/",
110 | "Title": "Sick of the Internet Pins",
111 | "Description": "Still some time to enter the pin/sticker giveaway! ",
112 | "Ratings": null,
113 | "price": 210
114 | },
115 | {
116 | "id":11,
117 | "userName": "vogueandcode-hipster-dev-bro",
118 | "Maker": "vogueandcode",
119 | "img": "https://user-images.githubusercontent.com/41929050/61567061-14c4b300-aa33-11e9-9fee-63ff2c0c9823.png",
120 | "Url": "https://www.vogueandcode.com/shop/hipster-dev-bro",
121 | "Title": "Hipster Dev",
122 | "Description": "Hipster Dev is busy coding away while styled in a camo jacket and orange beanie.",
123 | "Ratings": null,
124 | "price": 75
125 | },
126 | {
127 | "id":12,
128 | "userName": "vogueandcode-pretty-girls-code-tee",
129 | "Maker": "vogueandcode",
130 | "img": "https://user-images.githubusercontent.com/41929050/61567062-14c4b300-aa33-11e9-9dcd-8bfed4ece810.png",
131 | "Url": "https://www.vogueandcode.com/shop/pretty-girls-code-tee",
132 | "Title": "Pretty Girls Code Tee",
133 | "Description": "Everyone\u2019s favorite design is finally here on a tee! The Pretty Girls Code crew-neck tee is available in a soft pink with red writing.",
134 | "Ratings": null,
135 | "price": 205
136 | },
137 | {
138 | "id":13,
139 | "userName": "vogueandcode-ruby-sis-2",
140 | "Maker": "vogueandcode",
141 | "img": "https://user-images.githubusercontent.com/41929050/61567063-14c4b300-aa33-11e9-8515-bcb866da9ea3.png",
142 | "Url": "https://www.vogueandcode.com/shop/ruby-sis-2",
143 | "Title": "Ruby Sis",
144 | "Description": "Styled in a dashiki, Ruby Sis is listening to music while coding in her favorite language, Ruby!",
145 | "Ratings": [
146 | 3,
147 | 5,
148 | 5,
149 | 4,
150 | 3,
151 | 2,
152 | 1,
153 | 4,
154 | 5,
155 | 5,
156 | 5,
157 | 5,
158 | 5,
159 | 5,
160 | 5,
161 | 5,
162 | 5,
163 | 5
164 | ],
165 | "price": 305
166 | },
167 | {
168 | "id":14,
169 | "userName": "selinazawacki-moon",
170 | "Maker": "selinazawacki",
171 | "img": "https://user-images.githubusercontent.com/41929050/61567057-142c1c80-aa33-11e9-9781-9e442418eaab.png",
172 | "Url": "https://www.instagram.com/p/BFktVYPinKQ/",
173 | "Title": "Holographic Dark Moon Necklace",
174 | "Description": "Not sure if I\u0027ll be making more, get it while I have it in the store.",
175 | "Ratings": null,
176 | "price": 140
177 | },
178 | {
179 | "id":15,
180 | "userName": "selinazawacki-shirt",
181 | "Maker": "selinazawacki",
182 | "img": "https://user-images.githubusercontent.com/41929050/61567058-142c1c80-aa33-11e9-89fb-b4f30d84d69d.png",
183 | "Url": "https://www.instagram.com/p/BEXlpiZCnJ3",
184 | "Title": "Floppy Crop",
185 | "Description": "Used up the Diskette fabric today to make 2 of these crops.",
186 | "Ratings": null,
187 | "price": 155
188 | }
189 | ]
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Store
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-demo",
3 | "version": "0.0.0",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "vue-demo",
9 | "version": "0.0.0",
10 | "dependencies": {
11 | "bootstrap": "^5.2.0",
12 | "bootstrap-icons": "^1.9.1",
13 | "vue": "^3.2.37",
14 | "vue-router": "^4.1.2",
15 | "vuex": "^4.0.2"
16 | },
17 | "devDependencies": {
18 | "@vitejs/plugin-vue": "^3.0.1",
19 | "vite": "^3.0.1"
20 | }
21 | },
22 | "node_modules/@babel/parser": {
23 | "version": "7.18.11",
24 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz",
25 | "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==",
26 | "bin": {
27 | "parser": "bin/babel-parser.js"
28 | },
29 | "engines": {
30 | "node": ">=6.0.0"
31 | }
32 | },
33 | "node_modules/@esbuild/linux-loong64": {
34 | "version": "0.14.54",
35 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz",
36 | "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==",
37 | "cpu": [
38 | "loong64"
39 | ],
40 | "dev": true,
41 | "optional": true,
42 | "os": [
43 | "linux"
44 | ],
45 | "engines": {
46 | "node": ">=12"
47 | }
48 | },
49 | "node_modules/@popperjs/core": {
50 | "version": "2.11.5",
51 | "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz",
52 | "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==",
53 | "peer": true,
54 | "funding": {
55 | "type": "opencollective",
56 | "url": "https://opencollective.com/popperjs"
57 | }
58 | },
59 | "node_modules/@vitejs/plugin-vue": {
60 | "version": "3.0.1",
61 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.0.1.tgz",
62 | "integrity": "sha512-Ll9JgxG7ONIz/XZv3dssfoMUDu9qAnlJ+km+pBA0teYSXzwPCIzS/e1bmwNYl5dcQGs677D21amgfYAnzMl17A==",
63 | "dev": true,
64 | "engines": {
65 | "node": "^14.18.0 || >=16.0.0"
66 | },
67 | "peerDependencies": {
68 | "vite": "^3.0.0",
69 | "vue": "^3.2.25"
70 | }
71 | },
72 | "node_modules/@vue/compiler-core": {
73 | "version": "3.2.37",
74 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz",
75 | "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==",
76 | "dependencies": {
77 | "@babel/parser": "^7.16.4",
78 | "@vue/shared": "3.2.37",
79 | "estree-walker": "^2.0.2",
80 | "source-map": "^0.6.1"
81 | }
82 | },
83 | "node_modules/@vue/compiler-dom": {
84 | "version": "3.2.37",
85 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz",
86 | "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==",
87 | "dependencies": {
88 | "@vue/compiler-core": "3.2.37",
89 | "@vue/shared": "3.2.37"
90 | }
91 | },
92 | "node_modules/@vue/compiler-sfc": {
93 | "version": "3.2.37",
94 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz",
95 | "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==",
96 | "dependencies": {
97 | "@babel/parser": "^7.16.4",
98 | "@vue/compiler-core": "3.2.37",
99 | "@vue/compiler-dom": "3.2.37",
100 | "@vue/compiler-ssr": "3.2.37",
101 | "@vue/reactivity-transform": "3.2.37",
102 | "@vue/shared": "3.2.37",
103 | "estree-walker": "^2.0.2",
104 | "magic-string": "^0.25.7",
105 | "postcss": "^8.1.10",
106 | "source-map": "^0.6.1"
107 | }
108 | },
109 | "node_modules/@vue/compiler-ssr": {
110 | "version": "3.2.37",
111 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz",
112 | "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==",
113 | "dependencies": {
114 | "@vue/compiler-dom": "3.2.37",
115 | "@vue/shared": "3.2.37"
116 | }
117 | },
118 | "node_modules/@vue/devtools-api": {
119 | "version": "6.2.1",
120 | "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.2.1.tgz",
121 | "integrity": "sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ=="
122 | },
123 | "node_modules/@vue/reactivity": {
124 | "version": "3.2.37",
125 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.37.tgz",
126 | "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
127 | "dependencies": {
128 | "@vue/shared": "3.2.37"
129 | }
130 | },
131 | "node_modules/@vue/reactivity-transform": {
132 | "version": "3.2.37",
133 | "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz",
134 | "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==",
135 | "dependencies": {
136 | "@babel/parser": "^7.16.4",
137 | "@vue/compiler-core": "3.2.37",
138 | "@vue/shared": "3.2.37",
139 | "estree-walker": "^2.0.2",
140 | "magic-string": "^0.25.7"
141 | }
142 | },
143 | "node_modules/@vue/runtime-core": {
144 | "version": "3.2.37",
145 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
146 | "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
147 | "dependencies": {
148 | "@vue/reactivity": "3.2.37",
149 | "@vue/shared": "3.2.37"
150 | }
151 | },
152 | "node_modules/@vue/runtime-dom": {
153 | "version": "3.2.37",
154 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
155 | "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
156 | "dependencies": {
157 | "@vue/runtime-core": "3.2.37",
158 | "@vue/shared": "3.2.37",
159 | "csstype": "^2.6.8"
160 | }
161 | },
162 | "node_modules/@vue/server-renderer": {
163 | "version": "3.2.37",
164 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
165 | "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
166 | "dependencies": {
167 | "@vue/compiler-ssr": "3.2.37",
168 | "@vue/shared": "3.2.37"
169 | },
170 | "peerDependencies": {
171 | "vue": "3.2.37"
172 | }
173 | },
174 | "node_modules/@vue/shared": {
175 | "version": "3.2.37",
176 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz",
177 | "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw=="
178 | },
179 | "node_modules/bootstrap": {
180 | "version": "5.2.0",
181 | "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.0.tgz",
182 | "integrity": "sha512-qlnS9GL6YZE6Wnef46GxGv1UpGGzAwO0aPL1yOjzDIJpeApeMvqV24iL+pjr2kU4dduoBA9fINKWKgMToobx9A==",
183 | "funding": [
184 | {
185 | "type": "github",
186 | "url": "https://github.com/sponsors/twbs"
187 | },
188 | {
189 | "type": "opencollective",
190 | "url": "https://opencollective.com/bootstrap"
191 | }
192 | ],
193 | "peerDependencies": {
194 | "@popperjs/core": "^2.11.5"
195 | }
196 | },
197 | "node_modules/bootstrap-icons": {
198 | "version": "1.9.1",
199 | "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.9.1.tgz",
200 | "integrity": "sha512-d4ZkO30MIkAhQ2nNRJqKXJVEQorALGbLWTuRxyCTJF96lRIV6imcgMehWGJUiJMJhglN0o2tqLIeDnMdiQEE9g=="
201 | },
202 | "node_modules/csstype": {
203 | "version": "2.6.20",
204 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
205 | "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
206 | },
207 | "node_modules/esbuild": {
208 | "version": "0.14.54",
209 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz",
210 | "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==",
211 | "dev": true,
212 | "hasInstallScript": true,
213 | "bin": {
214 | "esbuild": "bin/esbuild"
215 | },
216 | "engines": {
217 | "node": ">=12"
218 | },
219 | "optionalDependencies": {
220 | "@esbuild/linux-loong64": "0.14.54",
221 | "esbuild-android-64": "0.14.54",
222 | "esbuild-android-arm64": "0.14.54",
223 | "esbuild-darwin-64": "0.14.54",
224 | "esbuild-darwin-arm64": "0.14.54",
225 | "esbuild-freebsd-64": "0.14.54",
226 | "esbuild-freebsd-arm64": "0.14.54",
227 | "esbuild-linux-32": "0.14.54",
228 | "esbuild-linux-64": "0.14.54",
229 | "esbuild-linux-arm": "0.14.54",
230 | "esbuild-linux-arm64": "0.14.54",
231 | "esbuild-linux-mips64le": "0.14.54",
232 | "esbuild-linux-ppc64le": "0.14.54",
233 | "esbuild-linux-riscv64": "0.14.54",
234 | "esbuild-linux-s390x": "0.14.54",
235 | "esbuild-netbsd-64": "0.14.54",
236 | "esbuild-openbsd-64": "0.14.54",
237 | "esbuild-sunos-64": "0.14.54",
238 | "esbuild-windows-32": "0.14.54",
239 | "esbuild-windows-64": "0.14.54",
240 | "esbuild-windows-arm64": "0.14.54"
241 | }
242 | },
243 | "node_modules/esbuild-android-64": {
244 | "version": "0.14.54",
245 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz",
246 | "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==",
247 | "cpu": [
248 | "x64"
249 | ],
250 | "dev": true,
251 | "optional": true,
252 | "os": [
253 | "android"
254 | ],
255 | "engines": {
256 | "node": ">=12"
257 | }
258 | },
259 | "node_modules/esbuild-android-arm64": {
260 | "version": "0.14.54",
261 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz",
262 | "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==",
263 | "cpu": [
264 | "arm64"
265 | ],
266 | "dev": true,
267 | "optional": true,
268 | "os": [
269 | "android"
270 | ],
271 | "engines": {
272 | "node": ">=12"
273 | }
274 | },
275 | "node_modules/esbuild-darwin-64": {
276 | "version": "0.14.54",
277 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz",
278 | "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==",
279 | "cpu": [
280 | "x64"
281 | ],
282 | "dev": true,
283 | "optional": true,
284 | "os": [
285 | "darwin"
286 | ],
287 | "engines": {
288 | "node": ">=12"
289 | }
290 | },
291 | "node_modules/esbuild-darwin-arm64": {
292 | "version": "0.14.54",
293 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz",
294 | "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==",
295 | "cpu": [
296 | "arm64"
297 | ],
298 | "dev": true,
299 | "optional": true,
300 | "os": [
301 | "darwin"
302 | ],
303 | "engines": {
304 | "node": ">=12"
305 | }
306 | },
307 | "node_modules/esbuild-freebsd-64": {
308 | "version": "0.14.54",
309 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz",
310 | "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==",
311 | "cpu": [
312 | "x64"
313 | ],
314 | "dev": true,
315 | "optional": true,
316 | "os": [
317 | "freebsd"
318 | ],
319 | "engines": {
320 | "node": ">=12"
321 | }
322 | },
323 | "node_modules/esbuild-freebsd-arm64": {
324 | "version": "0.14.54",
325 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz",
326 | "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==",
327 | "cpu": [
328 | "arm64"
329 | ],
330 | "dev": true,
331 | "optional": true,
332 | "os": [
333 | "freebsd"
334 | ],
335 | "engines": {
336 | "node": ">=12"
337 | }
338 | },
339 | "node_modules/esbuild-linux-32": {
340 | "version": "0.14.54",
341 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz",
342 | "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==",
343 | "cpu": [
344 | "ia32"
345 | ],
346 | "dev": true,
347 | "optional": true,
348 | "os": [
349 | "linux"
350 | ],
351 | "engines": {
352 | "node": ">=12"
353 | }
354 | },
355 | "node_modules/esbuild-linux-64": {
356 | "version": "0.14.54",
357 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz",
358 | "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==",
359 | "cpu": [
360 | "x64"
361 | ],
362 | "dev": true,
363 | "optional": true,
364 | "os": [
365 | "linux"
366 | ],
367 | "engines": {
368 | "node": ">=12"
369 | }
370 | },
371 | "node_modules/esbuild-linux-arm": {
372 | "version": "0.14.54",
373 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz",
374 | "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==",
375 | "cpu": [
376 | "arm"
377 | ],
378 | "dev": true,
379 | "optional": true,
380 | "os": [
381 | "linux"
382 | ],
383 | "engines": {
384 | "node": ">=12"
385 | }
386 | },
387 | "node_modules/esbuild-linux-arm64": {
388 | "version": "0.14.54",
389 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz",
390 | "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==",
391 | "cpu": [
392 | "arm64"
393 | ],
394 | "dev": true,
395 | "optional": true,
396 | "os": [
397 | "linux"
398 | ],
399 | "engines": {
400 | "node": ">=12"
401 | }
402 | },
403 | "node_modules/esbuild-linux-mips64le": {
404 | "version": "0.14.54",
405 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz",
406 | "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==",
407 | "cpu": [
408 | "mips64el"
409 | ],
410 | "dev": true,
411 | "optional": true,
412 | "os": [
413 | "linux"
414 | ],
415 | "engines": {
416 | "node": ">=12"
417 | }
418 | },
419 | "node_modules/esbuild-linux-ppc64le": {
420 | "version": "0.14.54",
421 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz",
422 | "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==",
423 | "cpu": [
424 | "ppc64"
425 | ],
426 | "dev": true,
427 | "optional": true,
428 | "os": [
429 | "linux"
430 | ],
431 | "engines": {
432 | "node": ">=12"
433 | }
434 | },
435 | "node_modules/esbuild-linux-riscv64": {
436 | "version": "0.14.54",
437 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz",
438 | "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==",
439 | "cpu": [
440 | "riscv64"
441 | ],
442 | "dev": true,
443 | "optional": true,
444 | "os": [
445 | "linux"
446 | ],
447 | "engines": {
448 | "node": ">=12"
449 | }
450 | },
451 | "node_modules/esbuild-linux-s390x": {
452 | "version": "0.14.54",
453 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz",
454 | "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==",
455 | "cpu": [
456 | "s390x"
457 | ],
458 | "dev": true,
459 | "optional": true,
460 | "os": [
461 | "linux"
462 | ],
463 | "engines": {
464 | "node": ">=12"
465 | }
466 | },
467 | "node_modules/esbuild-netbsd-64": {
468 | "version": "0.14.54",
469 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz",
470 | "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==",
471 | "cpu": [
472 | "x64"
473 | ],
474 | "dev": true,
475 | "optional": true,
476 | "os": [
477 | "netbsd"
478 | ],
479 | "engines": {
480 | "node": ">=12"
481 | }
482 | },
483 | "node_modules/esbuild-openbsd-64": {
484 | "version": "0.14.54",
485 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz",
486 | "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==",
487 | "cpu": [
488 | "x64"
489 | ],
490 | "dev": true,
491 | "optional": true,
492 | "os": [
493 | "openbsd"
494 | ],
495 | "engines": {
496 | "node": ">=12"
497 | }
498 | },
499 | "node_modules/esbuild-sunos-64": {
500 | "version": "0.14.54",
501 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz",
502 | "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==",
503 | "cpu": [
504 | "x64"
505 | ],
506 | "dev": true,
507 | "optional": true,
508 | "os": [
509 | "sunos"
510 | ],
511 | "engines": {
512 | "node": ">=12"
513 | }
514 | },
515 | "node_modules/esbuild-windows-32": {
516 | "version": "0.14.54",
517 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz",
518 | "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==",
519 | "cpu": [
520 | "ia32"
521 | ],
522 | "dev": true,
523 | "optional": true,
524 | "os": [
525 | "win32"
526 | ],
527 | "engines": {
528 | "node": ">=12"
529 | }
530 | },
531 | "node_modules/esbuild-windows-64": {
532 | "version": "0.14.54",
533 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz",
534 | "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==",
535 | "cpu": [
536 | "x64"
537 | ],
538 | "dev": true,
539 | "optional": true,
540 | "os": [
541 | "win32"
542 | ],
543 | "engines": {
544 | "node": ">=12"
545 | }
546 | },
547 | "node_modules/esbuild-windows-arm64": {
548 | "version": "0.14.54",
549 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz",
550 | "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==",
551 | "cpu": [
552 | "arm64"
553 | ],
554 | "dev": true,
555 | "optional": true,
556 | "os": [
557 | "win32"
558 | ],
559 | "engines": {
560 | "node": ">=12"
561 | }
562 | },
563 | "node_modules/estree-walker": {
564 | "version": "2.0.2",
565 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
566 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
567 | },
568 | "node_modules/fsevents": {
569 | "version": "2.3.2",
570 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
571 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
572 | "dev": true,
573 | "hasInstallScript": true,
574 | "optional": true,
575 | "os": [
576 | "darwin"
577 | ],
578 | "engines": {
579 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
580 | }
581 | },
582 | "node_modules/function-bind": {
583 | "version": "1.1.1",
584 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
585 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
586 | "dev": true
587 | },
588 | "node_modules/has": {
589 | "version": "1.0.3",
590 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
591 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
592 | "dev": true,
593 | "dependencies": {
594 | "function-bind": "^1.1.1"
595 | },
596 | "engines": {
597 | "node": ">= 0.4.0"
598 | }
599 | },
600 | "node_modules/is-core-module": {
601 | "version": "2.10.0",
602 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz",
603 | "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
604 | "dev": true,
605 | "dependencies": {
606 | "has": "^1.0.3"
607 | },
608 | "funding": {
609 | "url": "https://github.com/sponsors/ljharb"
610 | }
611 | },
612 | "node_modules/magic-string": {
613 | "version": "0.25.9",
614 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
615 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
616 | "dependencies": {
617 | "sourcemap-codec": "^1.4.8"
618 | }
619 | },
620 | "node_modules/nanoid": {
621 | "version": "3.3.4",
622 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
623 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
624 | "bin": {
625 | "nanoid": "bin/nanoid.cjs"
626 | },
627 | "engines": {
628 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
629 | }
630 | },
631 | "node_modules/path-parse": {
632 | "version": "1.0.7",
633 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
634 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
635 | "dev": true
636 | },
637 | "node_modules/picocolors": {
638 | "version": "1.0.0",
639 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
640 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
641 | },
642 | "node_modules/postcss": {
643 | "version": "8.4.16",
644 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz",
645 | "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==",
646 | "funding": [
647 | {
648 | "type": "opencollective",
649 | "url": "https://opencollective.com/postcss/"
650 | },
651 | {
652 | "type": "tidelift",
653 | "url": "https://tidelift.com/funding/github/npm/postcss"
654 | }
655 | ],
656 | "dependencies": {
657 | "nanoid": "^3.3.4",
658 | "picocolors": "^1.0.0",
659 | "source-map-js": "^1.0.2"
660 | },
661 | "engines": {
662 | "node": "^10 || ^12 || >=14"
663 | }
664 | },
665 | "node_modules/resolve": {
666 | "version": "1.22.1",
667 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
668 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
669 | "dev": true,
670 | "dependencies": {
671 | "is-core-module": "^2.9.0",
672 | "path-parse": "^1.0.7",
673 | "supports-preserve-symlinks-flag": "^1.0.0"
674 | },
675 | "bin": {
676 | "resolve": "bin/resolve"
677 | },
678 | "funding": {
679 | "url": "https://github.com/sponsors/ljharb"
680 | }
681 | },
682 | "node_modules/rollup": {
683 | "version": "2.77.2",
684 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.2.tgz",
685 | "integrity": "sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==",
686 | "dev": true,
687 | "bin": {
688 | "rollup": "dist/bin/rollup"
689 | },
690 | "engines": {
691 | "node": ">=10.0.0"
692 | },
693 | "optionalDependencies": {
694 | "fsevents": "~2.3.2"
695 | }
696 | },
697 | "node_modules/source-map": {
698 | "version": "0.6.1",
699 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
700 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
701 | "engines": {
702 | "node": ">=0.10.0"
703 | }
704 | },
705 | "node_modules/source-map-js": {
706 | "version": "1.0.2",
707 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
708 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
709 | "engines": {
710 | "node": ">=0.10.0"
711 | }
712 | },
713 | "node_modules/sourcemap-codec": {
714 | "version": "1.4.8",
715 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
716 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
717 | },
718 | "node_modules/supports-preserve-symlinks-flag": {
719 | "version": "1.0.0",
720 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
721 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
722 | "dev": true,
723 | "engines": {
724 | "node": ">= 0.4"
725 | },
726 | "funding": {
727 | "url": "https://github.com/sponsors/ljharb"
728 | }
729 | },
730 | "node_modules/vite": {
731 | "version": "3.0.5",
732 | "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.5.tgz",
733 | "integrity": "sha512-bRvrt9Tw8EGW4jj64aYFTnVg134E8hgDxyl/eEHnxiGqYk7/pTPss6CWlurqPOUzqvEoZkZ58Ws+Iu8MB87iMA==",
734 | "dev": true,
735 | "dependencies": {
736 | "esbuild": "^0.14.47",
737 | "postcss": "^8.4.16",
738 | "resolve": "^1.22.1",
739 | "rollup": "^2.75.6"
740 | },
741 | "bin": {
742 | "vite": "bin/vite.js"
743 | },
744 | "engines": {
745 | "node": "^14.18.0 || >=16.0.0"
746 | },
747 | "optionalDependencies": {
748 | "fsevents": "~2.3.2"
749 | },
750 | "peerDependencies": {
751 | "less": "*",
752 | "sass": "*",
753 | "stylus": "*",
754 | "terser": "^5.4.0"
755 | },
756 | "peerDependenciesMeta": {
757 | "less": {
758 | "optional": true
759 | },
760 | "sass": {
761 | "optional": true
762 | },
763 | "stylus": {
764 | "optional": true
765 | },
766 | "terser": {
767 | "optional": true
768 | }
769 | }
770 | },
771 | "node_modules/vue": {
772 | "version": "3.2.37",
773 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.37.tgz",
774 | "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
775 | "dependencies": {
776 | "@vue/compiler-dom": "3.2.37",
777 | "@vue/compiler-sfc": "3.2.37",
778 | "@vue/runtime-dom": "3.2.37",
779 | "@vue/server-renderer": "3.2.37",
780 | "@vue/shared": "3.2.37"
781 | }
782 | },
783 | "node_modules/vue-router": {
784 | "version": "4.1.3",
785 | "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.3.tgz",
786 | "integrity": "sha512-XvK81bcYglKiayT7/vYAg/f36ExPC4t90R/HIpzrZ5x+17BOWptXLCrEPufGgZeuq68ww4ekSIMBZY1qdUdfjA==",
787 | "dependencies": {
788 | "@vue/devtools-api": "^6.1.4"
789 | },
790 | "funding": {
791 | "url": "https://github.com/sponsors/posva"
792 | },
793 | "peerDependencies": {
794 | "vue": "^3.2.0"
795 | }
796 | },
797 | "node_modules/vuex": {
798 | "version": "4.0.2",
799 | "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.2.tgz",
800 | "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==",
801 | "dependencies": {
802 | "@vue/devtools-api": "^6.0.0-beta.11"
803 | },
804 | "peerDependencies": {
805 | "vue": "^3.0.2"
806 | }
807 | }
808 | },
809 | "dependencies": {
810 | "@babel/parser": {
811 | "version": "7.18.11",
812 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz",
813 | "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ=="
814 | },
815 | "@esbuild/linux-loong64": {
816 | "version": "0.14.54",
817 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz",
818 | "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==",
819 | "dev": true,
820 | "optional": true
821 | },
822 | "@popperjs/core": {
823 | "version": "2.11.5",
824 | "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz",
825 | "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==",
826 | "peer": true
827 | },
828 | "@vitejs/plugin-vue": {
829 | "version": "3.0.1",
830 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.0.1.tgz",
831 | "integrity": "sha512-Ll9JgxG7ONIz/XZv3dssfoMUDu9qAnlJ+km+pBA0teYSXzwPCIzS/e1bmwNYl5dcQGs677D21amgfYAnzMl17A==",
832 | "dev": true,
833 | "requires": {}
834 | },
835 | "@vue/compiler-core": {
836 | "version": "3.2.37",
837 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz",
838 | "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==",
839 | "requires": {
840 | "@babel/parser": "^7.16.4",
841 | "@vue/shared": "3.2.37",
842 | "estree-walker": "^2.0.2",
843 | "source-map": "^0.6.1"
844 | }
845 | },
846 | "@vue/compiler-dom": {
847 | "version": "3.2.37",
848 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz",
849 | "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==",
850 | "requires": {
851 | "@vue/compiler-core": "3.2.37",
852 | "@vue/shared": "3.2.37"
853 | }
854 | },
855 | "@vue/compiler-sfc": {
856 | "version": "3.2.37",
857 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz",
858 | "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==",
859 | "requires": {
860 | "@babel/parser": "^7.16.4",
861 | "@vue/compiler-core": "3.2.37",
862 | "@vue/compiler-dom": "3.2.37",
863 | "@vue/compiler-ssr": "3.2.37",
864 | "@vue/reactivity-transform": "3.2.37",
865 | "@vue/shared": "3.2.37",
866 | "estree-walker": "^2.0.2",
867 | "magic-string": "^0.25.7",
868 | "postcss": "^8.1.10",
869 | "source-map": "^0.6.1"
870 | }
871 | },
872 | "@vue/compiler-ssr": {
873 | "version": "3.2.37",
874 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz",
875 | "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==",
876 | "requires": {
877 | "@vue/compiler-dom": "3.2.37",
878 | "@vue/shared": "3.2.37"
879 | }
880 | },
881 | "@vue/devtools-api": {
882 | "version": "6.2.1",
883 | "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.2.1.tgz",
884 | "integrity": "sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ=="
885 | },
886 | "@vue/reactivity": {
887 | "version": "3.2.37",
888 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.37.tgz",
889 | "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
890 | "requires": {
891 | "@vue/shared": "3.2.37"
892 | }
893 | },
894 | "@vue/reactivity-transform": {
895 | "version": "3.2.37",
896 | "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz",
897 | "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==",
898 | "requires": {
899 | "@babel/parser": "^7.16.4",
900 | "@vue/compiler-core": "3.2.37",
901 | "@vue/shared": "3.2.37",
902 | "estree-walker": "^2.0.2",
903 | "magic-string": "^0.25.7"
904 | }
905 | },
906 | "@vue/runtime-core": {
907 | "version": "3.2.37",
908 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
909 | "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
910 | "requires": {
911 | "@vue/reactivity": "3.2.37",
912 | "@vue/shared": "3.2.37"
913 | }
914 | },
915 | "@vue/runtime-dom": {
916 | "version": "3.2.37",
917 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
918 | "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
919 | "requires": {
920 | "@vue/runtime-core": "3.2.37",
921 | "@vue/shared": "3.2.37",
922 | "csstype": "^2.6.8"
923 | }
924 | },
925 | "@vue/server-renderer": {
926 | "version": "3.2.37",
927 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
928 | "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
929 | "requires": {
930 | "@vue/compiler-ssr": "3.2.37",
931 | "@vue/shared": "3.2.37"
932 | }
933 | },
934 | "@vue/shared": {
935 | "version": "3.2.37",
936 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz",
937 | "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw=="
938 | },
939 | "bootstrap": {
940 | "version": "5.2.0",
941 | "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.0.tgz",
942 | "integrity": "sha512-qlnS9GL6YZE6Wnef46GxGv1UpGGzAwO0aPL1yOjzDIJpeApeMvqV24iL+pjr2kU4dduoBA9fINKWKgMToobx9A==",
943 | "requires": {}
944 | },
945 | "bootstrap-icons": {
946 | "version": "1.9.1",
947 | "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.9.1.tgz",
948 | "integrity": "sha512-d4ZkO30MIkAhQ2nNRJqKXJVEQorALGbLWTuRxyCTJF96lRIV6imcgMehWGJUiJMJhglN0o2tqLIeDnMdiQEE9g=="
949 | },
950 | "csstype": {
951 | "version": "2.6.20",
952 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
953 | "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
954 | },
955 | "esbuild": {
956 | "version": "0.14.54",
957 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz",
958 | "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==",
959 | "dev": true,
960 | "requires": {
961 | "@esbuild/linux-loong64": "0.14.54",
962 | "esbuild-android-64": "0.14.54",
963 | "esbuild-android-arm64": "0.14.54",
964 | "esbuild-darwin-64": "0.14.54",
965 | "esbuild-darwin-arm64": "0.14.54",
966 | "esbuild-freebsd-64": "0.14.54",
967 | "esbuild-freebsd-arm64": "0.14.54",
968 | "esbuild-linux-32": "0.14.54",
969 | "esbuild-linux-64": "0.14.54",
970 | "esbuild-linux-arm": "0.14.54",
971 | "esbuild-linux-arm64": "0.14.54",
972 | "esbuild-linux-mips64le": "0.14.54",
973 | "esbuild-linux-ppc64le": "0.14.54",
974 | "esbuild-linux-riscv64": "0.14.54",
975 | "esbuild-linux-s390x": "0.14.54",
976 | "esbuild-netbsd-64": "0.14.54",
977 | "esbuild-openbsd-64": "0.14.54",
978 | "esbuild-sunos-64": "0.14.54",
979 | "esbuild-windows-32": "0.14.54",
980 | "esbuild-windows-64": "0.14.54",
981 | "esbuild-windows-arm64": "0.14.54"
982 | }
983 | },
984 | "esbuild-android-64": {
985 | "version": "0.14.54",
986 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz",
987 | "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==",
988 | "dev": true,
989 | "optional": true
990 | },
991 | "esbuild-android-arm64": {
992 | "version": "0.14.54",
993 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz",
994 | "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==",
995 | "dev": true,
996 | "optional": true
997 | },
998 | "esbuild-darwin-64": {
999 | "version": "0.14.54",
1000 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz",
1001 | "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==",
1002 | "dev": true,
1003 | "optional": true
1004 | },
1005 | "esbuild-darwin-arm64": {
1006 | "version": "0.14.54",
1007 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz",
1008 | "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==",
1009 | "dev": true,
1010 | "optional": true
1011 | },
1012 | "esbuild-freebsd-64": {
1013 | "version": "0.14.54",
1014 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz",
1015 | "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==",
1016 | "dev": true,
1017 | "optional": true
1018 | },
1019 | "esbuild-freebsd-arm64": {
1020 | "version": "0.14.54",
1021 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz",
1022 | "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==",
1023 | "dev": true,
1024 | "optional": true
1025 | },
1026 | "esbuild-linux-32": {
1027 | "version": "0.14.54",
1028 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz",
1029 | "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==",
1030 | "dev": true,
1031 | "optional": true
1032 | },
1033 | "esbuild-linux-64": {
1034 | "version": "0.14.54",
1035 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz",
1036 | "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==",
1037 | "dev": true,
1038 | "optional": true
1039 | },
1040 | "esbuild-linux-arm": {
1041 | "version": "0.14.54",
1042 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz",
1043 | "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==",
1044 | "dev": true,
1045 | "optional": true
1046 | },
1047 | "esbuild-linux-arm64": {
1048 | "version": "0.14.54",
1049 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz",
1050 | "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==",
1051 | "dev": true,
1052 | "optional": true
1053 | },
1054 | "esbuild-linux-mips64le": {
1055 | "version": "0.14.54",
1056 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz",
1057 | "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==",
1058 | "dev": true,
1059 | "optional": true
1060 | },
1061 | "esbuild-linux-ppc64le": {
1062 | "version": "0.14.54",
1063 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz",
1064 | "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==",
1065 | "dev": true,
1066 | "optional": true
1067 | },
1068 | "esbuild-linux-riscv64": {
1069 | "version": "0.14.54",
1070 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz",
1071 | "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==",
1072 | "dev": true,
1073 | "optional": true
1074 | },
1075 | "esbuild-linux-s390x": {
1076 | "version": "0.14.54",
1077 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz",
1078 | "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==",
1079 | "dev": true,
1080 | "optional": true
1081 | },
1082 | "esbuild-netbsd-64": {
1083 | "version": "0.14.54",
1084 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz",
1085 | "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==",
1086 | "dev": true,
1087 | "optional": true
1088 | },
1089 | "esbuild-openbsd-64": {
1090 | "version": "0.14.54",
1091 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz",
1092 | "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==",
1093 | "dev": true,
1094 | "optional": true
1095 | },
1096 | "esbuild-sunos-64": {
1097 | "version": "0.14.54",
1098 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz",
1099 | "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==",
1100 | "dev": true,
1101 | "optional": true
1102 | },
1103 | "esbuild-windows-32": {
1104 | "version": "0.14.54",
1105 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz",
1106 | "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==",
1107 | "dev": true,
1108 | "optional": true
1109 | },
1110 | "esbuild-windows-64": {
1111 | "version": "0.14.54",
1112 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz",
1113 | "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==",
1114 | "dev": true,
1115 | "optional": true
1116 | },
1117 | "esbuild-windows-arm64": {
1118 | "version": "0.14.54",
1119 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz",
1120 | "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==",
1121 | "dev": true,
1122 | "optional": true
1123 | },
1124 | "estree-walker": {
1125 | "version": "2.0.2",
1126 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
1127 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
1128 | },
1129 | "fsevents": {
1130 | "version": "2.3.2",
1131 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1132 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1133 | "dev": true,
1134 | "optional": true
1135 | },
1136 | "function-bind": {
1137 | "version": "1.1.1",
1138 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1139 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1140 | "dev": true
1141 | },
1142 | "has": {
1143 | "version": "1.0.3",
1144 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1145 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1146 | "dev": true,
1147 | "requires": {
1148 | "function-bind": "^1.1.1"
1149 | }
1150 | },
1151 | "is-core-module": {
1152 | "version": "2.10.0",
1153 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz",
1154 | "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==",
1155 | "dev": true,
1156 | "requires": {
1157 | "has": "^1.0.3"
1158 | }
1159 | },
1160 | "magic-string": {
1161 | "version": "0.25.9",
1162 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
1163 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
1164 | "requires": {
1165 | "sourcemap-codec": "^1.4.8"
1166 | }
1167 | },
1168 | "nanoid": {
1169 | "version": "3.3.4",
1170 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
1171 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
1172 | },
1173 | "path-parse": {
1174 | "version": "1.0.7",
1175 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1176 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1177 | "dev": true
1178 | },
1179 | "picocolors": {
1180 | "version": "1.0.0",
1181 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1182 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
1183 | },
1184 | "postcss": {
1185 | "version": "8.4.16",
1186 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz",
1187 | "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==",
1188 | "requires": {
1189 | "nanoid": "^3.3.4",
1190 | "picocolors": "^1.0.0",
1191 | "source-map-js": "^1.0.2"
1192 | }
1193 | },
1194 | "resolve": {
1195 | "version": "1.22.1",
1196 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
1197 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
1198 | "dev": true,
1199 | "requires": {
1200 | "is-core-module": "^2.9.0",
1201 | "path-parse": "^1.0.7",
1202 | "supports-preserve-symlinks-flag": "^1.0.0"
1203 | }
1204 | },
1205 | "rollup": {
1206 | "version": "2.77.2",
1207 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.77.2.tgz",
1208 | "integrity": "sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==",
1209 | "dev": true,
1210 | "requires": {
1211 | "fsevents": "~2.3.2"
1212 | }
1213 | },
1214 | "source-map": {
1215 | "version": "0.6.1",
1216 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1217 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
1218 | },
1219 | "source-map-js": {
1220 | "version": "1.0.2",
1221 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
1222 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
1223 | },
1224 | "sourcemap-codec": {
1225 | "version": "1.4.8",
1226 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
1227 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
1228 | },
1229 | "supports-preserve-symlinks-flag": {
1230 | "version": "1.0.0",
1231 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1232 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1233 | "dev": true
1234 | },
1235 | "vite": {
1236 | "version": "3.0.5",
1237 | "resolved": "https://registry.npmjs.org/vite/-/vite-3.0.5.tgz",
1238 | "integrity": "sha512-bRvrt9Tw8EGW4jj64aYFTnVg134E8hgDxyl/eEHnxiGqYk7/pTPss6CWlurqPOUzqvEoZkZ58Ws+Iu8MB87iMA==",
1239 | "dev": true,
1240 | "requires": {
1241 | "esbuild": "^0.14.47",
1242 | "fsevents": "~2.3.2",
1243 | "postcss": "^8.4.16",
1244 | "resolve": "^1.22.1",
1245 | "rollup": "^2.75.6"
1246 | }
1247 | },
1248 | "vue": {
1249 | "version": "3.2.37",
1250 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.37.tgz",
1251 | "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
1252 | "requires": {
1253 | "@vue/compiler-dom": "3.2.37",
1254 | "@vue/compiler-sfc": "3.2.37",
1255 | "@vue/runtime-dom": "3.2.37",
1256 | "@vue/server-renderer": "3.2.37",
1257 | "@vue/shared": "3.2.37"
1258 | }
1259 | },
1260 | "vue-router": {
1261 | "version": "4.1.3",
1262 | "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.3.tgz",
1263 | "integrity": "sha512-XvK81bcYglKiayT7/vYAg/f36ExPC4t90R/HIpzrZ5x+17BOWptXLCrEPufGgZeuq68ww4ekSIMBZY1qdUdfjA==",
1264 | "requires": {
1265 | "@vue/devtools-api": "^6.1.4"
1266 | }
1267 | },
1268 | "vuex": {
1269 | "version": "4.0.2",
1270 | "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.0.2.tgz",
1271 | "integrity": "sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==",
1272 | "requires": {
1273 | "@vue/devtools-api": "^6.0.0-beta.11"
1274 | }
1275 | }
1276 | }
1277 | }
1278 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-demo",
3 | "version": "0.0.0",
4 | "scripts": {
5 | "dev": "vite",
6 | "build": "vite build",
7 | "preview": "vite preview --port 4173"
8 | },
9 | "dependencies": {
10 | "bootstrap": "^5.2.0",
11 | "bootstrap-icons": "^1.9.1",
12 | "vue": "^3.2.37",
13 | "vue-router": "^4.1.2",
14 | "vuex": "^4.0.2"
15 | },
16 | "devDependencies": {
17 | "@vitejs/plugin-vue": "^3.0.1",
18 | "vite": "^3.0.1"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ozmenab/vue-js-demo/6df6943fbe7a72051abb1b315f04074a6c262bc8/public/favicon.ico
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
24 |
25 |
27 |
--------------------------------------------------------------------------------
/src/assets/base.css:
--------------------------------------------------------------------------------
1 | /* color palette from */
2 | :root {
3 | --vt-c-white: #ffffff;
4 | --vt-c-white-soft: #f8f8f8;
5 | --vt-c-white-mute: #f2f2f2;
6 |
7 | --vt-c-black: #181818;
8 | --vt-c-black-soft: #222222;
9 | --vt-c-black-mute: #282828;
10 |
11 | --vt-c-indigo: #2c3e50;
12 |
13 | --vt-c-divider-light-1: rgba(60, 60, 60, 0.29);
14 | --vt-c-divider-light-2: rgba(60, 60, 60, 0.12);
15 | --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);
16 | --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);
17 |
18 | --vt-c-text-light-1: var(--vt-c-indigo);
19 | --vt-c-text-light-2: rgba(60, 60, 60, 0.66);
20 | --vt-c-text-dark-1: var(--vt-c-white);
21 | --vt-c-text-dark-2: rgba(235, 235, 235, 0.64);
22 | }
23 |
24 | /* semantic color variables for this project */
25 | :root {
26 | --color-background: var(--vt-c-white);
27 | --color-background-soft: var(--vt-c-white-soft);
28 | --color-background-mute: var(--vt-c-white-mute);
29 |
30 | --color-border: var(--vt-c-divider-light-2);
31 | --color-border-hover: var(--vt-c-divider-light-1);
32 |
33 | --color-heading: var(--vt-c-text-light-1);
34 | --color-text: var(--vt-c-text-light-1);
35 |
36 | --section-gap: 160px;
37 | }
38 |
39 | @media (prefers-color-scheme: dark) {
40 | :root {
41 | --color-background: var(--vt-c-black);
42 | --color-background-soft: var(--vt-c-black-soft);
43 | --color-background-mute: var(--vt-c-black-mute);
44 |
45 | --color-border: var(--vt-c-divider-dark-2);
46 | --color-border-hover: var(--vt-c-divider-dark-1);
47 |
48 | --color-heading: var(--vt-c-text-dark-1);
49 | --color-text: var(--vt-c-text-dark-2);
50 | }
51 | }
52 |
53 | *,
54 | *::before,
55 | *::after {
56 | box-sizing: border-box;
57 | margin: 0;
58 | position: relative;
59 | font-weight: normal;
60 | }
61 |
62 | body {
63 | min-height: 100vh;
64 | color: var(--color-text);
65 | background: var(--color-background);
66 | transition: color 0.5s, background-color 0.5s;
67 | line-height: 1.6;
68 | font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu,
69 | Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
70 | font-size: 15px;
71 | text-rendering: optimizeLegibility;
72 | -webkit-font-smoothing: antialiased;
73 | -moz-osx-font-smoothing: grayscale;
74 | }
75 |
--------------------------------------------------------------------------------
/src/assets/logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/main.css:
--------------------------------------------------------------------------------
1 | @import "./base.css";
2 |
3 | #app {
4 | max-width: 1280px;
5 | margin: 0 auto;
6 | padding: 2rem;
7 |
8 | font-weight: normal;
9 | }
10 |
11 | a,
12 | .green {
13 | text-decoration: none;
14 | color: hsla(160, 100%, 37%, 1);
15 | transition: 0.4s;
16 | }
17 |
18 | @media (hover: hover) {
19 | a:hover {
20 | background-color: hsla(160, 100%, 37%, 0.2);
21 | }
22 | }
23 |
24 | @media (min-width: 1024px) {
25 | body {
26 | display: flex;
27 | place-items: center;
28 | }
29 |
30 | #app {
31 | display: grid;
32 | grid-template-columns: 1fr 1fr;
33 | padding: 0 2rem;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/components/TopMenu.vue:
--------------------------------------------------------------------------------
1 |
2 |
30 |
31 |
56 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import { createApp } from 'vue'
2 | import App from './App.vue'
3 | import router from './router'
4 | import 'bootstrap'
5 | import 'bootstrap-icons/font/bootstrap-icons.css'
6 | import 'bootstrap/dist/css/bootstrap.min.css'
7 | import 'bootstrap/dist/js/bootstrap.bundle'
8 |
9 | import store from './store/store'
10 |
11 |
12 |
13 | const app = createApp(App)
14 |
15 | app.use(router);
16 | app.use(store);
17 | app.mount('#app');
18 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import { createRouter, createWebHistory } from 'vue-router'
2 | import ProductList from '../views/ProductList.vue'
3 | import ProductDetails from '../views/ProductDetails.vue'
4 | import ShoppingCart from '../views/ShoppingCart.vue'
5 |
6 | const router = createRouter({
7 | history: createWebHistory(import.meta.env.BASE_URL),
8 | routes: [
9 | {
10 | path: '/',
11 | name: 'ProductList',
12 | component: ProductList
13 | },
14 | {
15 | path: '/cart',
16 | name: 'ShoppingCart',
17 | component: ShoppingCart
18 | },
19 | {
20 | path: '/productDetails/:id',
21 | name: 'ProductDetails',
22 | component: ProductDetails
23 | }
24 | ]
25 | })
26 |
27 | export default router;
28 |
--------------------------------------------------------------------------------
/src/store/store.js:
--------------------------------------------------------------------------------
1 | import { createStore } from "vuex";
2 | import data from '../../data/data';
3 |
4 | const store = createStore({
5 | state: {
6 | productList: data,
7 | cartItems: [],
8 | searchList: data,
9 | product: {}
10 | },
11 | getters: {
12 | _productList: state => state.productList,
13 | _cartItems: state => state.cartItems,
14 | _searchList: state => state.searchList,
15 | _product: state => state.product
16 | },
17 | // Async
18 | actions: {
19 | addToCart(context, payload) {
20 | context.commit("addToCart", payload);
21 | },
22 | searchList(context, payload) {
23 | context.commit("searchList", payload);
24 | },
25 | getOneProduct(context,payload){
26 | context.commit("getOneProduct",payload)
27 | }
28 | },
29 | // Not Async
30 | mutations: {
31 | addToCart(state, payload) {
32 | state.cartItems.push(payload);
33 | },
34 | searchList(state, payload) {
35 | state.searchList = state.productList.filter((product) => product.Title.toLowerCase().includes(payload.toLowerCase()));
36 | },
37 | getOneProduct(state,payload){
38 | state.product=state.productList.filter((product)=> product.id==payload)
39 | }
40 | }
41 | });
42 |
43 | export default store;
--------------------------------------------------------------------------------
/src/views/ProductDetails.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
16 |
17 |
18 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
Rated 4.0/5
30 |
31 |
32 |
33 |
34 |
{{ product[0].Description }}
35 |
36 |
37 |
38 |
41 |
VISA Platinum
42 |
43 |
44 |
45 |
46 |
47 |
Cancel
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/src/views/ProductList.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
21 |
22 |
{{ product.Title }}
23 |
24 | {{ product.Description }}
25 |
26 |
27 |
28 |
29 |
${{ product.price }}
30 |
31 |
Free shipping
32 |
33 |
35 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
76 |
77 |
--------------------------------------------------------------------------------
/src/views/ShoppingCart.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
Receipt
13 |
Receipt Voucher : 1KAU9-84UIL
14 |
15 |
16 |
17 |
18 |
19 |
![Phone]()
20 |
21 |
23 |
{{ item.Title }}
24 |
25 |
27 |
28 |
29 |
31 |
32 |
33 |
35 |
36 |
37 |
39 |
${{ item.price }}
40 |
41 |
42 |
43 |
44 |
47 |
48 |
53 |
54 |
Out for delivary
55 |
Delivered
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
Order Details
65 |
Total ${{total}}
66 |
67 |
68 |
82 |
83 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
--------------------------------------------------------------------------------
/vite.config.js:
--------------------------------------------------------------------------------
1 | import { fileURLToPath, URL } from 'node:url'
2 |
3 | import { defineConfig } from 'vite'
4 | import vue from '@vitejs/plugin-vue'
5 |
6 | // https://vitejs.dev/config/
7 | export default defineConfig({
8 | plugins: [vue()],
9 | resolve: {
10 | alias: {
11 | '@': fileURLToPath(new URL('./src', import.meta.url))
12 | }
13 | }
14 | })
15 |
--------------------------------------------------------------------------------