├── .gitignore ├── .vscode └── extensions.json ├── README.md ├── index.html ├── manifest.json ├── package-lock.json ├── package.json ├── postcss.config.js ├── public ├── favicon.ico ├── icons │ ├── icon-128x128.png │ ├── icon-144x144.png │ ├── icon-152x152.png │ ├── icon-192x192.png │ ├── icon-384x384.png │ ├── icon-512x512.png │ ├── icon-72x72.png │ └── icon-96x96.png └── profile.jpg ├── src ├── App.vue ├── assets │ ├── banner.png │ └── responsive-banner.png ├── components │ ├── BallonChat.vue │ ├── ChatAction.vue │ ├── Contact.vue │ ├── Contacts.vue │ ├── Header.vue │ ├── Navbar.vue │ ├── RoomChat.vue │ └── Searchbar.vue ├── main.js ├── menu.js ├── router │ └── index.js ├── stores │ ├── chats │ │ └── index.js │ └── contacts │ │ └── index.js ├── styles │ ├── app.css │ └── index.css └── views │ ├── Chat.vue │ └── Home.vue ├── tailwind.config.js └── vite.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | dist-ssr 5 | *.local -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["johnsoncodehk.volar"] 3 | } 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

Chat App

2 |

Slicing project #08

3 | 4 | 5 | ### About 6 | This is my projects to make UI using front end tech 7 | 8 | Where the ideas and the concept i use from any other designer UI/UX from Instagram or Dribbble 9 | 10 | ### Original design 11 | by [Imelda](https://dribbble.com/shots/17486130-Chat-App) 12 | 13 | ## Responsive Test 14 | 15 | 16 | ## Languages and Tools 17 | - Vue JS 3 18 | - Tailwindcss 19 | - Pinia state management 20 | - Vue router 21 | - Font Awesome 5 22 | - Google Fonts Poppins 23 | - Vite JS 24 | - Git 25 | - Github 26 | - Vercell 27 | - Termux 28 | - Micro Text Editor 29 | 30 | ### How to install 31 | - git clone https://github.com/or-abdillh/chat-app.git 32 | - cd chat-app 33 | - npm install 34 | - npm run dev 35 | 36 | ### Demo 37 | - [Chat App](https://chat-app-1-one.vercel.app/) 38 | 39 | ### Thanks 40 | - Support me with a cup of coffee and other snacks [here ..](https://saweria.co/orabdillh) 41 | - Don't forget to give me star in this repository 🙏🏻🙏🏻 42 | - See my other projects on instagram [@or.abdillh](http://www.instagram.com/or.abdillh) 43 | 44 | [Oka R Abdillah ](http://github.com/or-abdillh) 45 |
46 | Last edited on : 14/02/2022 -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Chat App - Vue JS - Tailwindcss - Pinia 13 | 14 | 15 |
16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Chat App - Vue JS - Tailwindcss - Pinia", 3 | "short_name": "Chat App", 4 | "theme_color": "#0F1829", 5 | "background_color": "#FFFFFF", 6 | "display": "standalone", 7 | "orientation": "portrait", 8 | "icons": [ 9 | { 10 | "src": "/icons/icon-72x72.png", 11 | "sizes": "72x72", 12 | "type": "image/png" 13 | }, 14 | { 15 | "src": "/icons/icon-96x96.png", 16 | "sizes": "96x96", 17 | "type": "image/png" 18 | }, 19 | { 20 | "src": "/icons/icon-128x128.png", 21 | "sizes": "128x128", 22 | "type": "image/png" 23 | }, 24 | { 25 | "src": "/icons/icon-144x144.png", 26 | "sizes": "144x144", 27 | "type": "image/png" 28 | }, 29 | { 30 | "src": "/icons/icon-152x152.png", 31 | "sizes": "152x152", 32 | "type": "image/png" 33 | }, 34 | { 35 | "src": "/icons/icon-192x192.png", 36 | "sizes": "192x192", 37 | "type": "image/png" 38 | }, 39 | { 40 | "src": "/icons/icon-384x384.png", 41 | "sizes": "384x384", 42 | "type": "image/png" 43 | }, 44 | { 45 | "src": "/icons/icon-512x512.png", 46 | "sizes": "512x512", 47 | "type": "image/png" 48 | } 49 | ] 50 | } 51 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat-app", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.16.7", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", 10 | "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", 11 | "requires": { 12 | "@babel/highlight": "^7.16.7" 13 | } 14 | }, 15 | "@babel/helper-validator-identifier": { 16 | "version": "7.16.7", 17 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", 18 | "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" 19 | }, 20 | "@babel/highlight": { 21 | "version": "7.16.10", 22 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", 23 | "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", 24 | "requires": { 25 | "@babel/helper-validator-identifier": "^7.16.7", 26 | "chalk": "^2.0.0", 27 | "js-tokens": "^4.0.0" 28 | }, 29 | "dependencies": { 30 | "ansi-styles": { 31 | "version": "3.2.1", 32 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 33 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 34 | "requires": { 35 | "color-convert": "^1.9.0" 36 | } 37 | }, 38 | "chalk": { 39 | "version": "2.4.2", 40 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 41 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 42 | "requires": { 43 | "ansi-styles": "^3.2.1", 44 | "escape-string-regexp": "^1.0.5", 45 | "supports-color": "^5.3.0" 46 | } 47 | }, 48 | "color-convert": { 49 | "version": "1.9.3", 50 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 51 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 52 | "requires": { 53 | "color-name": "1.1.3" 54 | } 55 | }, 56 | "color-name": { 57 | "version": "1.1.3", 58 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 59 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 60 | }, 61 | "has-flag": { 62 | "version": "3.0.0", 63 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 64 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 65 | }, 66 | "supports-color": { 67 | "version": "5.5.0", 68 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 69 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 70 | "requires": { 71 | "has-flag": "^3.0.0" 72 | } 73 | } 74 | } 75 | }, 76 | "@babel/parser": { 77 | "version": "7.16.12", 78 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", 79 | "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==" 80 | }, 81 | "@nodelib/fs.scandir": { 82 | "version": "2.1.5", 83 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 84 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 85 | "requires": { 86 | "@nodelib/fs.stat": "2.0.5", 87 | "run-parallel": "^1.1.9" 88 | } 89 | }, 90 | "@nodelib/fs.stat": { 91 | "version": "2.0.5", 92 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 93 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" 94 | }, 95 | "@nodelib/fs.walk": { 96 | "version": "1.2.8", 97 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 98 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 99 | "requires": { 100 | "@nodelib/fs.scandir": "2.1.5", 101 | "fastq": "^1.6.0" 102 | } 103 | }, 104 | "@types/parse-json": { 105 | "version": "4.0.0", 106 | "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", 107 | "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" 108 | }, 109 | "@vitejs/plugin-vue": { 110 | "version": "2.1.0", 111 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-2.1.0.tgz", 112 | "integrity": "sha512-AZ78WxvFMYd8JmM/GBV6a6SGGTU0GgN/0/4T+FnMMsLzFEzTeAUwuraapy50ifHZsC+G5SvWs86bvaCPTneFlA==", 113 | "dev": true 114 | }, 115 | "@vue/compiler-core": { 116 | "version": "3.2.29", 117 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.29.tgz", 118 | "integrity": "sha512-RePZ/J4Ub3sb7atQw6V6Rez+/5LCRHGFlSetT3N4VMrejqJnNPXKUt5AVm/9F5MJriy2w/VudEIvgscCfCWqxw==", 119 | "requires": { 120 | "@babel/parser": "^7.16.4", 121 | "@vue/shared": "3.2.29", 122 | "estree-walker": "^2.0.2", 123 | "source-map": "^0.6.1" 124 | } 125 | }, 126 | "@vue/compiler-dom": { 127 | "version": "3.2.29", 128 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.29.tgz", 129 | "integrity": "sha512-y26vK5khdNS9L3ckvkqJk/78qXwWb75Ci8iYLb67AkJuIgyKhIOcR1E8RIt4mswlVCIeI9gQ+fmtdhaiTAtrBQ==", 130 | "requires": { 131 | "@vue/compiler-core": "3.2.29", 132 | "@vue/shared": "3.2.29" 133 | } 134 | }, 135 | "@vue/compiler-sfc": { 136 | "version": "3.2.29", 137 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.29.tgz", 138 | "integrity": "sha512-X9+0dwsag2u6hSOP/XsMYqFti/edvYvxamgBgCcbSYuXx1xLZN+dS/GvQKM4AgGS4djqo0jQvWfIXdfZ2ET68g==", 139 | "requires": { 140 | "@babel/parser": "^7.16.4", 141 | "@vue/compiler-core": "3.2.29", 142 | "@vue/compiler-dom": "3.2.29", 143 | "@vue/compiler-ssr": "3.2.29", 144 | "@vue/reactivity-transform": "3.2.29", 145 | "@vue/shared": "3.2.29", 146 | "estree-walker": "^2.0.2", 147 | "magic-string": "^0.25.7", 148 | "postcss": "^8.1.10", 149 | "source-map": "^0.6.1" 150 | } 151 | }, 152 | "@vue/compiler-ssr": { 153 | "version": "3.2.29", 154 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.29.tgz", 155 | "integrity": "sha512-LrvQwXlx66uWsB9/VydaaqEpae9xtmlUkeSKF6aPDbzx8M1h7ukxaPjNCAXuFd3fUHblcri8k42lfimHfzMICA==", 156 | "requires": { 157 | "@vue/compiler-dom": "3.2.29", 158 | "@vue/shared": "3.2.29" 159 | } 160 | }, 161 | "@vue/devtools-api": { 162 | "version": "6.0.0-beta.21.1", 163 | "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.0.0-beta.21.1.tgz", 164 | "integrity": "sha512-FqC4s3pm35qGVeXRGOjTsRzlkJjrBLriDS9YXbflHLsfA9FrcKzIyWnLXoNm+/7930E8rRakXuAc2QkC50swAw==" 165 | }, 166 | "@vue/reactivity": { 167 | "version": "3.2.29", 168 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.29.tgz", 169 | "integrity": "sha512-Ryhb6Gy62YolKXH1gv42pEqwx7zs3n8gacRVZICSgjQz8Qr8QeCcFygBKYfJm3o1SccR7U+bVBQDWZGOyG1k4g==", 170 | "requires": { 171 | "@vue/shared": "3.2.29" 172 | } 173 | }, 174 | "@vue/reactivity-transform": { 175 | "version": "3.2.29", 176 | "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.29.tgz", 177 | "integrity": "sha512-YF6HdOuhdOw6KyRm59+3rML8USb9o8mYM1q+SH0G41K3/q/G7uhPnHGKvspzceD7h9J3VR1waOQ93CUZj7J7OA==", 178 | "requires": { 179 | "@babel/parser": "^7.16.4", 180 | "@vue/compiler-core": "3.2.29", 181 | "@vue/shared": "3.2.29", 182 | "estree-walker": "^2.0.2", 183 | "magic-string": "^0.25.7" 184 | } 185 | }, 186 | "@vue/runtime-core": { 187 | "version": "3.2.29", 188 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.29.tgz", 189 | "integrity": "sha512-VMvQuLdzoTGmCwIKTKVwKmIL0qcODIqe74JtK1pVr5lnaE0l25hopodmPag3RcnIcIXe+Ye3B2olRCn7fTCgig==", 190 | "requires": { 191 | "@vue/reactivity": "3.2.29", 192 | "@vue/shared": "3.2.29" 193 | } 194 | }, 195 | "@vue/runtime-dom": { 196 | "version": "3.2.29", 197 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.29.tgz", 198 | "integrity": "sha512-YJgLQLwr+SQyORzTsBQLL5TT/5UiV83tEotqjL7F9aFDIQdFBTCwpkCFvX9jqwHoyi9sJqM9XtTrMcc8z/OjPA==", 199 | "requires": { 200 | "@vue/runtime-core": "3.2.29", 201 | "@vue/shared": "3.2.29", 202 | "csstype": "^2.6.8" 203 | } 204 | }, 205 | "@vue/server-renderer": { 206 | "version": "3.2.29", 207 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.29.tgz", 208 | "integrity": "sha512-lpiYx7ciV7rWfJ0tPkoSOlLmwqBZ9FTmQm33S+T4g0j1fO/LmhJ9b9Ctl1o5xvIFVDk9QkSUWANZn7H2pXuxVw==", 209 | "requires": { 210 | "@vue/compiler-ssr": "3.2.29", 211 | "@vue/shared": "3.2.29" 212 | } 213 | }, 214 | "@vue/shared": { 215 | "version": "3.2.29", 216 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.29.tgz", 217 | "integrity": "sha512-BjNpU8OK6Z0LVzGUppEk0CMYm/hKDnZfYdjSmPOs0N+TR1cLKJAkDwW8ASZUvaaSLEi6d3hVM7jnWnX+6yWnHw==" 218 | }, 219 | "acorn": { 220 | "version": "7.4.1", 221 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 222 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" 223 | }, 224 | "acorn-node": { 225 | "version": "1.8.2", 226 | "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", 227 | "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", 228 | "requires": { 229 | "acorn": "^7.0.0", 230 | "acorn-walk": "^7.0.0", 231 | "xtend": "^4.0.2" 232 | } 233 | }, 234 | "acorn-walk": { 235 | "version": "7.2.0", 236 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", 237 | "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" 238 | }, 239 | "ansi-styles": { 240 | "version": "4.3.0", 241 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 242 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 243 | "requires": { 244 | "color-convert": "^2.0.1" 245 | } 246 | }, 247 | "anymatch": { 248 | "version": "3.1.2", 249 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 250 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 251 | "requires": { 252 | "normalize-path": "^3.0.0", 253 | "picomatch": "^2.0.4" 254 | } 255 | }, 256 | "arg": { 257 | "version": "5.0.1", 258 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", 259 | "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==" 260 | }, 261 | "autoprefixer": { 262 | "version": "10.4.2", 263 | "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.2.tgz", 264 | "integrity": "sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ==", 265 | "requires": { 266 | "browserslist": "^4.19.1", 267 | "caniuse-lite": "^1.0.30001297", 268 | "fraction.js": "^4.1.2", 269 | "normalize-range": "^0.1.2", 270 | "picocolors": "^1.0.0", 271 | "postcss-value-parser": "^4.2.0" 272 | } 273 | }, 274 | "binary-extensions": { 275 | "version": "2.2.0", 276 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 277 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" 278 | }, 279 | "braces": { 280 | "version": "3.0.2", 281 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 282 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 283 | "requires": { 284 | "fill-range": "^7.0.1" 285 | } 286 | }, 287 | "browserslist": { 288 | "version": "4.19.1", 289 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", 290 | "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", 291 | "requires": { 292 | "caniuse-lite": "^1.0.30001286", 293 | "electron-to-chromium": "^1.4.17", 294 | "escalade": "^3.1.1", 295 | "node-releases": "^2.0.1", 296 | "picocolors": "^1.0.0" 297 | } 298 | }, 299 | "callsites": { 300 | "version": "3.1.0", 301 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 302 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" 303 | }, 304 | "camelcase-css": { 305 | "version": "2.0.1", 306 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", 307 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" 308 | }, 309 | "caniuse-lite": { 310 | "version": "1.0.30001303", 311 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001303.tgz", 312 | "integrity": "sha512-/Mqc1oESndUNszJP0kx0UaQU9kEv9nNtJ7Kn8AdA0mNnH8eR1cj0kG+NbNuC1Wq/b21eA8prhKRA3bbkjONegQ==" 313 | }, 314 | "chalk": { 315 | "version": "4.1.2", 316 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 317 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 318 | "requires": { 319 | "ansi-styles": "^4.1.0", 320 | "supports-color": "^7.1.0" 321 | } 322 | }, 323 | "chokidar": { 324 | "version": "3.5.3", 325 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 326 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 327 | "requires": { 328 | "anymatch": "~3.1.2", 329 | "braces": "~3.0.2", 330 | "fsevents": "~2.3.2", 331 | "glob-parent": "~5.1.2", 332 | "is-binary-path": "~2.1.0", 333 | "is-glob": "~4.0.1", 334 | "normalize-path": "~3.0.0", 335 | "readdirp": "~3.6.0" 336 | }, 337 | "dependencies": { 338 | "glob-parent": { 339 | "version": "5.1.2", 340 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 341 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 342 | "requires": { 343 | "is-glob": "^4.0.1" 344 | } 345 | } 346 | } 347 | }, 348 | "color-convert": { 349 | "version": "2.0.1", 350 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 351 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 352 | "requires": { 353 | "color-name": "~1.1.4" 354 | } 355 | }, 356 | "color-name": { 357 | "version": "1.1.4", 358 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 359 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 360 | }, 361 | "cosmiconfig": { 362 | "version": "7.0.1", 363 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", 364 | "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", 365 | "requires": { 366 | "@types/parse-json": "^4.0.0", 367 | "import-fresh": "^3.2.1", 368 | "parse-json": "^5.0.0", 369 | "path-type": "^4.0.0", 370 | "yaml": "^1.10.0" 371 | } 372 | }, 373 | "cssesc": { 374 | "version": "3.0.0", 375 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 376 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" 377 | }, 378 | "csstype": { 379 | "version": "2.6.19", 380 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz", 381 | "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==" 382 | }, 383 | "defined": { 384 | "version": "1.0.0", 385 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 386 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" 387 | }, 388 | "detective": { 389 | "version": "5.2.0", 390 | "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", 391 | "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", 392 | "requires": { 393 | "acorn-node": "^1.6.1", 394 | "defined": "^1.0.0", 395 | "minimist": "^1.1.1" 396 | } 397 | }, 398 | "didyoumean": { 399 | "version": "1.2.2", 400 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", 401 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" 402 | }, 403 | "dlv": { 404 | "version": "1.1.3", 405 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", 406 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" 407 | }, 408 | "electron-to-chromium": { 409 | "version": "1.4.57", 410 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.57.tgz", 411 | "integrity": "sha512-FNC+P5K1n6pF+M0zIK+gFCoXcJhhzDViL3DRIGy2Fv5PohuSES1JHR7T+GlwxSxlzx4yYbsuzCZvHxcBSRCIOw==" 412 | }, 413 | "error-ex": { 414 | "version": "1.3.2", 415 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 416 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 417 | "requires": { 418 | "is-arrayish": "^0.2.1" 419 | } 420 | }, 421 | "esbuild": { 422 | "version": "0.13.15", 423 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.13.15.tgz", 424 | "integrity": "sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==", 425 | "dev": true, 426 | "requires": { 427 | "esbuild-android-arm64": "0.13.15", 428 | "esbuild-darwin-64": "0.13.15", 429 | "esbuild-darwin-arm64": "0.13.15", 430 | "esbuild-freebsd-64": "0.13.15", 431 | "esbuild-freebsd-arm64": "0.13.15", 432 | "esbuild-linux-32": "0.13.15", 433 | "esbuild-linux-64": "0.13.15", 434 | "esbuild-linux-arm": "0.13.15", 435 | "esbuild-linux-arm64": "0.13.15", 436 | "esbuild-linux-mips64le": "0.13.15", 437 | "esbuild-linux-ppc64le": "0.13.15", 438 | "esbuild-netbsd-64": "0.13.15", 439 | "esbuild-openbsd-64": "0.13.15", 440 | "esbuild-sunos-64": "0.13.15", 441 | "esbuild-windows-32": "0.13.15", 442 | "esbuild-windows-64": "0.13.15", 443 | "esbuild-windows-arm64": "0.13.15" 444 | } 445 | }, 446 | "esbuild-android-arm64": { 447 | "version": "0.13.15", 448 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz", 449 | "integrity": "sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg==", 450 | "dev": true, 451 | "optional": true 452 | }, 453 | "esbuild-darwin-64": { 454 | "version": "0.13.15", 455 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz", 456 | "integrity": "sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==", 457 | "dev": true, 458 | "optional": true 459 | }, 460 | "esbuild-darwin-arm64": { 461 | "version": "0.13.15", 462 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz", 463 | "integrity": "sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==", 464 | "dev": true, 465 | "optional": true 466 | }, 467 | "esbuild-freebsd-64": { 468 | "version": "0.13.15", 469 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz", 470 | "integrity": "sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==", 471 | "dev": true, 472 | "optional": true 473 | }, 474 | "esbuild-freebsd-arm64": { 475 | "version": "0.13.15", 476 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz", 477 | "integrity": "sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==", 478 | "dev": true, 479 | "optional": true 480 | }, 481 | "esbuild-linux-32": { 482 | "version": "0.13.15", 483 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz", 484 | "integrity": "sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==", 485 | "dev": true, 486 | "optional": true 487 | }, 488 | "esbuild-linux-64": { 489 | "version": "0.13.15", 490 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz", 491 | "integrity": "sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==", 492 | "dev": true, 493 | "optional": true 494 | }, 495 | "esbuild-linux-arm": { 496 | "version": "0.13.15", 497 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz", 498 | "integrity": "sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==", 499 | "dev": true, 500 | "optional": true 501 | }, 502 | "esbuild-linux-arm64": { 503 | "version": "0.13.15", 504 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz", 505 | "integrity": "sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==", 506 | "dev": true, 507 | "optional": true 508 | }, 509 | "esbuild-linux-mips64le": { 510 | "version": "0.13.15", 511 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz", 512 | "integrity": "sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==", 513 | "dev": true, 514 | "optional": true 515 | }, 516 | "esbuild-linux-ppc64le": { 517 | "version": "0.13.15", 518 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz", 519 | "integrity": "sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==", 520 | "dev": true, 521 | "optional": true 522 | }, 523 | "esbuild-netbsd-64": { 524 | "version": "0.13.15", 525 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz", 526 | "integrity": "sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==", 527 | "dev": true, 528 | "optional": true 529 | }, 530 | "esbuild-openbsd-64": { 531 | "version": "0.13.15", 532 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz", 533 | "integrity": "sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==", 534 | "dev": true, 535 | "optional": true 536 | }, 537 | "esbuild-sunos-64": { 538 | "version": "0.13.15", 539 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz", 540 | "integrity": "sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==", 541 | "dev": true, 542 | "optional": true 543 | }, 544 | "esbuild-windows-32": { 545 | "version": "0.13.15", 546 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz", 547 | "integrity": "sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==", 548 | "dev": true, 549 | "optional": true 550 | }, 551 | "esbuild-windows-64": { 552 | "version": "0.13.15", 553 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz", 554 | "integrity": "sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==", 555 | "dev": true, 556 | "optional": true 557 | }, 558 | "esbuild-windows-arm64": { 559 | "version": "0.13.15", 560 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz", 561 | "integrity": "sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==", 562 | "dev": true, 563 | "optional": true 564 | }, 565 | "escalade": { 566 | "version": "3.1.1", 567 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 568 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" 569 | }, 570 | "escape-string-regexp": { 571 | "version": "1.0.5", 572 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 573 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 574 | }, 575 | "estree-walker": { 576 | "version": "2.0.2", 577 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 578 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 579 | }, 580 | "fast-glob": { 581 | "version": "3.2.11", 582 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", 583 | "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", 584 | "requires": { 585 | "@nodelib/fs.stat": "^2.0.2", 586 | "@nodelib/fs.walk": "^1.2.3", 587 | "glob-parent": "^5.1.2", 588 | "merge2": "^1.3.0", 589 | "micromatch": "^4.0.4" 590 | }, 591 | "dependencies": { 592 | "glob-parent": { 593 | "version": "5.1.2", 594 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 595 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 596 | "requires": { 597 | "is-glob": "^4.0.1" 598 | } 599 | } 600 | } 601 | }, 602 | "fastq": { 603 | "version": "1.13.0", 604 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", 605 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", 606 | "requires": { 607 | "reusify": "^1.0.4" 608 | } 609 | }, 610 | "fill-range": { 611 | "version": "7.0.1", 612 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 613 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 614 | "requires": { 615 | "to-regex-range": "^5.0.1" 616 | } 617 | }, 618 | "fraction.js": { 619 | "version": "4.1.2", 620 | "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.1.2.tgz", 621 | "integrity": "sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA==" 622 | }, 623 | "fsevents": { 624 | "version": "2.3.2", 625 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 626 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 627 | "optional": true 628 | }, 629 | "function-bind": { 630 | "version": "1.1.1", 631 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 632 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 633 | }, 634 | "glob-parent": { 635 | "version": "6.0.2", 636 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 637 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 638 | "requires": { 639 | "is-glob": "^4.0.3" 640 | } 641 | }, 642 | "has": { 643 | "version": "1.0.3", 644 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 645 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 646 | "requires": { 647 | "function-bind": "^1.1.1" 648 | } 649 | }, 650 | "has-flag": { 651 | "version": "4.0.0", 652 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 653 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 654 | }, 655 | "import-fresh": { 656 | "version": "3.3.0", 657 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 658 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 659 | "requires": { 660 | "parent-module": "^1.0.0", 661 | "resolve-from": "^4.0.0" 662 | } 663 | }, 664 | "is-arrayish": { 665 | "version": "0.2.1", 666 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 667 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" 668 | }, 669 | "is-binary-path": { 670 | "version": "2.1.0", 671 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 672 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 673 | "requires": { 674 | "binary-extensions": "^2.0.0" 675 | } 676 | }, 677 | "is-core-module": { 678 | "version": "2.8.1", 679 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", 680 | "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", 681 | "requires": { 682 | "has": "^1.0.3" 683 | } 684 | }, 685 | "is-extglob": { 686 | "version": "2.1.1", 687 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 688 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" 689 | }, 690 | "is-glob": { 691 | "version": "4.0.3", 692 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 693 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 694 | "requires": { 695 | "is-extglob": "^2.1.1" 696 | } 697 | }, 698 | "is-number": { 699 | "version": "7.0.0", 700 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 701 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 702 | }, 703 | "js-tokens": { 704 | "version": "4.0.0", 705 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 706 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 707 | }, 708 | "json-parse-even-better-errors": { 709 | "version": "2.3.1", 710 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 711 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" 712 | }, 713 | "lilconfig": { 714 | "version": "2.0.4", 715 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", 716 | "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==" 717 | }, 718 | "lines-and-columns": { 719 | "version": "1.2.4", 720 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 721 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" 722 | }, 723 | "magic-string": { 724 | "version": "0.25.7", 725 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", 726 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", 727 | "requires": { 728 | "sourcemap-codec": "^1.4.4" 729 | } 730 | }, 731 | "merge2": { 732 | "version": "1.4.1", 733 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 734 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" 735 | }, 736 | "micromatch": { 737 | "version": "4.0.4", 738 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", 739 | "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", 740 | "requires": { 741 | "braces": "^3.0.1", 742 | "picomatch": "^2.2.3" 743 | } 744 | }, 745 | "minimist": { 746 | "version": "1.2.5", 747 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 748 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 749 | }, 750 | "nanoid": { 751 | "version": "3.2.0", 752 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", 753 | "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==" 754 | }, 755 | "node-releases": { 756 | "version": "2.0.1", 757 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", 758 | "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==" 759 | }, 760 | "normalize-path": { 761 | "version": "3.0.0", 762 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 763 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 764 | }, 765 | "normalize-range": { 766 | "version": "0.1.2", 767 | "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", 768 | "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=" 769 | }, 770 | "object-hash": { 771 | "version": "2.2.0", 772 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", 773 | "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==" 774 | }, 775 | "parent-module": { 776 | "version": "1.0.1", 777 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 778 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 779 | "requires": { 780 | "callsites": "^3.0.0" 781 | } 782 | }, 783 | "parse-json": { 784 | "version": "5.2.0", 785 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 786 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 787 | "requires": { 788 | "@babel/code-frame": "^7.0.0", 789 | "error-ex": "^1.3.1", 790 | "json-parse-even-better-errors": "^2.3.0", 791 | "lines-and-columns": "^1.1.6" 792 | } 793 | }, 794 | "path-parse": { 795 | "version": "1.0.7", 796 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 797 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" 798 | }, 799 | "path-type": { 800 | "version": "4.0.0", 801 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 802 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" 803 | }, 804 | "picocolors": { 805 | "version": "1.0.0", 806 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 807 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 808 | }, 809 | "picomatch": { 810 | "version": "2.3.1", 811 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 812 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 813 | }, 814 | "pinia": { 815 | "version": "2.0.10", 816 | "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.0.10.tgz", 817 | "integrity": "sha512-Gq8qCjWkz1SZSCrHqGg/k+wbeu35R7y44eDXFHJlBr5gZ8ooAf6bAHLt5zpAVIDptv09h0+XLZpy9dMHbwvXWw==", 818 | "requires": { 819 | "@vue/devtools-api": "^6.0.0-beta.21", 820 | "vue-demi": "*" 821 | } 822 | }, 823 | "postcss": { 824 | "version": "8.4.5", 825 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", 826 | "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", 827 | "requires": { 828 | "nanoid": "^3.1.30", 829 | "picocolors": "^1.0.0", 830 | "source-map-js": "^1.0.1" 831 | } 832 | }, 833 | "postcss-js": { 834 | "version": "4.0.0", 835 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", 836 | "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", 837 | "requires": { 838 | "camelcase-css": "^2.0.1" 839 | } 840 | }, 841 | "postcss-load-config": { 842 | "version": "3.1.1", 843 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.1.tgz", 844 | "integrity": "sha512-c/9XYboIbSEUZpiD1UQD0IKiUe8n9WHYV7YFe7X7J+ZwCsEKkUJSFWjS9hBU1RR9THR7jMXst8sxiqP0jjo2mg==", 845 | "requires": { 846 | "lilconfig": "^2.0.4", 847 | "yaml": "^1.10.2" 848 | } 849 | }, 850 | "postcss-nested": { 851 | "version": "5.0.6", 852 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", 853 | "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", 854 | "requires": { 855 | "postcss-selector-parser": "^6.0.6" 856 | } 857 | }, 858 | "postcss-selector-parser": { 859 | "version": "6.0.9", 860 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz", 861 | "integrity": "sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ==", 862 | "requires": { 863 | "cssesc": "^3.0.0", 864 | "util-deprecate": "^1.0.2" 865 | } 866 | }, 867 | "postcss-value-parser": { 868 | "version": "4.2.0", 869 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", 870 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" 871 | }, 872 | "queue-microtask": { 873 | "version": "1.2.3", 874 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 875 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" 876 | }, 877 | "quick-lru": { 878 | "version": "5.1.1", 879 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 880 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" 881 | }, 882 | "readdirp": { 883 | "version": "3.6.0", 884 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 885 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 886 | "requires": { 887 | "picomatch": "^2.2.1" 888 | } 889 | }, 890 | "resolve": { 891 | "version": "1.22.0", 892 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", 893 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", 894 | "requires": { 895 | "is-core-module": "^2.8.1", 896 | "path-parse": "^1.0.7", 897 | "supports-preserve-symlinks-flag": "^1.0.0" 898 | } 899 | }, 900 | "resolve-from": { 901 | "version": "4.0.0", 902 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 903 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" 904 | }, 905 | "reusify": { 906 | "version": "1.0.4", 907 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 908 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" 909 | }, 910 | "rollup": { 911 | "version": "2.66.1", 912 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.66.1.tgz", 913 | "integrity": "sha512-crSgLhSkLMnKr4s9iZ/1qJCplgAgrRY+igWv8KhG/AjKOJ0YX/WpmANyn8oxrw+zenF3BXWDLa7Xl/QZISH+7w==", 914 | "dev": true, 915 | "requires": { 916 | "fsevents": "~2.3.2" 917 | } 918 | }, 919 | "run-parallel": { 920 | "version": "1.2.0", 921 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 922 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 923 | "requires": { 924 | "queue-microtask": "^1.2.2" 925 | } 926 | }, 927 | "source-map": { 928 | "version": "0.6.1", 929 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 930 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 931 | }, 932 | "source-map-js": { 933 | "version": "1.0.2", 934 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 935 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 936 | }, 937 | "sourcemap-codec": { 938 | "version": "1.4.8", 939 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 940 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" 941 | }, 942 | "supports-color": { 943 | "version": "7.2.0", 944 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 945 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 946 | "requires": { 947 | "has-flag": "^4.0.0" 948 | } 949 | }, 950 | "supports-preserve-symlinks-flag": { 951 | "version": "1.0.0", 952 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 953 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" 954 | }, 955 | "tailwindcss": { 956 | "version": "3.0.18", 957 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.18.tgz", 958 | "integrity": "sha512-ihPTpEyA5ANgZbwKlgrbfnzOp9R5vDHFWmqxB1PT8NwOGCOFVVMl+Ps1cQQ369acaqqf1BEF77roCwK0lvNmTw==", 959 | "requires": { 960 | "arg": "^5.0.1", 961 | "chalk": "^4.1.2", 962 | "chokidar": "^3.5.3", 963 | "color-name": "^1.1.4", 964 | "cosmiconfig": "^7.0.1", 965 | "detective": "^5.2.0", 966 | "didyoumean": "^1.2.2", 967 | "dlv": "^1.1.3", 968 | "fast-glob": "^3.2.11", 969 | "glob-parent": "^6.0.2", 970 | "is-glob": "^4.0.3", 971 | "normalize-path": "^3.0.0", 972 | "object-hash": "^2.2.0", 973 | "postcss-js": "^4.0.0", 974 | "postcss-load-config": "^3.1.0", 975 | "postcss-nested": "5.0.6", 976 | "postcss-selector-parser": "^6.0.9", 977 | "postcss-value-parser": "^4.2.0", 978 | "quick-lru": "^5.1.1", 979 | "resolve": "^1.21.0" 980 | } 981 | }, 982 | "to-regex-range": { 983 | "version": "5.0.1", 984 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 985 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 986 | "requires": { 987 | "is-number": "^7.0.0" 988 | } 989 | }, 990 | "util-deprecate": { 991 | "version": "1.0.2", 992 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 993 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 994 | }, 995 | "vite": { 996 | "version": "2.7.13", 997 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.7.13.tgz", 998 | "integrity": "sha512-Mq8et7f3aK0SgSxjDNfOAimZGW9XryfHRa/uV0jseQSilg+KhYDSoNb9h1rknOy6SuMkvNDLKCYAYYUMCE+IgQ==", 999 | "dev": true, 1000 | "requires": { 1001 | "esbuild": "^0.13.12", 1002 | "fsevents": "~2.3.2", 1003 | "postcss": "^8.4.5", 1004 | "resolve": "^1.20.0", 1005 | "rollup": "^2.59.0" 1006 | } 1007 | }, 1008 | "vue": { 1009 | "version": "3.2.29", 1010 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.29.tgz", 1011 | "integrity": "sha512-cFIwr7LkbtCRanjNvh6r7wp2yUxfxeM2yPpDQpAfaaLIGZSrUmLbNiSze9nhBJt5MrZ68Iqt0O5scwAMEVxF+Q==", 1012 | "requires": { 1013 | "@vue/compiler-dom": "3.2.29", 1014 | "@vue/compiler-sfc": "3.2.29", 1015 | "@vue/runtime-dom": "3.2.29", 1016 | "@vue/server-renderer": "3.2.29", 1017 | "@vue/shared": "3.2.29" 1018 | } 1019 | }, 1020 | "vue-demi": { 1021 | "version": "0.12.1", 1022 | "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.12.1.tgz", 1023 | "integrity": "sha512-QL3ny+wX8c6Xm1/EZylbgzdoDolye+VpCXRhI2hug9dJTP3OUJ3lmiKN3CsVV3mOJKwFi0nsstbgob0vG7aoIw==" 1024 | }, 1025 | "vue-router": { 1026 | "version": "4.0.12", 1027 | "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.12.tgz", 1028 | "integrity": "sha512-CPXvfqe+mZLB1kBWssssTiWg4EQERyqJZes7USiqfW9B5N2x+nHlnsM1D3b5CaJ6qgCvMmYJnz+G0iWjNCvXrg==", 1029 | "requires": { 1030 | "@vue/devtools-api": "^6.0.0-beta.18" 1031 | } 1032 | }, 1033 | "xtend": { 1034 | "version": "4.0.2", 1035 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 1036 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 1037 | }, 1038 | "yaml": { 1039 | "version": "1.10.2", 1040 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 1041 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" 1042 | } 1043 | } 1044 | } 1045 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chat-app", 3 | "version": "1.0.0", 4 | "description": "Slicing design Chat App using Vue JS 3 and Tailwindcss", 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "vite build", 8 | "preview": "vite preview" 9 | }, 10 | "dependencies": { 11 | "autoprefixer": "^10.4.2", 12 | "pinia": "^2.0.10", 13 | "postcss": "^8.4.5", 14 | "tailwindcss": "^3.0.18", 15 | "vue": "^3.2.25", 16 | "vue-router": "^4.0.12" 17 | }, 18 | "devDependencies": { 19 | "@vitejs/plugin-vue": "^2.0.0", 20 | "vite": "^2.7.2" 21 | }, 22 | "author": "Oka R. Abdillah" 23 | } 24 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/or-abdillh/chat-app/a4efd3bff77043626b36ff084a1da44ae8006940/public/favicon.ico -------------------------------------------------------------------------------- /public/icons/icon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/or-abdillh/chat-app/a4efd3bff77043626b36ff084a1da44ae8006940/public/icons/icon-128x128.png -------------------------------------------------------------------------------- /public/icons/icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/or-abdillh/chat-app/a4efd3bff77043626b36ff084a1da44ae8006940/public/icons/icon-144x144.png -------------------------------------------------------------------------------- /public/icons/icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/or-abdillh/chat-app/a4efd3bff77043626b36ff084a1da44ae8006940/public/icons/icon-152x152.png -------------------------------------------------------------------------------- /public/icons/icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/or-abdillh/chat-app/a4efd3bff77043626b36ff084a1da44ae8006940/public/icons/icon-192x192.png -------------------------------------------------------------------------------- /public/icons/icon-384x384.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/or-abdillh/chat-app/a4efd3bff77043626b36ff084a1da44ae8006940/public/icons/icon-384x384.png -------------------------------------------------------------------------------- /public/icons/icon-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/or-abdillh/chat-app/a4efd3bff77043626b36ff084a1da44ae8006940/public/icons/icon-512x512.png -------------------------------------------------------------------------------- /public/icons/icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/or-abdillh/chat-app/a4efd3bff77043626b36ff084a1da44ae8006940/public/icons/icon-72x72.png -------------------------------------------------------------------------------- /public/icons/icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/or-abdillh/chat-app/a4efd3bff77043626b36ff084a1da44ae8006940/public/icons/icon-96x96.png -------------------------------------------------------------------------------- /public/profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/or-abdillh/chat-app/a4efd3bff77043626b36ff084a1da44ae8006940/public/profile.jpg -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /src/assets/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/or-abdillh/chat-app/a4efd3bff77043626b36ff084a1da44ae8006940/src/assets/banner.png -------------------------------------------------------------------------------- /src/assets/responsive-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/or-abdillh/chat-app/a4efd3bff77043626b36ff084a1da44ae8006940/src/assets/responsive-banner.png -------------------------------------------------------------------------------- /src/components/BallonChat.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 25 | -------------------------------------------------------------------------------- /src/components/ChatAction.vue: -------------------------------------------------------------------------------- 1 | 34 | 35 | 49 | 50 | -------------------------------------------------------------------------------- /src/components/Contact.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 51 | -------------------------------------------------------------------------------- /src/components/Contacts.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 19 | -------------------------------------------------------------------------------- /src/components/Header.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /src/components/Navbar.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 27 | -------------------------------------------------------------------------------- /src/components/RoomChat.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 23 | -------------------------------------------------------------------------------- /src/components/Searchbar.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 22 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import { createPinia } from 'pinia' 3 | import App from '@/App.vue' 4 | import router from '@/router' 5 | import '@/styles/index.css' 6 | import '@/styles/app.css' 7 | 8 | createApp(App) 9 | .use(router) 10 | .use(createPinia()) 11 | .mount('#app') 12 | -------------------------------------------------------------------------------- /src/menu.js: -------------------------------------------------------------------------------- 1 | //content for navbar 2 | 3 | export default [ 4 | { 5 | name: 'Contacts', 6 | icon: 'fa fa-users' 7 | }, 8 | { 9 | name: 'Chats', 10 | icon: 'fa fa-comments' 11 | }, 12 | { 13 | name: 'Settings', 14 | icon: 'fa fa-cog' 15 | } 16 | ] 17 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import { createRouter, createWebHistory } from 'vue-router' 2 | import Home from '@/views/Home.vue' 3 | 4 | const routes = [ 5 | { 6 | name: 'Home', 7 | path: '/', 8 | component: Home 9 | }, 10 | { 11 | name: 'Chat', 12 | path: '/chat', 13 | component: () => import('@/views/Chat.vue') 14 | } 15 | ] 16 | 17 | const router = createRouter({ 18 | history: createWebHistory(process.env.BASE_URL), 19 | routes 20 | }) 21 | 22 | export default router 23 | -------------------------------------------------------------------------------- /src/stores/chats/index.js: -------------------------------------------------------------------------------- 1 | import { defineStore } from 'pinia' 2 | 3 | export const useChats = defineStore('chats', { 4 | state: () => { 5 | return { 6 | chats: [ 7 | { 8 | text: 'Sure we are going to plazamart now', 9 | left: true, 10 | id: 1 11 | }, 12 | { 13 | text: 'Hi Ahmed! How\'s are you?', 14 | left: true, 15 | id: 2 16 | }, 17 | { 18 | text: 'I am contacting you because am very hungry', 19 | left: true, 20 | id: 3 21 | }, 22 | { 23 | text: 'Hi bruuh :>', 24 | left: true, 25 | id: 4 26 | }, 27 | { 28 | text: 'hello friend 😀', 29 | left: true, 30 | id: 5 31 | }, 32 | { 33 | text: '😂😂😂😂', 34 | left: true, 35 | id: 6 36 | }, 37 | { 38 | text: 'Aowkaoawkoakwokawl', 39 | left: true, 40 | id: 7 41 | } 42 | ] 43 | } 44 | }, 45 | actions: { 46 | addingNewChat (payload) { 47 | this.chats.push(payload) 48 | } 49 | } 50 | }) 51 | -------------------------------------------------------------------------------- /src/stores/contacts/index.js: -------------------------------------------------------------------------------- 1 | import { defineStore } from 'pinia' 2 | 3 | export const useContacts = defineStore('contacts', { 4 | actions: { 5 | setLastMessage(payload, id) { 6 | this.contacts.forEach(contact => { 7 | if (contact.id == id) contact.lastMessage = payload 8 | }) 9 | }, 10 | setCurrentKeyword(payload) { 11 | this.currentKeyword = payload 12 | } 13 | }, 14 | state: () => { 15 | return { 16 | currentKeyword: '', 17 | contacts: [ 18 | { 19 | id: 1, 20 | avatar: '/profile.jpg', 21 | name: 'John Cos', 22 | initial: 'JC', 23 | lastMessage: 'Sure we are going to plazamart now', 24 | unReadMessage: 0, 25 | timestamp: '14:23', 26 | status: 'online' 27 | }, 28 | { 29 | id: 2, 30 | avatar: null, 31 | name: 'Edwar Boy', 32 | initial: 'EB', 33 | lastMessage: 'Hi Ahmed! How\'s are you?', 34 | unReadMessage: 1, 35 | timestamp: '14:22', 36 | status: 'online' 37 | }, 38 | { 39 | id: 3, 40 | avatar: null, 41 | name: 'Shabrina A', 42 | initial: 'SA', 43 | lastMessage: 'I am contacting you because am very hungry', 44 | unReadMessage: 1, 45 | timestamp: '10:00', 46 | status: 'offline' 47 | }, 48 | { 49 | id: 4, 50 | avatar: null, 51 | name: 'Ed Sharon', 52 | initial: 'ES', 53 | lastMessage: 'Hi bruuh :>', 54 | unReadMessage: 1, 55 | timestamp: '11:00', 56 | status: 'offline' 57 | }, 58 | { 59 | id: 5, 60 | avatar: '/profile.jpg', 61 | name: 'Bruno Fernandes', 62 | initial: 'BF', 63 | lastMessage: 'hello friend 😀', 64 | unReadMessage: 0, 65 | timestamp: '12:00', 66 | status: 'online' 67 | }, 68 | { 69 | id: 6, 70 | avatar: '/profile.jpg', 71 | name: 'Elkan Shaw', 72 | initial: 'ES', 73 | lastMessage: '😂😂😂😂', 74 | unReadMessage: 1, 75 | timestamp: '21:00', 76 | status: 'offline' 77 | }, 78 | { 79 | id: 7, 80 | avatar: null, 81 | name: 'James Smith', 82 | initial: 'JS', 83 | lastMessage: 'Aowkaoawkoakwokawl', 84 | unReadMessage: 1, 85 | timestamp: '11:00', 86 | status: 'offline' 87 | } 88 | ] 89 | } 90 | } 91 | }) 92 | -------------------------------------------------------------------------------- /src/styles/app.css: -------------------------------------------------------------------------------- 1 | /* Google fonts */ 2 | /* Poppins */ 3 | 4 | @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@200;300;400;500;600&display=swap'); 5 | 6 | * { 7 | font-family: 'Poppins', sans-serif; 8 | } 9 | -------------------------------------------------------------------------------- /src/styles/index.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /src/views/Chat.vue: -------------------------------------------------------------------------------- 1 | 31 | 32 | 66 | -------------------------------------------------------------------------------- /src/views/Home.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 45 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: [ 3 | "./index.html", 4 | "./src/**/*.{vue,js,ts,jsx,tsx}", 5 | ], 6 | theme: { 7 | extend: { 8 | colors: { 9 | primary: "#0F1829", 10 | secondary: "#112130", 11 | }, 12 | fontSize: { 13 | 'xxs': '.45rem' 14 | } 15 | }, 16 | }, 17 | plugins: [], 18 | } 19 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | import { resolve } from 'path' 4 | 5 | // https://vitejs.dev/config/ 6 | export default defineConfig({ 7 | plugins: [vue()], 8 | define: { 9 | 'process.env': {} 10 | }, 11 | resolve: { 12 | alias: { 13 | '@': resolve(__dirname, 'src') 14 | } 15 | } 16 | }) 17 | --------------------------------------------------------------------------------