├── .gitignore ├── README.md ├── index.html ├── package-lock.json ├── package.json ├── public └── favicon.ico ├── src ├── App.vue ├── assets │ ├── logo.png │ └── main.css ├── components │ ├── Auth.vue │ ├── Avatar.vue │ └── Profile.vue ├── main.js ├── store.js └── supabase.js └── vite.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | dist-ssr 5 | *.local 6 | *.env -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Supabase with Vue 3 Guide 2 | 3 | Full tutorial available at [Supabase Guide](https://supabase.io/docs/guides/with-vue-3) 4 | 5 | Feel free to clone this. -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite App 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "supabase-vue-3", 3 | "version": "0.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "version": "0.0.0", 9 | "dependencies": { 10 | "@supabase/supabase-js": "^1.14.0", 11 | "vue": "^3.0.5" 12 | }, 13 | "devDependencies": { 14 | "@vitejs/plugin-vue": "^1.2.3", 15 | "@vue/compiler-sfc": "^3.0.5", 16 | "vite": "^2.3.7" 17 | } 18 | }, 19 | "node_modules/@babel/helper-validator-identifier": { 20 | "version": "7.14.5", 21 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", 22 | "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==", 23 | "engines": { 24 | "node": ">=6.9.0" 25 | } 26 | }, 27 | "node_modules/@babel/parser": { 28 | "version": "7.14.5", 29 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.5.tgz", 30 | "integrity": "sha512-TM8C+xtH/9n1qzX+JNHi7AN2zHMTiPUtspO0ZdHflW8KaskkALhMmuMHb4bCmNdv9VAPzJX3/bXqkVLnAvsPfg==", 31 | "bin": { 32 | "parser": "bin/babel-parser.js" 33 | }, 34 | "engines": { 35 | "node": ">=6.0.0" 36 | } 37 | }, 38 | "node_modules/@babel/types": { 39 | "version": "7.14.5", 40 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", 41 | "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", 42 | "dependencies": { 43 | "@babel/helper-validator-identifier": "^7.14.5", 44 | "to-fast-properties": "^2.0.0" 45 | }, 46 | "engines": { 47 | "node": ">=6.9.0" 48 | } 49 | }, 50 | "node_modules/@supabase/gotrue-js": { 51 | "version": "1.16.2", 52 | "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.16.2.tgz", 53 | "integrity": "sha512-zIVPYTN2f4rDQA/6nK9OPxzWNZ0N9gJzd/U1cu2ugZnwM0L7oiqk3/3ijxC2huLYveTOwqC9NMpKYWsQsLf6Bg==", 54 | "dependencies": { 55 | "cross-fetch": "^3.0.6" 56 | } 57 | }, 58 | "node_modules/@supabase/postgrest-js": { 59 | "version": "0.30.0", 60 | "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.30.0.tgz", 61 | "integrity": "sha512-pAhoTAQ0gItI/10U6vbk+eVLeOOz6WrviYyvl3AN3BNxV11Qb8gjJmLQRMD4BPGKwW2eRpeUj4Rzbu4PswTWCA==", 62 | "dependencies": { 63 | "cross-fetch": "^3.0.6" 64 | } 65 | }, 66 | "node_modules/@supabase/realtime-js": { 67 | "version": "1.0.9", 68 | "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.0.9.tgz", 69 | "integrity": "sha512-hGClyW7hHXW0PC6reJgaKFL0c3ubC+AVt7U/MxD0VJNjVXIw4PLj7DxgMpCIpNXksHJsLOBL8ht+BMhPb6rE8Q==", 70 | "dependencies": { 71 | "@types/websocket": "^1.0.1", 72 | "websocket": "^1.0.34" 73 | } 74 | }, 75 | "node_modules/@supabase/storage-js": { 76 | "version": "1.2.1", 77 | "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-1.2.1.tgz", 78 | "integrity": "sha512-r12+Dn8p1t4VtFaoDsRhZwFN/kYwisSxKrmxgzyftd8FdrxRaTKc0dVTvWzqurZlI/wrsAs0fKT2p2TrQJKlQQ==", 79 | "dependencies": { 80 | "cross-fetch": "^3.1.0" 81 | } 82 | }, 83 | "node_modules/@supabase/supabase-js": { 84 | "version": "1.14.0", 85 | "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.14.0.tgz", 86 | "integrity": "sha512-/hUrGkT4YZaDn3IUsmZ3jWfMrlVdXauiD4YLqBzDDFt2x9eyn1w2q6ryfGLFwZ/OoDY8vvHhIFKaO98hhHzOHg==", 87 | "dependencies": { 88 | "@supabase/gotrue-js": "^1.16.2", 89 | "@supabase/postgrest-js": "^0.30.0", 90 | "@supabase/realtime-js": "^1.0.9", 91 | "@supabase/storage-js": "^1.2.1" 92 | } 93 | }, 94 | "node_modules/@types/node": { 95 | "version": "15.12.2", 96 | "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz", 97 | "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==" 98 | }, 99 | "node_modules/@types/websocket": { 100 | "version": "1.0.2", 101 | "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.2.tgz", 102 | "integrity": "sha512-B5m9aq7cbbD/5/jThEr33nUY8WEfVi6A2YKCTOvw5Ldy7mtsOkqRvGjnzy6g7iMMDsgu7xREuCzqATLDLQVKcQ==", 103 | "dependencies": { 104 | "@types/node": "*" 105 | } 106 | }, 107 | "node_modules/@vitejs/plugin-vue": { 108 | "version": "1.2.3", 109 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-1.2.3.tgz", 110 | "integrity": "sha512-LlnLpObkGKZ+b7dcpL4T24l13nPSHLjo+6Oc7MbZiKz5PMAUzADfNJ3EKfYIQ0l0969nxf2jp/9vsfnuJ7h6fw==", 111 | "dev": true, 112 | "engines": { 113 | "node": ">=12.0.0" 114 | }, 115 | "peerDependencies": { 116 | "@vue/compiler-sfc": "^3.0.8" 117 | } 118 | }, 119 | "node_modules/@vue/compiler-core": { 120 | "version": "3.1.1", 121 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.1.1.tgz", 122 | "integrity": "sha512-Z1RO3T6AEtAUFf2EqqovFm3ohAeTvFzRtB0qUENW2nEerJfdlk13/LS1a0EgsqlzxmYfR/S/S/gW9PLbFZZxkA==", 123 | "dependencies": { 124 | "@babel/parser": "^7.12.0", 125 | "@babel/types": "^7.12.0", 126 | "@vue/shared": "3.1.1", 127 | "estree-walker": "^2.0.1", 128 | "source-map": "^0.6.1" 129 | } 130 | }, 131 | "node_modules/@vue/compiler-dom": { 132 | "version": "3.1.1", 133 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.1.1.tgz", 134 | "integrity": "sha512-nobRIo0t5ibzg+q8nC31m+aJhbq8FbWUoKvk6h3Vs1EqTDJaj6lBTcVTq5or8AYht7FbSpdAJ81isbJ1rWNX7A==", 135 | "dependencies": { 136 | "@vue/compiler-core": "3.1.1", 137 | "@vue/shared": "3.1.1" 138 | } 139 | }, 140 | "node_modules/@vue/compiler-sfc": { 141 | "version": "3.1.1", 142 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.1.1.tgz", 143 | "integrity": "sha512-lSgMsZaYHF+bAgryq5aUqpvyfhu52GJI2/4LoiJCE5uaxc6FCZfxfgqgw/d9ltiZghv+HiISFtmQVAVvlsk+/w==", 144 | "dev": true, 145 | "dependencies": { 146 | "@babel/parser": "^7.13.9", 147 | "@babel/types": "^7.13.0", 148 | "@vue/compiler-core": "3.1.1", 149 | "@vue/compiler-dom": "3.1.1", 150 | "@vue/compiler-ssr": "3.1.1", 151 | "@vue/shared": "3.1.1", 152 | "consolidate": "^0.16.0", 153 | "estree-walker": "^2.0.1", 154 | "hash-sum": "^2.0.0", 155 | "lru-cache": "^5.1.1", 156 | "magic-string": "^0.25.7", 157 | "merge-source-map": "^1.1.0", 158 | "postcss": "^8.1.10", 159 | "postcss-modules": "^4.0.0", 160 | "postcss-selector-parser": "^6.0.4", 161 | "source-map": "^0.6.1" 162 | }, 163 | "peerDependencies": { 164 | "vue": "3.1.1" 165 | } 166 | }, 167 | "node_modules/@vue/compiler-ssr": { 168 | "version": "3.1.1", 169 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.1.1.tgz", 170 | "integrity": "sha512-7H6krZtVt3h/YzfNp7eYK41hMDz8ZskiBy+Wby+EDRINX6BD9JQ5C8zyy2xAa7T6Iz2VrQzsaJ/Bb52lTPSS5A==", 171 | "dev": true, 172 | "dependencies": { 173 | "@vue/compiler-dom": "3.1.1", 174 | "@vue/shared": "3.1.1" 175 | } 176 | }, 177 | "node_modules/@vue/reactivity": { 178 | "version": "3.1.1", 179 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.1.tgz", 180 | "integrity": "sha512-DsH5woNVCcPK1M0RRYVgJEU1GJDU2ASOKpAqW3ppHk+XjoFLCbqc/26RTCgTpJYd9z8VN+79Q1u7/QqgQPbuLQ==", 181 | "dependencies": { 182 | "@vue/shared": "3.1.1" 183 | } 184 | }, 185 | "node_modules/@vue/runtime-core": { 186 | "version": "3.1.1", 187 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.1.1.tgz", 188 | "integrity": "sha512-GboqR02txOtkd9F3Ysd8ltPL68vTCqIx2p/J52/gFtpgb5FG9hvOAPEwFUqxeEJRu7ResvQnmdOHiEycGPCLhQ==", 189 | "dependencies": { 190 | "@vue/reactivity": "3.1.1", 191 | "@vue/shared": "3.1.1" 192 | } 193 | }, 194 | "node_modules/@vue/runtime-dom": { 195 | "version": "3.1.1", 196 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.1.1.tgz", 197 | "integrity": "sha512-o57n/199e/BBAmLRMSXmD2r12Old/h/gf6BgL0RON1NT2pwm6MWaMY4Ul55eyq+FsDILz4jR/UgoPQ9vYB8xcw==", 198 | "dependencies": { 199 | "@vue/runtime-core": "3.1.1", 200 | "@vue/shared": "3.1.1", 201 | "csstype": "^2.6.8" 202 | } 203 | }, 204 | "node_modules/@vue/shared": { 205 | "version": "3.1.1", 206 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.1.tgz", 207 | "integrity": "sha512-g+4pzAw7PYSjARtLBoDq6DmcblX8i9KJHSCnyM5VDDFFifUaUT9iHbFpOF/KOizQ9f7QAqU2JH3Y6aXjzUMhVA==" 208 | }, 209 | "node_modules/big.js": { 210 | "version": "5.2.2", 211 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", 212 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", 213 | "dev": true, 214 | "engines": { 215 | "node": "*" 216 | } 217 | }, 218 | "node_modules/bluebird": { 219 | "version": "3.7.2", 220 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", 221 | "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", 222 | "dev": true 223 | }, 224 | "node_modules/bufferutil": { 225 | "version": "4.0.3", 226 | "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", 227 | "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", 228 | "hasInstallScript": true, 229 | "dependencies": { 230 | "node-gyp-build": "^4.2.0" 231 | } 232 | }, 233 | "node_modules/colorette": { 234 | "version": "1.2.2", 235 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", 236 | "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", 237 | "dev": true 238 | }, 239 | "node_modules/consolidate": { 240 | "version": "0.16.0", 241 | "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.16.0.tgz", 242 | "integrity": "sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==", 243 | "dev": true, 244 | "dependencies": { 245 | "bluebird": "^3.7.2" 246 | }, 247 | "engines": { 248 | "node": ">= 0.10.0" 249 | } 250 | }, 251 | "node_modules/cross-fetch": { 252 | "version": "3.1.4", 253 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", 254 | "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", 255 | "dependencies": { 256 | "node-fetch": "2.6.1" 257 | } 258 | }, 259 | "node_modules/cssesc": { 260 | "version": "3.0.0", 261 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 262 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 263 | "dev": true, 264 | "bin": { 265 | "cssesc": "bin/cssesc" 266 | }, 267 | "engines": { 268 | "node": ">=4" 269 | } 270 | }, 271 | "node_modules/csstype": { 272 | "version": "2.6.17", 273 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz", 274 | "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==" 275 | }, 276 | "node_modules/d": { 277 | "version": "1.0.1", 278 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", 279 | "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", 280 | "dependencies": { 281 | "es5-ext": "^0.10.50", 282 | "type": "^1.0.1" 283 | } 284 | }, 285 | "node_modules/debug": { 286 | "version": "2.6.9", 287 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 288 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 289 | "dependencies": { 290 | "ms": "2.0.0" 291 | } 292 | }, 293 | "node_modules/emojis-list": { 294 | "version": "3.0.0", 295 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", 296 | "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", 297 | "dev": true, 298 | "engines": { 299 | "node": ">= 4" 300 | } 301 | }, 302 | "node_modules/es5-ext": { 303 | "version": "0.10.53", 304 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", 305 | "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", 306 | "dependencies": { 307 | "es6-iterator": "~2.0.3", 308 | "es6-symbol": "~3.1.3", 309 | "next-tick": "~1.0.0" 310 | } 311 | }, 312 | "node_modules/es6-iterator": { 313 | "version": "2.0.3", 314 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", 315 | "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", 316 | "dependencies": { 317 | "d": "1", 318 | "es5-ext": "^0.10.35", 319 | "es6-symbol": "^3.1.1" 320 | } 321 | }, 322 | "node_modules/es6-symbol": { 323 | "version": "3.1.3", 324 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", 325 | "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", 326 | "dependencies": { 327 | "d": "^1.0.1", 328 | "ext": "^1.1.2" 329 | } 330 | }, 331 | "node_modules/esbuild": { 332 | "version": "0.12.8", 333 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.8.tgz", 334 | "integrity": "sha512-sx/LwlP/SWTGsd9G4RlOPrXnIihAJ2xwBUmzoqe2nWwbXORMQWtAGNJNYLBJJqa3e9PWvVzxdrtyFZJcr7D87g==", 335 | "dev": true, 336 | "hasInstallScript": true, 337 | "bin": { 338 | "esbuild": "bin/esbuild" 339 | } 340 | }, 341 | "node_modules/estree-walker": { 342 | "version": "2.0.2", 343 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 344 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 345 | }, 346 | "node_modules/ext": { 347 | "version": "1.4.0", 348 | "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", 349 | "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", 350 | "dependencies": { 351 | "type": "^2.0.0" 352 | } 353 | }, 354 | "node_modules/ext/node_modules/type": { 355 | "version": "2.5.0", 356 | "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", 357 | "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" 358 | }, 359 | "node_modules/fsevents": { 360 | "version": "2.3.2", 361 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 362 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 363 | "dev": true, 364 | "hasInstallScript": true, 365 | "optional": true, 366 | "os": [ 367 | "darwin" 368 | ], 369 | "engines": { 370 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 371 | } 372 | }, 373 | "node_modules/function-bind": { 374 | "version": "1.1.1", 375 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 376 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 377 | "dev": true 378 | }, 379 | "node_modules/generic-names": { 380 | "version": "2.0.1", 381 | "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz", 382 | "integrity": "sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==", 383 | "dev": true, 384 | "dependencies": { 385 | "loader-utils": "^1.1.0" 386 | } 387 | }, 388 | "node_modules/has": { 389 | "version": "1.0.3", 390 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 391 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 392 | "dev": true, 393 | "dependencies": { 394 | "function-bind": "^1.1.1" 395 | }, 396 | "engines": { 397 | "node": ">= 0.4.0" 398 | } 399 | }, 400 | "node_modules/hash-sum": { 401 | "version": "2.0.0", 402 | "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", 403 | "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", 404 | "dev": true 405 | }, 406 | "node_modules/icss-replace-symbols": { 407 | "version": "1.1.0", 408 | "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", 409 | "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", 410 | "dev": true 411 | }, 412 | "node_modules/icss-utils": { 413 | "version": "5.1.0", 414 | "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", 415 | "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", 416 | "dev": true, 417 | "engines": { 418 | "node": "^10 || ^12 || >= 14" 419 | }, 420 | "peerDependencies": { 421 | "postcss": "^8.1.0" 422 | } 423 | }, 424 | "node_modules/is-core-module": { 425 | "version": "2.4.0", 426 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", 427 | "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", 428 | "dev": true, 429 | "dependencies": { 430 | "has": "^1.0.3" 431 | }, 432 | "funding": { 433 | "url": "https://github.com/sponsors/ljharb" 434 | } 435 | }, 436 | "node_modules/is-typedarray": { 437 | "version": "1.0.0", 438 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 439 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 440 | }, 441 | "node_modules/json5": { 442 | "version": "1.0.1", 443 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 444 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 445 | "dev": true, 446 | "dependencies": { 447 | "minimist": "^1.2.0" 448 | }, 449 | "bin": { 450 | "json5": "lib/cli.js" 451 | } 452 | }, 453 | "node_modules/loader-utils": { 454 | "version": "1.4.0", 455 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", 456 | "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", 457 | "dev": true, 458 | "dependencies": { 459 | "big.js": "^5.2.2", 460 | "emojis-list": "^3.0.0", 461 | "json5": "^1.0.1" 462 | }, 463 | "engines": { 464 | "node": ">=4.0.0" 465 | } 466 | }, 467 | "node_modules/lodash.camelcase": { 468 | "version": "4.3.0", 469 | "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 470 | "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", 471 | "dev": true 472 | }, 473 | "node_modules/lru-cache": { 474 | "version": "5.1.1", 475 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 476 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 477 | "dev": true, 478 | "dependencies": { 479 | "yallist": "^3.0.2" 480 | } 481 | }, 482 | "node_modules/magic-string": { 483 | "version": "0.25.7", 484 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", 485 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", 486 | "dev": true, 487 | "dependencies": { 488 | "sourcemap-codec": "^1.4.4" 489 | } 490 | }, 491 | "node_modules/merge-source-map": { 492 | "version": "1.1.0", 493 | "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", 494 | "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", 495 | "dev": true, 496 | "dependencies": { 497 | "source-map": "^0.6.1" 498 | } 499 | }, 500 | "node_modules/minimist": { 501 | "version": "1.2.5", 502 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 503 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 504 | "dev": true 505 | }, 506 | "node_modules/ms": { 507 | "version": "2.0.0", 508 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 509 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 510 | }, 511 | "node_modules/nanoid": { 512 | "version": "3.1.23", 513 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", 514 | "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", 515 | "dev": true, 516 | "bin": { 517 | "nanoid": "bin/nanoid.cjs" 518 | }, 519 | "engines": { 520 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 521 | } 522 | }, 523 | "node_modules/next-tick": { 524 | "version": "1.0.0", 525 | "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", 526 | "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" 527 | }, 528 | "node_modules/node-fetch": { 529 | "version": "2.6.1", 530 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", 531 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", 532 | "engines": { 533 | "node": "4.x || >=6.0.0" 534 | } 535 | }, 536 | "node_modules/node-gyp-build": { 537 | "version": "4.2.3", 538 | "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", 539 | "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==", 540 | "bin": { 541 | "node-gyp-build": "bin.js", 542 | "node-gyp-build-optional": "optional.js", 543 | "node-gyp-build-test": "build-test.js" 544 | } 545 | }, 546 | "node_modules/path-parse": { 547 | "version": "1.0.7", 548 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 549 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 550 | "dev": true 551 | }, 552 | "node_modules/postcss": { 553 | "version": "8.3.2", 554 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.2.tgz", 555 | "integrity": "sha512-y1FK/AWdZlBF5lusS5j5l4/vF67+vQZt1SXPVJ32y1kRGDQyrs1zk32hG1cInRTu14P0V+orPz+ifwW/7rR4bg==", 556 | "dev": true, 557 | "dependencies": { 558 | "colorette": "^1.2.2", 559 | "nanoid": "^3.1.23", 560 | "source-map-js": "^0.6.2" 561 | }, 562 | "engines": { 563 | "node": "^10 || ^12 || >=14" 564 | }, 565 | "funding": { 566 | "type": "opencollective", 567 | "url": "https://opencollective.com/postcss/" 568 | } 569 | }, 570 | "node_modules/postcss-modules": { 571 | "version": "4.1.3", 572 | "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.1.3.tgz", 573 | "integrity": "sha512-dBT39hrXe4OAVYJe/2ZuIZ9BzYhOe7t+IhedYeQ2OxKwDpAGlkEN/fR0fGnrbx4BvgbMReRX4hCubYK9cE/pJQ==", 574 | "dev": true, 575 | "dependencies": { 576 | "generic-names": "^2.0.1", 577 | "icss-replace-symbols": "^1.1.0", 578 | "lodash.camelcase": "^4.3.0", 579 | "postcss-modules-extract-imports": "^3.0.0", 580 | "postcss-modules-local-by-default": "^4.0.0", 581 | "postcss-modules-scope": "^3.0.0", 582 | "postcss-modules-values": "^4.0.0", 583 | "string-hash": "^1.1.1" 584 | }, 585 | "peerDependencies": { 586 | "postcss": "^8.0.0" 587 | } 588 | }, 589 | "node_modules/postcss-modules-extract-imports": { 590 | "version": "3.0.0", 591 | "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", 592 | "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", 593 | "dev": true, 594 | "engines": { 595 | "node": "^10 || ^12 || >= 14" 596 | }, 597 | "peerDependencies": { 598 | "postcss": "^8.1.0" 599 | } 600 | }, 601 | "node_modules/postcss-modules-local-by-default": { 602 | "version": "4.0.0", 603 | "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", 604 | "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", 605 | "dev": true, 606 | "dependencies": { 607 | "icss-utils": "^5.0.0", 608 | "postcss-selector-parser": "^6.0.2", 609 | "postcss-value-parser": "^4.1.0" 610 | }, 611 | "engines": { 612 | "node": "^10 || ^12 || >= 14" 613 | }, 614 | "peerDependencies": { 615 | "postcss": "^8.1.0" 616 | } 617 | }, 618 | "node_modules/postcss-modules-scope": { 619 | "version": "3.0.0", 620 | "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", 621 | "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", 622 | "dev": true, 623 | "dependencies": { 624 | "postcss-selector-parser": "^6.0.4" 625 | }, 626 | "engines": { 627 | "node": "^10 || ^12 || >= 14" 628 | }, 629 | "peerDependencies": { 630 | "postcss": "^8.1.0" 631 | } 632 | }, 633 | "node_modules/postcss-modules-values": { 634 | "version": "4.0.0", 635 | "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", 636 | "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", 637 | "dev": true, 638 | "dependencies": { 639 | "icss-utils": "^5.0.0" 640 | }, 641 | "engines": { 642 | "node": "^10 || ^12 || >= 14" 643 | }, 644 | "peerDependencies": { 645 | "postcss": "^8.1.0" 646 | } 647 | }, 648 | "node_modules/postcss-selector-parser": { 649 | "version": "6.0.6", 650 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", 651 | "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", 652 | "dev": true, 653 | "dependencies": { 654 | "cssesc": "^3.0.0", 655 | "util-deprecate": "^1.0.2" 656 | }, 657 | "engines": { 658 | "node": ">=4" 659 | } 660 | }, 661 | "node_modules/postcss-value-parser": { 662 | "version": "4.1.0", 663 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", 664 | "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", 665 | "dev": true 666 | }, 667 | "node_modules/resolve": { 668 | "version": "1.20.0", 669 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 670 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 671 | "dev": true, 672 | "dependencies": { 673 | "is-core-module": "^2.2.0", 674 | "path-parse": "^1.0.6" 675 | }, 676 | "funding": { 677 | "url": "https://github.com/sponsors/ljharb" 678 | } 679 | }, 680 | "node_modules/rollup": { 681 | "version": "2.51.1", 682 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.51.1.tgz", 683 | "integrity": "sha512-8xfDbAtBleXotb6qKEHWuo/jkn94a9dVqGc7Rwl3sqspCVlnCfbRek7ldhCARSi7h32H0xR4QThm1t9zHN+3uw==", 684 | "dev": true, 685 | "bin": { 686 | "rollup": "dist/bin/rollup" 687 | }, 688 | "engines": { 689 | "node": ">=10.0.0" 690 | }, 691 | "optionalDependencies": { 692 | "fsevents": "~2.3.1" 693 | } 694 | }, 695 | "node_modules/source-map": { 696 | "version": "0.6.1", 697 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 698 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 699 | "engines": { 700 | "node": ">=0.10.0" 701 | } 702 | }, 703 | "node_modules/source-map-js": { 704 | "version": "0.6.2", 705 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", 706 | "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", 707 | "dev": true, 708 | "engines": { 709 | "node": ">=0.10.0" 710 | } 711 | }, 712 | "node_modules/sourcemap-codec": { 713 | "version": "1.4.8", 714 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 715 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 716 | "dev": true 717 | }, 718 | "node_modules/string-hash": { 719 | "version": "1.1.3", 720 | "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", 721 | "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", 722 | "dev": true 723 | }, 724 | "node_modules/to-fast-properties": { 725 | "version": "2.0.0", 726 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 727 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 728 | "engines": { 729 | "node": ">=4" 730 | } 731 | }, 732 | "node_modules/type": { 733 | "version": "1.2.0", 734 | "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", 735 | "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" 736 | }, 737 | "node_modules/typedarray-to-buffer": { 738 | "version": "3.1.5", 739 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", 740 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 741 | "dependencies": { 742 | "is-typedarray": "^1.0.0" 743 | } 744 | }, 745 | "node_modules/utf-8-validate": { 746 | "version": "5.0.5", 747 | "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz", 748 | "integrity": "sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ==", 749 | "hasInstallScript": true, 750 | "dependencies": { 751 | "node-gyp-build": "^4.2.0" 752 | } 753 | }, 754 | "node_modules/util-deprecate": { 755 | "version": "1.0.2", 756 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 757 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 758 | "dev": true 759 | }, 760 | "node_modules/vite": { 761 | "version": "2.3.7", 762 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.3.7.tgz", 763 | "integrity": "sha512-Y0xRz11MPYu/EAvzN94+FsOZHbSvO6FUvHv127CyG7mV6oDoay2bw+g5y9wW3Blf8OY3chaz3nc/DcRe1IQ3Nw==", 764 | "dev": true, 765 | "dependencies": { 766 | "esbuild": "^0.12.5", 767 | "postcss": "^8.3.0", 768 | "resolve": "^1.19.0", 769 | "rollup": "^2.38.5" 770 | }, 771 | "bin": { 772 | "vite": "bin/vite.js" 773 | }, 774 | "engines": { 775 | "node": ">=12.0.0" 776 | }, 777 | "optionalDependencies": { 778 | "fsevents": "~2.3.1" 779 | } 780 | }, 781 | "node_modules/vue": { 782 | "version": "3.1.1", 783 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.1.1.tgz", 784 | "integrity": "sha512-j9fj3PNPMxo2eqOKYjMuss9XBS8ZtmczLY3kPvjcp9d3DbhyNqLYbaMQH18+1pDIzzVvQCQBvIf774LsjjqSKA==", 785 | "dependencies": { 786 | "@vue/compiler-dom": "3.1.1", 787 | "@vue/runtime-dom": "3.1.1", 788 | "@vue/shared": "3.1.1" 789 | } 790 | }, 791 | "node_modules/websocket": { 792 | "version": "1.0.34", 793 | "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", 794 | "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", 795 | "dependencies": { 796 | "bufferutil": "^4.0.1", 797 | "debug": "^2.2.0", 798 | "es5-ext": "^0.10.50", 799 | "typedarray-to-buffer": "^3.1.5", 800 | "utf-8-validate": "^5.0.2", 801 | "yaeti": "^0.0.6" 802 | }, 803 | "engines": { 804 | "node": ">=4.0.0" 805 | } 806 | }, 807 | "node_modules/yaeti": { 808 | "version": "0.0.6", 809 | "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", 810 | "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=", 811 | "engines": { 812 | "node": ">=0.10.32" 813 | } 814 | }, 815 | "node_modules/yallist": { 816 | "version": "3.1.1", 817 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 818 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 819 | "dev": true 820 | } 821 | }, 822 | "dependencies": { 823 | "@babel/helper-validator-identifier": { 824 | "version": "7.14.5", 825 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz", 826 | "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==" 827 | }, 828 | "@babel/parser": { 829 | "version": "7.14.5", 830 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.14.5.tgz", 831 | "integrity": "sha512-TM8C+xtH/9n1qzX+JNHi7AN2zHMTiPUtspO0ZdHflW8KaskkALhMmuMHb4bCmNdv9VAPzJX3/bXqkVLnAvsPfg==" 832 | }, 833 | "@babel/types": { 834 | "version": "7.14.5", 835 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.14.5.tgz", 836 | "integrity": "sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==", 837 | "requires": { 838 | "@babel/helper-validator-identifier": "^7.14.5", 839 | "to-fast-properties": "^2.0.0" 840 | } 841 | }, 842 | "@supabase/gotrue-js": { 843 | "version": "1.16.2", 844 | "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.16.2.tgz", 845 | "integrity": "sha512-zIVPYTN2f4rDQA/6nK9OPxzWNZ0N9gJzd/U1cu2ugZnwM0L7oiqk3/3ijxC2huLYveTOwqC9NMpKYWsQsLf6Bg==", 846 | "requires": { 847 | "cross-fetch": "^3.0.6" 848 | } 849 | }, 850 | "@supabase/postgrest-js": { 851 | "version": "0.30.0", 852 | "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.30.0.tgz", 853 | "integrity": "sha512-pAhoTAQ0gItI/10U6vbk+eVLeOOz6WrviYyvl3AN3BNxV11Qb8gjJmLQRMD4BPGKwW2eRpeUj4Rzbu4PswTWCA==", 854 | "requires": { 855 | "cross-fetch": "^3.0.6" 856 | } 857 | }, 858 | "@supabase/realtime-js": { 859 | "version": "1.0.9", 860 | "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.0.9.tgz", 861 | "integrity": "sha512-hGClyW7hHXW0PC6reJgaKFL0c3ubC+AVt7U/MxD0VJNjVXIw4PLj7DxgMpCIpNXksHJsLOBL8ht+BMhPb6rE8Q==", 862 | "requires": { 863 | "@types/websocket": "^1.0.1", 864 | "websocket": "^1.0.34" 865 | } 866 | }, 867 | "@supabase/storage-js": { 868 | "version": "1.2.1", 869 | "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-1.2.1.tgz", 870 | "integrity": "sha512-r12+Dn8p1t4VtFaoDsRhZwFN/kYwisSxKrmxgzyftd8FdrxRaTKc0dVTvWzqurZlI/wrsAs0fKT2p2TrQJKlQQ==", 871 | "requires": { 872 | "cross-fetch": "^3.1.0" 873 | } 874 | }, 875 | "@supabase/supabase-js": { 876 | "version": "1.14.0", 877 | "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.14.0.tgz", 878 | "integrity": "sha512-/hUrGkT4YZaDn3IUsmZ3jWfMrlVdXauiD4YLqBzDDFt2x9eyn1w2q6ryfGLFwZ/OoDY8vvHhIFKaO98hhHzOHg==", 879 | "requires": { 880 | "@supabase/gotrue-js": "^1.16.2", 881 | "@supabase/postgrest-js": "^0.30.0", 882 | "@supabase/realtime-js": "^1.0.9", 883 | "@supabase/storage-js": "^1.2.1" 884 | } 885 | }, 886 | "@types/node": { 887 | "version": "15.12.2", 888 | "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz", 889 | "integrity": "sha512-zjQ69G564OCIWIOHSXyQEEDpdpGl+G348RAKY0XXy9Z5kU9Vzv1GMNnkar/ZJ8dzXB3COzD9Mo9NtRZ4xfgUww==" 890 | }, 891 | "@types/websocket": { 892 | "version": "1.0.2", 893 | "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.2.tgz", 894 | "integrity": "sha512-B5m9aq7cbbD/5/jThEr33nUY8WEfVi6A2YKCTOvw5Ldy7mtsOkqRvGjnzy6g7iMMDsgu7xREuCzqATLDLQVKcQ==", 895 | "requires": { 896 | "@types/node": "*" 897 | } 898 | }, 899 | "@vitejs/plugin-vue": { 900 | "version": "1.2.3", 901 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-1.2.3.tgz", 902 | "integrity": "sha512-LlnLpObkGKZ+b7dcpL4T24l13nPSHLjo+6Oc7MbZiKz5PMAUzADfNJ3EKfYIQ0l0969nxf2jp/9vsfnuJ7h6fw==", 903 | "dev": true, 904 | "requires": {} 905 | }, 906 | "@vue/compiler-core": { 907 | "version": "3.1.1", 908 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.1.1.tgz", 909 | "integrity": "sha512-Z1RO3T6AEtAUFf2EqqovFm3ohAeTvFzRtB0qUENW2nEerJfdlk13/LS1a0EgsqlzxmYfR/S/S/gW9PLbFZZxkA==", 910 | "requires": { 911 | "@babel/parser": "^7.12.0", 912 | "@babel/types": "^7.12.0", 913 | "@vue/shared": "3.1.1", 914 | "estree-walker": "^2.0.1", 915 | "source-map": "^0.6.1" 916 | } 917 | }, 918 | "@vue/compiler-dom": { 919 | "version": "3.1.1", 920 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.1.1.tgz", 921 | "integrity": "sha512-nobRIo0t5ibzg+q8nC31m+aJhbq8FbWUoKvk6h3Vs1EqTDJaj6lBTcVTq5or8AYht7FbSpdAJ81isbJ1rWNX7A==", 922 | "requires": { 923 | "@vue/compiler-core": "3.1.1", 924 | "@vue/shared": "3.1.1" 925 | } 926 | }, 927 | "@vue/compiler-sfc": { 928 | "version": "3.1.1", 929 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.1.1.tgz", 930 | "integrity": "sha512-lSgMsZaYHF+bAgryq5aUqpvyfhu52GJI2/4LoiJCE5uaxc6FCZfxfgqgw/d9ltiZghv+HiISFtmQVAVvlsk+/w==", 931 | "dev": true, 932 | "requires": { 933 | "@babel/parser": "^7.13.9", 934 | "@babel/types": "^7.13.0", 935 | "@vue/compiler-core": "3.1.1", 936 | "@vue/compiler-dom": "3.1.1", 937 | "@vue/compiler-ssr": "3.1.1", 938 | "@vue/shared": "3.1.1", 939 | "consolidate": "^0.16.0", 940 | "estree-walker": "^2.0.1", 941 | "hash-sum": "^2.0.0", 942 | "lru-cache": "^5.1.1", 943 | "magic-string": "^0.25.7", 944 | "merge-source-map": "^1.1.0", 945 | "postcss": "^8.1.10", 946 | "postcss-modules": "^4.0.0", 947 | "postcss-selector-parser": "^6.0.4", 948 | "source-map": "^0.6.1" 949 | } 950 | }, 951 | "@vue/compiler-ssr": { 952 | "version": "3.1.1", 953 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.1.1.tgz", 954 | "integrity": "sha512-7H6krZtVt3h/YzfNp7eYK41hMDz8ZskiBy+Wby+EDRINX6BD9JQ5C8zyy2xAa7T6Iz2VrQzsaJ/Bb52lTPSS5A==", 955 | "dev": true, 956 | "requires": { 957 | "@vue/compiler-dom": "3.1.1", 958 | "@vue/shared": "3.1.1" 959 | } 960 | }, 961 | "@vue/reactivity": { 962 | "version": "3.1.1", 963 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.1.tgz", 964 | "integrity": "sha512-DsH5woNVCcPK1M0RRYVgJEU1GJDU2ASOKpAqW3ppHk+XjoFLCbqc/26RTCgTpJYd9z8VN+79Q1u7/QqgQPbuLQ==", 965 | "requires": { 966 | "@vue/shared": "3.1.1" 967 | } 968 | }, 969 | "@vue/runtime-core": { 970 | "version": "3.1.1", 971 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.1.1.tgz", 972 | "integrity": "sha512-GboqR02txOtkd9F3Ysd8ltPL68vTCqIx2p/J52/gFtpgb5FG9hvOAPEwFUqxeEJRu7ResvQnmdOHiEycGPCLhQ==", 973 | "requires": { 974 | "@vue/reactivity": "3.1.1", 975 | "@vue/shared": "3.1.1" 976 | } 977 | }, 978 | "@vue/runtime-dom": { 979 | "version": "3.1.1", 980 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.1.1.tgz", 981 | "integrity": "sha512-o57n/199e/BBAmLRMSXmD2r12Old/h/gf6BgL0RON1NT2pwm6MWaMY4Ul55eyq+FsDILz4jR/UgoPQ9vYB8xcw==", 982 | "requires": { 983 | "@vue/runtime-core": "3.1.1", 984 | "@vue/shared": "3.1.1", 985 | "csstype": "^2.6.8" 986 | } 987 | }, 988 | "@vue/shared": { 989 | "version": "3.1.1", 990 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.1.tgz", 991 | "integrity": "sha512-g+4pzAw7PYSjARtLBoDq6DmcblX8i9KJHSCnyM5VDDFFifUaUT9iHbFpOF/KOizQ9f7QAqU2JH3Y6aXjzUMhVA==" 992 | }, 993 | "big.js": { 994 | "version": "5.2.2", 995 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", 996 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", 997 | "dev": true 998 | }, 999 | "bluebird": { 1000 | "version": "3.7.2", 1001 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", 1002 | "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", 1003 | "dev": true 1004 | }, 1005 | "bufferutil": { 1006 | "version": "4.0.3", 1007 | "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", 1008 | "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", 1009 | "requires": { 1010 | "node-gyp-build": "^4.2.0" 1011 | } 1012 | }, 1013 | "colorette": { 1014 | "version": "1.2.2", 1015 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", 1016 | "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", 1017 | "dev": true 1018 | }, 1019 | "consolidate": { 1020 | "version": "0.16.0", 1021 | "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.16.0.tgz", 1022 | "integrity": "sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==", 1023 | "dev": true, 1024 | "requires": { 1025 | "bluebird": "^3.7.2" 1026 | } 1027 | }, 1028 | "cross-fetch": { 1029 | "version": "3.1.4", 1030 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", 1031 | "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", 1032 | "requires": { 1033 | "node-fetch": "2.6.1" 1034 | } 1035 | }, 1036 | "cssesc": { 1037 | "version": "3.0.0", 1038 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 1039 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 1040 | "dev": true 1041 | }, 1042 | "csstype": { 1043 | "version": "2.6.17", 1044 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz", 1045 | "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==" 1046 | }, 1047 | "d": { 1048 | "version": "1.0.1", 1049 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", 1050 | "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", 1051 | "requires": { 1052 | "es5-ext": "^0.10.50", 1053 | "type": "^1.0.1" 1054 | } 1055 | }, 1056 | "debug": { 1057 | "version": "2.6.9", 1058 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1059 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1060 | "requires": { 1061 | "ms": "2.0.0" 1062 | } 1063 | }, 1064 | "emojis-list": { 1065 | "version": "3.0.0", 1066 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", 1067 | "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", 1068 | "dev": true 1069 | }, 1070 | "es5-ext": { 1071 | "version": "0.10.53", 1072 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", 1073 | "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", 1074 | "requires": { 1075 | "es6-iterator": "~2.0.3", 1076 | "es6-symbol": "~3.1.3", 1077 | "next-tick": "~1.0.0" 1078 | } 1079 | }, 1080 | "es6-iterator": { 1081 | "version": "2.0.3", 1082 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", 1083 | "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", 1084 | "requires": { 1085 | "d": "1", 1086 | "es5-ext": "^0.10.35", 1087 | "es6-symbol": "^3.1.1" 1088 | } 1089 | }, 1090 | "es6-symbol": { 1091 | "version": "3.1.3", 1092 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", 1093 | "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", 1094 | "requires": { 1095 | "d": "^1.0.1", 1096 | "ext": "^1.1.2" 1097 | } 1098 | }, 1099 | "esbuild": { 1100 | "version": "0.12.8", 1101 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.8.tgz", 1102 | "integrity": "sha512-sx/LwlP/SWTGsd9G4RlOPrXnIihAJ2xwBUmzoqe2nWwbXORMQWtAGNJNYLBJJqa3e9PWvVzxdrtyFZJcr7D87g==", 1103 | "dev": true 1104 | }, 1105 | "estree-walker": { 1106 | "version": "2.0.2", 1107 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 1108 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 1109 | }, 1110 | "ext": { 1111 | "version": "1.4.0", 1112 | "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", 1113 | "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", 1114 | "requires": { 1115 | "type": "^2.0.0" 1116 | }, 1117 | "dependencies": { 1118 | "type": { 1119 | "version": "2.5.0", 1120 | "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", 1121 | "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" 1122 | } 1123 | } 1124 | }, 1125 | "fsevents": { 1126 | "version": "2.3.2", 1127 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1128 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1129 | "dev": true, 1130 | "optional": true 1131 | }, 1132 | "function-bind": { 1133 | "version": "1.1.1", 1134 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1135 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1136 | "dev": true 1137 | }, 1138 | "generic-names": { 1139 | "version": "2.0.1", 1140 | "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz", 1141 | "integrity": "sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==", 1142 | "dev": true, 1143 | "requires": { 1144 | "loader-utils": "^1.1.0" 1145 | } 1146 | }, 1147 | "has": { 1148 | "version": "1.0.3", 1149 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1150 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1151 | "dev": true, 1152 | "requires": { 1153 | "function-bind": "^1.1.1" 1154 | } 1155 | }, 1156 | "hash-sum": { 1157 | "version": "2.0.0", 1158 | "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", 1159 | "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", 1160 | "dev": true 1161 | }, 1162 | "icss-replace-symbols": { 1163 | "version": "1.1.0", 1164 | "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", 1165 | "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", 1166 | "dev": true 1167 | }, 1168 | "icss-utils": { 1169 | "version": "5.1.0", 1170 | "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", 1171 | "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", 1172 | "dev": true, 1173 | "requires": {} 1174 | }, 1175 | "is-core-module": { 1176 | "version": "2.4.0", 1177 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", 1178 | "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", 1179 | "dev": true, 1180 | "requires": { 1181 | "has": "^1.0.3" 1182 | } 1183 | }, 1184 | "is-typedarray": { 1185 | "version": "1.0.0", 1186 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 1187 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 1188 | }, 1189 | "json5": { 1190 | "version": "1.0.1", 1191 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 1192 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 1193 | "dev": true, 1194 | "requires": { 1195 | "minimist": "^1.2.0" 1196 | } 1197 | }, 1198 | "loader-utils": { 1199 | "version": "1.4.0", 1200 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", 1201 | "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", 1202 | "dev": true, 1203 | "requires": { 1204 | "big.js": "^5.2.2", 1205 | "emojis-list": "^3.0.0", 1206 | "json5": "^1.0.1" 1207 | } 1208 | }, 1209 | "lodash.camelcase": { 1210 | "version": "4.3.0", 1211 | "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 1212 | "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", 1213 | "dev": true 1214 | }, 1215 | "lru-cache": { 1216 | "version": "5.1.1", 1217 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", 1218 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 1219 | "dev": true, 1220 | "requires": { 1221 | "yallist": "^3.0.2" 1222 | } 1223 | }, 1224 | "magic-string": { 1225 | "version": "0.25.7", 1226 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", 1227 | "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", 1228 | "dev": true, 1229 | "requires": { 1230 | "sourcemap-codec": "^1.4.4" 1231 | } 1232 | }, 1233 | "merge-source-map": { 1234 | "version": "1.1.0", 1235 | "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", 1236 | "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", 1237 | "dev": true, 1238 | "requires": { 1239 | "source-map": "^0.6.1" 1240 | } 1241 | }, 1242 | "minimist": { 1243 | "version": "1.2.5", 1244 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1245 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1246 | "dev": true 1247 | }, 1248 | "ms": { 1249 | "version": "2.0.0", 1250 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1251 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1252 | }, 1253 | "nanoid": { 1254 | "version": "3.1.23", 1255 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz", 1256 | "integrity": "sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==", 1257 | "dev": true 1258 | }, 1259 | "next-tick": { 1260 | "version": "1.0.0", 1261 | "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", 1262 | "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" 1263 | }, 1264 | "node-fetch": { 1265 | "version": "2.6.1", 1266 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", 1267 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" 1268 | }, 1269 | "node-gyp-build": { 1270 | "version": "4.2.3", 1271 | "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", 1272 | "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==" 1273 | }, 1274 | "path-parse": { 1275 | "version": "1.0.7", 1276 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1277 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1278 | "dev": true 1279 | }, 1280 | "postcss": { 1281 | "version": "8.3.2", 1282 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.2.tgz", 1283 | "integrity": "sha512-y1FK/AWdZlBF5lusS5j5l4/vF67+vQZt1SXPVJ32y1kRGDQyrs1zk32hG1cInRTu14P0V+orPz+ifwW/7rR4bg==", 1284 | "dev": true, 1285 | "requires": { 1286 | "colorette": "^1.2.2", 1287 | "nanoid": "^3.1.23", 1288 | "source-map-js": "^0.6.2" 1289 | } 1290 | }, 1291 | "postcss-modules": { 1292 | "version": "4.1.3", 1293 | "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.1.3.tgz", 1294 | "integrity": "sha512-dBT39hrXe4OAVYJe/2ZuIZ9BzYhOe7t+IhedYeQ2OxKwDpAGlkEN/fR0fGnrbx4BvgbMReRX4hCubYK9cE/pJQ==", 1295 | "dev": true, 1296 | "requires": { 1297 | "generic-names": "^2.0.1", 1298 | "icss-replace-symbols": "^1.1.0", 1299 | "lodash.camelcase": "^4.3.0", 1300 | "postcss-modules-extract-imports": "^3.0.0", 1301 | "postcss-modules-local-by-default": "^4.0.0", 1302 | "postcss-modules-scope": "^3.0.0", 1303 | "postcss-modules-values": "^4.0.0", 1304 | "string-hash": "^1.1.1" 1305 | } 1306 | }, 1307 | "postcss-modules-extract-imports": { 1308 | "version": "3.0.0", 1309 | "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", 1310 | "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", 1311 | "dev": true, 1312 | "requires": {} 1313 | }, 1314 | "postcss-modules-local-by-default": { 1315 | "version": "4.0.0", 1316 | "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", 1317 | "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", 1318 | "dev": true, 1319 | "requires": { 1320 | "icss-utils": "^5.0.0", 1321 | "postcss-selector-parser": "^6.0.2", 1322 | "postcss-value-parser": "^4.1.0" 1323 | } 1324 | }, 1325 | "postcss-modules-scope": { 1326 | "version": "3.0.0", 1327 | "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", 1328 | "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", 1329 | "dev": true, 1330 | "requires": { 1331 | "postcss-selector-parser": "^6.0.4" 1332 | } 1333 | }, 1334 | "postcss-modules-values": { 1335 | "version": "4.0.0", 1336 | "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", 1337 | "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", 1338 | "dev": true, 1339 | "requires": { 1340 | "icss-utils": "^5.0.0" 1341 | } 1342 | }, 1343 | "postcss-selector-parser": { 1344 | "version": "6.0.6", 1345 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz", 1346 | "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==", 1347 | "dev": true, 1348 | "requires": { 1349 | "cssesc": "^3.0.0", 1350 | "util-deprecate": "^1.0.2" 1351 | } 1352 | }, 1353 | "postcss-value-parser": { 1354 | "version": "4.1.0", 1355 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", 1356 | "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", 1357 | "dev": true 1358 | }, 1359 | "resolve": { 1360 | "version": "1.20.0", 1361 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 1362 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 1363 | "dev": true, 1364 | "requires": { 1365 | "is-core-module": "^2.2.0", 1366 | "path-parse": "^1.0.6" 1367 | } 1368 | }, 1369 | "rollup": { 1370 | "version": "2.51.1", 1371 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.51.1.tgz", 1372 | "integrity": "sha512-8xfDbAtBleXotb6qKEHWuo/jkn94a9dVqGc7Rwl3sqspCVlnCfbRek7ldhCARSi7h32H0xR4QThm1t9zHN+3uw==", 1373 | "dev": true, 1374 | "requires": { 1375 | "fsevents": "~2.3.1" 1376 | } 1377 | }, 1378 | "source-map": { 1379 | "version": "0.6.1", 1380 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1381 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 1382 | }, 1383 | "source-map-js": { 1384 | "version": "0.6.2", 1385 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", 1386 | "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", 1387 | "dev": true 1388 | }, 1389 | "sourcemap-codec": { 1390 | "version": "1.4.8", 1391 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 1392 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 1393 | "dev": true 1394 | }, 1395 | "string-hash": { 1396 | "version": "1.1.3", 1397 | "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", 1398 | "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", 1399 | "dev": true 1400 | }, 1401 | "to-fast-properties": { 1402 | "version": "2.0.0", 1403 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1404 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" 1405 | }, 1406 | "type": { 1407 | "version": "1.2.0", 1408 | "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", 1409 | "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" 1410 | }, 1411 | "typedarray-to-buffer": { 1412 | "version": "3.1.5", 1413 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", 1414 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 1415 | "requires": { 1416 | "is-typedarray": "^1.0.0" 1417 | } 1418 | }, 1419 | "utf-8-validate": { 1420 | "version": "5.0.5", 1421 | "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz", 1422 | "integrity": "sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ==", 1423 | "requires": { 1424 | "node-gyp-build": "^4.2.0" 1425 | } 1426 | }, 1427 | "util-deprecate": { 1428 | "version": "1.0.2", 1429 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1430 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 1431 | "dev": true 1432 | }, 1433 | "vite": { 1434 | "version": "2.3.7", 1435 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.3.7.tgz", 1436 | "integrity": "sha512-Y0xRz11MPYu/EAvzN94+FsOZHbSvO6FUvHv127CyG7mV6oDoay2bw+g5y9wW3Blf8OY3chaz3nc/DcRe1IQ3Nw==", 1437 | "dev": true, 1438 | "requires": { 1439 | "esbuild": "^0.12.5", 1440 | "fsevents": "~2.3.1", 1441 | "postcss": "^8.3.0", 1442 | "resolve": "^1.19.0", 1443 | "rollup": "^2.38.5" 1444 | } 1445 | }, 1446 | "vue": { 1447 | "version": "3.1.1", 1448 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.1.1.tgz", 1449 | "integrity": "sha512-j9fj3PNPMxo2eqOKYjMuss9XBS8ZtmczLY3kPvjcp9d3DbhyNqLYbaMQH18+1pDIzzVvQCQBvIf774LsjjqSKA==", 1450 | "requires": { 1451 | "@vue/compiler-dom": "3.1.1", 1452 | "@vue/runtime-dom": "3.1.1", 1453 | "@vue/shared": "3.1.1" 1454 | } 1455 | }, 1456 | "websocket": { 1457 | "version": "1.0.34", 1458 | "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", 1459 | "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", 1460 | "requires": { 1461 | "bufferutil": "^4.0.1", 1462 | "debug": "^2.2.0", 1463 | "es5-ext": "^0.10.50", 1464 | "typedarray-to-buffer": "^3.1.5", 1465 | "utf-8-validate": "^5.0.2", 1466 | "yaeti": "^0.0.6" 1467 | } 1468 | }, 1469 | "yaeti": { 1470 | "version": "0.0.6", 1471 | "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", 1472 | "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" 1473 | }, 1474 | "yallist": { 1475 | "version": "3.1.1", 1476 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 1477 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", 1478 | "dev": true 1479 | } 1480 | } 1481 | } 1482 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.0.0", 3 | "scripts": { 4 | "dev": "vite", 5 | "build": "vite build", 6 | "serve": "vite preview" 7 | }, 8 | "dependencies": { 9 | "@supabase/supabase-js": "^1.14.0", 10 | "vue": "^3.0.5" 11 | }, 12 | "devDependencies": { 13 | "@vitejs/plugin-vue": "^1.2.3", 14 | "@vue/compiler-sfc": "^3.0.5", 15 | "vite": "^2.3.7" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zernonia/supabase-vue-3/074dc57b6ae651f403a843d1edc2808130442b6c/public/favicon.ico -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 31 | -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zernonia/supabase-vue-3/074dc57b6ae651f403a843d1edc2808130442b6c/src/assets/logo.png -------------------------------------------------------------------------------- /src/assets/main.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | --custom-font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, 4 | Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; 5 | --custom-bg-color: #101010; 6 | --custom-panel-color: #222; 7 | --custom-box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.8); 8 | --custom-color: #fff; 9 | --custom-color-brand: #24b47e; 10 | --custom-color-secondary: #666; 11 | --custom-border: 1px solid #333; 12 | --custom-border-radius: 5px; 13 | --custom-spacing: 5px; 14 | 15 | padding: 0; 16 | margin: 0; 17 | font-family: var(--custom-font-family); 18 | background-color: var(--custom-bg-color); 19 | } 20 | 21 | * { 22 | color: var(--custom-color); 23 | font-family: var(--custom-font-family); 24 | box-sizing: border-box; 25 | } 26 | 27 | html, 28 | body, 29 | #__next { 30 | height: 100vh; 31 | width: 100vw; 32 | overflow-x: hidden; 33 | } 34 | 35 | /* Grid */ 36 | 37 | .container { 38 | width: 90%; 39 | margin-left: auto; 40 | margin-right: auto; 41 | } 42 | .row { 43 | position: relative; 44 | width: 100%; 45 | } 46 | .row [class^="col"] { 47 | float: left; 48 | margin: 0.5rem 2%; 49 | min-height: 0.125rem; 50 | } 51 | .col-1, 52 | .col-2, 53 | .col-3, 54 | .col-4, 55 | .col-5, 56 | .col-6, 57 | .col-7, 58 | .col-8, 59 | .col-9, 60 | .col-10, 61 | .col-11, 62 | .col-12 { 63 | width: 96%; 64 | } 65 | .col-1-sm { 66 | width: 4.33%; 67 | } 68 | .col-2-sm { 69 | width: 12.66%; 70 | } 71 | .col-3-sm { 72 | width: 21%; 73 | } 74 | .col-4-sm { 75 | width: 29.33%; 76 | } 77 | .col-5-sm { 78 | width: 37.66%; 79 | } 80 | .col-6-sm { 81 | width: 46%; 82 | } 83 | .col-7-sm { 84 | width: 54.33%; 85 | } 86 | .col-8-sm { 87 | width: 62.66%; 88 | } 89 | .col-9-sm { 90 | width: 71%; 91 | } 92 | .col-10-sm { 93 | width: 79.33%; 94 | } 95 | .col-11-sm { 96 | width: 87.66%; 97 | } 98 | .col-12-sm { 99 | width: 96%; 100 | } 101 | .row::after { 102 | content: ""; 103 | display: table; 104 | clear: both; 105 | } 106 | .hidden-sm { 107 | display: none; 108 | } 109 | 110 | @media only screen and (min-width: 33.75em) { 111 | /* 540px */ 112 | .container { 113 | width: 80%; 114 | } 115 | } 116 | 117 | @media only screen and (min-width: 45em) { 118 | /* 720px */ 119 | .col-1 { 120 | width: 4.33%; 121 | } 122 | .col-2 { 123 | width: 12.66%; 124 | } 125 | .col-3 { 126 | width: 21%; 127 | } 128 | .col-4 { 129 | width: 29.33%; 130 | } 131 | .col-5 { 132 | width: 37.66%; 133 | } 134 | .col-6 { 135 | width: 46%; 136 | } 137 | .col-7 { 138 | width: 54.33%; 139 | } 140 | .col-8 { 141 | width: 62.66%; 142 | } 143 | .col-9 { 144 | width: 71%; 145 | } 146 | .col-10 { 147 | width: 79.33%; 148 | } 149 | .col-11 { 150 | width: 87.66%; 151 | } 152 | .col-12 { 153 | width: 96%; 154 | } 155 | .hidden-sm { 156 | display: block; 157 | } 158 | } 159 | 160 | @media only screen and (min-width: 60em) { 161 | /* 960px */ 162 | .container { 163 | width: 75%; 164 | max-width: 60rem; 165 | } 166 | } 167 | 168 | /* Forms */ 169 | 170 | label { 171 | display: block; 172 | margin: 5px 0; 173 | color: var(--custom-color-secondary); 174 | font-size: 0.8rem; 175 | text-transform: uppercase; 176 | } 177 | 178 | input { 179 | width: 100%; 180 | border-radius: 5px; 181 | border: var(--custom-border); 182 | padding: 8px; 183 | font-size: 0.9rem; 184 | background-color: var(--custom-bg-color); 185 | color: var(--custom-color); 186 | } 187 | 188 | input[disabled] { 189 | color: var(--custom-color-secondary); 190 | } 191 | 192 | /* Utils */ 193 | 194 | .block { 195 | display: block; 196 | width: 100%; 197 | } 198 | .inline-block { 199 | display: inline-block; 200 | width: 100%; 201 | } 202 | .flex { 203 | display: flex; 204 | } 205 | .flex.column { 206 | flex-direction: column; 207 | } 208 | .flex.row { 209 | flex-direction: row; 210 | } 211 | .flex.flex-1 { 212 | flex: 1 1 0; 213 | } 214 | .flex-end { 215 | justify-content: flex-end; 216 | } 217 | .flex-center { 218 | justify-content: center; 219 | } 220 | .items-center { 221 | align-items: center; 222 | } 223 | .text-sm { 224 | font-size: 0.8rem; 225 | font-weight: 300; 226 | } 227 | .text-right { 228 | text-align: right; 229 | } 230 | .font-light { 231 | font-weight: 300; 232 | } 233 | .opacity-half { 234 | opacity: 50%; 235 | } 236 | 237 | /* Button */ 238 | 239 | button, 240 | .button { 241 | color: var(--custom-color); 242 | border: var(--custom-border); 243 | background-color: var(--custom-bg-color); 244 | display: inline-block; 245 | text-align: center; 246 | border-radius: var(--custom-border-radius); 247 | padding: 0.5rem 1rem; 248 | cursor: pointer; 249 | text-align: center; 250 | font-size: 0.9rem; 251 | text-transform: uppercase; 252 | } 253 | 254 | button.primary, 255 | .button.primary { 256 | background-color: var(--custom-color-brand); 257 | border: 1px solid var(--custom-color-brand); 258 | } 259 | 260 | /* Widgets */ 261 | 262 | .card { 263 | width: 100%; 264 | display: block; 265 | border: var(--custom-border); 266 | border-radius: var(--custom-border-radius); 267 | padding: var(--custom-spacing); 268 | } 269 | 270 | .avatar { 271 | border-radius: var(--custom-border-radius); 272 | overflow: hidden; 273 | max-width: 100%; 274 | } 275 | .avatar.image { 276 | object-fit: cover; 277 | } 278 | .avatar.no-image { 279 | background-color: #333; 280 | border: 1px solid rgb(200, 200, 200); 281 | border-radius: 5px; 282 | } 283 | 284 | .footer { 285 | position: absolute; 286 | max-width: 100%; 287 | bottom: 0; 288 | left: 0; 289 | right: 0; 290 | display: flex; 291 | flex-flow: row; 292 | border-top: var(--custom-border); 293 | background-color: var(--custom-bg-color); 294 | } 295 | .footer div { 296 | padding: var(--custom-spacing); 297 | display: flex; 298 | align-items: center; 299 | width: 100%; 300 | } 301 | .footer div > img { 302 | height: 20px; 303 | margin-left: 10px; 304 | } 305 | .footer > div:first-child { 306 | display: none; 307 | } 308 | .footer > div:nth-child(2) { 309 | justify-content: left; 310 | } 311 | 312 | @media only screen and (min-width: 60em) { 313 | /* 960px */ 314 | .footer > div:first-child { 315 | display: flex; 316 | } 317 | .footer > div:nth-child(2) { 318 | justify-content: center; 319 | } 320 | } 321 | 322 | @keyframes spin { 323 | from { 324 | transform: rotate(0deg); 325 | } 326 | to { 327 | transform: rotate(360deg); 328 | } 329 | } 330 | 331 | .mainHeader { 332 | width: 100%; 333 | font-size: 1.3rem; 334 | margin-bottom: 20px; 335 | } 336 | 337 | .avatarPlaceholder { 338 | border: var(--custom-border); 339 | border-radius: var(--custom-border-radius); 340 | width: 35px; 341 | height: 35px; 342 | background-color: rgba(255, 255, 255, 0.2); 343 | display: flex; 344 | align-items: center; 345 | justify-content: center; 346 | } 347 | 348 | .form-widget { 349 | display: flex; 350 | flex-direction: column; 351 | gap: 20px; 352 | } 353 | 354 | .form-widget > .button { 355 | display: flex; 356 | align-items: center; 357 | justify-content: center; 358 | border: none; 359 | background-color: #444444; 360 | text-transform: none !important; 361 | transition: all 0.2s ease; 362 | } 363 | 364 | .form-widget .button:hover { 365 | background-color: #2a2a2a; 366 | } 367 | 368 | .form-widget .button > .loader { 369 | width: 17px; 370 | animation: spin 1s linear infinite; 371 | filter: invert(1); 372 | } 373 | -------------------------------------------------------------------------------- /src/components/Auth.vue: -------------------------------------------------------------------------------- 1 | 25 | 26 | 56 | -------------------------------------------------------------------------------- /src/components/Avatar.vue: -------------------------------------------------------------------------------- 1 | 31 | 32 | 103 | -------------------------------------------------------------------------------- /src/components/Profile.vue: -------------------------------------------------------------------------------- 1 | 33 | 34 | 129 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from "vue" 2 | import App from "./App.vue" 3 | import "./assets/main.css" 4 | 5 | createApp(App).mount("#app") 6 | -------------------------------------------------------------------------------- /src/store.js: -------------------------------------------------------------------------------- 1 | import { reactive } from "vue" 2 | 3 | export const store = reactive({ 4 | user: {}, 5 | }) 6 | -------------------------------------------------------------------------------- /src/supabase.js: -------------------------------------------------------------------------------- 1 | import { createClient } from "@supabase/supabase-js" 2 | 3 | const supabaseUrl = import.meta.env.VITE_SUPABASE_URL 4 | const supabaseAnonKey = import.meta.env.VITE_SUPABASE_ANON_KEY 5 | 6 | export const supabase = createClient(supabaseUrl, supabaseAnonKey) 7 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [vue()] 7 | }) 8 | --------------------------------------------------------------------------------