├── .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 | 4 | 5 | 26 | -------------------------------------------------------------------------------- /src/components/Footer.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | -------------------------------------------------------------------------------- /src/components/Heads.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/Nav.vue: -------------------------------------------------------------------------------- 1 | 56 | 57 | 68 | 69 | 83 | -------------------------------------------------------------------------------- /src/components/Refs.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 19 | -------------------------------------------------------------------------------- /src/layouts/DefaultLayout.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 22 | -------------------------------------------------------------------------------- /src/layouts/MainLayout.vue: -------------------------------------------------------------------------------- 1 | 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 | -------------------------------------------------------------------------------- /src/views/Contacts.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/views/Home.vue: -------------------------------------------------------------------------------- 1 | 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 | --------------------------------------------------------------------------------