├── .gitignore
├── README.md
├── index.html
├── package-lock.json
├── package.json
├── public
└── favicon.ico
├── src
├── App.vue
├── components
│ ├── Footer.vue
│ ├── Heads.vue
│ ├── Nav.vue
│ └── Refs.vue
├── layouts
│ ├── DefaultLayout.vue
│ └── MainLayout.vue
├── main.js
├── router
│ └── index.js
└── views
│ ├── About.vue
│ ├── Contacts.vue
│ └── Home.vue
└── vite.config.js
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .history
3 | dist
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # NEW VERSION
2 |
3 | >I have created a **NEW VERSION** of the project at address https://github.com/howbizarre/starter-template-vue-3-bootstrap-5-sass-dark-theme-typescript
4 |
5 | **TypeScript** support and **Dark theme** switcher are included in the new version.
6 |
7 | I will add this version to a public archive in due course.
8 | The new version is written on **Vue Composition API** and has full **Typescript** support.
9 |
10 | ___
11 |
12 | # Boilerplate for Vue 3 with Vite and Bootstrap 5 with Icons
13 |
14 | ## Table of Contents
15 |
16 | - [Getting Started](#getting-started) - the easy way (TLDR)
17 | - [Enviroment](#enviroment) - step by step to boilerplate
18 | - [Requirements](#requirements)
19 | - [Node JS and NPM](#node-js-and-npm)
20 | - [Vue JS v3, SFC and Vue CLI](#vue-js-v3-sfc-and-vue-cli)
21 | - [Packages](#packages)
22 | - [Vite](#vite)
23 | - [Vue router](#vue-router)
24 | - [Bootstrap 5, Bootstrap Icons and Proper](#bootstrap-5-bootstrap-icons-and-proper)
25 | - [Sass](#sass)
26 | - [Install and Run](#install-and-run)
27 | - [Boilerplate](#boilerplate)
28 | - [Clear project](#clear-project)
29 | - [Get Boilerplate files](#get-boilerplate-files)
30 | - [Source code](#source-code)
31 | - [License](#license)
32 |
33 | ## Getting Started
34 |
35 | 1. Изтеглете последната версия
36 | > [**EN**] Download the latest version
37 |
38 | Свалете си последната версия от [GitHub](https://github.com/howbizarre/starter-template_vue-3-vite-bootstrap-5-with-icons/releases). Разархиврате във ваша папка или в папката със сваления архив (архива съдържа собствена папка).
39 |
40 | > [**EN**]
41 | >
42 | > Download the latest version from [GitHub](https://github.com/howbizarre/starter-template_vue-3-vite-bootstrap-5-with-icons/releases). Unzip the archive in to your folder or in to the download folder (the archive contains its own folder).
43 |
44 | Ако имате инсталиран [Git] може да клонирате проекта във ваша папка с командата:
45 |
46 | > [**EN**]
47 | >
48 | > If you have Git installed you can clone the project in your folder with the command:
49 |
50 | ```sh
51 | git clone https://github.com/howbizarre/starter-template_vue-3-vite-bootstrap-5-with-icons
52 | ```
53 |
54 | 2. Създайте шаблона
55 | > [**EN**] Create the boilerplate
56 |
57 | От конзолата (_command prompth_) отивате в папката, в която е `package.json` файла и стартирате следните команди:
58 |
59 | > [**EN**]
60 | >
61 | > From the console (_command prompt_) go to the folder where the `package.json` file is located and run the following commands:
62 |
63 | ```sh
64 | npm install
65 | ```
66 |
67 | ```sh
68 | npm run dev
69 | ```
70 |
71 | И това е всичко.
72 |
73 | > [**EN**]
74 | >
75 | > That's all folks
76 |
77 | По долу съм описал постъпково, как да си направите сами Vue 3 Boilerplate with Bootstrap 5.
78 |
79 | > [**EN**]
80 | >
81 | > Below I have described step by step how to make your own Vue 3 Boilerplate with Bootstrap 5.
82 |
83 | ## Enviroment
84 |
85 | ### Requirements
86 |
87 | Ако знаете какво е [Node JS] и [NPM] преминете на [Packages](#packages), ако не - ще спомена на кратко какво да направите, за да си ги инсталирате.
88 |
89 | > [**EN**]
90 | >
91 | > If you know what [Node JS] and [NPM] are, go to [Packages](#packages), if not - I’ll write briefly what you have to do to install them.
92 |
93 | #### Node JS and NPM
94 |
95 | На сайта на [Node JS] може да изтеглите инсталционния пакет. Най-добре за начало да свалите **LTS** (Long Term Support) версията. Стартирайте инсталатора и следвайте стъпките. След приключване проверете в конзолата (_Command Prompth_), дали всичко е добре.
96 |
97 | > [**EN**]
98 | >
99 | > You can download the installation package from the [Node JS] website. It is best to start by downloading the **LTS** (Long Term Support) version. Start the installer and follow the steps. When finished, check in the console (Command Prompth) if everything is fine.
100 |
101 | 1. Проверка на версията на Node JS
102 | > [**EN**]
103 | >
104 | > Check the version of Node JS
105 |
106 | ```sh
107 | node -v
108 | ```
109 |
110 | 2. Проверка на версията на NPM
111 | > [**EN**]
112 | >
113 | > Check the version of NPM
114 |
115 | ```sh
116 | npm -v
117 | ```
118 |
119 | #### Vue JS v3, SFC and Vue CLI
120 |
121 | [Vue JS v3] е основния framework, който ползвам в моя темплейт и трябва да го имате инсталиран. За да го добавите ще използваме [NPM]. Заедно с Vue 3 ще добавим и **SFC** (Single File Components) инструмента, който заменя **_vue-template-compiler_** плъгина. Накрая ще добавим и \*Vue **CLI\***.
122 |
123 | 1. Инсталиране на Vue 3
124 |
125 | ```sh
126 | npm install vue@next
127 | ```
128 |
129 | 2. Инсталиране на SFC
130 |
131 | ```sh
132 | npm install -D @vue/compiler-sfc
133 | ```
134 |
135 | 3. Инсталиране на Vue CLI
136 |
137 | ```sh
138 | npm install -g @vue/cli
139 | ```
140 |
141 | ### Packages
142 |
143 | Това са основните пакети в темплейта. Те оформят постановка, от която може да започнете да разработвате свой собствен проект.
144 |
145 | В моите проекти използвам [Bootstrap] и в темплейта го залагам, като основен **_front-end faramework_**. Добавям и [Sass], като предпроцесор на **CSS** файловете, за да имам по-голяма свобода на управлението им.
146 |
147 | Използвам [Vite] за настройки на средата за разработка. Може да ползвате и [Vue CLI], особено за по-малки проекти с не много бъндъли.
148 |
149 | Добавям и [Vue Router]. Това е неделима част от всеки web проект и за мен е задължителен.
150 |
151 | #### Vite
152 |
153 | 1. Започваме с инициализация на проекта ни с **Vite** темплейт. За целта в конзолата напишете:
154 |
155 | ```sh
156 | npm init @vitejs/app
157 | ```
158 |
159 | 2. В следващите стъпки окажете следните данни:
160 |
161 | ```sh
162 | Project name: vue3-bootstrap5-boilerplate
163 | ```
164 |
165 | ```sh
166 | Select a framework: vue
167 | ```
168 |
169 | ```sh
170 | Select a variant: vue
171 | ```
172 |
173 | 3. Отидете в директорията на новосъздадения проект:
174 |
175 | ```sh
176 | cd vue3-bootstrap5-boilerplate
177 | ```
178 |
179 | Повече информация за **Vite** инсталацията може да видите на адрес: https://vitejs.dev/guide/#scaffolding-your-first-vite-project
180 |
181 | Ако използвате [Visual Studio Code] в този момент може да го стартирате и да изпълните последващите команди от неговата конзола (Ctrl + `). Ако не го ползвате - може и от конзолата на операционната система. **Visual Studio Code** се стартира със зареден прокт, ако в дриректорията на проекта в конзолата напишете:
182 |
183 | ```sh
184 | code .
185 | ```
186 |
187 | #### Vue router
188 |
189 | За инсталацията можете да видите информация на адрес: https://next.router.vuejs.org/installation.html
190 |
191 | ```sh
192 | npm install vue-router@4
193 | ```
194 |
195 | #### Bootstrap 5, Bootstrap Icons and Proper
196 |
197 | Следва добавянето на Bootstrap 5 (https://getbootstrap.com/docs/5.0/getting-started/download/#npm),
198 |
199 | ```sh
200 | npm install bootstrap
201 | ```
202 |
203 | Bootstrap Icons (https://icons.getbootstrap.com/)
204 |
205 | ```sh
206 | npm i bootstrap-icons
207 | ```
208 |
209 | Накрая добавяме [Proper JS] библиотеката, за да използваме възможностите на **Bootstrap** за визуализиране на **_Tooltips_**, **_Popover_** и др.
210 |
211 | ```sh
212 | npm i @popperjs/core
213 | ```
214 |
215 | #### Sass
216 |
217 | Последно, но не и по значение, добавяме поддръжката на **Sass**. Използвам го само по време на разработката и затова го добавяме, като `--save-dev` към темплейта.
218 |
219 | ```sh
220 | npm install sass --save-dev
221 | ```
222 |
223 | ### Install and Run
224 |
225 | Приключи инициализацията на темплейта и остана да заредим всички модули и да го стартираме. В конзолата изпълняваме последователно:
226 |
227 | ```sh
228 | npm install
229 | ```
230 |
231 | ```sh
232 | npm run dev
233 | ```
234 |
235 | Ще се зареди стартовия проект **Hello Vue 3 + Vite** на http://localhost:3000/
236 |
237 | ## Boilerplate
238 |
239 | ### Clear project
240 |
241 | **Vite** добавя към проекта няколко неща, които няма да са ни нужни.
242 |
243 | Най-напред отворете файла `/src/App.vue` и премахнете ненужното съдържание, докато придобие следния вид:
244 |
245 | ```vue
246 |
247 |
248 | ```
249 |
250 | Изтриите папката **assets** `/src/assets`, а в папката **components** `/src/components` изтриите файла `HelloWorld.vue`.
251 |
252 | ### Get Boilerplate files
253 |
254 | Време е да спрем с писаниците и да вземем малко наготово кода, който съм добавил в [GitHub репозиторито на проекта](https://github.com/howbizarre/starter-template_vue-3-vite-bootstrap-5-with-icons/releases). Това, което ви е необходимо е всичко в папката `/src` и правите Copy & Replace във вашата `/src` папка.
255 |
256 | **И това е всикчо приятели.**
257 |
258 | ## Source code
259 |
260 | [Repository](https://github.com/howbizarre/starter-template_vue-3-vite-bootstrap-5-with-icons) & [Releases](https://github.com/howbizarre/starter-template_vue-3-vite-bootstrap-5-with-icons/releases)
261 |
262 | ## License
263 |
264 | MIT
265 |
266 | [Back to top](#table-of-contents)
267 |
268 | [//]: # "Links Reference"
269 |
270 | [node js]: http://nodejs.org
271 | [npm]: https://www.npmjs.com/
272 | [vue js v3]: https://v3.vuejs.org/
273 | [bootstrap]: https://getbootstrap.com/
274 | [sass]: https://sass-lang.com/
275 | [vite]: https://vitejs.dev/
276 | [vue cli]: https://cli.vuejs.org/
277 | [vue router]: https://next.router.vuejs.org/
278 | [visual studio code]: https://code.visualstudio.com/
279 | [proper js]: https://popper.js.org/
280 | [vuex]: https://next.vuex.vuejs.org/
281 | [git]: https://git-scm.com/
282 | [github]: https://github.com/
283 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vue / Vite Starter App
8 |
9 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "starter-template_vue-3-vite-bootstrap-5-with-icons",
3 | "version": "1.0.1",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "starter-template_vue-3-vite-bootstrap-5-with-icons",
9 | "version": "1.0.1",
10 | "license": "MIT",
11 | "dependencies": {
12 | "@popperjs/core": "^2.11.6",
13 | "bootstrap": "^5.2.3",
14 | "bootstrap-icons": "^1.10.3",
15 | "vue": "^3.1.2",
16 | "vue-router": "^4.0.10"
17 | },
18 | "devDependencies": {
19 | "@vitejs/plugin-vue": "^4.0.0",
20 | "@vue/compiler-sfc": "^3.1.2",
21 | "sass": "^1.35.1",
22 | "vite": "^4.0.4"
23 | },
24 | "engines": {
25 | "node": ">= 14.17.0",
26 | "npm": ">= 6.14.13"
27 | }
28 | },
29 | "node_modules/@babel/parser": {
30 | "version": "7.20.7",
31 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz",
32 | "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==",
33 | "bin": {
34 | "parser": "bin/babel-parser.js"
35 | },
36 | "engines": {
37 | "node": ">=6.0.0"
38 | }
39 | },
40 | "node_modules/@esbuild/android-arm": {
41 | "version": "0.16.15",
42 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.15.tgz",
43 | "integrity": "sha512-JsJtmadyWcR+DEtHLixM7bAQsfi1s0Xotv9kVOoXbCLyhKPOHvMEyh3kJBuTbCPSE4c2jQkQVmarwc9Mg9k3bA==",
44 | "cpu": [
45 | "arm"
46 | ],
47 | "dev": true,
48 | "optional": true,
49 | "os": [
50 | "android"
51 | ],
52 | "engines": {
53 | "node": ">=12"
54 | }
55 | },
56 | "node_modules/@esbuild/android-arm64": {
57 | "version": "0.16.15",
58 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.15.tgz",
59 | "integrity": "sha512-OdbkUv7468dSsgoFtHIwTaYAuI5lDEv/v+dlfGBUbVa2xSDIIuSOHXawynw5N9+5lygo/JdXa5/sgGjiEU18gQ==",
60 | "cpu": [
61 | "arm64"
62 | ],
63 | "dev": true,
64 | "optional": true,
65 | "os": [
66 | "android"
67 | ],
68 | "engines": {
69 | "node": ">=12"
70 | }
71 | },
72 | "node_modules/@esbuild/android-x64": {
73 | "version": "0.16.15",
74 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.15.tgz",
75 | "integrity": "sha512-dPUOBiNNWAm+/bxoA75o7R7qqqfcEzXaYlb5uJk2xGHmUMNKSAnDCtRYLgx9/wfE4sXyn8H948OrDyUAHhPOuA==",
76 | "cpu": [
77 | "x64"
78 | ],
79 | "dev": true,
80 | "optional": true,
81 | "os": [
82 | "android"
83 | ],
84 | "engines": {
85 | "node": ">=12"
86 | }
87 | },
88 | "node_modules/@esbuild/darwin-arm64": {
89 | "version": "0.16.15",
90 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.15.tgz",
91 | "integrity": "sha512-AksarYV85Hxgwh5/zb6qGl4sYWxIXPQGBAZ+jUro1ZpINy3EWumK+/4DPOKUBPnsrOIvnNXy7Rq4mTeCsMQDNA==",
92 | "cpu": [
93 | "arm64"
94 | ],
95 | "dev": true,
96 | "optional": true,
97 | "os": [
98 | "darwin"
99 | ],
100 | "engines": {
101 | "node": ">=12"
102 | }
103 | },
104 | "node_modules/@esbuild/darwin-x64": {
105 | "version": "0.16.15",
106 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.15.tgz",
107 | "integrity": "sha512-qqrKJxoohceZGGP+sZ5yXkzW9ZiyFZJ1gWSEfuYdOWzBSL18Uy3w7s/IvnDYHo++/cxwqM0ch3HQVReSZy7/4Q==",
108 | "cpu": [
109 | "x64"
110 | ],
111 | "dev": true,
112 | "optional": true,
113 | "os": [
114 | "darwin"
115 | ],
116 | "engines": {
117 | "node": ">=12"
118 | }
119 | },
120 | "node_modules/@esbuild/freebsd-arm64": {
121 | "version": "0.16.15",
122 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.15.tgz",
123 | "integrity": "sha512-LBWaep6RvJm5KnsKkocdVEzuwnGMjz54fcRVZ9d3R7FSEWOtPBxMhuxeA1n98JVbCLMkTPFmKN6xSnfhnM9WXQ==",
124 | "cpu": [
125 | "arm64"
126 | ],
127 | "dev": true,
128 | "optional": true,
129 | "os": [
130 | "freebsd"
131 | ],
132 | "engines": {
133 | "node": ">=12"
134 | }
135 | },
136 | "node_modules/@esbuild/freebsd-x64": {
137 | "version": "0.16.15",
138 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.15.tgz",
139 | "integrity": "sha512-LE8mKC6JPR04kPLRP9A6k7ZmG0k2aWF4ru79Sde6UeWCo7yDby5f48uJNFQ2pZqzUUkLrHL8xNdIHerJeZjHXg==",
140 | "cpu": [
141 | "x64"
142 | ],
143 | "dev": true,
144 | "optional": true,
145 | "os": [
146 | "freebsd"
147 | ],
148 | "engines": {
149 | "node": ">=12"
150 | }
151 | },
152 | "node_modules/@esbuild/linux-arm": {
153 | "version": "0.16.15",
154 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.15.tgz",
155 | "integrity": "sha512-+1sGlqtMJTOnJUXwLUGnDhPaGRKqxT0UONtYacS+EjdDOrSgpQ/1gUXlnze45Z/BogwYaswQM19Gu1YD1T19/w==",
156 | "cpu": [
157 | "arm"
158 | ],
159 | "dev": true,
160 | "optional": true,
161 | "os": [
162 | "linux"
163 | ],
164 | "engines": {
165 | "node": ">=12"
166 | }
167 | },
168 | "node_modules/@esbuild/linux-arm64": {
169 | "version": "0.16.15",
170 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.15.tgz",
171 | "integrity": "sha512-mRYpuQGbzY+XLczy3Sk7fMJ3DRKLGDIuvLKkkUkyecDGQMmil6K/xVKP9IpKO7JtNH477qAiMjjX7jfKae8t4g==",
172 | "cpu": [
173 | "arm64"
174 | ],
175 | "dev": true,
176 | "optional": true,
177 | "os": [
178 | "linux"
179 | ],
180 | "engines": {
181 | "node": ">=12"
182 | }
183 | },
184 | "node_modules/@esbuild/linux-ia32": {
185 | "version": "0.16.15",
186 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.15.tgz",
187 | "integrity": "sha512-puXVFvY4m8EB6/fzu3LdgjiNnEZ3gZMSR7NmKoQe51l3hyQalvTjab3Dt7aX4qGf+8Pj7dsCOBNzNzkSlr/4Aw==",
188 | "cpu": [
189 | "ia32"
190 | ],
191 | "dev": true,
192 | "optional": true,
193 | "os": [
194 | "linux"
195 | ],
196 | "engines": {
197 | "node": ">=12"
198 | }
199 | },
200 | "node_modules/@esbuild/linux-loong64": {
201 | "version": "0.16.15",
202 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.15.tgz",
203 | "integrity": "sha512-ATMGb3eg8T6ZTGZFldlGeFEcevBiVq6SBHvRAO04HMfUjZWneZ/U+JJb3YzlNZxuscJ4Tmzq+JrYxlk7ro4dRg==",
204 | "cpu": [
205 | "loong64"
206 | ],
207 | "dev": true,
208 | "optional": true,
209 | "os": [
210 | "linux"
211 | ],
212 | "engines": {
213 | "node": ">=12"
214 | }
215 | },
216 | "node_modules/@esbuild/linux-mips64el": {
217 | "version": "0.16.15",
218 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.15.tgz",
219 | "integrity": "sha512-3SEA4L82OnoSATW+Ve8rPgLaKjC8WMt8fnx7De9kvi/NcVbkj8W+J7qnu/tK2P9pUPQP7Au/0sjPEqZtFeyKQQ==",
220 | "cpu": [
221 | "mips64el"
222 | ],
223 | "dev": true,
224 | "optional": true,
225 | "os": [
226 | "linux"
227 | ],
228 | "engines": {
229 | "node": ">=12"
230 | }
231 | },
232 | "node_modules/@esbuild/linux-ppc64": {
233 | "version": "0.16.15",
234 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.15.tgz",
235 | "integrity": "sha512-8PgbeX+N6vmqeySzyxO0NyDOltCEW13OS5jUHTvCHmCgf4kNXZtAWJ+zEfJxjRGYhVezQ1FdIm7WfN1R27uOyg==",
236 | "cpu": [
237 | "ppc64"
238 | ],
239 | "dev": true,
240 | "optional": true,
241 | "os": [
242 | "linux"
243 | ],
244 | "engines": {
245 | "node": ">=12"
246 | }
247 | },
248 | "node_modules/@esbuild/linux-riscv64": {
249 | "version": "0.16.15",
250 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.15.tgz",
251 | "integrity": "sha512-U+coqH+89vbPVoU30no1Fllrn6gvEeO5tfEArBhjYZ+dQ3Gv7ciQXYf5nrT1QdlIFwEjH4Is1U1iiaGWW+tGpQ==",
252 | "cpu": [
253 | "riscv64"
254 | ],
255 | "dev": true,
256 | "optional": true,
257 | "os": [
258 | "linux"
259 | ],
260 | "engines": {
261 | "node": ">=12"
262 | }
263 | },
264 | "node_modules/@esbuild/linux-s390x": {
265 | "version": "0.16.15",
266 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.15.tgz",
267 | "integrity": "sha512-M0nKLFMdyFGBoitxG42kq6Xap0CPeDC6gfF9lg7ZejzGF6kqYUGT+pQGl2QCQoxJBeat/LzTma1hG8C3dq2ocg==",
268 | "cpu": [
269 | "s390x"
270 | ],
271 | "dev": true,
272 | "optional": true,
273 | "os": [
274 | "linux"
275 | ],
276 | "engines": {
277 | "node": ">=12"
278 | }
279 | },
280 | "node_modules/@esbuild/linux-x64": {
281 | "version": "0.16.15",
282 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.15.tgz",
283 | "integrity": "sha512-t7/fOXBUKfigvhJLGKZ9TPHHgqNgpIpYaAbcXQk1X+fPeUG7x0tpAbXJ2wST9F/gJ02+CLETPMnhG7Tra2wqsQ==",
284 | "cpu": [
285 | "x64"
286 | ],
287 | "dev": true,
288 | "optional": true,
289 | "os": [
290 | "linux"
291 | ],
292 | "engines": {
293 | "node": ">=12"
294 | }
295 | },
296 | "node_modules/@esbuild/netbsd-x64": {
297 | "version": "0.16.15",
298 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.15.tgz",
299 | "integrity": "sha512-0k0Nxi6DOJmTnLtKD/0rlyqOPpcqONXY53vpkoAsue8CfyhNPWtwzba1ICFNCfCY1dqL3Ho/xEzujJhmdXq1rg==",
300 | "cpu": [
301 | "x64"
302 | ],
303 | "dev": true,
304 | "optional": true,
305 | "os": [
306 | "netbsd"
307 | ],
308 | "engines": {
309 | "node": ">=12"
310 | }
311 | },
312 | "node_modules/@esbuild/openbsd-x64": {
313 | "version": "0.16.15",
314 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.15.tgz",
315 | "integrity": "sha512-3SkckazfIbdSjsGpuIYT3d6n2Hx0tck3MS1yVsbahhWiLvdy4QozTpvlbjqO3GmvtvhxY4qdyhFOO2wiZKeTAQ==",
316 | "cpu": [
317 | "x64"
318 | ],
319 | "dev": true,
320 | "optional": true,
321 | "os": [
322 | "openbsd"
323 | ],
324 | "engines": {
325 | "node": ">=12"
326 | }
327 | },
328 | "node_modules/@esbuild/sunos-x64": {
329 | "version": "0.16.15",
330 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.15.tgz",
331 | "integrity": "sha512-8PNvBC+O8X5EnyIGqE8St2bOjjrXMR17NOLenIrzolvwWnJXvwPo0tE/ahOeiAJmTOS/eAcN8b4LAZcn17Uj7w==",
332 | "cpu": [
333 | "x64"
334 | ],
335 | "dev": true,
336 | "optional": true,
337 | "os": [
338 | "sunos"
339 | ],
340 | "engines": {
341 | "node": ">=12"
342 | }
343 | },
344 | "node_modules/@esbuild/win32-arm64": {
345 | "version": "0.16.15",
346 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.15.tgz",
347 | "integrity": "sha512-YPaSgm/mm7kNcATB53OxVGVfn6rDNbImTn330ZlF3hKej1e9ktCaljGjn2vH08z2dlHEf3kdt57tNjE6zs8SzA==",
348 | "cpu": [
349 | "arm64"
350 | ],
351 | "dev": true,
352 | "optional": true,
353 | "os": [
354 | "win32"
355 | ],
356 | "engines": {
357 | "node": ">=12"
358 | }
359 | },
360 | "node_modules/@esbuild/win32-ia32": {
361 | "version": "0.16.15",
362 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.15.tgz",
363 | "integrity": "sha512-0movUXbSNrTeNf5ZXT0avklEvlJD0hNGZsrrXHfsp9z4tK5xC+apCqmUEZeE9mqrb84Z8XbgGr/MS9LqafTP2A==",
364 | "cpu": [
365 | "ia32"
366 | ],
367 | "dev": true,
368 | "optional": true,
369 | "os": [
370 | "win32"
371 | ],
372 | "engines": {
373 | "node": ">=12"
374 | }
375 | },
376 | "node_modules/@esbuild/win32-x64": {
377 | "version": "0.16.15",
378 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.15.tgz",
379 | "integrity": "sha512-27h5GCcbfomVAqAnMJWvR1LqEY0dFqIq4vTe5nY3becnZNu0SX8F0+gTk3JPvgWQHzaGc6VkPzlOiMkdSUunUA==",
380 | "cpu": [
381 | "x64"
382 | ],
383 | "dev": true,
384 | "optional": true,
385 | "os": [
386 | "win32"
387 | ],
388 | "engines": {
389 | "node": ">=12"
390 | }
391 | },
392 | "node_modules/@popperjs/core": {
393 | "version": "2.11.6",
394 | "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz",
395 | "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==",
396 | "funding": {
397 | "type": "opencollective",
398 | "url": "https://opencollective.com/popperjs"
399 | }
400 | },
401 | "node_modules/@vitejs/plugin-vue": {
402 | "version": "4.0.0",
403 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.0.0.tgz",
404 | "integrity": "sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==",
405 | "dev": true,
406 | "engines": {
407 | "node": "^14.18.0 || >=16.0.0"
408 | },
409 | "peerDependencies": {
410 | "vite": "^4.0.0",
411 | "vue": "^3.2.25"
412 | }
413 | },
414 | "node_modules/@vue/compiler-core": {
415 | "version": "3.2.45",
416 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz",
417 | "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==",
418 | "dependencies": {
419 | "@babel/parser": "^7.16.4",
420 | "@vue/shared": "3.2.45",
421 | "estree-walker": "^2.0.2",
422 | "source-map": "^0.6.1"
423 | }
424 | },
425 | "node_modules/@vue/compiler-dom": {
426 | "version": "3.2.45",
427 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz",
428 | "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==",
429 | "dependencies": {
430 | "@vue/compiler-core": "3.2.45",
431 | "@vue/shared": "3.2.45"
432 | }
433 | },
434 | "node_modules/@vue/compiler-sfc": {
435 | "version": "3.2.45",
436 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz",
437 | "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==",
438 | "dependencies": {
439 | "@babel/parser": "^7.16.4",
440 | "@vue/compiler-core": "3.2.45",
441 | "@vue/compiler-dom": "3.2.45",
442 | "@vue/compiler-ssr": "3.2.45",
443 | "@vue/reactivity-transform": "3.2.45",
444 | "@vue/shared": "3.2.45",
445 | "estree-walker": "^2.0.2",
446 | "magic-string": "^0.25.7",
447 | "postcss": "^8.1.10",
448 | "source-map": "^0.6.1"
449 | }
450 | },
451 | "node_modules/@vue/compiler-ssr": {
452 | "version": "3.2.45",
453 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz",
454 | "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==",
455 | "dependencies": {
456 | "@vue/compiler-dom": "3.2.45",
457 | "@vue/shared": "3.2.45"
458 | }
459 | },
460 | "node_modules/@vue/devtools-api": {
461 | "version": "6.4.5",
462 | "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.5.tgz",
463 | "integrity": "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ=="
464 | },
465 | "node_modules/@vue/reactivity": {
466 | "version": "3.2.45",
467 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.45.tgz",
468 | "integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==",
469 | "dependencies": {
470 | "@vue/shared": "3.2.45"
471 | }
472 | },
473 | "node_modules/@vue/reactivity-transform": {
474 | "version": "3.2.45",
475 | "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz",
476 | "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==",
477 | "dependencies": {
478 | "@babel/parser": "^7.16.4",
479 | "@vue/compiler-core": "3.2.45",
480 | "@vue/shared": "3.2.45",
481 | "estree-walker": "^2.0.2",
482 | "magic-string": "^0.25.7"
483 | }
484 | },
485 | "node_modules/@vue/runtime-core": {
486 | "version": "3.2.45",
487 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.45.tgz",
488 | "integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==",
489 | "dependencies": {
490 | "@vue/reactivity": "3.2.45",
491 | "@vue/shared": "3.2.45"
492 | }
493 | },
494 | "node_modules/@vue/runtime-dom": {
495 | "version": "3.2.45",
496 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz",
497 | "integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==",
498 | "dependencies": {
499 | "@vue/runtime-core": "3.2.45",
500 | "@vue/shared": "3.2.45",
501 | "csstype": "^2.6.8"
502 | }
503 | },
504 | "node_modules/@vue/server-renderer": {
505 | "version": "3.2.45",
506 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.45.tgz",
507 | "integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==",
508 | "dependencies": {
509 | "@vue/compiler-ssr": "3.2.45",
510 | "@vue/shared": "3.2.45"
511 | },
512 | "peerDependencies": {
513 | "vue": "3.2.45"
514 | }
515 | },
516 | "node_modules/@vue/shared": {
517 | "version": "3.2.45",
518 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz",
519 | "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg=="
520 | },
521 | "node_modules/anymatch": {
522 | "version": "3.1.3",
523 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
524 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
525 | "dev": true,
526 | "dependencies": {
527 | "normalize-path": "^3.0.0",
528 | "picomatch": "^2.0.4"
529 | },
530 | "engines": {
531 | "node": ">= 8"
532 | }
533 | },
534 | "node_modules/binary-extensions": {
535 | "version": "2.2.0",
536 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
537 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
538 | "dev": true,
539 | "engines": {
540 | "node": ">=8"
541 | }
542 | },
543 | "node_modules/bootstrap": {
544 | "version": "5.2.3",
545 | "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz",
546 | "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==",
547 | "funding": [
548 | {
549 | "type": "github",
550 | "url": "https://github.com/sponsors/twbs"
551 | },
552 | {
553 | "type": "opencollective",
554 | "url": "https://opencollective.com/bootstrap"
555 | }
556 | ],
557 | "peerDependencies": {
558 | "@popperjs/core": "^2.11.6"
559 | }
560 | },
561 | "node_modules/bootstrap-icons": {
562 | "version": "1.10.3",
563 | "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.10.3.tgz",
564 | "integrity": "sha512-7Qvj0j0idEm/DdX9Q0CpxAnJYqBCFCiUI6qzSPYfERMcokVuV9Mdm/AJiVZI8+Gawe4h/l6zFcOzvV7oXCZArw=="
565 | },
566 | "node_modules/braces": {
567 | "version": "3.0.2",
568 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
569 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
570 | "dev": true,
571 | "dependencies": {
572 | "fill-range": "^7.0.1"
573 | },
574 | "engines": {
575 | "node": ">=8"
576 | }
577 | },
578 | "node_modules/chokidar": {
579 | "version": "3.5.3",
580 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
581 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
582 | "dev": true,
583 | "funding": [
584 | {
585 | "type": "individual",
586 | "url": "https://paulmillr.com/funding/"
587 | }
588 | ],
589 | "dependencies": {
590 | "anymatch": "~3.1.2",
591 | "braces": "~3.0.2",
592 | "glob-parent": "~5.1.2",
593 | "is-binary-path": "~2.1.0",
594 | "is-glob": "~4.0.1",
595 | "normalize-path": "~3.0.0",
596 | "readdirp": "~3.6.0"
597 | },
598 | "engines": {
599 | "node": ">= 8.10.0"
600 | },
601 | "optionalDependencies": {
602 | "fsevents": "~2.3.2"
603 | }
604 | },
605 | "node_modules/csstype": {
606 | "version": "2.6.21",
607 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
608 | "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
609 | },
610 | "node_modules/esbuild": {
611 | "version": "0.16.15",
612 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.15.tgz",
613 | "integrity": "sha512-v+3ozjy9wyj8cOElzx3//Lsb4TCxPfZxRmdsfm0YaEkvZu7y6rKH7Zi1UpDx4JI7dSQui+U1Qxhfij9KBbHfrA==",
614 | "dev": true,
615 | "hasInstallScript": true,
616 | "bin": {
617 | "esbuild": "bin/esbuild"
618 | },
619 | "engines": {
620 | "node": ">=12"
621 | },
622 | "optionalDependencies": {
623 | "@esbuild/android-arm": "0.16.15",
624 | "@esbuild/android-arm64": "0.16.15",
625 | "@esbuild/android-x64": "0.16.15",
626 | "@esbuild/darwin-arm64": "0.16.15",
627 | "@esbuild/darwin-x64": "0.16.15",
628 | "@esbuild/freebsd-arm64": "0.16.15",
629 | "@esbuild/freebsd-x64": "0.16.15",
630 | "@esbuild/linux-arm": "0.16.15",
631 | "@esbuild/linux-arm64": "0.16.15",
632 | "@esbuild/linux-ia32": "0.16.15",
633 | "@esbuild/linux-loong64": "0.16.15",
634 | "@esbuild/linux-mips64el": "0.16.15",
635 | "@esbuild/linux-ppc64": "0.16.15",
636 | "@esbuild/linux-riscv64": "0.16.15",
637 | "@esbuild/linux-s390x": "0.16.15",
638 | "@esbuild/linux-x64": "0.16.15",
639 | "@esbuild/netbsd-x64": "0.16.15",
640 | "@esbuild/openbsd-x64": "0.16.15",
641 | "@esbuild/sunos-x64": "0.16.15",
642 | "@esbuild/win32-arm64": "0.16.15",
643 | "@esbuild/win32-ia32": "0.16.15",
644 | "@esbuild/win32-x64": "0.16.15"
645 | }
646 | },
647 | "node_modules/estree-walker": {
648 | "version": "2.0.2",
649 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
650 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
651 | },
652 | "node_modules/fill-range": {
653 | "version": "7.0.1",
654 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
655 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
656 | "dev": true,
657 | "dependencies": {
658 | "to-regex-range": "^5.0.1"
659 | },
660 | "engines": {
661 | "node": ">=8"
662 | }
663 | },
664 | "node_modules/fsevents": {
665 | "version": "2.3.2",
666 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
667 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
668 | "dev": true,
669 | "hasInstallScript": true,
670 | "optional": true,
671 | "os": [
672 | "darwin"
673 | ],
674 | "engines": {
675 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
676 | }
677 | },
678 | "node_modules/function-bind": {
679 | "version": "1.1.1",
680 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
681 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
682 | "dev": true
683 | },
684 | "node_modules/glob-parent": {
685 | "version": "5.1.2",
686 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
687 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
688 | "dev": true,
689 | "dependencies": {
690 | "is-glob": "^4.0.1"
691 | },
692 | "engines": {
693 | "node": ">= 6"
694 | }
695 | },
696 | "node_modules/has": {
697 | "version": "1.0.3",
698 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
699 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
700 | "dev": true,
701 | "dependencies": {
702 | "function-bind": "^1.1.1"
703 | },
704 | "engines": {
705 | "node": ">= 0.4.0"
706 | }
707 | },
708 | "node_modules/immutable": {
709 | "version": "4.2.2",
710 | "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.2.tgz",
711 | "integrity": "sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==",
712 | "dev": true
713 | },
714 | "node_modules/is-binary-path": {
715 | "version": "2.1.0",
716 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
717 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
718 | "dev": true,
719 | "dependencies": {
720 | "binary-extensions": "^2.0.0"
721 | },
722 | "engines": {
723 | "node": ">=8"
724 | }
725 | },
726 | "node_modules/is-core-module": {
727 | "version": "2.11.0",
728 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
729 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
730 | "dev": true,
731 | "dependencies": {
732 | "has": "^1.0.3"
733 | },
734 | "funding": {
735 | "url": "https://github.com/sponsors/ljharb"
736 | }
737 | },
738 | "node_modules/is-extglob": {
739 | "version": "2.1.1",
740 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
741 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
742 | "dev": true,
743 | "engines": {
744 | "node": ">=0.10.0"
745 | }
746 | },
747 | "node_modules/is-glob": {
748 | "version": "4.0.3",
749 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
750 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
751 | "dev": true,
752 | "dependencies": {
753 | "is-extglob": "^2.1.1"
754 | },
755 | "engines": {
756 | "node": ">=0.10.0"
757 | }
758 | },
759 | "node_modules/is-number": {
760 | "version": "7.0.0",
761 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
762 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
763 | "dev": true,
764 | "engines": {
765 | "node": ">=0.12.0"
766 | }
767 | },
768 | "node_modules/magic-string": {
769 | "version": "0.25.9",
770 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
771 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
772 | "dependencies": {
773 | "sourcemap-codec": "^1.4.8"
774 | }
775 | },
776 | "node_modules/nanoid": {
777 | "version": "3.3.4",
778 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
779 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
780 | "bin": {
781 | "nanoid": "bin/nanoid.cjs"
782 | },
783 | "engines": {
784 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
785 | }
786 | },
787 | "node_modules/normalize-path": {
788 | "version": "3.0.0",
789 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
790 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
791 | "dev": true,
792 | "engines": {
793 | "node": ">=0.10.0"
794 | }
795 | },
796 | "node_modules/path-parse": {
797 | "version": "1.0.7",
798 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
799 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
800 | "dev": true
801 | },
802 | "node_modules/picocolors": {
803 | "version": "1.0.0",
804 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
805 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
806 | },
807 | "node_modules/picomatch": {
808 | "version": "2.3.1",
809 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
810 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
811 | "dev": true,
812 | "engines": {
813 | "node": ">=8.6"
814 | },
815 | "funding": {
816 | "url": "https://github.com/sponsors/jonschlinkert"
817 | }
818 | },
819 | "node_modules/postcss": {
820 | "version": "8.4.21",
821 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
822 | "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
823 | "funding": [
824 | {
825 | "type": "opencollective",
826 | "url": "https://opencollective.com/postcss/"
827 | },
828 | {
829 | "type": "tidelift",
830 | "url": "https://tidelift.com/funding/github/npm/postcss"
831 | }
832 | ],
833 | "dependencies": {
834 | "nanoid": "^3.3.4",
835 | "picocolors": "^1.0.0",
836 | "source-map-js": "^1.0.2"
837 | },
838 | "engines": {
839 | "node": "^10 || ^12 || >=14"
840 | }
841 | },
842 | "node_modules/readdirp": {
843 | "version": "3.6.0",
844 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
845 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
846 | "dev": true,
847 | "dependencies": {
848 | "picomatch": "^2.2.1"
849 | },
850 | "engines": {
851 | "node": ">=8.10.0"
852 | }
853 | },
854 | "node_modules/resolve": {
855 | "version": "1.22.1",
856 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
857 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
858 | "dev": true,
859 | "dependencies": {
860 | "is-core-module": "^2.9.0",
861 | "path-parse": "^1.0.7",
862 | "supports-preserve-symlinks-flag": "^1.0.0"
863 | },
864 | "bin": {
865 | "resolve": "bin/resolve"
866 | },
867 | "funding": {
868 | "url": "https://github.com/sponsors/ljharb"
869 | }
870 | },
871 | "node_modules/rollup": {
872 | "version": "3.9.1",
873 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.1.tgz",
874 | "integrity": "sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==",
875 | "dev": true,
876 | "bin": {
877 | "rollup": "dist/bin/rollup"
878 | },
879 | "engines": {
880 | "node": ">=14.18.0",
881 | "npm": ">=8.0.0"
882 | },
883 | "optionalDependencies": {
884 | "fsevents": "~2.3.2"
885 | }
886 | },
887 | "node_modules/sass": {
888 | "version": "1.57.1",
889 | "resolved": "https://registry.npmjs.org/sass/-/sass-1.57.1.tgz",
890 | "integrity": "sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==",
891 | "dev": true,
892 | "dependencies": {
893 | "chokidar": ">=3.0.0 <4.0.0",
894 | "immutable": "^4.0.0",
895 | "source-map-js": ">=0.6.2 <2.0.0"
896 | },
897 | "bin": {
898 | "sass": "sass.js"
899 | },
900 | "engines": {
901 | "node": ">=12.0.0"
902 | }
903 | },
904 | "node_modules/source-map": {
905 | "version": "0.6.1",
906 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
907 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
908 | "engines": {
909 | "node": ">=0.10.0"
910 | }
911 | },
912 | "node_modules/source-map-js": {
913 | "version": "1.0.2",
914 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
915 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
916 | "engines": {
917 | "node": ">=0.10.0"
918 | }
919 | },
920 | "node_modules/sourcemap-codec": {
921 | "version": "1.4.8",
922 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
923 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
924 | "deprecated": "Please use @jridgewell/sourcemap-codec instead"
925 | },
926 | "node_modules/supports-preserve-symlinks-flag": {
927 | "version": "1.0.0",
928 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
929 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
930 | "dev": true,
931 | "engines": {
932 | "node": ">= 0.4"
933 | },
934 | "funding": {
935 | "url": "https://github.com/sponsors/ljharb"
936 | }
937 | },
938 | "node_modules/to-regex-range": {
939 | "version": "5.0.1",
940 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
941 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
942 | "dev": true,
943 | "dependencies": {
944 | "is-number": "^7.0.0"
945 | },
946 | "engines": {
947 | "node": ">=8.0"
948 | }
949 | },
950 | "node_modules/vite": {
951 | "version": "4.0.4",
952 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz",
953 | "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==",
954 | "dev": true,
955 | "dependencies": {
956 | "esbuild": "^0.16.3",
957 | "postcss": "^8.4.20",
958 | "resolve": "^1.22.1",
959 | "rollup": "^3.7.0"
960 | },
961 | "bin": {
962 | "vite": "bin/vite.js"
963 | },
964 | "engines": {
965 | "node": "^14.18.0 || >=16.0.0"
966 | },
967 | "optionalDependencies": {
968 | "fsevents": "~2.3.2"
969 | },
970 | "peerDependencies": {
971 | "@types/node": ">= 14",
972 | "less": "*",
973 | "sass": "*",
974 | "stylus": "*",
975 | "sugarss": "*",
976 | "terser": "^5.4.0"
977 | },
978 | "peerDependenciesMeta": {
979 | "@types/node": {
980 | "optional": true
981 | },
982 | "less": {
983 | "optional": true
984 | },
985 | "sass": {
986 | "optional": true
987 | },
988 | "stylus": {
989 | "optional": true
990 | },
991 | "sugarss": {
992 | "optional": true
993 | },
994 | "terser": {
995 | "optional": true
996 | }
997 | }
998 | },
999 | "node_modules/vue": {
1000 | "version": "3.2.45",
1001 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.45.tgz",
1002 | "integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==",
1003 | "dependencies": {
1004 | "@vue/compiler-dom": "3.2.45",
1005 | "@vue/compiler-sfc": "3.2.45",
1006 | "@vue/runtime-dom": "3.2.45",
1007 | "@vue/server-renderer": "3.2.45",
1008 | "@vue/shared": "3.2.45"
1009 | }
1010 | },
1011 | "node_modules/vue-router": {
1012 | "version": "4.1.6",
1013 | "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.6.tgz",
1014 | "integrity": "sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==",
1015 | "dependencies": {
1016 | "@vue/devtools-api": "^6.4.5"
1017 | },
1018 | "funding": {
1019 | "url": "https://github.com/sponsors/posva"
1020 | },
1021 | "peerDependencies": {
1022 | "vue": "^3.2.0"
1023 | }
1024 | }
1025 | },
1026 | "dependencies": {
1027 | "@babel/parser": {
1028 | "version": "7.20.7",
1029 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz",
1030 | "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg=="
1031 | },
1032 | "@esbuild/android-arm": {
1033 | "version": "0.16.15",
1034 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.15.tgz",
1035 | "integrity": "sha512-JsJtmadyWcR+DEtHLixM7bAQsfi1s0Xotv9kVOoXbCLyhKPOHvMEyh3kJBuTbCPSE4c2jQkQVmarwc9Mg9k3bA==",
1036 | "dev": true,
1037 | "optional": true
1038 | },
1039 | "@esbuild/android-arm64": {
1040 | "version": "0.16.15",
1041 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.15.tgz",
1042 | "integrity": "sha512-OdbkUv7468dSsgoFtHIwTaYAuI5lDEv/v+dlfGBUbVa2xSDIIuSOHXawynw5N9+5lygo/JdXa5/sgGjiEU18gQ==",
1043 | "dev": true,
1044 | "optional": true
1045 | },
1046 | "@esbuild/android-x64": {
1047 | "version": "0.16.15",
1048 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.15.tgz",
1049 | "integrity": "sha512-dPUOBiNNWAm+/bxoA75o7R7qqqfcEzXaYlb5uJk2xGHmUMNKSAnDCtRYLgx9/wfE4sXyn8H948OrDyUAHhPOuA==",
1050 | "dev": true,
1051 | "optional": true
1052 | },
1053 | "@esbuild/darwin-arm64": {
1054 | "version": "0.16.15",
1055 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.15.tgz",
1056 | "integrity": "sha512-AksarYV85Hxgwh5/zb6qGl4sYWxIXPQGBAZ+jUro1ZpINy3EWumK+/4DPOKUBPnsrOIvnNXy7Rq4mTeCsMQDNA==",
1057 | "dev": true,
1058 | "optional": true
1059 | },
1060 | "@esbuild/darwin-x64": {
1061 | "version": "0.16.15",
1062 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.15.tgz",
1063 | "integrity": "sha512-qqrKJxoohceZGGP+sZ5yXkzW9ZiyFZJ1gWSEfuYdOWzBSL18Uy3w7s/IvnDYHo++/cxwqM0ch3HQVReSZy7/4Q==",
1064 | "dev": true,
1065 | "optional": true
1066 | },
1067 | "@esbuild/freebsd-arm64": {
1068 | "version": "0.16.15",
1069 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.15.tgz",
1070 | "integrity": "sha512-LBWaep6RvJm5KnsKkocdVEzuwnGMjz54fcRVZ9d3R7FSEWOtPBxMhuxeA1n98JVbCLMkTPFmKN6xSnfhnM9WXQ==",
1071 | "dev": true,
1072 | "optional": true
1073 | },
1074 | "@esbuild/freebsd-x64": {
1075 | "version": "0.16.15",
1076 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.15.tgz",
1077 | "integrity": "sha512-LE8mKC6JPR04kPLRP9A6k7ZmG0k2aWF4ru79Sde6UeWCo7yDby5f48uJNFQ2pZqzUUkLrHL8xNdIHerJeZjHXg==",
1078 | "dev": true,
1079 | "optional": true
1080 | },
1081 | "@esbuild/linux-arm": {
1082 | "version": "0.16.15",
1083 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.15.tgz",
1084 | "integrity": "sha512-+1sGlqtMJTOnJUXwLUGnDhPaGRKqxT0UONtYacS+EjdDOrSgpQ/1gUXlnze45Z/BogwYaswQM19Gu1YD1T19/w==",
1085 | "dev": true,
1086 | "optional": true
1087 | },
1088 | "@esbuild/linux-arm64": {
1089 | "version": "0.16.15",
1090 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.15.tgz",
1091 | "integrity": "sha512-mRYpuQGbzY+XLczy3Sk7fMJ3DRKLGDIuvLKkkUkyecDGQMmil6K/xVKP9IpKO7JtNH477qAiMjjX7jfKae8t4g==",
1092 | "dev": true,
1093 | "optional": true
1094 | },
1095 | "@esbuild/linux-ia32": {
1096 | "version": "0.16.15",
1097 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.15.tgz",
1098 | "integrity": "sha512-puXVFvY4m8EB6/fzu3LdgjiNnEZ3gZMSR7NmKoQe51l3hyQalvTjab3Dt7aX4qGf+8Pj7dsCOBNzNzkSlr/4Aw==",
1099 | "dev": true,
1100 | "optional": true
1101 | },
1102 | "@esbuild/linux-loong64": {
1103 | "version": "0.16.15",
1104 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.15.tgz",
1105 | "integrity": "sha512-ATMGb3eg8T6ZTGZFldlGeFEcevBiVq6SBHvRAO04HMfUjZWneZ/U+JJb3YzlNZxuscJ4Tmzq+JrYxlk7ro4dRg==",
1106 | "dev": true,
1107 | "optional": true
1108 | },
1109 | "@esbuild/linux-mips64el": {
1110 | "version": "0.16.15",
1111 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.15.tgz",
1112 | "integrity": "sha512-3SEA4L82OnoSATW+Ve8rPgLaKjC8WMt8fnx7De9kvi/NcVbkj8W+J7qnu/tK2P9pUPQP7Au/0sjPEqZtFeyKQQ==",
1113 | "dev": true,
1114 | "optional": true
1115 | },
1116 | "@esbuild/linux-ppc64": {
1117 | "version": "0.16.15",
1118 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.15.tgz",
1119 | "integrity": "sha512-8PgbeX+N6vmqeySzyxO0NyDOltCEW13OS5jUHTvCHmCgf4kNXZtAWJ+zEfJxjRGYhVezQ1FdIm7WfN1R27uOyg==",
1120 | "dev": true,
1121 | "optional": true
1122 | },
1123 | "@esbuild/linux-riscv64": {
1124 | "version": "0.16.15",
1125 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.15.tgz",
1126 | "integrity": "sha512-U+coqH+89vbPVoU30no1Fllrn6gvEeO5tfEArBhjYZ+dQ3Gv7ciQXYf5nrT1QdlIFwEjH4Is1U1iiaGWW+tGpQ==",
1127 | "dev": true,
1128 | "optional": true
1129 | },
1130 | "@esbuild/linux-s390x": {
1131 | "version": "0.16.15",
1132 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.15.tgz",
1133 | "integrity": "sha512-M0nKLFMdyFGBoitxG42kq6Xap0CPeDC6gfF9lg7ZejzGF6kqYUGT+pQGl2QCQoxJBeat/LzTma1hG8C3dq2ocg==",
1134 | "dev": true,
1135 | "optional": true
1136 | },
1137 | "@esbuild/linux-x64": {
1138 | "version": "0.16.15",
1139 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.15.tgz",
1140 | "integrity": "sha512-t7/fOXBUKfigvhJLGKZ9TPHHgqNgpIpYaAbcXQk1X+fPeUG7x0tpAbXJ2wST9F/gJ02+CLETPMnhG7Tra2wqsQ==",
1141 | "dev": true,
1142 | "optional": true
1143 | },
1144 | "@esbuild/netbsd-x64": {
1145 | "version": "0.16.15",
1146 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.15.tgz",
1147 | "integrity": "sha512-0k0Nxi6DOJmTnLtKD/0rlyqOPpcqONXY53vpkoAsue8CfyhNPWtwzba1ICFNCfCY1dqL3Ho/xEzujJhmdXq1rg==",
1148 | "dev": true,
1149 | "optional": true
1150 | },
1151 | "@esbuild/openbsd-x64": {
1152 | "version": "0.16.15",
1153 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.15.tgz",
1154 | "integrity": "sha512-3SkckazfIbdSjsGpuIYT3d6n2Hx0tck3MS1yVsbahhWiLvdy4QozTpvlbjqO3GmvtvhxY4qdyhFOO2wiZKeTAQ==",
1155 | "dev": true,
1156 | "optional": true
1157 | },
1158 | "@esbuild/sunos-x64": {
1159 | "version": "0.16.15",
1160 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.15.tgz",
1161 | "integrity": "sha512-8PNvBC+O8X5EnyIGqE8St2bOjjrXMR17NOLenIrzolvwWnJXvwPo0tE/ahOeiAJmTOS/eAcN8b4LAZcn17Uj7w==",
1162 | "dev": true,
1163 | "optional": true
1164 | },
1165 | "@esbuild/win32-arm64": {
1166 | "version": "0.16.15",
1167 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.15.tgz",
1168 | "integrity": "sha512-YPaSgm/mm7kNcATB53OxVGVfn6rDNbImTn330ZlF3hKej1e9ktCaljGjn2vH08z2dlHEf3kdt57tNjE6zs8SzA==",
1169 | "dev": true,
1170 | "optional": true
1171 | },
1172 | "@esbuild/win32-ia32": {
1173 | "version": "0.16.15",
1174 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.15.tgz",
1175 | "integrity": "sha512-0movUXbSNrTeNf5ZXT0avklEvlJD0hNGZsrrXHfsp9z4tK5xC+apCqmUEZeE9mqrb84Z8XbgGr/MS9LqafTP2A==",
1176 | "dev": true,
1177 | "optional": true
1178 | },
1179 | "@esbuild/win32-x64": {
1180 | "version": "0.16.15",
1181 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.15.tgz",
1182 | "integrity": "sha512-27h5GCcbfomVAqAnMJWvR1LqEY0dFqIq4vTe5nY3becnZNu0SX8F0+gTk3JPvgWQHzaGc6VkPzlOiMkdSUunUA==",
1183 | "dev": true,
1184 | "optional": true
1185 | },
1186 | "@popperjs/core": {
1187 | "version": "2.11.6",
1188 | "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz",
1189 | "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw=="
1190 | },
1191 | "@vitejs/plugin-vue": {
1192 | "version": "4.0.0",
1193 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.0.0.tgz",
1194 | "integrity": "sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==",
1195 | "dev": true,
1196 | "requires": {}
1197 | },
1198 | "@vue/compiler-core": {
1199 | "version": "3.2.45",
1200 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.45.tgz",
1201 | "integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==",
1202 | "requires": {
1203 | "@babel/parser": "^7.16.4",
1204 | "@vue/shared": "3.2.45",
1205 | "estree-walker": "^2.0.2",
1206 | "source-map": "^0.6.1"
1207 | }
1208 | },
1209 | "@vue/compiler-dom": {
1210 | "version": "3.2.45",
1211 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz",
1212 | "integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==",
1213 | "requires": {
1214 | "@vue/compiler-core": "3.2.45",
1215 | "@vue/shared": "3.2.45"
1216 | }
1217 | },
1218 | "@vue/compiler-sfc": {
1219 | "version": "3.2.45",
1220 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz",
1221 | "integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==",
1222 | "requires": {
1223 | "@babel/parser": "^7.16.4",
1224 | "@vue/compiler-core": "3.2.45",
1225 | "@vue/compiler-dom": "3.2.45",
1226 | "@vue/compiler-ssr": "3.2.45",
1227 | "@vue/reactivity-transform": "3.2.45",
1228 | "@vue/shared": "3.2.45",
1229 | "estree-walker": "^2.0.2",
1230 | "magic-string": "^0.25.7",
1231 | "postcss": "^8.1.10",
1232 | "source-map": "^0.6.1"
1233 | }
1234 | },
1235 | "@vue/compiler-ssr": {
1236 | "version": "3.2.45",
1237 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz",
1238 | "integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==",
1239 | "requires": {
1240 | "@vue/compiler-dom": "3.2.45",
1241 | "@vue/shared": "3.2.45"
1242 | }
1243 | },
1244 | "@vue/devtools-api": {
1245 | "version": "6.4.5",
1246 | "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.4.5.tgz",
1247 | "integrity": "sha512-JD5fcdIuFxU4fQyXUu3w2KpAJHzTVdN+p4iOX2lMWSHMOoQdMAcpFLZzm9Z/2nmsoZ1a96QEhZ26e50xLBsgOQ=="
1248 | },
1249 | "@vue/reactivity": {
1250 | "version": "3.2.45",
1251 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.45.tgz",
1252 | "integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==",
1253 | "requires": {
1254 | "@vue/shared": "3.2.45"
1255 | }
1256 | },
1257 | "@vue/reactivity-transform": {
1258 | "version": "3.2.45",
1259 | "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz",
1260 | "integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==",
1261 | "requires": {
1262 | "@babel/parser": "^7.16.4",
1263 | "@vue/compiler-core": "3.2.45",
1264 | "@vue/shared": "3.2.45",
1265 | "estree-walker": "^2.0.2",
1266 | "magic-string": "^0.25.7"
1267 | }
1268 | },
1269 | "@vue/runtime-core": {
1270 | "version": "3.2.45",
1271 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.45.tgz",
1272 | "integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==",
1273 | "requires": {
1274 | "@vue/reactivity": "3.2.45",
1275 | "@vue/shared": "3.2.45"
1276 | }
1277 | },
1278 | "@vue/runtime-dom": {
1279 | "version": "3.2.45",
1280 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz",
1281 | "integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==",
1282 | "requires": {
1283 | "@vue/runtime-core": "3.2.45",
1284 | "@vue/shared": "3.2.45",
1285 | "csstype": "^2.6.8"
1286 | }
1287 | },
1288 | "@vue/server-renderer": {
1289 | "version": "3.2.45",
1290 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.45.tgz",
1291 | "integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==",
1292 | "requires": {
1293 | "@vue/compiler-ssr": "3.2.45",
1294 | "@vue/shared": "3.2.45"
1295 | }
1296 | },
1297 | "@vue/shared": {
1298 | "version": "3.2.45",
1299 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.45.tgz",
1300 | "integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg=="
1301 | },
1302 | "anymatch": {
1303 | "version": "3.1.3",
1304 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
1305 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
1306 | "dev": true,
1307 | "requires": {
1308 | "normalize-path": "^3.0.0",
1309 | "picomatch": "^2.0.4"
1310 | }
1311 | },
1312 | "binary-extensions": {
1313 | "version": "2.2.0",
1314 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
1315 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
1316 | "dev": true
1317 | },
1318 | "bootstrap": {
1319 | "version": "5.2.3",
1320 | "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz",
1321 | "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==",
1322 | "requires": {}
1323 | },
1324 | "bootstrap-icons": {
1325 | "version": "1.10.3",
1326 | "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.10.3.tgz",
1327 | "integrity": "sha512-7Qvj0j0idEm/DdX9Q0CpxAnJYqBCFCiUI6qzSPYfERMcokVuV9Mdm/AJiVZI8+Gawe4h/l6zFcOzvV7oXCZArw=="
1328 | },
1329 | "braces": {
1330 | "version": "3.0.2",
1331 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
1332 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
1333 | "dev": true,
1334 | "requires": {
1335 | "fill-range": "^7.0.1"
1336 | }
1337 | },
1338 | "chokidar": {
1339 | "version": "3.5.3",
1340 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
1341 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
1342 | "dev": true,
1343 | "requires": {
1344 | "anymatch": "~3.1.2",
1345 | "braces": "~3.0.2",
1346 | "fsevents": "~2.3.2",
1347 | "glob-parent": "~5.1.2",
1348 | "is-binary-path": "~2.1.0",
1349 | "is-glob": "~4.0.1",
1350 | "normalize-path": "~3.0.0",
1351 | "readdirp": "~3.6.0"
1352 | }
1353 | },
1354 | "csstype": {
1355 | "version": "2.6.21",
1356 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
1357 | "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
1358 | },
1359 | "esbuild": {
1360 | "version": "0.16.15",
1361 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.15.tgz",
1362 | "integrity": "sha512-v+3ozjy9wyj8cOElzx3//Lsb4TCxPfZxRmdsfm0YaEkvZu7y6rKH7Zi1UpDx4JI7dSQui+U1Qxhfij9KBbHfrA==",
1363 | "dev": true,
1364 | "requires": {
1365 | "@esbuild/android-arm": "0.16.15",
1366 | "@esbuild/android-arm64": "0.16.15",
1367 | "@esbuild/android-x64": "0.16.15",
1368 | "@esbuild/darwin-arm64": "0.16.15",
1369 | "@esbuild/darwin-x64": "0.16.15",
1370 | "@esbuild/freebsd-arm64": "0.16.15",
1371 | "@esbuild/freebsd-x64": "0.16.15",
1372 | "@esbuild/linux-arm": "0.16.15",
1373 | "@esbuild/linux-arm64": "0.16.15",
1374 | "@esbuild/linux-ia32": "0.16.15",
1375 | "@esbuild/linux-loong64": "0.16.15",
1376 | "@esbuild/linux-mips64el": "0.16.15",
1377 | "@esbuild/linux-ppc64": "0.16.15",
1378 | "@esbuild/linux-riscv64": "0.16.15",
1379 | "@esbuild/linux-s390x": "0.16.15",
1380 | "@esbuild/linux-x64": "0.16.15",
1381 | "@esbuild/netbsd-x64": "0.16.15",
1382 | "@esbuild/openbsd-x64": "0.16.15",
1383 | "@esbuild/sunos-x64": "0.16.15",
1384 | "@esbuild/win32-arm64": "0.16.15",
1385 | "@esbuild/win32-ia32": "0.16.15",
1386 | "@esbuild/win32-x64": "0.16.15"
1387 | }
1388 | },
1389 | "estree-walker": {
1390 | "version": "2.0.2",
1391 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
1392 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
1393 | },
1394 | "fill-range": {
1395 | "version": "7.0.1",
1396 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
1397 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
1398 | "dev": true,
1399 | "requires": {
1400 | "to-regex-range": "^5.0.1"
1401 | }
1402 | },
1403 | "fsevents": {
1404 | "version": "2.3.2",
1405 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1406 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1407 | "dev": true,
1408 | "optional": true
1409 | },
1410 | "function-bind": {
1411 | "version": "1.1.1",
1412 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1413 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1414 | "dev": true
1415 | },
1416 | "glob-parent": {
1417 | "version": "5.1.2",
1418 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1419 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1420 | "dev": true,
1421 | "requires": {
1422 | "is-glob": "^4.0.1"
1423 | }
1424 | },
1425 | "has": {
1426 | "version": "1.0.3",
1427 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1428 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1429 | "dev": true,
1430 | "requires": {
1431 | "function-bind": "^1.1.1"
1432 | }
1433 | },
1434 | "immutable": {
1435 | "version": "4.2.2",
1436 | "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.2.tgz",
1437 | "integrity": "sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==",
1438 | "dev": true
1439 | },
1440 | "is-binary-path": {
1441 | "version": "2.1.0",
1442 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1443 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1444 | "dev": true,
1445 | "requires": {
1446 | "binary-extensions": "^2.0.0"
1447 | }
1448 | },
1449 | "is-core-module": {
1450 | "version": "2.11.0",
1451 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
1452 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
1453 | "dev": true,
1454 | "requires": {
1455 | "has": "^1.0.3"
1456 | }
1457 | },
1458 | "is-extglob": {
1459 | "version": "2.1.1",
1460 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1461 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1462 | "dev": true
1463 | },
1464 | "is-glob": {
1465 | "version": "4.0.3",
1466 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1467 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1468 | "dev": true,
1469 | "requires": {
1470 | "is-extglob": "^2.1.1"
1471 | }
1472 | },
1473 | "is-number": {
1474 | "version": "7.0.0",
1475 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1476 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1477 | "dev": true
1478 | },
1479 | "magic-string": {
1480 | "version": "0.25.9",
1481 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
1482 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
1483 | "requires": {
1484 | "sourcemap-codec": "^1.4.8"
1485 | }
1486 | },
1487 | "nanoid": {
1488 | "version": "3.3.4",
1489 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
1490 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
1491 | },
1492 | "normalize-path": {
1493 | "version": "3.0.0",
1494 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1495 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1496 | "dev": true
1497 | },
1498 | "path-parse": {
1499 | "version": "1.0.7",
1500 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1501 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1502 | "dev": true
1503 | },
1504 | "picocolors": {
1505 | "version": "1.0.0",
1506 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1507 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
1508 | },
1509 | "picomatch": {
1510 | "version": "2.3.1",
1511 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1512 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1513 | "dev": true
1514 | },
1515 | "postcss": {
1516 | "version": "8.4.21",
1517 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
1518 | "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
1519 | "requires": {
1520 | "nanoid": "^3.3.4",
1521 | "picocolors": "^1.0.0",
1522 | "source-map-js": "^1.0.2"
1523 | }
1524 | },
1525 | "readdirp": {
1526 | "version": "3.6.0",
1527 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1528 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1529 | "dev": true,
1530 | "requires": {
1531 | "picomatch": "^2.2.1"
1532 | }
1533 | },
1534 | "resolve": {
1535 | "version": "1.22.1",
1536 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
1537 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
1538 | "dev": true,
1539 | "requires": {
1540 | "is-core-module": "^2.9.0",
1541 | "path-parse": "^1.0.7",
1542 | "supports-preserve-symlinks-flag": "^1.0.0"
1543 | }
1544 | },
1545 | "rollup": {
1546 | "version": "3.9.1",
1547 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.1.tgz",
1548 | "integrity": "sha512-GswCYHXftN8ZKGVgQhTFUJB/NBXxrRGgO2NCy6E8s1rwEJ4Q9/VttNqcYfEvx4dTo4j58YqdC3OVztPzlKSX8w==",
1549 | "dev": true,
1550 | "requires": {
1551 | "fsevents": "~2.3.2"
1552 | }
1553 | },
1554 | "sass": {
1555 | "version": "1.57.1",
1556 | "resolved": "https://registry.npmjs.org/sass/-/sass-1.57.1.tgz",
1557 | "integrity": "sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==",
1558 | "dev": true,
1559 | "requires": {
1560 | "chokidar": ">=3.0.0 <4.0.0",
1561 | "immutable": "^4.0.0",
1562 | "source-map-js": ">=0.6.2 <2.0.0"
1563 | }
1564 | },
1565 | "source-map": {
1566 | "version": "0.6.1",
1567 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1568 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
1569 | },
1570 | "source-map-js": {
1571 | "version": "1.0.2",
1572 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
1573 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
1574 | },
1575 | "sourcemap-codec": {
1576 | "version": "1.4.8",
1577 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
1578 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
1579 | },
1580 | "supports-preserve-symlinks-flag": {
1581 | "version": "1.0.0",
1582 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1583 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1584 | "dev": true
1585 | },
1586 | "to-regex-range": {
1587 | "version": "5.0.1",
1588 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1589 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1590 | "dev": true,
1591 | "requires": {
1592 | "is-number": "^7.0.0"
1593 | }
1594 | },
1595 | "vite": {
1596 | "version": "4.0.4",
1597 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.4.tgz",
1598 | "integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==",
1599 | "dev": true,
1600 | "requires": {
1601 | "esbuild": "^0.16.3",
1602 | "fsevents": "~2.3.2",
1603 | "postcss": "^8.4.20",
1604 | "resolve": "^1.22.1",
1605 | "rollup": "^3.7.0"
1606 | }
1607 | },
1608 | "vue": {
1609 | "version": "3.2.45",
1610 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.45.tgz",
1611 | "integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==",
1612 | "requires": {
1613 | "@vue/compiler-dom": "3.2.45",
1614 | "@vue/compiler-sfc": "3.2.45",
1615 | "@vue/runtime-dom": "3.2.45",
1616 | "@vue/server-renderer": "3.2.45",
1617 | "@vue/shared": "3.2.45"
1618 | }
1619 | },
1620 | "vue-router": {
1621 | "version": "4.1.6",
1622 | "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.1.6.tgz",
1623 | "integrity": "sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==",
1624 | "requires": {
1625 | "@vue/devtools-api": "^6.4.5"
1626 | }
1627 | }
1628 | }
1629 | }
1630 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "starter-template_vue-3-vite-bootstrap-5-with-icons",
3 | "version": "1.0.1",
4 | "description": "Boilerplate for Vue 3 with Vite and Bootstrap 5 with Icons",
5 | "license": "CC-BY-4.0",
6 | "author": "howbizarre@gmail.com",
7 | "private": true,
8 | "scripts": {
9 | "dev": "vite",
10 | "build": "vite build",
11 | "serve": "vite preview"
12 | },
13 | "dependencies": {
14 | "@popperjs/core": "^2.11.6",
15 | "bootstrap": "^5.2.3",
16 | "bootstrap-icons": "^1.10.3",
17 | "vue": "^3.1.2",
18 | "vue-router": "^4.0.10"
19 | },
20 | "devDependencies": {
21 | "@vitejs/plugin-vue": "^4.0.0",
22 | "@vue/compiler-sfc": "^3.1.2",
23 | "sass": "^1.35.1",
24 | "vite": "^4.0.4"
25 | },
26 | "engines": {
27 | "node": ">= 14.17.0",
28 | "npm": ">= 6.14.13"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/howbizarre/starter-template_vue-3-vite-bootstrap-5-with-icons/05d67dfcf0bbfa260961f173e055bb4042f47b1a/public/favicon.ico
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
26 |
--------------------------------------------------------------------------------
/src/components/Footer.vue:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/components/Heads.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
The point of it all is beyond the grasp of human intelligence. Be humble. Be grateful simply knowing that you, we, all are taking part in this One big story called The Universe. Thankfully, we have the tools to acknowledge that fact in wonder and awe.
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/components/Nav.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | 3
10 |
11 |
14 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | 4
30 |
31 | Bootstrap
32 |
37 |
38 | 5
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 | {{ route.path !== "/starter" ? route.name : "" }}
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
68 |
69 |
83 |
--------------------------------------------------------------------------------
/src/components/Refs.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 | {{ item }}
4 | -
5 |
6 |
7 |
8 |
19 |
--------------------------------------------------------------------------------
/src/layouts/DefaultLayout.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | What is the point of all?
6 |
7 |
8 |
9 |
10 |
11 |
12 |
15 |
16 |
17 |
22 |
--------------------------------------------------------------------------------
/src/layouts/MainLayout.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
11 |
12 |
13 |
17 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import { createApp } from "vue";
2 |
3 | import "bootstrap/scss/bootstrap.scss";
4 | import "bootstrap-icons/font/bootstrap-icons.css";
5 |
6 | import App from "@/App.vue";
7 | import router from "@/router";
8 |
9 | const app = createApp(App);
10 |
11 | app.use(router);
12 | app.mount("#app");
13 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import { createRouter, createWebHistory } from "vue-router";
2 |
3 | import Home from "@/views/Home.vue";
4 | import About from "@/views/About.vue";
5 | import Contacts from "@/views/Contacts.vue";
6 |
7 | export const routes = [
8 | {
9 | path: "/starter",
10 | name: "Home",
11 | component: Home,
12 | props: { msg: "Bootstrap Modal" },
13 | },
14 | {
15 | path: "/starter/about",
16 | name: "About",
17 | component: About,
18 | meta: { layout: "MainLayout" },
19 | },
20 | {
21 | path: "/starter/contacts",
22 | name: "Contacts",
23 | component: Contacts,
24 | meta: { layout: "MainLayout" },
25 | },
26 | ];
27 |
28 | const history = createWebHistory();
29 |
30 | const router = createRouter({
31 | history,
32 | routes,
33 | });
34 |
35 | export default router;
36 |
--------------------------------------------------------------------------------
/src/views/About.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
This is an about page
4 |
5 |
--------------------------------------------------------------------------------
/src/views/Contacts.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
This is a contacts page
4 |
5 |
--------------------------------------------------------------------------------
/src/views/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
{{ msg }}
6 |
Before getting started with Bootstrap’s modal component, be sure to read the following as our menu options have recently changed.
7 |
8 |
9 | Modals are built with HTML, CSS, and JavaScript. They’re positioned over everything else in the document and remove scroll from the
10 | <body>
11 | so that modal content scrolls instead.
12 |
13 | Clicking on the modal “backdrop” will automatically close the modal.
14 | Bootstrap only supports one modal window at a time. Nested modals aren’t supported as we believe them to be poor user experiences.
15 |
16 | Modals use
17 | position: fixed
18 | , which can sometimes be a bit particular about its rendering. Whenever possible, place your modal HTML in a top-level position to avoid potential interference from other elements. You’ll likely run into issues when nesting a
19 | .modal
20 | within another fixed element.
21 |
22 |
23 | Once again, due to
24 | position: fixed
25 | , there are some caveats with using modals on mobile devices.
26 | See our browser support docs
27 | for details.
28 |
29 |
30 | Due to how HTML5 defines its semantics,
31 |
32 | the
33 | autofocus
34 | HTML attribute
35 |
36 | has no effect in Bootstrap modals. To achieve the same effect, use some custom JavaScript:
37 |
38 |
39 |
40 |
Launch modal
41 |
42 |
43 |
44 |
48 |
49 | You clicked me {{ state.count }} time{{ state.count === 1 ? "" : "s" }}
50 |
51 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
Bootstrap Toast
62 |
Toasts are lightweight notifications designed to mimic the push notifications that have been popularized by mobile and desktop operating systems. They’re built with flexbox, so they’re easy to align and position.
63 |
64 |
Show Toast
65 |
66 |
67 |
73 |
Hello, world! This is a toast message.
74 |
75 |
76 |
77 |
78 |
Bootstrap Grid
79 |
80 | Bootstrap’s grid system uses a series of containers, rows, and columns to layout and align content. It’s built with
81 | flexbox
82 | and is fully responsive. Below is an example and an in-depth explanation for how the grid system comes together.
83 |
84 |
85 |
86 |
.col-12 .col-lg-8
87 |
.col-12 .col-lg-4
88 |
89 |
90 |
91 |
.col-6 .col-md-4
92 |
.col-6 .col-md-4
93 |
.col-12 .col-md-4
94 |
95 |
96 |
97 |
.col-6
98 |
.col-6
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
134 |
135 |
156 |
--------------------------------------------------------------------------------
/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite";
2 | import vue from "@vitejs/plugin-vue";
3 | import { fileURLToPath, URL } from "node:url";
4 |
5 | // https://vitejs.dev/config/
6 | export default defineConfig({
7 | plugins: [vue()],
8 | resolve: {
9 | alias: {
10 | "@": fileURLToPath(new URL("./src", import.meta.url))
11 | }
12 | }
13 | });
14 |
--------------------------------------------------------------------------------