i should commit
This commit is contained in:
		
							parent
							
								
									9365e7610c
								
							
						
					
					
						commit
						9ba3b7c861
					
				
					 28 changed files with 1719 additions and 1239 deletions
				
			
		
							
								
								
									
										729
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										729
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							| 
						 | 
				
			
			@ -1,729 +0,0 @@
 | 
			
		|||
{
 | 
			
		||||
  "name": "twilight",
 | 
			
		||||
  "version": "0.1.0",
 | 
			
		||||
  "lockfileVersion": 2,
 | 
			
		||||
  "requires": true,
 | 
			
		||||
  "packages": {
 | 
			
		||||
    "": {
 | 
			
		||||
      "name": "twilight",
 | 
			
		||||
      "version": "0.1.0",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@next/font": "13.1.6",
 | 
			
		||||
        "@types/node": "18.13.0",
 | 
			
		||||
        "@types/react": "18.0.28",
 | 
			
		||||
        "@types/react-dom": "18.0.10",
 | 
			
		||||
        "next": "13.1.6",
 | 
			
		||||
        "react": "18.2.0",
 | 
			
		||||
        "react-dom": "18.2.0",
 | 
			
		||||
        "typescript": "4.9.5"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/env": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/env/-/env-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-s+W9Fdqh5MFk6ECrbnVmmAOwxKQuhGMT7xXHrkYIBMBcTiOqNWhv5KbJIboKR5STXxNXl32hllnvKaffzFaWQg=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/font": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/font/-/font-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-AITjmeb1RgX1HKMCiA39ztx2mxeAyxl4ljv2UoSBUGAbFFMg8MO7YAvjHCgFhD39hL7YTbFjol04e/BPBH5RzQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-android-arm-eabi": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-F3/6Z8LH/pGlPzR1AcjPFxx35mPqjE5xZcf+IL+KgbW9tMkp7CYi1y7qKrEWU7W4AumxX/8OINnDQWLiwLasLQ==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm"
 | 
			
		||||
      ],
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "android"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-android-arm64": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-cMwQjnB8vrYkWyK/H0Rf2c2pKIH4RGjpKUDvbjVAit6SbwPDpmaijLio0LWFV3/tOnY6kvzbL62lndVA0mkYpw==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm64"
 | 
			
		||||
      ],
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "android"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-darwin-arm64": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-KKRQH4DDE4kONXCvFMNBZGDb499Hs+xcFAwvj+rfSUssIDrZOlyfJNy55rH5t2Qxed1e4K80KEJgsxKQN1/fyw==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm64"
 | 
			
		||||
      ],
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "darwin"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-darwin-x64": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-/uOky5PaZDoaU99ohjtNcDTJ6ks/gZ5ykTQDvNZDjIoCxFe3+t06bxsTPY6tAO6uEAw5f6vVFX5H5KLwhrkZCA==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "x64"
 | 
			
		||||
      ],
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "darwin"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-freebsd-x64": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-qaEALZeV7to6weSXk3Br80wtFQ7cFTpos/q+m9XVRFggu+8Ib895XhMWdJBzew6aaOcMvYR6KQ6JmHA2/eMzWw==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "x64"
 | 
			
		||||
      ],
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "freebsd"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-linux-arm-gnueabihf": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-OybkbC58A1wJ+JrJSOjGDvZzrVEQA4sprJejGqMwiZyLqhr9Eo8FXF0y6HL+m1CPCpPhXEHz/2xKoYsl16kNqw==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm"
 | 
			
		||||
      ],
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "linux"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-linux-arm64-gnu": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-yCH+yDr7/4FDuWv6+GiYrPI9kcTAO3y48UmaIbrKy8ZJpi7RehJe3vIBRUmLrLaNDH3rY1rwoHi471NvR5J5NQ==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm64"
 | 
			
		||||
      ],
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "linux"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-linux-arm64-musl": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-ECagB8LGX25P9Mrmlc7Q/TQBb9rGScxHbv/kLqqIWs2fIXy6Y/EiBBiM72NTwuXUFCNrWR4sjUPSooVBJJ3ESQ==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm64"
 | 
			
		||||
      ],
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "linux"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-linux-x64-gnu": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-GT5w2mruk90V/I5g6ScuueE7fqj/d8Bui2qxdw6lFxmuTgMeol5rnzAv4uAoVQgClOUO/MULilzlODg9Ib3Y4Q==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "x64"
 | 
			
		||||
      ],
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "linux"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-linux-x64-musl": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-keFD6KvwOPzmat4TCnlnuxJCQepPN+8j3Nw876FtULxo8005Y9Ghcl7ACcR8GoiKoddAq8gxNBrpjoxjQRHeAQ==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "x64"
 | 
			
		||||
      ],
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "linux"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-win32-arm64-msvc": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-OwertslIiGQluFvHyRDzBCIB07qJjqabAmINlXUYt7/sY7Q7QPE8xVi5beBxX/rxTGPIbtyIe3faBE6Z2KywhQ==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "arm64"
 | 
			
		||||
      ],
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "win32"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-win32-ia32-msvc": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-g8zowiuP8FxUR9zslPmlju7qYbs2XBtTLVSxVikPtUDQedhcls39uKYLvOOd1JZg0ehyhopobRoH1q+MHlIN/w==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "ia32"
 | 
			
		||||
      ],
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "win32"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@next/swc-win32-x64-msvc": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-Ls2OL9hi3YlJKGNdKv8k3X/lLgc3VmLG3a/DeTkAd+lAituJp8ZHmRmm9f9SL84fT3CotlzcgbdaCDfFwFA6bA==",
 | 
			
		||||
      "cpu": [
 | 
			
		||||
        "x64"
 | 
			
		||||
      ],
 | 
			
		||||
      "optional": true,
 | 
			
		||||
      "os": [
 | 
			
		||||
        "win32"
 | 
			
		||||
      ],
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 10"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@swc/helpers": {
 | 
			
		||||
      "version": "0.4.14",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz",
 | 
			
		||||
      "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "tslib": "^2.4.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@types/node": {
 | 
			
		||||
      "version": "18.13.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz",
 | 
			
		||||
      "integrity": "sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@types/prop-types": {
 | 
			
		||||
      "version": "15.7.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
 | 
			
		||||
      "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@types/react": {
 | 
			
		||||
      "version": "18.0.28",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
 | 
			
		||||
      "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@types/prop-types": "*",
 | 
			
		||||
        "@types/scheduler": "*",
 | 
			
		||||
        "csstype": "^3.0.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@types/react-dom": {
 | 
			
		||||
      "version": "18.0.10",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz",
 | 
			
		||||
      "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@types/react": "*"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/@types/scheduler": {
 | 
			
		||||
      "version": "0.16.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
 | 
			
		||||
      "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/caniuse-lite": {
 | 
			
		||||
      "version": "1.0.30001451",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz",
 | 
			
		||||
      "integrity": "sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w==",
 | 
			
		||||
      "funding": [
 | 
			
		||||
        {
 | 
			
		||||
          "type": "opencollective",
 | 
			
		||||
          "url": "https://opencollective.com/browserslist"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          "type": "tidelift",
 | 
			
		||||
          "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
 | 
			
		||||
        }
 | 
			
		||||
      ]
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/client-only": {
 | 
			
		||||
      "version": "0.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/csstype": {
 | 
			
		||||
      "version": "3.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/js-tokens": {
 | 
			
		||||
      "version": "4.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/loose-envify": {
 | 
			
		||||
      "version": "1.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
 | 
			
		||||
      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "js-tokens": "^3.0.0 || ^4.0.0"
 | 
			
		||||
      },
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "loose-envify": "cli.js"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/nanoid": {
 | 
			
		||||
      "version": "3.3.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
 | 
			
		||||
      "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "nanoid": "bin/nanoid.cjs"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/next": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/next/-/next-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "@next/env": "13.1.6",
 | 
			
		||||
        "@swc/helpers": "0.4.14",
 | 
			
		||||
        "caniuse-lite": "^1.0.30001406",
 | 
			
		||||
        "postcss": "8.4.14",
 | 
			
		||||
        "styled-jsx": "5.1.1"
 | 
			
		||||
      },
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "next": "dist/bin/next"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=14.6.0"
 | 
			
		||||
      },
 | 
			
		||||
      "optionalDependencies": {
 | 
			
		||||
        "@next/swc-android-arm-eabi": "13.1.6",
 | 
			
		||||
        "@next/swc-android-arm64": "13.1.6",
 | 
			
		||||
        "@next/swc-darwin-arm64": "13.1.6",
 | 
			
		||||
        "@next/swc-darwin-x64": "13.1.6",
 | 
			
		||||
        "@next/swc-freebsd-x64": "13.1.6",
 | 
			
		||||
        "@next/swc-linux-arm-gnueabihf": "13.1.6",
 | 
			
		||||
        "@next/swc-linux-arm64-gnu": "13.1.6",
 | 
			
		||||
        "@next/swc-linux-arm64-musl": "13.1.6",
 | 
			
		||||
        "@next/swc-linux-x64-gnu": "13.1.6",
 | 
			
		||||
        "@next/swc-linux-x64-musl": "13.1.6",
 | 
			
		||||
        "@next/swc-win32-arm64-msvc": "13.1.6",
 | 
			
		||||
        "@next/swc-win32-ia32-msvc": "13.1.6",
 | 
			
		||||
        "@next/swc-win32-x64-msvc": "13.1.6"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "fibers": ">= 3.1.0",
 | 
			
		||||
        "node-sass": "^6.0.0 || ^7.0.0",
 | 
			
		||||
        "react": "^18.2.0",
 | 
			
		||||
        "react-dom": "^18.2.0",
 | 
			
		||||
        "sass": "^1.3.0"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependenciesMeta": {
 | 
			
		||||
        "fibers": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        },
 | 
			
		||||
        "node-sass": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        },
 | 
			
		||||
        "sass": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/picocolors": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/postcss": {
 | 
			
		||||
      "version": "8.4.14",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
 | 
			
		||||
      "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
 | 
			
		||||
      "funding": [
 | 
			
		||||
        {
 | 
			
		||||
          "type": "opencollective",
 | 
			
		||||
          "url": "https://opencollective.com/postcss/"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          "type": "tidelift",
 | 
			
		||||
          "url": "https://tidelift.com/funding/github/npm/postcss"
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "nanoid": "^3.3.4",
 | 
			
		||||
        "picocolors": "^1.0.0",
 | 
			
		||||
        "source-map-js": "^1.0.2"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": "^10 || ^12 || >=14"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/react": {
 | 
			
		||||
      "version": "18.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "loose-envify": "^1.1.0"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=0.10.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/react-dom": {
 | 
			
		||||
      "version": "18.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "loose-envify": "^1.1.0",
 | 
			
		||||
        "scheduler": "^0.23.0"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "react": "^18.2.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/scheduler": {
 | 
			
		||||
      "version": "0.23.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
 | 
			
		||||
      "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "loose-envify": "^1.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/source-map-js": {
 | 
			
		||||
      "version": "1.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=0.10.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/styled-jsx": {
 | 
			
		||||
      "version": "5.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
 | 
			
		||||
      "dependencies": {
 | 
			
		||||
        "client-only": "0.0.1"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">= 12.0.0"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependencies": {
 | 
			
		||||
        "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
 | 
			
		||||
      },
 | 
			
		||||
      "peerDependenciesMeta": {
 | 
			
		||||
        "@babel/core": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        },
 | 
			
		||||
        "babel-plugin-macros": {
 | 
			
		||||
          "optional": true
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/tslib": {
 | 
			
		||||
      "version": "2.5.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
 | 
			
		||||
      "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
 | 
			
		||||
    },
 | 
			
		||||
    "node_modules/typescript": {
 | 
			
		||||
      "version": "4.9.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
 | 
			
		||||
      "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
 | 
			
		||||
      "bin": {
 | 
			
		||||
        "tsc": "bin/tsc",
 | 
			
		||||
        "tsserver": "bin/tsserver"
 | 
			
		||||
      },
 | 
			
		||||
      "engines": {
 | 
			
		||||
        "node": ">=4.2.0"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "@next/env": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/env/-/env-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-s+W9Fdqh5MFk6ECrbnVmmAOwxKQuhGMT7xXHrkYIBMBcTiOqNWhv5KbJIboKR5STXxNXl32hllnvKaffzFaWQg=="
 | 
			
		||||
    },
 | 
			
		||||
    "@next/font": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/font/-/font-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-AITjmeb1RgX1HKMCiA39ztx2mxeAyxl4ljv2UoSBUGAbFFMg8MO7YAvjHCgFhD39hL7YTbFjol04e/BPBH5RzQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "@next/swc-android-arm-eabi": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-F3/6Z8LH/pGlPzR1AcjPFxx35mPqjE5xZcf+IL+KgbW9tMkp7CYi1y7qKrEWU7W4AumxX/8OINnDQWLiwLasLQ==",
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "@next/swc-android-arm64": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-cMwQjnB8vrYkWyK/H0Rf2c2pKIH4RGjpKUDvbjVAit6SbwPDpmaijLio0LWFV3/tOnY6kvzbL62lndVA0mkYpw==",
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "@next/swc-darwin-arm64": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-KKRQH4DDE4kONXCvFMNBZGDb499Hs+xcFAwvj+rfSUssIDrZOlyfJNy55rH5t2Qxed1e4K80KEJgsxKQN1/fyw==",
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "@next/swc-darwin-x64": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-/uOky5PaZDoaU99ohjtNcDTJ6ks/gZ5ykTQDvNZDjIoCxFe3+t06bxsTPY6tAO6uEAw5f6vVFX5H5KLwhrkZCA==",
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "@next/swc-freebsd-x64": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-qaEALZeV7to6weSXk3Br80wtFQ7cFTpos/q+m9XVRFggu+8Ib895XhMWdJBzew6aaOcMvYR6KQ6JmHA2/eMzWw==",
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "@next/swc-linux-arm-gnueabihf": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-OybkbC58A1wJ+JrJSOjGDvZzrVEQA4sprJejGqMwiZyLqhr9Eo8FXF0y6HL+m1CPCpPhXEHz/2xKoYsl16kNqw==",
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "@next/swc-linux-arm64-gnu": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-yCH+yDr7/4FDuWv6+GiYrPI9kcTAO3y48UmaIbrKy8ZJpi7RehJe3vIBRUmLrLaNDH3rY1rwoHi471NvR5J5NQ==",
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "@next/swc-linux-arm64-musl": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-ECagB8LGX25P9Mrmlc7Q/TQBb9rGScxHbv/kLqqIWs2fIXy6Y/EiBBiM72NTwuXUFCNrWR4sjUPSooVBJJ3ESQ==",
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "@next/swc-linux-x64-gnu": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-GT5w2mruk90V/I5g6ScuueE7fqj/d8Bui2qxdw6lFxmuTgMeol5rnzAv4uAoVQgClOUO/MULilzlODg9Ib3Y4Q==",
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "@next/swc-linux-x64-musl": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-keFD6KvwOPzmat4TCnlnuxJCQepPN+8j3Nw876FtULxo8005Y9Ghcl7ACcR8GoiKoddAq8gxNBrpjoxjQRHeAQ==",
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "@next/swc-win32-arm64-msvc": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-OwertslIiGQluFvHyRDzBCIB07qJjqabAmINlXUYt7/sY7Q7QPE8xVi5beBxX/rxTGPIbtyIe3faBE6Z2KywhQ==",
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "@next/swc-win32-ia32-msvc": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-g8zowiuP8FxUR9zslPmlju7qYbs2XBtTLVSxVikPtUDQedhcls39uKYLvOOd1JZg0ehyhopobRoH1q+MHlIN/w==",
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "@next/swc-win32-x64-msvc": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-Ls2OL9hi3YlJKGNdKv8k3X/lLgc3VmLG3a/DeTkAd+lAituJp8ZHmRmm9f9SL84fT3CotlzcgbdaCDfFwFA6bA==",
 | 
			
		||||
      "optional": true
 | 
			
		||||
    },
 | 
			
		||||
    "@swc/helpers": {
 | 
			
		||||
      "version": "0.4.14",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz",
 | 
			
		||||
      "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "tslib": "^2.4.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@types/node": {
 | 
			
		||||
      "version": "18.13.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz",
 | 
			
		||||
      "integrity": "sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg=="
 | 
			
		||||
    },
 | 
			
		||||
    "@types/prop-types": {
 | 
			
		||||
      "version": "15.7.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
 | 
			
		||||
      "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
 | 
			
		||||
    },
 | 
			
		||||
    "@types/react": {
 | 
			
		||||
      "version": "18.0.28",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
 | 
			
		||||
      "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@types/prop-types": "*",
 | 
			
		||||
        "@types/scheduler": "*",
 | 
			
		||||
        "csstype": "^3.0.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@types/react-dom": {
 | 
			
		||||
      "version": "18.0.10",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz",
 | 
			
		||||
      "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@types/react": "*"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "@types/scheduler": {
 | 
			
		||||
      "version": "0.16.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
 | 
			
		||||
      "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew=="
 | 
			
		||||
    },
 | 
			
		||||
    "caniuse-lite": {
 | 
			
		||||
      "version": "1.0.30001451",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz",
 | 
			
		||||
      "integrity": "sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w=="
 | 
			
		||||
    },
 | 
			
		||||
    "client-only": {
 | 
			
		||||
      "version": "0.0.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
 | 
			
		||||
      "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
 | 
			
		||||
    },
 | 
			
		||||
    "csstype": {
 | 
			
		||||
      "version": "3.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
 | 
			
		||||
    },
 | 
			
		||||
    "js-tokens": {
 | 
			
		||||
      "version": "4.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "loose-envify": {
 | 
			
		||||
      "version": "1.4.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
 | 
			
		||||
      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "js-tokens": "^3.0.0 || ^4.0.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nanoid": {
 | 
			
		||||
      "version": "3.3.4",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
 | 
			
		||||
      "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw=="
 | 
			
		||||
    },
 | 
			
		||||
    "next": {
 | 
			
		||||
      "version": "13.1.6",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/next/-/next-13.1.6.tgz",
 | 
			
		||||
      "integrity": "sha512-hHlbhKPj9pW+Cymvfzc15lvhaOZ54l+8sXDXJWm3OBNBzgrVj6hwGPmqqsXg40xO1Leq+kXpllzRPuncpC0Phw==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "@next/env": "13.1.6",
 | 
			
		||||
        "@next/swc-android-arm-eabi": "13.1.6",
 | 
			
		||||
        "@next/swc-android-arm64": "13.1.6",
 | 
			
		||||
        "@next/swc-darwin-arm64": "13.1.6",
 | 
			
		||||
        "@next/swc-darwin-x64": "13.1.6",
 | 
			
		||||
        "@next/swc-freebsd-x64": "13.1.6",
 | 
			
		||||
        "@next/swc-linux-arm-gnueabihf": "13.1.6",
 | 
			
		||||
        "@next/swc-linux-arm64-gnu": "13.1.6",
 | 
			
		||||
        "@next/swc-linux-arm64-musl": "13.1.6",
 | 
			
		||||
        "@next/swc-linux-x64-gnu": "13.1.6",
 | 
			
		||||
        "@next/swc-linux-x64-musl": "13.1.6",
 | 
			
		||||
        "@next/swc-win32-arm64-msvc": "13.1.6",
 | 
			
		||||
        "@next/swc-win32-ia32-msvc": "13.1.6",
 | 
			
		||||
        "@next/swc-win32-x64-msvc": "13.1.6",
 | 
			
		||||
        "@swc/helpers": "0.4.14",
 | 
			
		||||
        "caniuse-lite": "^1.0.30001406",
 | 
			
		||||
        "postcss": "8.4.14",
 | 
			
		||||
        "styled-jsx": "5.1.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "picocolors": {
 | 
			
		||||
      "version": "1.0.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
 | 
			
		||||
      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
 | 
			
		||||
    },
 | 
			
		||||
    "postcss": {
 | 
			
		||||
      "version": "8.4.14",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz",
 | 
			
		||||
      "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "nanoid": "^3.3.4",
 | 
			
		||||
        "picocolors": "^1.0.0",
 | 
			
		||||
        "source-map-js": "^1.0.2"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "react": {
 | 
			
		||||
      "version": "18.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "loose-envify": "^1.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "react-dom": {
 | 
			
		||||
      "version": "18.2.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
 | 
			
		||||
      "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "loose-envify": "^1.1.0",
 | 
			
		||||
        "scheduler": "^0.23.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "scheduler": {
 | 
			
		||||
      "version": "0.23.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
 | 
			
		||||
      "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "loose-envify": "^1.1.0"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "source-map-js": {
 | 
			
		||||
      "version": "1.0.2",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
 | 
			
		||||
      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
 | 
			
		||||
    },
 | 
			
		||||
    "styled-jsx": {
 | 
			
		||||
      "version": "5.1.1",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
 | 
			
		||||
      "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
 | 
			
		||||
      "requires": {
 | 
			
		||||
        "client-only": "0.0.1"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "tslib": {
 | 
			
		||||
      "version": "2.5.0",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
 | 
			
		||||
      "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
 | 
			
		||||
    },
 | 
			
		||||
    "typescript": {
 | 
			
		||||
      "version": "4.9.5",
 | 
			
		||||
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
 | 
			
		||||
      "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g=="
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								package.json
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								package.json
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -13,9 +13,19 @@
 | 
			
		|||
    "@types/node": "18.13.0",
 | 
			
		||||
    "@types/react": "18.0.28",
 | 
			
		||||
    "@types/react-dom": "18.0.10",
 | 
			
		||||
    "gray-matter": "^4.0.3",
 | 
			
		||||
    "markdown-to-jsx": "^7.1.9",
 | 
			
		||||
    "next": "13.1.6",
 | 
			
		||||
    "next-themes": "^0.2.1",
 | 
			
		||||
    "react": "18.2.0",
 | 
			
		||||
    "react-dom": "18.2.0",
 | 
			
		||||
    "typescript": "4.9.5"
 | 
			
		||||
    "react-markdown": "^8.0.5",
 | 
			
		||||
    "remark": "^14.0.2",
 | 
			
		||||
    "remark-frontmatter": "^4.0.1",
 | 
			
		||||
    "remark-html": "^15.0.2",
 | 
			
		||||
    "sass": "^1.58.0",
 | 
			
		||||
    "to-vfile": "^7.2.4",
 | 
			
		||||
    "typescript": "4.9.5",
 | 
			
		||||
    "use-lanyard": "^1.4.2"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										32
									
								
								src/blog/hello.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/blog/hello.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,32 @@
 | 
			
		|||
---
 | 
			
		||||
title: Markdown Elements
 | 
			
		||||
date: 19/02/2023
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
# Hi ~~Mars~~ Venus!
 | 
			
		||||
 | 
			
		||||
## Hi ~~Mars~~ Venus!
 | 
			
		||||
 | 
			
		||||
### Hi ~~Mars~~ Venus!
 | 
			
		||||
 | 
			
		||||
#### Hi ~~Mars~~ Venus!
 | 
			
		||||
 | 
			
		||||
##### Hi ~~Mars~~ Venus!
 | 
			
		||||
 | 
			
		||||
_italics_
 | 
			
		||||
 | 
			
		||||
**bold**
 | 
			
		||||
 | 
			
		||||
> blockquote
 | 
			
		||||
 | 
			
		||||
1. Ordered
 | 
			
		||||
2. Lists
 | 
			
		||||
 | 
			
		||||
- unordered
 | 
			
		||||
- lists
 | 
			
		||||
 | 
			
		||||
`code`
 | 
			
		||||
 | 
			
		||||
[A Link](../hello.md)
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
							
								
								
									
										13
									
								
								src/components/Image.tsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/components/Image.tsx
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
import NextLink from "next/link"
 | 
			
		||||
import LinkStyle from "@/styles/Link.module.sass"
 | 
			
		||||
import { CSSProperties } from "react";
 | 
			
		||||
 | 
			
		||||
const Image = ({ src, alt }: { src: string, alt: string }) => {
 | 
			
		||||
    return (
 | 
			
		||||
        <figure>
 | 
			
		||||
            <img src={src} alt={alt} />
 | 
			
		||||
        </figure>
 | 
			
		||||
    );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export default Image; 
 | 
			
		||||
							
								
								
									
										17
									
								
								src/components/Lanyard.tsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/components/Lanyard.tsx
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
import { useLanyard } from "use-lanyard";
 | 
			
		||||
import constants from "@/lib/constants";
 | 
			
		||||
import yard from "@/styles/Lanyard.module.sass"
 | 
			
		||||
 | 
			
		||||
const Lanyard = () => {
 | 
			
		||||
    const lanyard = useLanyard(constants.ids.discord as `${bigint}`).data
 | 
			
		||||
    if (!lanyard?.listening_to_spotify) return (<></>);
 | 
			
		||||
    return (
 | 
			
		||||
        <div id={yard.lanyard}>
 | 
			
		||||
            <img src={lanyard?.spotify?.album_art_url as string} alt="" />
 | 
			
		||||
            <span> {lanyard?.spotify?.song} by {lanyard?.spotify?.artist.split(';')[0]} </span>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
    );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export default Lanyard; 
 | 
			
		||||
							
								
								
									
										17
									
								
								src/components/Link.tsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/components/Link.tsx
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
import NextLink from "next/link"
 | 
			
		||||
import LinkStyle from "@/styles/Link.module.sass"
 | 
			
		||||
import { CSSProperties } from "react";
 | 
			
		||||
 | 
			
		||||
const Link = ({ href, title, asList = false, withArrow = false, style }: { href: string, title: string, asList?: boolean, withArrow?: boolean, style?: CSSProperties }) => {
 | 
			
		||||
    const relme = [
 | 
			
		||||
        'fediverse'
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    return (
 | 
			
		||||
        <NextLink style={style} href={href} rel={relme.includes(title) ? "me" : undefined}>
 | 
			
		||||
            {asList ? (<span className={LinkStyle.listLink}>{title}{withArrow ? " ↗" : ""}</span>) : (<span className={LinkStyle.link}>{title}{withArrow ? " ↗" : ""}</span >)}
 | 
			
		||||
        </NextLink>
 | 
			
		||||
    );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export default Link; 
 | 
			
		||||
							
								
								
									
										21
									
								
								src/components/PostList.tsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/components/PostList.tsx
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
import Link from "./Link";
 | 
			
		||||
import styles from "@/styles/PostList.module.sass"
 | 
			
		||||
 | 
			
		||||
const PostList = ({ posts }: {
 | 
			
		||||
    posts: [{ title: string, date: string, link: string }]
 | 
			
		||||
}) => {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    return (
 | 
			
		||||
        <ul className={styles.blog_posts}>
 | 
			
		||||
            {posts.map(post => (
 | 
			
		||||
                <li className={styles.blog_post_row}>
 | 
			
		||||
                    <pre>{post.date}</pre >
 | 
			
		||||
                    <Link style={{ paddingLeft: ".5rem" }} href={post.link} title={post.title} withArrow />
 | 
			
		||||
                </li>
 | 
			
		||||
            ))}
 | 
			
		||||
        </ul>
 | 
			
		||||
    );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export default PostList; 
 | 
			
		||||
							
								
								
									
										39
									
								
								src/components/RenderWithoutJS.tsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								src/components/RenderWithoutJS.tsx
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,39 @@
 | 
			
		|||
import React, { ReactNode, useEffect, useState } from "react";
 | 
			
		||||
 | 
			
		||||
const RenderWithoutJS = ({ children }: { children: ReactNode }) => {
 | 
			
		||||
    // let Mastodon = profiles.filter(p => p.platform === "Fediverse")[0]
 | 
			
		||||
    const [nojs, setNoJS] = useState(true)
 | 
			
		||||
    useEffect(() => setNoJS(false), [])
 | 
			
		||||
    return (
 | 
			
		||||
        <>
 | 
			
		||||
            <noscript>
 | 
			
		||||
                <div style={{
 | 
			
		||||
                    display: nojs ? "block" : "none",
 | 
			
		||||
                    position: "absolute",
 | 
			
		||||
                    top: "50%",
 | 
			
		||||
                    left: "50%",
 | 
			
		||||
                    transform: "translateX(-50%)",
 | 
			
		||||
                    textAlign: "center"
 | 
			
		||||
                }}>
 | 
			
		||||
                    <span>
 | 
			
		||||
                        This site needs Javascript to run.
 | 
			
		||||
                        <br />
 | 
			
		||||
                        Please enable this Permission and reload this Page.
 | 
			
		||||
                    </span>
 | 
			
		||||
                </div>
 | 
			
		||||
            </noscript>
 | 
			
		||||
 | 
			
		||||
            {/* Mastodon Verification Link */}
 | 
			
		||||
            {/* <a style={{ display: "none" }} rel="me" href={Mastodon.url}>
 | 
			
		||||
                {Mastodon.username}
 | 
			
		||||
            </a> */}
 | 
			
		||||
            {/* END */}
 | 
			
		||||
            {!nojs && (<>{children}</>)}
 | 
			
		||||
        </>
 | 
			
		||||
 | 
			
		||||
    );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
export default RenderWithoutJS;
 | 
			
		||||
							
								
								
									
										35
									
								
								src/components/Sidebar.tsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/components/Sidebar.tsx
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,35 @@
 | 
			
		|||
import constants from "@/lib/constants"
 | 
			
		||||
import getProfiles from "@/lib/profiles";
 | 
			
		||||
import sidebar from "@/styles/Sidebar.module.sass"
 | 
			
		||||
import Link from "./Link";
 | 
			
		||||
 | 
			
		||||
const Sidebar = () => {
 | 
			
		||||
    let profiles = getProfiles()
 | 
			
		||||
    return (
 | 
			
		||||
        <aside id={sidebar.sidebar}>
 | 
			
		||||
            <div className={sidebar.me}>
 | 
			
		||||
                {constants.name}
 | 
			
		||||
            </div>
 | 
			
		||||
            <p className={sidebar.bio}>
 | 
			
		||||
                {constants.bio}
 | 
			
		||||
            </p>
 | 
			
		||||
 | 
			
		||||
            <nav id={sidebar.nav}>
 | 
			
		||||
                <ul>
 | 
			
		||||
                    <Link href="/" title="home" asList />
 | 
			
		||||
                    <Link href="/blog" title="blog" asList />
 | 
			
		||||
                </ul>
 | 
			
		||||
                <ul>
 | 
			
		||||
                    {profiles.map((profile, index) => {
 | 
			
		||||
                        return (<Link key={index} href={profile.link} title={profile.site} asList withArrow />)
 | 
			
		||||
                    })}
 | 
			
		||||
                </ul>
 | 
			
		||||
            </nav>
 | 
			
		||||
        </aside>
 | 
			
		||||
 | 
			
		||||
    );
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
export default Sidebar;
 | 
			
		||||
							
								
								
									
										18
									
								
								src/lib/constants.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/lib/constants.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
const constants = {
 | 
			
		||||
    name: 'Lio',
 | 
			
		||||
    bio: "digital sorcerer",
 | 
			
		||||
    ids: {
 | 
			
		||||
        discord: '318044130796109825'
 | 
			
		||||
    },
 | 
			
		||||
    socials: {
 | 
			
		||||
        fedi: "https://pounced-on.me/@lio",
 | 
			
		||||
        cohost: "https://cohost.org/lio",
 | 
			
		||||
        twitter: "https://twitter.com/@himbolion",
 | 
			
		||||
        git: "https://git.lio.cat/l",
 | 
			
		||||
        github: "https://github.com/@himbolion",
 | 
			
		||||
        email: "mailto:twilight@lio.zone",
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
export default constants
 | 
			
		||||
							
								
								
									
										7
									
								
								src/lib/getFrontmatter.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/lib/getFrontmatter.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
import { readFileSync } from "fs";
 | 
			
		||||
import matter from "gray-matter";
 | 
			
		||||
 | 
			
		||||
export default function (path: string) {
 | 
			
		||||
    return matter(readFileSync(path, 'utf8'))
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										8
									
								
								src/lib/listFiles.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/lib/listFiles.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
import { readdirSync } from "fs";
 | 
			
		||||
 | 
			
		||||
export default function (path: string) {
 | 
			
		||||
    let files = readdirSync(path)
 | 
			
		||||
 | 
			
		||||
    return files.map(file => `${path}/${file}`)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										15
									
								
								src/lib/profiles.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/lib/profiles.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
import constants from "@/lib/constants"
 | 
			
		||||
 | 
			
		||||
const getProfiles = () => {
 | 
			
		||||
    return [
 | 
			
		||||
        { site: "fediverse", link: constants.socials.fedi },
 | 
			
		||||
        { site: "twitter", link: constants.socials.twitter },
 | 
			
		||||
        { site: "cohost", link: constants.socials.cohost },
 | 
			
		||||
        { site: "forgejo", link: constants.socials.git },
 | 
			
		||||
        { site: "github", link: constants.socials.github },
 | 
			
		||||
        { site: "email", link: constants.socials.email },
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
export default getProfiles
 | 
			
		||||
| 
						 | 
				
			
			@ -1,6 +1,15 @@
 | 
			
		|||
import '@/styles/globals.css'
 | 
			
		||||
import type { AppProps } from 'next/app'
 | 
			
		||||
import { ThemeProvider } from "next-themes";
 | 
			
		||||
 | 
			
		||||
export default function App({ Component, pageProps }: AppProps) {
 | 
			
		||||
  return <Component {...pageProps} />
 | 
			
		||||
import "../styles/main.sass";
 | 
			
		||||
function Void({ Component, pageProps }: any) {
 | 
			
		||||
  // const theme = useTheme()
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <ThemeProvider enableSystem enableColorScheme >
 | 
			
		||||
      <Component {...pageProps} />
 | 
			
		||||
    </ThemeProvider>
 | 
			
		||||
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default Void;
 | 
			
		||||
							
								
								
									
										63
									
								
								src/pages/blog/[...slug].tsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								src/pages/blog/[...slug].tsx
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,63 @@
 | 
			
		|||
import RenderWithoutJS from "@/components/RenderWithoutJS";
 | 
			
		||||
import Sidebar from "@/components/Sidebar";
 | 
			
		||||
import index from "@/styles/Index.module.sass"
 | 
			
		||||
import Lanyard from "@/components/Lanyard"
 | 
			
		||||
import { remark } from "remark"
 | 
			
		||||
import remarkFrontmatter from "remark-frontmatter"
 | 
			
		||||
import { read } from "to-vfile"
 | 
			
		||||
import listFiles from "@/lib/listFiles";
 | 
			
		||||
import Markdown from 'markdown-to-jsx';
 | 
			
		||||
import Link from "@/components/Link";
 | 
			
		||||
import Image from "@/components/Image";
 | 
			
		||||
 | 
			
		||||
const Post = (props: { post: string }) => {
 | 
			
		||||
    console.log(props.post)
 | 
			
		||||
    let Index = (
 | 
			
		||||
        <main id={index.layout}>
 | 
			
		||||
            <Sidebar />
 | 
			
		||||
            <section id={index.main}>
 | 
			
		||||
                <Markdown
 | 
			
		||||
                    children={props.post}
 | 
			
		||||
                    options={{
 | 
			
		||||
                        overrides: {
 | 
			
		||||
                            a: ({ ...props }) => <Link href={props.href} title={props.children[0]} withArrow />,
 | 
			
		||||
                            img: ({ ...props }) => <Image src={props.src} alt={props.alt} />,
 | 
			
		||||
                            p: ({ children, ...props }) => {
 | 
			
		||||
                                const ParaComponent = children[0]?.type?.name === 'img' ? 'div' : 'p'
 | 
			
		||||
                                return <ParaComponent {...props}>{children}</ParaComponent>
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }}
 | 
			
		||||
                />
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            </section>
 | 
			
		||||
            <Lanyard />
 | 
			
		||||
        </main>
 | 
			
		||||
    );
 | 
			
		||||
    return <RenderWithoutJS children={Index} />
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export default Post
 | 
			
		||||
 | 
			
		||||
export async function getStaticProps(context: any) {
 | 
			
		||||
    let post = await remark()
 | 
			
		||||
        .use(remarkFrontmatter)
 | 
			
		||||
        .process(await read(`${listFiles('./src/blog').filter(file => file.includes(context.params.slug))[0]}`))
 | 
			
		||||
    return {
 | 
			
		||||
        props: {
 | 
			
		||||
            post: (post.value as string).replace(/(---)\n*([a-zA-Z0-9\/_:\s*]*)*(---)/gmi, "")
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
export async function getStaticPaths() {
 | 
			
		||||
    let path = './src/blog'
 | 
			
		||||
    let paths = listFiles(path).map(file => file.replace(path, "/blog/").replace('.md', '').replace('.mdx', ''))
 | 
			
		||||
    // console.log(paths)
 | 
			
		||||
    return {
 | 
			
		||||
        paths,
 | 
			
		||||
        fallback: 'blocking'
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										42
									
								
								src/pages/blog/index.tsx
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								src/pages/blog/index.tsx
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,42 @@
 | 
			
		|||
 | 
			
		||||
import RenderWithoutJS from "@/components/RenderWithoutJS";
 | 
			
		||||
import Sidebar from "@/components/Sidebar";
 | 
			
		||||
import index from "@/styles/Index.module.sass"
 | 
			
		||||
import Lanyard from "@/components/Lanyard"
 | 
			
		||||
import listFiles from "@/lib/listFiles";
 | 
			
		||||
import getFrontmatter from "@/lib/getFrontmatter";
 | 
			
		||||
import PostList from "@/components/PostList";
 | 
			
		||||
 | 
			
		||||
const IndexPage = (props: { posts: [{ title: string, date: string, link: string }] }) => {
 | 
			
		||||
    let Index = (
 | 
			
		||||
        <main id={index.layout}>
 | 
			
		||||
            <Sidebar />
 | 
			
		||||
            <section id={index.blogMain}>
 | 
			
		||||
                <h1>blog</h1>
 | 
			
		||||
                <PostList posts={props.posts} />
 | 
			
		||||
            </section>
 | 
			
		||||
            <Lanyard />
 | 
			
		||||
            {/* <Copyright /> */}
 | 
			
		||||
        </main>
 | 
			
		||||
    );
 | 
			
		||||
    return <RenderWithoutJS children={Index} />
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export default IndexPage
 | 
			
		||||
 | 
			
		||||
export async function getStaticProps() {
 | 
			
		||||
    let blogPath = './src/blog'
 | 
			
		||||
    let posts = listFiles(blogPath) //
 | 
			
		||||
    let frontmatter = posts.map(post => {
 | 
			
		||||
        let matter = getFrontmatter(post).data
 | 
			
		||||
        return {
 | 
			
		||||
            ...matter,
 | 
			
		||||
            link: post.replace(blogPath, "/blog/").replace('.md', "").replace('.mdx', "")
 | 
			
		||||
        }
 | 
			
		||||
    })
 | 
			
		||||
    return {
 | 
			
		||||
        props: {
 | 
			
		||||
            posts: frontmatter
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,123 +1,25 @@
 | 
			
		|||
import Head from 'next/head'
 | 
			
		||||
import Image from 'next/image'
 | 
			
		||||
import { Inter } from '@next/font/google'
 | 
			
		||||
import styles from '@/styles/Home.module.css'
 | 
			
		||||
 | 
			
		||||
const inter = Inter({ subsets: ['latin'] })
 | 
			
		||||
import RenderWithoutJS from "@/components/RenderWithoutJS";
 | 
			
		||||
import Sidebar from "@/components/Sidebar";
 | 
			
		||||
import index from "@/styles/Index.module.sass"
 | 
			
		||||
import Lanyard from "@/components/Lanyard"
 | 
			
		||||
 | 
			
		||||
export default function Home() {
 | 
			
		||||
  return (
 | 
			
		||||
    <>
 | 
			
		||||
      <Head>
 | 
			
		||||
        <title>Create Next App</title>
 | 
			
		||||
        <meta name="description" content="Generated by create next app" />
 | 
			
		||||
        <meta name="viewport" content="width=device-width, initial-scale=1" />
 | 
			
		||||
        <link rel="icon" href="/favicon.ico" />
 | 
			
		||||
      </Head>
 | 
			
		||||
      <main className={styles.main}>
 | 
			
		||||
        <div className={styles.description}>
 | 
			
		||||
          <p>
 | 
			
		||||
            Get started by editing 
 | 
			
		||||
            <code className={styles.code}>src/pages/index.tsx</code>
 | 
			
		||||
          </p>
 | 
			
		||||
          <div>
 | 
			
		||||
            <a
 | 
			
		||||
              href="https://vercel.com?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
 | 
			
		||||
              target="_blank"
 | 
			
		||||
              rel="noopener noreferrer"
 | 
			
		||||
            >
 | 
			
		||||
              By{' '}
 | 
			
		||||
              <Image
 | 
			
		||||
                src="/vercel.svg"
 | 
			
		||||
                alt="Vercel Logo"
 | 
			
		||||
                className={styles.vercelLogo}
 | 
			
		||||
                width={100}
 | 
			
		||||
                height={24}
 | 
			
		||||
                priority
 | 
			
		||||
              />
 | 
			
		||||
            </a>
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
const IndexPage = () => {
 | 
			
		||||
  let Index = (
 | 
			
		||||
    <main id={index.layout}>
 | 
			
		||||
      <Sidebar />
 | 
			
		||||
      <section id={index.main}>
 | 
			
		||||
        <h1>hey!</h1>
 | 
			
		||||
        <p>
 | 
			
		||||
          my name's Lio, and I code sometimes
 | 
			
		||||
          {/* my name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimesmy name's Lio, and I code sometimes */}
 | 
			
		||||
        </p>
 | 
			
		||||
      </section>
 | 
			
		||||
      <Lanyard />
 | 
			
		||||
      {/* <Copyright /> */}
 | 
			
		||||
    </main>
 | 
			
		||||
  );
 | 
			
		||||
  return <RenderWithoutJS children={Index} />
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
        <div className={styles.center}>
 | 
			
		||||
          <Image
 | 
			
		||||
            className={styles.logo}
 | 
			
		||||
            src="/next.svg"
 | 
			
		||||
            alt="Next.js Logo"
 | 
			
		||||
            width={180}
 | 
			
		||||
            height={37}
 | 
			
		||||
            priority
 | 
			
		||||
          />
 | 
			
		||||
          <div className={styles.thirteen}>
 | 
			
		||||
            <Image
 | 
			
		||||
              src="/thirteen.svg"
 | 
			
		||||
              alt="13"
 | 
			
		||||
              width={40}
 | 
			
		||||
              height={31}
 | 
			
		||||
              priority
 | 
			
		||||
            />
 | 
			
		||||
          </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div className={styles.grid}>
 | 
			
		||||
          <a
 | 
			
		||||
            href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
 | 
			
		||||
            className={styles.card}
 | 
			
		||||
            target="_blank"
 | 
			
		||||
            rel="noopener noreferrer"
 | 
			
		||||
          >
 | 
			
		||||
            <h2 className={inter.className}>
 | 
			
		||||
              Docs <span>-></span>
 | 
			
		||||
            </h2>
 | 
			
		||||
            <p className={inter.className}>
 | 
			
		||||
              Find in-depth information about Next.js features and API.
 | 
			
		||||
            </p>
 | 
			
		||||
          </a>
 | 
			
		||||
 | 
			
		||||
          <a
 | 
			
		||||
            href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
 | 
			
		||||
            className={styles.card}
 | 
			
		||||
            target="_blank"
 | 
			
		||||
            rel="noopener noreferrer"
 | 
			
		||||
          >
 | 
			
		||||
            <h2 className={inter.className}>
 | 
			
		||||
              Learn <span>-></span>
 | 
			
		||||
            </h2>
 | 
			
		||||
            <p className={inter.className}>
 | 
			
		||||
              Learn about Next.js in an interactive course with quizzes!
 | 
			
		||||
            </p>
 | 
			
		||||
          </a>
 | 
			
		||||
 | 
			
		||||
          <a
 | 
			
		||||
            href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
 | 
			
		||||
            className={styles.card}
 | 
			
		||||
            target="_blank"
 | 
			
		||||
            rel="noopener noreferrer"
 | 
			
		||||
          >
 | 
			
		||||
            <h2 className={inter.className}>
 | 
			
		||||
              Templates <span>-></span>
 | 
			
		||||
            </h2>
 | 
			
		||||
            <p className={inter.className}>
 | 
			
		||||
              Discover and deploy boilerplate example Next.js projects.
 | 
			
		||||
            </p>
 | 
			
		||||
          </a>
 | 
			
		||||
 | 
			
		||||
          <a
 | 
			
		||||
            href="https://vercel.com/new?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
 | 
			
		||||
            className={styles.card}
 | 
			
		||||
            target="_blank"
 | 
			
		||||
            rel="noopener noreferrer"
 | 
			
		||||
          >
 | 
			
		||||
            <h2 className={inter.className}>
 | 
			
		||||
              Deploy <span>-></span>
 | 
			
		||||
            </h2>
 | 
			
		||||
            <p className={inter.className}>
 | 
			
		||||
              Instantly deploy your Next.js site to a shareable URL
 | 
			
		||||
              with Vercel.
 | 
			
		||||
            </p>
 | 
			
		||||
          </a>
 | 
			
		||||
        </div>
 | 
			
		||||
      </main>
 | 
			
		||||
    </>
 | 
			
		||||
  )
 | 
			
		||||
}
 | 
			
		||||
export default IndexPage
 | 
			
		||||
| 
						 | 
				
			
			@ -1,278 +0,0 @@
 | 
			
		|||
.main {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  flex-direction: column;
 | 
			
		||||
  justify-content: space-between;
 | 
			
		||||
  align-items: center;
 | 
			
		||||
  padding: 6rem;
 | 
			
		||||
  min-height: 100vh;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.description {
 | 
			
		||||
  display: inherit;
 | 
			
		||||
  justify-content: inherit;
 | 
			
		||||
  align-items: inherit;
 | 
			
		||||
  font-size: 0.85rem;
 | 
			
		||||
  max-width: var(--max-width);
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  z-index: 2;
 | 
			
		||||
  font-family: var(--font-mono);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.description a {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  justify-content: center;
 | 
			
		||||
  align-items: center;
 | 
			
		||||
  gap: 0.5rem;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.description p {
 | 
			
		||||
  position: relative;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  padding: 1rem;
 | 
			
		||||
  background-color: rgba(var(--callout-rgb), 0.5);
 | 
			
		||||
  border: 1px solid rgba(var(--callout-border-rgb), 0.3);
 | 
			
		||||
  border-radius: var(--border-radius);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.code {
 | 
			
		||||
  font-weight: 700;
 | 
			
		||||
  font-family: var(--font-mono);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.grid {
 | 
			
		||||
  display: grid;
 | 
			
		||||
  grid-template-columns: repeat(4, minmax(25%, auto));
 | 
			
		||||
  width: var(--max-width);
 | 
			
		||||
  max-width: 100%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.card {
 | 
			
		||||
  padding: 1rem 1.2rem;
 | 
			
		||||
  border-radius: var(--border-radius);
 | 
			
		||||
  background: rgba(var(--card-rgb), 0);
 | 
			
		||||
  border: 1px solid rgba(var(--card-border-rgb), 0);
 | 
			
		||||
  transition: background 200ms, border 200ms;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.card span {
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  transition: transform 200ms;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.card h2 {
 | 
			
		||||
  font-weight: 600;
 | 
			
		||||
  margin-bottom: 0.7rem;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.card p {
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  opacity: 0.6;
 | 
			
		||||
  font-size: 0.9rem;
 | 
			
		||||
  line-height: 1.5;
 | 
			
		||||
  max-width: 30ch;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.center {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  justify-content: center;
 | 
			
		||||
  align-items: center;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  padding: 4rem 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.center::before {
 | 
			
		||||
  background: var(--secondary-glow);
 | 
			
		||||
  border-radius: 50%;
 | 
			
		||||
  width: 480px;
 | 
			
		||||
  height: 360px;
 | 
			
		||||
  margin-left: -400px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.center::after {
 | 
			
		||||
  background: var(--primary-glow);
 | 
			
		||||
  width: 240px;
 | 
			
		||||
  height: 180px;
 | 
			
		||||
  z-index: -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.center::before,
 | 
			
		||||
.center::after {
 | 
			
		||||
  content: '';
 | 
			
		||||
  left: 50%;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  filter: blur(45px);
 | 
			
		||||
  transform: translateZ(0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.logo,
 | 
			
		||||
.thirteen {
 | 
			
		||||
  position: relative;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.thirteen {
 | 
			
		||||
  display: flex;
 | 
			
		||||
  justify-content: center;
 | 
			
		||||
  align-items: center;
 | 
			
		||||
  width: 75px;
 | 
			
		||||
  height: 75px;
 | 
			
		||||
  padding: 25px 10px;
 | 
			
		||||
  margin-left: 16px;
 | 
			
		||||
  transform: translateZ(0);
 | 
			
		||||
  border-radius: var(--border-radius);
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  box-shadow: 0px 2px 8px -1px #0000001a;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.thirteen::before,
 | 
			
		||||
.thirteen::after {
 | 
			
		||||
  content: '';
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  z-index: -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Conic Gradient Animation */
 | 
			
		||||
.thirteen::before {
 | 
			
		||||
  animation: 6s rotate linear infinite;
 | 
			
		||||
  width: 200%;
 | 
			
		||||
  height: 200%;
 | 
			
		||||
  background: var(--tile-border);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Inner Square */
 | 
			
		||||
.thirteen::after {
 | 
			
		||||
  inset: 0;
 | 
			
		||||
  padding: 1px;
 | 
			
		||||
  border-radius: var(--border-radius);
 | 
			
		||||
  background: linear-gradient(
 | 
			
		||||
    to bottom right,
 | 
			
		||||
    rgba(var(--tile-start-rgb), 1),
 | 
			
		||||
    rgba(var(--tile-end-rgb), 1)
 | 
			
		||||
  );
 | 
			
		||||
  background-clip: content-box;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Enable hover only on non-touch devices */
 | 
			
		||||
@media (hover: hover) and (pointer: fine) {
 | 
			
		||||
  .card:hover {
 | 
			
		||||
    background: rgba(var(--card-rgb), 0.1);
 | 
			
		||||
    border: 1px solid rgba(var(--card-border-rgb), 0.15);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .card:hover span {
 | 
			
		||||
    transform: translateX(4px);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media (prefers-reduced-motion) {
 | 
			
		||||
  .thirteen::before {
 | 
			
		||||
    animation: none;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .card:hover span {
 | 
			
		||||
    transform: none;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Mobile */
 | 
			
		||||
@media (max-width: 700px) {
 | 
			
		||||
  .content {
 | 
			
		||||
    padding: 4rem;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .grid {
 | 
			
		||||
    grid-template-columns: 1fr;
 | 
			
		||||
    margin-bottom: 120px;
 | 
			
		||||
    max-width: 320px;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .card {
 | 
			
		||||
    padding: 1rem 2.5rem;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .card h2 {
 | 
			
		||||
    margin-bottom: 0.5rem;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .center {
 | 
			
		||||
    padding: 8rem 0 6rem;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .center::before {
 | 
			
		||||
    transform: none;
 | 
			
		||||
    height: 300px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .description {
 | 
			
		||||
    font-size: 0.8rem;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .description a {
 | 
			
		||||
    padding: 1rem;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .description p,
 | 
			
		||||
  .description div {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    justify-content: center;
 | 
			
		||||
    position: fixed;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .description p {
 | 
			
		||||
    align-items: center;
 | 
			
		||||
    inset: 0 0 auto;
 | 
			
		||||
    padding: 2rem 1rem 1.4rem;
 | 
			
		||||
    border-radius: 0;
 | 
			
		||||
    border: none;
 | 
			
		||||
    border-bottom: 1px solid rgba(var(--callout-border-rgb), 0.25);
 | 
			
		||||
    background: linear-gradient(
 | 
			
		||||
      to bottom,
 | 
			
		||||
      rgba(var(--background-start-rgb), 1),
 | 
			
		||||
      rgba(var(--callout-rgb), 0.5)
 | 
			
		||||
    );
 | 
			
		||||
    background-clip: padding-box;
 | 
			
		||||
    backdrop-filter: blur(24px);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .description div {
 | 
			
		||||
    align-items: flex-end;
 | 
			
		||||
    pointer-events: none;
 | 
			
		||||
    inset: auto 0 0;
 | 
			
		||||
    padding: 2rem;
 | 
			
		||||
    height: 200px;
 | 
			
		||||
    background: linear-gradient(
 | 
			
		||||
      to bottom,
 | 
			
		||||
      transparent 0%,
 | 
			
		||||
      rgb(var(--background-end-rgb)) 40%
 | 
			
		||||
    );
 | 
			
		||||
    z-index: 1;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* Tablet and Smaller Desktop */
 | 
			
		||||
@media (min-width: 701px) and (max-width: 1120px) {
 | 
			
		||||
  .grid {
 | 
			
		||||
    grid-template-columns: repeat(2, 50%);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media (prefers-color-scheme: dark) {
 | 
			
		||||
  .vercelLogo {
 | 
			
		||||
    filter: invert(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .logo,
 | 
			
		||||
  .thirteen img {
 | 
			
		||||
    filter: invert(1) drop-shadow(0 0 0.3rem #ffffff70);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@keyframes rotate {
 | 
			
		||||
  from {
 | 
			
		||||
    transform: rotate(360deg);
 | 
			
		||||
  }
 | 
			
		||||
  to {
 | 
			
		||||
    transform: rotate(0deg);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								src/styles/Index.module.sass
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/styles/Index.module.sass
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
@import '_variables'
 | 
			
		||||
 | 
			
		||||
#layout
 | 
			
		||||
    max-width: 1000px
 | 
			
		||||
    margin: 6rem 0 4rem 4rem
 | 
			
		||||
    display: inline-flex
 | 
			
		||||
    @media (max-width:600px)
 | 
			
		||||
        display: inline-block
 | 
			
		||||
#main
 | 
			
		||||
    padding-right: 2rem
 | 
			
		||||
#blogMain
 | 
			
		||||
    padding-right: 2rem
 | 
			
		||||
    h1
 | 
			
		||||
        padding: 0 0 1rem 0
 | 
			
		||||
							
								
								
									
										27
									
								
								src/styles/Lanyard.module.sass
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/styles/Lanyard.module.sass
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
@import '_variables'
 | 
			
		||||
 | 
			
		||||
#lanyard
 | 
			
		||||
    position: fixed
 | 
			
		||||
    border-radius: 8px
 | 
			
		||||
    top: 0%
 | 
			
		||||
    right: 0%
 | 
			
		||||
    margin: 1rem
 | 
			
		||||
    padding: .5rem
 | 
			
		||||
    display: flex
 | 
			
		||||
    align-items: center
 | 
			
		||||
    @media (max-width:600px)
 | 
			
		||||
        top: 0
 | 
			
		||||
        left: 0
 | 
			
		||||
    &:hover
 | 
			
		||||
        background-color: black
 | 
			
		||||
    img
 | 
			
		||||
        margin-right: .5em
 | 
			
		||||
        height: 1.5em
 | 
			
		||||
        border-radius: 50%
 | 
			
		||||
        animation: spin 5s linear infinite
 | 
			
		||||
 | 
			
		||||
@keyframes spin
 | 
			
		||||
    from
 | 
			
		||||
        transform: rotate(0deg)
 | 
			
		||||
    to
 | 
			
		||||
        transform: rotate(360deg)
 | 
			
		||||
							
								
								
									
										15
									
								
								src/styles/Link.module.sass
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/styles/Link.module.sass
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
@import '_variables'
 | 
			
		||||
 | 
			
		||||
.listLink, .link
 | 
			
		||||
    color: $link
 | 
			
		||||
    text-decoration: none
 | 
			
		||||
    padding: .2rem
 | 
			
		||||
    border-radius: 8px
 | 
			
		||||
    &:hover
 | 
			
		||||
 | 
			
		||||
        background: $link-hover
 | 
			
		||||
 | 
			
		||||
.listLink
 | 
			
		||||
    display: table
 | 
			
		||||
    @media (max-width:600px)
 | 
			
		||||
        display: inline-block
 | 
			
		||||
							
								
								
									
										7
									
								
								src/styles/PostList.module.sass
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/styles/PostList.module.sass
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
.blog_posts
 | 
			
		||||
    list-style-type: none
 | 
			
		||||
 | 
			
		||||
.blog_post_row
 | 
			
		||||
    display: flex
 | 
			
		||||
    align-items: baseline
 | 
			
		||||
    // padding-left: 2rem
 | 
			
		||||
							
								
								
									
										14
									
								
								src/styles/Sidebar.module.sass
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/styles/Sidebar.module.sass
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
@import '_variables'
 | 
			
		||||
 | 
			
		||||
#sidebar
 | 
			
		||||
    margin-right: 2rem
 | 
			
		||||
 | 
			
		||||
.me
 | 
			
		||||
    font-size: $h1-size
 | 
			
		||||
    font-weight: bold
 | 
			
		||||
 | 
			
		||||
#nav
 | 
			
		||||
    display: inline-block
 | 
			
		||||
    @media (max-width:600px)
 | 
			
		||||
        display: flex
 | 
			
		||||
        flex-flow: row wrap
 | 
			
		||||
							
								
								
									
										8
									
								
								src/styles/_variables.sass
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/styles/_variables.sass
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
// colors
 | 
			
		||||
$dark: #222
 | 
			
		||||
$light: #ffffff
 | 
			
		||||
$link: #ff802c
 | 
			
		||||
$link-hover: #ff802c48
 | 
			
		||||
 | 
			
		||||
// font sizes
 | 
			
		||||
$h1-size: 1.6em
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								src/styles/fonts/Flachbau.ttf
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/styles/fonts/Flachbau.ttf
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
				
			
			@ -1,107 +0,0 @@
 | 
			
		|||
:root {
 | 
			
		||||
  --max-width: 1100px;
 | 
			
		||||
  --border-radius: 12px;
 | 
			
		||||
  --font-mono: ui-monospace, Menlo, Monaco, 'Cascadia Mono', 'Segoe UI Mono',
 | 
			
		||||
    'Roboto Mono', 'Oxygen Mono', 'Ubuntu Monospace', 'Source Code Pro',
 | 
			
		||||
    'Fira Mono', 'Droid Sans Mono', 'Courier New', monospace;
 | 
			
		||||
 | 
			
		||||
  --foreground-rgb: 0, 0, 0;
 | 
			
		||||
  --background-start-rgb: 214, 219, 220;
 | 
			
		||||
  --background-end-rgb: 255, 255, 255;
 | 
			
		||||
 | 
			
		||||
  --primary-glow: conic-gradient(
 | 
			
		||||
    from 180deg at 50% 50%,
 | 
			
		||||
    #16abff33 0deg,
 | 
			
		||||
    #0885ff33 55deg,
 | 
			
		||||
    #54d6ff33 120deg,
 | 
			
		||||
    #0071ff33 160deg,
 | 
			
		||||
    transparent 360deg
 | 
			
		||||
  );
 | 
			
		||||
  --secondary-glow: radial-gradient(
 | 
			
		||||
    rgba(255, 255, 255, 1),
 | 
			
		||||
    rgba(255, 255, 255, 0)
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  --tile-start-rgb: 239, 245, 249;
 | 
			
		||||
  --tile-end-rgb: 228, 232, 233;
 | 
			
		||||
  --tile-border: conic-gradient(
 | 
			
		||||
    #00000080,
 | 
			
		||||
    #00000040,
 | 
			
		||||
    #00000030,
 | 
			
		||||
    #00000020,
 | 
			
		||||
    #00000010,
 | 
			
		||||
    #00000010,
 | 
			
		||||
    #00000080
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  --callout-rgb: 238, 240, 241;
 | 
			
		||||
  --callout-border-rgb: 172, 175, 176;
 | 
			
		||||
  --card-rgb: 180, 185, 188;
 | 
			
		||||
  --card-border-rgb: 131, 134, 135;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media (prefers-color-scheme: dark) {
 | 
			
		||||
  :root {
 | 
			
		||||
    --foreground-rgb: 255, 255, 255;
 | 
			
		||||
    --background-start-rgb: 0, 0, 0;
 | 
			
		||||
    --background-end-rgb: 0, 0, 0;
 | 
			
		||||
 | 
			
		||||
    --primary-glow: radial-gradient(rgba(1, 65, 255, 0.4), rgba(1, 65, 255, 0));
 | 
			
		||||
    --secondary-glow: linear-gradient(
 | 
			
		||||
      to bottom right,
 | 
			
		||||
      rgba(1, 65, 255, 0),
 | 
			
		||||
      rgba(1, 65, 255, 0),
 | 
			
		||||
      rgba(1, 65, 255, 0.3)
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    --tile-start-rgb: 2, 13, 46;
 | 
			
		||||
    --tile-end-rgb: 2, 5, 19;
 | 
			
		||||
    --tile-border: conic-gradient(
 | 
			
		||||
      #ffffff80,
 | 
			
		||||
      #ffffff40,
 | 
			
		||||
      #ffffff30,
 | 
			
		||||
      #ffffff20,
 | 
			
		||||
      #ffffff10,
 | 
			
		||||
      #ffffff10,
 | 
			
		||||
      #ffffff80
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    --callout-rgb: 20, 20, 20;
 | 
			
		||||
    --callout-border-rgb: 108, 108, 108;
 | 
			
		||||
    --card-rgb: 100, 100, 100;
 | 
			
		||||
    --card-border-rgb: 200, 200, 200;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
* {
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  padding: 0;
 | 
			
		||||
  margin: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
html,
 | 
			
		||||
body {
 | 
			
		||||
  max-width: 100vw;
 | 
			
		||||
  overflow-x: hidden;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
body {
 | 
			
		||||
  color: rgb(var(--foreground-rgb));
 | 
			
		||||
  background: linear-gradient(
 | 
			
		||||
      to bottom,
 | 
			
		||||
      transparent,
 | 
			
		||||
      rgb(var(--background-end-rgb))
 | 
			
		||||
    )
 | 
			
		||||
    rgb(var(--background-start-rgb));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a {
 | 
			
		||||
  color: inherit;
 | 
			
		||||
  text-decoration: none;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@media (prefers-color-scheme: dark) {
 | 
			
		||||
  html {
 | 
			
		||||
    color-scheme: dark;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										56
									
								
								src/styles/main.sass
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								src/styles/main.sass
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,56 @@
 | 
			
		|||
@import '_variables'
 | 
			
		||||
 | 
			
		||||
*
 | 
			
		||||
    padding: 0
 | 
			
		||||
    margin: 0
 | 
			
		||||
    text-decoration: none
 | 
			
		||||
    word-wrap: break-word
 | 
			
		||||
 | 
			
		||||
html
 | 
			
		||||
    font-family: "Flachbau"
 | 
			
		||||
    background: $dark
 | 
			
		||||
    color: $light
 | 
			
		||||
    font-size: 20px
 | 
			
		||||
    line-height: 1
 | 
			
		||||
 | 
			
		||||
@font-face
 | 
			
		||||
    font-family: "Flachbau"
 | 
			
		||||
    src: local("fonts/Flachbau.ttf") format("truetype")
 | 
			
		||||
    src: url("fonts/Flachbau.ttf") format("truetype")
 | 
			
		||||
 | 
			
		||||
h1
 | 
			
		||||
    font-size: $h1-size
 | 
			
		||||
p
 | 
			
		||||
    margin: 1rem 0
 | 
			
		||||
 | 
			
		||||
nav ul
 | 
			
		||||
    padding: 0
 | 
			
		||||
    list-style-type: none
 | 
			
		||||
    // display: inline-flex
 | 
			
		||||
 | 
			
		||||
ul,ol
 | 
			
		||||
    margin: 1rem 0
 | 
			
		||||
 | 
			
		||||
section
 | 
			
		||||
    display: inline-block
 | 
			
		||||
 | 
			
		||||
del
 | 
			
		||||
    text-decoration: line-through
 | 
			
		||||
    color: #555
 | 
			
		||||
 | 
			
		||||
ins
 | 
			
		||||
    text-decoration: none
 | 
			
		||||
    background-color: #d4fcbc
 | 
			
		||||
 | 
			
		||||
blockquote
 | 
			
		||||
    padding-left: 15px
 | 
			
		||||
    border-left: 3px solid #d7d7db
 | 
			
		||||
    font-size: 1rem
 | 
			
		||||
 | 
			
		||||
figure
 | 
			
		||||
    display: flex
 | 
			
		||||
    flex-flow: column nowrap
 | 
			
		||||
    align-items: center
 | 
			
		||||
    margin: 1rem auto
 | 
			
		||||
    img
 | 
			
		||||
        max-width: 100%
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue