├── .gitignore ├── README.md ├── next-env.d.ts ├── next.config.js ├── package-lock.json ├── package.json ├── pages ├── _app.tsx ├── api │ └── revalidate.ts └── index.tsx ├── postcss.config.js ├── prettier.config.js ├── public ├── favicon.ico └── vercel.svg ├── styles └── globals.css ├── tailwind.config.js └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env.local 29 | .env.development.local 30 | .env.test.local 31 | .env.production.local 32 | 33 | # vercel 34 | .vercel 35 | 36 | # typescript 37 | *.tsbuildinfo 38 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![Deploy with Vercel](https://vercel.com/button)]() 2 | 3 | # Image Gallery with Next.js, Supabase, and Tailwind CSS 4 | 5 | Learn how to create an image gallery with dynamic content from a PostgreSQL database, with support for content updates without neding to redeploy. 6 | 7 | Read the tutorial: https://leerob.io/blog/image-gallery-supabase-tailwind-nextjs 8 | 9 | swag 10 | 11 | ## Built With 12 | 13 | - [Supabase](https://supabase.com) 14 | - [Tailwind CSS](https://tailwindcss.com) 15 | - [Next.js](https://nextjs.org) 16 | - [Vercel](https://vercel.com) 17 | -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | module.exports = { 3 | reactStrictMode: true, 4 | images: { 5 | domains: ['pbs.twimg.com'], 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "image-gallery", 3 | "lockfileVersion": 2, 4 | "requires": true, 5 | "packages": { 6 | "": { 7 | "dependencies": { 8 | "@supabase/supabase-js": "^1.32.2", 9 | "next": "^12.1.1", 10 | "react": "^17.0.2", 11 | "react-dom": "^17.0.2" 12 | }, 13 | "devDependencies": { 14 | "@tailwindcss/aspect-ratio": "^0.4.0", 15 | "@types/node": "17.0.4", 16 | "@types/react": "17.0.38", 17 | "autoprefixer": "^10.4.0", 18 | "postcss": "^8.4.5", 19 | "prettier": "^2.5.1", 20 | "prettier-plugin-tailwindcss": "^0.1.1", 21 | "tailwindcss": "^3.0.7", 22 | "typescript": "4.5.4" 23 | } 24 | }, 25 | "node_modules/@babel/code-frame": { 26 | "version": "7.16.7", 27 | "dev": true, 28 | "license": "MIT", 29 | "dependencies": { 30 | "@babel/highlight": "^7.16.7" 31 | }, 32 | "engines": { 33 | "node": ">=6.9.0" 34 | } 35 | }, 36 | "node_modules/@babel/helper-validator-identifier": { 37 | "version": "7.16.7", 38 | "dev": true, 39 | "license": "MIT", 40 | "engines": { 41 | "node": ">=6.9.0" 42 | } 43 | }, 44 | "node_modules/@babel/highlight": { 45 | "version": "7.16.10", 46 | "dev": true, 47 | "license": "MIT", 48 | "dependencies": { 49 | "@babel/helper-validator-identifier": "^7.16.7", 50 | "chalk": "^2.0.0", 51 | "js-tokens": "^4.0.0" 52 | }, 53 | "engines": { 54 | "node": ">=6.9.0" 55 | } 56 | }, 57 | "node_modules/@babel/highlight/node_modules/ansi-styles": { 58 | "version": "3.2.1", 59 | "dev": true, 60 | "license": "MIT", 61 | "dependencies": { 62 | "color-convert": "^1.9.0" 63 | }, 64 | "engines": { 65 | "node": ">=4" 66 | } 67 | }, 68 | "node_modules/@babel/highlight/node_modules/chalk": { 69 | "version": "2.4.2", 70 | "dev": true, 71 | "license": "MIT", 72 | "dependencies": { 73 | "ansi-styles": "^3.2.1", 74 | "escape-string-regexp": "^1.0.5", 75 | "supports-color": "^5.3.0" 76 | }, 77 | "engines": { 78 | "node": ">=4" 79 | } 80 | }, 81 | "node_modules/@babel/highlight/node_modules/color-convert": { 82 | "version": "1.9.3", 83 | "dev": true, 84 | "license": "MIT", 85 | "dependencies": { 86 | "color-name": "1.1.3" 87 | } 88 | }, 89 | "node_modules/@babel/highlight/node_modules/color-name": { 90 | "version": "1.1.3", 91 | "dev": true, 92 | "license": "MIT" 93 | }, 94 | "node_modules/@babel/highlight/node_modules/has-flag": { 95 | "version": "3.0.0", 96 | "dev": true, 97 | "license": "MIT", 98 | "engines": { 99 | "node": ">=4" 100 | } 101 | }, 102 | "node_modules/@babel/highlight/node_modules/supports-color": { 103 | "version": "5.5.0", 104 | "dev": true, 105 | "license": "MIT", 106 | "dependencies": { 107 | "has-flag": "^3.0.0" 108 | }, 109 | "engines": { 110 | "node": ">=4" 111 | } 112 | }, 113 | "node_modules/@next/env": { 114 | "version": "12.1.1", 115 | "license": "MIT" 116 | }, 117 | "node_modules/@next/swc-android-arm-eabi": { 118 | "version": "12.1.1", 119 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.1.tgz", 120 | "integrity": "sha512-phV9H6d1eK1oVC7nmKKcCXvgOWT4K7aLC/beyO6yvbFC4XtBLE21vPwVl7B4ybz5xjSa6TXoR3TMR6vkW6Mv+A==", 121 | "cpu": [ 122 | "arm" 123 | ], 124 | "optional": true, 125 | "os": [ 126 | "android" 127 | ], 128 | "engines": { 129 | "node": ">= 10" 130 | } 131 | }, 132 | "node_modules/@next/swc-android-arm64": { 133 | "version": "12.1.1", 134 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.1.tgz", 135 | "integrity": "sha512-X5qEz0YeeYT0Gz2wXPAEtRKEuAsLUIEgC/DDfS98t/5Idjv0S4aqIX+TQdzoXP5bwQkIr+mSg+MBIdLtbtnCsA==", 136 | "cpu": [ 137 | "arm64" 138 | ], 139 | "optional": true, 140 | "os": [ 141 | "android" 142 | ], 143 | "engines": { 144 | "node": ">= 10" 145 | } 146 | }, 147 | "node_modules/@next/swc-darwin-arm64": { 148 | "version": "12.1.1", 149 | "cpu": [ 150 | "arm64" 151 | ], 152 | "license": "MIT", 153 | "optional": true, 154 | "os": [ 155 | "darwin" 156 | ], 157 | "engines": { 158 | "node": ">= 10" 159 | } 160 | }, 161 | "node_modules/@next/swc-darwin-x64": { 162 | "version": "12.1.1", 163 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.1.tgz", 164 | "integrity": "sha512-2VOsA6WLDuDBA6935djohWGGeUIKeQhXwDwu1CKx1b8+6YMMIvFr/y2dpPWoct+5/IjFz84a2MnbABwpoNB9YA==", 165 | "cpu": [ 166 | "x64" 167 | ], 168 | "optional": true, 169 | "os": [ 170 | "darwin" 171 | ], 172 | "engines": { 173 | "node": ">= 10" 174 | } 175 | }, 176 | "node_modules/@next/swc-linux-arm-gnueabihf": { 177 | "version": "12.1.1", 178 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.1.tgz", 179 | "integrity": "sha512-1urXtWwqjqbbpJBWeJYz5ATgelKacVNdKIdhfahbsmW+DZGoK5TYovgieyHFYUCyHdTuKeLTVR62ahIRUBv1YA==", 180 | "cpu": [ 181 | "arm" 182 | ], 183 | "optional": true, 184 | "os": [ 185 | "linux" 186 | ], 187 | "engines": { 188 | "node": ">= 10" 189 | } 190 | }, 191 | "node_modules/@next/swc-linux-arm64-gnu": { 192 | "version": "12.1.1", 193 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.1.tgz", 194 | "integrity": "sha512-CDD9yFuknDvTOzzDnvfmb58USI5Vu6FUyzw96udKj7KA/n1YrNQ4K8X7KsDCRZoqfRWYceAyj1EpwHkfdiB7bg==", 195 | "cpu": [ 196 | "arm64" 197 | ], 198 | "optional": true, 199 | "os": [ 200 | "linux" 201 | ], 202 | "engines": { 203 | "node": ">= 10" 204 | } 205 | }, 206 | "node_modules/@next/swc-linux-arm64-musl": { 207 | "version": "12.1.1", 208 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.1.tgz", 209 | "integrity": "sha512-nxyjgmbOpZm7gGPj9EV5Cqosoujt+ih/8SO2XG+BetgfAk0+c15793DHVAljNuc8GF9wpzqQnjMMUZ211VmQsg==", 210 | "cpu": [ 211 | "arm64" 212 | ], 213 | "optional": true, 214 | "os": [ 215 | "linux" 216 | ], 217 | "engines": { 218 | "node": ">= 10" 219 | } 220 | }, 221 | "node_modules/@next/swc-linux-x64-gnu": { 222 | "version": "12.1.1", 223 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.1.tgz", 224 | "integrity": "sha512-L8Cu8kH3Vn2dnRpvcvGGA1TlmDP2WXJ+qDwvjb/ikDXLdRdmFvJwHh45JUGiW2FHed3lGseOgNsuYiDvnT8Cdw==", 225 | "cpu": [ 226 | "x64" 227 | ], 228 | "optional": true, 229 | "os": [ 230 | "linux" 231 | ], 232 | "engines": { 233 | "node": ">= 10" 234 | } 235 | }, 236 | "node_modules/@next/swc-linux-x64-musl": { 237 | "version": "12.1.1", 238 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.1.tgz", 239 | "integrity": "sha512-4RAb7L69MoRSggBqUfF3OrtBCUN2zPDi7asfL7bfxEhH10LGzyfil8dT0GVjPOPFz/SyLx3ORd6avGij2IlJUA==", 240 | "cpu": [ 241 | "x64" 242 | ], 243 | "optional": true, 244 | "os": [ 245 | "linux" 246 | ], 247 | "engines": { 248 | "node": ">= 10" 249 | } 250 | }, 251 | "node_modules/@next/swc-win32-arm64-msvc": { 252 | "version": "12.1.1", 253 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.1.tgz", 254 | "integrity": "sha512-zvkuNIgOxkAU3RbzWRGCcFasDxWJdhONt2YeRGe39dJERHhEFA1u4HgaZw/SFE/kfrNRUZbXjJNAg3OU/EpPZw==", 255 | "cpu": [ 256 | "arm64" 257 | ], 258 | "optional": true, 259 | "os": [ 260 | "win32" 261 | ], 262 | "engines": { 263 | "node": ">= 10" 264 | } 265 | }, 266 | "node_modules/@next/swc-win32-ia32-msvc": { 267 | "version": "12.1.1", 268 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.1.tgz", 269 | "integrity": "sha512-GsNDtZ//uKWNVjiwv3YKQYsDXuRWTz8jTmxopf5Ws3dK+zA77hn4o46LBQg0JPCNqTUO6eIOlUBjqSL6ejxmSQ==", 270 | "cpu": [ 271 | "ia32" 272 | ], 273 | "optional": true, 274 | "os": [ 275 | "win32" 276 | ], 277 | "engines": { 278 | "node": ">= 10" 279 | } 280 | }, 281 | "node_modules/@next/swc-win32-x64-msvc": { 282 | "version": "12.1.1", 283 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.1.tgz", 284 | "integrity": "sha512-nH5osn/uK9wsjT8Jh1YxMtRrkN5hoCNLQjsEdvfUfb+loQXeYiBd3n/0DUJkf6Scjfv6/htfUTPP3AEa7AbBxQ==", 285 | "cpu": [ 286 | "x64" 287 | ], 288 | "optional": true, 289 | "os": [ 290 | "win32" 291 | ], 292 | "engines": { 293 | "node": ">= 10" 294 | } 295 | }, 296 | "node_modules/@nodelib/fs.scandir": { 297 | "version": "2.1.5", 298 | "dev": true, 299 | "license": "MIT", 300 | "dependencies": { 301 | "@nodelib/fs.stat": "2.0.5", 302 | "run-parallel": "^1.1.9" 303 | }, 304 | "engines": { 305 | "node": ">= 8" 306 | } 307 | }, 308 | "node_modules/@nodelib/fs.stat": { 309 | "version": "2.0.5", 310 | "dev": true, 311 | "license": "MIT", 312 | "engines": { 313 | "node": ">= 8" 314 | } 315 | }, 316 | "node_modules/@nodelib/fs.walk": { 317 | "version": "1.2.8", 318 | "dev": true, 319 | "license": "MIT", 320 | "dependencies": { 321 | "@nodelib/fs.scandir": "2.1.5", 322 | "fastq": "^1.6.0" 323 | }, 324 | "engines": { 325 | "node": ">= 8" 326 | } 327 | }, 328 | "node_modules/@supabase/functions-js": { 329 | "version": "1.2.3", 330 | "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-1.2.3.tgz", 331 | "integrity": "sha512-OgeI84eK02pyYa7uA7gzZri6wyPEB2jOu1AEcZKJa328Jd6LlX9VPfPZZ86ahWzKEDmvBrUUXJAUihGuqWcFeQ==", 332 | "dependencies": { 333 | "cross-fetch": "^3.1.5" 334 | } 335 | }, 336 | "node_modules/@supabase/gotrue-js": { 337 | "version": "1.22.8", 338 | "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.22.8.tgz", 339 | "integrity": "sha512-2mG5M3goHSPwwQzjbgw5lmUNeVexOaPIFcUmUU9p9mwsSzbZ5u2pKbZGVS/9aBaJoD8YvW8khMej9XaGEFQeiQ==", 340 | "dependencies": { 341 | "cross-fetch": "^3.0.6" 342 | } 343 | }, 344 | "node_modules/@supabase/postgrest-js": { 345 | "version": "0.37.1", 346 | "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.37.1.tgz", 347 | "integrity": "sha512-Lm7eLuYzEr7ppGC84mlqpm8v9Vy8kyR6he6z3avrkccC8pwLOsxaK0bkKiV4LBwkJc7uARMTdlp+IskatHkz2g==", 348 | "dependencies": { 349 | "cross-fetch": "^3.0.6" 350 | } 351 | }, 352 | "node_modules/@supabase/realtime-js": { 353 | "version": "1.4.0", 354 | "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.4.0.tgz", 355 | "integrity": "sha512-KHSyb2IengH92RaTmY7hhhJ43ZdDsJfVjFqvXVb0t1MQRgLfrVfcGxbWFPhU3sBvwzsvudRM4jLO0ZrzVezL2w==", 356 | "dependencies": { 357 | "@types/lodash.clonedeep": "^4.5.6", 358 | "@types/phoenix": "^1.5.4", 359 | "@types/websocket": "^1.0.3", 360 | "lodash.clonedeep": "^4.5.0", 361 | "websocket": "^1.0.34" 362 | } 363 | }, 364 | "node_modules/@supabase/storage-js": { 365 | "version": "1.6.4", 366 | "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-1.6.4.tgz", 367 | "integrity": "sha512-vYcr1JGRf8Wr4v+lb8Ucl0bELwCZv8lT/PrYuhEKfJff6BI6/nTJp8rRZSRaDESQR8JlpaLaL+dmD/wsNqZnNQ==", 368 | "dependencies": { 369 | "cross-fetch": "^3.1.0" 370 | } 371 | }, 372 | "node_modules/@supabase/supabase-js": { 373 | "version": "1.32.2", 374 | "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.32.2.tgz", 375 | "integrity": "sha512-cM9CHG2vLUJzzOj8Cers36BYTb5c1v7HeHbtOXkPUh76oTO7w2d+jtvqZBzR72Nz7ykYmCVw5YccHR2FuxoLHQ==", 376 | "dependencies": { 377 | "@supabase/functions-js": "^1.2.2", 378 | "@supabase/gotrue-js": "^1.22.8", 379 | "@supabase/postgrest-js": "^0.37.1", 380 | "@supabase/realtime-js": "^1.4.0", 381 | "@supabase/storage-js": "^1.6.4" 382 | } 383 | }, 384 | "node_modules/@tailwindcss/aspect-ratio": { 385 | "version": "0.4.0", 386 | "resolved": "https://registry.npmjs.org/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.0.tgz", 387 | "integrity": "sha512-WJu0I4PpqNPuutpaA9zDUq2JXR+lorZ7PbLcKNLmb6GL9/HLfC7w3CRsMhJF4BbYd/lkY6CfXOvkYpuGnZfkpQ==", 388 | "dev": true, 389 | "peerDependencies": { 390 | "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1" 391 | } 392 | }, 393 | "node_modules/@types/lodash": { 394 | "version": "4.14.180", 395 | "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.180.tgz", 396 | "integrity": "sha512-XOKXa1KIxtNXgASAnwj7cnttJxS4fksBRywK/9LzRV5YxrF80BXZIGeQSuoESQ/VkUj30Ae0+YcuHc15wJCB2g==" 397 | }, 398 | "node_modules/@types/lodash.clonedeep": { 399 | "version": "4.5.6", 400 | "resolved": "https://registry.npmjs.org/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.6.tgz", 401 | "integrity": "sha512-cE1jYr2dEg1wBImvXlNtp0xDoS79rfEdGozQVgliDZj1uERH4k+rmEMTudP9b4VQ8O6nRb5gPqft0QzEQGMQgA==", 402 | "dependencies": { 403 | "@types/lodash": "*" 404 | } 405 | }, 406 | "node_modules/@types/node": { 407 | "version": "17.0.4", 408 | "license": "MIT" 409 | }, 410 | "node_modules/@types/parse-json": { 411 | "version": "4.0.0", 412 | "dev": true, 413 | "license": "MIT" 414 | }, 415 | "node_modules/@types/phoenix": { 416 | "version": "1.5.4", 417 | "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.5.4.tgz", 418 | "integrity": "sha512-L5eZmzw89eXBKkiqVBcJfU1QGx9y+wurRIEgt0cuLH0hwNtVUxtx+6cu0R2STwWj468sjXyBYPYDtGclUd1kjQ==" 419 | }, 420 | "node_modules/@types/prop-types": { 421 | "version": "15.7.4", 422 | "dev": true, 423 | "license": "MIT" 424 | }, 425 | "node_modules/@types/react": { 426 | "version": "17.0.38", 427 | "dev": true, 428 | "license": "MIT", 429 | "dependencies": { 430 | "@types/prop-types": "*", 431 | "@types/scheduler": "*", 432 | "csstype": "^3.0.2" 433 | } 434 | }, 435 | "node_modules/@types/scheduler": { 436 | "version": "0.16.2", 437 | "dev": true, 438 | "license": "MIT" 439 | }, 440 | "node_modules/@types/websocket": { 441 | "version": "1.0.5", 442 | "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz", 443 | "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==", 444 | "dependencies": { 445 | "@types/node": "*" 446 | } 447 | }, 448 | "node_modules/acorn": { 449 | "version": "7.4.1", 450 | "dev": true, 451 | "license": "MIT", 452 | "bin": { 453 | "acorn": "bin/acorn" 454 | }, 455 | "engines": { 456 | "node": ">=0.4.0" 457 | } 458 | }, 459 | "node_modules/acorn-node": { 460 | "version": "1.8.2", 461 | "dev": true, 462 | "license": "Apache-2.0", 463 | "dependencies": { 464 | "acorn": "^7.0.0", 465 | "acorn-walk": "^7.0.0", 466 | "xtend": "^4.0.2" 467 | } 468 | }, 469 | "node_modules/acorn-walk": { 470 | "version": "7.2.0", 471 | "dev": true, 472 | "license": "MIT", 473 | "engines": { 474 | "node": ">=0.4.0" 475 | } 476 | }, 477 | "node_modules/ansi-styles": { 478 | "version": "4.3.0", 479 | "dev": true, 480 | "license": "MIT", 481 | "dependencies": { 482 | "color-convert": "^2.0.1" 483 | }, 484 | "engines": { 485 | "node": ">=8" 486 | }, 487 | "funding": { 488 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 489 | } 490 | }, 491 | "node_modules/anymatch": { 492 | "version": "3.1.2", 493 | "dev": true, 494 | "license": "ISC", 495 | "dependencies": { 496 | "normalize-path": "^3.0.0", 497 | "picomatch": "^2.0.4" 498 | }, 499 | "engines": { 500 | "node": ">= 8" 501 | } 502 | }, 503 | "node_modules/arg": { 504 | "version": "5.0.1", 505 | "dev": true, 506 | "license": "MIT" 507 | }, 508 | "node_modules/autoprefixer": { 509 | "version": "10.4.4", 510 | "dev": true, 511 | "funding": [ 512 | { 513 | "type": "opencollective", 514 | "url": "https://opencollective.com/postcss/" 515 | }, 516 | { 517 | "type": "tidelift", 518 | "url": "https://tidelift.com/funding/github/npm/autoprefixer" 519 | } 520 | ], 521 | "license": "MIT", 522 | "dependencies": { 523 | "browserslist": "^4.20.2", 524 | "caniuse-lite": "^1.0.30001317", 525 | "fraction.js": "^4.2.0", 526 | "normalize-range": "^0.1.2", 527 | "picocolors": "^1.0.0", 528 | "postcss-value-parser": "^4.2.0" 529 | }, 530 | "bin": { 531 | "autoprefixer": "bin/autoprefixer" 532 | }, 533 | "engines": { 534 | "node": "^10 || ^12 || >=14" 535 | }, 536 | "peerDependencies": { 537 | "postcss": "^8.1.0" 538 | } 539 | }, 540 | "node_modules/binary-extensions": { 541 | "version": "2.2.0", 542 | "dev": true, 543 | "license": "MIT", 544 | "engines": { 545 | "node": ">=8" 546 | } 547 | }, 548 | "node_modules/braces": { 549 | "version": "3.0.2", 550 | "dev": true, 551 | "license": "MIT", 552 | "dependencies": { 553 | "fill-range": "^7.0.1" 554 | }, 555 | "engines": { 556 | "node": ">=8" 557 | } 558 | }, 559 | "node_modules/browserslist": { 560 | "version": "4.20.2", 561 | "dev": true, 562 | "funding": [ 563 | { 564 | "type": "opencollective", 565 | "url": "https://opencollective.com/browserslist" 566 | }, 567 | { 568 | "type": "tidelift", 569 | "url": "https://tidelift.com/funding/github/npm/browserslist" 570 | } 571 | ], 572 | "license": "MIT", 573 | "dependencies": { 574 | "caniuse-lite": "^1.0.30001317", 575 | "electron-to-chromium": "^1.4.84", 576 | "escalade": "^3.1.1", 577 | "node-releases": "^2.0.2", 578 | "picocolors": "^1.0.0" 579 | }, 580 | "bin": { 581 | "browserslist": "cli.js" 582 | }, 583 | "engines": { 584 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 585 | } 586 | }, 587 | "node_modules/bufferutil": { 588 | "version": "4.0.6", 589 | "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", 590 | "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", 591 | "hasInstallScript": true, 592 | "dependencies": { 593 | "node-gyp-build": "^4.3.0" 594 | }, 595 | "engines": { 596 | "node": ">=6.14.2" 597 | } 598 | }, 599 | "node_modules/callsites": { 600 | "version": "3.1.0", 601 | "dev": true, 602 | "license": "MIT", 603 | "engines": { 604 | "node": ">=6" 605 | } 606 | }, 607 | "node_modules/camelcase-css": { 608 | "version": "2.0.1", 609 | "dev": true, 610 | "license": "MIT", 611 | "engines": { 612 | "node": ">= 6" 613 | } 614 | }, 615 | "node_modules/caniuse-lite": { 616 | "version": "1.0.30001320", 617 | "funding": [ 618 | { 619 | "type": "opencollective", 620 | "url": "https://opencollective.com/browserslist" 621 | }, 622 | { 623 | "type": "tidelift", 624 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 625 | } 626 | ], 627 | "license": "CC-BY-4.0" 628 | }, 629 | "node_modules/chalk": { 630 | "version": "4.1.2", 631 | "dev": true, 632 | "license": "MIT", 633 | "dependencies": { 634 | "ansi-styles": "^4.1.0", 635 | "supports-color": "^7.1.0" 636 | }, 637 | "engines": { 638 | "node": ">=10" 639 | }, 640 | "funding": { 641 | "url": "https://github.com/chalk/chalk?sponsor=1" 642 | } 643 | }, 644 | "node_modules/chokidar": { 645 | "version": "3.5.3", 646 | "dev": true, 647 | "funding": [ 648 | { 649 | "type": "individual", 650 | "url": "https://paulmillr.com/funding/" 651 | } 652 | ], 653 | "license": "MIT", 654 | "dependencies": { 655 | "anymatch": "~3.1.2", 656 | "braces": "~3.0.2", 657 | "glob-parent": "~5.1.2", 658 | "is-binary-path": "~2.1.0", 659 | "is-glob": "~4.0.1", 660 | "normalize-path": "~3.0.0", 661 | "readdirp": "~3.6.0" 662 | }, 663 | "engines": { 664 | "node": ">= 8.10.0" 665 | }, 666 | "optionalDependencies": { 667 | "fsevents": "~2.3.2" 668 | } 669 | }, 670 | "node_modules/color-convert": { 671 | "version": "2.0.1", 672 | "dev": true, 673 | "license": "MIT", 674 | "dependencies": { 675 | "color-name": "~1.1.4" 676 | }, 677 | "engines": { 678 | "node": ">=7.0.0" 679 | } 680 | }, 681 | "node_modules/color-name": { 682 | "version": "1.1.4", 683 | "dev": true, 684 | "license": "MIT" 685 | }, 686 | "node_modules/cosmiconfig": { 687 | "version": "7.0.1", 688 | "dev": true, 689 | "license": "MIT", 690 | "dependencies": { 691 | "@types/parse-json": "^4.0.0", 692 | "import-fresh": "^3.2.1", 693 | "parse-json": "^5.0.0", 694 | "path-type": "^4.0.0", 695 | "yaml": "^1.10.0" 696 | }, 697 | "engines": { 698 | "node": ">=10" 699 | } 700 | }, 701 | "node_modules/cross-fetch": { 702 | "version": "3.1.5", 703 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 704 | "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 705 | "dependencies": { 706 | "node-fetch": "2.6.7" 707 | } 708 | }, 709 | "node_modules/cssesc": { 710 | "version": "3.0.0", 711 | "dev": true, 712 | "license": "MIT", 713 | "bin": { 714 | "cssesc": "bin/cssesc" 715 | }, 716 | "engines": { 717 | "node": ">=4" 718 | } 719 | }, 720 | "node_modules/csstype": { 721 | "version": "3.0.11", 722 | "dev": true, 723 | "license": "MIT" 724 | }, 725 | "node_modules/d": { 726 | "version": "1.0.1", 727 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", 728 | "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", 729 | "dependencies": { 730 | "es5-ext": "^0.10.50", 731 | "type": "^1.0.1" 732 | } 733 | }, 734 | "node_modules/debug": { 735 | "version": "2.6.9", 736 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 737 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 738 | "dependencies": { 739 | "ms": "2.0.0" 740 | } 741 | }, 742 | "node_modules/defined": { 743 | "version": "1.0.0", 744 | "dev": true, 745 | "license": "MIT" 746 | }, 747 | "node_modules/detective": { 748 | "version": "5.2.0", 749 | "dev": true, 750 | "license": "MIT", 751 | "dependencies": { 752 | "acorn-node": "^1.6.1", 753 | "defined": "^1.0.0", 754 | "minimist": "^1.1.1" 755 | }, 756 | "bin": { 757 | "detective": "bin/detective.js" 758 | }, 759 | "engines": { 760 | "node": ">=0.8.0" 761 | } 762 | }, 763 | "node_modules/didyoumean": { 764 | "version": "1.2.2", 765 | "dev": true, 766 | "license": "Apache-2.0" 767 | }, 768 | "node_modules/dlv": { 769 | "version": "1.1.3", 770 | "dev": true, 771 | "license": "MIT" 772 | }, 773 | "node_modules/electron-to-chromium": { 774 | "version": "1.4.96", 775 | "dev": true, 776 | "license": "ISC" 777 | }, 778 | "node_modules/error-ex": { 779 | "version": "1.3.2", 780 | "dev": true, 781 | "license": "MIT", 782 | "dependencies": { 783 | "is-arrayish": "^0.2.1" 784 | } 785 | }, 786 | "node_modules/es5-ext": { 787 | "version": "0.10.59", 788 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.59.tgz", 789 | "integrity": "sha512-cOgyhW0tIJyQY1Kfw6Kr0viu9ZlUctVchRMZ7R0HiH3dxTSp5zJDLecwxUqPUrGKMsgBI1wd1FL+d9Jxfi4cLw==", 790 | "hasInstallScript": true, 791 | "dependencies": { 792 | "es6-iterator": "^2.0.3", 793 | "es6-symbol": "^3.1.3", 794 | "next-tick": "^1.1.0" 795 | }, 796 | "engines": { 797 | "node": ">=0.10" 798 | } 799 | }, 800 | "node_modules/es6-iterator": { 801 | "version": "2.0.3", 802 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", 803 | "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", 804 | "dependencies": { 805 | "d": "1", 806 | "es5-ext": "^0.10.35", 807 | "es6-symbol": "^3.1.1" 808 | } 809 | }, 810 | "node_modules/es6-symbol": { 811 | "version": "3.1.3", 812 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", 813 | "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", 814 | "dependencies": { 815 | "d": "^1.0.1", 816 | "ext": "^1.1.2" 817 | } 818 | }, 819 | "node_modules/escalade": { 820 | "version": "3.1.1", 821 | "dev": true, 822 | "license": "MIT", 823 | "engines": { 824 | "node": ">=6" 825 | } 826 | }, 827 | "node_modules/escape-string-regexp": { 828 | "version": "1.0.5", 829 | "dev": true, 830 | "license": "MIT", 831 | "engines": { 832 | "node": ">=0.8.0" 833 | } 834 | }, 835 | "node_modules/ext": { 836 | "version": "1.6.0", 837 | "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", 838 | "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", 839 | "dependencies": { 840 | "type": "^2.5.0" 841 | } 842 | }, 843 | "node_modules/ext/node_modules/type": { 844 | "version": "2.6.0", 845 | "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", 846 | "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==" 847 | }, 848 | "node_modules/fast-glob": { 849 | "version": "3.2.11", 850 | "dev": true, 851 | "license": "MIT", 852 | "dependencies": { 853 | "@nodelib/fs.stat": "^2.0.2", 854 | "@nodelib/fs.walk": "^1.2.3", 855 | "glob-parent": "^5.1.2", 856 | "merge2": "^1.3.0", 857 | "micromatch": "^4.0.4" 858 | }, 859 | "engines": { 860 | "node": ">=8.6.0" 861 | } 862 | }, 863 | "node_modules/fastq": { 864 | "version": "1.13.0", 865 | "dev": true, 866 | "license": "ISC", 867 | "dependencies": { 868 | "reusify": "^1.0.4" 869 | } 870 | }, 871 | "node_modules/fill-range": { 872 | "version": "7.0.1", 873 | "dev": true, 874 | "license": "MIT", 875 | "dependencies": { 876 | "to-regex-range": "^5.0.1" 877 | }, 878 | "engines": { 879 | "node": ">=8" 880 | } 881 | }, 882 | "node_modules/fraction.js": { 883 | "version": "4.2.0", 884 | "dev": true, 885 | "license": "MIT", 886 | "engines": { 887 | "node": "*" 888 | }, 889 | "funding": { 890 | "type": "patreon", 891 | "url": "https://www.patreon.com/infusion" 892 | } 893 | }, 894 | "node_modules/fsevents": { 895 | "version": "2.3.2", 896 | "dev": true, 897 | "license": "MIT", 898 | "optional": true, 899 | "os": [ 900 | "darwin" 901 | ], 902 | "engines": { 903 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 904 | } 905 | }, 906 | "node_modules/function-bind": { 907 | "version": "1.1.1", 908 | "dev": true, 909 | "license": "MIT" 910 | }, 911 | "node_modules/glob-parent": { 912 | "version": "5.1.2", 913 | "dev": true, 914 | "license": "ISC", 915 | "dependencies": { 916 | "is-glob": "^4.0.1" 917 | }, 918 | "engines": { 919 | "node": ">= 6" 920 | } 921 | }, 922 | "node_modules/has": { 923 | "version": "1.0.3", 924 | "dev": true, 925 | "license": "MIT", 926 | "dependencies": { 927 | "function-bind": "^1.1.1" 928 | }, 929 | "engines": { 930 | "node": ">= 0.4.0" 931 | } 932 | }, 933 | "node_modules/has-flag": { 934 | "version": "4.0.0", 935 | "dev": true, 936 | "license": "MIT", 937 | "engines": { 938 | "node": ">=8" 939 | } 940 | }, 941 | "node_modules/import-fresh": { 942 | "version": "3.3.0", 943 | "dev": true, 944 | "license": "MIT", 945 | "dependencies": { 946 | "parent-module": "^1.0.0", 947 | "resolve-from": "^4.0.0" 948 | }, 949 | "engines": { 950 | "node": ">=6" 951 | }, 952 | "funding": { 953 | "url": "https://github.com/sponsors/sindresorhus" 954 | } 955 | }, 956 | "node_modules/is-arrayish": { 957 | "version": "0.2.1", 958 | "dev": true, 959 | "license": "MIT" 960 | }, 961 | "node_modules/is-binary-path": { 962 | "version": "2.1.0", 963 | "dev": true, 964 | "license": "MIT", 965 | "dependencies": { 966 | "binary-extensions": "^2.0.0" 967 | }, 968 | "engines": { 969 | "node": ">=8" 970 | } 971 | }, 972 | "node_modules/is-core-module": { 973 | "version": "2.8.1", 974 | "dev": true, 975 | "license": "MIT", 976 | "dependencies": { 977 | "has": "^1.0.3" 978 | }, 979 | "funding": { 980 | "url": "https://github.com/sponsors/ljharb" 981 | } 982 | }, 983 | "node_modules/is-extglob": { 984 | "version": "2.1.1", 985 | "dev": true, 986 | "license": "MIT", 987 | "engines": { 988 | "node": ">=0.10.0" 989 | } 990 | }, 991 | "node_modules/is-glob": { 992 | "version": "4.0.3", 993 | "dev": true, 994 | "license": "MIT", 995 | "dependencies": { 996 | "is-extglob": "^2.1.1" 997 | }, 998 | "engines": { 999 | "node": ">=0.10.0" 1000 | } 1001 | }, 1002 | "node_modules/is-number": { 1003 | "version": "7.0.0", 1004 | "dev": true, 1005 | "license": "MIT", 1006 | "engines": { 1007 | "node": ">=0.12.0" 1008 | } 1009 | }, 1010 | "node_modules/is-typedarray": { 1011 | "version": "1.0.0", 1012 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 1013 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 1014 | }, 1015 | "node_modules/js-tokens": { 1016 | "version": "4.0.0", 1017 | "license": "MIT" 1018 | }, 1019 | "node_modules/json-parse-even-better-errors": { 1020 | "version": "2.3.1", 1021 | "dev": true, 1022 | "license": "MIT" 1023 | }, 1024 | "node_modules/lilconfig": { 1025 | "version": "2.0.5", 1026 | "dev": true, 1027 | "license": "MIT", 1028 | "engines": { 1029 | "node": ">=10" 1030 | } 1031 | }, 1032 | "node_modules/lines-and-columns": { 1033 | "version": "1.2.4", 1034 | "dev": true, 1035 | "license": "MIT" 1036 | }, 1037 | "node_modules/lodash.clonedeep": { 1038 | "version": "4.5.0", 1039 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", 1040 | "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" 1041 | }, 1042 | "node_modules/loose-envify": { 1043 | "version": "1.4.0", 1044 | "license": "MIT", 1045 | "dependencies": { 1046 | "js-tokens": "^3.0.0 || ^4.0.0" 1047 | }, 1048 | "bin": { 1049 | "loose-envify": "cli.js" 1050 | } 1051 | }, 1052 | "node_modules/merge2": { 1053 | "version": "1.4.1", 1054 | "dev": true, 1055 | "license": "MIT", 1056 | "engines": { 1057 | "node": ">= 8" 1058 | } 1059 | }, 1060 | "node_modules/micromatch": { 1061 | "version": "4.0.5", 1062 | "dev": true, 1063 | "license": "MIT", 1064 | "dependencies": { 1065 | "braces": "^3.0.2", 1066 | "picomatch": "^2.3.1" 1067 | }, 1068 | "engines": { 1069 | "node": ">=8.6" 1070 | } 1071 | }, 1072 | "node_modules/minimist": { 1073 | "version": "1.2.6", 1074 | "dev": true, 1075 | "license": "MIT" 1076 | }, 1077 | "node_modules/ms": { 1078 | "version": "2.0.0", 1079 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1080 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 1081 | }, 1082 | "node_modules/nanoid": { 1083 | "version": "3.3.1", 1084 | "license": "MIT", 1085 | "bin": { 1086 | "nanoid": "bin/nanoid.cjs" 1087 | }, 1088 | "engines": { 1089 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1090 | } 1091 | }, 1092 | "node_modules/next": { 1093 | "version": "12.1.1", 1094 | "resolved": "https://registry.npmjs.org/next/-/next-12.1.1.tgz", 1095 | "integrity": "sha512-IOfEIAgroMtsoYz6HXpDS+b5WB9WZ+MH266COXGlcpIiYSgUyJf9xV6vF+zY2RPvBJFT4fUW0EVdVnoOmTloDw==", 1096 | "dependencies": { 1097 | "@next/env": "12.1.1", 1098 | "caniuse-lite": "^1.0.30001283", 1099 | "postcss": "8.4.5", 1100 | "styled-jsx": "5.0.1", 1101 | "use-subscription": "1.5.1" 1102 | }, 1103 | "bin": { 1104 | "next": "dist/bin/next" 1105 | }, 1106 | "engines": { 1107 | "node": ">=12.22.0" 1108 | }, 1109 | "optionalDependencies": { 1110 | "@next/swc-android-arm-eabi": "12.1.1", 1111 | "@next/swc-android-arm64": "12.1.1", 1112 | "@next/swc-darwin-arm64": "12.1.1", 1113 | "@next/swc-darwin-x64": "12.1.1", 1114 | "@next/swc-linux-arm-gnueabihf": "12.1.1", 1115 | "@next/swc-linux-arm64-gnu": "12.1.1", 1116 | "@next/swc-linux-arm64-musl": "12.1.1", 1117 | "@next/swc-linux-x64-gnu": "12.1.1", 1118 | "@next/swc-linux-x64-musl": "12.1.1", 1119 | "@next/swc-win32-arm64-msvc": "12.1.1", 1120 | "@next/swc-win32-ia32-msvc": "12.1.1", 1121 | "@next/swc-win32-x64-msvc": "12.1.1" 1122 | }, 1123 | "peerDependencies": { 1124 | "fibers": ">= 3.1.0", 1125 | "node-sass": "^6.0.0 || ^7.0.0", 1126 | "react": "^17.0.2 || ^18.0.0-0", 1127 | "react-dom": "^17.0.2 || ^18.0.0-0", 1128 | "sass": "^1.3.0" 1129 | }, 1130 | "peerDependenciesMeta": { 1131 | "fibers": { 1132 | "optional": true 1133 | }, 1134 | "node-sass": { 1135 | "optional": true 1136 | }, 1137 | "sass": { 1138 | "optional": true 1139 | } 1140 | } 1141 | }, 1142 | "node_modules/next-tick": { 1143 | "version": "1.1.0", 1144 | "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", 1145 | "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" 1146 | }, 1147 | "node_modules/next/node_modules/postcss": { 1148 | "version": "8.4.5", 1149 | "license": "MIT", 1150 | "dependencies": { 1151 | "nanoid": "^3.1.30", 1152 | "picocolors": "^1.0.0", 1153 | "source-map-js": "^1.0.1" 1154 | }, 1155 | "engines": { 1156 | "node": "^10 || ^12 || >=14" 1157 | }, 1158 | "funding": { 1159 | "type": "opencollective", 1160 | "url": "https://opencollective.com/postcss/" 1161 | } 1162 | }, 1163 | "node_modules/node-fetch": { 1164 | "version": "2.6.7", 1165 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 1166 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 1167 | "dependencies": { 1168 | "whatwg-url": "^5.0.0" 1169 | }, 1170 | "engines": { 1171 | "node": "4.x || >=6.0.0" 1172 | }, 1173 | "peerDependencies": { 1174 | "encoding": "^0.1.0" 1175 | }, 1176 | "peerDependenciesMeta": { 1177 | "encoding": { 1178 | "optional": true 1179 | } 1180 | } 1181 | }, 1182 | "node_modules/node-gyp-build": { 1183 | "version": "4.3.0", 1184 | "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", 1185 | "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", 1186 | "bin": { 1187 | "node-gyp-build": "bin.js", 1188 | "node-gyp-build-optional": "optional.js", 1189 | "node-gyp-build-test": "build-test.js" 1190 | } 1191 | }, 1192 | "node_modules/node-releases": { 1193 | "version": "2.0.2", 1194 | "dev": true, 1195 | "license": "MIT" 1196 | }, 1197 | "node_modules/normalize-path": { 1198 | "version": "3.0.0", 1199 | "dev": true, 1200 | "license": "MIT", 1201 | "engines": { 1202 | "node": ">=0.10.0" 1203 | } 1204 | }, 1205 | "node_modules/normalize-range": { 1206 | "version": "0.1.2", 1207 | "dev": true, 1208 | "license": "MIT", 1209 | "engines": { 1210 | "node": ">=0.10.0" 1211 | } 1212 | }, 1213 | "node_modules/object-assign": { 1214 | "version": "4.1.1", 1215 | "license": "MIT", 1216 | "engines": { 1217 | "node": ">=0.10.0" 1218 | } 1219 | }, 1220 | "node_modules/object-hash": { 1221 | "version": "2.2.0", 1222 | "dev": true, 1223 | "license": "MIT", 1224 | "engines": { 1225 | "node": ">= 6" 1226 | } 1227 | }, 1228 | "node_modules/parent-module": { 1229 | "version": "1.0.1", 1230 | "dev": true, 1231 | "license": "MIT", 1232 | "dependencies": { 1233 | "callsites": "^3.0.0" 1234 | }, 1235 | "engines": { 1236 | "node": ">=6" 1237 | } 1238 | }, 1239 | "node_modules/parse-json": { 1240 | "version": "5.2.0", 1241 | "dev": true, 1242 | "license": "MIT", 1243 | "dependencies": { 1244 | "@babel/code-frame": "^7.0.0", 1245 | "error-ex": "^1.3.1", 1246 | "json-parse-even-better-errors": "^2.3.0", 1247 | "lines-and-columns": "^1.1.6" 1248 | }, 1249 | "engines": { 1250 | "node": ">=8" 1251 | }, 1252 | "funding": { 1253 | "url": "https://github.com/sponsors/sindresorhus" 1254 | } 1255 | }, 1256 | "node_modules/path-parse": { 1257 | "version": "1.0.7", 1258 | "dev": true, 1259 | "license": "MIT" 1260 | }, 1261 | "node_modules/path-type": { 1262 | "version": "4.0.0", 1263 | "dev": true, 1264 | "license": "MIT", 1265 | "engines": { 1266 | "node": ">=8" 1267 | } 1268 | }, 1269 | "node_modules/picocolors": { 1270 | "version": "1.0.0", 1271 | "license": "ISC" 1272 | }, 1273 | "node_modules/picomatch": { 1274 | "version": "2.3.1", 1275 | "dev": true, 1276 | "license": "MIT", 1277 | "engines": { 1278 | "node": ">=8.6" 1279 | }, 1280 | "funding": { 1281 | "url": "https://github.com/sponsors/jonschlinkert" 1282 | } 1283 | }, 1284 | "node_modules/postcss": { 1285 | "version": "8.4.12", 1286 | "dev": true, 1287 | "funding": [ 1288 | { 1289 | "type": "opencollective", 1290 | "url": "https://opencollective.com/postcss/" 1291 | }, 1292 | { 1293 | "type": "tidelift", 1294 | "url": "https://tidelift.com/funding/github/npm/postcss" 1295 | } 1296 | ], 1297 | "license": "MIT", 1298 | "dependencies": { 1299 | "nanoid": "^3.3.1", 1300 | "picocolors": "^1.0.0", 1301 | "source-map-js": "^1.0.2" 1302 | }, 1303 | "engines": { 1304 | "node": "^10 || ^12 || >=14" 1305 | } 1306 | }, 1307 | "node_modules/postcss-js": { 1308 | "version": "4.0.0", 1309 | "dev": true, 1310 | "license": "MIT", 1311 | "dependencies": { 1312 | "camelcase-css": "^2.0.1" 1313 | }, 1314 | "engines": { 1315 | "node": "^12 || ^14 || >= 16" 1316 | }, 1317 | "funding": { 1318 | "type": "opencollective", 1319 | "url": "https://opencollective.com/postcss/" 1320 | }, 1321 | "peerDependencies": { 1322 | "postcss": "^8.3.3" 1323 | } 1324 | }, 1325 | "node_modules/postcss-load-config": { 1326 | "version": "3.1.3", 1327 | "dev": true, 1328 | "license": "MIT", 1329 | "dependencies": { 1330 | "lilconfig": "^2.0.4", 1331 | "yaml": "^1.10.2" 1332 | }, 1333 | "engines": { 1334 | "node": ">= 10" 1335 | }, 1336 | "funding": { 1337 | "type": "opencollective", 1338 | "url": "https://opencollective.com/postcss/" 1339 | }, 1340 | "peerDependencies": { 1341 | "ts-node": ">=9.0.0" 1342 | }, 1343 | "peerDependenciesMeta": { 1344 | "ts-node": { 1345 | "optional": true 1346 | } 1347 | } 1348 | }, 1349 | "node_modules/postcss-nested": { 1350 | "version": "5.0.6", 1351 | "dev": true, 1352 | "license": "MIT", 1353 | "dependencies": { 1354 | "postcss-selector-parser": "^6.0.6" 1355 | }, 1356 | "engines": { 1357 | "node": ">=12.0" 1358 | }, 1359 | "funding": { 1360 | "type": "opencollective", 1361 | "url": "https://opencollective.com/postcss/" 1362 | }, 1363 | "peerDependencies": { 1364 | "postcss": "^8.2.14" 1365 | } 1366 | }, 1367 | "node_modules/postcss-selector-parser": { 1368 | "version": "6.0.9", 1369 | "dev": true, 1370 | "license": "MIT", 1371 | "dependencies": { 1372 | "cssesc": "^3.0.0", 1373 | "util-deprecate": "^1.0.2" 1374 | }, 1375 | "engines": { 1376 | "node": ">=4" 1377 | } 1378 | }, 1379 | "node_modules/postcss-value-parser": { 1380 | "version": "4.2.0", 1381 | "dev": true, 1382 | "license": "MIT" 1383 | }, 1384 | "node_modules/prettier": { 1385 | "version": "2.6.1", 1386 | "dev": true, 1387 | "license": "MIT", 1388 | "bin": { 1389 | "prettier": "bin-prettier.js" 1390 | }, 1391 | "engines": { 1392 | "node": ">=10.13.0" 1393 | }, 1394 | "funding": { 1395 | "url": "https://github.com/prettier/prettier?sponsor=1" 1396 | } 1397 | }, 1398 | "node_modules/prettier-plugin-tailwindcss": { 1399 | "version": "0.1.8", 1400 | "dev": true, 1401 | "engines": { 1402 | "node": ">=12.17.0" 1403 | }, 1404 | "peerDependencies": { 1405 | "prettier": ">=2.2.0" 1406 | } 1407 | }, 1408 | "node_modules/queue-microtask": { 1409 | "version": "1.2.3", 1410 | "dev": true, 1411 | "funding": [ 1412 | { 1413 | "type": "github", 1414 | "url": "https://github.com/sponsors/feross" 1415 | }, 1416 | { 1417 | "type": "patreon", 1418 | "url": "https://www.patreon.com/feross" 1419 | }, 1420 | { 1421 | "type": "consulting", 1422 | "url": "https://feross.org/support" 1423 | } 1424 | ], 1425 | "license": "MIT" 1426 | }, 1427 | "node_modules/quick-lru": { 1428 | "version": "5.1.1", 1429 | "dev": true, 1430 | "license": "MIT", 1431 | "engines": { 1432 | "node": ">=10" 1433 | }, 1434 | "funding": { 1435 | "url": "https://github.com/sponsors/sindresorhus" 1436 | } 1437 | }, 1438 | "node_modules/react": { 1439 | "version": "17.0.2", 1440 | "license": "MIT", 1441 | "dependencies": { 1442 | "loose-envify": "^1.1.0", 1443 | "object-assign": "^4.1.1" 1444 | }, 1445 | "engines": { 1446 | "node": ">=0.10.0" 1447 | } 1448 | }, 1449 | "node_modules/react-dom": { 1450 | "version": "17.0.2", 1451 | "license": "MIT", 1452 | "dependencies": { 1453 | "loose-envify": "^1.1.0", 1454 | "object-assign": "^4.1.1", 1455 | "scheduler": "^0.20.2" 1456 | }, 1457 | "peerDependencies": { 1458 | "react": "17.0.2" 1459 | } 1460 | }, 1461 | "node_modules/readdirp": { 1462 | "version": "3.6.0", 1463 | "dev": true, 1464 | "license": "MIT", 1465 | "dependencies": { 1466 | "picomatch": "^2.2.1" 1467 | }, 1468 | "engines": { 1469 | "node": ">=8.10.0" 1470 | } 1471 | }, 1472 | "node_modules/resolve": { 1473 | "version": "1.22.0", 1474 | "dev": true, 1475 | "license": "MIT", 1476 | "dependencies": { 1477 | "is-core-module": "^2.8.1", 1478 | "path-parse": "^1.0.7", 1479 | "supports-preserve-symlinks-flag": "^1.0.0" 1480 | }, 1481 | "bin": { 1482 | "resolve": "bin/resolve" 1483 | }, 1484 | "funding": { 1485 | "url": "https://github.com/sponsors/ljharb" 1486 | } 1487 | }, 1488 | "node_modules/resolve-from": { 1489 | "version": "4.0.0", 1490 | "dev": true, 1491 | "license": "MIT", 1492 | "engines": { 1493 | "node": ">=4" 1494 | } 1495 | }, 1496 | "node_modules/reusify": { 1497 | "version": "1.0.4", 1498 | "dev": true, 1499 | "license": "MIT", 1500 | "engines": { 1501 | "iojs": ">=1.0.0", 1502 | "node": ">=0.10.0" 1503 | } 1504 | }, 1505 | "node_modules/run-parallel": { 1506 | "version": "1.2.0", 1507 | "dev": true, 1508 | "funding": [ 1509 | { 1510 | "type": "github", 1511 | "url": "https://github.com/sponsors/feross" 1512 | }, 1513 | { 1514 | "type": "patreon", 1515 | "url": "https://www.patreon.com/feross" 1516 | }, 1517 | { 1518 | "type": "consulting", 1519 | "url": "https://feross.org/support" 1520 | } 1521 | ], 1522 | "license": "MIT", 1523 | "dependencies": { 1524 | "queue-microtask": "^1.2.2" 1525 | } 1526 | }, 1527 | "node_modules/scheduler": { 1528 | "version": "0.20.2", 1529 | "license": "MIT", 1530 | "dependencies": { 1531 | "loose-envify": "^1.1.0", 1532 | "object-assign": "^4.1.1" 1533 | } 1534 | }, 1535 | "node_modules/source-map-js": { 1536 | "version": "1.0.2", 1537 | "license": "BSD-3-Clause", 1538 | "engines": { 1539 | "node": ">=0.10.0" 1540 | } 1541 | }, 1542 | "node_modules/styled-jsx": { 1543 | "version": "5.0.1", 1544 | "license": "MIT", 1545 | "engines": { 1546 | "node": ">= 12.0.0" 1547 | }, 1548 | "peerDependencies": { 1549 | "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" 1550 | }, 1551 | "peerDependenciesMeta": { 1552 | "@babel/core": { 1553 | "optional": true 1554 | }, 1555 | "babel-plugin-macros": { 1556 | "optional": true 1557 | } 1558 | } 1559 | }, 1560 | "node_modules/supports-color": { 1561 | "version": "7.2.0", 1562 | "dev": true, 1563 | "license": "MIT", 1564 | "dependencies": { 1565 | "has-flag": "^4.0.0" 1566 | }, 1567 | "engines": { 1568 | "node": ">=8" 1569 | } 1570 | }, 1571 | "node_modules/supports-preserve-symlinks-flag": { 1572 | "version": "1.0.0", 1573 | "dev": true, 1574 | "license": "MIT", 1575 | "engines": { 1576 | "node": ">= 0.4" 1577 | }, 1578 | "funding": { 1579 | "url": "https://github.com/sponsors/ljharb" 1580 | } 1581 | }, 1582 | "node_modules/tailwindcss": { 1583 | "version": "3.0.23", 1584 | "dev": true, 1585 | "license": "MIT", 1586 | "dependencies": { 1587 | "arg": "^5.0.1", 1588 | "chalk": "^4.1.2", 1589 | "chokidar": "^3.5.3", 1590 | "color-name": "^1.1.4", 1591 | "cosmiconfig": "^7.0.1", 1592 | "detective": "^5.2.0", 1593 | "didyoumean": "^1.2.2", 1594 | "dlv": "^1.1.3", 1595 | "fast-glob": "^3.2.11", 1596 | "glob-parent": "^6.0.2", 1597 | "is-glob": "^4.0.3", 1598 | "normalize-path": "^3.0.0", 1599 | "object-hash": "^2.2.0", 1600 | "postcss": "^8.4.6", 1601 | "postcss-js": "^4.0.0", 1602 | "postcss-load-config": "^3.1.0", 1603 | "postcss-nested": "5.0.6", 1604 | "postcss-selector-parser": "^6.0.9", 1605 | "postcss-value-parser": "^4.2.0", 1606 | "quick-lru": "^5.1.1", 1607 | "resolve": "^1.22.0" 1608 | }, 1609 | "bin": { 1610 | "tailwind": "lib/cli.js", 1611 | "tailwindcss": "lib/cli.js" 1612 | }, 1613 | "engines": { 1614 | "node": ">=12.13.0" 1615 | }, 1616 | "peerDependencies": { 1617 | "autoprefixer": "^10.0.2", 1618 | "postcss": "^8.0.9" 1619 | } 1620 | }, 1621 | "node_modules/tailwindcss/node_modules/glob-parent": { 1622 | "version": "6.0.2", 1623 | "dev": true, 1624 | "license": "ISC", 1625 | "dependencies": { 1626 | "is-glob": "^4.0.3" 1627 | }, 1628 | "engines": { 1629 | "node": ">=10.13.0" 1630 | } 1631 | }, 1632 | "node_modules/to-regex-range": { 1633 | "version": "5.0.1", 1634 | "dev": true, 1635 | "license": "MIT", 1636 | "dependencies": { 1637 | "is-number": "^7.0.0" 1638 | }, 1639 | "engines": { 1640 | "node": ">=8.0" 1641 | } 1642 | }, 1643 | "node_modules/tr46": { 1644 | "version": "0.0.3", 1645 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1646 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 1647 | }, 1648 | "node_modules/type": { 1649 | "version": "1.2.0", 1650 | "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", 1651 | "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" 1652 | }, 1653 | "node_modules/typedarray-to-buffer": { 1654 | "version": "3.1.5", 1655 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", 1656 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 1657 | "dependencies": { 1658 | "is-typedarray": "^1.0.0" 1659 | } 1660 | }, 1661 | "node_modules/typescript": { 1662 | "version": "4.5.4", 1663 | "dev": true, 1664 | "license": "Apache-2.0", 1665 | "bin": { 1666 | "tsc": "bin/tsc", 1667 | "tsserver": "bin/tsserver" 1668 | }, 1669 | "engines": { 1670 | "node": ">=4.2.0" 1671 | } 1672 | }, 1673 | "node_modules/use-subscription": { 1674 | "version": "1.5.1", 1675 | "license": "MIT", 1676 | "dependencies": { 1677 | "object-assign": "^4.1.1" 1678 | }, 1679 | "peerDependencies": { 1680 | "react": "^16.8.0 || ^17.0.0" 1681 | } 1682 | }, 1683 | "node_modules/utf-8-validate": { 1684 | "version": "5.0.9", 1685 | "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", 1686 | "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", 1687 | "hasInstallScript": true, 1688 | "dependencies": { 1689 | "node-gyp-build": "^4.3.0" 1690 | }, 1691 | "engines": { 1692 | "node": ">=6.14.2" 1693 | } 1694 | }, 1695 | "node_modules/util-deprecate": { 1696 | "version": "1.0.2", 1697 | "dev": true, 1698 | "license": "MIT" 1699 | }, 1700 | "node_modules/webidl-conversions": { 1701 | "version": "3.0.1", 1702 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1703 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 1704 | }, 1705 | "node_modules/websocket": { 1706 | "version": "1.0.34", 1707 | "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", 1708 | "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", 1709 | "dependencies": { 1710 | "bufferutil": "^4.0.1", 1711 | "debug": "^2.2.0", 1712 | "es5-ext": "^0.10.50", 1713 | "typedarray-to-buffer": "^3.1.5", 1714 | "utf-8-validate": "^5.0.2", 1715 | "yaeti": "^0.0.6" 1716 | }, 1717 | "engines": { 1718 | "node": ">=4.0.0" 1719 | } 1720 | }, 1721 | "node_modules/whatwg-url": { 1722 | "version": "5.0.0", 1723 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1724 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 1725 | "dependencies": { 1726 | "tr46": "~0.0.3", 1727 | "webidl-conversions": "^3.0.0" 1728 | } 1729 | }, 1730 | "node_modules/xtend": { 1731 | "version": "4.0.2", 1732 | "dev": true, 1733 | "license": "MIT", 1734 | "engines": { 1735 | "node": ">=0.4" 1736 | } 1737 | }, 1738 | "node_modules/yaeti": { 1739 | "version": "0.0.6", 1740 | "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", 1741 | "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=", 1742 | "engines": { 1743 | "node": ">=0.10.32" 1744 | } 1745 | }, 1746 | "node_modules/yaml": { 1747 | "version": "1.10.2", 1748 | "dev": true, 1749 | "license": "ISC", 1750 | "engines": { 1751 | "node": ">= 6" 1752 | } 1753 | } 1754 | }, 1755 | "dependencies": { 1756 | "@babel/code-frame": { 1757 | "version": "7.16.7", 1758 | "dev": true, 1759 | "requires": { 1760 | "@babel/highlight": "^7.16.7" 1761 | } 1762 | }, 1763 | "@babel/helper-validator-identifier": { 1764 | "version": "7.16.7", 1765 | "dev": true 1766 | }, 1767 | "@babel/highlight": { 1768 | "version": "7.16.10", 1769 | "dev": true, 1770 | "requires": { 1771 | "@babel/helper-validator-identifier": "^7.16.7", 1772 | "chalk": "^2.0.0", 1773 | "js-tokens": "^4.0.0" 1774 | }, 1775 | "dependencies": { 1776 | "ansi-styles": { 1777 | "version": "3.2.1", 1778 | "dev": true, 1779 | "requires": { 1780 | "color-convert": "^1.9.0" 1781 | } 1782 | }, 1783 | "chalk": { 1784 | "version": "2.4.2", 1785 | "dev": true, 1786 | "requires": { 1787 | "ansi-styles": "^3.2.1", 1788 | "escape-string-regexp": "^1.0.5", 1789 | "supports-color": "^5.3.0" 1790 | } 1791 | }, 1792 | "color-convert": { 1793 | "version": "1.9.3", 1794 | "dev": true, 1795 | "requires": { 1796 | "color-name": "1.1.3" 1797 | } 1798 | }, 1799 | "color-name": { 1800 | "version": "1.1.3", 1801 | "dev": true 1802 | }, 1803 | "has-flag": { 1804 | "version": "3.0.0", 1805 | "dev": true 1806 | }, 1807 | "supports-color": { 1808 | "version": "5.5.0", 1809 | "dev": true, 1810 | "requires": { 1811 | "has-flag": "^3.0.0" 1812 | } 1813 | } 1814 | } 1815 | }, 1816 | "@next/env": { 1817 | "version": "12.1.1" 1818 | }, 1819 | "@next/swc-android-arm-eabi": { 1820 | "version": "12.1.1", 1821 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.1.tgz", 1822 | "integrity": "sha512-phV9H6d1eK1oVC7nmKKcCXvgOWT4K7aLC/beyO6yvbFC4XtBLE21vPwVl7B4ybz5xjSa6TXoR3TMR6vkW6Mv+A==", 1823 | "optional": true 1824 | }, 1825 | "@next/swc-android-arm64": { 1826 | "version": "12.1.1", 1827 | "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.1.1.tgz", 1828 | "integrity": "sha512-X5qEz0YeeYT0Gz2wXPAEtRKEuAsLUIEgC/DDfS98t/5Idjv0S4aqIX+TQdzoXP5bwQkIr+mSg+MBIdLtbtnCsA==", 1829 | "optional": true 1830 | }, 1831 | "@next/swc-darwin-arm64": { 1832 | "version": "12.1.1", 1833 | "optional": true 1834 | }, 1835 | "@next/swc-darwin-x64": { 1836 | "version": "12.1.1", 1837 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.1.tgz", 1838 | "integrity": "sha512-2VOsA6WLDuDBA6935djohWGGeUIKeQhXwDwu1CKx1b8+6YMMIvFr/y2dpPWoct+5/IjFz84a2MnbABwpoNB9YA==", 1839 | "optional": true 1840 | }, 1841 | "@next/swc-linux-arm-gnueabihf": { 1842 | "version": "12.1.1", 1843 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.1.tgz", 1844 | "integrity": "sha512-1urXtWwqjqbbpJBWeJYz5ATgelKacVNdKIdhfahbsmW+DZGoK5TYovgieyHFYUCyHdTuKeLTVR62ahIRUBv1YA==", 1845 | "optional": true 1846 | }, 1847 | "@next/swc-linux-arm64-gnu": { 1848 | "version": "12.1.1", 1849 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.1.tgz", 1850 | "integrity": "sha512-CDD9yFuknDvTOzzDnvfmb58USI5Vu6FUyzw96udKj7KA/n1YrNQ4K8X7KsDCRZoqfRWYceAyj1EpwHkfdiB7bg==", 1851 | "optional": true 1852 | }, 1853 | "@next/swc-linux-arm64-musl": { 1854 | "version": "12.1.1", 1855 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.1.tgz", 1856 | "integrity": "sha512-nxyjgmbOpZm7gGPj9EV5Cqosoujt+ih/8SO2XG+BetgfAk0+c15793DHVAljNuc8GF9wpzqQnjMMUZ211VmQsg==", 1857 | "optional": true 1858 | }, 1859 | "@next/swc-linux-x64-gnu": { 1860 | "version": "12.1.1", 1861 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.1.tgz", 1862 | "integrity": "sha512-L8Cu8kH3Vn2dnRpvcvGGA1TlmDP2WXJ+qDwvjb/ikDXLdRdmFvJwHh45JUGiW2FHed3lGseOgNsuYiDvnT8Cdw==", 1863 | "optional": true 1864 | }, 1865 | "@next/swc-linux-x64-musl": { 1866 | "version": "12.1.1", 1867 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.1.tgz", 1868 | "integrity": "sha512-4RAb7L69MoRSggBqUfF3OrtBCUN2zPDi7asfL7bfxEhH10LGzyfil8dT0GVjPOPFz/SyLx3ORd6avGij2IlJUA==", 1869 | "optional": true 1870 | }, 1871 | "@next/swc-win32-arm64-msvc": { 1872 | "version": "12.1.1", 1873 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.1.tgz", 1874 | "integrity": "sha512-zvkuNIgOxkAU3RbzWRGCcFasDxWJdhONt2YeRGe39dJERHhEFA1u4HgaZw/SFE/kfrNRUZbXjJNAg3OU/EpPZw==", 1875 | "optional": true 1876 | }, 1877 | "@next/swc-win32-ia32-msvc": { 1878 | "version": "12.1.1", 1879 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.1.tgz", 1880 | "integrity": "sha512-GsNDtZ//uKWNVjiwv3YKQYsDXuRWTz8jTmxopf5Ws3dK+zA77hn4o46LBQg0JPCNqTUO6eIOlUBjqSL6ejxmSQ==", 1881 | "optional": true 1882 | }, 1883 | "@next/swc-win32-x64-msvc": { 1884 | "version": "12.1.1", 1885 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.1.tgz", 1886 | "integrity": "sha512-nH5osn/uK9wsjT8Jh1YxMtRrkN5hoCNLQjsEdvfUfb+loQXeYiBd3n/0DUJkf6Scjfv6/htfUTPP3AEa7AbBxQ==", 1887 | "optional": true 1888 | }, 1889 | "@nodelib/fs.scandir": { 1890 | "version": "2.1.5", 1891 | "dev": true, 1892 | "requires": { 1893 | "@nodelib/fs.stat": "2.0.5", 1894 | "run-parallel": "^1.1.9" 1895 | } 1896 | }, 1897 | "@nodelib/fs.stat": { 1898 | "version": "2.0.5", 1899 | "dev": true 1900 | }, 1901 | "@nodelib/fs.walk": { 1902 | "version": "1.2.8", 1903 | "dev": true, 1904 | "requires": { 1905 | "@nodelib/fs.scandir": "2.1.5", 1906 | "fastq": "^1.6.0" 1907 | } 1908 | }, 1909 | "@supabase/functions-js": { 1910 | "version": "1.2.3", 1911 | "resolved": "https://registry.npmjs.org/@supabase/functions-js/-/functions-js-1.2.3.tgz", 1912 | "integrity": "sha512-OgeI84eK02pyYa7uA7gzZri6wyPEB2jOu1AEcZKJa328Jd6LlX9VPfPZZ86ahWzKEDmvBrUUXJAUihGuqWcFeQ==", 1913 | "requires": { 1914 | "cross-fetch": "^3.1.5" 1915 | } 1916 | }, 1917 | "@supabase/gotrue-js": { 1918 | "version": "1.22.8", 1919 | "resolved": "https://registry.npmjs.org/@supabase/gotrue-js/-/gotrue-js-1.22.8.tgz", 1920 | "integrity": "sha512-2mG5M3goHSPwwQzjbgw5lmUNeVexOaPIFcUmUU9p9mwsSzbZ5u2pKbZGVS/9aBaJoD8YvW8khMej9XaGEFQeiQ==", 1921 | "requires": { 1922 | "cross-fetch": "^3.0.6" 1923 | } 1924 | }, 1925 | "@supabase/postgrest-js": { 1926 | "version": "0.37.1", 1927 | "resolved": "https://registry.npmjs.org/@supabase/postgrest-js/-/postgrest-js-0.37.1.tgz", 1928 | "integrity": "sha512-Lm7eLuYzEr7ppGC84mlqpm8v9Vy8kyR6he6z3avrkccC8pwLOsxaK0bkKiV4LBwkJc7uARMTdlp+IskatHkz2g==", 1929 | "requires": { 1930 | "cross-fetch": "^3.0.6" 1931 | } 1932 | }, 1933 | "@supabase/realtime-js": { 1934 | "version": "1.4.0", 1935 | "resolved": "https://registry.npmjs.org/@supabase/realtime-js/-/realtime-js-1.4.0.tgz", 1936 | "integrity": "sha512-KHSyb2IengH92RaTmY7hhhJ43ZdDsJfVjFqvXVb0t1MQRgLfrVfcGxbWFPhU3sBvwzsvudRM4jLO0ZrzVezL2w==", 1937 | "requires": { 1938 | "@types/lodash.clonedeep": "^4.5.6", 1939 | "@types/phoenix": "^1.5.4", 1940 | "@types/websocket": "^1.0.3", 1941 | "lodash.clonedeep": "^4.5.0", 1942 | "websocket": "^1.0.34" 1943 | } 1944 | }, 1945 | "@supabase/storage-js": { 1946 | "version": "1.6.4", 1947 | "resolved": "https://registry.npmjs.org/@supabase/storage-js/-/storage-js-1.6.4.tgz", 1948 | "integrity": "sha512-vYcr1JGRf8Wr4v+lb8Ucl0bELwCZv8lT/PrYuhEKfJff6BI6/nTJp8rRZSRaDESQR8JlpaLaL+dmD/wsNqZnNQ==", 1949 | "requires": { 1950 | "cross-fetch": "^3.1.0" 1951 | } 1952 | }, 1953 | "@supabase/supabase-js": { 1954 | "version": "1.32.2", 1955 | "resolved": "https://registry.npmjs.org/@supabase/supabase-js/-/supabase-js-1.32.2.tgz", 1956 | "integrity": "sha512-cM9CHG2vLUJzzOj8Cers36BYTb5c1v7HeHbtOXkPUh76oTO7w2d+jtvqZBzR72Nz7ykYmCVw5YccHR2FuxoLHQ==", 1957 | "requires": { 1958 | "@supabase/functions-js": "^1.2.2", 1959 | "@supabase/gotrue-js": "^1.22.8", 1960 | "@supabase/postgrest-js": "^0.37.1", 1961 | "@supabase/realtime-js": "^1.4.0", 1962 | "@supabase/storage-js": "^1.6.4" 1963 | } 1964 | }, 1965 | "@tailwindcss/aspect-ratio": { 1966 | "version": "0.4.0", 1967 | "resolved": "https://registry.npmjs.org/@tailwindcss/aspect-ratio/-/aspect-ratio-0.4.0.tgz", 1968 | "integrity": "sha512-WJu0I4PpqNPuutpaA9zDUq2JXR+lorZ7PbLcKNLmb6GL9/HLfC7w3CRsMhJF4BbYd/lkY6CfXOvkYpuGnZfkpQ==", 1969 | "dev": true, 1970 | "requires": {} 1971 | }, 1972 | "@types/lodash": { 1973 | "version": "4.14.180", 1974 | "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.180.tgz", 1975 | "integrity": "sha512-XOKXa1KIxtNXgASAnwj7cnttJxS4fksBRywK/9LzRV5YxrF80BXZIGeQSuoESQ/VkUj30Ae0+YcuHc15wJCB2g==" 1976 | }, 1977 | "@types/lodash.clonedeep": { 1978 | "version": "4.5.6", 1979 | "resolved": "https://registry.npmjs.org/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.6.tgz", 1980 | "integrity": "sha512-cE1jYr2dEg1wBImvXlNtp0xDoS79rfEdGozQVgliDZj1uERH4k+rmEMTudP9b4VQ8O6nRb5gPqft0QzEQGMQgA==", 1981 | "requires": { 1982 | "@types/lodash": "*" 1983 | } 1984 | }, 1985 | "@types/node": { 1986 | "version": "17.0.4" 1987 | }, 1988 | "@types/parse-json": { 1989 | "version": "4.0.0", 1990 | "dev": true 1991 | }, 1992 | "@types/phoenix": { 1993 | "version": "1.5.4", 1994 | "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.5.4.tgz", 1995 | "integrity": "sha512-L5eZmzw89eXBKkiqVBcJfU1QGx9y+wurRIEgt0cuLH0hwNtVUxtx+6cu0R2STwWj468sjXyBYPYDtGclUd1kjQ==" 1996 | }, 1997 | "@types/prop-types": { 1998 | "version": "15.7.4", 1999 | "dev": true 2000 | }, 2001 | "@types/react": { 2002 | "version": "17.0.38", 2003 | "dev": true, 2004 | "requires": { 2005 | "@types/prop-types": "*", 2006 | "@types/scheduler": "*", 2007 | "csstype": "^3.0.2" 2008 | } 2009 | }, 2010 | "@types/scheduler": { 2011 | "version": "0.16.2", 2012 | "dev": true 2013 | }, 2014 | "@types/websocket": { 2015 | "version": "1.0.5", 2016 | "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.5.tgz", 2017 | "integrity": "sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==", 2018 | "requires": { 2019 | "@types/node": "*" 2020 | } 2021 | }, 2022 | "acorn": { 2023 | "version": "7.4.1", 2024 | "dev": true 2025 | }, 2026 | "acorn-node": { 2027 | "version": "1.8.2", 2028 | "dev": true, 2029 | "requires": { 2030 | "acorn": "^7.0.0", 2031 | "acorn-walk": "^7.0.0", 2032 | "xtend": "^4.0.2" 2033 | } 2034 | }, 2035 | "acorn-walk": { 2036 | "version": "7.2.0", 2037 | "dev": true 2038 | }, 2039 | "ansi-styles": { 2040 | "version": "4.3.0", 2041 | "dev": true, 2042 | "requires": { 2043 | "color-convert": "^2.0.1" 2044 | } 2045 | }, 2046 | "anymatch": { 2047 | "version": "3.1.2", 2048 | "dev": true, 2049 | "requires": { 2050 | "normalize-path": "^3.0.0", 2051 | "picomatch": "^2.0.4" 2052 | } 2053 | }, 2054 | "arg": { 2055 | "version": "5.0.1", 2056 | "dev": true 2057 | }, 2058 | "autoprefixer": { 2059 | "version": "10.4.4", 2060 | "dev": true, 2061 | "requires": { 2062 | "browserslist": "^4.20.2", 2063 | "caniuse-lite": "^1.0.30001317", 2064 | "fraction.js": "^4.2.0", 2065 | "normalize-range": "^0.1.2", 2066 | "picocolors": "^1.0.0", 2067 | "postcss-value-parser": "^4.2.0" 2068 | } 2069 | }, 2070 | "binary-extensions": { 2071 | "version": "2.2.0", 2072 | "dev": true 2073 | }, 2074 | "braces": { 2075 | "version": "3.0.2", 2076 | "dev": true, 2077 | "requires": { 2078 | "fill-range": "^7.0.1" 2079 | } 2080 | }, 2081 | "browserslist": { 2082 | "version": "4.20.2", 2083 | "dev": true, 2084 | "requires": { 2085 | "caniuse-lite": "^1.0.30001317", 2086 | "electron-to-chromium": "^1.4.84", 2087 | "escalade": "^3.1.1", 2088 | "node-releases": "^2.0.2", 2089 | "picocolors": "^1.0.0" 2090 | } 2091 | }, 2092 | "bufferutil": { 2093 | "version": "4.0.6", 2094 | "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.6.tgz", 2095 | "integrity": "sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw==", 2096 | "requires": { 2097 | "node-gyp-build": "^4.3.0" 2098 | } 2099 | }, 2100 | "callsites": { 2101 | "version": "3.1.0", 2102 | "dev": true 2103 | }, 2104 | "camelcase-css": { 2105 | "version": "2.0.1", 2106 | "dev": true 2107 | }, 2108 | "caniuse-lite": { 2109 | "version": "1.0.30001320" 2110 | }, 2111 | "chalk": { 2112 | "version": "4.1.2", 2113 | "dev": true, 2114 | "requires": { 2115 | "ansi-styles": "^4.1.0", 2116 | "supports-color": "^7.1.0" 2117 | } 2118 | }, 2119 | "chokidar": { 2120 | "version": "3.5.3", 2121 | "dev": true, 2122 | "requires": { 2123 | "anymatch": "~3.1.2", 2124 | "braces": "~3.0.2", 2125 | "fsevents": "~2.3.2", 2126 | "glob-parent": "~5.1.2", 2127 | "is-binary-path": "~2.1.0", 2128 | "is-glob": "~4.0.1", 2129 | "normalize-path": "~3.0.0", 2130 | "readdirp": "~3.6.0" 2131 | } 2132 | }, 2133 | "color-convert": { 2134 | "version": "2.0.1", 2135 | "dev": true, 2136 | "requires": { 2137 | "color-name": "~1.1.4" 2138 | } 2139 | }, 2140 | "color-name": { 2141 | "version": "1.1.4", 2142 | "dev": true 2143 | }, 2144 | "cosmiconfig": { 2145 | "version": "7.0.1", 2146 | "dev": true, 2147 | "requires": { 2148 | "@types/parse-json": "^4.0.0", 2149 | "import-fresh": "^3.2.1", 2150 | "parse-json": "^5.0.0", 2151 | "path-type": "^4.0.0", 2152 | "yaml": "^1.10.0" 2153 | } 2154 | }, 2155 | "cross-fetch": { 2156 | "version": "3.1.5", 2157 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", 2158 | "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", 2159 | "requires": { 2160 | "node-fetch": "2.6.7" 2161 | } 2162 | }, 2163 | "cssesc": { 2164 | "version": "3.0.0", 2165 | "dev": true 2166 | }, 2167 | "csstype": { 2168 | "version": "3.0.11", 2169 | "dev": true 2170 | }, 2171 | "d": { 2172 | "version": "1.0.1", 2173 | "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", 2174 | "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", 2175 | "requires": { 2176 | "es5-ext": "^0.10.50", 2177 | "type": "^1.0.1" 2178 | } 2179 | }, 2180 | "debug": { 2181 | "version": "2.6.9", 2182 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 2183 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 2184 | "requires": { 2185 | "ms": "2.0.0" 2186 | } 2187 | }, 2188 | "defined": { 2189 | "version": "1.0.0", 2190 | "dev": true 2191 | }, 2192 | "detective": { 2193 | "version": "5.2.0", 2194 | "dev": true, 2195 | "requires": { 2196 | "acorn-node": "^1.6.1", 2197 | "defined": "^1.0.0", 2198 | "minimist": "^1.1.1" 2199 | } 2200 | }, 2201 | "didyoumean": { 2202 | "version": "1.2.2", 2203 | "dev": true 2204 | }, 2205 | "dlv": { 2206 | "version": "1.1.3", 2207 | "dev": true 2208 | }, 2209 | "electron-to-chromium": { 2210 | "version": "1.4.96", 2211 | "dev": true 2212 | }, 2213 | "error-ex": { 2214 | "version": "1.3.2", 2215 | "dev": true, 2216 | "requires": { 2217 | "is-arrayish": "^0.2.1" 2218 | } 2219 | }, 2220 | "es5-ext": { 2221 | "version": "0.10.59", 2222 | "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.59.tgz", 2223 | "integrity": "sha512-cOgyhW0tIJyQY1Kfw6Kr0viu9ZlUctVchRMZ7R0HiH3dxTSp5zJDLecwxUqPUrGKMsgBI1wd1FL+d9Jxfi4cLw==", 2224 | "requires": { 2225 | "es6-iterator": "^2.0.3", 2226 | "es6-symbol": "^3.1.3", 2227 | "next-tick": "^1.1.0" 2228 | } 2229 | }, 2230 | "es6-iterator": { 2231 | "version": "2.0.3", 2232 | "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", 2233 | "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", 2234 | "requires": { 2235 | "d": "1", 2236 | "es5-ext": "^0.10.35", 2237 | "es6-symbol": "^3.1.1" 2238 | } 2239 | }, 2240 | "es6-symbol": { 2241 | "version": "3.1.3", 2242 | "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", 2243 | "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", 2244 | "requires": { 2245 | "d": "^1.0.1", 2246 | "ext": "^1.1.2" 2247 | } 2248 | }, 2249 | "escalade": { 2250 | "version": "3.1.1", 2251 | "dev": true 2252 | }, 2253 | "escape-string-regexp": { 2254 | "version": "1.0.5", 2255 | "dev": true 2256 | }, 2257 | "ext": { 2258 | "version": "1.6.0", 2259 | "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", 2260 | "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", 2261 | "requires": { 2262 | "type": "^2.5.0" 2263 | }, 2264 | "dependencies": { 2265 | "type": { 2266 | "version": "2.6.0", 2267 | "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", 2268 | "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==" 2269 | } 2270 | } 2271 | }, 2272 | "fast-glob": { 2273 | "version": "3.2.11", 2274 | "dev": true, 2275 | "requires": { 2276 | "@nodelib/fs.stat": "^2.0.2", 2277 | "@nodelib/fs.walk": "^1.2.3", 2278 | "glob-parent": "^5.1.2", 2279 | "merge2": "^1.3.0", 2280 | "micromatch": "^4.0.4" 2281 | } 2282 | }, 2283 | "fastq": { 2284 | "version": "1.13.0", 2285 | "dev": true, 2286 | "requires": { 2287 | "reusify": "^1.0.4" 2288 | } 2289 | }, 2290 | "fill-range": { 2291 | "version": "7.0.1", 2292 | "dev": true, 2293 | "requires": { 2294 | "to-regex-range": "^5.0.1" 2295 | } 2296 | }, 2297 | "fraction.js": { 2298 | "version": "4.2.0", 2299 | "dev": true 2300 | }, 2301 | "fsevents": { 2302 | "version": "2.3.2", 2303 | "dev": true, 2304 | "optional": true 2305 | }, 2306 | "function-bind": { 2307 | "version": "1.1.1", 2308 | "dev": true 2309 | }, 2310 | "glob-parent": { 2311 | "version": "5.1.2", 2312 | "dev": true, 2313 | "requires": { 2314 | "is-glob": "^4.0.1" 2315 | } 2316 | }, 2317 | "has": { 2318 | "version": "1.0.3", 2319 | "dev": true, 2320 | "requires": { 2321 | "function-bind": "^1.1.1" 2322 | } 2323 | }, 2324 | "has-flag": { 2325 | "version": "4.0.0", 2326 | "dev": true 2327 | }, 2328 | "import-fresh": { 2329 | "version": "3.3.0", 2330 | "dev": true, 2331 | "requires": { 2332 | "parent-module": "^1.0.0", 2333 | "resolve-from": "^4.0.0" 2334 | } 2335 | }, 2336 | "is-arrayish": { 2337 | "version": "0.2.1", 2338 | "dev": true 2339 | }, 2340 | "is-binary-path": { 2341 | "version": "2.1.0", 2342 | "dev": true, 2343 | "requires": { 2344 | "binary-extensions": "^2.0.0" 2345 | } 2346 | }, 2347 | "is-core-module": { 2348 | "version": "2.8.1", 2349 | "dev": true, 2350 | "requires": { 2351 | "has": "^1.0.3" 2352 | } 2353 | }, 2354 | "is-extglob": { 2355 | "version": "2.1.1", 2356 | "dev": true 2357 | }, 2358 | "is-glob": { 2359 | "version": "4.0.3", 2360 | "dev": true, 2361 | "requires": { 2362 | "is-extglob": "^2.1.1" 2363 | } 2364 | }, 2365 | "is-number": { 2366 | "version": "7.0.0", 2367 | "dev": true 2368 | }, 2369 | "is-typedarray": { 2370 | "version": "1.0.0", 2371 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", 2372 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" 2373 | }, 2374 | "js-tokens": { 2375 | "version": "4.0.0" 2376 | }, 2377 | "json-parse-even-better-errors": { 2378 | "version": "2.3.1", 2379 | "dev": true 2380 | }, 2381 | "lilconfig": { 2382 | "version": "2.0.5", 2383 | "dev": true 2384 | }, 2385 | "lines-and-columns": { 2386 | "version": "1.2.4", 2387 | "dev": true 2388 | }, 2389 | "lodash.clonedeep": { 2390 | "version": "4.5.0", 2391 | "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", 2392 | "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" 2393 | }, 2394 | "loose-envify": { 2395 | "version": "1.4.0", 2396 | "requires": { 2397 | "js-tokens": "^3.0.0 || ^4.0.0" 2398 | } 2399 | }, 2400 | "merge2": { 2401 | "version": "1.4.1", 2402 | "dev": true 2403 | }, 2404 | "micromatch": { 2405 | "version": "4.0.5", 2406 | "dev": true, 2407 | "requires": { 2408 | "braces": "^3.0.2", 2409 | "picomatch": "^2.3.1" 2410 | } 2411 | }, 2412 | "minimist": { 2413 | "version": "1.2.6", 2414 | "dev": true 2415 | }, 2416 | "ms": { 2417 | "version": "2.0.0", 2418 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 2419 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 2420 | }, 2421 | "nanoid": { 2422 | "version": "3.3.1" 2423 | }, 2424 | "next": { 2425 | "version": "12.1.1", 2426 | "resolved": "https://registry.npmjs.org/next/-/next-12.1.1.tgz", 2427 | "integrity": "sha512-IOfEIAgroMtsoYz6HXpDS+b5WB9WZ+MH266COXGlcpIiYSgUyJf9xV6vF+zY2RPvBJFT4fUW0EVdVnoOmTloDw==", 2428 | "requires": { 2429 | "@next/env": "12.1.1", 2430 | "@next/swc-android-arm-eabi": "12.1.1", 2431 | "@next/swc-android-arm64": "12.1.1", 2432 | "@next/swc-darwin-arm64": "12.1.1", 2433 | "@next/swc-darwin-x64": "12.1.1", 2434 | "@next/swc-linux-arm-gnueabihf": "12.1.1", 2435 | "@next/swc-linux-arm64-gnu": "12.1.1", 2436 | "@next/swc-linux-arm64-musl": "12.1.1", 2437 | "@next/swc-linux-x64-gnu": "12.1.1", 2438 | "@next/swc-linux-x64-musl": "12.1.1", 2439 | "@next/swc-win32-arm64-msvc": "12.1.1", 2440 | "@next/swc-win32-ia32-msvc": "12.1.1", 2441 | "@next/swc-win32-x64-msvc": "12.1.1", 2442 | "caniuse-lite": "^1.0.30001283", 2443 | "postcss": "8.4.5", 2444 | "styled-jsx": "5.0.1", 2445 | "use-subscription": "1.5.1" 2446 | }, 2447 | "dependencies": { 2448 | "postcss": { 2449 | "version": "8.4.5", 2450 | "requires": { 2451 | "nanoid": "^3.1.30", 2452 | "picocolors": "^1.0.0", 2453 | "source-map-js": "^1.0.1" 2454 | } 2455 | } 2456 | } 2457 | }, 2458 | "next-tick": { 2459 | "version": "1.1.0", 2460 | "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", 2461 | "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" 2462 | }, 2463 | "node-fetch": { 2464 | "version": "2.6.7", 2465 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 2466 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 2467 | "requires": { 2468 | "whatwg-url": "^5.0.0" 2469 | } 2470 | }, 2471 | "node-gyp-build": { 2472 | "version": "4.3.0", 2473 | "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", 2474 | "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==" 2475 | }, 2476 | "node-releases": { 2477 | "version": "2.0.2", 2478 | "dev": true 2479 | }, 2480 | "normalize-path": { 2481 | "version": "3.0.0", 2482 | "dev": true 2483 | }, 2484 | "normalize-range": { 2485 | "version": "0.1.2", 2486 | "dev": true 2487 | }, 2488 | "object-assign": { 2489 | "version": "4.1.1" 2490 | }, 2491 | "object-hash": { 2492 | "version": "2.2.0", 2493 | "dev": true 2494 | }, 2495 | "parent-module": { 2496 | "version": "1.0.1", 2497 | "dev": true, 2498 | "requires": { 2499 | "callsites": "^3.0.0" 2500 | } 2501 | }, 2502 | "parse-json": { 2503 | "version": "5.2.0", 2504 | "dev": true, 2505 | "requires": { 2506 | "@babel/code-frame": "^7.0.0", 2507 | "error-ex": "^1.3.1", 2508 | "json-parse-even-better-errors": "^2.3.0", 2509 | "lines-and-columns": "^1.1.6" 2510 | } 2511 | }, 2512 | "path-parse": { 2513 | "version": "1.0.7", 2514 | "dev": true 2515 | }, 2516 | "path-type": { 2517 | "version": "4.0.0", 2518 | "dev": true 2519 | }, 2520 | "picocolors": { 2521 | "version": "1.0.0" 2522 | }, 2523 | "picomatch": { 2524 | "version": "2.3.1", 2525 | "dev": true 2526 | }, 2527 | "postcss": { 2528 | "version": "8.4.12", 2529 | "dev": true, 2530 | "requires": { 2531 | "nanoid": "^3.3.1", 2532 | "picocolors": "^1.0.0", 2533 | "source-map-js": "^1.0.2" 2534 | } 2535 | }, 2536 | "postcss-js": { 2537 | "version": "4.0.0", 2538 | "dev": true, 2539 | "requires": { 2540 | "camelcase-css": "^2.0.1" 2541 | } 2542 | }, 2543 | "postcss-load-config": { 2544 | "version": "3.1.3", 2545 | "dev": true, 2546 | "requires": { 2547 | "lilconfig": "^2.0.4", 2548 | "yaml": "^1.10.2" 2549 | } 2550 | }, 2551 | "postcss-nested": { 2552 | "version": "5.0.6", 2553 | "dev": true, 2554 | "requires": { 2555 | "postcss-selector-parser": "^6.0.6" 2556 | } 2557 | }, 2558 | "postcss-selector-parser": { 2559 | "version": "6.0.9", 2560 | "dev": true, 2561 | "requires": { 2562 | "cssesc": "^3.0.0", 2563 | "util-deprecate": "^1.0.2" 2564 | } 2565 | }, 2566 | "postcss-value-parser": { 2567 | "version": "4.2.0", 2568 | "dev": true 2569 | }, 2570 | "prettier": { 2571 | "version": "2.6.1", 2572 | "dev": true 2573 | }, 2574 | "prettier-plugin-tailwindcss": { 2575 | "version": "0.1.8", 2576 | "dev": true, 2577 | "requires": {} 2578 | }, 2579 | "queue-microtask": { 2580 | "version": "1.2.3", 2581 | "dev": true 2582 | }, 2583 | "quick-lru": { 2584 | "version": "5.1.1", 2585 | "dev": true 2586 | }, 2587 | "react": { 2588 | "version": "17.0.2", 2589 | "requires": { 2590 | "loose-envify": "^1.1.0", 2591 | "object-assign": "^4.1.1" 2592 | } 2593 | }, 2594 | "react-dom": { 2595 | "version": "17.0.2", 2596 | "requires": { 2597 | "loose-envify": "^1.1.0", 2598 | "object-assign": "^4.1.1", 2599 | "scheduler": "^0.20.2" 2600 | } 2601 | }, 2602 | "readdirp": { 2603 | "version": "3.6.0", 2604 | "dev": true, 2605 | "requires": { 2606 | "picomatch": "^2.2.1" 2607 | } 2608 | }, 2609 | "resolve": { 2610 | "version": "1.22.0", 2611 | "dev": true, 2612 | "requires": { 2613 | "is-core-module": "^2.8.1", 2614 | "path-parse": "^1.0.7", 2615 | "supports-preserve-symlinks-flag": "^1.0.0" 2616 | } 2617 | }, 2618 | "resolve-from": { 2619 | "version": "4.0.0", 2620 | "dev": true 2621 | }, 2622 | "reusify": { 2623 | "version": "1.0.4", 2624 | "dev": true 2625 | }, 2626 | "run-parallel": { 2627 | "version": "1.2.0", 2628 | "dev": true, 2629 | "requires": { 2630 | "queue-microtask": "^1.2.2" 2631 | } 2632 | }, 2633 | "scheduler": { 2634 | "version": "0.20.2", 2635 | "requires": { 2636 | "loose-envify": "^1.1.0", 2637 | "object-assign": "^4.1.1" 2638 | } 2639 | }, 2640 | "source-map-js": { 2641 | "version": "1.0.2" 2642 | }, 2643 | "styled-jsx": { 2644 | "version": "5.0.1", 2645 | "requires": {} 2646 | }, 2647 | "supports-color": { 2648 | "version": "7.2.0", 2649 | "dev": true, 2650 | "requires": { 2651 | "has-flag": "^4.0.0" 2652 | } 2653 | }, 2654 | "supports-preserve-symlinks-flag": { 2655 | "version": "1.0.0", 2656 | "dev": true 2657 | }, 2658 | "tailwindcss": { 2659 | "version": "3.0.23", 2660 | "dev": true, 2661 | "requires": { 2662 | "arg": "^5.0.1", 2663 | "chalk": "^4.1.2", 2664 | "chokidar": "^3.5.3", 2665 | "color-name": "^1.1.4", 2666 | "cosmiconfig": "^7.0.1", 2667 | "detective": "^5.2.0", 2668 | "didyoumean": "^1.2.2", 2669 | "dlv": "^1.1.3", 2670 | "fast-glob": "^3.2.11", 2671 | "glob-parent": "^6.0.2", 2672 | "is-glob": "^4.0.3", 2673 | "normalize-path": "^3.0.0", 2674 | "object-hash": "^2.2.0", 2675 | "postcss": "^8.4.6", 2676 | "postcss-js": "^4.0.0", 2677 | "postcss-load-config": "^3.1.0", 2678 | "postcss-nested": "5.0.6", 2679 | "postcss-selector-parser": "^6.0.9", 2680 | "postcss-value-parser": "^4.2.0", 2681 | "quick-lru": "^5.1.1", 2682 | "resolve": "^1.22.0" 2683 | }, 2684 | "dependencies": { 2685 | "glob-parent": { 2686 | "version": "6.0.2", 2687 | "dev": true, 2688 | "requires": { 2689 | "is-glob": "^4.0.3" 2690 | } 2691 | } 2692 | } 2693 | }, 2694 | "to-regex-range": { 2695 | "version": "5.0.1", 2696 | "dev": true, 2697 | "requires": { 2698 | "is-number": "^7.0.0" 2699 | } 2700 | }, 2701 | "tr46": { 2702 | "version": "0.0.3", 2703 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 2704 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" 2705 | }, 2706 | "type": { 2707 | "version": "1.2.0", 2708 | "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", 2709 | "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" 2710 | }, 2711 | "typedarray-to-buffer": { 2712 | "version": "3.1.5", 2713 | "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", 2714 | "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", 2715 | "requires": { 2716 | "is-typedarray": "^1.0.0" 2717 | } 2718 | }, 2719 | "typescript": { 2720 | "version": "4.5.4", 2721 | "dev": true 2722 | }, 2723 | "use-subscription": { 2724 | "version": "1.5.1", 2725 | "requires": { 2726 | "object-assign": "^4.1.1" 2727 | } 2728 | }, 2729 | "utf-8-validate": { 2730 | "version": "5.0.9", 2731 | "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.9.tgz", 2732 | "integrity": "sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==", 2733 | "requires": { 2734 | "node-gyp-build": "^4.3.0" 2735 | } 2736 | }, 2737 | "util-deprecate": { 2738 | "version": "1.0.2", 2739 | "dev": true 2740 | }, 2741 | "webidl-conversions": { 2742 | "version": "3.0.1", 2743 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 2744 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" 2745 | }, 2746 | "websocket": { 2747 | "version": "1.0.34", 2748 | "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", 2749 | "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", 2750 | "requires": { 2751 | "bufferutil": "^4.0.1", 2752 | "debug": "^2.2.0", 2753 | "es5-ext": "^0.10.50", 2754 | "typedarray-to-buffer": "^3.1.5", 2755 | "utf-8-validate": "^5.0.2", 2756 | "yaeti": "^0.0.6" 2757 | } 2758 | }, 2759 | "whatwg-url": { 2760 | "version": "5.0.0", 2761 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 2762 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", 2763 | "requires": { 2764 | "tr46": "~0.0.3", 2765 | "webidl-conversions": "^3.0.0" 2766 | } 2767 | }, 2768 | "xtend": { 2769 | "version": "4.0.2", 2770 | "dev": true 2771 | }, 2772 | "yaeti": { 2773 | "version": "0.0.6", 2774 | "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", 2775 | "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" 2776 | }, 2777 | "yaml": { 2778 | "version": "1.10.2", 2779 | "dev": true 2780 | } 2781 | } 2782 | } 2783 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "scripts": { 4 | "dev": "next dev", 5 | "build": "next build", 6 | "start": "next start" 7 | }, 8 | "dependencies": { 9 | "@supabase/supabase-js": "^1.32.2", 10 | "next": "^12.1.1", 11 | "react": "^17.0.2", 12 | "react-dom": "^17.0.2" 13 | }, 14 | "devDependencies": { 15 | "@tailwindcss/aspect-ratio": "^0.4.0", 16 | "@types/node": "17.0.4", 17 | "@types/react": "17.0.38", 18 | "autoprefixer": "^10.4.0", 19 | "postcss": "^8.4.5", 20 | "prettier": "^2.5.1", 21 | "prettier-plugin-tailwindcss": "^0.1.1", 22 | "tailwindcss": "^3.0.7", 23 | "typescript": "4.5.4" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /pages/_app.tsx: -------------------------------------------------------------------------------- 1 | import '../styles/globals.css' 2 | import type { AppProps } from 'next/app' 3 | 4 | function MyApp({ Component, pageProps }: AppProps) { 5 | return 6 | } 7 | 8 | export default MyApp 9 | -------------------------------------------------------------------------------- /pages/api/revalidate.ts: -------------------------------------------------------------------------------- 1 | import type { NextApiRequest, NextApiResponse } from 'next' 2 | 3 | export default async function handler( 4 | req: NextApiRequest, 5 | res: NextApiResponse 6 | ) { 7 | // Check for secret to confirm this is a valid request 8 | if (req.query.secret !== process.env.REVALIDATE_SECRET) { 9 | return res.status(401).json({ message: 'Invalid token' }) 10 | } 11 | 12 | try { 13 | // Regenerate our index route showing the images 14 | await res.unstable_revalidate('/') 15 | return res.json({ revalidated: true }) 16 | } catch (err) { 17 | // If there was an error, Next.js will continue 18 | // to show the last successfully generated page 19 | return res.status(500).send('Error revalidating') 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /pages/index.tsx: -------------------------------------------------------------------------------- 1 | import Image from 'next/image' 2 | import { useState } from 'react' 3 | import { createClient } from '@supabase/supabase-js' 4 | 5 | export async function getStaticProps() { 6 | const supabaseAdmin = createClient( 7 | process.env.NEXT_PUBLIC_SUPABASE_URL || '', 8 | process.env.SUPABASE_SERVICE_ROLE_KEY || '' 9 | ) 10 | 11 | const { data } = await supabaseAdmin.from('images').select('*').order('id') 12 | return { 13 | props: { 14 | images: data, 15 | }, 16 | } 17 | } 18 | 19 | function cn(...classes: string[]) { 20 | return classes.filter(Boolean).join(' ') 21 | } 22 | 23 | type Image = { 24 | id: number 25 | href: string 26 | imageSrc: string 27 | name: string 28 | username: string 29 | } 30 | 31 | export default function Gallery({ images }: { images: Image[] }) { 32 | return ( 33 |
34 |
35 | {images.map((image) => ( 36 | 37 | ))} 38 |
39 |
40 | ) 41 | } 42 | 43 | function BlurImage({ image }: { image: Image }) { 44 | const [isLoading, setLoading] = useState(true) 45 | 46 | return ( 47 | 48 |
49 | setLoading(false)} 61 | /> 62 |
63 |

{image.name}

64 |

{image.username}

65 |
66 | ) 67 | } 68 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | singleQuote: true, 3 | semi: false, 4 | } 5 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leerob/image-gallery-supabase-tailwind-nextjs/0a6925a88dee447863793cb5e7be10e57fc4d845/public/favicon.ico -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /styles/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: [ 3 | './pages/**/*.{js,ts,jsx,tsx}', 4 | './components/**/*.{js,ts,jsx,tsx}', 5 | ], 6 | theme: { 7 | extend: {}, 8 | }, 9 | plugins: [require('@tailwindcss/aspect-ratio')], 10 | } 11 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "skipLibCheck": true, 7 | "strict": true, 8 | "forceConsistentCasingInFileNames": true, 9 | "noEmit": true, 10 | "esModuleInterop": true, 11 | "module": "esnext", 12 | "moduleResolution": "node", 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "jsx": "preserve", 16 | "incremental": true 17 | }, 18 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], 19 | "exclude": ["node_modules"] 20 | } 21 | --------------------------------------------------------------------------------